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 1
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 13766
1474 #define YYNTOKENS 154
1478 #define YYNRULES 759
1480 #define YYNSTATES 1243
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, 1177, 1177, 1177, 1203, 1209, 1216, 1223, 1230, 1236,
1537 1237, 1243, 1256, 1254, 1265, 1276, 1282, 1289, 1296, 1303,
1538 1309, 1314, 1313, 1323, 1323, 1330, 1337, 1347, 1355, 1362,
1539 1370, 1378, 1390, 1402, 1412, 1426, 1427, 1435, 1443, 1452,
1540 1459, 1462, 1469, 1476, 1484, 1491, 1498, 1506, 1513, 1523,
1541 1528, 1537, 1540, 1541, 1545, 1549, 1553, 1558, 1565, 1567,
1542 1557, 1575, 1578, 1585, 1585, 1585, 1591, 1592, 1595, 1596,
1543 1605, 1615, 1625, 1634, 1645, 1652, 1659, 1666, 1673, 1681,
1544 1689, 1696, 1703, 1712, 1713, 1722, 1723, 1732, 1739, 1746,
1545 1753, 1760, 1767, 1774, 1781, 1788, 1795, 1804, 1805, 1814,
1546 1821, 1830, 1837, 1846, 1853, 1860, 1867, 1877, 1884, 1894,
1547 1901, 1908, 1918, 1925, 1932, 1939, 1946, 1953, 1960, 1967,
1548 1974, 1984, 1991, 1994, 2001, 2008, 2017, 2018, 2019, 2020,
1549 2025, 2028, 2035, 2038, 2045, 2045, 2055, 2056, 2057, 2058,
1550 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068,
1551 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078,
1552 2079, 2080, 2081, 2082, 2083, 2084, 2087, 2087, 2087, 2088,
1553 2088, 2089, 2089, 2089, 2090, 2090, 2090, 2090, 2091, 2091,
1554 2091, 2091, 2092, 2092, 2092, 2093, 2093, 2093, 2093, 2094,
1555 2094, 2094, 2094, 2095, 2095, 2095, 2095, 2096, 2096, 2096,
1556 2096, 2097, 2097, 2097, 2097, 2098, 2098, 2101, 2108, 2115,
1557 2123, 2131, 2139, 2147, 2155, 2162, 2170, 2179, 2188, 2200,
1558 2212, 2224, 2236, 2240, 2244, 2248, 2252, 2256, 2260, 2264,
1559 2268, 2272, 2276, 2280, 2284, 2288, 2289, 2293, 2297, 2301,
1560 2305, 2309, 2313, 2317, 2321, 2325, 2329, 2333, 2333, 2338,
1561 2347, 2353, 2354, 2355, 2356, 2359, 2363, 2370, 2377, 2378,
1562 2382, 2389, 2398, 2403, 2414, 2421, 2450, 2451, 2454, 2455,
1563 2456, 2460, 2467, 2476, 2484, 2491, 2499, 2507, 2511, 2511,
1564 2548, 2557, 2561, 2567, 2574, 2581, 2588, 2597, 2598, 2601,
1565 2608, 2615, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631,
1566 2632, 2633, 2634, 2642, 2641, 2656, 2656, 2663, 2663, 2671,
1567 2679, 2686, 2693, 2700, 2708, 2715, 2722, 2729, 2736, 2736,
1568 2741, 2745, 2749, 2756, 2757, 2766, 2765, 2776, 2787, 2798,
1569 2808, 2819, 2818, 2835, 2834, 2849, 2858, 2903, 2902, 2926,
1570 2925, 2948, 2947, 2971, 2977, 2970, 2997, 2998, 2997, 3023,
1571 3030, 3037, 3044, 3053, 3060, 3066, 3083, 3089, 3095, 3101,
1572 3107, 3113, 3119, 3125, 3131, 3137, 3143, 3149, 3155, 3161,
1573 3176, 3183, 3189, 3196, 3197, 3198, 3201, 3202, 3205, 3206,
1574 3218, 3219, 3228, 3229, 3232, 3240, 3249, 3256, 3265, 3272,
1575 3279, 3286, 3293, 3302, 3310, 3319, 3323, 3327, 3331, 3335,
1576 3341, 3346, 3351, 3355, 3359, 3363, 3367, 3371, 3379, 3383,
1577 3387, 3391, 3395, 3399, 3403, 3407, 3411, 3417, 3418, 3424,
1578 3433, 3445, 3449, 3458, 3460, 3464, 3469, 3475, 3478, 3482,
1579 3486, 3490, 3475, 3514, 3522, 3532, 3537, 3543, 3553, 3567,
1580 3574, 3581, 3590, 3599, 3607, 3615, 3622, 3630, 3638, 3645,
1581 3652, 3665, 3673, 3683, 3684, 3688, 3683, 3705, 3706, 3710,
1582 3705, 3729, 3737, 3744, 3752, 3761, 3773, 3774, 3778, 3784,
1583 3785, 3787, 3788, 3789, 3777, 3802, 3803, 3806, 3807, 3815,
1584 3825, 3826, 3831, 3839, 3843, 3849, 3852, 3861, 3864, 3871,
1585 3874, 3875, 3877, 3878, 3887, 3896, 3901, 3910, 3919, 3924,
1586 3924, 3929, 3935, 3934, 3946, 3951, 3951, 3958, 3967, 3971,
1587 3980, 3984, 3988, 3992, 3996, 3999, 4003, 4012, 4016, 4020,
1588 4024, 4030, 4031, 4040, 4049, 4053, 4057, 4061, 4065, 4069,
1589 4075, 4077, 4086, 4094, 4108, 4109, 4132, 4136, 4142, 4148,
1590 4149, 4158, 4167, 4179, 4191, 4192, 4193, 4194, 4206, 4220,
1591 4221, 4222, 4223, 4224, 4225, 4226, 4227, 4228, 4236, 4235,
1592 4248, 4258, 4271, 4278, 4285, 4294, 4306, 4309, 4316, 4323,
1593 4326, 4330, 4333, 4340, 4343, 4344, 4347, 4364, 4365, 4366,
1594 4375, 4385, 4394, 4400, 4410, 4416, 4425, 4427, 4436, 4446,
1595 4452, 4461, 4470, 4480, 4486, 4496, 4502, 4512, 4522, 4541,
1596 4547, 4557, 4567, 4608, 4611, 4610, 4627, 4631, 4636, 4640,
1597 4644, 4626, 4665, 4672, 4679, 4686, 4689, 4690, 4693, 4703,
1598 4704, 4705, 4706, 4709, 4719, 4720, 4730, 4731, 4732, 4733,
1599 4736, 4737, 4738, 4739, 4740, 4743, 4744, 4745, 4746, 4747,
1600 4748, 4749, 4752, 4765, 4774, 4781, 4790, 4791, 4795, 4794,
1601 4804, 4812, 4821, 4836, 4836, 4850, 4854, 4858, 4862, 4866,
1602 4872, 4877, 4882, 4886, 4890, 4894, 4898, 4902, 4906, 4910,
1603 4914, 4918, 4922, 4926, 4930, 4934, 4939, 4945, 4954, 4962,
1604 4970, 4978, 4988, 4989, 4997, 5006, 5014, 5035, 5037, 5050,
1605 5060, 5068, 5078, 5085, 5094, 5101, 5111, 5118, 5127, 5128,
1606 5131, 5139, 5147, 5157, 5167, 5177, 5184, 5193, 5200, 5209,
1607 5210, 5213, 5221, 5231, 5232, 5235, 5245, 5249, 5255, 5260,
1608 5260, 5284, 5285, 5294, 5296, 5319, 5330, 5337, 5345, 5364,
1609 5365, 5366, 5369, 5370, 5371, 5372, 5375, 5376, 5377, 5380,
1610 5381, 5384, 5385, 5388, 5389, 5392, 5393, 5396, 5397, 5400,
1611 5403, 5406, 5409, 5410, 5411, 5414, 5415, 5418, 5419, 5423
1615 #if YYDEBUG || YYERROR_VERBOSE || 1
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",
"rbrace",
"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 -1028
1728 #define yypact_value_is_default(Yystate) \
1729 (!!((Yystate) == (-1028)))
1731 #define YYTABLE_NINF -760
1733 #define yytable_value_is_error(Yytable_value) \
1734 (!!((Yytable_value) == (-760)))
1740 -1028, 133, 3772, -1028, 9176, -1028, -1028, -1028, 8634, -1028,
1741 -1028, -1028, -1028, -1028, -1028, -1028, 9302, 9302, -1028, -1028,
1742 -1028, 5241, 4800, -1028, -1028, -1028, -1028, 533, 8489, 1,
1743 100, 124, -1028, -1028, -1028, 4065, 4947, -1028, -1028, 4212,
1744 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 10940, 10940,
1745 10940, 10940, 200, 6689, 9428, 9806, 10184, 8918, -1028, 8344,
1746 -1028, -1028, -1028, 155, 181, 247, 265, 1275, 11066, 10940,
1747 -1028, 232, -1028, 1140, -1028, 319, -1028, -1028, 14, 411,
1748 330, -1028, 332, 11318, -1028, 380, 2654, 644, 46, 425,
1749 -1028, 11192, 11192, -1028, -1028, 7671, 11440, 11562, 11684, 8198,
1750 9302, 819, 108, -1028, -1028, 456, -1028, -1028, -1028, -1028,
1751 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 717, 729,
1752 -1028, 420, 783, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1753 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1754 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1755 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1756 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1757 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1758 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1759 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1760 -1028, -1028, 432, -1028, -1028, -1028, 479, 10940, 524, 6840,
1761 10940, 10940, 10940, -1028, 10940, -1028, 503, 4337, 542, -1028,
1762 -1028, 513, 515, 267, 365, 614, 366, 545, -1028, -1028,
1763 7545, -1028, 9302, 9554, -1028, -1028, 7797, -1028, 11192, 858,
1764 -1028, 574, 6991, -1028, 7142, -1028, -1028, 598, 605, 14,
1765 -1028, 522, -1028, 718, 3380, 3380, 791, 9428, -1028, 6689,
1766 657, 232, -1028, 1140, 1, 682, -1028, 1140, 1, 665,
1767 371, 519, -1028, 542, 673, 519, -1028, 1, 763, 1275,
1768 11806, 677, -1028, 690, 708, 716, 724, -1028, -1028, -1028,
1769 -1028, -1028, 481, -1028, 580, 678, 953, -1028, -1028, -1028,
1770 -1028, 748, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 7923,
1771 11192, 11192, 11192, 11192, 9428, 11192, 11192, -1028, -1028, -1028,
1772 721, -1028, -1028, -1028, -1028, -1028, 10310, -1028, 6689, 9047,
1773 684, 10310, -1028, 10940, 10940, 10940, 10940, 10940, -1028, -1028,
1774 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, -1028,
1775 -1028, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940,
1776 10940, -1028, -1028, 12269, 9302, 12359, 5833, 319, 86, 86,
1777 7293, 11192, 7293, 232, -1028, 691, 777, -1028, -1028, 741,
1778 822, 53, 68, 69, 681, 956, 11192, 733, -1028, 714,
1779 891, -1028, -1028, -1028, -1028, 130, 291, 527, 572, 582,
1780 586, 608, 653, 663, -1028, -1028, -1028, 666, -1028, -1028,
1781 -1028, 13619, -1028, -1028, 11066, 11066, -1028, -1028, 374, -1028,
1782 -1028, -1028, 618, 10940, 10940, 9680, -1028, -1028, 12449, 9302,
1783 12539, 10940, 10940, 9932, -1028, 1, 710, -1028, -1028, 10940,
1784 1, -1028, 711, 1, 722, -1028, 107, -1028, -1028, -1028,
1785 -1028, -1028, 8634, -1028, 10940, 726, 728, 12449, 12539, 10940,
1786 1140, 100, 1, -1028, -1028, 8049, 732, 1, -1028, -1028,
1787 10058, -1028, -1028, 10184, -1028, -1028, -1028, 574, 893, -1028,
1788 -1028, 734, 11806, 12629, 9302, 12719, -1028, -1028, -1028, -1028,
1789 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 786, 101,
1790 988, 102, 10940, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1791 -1028, -1028, 757, -1028, -1028, -1028, 882, -1028, 882, 10940,
1792 -1028, 760, 767, 874, -1028, 1, 11806, 774, -1028, -1028,
1793 -1028, 880, 806, 4043, -1028, -1028, -1028, 963, 400, -1028,
1794 718, 3896, 3896, 3896, 3896, 4484, 3134, 3896, 3896, 3380,
1795 3380, 759, 759, 3267, 1222, 1222, 1464, 406, 406, 718,
1796 718, 718, 1115, 1115, 3482, 4359, 5535, 4506, -1028, 605,
1797 -1028, 1, 850, -1028, 1016, -1028, -1028, 5094, 882, 925,
1798 -1028, 5984, 922, 6437, 882, 60, 882, 914, 927, 76,
1799 12809, 9302, 12899, -1028, 319, -1028, 893, -1028, -1028, -1028,
1800 12989, 9302, 13079, 5833, 11192, -1028, -1028, -1028, -1028, -1028,
1801 -1028, 2683, -1028, 4190, -1028, -1028, -1028, 8634, 10940, -1028,
1802 10940, 542, -1028, 545, 3918, 4653, 1, 453, 458, -1028,
1803 -1028, -1028, -1028, 9680, -1028, 9932, -1028, -1028, 11192, 4337,
1804 -1028, -1028, 605, 605, -1028, -1028, -9, -1028, -1028, 519,
1805 11806, 734, 381, 686, 1, 362, 407, -1028, -1028, 1249,
1806 -1028, 566, -1028, 794, -1028, -1028, 568, 795, -1028, 718,
1807 -1028, -1028, 804, -1028, -1028, -1028, -1028, 812, 10436, 9428,
1808 -1028, 734, 11806, 9428, 11066, 10940, 13169, 9302, 13259, 12202,
1809 832, 11066, 11066, -1028, 721, 816, 1020, 11066, 11066, -1028,
1810 -1028, 721, -1028, -1028, -1028, 10562, 755, -1028, 825, -1028,
1811 950, -1028, -1028, -1028, -1028, -1028, -1028, 927, 882, -1028,
1812 10688, 882, 33, 278, 1, 77, 83, 7293, 232, 11192,
1813 5833, 995, 686, -1028, 1, 882, 107, 820, 8779, 108,
1814 411, -1028, -1028, -1028, -1028, 10940, 10940, 462, 10940, 10940,
1815 824, 107, -1028, -1028, 626, -1028, -1028, -1028, -1028, -1028,
1816 -1028, -1028, -1028, -1028, -1028, -1028, -1028, 843, -1028, 843,
1817 10940, 833, -1028, 734, -1028, 4337, 5388, 5682, 1, 466,
1818 470, -1028, -1028, 3091, 3091, 751, -1028, 616, 345, -1028,
1819 940, 899, -1028, 871, -1028, -1028, 815, -1028, -1028, 336,
1820 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 10940,
1821 -1028, -1028, -1028, -1028, -1028, -1028, 11066, -1028, -1028, -1028,
1822 -1028, -1028, 760, -1028, 904, -1028, -1028, -1028, 7293, -1028,
1823 -1028, -1028, -1028, 7293, 11192, 882, -1028, -1028, 882, -1028,
1824 -1028, 882, -1028, 10940, -1028, 54, -1028, 113, 882, 5833,
1825 232, 882, -1028, -1028, -1028, 1877, 5833, 1686, -1028, -1028,
1826 -1028, 10940, 9932, -1028, 1519, -1028, 1385, 7142, -1028, -1028,
1827 5833, 862, 538, -1028, -1028, -1028, -1028, 12202, 12083, -1028,
1828 257, 866, -1028, -1028, -1028, 964, -1028, 12202, 3091, 3091,
1829 751, 616, 547, 3621, 3621, 4337, -1028, -1028, 11928, 86,
1830 -1028, -1028, 6563, -1028, 86, -1028, -1028, -1028, -1028, -1028,
1831 10814, 6135, -1028, 882, -1028, -1028, -1028, -1028, -1028, -1028,
1832 -1028, -1028, -1028, -1028, 1537, -1028, -1028, -1028, -1028, -1028,
1833 -1028, 1, 1, -1028, -1028, 896, -1028, 877, 10940, -1028,
1834 883, 106, 887, 887, -1028, 894, 980, 895, 987, -1028,
1835 882, 232, 820, 1686, -1028, -1028, -1028, -1028, 1, 912,
1836 920, 901, 12050, -1028, 911, 887, 887, -1028, 916, 918,
1837 -1028, 929, -1028, -1028, 276, 27, 3, 1, 12169, -1028,
1838 919, -1028, -1028, 1, 932, -1028, 12202, -1028, -1028, 348,
1839 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1840 1, 1, 1, 1, 994, -1028, 1025, 118, 135, 179,
1841 5833, 1078, 5984, 3621, 10940, -1028, 92, -1028, 1537, 1208,
1842 -1028, 949, 1, 954, -1028, -1028, -1028, 10940, 1686, -1028,
1843 -1028, 1060, -1028, -1028, -1028, -1028, 216, -1028, -1028, 1686,
1844 -1028, -1028, 1096, -1028, -1028, -1028, -1028, 5833, 1, 63,
1845 7419, 972, -1028, 12050, 1686, -1028, 1049, 1030, 1060, -1028,
1846 -1028, -1028, 1686, -1028, 1096, -1028, 1424, -1028, 978, 12202,
1847 -1028, 43, 899, 982, -1028, 288, -1028, 257, 899, -1028,
1848 -1028, 1079, -1028, -1028, -1028, -1028, 222, 13349, 9302, 13439,
1849 925, -1028, 825, 86, 886, 255, -1028, -1028, -1028, -1028,
1850 -1028, -1028, 1, -1028, 1537, -1028, 1560, -1028, -1028, -1028,
1851 983, 986, -1028, 1082, 887, -1028, 989, -1028, 990, -1028,
1852 989, 882, 992, 5833, 7142, -1028, 1019, -1028, 1030, -1028,
1853 998, 1001, -1028, 13529, -1028, 887, 1003, -1028, 1011, 1003,
1854 -1028, 592, -1028, -1028, 12202, 1012, -1028, 1015, 12202, -1028,
1855 -1028, -1028, -1028, -1028, 134, 158, 1, 315, 318, -1028,
1856 -1028, -1028, 11192, 11192, 12083, -1028, -1028, 1017, 1021, 1686,
1857 -1028, 1096, -1028, -1028, 1096, -1028, 1096, -1028, -1028, -1028,
1858 -1028, 882, 1027, -1028, 1686, -1028, 1096, -1028, 1024, 1029,
1859 -1028, 1096, -1028, 1096, -1028, -1028, 1424, -1028, 1012, 12202,
1860 12202, 1012, 457, -1028, -1028, -1028, -1028, 1560, 1560, 989,
1861 1041, 989, 989, -1028, -1028, 1003, 1043, 1003, 1003, -1028,
1862 -1028, 1012, -1028, 1021, -1028, 1096, -1028, -1028, -1028, -1028,
1863 1096, -1028, -1028, -1028, 6286, 989, 1003, 150, -1028, -1028,
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, 636, 635, 637, 638, 747, 0, 747,
1875 0, 0, 640, 639, 641, 729, 731, 632, 631, 730,
1876 634, 626, 627, 628, 629, 577, 646, 647, 0, 0,
1877 0, 0, 0, 0, 305, 759, 759, 95, 325, 597,
1878 597, 599, 601, 0, 0, 0, 0, 0, 0, 0,
1879 3, 745, 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, 745, 0, 0, 0, 0,
1882 314, 68, 323, 292, 293, 576, 578, 294, 295, 296,
1883 298, 297, 299, 575, 616, 617, 574, 624, 642, 643,
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, 597, 0, 273, 0, 257, 283, 81,
1894 277, 759, 0, 642, 643, 0, 301, 759, 723, 82,
1895 747, 79, 0, 759, 448, 78, 747, 748, 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, 745, 17, 20, 747, 85, 16, 307, 747, 0,
1899 752, 752, 258, 0, 0, 752, 721, 747, 0, 0,
1900 0, 93, 353, 0, 103, 104, 111, 427, 621, 620,
1901 622, 619, 0, 618, 0, 0, 0, 584, 593, 589,
1902 595, 625, 56, 241, 242, 755, 756, 4, 757, 746,
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, 741, 742, 0, 759, 0, 0, 62, 0, 0,
1909 0, 0, 0, 745, 333, 746, 0, 383, 382, 0,
1910 0, 642, 643, 301, 121, 122, 0, 0, 124, 650,
1911 0, 642, 643, 301, 341, 196, 189, 199, 184, 166,
1912 167, 168, 126, 127, 719, 343, 718, 0, 80, 744,
1913 743, 0, 324, 579, 0, 0, 134, 726, 311, 284,
1914 728, 280, 0, 0, 0, 0, 274, 282, 0, 759,
1915 0, 0, 0, 0, 275, 747, 0, 316, 279, 677,
1916 747, 269, 759, 747, 759, 268, 747, 321, 55, 25,
1917 27, 26, 0, 318, 0, 0, 0, 0, 0, 0,
1918 19, 0, 747, 309, 15, 746, 84, 747, 306, 312,
1919 754, 753, 259, 754, 261, 313, 722, 0, 110, 625,
1920 101, 96, 0, 0, 759, 0, 326, 428, 603, 623,
1921 606, 604, 598, 580, 581, 600, 582, 602, 0, 0,
1922 0, 0, 0, 758, 7, 29, 30, 31, 32, 33,
1923 53, 54, 0, 454, 453, 73, 0, 458, 0, 0,
1924 36, 288, 0, 39, 287, 747, 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, 747, 231, 232, 233, 222, 223, 224,
1928 225, 226, 255, 256, 732, 734, 733, 735, 447, 278,
1929 445, 747, 732, 734, 733, 735, 446, 278, 0, 759,
1930 374, 0, 373, 0, 0, 0, 0, 331, 0, 311,
1931 0, 759, 0, 63, 339, 121, 122, 123, 648, 337,
1932 0, 759, 0, 0, 0, 344, 739, 740, 346, 732,
1933 733, 278, 42, 262, 208, 48, 215, 0, 0, 725,
1934 0, 285, 281, 759, 732, 733, 747, 732, 733, 724,
1935 315, 749, 264, 270, 265, 272, 320, 24, 0, 248,
1936 11, 34, 0, 759, 214, 22, 86, 18, 308, 752,
1937 0, 94, 736, 109, 747, 732, 733, 429, 607, 0,
1938 583, 0, 586, 0, 591, 588, 0, 0, 592, 228,
1939 451, 455, 0, 371, 452, 459, 437, 291, 0, 0,
1940 98, 92, 0, 0, 0, 0, 0, 759, 0, 0,
1941 0, 0, 0, 444, 76, 0, 450, 0, 0, 267,
1942 443, 74, 266, 304, 366, 759, 759, 566, 759, 375,
1943 759, 329, 377, 64, 376, 330, 468, 0, 0, 368,
1944 0, 0, 736, 310, 747, 732, 733, 0, 0, 0,
1945 0, 121, 122, 125, 747, 0, 747, 653, 0, 439,
1946 69, 135, 727, 286, 276, 0, 0, 450, 0, 0,
1947 759, 747, 260, 102, 450, 430, 608, 612, 613, 614,
1948 605, 615, 585, 587, 594, 590, 596, 759, 70, 759,
1949 0, 289, 38, 90, 50, 263, 732, 733, 747, 732,
1950 733, 560, 564, 0, 0, 0, 505, 499, 502, 558,
1951 0, 59, 485, 487, 489, 492, 539, 544, 545, 546,
1952 549, 550, 551, 552, 553, 555, 554, 556, 557, 0,
1953 47, 212, 46, 213, 77, 750, 0, 44, 210, 45,
1954 211, 75, 567, 568, 759, 569, 367, 369, 0, 12,
1955 14, 573, 370, 0, 0, 0, 378, 380, 0, 65,
1956 469, 0, 335, 0, 461, 0, 334, 450, 0, 0,
1957 0, 0, 450, 342, 720, 676, 0, 676, 347, 440,
1958 441, 0, 271, 319, 676, 609, 747, 0, 418, 417,
1959 0, 290, 450, 547, 548, 122, 562, 0, 0, 501,
1960 0, 0, 504, 427, 561, 0, 60, 0, 542, 543,
1961 0, 491, 490, 0, 0, 249, 43, 209, 0, 0,
1962 571, 572, 0, 381, 0, 327, 328, 470, 332, 462,
1963 0, 0, 336, 0, 649, 338, 683, 680, 679, 678,
1964 681, 689, 698, 677, 0, 710, 699, 714, 713, 709,
1965 675, 747, 747, 682, 684, 685, 687, 661, 691, 696,
1966 759, 702, 759, 759, 707, 661, 712, 661, 0, 659,
1967 0, 0, 653, 676, 431, 434, 610, 416, 747, 0,
1968 685, 401, 693, 694, 759, 759, 759, 705, 401, 401,
1969 399, 421, 456, 460, 747, 519, 507, 747, 508, 514,
1970 0, 534, 597, 747, 525, 530, 533, 527, 529, 537,
1971 751, 559, 486, 488, 540, 541, 563, 498, 495, 597,
1972 747, 747, 747, 747, 0, 570, 0, 642, 643, 301,
1973 0, 759, 0, 0, 0, 463, 759, 340, 0, 394,
1974 386, 388, 747, 391, 384, 651, 652, 0, 0, 668,
1975 690, 0, 656, 717, 700, 701, 0, 658, 657, 0,
1976 671, 711, 0, 673, 715, 345, 654, 0, 747, 0,
1977 0, 0, 419, 0, 407, 409, 0, 692, 0, 396,
1978 398, 397, 0, 412, 0, 414, 0, 506, 517, 0,
1979 500, 512, 523, 509, 515, 0, 503, 526, 532, 538,
1980 536, 0, 493, 494, 496, 497, 311, 0, 759, 0,
1981 759, 13, 759, 0, 477, 480, 483, 484, 464, 466,
1982 467, 465, 747, 393, 0, 686, 0, 703, 660, 688,
1983 661, 661, 697, 702, 759, 716, 661, 708, 661, 685,
1984 661, 0, 0, 0, 0, 432, 0, 420, 704, 400,
1985 401, 401, 311, 0, 695, 759, 401, 706, 401, 401,
1986 425, 747, 423, 426, 0, 520, 521, 510, 0, 516,
1987 535, 531, 524, 528, 736, 310, 747, 732, 733, 565,
1988 379, 471, 0, 0, 481, 385, 387, 389, 392, 0,
1989 664, 0, 666, 655, 0, 672, 0, 669, 674, 348,
1990 433, 0, 0, 611, 0, 404, 0, 406, 736, 310,
1991 395, 0, 413, 0, 410, 415, 0, 422, 518, 0,
1992 0, 513, 450, 472, 478, 479, 482, 0, 0, 661,
1993 661, 661, 661, 436, 435, 401, 401, 401, 401, 424,
1994 522, 511, 473, 390, 665, 0, 662, 667, 670, 405,
1995 0, 402, 408, 411, 0, 661, 401, 759, 663, 403,
2002 -1028, -1028, -1028, 923, -1028, 62, 730, -552, -1028, -35,
2003 -1028, 731, -1028, 72, -1028, -212, -254, -66, -1028, -1028,
2004 -1028, -32, -88, -1028, -1028, -36, -1028, -260, 641, 25,
2005 1106, -141, -6, -68, -1028, -410, -19, 2212, -370, 1108,
2006 -40, -24, -1028, -1028, 5, -1028, 2954, -1028, 1121, -1028,
2007 1541, -1028, 652, 426, 601, -307, 94, -10, -1028, -360,
2008 -218, 66, -1028, -310, -52, -1028, -1028, -1028, -1028, -1028,
2009 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 32,
2010 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2011 -1028, -1028, -1028, -1028, -1028, 509, -1028, 210, 981, -368,
2012 -1028, 126, -700, -1028, -1024, -1001, 198, 116, 355, 317,
2013 -1028, 461, -1028, -860, -1028, 30, 350, -1028, -1028, -1028,
2014 -1028, -1028, -1028, -1028, 494, -1028, -1028, -95, 723, -1028,
2015 -1028, -1028, 915, -1028, -1028, -1028, -1028, -680, -1028, -1,
2016 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -526,
2017 -1028, -1028, -1028, -1028, 354, -1028, -1028, -1028, -824, -1028,
2018 230, -609, -594, -781, -1028, 177, -1028, 178, 190, -1028,
2019 -376, -1028, 373, -1028, -1028, 166, -1028, -1028, 263, 485,
2020 499, -1028, 1171, 747, 1110, 1394, -1028, 780, 1448, -1028,
2021 1612, 1744, -1028, -1028, -57, -1028, -1028, -199, -1028, -1028,
2022 -1028, -1028, -1028, -1028, -1028, 0, -1028, -1028, -1028, -1028,
2023 -37, 2020, 1174, 1178, 2236, 1512, -1028, -1028, 329, -1028,
2024 -705, 314, -773, 429, -1027, -785, -603, -908, 236, -200,
2025 258, 243, -1028, -1028, -503, -690, -213, -984, -987, 234,
2026 274, -1028, -846, -1028, -513, -379, -1028, -1028, -1028, 6,
2027 -417, -1028, -275, -1028, -1028, -87, -1028, -71, 23, 185,
2028 -583, 322, -194, -60, -44, -2
2034 -1, 1, 2, 70, 71, 72, 243, 578, 902, 579,
2035 261, 262, 461, 263, 452, 74, 530, 75, 539, 689,
2036 886, 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, 952, 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, 1020, 1021, 1022, 1023, 1129, 1055,
2045 958, 867, 868, 959, 1141, 1142, 486, 487, 657, 755,
2046 864, 1049, 954, 1125, 325, 101, 102, 322, 512, 513,
2047 671, 767, 516, 517, 675, 769, 845, 721, 1101, 718,
2048 840, 907, 1013, 1203, 1222, 1234, 1242, 1093, 1094, 1072,
2049 792, 793, 893, 894, 794, 878, 880, 877, 977, 978,
2050 979, 1145, 980, 983, 984, 985, 986, 987, 988, 795,
2051 796, 883, 797, 798, 799, 706, 824, 899, 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, 956, 1050, 760, 113, 114, 293, 115, 116,
2055 117, 223, 224, 120, 225, 226, 599, 729, 856, 857,
2056 1108, 1029, 931, 443, 933, 934, 1119, 936, 937, 938,
2057 939, 963, 964, 940, 941, 942, 943, 944, 967, 968,
2058 945, 946, 947, 948, 949, 1032, 407, 604, 274, 444,
2059 228, 123, 642, 570, 608, 602, 411, 307, 436, 437,
2060 696, 882, 472, 582, 375, 266
2068 124, 583, 365, 294, 240, 282, 372, 412, 205, 434,
2069 838, 308, 235, 203, 410, 330, 629, 597, 260, 291,
2070 969, 536, 227, 227, 374, 367, 367, 309, 205, 367,
2071 301, 282, 302, 203, 89, 308, 89, 841, 281, 1143,
2072 317, 215, 215, 747, 282, 282, 282, 265, 222, 222,
2073 238, 735, 241, 272, 276, 1117, 629, 571, -116, 405,
2074 369, 271, 275, 373, 203, 622, 125, 580, 320, 1000,
2075 1002, 754, 651, 622, 73, 1137, 73, 474, -112, 1068,
2076 1166, 476, 221, 221, 951, 89, 89, 712, 569, 283,
2077 577, 955, 1123, -113, -120, 1147, 495, 497, 1051, 580,
2078 222, -119, -115, 885, 203, 1168, 227, 827, -117, 719,
2079 219, 229, 1001, 1003, -353, 283, 681, -84, 462, 529,
2080 1109, 270, 626, 222, 222, 215, 267, 222, 379, 390,
2081 390, -112, 222, 3, 317, 430, 611, -98, -114, 1024,
2082 1034, 847, -353, -353, 315, 316, 1109, -116, -113, -523,
2083 930, 852, 930, 569, 237, 577, 422, 318, 1035, 930,
2084 612, 615, 233, 791, 458, 827, 221, 663, 667, 1143,
2085 446, -118, 448, 1069, 260, 716, 965, 654, 851, -107,
2086 1048, -732, 1111, 643, 1166, 1117, 1124, 525, 1122, 1148,
2087 464, -353, -120, 1118, 408, 872, 485, 1137, -636, -103,
2088 910, 308, 529, 529, 879, 305, 1223, 306, 1131, 456,
2089 643, 305, 480, 306, -104, -111, 1138, 465, 629, 427,
2090 664, 668, -110, -106, 260, 427, 434, -636, 282, -108,
2091 733, 445, 1097, 1024, 1103, -119, 227, 305, 227, 306,
2092 124, 89, 479, 242, 367, 367, 367, 367, 930, 510,
2093 511, 318, 935, 265, 935, 215, 256, 215, 215, -105,
2094 237, 935, 222, 960, 222, 222, 1109, 244, 222, -112,
2095 222, -112, 773, 622, 89, 622, 89, 282, 505, 506,
2096 507, 508, -732, 1109, 724, -116, -113, -116, -113, 89,
2097 520, 89, 592, 260, 734, 531, 221, 913, 221, 662,
2098 477, 662, 587, -118, 950, 367, -733, 297, 997, -118,
2099 527, -118, 283, 308, 73, 981, 1099, 643, 973, 1024,
2100 594, 1024, 265, 1210, 435, 927, 438, 643, -115, 460,
2101 -120, -117, -120, 298, 922, 584, 1100, 586, 1216, 585,
2102 1206, 89, 222, 222, 222, 222, 89, 222, 222, 928,
2103 935, 974, 976, 970, 488, 885, 315, 316, 222, -635,
2104 89, 283, 445, 537, 965, 926, -644, 976, 976, 982,
2105 575, 504, 965, -119, 965, -119, 885, 989, 531, 531,
2106 778, 73, 1079, 305, 1073, 306, 509, -106, -635, 215,
2107 989, 989, 522, -112, 1070, 823, 222, 522, 89, 299,
2108 1080, 1164, 89, 222, 89, 744, -107, 873, 874, 490,
2109 491, 569, 1150, 577, 480, 876, 575, 300, 222, 1084,
2110 1085, 447, 1024, 1024, -109, 935, -733, 445, 637, 237,
2111 282, 623, -108, 890, 814, 575, 935, 810, 812, 323,
2112 427, 821, 427, 817, 819, 629, 537, 537, 234, 466,
2113 688, 960, 205, 468, 215, 752, 326, 203, 480, 960,
2114 1078, 222, 763, 575, -645, 432, -115, 763, -115, -117,
2115 -114, -117, 529, 459, 282, 1146, 649, 911, 327, 529,
2116 529, 891, 445, 333, 892, 529, 529, 1095, -106, -747,
2117 575, -113, -120, 361, 965, 1121, 965, 89, 237, 415,
2118 -119, 965, 622, 965, 319, 727, 331, -107, -106, 215,
2119 989, -106, 994, 995, 283, -106, 222, 470, 1115, 414,
2120 996, 362, 363, 1115, 471, 714, -120, -107, 1113, -732,
2121 -107, 1010, 744, -108, -107, 1198, 1012, 1240, 736, 1201,
2122 965, 970, 356, 357, 358, 1115, 708, 488, 710, 970,
2123 1146, 970, 748, -108, 1146, 1113, -108, 749, 283, 694,
2124 -108, 861, 896, 1037, 1038, 697, 935, 701, 60, 698,
2125 364, 1181, 751, 1202, 989, 702, 690, 707, 416, -115,
2126 418, 960, 753, 361, -117, 1059, 1060, 1061, -114, 445,
2127 361, 1221, -115, 741, 695, -637, -117, 575, 282, 445,
2128 489, 740, 490, 491, 529, 1220, 1146, 575, -114, 702,
2129 -114, 362, 428, 89, 480, 89, 215, 205, 362, 457,
2130 630, 427, 203, 222, -637, 632, 215, 236, 634, 423,
2131 282, 636, 488, 222, 488, 89, 222, 816, 976, 750,
2132 -638, 702, 424, 78, 859, 78, 488, 646, 531, 695,
2133 -640, -105, 648, 966, -639, 531, 531, 78, 78, 425,
2134 429, 531, 531, 367, -114, 473, 962, 429, 849, -638,
2135 222, 970, 471, 970, 234, 319, -641, 695, 970, -640,
2136 970, 236, 283, -639, 488, 445, 237, 490, 491, 490,
2137 491, 433, 848, 575, 78, 78, -747, 850, 858, 493,
2138 237, 490, 491, 825, 831, -641, 837, -729, 837, 78,
2139 680, 89, 215, 431, 283, 89, 537, 970, 762, 222,
2140 765, -630, 453, 537, 537, 1161, 338, 339, 676, 537,
2141 537, -633, 78, 78, 606, 1173, 78, 493, 1196, 490,
2142 491, 78, 618, 203, 488, 237, 230, 695, 427, -630,
2143 -630, 772, -105, 233, -310, 774, 1190, 695, 361, 89,
2144 -633, 222, 89, 607, 826, 869, -747, 869, 367, 237,
2145 827, 522, -105, 349, 350, -105, -642, -630, -630, -105,
2146 531, 1156, -310, -310, -643, 595, 362, 483, 703, 596,
2147 914, 576, -301, 901, 711, 333, 715, 494, 903, 490,
2148 491, 695, 904, 595, -642, -642, 463, 875, -83, 361,
2149 695, 881, -643, -643, 643, 469, -644, 475, 1114, 478,
2150 -301, -301, 900, 482, -729, 502, -630, 514, -645, -729,
2151 528, -310, 972, 589, -733, 484, 333, 362, 590, 832,
2152 827, 966, 503, -112, 598, 1135, 282, 593, 537, 966,
2153 78, 966, 488, -642, 962, -113, 576, 633, 962, 631,
2154 89, -643, 962, -103, 962, 89, 222, 1011, 635, -301,
2155 640, 78, 641, 78, 78, -104, 1016, 78, -98, 78,
2156 650, 89, 415, 78, 576, 78, 591, 361, 89, 971,
2157 459, 1046, 673, 354, 355, 356, 357, 358, 78, 89,
2158 78, 670, 89, 888, 889, 660, -283, 490, 491, -120,
2159 282, 576, 449, 678, 695, 362, 409, -119, 679, 1089,
2160 682, 854, 450, 451, 683, 1075, 1162, 1163, 842, -111,
2161 1006, 846, 684, 704, 89, 709, 863, -110, 1033, 716,
2162 1033, 1033, 1081, 89, 719, 853, 764, 766, 768, 697,
2163 78, 78, 78, 78, 78, 78, 78, 78, -284, 361,
2164 809, -311, 1033, 1033, 1033, 827, 815, 78, 855, 78,
2165 862, 966, 78, 966, 866, 1090, -115, 1092, 966, -285,
2166 966, 971, -730, 100, 962, 100, 962, 362, 600, -311,
2167 -311, 962, 884, 962, 1057, 693, -106, 100, 100, 885,
2168 695, 282, 887, 699, 898, 78, 881, 78, -286, 831,
2169 990, 78, 78, 78, 837, 1126, 781, 966, 576, 488,
2170 496, -736, 1027, 1028, -633, 695, 695, 78, 576, 1031,
2171 962, 361, 1041, 1036, 100, 100, 601, 699, -311, 1044,
2172 1039, 1042, 89, 1052, 89, 905, 1053, 1054, 906, 100,
2173 1086, 908, -633, -633, 488, 78, 78, 1058, 912, 362,
2174 686, 915, 1062, -736, 1064, 1074, 614, 616, 693, 699,
2175 78, 971, 100, 100, 490, 491, 100, 998, 1077, 89,
2176 1066, 100, 89, 614, 616, 1128, 445, 826, 707, 1182,
2177 837, -736, -736, 361, 575, 1104, 367, 367, 361, -730,
2178 1106, -633, 961, 1127, -730, 1132, 78, 665, 687, 490,
2179 491, 644, 1033, 215, 576, 698, 1025, 1026, 921, 816,
2180 222, 362, 1087, 1017, 1144, 78, 362, 1133, 1149, 1169,
2181 1204, 1205, 1171, 1033, 1035, 1174, 1176, 922, -736, 1183,
2182 -736, 1180, -117, -732, 1184, 488, -114, 1186, 916, 1191,
2183 917, 918, 919, 920, 921, 89, 89, 1193, 1199, 1067,
2184 1045, 1200, -108, 1207, 1197, 455, -105, 1208, 926, 927,
2185 1088, 1214, -732, 922, 800, 601, 119, -733, 119, 695,
2186 310, 311, 312, 313, 314, 1082, 1083, 1225, 801, 1230,
2187 100, 645, 333, 928, 222, 222, 647, 924, 493, 1237,
2188 490, 491, 377, 1150, 926, 927, 394, 1105, 360, 346,
2189 347, 100, 739, 100, 100, 829, 1102, 100, 1160, 100,
2190 1167, 957, 78, 100, 78, 100, 1219, 119, 119, 928,
2191 870, 285, 78, 991, 860, 837, 1241, 672, 100, 518,
2192 100, 993, 78, 1096, 78, 78, 351, 352, 353, 354,
2193 355, 356, 357, 358, 1151, 1152, 1159, 285, 992, 1040,
2194 916, 1043, 917, 918, 919, 920, 89, 1153, 800, 800,
2195 382, 392, 392, 392, 1091, 1116, 413, 406, 1120, 78,
2196 666, 1047, 801, 801, 932, 1063, 1065, 1165, 1130, 1112,
2197 100, 100, 100, 100, 100, 100, 100, 100, 1136, 333,
2198 1139, 1134, 1110, 757, 758, 1076, 759, 100, 0, 100,
2199 0, 0, 100, 46, 47, 0, 346, 347, 0, 0,
2200 78, 0, 0, 0, 78, 78, 0, 0, 78, 0,
2201 0, 1179, 78, 78, 41, 42, 43, 44, 78, 78,
2202 0, 0, 0, 811, 813, 100, 0, 100, 0, 818,
2203 820, 100, 100, 100, 0, 353, 354, 355, 356, 357,
2204 358, 0, 800, 800, 0, 0, 0, 100, 78, 0,
2205 78, 78, 800, 800, 800, 0, 801, 801, 800, 800,
2206 0, 0, 0, 119, 0, 0, 801, 801, 801, 0,
2207 0, 1213, 801, 801, 0, 100, 100, 811, 813, 0,
2208 818, 820, 0, 0, 0, 1209, 0, 1211, 0, 0,
2209 100, 0, 1212, 0, 0, 0, 119, 0, 119, 0,
2210 1215, 0, 1217, 0, 1170, 1172, 0, 0, 0, 1218,
2211 1175, 119, 1177, 119, 1178, 0, 802, 916, 0, 917,
2212 918, 919, 920, 921, 0, 0, 100, 1185, 1187, 0,
2213 0, 0, 0, 1192, 285, 1194, 1195, 78, 0, 0,
2214 0, 1235, 922, 800, 0, 100, 1236, 0, 897, 78,
2215 0, 800, 0, 0, 78, 78, 1140, 801, 917, 918,
2216 919, 920, 0, 119, 0, 801, 924, 0, 119, 0,
2217 78, 0, 925, 926, 927, 0, 0, 78, 800, 0,
2218 0, 0, 119, 285, 0, 0, 0, 0, 78, 0,
2219 0, 78, 801, 897, 122, 576, 122, 0, 928, 0,
2220 0, 929, 0, 1224, 1226, 1227, 1228, 0, 0, 0,
2221 802, 802, 1229, 1231, 1232, 1233, 0, 0, 237, 0,
2222 119, 333, 0, 78, 119, 0, 119, 0, 0, 1238,
2223 0, 0, 78, 1239, 800, 0, 0, 0, 346, 347,
2224 0, 0, 100, 0, 100, 122, 122, 0, 801, 286,
2225 0, 916, 100, 917, 918, 919, 920, 921, 0, 0,
2226 0, 0, 100, 0, 100, 100, 0, 0, 0, 916,
2227 0, 917, 918, 919, 920, 286, 922, 273, 354, 355,
2228 356, 357, 358, 0, 0, 0, 0, 0, 383, 393,
2229 393, 0, 916, 0, 917, 918, 919, 920, 0, 100,
2230 924, 0, 0, 0, 802, 802, 925, 926, 927, 800,
2231 0, 0, 0, 800, 802, 802, 802, 0, 1018, 119,
2232 802, 802, 0, 801, 1019, 0, 0, 801, 0, 800,
2233 0, 78, 928, 78, 0, 929, 285, 0, 0, 0,
2234 100, 1018, 0, 801, 100, 100, 0, 953, 100, 0,
2235 0, 0, 100, 100, 0, 0, 0, 0, 100, 100,
2236 0, 0, 0, 0, 800, 800, 0, 0, 78, 0,
2237 0, 78, 0, 0, 0, 0, 0, 0, 801, 801,
2238 285, 0, 0, 0, 0, 0, 0, 0, 100, 0,
2239 100, 100, 0, 0, 0, 0, 0, 0, 0, 0,
2240 0, 122, 0, 0, 0, 802, 0, 0, 0, 78,
2241 0, 0, 0, 802, 0, 0, 0, 0, 916, 0,
2242 917, 918, 919, 920, 921, 0, 0, 0, 417, 0,
2243 0, 419, 420, 421, 122, 119, 122, 119, 0, 0,
2244 802, 0, 0, 922, 78, 78, 0, 0, 0, 122,
2245 0, 122, 0, 0, 0, 0, 0, 119, 0, 0,
2246 0, 0, 0, 0, 0, 0, 0, 924, 0, 0,
2247 0, 0, 286, 925, 926, 927, 0, 100, 0, 803,
2248 0, 0, 0, 78, 78, 0, 0, 0, 0, 100,
2249 0, 0, 0, 0, 100, 100, 802, 0, 0, 928,
2250 0, 122, 929, 0, 285, 0, 122, 0, 0, 0,
2251 100, 0, 0, 0, 0, 0, 0, 100, 0, 0,
2252 122, 286, 0, 538, 0, 0, 0, 0, 100, 0,
2253 0, 100, 0, 119, 0, 0, 285, 119, 0, 0,
2254 0, 0, 0, 808, 0, 0, 0, 521, 0, 0,
2255 0, 0, 534, 0, 0, 78, 0, 0, 122, 0,
2256 0, 0, 122, 100, 122, 0, 0, 0, 0, 0,
2257 0, 802, 100, 803, 803, 802, 0, 0, 0, 0,
2258 0, 119, 0, 0, 119, 0, 0, 0, 0, 0,
2259 0, 802, 0, 0, 0, 0, 0, 0, 0, 0,
2260 0, 0, 0, 0, 0, 0, 538, 538, 0, 916,
2261 0, 917, 918, 919, 920, 921, 0, 0, 0, 0,
2262 0, 0, 0, 0, 0, 0, 802, 802, 0, 0,
2263 0, 0, 0, 0, 922, 0, 0, 808, 808, 0,
2264 0, 0, 0, 0, 0, 619, 621, 0, 923, 0,
2265 0, 0, 0, 0, 273, 0, 0, 122, 924, 0,
2266 0, 0, 0, 0, 925, 926, 927, 803, 803, 0,
2267 0, 100, 0, 100, 286, 0, 0, 803, 803, 803,
2268 0, 0, 119, 803, 803, 0, 0, 119, 0, 0,
2269 928, 621, 0, 929, 273, 0, 0, 0, 0, 0,
2270 0, 0, 118, 119, 118, 0, 0, 0, 100, 0,
2271 119, 100, 0, 0, 0, 0, 0, 0, 286, 0,
2272 0, 119, 0, 0, 119, 0, 0, 0, 0, 0,
2273 0, 808, 808, 0, 0, 0, 0, 0, 0, 0,
2274 677, 808, 808, 808, 0, 0, 0, 808, 808, 100,
2275 0, 0, 1008, 118, 118, 0, 119, 284, 0, 0,
2276 0, 0, 0, 804, 0, 119, 0, 0, 803, 0,
2277 0, 0, 0, 122, 0, 122, 803, 0, 0, 0,
2278 0, 0, 0, 284, 100, 100, 0, 0, 0, 0,
2279 0, 0, 0, 0, 0, 122, 381, 391, 391, 391,
2280 0, 0, 0, 803, 0, 0, 0, 0, 0, 0,
2281 0, 0, 0, 0, 0, 0, 392, 805, 0, 0,
2282 0, 0, 0, 100, 100, 0, 0, 0, 0, 0,
2283 0, 0, 808, 0, 0, 0, 0, 0, 0, 742,
2284 808, 743, 286, 0, 0, 0, 0, 0, 0, 0,
2285 0, 761, 0, 0, 621, 0, 273, 804, 804, 803,
2286 0, 0, 0, 0, 119, 0, 119, 808, 0, 0,
2287 0, 122, 0, 0, 286, 122, 538, 0, 0, 0,
2288 0, 0, 0, 538, 538, 0, 0, 0, 0, 538,
2289 538, 0, 0, 0, 85, 100, 85, 0, 0, 771,
2290 0, 119, 0, 0, 119, 0, 0, 392, 0, 118,
2291 0, 805, 805, 0, 0, 0, 0, 0, 121, 122,
2292 121, 0, 122, 808, 0, 0, 822, 0, 0, 0,
2293 0, 0, 0, 0, 803, 0, 0, 0, 803, 0,
2294 0, 844, 118, 0, 118, 85, 85, 0, 0, 0,
2295 0, 804, 804, 0, 803, 0, 0, 118, 0, 118,
2296 0, 804, 804, 804, 0, 0, 0, 804, 804, 121,
2297 121, 0, 0, 0, 0, 0, 0, 119, 119, 0,
2298 284, 806, 0, 0, 0, 0, 0, 0, 378, 803,
2299 803, 871, 0, 0, 0, 0, 0, 0, 808, 0,
2300 0, 0, 808, 0, 0, 805, 805, 0, 538, 118,
2301 0, 0, 0, 0, 118, 805, 805, 805, 808, 0,
2302 122, 805, 805, 0, 0, 122, 0, 0, 118, 284,
2303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2304 0, 122, 0, 0, 0, 0, 0, 0, 122, 0,
2305 0, 0, 804, 808, 808, 0, 0, 0, 0, 122,
2306 804, 0, 122, 0, 909, 0, 118, 0, 0, 0,
2307 118, 0, 118, 0, 0, 806, 806, 0, 0, 0,
2308 0, 0, 0, 273, 0, 0, 0, 804, 119, 0,
2309 1009, 0, 0, 0, 122, 0, 0, 0, 0, 0,
2310 0, 85, 0, 122, 0, 0, 805, 0, 0, 0,
2311 0, 0, 0, 807, 805, 0, 0, 0, 0, 0,
2312 0, 0, 0, 0, 0, 121, 0, 0, 0, 0,
2313 0, 1015, 0, 0, 85, 0, 85, 0, 0, 0,
2314 0, 805, 0, 804, 0, 0, 0, 0, 0, 85,
2315 0, 85, 0, 0, 393, 0, 0, 0, 121, 1030,
2316 121, 0, 0, 0, 0, 118, 0, 0, 0, 806,
2317 806, 0, 0, 121, 0, 121, 0, 0, 0, 806,
2318 806, 806, 284, 0, 0, 806, 806, 0, 0, 0,
2319 0, 0, 0, 0, 0, 0, 0, 805, 0, 0,
2320 0, 85, 122, 0, 122, 0, 85, 807, 807, 0,
2321 0, 0, 0, 0, 0, 0, 0, 0, 804, 0,
2322 85, 0, 804, 532, 0, 121, 284, 0, 0, 0,
2323 121, 0, 0, 0, 0, 1098, 0, 0, 804, 122,
2324 0, 0, 122, 0, 121, 393, 0, 121, 1107, 0,
2325 0, 0, 0, 0, 0, 0, 0, 0, 85, 0,
2326 0, 0, 85, 0, 85, 0, 0, 0, 0, 0,
2327 806, 0, 805, 804, 804, 0, 805, 0, 806, 0,
2328 0, 118, 121, 118, 0, 0, 121, 0, 121, 0,
2329 0, 0, 805, 0, 0, 0, 0, 0, 0, 0,
2330 0, 807, 807, 118, 0, 806, 532, 532, 0, 0,
2331 0, 807, 807, 807, 0, 122, 122, 807, 807, 0,
2332 0, 0, 0, 0, 0, 0, 0, 805, 805, 0,
2333 121, 121, 0, 0, 0, 0, 0, 0, 0, 0,
2334 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2335 284, 0, 0, 0, 0, 0, 0, 85, 0, 332,
2336 0, 806, 0, -759, 0, 0, 0, 0, 0, 0,
2337 0, -759, -759, -759, 0, 0, -759, -759, -759, 118,
2338 -759, 121, 284, 118, 0, 0, 0, 0, -759, -759,
2339 -759, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2340 -759, -759, 807, -759, -759, -759, -759, -759, 0, 0,
2341 807, 333, 334, 335, 336, 337, 338, 339, 340, 341,
2342 342, 343, 344, 345, 0, 0, 122, 118, 346, 347,
2343 118, -759, 0, 0, 0, 0, 806, 807, 0, 0,
2344 806, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2345 0, 0, 0, 0, 0, 0, 806, 0, 0, -759,
2346 -759, 348, 0, 349, 350, 351, 352, 353, 354, 355,
2347 356, 357, 358, 85, 0, 85, 0, 0, 0, 0,
2348 0, 0, 0, -759, 0, 0, 0, 0, 0, 0,
2349 0, 806, 806, 807, 0, 85, 0, 121, 0, 121,
2350 0, 0, 0, 0, 0, 0, -759, -759, 0, 0,
2351 0, 233, -759, 0, -759, 0, -759, 0, 0, 121,
2352 0, 0, 0, 0, 0, 0, 0, 0, 118, 0,
2353 0, 0, 0, 118, 0, 0, 0, 0, 0, 0,
2354 0, 0, 0, 0, 0, 0, 0, 0, 0, 118,
2355 0, 0, 0, 0, 0, 0, 118, 0, 0, 0,
2356 0, 0, 0, 0, 0, 0, 0, 118, 807, 0,
2357 118, 85, 807, 0, 0, 85, 532, 0, 0, 0,
2358 0, 0, 0, 532, 532, 0, 0, 0, 807, 532,
2359 532, 0, 0, 0, 0, 121, 0, 0, 1007, 121,
2360 121, 0, 118, 0, 0, 0, 0, 121, 121, 0,
2361 0, 118, 0, 121, 121, 0, 0, 0, 0, 85,
2362 0, 0, 85, 807, 807, 0, 0, 0, 0, 0,
2363 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2364 0, 0, 0, 121, 0, 0, 121, 0, 0, 0,
2365 217, 217, 0, 0, 0, 0, 0, 0, 0, 0,
2366 0, 0, 391, 0, 0, 0, 0, 0, 0, 0,
2367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2368 0, 0, 250, 253, 254, 255, 0, 0, 0, 217,
2369 217, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2370 0, 0, 303, 304, 0, 0, 0, 0, 532, 0,
2371 118, 0, 118, 0, 0, 0, 0, 0, 0, 0,
2372 85, 0, 0, 0, 0, 85, 0, 0, 0, 0,
2373 0, 0, 121, 0, 217, 0, 0, 0, 0, 0,
2374 0, 85, 0, 0, 121, 0, 0, 118, 85, 121,
2375 118, 0, 0, 391, 0, 0, 0, 0, 0, 85,
2376 0, 0, 85, 0, 0, 121, 0, 0, 0, 0,
2377 0, 0, 121, 0, 0, 0, 0, 0, 0, 0,
2378 0, 0, 0, 121, 0, 0, 121, 0, 0, 0,
2379 1005, 0, 0, 0, 85, 0, 0, 0, 0, 0,
2380 0, 0, 0, 85, 23, 24, 25, 26, 0, 0,
2381 0, 0, 0, 0, 0, 0, 0, 0, 121, 0,
2382 32, 33, 34, 118, 118, 0, 0, 121, 0, 0,
2383 41, 42, 43, 44, 45, 0, 0, 0, 0, 0,
2384 0, 217, 0, 0, 217, 217, 217, 0, 303, 0,
2385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2386 0, 0, 0, 0, 217, 0, 217, 217, 0, 0,
2387 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2388 0, 789, 59, 60, 61, 62, 63, 64, 65, 66,
2389 0, 333, 334, 335, 336, 337, 338, 339, 340, 0,
2390 342, 343, 85, 0, 85, 0, 0, 0, 346, 347,
2391 279, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2392 0, 0, 0, 0, 0, 0, 121, 0, 121, 0,
2393 0, 0, 0, 0, 118, 0, 0, 0, 0, 85,
2394 0, 0, 85, 349, 350, 351, 352, 353, 354, 355,
2395 356, 357, 358, 0, 0, 0, 0, 0, 0, 0,
2396 217, 0, 0, 121, 0, 533, 121, 540, 541, 542,
2397 543, 544, 0, 0, 545, 546, 547, 548, 549, 550,
2398 551, 552, 553, 0, 0, 554, 555, 556, 557, 558,
2399 559, 560, 561, 562, 563, 0, 0, 0, 217, 0,
2400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2401 0, 0, 0, 0, 0, 85, 85, 0, 0, 0,
2402 0, 0, 0, 0, 333, 334, 335, 336, 337, 338,
2403 339, 340, 341, 342, 343, 344, 345, 0, 0, 121,
2404 121, 346, 347, 0, 0, 0, 0, 0, 613, 613,
2405 0, 0, 0, 0, 0, 0, 0, 613, 217, 217,
2406 0, 0, 0, 217, 0, 613, 613, 217, 0, 0,
2407 0, 0, 0, 255, 348, 0, 349, 350, 351, 352,
2408 353, 354, 355, 356, 357, 358, 0, 0, 639, 0,
2409 0, 0, 0, 613, 0, 0, 0, 0, 0, 0,
2410 237, 0, 0, 0, 217, 0, 0, 217, 0, 0,
2411 0, 0, 0, 0, 0, 0, 0, 0, 217, 0,
2412 0, 0, 0, 0, 0, 0, 85, 0, 0, 0,
2413 0, 0, 0, 0, 0, 0, 669, 333, 334, 335,
2414 336, 337, 338, 339, 340, 341, 342, 343, -760, -760,
2415 121, 0, 0, 217, 346, 347, 0, 0, 0, 0,
2416 0, 0, -736, 0, 0, 0, 0, 0, 0, 0,
2417 -736, -736, -736, 0, 0, 0, -736, -736, 0, -736,
2418 0, 0, 0, 0, 0, 0, 0, -736, -736, 349,
2419 350, 351, 352, 353, 354, 355, 356, 357, 358, -736,
2420 -736, 0, -736, -736, -736, -736, -736, 0, 0, 0,
2421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2422 0, 0, 0, 0, 0, 217, 0, 0, 0, 0,
2423 -736, 0, 0, 0, 0, 217, 0, 0, 0, -736,
2424 -736, -736, -736, -736, -736, -736, -736, -736, -736, -736,
2425 -736, -736, 217, 0, 217, 0, -736, -736, -736, -736,
2426 0, 691, 0, 0, 0, 0, 0, 217, 0, 217,
2427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2428 0, 0, -736, 0, 0, 0, 0, 0, -116, -736,
2429 0, -736, -736, -736, -736, -736, -736, -736, -736, -736,
2430 -736, 0, 0, 0, 0, -736, -736, -736, -107, 0,
2431 0, -736, 217, -736, 0, -736, 0, 0, 613, 775,
2432 0, 217, 0, 0, 0, 613, 613, 0, 0, 0,
2433 0, 613, 613, 0, 23, 24, 25, 26, 0, 217,
2434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2435 32, 33, 34, 781, 217, 0, 0, 782, 0, 981,
2436 41, 42, 43, 44, 45, 0, 0, 0, 0, 0,
2437 0, 0, 0, 0, 0, 0, 0, 0, 922, 613,
2438 613, 0, 613, 613, 0, 0, 0, 0, 0, 0,
2439 0, 783, 784, 0, 0, 0, 0, 0, 0, 785,
2440 0, 0, 786, 0, 217, 787, 788, 0, 975, 926,
2441 0, 789, 59, 999, 61, 62, 63, 64, 65, 66,
2442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2443 0, 0, 0, 790, 0, 0, 0, 0, 0, 0,
2444 279, 0, 0, 895, 0, 0, 0, 0, 0, 0,
2445 613, 0, -759, 4, 0, 5, 6, 7, 8, 9,
2446 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
2447 13, 14, 15, 16, 17, 18, 19, 217, 0, 0,
2448 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2449 0, 27, 0, 0, 0, 613, 217, 28, 29, 30,
2450 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2451 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
2452 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
2453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2454 0, 0, 50, 51, 217, 0, 0, 0, 0, 0,
2455 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
2456 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
2457 66, 0, 217, 0, 0, 0, 0, 0, 0, 0,
2458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2459 0, 67, 68, 69, 0, 0, 0, 0, -736, 0,
2460 0, 0, 0, -759, 0, -759, -736, -736, -736, 0,
2461 0, -736, -736, -736, 0, -736, 0, 0, 0, 0,
2462 0, 0, 0, -736, -736, -736, -736, -736, 0, 0,
2463 0, 0, 0, 0, 0, -736, -736, 0, -736, -736,
2464 -736, -736, -736, 0, 0, 0, 0, 0, 217, 0,
2465 0, 0, 0, 333, -760, -760, -760, -760, 338, 339,
2466 0, 217, -760, -760, 0, 0, -736, 0, 0, 0,
2467 346, 347, 0, 0, 0, -736, -736, -736, -736, -736,
2468 -736, -736, -736, -736, -736, -736, -736, -736, 0, 0,
2469 0, 0, -736, -736, -736, -736, 0, 745, -736, 0,
2470 0, 0, 0, 0, -736, 349, 350, 351, 352, 353,
2471 354, 355, 356, 357, 358, 0, 0, 0, -736, 0,
2472 0, -736, 217, 0, -116, -736, -736, -736, -736, -736,
2473 -736, -736, -736, -736, -736, -736, -736, 0, 0, 0,
2474 0, -736, -736, -736, -736, -630, 0, -736, -736, -736,
2475 0, -736, 0, -630, -630, -630, 0, 0, -630, -630,
2476 -630, 0, -630, 0, 0, 0, 0, 685, 0, 0,
2477 -630, 0, -630, -630, -630, 0, 0, 0, 0, 0,
2478 0, 0, -630, -630, 0, -630, -630, -630, -630, -630,
2479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2480 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
2481 343, 344, 345, -630, 0, 0, 0, 346, 347, 0,
2482 0, 0, -630, -630, -630, -630, -630, -630, -630, -630,
2483 -630, -630, -630, -630, -630, 0, 0, 0, 0, -630,
2484 -630, -630, -630, 0, -630, -630, 0, 0, 0, 0,
2485 348, -630, 349, 350, 351, 352, 353, 354, 355, 356,
2486 357, 358, 0, 0, 0, -630, 0, 0, -630, -257,
2487 0, -630, -630, -630, -630, -630, -630, -630, -630, -630,
2488 -630, -630, -630, -630, 0, 0, 0, 0, 0, -630,
2489 -630, -630, -633, 0, -630, -630, -630, 0, -630, 0,
2490 -633, -633, -633, 0, 0, -633, -633, -633, 0, -633,
2491 0, 0, 0, 0, 685, 0, 0, -633, 0, -633,
2492 -633, -633, 0, 0, 0, 0, 0, 0, 0, -633,
2493 -633, 0, -633, -633, -633, -633, -633, 0, 0, 0,
2494 0, 0, 0, 0, 0, 0, 0, 333, 334, 335,
2495 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
2496 -633, 0, 0, 0, 346, 347, 0, 0, 0, -633,
2497 -633, -633, -633, -633, -633, -633, -633, -633, -633, -633,
2498 -633, -633, 0, 0, 0, 0, -633, -633, -633, -633,
2499 0, -633, -633, 0, 0, 0, 0, 348, -633, 349,
2500 350, 351, 352, 353, 354, 355, 356, 357, 358, 0,
2501 0, 0, -633, 0, 0, -633, 0, 0, -633, -633,
2502 -633, -633, -633, -633, -633, -633, -633, -633, -633, -633,
2503 -633, 0, 0, 0, 0, 0, -633, -633, -633, -737,
2504 0, -633, -633, -633, 0, -633, 0, -737, -737, -737,
2505 0, 0, -737, -737, -737, 0, -737, 0, 0, 0,
2506 0, 0, 0, 0, -737, -737, -737, -737, -737, 0,
2507 0, 0, 0, 0, 0, 0, -737, -737, 0, -737,
2508 -737, -737, -737, -737, 0, 0, 0, 0, 0, 0,
2509 0, 0, 0, 0, 333, 334, 335, 336, 337, 338,
2510 339, 340, 341, 342, 343, 344, 345, -737, 0, 0,
2511 0, 346, 347, 0, 0, 0, -737, -737, -737, -737,
2512 -737, -737, -737, -737, -737, -737, -737, -737, -737, 0,
2513 0, 0, 0, -737, -737, -737, -737, 0, 0, -737,
2514 0, 0, 0, 0, 348, -737, 349, 350, 351, 352,
2515 353, 354, 355, 356, 357, 358, 0, 0, 0, -737,
2516 0, 0, -737, 0, 0, 0, -737, -737, -737, -737,
2517 -737, -737, -737, -737, -737, -737, -737, -737, 0, 0,
2518 0, 0, -737, -737, -737, -737, -738, 0, -737, -737,
2519 -737, 0, -737, 0, -738, -738, -738, 0, 0, -738,
2520 -738, -738, 0, -738, 0, 0, 0, 0, 0, 0,
2521 0, -738, -738, -738, -738, -738, 0, 0, 0, 0,
2522 0, 0, 0, -738, -738, 0, -738, -738, -738, -738,
2523 -738, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2524 0, 333, 334, 335, 336, 337, 338, 339, 0, 0,
2525 342, 343, 0, 0, -738, 0, 0, 0, 346, 347,
2526 0, 0, 0, -738, -738, -738, -738, -738, -738, -738,
2527 -738, -738, -738, -738, -738, -738, 0, 0, 0, 0,
2528 -738, -738, -738, -738, 0, 0, -738, 0, 0, 0,
2529 0, 0, -738, 349, 350, 351, 352, 353, 354, 355,
2530 356, 357, 358, 0, 0, 0, -738, 0, 0, -738,
2531 0, 0, 0, -738, -738, -738, -738, -738, -738, -738,
2532 -738, -738, -738, -738, -738, 0, 0, 0, 0, -738,
2533 -738, -738, -738, -310, 0, -738, -738, -738, 0, -738,
2534 0, -310, -310, -310, 0, 0, -310, -310, -310, 0,
2535 -310, 0, 0, 0, 0, 0, 0, 0, -310, 0,
2536 -310, -310, -310, 0, 0, 0, 0, 0, 0, 0,
2537 -310, -310, 0, -310, -310, -310, -310, -310, 0, 0,
2538 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2539 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2540 0, -310, 0, 0, 0, 0, 0, 0, 0, 0,
2541 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2542 -310, -310, -310, 0, 0, 0, 0, -310, -310, -310,
2543 -310, 0, 746, -310, 0, 0, 0, 0, 0, -310,
2544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2545 0, 0, 0, -310, 0, 0, -310, 0, 0, -118,
2546 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2547 -310, -310, 0, 0, 0, 0, 0, -310, -310, -310,
2548 -449, 0, -310, -310, -310, 0, -310, 0, -449, -449,
2549 -449, 0, 0, -449, -449, -449, 0, -449, 0, 0,
2550 0, 0, 0, 0, 0, -449, -449, -449, -449, 0,
2551 0, 0, 0, 0, 0, 0, 0, -449, -449, 0,
2552 -449, -449, -449, -449, -449, 0, 0, 0, 0, 0,
2553 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2554 0, 0, 0, 0, 0, 0, 0, 0, -449, 0,
2555 0, 0, 0, 0, 0, 0, 0, -449, -449, -449,
2556 -449, -449, -449, -449, -449, -449, -449, -449, -449, -449,
2557 0, 0, 0, 0, -449, -449, -449, -449, 0, 0,
2558 -449, 0, 0, 0, 0, 0, -449, 0, 0, 0,
2559 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2560 -449, 0, 0, 0, 0, 0, 0, -449, 0, -449,
2561 -449, -449, -449, -449, -449, -449, -449, -449, -449, 0,
2562 0, 0, 0, -449, -449, -449, -449, -302, 233, -449,
2563 -449, -449, 0, -449, 0, -302, -302, -302, 0, 0,
2564 -302, -302, -302, 0, -302, 0, 0, 0, 0, 0,
2565 0, 0, -302, 0, -302, -302, -302, 0, 0, 0,
2566 0, 0, 0, 0, -302, -302, 0, -302, -302, -302,
2567 -302, -302, 0, 0, 0, 0, 0, 0, 0, 0,
2568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2569 0, 0, 0, 0, 0, -302, 0, 0, 0, 0,
2570 0, 0, 0, 0, -302, -302, -302, -302, -302, -302,
2571 -302, -302, -302, -302, -302, -302, -302, 0, 0, 0,
2572 0, -302, -302, -302, -302, 0, 0, -302, 0, 0,
2573 0, 0, 0, -302, 0, 0, 0, 0, 0, 0,
2574 0, 0, 0, 0, 0, 0, 0, -302, 0, 0,
2575 -302, 0, 0, 0, -302, -302, -302, -302, -302, -302,
2576 -302, -302, -302, -302, -302, -302, 0, 0, 0, 0,
2577 0, -302, -302, -302, -759, 0, -302, -302, -302, 0,
2578 -302, 0, -759, -759, -759, 0, 0, -759, -759, -759,
2579 0, -759, 0, 0, 0, 0, 0, 0, 0, -759,
2580 -759, -759, -759, 0, 0, 0, 0, 0, 0, 0,
2581 0, -759, -759, 0, -759, -759, -759, -759, -759, 0,
2582 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2584 0, 0, -759, 0, 0, 0, 0, 0, 0, 0,
2585 0, -759, -759, -759, -759, -759, -759, -759, -759, -759,
2586 -759, -759, -759, -759, 0, 0, 0, 0, -759, -759,
2587 -759, -759, 0, 0, -759, 0, 0, 0, 0, 0,
2588 -759, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2589 0, 0, 0, 0, -759, 0, 0, 0, 0, 0,
2590 0, -759, 0, -759, -759, -759, -759, -759, -759, -759,
2591 -759, -759, -759, 0, 0, 0, 0, -759, -759, -759,
2592 -759, -317, 233, -759, -759, -759, 0, -759, 0, -317,
2593 -317, -317, 0, 0, -317, -317, -317, 0, -317, 0,
2594 0, 0, 0, 0, 0, 0, -317, 0, -317, -317,
2595 0, 0, 0, 0, 0, 0, 0, 0, -317, -317,
2596 0, -317, -317, -317, -317, -317, 0, 0, 0, 0,
2597 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2598 0, 0, 0, 0, 0, 0, 0, 0, 0, -317,
2599 0, 0, 0, 0, 0, 0, 0, 0, -317, -317,
2600 -317, -317, -317, -317, -317, -317, -317, -317, -317, -317,
2601 -317, 0, 0, 0, 0, -317, -317, -317, -317, 0,
2602 0, -317, 0, 0, 0, 0, 0, -317, 0, 0,
2603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2604 0, -317, 0, 0, 0, 0, 0, 0, -317, 0,
2605 -317, -317, -317, -317, -317, -317, -317, -317, -317, -317,
2606 0, 0, 0, 0, 0, -317, -317, -317, -736, 230,
2607 -317, -317, -317, 0, -317, 0, -736, -736, -736, 0,
2608 0, 0, -736, -736, 0, -736, 0, 0, 0, 0,
2609 0, 0, 0, -736, -736, 0, 0, 0, 0, 0,
2610 0, 0, 0, 0, 0, -736, -736, 0, -736, -736,
2611 -736, -736, -736, 0, 0, 0, 0, 0, 0, 0,
2612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2613 0, 0, 0, 0, 0, 0, -736, 0, 0, 0,
2614 0, 0, 0, 0, 0, -736, -736, -736, -736, -736,
2615 -736, -736, -736, -736, -736, -736, -736, -736, 0, 0,
2616 0, 0, -736, -736, -736, -736, 0, 691, 0, 0,
2617 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2618 0, 0, 0, 0, 0, 0, 0, 0, -736, 0,
2619 0, 0, 0, 0, -116, -736, 0, -736, -736, -736,
2620 -736, -736, -736, -736, -736, -736, -736, 0, 0, 0,
2621 0, -736, -736, -736, -736, -310, 0, -736, 0, -736,
2622 0, -736, 0, -310, -310, -310, 0, 0, 0, -310,
2623 -310, 0, -310, 0, 0, 0, 0, 0, 0, 0,
2624 -310, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2625 0, 0, -310, -310, 0, -310, -310, -310, -310, -310,
2626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2627 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2628 0, 0, 0, -310, 0, 0, 0, 0, 0, 0,
2629 0, 0, -310, -310, -310, -310, -310, -310, -310, -310,
2630 -310, -310, -310, -310, -310, 0, 0, 0, 0, -310,
2631 -310, -310, -310, 0, 692, 0, 0, 0, 0, 0,
2632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2633 0, 0, 0, 0, 0, -310, 0, 0, 0, 0,
2634 0, -118, -310, 0, -310, -310, -310, -310, -310, -310,
2635 -310, -310, -310, -310, 0, 0, 0, 0, 0, -310,
2636 -310, -109, -310, 0, -310, 0, -310, 0, -310, 0,
2637 -310, -310, -310, 0, 0, 0, -310, -310, 0, -310,
2638 0, 0, 0, 0, 0, 0, 0, -310, 0, 0,
2639 0, 0, 0, 0, 0, 0, 0, 0, 0, -310,
2640 -310, 0, -310, -310, -310, -310, -310, 0, 0, 0,
2641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2642 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2643 -310, 0, 0, 0, 0, 0, 0, 0, 0, -310,
2644 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2645 -310, -310, 0, 0, 0, 0, -310, -310, -310, -310,
2646 0, 692, 0, 0, 0, 0, 0, 0, 0, 0,
2647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2648 0, 0, -310, 0, 0, 0, 0, 0, -118, -310,
2649 0, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2650 -310, 0, 0, 0, 0, 0, -310, -310, -310, 0,
2651 0, -310, 0, -310, 257, -310, 5, 6, 7, 8,
2652 9, -759, -759, -759, 10, 11, 0, 0, -759, 12,
2653 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2654 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2655 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2656 258, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2657 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2658 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2660 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2661 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2662 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2663 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2664 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2665 0, 0, 67, 68, 69, 0, 0, 0, 0, 0,
2666 0, 0, 0, 0, -759, 257, -759, 5, 6, 7,
2667 8, 9, 0, 0, -759, 10, 11, 0, -759, -759,
2668 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2669 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2670 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2671 29, 258, 31, 32, 33, 34, 35, 36, 37, 38,
2672 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
2673 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
2674 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2675 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
2676 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
2677 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
2678 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
2679 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2680 0, 0, 0, 67, 68, 69, 0, 0, 0, 0,
2681 0, 0, 0, 0, 0, -759, 257, -759, 5, 6,
2682 7, 8, 9, 0, 0, -759, 10, 11, 0, 0,
2683 -759, 12, -759, 13, 14, 15, 16, 17, 18, 19,
2684 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
2685 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2686 28, 29, 258, 31, 32, 33, 34, 35, 36, 37,
2687 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
2688 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2689 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2690 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
2691 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
2692 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
2693 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2695 0, 0, 0, 0, 67, 68, 69, 0, 0, 0,
2696 0, 0, 0, 0, 0, 0, -759, 257, -759, 5,
2697 6, 7, 8, 9, 0, 0, -759, 10, 11, 0,
2698 0, -759, 12, 0, 13, 14, 15, 16, 17, 18,
2699 19, -759, 0, 0, 0, 0, 20, 21, 22, 23,
2700 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
2701 0, 28, 29, 258, 31, 32, 33, 34, 35, 36,
2702 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
2703 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2704 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
2705 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
2706 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
2707 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
2708 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
2709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2710 0, 0, 0, 0, 0, 67, 68, 69, 0, 0,
2711 0, 0, 0, 0, 0, 0, 0, -759, 257, -759,
2712 5, 6, 7, 8, 9, 0, 0, -759, 10, 11,
2713 0, 0, -759, 12, 0, 13, 14, 15, 16, 17,
2714 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
2715 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
2716 0, 0, 28, 29, 258, 31, 32, 33, 34, 35,
2717 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
2718 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2719 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2720 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
2721 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
2722 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
2723 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
2724 0, 0, 0, 0, 257, 0, 5, 6, 7, 8,
2725 9, 0, -759, -759, 10, 11, 67, 68, 69, 12,
2726 0, 13, 14, 15, 16, 17, 18, 19, -759, 0,
2727 -759, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2728 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2729 258, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2730 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2731 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2732 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2733 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2734 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2735 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2736 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2737 257, 0, 5, 6, 7, 8, 9, 0, 0, 0,
2738 10, 11, 67, 68, 69, 12, 0, 13, 14, 15,
2739 16, 17, 18, 19, -759, 0, -759, 0, 0, 20,
2740 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2741 0, 0, 0, 0, 28, 29, 258, 31, 32, 33,
2742 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2743 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2744 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2745 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2746 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2747 259, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2748 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2750 0, 0, 0, 0, 0, 0, 0, 0, 67, 68,
2751 69, 0, 0, 0, 0, 0, 0, 0, -759, 0,
2752 -759, 257, -759, 5, 6, 7, 8, 9, 0, 0,
2753 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
2754 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
2755 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
2756 0, 0, 0, 0, 0, 28, 29, 258, 31, 32,
2757 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
2758 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
2759 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
2760 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2761 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
2762 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
2763 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
2764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2765 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
2766 68, 69, 0, 0, 0, 0, 0, 0, 0, -759,
2767 0, -759, 4, -759, 5, 6, 7, 8, 9, 0,
2768 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
2769 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
2770 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
2771 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
2772 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
2773 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
2774 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
2775 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2776 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
2777 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
2778 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
2779 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2781 67, 68, 69, 0, 0, -759, 0, 0, 0, 0,
2782 0, 0, -759, 257, -759, 5, 6, 7, 8, 9,
2783 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
2784 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
2785 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2786 0, 27, 0, 0, 0, 0, 0, 28, 29, 258,
2787 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2788 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
2789 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
2790 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2791 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
2792 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
2793 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
2794 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2795 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2796 0, 67, 68, 69, 0, 0, -759, 0, 0, 0,
2797 0, 0, 0, -759, 257, -759, 5, 6, 7, 8,
2798 9, 0, 0, -759, 10, 11, 0, 0, 0, 12,
2799 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2800 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2801 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2802 258, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2803 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2804 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2805 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2806 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2807 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2808 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2809 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2810 257, 0, 5, 6, 7, 8, 9, 0, 0, 0,
2811 10, 11, 67, 68, 69, 12, 0, 13, 14, 15,
2812 16, 17, 18, 19, -759, 0, -759, 0, 0, 20,
2813 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2814 0, 0, 0, 0, 28, 29, 258, 31, 32, 33,
2815 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2816 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2817 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2818 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2819 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2820 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2821 59, 60, 61, 62, 63, 64, 65, 66, 0, -759,
2822 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
2823 7, 0, 9, 0, 0, 0, 10, 11, 67, 68,
2824 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2825 -759, 0, -759, 0, 0, 20, 21, 22, 23, 24,
2826 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
2827 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
2828 38, 39, 40, 207, 41, 42, 43, 44, 45, 46,
2829 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2830 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2831 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
2832 0, 0, 0, 208, 0, 0, 209, 54, 0, 55,
2833 56, 0, 210, 211, 212, 58, 59, 213, 61, 62,
2834 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2835 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
2836 0, 0, 10, 11, 67, 214, 69, 12, 0, 13,
2837 14, 15, 16, 17, 18, 19, 0, 0, 237, 0,
2838 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
2839 27, 0, 0, 0, 0, 0, 0, 29, 0, 0,
2840 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
2841 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
2842 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
2843 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2844 0, 50, 51, 0, 0, 0, 0, 0, 0, 208,
2845 0, 0, 209, 54, 0, 55, 56, 0, 0, 0,
2846 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
2847 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2848 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
2849 67, 68, 69, 12, 0, 13, 14, 15, 16, 17,
2850 18, 19, 305, 0, 306, 0, 0, 20, 21, 22,
2851 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
2852 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
2853 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
2854 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2855 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2856 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
2857 0, 0, 0, 0, 0, 208, 0, 0, 209, 54,
2858 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
2859 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
2860 0, 0, 0, 0, 0, 0, 5, 6, 7, 8,
2861 9, 0, 0, 0, 10, 11, 67, 68, 69, 12,
2862 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2863 237, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2864 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2865 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2866 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2867 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2868 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2869 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2870 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2871 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2872 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2873 0, 0, 5, 6, 7, 8, 9, 0, 0, 0,
2874 10, 11, 67, 68, 69, 12, 0, 13, 14, 15,
2875 16, 17, 18, 19, 503, 0, 0, 0, 0, 20,
2876 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2877 0, 0, 0, 0, 28, 29, 258, 31, 32, 33,
2878 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2879 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2880 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2881 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2882 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2883 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2884 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2886 0, 0, 0, 0, 0, 0, 0, 0, 67, 68,
2887 69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2888 503, 126, 127, 128, 129, 130, 131, 132, 133, 134,
2889 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
2890 145, 146, 147, 148, 149, 0, 0, 0, 150, 151,
2891 152, 395, 396, 397, 398, 157, 158, 159, 0, 0,
2892 0, 0, 0, 160, 161, 162, 163, 399, 400, 401,
2893 402, 168, 37, 38, 403, 40, 0, 0, 0, 0,
2894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2895 0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
2896 177, 178, 0, 0, 179, 180, 0, 0, 0, 0,
2897 181, 182, 183, 184, 0, 0, 0, 0, 0, 0,
2898 0, 0, 0, 0, 0, 185, 186, 0, 0, 0,
2899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2900 0, 0, 0, 0, 0, 0, 0, 187, 188, 189,
2901 190, 191, 192, 193, 194, 195, 196, 0, 197, 198,
2902 0, 0, 0, 0, 0, 199, 404, 126, 127, 128,
2903 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
2904 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
2905 149, 0, 0, 0, 150, 151, 152, 153, 154, 155,
2906 156, 157, 158, 159, 0, 0, 0, 0, 0, 160,
2907 161, 162, 163, 164, 165, 166, 167, 168, 288, 289,
2908 169, 290, 0, 0, 0, 0, 0, 0, 0, 0,
2909 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
2910 171, 172, 173, 174, 175, 176, 177, 178, 0, 0,
2911 179, 180, 0, 0, 0, 0, 181, 182, 183, 184,
2912 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2913 0, 185, 186, 0, 0, 0, 0, 0, 0, 0,
2914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2915 0, 0, 0, 187, 188, 189, 190, 191, 192, 193,
2916 194, 195, 196, 0, 197, 198, 0, 0, 0, 0,
2917 0, 199, 126, 127, 128, 129, 130, 131, 132, 133,
2918 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
2919 144, 145, 146, 147, 148, 149, 0, 0, 0, 150,
2920 151, 152, 153, 154, 155, 156, 157, 158, 159, 0,
2921 0, 0, 0, 0, 160, 161, 162, 163, 164, 165,
2922 166, 167, 168, 239, 0, 169, 0, 0, 0, 0,
2923 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2924 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
2925 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
2926 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
2927 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
2928 59, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2929 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
2930 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
2931 198, 0, 0, 0, 0, 0, 199, 126, 127, 128,
2932 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
2933 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
2934 149, 0, 0, 0, 150, 151, 152, 153, 154, 155,
2935 156, 157, 158, 159, 0, 0, 0, 0, 0, 160,
2936 161, 162, 163, 164, 165, 166, 167, 168, 0, 0,
2937 169, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2938 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
2939 171, 172, 173, 174, 175, 176, 177, 178, 0, 0,
2940 179, 180, 0, 0, 0, 0, 181, 182, 183, 184,
2941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2942 0, 185, 186, 0, 0, 59, 0, 0, 0, 0,
2943 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2944 0, 0, 0, 187, 188, 189, 190, 191, 192, 193,
2945 194, 195, 196, 0, 197, 198, 0, 0, 0, 0,
2946 0, 199, 126, 127, 128, 129, 130, 131, 132, 133,
2947 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
2948 144, 145, 146, 147, 148, 149, 0, 0, 0, 150,
2949 151, 152, 153, 154, 155, 156, 157, 158, 159, 0,
2950 0, 0, 0, 0, 160, 161, 162, 163, 164, 165,
2951 166, 167, 168, 0, 0, 169, 0, 0, 0, 0,
2952 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2953 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
2954 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
2955 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
2956 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
2957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2958 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
2959 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
2960 198, 5, 6, 7, 0, 9, 199, 0, 0, 10,
2961 11, 0, 0, 0, 12, 0, 13, 14, 15, 245,
2962 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
2963 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
2964 0, 0, 0, 0, 277, 0, 0, 32, 33, 34,
2965 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
2966 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
2967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2969 0, 0, 0, 0, 0, 0, 278, 0, 0, 209,
2970 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
2971 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
2972 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2973 5, 6, 7, 0, 9, 0, 0, 279, 10, 11,
2974 0, 0, 0, 12, 280, 13, 14, 15, 245, 246,
2975 18, 19, 0, 0, 0, 0, 0, 20, 247, 248,
2976 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
2977 0, 0, 0, 277, 0, 0, 32, 33, 34, 35,
2978 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
2979 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2980 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2982 0, 0, 0, 0, 0, 278, 0, 0, 209, 54,
2983 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
2984 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
2985 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
2986 6, 7, 8, 9, 0, 0, 279, 10, 11, 0,
2987 0, 0, 12, 526, 13, 14, 15, 16, 17, 18,
2988 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
2989 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
2990 0, 28, 29, 30, 31, 32, 33, 34, 35, 36,
2991 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
2992 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2993 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
2994 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
2995 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
2996 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
2997 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
2998 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
2999 0, 0, 0, 10, 11, 67, 68, 69, 12, 0,
3000 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3001 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3002 0, 206, 0, 0, 0, 0, 0, 0, 29, 0,
3003 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3004 207, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3005 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3006 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3007 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3008 208, 0, 0, 209, 54, 0, 55, 56, 0, 210,
3009 211, 212, 58, 59, 213, 61, 62, 63, 64, 65,
3010 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3011 0, 5, 6, 7, 8, 9, 0, 0, 0, 10,
3012 11, 67, 214, 69, 12, 0, 13, 14, 15, 16,
3013 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3014 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3015 0, 0, 0, 28, 29, 0, 31, 32, 33, 34,
3016 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3017 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3018 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3019 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3020 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
3021 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
3022 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3023 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3024 0, 9, 0, 0, 0, 10, 11, 67, 68, 69,
3025 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3026 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
3027 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3028 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3029 39, 40, 207, 41, 42, 43, 44, 45, 46, 47,
3030 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3031 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3032 0, 0, 0, 0, 50, 439, 0, 0, 0, 0,
3033 0, 0, 208, 0, 0, 209, 54, 0, 55, 56,
3034 0, 210, 211, 212, 58, 59, 213, 61, 62, 63,
3035 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3036 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3037 0, 10, 11, 67, 214, 69, 12, 0, 13, 14,
3038 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3039 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3040 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3041 33, 34, 35, 36, 37, 38, 39, 40, 207, 41,
3042 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3043 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3044 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3045 50, 51, 0, 0, 0, 0, 0, 0, 208, 0,
3046 0, 209, 54, 0, 55, 56, 0, 620, 211, 212,
3047 58, 59, 213, 61, 62, 63, 64, 65, 66, 0,
3048 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3049 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3050 214, 69, 12, 0, 13, 14, 15, 245, 246, 18,
3051 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3052 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3053 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3054 37, 38, 39, 40, 207, 41, 42, 43, 44, 45,
3055 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3056 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3057 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3058 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3059 55, 56, 0, 210, 211, 0, 58, 59, 213, 61,
3060 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3061 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3062 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3063 13, 14, 15, 245, 246, 18, 19, 0, 0, 0,
3064 0, 0, 20, 247, 248, 23, 24, 25, 26, 0,
3065 0, 206, 0, 0, 0, 0, 0, 0, 29, 0,
3066 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3067 207, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3068 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3069 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3070 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3071 208, 0, 0, 209, 54, 0, 55, 56, 0, 0,
3072 211, 212, 58, 59, 213, 61, 62, 63, 64, 65,
3073 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3074 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3075 11, 67, 214, 69, 12, 0, 13, 14, 15, 245,
3076 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3077 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3078 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3079 35, 36, 37, 38, 39, 40, 207, 41, 42, 43,
3080 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3081 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3082 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3083 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3084 54, 0, 55, 56, 0, 620, 211, 0, 58, 59,
3085 213, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3086 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3087 0, 9, 0, 0, 0, 10, 11, 67, 214, 69,
3088 12, 0, 13, 14, 15, 245, 246, 18, 19, 0,
3089 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3090 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3091 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3092 39, 40, 207, 41, 42, 43, 44, 45, 46, 47,
3093 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3094 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3095 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3096 0, 0, 208, 0, 0, 209, 54, 0, 55, 56,
3097 0, 0, 211, 0, 58, 59, 213, 61, 62, 63,
3098 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3099 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3100 0, 10, 11, 67, 214, 69, 12, 0, 13, 14,
3101 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
3102 20, 21, 22, 23, 24, 25, 26, 0, 0, 206,
3103 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3104 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3105 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3106 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3107 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3108 50, 51, 0, 0, 0, 0, 0, 0, 208, 0,
3109 0, 209, 54, 0, 55, 56, 0, 519, 0, 0,
3110 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3111 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3112 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3113 214, 69, 12, 0, 13, 14, 15, 245, 246, 18,
3114 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3115 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3116 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3117 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3118 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3119 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3120 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3121 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3122 55, 56, 0, 770, 0, 0, 58, 59, 60, 61,
3123 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3124 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3125 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3126 13, 14, 15, 245, 246, 18, 19, 0, 0, 0,
3127 0, 0, 20, 247, 248, 23, 24, 25, 26, 0,
3128 0, 206, 0, 0, 0, 0, 0, 0, 29, 0,
3129 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3130 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3131 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3133 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3134 208, 0, 0, 209, 54, 0, 55, 56, 0, 519,
3135 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3136 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3137 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3138 11, 67, 214, 69, 12, 0, 13, 14, 15, 245,
3139 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3140 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3141 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3142 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3143 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3144 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3145 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3146 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3147 54, 0, 55, 56, 0, 843, 0, 0, 58, 59,
3148 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3149 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3150 0, 9, 0, 0, 0, 10, 11, 67, 214, 69,
3151 12, 0, 13, 14, 15, 245, 246, 18, 19, 0,
3152 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3153 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3154 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3155 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3156 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3157 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3158 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3159 0, 0, 208, 0, 0, 209, 54, 0, 55, 56,
3160 0, 1014, 0, 0, 58, 59, 60, 61, 62, 63,
3161 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3162 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3163 0, 10, 11, 67, 214, 69, 12, 0, 13, 14,
3164 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3165 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3166 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3167 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3168 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3169 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3171 50, 51, 0, 0, 0, 0, 0, 0, 208, 0,
3172 0, 209, 54, 0, 55, 56, 0, 0, 0, 0,
3173 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3174 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3175 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3176 214, 69, 12, 0, 13, 14, 15, 16, 17, 18,
3177 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
3178 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3179 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3180 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3181 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3182 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3183 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3184 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3185 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
3186 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3187 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3188 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3189 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3190 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3191 0, 27, 0, 0, 0, 0, 0, 0, 29, 0,
3192 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3193 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3194 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3196 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3197 208, 0, 0, 209, 54, 0, 55, 56, 0, 0,
3198 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3199 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3200 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3201 11, 67, 68, 69, 12, 0, 13, 14, 15, 245,
3202 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3203 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3204 0, 0, 0, 0, 277, 0, 0, 32, 33, 34,
3205 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3206 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3209 0, 0, 0, 0, 0, 0, 278, 0, 0, 328,
3210 54, 0, 55, 56, 0, 329, 0, 0, 58, 59,
3211 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3212 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3213 0, 10, 11, 0, 0, 0, 12, 279, 13, 14,
3214 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3215 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3216 0, 0, 0, 0, 0, 0, 277, 0, 0, 32,
3217 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3218 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3221 0, 0, 0, 0, 0, 0, 0, 0, 376, 0,
3222 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
3223 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3224 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3225 0, 0, 0, 10, 11, 0, 0, 0, 12, 279,
3226 13, 14, 15, 245, 246, 18, 19, 0, 0, 0,
3227 0, 0, 20, 247, 248, 23, 24, 25, 26, 0,
3228 0, 206, 0, 0, 0, 0, 0, 0, 277, 0,
3229 0, 32, 33, 34, 384, 36, 37, 38, 385, 40,
3230 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3231 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3233 0, 0, 0, 0, 0, 0, 386, 0, 0, 0,
3234 387, 0, 0, 209, 54, 0, 55, 56, 0, 0,
3235 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3236 66, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3237 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
3238 12, 279, 13, 14, 15, 245, 246, 18, 19, 0,
3239 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3240 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3241 277, 0, 0, 32, 33, 34, 384, 36, 37, 38,
3242 385, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3244 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3245 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3246 0, 0, 387, 0, 0, 209, 54, 0, 55, 56,
3247 0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
3248 64, 65, 66, 0, 0, 0, 0, 0, 0, 5,
3249 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
3250 0, 0, 12, 279, 13, 14, 15, 245, 246, 18,
3251 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3252 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3253 0, 0, 277, 0, 0, 32, 33, 34, 35, 36,
3254 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3255 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3258 0, 0, 0, 0, 278, 0, 0, 328, 54, 0,
3259 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
3260 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3261 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3262 11, 0, 0, 0, 12, 279, 13, 14, 15, 245,
3263 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3264 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3265 0, 0, 0, 0, 277, 0, 0, 32, 33, 34,
3266 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3267 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3270 0, 0, 0, 0, 0, 0, 1004, 0, 0, 209,
3271 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
3272 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3273 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3274 0, 10, 11, 0, 0, 0, 12, 279, 13, 14,
3275 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3276 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3277 0, 0, 0, 0, 0, 0, 277, 0, 0, 32,
3278 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3279 42, 43, 44, 45, 46, 47, 23, 24, 25, 26,
3280 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3281 0, 0, 32, 33, 34, 781, 0, 0, 0, 782,
3282 0, 0, 41, 42, 43, 44, 45, 0, 1056, 0,
3283 0, 209, 54, 0, 55, 56, 0, 0, 0, 0,
3284 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3285 0, 0, 0, 783, 784, 0, 0, 0, 0, 0,
3286 0, 785, 0, 0, 786, 0, 0, 787, 788, 279,
3287 975, 0, 0, 789, 59, 60, 61, 62, 63, 64,
3288 65, 66, 23, 24, 25, 26, 0, 0, 0, 0,
3289 0, 0, 0, 0, 0, 790, 0, 0, 32, 33,
3290 34, 781, 279, 0, 0, 782, 0, 0, 41, 42,
3291 43, 44, 45, 0, 0, 23, 24, 25, 26, 0,
3292 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3293 0, 32, 33, 34, 781, 0, 0, 0, 782, 783,
3294 784, 41, 42, 43, 44, 45, 0, 785, 0, 0,
3295 786, 0, 0, 787, 788, 0, 1071, 0, 0, 789,
3296 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3297 0, 0, 783, 784, 0, 0, 0, 0, 0, 0,
3298 785, 790, 0, 786, 0, 0, 787, 788, 279, 0,
3299 0, 0, 789, 59, 60, 61, 62, 63, 64, 65,
3300 66, 564, 565, 0, 0, 566, 0, 0, 0, 0,
3301 0, 0, 0, 0, 790, 0, 0, 0, 0, 0,
3302 0, 279, 0, 0, 170, 171, 172, 173, 174, 175,
3303 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3304 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3305 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3306 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3307 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3308 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3309 198, 572, 573, 0, 0, 574, 199, 233, 0, 0,
3310 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3311 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3312 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3313 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3314 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3316 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3317 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3318 198, 624, 565, 0, 0, 625, 199, 233, 0, 0,
3319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3320 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3321 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3322 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3323 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3325 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3326 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3327 198, 627, 573, 0, 0, 628, 199, 233, 0, 0,
3328 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3329 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3330 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3331 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3332 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3333 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3334 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3335 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3336 198, 652, 565, 0, 0, 653, 199, 233, 0, 0,
3337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3338 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3339 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3340 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3341 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3343 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3344 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3345 198, 655, 573, 0, 0, 656, 199, 233, 0, 0,
3346 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3347 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3348 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3349 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3350 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3352 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3353 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3354 198, 722, 565, 0, 0, 723, 199, 233, 0, 0,
3355 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3356 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3357 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3358 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3359 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3360 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3361 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3362 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3363 198, 725, 573, 0, 0, 726, 199, 233, 0, 0,
3364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3365 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3366 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3367 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3368 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3370 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3371 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3372 198, 731, 565, 0, 0, 732, 199, 233, 0, 0,
3373 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3374 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3375 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3376 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3377 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3379 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3380 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3381 198, 609, 573, 0, 0, 610, 199, 233, 0, 0,
3382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3383 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3384 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3385 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3386 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3387 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3388 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3389 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3390 198, 776, 565, 0, 0, 777, 199, 233, 0, 0,
3391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3392 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3393 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3394 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3395 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3397 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3398 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3399 198, 779, 573, 0, 0, 780, 199, 233, 0, 0,
3400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3401 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3402 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3403 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3404 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3406 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3407 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3408 198, 1154, 565, 0, 0, 1155, 199, 233, 0, 0,
3409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3410 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3411 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3412 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3413 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3415 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3416 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3417 198, 1157, 573, 0, 0, 1158, 199, 233, 0, 0,
3418 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3419 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3420 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3421 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3422 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3424 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3425 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3426 198, 1188, 565, 0, 0, 1189, 199, 233, 0, 0,
3427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3428 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3429 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3430 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3431 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3432 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3433 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3434 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3435 198, 609, 573, 0, 0, 610, 199, 233, 0, 0,
3436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3437 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3438 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3439 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3440 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3442 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3443 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3444 198, 0, 0, 0, 0, 0, 199
3449 2, 369, 89, 60, 28, 57, 94, 102, 8, 227,
3450 710, 71, 22, 8, 101, 83, 433, 387, 53, 59,
3451 866, 331, 16, 17, 95, 91, 92, 71, 28, 95,
3452 67, 83, 68, 28, 2, 95, 4, 717, 57, 1066,
3453 26, 16, 17, 626, 96, 97, 98, 53, 16, 17,
3454 27, 603, 29, 55, 56, 1039, 473, 364, 25, 99,
3455 92, 55, 56, 95, 59, 425, 4, 13, 78, 893,
3456 894, 654, 482, 433, 2, 1062, 4, 271, 25, 52,
3457 1104, 275, 16, 17, 857, 53, 54, 27, 363, 57,
3458 365, 864, 29, 25, 25, 52, 295, 296, 958, 13,
3459 68, 25, 25, 100, 99, 1106, 100, 15, 25, 17,
3460 16, 17, 893, 894, 68, 83, 526, 126, 259, 331,
3461 1028, 55, 429, 91, 92, 100, 54, 95, 96, 97,
3462 98, 13, 100, 0, 26, 222, 411, 146, 25, 924,
3463 34, 724, 96, 97, 37, 38, 1054, 13, 13, 146,
3464 855, 734, 857, 428, 153, 430, 213, 143, 52, 864,
3465 414, 415, 148, 689, 251, 15, 100, 66, 66, 1196,
3466 236, 13, 238, 146, 209, 25, 866, 484, 730, 146,
3467 953, 148, 1028, 458, 1208, 1169, 123, 328, 1048, 146,
3468 261, 145, 13, 1039, 100, 778, 283, 1184, 68, 146,
3469 146, 261, 414, 415, 787, 151, 1207, 153, 1054, 244,
3470 485, 151, 280, 153, 146, 146, 1062, 261, 635, 221,
3471 119, 119, 146, 146, 259, 227, 444, 97, 280, 146,
3472 600, 233, 1013, 1018, 1019, 13, 230, 151, 232, 153,
3473 242, 209, 279, 143, 310, 311, 312, 313, 953, 315,
3474 316, 143, 855, 259, 857, 230, 56, 232, 233, 146,
3475 153, 864, 230, 866, 232, 233, 1174, 143, 236, 151,
3476 238, 153, 682, 633, 242, 635, 244, 329, 310, 311,
3477 312, 313, 148, 1191, 591, 151, 151, 153, 153, 257,
3478 326, 259, 379, 328, 601, 331, 230, 849, 232, 498,
3479 277, 500, 373, 25, 856, 371, 148, 152, 891, 151,
3480 329, 153, 280, 373, 242, 58, 1016, 592, 870, 1104,
3481 386, 1106, 328, 1169, 230, 109, 232, 602, 13, 257,
3482 151, 13, 153, 152, 77, 370, 1016, 372, 1184, 371,
3483 1164, 309, 310, 311, 312, 313, 314, 315, 316, 133,
3484 953, 877, 878, 866, 66, 100, 37, 38, 326, 68,
3485 328, 329, 364, 331, 1054, 108, 99, 893, 894, 112,
3486 365, 309, 1062, 151, 1064, 153, 100, 880, 414, 415,
3487 687, 309, 34, 151, 978, 153, 314, 25, 97, 364,
3488 893, 894, 326, 126, 977, 705, 364, 331, 366, 152,
3489 52, 146, 370, 371, 372, 623, 25, 783, 784, 121,
3490 122, 686, 124, 688, 482, 785, 411, 152, 386, 1002,
3491 1003, 236, 1207, 1208, 146, 1028, 148, 429, 452, 153,
3492 482, 425, 25, 97, 694, 430, 1039, 691, 692, 28,
3493 442, 701, 444, 697, 698, 862, 414, 415, 22, 264,
3494 537, 1054, 452, 268, 429, 649, 126, 452, 526, 1062,
3495 986, 429, 661, 458, 99, 99, 151, 666, 153, 151,
3496 13, 153, 684, 99, 526, 1069, 470, 845, 146, 691,
3497 692, 145, 484, 77, 148, 697, 698, 1013, 126, 144,
3498 485, 126, 126, 68, 1184, 1047, 1186, 465, 153, 99,
3499 126, 1191, 862, 1193, 78, 593, 126, 126, 146, 484,
3500 1013, 149, 888, 889, 482, 153, 484, 146, 1031, 99,
3501 890, 96, 97, 1036, 153, 585, 126, 146, 1031, 148,
3502 149, 899, 750, 126, 153, 1144, 904, 1237, 604, 1148,
3503 1230, 1054, 136, 137, 138, 1058, 581, 66, 583, 1062,
3504 1144, 1064, 99, 146, 1148, 1058, 149, 99, 526, 569,
3505 153, 99, 816, 942, 943, 99, 1169, 577, 112, 99,
3506 145, 1123, 638, 1156, 1077, 577, 553, 579, 146, 126,
3507 56, 1184, 650, 68, 126, 964, 965, 966, 126, 591,
3508 68, 1200, 126, 617, 571, 68, 126, 592, 650, 601,
3509 119, 611, 121, 122, 816, 1199, 1200, 602, 151, 611,
3510 153, 96, 97, 581, 682, 583, 591, 617, 96, 97,
3511 435, 623, 617, 591, 97, 440, 601, 148, 443, 126,
3512 682, 446, 66, 601, 66, 603, 604, 99, 1164, 633,
3513 68, 643, 100, 2, 739, 4, 66, 462, 684, 626,
3514 68, 25, 467, 866, 68, 691, 692, 16, 17, 146,
3515 145, 697, 698, 729, 126, 146, 866, 145, 728, 97,
3516 638, 1184, 153, 1186, 248, 249, 68, 654, 1191, 97,
3517 1193, 148, 650, 97, 66, 687, 153, 121, 122, 121,
3518 122, 146, 727, 688, 53, 54, 149, 729, 738, 119,
3519 153, 121, 122, 705, 706, 97, 708, 26, 710, 68,
3520 525, 679, 687, 99, 682, 683, 684, 1230, 152, 687,
3521 152, 68, 148, 691, 692, 1093, 82, 83, 518, 697,
3522 698, 68, 91, 92, 68, 1114, 95, 119, 146, 121,
3523 122, 100, 124, 738, 66, 153, 148, 724, 750, 68,
3524 97, 679, 126, 148, 68, 683, 1135, 734, 68, 727,
3525 97, 729, 730, 97, 9, 767, 150, 769, 834, 153,
3526 15, 705, 146, 129, 130, 149, 68, 96, 97, 153,
3527 816, 1088, 96, 97, 68, 52, 96, 97, 578, 56,
3528 850, 365, 68, 828, 584, 77, 586, 119, 833, 121,
3529 122, 778, 834, 52, 96, 97, 149, 56, 126, 68,
3530 787, 788, 96, 97, 1089, 150, 99, 144, 1031, 56,
3531 96, 97, 824, 146, 143, 77, 145, 106, 99, 148,
3532 146, 145, 867, 56, 148, 145, 77, 96, 97, 14,
3533 15, 1054, 151, 126, 130, 1058, 898, 25, 816, 1062,
3534 209, 1064, 66, 145, 1054, 126, 430, 146, 1058, 149,
3535 828, 145, 1062, 146, 1064, 833, 834, 902, 146, 145,
3536 144, 230, 144, 232, 233, 146, 911, 236, 146, 238,
3537 146, 849, 99, 242, 458, 244, 145, 68, 856, 866,
3538 99, 951, 10, 134, 135, 136, 137, 138, 257, 867,
3539 259, 144, 870, 88, 89, 119, 146, 121, 122, 126,
3540 962, 485, 54, 146, 891, 96, 97, 126, 44, 1006,
3541 146, 736, 64, 65, 44, 982, 40, 41, 718, 146,
3542 898, 721, 126, 8, 902, 13, 751, 146, 940, 25,
3543 942, 943, 999, 911, 17, 735, 152, 152, 144, 99,
3544 309, 310, 311, 312, 313, 314, 315, 316, 146, 68,
3545 128, 68, 964, 965, 966, 15, 150, 326, 148, 328,
3546 146, 1184, 331, 1186, 131, 1010, 126, 1012, 1191, 146,
3547 1193, 958, 26, 2, 1184, 4, 1186, 96, 97, 96,
3548 97, 1191, 52, 1193, 962, 569, 146, 16, 17, 100,
3549 977, 1053, 131, 577, 100, 364, 983, 366, 146, 1011,
3550 144, 370, 371, 372, 1016, 1050, 52, 1230, 592, 66,
3551 67, 26, 126, 146, 68, 1002, 1003, 386, 602, 146,
3552 1230, 68, 52, 146, 53, 54, 145, 611, 145, 52,
3553 146, 146, 1010, 131, 1012, 835, 126, 146, 838, 68,
3554 56, 841, 96, 97, 66, 414, 415, 146, 848, 96,
3555 97, 851, 146, 68, 146, 146, 414, 415, 642, 643,
3556 429, 1048, 91, 92, 121, 122, 95, 892, 146, 1047,
3557 151, 100, 1050, 431, 432, 1053, 1088, 9, 1090, 1124,
3558 1092, 96, 97, 68, 1089, 146, 1162, 1163, 68, 143,
3559 146, 145, 866, 131, 148, 56, 465, 119, 145, 121,
3560 122, 459, 1114, 1088, 688, 99, 931, 932, 58, 99,
3561 1088, 96, 97, 913, 146, 484, 96, 97, 146, 146,
3562 1162, 1163, 146, 1135, 52, 146, 146, 77, 143, 120,
3563 145, 149, 126, 148, 146, 66, 126, 146, 52, 146,
3564 54, 55, 56, 57, 58, 1123, 1124, 146, 146, 974,
3565 950, 146, 146, 146, 1141, 242, 146, 146, 108, 109,
3566 145, 144, 148, 77, 689, 145, 2, 148, 4, 1156,
3567 40, 41, 42, 43, 44, 1000, 1001, 146, 689, 146,
3568 209, 461, 77, 133, 1162, 1163, 465, 101, 119, 1234,
3569 121, 122, 96, 124, 108, 109, 98, 1022, 87, 94,
3570 95, 230, 611, 232, 233, 706, 1018, 236, 1092, 238,
3571 1104, 866, 581, 242, 583, 244, 1196, 53, 54, 133,
3572 769, 57, 591, 883, 740, 1237, 1237, 514, 257, 324,
3573 259, 887, 601, 1013, 603, 604, 131, 132, 133, 134,
3574 135, 136, 137, 138, 1077, 1077, 1090, 83, 885, 945,
3575 52, 947, 54, 55, 56, 57, 1234, 1077, 783, 784,
3576 96, 97, 98, 99, 1011, 1039, 105, 99, 1042, 638,
3577 500, 952, 783, 784, 855, 968, 969, 1102, 1054, 1031,
3578 309, 310, 311, 312, 313, 314, 315, 316, 1062, 77,
3579 1064, 1058, 1028, 54, 55, 983, 57, 326, -1, 328,
3580 -1, -1, 331, 64, 65, -1, 94, 95, -1, -1,
3581 679, -1, -1, -1, 683, 684, -1, -1, 687, -1,
3582 -1, 1121, 691, 692, 59, 60, 61, 62, 697, 698,
3583 -1, -1, -1, 691, 692, 364, -1, 366, -1, 697,
3584 698, 370, 371, 372, -1, 133, 134, 135, 136, 137,
3585 138, -1, 877, 878, -1, -1, -1, 386, 727, -1,
3586 729, 730, 887, 888, 889, -1, 877, 878, 893, 894,
3587 -1, -1, -1, 209, -1, -1, 887, 888, 889, -1,
3588 -1, 1181, 893, 894, -1, 414, 415, 745, 746, -1,
3589 748, 749, -1, -1, -1, 1169, -1, 1171, -1, -1,
3590 429, -1, 1176, -1, -1, -1, 242, -1, 244, -1,
3591 1184, -1, 1186, -1, 1110, 1111, -1, -1, -1, 1193,
3592 1116, 257, 1118, 259, 1120, -1, 689, 52, -1, 54,
3593 55, 56, 57, 58, -1, -1, 465, 1130, 1131, -1,
3594 -1, -1, -1, 1136, 280, 1138, 1139, 816, -1, -1,
3595 -1, 1225, 77, 978, -1, 484, 1230, -1, 816, 828,
3596 -1, 986, -1, -1, 833, 834, 52, 978, 54, 55,
3597 56, 57, -1, 309, -1, 986, 101, -1, 314, -1,
3598 849, -1, 107, 108, 109, -1, -1, 856, 1013, -1,
3599 -1, -1, 328, 329, -1, -1, -1, -1, 867, -1,
3600 -1, 870, 1013, 861, 2, 1089, 4, -1, 133, -1,
3601 -1, 136, -1, 1209, 1210, 1211, 1212, -1, -1, -1,
3602 783, 784, 1215, 1216, 1217, 1218, -1, -1, 153, -1,
3603 366, 77, -1, 902, 370, -1, 372, -1, -1, 1235,
3604 -1, -1, 911, 1236, 1069, -1, -1, -1, 94, 95,
3605 -1, -1, 581, -1, 583, 53, 54, -1, 1069, 57,
3606 -1, 52, 591, 54, 55, 56, 57, 58, -1, -1,
3607 -1, -1, 601, -1, 603, 604, -1, -1, -1, 52,
3608 -1, 54, 55, 56, 57, 83, 77, 56, 134, 135,
3609 136, 137, 138, -1, -1, -1, -1, -1, 96, 97,
3610 98, -1, 52, -1, 54, 55, 56, 57, -1, 638,
3611 101, -1, -1, -1, 877, 878, 107, 108, 109, 1144,
3612 -1, -1, -1, 1148, 887, 888, 889, -1, 101, 465,
3613 893, 894, -1, 1144, 107, -1, -1, 1148, -1, 1164,
3614 -1, 1010, 133, 1012, -1, 136, 482, -1, -1, -1,
3615 679, 101, -1, 1164, 683, 684, -1, 148, 687, -1,
3616 -1, -1, 691, 692, -1, -1, -1, -1, 697, 698,
3617 -1, -1, -1, -1, 1199, 1200, -1, -1, 1047, -1,
3618 -1, 1050, -1, -1, -1, -1, -1, -1, 1199, 1200,
3619 526, -1, -1, -1, -1, -1, -1, -1, 727, -1,
3620 729, 730, -1, -1, -1, -1, -1, -1, -1, -1,
3621 -1, 209, -1, -1, -1, 978, -1, -1, -1, 1088,
3622 -1, -1, -1, 986, -1, -1, -1, -1, 52, -1,
3623 54, 55, 56, 57, 58, -1, -1, -1, 207, -1,
3624 -1, 210, 211, 212, 242, 581, 244, 583, -1, -1,
3625 1013, -1, -1, 77, 1123, 1124, -1, -1, -1, 257,
3626 -1, 259, -1, -1, -1, -1, -1, 603, -1, -1,
3627 -1, -1, -1, -1, -1, -1, -1, 101, -1, -1,
3628 -1, -1, 280, 107, 108, 109, -1, 816, -1, 689,
3629 -1, -1, -1, 1162, 1163, -1, -1, -1, -1, 828,
3630 -1, -1, -1, -1, 833, 834, 1069, -1, -1, 133,
3631 -1, 309, 136, -1, 650, -1, 314, -1, -1, -1,
3632 849, -1, -1, -1, -1, -1, -1, 856, -1, -1,
3633 328, 329, -1, 331, -1, -1, -1, -1, 867, -1,
3634 -1, 870, -1, 679, -1, -1, 682, 683, -1, -1,
3635 -1, -1, -1, 689, -1, -1, -1, 326, -1, -1,
3636 -1, -1, 331, -1, -1, 1234, -1, -1, 366, -1,
3637 -1, -1, 370, 902, 372, -1, -1, -1, -1, -1,
3638 -1, 1144, 911, 783, 784, 1148, -1, -1, -1, -1,
3639 -1, 727, -1, -1, 730, -1, -1, -1, -1, -1,
3640 -1, 1164, -1, -1, -1, -1, -1, -1, -1, -1,
3641 -1, -1, -1, -1, -1, -1, 414, 415, -1, 52,
3642 -1, 54, 55, 56, 57, 58, -1, -1, -1, -1,
3643 -1, -1, -1, -1, -1, -1, 1199, 1200, -1, -1,
3644 -1, -1, -1, -1, 77, -1, -1, 783, 784, -1,
3645 -1, -1, -1, -1, -1, 424, 425, -1, 91, -1,
3646 -1, -1, -1, -1, 433, -1, -1, 465, 101, -1,
3647 -1, -1, -1, -1, 107, 108, 109, 877, 878, -1,
3648 -1, 1010, -1, 1012, 482, -1, -1, 887, 888, 889,
3649 -1, -1, 828, 893, 894, -1, -1, 833, -1, -1,
3650 133, 470, -1, 136, 473, -1, -1, -1, -1, -1,
3651 -1, -1, 2, 849, 4, -1, -1, -1, 1047, -1,
3652 856, 1050, -1, -1, -1, -1, -1, -1, 526, -1,
3653 -1, 867, -1, -1, 870, -1, -1, -1, -1, -1,
3654 -1, 877, 878, -1, -1, -1, -1, -1, -1, -1,
3655 519, 887, 888, 889, -1, -1, -1, 893, 894, 1088,
3656 -1, -1, 898, 53, 54, -1, 902, 57, -1, -1,
3657 -1, -1, -1, 689, -1, 911, -1, -1, 978, -1,
3658 -1, -1, -1, 581, -1, 583, 986, -1, -1, -1,
3659 -1, -1, -1, 83, 1123, 1124, -1, -1, -1, -1,
3660 -1, -1, -1, -1, -1, 603, 96, 97, 98, 99,
3661 -1, -1, -1, 1013, -1, -1, -1, -1, -1, -1,
3662 -1, -1, -1, -1, -1, -1, 962, 689, -1, -1,
3663 -1, -1, -1, 1162, 1163, -1, -1, -1, -1, -1,
3664 -1, -1, 978, -1, -1, -1, -1, -1, -1, 618,
3665 986, 620, 650, -1, -1, -1, -1, -1, -1, -1,
3666 -1, 659, -1, -1, 633, -1, 635, 783, 784, 1069,
3667 -1, -1, -1, -1, 1010, -1, 1012, 1013, -1, -1,
3668 -1, 679, -1, -1, 682, 683, 684, -1, -1, -1,
3669 -1, -1, -1, 691, 692, -1, -1, -1, -1, 697,
3670 698, -1, -1, -1, 2, 1234, 4, -1, -1, 678,
3671 -1, 1047, -1, -1, 1050, -1, -1, 1053, -1, 209,
3672 -1, 783, 784, -1, -1, -1, -1, -1, 2, 727,
3673 4, -1, 730, 1069, -1, -1, 705, -1, -1, -1,
3674 -1, -1, -1, -1, 1144, -1, -1, -1, 1148, -1,
3675 -1, 720, 242, -1, 244, 53, 54, -1, -1, -1,
3676 -1, 877, 878, -1, 1164, -1, -1, 257, -1, 259,
3677 -1, 887, 888, 889, -1, -1, -1, 893, 894, 53,
3678 54, -1, -1, -1, -1, -1, -1, 1123, 1124, -1,
3679 280, 689, -1, -1, -1, -1, -1, -1, 96, 1199,
3680 1200, 770, -1, -1, -1, -1, -1, -1, 1144, -1,
3681 -1, -1, 1148, -1, -1, 877, 878, -1, 816, 309,
3682 -1, -1, -1, -1, 314, 887, 888, 889, 1164, -1,
3683 828, 893, 894, -1, -1, 833, -1, -1, 328, 329,
3684 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3685 -1, 849, -1, -1, -1, -1, -1, -1, 856, -1,
3686 -1, -1, 978, 1199, 1200, -1, -1, -1, -1, 867,
3687 986, -1, 870, -1, 843, -1, 366, -1, -1, -1,
3688 370, -1, 372, -1, -1, 783, 784, -1, -1, -1,
3689 -1, -1, -1, 862, -1, -1, -1, 1013, 1234, -1,
3690 898, -1, -1, -1, 902, -1, -1, -1, -1, -1,
3691 -1, 209, -1, 911, -1, -1, 978, -1, -1, -1,
3692 -1, -1, -1, 689, 986, -1, -1, -1, -1, -1,
3693 -1, -1, -1, -1, -1, 209, -1, -1, -1, -1,
3694 -1, 910, -1, -1, 242, -1, 244, -1, -1, -1,
3695 -1, 1013, -1, 1069, -1, -1, -1, -1, -1, 257,
3696 -1, 259, -1, -1, 962, -1, -1, -1, 242, 938,
3697 244, -1, -1, -1, -1, 465, -1, -1, -1, 877,
3698 878, -1, -1, 257, -1, 259, -1, -1, -1, 887,
3699 888, 889, 482, -1, -1, 893, 894, -1, -1, -1,
3700 -1, -1, -1, -1, -1, -1, -1, 1069, -1, -1,
3701 -1, 309, 1010, -1, 1012, -1, 314, 783, 784, -1,
3702 -1, -1, -1, -1, -1, -1, -1, -1, 1144, -1,
3703 328, -1, 1148, 331, -1, 309, 526, -1, -1, -1,
3704 314, -1, -1, -1, -1, 1014, -1, -1, 1164, 1047,
3705 -1, -1, 1050, -1, 328, 1053, -1, 331, 1027, -1,
3706 -1, -1, -1, -1, -1, -1, -1, -1, 366, -1,
3707 -1, -1, 370, -1, 372, -1, -1, -1, -1, -1,
3708 978, -1, 1144, 1199, 1200, -1, 1148, -1, 986, -1,
3709 -1, 581, 366, 583, -1, -1, 370, -1, 372, -1,
3710 -1, -1, 1164, -1, -1, -1, -1, -1, -1, -1,
3711 -1, 877, 878, 603, -1, 1013, 414, 415, -1, -1,
3712 -1, 887, 888, 889, -1, 1123, 1124, 893, 894, -1,
3713 -1, -1, -1, -1, -1, -1, -1, 1199, 1200, -1,
3714 414, 415, -1, -1, -1, -1, -1, -1, -1, -1,
3715 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3716 650, -1, -1, -1, -1, -1, -1, 465, -1, 25,
3717 -1, 1069, -1, 0, -1, -1, -1, -1, -1, -1,
3718 -1, 8, 9, 10, -1, -1, 13, 14, 15, 679,
3719 17, 465, 682, 683, -1, -1, -1, -1, 25, 26,
3720 27, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3721 37, 38, 978, 40, 41, 42, 43, 44, -1, -1,
3722 986, 77, 78, 79, 80, 81, 82, 83, 84, 85,
3723 86, 87, 88, 89, -1, -1, 1234, 727, 94, 95,
3724 730, 68, -1, -1, -1, -1, 1144, 1013, -1, -1,
3725 1148, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3726 -1, -1, -1, -1, -1, -1, 1164, -1, -1, 96,
3727 97, 127, -1, 129, 130, 131, 132, 133, 134, 135,
3728 136, 137, 138, 581, -1, 583, -1, -1, -1, -1,
3729 -1, -1, -1, 120, -1, -1, -1, -1, -1, -1,
3730 -1, 1199, 1200, 1069, -1, 603, -1, 581, -1, 583,
3731 -1, -1, -1, -1, -1, -1, 143, 144, -1, -1,
3732 -1, 148, 149, -1, 151, -1, 153, -1, -1, 603,
3733 -1, -1, -1, -1, -1, -1, -1, -1, 828, -1,
3734 -1, -1, -1, 833, -1, -1, -1, -1, -1, -1,
3735 -1, -1, -1, -1, -1, -1, -1, -1, -1, 849,
3736 -1, -1, -1, -1, -1, -1, 856, -1, -1, -1,
3737 -1, -1, -1, -1, -1, -1, -1, 867, 1144, -1,
3738 870, 679, 1148, -1, -1, 683, 684, -1, -1, -1,
3739 -1, -1, -1, 691, 692, -1, -1, -1, 1164, 697,
3740 698, -1, -1, -1, -1, 679, -1, -1, 898, 683,
3741 684, -1, 902, -1, -1, -1, -1, 691, 692, -1,
3742 -1, 911, -1, 697, 698, -1, -1, -1, -1, 727,
3743 -1, -1, 730, 1199, 1200, -1, -1, -1, -1, -1,
3744 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3745 -1, -1, -1, 727, -1, -1, 730, -1, -1, -1,
3746 16, 17, -1, -1, -1, -1, -1, -1, -1, -1,
3747 -1, -1, 962, -1, -1, -1, -1, -1, -1, -1,
3748 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3749 -1, -1, 48, 49, 50, 51, -1, -1, -1, 55,
3750 56, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3751 -1, -1, 68, 69, -1, -1, -1, -1, 816, -1,
3752 1010, -1, 1012, -1, -1, -1, -1, -1, -1, -1,
3753 828, -1, -1, -1, -1, 833, -1, -1, -1, -1,
3754 -1, -1, 816, -1, 100, -1, -1, -1, -1, -1,
3755 -1, 849, -1, -1, 828, -1, -1, 1047, 856, 833,
3756 1050, -1, -1, 1053, -1, -1, -1, -1, -1, 867,
3757 -1, -1, 870, -1, -1, 849, -1, -1, -1, -1,
3758 -1, -1, 856, -1, -1, -1, -1, -1, -1, -1,
3759 -1, -1, -1, 867, -1, -1, 870, -1, -1, -1,
3760 898, -1, -1, -1, 902, -1, -1, -1, -1, -1,
3761 -1, -1, -1, 911, 33, 34, 35, 36, -1, -1,
3762 -1, -1, -1, -1, -1, -1, -1, -1, 902, -1,
3763 49, 50, 51, 1123, 1124, -1, -1, 911, -1, -1,
3764 59, 60, 61, 62, 63, -1, -1, -1, -1, -1,
3765 -1, 207, -1, -1, 210, 211, 212, -1, 214, -1,
3766 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3767 -1, -1, -1, -1, 230, -1, 232, 233, -1, -1,
3768 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3769 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
3770 -1, 77, 78, 79, 80, 81, 82, 83, 84, -1,
3771 86, 87, 1010, -1, 1012, -1, -1, -1, 94, 95,
3772 139, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3773 -1, -1, -1, -1, -1, -1, 1010, -1, 1012, -1,
3774 -1, -1, -1, -1, 1234, -1, -1, -1, -1, 1047,
3775 -1, -1, 1050, 129, 130, 131, 132, 133, 134, 135,
3776 136, 137, 138, -1, -1, -1, -1, -1, -1, -1,
3777 326, -1, -1, 1047, -1, 331, 1050, 333, 334, 335,
3778 336, 337, -1, -1, 340, 341, 342, 343, 344, 345,
3779 346, 347, 348, -1, -1, 351, 352, 353, 354, 355,
3780 356, 357, 358, 359, 360, -1, -1, -1, 364, -1,
3781 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3782 -1, -1, -1, -1, -1, 1123, 1124, -1, -1, -1,
3783 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
3784 83, 84, 85, 86, 87, 88, 89, -1, -1, 1123,
3785 1124, 94, 95, -1, -1, -1, -1, -1, 414, 415,
3786 -1, -1, -1, -1, -1, -1, -1, 423, 424, 425,
3787 -1, -1, -1, 429, -1, 431, 432, 433, -1, -1,
3788 -1, -1, -1, 439, 127, -1, 129, 130, 131, 132,
3789 133, 134, 135, 136, 137, 138, -1, -1, 454, -1,
3790 -1, -1, -1, 459, -1, -1, -1, -1, -1, -1,
3791 153, -1, -1, -1, 470, -1, -1, 473, -1, -1,
3792 -1, -1, -1, -1, -1, -1, -1, -1, 484, -1,
3793 -1, -1, -1, -1, -1, -1, 1234, -1, -1, -1,
3794 -1, -1, -1, -1, -1, -1, 502, 77, 78, 79,
3795 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
3796 1234, -1, -1, 519, 94, 95, -1, -1, -1, -1,
3797 -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
3798 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
3799 -1, -1, -1, -1, -1, -1, -1, 25, 26, 129,
3800 130, 131, 132, 133, 134, 135, 136, 137, 138, 37,
3801 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
3802 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3803 -1, -1, -1, -1, -1, 591, -1, -1, -1, -1,
3804 68, -1, -1, -1, -1, 601, -1, -1, -1, 77,
3805 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
3806 88, 89, 618, -1, 620, -1, 94, 95, 96, 97,
3807 -1, 99, -1, -1, -1, -1, -1, 633, -1, 635,
3808 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3809 -1, -1, 120, -1, -1, -1, -1, -1, 126, 127,
3810 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3811 138, -1, -1, -1, -1, 143, 144, 145, 146, -1,
3812 -1, 149, 678, 151, -1, 153, -1, -1, 684, 685,
3813 -1, 687, -1, -1, -1, 691, 692, -1, -1, -1,
3814 -1, 697, 698, -1, 33, 34, 35, 36, -1, 705,
3815 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3816 49, 50, 51, 52, 720, -1, -1, 56, -1, 58,
3817 59, 60, 61, 62, 63, -1, -1, -1, -1, -1,
3818 -1, -1, -1, -1, -1, -1, -1, -1, 77, 745,
3819 746, -1, 748, 749, -1, -1, -1, -1, -1, -1,
3820 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
3821 -1, -1, 101, -1, 770, 104, 105, -1, 107, 108,
3822 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
3823 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3824 -1, -1, -1, 132, -1, -1, -1, -1, -1, -1,
3825 139, -1, -1, 809, -1, -1, -1, -1, -1, -1,
3826 816, -1, 0, 1, -1, 3, 4, 5, 6, 7,
3827 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
3828 18, 19, 20, 21, 22, 23, 24, 843, -1, -1,
3829 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
3830 -1, 39, -1, -1, -1, 861, 862, 45, 46, 47,
3831 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
3832 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
3833 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
3834 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3835 -1, -1, 90, 91, 910, -1, -1, -1, -1, -1,
3836 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
3837 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
3838 118, -1, 938, -1, -1, -1, -1, -1, -1, -1,
3839 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3840 -1, 139, 140, 141, -1, -1, -1, -1, 0, -1,
3841 -1, -1, -1, 151, -1, 153, 8, 9, 10, -1,
3842 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
3843 -1, -1, -1, 25, 26, 27, 28, 29, -1, -1,
3844 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
3845 42, 43, 44, -1, -1, -1, -1, -1, 1014, -1,
3846 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
3847 -1, 1027, 86, 87, -1, -1, 68, -1, -1, -1,
3848 94, 95, -1, -1, -1, 77, 78, 79, 80, 81,
3849 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
3850 -1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
3851 -1, -1, -1, -1, 106, 129, 130, 131, 132, 133,
3852 134, 135, 136, 137, 138, -1, -1, -1, 120, -1,
3853 -1, 123, 1088, -1, 126, 127, 128, 129, 130, 131,
3854 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
3855 -1, 143, 144, 145, 146, 0, -1, 149, 150, 151,
3856 -1, 153, -1, 8, 9, 10, -1, -1, 13, 14,
3857 15, -1, 17, -1, -1, -1, -1, 44, -1, -1,
3858 25, -1, 27, 28, 29, -1, -1, -1, -1, -1,
3859 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
3860 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3861 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
3862 87, 88, 89, 68, -1, -1, -1, 94, 95, -1,
3863 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
3864 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
3865 95, 96, 97, -1, 99, 100, -1, -1, -1, -1,
3866 127, 106, 129, 130, 131, 132, 133, 134, 135, 136,
3867 137, 138, -1, -1, -1, 120, -1, -1, 123, 146,
3868 -1, 126, 127, 128, 129, 130, 131, 132, 133, 134,
3869 135, 136, 137, 138, -1, -1, -1, -1, -1, 144,
3870 145, 146, 0, -1, 149, 150, 151, -1, 153, -1,
3871 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
3872 -1, -1, -1, -1, 44, -1, -1, 25, -1, 27,
3873 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
3874 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
3875 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
3876 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
3877 68, -1, -1, -1, 94, 95, -1, -1, -1, 77,
3878 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
3879 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
3880 -1, 99, 100, -1, -1, -1, -1, 127, 106, 129,
3881 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
3882 -1, -1, 120, -1, -1, 123, -1, -1, 126, 127,
3883 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3884 138, -1, -1, -1, -1, -1, 144, 145, 146, 0,
3885 -1, 149, 150, 151, -1, 153, -1, 8, 9, 10,
3886 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
3887 -1, -1, -1, -1, 25, 26, 27, 28, 29, -1,
3888 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
3889 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
3890 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
3891 83, 84, 85, 86, 87, 88, 89, 68, -1, -1,
3892 -1, 94, 95, -1, -1, -1, 77, 78, 79, 80,
3893 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
3894 -1, -1, -1, 94, 95, 96, 97, -1, -1, 100,
3895 -1, -1, -1, -1, 127, 106, 129, 130, 131, 132,
3896 133, 134, 135, 136, 137, 138, -1, -1, -1, 120,
3897 -1, -1, 123, -1, -1, -1, 127, 128, 129, 130,
3898 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
3899 -1, -1, 143, 144, 145, 146, 0, -1, 149, 150,
3900 151, -1, 153, -1, 8, 9, 10, -1, -1, 13,
3901 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
3902 -1, 25, 26, 27, 28, 29, -1, -1, -1, -1,
3903 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
3904 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3905 -1, 77, 78, 79, 80, 81, 82, 83, -1, -1,
3906 86, 87, -1, -1, 68, -1, -1, -1, 94, 95,
3907 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
3908 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
3909 94, 95, 96, 97, -1, -1, 100, -1, -1, -1,
3910 -1, -1, 106, 129, 130, 131, 132, 133, 134, 135,
3911 136, 137, 138, -1, -1, -1, 120, -1, -1, 123,
3912 -1, -1, -1, 127, 128, 129, 130, 131, 132, 133,
3913 134, 135, 136, 137, 138, -1, -1, -1, -1, 143,
3914 144, 145, 146, 0, -1, 149, 150, 151, -1, 153,
3915 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
3916 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
3917 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
3918 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
3919 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3920 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3921 -1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
3922 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
3923 87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
3924 97, -1, 99, 100, -1, -1, -1, -1, -1, 106,
3925 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3926 -1, -1, -1, 120, -1, -1, 123, -1, -1, 126,
3927 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
3928 137, 138, -1, -1, -1, -1, -1, 144, 145, 146,
3929 0, -1, 149, 150, 151, -1, 153, -1, 8, 9,
3930 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
3931 -1, -1, -1, -1, -1, 25, 26, 27, 28, -1,
3932 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
3933 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
3934 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3935 -1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
3936 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
3937 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
3938 -1, -1, -1, -1, 94, 95, 96, 97, -1, -1,
3939 100, -1, -1, -1, -1, -1, 106, -1, -1, -1,
3940 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3941 120, -1, -1, -1, -1, -1, -1, 127, -1, 129,
3942 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
3943 -1, -1, -1, 143, 144, 145, 146, 0, 148, 149,
3944 150, 151, -1, 153, -1, 8, 9, 10, -1, -1,
3945 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
3946 -1, -1, 25, -1, 27, 28, 29, -1, -1, -1,
3947 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
3948 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
3949 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3950 -1, -1, -1, -1, -1, 68, -1, -1, -1, -1,
3951 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
3952 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
3953 -1, 94, 95, 96, 97, -1, -1, 100, -1, -1,
3954 -1, -1, -1, 106, -1, -1, -1, -1, -1, -1,
3955 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
3956 123, -1, -1, -1, 127, 128, 129, 130, 131, 132,
3957 133, 134, 135, 136, 137, 138, -1, -1, -1, -1,
3958 -1, 144, 145, 146, 0, -1, 149, 150, 151, -1,
3959 153, -1, 8, 9, 10, -1, -1, 13, 14, 15,
3960 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
3961 26, 27, 28, -1, -1, -1, -1, -1, -1, -1,
3962 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
3963 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3964 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3965 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
3966 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
3967 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
3968 96, 97, -1, -1, 100, -1, -1, -1, -1, -1,
3969 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3970 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
3971 -1, 127, -1, 129, 130, 131, 132, 133, 134, 135,
3972 136, 137, 138, -1, -1, -1, -1, 143, 144, 145,
3973 146, 0, 148, 149, 150, 151, -1, 153, -1, 8,
3974 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
3975 -1, -1, -1, -1, -1, -1, 25, -1, 27, 28,
3976 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
3977 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
3978 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3979 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
3980 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
3981 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
3982 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
3983 -1, 100, -1, -1, -1, -1, -1, 106, -1, -1,
3984 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3985 -1, 120, -1, -1, -1, -1, -1, -1, 127, -1,
3986 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
3987 -1, -1, -1, -1, -1, 144, 145, 146, 0, 148,
3988 149, 150, 151, -1, 153, -1, 8, 9, 10, -1,
3989 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
3990 -1, -1, -1, 25, 26, -1, -1, -1, -1, -1,
3991 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
3992 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
3993 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3994 -1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
3995 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
3996 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
3997 -1, -1, 94, 95, 96, 97, -1, 99, -1, -1,
3998 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3999 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
4000 -1, -1, -1, -1, 126, 127, -1, 129, 130, 131,
4001 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4002 -1, 143, 144, 145, 146, 0, -1, 149, -1, 151,
4003 -1, 153, -1, 8, 9, 10, -1, -1, -1, 14,
4004 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
4005 25, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4006 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
4007 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4008 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4009 -1, -1, -1, 68, -1, -1, -1, -1, -1, -1,
4010 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4011 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
4012 95, 96, 97, -1, 99, -1, -1, -1, -1, -1,
4013 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4014 -1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
4015 -1, 126, 127, -1, 129, 130, 131, 132, 133, 134,
4016 135, 136, 137, 138, -1, -1, -1, -1, -1, 144,
4017 145, 146, 0, -1, 149, -1, 151, -1, 153, -1,
4018 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
4019 -1, -1, -1, -1, -1, -1, -1, 25, -1, -1,
4020 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
4021 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
4022 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4023 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4024 68, -1, -1, -1, -1, -1, -1, -1, -1, 77,
4025 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
4026 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
4027 -1, 99, -1, -1, -1, -1, -1, -1, -1, -1,
4028 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4029 -1, -1, 120, -1, -1, -1, -1, -1, 126, 127,
4030 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
4031 138, -1, -1, -1, -1, -1, 144, 145, 146, -1,
4032 -1, 149, -1, 151, 1, 153, 3, 4, 5, 6,
4033 7, 8, 9, 10, 11, 12, -1, -1, 15, 16,
4034 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4035 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4036 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4037 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4038 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4039 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4040 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4041 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4042 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4043 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4044 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4045 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4046 -1, -1, 139, 140, 141, -1, -1, -1, -1, -1,
4047 -1, -1, -1, -1, 151, 1, 153, 3, 4, 5,
4048 6, 7, -1, -1, 10, 11, 12, -1, 14, 15,
4049 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4050 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4051 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4052 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4053 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4054 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4055 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4056 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4057 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4058 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4059 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4060 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4061 -1, -1, -1, 139, 140, 141, -1, -1, -1, -1,
4062 -1, -1, -1, -1, -1, 151, 1, 153, 3, 4,
4063 5, 6, 7, -1, -1, 10, 11, 12, -1, -1,
4064 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
4065 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4066 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4067 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4068 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4069 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4070 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4071 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4072 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4073 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4074 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4075 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4076 -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
4077 -1, -1, -1, -1, -1, -1, 151, 1, 153, 3,
4078 4, 5, 6, 7, -1, -1, 10, 11, 12, -1,
4079 -1, 15, 16, -1, 18, 19, 20, 21, 22, 23,
4080 24, 25, -1, -1, -1, -1, 30, 31, 32, 33,
4081 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4082 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4083 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4084 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4085 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4086 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4087 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4088 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4089 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4090 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4091 -1, -1, -1, -1, -1, 139, 140, 141, -1, -1,
4092 -1, -1, -1, -1, -1, -1, -1, 151, 1, 153,
4093 3, 4, 5, 6, 7, -1, -1, 10, 11, 12,
4094 -1, -1, 15, 16, -1, 18, 19, 20, 21, 22,
4095 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4096 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4097 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
4098 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4099 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4100 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4101 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4102 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4103 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
4104 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4105 -1, -1, -1, -1, 1, -1, 3, 4, 5, 6,
4106 7, -1, 9, 10, 11, 12, 139, 140, 141, 16,
4107 -1, 18, 19, 20, 21, 22, 23, 24, 151, -1,
4108 153, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4109 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4110 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4111 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4112 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4113 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4114 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4115 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4116 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4117 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4118 1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
4119 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4120 21, 22, 23, 24, 151, -1, 153, -1, -1, 30,
4121 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4122 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4123 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4124 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4125 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4126 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4127 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4128 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4129 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4130 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4131 -1, -1, -1, -1, -1, -1, -1, -1, 139, 140,
4132 141, -1, -1, -1, -1, -1, -1, -1, 149, -1,
4133 151, 1, 153, 3, 4, 5, 6, 7, -1, -1,
4134 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
4135 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4136 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4137 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4138 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4139 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4140 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4141 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4142 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4143 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4144 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4145 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4146 -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
4147 140, 141, -1, -1, -1, -1, -1, -1, -1, 149,
4148 -1, 151, 1, 153, 3, 4, 5, 6, 7, -1,
4149 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
4150 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4151 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4152 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
4153 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
4154 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4155 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4156 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4157 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4158 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
4159 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4160 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4161 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4162 139, 140, 141, -1, -1, 144, -1, -1, -1, -1,
4163 -1, -1, 151, 1, 153, 3, 4, 5, 6, 7,
4164 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
4165 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4166 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4167 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4168 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4169 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4170 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4171 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4172 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4173 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4174 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4175 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4176 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4177 -1, 139, 140, 141, -1, -1, 144, -1, -1, -1,
4178 -1, -1, -1, 151, 1, 153, 3, 4, 5, 6,
4179 7, -1, -1, 10, 11, 12, -1, -1, -1, 16,
4180 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4181 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4182 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4183 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4184 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4185 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4186 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4187 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4188 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4189 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4190 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4191 1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
4192 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4193 21, 22, 23, 24, 151, -1, 153, -1, -1, 30,
4194 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4195 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4196 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4197 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4198 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4199 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4200 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4201 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4202 111, 112, 113, 114, 115, 116, 117, 118, -1, 120,
4203 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
4204 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
4205 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4206 151, -1, 153, -1, -1, 30, 31, 32, 33, 34,
4207 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4208 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
4209 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
4210 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4211 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4212 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4213 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4214 105, -1, 107, 108, 109, 110, 111, 112, 113, 114,
4215 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4216 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
4217 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
4218 19, 20, 21, 22, 23, 24, -1, -1, 153, -1,
4219 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4220 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
4221 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
4222 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4223 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4224 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4225 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4226 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
4227 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4228 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4229 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
4230 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
4231 23, 24, 151, -1, 153, -1, -1, 30, 31, 32,
4232 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4233 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4234 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4235 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4236 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4237 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4238 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4239 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
4240 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4241 -1, -1, -1, -1, -1, -1, 3, 4, 5, 6,
4242 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
4243 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4244 153, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4245 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4246 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4247 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4248 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4249 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4250 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4251 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4252 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4253 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4254 -1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
4255 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4256 21, 22, 23, 24, 151, -1, -1, -1, -1, 30,
4257 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4258 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4259 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4260 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4261 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4262 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4263 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4264 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4265 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4266 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4267 -1, -1, -1, -1, -1, -1, -1, -1, 139, 140,
4268 141, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4269 151, 3, 4, 5, 6, 7, 8, 9, 10, 11,
4270 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
4271 22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
4272 32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
4273 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
4274 52, 53, 54, 55, 56, 57, -1, -1, -1, -1,
4275 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4276 -1, -1, -1, 75, 76, 77, 78, 79, 80, 81,
4277 82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
4278 92, 93, 94, 95, -1, -1, -1, -1, -1, -1,
4279 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
4280 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4281 -1, -1, -1, -1, -1, -1, -1, 129, 130, 131,
4282 132, 133, 134, 135, 136, 137, 138, -1, 140, 141,
4283 -1, -1, -1, -1, -1, 147, 148, 3, 4, 5,
4284 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
4285 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
4286 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4287 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
4288 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4289 56, 57, -1, -1, -1, -1, -1, -1, -1, -1,
4290 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4291 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
4292 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
4293 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4294 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
4295 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4296 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
4297 136, 137, 138, -1, 140, 141, -1, -1, -1, -1,
4298 -1, 147, 3, 4, 5, 6, 7, 8, 9, 10,
4299 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
4300 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
4301 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
4302 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4303 51, 52, 53, 54, -1, 56, -1, -1, -1, -1,
4304 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4305 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4306 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4307 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4308 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4309 111, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4310 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4311 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4312 141, -1, -1, -1, -1, -1, 147, 3, 4, 5,
4313 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
4314 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
4315 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4316 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
4317 46, 47, 48, 49, 50, 51, 52, 53, -1, -1,
4318 56, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4319 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4320 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
4321 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
4322 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4323 -1, 107, 108, -1, -1, 111, -1, -1, -1, -1,
4324 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4325 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
4326 136, 137, 138, -1, 140, 141, -1, -1, -1, -1,
4327 -1, 147, 3, 4, 5, 6, 7, 8, 9, 10,
4328 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
4329 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
4330 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
4331 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4332 51, 52, 53, -1, -1, 56, -1, -1, -1, -1,
4333 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4334 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4335 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4336 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4337 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4338 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4339 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4340 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4341 141, 3, 4, 5, -1, 7, 147, -1, -1, 11,
4342 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
4343 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4344 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4345 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4346 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4347 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4348 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4349 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4350 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4351 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4352 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4353 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4354 3, 4, 5, -1, 7, -1, -1, 139, 11, 12,
4355 -1, -1, -1, 16, 146, 18, 19, 20, 21, 22,
4356 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4357 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4358 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4359 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4360 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4361 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4362 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4363 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4364 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
4365 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4366 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4367 4, 5, 6, 7, -1, -1, 139, 11, 12, -1,
4368 -1, -1, 16, 146, 18, 19, 20, 21, 22, 23,
4369 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4370 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4371 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4372 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4373 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4374 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4375 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4376 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4377 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4378 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4379 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4380 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4381 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4382 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4383 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4384 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4385 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4386 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4387 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4388 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4389 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4390 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
4391 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4392 -1, 3, 4, 5, 6, 7, -1, -1, -1, 11,
4393 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4394 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4395 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4396 -1, -1, -1, 45, 46, -1, 48, 49, 50, 51,
4397 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4398 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4399 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4400 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4401 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4402 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4403 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4404 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4405 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4406 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4407 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4408 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4409 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4410 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4411 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4412 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4413 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4414 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4415 -1, 107, 108, 109, 110, 111, 112, 113, 114, 115,
4416 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4417 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4418 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4419 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4420 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4421 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4422 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
4423 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4424 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4425 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4426 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4427 -1, 101, 102, -1, 104, 105, -1, 107, 108, 109,
4428 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4429 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4430 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4431 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4432 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4433 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4434 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4435 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
4436 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4437 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4438 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4439 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4440 104, 105, -1, 107, 108, -1, 110, 111, 112, 113,
4441 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4442 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4443 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4444 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4445 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4446 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4447 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4448 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4449 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4450 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4451 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4452 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4453 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
4454 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4455 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4456 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4457 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4458 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4459 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4460 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
4461 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4462 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4463 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4464 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4465 102, -1, 104, 105, -1, 107, 108, -1, 110, 111,
4466 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4467 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4468 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4469 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4470 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4471 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4472 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4473 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4474 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4475 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4476 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4477 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4478 -1, -1, 108, -1, 110, 111, 112, 113, 114, 115,
4479 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4480 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4481 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4482 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4483 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4484 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4485 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4486 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4487 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4488 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4489 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4490 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4491 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4492 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4493 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4494 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4495 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4496 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4497 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4498 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4499 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4500 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4501 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4502 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4503 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4504 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4505 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4506 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4507 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4508 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4509 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4510 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4511 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4512 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4513 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4514 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4515 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4516 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4517 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4518 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4519 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4520 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4521 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4522 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4523 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4524 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4525 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4526 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4527 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4528 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4529 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4530 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4531 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4532 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4533 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4534 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4535 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4536 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4537 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4538 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4539 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4540 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4541 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4542 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4543 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4544 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4545 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4546 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4547 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4548 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4549 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4550 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4551 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4552 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4553 -1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
4554 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4555 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4556 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4557 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4558 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4559 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4560 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4561 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4562 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4563 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4564 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4565 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4566 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
4567 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4568 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4569 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4570 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4571 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4572 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4573 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4574 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4575 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4576 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4577 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4578 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4579 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4580 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4581 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4582 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4583 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4584 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4585 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4586 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4587 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4588 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4589 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4590 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4591 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4592 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4593 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4594 -1, 11, 12, -1, -1, -1, 16, 139, 18, 19,
4595 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4596 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4597 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4598 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4599 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4600 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4601 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4602 -1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
4603 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4604 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4605 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4606 -1, -1, -1, 11, 12, -1, -1, -1, 16, 139,
4607 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4608 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4609 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4610 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4611 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4612 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4613 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4614 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1,
4615 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4616 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4617 118, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4618 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
4619 16, 139, 18, 19, 20, 21, 22, 23, 24, -1,
4620 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4621 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4622 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4623 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4624 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4625 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4626 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4627 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4628 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
4629 116, 117, 118, -1, -1, -1, -1, -1, -1, 3,
4630 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
4631 -1, -1, 16, 139, 18, 19, 20, 21, 22, 23,
4632 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4633 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4634 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4635 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4636 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4637 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4638 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4639 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4640 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
4641 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4642 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4643 12, -1, -1, -1, 16, 139, 18, 19, 20, 21,
4644 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4645 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4646 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4647 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4648 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4649 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4650 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4651 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4652 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4653 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4654 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4655 -1, 11, 12, -1, -1, -1, 16, 139, 18, 19,
4656 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4657 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4658 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4659 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4660 60, 61, 62, 63, 64, 65, 33, 34, 35, 36,
4661 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4662 -1, -1, 49, 50, 51, 52, -1, -1, -1, 56,
4663 -1, -1, 59, 60, 61, 62, 63, -1, 98, -1,
4664 -1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
4665 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4666 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4667 -1, 98, -1, -1, 101, -1, -1, 104, 105, 139,
4668 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4669 117, 118, 33, 34, 35, 36, -1, -1, -1, -1,
4670 -1, -1, -1, -1, -1, 132, -1, -1, 49, 50,
4671 51, 52, 139, -1, -1, 56, -1, -1, 59, 60,
4672 61, 62, 63, -1, -1, 33, 34, 35, 36, -1,
4673 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4674 -1, 49, 50, 51, 52, -1, -1, -1, 56, 90,
4675 91, 59, 60, 61, 62, 63, -1, 98, -1, -1,
4676 101, -1, -1, 104, 105, -1, 107, -1, -1, 110,
4677 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4678 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4679 98, 132, -1, 101, -1, -1, 104, 105, 139, -1,
4680 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4681 118, 52, 53, -1, -1, 56, -1, -1, -1, -1,
4682 -1, -1, -1, -1, 132, -1, -1, -1, -1, -1,
4683 -1, 139, -1, -1, 75, 76, 77, 78, 79, 80,
4684 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4685 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4686 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4687 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4688 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4689 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4690 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4691 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4692 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4693 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4694 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4695 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4696 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4697 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4698 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4699 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4700 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4701 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4702 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4703 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4704 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4705 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4706 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4707 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4708 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4709 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4710 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4711 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4712 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4713 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4714 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4715 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4716 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4717 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4718 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4719 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4720 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4721 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4722 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4723 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4724 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4725 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4726 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4727 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4728 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4729 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4730 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4731 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4732 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4733 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4734 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4735 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4736 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4737 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4738 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4739 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4740 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4741 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4742 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4743 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4744 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4745 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4746 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4747 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4748 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4749 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4750 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4751 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4752 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4753 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4754 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4755 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4756 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4757 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4758 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4759 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4760 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4761 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4762 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4763 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4764 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4765 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4766 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4767 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4768 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4769 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4770 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4771 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4772 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4773 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4774 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4775 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4776 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4777 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4778 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4779 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4780 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4781 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4782 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4783 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4784 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4785 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4786 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4787 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4788 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4789 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4790 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4791 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4792 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4793 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4794 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4795 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4796 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4797 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4798 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4799 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4800 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4801 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4802 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4803 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4804 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4805 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4806 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4807 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4808 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4809 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4810 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4811 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4812 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4813 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4814 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4815 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4816 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4817 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4818 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4819 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4820 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4821 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4822 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4823 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4824 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4825 141, -1, -1, -1, -1, -1, 147
4832 0, 155, 156, 0, 1, 3, 4, 5, 6, 7,
4833 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
4834 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
4835 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4836 57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
4837 90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
4838 112, 113, 114, 115, 116, 117, 118, 139, 140, 141,
4839 157, 158, 159, 167, 169, 171, 179, 180, 182, 183,
4840 184, 186, 187, 188, 190, 191, 200, 203, 218, 233,
4841 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
4842 252, 279, 280, 333, 334, 335, 336, 337, 338, 339,
4843 342, 344, 345, 359, 360, 362, 363, 364, 365, 366,
4844 367, 368, 369, 405, 419, 159, 3, 4, 5, 6,
4845 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
4846 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
4847 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4848 45, 46, 47, 48, 49, 50, 51, 52, 53, 56,
4849 75, 76, 77, 78, 79, 80, 81, 82, 83, 86,
4850 87, 92, 93, 94, 95, 107, 108, 129, 130, 131,
4851 132, 133, 134, 135, 136, 137, 138, 140, 141, 147,
4852 194, 195, 196, 198, 199, 359, 39, 58, 98, 101,
4853 107, 108, 109, 112, 140, 183, 191, 200, 204, 210,
4854 213, 215, 233, 365, 366, 368, 369, 403, 404, 210,
4855 148, 211, 212, 148, 207, 211, 148, 153, 412, 54,
4856 195, 412, 143, 160, 143, 21, 22, 31, 32, 182,
4857 200, 233, 252, 200, 200, 200, 56, 1, 47, 101,
4858 163, 164, 165, 167, 185, 186, 419, 167, 220, 205,
4859 215, 403, 419, 204, 402, 403, 419, 46, 98, 139,
4860 146, 190, 218, 233, 365, 366, 369, 223, 54, 55,
4861 57, 194, 348, 361, 348, 349, 350, 152, 152, 152,
4862 152, 364, 179, 200, 200, 151, 153, 411, 417, 418,
4863 40, 41, 42, 43, 44, 37, 38, 26, 143, 207,
4864 211, 244, 281, 28, 245, 278, 126, 146, 101, 107,
4865 187, 126, 25, 77, 78, 79, 80, 81, 82, 83,
4866 84, 85, 86, 87, 88, 89, 94, 95, 127, 129,
4867 130, 131, 132, 133, 134, 135, 136, 137, 138, 202,
4868 202, 68, 96, 97, 145, 409, 219, 171, 175, 175,
4869 176, 177, 176, 175, 411, 418, 98, 184, 191, 233,
4870 257, 365, 366, 369, 52, 56, 94, 98, 192, 193,
4871 233, 365, 366, 369, 193, 33, 34, 35, 36, 49,
4872 50, 51, 52, 56, 148, 194, 367, 400, 210, 97,
4873 409, 410, 281, 336, 99, 99, 146, 204, 56, 204,
4874 204, 204, 348, 126, 100, 146, 214, 419, 97, 145,
4875 409, 99, 99, 146, 214, 210, 412, 413, 210, 91,
4876 209, 210, 215, 377, 403, 419, 171, 413, 171, 54,
4877 64, 65, 168, 148, 201, 157, 163, 97, 409, 99,
4878 167, 166, 185, 149, 411, 418, 413, 221, 413, 150,
4879 146, 153, 416, 146, 416, 144, 416, 412, 56, 364,
4880 187, 189, 146, 97, 145, 409, 270, 271, 66, 119,
4881 121, 122, 351, 119, 119, 351, 67, 351, 340, 346,
4882 343, 347, 77, 151, 159, 175, 175, 175, 175, 167,
4883 171, 171, 282, 283, 106, 181, 286, 287, 286, 107,
4884 179, 204, 215, 216, 217, 185, 146, 190, 146, 169,
4885 170, 179, 191, 200, 204, 206, 217, 233, 369, 172,
4886 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4887 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4888 200, 200, 200, 200, 52, 53, 56, 198, 207, 406,
4889 407, 209, 52, 53, 56, 198, 207, 406, 161, 163,
4890 13, 253, 417, 253, 163, 175, 163, 411, 225, 56,
4891 97, 145, 409, 25, 171, 52, 56, 192, 130, 370,
4892 97, 145, 409, 228, 401, 229, 68, 97, 408, 52,
4893 56, 406, 170, 200, 206, 170, 206, 197, 124, 204,
4894 107, 204, 213, 403, 52, 56, 209, 52, 56, 404,
4895 413, 149, 413, 146, 413, 146, 413, 195, 222, 200,
4896 144, 144, 406, 406, 206, 160, 413, 165, 413, 403,
4897 146, 189, 52, 56, 209, 52, 56, 272, 353, 352,
4898 119, 341, 351, 66, 119, 119, 341, 66, 119, 200,
4899 144, 284, 282, 10, 251, 288, 251, 204, 146, 44,
4900 413, 189, 146, 44, 126, 44, 97, 145, 409, 173,
4901 412, 99, 99, 207, 211, 412, 414, 99, 99, 207,
4902 208, 211, 419, 251, 8, 246, 329, 419, 163, 13,
4903 163, 251, 27, 254, 417, 251, 25, 224, 293, 17,
4904 248, 291, 52, 56, 209, 52, 56, 176, 227, 371,
4905 226, 52, 56, 192, 209, 161, 171, 230, 231, 208,
4906 211, 195, 204, 204, 214, 99, 99, 414, 99, 99,
4907 403, 171, 416, 187, 414, 273, 354, 54, 55, 57,
4908 358, 369, 152, 351, 152, 152, 152, 285, 144, 289,
4909 107, 204, 167, 189, 167, 200, 52, 56, 209, 52,
4910 56, 52, 56, 90, 91, 98, 101, 104, 105, 110,
4911 132, 303, 304, 305, 308, 323, 324, 326, 327, 328,
4912 333, 334, 337, 338, 339, 342, 344, 345, 366, 128,
4913 170, 206, 170, 206, 181, 150, 99, 170, 206, 170,
4914 206, 181, 204, 217, 330, 419, 9, 15, 247, 249,
4915 332, 419, 14, 249, 250, 255, 256, 419, 256, 178,
4916 294, 291, 251, 107, 204, 290, 251, 414, 163, 417,
4917 175, 161, 414, 251, 413, 148, 372, 373, 194, 281,
4918 278, 99, 146, 413, 274, 355, 131, 265, 266, 419,
4919 265, 204, 414, 324, 324, 56, 192, 311, 309, 414,
4920 310, 412, 415, 325, 52, 100, 174, 131, 88, 89,
4921 97, 145, 148, 306, 307, 200, 170, 206, 100, 331,
4922 419, 163, 162, 163, 175, 251, 251, 295, 251, 204,
4923 146, 253, 251, 161, 417, 251, 52, 54, 55, 56,
4924 57, 58, 77, 91, 101, 107, 108, 109, 133, 136,
4925 374, 376, 377, 378, 379, 380, 381, 382, 383, 384,
4926 387, 388, 389, 390, 391, 394, 395, 396, 397, 398,
4927 161, 376, 232, 148, 276, 376, 356, 262, 264, 267,
4928 380, 382, 383, 385, 386, 389, 390, 392, 393, 396,
4929 398, 412, 163, 161, 303, 107, 303, 312, 313, 314,
4930 316, 58, 112, 317, 318, 319, 320, 321, 322, 388,
4931 144, 270, 326, 308, 324, 324, 192, 414, 413, 112,
4932 312, 317, 312, 317, 98, 191, 233, 365, 366, 369,
4933 253, 163, 253, 296, 107, 204, 163, 251, 101, 107,
4934 258, 259, 260, 261, 379, 413, 413, 126, 146, 375,
4935 204, 146, 399, 419, 34, 52, 146, 399, 399, 146,
4936 375, 52, 146, 375, 52, 251, 417, 372, 376, 275,
4937 357, 267, 131, 126, 146, 263, 98, 233, 146, 399,
4938 399, 399, 146, 263, 146, 263, 151, 413, 52, 146,
4939 414, 107, 303, 316, 146, 348, 415, 146, 303, 34,
4940 52, 348, 413, 413, 414, 414, 56, 97, 145, 409,
4941 163, 332, 163, 301, 302, 303, 314, 317, 204, 256,
4942 291, 292, 260, 379, 146, 413, 146, 204, 374, 381,
4943 394, 396, 384, 388, 390, 398, 382, 391, 396, 380,
4944 382, 161, 267, 29, 123, 277, 163, 131, 233, 262,
4945 393, 396, 56, 97, 385, 390, 382, 392, 396, 382,
4946 52, 268, 269, 378, 146, 315, 316, 52, 146, 146,
4947 124, 319, 321, 322, 52, 56, 209, 52, 56, 329,
4948 255, 253, 40, 41, 146, 413, 258, 261, 259, 146,
4949 375, 146, 375, 399, 146, 375, 146, 375, 375, 251,
4950 149, 161, 163, 120, 146, 263, 146, 263, 52, 56,
4951 399, 146, 263, 146, 263, 263, 146, 412, 315, 146,
4952 146, 315, 414, 297, 175, 175, 312, 146, 146, 382,
4953 396, 382, 382, 251, 144, 382, 396, 382, 382, 269,
4954 316, 315, 298, 259, 375, 146, 375, 375, 375, 263,
4955 146, 263, 263, 263, 299, 382, 382, 163, 375, 263,
4962 0, 154, 156, 155, 157, 158, 158, 158, 158, 159,
4963 159, 160, 162, 161, 161, 163, 164, 164, 164, 164,
4964 165, 166, 165, 168, 167, 167, 167, 167, 167, 167,
4965 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
4966 167, 169, 169, 169, 169, 169, 169, 169, 169, 170,
4967 170, 170, 171, 171, 171, 171, 171, 172, 173, 174,
4968 171, 171, 175, 177, 178, 176, 179, 179, 180, 180,
4969 181, 182, 183, 183, 183, 183, 183, 183, 183, 183,
4970 183, 183, 183, 184, 184, 185, 185, 186, 186, 186,
4971 186, 186, 186, 186, 186, 186, 186, 187, 187, 188,
4972 188, 189, 189, 190, 190, 190, 190, 190, 190, 190,
4973 190, 190, 191, 191, 191, 191, 191, 191, 191, 191,
4974 191, 192, 192, 193, 193, 193, 194, 194, 194, 194,
4975 194, 195, 195, 196, 197, 196, 198, 198, 198, 198,
4976 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
4977 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
4978 198, 198, 198, 198, 198, 198, 199, 199, 199, 199,
4979 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
4980 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
4981 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
4982 199, 199, 199, 199, 199, 199, 199, 200, 200, 200,
4983 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4984 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4985 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4986 200, 200, 200, 200, 200, 200, 200, 201, 200, 200,
4987 200, 202, 202, 202, 202, 203, 203, 204, 205, 205,
4988 205, 205, 206, 206, 207, 207, 208, 208, 209, 209,
4989 209, 209, 209, 210, 210, 210, 210, 210, 212, 211,
4990 213, 214, 214, 215, 215, 215, 215, 216, 216, 217,
4991 217, 217, 218, 218, 218, 218, 218, 218, 218, 218,
4992 218, 218, 218, 219, 218, 220, 218, 221, 218, 218,
4993 218, 218, 218, 218, 218, 218, 218, 218, 222, 218,
4994 218, 218, 218, 218, 218, 223, 218, 218, 218, 218,
4995 218, 224, 218, 225, 218, 218, 218, 226, 218, 227,
4996 218, 228, 218, 229, 230, 218, 231, 232, 218, 218,
4997 218, 218, 218, 233, 234, 235, 236, 237, 238, 239,
4998 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
4999 250, 251, 252, 253, 253, 253, 254, 254, 255, 255,
5000 256, 256, 257, 257, 258, 258, 259, 259, 260, 260,
5001 260, 260, 260, 261, 261, 262, 262, 262, 262, 262,
5002 263, 263, 264, 264, 264, 264, 264, 264, 264, 264,
5003 264, 264, 264, 264, 264, 264, 264, 265, 265, 266,
5004 266, 267, 267, 268, 268, 269, 269, 271, 272, 273,
5005 274, 275, 270, 276, 276, 277, 277, 278, 279, 279,
5006 279, 279, 280, 280, 280, 280, 280, 280, 280, 280,
5007 280, 281, 281, 283, 284, 285, 282, 287, 288, 289,
5008 286, 290, 290, 290, 290, 291, 292, 292, 294, 295,
5009 296, 297, 298, 299, 293, 300, 300, 301, 301, 301,
5010 302, 302, 302, 302, 302, 303, 304, 304, 305, 305,
5011 306, 307, 308, 308, 308, 308, 308, 308, 308, 309,
5012 308, 308, 310, 308, 308, 311, 308, 312, 312, 312,
5013 312, 312, 312, 312, 312, 313, 313, 314, 314, 314,
5014 314, 315, 315, 316, 317, 317, 317, 317, 317, 317,
5015 318, 318, 319, 319, 320, 320, 321, 321, 322, 323,
5016 323, 323, 323, 323, 323, 323, 323, 323, 323, 324,
5017 324, 324, 324, 324, 324, 324, 324, 324, 325, 324,
5018 326, 327, 328, 328, 328, 329, 329, 330, 330, 330,
5019 331, 331, 332, 332, 333, 333, 334, 335, 335, 335,
5020 336, 337, 338, 339, 340, 340, 341, 341, 342, 343,
5021 343, 344, 345, 346, 346, 347, 347, 348, 348, 349,
5022 349, 350, 350, 351, 352, 351, 353, 354, 355, 356,
5023 357, 351, 358, 358, 358, 358, 359, 359, 360, 361,
5024 361, 361, 361, 362, 363, 363, 364, 364, 364, 364,
5025 365, 365, 365, 365, 365, 366, 366, 366, 366, 366,
5026 366, 366, 367, 367, 368, 368, 369, 369, 371, 370,
5027 370, 372, 372, 373, 372, 374, 374, 374, 374, 374,
5028 375, 375, 376, 376, 376, 376, 376, 376, 376, 376,
5029 376, 376, 376, 376, 376, 376, 376, 377, 378, 378,
5030 378, 378, 379, 379, 380, 381, 381, 382, 382, 383,
5031 384, 384, 385, 385, 386, 386, 387, 387, 388, 388,
5032 389, 390, 390, 391, 392, 393, 393, 394, 394, 395,
5033 395, 396, 396, 397, 397, 398, 399, 399, 400, 401,
5034 400, 402, 402, 403, 403, 404, 404, 404, 404, 405,
5035 405, 405, 406, 406, 406, 406, 407, 407, 407, 408,
5036 408, 409, 409, 410, 410, 411, 411, 412, 412, 413,
5037 414, 415, 416, 416, 416, 417, 417, 418, 418, 419
5043 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
5044 2, 3, 0, 6, 3, 2, 1, 1, 3, 2,
5045 1, 0, 3, 0, 4, 3, 3, 3, 2, 3,
5046 3, 3, 3, 3, 4, 1, 3, 3, 5, 3,
5047 1, 3, 3, 6, 5, 5, 5, 5, 3, 1,
5048 3, 1, 1, 3, 3, 3, 2, 0, 0, 0,
5049 6, 1, 1, 0, 0, 4, 1, 1, 1, 4,
5050 3, 1, 2, 3, 4, 5, 4, 5, 2, 2,
5051 2, 2, 2, 1, 3, 1, 3, 1, 2, 3,
5052 5, 2, 4, 2, 4, 1, 3, 1, 3, 2,
5053 3, 1, 3, 1, 1, 4, 3, 3, 3, 3,
5054 2, 1, 1, 1, 4, 3, 3, 3, 3, 2,
5055 1, 1, 1, 2, 1, 3, 1, 1, 1, 1,
5056 1, 1, 1, 1, 0, 4, 1, 1, 1, 1,
5057 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5058 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5059 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5060 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5061 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5062 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5063 1, 1, 1, 1, 1, 1, 1, 3, 3, 6,
5064 5, 5, 5, 5, 4, 3, 3, 3, 2, 2,
5065 2, 2, 3, 3, 3, 3, 3, 3, 4, 2,
5066 2, 3, 3, 3, 3, 1, 3, 3, 3, 3,
5067 3, 2, 2, 3, 3, 3, 3, 0, 4, 6,
5068 1, 1, 1, 1, 1, 3, 3, 1, 1, 2,
5069 4, 2, 1, 3, 3, 3, 1, 1, 1, 1,
5070 2, 4, 2, 1, 2, 2, 4, 1, 0, 2,
5071 2, 2, 1, 1, 2, 3, 4, 1, 1, 3,
5072 4, 2, 1, 1, 1, 1, 1, 1, 1, 1,
5073 1, 1, 1, 0, 4, 0, 3, 0, 4, 3,
5074 3, 2, 3, 3, 1, 4, 3, 1, 0, 6,
5075 4, 3, 2, 1, 2, 0, 3, 6, 6, 4,
5076 4, 0, 6, 0, 5, 5, 6, 0, 6, 0,
5077 7, 0, 5, 0, 0, 7, 0, 0, 9, 1,
5078 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5079 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5080 1, 1, 1, 1, 1, 2, 1, 1, 1, 5,
5081 1, 2, 1, 1, 1, 3, 1, 3, 1, 3,
5082 5, 1, 3, 2, 1, 4, 2, 2, 2, 1,
5083 2, 0, 6, 8, 4, 6, 4, 2, 6, 2,
5084 4, 6, 2, 4, 2, 4, 1, 1, 1, 3,
5085 4, 1, 4, 1, 3, 1, 1, 0, 0, 0,
5086 0, 0, 7, 4, 1, 3, 3, 3, 2, 4,
5087 5, 5, 2, 4, 4, 3, 3, 3, 2, 1,
5088 4, 3, 3, 0, 0, 0, 5, 0, 0, 0,
5089 5, 1, 2, 3, 4, 5, 1, 1, 0, 0,
5090 0, 0, 0, 0, 11, 1, 1, 1, 3, 3,
5091 1, 2, 3, 1, 1, 1, 3, 1, 3, 1,
5092 1, 1, 1, 4, 4, 3, 4, 4, 3, 0,
5093 4, 2, 0, 4, 2, 0, 4, 1, 1, 2,
5094 3, 5, 2, 4, 1, 2, 3, 2, 4, 1,
5095 3, 1, 3, 1, 3, 1, 2, 1, 3, 1,
5096 1, 3, 2, 1, 1, 3, 2, 1, 2, 1,
5097 3, 3, 2, 2, 1, 1, 1, 2, 2, 1,
5098 1, 1, 1, 1, 1, 1, 1, 1, 0, 3,
5099 1, 2, 2, 3, 1, 6, 1, 1, 1, 1,
5100 2, 1, 2, 1, 1, 1, 1, 1, 1, 2,
5101 3, 3, 3, 4, 0, 3, 1, 2, 4, 0,
5102 3, 4, 4, 0, 3, 0, 3, 0, 2, 0,
5103 2, 0, 2, 1, 0, 3, 0, 0, 0, 0,
5104 0, 8, 1, 1, 1, 1, 1, 1, 2, 1,
5105 1, 1, 1, 3, 1, 2, 1, 1, 1, 1,
5106 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5107 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
5108 0, 3, 3, 0, 3, 4, 2, 2, 2, 1,
5109 2, 0, 6, 8, 4, 6, 4, 6, 2, 4,
5110 6, 2, 4, 2, 4, 1, 0, 1, 1, 1,
5111 1, 1, 1, 1, 1, 1, 3, 1, 3, 1,
5112 2, 1, 2, 1, 1, 3, 1, 3, 1, 1,
5113 2, 2, 1, 3, 3, 1, 3, 1, 3, 1,
5114 1, 2, 1, 1, 1, 2, 2, 1, 1, 0,
5115 4, 1, 2, 1, 3, 3, 2, 4, 2, 1,
5116 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5117 1, 1, 1, 1, 1, 0, 1, 0, 1, 2,
5118 2, 2, 0, 1, 1, 1, 1, 1, 2, 0
5122 #define yyerrok (yyerrstatus = 0)
5123 #define yyclearin (yychar = YYEMPTY)
5124 #define YYEMPTY (-2)
5127 #define YYACCEPT goto yyacceptlab
5128 #define YYABORT goto yyabortlab
5129 #define YYERROR goto yyerrorlab
5132 #define YYRECOVERING() (!!yyerrstatus)
5134 #define YYBACKUP(Token, Value) \
5136 if (yychar == YYEMPTY) \
5140 YYPOPSTACK (yylen); \
5146 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
5153 #define YYERRCODE 256
5160 #ifndef YYLLOC_DEFAULT
5161 # define YYLLOC_DEFAULT(Current, Rhs, N) \
5165 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
5166 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
5167 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
5168 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
5172 (Current).first_line = (Current).last_line = \
5173 YYRHSLOC (Rhs, 0).last_line; \
5174 (Current).first_column = (Current).last_column = \
5175 YYRHSLOC (Rhs, 0).last_column; \
5180 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
5188 # define YYFPRINTF fprintf
5191 # define YYDPRINTF(Args) \
5202 #ifndef YY_LOCATION_PRINT
5203 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5209 yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
5227 else if (0 <= end_col && yylocp->
first_column < end_col)
5233 # define YY_LOCATION_PRINT(File, Loc) \
5234 yy_location_print_ (File, &(Loc))
5237 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
5242 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
5246 YYFPRINTF (p, "%s ", Title); \
5247 yy_symbol_print (stderr, \
5248 Type, Value, Location, p); \
5249 YYFPRINTF (p, "\n"); \
5261 FILE *yyo = yyoutput;
5263 YYUSE (yylocationp);
5269 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
5283 yytype <
YYNTOKENS ?
"token" :
"nterm", yytname[yytype]);
5287 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, p);
5298 #define yy_stack_print(b, t) ruby_parser_yy_stack_print(b, t, p)
5301 for (; yybottom <= yytop; yybottom++)
5303 int yybot = *yybottom;
5309 # define YY_STACK_PRINT(Bottom, Top) \
5312 yy_stack_print ((Bottom), (Top)); \
5323 unsigned long int yylno = yyrline[yyrule];
5324 int yynrhs = yyr2[yyrule];
5326 YYFPRINTF (p,
"Reducing stack by rule %d (line %lu):\n",
5329 for (yyi = 0; yyi < yynrhs; yyi++)
5333 yystos[yyssp[yyi + 1 - yynrhs]],
5334 &(yyvsp[(yyi + 1) - (yynrhs)])
5335 , &(yylsp[(yyi + 1) - (yynrhs)]) , p);
5340 # define YY_REDUCE_PRINT(Rule) \
5343 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
5352 # define YYDPRINTF(Args)
5353 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
5354 # define YY_STACK_PRINT(Bottom, Top)
5355 # define YY_REDUCE_PRINT(Rule)
5361 # define YYINITDEPTH 200
5372 # define YYMAXDEPTH 10000
5379 # if defined __GLIBC__ && defined _STRING_H
5380 # define yystrlen strlen
5384 yystrlen (
const char *yystr)
5387 for (yylen = 0; yystr[yylen]; yylen++)
5395 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
5396 # define yystpcpy stpcpy
5401 yystpcpy (
char *yydest,
const char *yysrc)
5404 const char *yys = yysrc;
5406 while ((*yyd++ = *yys++) !=
'\0')
5423 yytnamerr (
char *yyres,
const char *yystr)
5428 char const *yyp = yystr;
5435 goto do_not_strip_quotes;
5439 goto do_not_strip_quotes;
5452 do_not_strip_quotes: ;
5456 return yystrlen (yystr);
5458 return yystpcpy (yyres, yystr) - yyres;
5476 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
5480 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
5510 int yyn = yypact[*yyssp];
5511 yyarg[yycount++] = yytname[yytoken];
5517 int yyxbegin = yyn < 0 ? -yyn : 0;
5519 int yychecklim =
YYLAST - yyn + 1;
5523 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
5524 if (yycheck[yyx + yyn] == yyx && yyx !=
YYTERROR
5527 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
5533 yyarg[yycount++] = yytname[yyx];
5536 if (! (yysize <= yysize1
5547 # define YYCASE_(N, S) \
5552 YYCASE_(1,
YY_(
"syntax error, unexpected %s"));
5553 YYCASE_(2,
YY_(
"syntax error, unexpected %s, expecting %s"));
5554 YYCASE_(3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
5555 YYCASE_(4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
5556 YYCASE_(5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
5561 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
5567 if (*yymsg_alloc < yysize)
5569 *yymsg_alloc = 2 * yysize;
5570 if (! (yysize <= *yymsg_alloc
5582 while ((*yyp = *yyformat) !=
'\0')
5583 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
5606 YYUSE (yylocationp);
5639 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5643 YYLTYPE yylloc = yyloc_default;
5692 char *yymsg = yymsgbuf;
5693 YYSIZE_T yymsg_alloc =
sizeof yymsgbuf;
5696 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
5702 yyssp = yyss = yyssa;
5703 yyvsp = yyvs = yyvsa;
5704 yylsp = yyls = yylsa;
5720 #line 5716 "parse.c"
5735 if (yyss + yystacksize - 1 <= yyssp)
5738 YYSIZE_T yysize = yyssp - yyss + 1;
5753 yyoverflow (
YY_(
"memory exhausted"),
5754 &yyss1, yysize *
sizeof (*yyssp),
5755 &yyvs1, yysize *
sizeof (*yyvsp),
5756 &yyls1, yysize *
sizeof (*yylsp),
5764 # ifndef YYSTACK_RELOCATE
5765 goto yyexhaustedlab;
5769 goto yyexhaustedlab;
5779 goto yyexhaustedlab;
5783 # undef YYSTACK_RELOCATE
5790 yyssp = yyss + yysize - 1;
5791 yyvsp = yyvs + yysize - 1;
5792 yylsp = yyls + yysize - 1;
5794 YYDPRINTF ((p,
"Stack size increased to %lu\n",
5795 (
unsigned long int) yystacksize));
5797 if (yyss + yystacksize - 1 <= yyssp)
5801 YYDPRINTF ((p,
"Entering state %d\n", yystate));
5817 yyn = yypact[yystate];
5827 yychar = yylex (&
yylval, &yylloc, p);
5830 if (yychar <=
YYEOF)
5832 yychar = yytoken =
YYEOF;
5833 YYDPRINTF ((p,
"Now at end of input.\n"));
5844 if (yyn < 0 ||
YYLAST < yyn || yycheck[yyn] != yytoken)
5878 yyn = yydefact[yystate];
5899 yyval = yyvsp[1-yylen];
5907 #line 1177 "parse.y"
5912 #line 5908 "parse.c"
5916 #line 1182 "parse.y"
5920 NODE *node = (yyvsp[0].node);
5923 while (node->nd_next) {
5924 node = node->nd_next;
5926 node = node->nd_head;
5928 node = remove_begin(node);
5936 #line 5932 "parse.c"
5940 #line 1204 "parse.y"
5942 (yyval.
node) = void_stmts(p, (yyvsp[-1].node));
5944 #line 5940 "parse.c"
5948 #line 1210 "parse.y"
5955 #line 5951 "parse.c"
5959 #line 1217 "parse.y"
5962 (yyval.
node) = newline_node((yyvsp[0].node));
5966 #line 5962 "parse.c"
5970 #line 1224 "parse.y"
5973 (yyval.
node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
5977 #line 5973 "parse.c"
5981 #line 1231 "parse.y"
5983 (yyval.
node) = remove_begin((yyvsp[0].node));
5985 #line 5981 "parse.c"
5989 #line 1238 "parse.y"
5991 (yyval.
node) = (yyvsp[0].node);
5993 #line 5989 "parse.c"
5997 #line 1244 "parse.y"
6006 #line 6002 "parse.c"
6010 #line 1256 "parse.y"
6011 {
if (!(yyvsp[-1].node)) {
yyerror1(&(yylsp[0]),
"else without rescue is useless");}}
6012 #line 6008 "parse.c"
6016 #line 1259 "parse.y"
6019 (yyval.
node) = new_bodystmt(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
6023 #line 6019 "parse.c"
6027 #line 1268 "parse.y"
6030 (yyval.
node) = new_bodystmt(p, (yyvsp[-2].node), (yyvsp[-1].node), 0, (yyvsp[0].node), &(yyloc));
6034 #line 6030 "parse.c"
6038 #line 1277 "parse.y"
6040 (yyval.
node) = void_stmts(p, (yyvsp[-1].node));
6042 #line 6038 "parse.c"
6046 #line 1283 "parse.y"
6053 #line 6049 "parse.c"
6057 #line 1290 "parse.y"
6060 (yyval.
node) = newline_node((yyvsp[0].node));
6064 #line 6060 "parse.c"
6068 #line 1297 "parse.y"
6071 (yyval.
node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
6075 #line 6071 "parse.c"
6079 #line 1304 "parse.y"
6081 (yyval.
node) = remove_begin((yyvsp[0].node));
6083 #line 6079 "parse.c"
6087 #line 1310 "parse.y"
6089 (yyval.
node) = (yyvsp[0].node);
6091 #line 6087 "parse.c"
6095 #line 1314 "parse.y"
6097 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
6099 #line 6095 "parse.c"
6103 #line 1318 "parse.y"
6105 (yyval.
node) = (yyvsp[0].node);
6107 #line 6103 "parse.c"
6111 #line 1323 "parse.y"
6113 #line 6109 "parse.c"
6117 #line 1324 "parse.y"
6120 (yyval.
node) =
NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6124 #line 6120 "parse.c"
6128 #line 1331 "parse.y"
6131 (yyval.
node) =
NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].id), &(yyloc));
6135 #line 6131 "parse.c"
6139 #line 1338 "parse.y"
6144 buf[1] = (
char)(yyvsp[0].node)->nd_nth;
6149 #line 6145 "parse.c"
6153 #line 1348 "parse.y"
6156 yyerror1(&(yylsp[0]),
"can't make alias for the number variables");
6161 #line 6157 "parse.c"
6165 #line 1356 "parse.y"
6168 (yyval.
node) = (yyvsp[0].node);
6172 #line 6168 "parse.c"
6176 #line 1363 "parse.y"
6179 (yyval.
node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
6180 fixpos((yyval.
node), (yyvsp[0].node));
6184 #line 6180 "parse.c"
6188 #line 1371 "parse.y"
6191 (yyval.
node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
6192 fixpos((yyval.
node), (yyvsp[0].node));
6196 #line 6192 "parse.c"
6200 #line 1379 "parse.y"
6204 (yyval.
node) =
NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node)->
nd_body, 0, &(yyloc));
6207 (yyval.
node) =
NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
6212 #line 6208 "parse.c"
6216 #line 1391 "parse.y"
6220 (yyval.
node) =
NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node)->
nd_body, 0, &(yyloc));
6223 (yyval.
node) =
NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
6228 #line 6224 "parse.c"
6232 #line 1403 "parse.y"
6236 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6237 resq =
NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc);
6238 (yyval.
node) =
NEW_RESCUE(remove_begin((yyvsp[-2].node)), resq, 0, &(yyloc));
6242 #line 6238 "parse.c"
6246 #line 1413 "parse.y"
6249 rb_warn0(
"END in method; use at_exit");
6254 NODE_SCOPE, 0 , (yyvsp[-1].node) , 0 , &(yyloc));
6260 #line 6256 "parse.c"
6264 #line 1428 "parse.y"
6268 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6272 #line 6268 "parse.c"
6276 #line 1436 "parse.y"
6280 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6284 #line 6280 "parse.c"
6288 #line 1444 "parse.y"
6291 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6293 (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));
6297 #line 6293 "parse.c"
6301 #line 1453 "parse.y"
6304 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6308 #line 6304 "parse.c"
6312 #line 1463 "parse.y"
6315 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6319 #line 6315 "parse.c"
6323 #line 1470 "parse.y"
6326 (yyval.
node) = new_op_assign(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
6330 #line 6326 "parse.c"
6334 #line 1477 "parse.y"
6337 (yyval.
node) = new_ary_op_assign(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-3]), &(yyloc));
6342 #line 6338 "parse.c"
6346 #line 1485 "parse.y"
6349 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
6353 #line 6349 "parse.c"
6357 #line 1492 "parse.y"
6360 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
6364 #line 6360 "parse.c"
6368 #line 1499 "parse.y"
6371 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
6372 (yyval.
node) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].node), (yyvsp[-2].
id), &loc), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
6376 #line 6372 "parse.c"
6380 #line 1507 "parse.y"
6383 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node),
ID2VAL(
idCOLON2), (yyvsp[-2].id), (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc));
6387 #line 6383 "parse.c"
6391 #line 1514 "parse.y"
6394 rb_backref_error(p, (yyvsp[-2].node));
6399 #line 6395 "parse.c"
6403 #line 1524 "parse.y"
6406 (yyval.
node) = (yyvsp[0].node);
6408 #line 6404 "parse.c"
6412 #line 1529 "parse.y"
6415 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6421 #line 6417 "parse.c"
6425 #line 1542 "parse.y"
6427 (yyval.
node) = logop(p,
idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
6429 #line 6425 "parse.c"
6433 #line 1546 "parse.y"
6435 (yyval.
node) = logop(p,
idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
6437 #line 6433 "parse.c"
6441 #line 1550 "parse.y"
6443 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
6445 #line 6441 "parse.c"
6449 #line 1554 "parse.y"
6451 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
6453 #line 6449 "parse.c"
6457 #line 1558 "parse.y"
6465 #line 6461 "parse.c"
6469 #line 1565 "parse.y"
6470 {(yyval.
tbl) = push_pvtbl(p);}
6471 #line 6467 "parse.c"
6475 #line 1567 "parse.y"
6476 {pop_pvtbl(p, (yyvsp[-1].tbl));}
6477 #line 6473 "parse.c"
6481 #line 1568 "parse.y"
6485 (yyval.
node) = new_case3(p, (yyvsp[-5].node),
NEW_IN((yyvsp[-1].node), 0, 0, &(yylsp[-1])), &(yyloc));
6489 #line 6485 "parse.c"
6493 #line 1579 "parse.y"
6496 (yyval.
node) = (yyvsp[0].node);
6498 #line 6494 "parse.c"
6502 #line 1585 "parse.y"
6504 #line 6500 "parse.c"
6508 #line 1585 "parse.y"
6510 #line 6506 "parse.c"
6514 #line 1586 "parse.y"
6516 (yyval.
node) = (yyvsp[-2].node);
6518 #line 6514 "parse.c"
6522 #line 1597 "parse.y"
6525 (yyval.
node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
6529 #line 6525 "parse.c"
6533 #line 1606 "parse.y"
6535 (yyval.
node) = (yyvsp[-1].node);
6537 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
6541 #line 6537 "parse.c"
6545 #line 1616 "parse.y"
6553 #line 6549 "parse.c"
6557 #line 1626 "parse.y"
6560 (yyvsp[-1].node)->
nd_args = (yyvsp[0].node);
6562 (yyval.
node) = (yyvsp[-1].node);
6566 #line 6562 "parse.c"
6570 #line 1635 "parse.y"
6573 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
6574 (yyvsp[-2].node)->
nd_args = (yyvsp[-1].node);
6575 (yyval.
node) = method_add_block(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6576 fixpos((yyval.
node), (yyvsp[-2].node));
6581 #line 6577 "parse.c"
6585 #line 1646 "parse.y"
6588 (yyval.
node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node),
Qnull, &(yylsp[-1]), &(yyloc));
6592 #line 6588 "parse.c"
6596 #line 1653 "parse.y"
6599 (yyval.
node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
6603 #line 6599 "parse.c"
6607 #line 1660 "parse.y"
6610 (yyval.
node) = new_command_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node),
Qnull, &(yylsp[-1]), &(yyloc));
6614 #line 6610 "parse.c"
6618 #line 1667 "parse.y"
6621 (yyval.
node) = new_command_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
6625 #line 6621 "parse.c"
6629 #line 1674 "parse.y"
6633 fixpos((yyval.
node), (yyvsp[0].node));
6637 #line 6633 "parse.c"
6641 #line 1682 "parse.y"
6644 (yyval.
node) = new_yield(p, (yyvsp[0].node), &(yyloc));
6645 fixpos((yyval.
node), (yyvsp[0].node));
6649 #line 6645 "parse.c"
6653 #line 1690 "parse.y"
6656 (yyval.
node) =
NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc));
6660 #line 6656 "parse.c"
6664 #line 1697 "parse.y"
6667 (yyval.
node) =
NEW_BREAK(ret_args(p, (yyvsp[0].node)), &(yyloc));
6671 #line 6667 "parse.c"
6675 #line 1704 "parse.y"
6678 (yyval.
node) =
NEW_NEXT(ret_args(p, (yyvsp[0].node)), &(yyloc));
6682 #line 6678 "parse.c"
6686 #line 1714 "parse.y"
6689 (yyval.
node) = (yyvsp[-1].node);
6693 #line 6689 "parse.c"
6697 #line 1724 "parse.y"
6704 #line 6700 "parse.c"
6708 #line 1733 "parse.y"
6715 #line 6711 "parse.c"
6719 #line 1740 "parse.y"
6722 (yyval.
node) =
NEW_MASGN(list_append(p, (yyvsp[-1].node),(yyvsp[0].node)), 0, &(yyloc));
6726 #line 6722 "parse.c"
6730 #line 1747 "parse.y"
6733 (yyval.
node) =
NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6737 #line 6733 "parse.c"
6741 #line 1754 "parse.y"
6748 #line 6744 "parse.c"
6752 #line 1761 "parse.y"
6759 #line 6755 "parse.c"
6763 #line 1768 "parse.y"
6770 #line 6766 "parse.c"
6774 #line 1775 "parse.y"
6781 #line 6777 "parse.c"
6785 #line 1782 "parse.y"
6792 #line 6788 "parse.c"
6796 #line 1789 "parse.y"
6803 #line 6799 "parse.c"
6807 #line 1796 "parse.y"
6814 #line 6810 "parse.c"
6818 #line 1806 "parse.y"
6821 (yyval.
node) = (yyvsp[-1].node);
6825 #line 6821 "parse.c"
6829 #line 1815 "parse.y"
6832 (yyval.
node) =
NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
6836 #line 6832 "parse.c"
6840 #line 1822 "parse.y"
6843 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
6847 #line 6843 "parse.c"
6851 #line 1831 "parse.y"
6858 #line 6854 "parse.c"
6862 #line 1838 "parse.y"
6865 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
6869 #line 6865 "parse.c"
6873 #line 1847 "parse.y"
6876 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
6880 #line 6876 "parse.c"
6884 #line 1854 "parse.y"
6887 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
6891 #line 6887 "parse.c"
6895 #line 1861 "parse.y"
6898 (yyval.
node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
6902 #line 6898 "parse.c"
6906 #line 1868 "parse.y"
6908 if ((yyvsp[-1].
id) ==
tANDDOT) {
6909 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
6912 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
6916 #line 6912 "parse.c"
6920 #line 1878 "parse.y"
6923 (yyval.
node) = attrset(p, (yyvsp[-2].node),
idCOLON2, (yyvsp[0].id), &(yyloc));
6927 #line 6923 "parse.c"
6931 #line 1885 "parse.y"
6933 if ((yyvsp[-1].
id) ==
tANDDOT) {
6934 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
6937 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
6941 #line 6937 "parse.c"
6945 #line 1895 "parse.y"
6948 (yyval.
node) = const_decl(p,
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
6952 #line 6948 "parse.c"
6956 #line 1902 "parse.y"
6959 (yyval.
node) = const_decl(p,
NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
6963 #line 6959 "parse.c"
6967 #line 1909 "parse.y"
6970 rb_backref_error(p, (yyvsp[0].node));
6975 #line 6971 "parse.c"
6979 #line 1919 "parse.y"
6982 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
6986 #line 6982 "parse.c"
6990 #line 1926 "parse.y"
6993 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
6997 #line 6993 "parse.c"
7001 #line 1933 "parse.y"
7004 (yyval.
node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
7008 #line 7004 "parse.c"
7012 #line 1940 "parse.y"
7015 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
7019 #line 7015 "parse.c"
7023 #line 1947 "parse.y"
7026 (yyval.
node) = attrset(p, (yyvsp[-2].node),
idCOLON2, (yyvsp[0].id), &(yyloc));
7030 #line 7026 "parse.c"
7034 #line 1954 "parse.y"
7037 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
7041 #line 7037 "parse.c"
7045 #line 1961 "parse.y"
7048 (yyval.
node) = const_decl(p,
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
7052 #line 7048 "parse.c"
7056 #line 1968 "parse.y"
7059 (yyval.
node) = const_decl(p,
NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
7063 #line 7059 "parse.c"
7067 #line 1975 "parse.y"
7070 rb_backref_error(p, (yyvsp[0].node));
7075 #line 7071 "parse.c"
7079 #line 1985 "parse.y"
7082 yyerror1(&(yylsp[0]),
"class/module name must be CONSTANT");
7086 #line 7082 "parse.c"
7090 #line 1995 "parse.y"
7097 #line 7093 "parse.c"
7101 #line 2002 "parse.y"
7108 #line 7104 "parse.c"
7112 #line 2009 "parse.y"
7115 (yyval.
node) =
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
7119 #line 7115 "parse.c"
7123 #line 2021 "parse.y"
7126 (yyval.
id) = (yyvsp[0].
id);
7128 #line 7124 "parse.c"
7132 #line 2029 "parse.y"
7139 #line 7135 "parse.c"
7143 #line 2039 "parse.y"
7150 #line 7146 "parse.c"
7154 #line 2045 "parse.y"
7156 #line 7152 "parse.c"
7160 #line 2046 "parse.y"
7164 (yyval.
node) = block_append(p, (yyvsp[-3].node), undef);
7168 #line 7164 "parse.c"
7172 #line 2055 "parse.y"
7174 #line 7170 "parse.c"
7178 #line 2056 "parse.y"
7180 #line 7176 "parse.c"
7184 #line 2057 "parse.y"
7186 #line 7182 "parse.c"
7190 #line 2058 "parse.y"
7192 #line 7188 "parse.c"
7196 #line 2059 "parse.y"
7198 #line 7194 "parse.c"
7202 #line 2060 "parse.y"
7204 #line 7200 "parse.c"
7208 #line 2061 "parse.y"
7210 #line 7206 "parse.c"
7214 #line 2062 "parse.y"
7216 #line 7212 "parse.c"
7220 #line 2063 "parse.y"
7222 #line 7218 "parse.c"
7226 #line 2064 "parse.y"
7228 #line 7224 "parse.c"
7232 #line 2065 "parse.y"
7234 #line 7230 "parse.c"
7238 #line 2066 "parse.y"
7240 #line 7236 "parse.c"
7244 #line 2067 "parse.y"
7246 #line 7242 "parse.c"
7250 #line 2068 "parse.y"
7252 #line 7248 "parse.c"
7256 #line 2069 "parse.y"
7258 #line 7254 "parse.c"
7262 #line 2070 "parse.y"
7264 #line 7260 "parse.c"
7268 #line 2071 "parse.y"
7270 #line 7266 "parse.c"
7274 #line 2072 "parse.y"
7276 #line 7272 "parse.c"
7280 #line 2073 "parse.y"
7282 #line 7278 "parse.c"
7286 #line 2074 "parse.y"
7288 #line 7284 "parse.c"
7292 #line 2075 "parse.y"
7294 #line 7290 "parse.c"
7298 #line 2076 "parse.y"
7300 #line 7296 "parse.c"
7304 #line 2077 "parse.y"
7306 #line 7302 "parse.c"
7310 #line 2078 "parse.y"
7312 #line 7308 "parse.c"
7316 #line 2079 "parse.y"
7318 #line 7314 "parse.c"
7322 #line 2080 "parse.y"
7324 #line 7320 "parse.c"
7328 #line 2081 "parse.y"
7330 #line 7326 "parse.c"
7334 #line 2082 "parse.y"
7336 #line 7332 "parse.c"
7340 #line 2083 "parse.y"
7342 #line 7338 "parse.c"
7346 #line 2084 "parse.y"
7348 #line 7344 "parse.c"
7352 #line 2102 "parse.y"
7355 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
7359 #line 7355 "parse.c"
7363 #line 2109 "parse.y"
7366 (yyval.
node) = new_op_assign(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
7370 #line 7366 "parse.c"
7374 #line 2116 "parse.y"
7378 (yyval.
node) = new_ary_op_assign(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-3]), &(yyloc));
7382 #line 7378 "parse.c"
7386 #line 2124 "parse.y"
7390 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
7394 #line 7390 "parse.c"
7398 #line 2132 "parse.y"
7402 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
7406 #line 7402 "parse.c"
7410 #line 2140 "parse.y"
7414 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node),
ID2VAL(
idCOLON2), (yyvsp[-2].id), (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc));
7418 #line 7414 "parse.c"
7422 #line 2148 "parse.y"
7425 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
7426 (yyval.
node) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].node), (yyvsp[-2].
id), &loc), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
7430 #line 7426 "parse.c"
7434 #line 2156 "parse.y"
7437 (yyval.
node) = new_const_op_assign(p,
NEW_COLON3((yyvsp[-2].
id), &(yyloc)), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
7441 #line 7437 "parse.c"
7445 #line 2163 "parse.y"
7448 rb_backref_error(p, (yyvsp[-2].node));
7453 #line 7449 "parse.c"
7457 #line 2171 "parse.y"
7462 (yyval.
node) =
NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
7466 #line 7462 "parse.c"
7470 #line 2180 "parse.y"
7475 (yyval.
node) =
NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
7479 #line 7475 "parse.c"
7483 #line 2189 "parse.y"
7487 loc.beg_pos = (yylsp[0]).end_pos;
7488 loc.end_pos = (yylsp[0]).end_pos;
7495 #line 7491 "parse.c"
7499 #line 2201 "parse.y"
7503 loc.beg_pos = (yylsp[0]).end_pos;
7504 loc.end_pos = (yylsp[0]).end_pos;
7511 #line 7507 "parse.c"
7515 #line 2213 "parse.y"
7519 loc.beg_pos = (yylsp[-1]).beg_pos;
7520 loc.end_pos = (yylsp[-1]).beg_pos;
7527 #line 7523 "parse.c"
7531 #line 2225 "parse.y"
7535 loc.beg_pos = (yylsp[-1]).beg_pos;
7536 loc.end_pos = (yylsp[-1]).beg_pos;
7543 #line 7539 "parse.c"
7547 #line 2237 "parse.y"
7549 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7551 #line 7547 "parse.c"
7555 #line 2241 "parse.y"
7557 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7559 #line 7555 "parse.c"
7563 #line 2245 "parse.y"
7565 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7567 #line 7563 "parse.c"
7571 #line 2249 "parse.y"
7573 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7575 #line 7571 "parse.c"
7579 #line 2253 "parse.y"
7581 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7583 #line 7579 "parse.c"
7587 #line 2257 "parse.y"
7589 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7591 #line 7587 "parse.c"
7595 #line 2261 "parse.y"
7597 (yyval.
node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node),
idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)),
idUMinus, &(yylsp[-3]), &(yyloc));
7599 #line 7595 "parse.c"
7603 #line 2265 "parse.y"
7605 (yyval.
node) = call_uni_op(p, (yyvsp[0].node),
idUPlus, &(yylsp[-1]), &(yyloc));
7607 #line 7603 "parse.c"
7611 #line 2269 "parse.y"
7613 (yyval.
node) = call_uni_op(p, (yyvsp[0].node),
idUMinus, &(yylsp[-1]), &(yyloc));
7615 #line 7611 "parse.c"
7619 #line 2273 "parse.y"
7621 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7623 #line 7619 "parse.c"
7627 #line 2277 "parse.y"
7629 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7631 #line 7627 "parse.c"
7635 #line 2281 "parse.y"
7637 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7639 #line 7635 "parse.c"
7643 #line 2285 "parse.y"
7645 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7647 #line 7643 "parse.c"
7651 #line 2290 "parse.y"
7653 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7655 #line 7651 "parse.c"
7659 #line 2294 "parse.y"
7661 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7663 #line 7659 "parse.c"
7667 #line 2298 "parse.y"
7669 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7671 #line 7667 "parse.c"
7675 #line 2302 "parse.y"
7677 (yyval.
node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7679 #line 7675 "parse.c"
7683 #line 2306 "parse.y"
7685 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7687 #line 7683 "parse.c"
7691 #line 2310 "parse.y"
7693 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
7695 #line 7691 "parse.c"
7699 #line 2314 "parse.y"
7701 (yyval.
node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
7703 #line 7699 "parse.c"
7707 #line 2318 "parse.y"
7709 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7711 #line 7707 "parse.c"
7715 #line 2322 "parse.y"
7717 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7719 #line 7715 "parse.c"
7723 #line 2326 "parse.y"
7725 (yyval.
node) = logop(p,
idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7727 #line 7723 "parse.c"
7731 #line 2330 "parse.y"
7733 (yyval.
node) = logop(p,
idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7735 #line 7731 "parse.c"
7739 #line 2333 "parse.y"
7741 #line 7737 "parse.c"
7745 #line 2334 "parse.y"
7748 (yyval.
node) = new_defined(p, (yyvsp[0].node), &(yyloc));
7750 #line 7746 "parse.c"
7754 #line 2339 "parse.y"
7758 (yyval.
node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
7759 fixpos((yyval.
node), (yyvsp[-5].node));
7763 #line 7759 "parse.c"
7767 #line 2348 "parse.y"
7769 (yyval.
node) = (yyvsp[0].node);
7771 #line 7767 "parse.c"
7775 #line 2353 "parse.y"
7777 #line 7773 "parse.c"
7781 #line 2354 "parse.y"
7783 #line 7779 "parse.c"
7787 #line 2355 "parse.y"
7789 #line 7785 "parse.c"
7793 #line 2356 "parse.y"
7795 #line 7791 "parse.c"
7799 #line 2360 "parse.y"
7801 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7803 #line 7799 "parse.c"
7807 #line 2364 "parse.y"
7810 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7812 #line 7808 "parse.c"
7816 #line 2371 "parse.y"
7819 (yyval.
node) = (yyvsp[0].node);
7821 #line 7817 "parse.c"
7825 #line 2379 "parse.y"
7827 (yyval.
node) = (yyvsp[-1].node);
7829 #line 7825 "parse.c"
7833 #line 2383 "parse.y"
7836 (yyval.
node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
7840 #line 7836 "parse.c"
7844 #line 2390 "parse.y"
7847 (yyval.
node) = (yyvsp[-1].node) ?
NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
7851 #line 7847 "parse.c"
7855 #line 2399 "parse.y"
7858 (yyval.
node) = (yyvsp[0].node);
7860 #line 7856 "parse.c"
7864 #line 2404 "parse.y"
7867 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7873 #line 7869 "parse.c"
7877 #line 2415 "parse.y"
7880 (yyval.
node) = (yyvsp[-1].node);
7884 #line 7880 "parse.c"
7888 #line 2422 "parse.y"
7906 (yyval.
node) = arg_append(p, splat, new_hash(p, kwrest, &(yylsp[-1])), &(yylsp[-1]));
7908 (yyval.
node) = splat;
7910 (yyval.
node) = arg_blk_pass((yyval.
node), block);
7915 #line 7911 "parse.c"
7919 #line 2457 "parse.y"
7921 (yyval.
node) = (yyvsp[-1].node);
7923 #line 7919 "parse.c"
7927 #line 2461 "parse.y"
7930 (yyval.
node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
7934 #line 7930 "parse.c"
7938 #line 2468 "parse.y"
7941 (yyval.
node) = (yyvsp[-1].node) ?
NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
7945 #line 7941 "parse.c"
7949 #line 2477 "parse.y"
7957 #line 7953 "parse.c"
7961 #line 2485 "parse.y"
7964 (yyval.
node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node));
7968 #line 7964 "parse.c"
7972 #line 2492 "parse.y"
7975 (yyval.
node) = (yyvsp[-1].node) ?
NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
7976 (yyval.
node) = arg_blk_pass((yyval.
node), (yyvsp[0].node));
7980 #line 7976 "parse.c"
7984 #line 2500 "parse.y"
7987 (yyval.
node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
7988 (yyval.
node) = arg_blk_pass((yyval.
node), (yyvsp[0].node));
7992 #line 7988 "parse.c"
7996 #line 2511 "parse.y"
8014 #line 8010 "parse.c"
8018 #line 2529 "parse.y"
8034 (yyval.
node) = (yyvsp[0].node);
8036 #line 8032 "parse.c"
8040 #line 2549 "parse.y"
8047 #line 8043 "parse.c"
8051 #line 2558 "parse.y"
8053 (yyval.
node) = (yyvsp[0].node);
8055 #line 8051 "parse.c"
8059 #line 2562 "parse.y"
8063 #line 8059 "parse.c"
8067 #line 2568 "parse.y"
8074 #line 8070 "parse.c"
8078 #line 2575 "parse.y"
8085 #line 8081 "parse.c"
8089 #line 2582 "parse.y"
8092 (yyval.
node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
8096 #line 8092 "parse.c"
8100 #line 2589 "parse.y"
8103 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
8107 #line 8103 "parse.c"
8111 #line 2602 "parse.y"
8114 (yyval.
node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
8118 #line 8114 "parse.c"
8122 #line 2609 "parse.y"
8125 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
8129 #line 8125 "parse.c"
8133 #line 2616 "parse.y"
8140 #line 8136 "parse.c"
8144 #line 2635 "parse.y"
8151 #line 8147 "parse.c"
8155 #line 2642 "parse.y"
8159 #line 8155 "parse.c"
8163 #line 2647 "parse.y"
8167 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
8173 #line 8169 "parse.c"
8177 #line 2656 "parse.y"
8179 #line 8175 "parse.c"
8183 #line 2657 "parse.y"
8190 #line 8186 "parse.c"
8194 #line 2663 "parse.y"
8196 #line 8192 "parse.c"
8200 #line 2664 "parse.y"
8204 (yyval.
node) = (yyvsp[-2].node);
8208 #line 8204 "parse.c"
8212 #line 2672 "parse.y"
8216 (yyval.
node) = (yyvsp[-1].node);
8220 #line 8216 "parse.c"
8224 #line 2680 "parse.y"
8227 (yyval.
node) =
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
8231 #line 8227 "parse.c"
8235 #line 2687 "parse.y"
8242 #line 8238 "parse.c"
8246 #line 2694 "parse.y"
8253 #line 8249 "parse.c"
8257 #line 2701 "parse.y"
8260 (yyval.
node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
8265 #line 8261 "parse.c"
8269 #line 2709 "parse.y"
8276 #line 8272 "parse.c"
8280 #line 2716 "parse.y"
8283 (yyval.
node) = new_yield(p, (yyvsp[-1].node), &(yyloc));
8287 #line 8283 "parse.c"
8291 #line 2723 "parse.y"
8298 #line 8294 "parse.c"
8302 #line 2730 "parse.y"
8309 #line 8305 "parse.c"
8313 #line 2736 "parse.y"
8315 #line 8311 "parse.c"
8319 #line 2737 "parse.y"
8322 (yyval.
node) = new_defined(p, (yyvsp[-1].node), &(yyloc));
8324 #line 8320 "parse.c"
8328 #line 2742 "parse.y"
8330 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-3]), &(yyloc));
8332 #line 8328 "parse.c"
8336 #line 2746 "parse.y"
8338 (yyval.
node) = call_uni_op(p, method_cond(p,
new_nil(&(yylsp[-1])), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
8340 #line 8336 "parse.c"
8344 #line 2750 "parse.y"
8347 (yyval.
node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
8351 #line 8347 "parse.c"
8355 #line 2758 "parse.y"
8358 block_dup_check(p, (yyvsp[-1].node)->
nd_args, (yyvsp[0].node));
8359 (yyval.
node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
8363 #line 8359 "parse.c"
8367 #line 2766 "parse.y"
8369 token_info_push(p,
"->", &(yylsp[0]));
8371 #line 8367 "parse.c"
8375 #line 2770 "parse.y"
8377 (yyval.
node) = (yyvsp[0].node);
8382 #line 8378 "parse.c"
8386 #line 2780 "parse.y"
8389 (yyval.
node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
8390 fixpos((yyval.
node), (yyvsp[-4].node));
8394 #line 8390 "parse.c"
8398 #line 2791 "parse.y"
8401 (yyval.
node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
8402 fixpos((yyval.
node), (yyvsp[-4].node));
8406 #line 8402 "parse.c"
8410 #line 2801 "parse.y"
8413 (yyval.
node) =
NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
8414 fixpos((yyval.
node), (yyvsp[-2].node));
8418 #line 8414 "parse.c"
8422 #line 2811 "parse.y"
8425 (yyval.
node) =
NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
8426 fixpos((yyval.
node), (yyvsp[-2].node));
8430 #line 8426 "parse.c"
8434 #line 2819 "parse.y"
8439 #line 8435 "parse.c"
8443 #line 2825 "parse.y"
8448 (yyval.
node) =
NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
8449 fixpos((yyval.
node), (yyvsp[-4].node));
8453 #line 8449 "parse.c"
8457 #line 2835 "parse.y"
8462 #line 8458 "parse.c"
8466 #line 2841 "parse.y"
8475 #line 8471 "parse.c"
8479 #line 2852 "parse.y"
8482 (yyval.
node) = new_case3(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
8486 #line 8482 "parse.c"
8490 #line 2861 "parse.y"
8502 ID id = internal_id(p);
8504 NODE *args, *scope, *internal_var =
NEW_DVAR(
id, &(yylsp[-4]));
8506 tbl[0] = 1 ; tbl[1] =
id ;
8509 switch (
nd_type((yyvsp[-4].node))) {
8513 (yyvsp[-4].node)->
nd_value = internal_var;
8516 m->nd_next = (yyvsp[-4].node);
8519 m->nd_next = node_assign(p, (yyvsp[-4].node),
NEW_FOR_MASGN(internal_var, &(yylsp[-4])), &(yylsp[-4]));
8522 m->nd_next = node_assign(p,
NEW_MASGN(
NEW_LIST((yyvsp[-4].node), &(yylsp[-4])), 0, &(yylsp[-4])), internal_var, &(yylsp[-4]));
8525 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
8527 (yyval.
node) =
NEW_FOR((yyvsp[-2].node), scope, &(yyloc));
8528 fixpos((yyval.
node), (yyvsp[-4].node));
8532 #line 8528 "parse.c"
8536 #line 2903 "parse.y"
8539 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[-1]));
8540 yyerror1(&loc,
"class definition in method body");
8546 #line 8542 "parse.c"
8550 #line 2914 "parse.y"
8553 (yyval.
node) =
NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc));
8555 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
8562 #line 8558 "parse.c"
8566 #line 2926 "parse.y"
8573 #line 8569 "parse.c"
8577 #line 2935 "parse.y"
8580 (yyval.
node) =
NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
8582 set_line_body((yyvsp[-1].node),
nd_line((yyvsp[-4].node)));
8583 fixpos((yyval.
node), (yyvsp[-4].node));
8587 p->
in_def = (yyvsp[-3].num) & 1;
8588 p->
in_class = ((yyvsp[-3].num) >> 1) & 1;
8590 #line 8586 "parse.c"
8594 #line 2948 "parse.y"
8597 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
8598 yyerror1(&loc,
"module definition in method body");
8604 #line 8600 "parse.c"
8608 #line 2959 "parse.y"
8611 (yyval.
node) =
NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
8613 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
8620 #line 8616 "parse.c"
8624 #line 2971 "parse.y"
8626 numparam_name(p,
get_id((yyvsp[0].
id)));
8631 #line 8627 "parse.c"
8635 #line 2977 "parse.y"
8640 #line 8636 "parse.c"
8644 #line 2984 "parse.y"
8647 NODE *body = remove_begin((yyvsp[-1].node));
8648 reduce_nodes(p, &body);
8649 (yyval.
node) =
NEW_DEFN((yyvsp[-5].
id), (yyvsp[-2].node), body, &(yyloc));
8651 set_line_body(body, (yylsp[-6]).beg_pos.lineno);
8655 p->
in_def = (yyvsp[-3].num) & 1;
8658 #line 8654 "parse.c"
8662 #line 2997 "parse.y"
8664 #line 8660 "parse.c"
8668 #line 2998 "parse.y"
8670 numparam_name(p,
get_id((yyvsp[0].
id)));
8671 (yyvsp[-1].num) = p->
in_def;
8678 #line 8674 "parse.c"
8682 #line 3010 "parse.y"
8685 NODE *body = remove_begin((yyvsp[-1].node));
8686 reduce_nodes(p, &body);
8687 (yyval.
node) =
NEW_DEFS((yyvsp[-7].node), (yyvsp[-4].id), (yyvsp[-2].node), body, &(yyloc));
8689 set_line_body(body, (yylsp[-8]).beg_pos.lineno);
8693 p->
in_def = (yyvsp[-5].num) & 1;
8696 #line 8692 "parse.c"
8700 #line 3024 "parse.y"
8707 #line 8703 "parse.c"
8711 #line 3031 "parse.y"
8718 #line 8714 "parse.c"
8722 #line 3038 "parse.y"
8729 #line 8725 "parse.c"
8733 #line 3045 "parse.y"
8740 #line 8736 "parse.c"
8744 #line 3054 "parse.y"
8747 (yyval.
node) = (yyvsp[0].node);
8749 #line 8745 "parse.c"
8753 #line 3061 "parse.y"
8755 token_info_push(p,
"begin", &(yyloc));
8757 #line 8753 "parse.c"
8761 #line 3067 "parse.y"
8764 token_info_push(p,
"if", &(yyloc));
8776 #line 8772 "parse.c"
8780 #line 3084 "parse.y"
8782 token_info_push(p,
"unless", &(yyloc));
8784 #line 8780 "parse.c"
8788 #line 3090 "parse.y"
8790 token_info_push(p,
"while", &(yyloc));
8792 #line 8788 "parse.c"
8796 #line 3096 "parse.y"
8798 token_info_push(p,
"until", &(yyloc));
8800 #line 8796 "parse.c"
8804 #line 3102 "parse.y"
8806 token_info_push(p,
"case", &(yyloc));
8808 #line 8804 "parse.c"
8812 #line 3108 "parse.y"
8814 token_info_push(p,
"for", &(yyloc));
8816 #line 8812 "parse.c"
8820 #line 3114 "parse.y"
8822 token_info_push(p,
"class", &(yyloc));
8824 #line 8820 "parse.c"
8828 #line 3120 "parse.y"
8830 token_info_push(p,
"module", &(yyloc));
8832 #line 8828 "parse.c"
8836 #line 3126 "parse.y"
8838 token_info_push(p,
"def", &(yyloc));
8840 #line 8836 "parse.c"
8844 #line 3132 "parse.y"
8846 token_info_push(p,
"do", &(yyloc));
8848 #line 8844 "parse.c"
8852 #line 3138 "parse.y"
8854 token_info_push(p,
"do", &(yyloc));
8856 #line 8852 "parse.c"
8860 #line 3144 "parse.y"
8862 token_info_warn(p,
"rescue", p->
token_info, 1, &(yyloc));
8864 #line 8860 "parse.c"
8868 #line 3150 "parse.y"
8870 token_info_warn(p,
"ensure", p->
token_info, 1, &(yyloc));
8872 #line 8868 "parse.c"
8876 #line 3156 "parse.y"
8878 token_info_warn(p,
"when", p->
token_info, 0, &(yyloc));
8880 #line 8876 "parse.c"
8884 #line 3162 "parse.y"
8887 int same = ptinfo_beg &&
strcmp(ptinfo_beg->
token,
"case") != 0;
8888 token_info_warn(p,
"else", p->
token_info, same, &(yyloc));
8893 token_info_setup(&e, p->
lex.
pbeg, &(yyloc));
8894 if (!e.
nonspc) *ptinfo_beg = e;
8897 #line 8893 "parse.c"
8901 #line 3177 "parse.y"
8904 token_info_warn(p,
"elsif", p->
token_info, 1, &(yyloc));
8906 #line 8902 "parse.c"
8910 #line 3184 "parse.y"
8912 token_info_pop(p,
"end", &(yyloc));
8914 #line 8910 "parse.c"
8918 #line 3190 "parse.y"
8921 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
8923 #line 8919 "parse.c"
8927 #line 3209 "parse.y"
8930 (yyval.
node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
8931 fixpos((yyval.
node), (yyvsp[-3].node));
8935 #line 8931 "parse.c"
8939 #line 3220 "parse.y"
8942 (yyval.
node) = (yyvsp[0].node);
8946 #line 8942 "parse.c"
8950 #line 3233 "parse.y"
8953 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
8954 mark_lvar_used(p, (yyval.
node));
8958 #line 8954 "parse.c"
8962 #line 3241 "parse.y"
8965 (yyval.
node) = (yyvsp[-1].node);
8969 #line 8965 "parse.c"
8973 #line 3250 "parse.y"
8980 #line 8976 "parse.c"
8984 #line 3257 "parse.y"
8987 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
8991 #line 8987 "parse.c"
8995 #line 3266 "parse.y"
9002 #line 8998 "parse.c"
9006 #line 3273 "parse.y"
9009 (yyval.
node) =
NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9013 #line 9009 "parse.c"
9017 #line 3280 "parse.y"
9024 #line 9020 "parse.c"
9028 #line 3287 "parse.y"
9035 #line 9031 "parse.c"
9039 #line 3294 "parse.y"
9046 #line 9042 "parse.c"
9050 #line 3303 "parse.y"
9053 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
9054 mark_lvar_used(p, (yyval.
node));
9058 #line 9054 "parse.c"
9062 #line 3311 "parse.y"
9069 #line 9065 "parse.c"
9073 #line 3320 "parse.y"
9075 (yyval.
node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
9077 #line 9073 "parse.c"
9081 #line 3324 "parse.y"
9083 (yyval.
node) = new_args_tail(p, (yyvsp[-1].node),
Qnone, (yyvsp[0].id), &(yylsp[-1]));
9085 #line 9081 "parse.c"
9089 #line 3328 "parse.y"
9091 (yyval.
node) = new_args_tail(p,
Qnone, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
9093 #line 9089 "parse.c"
9097 #line 3332 "parse.y"
9101 #line 9097 "parse.c"
9105 #line 3336 "parse.y"
9107 (yyval.
node) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].
id), &(yylsp[0]));
9109 #line 9105 "parse.c"
9113 #line 3342 "parse.y"
9115 (yyval.
node) = (yyvsp[0].node);
9117 #line 9113 "parse.c"
9121 #line 3346 "parse.y"
9125 #line 9121 "parse.c"
9129 #line 3352 "parse.y"
9131 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
9133 #line 9129 "parse.c"
9137 #line 3356 "parse.y"
9139 (yyval.
node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9141 #line 9137 "parse.c"
9145 #line 3360 "parse.y"
9147 (yyval.
node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
9149 #line 9145 "parse.c"
9153 #line 3364 "parse.y"
9155 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9157 #line 9153 "parse.c"
9161 #line 3368 "parse.y"
9163 (yyval.
node) = new_args(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].id),
Qnone, (yyvsp[0].node), &(yyloc));
9165 #line 9161 "parse.c"
9169 #line 3372 "parse.y"
9173 (yyval.
node) = new_args(p, (yyvsp[-1].node),
Qnone,
NODE_SPECIAL_EXCESSIVE_COMMA,
Qnone, new_args_tail(p,
Qnone,
Qnone,
Qnone, &(yylsp[-1])), &(yyloc));
9177 #line 9173 "parse.c"
9181 #line 3380 "parse.y"
9183 (yyval.
node) = new_args(p, (yyvsp[-5].node),
Qnone, (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9185 #line 9181 "parse.c"
9189 #line 3384 "parse.y"
9191 (yyval.
node) = new_args(p, (yyvsp[-1].node),
Qnone,
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
9193 #line 9189 "parse.c"
9197 #line 3388 "parse.y"
9199 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node), (yyvsp[-1].id),
Qnone, (yyvsp[0].node), &(yyloc));
9201 #line 9197 "parse.c"
9205 #line 3392 "parse.y"
9207 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-5].node), (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9209 #line 9205 "parse.c"
9213 #line 3396 "parse.y"
9215 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-1].node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
9217 #line 9213 "parse.c"
9221 #line 3400 "parse.y"
9223 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9225 #line 9221 "parse.c"
9229 #line 3404 "parse.y"
9231 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
9233 #line 9229 "parse.c"
9237 #line 3408 "parse.y"
9239 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9241 #line 9237 "parse.c"
9245 #line 3412 "parse.y"
9249 #line 9245 "parse.c"
9253 #line 3419 "parse.y"
9257 #line 9253 "parse.c"
9261 #line 3425 "parse.y"
9270 #line 9266 "parse.c"
9274 #line 3434 "parse.y"
9279 (yyval.
node) = (yyvsp[-2].node);
9283 #line 9279 "parse.c"
9287 #line 3446 "parse.y"
9291 #line 9287 "parse.c"
9295 #line 3450 "parse.y"
9302 #line 9298 "parse.c"
9306 #line 3465 "parse.y"
9308 new_bv(p,
get_id((yyvsp[0].
id)));
9311 #line 9307 "parse.c"
9315 #line 3470 "parse.y"
9319 #line 9315 "parse.c"
9323 #line 3475 "parse.y"
9325 (yyval.
vars) = dyna_push(p);
9327 #line 9323 "parse.c"
9331 #line 3478 "parse.y"
9336 #line 9332 "parse.c"
9340 #line 3482 "parse.y"
9345 #line 9341 "parse.c"
9349 #line 3486 "parse.y"
9351 (yyval.
node) = numparam_push(p);
9353 #line 9349 "parse.c"
9357 #line 3490 "parse.y"
9361 #line 9357 "parse.c"
9365 #line 3494 "parse.y"
9371 (yyvsp[-2].node) = args_with_numbered(p, (yyvsp[-2].node), max_numparam);
9374 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9375 (yyval.
node) =
NEW_LAMBDA((yyvsp[-2].node), (yyvsp[0].node), &loc);
9381 numparam_pop(p, (yyvsp[-3].node));
9382 dyna_pop(p, (yyvsp[-6].
vars));
9384 #line 9380 "parse.c"
9388 #line 3515 "parse.y"
9391 (yyval.
node) = (yyvsp[-2].node);
9396 #line 9392 "parse.c"
9400 #line 3523 "parse.y"
9403 if (!args_info_empty_p((yyvsp[0].node)->
nd_ainfo))
9406 (yyval.
node) = (yyvsp[0].node);
9408 #line 9404 "parse.c"
9412 #line 3533 "parse.y"
9414 token_info_pop(p,
"}", &(yylsp[0]));
9415 (yyval.
node) = (yyvsp[-1].node);
9417 #line 9413 "parse.c"
9421 #line 3538 "parse.y"
9423 (yyval.
node) = (yyvsp[-1].node);
9425 #line 9421 "parse.c"
9429 #line 3544 "parse.y"
9431 (yyval.
node) = (yyvsp[-1].node);
9433 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9437 #line 9433 "parse.c"
9441 #line 3554 "parse.y"
9448 block_dup_check(p, (yyvsp[-1].node)->
nd_args, (yyvsp[0].node));
9450 (yyval.
node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9451 fixpos((yyval.
node), (yyvsp[-1].node));
9455 #line 9451 "parse.c"
9459 #line 3568 "parse.y"
9462 (yyval.
node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9466 #line 9462 "parse.c"
9470 #line 3575 "parse.y"
9473 (yyval.
node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
9477 #line 9473 "parse.c"
9481 #line 3582 "parse.y"
9484 (yyval.
node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
9488 #line 9484 "parse.c"
9492 #line 3591 "parse.y"
9495 (yyval.
node) = (yyvsp[-1].node);
9501 #line 9497 "parse.c"
9505 #line 3600 "parse.y"
9508 (yyval.
node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9513 #line 9509 "parse.c"
9517 #line 3608 "parse.y"
9520 (yyval.
node) = new_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9525 #line 9521 "parse.c"
9529 #line 3616 "parse.y"
9536 #line 9532 "parse.c"
9540 #line 3623 "parse.y"
9543 (yyval.
node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node),
ID2VAL(
idCall), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9548 #line 9544 "parse.c"
9552 #line 3631 "parse.y"
9560 #line 9556 "parse.c"
9564 #line 3639 "parse.y"
9571 #line 9567 "parse.c"
9575 #line 3646 "parse.y"
9582 #line 9578 "parse.c"
9586 #line 3653 "parse.y"
9593 fixpos((yyval.
node), (yyvsp[-3].node));
9597 #line 9593 "parse.c"
9601 #line 3666 "parse.y"
9603 (yyval.
node) = (yyvsp[-1].node);
9605 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9609 #line 9605 "parse.c"
9613 #line 3674 "parse.y"
9615 (yyval.
node) = (yyvsp[-1].node);
9617 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9621 #line 9617 "parse.c"
9625 #line 3683 "parse.y"
9626 {(yyval.
vars) = dyna_push(p);}
9627 #line 9623 "parse.c"
9631 #line 3684 "parse.y"
9636 #line 9632 "parse.c"
9640 #line 3688 "parse.y"
9642 (yyval.
node) = numparam_push(p);
9644 #line 9640 "parse.c"
9648 #line 3692 "parse.y"
9652 (yyvsp[-1].node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
9654 (yyval.
node) =
NEW_ITER((yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9657 numparam_pop(p, (yyvsp[-2].node));
9658 dyna_pop(p, (yyvsp[-4].
vars));
9660 #line 9656 "parse.c"
9664 #line 3705 "parse.y"
9665 {(yyval.
vars) = dyna_push(p);}
9666 #line 9662 "parse.c"
9670 #line 3706 "parse.y"
9675 #line 9671 "parse.c"
9679 #line 3710 "parse.y"
9681 (yyval.
node) = numparam_push(p);
9684 #line 9680 "parse.c"
9688 #line 3715 "parse.y"
9692 (yyvsp[-1].node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
9694 (yyval.
node) =
NEW_ITER((yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9698 numparam_pop(p, (yyvsp[-2].node));
9699 dyna_pop(p, (yyvsp[-4].
vars));
9701 #line 9697 "parse.c"
9705 #line 3730 "parse.y"
9708 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
9713 #line 9709 "parse.c"
9717 #line 3738 "parse.y"
9724 #line 9720 "parse.c"
9728 #line 3745 "parse.y"
9731 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
9732 (yyval.
node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9736 #line 9732 "parse.c"
9740 #line 3753 "parse.y"
9743 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
9747 #line 9743 "parse.c"
9751 #line 3764 "parse.y"
9754 (yyval.
node) =
NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9755 fixpos((yyval.
node), (yyvsp[-3].node));
9759 #line 9755 "parse.c"
9763 #line 3778 "parse.y"
9770 #line 9766 "parse.c"
9774 #line 3784 "parse.y"
9775 {(yyval.
tbl) = push_pvtbl(p);}
9776 #line 9772 "parse.c"
9780 #line 3785 "parse.y"
9781 {(yyval.
tbl) = push_pktbl(p);}
9782 #line 9778 "parse.c"
9786 #line 3787 "parse.y"
9787 {pop_pktbl(p, (yyvsp[-2].tbl));}
9788 #line 9784 "parse.c"
9792 #line 3788 "parse.y"
9793 {pop_pvtbl(p, (yyvsp[-4].tbl));}
9794 #line 9790 "parse.c"
9798 #line 3789 "parse.y"
9802 #line 9798 "parse.c"
9806 #line 3794 "parse.y"
9809 (yyval.
node) =
NEW_IN((yyvsp[-6].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9813 #line 9809 "parse.c"
9817 #line 3808 "parse.y"
9820 (yyval.
node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
9821 fixpos((yyval.
node), (yyvsp[0].node));
9825 #line 9821 "parse.c"
9829 #line 3816 "parse.y"
9832 (yyval.
node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
9833 fixpos((yyval.
node), (yyvsp[0].node));
9837 #line 9833 "parse.c"
9841 #line 3827 "parse.y"
9843 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
9846 #line 9842 "parse.c"
9850 #line 3832 "parse.y"
9852 (yyval.
node) = new_array_pattern(p,
Qnone,
get_value((yyvsp[-2].node)), (yyvsp[0].node), &(yyloc));
9858 #line 9854 "parse.c"
9862 #line 3840 "parse.y"
9864 (yyval.
node) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
9866 #line 9862 "parse.c"
9870 #line 3844 "parse.y"
9872 (yyval.
node) = new_hash_pattern(p,
Qnone, (yyvsp[0].node), &(yyloc));
9874 #line 9870 "parse.c"
9878 #line 3853 "parse.y"
9882 n = list_append(p,
n, (yyvsp[0].node));
9883 (yyval.
node) = new_hash(p,
n, &(yyloc));
9887 #line 9883 "parse.c"
9891 #line 3865 "parse.y"
9898 #line 9894 "parse.c"
9902 #line 3874 "parse.y"
9903 {(yyval.
tbl) = push_pktbl(p);}
9904 #line 9900 "parse.c"
9908 #line 3875 "parse.y"
9909 {(yyval.
tbl) = push_pktbl(p);}
9910 #line 9906 "parse.c"
9914 #line 3879 "parse.y"
9916 pop_pktbl(p, (yyvsp[-2].tbl));
9917 (yyval.
node) = new_array_pattern(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), &(yyloc));
9923 #line 9919 "parse.c"
9927 #line 3888 "parse.y"
9929 pop_pktbl(p, (yyvsp[-2].tbl));
9930 (yyval.
node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
9936 #line 9932 "parse.c"
9940 #line 3897 "parse.y"
9942 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
9943 (yyval.
node) = new_array_pattern(p, (yyvsp[-2].node),
Qnone, (yyval.
node), &(yyloc));
9945 #line 9941 "parse.c"
9949 #line 3902 "parse.y"
9951 pop_pktbl(p, (yyvsp[-2].tbl));
9952 (yyval.
node) = new_array_pattern(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), &(yyloc));
9958 #line 9954 "parse.c"
9962 #line 3911 "parse.y"
9964 pop_pktbl(p, (yyvsp[-2].tbl));
9965 (yyval.
node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
9971 #line 9967 "parse.c"
9975 #line 3920 "parse.y"
9977 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
9978 (yyval.
node) = new_array_pattern(p, (yyvsp[-2].node),
Qnone, (yyval.
node), &(yyloc));
9980 #line 9976 "parse.c"
9984 #line 3924 "parse.y"
9985 {(yyval.
tbl) = push_pktbl(p);}
9986 #line 9982 "parse.c"
9990 #line 3925 "parse.y"
9992 pop_pktbl(p, (yyvsp[-2].tbl));
9993 (yyval.
node) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[-1].node), &(yyloc));
9995 #line 9991 "parse.c"
9999 #line 3930 "parse.y"
10001 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10004 #line 10000 "parse.c"
10008 #line 3935 "parse.y"
10010 (yyval.
tbl) = push_pktbl(p);
10014 #line 10010 "parse.c"
10018 #line 3941 "parse.y"
10020 pop_pktbl(p, (yyvsp[-2].tbl));
10022 (yyval.
node) = new_hash_pattern(p,
Qnone, (yyvsp[-1].node), &(yyloc));
10024 #line 10020 "parse.c"
10028 #line 3947 "parse.y"
10030 (yyval.
node) = new_hash_pattern_tail(p,
Qnone, 0, &(yyloc));
10031 (yyval.
node) = new_hash_pattern(p,
Qnone, (yyval.
node), &(yyloc));
10033 #line 10029 "parse.c"
10037 #line 3951 "parse.y"
10038 {(yyval.
tbl) = push_pktbl(p);}
10039 #line 10035 "parse.c"
10043 #line 3952 "parse.y"
10045 pop_pktbl(p, (yyvsp[-2].tbl));
10046 (yyval.
node) = (yyvsp[-1].node);
10048 #line 10044 "parse.c"
10052 #line 3959 "parse.y"
10056 (yyval.
node) = new_array_pattern_tail(p, pre_args, 0, 0,
Qnone, &(yyloc));
10061 #line 10057 "parse.c"
10065 #line 3968 "parse.y"
10067 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0,
Qnone, &(yyloc));
10069 #line 10065 "parse.c"
10073 #line 3972 "parse.y"
10076 (yyval.
node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, 0,
Qnone, &(yyloc));
10082 #line 10078 "parse.c"
10086 #line 3981 "parse.y"
10088 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-2].node), 1, (yyvsp[0].id),
Qnone, &(yyloc));
10090 #line 10086 "parse.c"
10094 #line 3985 "parse.y"
10096 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-4].node), 1, (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
10098 #line 10094 "parse.c"
10102 #line 3989 "parse.y"
10104 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, 0,
Qnone, &(yyloc));
10106 #line 10102 "parse.c"
10110 #line 3993 "parse.y"
10112 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, 0, (yyvsp[0].node), &(yyloc));
10114 #line 10110 "parse.c"
10118 #line 4000 "parse.y"
10120 (yyval.
node) = (yyvsp[-1].node);
10122 #line 10118 "parse.c"
10126 #line 4004 "parse.y"
10129 (yyval.
node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
10133 #line 10129 "parse.c"
10137 #line 4013 "parse.y"
10139 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[0].
id),
Qnone, &(yyloc));
10141 #line 10137 "parse.c"
10145 #line 4017 "parse.y"
10147 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
10149 #line 10145 "parse.c"
10153 #line 4021 "parse.y"
10155 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
10157 #line 10153 "parse.c"
10161 #line 4025 "parse.y"
10163 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, 0, (yyvsp[0].node), &(yyloc));
10165 #line 10161 "parse.c"
10169 #line 4032 "parse.y"
10172 (yyval.
node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
10176 #line 10172 "parse.c"
10180 #line 4041 "parse.y"
10187 #line 10183 "parse.c"
10191 #line 4050 "parse.y"
10193 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].id), &(yyloc));
10195 #line 10191 "parse.c"
10199 #line 4054 "parse.y"
10201 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
10203 #line 10199 "parse.c"
10207 #line 4058 "parse.y"
10209 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
10211 #line 10207 "parse.c"
10215 #line 4062 "parse.y"
10217 (yyval.
node) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)), (yyvsp[0].
id), &(yyloc));
10219 #line 10215 "parse.c"
10223 #line 4066 "parse.y"
10225 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)),
ID2VAL(
idNil), &(yyloc));
10227 #line 10223 "parse.c"
10231 #line 4070 "parse.y"
10233 (yyval.
node) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)),
ID2VAL(
idNil), &(yyloc));
10235 #line 10231 "parse.c"
10239 #line 4078 "parse.y"
10242 (yyval.
node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
10246 #line 10242 "parse.c"
10250 #line 4087 "parse.y"
10252 error_duplicate_pattern_key(p,
get_id((yyvsp[-1].
id)), &(yylsp[-1]));
10258 #line 10254 "parse.c"
10262 #line 4095 "parse.y"
10264 error_duplicate_pattern_key(p,
get_id((yyvsp[0].
id)), &(yylsp[0]));
10266 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
10268 error_duplicate_pattern_variable(p,
get_id((yyvsp[0].
id)), &(yylsp[0]));
10270 (yyval.
node) = list_append(p,
NEW_LIST(
NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
10274 #line 10270 "parse.c"
10278 #line 4110 "parse.y"
10280 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10283 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
10284 (yyval.
id) =
SYM2ID(node->nd_lit);
10295 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
10299 #line 10295 "parse.c"
10303 #line 4133 "parse.y"
10305 (yyval.
id) = (yyvsp[0].
id);
10307 #line 10303 "parse.c"
10311 #line 4137 "parse.y"
10315 #line 10311 "parse.c"
10319 #line 4143 "parse.y"
10323 #line 10319 "parse.c"
10327 #line 4150 "parse.y"
10332 (yyval.
node) =
NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
10336 #line 10332 "parse.c"
10340 #line 4159 "parse.y"
10345 (yyval.
node) =
NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
10349 #line 10345 "parse.c"
10353 #line 4168 "parse.y"
10357 loc.beg_pos = (yylsp[0]).end_pos;
10358 loc.end_pos = (yylsp[0]).end_pos;
10365 #line 10361 "parse.c"
10369 #line 4180 "parse.y"
10373 loc.beg_pos = (yylsp[0]).end_pos;
10374 loc.end_pos = (yylsp[0]).end_pos;
10381 #line 10377 "parse.c"
10385 #line 4195 "parse.y"
10389 loc.beg_pos = (yylsp[-1]).beg_pos;
10390 loc.end_pos = (yylsp[-1]).beg_pos;
10397 #line 10393 "parse.c"
10401 #line 4207 "parse.y"
10405 loc.beg_pos = (yylsp[-1]).beg_pos;
10406 loc.end_pos = (yylsp[-1]).beg_pos;
10413 #line 10409 "parse.c"
10417 #line 4229 "parse.y"
10420 if (!((yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.
node) =
NEW_BEGIN(0, &(yyloc));
10424 #line 10420 "parse.c"
10428 #line 4236 "parse.y"
10430 token_info_push(p,
"->", &(yylsp[0]));
10432 #line 10428 "parse.c"
10436 #line 4240 "parse.y"
10438 (yyval.
node) = (yyvsp[0].node);
10443 #line 10439 "parse.c"
10447 #line 4249 "parse.y"
10450 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
10451 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
10455 #line 10451 "parse.c"
10459 #line 4259 "parse.y"
10462 NODE *
n = gettable(p, (yyvsp[0].
id), &(yyloc));
10470 #line 10466 "parse.c"
10474 #line 4272 "parse.y"
10481 #line 10477 "parse.c"
10485 #line 4279 "parse.y"
10488 (yyval.
node) =
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
10492 #line 10488 "parse.c"
10496 #line 4286 "parse.y"
10499 (yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc));
10503 #line 10499 "parse.c"
10507 #line 4297 "parse.y"
10511 (yyvsp[-3].node) ? block_append(p, node_assign(p, (yyvsp[-3].node),
NEW_ERRINFO(&(yylsp[-3])), &(yylsp[-3])), (yyvsp[-1].node)) : (yyvsp[-1].node),
10512 (yyvsp[0].node), &(yyloc));
10513 fixpos((yyval.
node), (yyvsp[-4].node)?(yyvsp[-4].node):(yyvsp[-1].node));
10517 #line 10513 "parse.c"
10521 #line 4310 "parse.y"
10528 #line 10524 "parse.c"
10532 #line 4317 "parse.y"
10535 if (!((yyval.
node) = splat_array((yyvsp[0].node)))) (yyval.
node) = (yyvsp[0].node);
10539 #line 10535 "parse.c"
10543 #line 4327 "parse.y"
10545 (yyval.
node) = (yyvsp[0].node);
10547 #line 10543 "parse.c"
10551 #line 4334 "parse.y"
10554 (yyval.
node) = (yyvsp[0].node);
10558 #line 10554 "parse.c"
10562 #line 4348 "parse.y"
10565 NODE *node = (yyvsp[0].node);
10571 node = evstr2dstr(p, node);
10573 (yyval.
node) = node;
10577 #line 10573 "parse.c"
10581 #line 4367 "parse.y"
10584 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10588 #line 10584 "parse.c"
10592 #line 4376 "parse.y"
10595 (yyval.
node) = heredoc_dedent(p, (yyvsp[-1].node));
10596 if ((yyval.
node)) nd_set_loc((yyval.
node), &(yyloc));
10600 #line 10596 "parse.c"
10604 #line 4386 "parse.y"
10607 (yyval.
node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
10611 #line 10607 "parse.c"
10615 #line 4395 "parse.y"
10617 (yyval.
node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc));
10619 #line 10615 "parse.c"
10623 #line 4401 "parse.y"
10630 #line 10626 "parse.c"
10634 #line 4410 "parse.y"
10641 #line 10637 "parse.c"
10645 #line 4417 "parse.y"
10648 (yyval.
node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
10652 #line 10648 "parse.c"
10656 #line 4428 "parse.y"
10659 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10663 #line 10659 "parse.c"
10667 #line 4437 "parse.y"
10674 #line 10670 "parse.c"
10678 #line 4446 "parse.y"
10685 #line 10681 "parse.c"
10689 #line 4453 "parse.y"
10692 (yyval.
node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
10696 #line 10692 "parse.c"
10700 #line 4462 "parse.y"
10707 #line 10703 "parse.c"
10711 #line 4471 "parse.y"
10718 #line 10714 "parse.c"
10722 #line 4480 "parse.y"
10729 #line 10725 "parse.c"
10733 #line 4487 "parse.y"
10736 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
10740 #line 10736 "parse.c"
10744 #line 4496 "parse.y"
10751 #line 10747 "parse.c"
10755 #line 4503 "parse.y"
10758 (yyval.
node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
10762 #line 10758 "parse.c"
10766 #line 4512 "parse.y"
10777 #line 10773 "parse.c"
10781 #line 4523 "parse.y"
10784 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10797 #line 10793 "parse.c"
10801 #line 4541 "parse.y"
10808 #line 10804 "parse.c"
10812 #line 4548 "parse.y"
10815 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10819 #line 10815 "parse.c"
10823 #line 4557 "parse.y"
10834 #line 10830 "parse.c"
10838 #line 4568 "parse.y"
10841 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
10843 (yyval.
node) = tail;
10846 (yyval.
node) = head;
10856 head = list_append(p,
NEW_DSTR(
Qnil, &(yyloc)), head);
10859 (yyval.
node) = list_append(p, head, tail);
10877 #line 10873 "parse.c"
10881 #line 4611 "parse.y"
10888 #line 10884 "parse.c"
10892 #line 4618 "parse.y"
10901 #line 10897 "parse.c"
10905 #line 4627 "parse.y"
10910 #line 10906 "parse.c"
10914 #line 4631 "parse.y"
10920 #line 10916 "parse.c"
10924 #line 4636 "parse.y"
10929 #line 10925 "parse.c"
10933 #line 4640 "parse.y"
10938 #line 10934 "parse.c"
10942 #line 4644 "parse.y"
10947 #line 10943 "parse.c"
10951 #line 4649 "parse.y"
10962 (yyval.
node) = new_evstr(p, (yyvsp[-1].node), &(yyloc));
10966 #line 10962 "parse.c"
10970 #line 4666 "parse.y"
10977 #line 10973 "parse.c"
10981 #line 4673 "parse.y"
10988 #line 10984 "parse.c"
10992 #line 4680 "parse.y"
10999 #line 10995 "parse.c"
11003 #line 4694 "parse.y"
11011 #line 11007 "parse.c"
11015 #line 4710 "parse.y"
11019 (yyval.
node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
11023 #line 11019 "parse.c"
11027 #line 4721 "parse.y"
11030 (yyval.
node) = (yyvsp[0].node);
11035 #line 11031 "parse.c"
11039 #line 4743 "parse.y"
11040 {(yyval.
id) =
KWD2EID(nil, (yyvsp[0].
id));}
11041 #line 11037 "parse.c"
11045 #line 4744 "parse.y"
11046 {(yyval.
id) =
KWD2EID(
self, (yyvsp[0].
id));}
11047 #line 11043 "parse.c"
11051 #line 4745 "parse.y"
11052 {(yyval.
id) =
KWD2EID(
true, (yyvsp[0].
id));}
11053 #line 11049 "parse.c"
11057 #line 4746 "parse.y"
11058 {(yyval.
id) =
KWD2EID(
false, (yyvsp[0].
id));}
11059 #line 11055 "parse.c"
11063 #line 4747 "parse.y"
11064 {(yyval.
id) =
KWD2EID(_FILE__, (yyvsp[0].
id));}
11065 #line 11061 "parse.c"
11069 #line 4748 "parse.y"
11070 {(yyval.
id) =
KWD2EID(_LINE__, (yyvsp[0].
id));}
11071 #line 11067 "parse.c"
11075 #line 4749 "parse.y"
11076 {(yyval.
id) =
KWD2EID(_ENCODING__, (yyvsp[0].
id));}
11077 #line 11073 "parse.c"
11081 #line 4753 "parse.y"
11084 if (!((yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.
node) =
NEW_BEGIN(0, &(yyloc));
11094 #line 11090 "parse.c"
11098 #line 4766 "parse.y"
11101 if (!((yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.
node) =
NEW_BEGIN(0, &(yyloc));
11105 #line 11101 "parse.c"
11109 #line 4775 "parse.y"
11112 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11116 #line 11112 "parse.c"
11120 #line 4782 "parse.y"
11123 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11127 #line 11123 "parse.c"
11131 #line 4795 "parse.y"
11136 #line 11132 "parse.c"
11140 #line 4800 "parse.y"
11142 (yyval.
node) = (yyvsp[-1].node);
11144 #line 11140 "parse.c"
11148 #line 4804 "parse.y"
11155 #line 11151 "parse.c"
11159 #line 4813 "parse.y"
11162 (yyval.
node) = (yyvsp[-1].node);
11168 #line 11164 "parse.c"
11172 #line 4822 "parse.y"
11187 #line 11183 "parse.c"
11191 #line 4836 "parse.y"
11197 #line 11193 "parse.c"
11201 #line 4842 "parse.y"
11204 (yyval.
node) = (yyvsp[-1].node);
11208 #line 11204 "parse.c"
11212 #line 4851 "parse.y"
11214 (yyval.
node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
11216 #line 11212 "parse.c"
11220 #line 4855 "parse.y"
11222 (yyval.
node) = new_args_tail(p, (yyvsp[-1].node),
Qnone, (yyvsp[0].id), &(yylsp[-1]));
11224 #line 11220 "parse.c"
11228 #line 4859 "parse.y"
11230 (yyval.
node) = new_args_tail(p,
Qnone, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
11232 #line 11228 "parse.c"
11236 #line 4863 "parse.y"
11240 #line 11236 "parse.c"
11244 #line 4867 "parse.y"
11246 (yyval.
node) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].
id), &(yylsp[0]));
11248 #line 11244 "parse.c"
11252 #line 4873 "parse.y"
11254 (yyval.
node) = (yyvsp[0].node);
11256 #line 11252 "parse.c"
11260 #line 4877 "parse.y"
11264 #line 11260 "parse.c"
11268 #line 4883 "parse.y"
11270 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
11272 #line 11268 "parse.c"
11276 #line 4887 "parse.y"
11278 (yyval.
node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11280 #line 11276 "parse.c"
11284 #line 4891 "parse.y"
11286 (yyval.
node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
11288 #line 11284 "parse.c"
11292 #line 4895 "parse.y"
11294 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11296 #line 11292 "parse.c"
11300 #line 4899 "parse.y"
11302 (yyval.
node) = new_args(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].id),
Qnone, (yyvsp[0].node), &(yyloc));
11304 #line 11300 "parse.c"
11308 #line 4903 "parse.y"
11310 (yyval.
node) = new_args(p, (yyvsp[-5].node),
Qnone, (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11312 #line 11308 "parse.c"
11316 #line 4907 "parse.y"
11318 (yyval.
node) = new_args(p, (yyvsp[-1].node),
Qnone,
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
11320 #line 11316 "parse.c"
11324 #line 4911 "parse.y"
11326 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node), (yyvsp[-1].id),
Qnone, (yyvsp[0].node), &(yyloc));
11328 #line 11324 "parse.c"
11332 #line 4915 "parse.y"
11334 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-5].node), (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11336 #line 11332 "parse.c"
11340 #line 4919 "parse.y"
11342 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-1].node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
11344 #line 11340 "parse.c"
11348 #line 4923 "parse.y"
11350 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11352 #line 11348 "parse.c"
11356 #line 4927 "parse.y"
11358 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
11360 #line 11356 "parse.c"
11364 #line 4931 "parse.y"
11366 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11368 #line 11364 "parse.c"
11372 #line 4935 "parse.y"
11376 #line 11372 "parse.c"
11380 #line 4939 "parse.y"
11385 #line 11381 "parse.c"
11389 #line 4946 "parse.y"
11396 #line 11392 "parse.c"
11400 #line 4955 "parse.y"
11403 yyerror1(&(yylsp[0]),
"formal argument cannot be a constant");
11408 #line 11404 "parse.c"
11412 #line 4963 "parse.y"
11415 yyerror1(&(yylsp[0]),
"formal argument cannot be an instance variable");
11420 #line 11416 "parse.c"
11424 #line 4971 "parse.y"
11427 yyerror1(&(yylsp[0]),
"formal argument cannot be a global variable");
11432 #line 11428 "parse.c"
11436 #line 4979 "parse.y"
11439 yyerror1(&(yylsp[0]),
"formal argument cannot be a class variable");
11444 #line 11440 "parse.c"
11448 #line 4990 "parse.y"
11450 formal_argument(p,
get_id((yyvsp[0].
id)));
11452 (yyval.
id) = (yyvsp[0].
id);
11454 #line 11450 "parse.c"
11458 #line 4998 "parse.y"
11463 (yyval.
id) = (yyvsp[0].
id);
11465 #line 11461 "parse.c"
11469 #line 5007 "parse.y"
11477 #line 11473 "parse.c"
11481 #line 5015 "parse.y"
11484 ID tid = internal_id(p);
11486 loc.beg_pos = (yylsp[-1]).beg_pos;
11487 loc.end_pos = (yylsp[-1]).beg_pos;
11489 if (dyna_in_block(p)) {
11500 #line 11496 "parse.c"
11504 #line 5038 "parse.y"
11507 (yyval.
node) = (yyvsp[-2].node);
11510 rb_discard_node(p, (yyvsp[0].node));
11514 #line 11510 "parse.c"
11518 #line 5051 "parse.y"
11521 arg_var(p, formal_argument(p,
id));
11524 (yyval.
id) = (yyvsp[0].
id);
11526 #line 11522 "parse.c"
11530 #line 5061 "parse.y"
11534 (yyval.
node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
11538 #line 11534 "parse.c"
11542 #line 5069 "parse.y"
11550 #line 11546 "parse.c"
11554 #line 5079 "parse.y"
11557 (yyval.
node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
11561 #line 11557 "parse.c"
11565 #line 5086 "parse.y"
11572 #line 11568 "parse.c"
11576 #line 5095 "parse.y"
11579 (yyval.
node) = (yyvsp[0].node);
11583 #line 11579 "parse.c"
11587 #line 5102 "parse.y"
11590 (yyval.
node) = kwd_append((yyvsp[-2].node), (yyvsp[0].node));
11594 #line 11590 "parse.c"
11598 #line 5112 "parse.y"
11601 (yyval.
node) = (yyvsp[0].node);
11605 #line 11601 "parse.c"
11609 #line 5119 "parse.y"
11612 (yyval.
node) = kwd_append((yyvsp[-2].node), (yyvsp[0].node));
11616 #line 11612 "parse.c"
11620 #line 5132 "parse.y"
11626 #line 11622 "parse.c"
11630 #line 5140 "parse.y"
11632 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].
id))));
11634 (yyval.
id) = (yyvsp[0].
id);
11638 #line 11634 "parse.c"
11642 #line 5148 "parse.y"
11645 (yyval.
id) = internal_id(p);
11646 arg_var(p, (yyval.
id));
11650 #line 11646 "parse.c"
11654 #line 5158 "parse.y"
11658 (yyval.
node) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
11662 #line 11658 "parse.c"
11666 #line 5168 "parse.y"
11670 (yyval.
node) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
11674 #line 11670 "parse.c"
11678 #line 5178 "parse.y"
11681 (yyval.
node) = (yyvsp[0].node);
11685 #line 11681 "parse.c"
11689 #line 5185 "parse.y"
11692 (yyval.
node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].node));
11696 #line 11692 "parse.c"
11700 #line 5194 "parse.y"
11703 (yyval.
node) = (yyvsp[0].node);
11707 #line 11703 "parse.c"
11711 #line 5201 "parse.y"
11714 (yyval.
node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].node));
11718 #line 11714 "parse.c"
11722 #line 5214 "parse.y"
11724 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].
id))));
11726 (yyval.
id) = (yyvsp[0].
id);
11730 #line 11726 "parse.c"
11734 #line 5222 "parse.y"
11737 (yyval.
id) = internal_id(p);
11738 arg_var(p, (yyval.
id));
11742 #line 11738 "parse.c"
11746 #line 5236 "parse.y"
11748 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].
id))));
11750 (yyval.
id) = (yyvsp[0].
id);
11754 #line 11750 "parse.c"
11758 #line 5246 "parse.y"
11760 (yyval.
id) = (yyvsp[0].
id);
11762 #line 11758 "parse.c"
11766 #line 5250 "parse.y"
11770 #line 11766 "parse.c"
11774 #line 5256 "parse.y"
11777 (yyval.
node) = (yyvsp[0].node);
11779 #line 11775 "parse.c"
11783 #line 5260 "parse.y"
11785 #line 11781 "parse.c"
11789 #line 5261 "parse.y"
11792 switch (
nd_type((yyvsp[-1].node))) {
11801 yyerror1(&(yylsp[-1]),
"can't define singleton method for literals");
11807 (yyval.
node) = (yyvsp[-1].node);
11811 #line 11807 "parse.c"
11815 #line 5286 "parse.y"
11818 (yyval.
node) = (yyvsp[-1].node);
11822 #line 11818 "parse.c"
11826 #line 5297 "parse.y"
11829 NODE *assocs = (yyvsp[-2].node);
11830 NODE *tail = (yyvsp[0].node);
11835 if (assocs->nd_head &&
11839 tail = tail->nd_next->nd_head->nd_head;
11841 assocs = list_concat(assocs, tail);
11843 (yyval.
node) = assocs;
11847 #line 11843 "parse.c"
11851 #line 5320 "parse.y"
11858 (yyval.
node) = list_append(p,
NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
11862 #line 11858 "parse.c"
11866 #line 5331 "parse.y"
11873 #line 11869 "parse.c"
11877 #line 5338 "parse.y"
11880 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
11881 (yyval.
node) = list_append(p,
NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
11885 #line 11881 "parse.c"
11889 #line 5346 "parse.y"
11893 !((yyvsp[0].node)->nd_head && (yyvsp[0].node)->
nd_head->nd_alen)) {
11894 static VALUE empty_hash;
11902 (yyval.
node) = list_append(p,
NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
11906 #line 11902 "parse.c"
11910 #line 5414 "parse.y"
11912 #line 11908 "parse.c"
11916 #line 5415 "parse.y"
11918 #line 11914 "parse.c"
11922 #line 5419 "parse.y"
11924 #line 11920 "parse.c"
11928 #line 5423 "parse.y"
11932 #line 11928 "parse.c"
11936 #line 11932 "parse.c"
11965 yystate = yypgoto[yyn -
YYNTOKENS] + *yyssp;
11966 if (0 <= yystate && yystate <=
YYLAST && yycheck[yystate] == *yyssp)
11967 yystate = yytable[yystate];
11986 #if ! YYERROR_VERBOSE
11989 # define YYSYNTAX_ERROR yysyntax_error (p, &yymsg_alloc, &yymsg, \
11992 char const *yymsgp =
YY_(
"syntax error");
11993 int yysyntax_error_status;
11995 if (yysyntax_error_status == 0)
11997 else if (yysyntax_error_status == 1)
11999 if (yymsg != yymsgbuf)
12005 yymsg_alloc =
sizeof yymsgbuf;
12006 yysyntax_error_status = 2;
12014 yyerror (&yylloc, p, yymsgp);
12015 if (yysyntax_error_status == 2)
12016 goto yyexhaustedlab;
12018 # undef YYSYNTAX_ERROR
12022 yyerror_range[1] = yylloc;
12024 if (yyerrstatus == 3)
12029 if (yychar <=
YYEOF)
12032 if (yychar ==
YYEOF)
12037 yydestruct (
"Error: discarding",
12038 yytoken, &
yylval, &yylloc, p);
12059 yyerror_range[1] = yylsp[1-yylen];
12077 yyn = yypact[yystate];
12083 yyn = yytable[yyn];
12093 yyerror_range[1] = *yylsp;
12094 yydestruct (
"Error: popping",
12095 yystos[yystate], yyvsp, yylsp, p);
12105 yyerror_range[2] = yylloc;
12132 #if !defined yyoverflow || YYERROR_VERBOSE
12137 yyerror (&yylloc, p,
YY_(
"memory exhausted"));
12148 yydestruct (
"Cleanup: discarding lookahead",
12149 yytoken, &
yylval, &yylloc, p);
12155 while (yyssp != yyss)
12157 yydestruct (
"Cleanup: popping",
12158 yystos[*yyssp], yyvsp, yylsp, p);
12165 #if YYERROR_VERBOSE
12166 if (yymsg != yymsgbuf)
12171 #line 5427 "parse.y"
12176 # define yylval (*p->lval)
12185 # define set_yylval_node(x) { \
12186 YYLTYPE _cur_loc; \
12187 rb_parser_set_location(p, &_cur_loc); \
12188 yylval.node = (x); \
12190 # define set_yylval_str(x) \
12192 set_yylval_node(NEW_STR(x, &_cur_loc)); \
12193 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
12195 # define set_yylval_literal(x) \
12197 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
12198 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
12200 # define set_yylval_num(x) (yylval.num = (x))
12201 # define set_yylval_id(x) (yylval.id = (x))
12202 # define set_yylval_name(x) (yylval.id = (x))
12203 # define yylval_id() (yylval.id)
12205 static inline VALUE
12208 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
12210 # define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
12211 # define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
12212 # define set_yylval_id(x) (void)(x)
12213 # define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
12214 # define set_yylval_literal(x) add_mark_object(p, (x))
12215 # define set_yylval_node(x) (void)(x)
12216 # define yylval_id() yylval.id
12217 # define _cur_loc NULL_LOC
12220 #define set_yylval_noname() set_yylval_id(keyword_nil)
12223 #define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
12224 #define dispatch_scan_event(p, t) ((void)0)
12225 #define dispatch_delayed_token(p, t) ((void)0)
12226 #define has_delayed_token(p) (0)
12228 #define literal_flush(p, ptr) ((void)(ptr))
12230 #define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
12232 static inline VALUE
12233 intern_sym(
const char *
name)
12250 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t),
str);
12258 if (!ripper_has_scan_event(p))
return;
12259 add_mark_object(p, yylval_rval = ripper_scan_event_val(p, t));
12261 #define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
12267 const char *saved_tokp = p->
lex.
ptok;
12269 if (
NIL_P(p->delayed.token))
return;
12272 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed.token));
12273 p->delayed.token =
Qnil;
12277 #define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
12278 #define has_delayed_token(p) (!NIL_P(p->delayed.token))
12305 int column = 1, nonspc = 0,
i;
12307 if (*
ptr ==
'\t') {
12311 if (*
ptr !=
' ' && *
ptr !=
'\t') {
12317 ptinfo->
indent = column;
12318 ptinfo->
nonspc = nonspc;
12330 token_info_setup(ptinfo, p->
lex.
pbeg, loc);
12340 if (!ptinfo_beg)
return;
12344 token_info_warn(p,
token, ptinfo_beg, 1, loc);
12351 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
12353 if (!ptinfo_beg)
return;
12354 token_info_setup(ptinfo_end, p->
lex.
pbeg, loc);
12358 if (!same && ptinfo_beg->
indent < ptinfo_end->
indent)
return;
12360 "mismatched indentations at '%s' with '%s' at %d",
12386 else if (yylloc->beg_pos.lineno == lineno) {
12405 (yylloc->beg_pos.lineno == yylloc->end_pos.lineno &&
12406 yylloc->beg_pos.column == yylloc->end_pos.column)) {
12410 parser_show_error_line(p, yylloc);
12418 const int max_line_margin = 30;
12419 const char *
ptr, *ptr_end, *pt, *pb;
12420 const char *pre =
"", *post =
"", *pend;
12421 const char *code =
"", *caret =
"";
12428 if (!yylloc)
return;
12430 if (pend > pbeg && pend[-1] ==
'\n') {
12431 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
12435 if (lineno == yylloc->end_pos.lineno &&
12436 (pend - pbeg) > yylloc->end_pos.column) {
12437 pt = pbeg + yylloc->end_pos.column;
12440 ptr = ptr_end = pt;
12441 lim =
ptr - pbeg > max_line_margin ?
ptr - max_line_margin : pbeg;
12442 while ((lim <
ptr) && (*(
ptr-1) !=
'\n'))
ptr--;
12444 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
12445 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
12451 if (
ptr > pbeg) pre =
"...";
12453 if (ptr_end < pend) {
12455 if (ptr_end < pend) post =
"...";
12459 if (lineno == yylloc->beg_pos.lineno) {
12460 pb += yylloc->beg_pos.column;
12461 if (pb > pt) pb = pt;
12464 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
12467 if (
RTEST(errbuf)) {
12476 #define CSI_BEGIN "\033["
12477 #define CSI_SGR "m"
12487 (
int)(pt - pb), pb,
12488 (
int)(ptr_end - pt), pt,
12495 lim = pt < pend ? pt : pend;
12502 *p2++ = *
ptr++ ==
'\t' ?
'\t' :
' ';
12513 pre, (
int)
len, code, post,
12522 const char *pcur = 0, *ptok = 0;
12531 dispatch1(parse_error,
STR_NEW2(msg));
12548 vtable_size(
const struct vtable *tbl)
12574 #define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
12592 #define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
12608 if (
tbl->pos ==
tbl->capa) {
12609 tbl->capa =
tbl->capa * 2;
12614 #define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
12625 if (
tbl->pos <
n) {
12631 #define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
12635 vtable_included(
const struct vtable *
tbl,
ID id)
12640 for (
i = 0;
i <
tbl->pos;
i++) {
12641 if (
tbl->tbl[
i] ==
id) {
12655 debug_lines(
VALUE fname)
12658 CONST_ID(script_lines,
"SCRIPT_LINES__");
12694 if (!e_option_supplied(p)) {
12700 #define RUBY_DTRACE_PARSE_HOOK(name) \
12701 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
12702 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
12727 NODE *body = parser_append_options(p, tree->nd_body);
12731 tree->nd_body = prelude;
12743 if (
NIL_P(fname)) {
12763 must_be_ascii_compatible(
VALUE s)
12775 char *beg, *end, *start;
12787 if (end)
len = ++end - beg;
12796 if (
NIL_P(line))
return line;
12797 must_be_ascii_compatible(line);
12823 return yycompile(vparser, p, fname, line);
12835 must_be_ascii_compatible(s);
12836 return parser_compile_string(vparser,
f, s, line);
12858 return yycompile(vparser, p, fname, start);
12874 p->
lex.
gets = lex_generic_gets;
12879 return yycompile(vparser, p, fname, start);
12883 #define STR_FUNC_ESCAPE 0x01
12884 #define STR_FUNC_EXPAND 0x02
12885 #define STR_FUNC_REGEXP 0x04
12886 #define STR_FUNC_QWORDS 0x08
12887 #define STR_FUNC_SYMBOL 0x10
12888 #define STR_FUNC_INDENT 0x20
12889 #define STR_FUNC_LABEL 0x40
12890 #define STR_FUNC_LIST 0x4000
12891 #define STR_FUNC_TERM 0x8000
12922 #define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
12923 #define lex_eol_p(p) ((p)->lex.pcur >= (p)->lex.pend)
12924 #define lex_eol_n_p(p,n) ((p)->lex.pcur+(n) >= (p)->lex.pend)
12925 #define peek(p,c) peek_n(p, (c), 0)
12926 #define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
12927 #define peekc(p) peekc_n(p, 0)
12928 #define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
12946 #define add_delayed_token(p, tok, end) ((void)(tok), (void)(end))
12991 if (
peek(p,
'\n')) {
12998 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
13013 c = parser_cr(p, c);
13022 if (c == -1)
return;
13029 #define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
13031 #define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
13032 #define tok(p) (p)->tokenbuf
13033 #define toklen(p) (p)->tokidx
13039 while (ptr < p->
lex.pend) {
13040 int c = (
unsigned char)*
ptr++;
13041 int eol = (c ==
'\n' || c ==
'#');
13102 #define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
13105 escaped_control_code(
int c)
13131 #define WARN_SPACE_CHAR(c, prefix) \
13132 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
13136 int regexp_literal,
int wide)
13142 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
13143 yyerror0(
"invalid Unicode escape");
13144 return wide && numlen > 0;
13146 if (codepoint > 0x10ffff) {
13147 yyerror0(
"invalid Unicode codepoint (too large)");
13150 if ((codepoint & 0xfffff800) == 0xd800) {
13151 yyerror0(
"invalid Unicode codepoint");
13154 if (regexp_literal) {
13157 else if (codepoint >= 0x80) {
13159 if (*encp && utf8 != *encp) {
13162 parser_show_error_line(p, &loc);
13166 tokaddmbc(p, codepoint, *encp);
13169 tokadd(p, codepoint);
13177 int term,
int symbol_literal,
int regexp_literal)
13184 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
13186 const int open_brace =
'{', close_brace =
'}';
13188 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
13190 if (
peek(p, open_brace)) {
13191 const char *second =
NULL;
13192 int c,
last = nextc(p);
13195 while (c != close_brace) {
13196 if (c ==
term)
goto unterminated;
13197 if (second == multiple_codepoints)
13199 if (regexp_literal) tokadd(p,
last);
13200 if (!tokadd_codepoint(p, encp, regexp_literal,
TRUE)) {
13207 if (
term == -1 && !second)
13208 second = multiple_codepoints;
13211 if (c != close_brace) {
13214 yyerror0(
"unterminated Unicode escape");
13217 if (second && second != multiple_codepoints) {
13227 if (regexp_literal) tokadd(p, close_brace);
13231 if (!tokadd_codepoint(p, encp, regexp_literal,
FALSE)) {
13238 #define ESCAPE_CONTROL 1
13239 #define ESCAPE_META 2
13247 switch (c = nextc(p)) {
13272 case '0':
case '1':
case '2':
case '3':
13273 case '4':
case '5':
case '6':
case '7':
13280 c = tok_hex(p, &numlen);
13281 if (numlen == 0)
return 0;
13292 if ((c = nextc(p)) !=
'-') {
13295 if ((c = nextc(p)) ==
'\\') {
13296 if (
peek(p,
'u'))
goto eof;
13297 return read_escape(p, flags|
ESCAPE_META, encp) | 0x80;
13299 else if (c == -1 || !
ISASCII(c))
goto eof;
13301 int c2 = escaped_control_code(c);
13310 else if (
ISCNTRL(c))
goto eof;
13311 return ((c & 0xff) | 0x80);
13315 if ((c = nextc(p)) !=
'-') {
13320 if ((c = nextc(p))==
'\\') {
13321 if (
peek(p,
'u'))
goto eof;
13326 else if (c == -1 || !
ISASCII(c))
goto eof;
13328 int c2 = escaped_control_code(c);
13347 else if (
ISCNTRL(c))
goto eof;
13353 yyerror0(
"Invalid escape character syntax");
13377 switch (c = nextc(p)) {
13381 case '0':
case '1':
case '2':
case '3':
13382 case '4':
case '5':
case '6':
case '7':
13385 if (numlen == 0)
goto eof;
13393 tok_hex(p, &numlen);
13394 if (numlen == 0)
return -1;
13401 if ((c = nextc(p)) !=
'-') {
13411 if ((c = nextc(p)) !=
'-') {
13423 if ((c = nextc(p)) ==
'\\') {
13426 else if (c == -1)
goto eof;
13432 yyerror0(
"Invalid escape character syntax");
13452 while (c = nextc(p),
ISALPHA(c)) {
13476 parser_show_error_line(p, &loc);
13484 int len = parser_precise_mbclen(p, p->
lex.
pcur-1);
13485 if (
len < 0)
return -1;
13493 simple_re_meta(
int c)
13496 case '$':
case '*':
case '+':
case '.':
13497 case '?':
case '^':
case '|':
13498 case ')':
case ']':
case '}':
case '>':
13506 parser_update_heredoc_indent(
struct parser_params *p,
int c)
13516 else if (c ==
'\t') {
13521 else if (c !=
'\n') {
13537 parser_show_error_line(p, &loc);
13543 const char *pos = p->
lex.
pcur;
13545 parser_mixed_error(p, enc1, enc2);
13551 int func,
int term,
int paren,
long *nest,
13555 bool erred =
false;
13557 #define mixed_error(enc1, enc2) \
13558 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
13559 #define mixed_escape(beg, enc1, enc2) \
13560 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
13562 while ((c = nextc(p)) != -1) {
13564 parser_update_heredoc_indent(p, c);
13567 if (paren && c == paren) {
13570 else if (c ==
term) {
13571 if (!nest || !*nest) {
13579 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
13584 else if (c ==
'\\') {
13616 if (c == -1)
return -1;
13622 if (c ==
term && !simple_re_meta(c)) {
13627 if ((c = tokadd_escape(p,
enc)) < 0)
13629 if (*
enc && *
enc != *encp) {
13637 c = read_escape(p, 0,
enc);
13642 else if (c !=
term && !(paren && c == paren)) {
13649 else if (!parser_isascii(p)) {
13654 else if (*
enc != *encp) {
13658 if (tokadd_mbchar(p, c) == -1)
return -1;
13669 else if (*
enc != *encp) {
13688 #define NEW_STRTERM(func, term, paren) \
13689 new_strterm((VALUE)(func), (VALUE)(paren), (VALUE)(term), 0)
13696 if (!ripper_is_node_yylval(content))
13697 content = ripper_new_yylval(p, 0, 0, content);
13708 if (
yylval.val != content)
13713 #define flush_string_content(p, enc) ((void)(enc))
13720 #define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
13721 #define SPECIAL_PUNCT(idx) ( \
13722 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
13723 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
13724 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
13725 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
13726 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
13734 #undef SPECIAL_PUNCT
13747 if ((c = *
ptr) ==
'-') {
13751 else if (is_global_name_punct(c) ||
ISDIGIT(c)) {
13756 if ((c = *
ptr) ==
'@') {
13773 #define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
13774 #define IS_END() IS_lex_state(EXPR_END_ANY)
13775 #define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
13776 #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
13777 #define IS_LABEL_POSSIBLE() (\
13778 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
13780 #define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
13781 #define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
13821 do {c = nextc(p);}
while (
ISSPACE(c));
13835 return parser_string_term(p, func);
13844 int t = parser_peek_variable_name(p);
13850 if (tokadd_string(p, func,
term, paren, "e->
u0.
nest,
13851 &
enc, &base_enc) == -1) {
13854 # define unterminated_literal(mesg) yyerror0(mesg)
13856 # define unterminated_literal(mesg) compile_error(p, mesg)
13891 int c = nextc(p),
term, func = 0, quote = 0;
13900 else if (c ==
'~') {
13920 while ((c = nextc(p)) !=
term) {
13921 if (c == -1 || c ==
'\r' || c ==
'\n') {
13922 yyerror(
NULL, p,
"unterminated here document identifier");
13929 if (!parser_is_identchar(p)) {
13932 pushback(p, indent > 0 ?
'~' :
'-');
13938 int n = parser_precise_mbclen(p, p->
lex.
pcur-1);
13939 if (
n < 0)
return 0;
13941 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
13948 yyerror(
NULL, p,
"too long here document identifier");
13958 here->
quote = quote;
13986 dedent_string(
VALUE string,
int width)
13993 for (
i = 0;
i <
len && col < width;
i++) {
13994 if (
str[
i] ==
' ') {
13997 else if (
str[
i] ==
'\t') {
13999 if (
n > width)
break;
14020 NODE *node, *str_node, *prev_node;
14022 VALUE prev_lit = 0;
14024 if (indent <= 0)
return root;
14026 if (!root)
return root;
14028 prev_node = node = str_node = root;
14032 VALUE lit = str_node->nd_lit;
14034 dedent_string(lit, indent);
14039 else if (!literal_concat0(p, prev_lit, lit)) {
14043 NODE *end = node->nd_end;
14044 node = prev_node->nd_next = node->nd_next;
14050 node->nd_end = end;
14055 while ((node = (prev_node = node)->
nd_next) != 0) {
14058 if ((str_node = node->nd_head) != 0) {
14074 if (indent <= 0)
return array;
14076 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
14096 col = dedent_string(
input, wid);
14102 whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
14111 if (
n < 0)
return FALSE;
14112 if (
n > 0 &&
ptr[
len] !=
'\n') {
14127 case '\0':
case '\004':
case '\032':
return 1;
14132 #define NUM_SUFFIX_R (1<<0)
14133 #define NUM_SUFFIX_I (1<<1)
14134 #define NUM_SUFFIX_ALL 3
14140 const char *lastp = p->
lex.
pcur;
14142 while ((c = nextc(p)) != -1) {
14187 return set_number_literal(p,
v,
type, suffix);
14204 #define dispatch_heredoc_end(p) ((void)0)
14210 int c, func, indent = 0;
14211 const char *eos, *
ptr, *ptr_end;
14222 if ((c = nextc(p)) == -1) {
14246 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
14264 else if (whole_match_p(p, eos,
len, indent)) {
14278 if (ptr_end >
ptr) {
14279 switch (ptr_end[-1]) {
14281 if (--ptr_end ==
ptr || ptr_end[-1] !=
'\r') {
14292 while (
ptr +
i < ptr_end && parser_update_heredoc_indent(p,
ptr[
i]))
14306 if (nextc(p) == -1) {
14312 }
while (!whole_match_p(p, eos,
len, indent));
14318 int t = parser_peek_variable_name(p);
14332 if ((c = tokadd_string(p, func,
'\n', 0,
NULL, &
enc, &base_enc)) == -1) {
14348 tokadd(p, nextc(p));
14354 if ((c = nextc(p)) == -1)
goto error;
14355 }
while (!whole_match_p(p, eos,
len, indent));
14379 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator",
WARN_I(c));
14389 switch (id_type(lhs)) {
14394 yyerror0(
"formal argument cannot be a constant");
14397 yyerror0(
"formal argument cannot be an instance variable");
14400 yyerror0(
"formal argument cannot be a global variable");
14403 yyerror0(
"formal argument cannot be a class variable");
14406 yyerror0(
"formal argument must be local variable");
14410 lhs = dispatch1(param_error, lhs);
14415 shadowing_lvar(p, lhs);
14422 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
14431 if (
len > 5 &&
name[nlen =
len - 5] ==
'-') {
14435 if (
len > 4 &&
name[nlen =
len - 4] ==
'-') {
14471 for (
i = 0;
i <
n; ++
i) {
14483 while (
ptr < ptr_end) {
14494 magic_comment_encoding(
struct parser_params *p,
const char *
name,
const char *val)
14496 if (!comment_at_top(p)) {
14499 parser_set_encode(p, val);
14506 case 't':
case 'T':
14511 case 'f':
case 'F':
14522 parser_set_token_info(
struct parser_params *p,
const char *
name,
const char *val)
14524 int b = parser_get_bool(p,
name, val);
14529 parser_set_compile_option_flag(
struct parser_params *p,
const char *
name,
const char *val)
14538 b = parser_get_bool(p,
name, val);
14547 # if WARN_PAST_SCOPE
14549 parser_set_past_scope(
struct parser_params *p,
const char *
name,
const char *val)
14551 int b = parser_get_bool(p,
name, val);
14552 if (b >= 0) p->past_scope_enabled = b;
14563 {
"coding", magic_comment_encoding, parser_encode_length},
14564 {
"encoding", magic_comment_encoding, parser_encode_length},
14565 {
"frozen_string_literal", parser_set_compile_option_flag},
14566 {
"warn_indent", parser_set_token_info},
14567 # if WARN_PAST_SCOPE
14568 {
"warn_past_scope", parser_set_past_scope},
14572 static const char *
14573 magic_comment_marker(
const char *
str,
long len)
14580 if (
str[
i-1] ==
'*' &&
str[
i-2] ==
'-') {
14581 return str +
i + 1;
14586 if (
i + 1 >=
len)
return 0;
14587 if (
str[
i+1] !=
'-') {
14590 else if (
str[
i-1] !=
'-') {
14594 return str +
i + 2;
14610 const char *beg, *end, *vbeg, *vend;
14611 #define str_copy(_s, _p, _n) ((_s) \
14612 ? (void)(rb_str_resize((_s), (_n)), \
14613 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
14614 : (void)((_s) = STR_NEW((_p), (_n))))
14617 if (!!(beg = magic_comment_marker(
str,
len))) {
14618 if (!(end = magic_comment_marker(beg,
str +
len - beg)))
14622 len = end - beg - 3;
14634 case '\'':
case '"':
case ':':
case ';':
14641 case '\'':
case '"':
case ':':
case ';':
14652 if (!indicator)
return FALSE;
14660 if (*
str ==
'\\') {
14686 for (
i = 0;
i <
n; ++
i) {
14687 if (s[
i] ==
'-') s[
i] =
'_';
14699 }
while (++mc < magic_comments +
numberof(magic_comments));
14710 set_file_encoding(
struct parser_params *p,
const char *
str,
const char *send)
14713 const char *beg =
str;
14717 if (send -
str <= 6)
return;
14719 case 'C':
case 'c':
str += 6;
continue;
14720 case 'O':
case 'o':
str += 5;
continue;
14721 case 'D':
case 'd':
str += 4;
continue;
14722 case 'I':
case 'i':
str += 3;
continue;
14723 case 'N':
case 'n':
str += 2;
continue;
14724 case 'G':
case 'g':
str += 1;
continue;
14725 case '=':
case ':':
14738 if (++
str >= send)
return;
14741 if (*
str !=
'=' && *
str !=
':')
return;
14747 s =
rb_str_new(beg, parser_encode_length(p, beg,
str - beg));
14763 (
unsigned char)p->
lex.
pcur[0] == 0xbb &&
14764 (
unsigned char)p->
lex.
pcur[1] == 0xbf) {
14779 #define ambiguous_operator(tok, op, syn) ( \
14780 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
14781 rb_warning0("even though it seems like "syn""))
14783 #define ambiguous_operator(tok, op, syn) \
14784 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
14786 #define warn_balanced(tok, op, syn) ((void) \
14787 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
14788 space_seen && !ISSPACE(c) && \
14789 (ambiguous_operator(tok, op, syn), 0)), \
14790 (enum yytokentype)(tok))
14796 char *point = &
str[seen_point];
14797 size_t fraclen =
len-seen_point-1;
14798 memmove(point, point+1, fraclen+1);
14806 yyerror0(
"numeric literal without digits");
14807 if (
peek(p,
'_')) nextc(p);
14809 return set_integer_literal(p,
INT2FIX(0), 0);
14815 int is_float, seen_point, seen_e, nondigit;
14818 is_float = seen_point = seen_e = nondigit = 0;
14821 if (c ==
'-' || c ==
'+') {
14828 if (c ==
'x' || c ==
'X') {
14834 if (nondigit)
break;
14841 }
while ((c = nextc(p)) != -1);
14845 if (
toklen(p) == start) {
14846 return no_digits(p);
14848 else if (nondigit)
goto trailing_uc;
14852 if (c ==
'b' || c ==
'B') {
14855 if (c ==
'0' || c ==
'1') {
14858 if (nondigit)
break;
14862 if (c !=
'0' && c !=
'1')
break;
14865 }
while ((c = nextc(p)) != -1);
14869 if (
toklen(p) == start) {
14870 return no_digits(p);
14872 else if (nondigit)
goto trailing_uc;
14876 if (c ==
'd' || c ==
'D') {
14882 if (nondigit)
break;
14889 }
while ((c = nextc(p)) != -1);
14893 if (
toklen(p) == start) {
14894 return no_digits(p);
14896 else if (nondigit)
goto trailing_uc;
14904 if (c ==
'o' || c ==
'O') {
14907 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
14908 return no_digits(p);
14911 if (c >=
'0' && c <=
'7') {
14916 if (nondigit)
break;
14920 if (c < '0' || c >
'9')
break;
14921 if (c >
'7')
goto invalid_octal;
14924 }
while ((c = nextc(p)) != -1);
14925 if (
toklen(p) > start) {
14928 if (nondigit)
goto trailing_uc;
14937 if (c >
'7' && c <=
'9') {
14941 else if (c ==
'.' || c ==
'e' || c ==
'E') {
14947 return set_integer_literal(p,
INT2FIX(0), suffix);
14953 case '0':
case '1':
case '2':
case '3':
case '4':
14954 case '5':
case '6':
case '7':
case '8':
case '9':
14960 if (nondigit)
goto trailing_uc;
14961 if (seen_point || seen_e) {
14966 if (c0 == -1 || !
ISDIGIT(c0)) {
14991 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
14996 tokadd(p, nondigit);
15000 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
15004 if (nondigit)
goto decode_num;
15021 parser_show_error_line(p, &loc);
15031 v = parse_rational(p,
tok(p),
toklen(p), seen_point);
15041 return set_number_literal(p,
v,
type, suffix);
15065 int c2 = escaped_control_code(c);
15077 if (!parser_isascii(p)) {
15078 if (tokadd_mbchar(p, c) == -1)
return 0;
15083 const char *start = p->
lex.
pcur - 1, *
ptr = start;
15085 int n = parser_precise_mbclen(p,
ptr);
15086 if (
n < 0)
return -1;
15089 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
15090 " a conditional operator, put a space after `?'",
15095 else if (c ==
'\\') {
15096 if (
peek(p,
'u')) {
15099 tokadd_utf8(p, &enc, -1, 0, 0);
15103 if (tokadd_mbchar(p, c) == -1)
return 0;
15106 c = read_escape(p, 0, &enc);
15124 const char *ptok = p->
lex.
pcur;
15132 if (c == -1 || !
ISALNUM(c)) {
15139 yyerror0(
"unknown type of %string");
15143 if (c == -1 ||
term == -1) {
15144 compile_error(p,
"unterminated quoted string meets end of file");
15194 yyerror0(
"unknown type of %string");
15198 if ((c = nextc(p)) ==
'=') {
15215 if (tokadd_mbchar(p, c) == -1)
return -1;
15217 }
while (parser_is_identchar(p));
15238 const unsigned long nth_ref_max =
15239 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
15243 if (overflow ||
n > nth_ref_max) {
15266 if (parser_is_identchar(p)) {
15298 if (parser_is_identchar(p)) {
15299 if (tokadd_mbchar(p, c) == -1)
return 0;
15322 case '1':
case '2':
case '3':
15323 case '4':
case '5':
case '6':
15324 case '7':
case '8':
case '9':
15329 }
while (c != -1 &&
ISDIGIT(c));
15337 if (!parser_is_identchar(p)) {
15340 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
15344 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
15346 parser_show_error_line(p, &loc);
15355 if (tokadd_ident(p, c))
return 0;
15357 tokenize_ident(p, last_state);
15365 if (
n < 0)
return false;
15378 while (
n > args->
pos) {
15390 register int c = nextc(p);
15402 if (c == -1 || !parser_is_identchar(p)) {
15405 if (result ==
tIVAR) {
15406 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
15409 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
15411 parser_show_error_line(p, &loc);
15419 if (result ==
tIVAR) {
15420 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
15423 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
15425 parser_show_error_line(p, &loc);
15431 if (tokadd_ident(p, c))
return 0;
15432 tokenize_ident(p, last_state);
15446 if (tokadd_mbchar(p, c) == -1)
return 0;
15448 }
while (parser_is_identchar(p));
15449 if ((c ==
'!' || c ==
'?') && !
peek(p,
'=')) {
15501 if (kw->
id[0] != kw->
id[1])
15516 else if (p->
lex.
state == EXPR_FNAME) {
15523 ident = tokenize_ident(p, last_state);
15527 lvar_defined(p, ident)) {
15537 int space_seen = 0;
15541 int fallthru =
FALSE;
15561 switch (c = nextc(p)) {
15569 case ' ':
case '\t':
case '\f':
case '\r':
15573 while ((c = nextc(p))) {
15575 case ' ':
case '\t':
case '\f':
case '\r':
15592 if (comment_at_top(p)) {
15602 c = (
IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
15610 goto normal_newline;
15615 switch (c = nextc(p)) {
15616 case ' ':
case '\t':
case '\f':
case '\r':
15627 if (
peek(p,
'.') == (c ==
'&')) {
15649 goto normal_newline;
15658 if ((c = nextc(p)) ==
'*') {
15659 if ((c = nextc(p)) ==
'=') {
15666 rb_warning0(
"`**' interpreted as argument prefix");
15684 rb_warning0(
"`*' interpreted as argument prefix");
15720 if (word_match_p(p,
"begin", 5)) {
15721 int first_p =
TRUE;
15736 if (c ==
'=' && word_match_p(p,
"end", 3)) {
15748 if ((c = nextc(p)) ==
'=') {
15749 if ((c = nextc(p)) ==
'=') {
15758 else if (c ==
'>') {
15770 int token = heredoc_identifier(p);
15782 if ((c = nextc(p)) ==
'>') {
15789 if ((c = nextc(p)) ==
'=') {
15802 if ((c = nextc(p)) ==
'=') {
15806 if ((c = nextc(p)) ==
'=') {
15845 return parse_qmark(p, space_seen);
15848 if ((c = nextc(p)) ==
'&') {
15850 if ((c = nextc(p)) ==
'=') {
15858 else if (c ==
'=') {
15863 else if (c ==
'.') {
15872 !(c ==
'\'' || c ==
'"' ||
15874 rb_warning0(
"`&' interpreted as argument prefix");
15888 if ((c = nextc(p)) ==
'|') {
15890 if ((c = nextc(p)) ==
'=') {
15931 return parse_numeric(p,
'+');
15973 if ((c = nextc(p)) ==
'.') {
15974 if ((c = nextc(p)) ==
'.') {
15976 rb_warn0(
"... at EOL, should be parenthesized?");
15986 parse_numeric(p,
'.');
15988 yyerror0(
"unexpected fraction part after numeric literal");
15991 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
16002 case '0':
case '1':
case '2':
case '3':
case '4':
16003 case '5':
case '6':
case '7':
case '8':
case '9':
16004 return parse_numeric(p, c);
16065 if ((c = nextc(p)) ==
'=') {
16072 arg_ambiguous(p,
'/');
16080 if ((c = nextc(p)) ==
'=') {
16100 if ((c = nextc(p)) !=
'@') {
16114 else if (!space_seen) {
16121 rb_warning0(
"parentheses after method name is interpreted as "
16122 "an argument list, not a decomposed argument");
16133 if ((c = nextc(p)) ==
']') {
16135 if ((c = nextc(p)) ==
'=') {
16187 if (c ==
' ')
return tSP;
16193 return parse_percent(p, space_seen, last_state);
16196 return parse_gvar(p, last_state);
16199 return parse_atmark(p, last_state);
16202 if (
was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
16217 if (!parser_is_identchar(p)) {
16218 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
16227 return parse_ident(p, c, cmd_state);
16237 t = parser_yylex(p);
16252 #define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
16261 nd_set_loc(
n, loc);
16276 nodetype(
NODE *node)
16282 nodeline(
NODE *node)
16288 newline_node(
NODE *node)
16291 node = remove_begin(node);
16320 NODE *end, *
h = head, *nd;
16322 if (tail == 0)
return head;
16324 if (
h == 0)
return tail;
16332 parser_warning(p,
h,
"unused literal ignored");
16352 parser_warning(p, tail,
"statement not reached");
16362 tail->nd_end = tail;
16364 end->nd_next = tail;
16365 h->nd_end = tail->nd_end;
16377 if (
list->nd_next) {
16384 list->nd_alen += 1;
16386 list->nd_next->nd_end =
last->nd_next;
16395 list_concat(
NODE *head,
NODE *tail)
16399 if (head->nd_next) {
16400 last = head->nd_next->nd_end;
16406 head->nd_alen += tail->nd_alen;
16407 last->nd_next = tail;
16408 if (tail->nd_next) {
16409 head->nd_next->nd_end = tail->nd_next->nd_end;
16412 head->nd_next->nd_end = tail;
16423 if (
NIL_P(tail))
return 1;
16425 compile_error(p,
"string literal encodings differ (%s / %s)",
16444 if (!head)
return tail;
16445 if (!tail)
return head;
16451 head = list_append(p, node, head);
16459 return list_append(p, head, tail);
16466 if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
16469 lit = headlast->nd_lit;
16472 lit = head->nd_lit;
16475 if (!literal_concat0(p, lit, tail->nd_lit)) {
16477 rb_discard_node(p, head);
16478 rb_discard_node(p, tail);
16481 rb_discard_node(p, tail);
16484 list_append(p, head, tail);
16490 if (!literal_concat0(p, head->nd_lit, tail->nd_lit))
16492 tail->nd_lit = head->nd_lit;
16493 rb_discard_node(p, head);
16496 else if (
NIL_P(tail->nd_lit)) {
16498 head->nd_alen += tail->nd_alen - 1;
16499 head->nd_next->nd_end->nd_next = tail->nd_next;
16500 head->nd_next->nd_end = tail->nd_next->nd_end;
16501 rb_discard_node(p, tail);
16503 else if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
16505 lit = headlast->nd_lit;
16506 if (!literal_concat0(p, lit, tail->nd_lit))
16508 tail->nd_lit =
Qnil;
16521 list_append(p, head, tail);
16533 node = list_append(p, dstr, node);
16586 if (block) block_dup_check(p, args, block);
16587 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
16588 if (block) ret = method_add_block(p, ret, block, loc);
16593 #define nd_once_body(node) (nd_type(node) == NODE_ONCE ? (node)->nd_body : node)
16598 int line = op_loc->beg_pos.lineno;
16613 const VALUE lit =
n->nd_lit;
16615 match->nd_args = reg_named_capture_assign(p, lit, loc);
16640 # if WARN_PAST_SCOPE
16646 if (vtable_included(past,
id))
return 1;
16655 #define WARN_LOCATION(type) do { \
16656 if (p->warn_location) { \
16658 VALUE file = rb_source_location(&line); \
16659 rb_warn3(type" in eval may not return location in binding;" \
16660 " use Binding#source_location instead\n" \
16661 "%"PRIsWARN":%d: warning: in `%"PRIsWARN"'", \
16662 file, WARN_I(line), rb_id2str(rb_frame_this_func())); \
16675 "%s:%d: %s block here",
16677 outer ?
"outer" :
"inner");
16678 parser_show_error_line(p, &
used->nd_loc);
16719 switch (id_type(
id)) {
16721 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
16731 if (local_id_ref(p,
id, &vidp)) {
16742 if (numparam_nested_p(p))
return 0;
16748 # if WARN_PAST_SCOPE
16769 opt_arg_append(
NODE *opt_list,
NODE *opt)
16771 NODE *opts = opt_list;
16774 while (opts->nd_next) {
16775 opts = opts->nd_next;
16778 opts->nd_next = opt;
16784 kwd_append(
NODE *kwlist,
NODE *kw)
16787 NODE *kws = kwlist;
16789 while (kws->nd_next) {
16790 kws = kws->nd_next;
16814 return list_append(p, symbols, symbol);
16833 nd_set_loc(node, loc);
16844 nd_set_loc(node, loc);
16846 if (!
NIL_P(node->nd_lit)) reg_fragment_check(p, node->nd_lit, options);
16850 if (reg_fragment_check(p, tail, options) &&
prev && !
NIL_P(
prev->nd_lit)) {
16852 if (!literal_concat0(p, lit, tail)) {
16857 rb_discard_node(p,
list->nd_head);
16858 rb_discard_node(p,
list);
16869 if (!node->nd_next) {
16901 nd_set_loc(node, loc);
16905 nd_set_loc(node, loc);
16922 if (lit ==
Qundef)
return;
16932 if (!
NIL_P(line)) {
16933 rb_warning1(
"duplicated `when' clause with line %d is ignored",
16950 if (dyna_in_block(p)) {
16953 if (local_id(p,
id))
return 1;
16967 if (ripper_is_node_yylval(re)) {
16969 re =
RNODE(re)->nd_rval;
16971 if (ripper_is_node_yylval(opt)) {
16972 options = (
int)
RNODE(opt)->nd_tag;
16973 opt =
RNODE(opt)->nd_rval;
16978 return dispatch2(regexp_literal, re, opt);
16984 static const char rb_parser_lex_state_names[][8] = {
16985 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
16986 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
16987 "LABEL",
"LABELED",
"FITEM",
16994 unsigned int mask = 1;
16995 static const char none[] =
"NONE";
16998 if ((
unsigned)state &
mask) {
17032 append_lex_state_name(from, mesg);
17034 append_lex_state_name(to, mesg);
17061 const char *
name,
int line)
17064 append_bitstack_value(stack, mesg);
17082 append_lex_state_name(p->
lex.
state, mesg);
17103 yylloc->beg_pos.lineno = sourceline;
17104 yylloc->beg_pos.column = beg_pos;
17105 yylloc->end_pos.lineno = sourceline;
17106 yylloc->end_pos.column = end_pos;
17142 v = valp->
node->nd_rval;
17149 v = valp->
node->nd_lit;
17177 if (!
id)
return -1;
17180 *
err =
"Can't change the value of self";
17183 *
err =
"Can't assign to nil";
17186 *
err =
"Can't assign to true";
17189 *
err =
"Can't assign to false";
17192 *
err =
"Can't assign to __FILE__";
17195 *
err =
"Can't assign to __LINE__";
17198 *
err =
"Can't assign to __ENCODING__";
17201 switch (id_type(
id)) {
17203 if (dyna_in_block(p)) {
17216 if (!local_id(p,
id)) local_var(p,
id);
17224 *
err =
"dynamic constant assignment";
17237 const char *
err = 0;
17255 const char *
err = 0;
17257 if (
err) lhs = assign_error(p, lhs);
17263 is_private_local_id(
ID name)
17276 if (is_private_local_id(
name))
return 1;
17277 if (dyna_in_block(p)) {
17278 if (dvar_curr(p,
name)) {
17279 yyerror0(
"duplicated argument name");
17281 else if (dvar_defined(p,
name) || local_id(p,
name)) {
17290 if (local_id(p,
name)) {
17291 yyerror0(
"duplicated argument name");
17300 shadowing_lvar_0(p,
name);
17313 if (!shadowing_lvar_0(p,
name))
return;
17347 compile_error(p,
"Can't set variable $%c", (
int)node->nd_nth);
17358 return list_append(p, node1, node2);
17360 node1->nd_head = arg_append(p, node1->nd_head, node2, loc);
17364 node1->nd_body = list_append(p,
NEW_LIST(node1->nd_body, &node1->nd_body->
nd_loc), node2);
17370 node1->nd_body = list_append(p, node1->nd_body, node2);
17380 if (!node2)
return node1;
17383 if (node1->nd_head)
17384 node1->nd_head = arg_concat(p, node1->nd_head, node2, loc);
17386 node1->nd_head =
NEW_LIST(node2, loc);
17390 node1->nd_body = list_concat(
NEW_LIST(node1->nd_body, loc), node2);
17396 node1->nd_body = list_concat(node1->nd_body, node2);
17406 if ((n1 = splat_array(
args)) != 0) {
17407 return list_append(p, n1, last_arg);
17409 return arg_append(p,
args, last_arg, loc);
17417 return list_concat(n1, rest_arg);
17419 return arg_concat(p,
args, rest_arg, loc);
17423 splat_array(
NODE* node)
17437 if (local_id_ref(p, rhs->nd_vid, &vidp)) {
17443 if (dvar_defined_ref(p, rhs->nd_vid, &vidp)) {
17449 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
17450 mark_lvar_used(p, rhs->nd_head);
17460 if (!lhs)
return 0;
17471 lhs->nd_value = rhs;
17472 nd_set_loc(lhs, loc);
17476 lhs->nd_args = arg_append(p, lhs->nd_args, rhs, loc);
17477 nd_set_loc(lhs, loc);
17491 NODE *void_node = 0, *vn;
17503 return void_node ? void_node : node;
17510 if (node->nd_body->nd_body) {
17514 return void_node ? void_node : node;
17517 while (node->nd_next) {
17518 node = node->nd_next;
17520 node = node->nd_head;
17524 node = node->nd_body;
17529 if (!node->nd_body) {
17532 else if (!node->nd_else) {
17535 vn = value_expr_check(p, node->nd_body);
17536 if (!vn)
return NULL;
17537 if (!void_node) void_node = vn;
17538 node = node->nd_else;
17543 node = node->nd_1st;
17550 mark_lvar_used(p, node);
17564 NODE *void_node = value_expr_check(p, node);
17575 const char *useless = 0;
17582 switch (node->nd_mid) {
17613 useless =
"a variable";
17616 useless =
"a constant";
17622 useless =
"a literal";
17647 useless =
"defined?";
17659 NODE *
const n = node;
17661 if (!node)
return n;
17664 while (node->nd_next) {
17665 void_expr(p, node->nd_head);
17666 node = node->nd_next;
17672 remove_begin(
NODE *node)
17674 NODE **
n = &node, *n1 = node;
17676 *
n = n1 = n1->nd_body;
17682 remove_begin_all(
NODE *node)
17684 NODE **
n = &node, *n1 = node;
17686 *
n = n1 = n1->nd_body;
17694 NODE *node = *body;
17700 #define subnodes(n1, n2) \
17701 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
17702 (!node->n2) ? (body = &node->n1, 1) : \
17703 (reduce_nodes(p, &node->n1), body = &node->n2, 1))
17713 *body = node = node->nd_stts;
17717 *body = node = node->nd_body;
17721 body = &node->nd_end->nd_head;
17728 body = &node->nd_body;
17737 if (node->nd_else) {
17738 body = &node->nd_resq;
17754 is_static_content(
NODE *node)
17756 if (!node)
return 1;
17759 if (!(node = node->nd_head))
break;
17762 if (!is_static_content(node->nd_head))
return 0;
17763 }
while ((node = node->nd_next) != 0);
17793 if (!node->nd_value)
return 1;
17794 if (is_static_content(node->nd_value)) {
17796 parser_warn(p, node->nd_value,
"found `= literal' in conditional, should be ==");
17807 #define SWITCH_BY_COND_TYPE(t, w, arg) \
17809 case COND_IN_OP: break; \
17810 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
17811 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
17821 if (node == 0)
return 0;
17826 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
17835 if (node == 0)
return 0;
17837 assign_in_cond(p, node);
17890 if (node == 0)
return 0;
17897 if (node == 0)
return 0;
17904 if (!
cc)
return right;
17906 return newline_node(
NEW_IF(
cc, left, right, loc));
17912 if (!
cc)
return right;
17914 return newline_node(
NEW_UNLESS(
cc, left, right, loc));
17925 NODE *node = left, *second;
17930 nd_set_line(node->nd_2nd, op_loc->beg_pos.lineno);
17951 no_blockarg(p, node);
17953 if (node->nd_next == 0) {
17954 node = node->nd_head;
17967 if (node) no_blockarg(p, node);
18011 arg_blk_pass(
NODE *node1,
NODE *node2)
18014 if (!node1)
return node2;
18015 node2->nd_head = node1;
18026 if (
args->pre_args_num)
return false;
18027 if (
args->post_args_num)
return false;
18028 if (
args->rest_arg)
return false;
18029 if (
args->opt_args)
return false;
18030 if (
args->block_arg)
return false;
18031 if (
args->kw_args)
return false;
18032 if (
args->kw_rest_arg)
return false;
18043 args->
pre_init = pre_args ? pre_args->nd_next : 0;
18046 args->
post_init = post_args ? post_args->nd_next : 0;
18056 nd_set_loc(tail, loc);
18068 rb_imemo_tmpbuf_set_ptr(tmpbuf, args);
18069 args->
imemo = tmpbuf;
18084 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
18086 NODE *kwn = kw_args;
18088 vtable_pop(vtargs, !!block + !!kw_rest_arg);
18089 required_kw_vars = kw_vars = &vtargs->
tbl[vtargs->
pos];
18093 --required_kw_vars;
18094 kwn = kwn->nd_next;
18097 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
18098 ID vid = kwn->nd_body->nd_vid;
18100 *required_kw_vars++ = vid;
18107 arg_var(p, kw_bits);
18108 if (kw_rest_arg) arg_var(p, kw_rest_arg);
18109 if (block) arg_var(p, block);
18114 else if (kw_rest_arg ==
idNil) {
18117 else if (kw_rest_arg) {
18131 args = new_args_tail(p, 0, 0, 0, 0);
18132 nd_set_loc(args, &loc);
18134 args->nd_ainfo->pre_args_num = max_numparam;
18144 aryptn->nd_pconst = constant;
18165 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
18167 apinfo->
imemo = tmpbuf;
18193 hshptn->nd_pconst = constant;
18201 NODE *node, *kw_rest_arg_node;
18203 if (kw_rest_arg ==
idNil) {
18206 else if (kw_rest_arg) {
18207 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
18210 kw_rest_arg_node =
NULL;
18225 rb_warn0L(
nd_line(node),
"Pattern matching is experimental, and the behavior may change in future versions of Ruby!");
18241 nd_set_loc(node, loc);
18244 lit = node->nd_lit;
18247 nd_set_loc(node, loc);
18262 node->nd_next->nd_end = node->nd_next;
18263 node->nd_next->nd_next = 0;
18265 list_concat(*result, node);
18277 while (hash && hash->nd_head && hash->nd_next) {
18278 NODE *head = hash->nd_head;
18279 NODE *value = hash->nd_next;
18280 NODE *next = value->nd_next;
18284 st_lookup(literal_keys, (
key = head->nd_lit), &data)) {
18286 "key %+"PRIsVALUE" is duplicated and overwritten on line %d",
18287 head->nd_lit,
nd_line(head));
18288 head = ((
NODE *)data)->nd_next;
18289 head->nd_head = block_append(p, head->nd_head, value->nd_head);
18299 if (!result) result = hash;
18300 else list_concat(result, hash);
18309 if (hash) hash = remove_duplicate_keys(p, hash);
18317 if (is_private_local_id(
id)) {
18321 yyerror1(loc,
"duplicated variable name");
18335 yyerror1(loc,
"duplicated key name");
18356 ID vid = lhs->nd_vid;
18359 lhs->nd_value = rhs;
18360 nd_set_loc(lhs, loc);
18363 switch (id_type(vid)) {
18367 asgn->nd_aid = vid;
18371 else if (op ==
tANDOP) {
18372 lhs->nd_value = rhs;
18373 nd_set_loc(lhs, loc);
18379 nd_set_loc(asgn, loc);
18399 args = arg_concat(p, args, rhs, loc);
18436 yyerror1(loc,
"dynamic constant assignment");
18445 path = dispatch1(assign_error,
path);
18454 a = dispatch1(assign_error, a);
18462 return ripper_new_yylval(p,
get_id(a), dispatch1(var_field, a), 0);
18470 NODE *result = head;
18472 NODE *tmp = rescue_else ? rescue_else : rescue;
18475 result =
NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
18478 else if (rescue_else) {
18479 result = block_append(p, result, rescue_else);
18484 fixpos(result, head);
18494 if (!local->
used)
return;
18502 for (
int i = 0;
i <
cnt; ++
i) {
18504 if (is_private_local_id(
v[
i]))
continue;
18523 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
18530 # if WARN_PAST_SCOPE
18543 warn_unused_var(p, p->
lvtbl);
18546 # if WARN_PAST_SCOPE
18547 while (p->
lvtbl->past) {
18565 int cnt_args = vtable_size(p->
lvtbl->
args);
18566 int cnt_vars = vtable_size(p->
lvtbl->
vars);
18567 int cnt = cnt_args + cnt_vars;
18571 if (
cnt <= 0)
return 0;
18575 for (
i = 0, j = cnt_args+1;
i < cnt_vars; ++
i) {
18577 if (!vtable_included(p->
lvtbl->
args,
id)) {
18607 rb_warn1(
"`_%d' is reserved for numbered parameter; consider another name",
18614 numparam_name(p,
id);
18621 numparam_name(p,
id);
18640 if (used) used = used->
prev;
18646 else if (vtable_included(args,
id)) {
18650 int i = vtable_included(
vars,
id);
18651 if (
i && used && vidrefp) *vidrefp = &used->
tbl[
i-1];
18659 return local_id_ref(p,
id,
NULL);
18704 static const struct vtable *
18718 struct vtable *tmp = *vtblp;
18719 *vtblp = tmp->
prev;
18720 # if WARN_PAST_SCOPE
18721 if (p->past_scope_enabled) {
18723 p->
lvtbl->past = tmp;
18736 warn_unused_var(p, p->
lvtbl);
18775 if (vtable_included(args,
id)) {
18778 if ((
i = vtable_included(
vars,
id)) != 0) {
18779 if (used && vidrefp) *vidrefp = &used->
tbl[
i-1];
18784 if (!vidrefp) used = 0;
18785 if (used) used = used->
prev;
18798 return dvar_defined_ref(p,
id,
NULL);
18804 return (vtable_included(p->
lvtbl->
args,
id) ||
18812 "regexp encoding option '%c' differs from source encoding '%s'",
18858 if (c) reg_fragment_enc_error(p,
str, c);
18865 reg_fragment_setenc(p,
str, options);
18884 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
18890 const char *s = (
const char *)
name;
18902 succ =
arg->succ_block;
18904 succ = block_append(p, succ, node);
18905 arg->succ_block = succ;
18916 arg.succ_block = 0;
18920 if (!
arg.succ_block)
return 0;
18921 return arg.succ_block->nd_next;
18927 reg_fragment_setenc(p,
str, options);
18944 re = parser_reg_compile(p,
str, options);
18961 if (c) reg_fragment_enc_error(p,
str, c);
18994 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
18995 const YYLTYPE *
const LOC = &default_location;
19001 node = block_append(p, node, print);
19011 node = block_append(p, split, node);
19016 node = block_append(p, chomp, node);
19036 const ID max_id = RB_ID_SERIAL_MAX & ~0xffff;
19052 p->delayed.token =
Qnil;
19054 p->parsing_thread =
Qnil;
19064 #define parser_mark ripper_parser_mark
19065 #define parser_free ripper_parser_free
19069 parser_mark(
void *
ptr)
19099 parser_free(
void *
ptr)
19107 for (local = p->
lvtbl; local; local =
prev) {
19123 parser_memsize(
const void *
ptr)
19127 size_t size =
sizeof(*p);
19130 for (local = p->
lvtbl; local; local = local->
prev) {
19131 size +=
sizeof(*local);
19152 #undef rb_reserved_word
19157 return reserved_word(
str,
len);
19165 &parser_data_type, p);
19166 parser_initialize(p);
19183 #define rb_parser_end_seen_p ripper_parser_end_seen_p
19184 #define rb_parser_encoding ripper_parser_encoding
19185 #define rb_parser_get_yydebug ripper_parser_get_yydebug
19186 #define rb_parser_set_yydebug ripper_parser_set_yydebug
19187 #define rb_parser_get_debug_output ripper_parser_get_debug_output
19188 #define rb_parser_set_debug_output ripper_parser_set_debug_output
19189 static VALUE ripper_parser_end_seen_p(
VALUE vparser);
19190 static VALUE ripper_parser_encoding(
VALUE vparser);
19191 static VALUE ripper_parser_get_yydebug(
VALUE self);
19193 static VALUE ripper_parser_get_debug_output(
VALUE self);
19194 static VALUE ripper_parser_set_debug_output(
VALUE self,
VALUE output);
19203 ripper_error_p(
VALUE vparser)
19250 rb_parser_get_yydebug(
VALUE self)
19307 #define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
19310 #define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
19311 #define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
19312 (new)->cnt = (cnt), (ptr))
19342 if (
n->ptr ==
ptr) {
19344 if (
n->cnt)
n->cnt =
cnt;
19347 }
while ((
n =
n->next) !=
NULL);
19359 while ((
n = *prev) !=
NULL) {
19360 if (
n->ptr ==
ptr) {
19405 count_char(
const char *
str,
int c)
19408 while (
str[
n] == c) ++
n;
19422 if (*yystr ==
'"') {
19423 size_t yyn = 0, bquote = 0;
19424 const char *yyp = yystr;
19430 bquote = count_char(yyp+1,
'`') + 1;
19431 if (yyres)
memcpy(&yyres[yyn], yyp, bquote);
19439 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
19440 if (yyres)
memcpy(yyres + yyn, yyp, bquote);
19446 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
19447 if (yyres)
memcpy(yyres + yyn, yyp, 3);
19452 goto do_not_strip_quotes;
19455 goto do_not_strip_quotes;
19458 if (*++yyp !=
'\\')
19459 goto do_not_strip_quotes;
19475 do_not_strip_quotes: ;
19478 if (!yyres)
return strlen(yystr);
19480 return (
YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
19485 #ifdef RIPPER_DEBUG
19490 if (x ==
Qfalse)
return x;
19491 if (x ==
Qtrue)
return x;
19492 if (x ==
Qnil)
return x;
19510 x = ((
NODE *)x)->nd_rval;
19524 #define validate(x) ((x) = get_value(x))
19553 return rb_funcall(p->value, mid, 3, a, b, c);
19563 return rb_funcall(p->value, mid, 4, a, b, c, d);
19574 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
19587 return rb_funcall(p->value, mid, 7, a, b, c, d, e,
f, g);
19596 if (
nd_type(nd) != NODE_RIPPER)
return 0;
19601 ripper_get_value(
VALUE v)
19608 return nd->nd_rval;
19636 "gets returned %"PRIsVALUE" (expected String or nil)",
19653 &parser_data_type, p);
19658 #define ripper_initialized_p(r) ((r)->lex.input != 0)
19679 p->
lex.
gets = ripper_lex_io_get;
19682 p->
lex.
gets = ripper_lex_get_generic;
19690 if (
NIL_P(fname)) {
19698 parser_initialize(p);
19708 ripper_parse0(
VALUE parser_v)
19715 ripper_yyparse((
void*)p);
19722 ripper_ensure(
VALUE parser_v)
19727 p->parsing_thread =
Qnil;
19738 ripper_parse(
VALUE self)
19743 if (!ripper_initialized_p(p)) {
19746 if (!
NIL_P(p->parsing_thread)) {
19753 rb_ensure(ripper_parse0,
self, ripper_ensure,
self);
19766 ripper_column(
VALUE self)
19772 if (!ripper_initialized_p(p)) {
19775 if (
NIL_P(p->parsing_thread))
return Qnil;
19787 ripper_filename(
VALUE self)
19792 if (!ripper_initialized_p(p)) {
19806 ripper_lineno(
VALUE self)
19811 if (!ripper_initialized_p(p)) {
19814 if (
NIL_P(p->parsing_thread))
return Qnil;
19825 ripper_state(
VALUE self)
19830 if (!ripper_initialized_p(p)) {
19833 if (
NIL_P(p->parsing_thread))
return Qnil;
19844 ripper_token(
VALUE self)
19850 if (!ripper_initialized_p(p)) {
19853 if (
NIL_P(p->parsing_thread))
return Qnil;
19859 #ifdef RIPPER_DEBUG
19894 ripper_init_eventids1();
19895 ripper_init_eventids2();
19907 InitVM_ripper(
void)
19929 #ifdef RIPPER_DEBUG
19940 <% @exprs.each
do |expr, desc| -%>
19944 ripper_init_eventids1_table(Ripper);
19945 ripper_init_eventids2_table(Ripper);