2 /* static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; */
3 /* static char nhsccsid[] = "@(#)yaccpar 1.9.0-nh (aNetHack) 12/03/2015"; */
8 #define YYSUBMINOR "0-nh"
10 #define yyclearin (yychar=(-1))
11 #define yyerrok (yyerrflag=0)
12 #define YYRECOVERING (yyerrflag!=0)
14 /* aNetHack 0.0.1 lev_comp.y $ANH-Date: 1455747019 2016/02/17 22:10:19 $ $ANH-Branch: aNetHack-3.6.0 $:$ANH-Revision: 1.22 $ */
15 /* Copyright (c) 1989 by Jean-Christophe Collet */
16 /* aNetHack may be freely redistributed. See license for details. */
19 * This file contains the Level Compiler code
20 * It may handle special mazes & special room-levels
23 /* In case we're using bison in AIX. This definition must be
24 * placed before any other C-language construct in the file
25 * excluding comments and preprocessor directives (thanks IBM
26 * for this wonderful feature...).
28 * Note: some cpps barf on this 'undefined control' (#pragma).
29 * Addition of the leading space seems to prevent barfage for now,
30 * and AIX will still see the directive.
33 #pragma alloca /* keep leading space! */
36 #define SPEC_LEV /* for USE_OLDARGS (sp_lev.h) */
41 /* many types of things are put in chars for transference to aNetHack.
42 * since some systems will use signed chars, limit everybody to the
43 * same number for portability.
45 #define MAX_OF_TYPE 128
47 #define MAX_NESTED_IFS 20
48 #define MAX_SWITCH_CASES 20
51 (type *) memset((genericptr_t) alloc(sizeof (type)), 0, sizeof (type))
52 #define NewTab(type, size) (type **) alloc(sizeof (type *) * size)
53 #define Free(ptr) free((genericptr_t) ptr)
55 extern void VDECL(lc_error
, (const char *, ...));
56 extern void VDECL(lc_warning
, (const char *, ...));
57 extern void FDECL(yyerror
, (const char *));
58 extern void FDECL(yywarning
, (const char *));
59 extern int NDECL(yylex
);
62 extern int FDECL(get_floor_type
, (CHAR_P
));
63 extern int FDECL(get_room_type
, (char *));
64 extern int FDECL(get_trap_type
, (char *));
65 extern int FDECL(get_monster_id
, (char *,CHAR_P
));
66 extern int FDECL(get_object_id
, (char *,CHAR_P
));
67 extern boolean
FDECL(check_monster_char
, (CHAR_P
));
68 extern boolean
FDECL(check_object_char
, (CHAR_P
));
69 extern char FDECL(what_map_char
, (CHAR_P
));
70 extern void FDECL(scan_map
, (char *, sp_lev
*));
71 extern void FDECL(add_opcode
, (sp_lev
*, int, genericptr_t
));
72 extern genericptr_t
FDECL(get_last_opcode_data1
, (sp_lev
*, int));
73 extern genericptr_t
FDECL(get_last_opcode_data2
, (sp_lev
*, int, int));
74 extern boolean
FDECL(check_subrooms
, (sp_lev
*));
75 extern boolean
FDECL(write_level_file
, (char *,sp_lev
*));
76 extern struct opvar
*FDECL(set_opvar_int
, (struct opvar
*, long));
77 extern void VDECL(add_opvars
, (sp_lev
*, const char *, ...));
78 extern void FDECL(start_level_def
, (sp_lev
* *, char *));
80 extern struct lc_funcdefs
*FDECL(funcdef_new
, (long,char *));
81 extern void FDECL(funcdef_free_all
, (struct lc_funcdefs
*));
82 extern struct lc_funcdefs
*FDECL(funcdef_defined
, (struct lc_funcdefs
*,
84 extern char *FDECL(funcdef_paramtypes
, (struct lc_funcdefs
*));
85 extern char *FDECL(decode_parm_str
, (char *));
87 extern struct lc_vardefs
*FDECL(vardef_new
, (long,char *));
88 extern void FDECL(vardef_free_all
, (struct lc_vardefs
*));
89 extern struct lc_vardefs
*FDECL(vardef_defined
, (struct lc_vardefs
*,
92 extern void NDECL(break_stmt_start
);
93 extern void FDECL(break_stmt_end
, (sp_lev
*));
94 extern void FDECL(break_stmt_new
, (sp_lev
*, long));
96 extern void FDECL(splev_add_from
, (sp_lev
*, sp_lev
*));
98 extern void FDECL(check_vardef_type
, (struct lc_vardefs
*, char *, long));
99 extern void FDECL(vardef_used
, (struct lc_vardefs
*, char *));
100 extern struct lc_vardefs
*FDECL(add_vardef_type
, (struct lc_vardefs
*,
103 extern int FDECL(reverse_jmp_opcode
, (int));
114 static struct forloopdef forloop_list
[MAX_NESTED_IFS
];
115 static short n_forloops
= 0;
118 sp_lev
*splev
= NULL
;
120 static struct opvar
*if_list
[MAX_NESTED_IFS
];
122 static short n_if_list
= 0;
124 unsigned int max_x_map
, max_y_map
;
125 int obj_containment
= 0;
127 int in_container_obj
= 0;
129 /* integer value is possibly an inconstant value (eg. dice notation or a variable) */
130 int is_inconstant_number
= 0;
132 int in_switch_statement
= 0;
133 static struct opvar
*switch_check_jump
= NULL
;
134 static struct opvar
*switch_default_case
= NULL
;
135 static struct opvar
*switch_case_list
[MAX_SWITCH_CASES
];
136 static long switch_case_value
[MAX_SWITCH_CASES
];
137 int n_switch_case_list
= 0;
139 int allow_break_statements
= 0;
140 struct lc_breakdef
*break_list
= NULL
;
142 extern struct lc_vardefs
*variable_definitions
;
145 struct lc_vardefs
*function_tmp_var_defs
= NULL
;
146 extern struct lc_funcdefs
*function_definitions
;
147 struct lc_funcdefs
*curr_function
= NULL
;
148 struct lc_funcdefs_parm
* curr_function_param
= NULL
;
149 int in_function_definition
= 0;
150 sp_lev
*function_splev_backup
= NULL
;
152 extern int fatal_error
;
153 extern int got_errors
;
154 extern int line_number
;
155 extern const char *fname
;
157 extern char curr_token
[512];
201 #define MINUS_INTEGER 262
202 #define PLUS_INTEGER 263
203 #define MAZE_GRID_ID 264
204 #define SOLID_FILL_ID 265
206 #define ROGUELEV_ID 267
207 #define MESSAGE_ID 268
210 #define LEV_INIT_ID 271
211 #define GEOMETRY_ID 272
213 #define OBJECT_ID 274
214 #define COBJECT_ID 275
215 #define MONSTER_ID 276
218 #define DRAWBRIDGE_ID 279
219 #define object_ID 280
220 #define monster_ID 281
221 #define terrain_ID 282
222 #define MAZEWALK_ID 283
223 #define WALLIFY_ID 284
224 #define REGION_ID 285
226 #define IRREGULAR 287
229 #define LADDER_ID 290
231 #define NON_DIGGABLE_ID 292
232 #define NON_PASSWALL_ID 293
234 #define PORTAL_ID 295
235 #define TELEPRT_ID 296
236 #define BRANCH_ID 297
238 #define MINERALIZE_ID 299
239 #define CORRIDOR_ID 300
241 #define ENGRAVING_ID 302
242 #define FOUNTAIN_ID 303
246 #define RAND_CORRIDOR_ID 307
247 #define DOOR_STATE 308
248 #define LIGHT_STATE 309
249 #define CURSE_TYPE 310
250 #define ENGRAVING_TYPE 311
251 #define DIRECTION 312
252 #define RANDOM_TYPE 313
253 #define RANDOM_TYPE_BRACKET 314
254 #define A_REGISTER 315
255 #define ALIGNMENT 316
256 #define LEFT_OR_RIGHT 317
258 #define TOP_OR_BOT 319
259 #define ALTAR_TYPE 320
260 #define UP_OR_DOWN 321
261 #define SUBROOM_ID 322
264 #define FLAG_TYPE 325
265 #define MON_ATTITUDE 326
266 #define MON_ALERTNESS 327
267 #define MON_APPEARANCE 328
268 #define ROOMDOOR_ID 329
271 #define TERRAIN_ID 332
272 #define HORIZ_OR_VERT 333
273 #define REPLACE_TERRAIN_ID 334
275 #define SHUFFLE_ID 336
276 #define QUANTITY_ID 337
277 #define BURIED_ID 338
281 #define SWITCH_ID 342
284 #define DEFAULT_ID 345
285 #define ERODED_ID 346
286 #define TRAPPED_STATE 347
287 #define RECHARGED_ID 348
289 #define GREASED_ID 350
290 #define FEMALE_ID 351
291 #define CANCELLED_ID 352
292 #define REVIVED_ID 353
293 #define AVENGE_ID 354
294 #define FLEEING_ID 355
295 #define BLINDED_ID 356
296 #define PARALYZED_ID 357
297 #define STUNNED_ID 358
298 #define CONFUSED_ID 359
299 #define SEENTRAPS_ID 360
301 #define MONTYPE_ID 362
303 #define ERODEPROOF_ID 364
304 #define FUNCTION_ID 365
305 #define MSG_OUTPUT_TYPE 366
306 #define COMPARE_TYPE 367
307 #define UNKNOWN_TYPE 368
309 #define fillrect_ID 370
311 #define randline_ID 372
313 #define selection_ID 374
315 #define rndcoord_ID 376
316 #define circle_ID 377
317 #define ellipse_ID 378
318 #define filter_ID 379
319 #define complement_ID 380
320 #define gradient_ID 381
321 #define GRADIENT_TYPE 382
323 #define HUMIDITY_TYPE 384
327 #define VARSTRING 388
329 #define CFUNC_INT 390
330 #define CFUNC_STR 391
331 #define CFUNC_COORD 392
332 #define CFUNC_REGION 393
333 #define VARSTRING_INT 394
334 #define VARSTRING_INT_ARRAY 395
335 #define VARSTRING_STRING 396
336 #define VARSTRING_STRING_ARRAY 397
337 #define VARSTRING_VAR 398
338 #define VARSTRING_VAR_ARRAY 399
339 #define VARSTRING_COORD 400
340 #define VARSTRING_COORD_ARRAY 401
341 #define VARSTRING_REGION 402
342 #define VARSTRING_REGION_ARRAY 403
343 #define VARSTRING_MAPCHAR 404
344 #define VARSTRING_MAPCHAR_ARRAY 405
345 #define VARSTRING_MONST 406
346 #define VARSTRING_MONST_ARRAY 407
347 #define VARSTRING_OBJ 408
348 #define VARSTRING_OBJ_ARRAY 409
349 #define VARSTRING_SEL 410
350 #define VARSTRING_SEL_ARRAY 411
351 #define METHOD_INT 412
352 #define METHOD_INT_ARRAY 413
353 #define METHOD_STRING 414
354 #define METHOD_STRING_ARRAY 415
355 #define METHOD_VAR 416
356 #define METHOD_VAR_ARRAY 417
357 #define METHOD_COORD 418
358 #define METHOD_COORD_ARRAY 419
359 #define METHOD_REGION 420
360 #define METHOD_REGION_ARRAY 421
361 #define METHOD_MAPCHAR 422
362 #define METHOD_MAPCHAR_ARRAY 423
363 #define METHOD_MONST 424
364 #define METHOD_MONST_ARRAY 425
365 #define METHOD_OBJ 426
366 #define METHOD_OBJ_ARRAY 427
367 #define METHOD_SEL 428
368 #define METHOD_SEL_ARRAY 429
370 #define YYERRCODE 256
371 short yylhs
[] = { -1,
372 0, 0, 73, 73, 74, 57, 57, 56, 56, 76,
373 76, 76, 76, 55, 55, 54, 54, 46, 46, 14,
374 14, 75, 75, 26, 26, 22, 22, 23, 78, 78,
375 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
376 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
377 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
378 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
379 78, 78, 59, 59, 59, 59, 59, 59, 59, 59,
380 59, 58, 58, 58, 58, 58, 58, 58, 58, 58,
381 60, 60, 60, 61, 61, 85, 84, 84, 84, 84,
382 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
383 84, 38, 38, 44, 44, 43, 43, 42, 42, 41,
384 41, 39, 39, 40, 40, 129, 130, 100, 101, 98,
385 45, 45, 31, 31, 31, 131, 133, 93, 134, 134,
386 136, 135, 137, 135, 99, 138, 138, 139, 140, 94,
387 141, 95, 142, 97, 144, 96, 143, 145, 143, 79,
388 110, 110, 110, 83, 83, 65, 146, 147, 113, 148,
389 112, 10, 10, 68, 68, 69, 69, 70, 70, 71,
390 71, 87, 87, 15, 15, 13, 13, 16, 16, 11,
391 11, 103, 103, 103, 1, 1, 2, 2, 105, 150,
392 105, 149, 20, 20, 21, 21, 21, 21, 21, 21,
393 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
394 35, 35, 35, 106, 152, 106, 151, 18, 18, 19,
395 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
396 19, 19, 19, 19, 120, 88, 104, 104, 121, 121,
397 102, 117, 118, 109, 119, 82, 17, 17, 91, 114,
398 108, 72, 72, 116, 115, 86, 107, 154, 111, 24,
399 24, 80, 81, 81, 81, 92, 89, 90, 90, 3,
400 3, 4, 4, 29, 29, 28, 28, 27, 27, 27,
401 5, 5, 6, 6, 7, 7, 7, 12, 12, 12,
402 8, 8, 9, 155, 155, 155, 132, 77, 77, 77,
403 77, 32, 32, 32, 30, 30, 127, 127, 127, 33,
404 124, 124, 124, 34, 34, 125, 125, 125, 36, 36,
405 36, 36, 126, 126, 126, 37, 37, 37, 37, 123,
406 123, 122, 122, 122, 122, 122, 122, 122, 122, 122,
407 122, 122, 50, 50, 157, 158, 158, 128, 128, 64,
408 64, 63, 63, 62, 62, 49, 49, 49, 49, 49,
409 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
410 49, 49, 49, 49, 48, 48, 156, 47, 47, 47,
411 153, 153, 153, 153, 51, 51, 52, 52, 53, 53,
415 0, 1, 1, 2, 3, 3, 5, 1, 1, 5,
416 5, 3, 16, 0, 2, 0, 2, 0, 2, 1,
417 1, 0, 3, 3, 1, 0, 2, 3, 1, 1,
418 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
419 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
420 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
421 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
422 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
423 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
424 1, 1, 1, 1, 1, 3, 3, 5, 3, 5,
425 5, 5, 3, 3, 5, 5, 5, 7, 7, 7,
426 5, 1, 3, 1, 3, 1, 3, 1, 3, 1,
427 3, 1, 3, 1, 3, 0, 0, 8, 4, 1,
428 0, 1, 1, 5, 3, 0, 0, 9, 0, 2,
429 0, 5, 0, 4, 1, 2, 1, 6, 0, 3,
430 0, 6, 0, 4, 0, 4, 1, 0, 4, 3,
431 1, 3, 3, 5, 5, 7, 4, 0, 10, 0,
432 12, 0, 2, 5, 1, 5, 1, 5, 1, 5,
433 1, 9, 5, 1, 1, 1, 1, 1, 3, 1,
434 1, 1, 7, 5, 1, 1, 1, 1, 3, 0,
435 5, 4, 0, 3, 1, 1, 1, 1, 2, 1,
436 1, 1, 1, 1, 3, 3, 3, 1, 1, 3,
437 1, 1, 3, 3, 0, 5, 2, 0, 3, 1,
438 3, 1, 3, 3, 1, 1, 3, 1, 1, 1,
439 3, 1, 1, 1, 5, 7, 5, 8, 1, 3,
440 5, 5, 7, 7, 6, 5, 0, 2, 3, 3,
441 3, 1, 5, 9, 5, 3, 3, 0, 10, 0,
442 1, 7, 5, 5, 3, 5, 7, 9, 1, 1,
443 1, 1, 1, 0, 2, 1, 3, 1, 1, 1,
444 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
445 1, 1, 4, 1, 1, 4, 1, 1, 4, 1,
446 4, 5, 1, 3, 1, 3, 1, 1, 4, 9,
447 1, 1, 4, 1, 5, 1, 1, 4, 1, 1,
448 5, 1, 1, 1, 4, 1, 1, 5, 1, 1,
449 3, 1, 1, 3, 1, 4, 3, 3, 3, 3,
450 3, 3, 1, 1, 3, 1, 3, 0, 1, 1,
451 1, 1, 3, 0, 1, 1, 2, 2, 4, 6,
452 4, 6, 6, 6, 6, 2, 6, 8, 8, 10,
453 14, 2, 1, 3, 1, 3, 1, 1, 1, 1,
454 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
457 short yydefred
[] = { 0,
458 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
459 4, 0, 6, 0, 133, 0, 0, 0, 192, 0,
460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
463 130, 0, 0, 0, 136, 145, 0, 0, 0, 0,
464 93, 82, 73, 83, 74, 84, 75, 85, 76, 86,
465 77, 87, 78, 88, 79, 89, 80, 90, 81, 5,
466 0, 92, 91, 0, 30, 0, 29, 31, 32, 33,
467 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
468 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
469 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
470 64, 65, 66, 67, 68, 69, 70, 71, 72, 149,
471 0, 0, 23, 0, 0, 0, 0, 0, 0, 0,
472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
473 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
474 0, 0, 0, 0, 155, 0, 0, 0, 0, 94,
475 95, 0, 0, 0, 0, 342, 0, 345, 0, 387,
476 0, 343, 0, 153, 0, 27, 0, 9, 8, 7,
477 0, 304, 305, 0, 0, 340, 0, 0, 0, 12,
478 313, 0, 195, 196, 0, 0, 310, 0, 0, 308,
479 0, 337, 339, 0, 336, 334, 0, 333, 228, 224,
480 225, 330, 332, 0, 329, 327, 0, 326, 0, 0,
481 281, 280, 0, 291, 292, 0, 0, 0, 0, 0,
482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
483 383, 250, 0, 366, 0, 318, 0, 317, 0, 0,
484 0, 0, 0, 403, 0, 0, 266, 267, 283, 282,
485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
486 0, 0, 259, 261, 260, 390, 388, 389, 163, 162,
487 0, 184, 185, 0, 0, 0, 0, 96, 0, 0,
488 0, 0, 126, 0, 0, 0, 0, 135, 0, 0,
489 0, 0, 0, 0, 0, 362, 0, 0, 0, 396,
490 398, 395, 397, 399, 400, 0, 0, 0, 0, 0,
491 0, 103, 0, 0, 104, 0, 150, 24, 0, 0,
492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
493 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
494 0, 0, 0, 367, 368, 0, 0, 0, 376, 0,
495 0, 0, 382, 0, 0, 0, 0, 0, 0, 0,
496 0, 0, 0, 0, 0, 132, 0, 0, 0, 0,
497 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
498 156, 0, 0, 151, 0, 0, 0, 0, 344, 352,
499 0, 0, 0, 0, 349, 350, 351, 129, 0, 154,
500 0, 0, 120, 118, 0, 0, 0, 0, 0, 0,
501 0, 0, 0, 0, 0, 341, 11, 262, 0, 10,
502 0, 0, 314, 0, 0, 0, 198, 197, 0, 173,
503 194, 0, 0, 0, 226, 0, 0, 203, 201, 245,
504 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
505 324, 0, 0, 322, 0, 321, 0, 0, 0, 384,
506 386, 0, 0, 293, 294, 0, 297, 0, 295, 0,
507 296, 251, 0, 0, 0, 252, 0, 175, 0, 0,
508 0, 0, 0, 256, 0, 0, 165, 164, 276, 401,
509 402, 0, 177, 0, 0, 0, 0, 0, 265, 0,
510 0, 147, 0, 0, 137, 274, 0, 0, 0, 356,
511 0, 346, 134, 363, 98, 0, 0, 105, 0, 111,
512 0, 106, 0, 107, 0, 102, 0, 101, 0, 100,
513 28, 306, 0, 0, 316, 309, 0, 311, 0, 0,
514 335, 393, 391, 392, 239, 236, 230, 0, 0, 235,
515 0, 240, 0, 242, 243, 0, 238, 229, 244, 232,
516 394, 0, 328, 0, 0, 0, 369, 0, 0, 0,
517 371, 0, 0, 0, 0, 0, 0, 0, 0, 0,
518 319, 0, 0, 0, 0, 0, 0, 167, 0, 0,
519 0, 0, 0, 255, 0, 0, 0, 0, 0, 0,
520 0, 0, 152, 146, 0, 0, 0, 127, 0, 0,
521 0, 0, 121, 119, 112, 0, 114, 0, 116, 0,
522 0, 0, 312, 193, 338, 0, 0, 0, 0, 0,
523 331, 0, 246, 0, 0, 189, 0, 0, 0, 0,
524 0, 0, 0, 0, 0, 0, 0, 0, 302, 301,
525 272, 0, 0, 253, 0, 179, 0, 0, 254, 258,
526 0, 0, 0, 0, 181, 0, 0, 187, 0, 186,
527 159, 0, 0, 353, 354, 355, 0, 357, 0, 110,
528 0, 109, 0, 108, 0, 0, 0, 234, 237, 241,
529 231, 0, 298, 206, 207, 0, 211, 210, 212, 213,
530 214, 0, 0, 0, 218, 219, 0, 299, 208, 204,
531 0, 0, 248, 0, 372, 0, 377, 0, 373, 0,
532 323, 374, 375, 0, 0, 0, 268, 303, 0, 0,
533 0, 0, 0, 0, 190, 191, 0, 0, 0, 168,
534 0, 0, 0, 0, 0, 0, 128, 113, 115, 117,
535 263, 0, 0, 0, 0, 0, 0, 0, 19, 0,
536 0, 325, 0, 0, 288, 289, 290, 0, 285, 0,
537 0, 0, 174, 0, 0, 278, 166, 176, 0, 0,
538 182, 264, 0, 143, 138, 140, 0, 300, 215, 216,
539 217, 222, 0, 220, 378, 0, 379, 0, 0, 0,
540 271, 269, 0, 0, 0, 170, 0, 169, 141, 0,
541 0, 0, 0, 0, 0, 320, 287, 0, 405, 178,
542 0, 180, 0, 144, 0, 223, 380, 15, 0, 404,
543 171, 142, 0, 0, 0, 0, 20, 21, 0, 0,
546 short yydgoto
[] = { 3,
547 209, 449, 233, 271, 236, 486, 490, 671, 491, 351,
548 757, 729, 689, 859, 294, 467, 614, 354, 578, 584,
549 730, 80, 337, 822, 512, 133, 788, 789, 747, 345,
550 81, 210, 258, 476, 814, 228, 218, 636, 425, 426,
551 427, 428, 640, 638, 387, 733, 290, 375, 253, 696,
552 329, 330, 331, 861, 835, 190, 4, 82, 83, 84,
553 172, 314, 315, 316, 280, 264, 265, 500, 515, 678,
554 687, 440, 5, 6, 10, 85, 254, 86, 87, 88,
555 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
556 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
557 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
558 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
559 129, 277, 318, 478, 229, 219, 259, 529, 408, 697,
560 173, 278, 626, 765, 766, 843, 830, 524, 130, 187,
561 521, 319, 401, 295, 517, 272, 800, 841, 230, 359,
562 220, 355, 580, 790, 196, 182, 530, 531,
564 short yysindex
[] = { 68,
565 17, 31, 0, -217, 0, 68, -257, -226, 112, 5680,
566 0, 136, 0, -136, 0, 170, 185, 201, 0, 225,
567 229, 238, 244, 248, 251, 255, 266, 272, 275, 283,
568 304, 309, 346, 366, 378, 380, 382, 383, 396, 397,
569 398, 400, 401, 404, 405, 413, 415, -46, 417, 420,
570 0, 426, 108, 489, 0, 0, 428, 101, -35, 449,
571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
573 432, 0, 0, 430, 0, 5680, 0, 0, 0, 0,
574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
578 -190, 450, 0, -234, 62, -13, 41, 41, 40, -252,
579 -121, 109, 109, 1644, -34, 109, 109, 92, -34, -34,
580 -249, -20, -20, -20, -35, 458, -35, 109, 1644, 1644,
581 1644, -160, -249, -174, 0, 1644, -34, 288, -35, 0,
582 0, 439, 414, 109, 467, 0, -22, 0, 421, 0,
583 -9, 0, -14, 0, 163, 0, 385, 0, 0, 0,
584 -136, 0, 0, 423, 465, 0, 471, 473, 475, 0,
585 0, 137, 0, 0, 490, 271, 0, 441, 496, 0,
586 503, 0, 0, 276, 0, 0, 452, 0, 0, 0,
587 0, 0, 0, 292, 0, 0, 470, 0, 512, 0,
588 0, 0, 518, 0, 0, 523, 524, 526, -34, -34,
589 109, 109, 540, 109, 542, 544, 545, 1644, 548, 5537,
590 0, 0, 533, 0, 331, 0, 500, 0, 555, 558,
591 559, 564, 347, 0, 571, 582, 0, 0, 0, 0,
592 367, 584, 379, 592, 594, 595, 141, 596, 402, 597,
593 588, 611, 0, 0, 0, 0, 0, 0, 0, 0,
594 617, 0, 0, 628, 385, 638, 640, 0, 593, -35,
595 -35, 644, 0, 649, 159, -35, -35, 0, -35, -35,
596 -35, -35, -35, 651, 650, 0, 141, 465, 5680, 0,
597 0, 0, 0, 0, 0, 642, -1, 4, 643, 647,
598 653, 0, 141, 465, 0, 5680, 0, 0, -35, -234,
599 445, 14, 455, 654, 614, 1644, 678, -35, 38, 476,
600 338, 682, -35, 688, 385, 690, -35, 109, 385, 109,
601 1644, 424, 431, 0, 0, 694, 696, 1298, 0, 109,
602 109, 5435, 0, 360, 704, 1644, 702, -35, -165, -83,
603 429, 491, 703, -20, 433, 0, 707, -24, 708, -20,
604 -20, -20, -35, 709, 10, 109, -91, -19, -121, 0,
605 0, 9, 9, 0, 45, 655, -254, 560, 0, 0,
606 75, 148, 79, 79, 0, 0, 0, 0, -14, 0,
607 1644, 711, 0, 0, 16, 25, 27, 29, 141, 465,
608 22, -10, -28, 631, 427, 0, 0, 0, 501, 0,
609 715, 137, 0, 719, 505, 459, 0, 0, 503, 0,
610 0, 381, 499, 2, 0, 403, 508, 0, 0, 0,
611 0, 721, 723, 109, 109, 662, 743, 748, 746, 749,
612 0, 750, 5448, 0, 701, 0, 751, 752, 753, 0,
613 0, 554, 536, 0, 0, 754, 0, 726, 0, 774,
614 0, 0, 775, 579, 785, 0, -165, 0, 581, 796,
615 583, 798, 800, 0, 802, 535, 0, 0, 0, 0,
616 0, 804, 0, 591, 806, 807, 521, 598, 0, 810,
617 385, 0, 811, -35, 0, 0, 465, 801, 815, 0,
618 814, 0, 0, 0, 0, 604, -35, 0, -234, 0,
619 -21, 0, 824, 0, 57, 0, 98, 0, 23, 0,
620 0, 0, 825, 621, 0, 0, 827, 0, 493, 839,
621 0, 0, 0, 0, 0, 0, 0, 823, 826, 0,
622 828, 0, 830, 0, 0, 832, 0, 0, 0, 0,
623 0, 841, 0, 848, -121, 641, 0, 857, 590, 1644,
624 0, -35, -35, 1644, 859, -35, 1644, 1644, 864, 861,
625 0, -249, 648, -148, 652, 135, 586, 0, 867, -5,
626 868, 528, 587, 0, -35, 870, -234, 871, 6, 72,
627 385, 9, 0, 0, 141, 793, 1, 0, 560, 166,
628 141, 465, 0, 0, 0, 32, 0, 33, 0, 35,
629 -165, 873, 0, 0, 0, -234, -35, -35, -35, 40,
630 0, 5526, 0, 876, -35, 0, 880, 174, 686, 881,
631 -165, 569, 882, 883, -35, 685, 900, 852, 0, 0,
632 0, 902, 691, 0, 693, 0, 110, 908, 0, 0,
633 928, -184, 465, 716, 0, 717, 900, 0, 929, 0,
634 0, 932, 90, 0, 0, 0, 385, 0, 57, 0,
635 98, 0, 23, 0, 936, 722, 465, 0, 0, 0,
636 0, 56, 0, 0, 0, -234, 0, 0, 0, 0,
637 0, 920, 921, 924, 0, 0, 925, 0, 0, 0,
638 465, 727, 0, 141, 0, 699, 0, -35, 0, 945,
639 0, 0, 0, 481, 943, 59, 0, 0, 744, 957,
640 965, 963, 6, -35, 0, 0, 967, 977, 982, 0,
641 -184, 767, -50, 971, 905, 90, 0, 0, 0, 0,
642 0, 987, 724, 465, -35, -35, -35, -261, 0, 991,
643 576, 0, -35, 777, 0, 0, 0, 989, 0, 385,
644 992, 780, 0, 38, 900, 0, 0, 0, 781, 385,
645 0, 0, 983, 0, 0, 0, 784, 0, 0, 0,
646 0, 0, 916, 0, 0, 758, 0, 93, 1004, 59,
647 0, 0, 788, 1006, 1007, 0, 1010, 0, 0, 5680,
648 1009, -261, 1016, 675, 1020, 0, 0, 1025, 0, 0,
649 385, 0, 5680, 0, -165, 0, 0, 0, 1023, 0,
650 0, 0, 1024, 109, -149, 1026, 0, 0, 876, 109,
653 short yyrindex
[] = { 1071,
654 0, 0, 0, 5225, 0, 1072, 0, 0, 0, 53,
655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
656 0, 0, 0, 0, 0, 0, 2985, 0, 0, 0,
657 0, 0, 0, 0, 0, 0, 0, 3174, 0, 0,
658 0, 0, 0, 0, 3331, 0, 0, 0, 0, 0,
659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
662 0, 0, 0, 0, 0, 182, 0, 0, 0, 0,
663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
664 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
666 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
667 0, 5382, 0, 0, 0, 0, 0, 0, 0, 0,
668 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
669 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
671 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
672 0, 0, 1032, 0, 0, 0, 0, 0, 0, 0,
673 0, 0, 0, 0, 3520, 0, 0, 0, 0, 0,
674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
675 689, 0, 0, 0, 0, 0, 0, 0, 0, 0,
676 0, 0, 0, 0, 0, 0, 0, 0, 0, 1947,
677 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
679 0, 0, 1098, 0, 0, 0, 0, 0, 0, 0,
680 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
681 136, 0, 0, 0, 0, 0, 720, 0, 0, 0,
682 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
683 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
684 0, 3677, 0, 0, 0, 0, 0, 0, 0, 0,
685 0, 0, 0, 0, 1033, 0, 241, 247, 0, 0,
686 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
687 0, 0, 3866, 4023, 0, 951, 0, 0, 0, 0,
688 0, 0, 0, 984, 0, 0, 0, 0, 0, 0,
689 0, 0, 0, 2136, 0, 0, 0, 0, 0, 0,
690 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
691 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
692 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
693 0, 0, 0, 0, 0, 0, 0, 0, 0, 2293,
694 0, 0, 0, 0, 0, 0, 0, 1037, 0, 0,
695 0, 0, 374, 531, 0, 0, 0, 0, 0, 0,
696 0, 553, 0, 0, 0, 0, 0, 0, 42, 49,
697 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
698 0, 0, 0, 0, 0, 0, 0, 0, 689, 0,
699 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
700 0, 0, 4212, 0, 0, 1035, 0, 0, 0, 0,
701 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
703 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
704 0, 0, 4369, 0, 0, 0, 0, 0, 0, 0,
705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
706 0, 0, 0, 0, 0, 0, 4558, 0, 0, 0,
707 1039, 0, 0, 0, 0, 0, 0, 0, 0, 0,
708 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
710 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
711 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
712 0, 0, 0, 2482, 0, 0, 0, 0, 0, 0,
713 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
714 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
716 0, 0, 0, 0, 958, 0, 0, 0, 0, 0,
717 50, 52, 0, 0, 0, 0, 0, 0, 0, 0,
718 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
719 0, 0, 0, 4715, 0, 0, 0, 0, 0, 0,
720 0, 0, 0, 0, 0, 0, 2639, 0, 0, 0,
721 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
722 0, 0, 4904, 0, 0, 0, 959, 0, 0, 0,
723 0, 0, 961, 0, 0, 0, 0, 0, 0, 0,
724 0, 0, 0, 0, 0, 0, 1255, 0, 0, 0,
725 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
726 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
727 1444, 0, 0, 909, 0, 0, 0, 0, 0, 0,
728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
730 0, 0, 0, 0, 0, 961, 0, 0, 0, 0,
731 0, 0, 0, 1601, 0, 0, 0, 0, 0, 0,
732 0, 0, 0, 0, 0, 0, 0, 2828, 0, 5061,
733 0, 0, 0, 0, 959, 0, 0, 0, 0, 0,
734 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
735 0, 0, 1790, 0, 0, 0, 0, 128, 0, 0,
736 0, 0, 0, 0, 0, 0, 0, 0, 0, -69,
737 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
738 0, 0, -69, 0, 0, 0, 0, 0, 0, 0,
739 0, 0, 0, 0, 0, 1043, 0, 0, 4715, 0,
742 short yygindex
[] = { 0,
743 410, 294, 0, 487, -329, -480, 0, 0, 438, 645,
744 330, 0, 0, 0, 0, -474, 0, 0, 0, 0,
745 0, -86, -287, 0, 0, 901, 0, 273, -629, 657,
746 1047, -296, -297, -509, 264, -504, -494, 0, 0, 0,
747 0, 0, 0, 0, 0, 242, -384, -137, 849, 0,
748 0, 0, 0, 0, 0, 0, 0, 1046, 934, -371,
749 0, 0, 0, 684, 710, 0, -48, 0, 0, 0,
750 351, 0, 1100, 0, 0, 0, -133, 790, 0, 0,
751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
753 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
754 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
755 0, -58, -130, -355, -375, 679, -84, 0, 0, 0,
756 0, -167, 0, 345, 0, 0, 0, 0, 0, 0,
757 0, 0, 0, 0, 0, 949, 0, 0, 0, 0,
758 975, 0, 0, 0, 792, 680, 504, 0,
760 #define YYTABLESIZE 6091
761 short yytable
[] = { 186,
762 181, 299, 211, 195, 177, 255, 252, 400, 237, 238,
763 507, 518, 260, 261, 266, 499, 608, 177, 206, 273,
764 514, 283, 284, 285, 282, 177, 206, 313, 296, 224,
765 424, 423, 311, 309, 677, 310, 528, 312, 177, 639,
766 302, 206, 637, 327, 59, 686, 519, 520, 518, 279,
767 635, 332, 26, 439, 334, 26, 548, 760, 526, 537,
768 231, 214, 518, 269, 267, 268, 188, 455, 539, 516,
769 541, 459, 543, 755, 7, 699, 701, 550, 703, 224,
770 214, 313, 297, 308, 292, 122, 311, 309, 8, 310,
771 523, 312, 124, 123, 549, 125, 214, 286, 281, 812,
772 335, 287, 288, 274, 275, 276, 9, 366, 367, 857,
773 369, 313, 547, 773, 656, 313, 311, 309, 305, 310,
774 311, 312, 189, 813, 317, 312, 333, 12, 756, 313,
775 192, 263, 232, 406, 311, 270, 834, 224, 293, 312,
776 538, 193, 194, 484, 545, 690, 603, 485, 206, 540,
777 192, 542, 289, 544, 364, 365, 700, 702, 13, 704,
778 705, 193, 194, 858, 669, 826, 122, 532, 14, 14,
779 348, 670, 348, 124, 123, 643, 125, 313, 673, 131,
780 740, 26, 311, 309, 313, 310, 234, 312, 132, 311,
781 309, 235, 310, 770, 312, 313, 769, 430, 169, 410,
782 311, 309, 327, 310, 768, 312, 643, 286, 444, 666,
783 313, 287, 288, 15, 737, 311, 309, 736, 310, 510,
784 312, 511, 176, 461, 458, 505, 460, 134, 471, 487,
785 468, 488, 489, 623, 477, 176, 469, 470, 481, 304,
786 533, 405, 135, 176, 633, 634, 222, 411, 412, 434,
787 413, 414, 415, 416, 417, 653, 422, 528, 136, 562,
788 304, 176, 509, 563, 564, 471, 692, 286, 305, 429,
789 438, 287, 288, 26, 711, 26, 527, 262, 212, 471,
790 435, 360, 137, 535, 360, 328, 138, 361, 498, 446,
791 361, 201, 202, 513, 453, 139, 222, 212, 457, 201,
792 202, 140, 223, 203, 204, 141, 26, 676, 142, 565,
793 566, 567, 143, 212, 201, 202, 201, 202, 685, 483,
794 579, 26, 26, 144, 568, 197, 198, 199, 200, 145,
795 587, 588, 146, 691, 213, 495, 1, 2, 569, 570,
796 147, 502, 503, 504, 785, 786, 787, 571, 572, 573,
797 574, 575, 223, 213, 222, 447, 448, 307, 178, 179,
798 317, 148, 205, 576, 853, 577, 149, 256, 257, 213,
799 192, 178, 179, 347, 225, 474, 475, 205, 803, 178,
800 179, 193, 194, 466, 688, 522, 207, 208, 192, 262,
801 694, 695, 178, 179, 180, 226, 227, 178, 179, 193,
802 194, 207, 208, 150, 201, 202, 215, 180, 632, 767,
803 223, 347, 474, 475, 347, 180, 347, 347, 347, 347,
804 176, 201, 202, 151, 225, 215, 203, 204, 180, 216,
805 217, 180, 763, 180, 764, 152, 320, 153, 321, 154,
806 155, 215, 322, 323, 324, 226, 227, 681, 216, 217,
807 26, 26, 657, 156, 157, 158, 660, 159, 160, 663,
808 664, 161, 162, 313, 347, 625, 347, 205, 311, 309,
809 163, 310, 164, 312, 166, 201, 202, 167, 631, 708,
810 709, 710, 225, 168, 205, 174, 683, 175, 183, 184,
811 185, 207, 208, 191, 325, 313, 347, 279, 347, 300,
812 311, 309, 821, 310, 301, 312, 303, 336, 207, 208,
813 340, 306, 828, 339, 341, 707, 342, 313, 343, 552,
814 344, 731, 311, 309, 26, 783, 26, 312, 347, 346,
815 348, 348, 352, 658, 659, 313, 326, 662, 205, 349,
816 311, 309, 353, 310, 313, 312, 350, 192, 356, 311,
817 309, 558, 310, 851, 312, 358, 178, 179, 193, 194,
818 357, 360, 207, 208, 256, 257, 361, 362, 348, 363,
819 376, 348, 313, 348, 348, 348, 348, 311, 309, 368,
820 310, 370, 312, 371, 372, 774, 796, 374, 377, 342,
821 378, 561, 180, 342, 342, 342, 734, 342, 379, 342,
822 583, 380, 381, 382, 383, 313, 744, 809, 810, 811,
823 311, 309, 313, 310, 384, 312, 817, 311, 309, 816,
824 310, 348, 312, 348, 313, 385, 386, 388, 601, 311,
825 309, 396, 310, 347, 312, 390, 389, 391, 392, 393,
826 395, 347, 347, 347, 347, 347, 347, 347, 347, 347,
827 347, 347, 347, 348, 397, 348, 347, 347, 347, 394,
828 398, 741, 347, 347, 347, 347, 347, 347, 347, 347,
829 347, 399, 347, 347, 347, 347, 347, 347, 347, 781,
830 347, 402, 63, 403, 65, 404, 67, 407, 69, 409,
831 71, 418, 73, 419, 75, 347, 77, 442, 79, 421,
832 431, 437, 347, 347, 432, 347, 443, 347, 347, 347,
833 433, 441, 347, 347, 347, 347, 347, 347, 347, 307,
834 856, 445, 313, 451, 818, 452, 863, 311, 309, 738,
835 310, 454, 312, 456, 450, 462, 347, 464, 347, 465,
836 347, 479, 463, 844, 480, 482, 494, 525, 493, 492,
837 497, 501, 506, 496, 536, 551, 852, 553, 554, 556,
838 347, 347, 557, 307, 585, 560, 586, 347, 347, 347,
839 347, 347, 347, 347, 347, 347, 347, 347, 347, 347,
840 347, 347, 347, 347, 347, 589, 590, 582, 591, 592,
841 348, 596, 593, 594, 597, 598, 599, 602, 348, 348,
842 348, 348, 348, 348, 348, 348, 348, 348, 348, 348,
843 307, 600, 307, 348, 348, 348, 603, 604, 605, 348,
844 348, 348, 348, 348, 348, 348, 348, 348, 607, 348,
845 348, 348, 348, 348, 348, 348, 606, 348, 609, 610,
846 611, 612, 307, 613, 307, 615, 616, 617, 618, 619,
847 620, 621, 348, 622, 595, 628, 624, 629, 627, 348,
848 348, 630, 348, 255, 348, 348, 348, 643, 641, 348,
849 348, 348, 348, 348, 348, 348, 170, 642, 644, 645,
850 646, 651, 62, 647, 64, 648, 66, 649, 68, 650,
851 70, 652, 72, 348, 74, 348, 76, 348, 78, 654,
852 655, 466, 661, 665, 666, 668, 674, 680, 370, 672,
853 675, 673, 679, 682, 684, 693, 706, 348, 348, 732,
854 735, 739, 742, 743, 348, 348, 348, 348, 348, 348,
855 348, 348, 348, 348, 348, 348, 348, 348, 348, 348,
856 348, 348, 745, 746, 748, 749, 370, 61, 750, 370,
857 751, 753, 370, 62, 63, 64, 65, 66, 67, 68,
858 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
859 79, 754, 761, 758, 759, 762, 771, 775, 776, 307,
860 772, 777, 778, 779, 780, 782, 784, 307, 307, 307,
861 307, 307, 307, 307, 307, 307, 307, 307, 307, 370,
862 792, 791, 307, 307, 307, 793, 794, 797, 307, 307,
863 307, 307, 307, 307, 307, 307, 307, 798, 307, 307,
864 307, 307, 307, 307, 307, 799, 307, 802, 804, 805,
865 807, 815, 820, 370, 819, 823, 808, 824, 827, 832,
866 829, 307, 831, 833, 836, 838, 839, 840, 307, 307,
867 842, 307, 845, 307, 307, 307, 847, 848, 307, 307,
868 849, 307, 307, 307, 307, 850, 854, 855, 864, 860,
869 1, 3, 364, 365, 172, 26, 315, 358, 188, 359,
870 148, 284, 307, 16, 307, 139, 752, 825, 667, 728,
871 801, 338, 837, 559, 165, 846, 373, 385, 555, 171,
872 862, 298, 534, 795, 508, 11, 307, 307, 420, 546,
873 806, 291, 221, 307, 307, 307, 307, 307, 307, 307,
874 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
875 307, 436, 698, 581, 0, 0, 0, 0, 385, 0,
876 0, 385, 0, 0, 0, 0, 0, 0, 0, 0,
877 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
878 0, 0, 0, 0, 0, 0, 0, 0, 370, 0,
879 0, 0, 0, 0, 0, 0, 370, 370, 370, 370,
880 370, 370, 370, 370, 370, 370, 370, 370, 385, 0,
881 0, 370, 370, 370, 0, 0, 0, 370, 370, 370,
882 370, 370, 370, 370, 370, 370, 0, 370, 370, 370,
883 370, 370, 370, 370, 0, 370, 0, 0, 0, 0,
884 0, 0, 385, 0, 0, 0, 0, 0, 0, 0,
885 370, 0, 0, 0, 0, 0, 0, 370, 370, 0,
886 370, 0, 370, 370, 370, 0, 0, 370, 370, 0,
887 370, 370, 370, 370, 233, 0, 0, 0, 0, 0,
888 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
889 0, 370, 0, 370, 0, 0, 0, 0, 0, 0,
890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
891 0, 0, 0, 0, 0, 370, 370, 0, 233, 0,
892 0, 0, 370, 370, 370, 370, 370, 370, 370, 370,
893 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
895 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
896 0, 0, 0, 0, 0, 233, 0, 0, 0, 0,
897 0, 0, 0, 0, 0, 0, 0, 385, 0, 0,
898 0, 0, 0, 0, 0, 385, 385, 385, 385, 385,
899 385, 385, 385, 385, 385, 385, 385, 233, 0, 233,
900 385, 385, 385, 0, 0, 0, 385, 385, 385, 385,
901 385, 385, 385, 385, 385, 0, 385, 385, 385, 385,
902 385, 385, 385, 0, 385, 0, 0, 0, 0, 0,
903 0, 0, 0, 0, 0, 0, 0, 0, 0, 385,
904 0, 0, 0, 0, 0, 0, 385, 385, 0, 385,
905 0, 385, 385, 385, 0, 0, 385, 385, 0, 385,
906 385, 385, 385, 205, 0, 0, 0, 0, 0, 0,
907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
908 385, 0, 385, 0, 0, 0, 0, 0, 0, 0,
909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
910 0, 0, 0, 0, 385, 385, 0, 205, 0, 0,
911 0, 385, 385, 385, 385, 385, 385, 385, 385, 385,
912 385, 385, 385, 385, 385, 385, 385, 385, 385, 0,
913 0, 0, 0, 0, 233, 0, 0, 0, 0, 0,
914 0, 0, 233, 233, 233, 233, 233, 233, 233, 233,
915 233, 233, 233, 233, 205, 0, 0, 233, 233, 233,
916 0, 0, 0, 233, 233, 233, 233, 233, 233, 233,
917 233, 233, 0, 233, 233, 233, 233, 233, 233, 233,
918 0, 233, 0, 0, 0, 0, 205, 0, 205, 0,
919 0, 0, 0, 0, 0, 0, 233, 0, 0, 0,
920 0, 0, 0, 233, 233, 0, 233, 0, 233, 233,
921 233, 0, 0, 233, 233, 0, 233, 233, 233, 233,
922 209, 0, 0, 0, 0, 0, 0, 0, 0, 466,
923 201, 202, 0, 0, 0, 0, 0, 233, 0, 233,
924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
926 0, 233, 233, 0, 209, 0, 0, 0, 233, 233,
927 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
928 233, 233, 233, 233, 233, 233, 239, 240, 241, 242,
929 243, 0, 244, 205, 245, 246, 247, 248, 249, 0,
930 0, 0, 0, 250, 0, 0, 0, 0, 0, 0,
931 0, 209, 0, 0, 0, 0, 0, 207, 208, 0,
932 0, 0, 0, 205, 0, 0, 0, 251, 0, 0,
933 0, 205, 205, 205, 205, 205, 205, 205, 205, 205,
934 205, 205, 205, 209, 0, 209, 205, 205, 205, 0,
935 0, 0, 205, 205, 205, 205, 205, 205, 205, 205,
936 205, 0, 205, 205, 205, 205, 205, 205, 205, 0,
937 205, 0, 0, 0, 0, 0, 0, 0, 0, 0,
938 0, 0, 0, 0, 0, 205, 0, 0, 0, 0,
939 0, 0, 205, 205, 0, 205, 0, 205, 205, 205,
940 0, 0, 205, 205, 0, 205, 205, 205, 205, 221,
941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
942 0, 0, 0, 0, 0, 0, 205, 0, 205, 0,
943 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
944 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
945 205, 205, 0, 221, 0, 0, 0, 205, 205, 205,
946 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
947 205, 205, 205, 205, 205, 0, 0, 0, 0, 0,
948 209, 0, 0, 0, 0, 0, 0, 0, 209, 209,
949 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
950 221, 0, 0, 209, 209, 209, 0, 0, 0, 209,
951 209, 209, 209, 209, 209, 209, 209, 209, 0, 209,
952 209, 209, 209, 209, 209, 209, 0, 209, 0, 0,
953 0, 0, 221, 0, 221, 0, 0, 0, 0, 0,
954 0, 0, 209, 0, 0, 0, 0, 0, 0, 209,
955 209, 0, 209, 0, 209, 209, 209, 0, 0, 209,
956 209, 0, 209, 209, 209, 209, 199, 0, 0, 0,
957 0, 0, 0, 0, 0, 0, 201, 202, 0, 0,
958 0, 0, 0, 209, 0, 209, 0, 0, 0, 0,
959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
960 0, 0, 0, 0, 0, 0, 0, 209, 209, 0,
961 0, 0, 0, 0, 209, 209, 209, 209, 209, 209,
962 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
963 209, 209, 239, 240, 241, 242, 243, 0, 244, 205,
964 245, 246, 247, 248, 249, 0, 0, 0, 0, 0,
965 0, 0, 0, 0, 0, 0, 0, 199, 0, 0,
966 0, 0, 0, 207, 208, 0, 0, 0, 0, 221,
967 0, 0, 0, 251, 0, 0, 0, 221, 221, 221,
968 221, 221, 221, 221, 221, 221, 221, 221, 221, 200,
969 0, 199, 221, 221, 221, 0, 0, 0, 221, 221,
970 221, 221, 221, 221, 221, 221, 221, 0, 221, 221,
971 221, 221, 221, 221, 221, 0, 221, 0, 0, 0,
972 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
973 0, 221, 0, 0, 0, 0, 0, 0, 221, 221,
974 0, 221, 0, 221, 221, 221, 0, 0, 221, 221,
975 0, 221, 221, 221, 221, 227, 0, 0, 0, 0,
976 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
977 0, 0, 221, 0, 221, 0, 0, 0, 0, 0,
978 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
979 0, 0, 0, 0, 0, 0, 221, 221, 0, 0,
980 0, 0, 0, 221, 221, 221, 221, 221, 221, 221,
981 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
982 221, 0, 0, 0, 0, 0, 199, 0, 0, 0,
983 0, 0, 0, 0, 199, 199, 199, 199, 199, 199,
984 199, 199, 199, 199, 199, 199, 227, 0, 0, 199,
985 199, 199, 0, 0, 0, 199, 199, 199, 199, 199,
986 199, 199, 199, 199, 0, 199, 199, 199, 199, 199,
987 199, 199, 0, 199, 0, 0, 0, 0, 227, 0,
988 227, 0, 0, 0, 0, 0, 0, 0, 199, 0,
989 0, 0, 0, 0, 0, 199, 199, 0, 199, 0,
990 199, 199, 199, 0, 0, 199, 199, 0, 199, 199,
991 199, 199, 157, 0, 0, 0, 0, 0, 0, 0,
992 0, 0, 0, 0, 0, 0, 0, 0, 0, 199,
993 0, 199, 0, 0, 0, 0, 0, 0, 0, 0,
994 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
995 0, 0, 0, 199, 199, 0, 0, 0, 0, 0,
996 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
997 199, 199, 199, 199, 199, 199, 199, 199, 0, 0,
998 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1000 0, 0, 0, 157, 0, 0, 0, 0, 0, 0,
1001 0, 0, 0, 0, 0, 227, 0, 0, 0, 0,
1002 0, 0, 0, 227, 227, 227, 227, 227, 227, 227,
1003 227, 227, 227, 227, 227, 0, 0, 157, 227, 227,
1004 227, 0, 0, 0, 227, 227, 227, 227, 227, 227,
1005 227, 227, 227, 0, 227, 227, 227, 227, 227, 227,
1006 227, 0, 227, 0, 0, 0, 0, 0, 0, 0,
1007 0, 0, 0, 0, 0, 0, 0, 227, 0, 0,
1008 0, 0, 0, 0, 227, 227, 0, 227, 0, 227,
1009 227, 227, 0, 0, 227, 227, 0, 227, 227, 227,
1010 227, 202, 0, 0, 0, 0, 0, 0, 0, 0,
1011 0, 0, 0, 0, 0, 0, 0, 0, 227, 0,
1012 227, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1013 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1014 0, 0, 227, 227, 0, 0, 0, 0, 0, 227,
1015 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1016 227, 227, 227, 227, 227, 227, 227, 0, 0, 0,
1017 0, 0, 157, 0, 0, 0, 0, 0, 0, 0,
1018 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1019 157, 157, 202, 0, 0, 157, 157, 157, 0, 0,
1020 0, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1021 0, 157, 157, 157, 157, 157, 157, 157, 0, 157,
1022 0, 0, 0, 0, 202, 0, 202, 0, 0, 0,
1023 0, 0, 0, 0, 157, 0, 0, 0, 0, 0,
1024 0, 157, 157, 158, 157, 0, 157, 157, 157, 0,
1025 0, 157, 157, 0, 157, 157, 157, 157, 284, 0,
1026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1027 0, 0, 0, 0, 0, 157, 0, 157, 0, 0,
1028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1029 0, 0, 0, 0, 0, 0, 0, 0, 0, 157,
1030 157, 0, 0, 0, 0, 0, 157, 157, 157, 157,
1031 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1032 157, 157, 157, 157, 0, 0, 0, 0, 0, 0,
1033 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1034 0, 0, 0, 0, 0, 0, 0, 0, 0, 284,
1035 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1036 0, 202, 0, 0, 0, 0, 0, 0, 0, 202,
1037 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
1038 202, 284, 0, 284, 202, 202, 202, 0, 0, 0,
1039 202, 202, 202, 202, 202, 202, 202, 202, 202, 0,
1040 202, 202, 202, 202, 202, 202, 202, 0, 202, 0,
1041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1042 0, 0, 0, 202, 0, 0, 0, 0, 0, 0,
1043 202, 202, 0, 202, 0, 202, 202, 202, 0, 0,
1044 202, 202, 0, 202, 202, 202, 202, 286, 0, 0,
1045 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1046 0, 0, 0, 0, 202, 0, 202, 0, 0, 0,
1047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1048 0, 0, 0, 0, 0, 0, 0, 0, 202, 202,
1049 0, 0, 0, 0, 0, 202, 202, 202, 202, 202,
1050 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
1051 202, 202, 202, 0, 0, 0, 0, 0, 284, 0,
1052 0, 0, 0, 0, 0, 0, 284, 284, 284, 284,
1053 284, 284, 284, 284, 284, 284, 284, 284, 286, 0,
1054 0, 284, 284, 284, 0, 0, 0, 284, 284, 284,
1055 284, 284, 284, 284, 284, 284, 0, 284, 284, 284,
1056 284, 284, 284, 284, 0, 284, 0, 0, 0, 0,
1057 286, 0, 286, 0, 0, 0, 0, 0, 0, 0,
1058 284, 0, 0, 0, 0, 0, 0, 284, 284, 0,
1059 284, 0, 284, 284, 284, 0, 0, 284, 284, 0,
1060 284, 284, 284, 284, 249, 0, 0, 0, 0, 0,
1061 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1062 0, 284, 0, 284, 0, 0, 0, 0, 0, 0,
1063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1064 0, 0, 0, 0, 0, 284, 284, 0, 0, 0,
1065 0, 0, 284, 284, 284, 284, 284, 284, 284, 284,
1066 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
1067 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1069 0, 0, 0, 0, 0, 249, 0, 0, 0, 0,
1070 0, 0, 0, 0, 0, 0, 0, 286, 0, 0,
1071 0, 0, 0, 0, 0, 286, 286, 286, 286, 286,
1072 286, 286, 286, 286, 286, 286, 286, 0, 0, 249,
1073 286, 286, 286, 0, 0, 0, 286, 286, 286, 286,
1074 286, 286, 286, 286, 286, 0, 286, 286, 286, 286,
1075 286, 286, 286, 0, 286, 0, 0, 0, 0, 0,
1076 0, 0, 0, 0, 0, 0, 0, 0, 0, 286,
1077 0, 0, 0, 0, 0, 0, 286, 286, 0, 286,
1078 0, 286, 286, 286, 0, 0, 286, 286, 0, 286,
1079 286, 286, 286, 279, 0, 0, 0, 0, 0, 0,
1080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1081 286, 0, 286, 0, 0, 0, 0, 0, 0, 0,
1082 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1083 0, 0, 0, 0, 286, 286, 0, 0, 0, 0,
1084 0, 286, 286, 286, 286, 286, 286, 286, 286, 286,
1085 286, 286, 286, 286, 286, 286, 286, 286, 286, 0,
1086 0, 0, 0, 0, 249, 0, 0, 0, 0, 0,
1087 0, 0, 249, 249, 249, 249, 249, 249, 249, 249,
1088 249, 249, 249, 249, 279, 0, 0, 249, 249, 249,
1089 0, 0, 0, 249, 249, 249, 249, 249, 249, 249,
1090 249, 249, 0, 249, 249, 249, 249, 249, 249, 249,
1091 0, 249, 0, 0, 0, 0, 0, 0, 279, 0,
1092 0, 0, 0, 0, 0, 0, 249, 0, 0, 0,
1093 0, 0, 0, 249, 249, 0, 249, 0, 249, 249,
1094 249, 0, 0, 249, 249, 0, 249, 249, 249, 249,
1095 161, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1096 0, 0, 0, 0, 0, 0, 0, 249, 0, 249,
1097 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1098 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1099 0, 249, 249, 0, 0, 0, 0, 0, 249, 249,
1100 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
1101 249, 249, 249, 249, 249, 249, 0, 0, 0, 0,
1102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1104 0, 161, 0, 0, 0, 0, 0, 0, 0, 0,
1105 0, 0, 0, 279, 0, 0, 0, 0, 0, 0,
1106 0, 279, 279, 279, 279, 279, 279, 279, 279, 279,
1107 279, 279, 279, 0, 0, 161, 279, 279, 279, 0,
1108 0, 0, 279, 279, 279, 279, 279, 279, 279, 279,
1109 279, 0, 279, 279, 279, 279, 279, 279, 279, 0,
1110 279, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1111 0, 0, 0, 0, 0, 279, 0, 0, 0, 0,
1112 0, 0, 279, 279, 0, 279, 0, 279, 279, 279,
1113 0, 0, 279, 279, 0, 279, 279, 279, 279, 160,
1114 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1115 0, 0, 0, 0, 0, 0, 279, 0, 279, 0,
1116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1118 279, 279, 0, 0, 0, 0, 0, 279, 279, 279,
1119 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
1120 279, 279, 279, 279, 279, 0, 0, 0, 0, 0,
1121 161, 0, 0, 0, 0, 0, 0, 0, 161, 161,
1122 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
1123 160, 0, 0, 161, 161, 161, 0, 0, 0, 161,
1124 161, 161, 161, 161, 161, 161, 161, 161, 0, 161,
1125 161, 161, 161, 161, 161, 161, 0, 161, 0, 0,
1126 0, 0, 0, 0, 160, 0, 0, 0, 0, 0,
1127 0, 0, 161, 0, 0, 0, 0, 0, 0, 161,
1128 161, 0, 161, 0, 161, 161, 161, 0, 0, 161,
1129 161, 0, 161, 161, 161, 161, 275, 0, 0, 0,
1130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1131 0, 0, 0, 161, 0, 161, 0, 0, 0, 0,
1132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1133 0, 0, 0, 0, 0, 0, 0, 161, 161, 0,
1134 0, 0, 0, 0, 161, 161, 161, 161, 161, 161,
1135 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
1136 161, 161, 0, 0, 0, 0, 0, 0, 0, 0,
1137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1138 0, 0, 0, 0, 0, 0, 0, 275, 0, 0,
1139 0, 0, 0, 0, 0, 0, 0, 0, 0, 160,
1140 0, 0, 0, 0, 0, 0, 0, 160, 160, 160,
1141 160, 160, 160, 160, 160, 160, 160, 160, 160, 0,
1142 0, 275, 160, 160, 160, 0, 0, 0, 160, 160,
1143 160, 160, 160, 160, 160, 160, 160, 0, 160, 160,
1144 160, 160, 160, 160, 160, 0, 160, 0, 0, 0,
1145 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1146 0, 160, 0, 0, 0, 0, 0, 0, 160, 160,
1147 0, 160, 0, 160, 160, 160, 0, 0, 160, 160,
1148 0, 160, 160, 160, 160, 97, 0, 0, 0, 0,
1149 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1150 0, 0, 160, 0, 160, 0, 0, 0, 0, 0,
1151 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1152 0, 0, 0, 0, 0, 0, 160, 160, 0, 0,
1153 0, 0, 0, 160, 160, 160, 160, 160, 160, 160,
1154 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
1155 160, 0, 0, 0, 0, 0, 275, 0, 0, 0,
1156 0, 0, 0, 0, 275, 275, 275, 275, 275, 275,
1157 275, 275, 275, 275, 275, 275, 97, 0, 0, 275,
1158 275, 275, 0, 0, 0, 275, 275, 275, 275, 275,
1159 275, 275, 275, 275, 0, 275, 275, 275, 275, 275,
1160 275, 275, 0, 275, 0, 0, 0, 0, 0, 0,
1161 97, 0, 0, 0, 0, 0, 0, 0, 275, 0,
1162 0, 0, 0, 0, 0, 275, 275, 0, 275, 0,
1163 275, 275, 275, 0, 0, 275, 275, 0, 275, 275,
1164 275, 275, 99, 0, 0, 0, 0, 0, 0, 0,
1165 0, 0, 0, 0, 0, 0, 0, 0, 0, 275,
1166 0, 275, 0, 0, 0, 0, 0, 0, 0, 0,
1167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1168 0, 0, 0, 275, 275, 0, 0, 0, 0, 0,
1169 275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
1170 275, 275, 275, 275, 275, 275, 275, 275, 0, 0,
1171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1173 0, 0, 0, 99, 0, 0, 0, 0, 0, 0,
1174 0, 0, 0, 0, 0, 97, 0, 0, 0, 0,
1175 0, 0, 0, 97, 97, 97, 97, 97, 97, 97,
1176 97, 97, 97, 97, 97, 0, 0, 99, 97, 97,
1177 97, 0, 0, 0, 97, 97, 97, 97, 97, 97,
1178 97, 97, 97, 0, 97, 97, 97, 97, 97, 97,
1179 97, 0, 97, 0, 0, 0, 0, 0, 0, 0,
1180 0, 0, 0, 0, 0, 0, 0, 97, 0, 0,
1181 0, 0, 0, 0, 97, 97, 0, 97, 0, 97,
1182 97, 97, 0, 0, 97, 97, 0, 97, 97, 97,
1183 97, 247, 0, 0, 0, 0, 0, 0, 0, 0,
1184 0, 0, 0, 0, 0, 0, 0, 0, 97, 0,
1185 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1186 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1187 0, 0, 97, 97, 0, 0, 0, 0, 0, 97,
1188 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1189 97, 97, 97, 97, 97, 97, 97, 0, 0, 0,
1190 0, 0, 99, 0, 0, 0, 0, 0, 0, 0,
1191 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1192 99, 99, 247, 0, 0, 99, 99, 99, 0, 0,
1193 0, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1194 0, 99, 99, 99, 99, 99, 99, 99, 0, 99,
1195 0, 0, 0, 0, 0, 0, 247, 0, 0, 0,
1196 0, 0, 0, 0, 99, 0, 0, 0, 0, 0,
1197 0, 99, 99, 0, 99, 0, 99, 99, 99, 0,
1198 0, 99, 99, 0, 99, 99, 99, 99, 257, 0,
1199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1200 0, 0, 0, 0, 0, 99, 0, 99, 0, 0,
1201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1202 0, 0, 0, 0, 0, 0, 0, 0, 0, 99,
1203 99, 0, 0, 0, 0, 0, 99, 99, 99, 99,
1204 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1205 99, 99, 99, 99, 0, 0, 0, 0, 0, 0,
1206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1207 0, 0, 0, 0, 0, 0, 0, 0, 0, 257,
1208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1209 0, 247, 0, 0, 0, 0, 0, 0, 0, 247,
1210 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
1211 247, 0, 0, 257, 247, 247, 247, 0, 0, 0,
1212 247, 247, 247, 247, 247, 247, 247, 247, 247, 0,
1213 247, 247, 247, 247, 247, 247, 247, 0, 247, 0,
1214 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1215 0, 0, 0, 247, 0, 0, 0, 0, 0, 0,
1216 247, 247, 0, 247, 0, 247, 247, 247, 0, 0,
1217 247, 247, 0, 247, 247, 247, 247, 273, 0, 0,
1218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1219 0, 0, 0, 0, 247, 0, 247, 0, 0, 0,
1220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1221 0, 0, 0, 0, 0, 0, 0, 0, 247, 247,
1222 0, 0, 0, 0, 0, 247, 247, 247, 247, 247,
1223 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
1224 247, 247, 247, 0, 0, 0, 0, 0, 257, 0,
1225 0, 0, 0, 0, 0, 0, 257, 257, 257, 257,
1226 257, 257, 257, 257, 257, 257, 257, 257, 273, 0,
1227 0, 257, 257, 257, 0, 0, 0, 257, 257, 257,
1228 257, 257, 257, 257, 257, 257, 0, 257, 257, 257,
1229 257, 257, 257, 257, 0, 257, 0, 0, 0, 0,
1230 0, 0, 273, 0, 0, 0, 0, 0, 0, 0,
1231 257, 0, 0, 0, 0, 0, 0, 257, 257, 0,
1232 257, 0, 257, 257, 257, 0, 0, 257, 257, 0,
1233 257, 257, 257, 257, 18, 0, 0, 0, 0, 0,
1234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1235 0, 257, 0, 257, 0, 0, 0, 0, 0, 0,
1236 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1237 0, 0, 0, 0, 0, 257, 257, 0, 0, 0,
1238 0, 0, 257, 257, 257, 257, 257, 257, 257, 257,
1239 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
1240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1242 0, 0, 0, 0, 0, 18, 0, 0, 0, 0,
1243 0, 0, 0, 0, 0, 0, 0, 273, 0, 0,
1244 0, 0, 0, 0, 0, 273, 273, 273, 273, 273,
1245 273, 273, 273, 273, 273, 273, 273, 0, 0, 18,
1246 273, 273, 273, 0, 0, 0, 273, 273, 273, 273,
1247 273, 273, 273, 273, 273, 0, 273, 273, 273, 273,
1248 273, 273, 273, 0, 273, 0, 0, 0, 0, 0,
1249 0, 0, 0, 0, 0, 0, 0, 0, 0, 273,
1250 0, 0, 0, 0, 0, 0, 273, 273, 0, 273,
1251 0, 273, 273, 273, 0, 0, 273, 273, 0, 273,
1252 273, 273, 273, 277, 0, 0, 0, 0, 0, 0,
1253 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1254 273, 0, 273, 0, 0, 0, 0, 0, 0, 0,
1255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1256 0, 0, 0, 0, 273, 273, 0, 0, 0, 0,
1257 0, 273, 273, 273, 273, 273, 273, 273, 273, 273,
1258 273, 273, 273, 273, 273, 273, 273, 273, 273, 0,
1259 0, 0, 0, 0, 18, 0, 0, 0, 0, 0,
1260 0, 0, 18, 18, 18, 18, 18, 18, 18, 18,
1261 18, 18, 18, 18, 277, 0, 0, 18, 18, 18,
1262 0, 0, 0, 18, 18, 18, 18, 18, 18, 18,
1263 18, 18, 0, 18, 18, 18, 18, 18, 18, 18,
1264 0, 18, 0, 0, 0, 0, 0, 0, 277, 0,
1265 0, 0, 0, 0, 0, 0, 18, 0, 0, 0,
1266 0, 0, 0, 18, 18, 0, 18, 0, 18, 18,
1267 18, 0, 0, 18, 18, 0, 18, 18, 18, 18,
1268 270, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1269 0, 0, 0, 0, 0, 0, 0, 18, 0, 18,
1270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1272 0, 18, 18, 0, 0, 0, 0, 0, 18, 18,
1273 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1274 18, 18, 18, 18, 18, 18, 0, 0, 0, 0,
1275 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1277 0, 270, 0, 0, 0, 0, 0, 0, 0, 0,
1278 0, 0, 0, 277, 0, 0, 0, 0, 0, 0,
1279 0, 277, 277, 277, 277, 277, 277, 277, 277, 277,
1280 277, 277, 277, 0, 0, 270, 277, 277, 277, 0,
1281 0, 0, 277, 277, 277, 277, 277, 277, 277, 277,
1282 277, 0, 277, 277, 277, 277, 277, 277, 277, 0,
1283 277, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1284 0, 0, 0, 0, 22, 277, 0, 0, 0, 0,
1285 0, 0, 277, 277, 0, 277, 0, 277, 277, 277,
1286 0, 0, 277, 277, 0, 277, 277, 277, 277, 0,
1287 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1288 0, 0, 0, 0, 0, 0, 277, 0, 277, 0,
1289 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1290 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1291 277, 277, 0, 0, 0, 0, 0, 277, 277, 277,
1292 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
1293 277, 277, 277, 277, 277, 22, 0, 0, 0, 0,
1294 270, 0, 0, 0, 0, 0, 0, 0, 270, 270,
1295 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
1296 0, 0, 0, 270, 270, 270, 0, 0, 0, 270,
1297 270, 270, 270, 270, 270, 270, 270, 270, 0, 270,
1298 270, 270, 270, 270, 270, 270, 0, 270, 0, 0,
1299 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1300 0, 25, 270, 0, 0, 0, 0, 0, 0, 270,
1301 270, 0, 270, 0, 270, 270, 270, 0, 0, 270,
1302 270, 0, 270, 270, 270, 270, 0, 0, 0, 0,
1303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1304 0, 0, 0, 270, 0, 270, 0, 0, 0, 0,
1305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1306 0, 0, 0, 0, 0, 0, 0, 270, 270, 0,
1307 0, 0, 0, 0, 270, 270, 270, 270, 270, 270,
1308 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
1309 270, 270, 25, 0, 473, 0, 0, 0, 0, 0,
1310 0, 0, 0, 0, 22, 0, 0, 250, 0, 0,
1311 0, 0, 22, 22, 22, 22, 22, 22, 22, 22,
1312 22, 22, 22, 22, 0, 0, 0, 22, 22, 22,
1313 0, 0, 0, 22, 22, 22, 22, 22, 22, 22,
1314 22, 22, 0, 22, 22, 22, 22, 22, 22, 22,
1315 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
1316 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
1317 0, 0, 0, 22, 22, 0, 22, 0, 22, 22,
1318 22, 0, 0, 22, 22, 0, 22, 0, 22, 0,
1319 0, 0, 0, 0, 0, 0, 250, 0, 0, 0,
1320 0, 0, 0, 0, 0, 0, 0, 22, 0, 22,
1321 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1322 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1323 0, 22, 22, 0, 0, 0, 0, 0, 22, 22,
1324 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1325 22, 22, 22, 22, 22, 22, 0, 0, 0, 0,
1326 0, 25, 0, 0, 0, 0, 0, 0, 0, 25,
1327 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1328 25, 0, 0, 0, 25, 25, 25, 0, 0, 0,
1329 25, 25, 25, 25, 25, 25, 25, 25, 25, 0,
1330 25, 25, 25, 25, 25, 25, 25, 0, 25, 0,
1331 0, 471, 0, 0, 0, 472, 0, 0, 0, 0,
1332 0, 0, 0, 25, 595, 347, 0, 0, 0, 0,
1333 25, 25, 0, 25, 0, 25, 25, 25, 0, 0,
1334 25, 25, 0, 25, 0, 25, 0, 0, 0, 0,
1335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1336 0, 0, 0, 0, 25, 0, 25, 201, 202, 0,
1337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1338 201, 202, 0, 0, 0, 0, 0, 0, 25, 25,
1339 59, 0, 0, 0, 0, 25, 25, 25, 25, 25,
1340 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1341 25, 25, 25, 0, 347, 0, 0, 0, 0, 0,
1342 0, 0, 0, 239, 240, 241, 242, 243, 0, 244,
1343 205, 245, 246, 247, 248, 249, 239, 240, 241, 242,
1344 243, 0, 244, 205, 245, 246, 247, 248, 249, 0,
1345 0, 0, 0, 0, 207, 208, 0, 0, 474, 475,
1346 712, 713, 0, 0, 251, 0, 0, 207, 208, 201,
1347 202, 714, 715, 716, 0, 0, 0, 251, 0, 0,
1348 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1349 0, 0, 0, 0, 717, 0, 718, 719, 720, 721,
1350 722, 723, 724, 725, 726, 727, 0, 0, 0, 0,
1351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1352 0, 0, 0, 0, 0, 239, 240, 241, 242, 243,
1353 192, 244, 205, 245, 246, 247, 248, 249, 0, 0,
1354 0, 193, 194, 0, 0, 0, 0, 0, 0, 0,
1355 0, 0, 0, 0, 0, 0, 207, 208, 0, 15,
1356 0, 0, 0, 0, 0, 0, 251, 16, 0, 0,
1357 17, 18, 19, 20, 21, 22, 23, 24, 25, 0,
1358 0, 0, 26, 27, 28, 0, 0, 0, 29, 30,
1359 31, 32, 33, 34, 35, 36, 37, 0, 38, 39,
1360 40, 41, 42, 43, 44, 0, 45, 0, 0, 0,
1361 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1362 0, 46, 0, 0, 0, 0, 0, 0, 47, 48,
1363 0, 49, 0, 50, 51, 52, 0, 0, 53, 54,
1364 0, 55, 0, 56, 0, 0, 0, 0, 0, 0,
1365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1366 0, 0, 57, 0, 58, 0, 0, 0, 0, 0,
1367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1368 0, 0, 0, 0, 0, 0, 60, 61, 0, 0,
1369 0, 0, 0, 62, 63, 64, 65, 66, 67, 68,
1370 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1373 short yycheck
[] = { 86,
1374 59, 169, 136, 134, 40, 40, 144, 295, 142, 143,
1375 395, 40, 146, 147, 148, 40, 497, 40, 40, 40,
1376 40, 159, 160, 161, 158, 40, 40, 37, 166, 40,
1377 328, 328, 42, 43, 40, 45, 408, 47, 40, 549,
1378 174, 40, 547, 40, 91, 40, 402, 403, 40, 40,
1379 545, 185, 0, 40, 185, 125, 432, 687, 313, 44,
1380 313, 40, 40, 313, 149, 150, 257, 355, 44, 399,
1381 44, 359, 44, 258, 58, 44, 44, 433, 44, 40,
1382 40, 37, 167, 93, 259, 44, 42, 43, 58, 45,
1383 46, 47, 44, 44, 123, 44, 40, 258, 157, 361,
1384 185, 262, 263, 152, 153, 154, 324, 241, 242, 259,
1385 244, 37, 123, 58, 589, 37, 42, 43, 177, 45,
1386 42, 47, 313, 385, 183, 47, 185, 385, 313, 37,
1387 385, 40, 385, 301, 42, 385, 44, 40, 313, 47,
1388 125, 396, 397, 309, 123, 620, 91, 313, 40, 125,
1389 385, 125, 313, 125, 239, 240, 125, 125, 385, 125,
1390 641, 396, 397, 313, 313, 795, 125, 93, 41, 58,
1391 43, 320, 45, 125, 125, 41, 125, 37, 44, 44,
1392 661, 0, 42, 43, 37, 45, 308, 47, 325, 42,
1393 43, 313, 45, 703, 47, 37, 701, 328, 91, 41,
1394 42, 43, 40, 45, 699, 47, 41, 258, 346, 44,
1395 37, 262, 263, 260, 41, 42, 43, 44, 45, 311,
1396 47, 313, 258, 361, 358, 393, 360, 58, 257, 313,
1397 368, 315, 316, 521, 372, 258, 370, 371, 376, 262,
1398 93, 300, 58, 258, 541, 543, 257, 306, 307, 336,
1399 309, 310, 311, 312, 313, 585, 258, 629, 58, 258,
1400 262, 258, 396, 262, 263, 257, 622, 258, 327, 328,
1401 257, 262, 263, 343, 650, 345, 407, 298, 257, 257,
1402 339, 41, 58, 421, 44, 123, 58, 41, 313, 348,
1403 44, 313, 314, 313, 353, 58, 257, 257, 357, 313,
1404 314, 58, 313, 317, 318, 58, 125, 313, 58, 308,
1405 309, 310, 58, 257, 313, 314, 313, 314, 313, 378,
1406 454, 269, 270, 58, 323, 264, 265, 266, 267, 58,
1407 464, 465, 58, 621, 313, 384, 269, 270, 337, 338,
1408 58, 390, 391, 392, 286, 287, 288, 346, 347, 348,
1409 349, 350, 313, 313, 257, 318, 319, 367, 394, 395,
1410 419, 58, 376, 362, 845, 364, 58, 402, 403, 313,
1411 385, 394, 395, 0, 385, 404, 405, 376, 763, 394,
1412 395, 396, 397, 312, 313, 341, 400, 401, 385, 298,
1413 390, 391, 394, 395, 430, 406, 407, 394, 395, 396,
1414 397, 400, 401, 58, 313, 314, 385, 430, 539, 697,
1415 313, 38, 404, 405, 41, 430, 43, 44, 45, 46,
1416 258, 313, 314, 58, 385, 385, 317, 318, 430, 408,
1417 409, 430, 343, 430, 345, 58, 274, 58, 276, 58,
1418 58, 385, 280, 281, 282, 406, 407, 615, 408, 409,
1419 269, 270, 590, 58, 58, 58, 594, 58, 58, 597,
1420 598, 58, 58, 37, 91, 524, 93, 376, 42, 43,
1421 58, 45, 58, 47, 58, 313, 314, 58, 537, 647,
1422 648, 649, 385, 58, 376, 58, 617, 387, 40, 58,
1423 61, 400, 401, 44, 332, 37, 123, 40, 125, 61,
1424 42, 43, 790, 45, 91, 47, 40, 123, 400, 401,
1425 46, 91, 800, 91, 44, 646, 44, 37, 44, 93,
1426 384, 652, 42, 43, 343, 45, 345, 47, 258, 40,
1427 0, 91, 257, 592, 593, 37, 374, 596, 376, 44,
1428 42, 43, 91, 45, 37, 47, 44, 385, 257, 42,
1429 43, 93, 45, 841, 47, 44, 394, 395, 396, 397,
1430 91, 44, 400, 401, 402, 403, 44, 44, 38, 44,
1431 38, 41, 37, 43, 44, 45, 46, 42, 43, 40,
1432 45, 40, 47, 40, 40, 716, 754, 40, 258, 37,
1433 91, 93, 430, 41, 42, 43, 655, 45, 44, 47,
1434 93, 44, 44, 40, 258, 37, 665, 775, 776, 777,
1435 42, 43, 37, 45, 44, 47, 41, 42, 43, 44,
1436 45, 91, 47, 93, 37, 44, 260, 44, 93, 42,
1437 43, 44, 45, 260, 47, 44, 258, 44, 44, 44,
1438 44, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1439 277, 278, 279, 123, 44, 125, 283, 284, 285, 258,
1440 44, 93, 289, 290, 291, 292, 293, 294, 295, 296,
1441 297, 44, 299, 300, 301, 302, 303, 304, 305, 738,
1442 307, 44, 395, 44, 397, 93, 399, 44, 401, 41,
1443 403, 41, 405, 44, 407, 322, 409, 44, 411, 58,
1444 58, 257, 329, 330, 58, 332, 93, 334, 335, 336,
1445 58, 257, 339, 340, 341, 342, 343, 344, 345, 0,
1446 854, 44, 37, 386, 783, 44, 860, 42, 43, 44,
1447 45, 44, 47, 44, 259, 312, 363, 44, 365, 44,
1448 367, 382, 312, 830, 41, 44, 44, 93, 258, 321,
1449 44, 44, 44, 321, 44, 125, 843, 257, 44, 41,
1450 387, 388, 258, 44, 44, 385, 44, 394, 395, 396,
1451 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1452 407, 408, 409, 410, 411, 124, 44, 385, 41, 44,
1453 260, 91, 44, 44, 44, 44, 44, 44, 268, 269,
1454 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1455 91, 258, 93, 283, 284, 285, 91, 44, 44, 289,
1456 290, 291, 292, 293, 294, 295, 296, 297, 44, 299,
1457 300, 301, 302, 303, 304, 305, 258, 307, 258, 44,
1458 258, 44, 123, 44, 125, 44, 312, 44, 258, 44,
1459 44, 331, 322, 44, 257, 41, 46, 44, 58, 329,
1460 330, 258, 332, 40, 334, 335, 336, 41, 44, 339,
1461 340, 341, 342, 343, 344, 345, 388, 257, 386, 41,
1462 58, 41, 394, 58, 396, 58, 398, 58, 400, 58,
1463 402, 44, 404, 363, 406, 365, 408, 367, 410, 259,
1464 44, 312, 44, 40, 44, 258, 321, 321, 0, 258,
1465 44, 44, 385, 44, 44, 123, 44, 387, 388, 44,
1466 41, 41, 41, 41, 394, 395, 396, 397, 398, 399,
1467 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1468 410, 411, 258, 44, 93, 44, 38, 388, 258, 41,
1469 258, 44, 44, 394, 395, 396, 397, 398, 399, 400,
1470 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1471 411, 44, 44, 258, 258, 44, 41, 58, 58, 260,
1472 259, 58, 58, 257, 286, 41, 44, 268, 269, 270,
1473 271, 272, 273, 274, 275, 276, 277, 278, 279, 91,
1474 44, 258, 283, 284, 285, 41, 44, 41, 289, 290,
1475 291, 292, 293, 294, 295, 296, 297, 41, 299, 300,
1476 301, 302, 303, 304, 305, 44, 307, 261, 58, 125,
1477 44, 41, 44, 125, 258, 44, 313, 258, 258, 124,
1478 58, 322, 259, 286, 41, 258, 41, 41, 329, 330,
1479 41, 332, 44, 334, 335, 336, 41, 383, 339, 340,
1480 41, 342, 343, 344, 345, 41, 44, 44, 41, 44,
1481 0, 0, 41, 41, 386, 125, 93, 41, 44, 41,
1482 123, 123, 363, 41, 365, 125, 677, 794, 602, 652,
1483 761, 191, 820, 449, 48, 832, 248, 0, 442, 54,
1484 859, 168, 419, 753, 395, 6, 387, 388, 319, 431,
1485 766, 163, 138, 394, 395, 396, 397, 398, 399, 400,
1486 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1487 411, 340, 629, 454, -1, -1, -1, -1, 41, -1,
1488 -1, 44, -1, -1, -1, -1, -1, -1, -1, -1,
1489 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1490 -1, -1, -1, -1, -1, -1, -1, -1, 260, -1,
1491 -1, -1, -1, -1, -1, -1, 268, 269, 270, 271,
1492 272, 273, 274, 275, 276, 277, 278, 279, 91, -1,
1493 -1, 283, 284, 285, -1, -1, -1, 289, 290, 291,
1494 292, 293, 294, 295, 296, 297, -1, 299, 300, 301,
1495 302, 303, 304, 305, -1, 307, -1, -1, -1, -1,
1496 -1, -1, 125, -1, -1, -1, -1, -1, -1, -1,
1497 322, -1, -1, -1, -1, -1, -1, 329, 330, -1,
1498 332, -1, 334, 335, 336, -1, -1, 339, 340, -1,
1499 342, 343, 344, 345, 0, -1, -1, -1, -1, -1,
1500 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1501 -1, 363, -1, 365, -1, -1, -1, -1, -1, -1,
1502 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1503 -1, -1, -1, -1, -1, 387, 388, -1, 44, -1,
1504 -1, -1, 394, 395, 396, 397, 398, 399, 400, 401,
1505 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
1506 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1507 -1, -1, -1, -1, -1, -1, -1, 40, -1, -1,
1508 -1, -1, -1, -1, -1, 91, -1, -1, -1, -1,
1509 -1, -1, -1, -1, -1, -1, -1, 260, -1, -1,
1510 -1, -1, -1, -1, -1, 268, 269, 270, 271, 272,
1511 273, 274, 275, 276, 277, 278, 279, 123, -1, 125,
1512 283, 284, 285, -1, -1, -1, 289, 290, 291, 292,
1513 293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
1514 303, 304, 305, -1, 307, -1, -1, -1, -1, -1,
1515 -1, -1, -1, -1, -1, -1, -1, -1, -1, 322,
1516 -1, -1, -1, -1, -1, -1, 329, 330, -1, 332,
1517 -1, 334, 335, 336, -1, -1, 339, 340, -1, 342,
1518 343, 344, 345, 0, -1, -1, -1, -1, -1, -1,
1519 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1520 363, -1, 365, -1, -1, -1, -1, -1, -1, -1,
1521 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1522 -1, -1, -1, -1, 387, 388, -1, 44, -1, -1,
1523 -1, 394, 395, 396, 397, 398, 399, 400, 401, 402,
1524 403, 404, 405, 406, 407, 408, 409, 410, 411, -1,
1525 -1, -1, -1, -1, 260, -1, -1, -1, -1, -1,
1526 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1527 276, 277, 278, 279, 91, -1, -1, 283, 284, 285,
1528 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1529 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1530 -1, 307, -1, -1, -1, -1, 123, -1, 125, -1,
1531 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1532 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1533 336, -1, -1, 339, 340, -1, 342, 343, 344, 345,
1534 0, -1, -1, -1, -1, -1, -1, -1, -1, 312,
1535 313, 314, -1, -1, -1, -1, -1, 363, -1, 365,
1536 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1537 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1538 -1, 387, 388, -1, 44, -1, -1, -1, 394, 395,
1539 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1540 406, 407, 408, 409, 410, 411, 369, 370, 371, 372,
1541 373, -1, 375, 376, 377, 378, 379, 380, 381, -1,
1542 -1, -1, -1, 40, -1, -1, -1, -1, -1, -1,
1543 -1, 91, -1, -1, -1, -1, -1, 400, 401, -1,
1544 -1, -1, -1, 260, -1, -1, -1, 410, -1, -1,
1545 -1, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1546 277, 278, 279, 123, -1, 125, 283, 284, 285, -1,
1547 -1, -1, 289, 290, 291, 292, 293, 294, 295, 296,
1548 297, -1, 299, 300, 301, 302, 303, 304, 305, -1,
1549 307, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1550 -1, -1, -1, -1, -1, 322, -1, -1, -1, -1,
1551 -1, -1, 329, 330, -1, 332, -1, 334, 335, 336,
1552 -1, -1, 339, 340, -1, 342, 343, 344, 345, 0,
1553 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1554 -1, -1, -1, -1, -1, -1, 363, -1, 365, -1,
1555 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1556 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1557 387, 388, -1, 44, -1, -1, -1, 394, 395, 396,
1558 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1559 407, 408, 409, 410, 411, -1, -1, -1, -1, -1,
1560 260, -1, -1, -1, -1, -1, -1, -1, 268, 269,
1561 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1562 91, -1, -1, 283, 284, 285, -1, -1, -1, 289,
1563 290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
1564 300, 301, 302, 303, 304, 305, -1, 307, -1, -1,
1565 -1, -1, 123, -1, 125, -1, -1, -1, -1, -1,
1566 -1, -1, 322, -1, -1, -1, -1, -1, -1, 329,
1567 330, -1, 332, -1, 334, 335, 336, -1, -1, 339,
1568 340, -1, 342, 343, 344, 345, 0, -1, -1, -1,
1569 -1, -1, -1, -1, -1, -1, 313, 314, -1, -1,
1570 -1, -1, -1, 363, -1, 365, -1, -1, -1, -1,
1571 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1572 -1, -1, -1, -1, -1, -1, -1, 387, 388, -1,
1573 -1, -1, -1, -1, 394, 395, 396, 397, 398, 399,
1574 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1575 410, 411, 369, 370, 371, 372, 373, -1, 375, 376,
1576 377, 378, 379, 380, 381, -1, -1, -1, -1, -1,
1577 -1, -1, -1, -1, -1, -1, -1, 91, -1, -1,
1578 -1, -1, -1, 400, 401, -1, -1, -1, -1, 260,
1579 -1, -1, -1, 410, -1, -1, -1, 268, 269, 270,
1580 271, 272, 273, 274, 275, 276, 277, 278, 279, 123,
1581 -1, 125, 283, 284, 285, -1, -1, -1, 289, 290,
1582 291, 292, 293, 294, 295, 296, 297, -1, 299, 300,
1583 301, 302, 303, 304, 305, -1, 307, -1, -1, -1,
1584 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1585 -1, 322, -1, -1, -1, -1, -1, -1, 329, 330,
1586 -1, 332, -1, 334, 335, 336, -1, -1, 339, 340,
1587 -1, 342, 343, 344, 345, 0, -1, -1, -1, -1,
1588 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1589 -1, -1, 363, -1, 365, -1, -1, -1, -1, -1,
1590 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1591 -1, -1, -1, -1, -1, -1, 387, 388, -1, -1,
1592 -1, -1, -1, 394, 395, 396, 397, 398, 399, 400,
1593 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1594 411, -1, -1, -1, -1, -1, 260, -1, -1, -1,
1595 -1, -1, -1, -1, 268, 269, 270, 271, 272, 273,
1596 274, 275, 276, 277, 278, 279, 91, -1, -1, 283,
1597 284, 285, -1, -1, -1, 289, 290, 291, 292, 293,
1598 294, 295, 296, 297, -1, 299, 300, 301, 302, 303,
1599 304, 305, -1, 307, -1, -1, -1, -1, 123, -1,
1600 125, -1, -1, -1, -1, -1, -1, -1, 322, -1,
1601 -1, -1, -1, -1, -1, 329, 330, -1, 332, -1,
1602 334, 335, 336, -1, -1, 339, 340, -1, 342, 343,
1603 344, 345, 0, -1, -1, -1, -1, -1, -1, -1,
1604 -1, -1, -1, -1, -1, -1, -1, -1, -1, 363,
1605 -1, 365, -1, -1, -1, -1, -1, -1, -1, -1,
1606 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1607 -1, -1, -1, 387, 388, -1, -1, -1, -1, -1,
1608 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
1609 404, 405, 406, 407, 408, 409, 410, 411, -1, -1,
1610 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1611 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1612 -1, -1, -1, 91, -1, -1, -1, -1, -1, -1,
1613 -1, -1, -1, -1, -1, 260, -1, -1, -1, -1,
1614 -1, -1, -1, 268, 269, 270, 271, 272, 273, 274,
1615 275, 276, 277, 278, 279, -1, -1, 125, 283, 284,
1616 285, -1, -1, -1, 289, 290, 291, 292, 293, 294,
1617 295, 296, 297, -1, 299, 300, 301, 302, 303, 304,
1618 305, -1, 307, -1, -1, -1, -1, -1, -1, -1,
1619 -1, -1, -1, -1, -1, -1, -1, 322, -1, -1,
1620 -1, -1, -1, -1, 329, 330, -1, 332, -1, 334,
1621 335, 336, -1, -1, 339, 340, -1, 342, 343, 344,
1622 345, 0, -1, -1, -1, -1, -1, -1, -1, -1,
1623 -1, -1, -1, -1, -1, -1, -1, -1, 363, -1,
1624 365, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1625 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1626 -1, -1, 387, 388, -1, -1, -1, -1, -1, 394,
1627 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1628 405, 406, 407, 408, 409, 410, 411, -1, -1, -1,
1629 -1, -1, 260, -1, -1, -1, -1, -1, -1, -1,
1630 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1631 278, 279, 91, -1, -1, 283, 284, 285, -1, -1,
1632 -1, 289, 290, 291, 292, 293, 294, 295, 296, 297,
1633 -1, 299, 300, 301, 302, 303, 304, 305, -1, 307,
1634 -1, -1, -1, -1, 123, -1, 125, -1, -1, -1,
1635 -1, -1, -1, -1, 322, -1, -1, -1, -1, -1,
1636 -1, 329, 330, 331, 332, -1, 334, 335, 336, -1,
1637 -1, 339, 340, -1, 342, 343, 344, 345, 0, -1,
1638 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1639 -1, -1, -1, -1, -1, 363, -1, 365, -1, -1,
1640 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1641 -1, -1, -1, -1, -1, -1, -1, -1, -1, 387,
1642 388, -1, -1, -1, -1, -1, 394, 395, 396, 397,
1643 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
1644 408, 409, 410, 411, -1, -1, -1, -1, -1, -1,
1645 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1646 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
1647 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1648 -1, 260, -1, -1, -1, -1, -1, -1, -1, 268,
1649 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
1650 279, 123, -1, 125, 283, 284, 285, -1, -1, -1,
1651 289, 290, 291, 292, 293, 294, 295, 296, 297, -1,
1652 299, 300, 301, 302, 303, 304, 305, -1, 307, -1,
1653 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1654 -1, -1, -1, 322, -1, -1, -1, -1, -1, -1,
1655 329, 330, -1, 332, -1, 334, 335, 336, -1, -1,
1656 339, 340, -1, 342, 343, 344, 345, 0, -1, -1,
1657 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1658 -1, -1, -1, -1, 363, -1, 365, -1, -1, -1,
1659 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1660 -1, -1, -1, -1, -1, -1, -1, -1, 387, 388,
1661 -1, -1, -1, -1, -1, 394, 395, 396, 397, 398,
1662 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
1663 409, 410, 411, -1, -1, -1, -1, -1, 260, -1,
1664 -1, -1, -1, -1, -1, -1, 268, 269, 270, 271,
1665 272, 273, 274, 275, 276, 277, 278, 279, 91, -1,
1666 -1, 283, 284, 285, -1, -1, -1, 289, 290, 291,
1667 292, 293, 294, 295, 296, 297, -1, 299, 300, 301,
1668 302, 303, 304, 305, -1, 307, -1, -1, -1, -1,
1669 123, -1, 125, -1, -1, -1, -1, -1, -1, -1,
1670 322, -1, -1, -1, -1, -1, -1, 329, 330, -1,
1671 332, -1, 334, 335, 336, -1, -1, 339, 340, -1,
1672 342, 343, 344, 345, 0, -1, -1, -1, -1, -1,
1673 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1674 -1, 363, -1, 365, -1, -1, -1, -1, -1, -1,
1675 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1676 -1, -1, -1, -1, -1, 387, 388, -1, -1, -1,
1677 -1, -1, 394, 395, 396, 397, 398, 399, 400, 401,
1678 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
1679 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1680 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1681 -1, -1, -1, -1, -1, 91, -1, -1, -1, -1,
1682 -1, -1, -1, -1, -1, -1, -1, 260, -1, -1,
1683 -1, -1, -1, -1, -1, 268, 269, 270, 271, 272,
1684 273, 274, 275, 276, 277, 278, 279, -1, -1, 125,
1685 283, 284, 285, -1, -1, -1, 289, 290, 291, 292,
1686 293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
1687 303, 304, 305, -1, 307, -1, -1, -1, -1, -1,
1688 -1, -1, -1, -1, -1, -1, -1, -1, -1, 322,
1689 -1, -1, -1, -1, -1, -1, 329, 330, -1, 332,
1690 -1, 334, 335, 336, -1, -1, 339, 340, -1, 342,
1691 343, 344, 345, 0, -1, -1, -1, -1, -1, -1,
1692 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1693 363, -1, 365, -1, -1, -1, -1, -1, -1, -1,
1694 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1695 -1, -1, -1, -1, 387, 388, -1, -1, -1, -1,
1696 -1, 394, 395, 396, 397, 398, 399, 400, 401, 402,
1697 403, 404, 405, 406, 407, 408, 409, 410, 411, -1,
1698 -1, -1, -1, -1, 260, -1, -1, -1, -1, -1,
1699 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1700 276, 277, 278, 279, 91, -1, -1, 283, 284, 285,
1701 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1702 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1703 -1, 307, -1, -1, -1, -1, -1, -1, 125, -1,
1704 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1705 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1706 336, -1, -1, 339, 340, -1, 342, 343, 344, 345,
1707 0, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1708 -1, -1, -1, -1, -1, -1, -1, 363, -1, 365,
1709 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1710 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1711 -1, 387, 388, -1, -1, -1, -1, -1, 394, 395,
1712 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1713 406, 407, 408, 409, 410, 411, -1, -1, -1, -1,
1714 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1715 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1716 -1, 91, -1, -1, -1, -1, -1, -1, -1, -1,
1717 -1, -1, -1, 260, -1, -1, -1, -1, -1, -1,
1718 -1, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1719 277, 278, 279, -1, -1, 125, 283, 284, 285, -1,
1720 -1, -1, 289, 290, 291, 292, 293, 294, 295, 296,
1721 297, -1, 299, 300, 301, 302, 303, 304, 305, -1,
1722 307, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1723 -1, -1, -1, -1, -1, 322, -1, -1, -1, -1,
1724 -1, -1, 329, 330, -1, 332, -1, 334, 335, 336,
1725 -1, -1, 339, 340, -1, 342, 343, 344, 345, 0,
1726 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1727 -1, -1, -1, -1, -1, -1, 363, -1, 365, -1,
1728 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1729 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1730 387, 388, -1, -1, -1, -1, -1, 394, 395, 396,
1731 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1732 407, 408, 409, 410, 411, -1, -1, -1, -1, -1,
1733 260, -1, -1, -1, -1, -1, -1, -1, 268, 269,
1734 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1735 91, -1, -1, 283, 284, 285, -1, -1, -1, 289,
1736 290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
1737 300, 301, 302, 303, 304, 305, -1, 307, -1, -1,
1738 -1, -1, -1, -1, 125, -1, -1, -1, -1, -1,
1739 -1, -1, 322, -1, -1, -1, -1, -1, -1, 329,
1740 330, -1, 332, -1, 334, 335, 336, -1, -1, 339,
1741 340, -1, 342, 343, 344, 345, 0, -1, -1, -1,
1742 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1743 -1, -1, -1, 363, -1, 365, -1, -1, -1, -1,
1744 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1745 -1, -1, -1, -1, -1, -1, -1, 387, 388, -1,
1746 -1, -1, -1, -1, 394, 395, 396, 397, 398, 399,
1747 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1748 410, 411, -1, -1, -1, -1, -1, -1, -1, -1,
1749 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1750 -1, -1, -1, -1, -1, -1, -1, 91, -1, -1,
1751 -1, -1, -1, -1, -1, -1, -1, -1, -1, 260,
1752 -1, -1, -1, -1, -1, -1, -1, 268, 269, 270,
1753 271, 272, 273, 274, 275, 276, 277, 278, 279, -1,
1754 -1, 125, 283, 284, 285, -1, -1, -1, 289, 290,
1755 291, 292, 293, 294, 295, 296, 297, -1, 299, 300,
1756 301, 302, 303, 304, 305, -1, 307, -1, -1, -1,
1757 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1758 -1, 322, -1, -1, -1, -1, -1, -1, 329, 330,
1759 -1, 332, -1, 334, 335, 336, -1, -1, 339, 340,
1760 -1, 342, 343, 344, 345, 0, -1, -1, -1, -1,
1761 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1762 -1, -1, 363, -1, 365, -1, -1, -1, -1, -1,
1763 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1764 -1, -1, -1, -1, -1, -1, 387, 388, -1, -1,
1765 -1, -1, -1, 394, 395, 396, 397, 398, 399, 400,
1766 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1767 411, -1, -1, -1, -1, -1, 260, -1, -1, -1,
1768 -1, -1, -1, -1, 268, 269, 270, 271, 272, 273,
1769 274, 275, 276, 277, 278, 279, 91, -1, -1, 283,
1770 284, 285, -1, -1, -1, 289, 290, 291, 292, 293,
1771 294, 295, 296, 297, -1, 299, 300, 301, 302, 303,
1772 304, 305, -1, 307, -1, -1, -1, -1, -1, -1,
1773 125, -1, -1, -1, -1, -1, -1, -1, 322, -1,
1774 -1, -1, -1, -1, -1, 329, 330, -1, 332, -1,
1775 334, 335, 336, -1, -1, 339, 340, -1, 342, 343,
1776 344, 345, 0, -1, -1, -1, -1, -1, -1, -1,
1777 -1, -1, -1, -1, -1, -1, -1, -1, -1, 363,
1778 -1, 365, -1, -1, -1, -1, -1, -1, -1, -1,
1779 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1780 -1, -1, -1, 387, 388, -1, -1, -1, -1, -1,
1781 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
1782 404, 405, 406, 407, 408, 409, 410, 411, -1, -1,
1783 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1784 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1785 -1, -1, -1, 91, -1, -1, -1, -1, -1, -1,
1786 -1, -1, -1, -1, -1, 260, -1, -1, -1, -1,
1787 -1, -1, -1, 268, 269, 270, 271, 272, 273, 274,
1788 275, 276, 277, 278, 279, -1, -1, 125, 283, 284,
1789 285, -1, -1, -1, 289, 290, 291, 292, 293, 294,
1790 295, 296, 297, -1, 299, 300, 301, 302, 303, 304,
1791 305, -1, 307, -1, -1, -1, -1, -1, -1, -1,
1792 -1, -1, -1, -1, -1, -1, -1, 322, -1, -1,
1793 -1, -1, -1, -1, 329, 330, -1, 332, -1, 334,
1794 335, 336, -1, -1, 339, 340, -1, 342, 343, 344,
1795 345, 0, -1, -1, -1, -1, -1, -1, -1, -1,
1796 -1, -1, -1, -1, -1, -1, -1, -1, 363, -1,
1797 365, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1798 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1799 -1, -1, 387, 388, -1, -1, -1, -1, -1, 394,
1800 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1801 405, 406, 407, 408, 409, 410, 411, -1, -1, -1,
1802 -1, -1, 260, -1, -1, -1, -1, -1, -1, -1,
1803 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1804 278, 279, 91, -1, -1, 283, 284, 285, -1, -1,
1805 -1, 289, 290, 291, 292, 293, 294, 295, 296, 297,
1806 -1, 299, 300, 301, 302, 303, 304, 305, -1, 307,
1807 -1, -1, -1, -1, -1, -1, 125, -1, -1, -1,
1808 -1, -1, -1, -1, 322, -1, -1, -1, -1, -1,
1809 -1, 329, 330, -1, 332, -1, 334, 335, 336, -1,
1810 -1, 339, 340, -1, 342, 343, 344, 345, 0, -1,
1811 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1812 -1, -1, -1, -1, -1, 363, -1, 365, -1, -1,
1813 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1814 -1, -1, -1, -1, -1, -1, -1, -1, -1, 387,
1815 388, -1, -1, -1, -1, -1, 394, 395, 396, 397,
1816 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
1817 408, 409, 410, 411, -1, -1, -1, -1, -1, -1,
1818 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1819 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
1820 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1821 -1, 260, -1, -1, -1, -1, -1, -1, -1, 268,
1822 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
1823 279, -1, -1, 125, 283, 284, 285, -1, -1, -1,
1824 289, 290, 291, 292, 293, 294, 295, 296, 297, -1,
1825 299, 300, 301, 302, 303, 304, 305, -1, 307, -1,
1826 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1827 -1, -1, -1, 322, -1, -1, -1, -1, -1, -1,
1828 329, 330, -1, 332, -1, 334, 335, 336, -1, -1,
1829 339, 340, -1, 342, 343, 344, 345, 0, -1, -1,
1830 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1831 -1, -1, -1, -1, 363, -1, 365, -1, -1, -1,
1832 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1833 -1, -1, -1, -1, -1, -1, -1, -1, 387, 388,
1834 -1, -1, -1, -1, -1, 394, 395, 396, 397, 398,
1835 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
1836 409, 410, 411, -1, -1, -1, -1, -1, 260, -1,
1837 -1, -1, -1, -1, -1, -1, 268, 269, 270, 271,
1838 272, 273, 274, 275, 276, 277, 278, 279, 91, -1,
1839 -1, 283, 284, 285, -1, -1, -1, 289, 290, 291,
1840 292, 293, 294, 295, 296, 297, -1, 299, 300, 301,
1841 302, 303, 304, 305, -1, 307, -1, -1, -1, -1,
1842 -1, -1, 125, -1, -1, -1, -1, -1, -1, -1,
1843 322, -1, -1, -1, -1, -1, -1, 329, 330, -1,
1844 332, -1, 334, 335, 336, -1, -1, 339, 340, -1,
1845 342, 343, 344, 345, 0, -1, -1, -1, -1, -1,
1846 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1847 -1, 363, -1, 365, -1, -1, -1, -1, -1, -1,
1848 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1849 -1, -1, -1, -1, -1, 387, 388, -1, -1, -1,
1850 -1, -1, 394, 395, 396, 397, 398, 399, 400, 401,
1851 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
1852 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1853 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1854 -1, -1, -1, -1, -1, 91, -1, -1, -1, -1,
1855 -1, -1, -1, -1, -1, -1, -1, 260, -1, -1,
1856 -1, -1, -1, -1, -1, 268, 269, 270, 271, 272,
1857 273, 274, 275, 276, 277, 278, 279, -1, -1, 125,
1858 283, 284, 285, -1, -1, -1, 289, 290, 291, 292,
1859 293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
1860 303, 304, 305, -1, 307, -1, -1, -1, -1, -1,
1861 -1, -1, -1, -1, -1, -1, -1, -1, -1, 322,
1862 -1, -1, -1, -1, -1, -1, 329, 330, -1, 332,
1863 -1, 334, 335, 336, -1, -1, 339, 340, -1, 342,
1864 343, 344, 345, 0, -1, -1, -1, -1, -1, -1,
1865 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1866 363, -1, 365, -1, -1, -1, -1, -1, -1, -1,
1867 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1868 -1, -1, -1, -1, 387, 388, -1, -1, -1, -1,
1869 -1, 394, 395, 396, 397, 398, 399, 400, 401, 402,
1870 403, 404, 405, 406, 407, 408, 409, 410, 411, -1,
1871 -1, -1, -1, -1, 260, -1, -1, -1, -1, -1,
1872 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1873 276, 277, 278, 279, 91, -1, -1, 283, 284, 285,
1874 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1875 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1876 -1, 307, -1, -1, -1, -1, -1, -1, 125, -1,
1877 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1878 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1879 336, -1, -1, 339, 340, -1, 342, 343, 344, 345,
1880 0, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1881 -1, -1, -1, -1, -1, -1, -1, 363, -1, 365,
1882 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1883 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1884 -1, 387, 388, -1, -1, -1, -1, -1, 394, 395,
1885 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1886 406, 407, 408, 409, 410, 411, -1, -1, -1, -1,
1887 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1888 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1889 -1, 91, -1, -1, -1, -1, -1, -1, -1, -1,
1890 -1, -1, -1, 260, -1, -1, -1, -1, -1, -1,
1891 -1, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1892 277, 278, 279, -1, -1, 125, 283, 284, 285, -1,
1893 -1, -1, 289, 290, 291, 292, 293, 294, 295, 296,
1894 297, -1, 299, 300, 301, 302, 303, 304, 305, -1,
1895 307, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1896 -1, -1, -1, -1, 0, 322, -1, -1, -1, -1,
1897 -1, -1, 329, 330, -1, 332, -1, 334, 335, 336,
1898 -1, -1, 339, 340, -1, 342, 343, 344, 345, -1,
1899 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1900 -1, -1, -1, -1, -1, -1, 363, -1, 365, -1,
1901 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1902 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1903 387, 388, -1, -1, -1, -1, -1, 394, 395, 396,
1904 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1905 407, 408, 409, 410, 411, 91, -1, -1, -1, -1,
1906 260, -1, -1, -1, -1, -1, -1, -1, 268, 269,
1907 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1908 -1, -1, -1, 283, 284, 285, -1, -1, -1, 289,
1909 290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
1910 300, 301, 302, 303, 304, 305, -1, 307, -1, -1,
1911 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1912 -1, 0, 322, -1, -1, -1, -1, -1, -1, 329,
1913 330, -1, 332, -1, 334, 335, 336, -1, -1, 339,
1914 340, -1, 342, 343, 344, 345, -1, -1, -1, -1,
1915 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1916 -1, -1, -1, 363, -1, 365, -1, -1, -1, -1,
1917 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1918 -1, -1, -1, -1, -1, -1, -1, 387, 388, -1,
1919 -1, -1, -1, -1, 394, 395, 396, 397, 398, 399,
1920 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1921 410, 411, 91, -1, 40, -1, -1, -1, -1, -1,
1922 -1, -1, -1, -1, 260, -1, -1, 40, -1, -1,
1923 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1924 276, 277, 278, 279, -1, -1, -1, 283, 284, 285,
1925 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1926 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1927 -1, 307, -1, -1, -1, -1, -1, -1, -1, -1,
1928 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1929 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1930 336, -1, -1, 339, 340, -1, 342, -1, 344, -1,
1931 -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
1932 -1, -1, -1, -1, -1, -1, -1, 363, -1, 365,
1933 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1934 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1935 -1, 387, 388, -1, -1, -1, -1, -1, 394, 395,
1936 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1937 406, 407, 408, 409, 410, 411, -1, -1, -1, -1,
1938 -1, 260, -1, -1, -1, -1, -1, -1, -1, 268,
1939 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
1940 279, -1, -1, -1, 283, 284, 285, -1, -1, -1,
1941 289, 290, 291, 292, 293, 294, 295, 296, 297, -1,
1942 299, 300, 301, 302, 303, 304, 305, -1, 307, -1,
1943 -1, 257, -1, -1, -1, 261, -1, -1, -1, -1,
1944 -1, -1, -1, 322, 257, 258, -1, -1, -1, -1,
1945 329, 330, -1, 332, -1, 334, 335, 336, -1, -1,
1946 339, 340, -1, 342, -1, 344, -1, -1, -1, -1,
1947 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1948 -1, -1, -1, -1, 363, -1, 365, 313, 314, -1,
1949 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1950 313, 314, -1, -1, -1, -1, -1, -1, 387, 388,
1951 91, -1, -1, -1, -1, 394, 395, 396, 397, 398,
1952 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
1953 409, 410, 411, -1, 258, -1, -1, -1, -1, -1,
1954 -1, -1, -1, 369, 370, 371, 372, 373, -1, 375,
1955 376, 377, 378, 379, 380, 381, 369, 370, 371, 372,
1956 373, -1, 375, 376, 377, 378, 379, 380, 381, -1,
1957 -1, -1, -1, -1, 400, 401, -1, -1, 404, 405,
1958 315, 316, -1, -1, 410, -1, -1, 400, 401, 313,
1959 314, 326, 327, 328, -1, -1, -1, 410, -1, -1,
1960 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1961 -1, -1, -1, -1, 349, -1, 351, 352, 353, 354,
1962 355, 356, 357, 358, 359, 360, -1, -1, -1, -1,
1963 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1964 -1, -1, -1, -1, -1, 369, 370, 371, 372, 373,
1965 385, 375, 376, 377, 378, 379, 380, 381, -1, -1,
1966 -1, 396, 397, -1, -1, -1, -1, -1, -1, -1,
1967 -1, -1, -1, -1, -1, -1, 400, 401, -1, 260,
1968 -1, -1, -1, -1, -1, -1, 410, 268, -1, -1,
1969 271, 272, 273, 274, 275, 276, 277, 278, 279, -1,
1970 -1, -1, 283, 284, 285, -1, -1, -1, 289, 290,
1971 291, 292, 293, 294, 295, 296, 297, -1, 299, 300,
1972 301, 302, 303, 304, 305, -1, 307, -1, -1, -1,
1973 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1974 -1, 322, -1, -1, -1, -1, -1, -1, 329, 330,
1975 -1, 332, -1, 334, 335, 336, -1, -1, 339, 340,
1976 -1, 342, -1, 344, -1, -1, -1, -1, -1, -1,
1977 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1978 -1, -1, 363, -1, 365, -1, -1, -1, -1, -1,
1979 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1980 -1, -1, -1, -1, -1, -1, 387, 388, -1, -1,
1981 -1, -1, -1, 394, 395, 396, 397, 398, 399, 400,
1982 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1989 #define YYMAXTOKEN 430
1992 "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1993 0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0,0,
1994 0,0,0,0,"':'",0,0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1995 0,"'['",0,"']'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",
1996 "'|'","'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1997 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1998 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1999 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"CHAR","INTEGER","BOOLEAN","PERCENT",
2000 "SPERCENT","MINUS_INTEGER","PLUS_INTEGER","MAZE_GRID_ID","SOLID_FILL_ID",
2001 "MINES_ID","ROGUELEV_ID","MESSAGE_ID","MAZE_ID","LEVEL_ID","LEV_INIT_ID",
2002 "GEOMETRY_ID","NOMAP_ID","OBJECT_ID","COBJECT_ID","MONSTER_ID","TRAP_ID",
2003 "DOOR_ID","DRAWBRIDGE_ID","object_ID","monster_ID","terrain_ID","MAZEWALK_ID",
2004 "WALLIFY_ID","REGION_ID","FILLING","IRREGULAR","JOINED","ALTAR_ID","LADDER_ID",
2005 "STAIR_ID","NON_DIGGABLE_ID","NON_PASSWALL_ID","ROOM_ID","PORTAL_ID",
2006 "TELEPRT_ID","BRANCH_ID","LEV","MINERALIZE_ID","CORRIDOR_ID","GOLD_ID",
2007 "ENGRAVING_ID","FOUNTAIN_ID","POOL_ID","SINK_ID","NONE","RAND_CORRIDOR_ID",
2008 "DOOR_STATE","LIGHT_STATE","CURSE_TYPE","ENGRAVING_TYPE","DIRECTION",
2009 "RANDOM_TYPE","RANDOM_TYPE_BRACKET","A_REGISTER","ALIGNMENT","LEFT_OR_RIGHT",
2010 "CENTER","TOP_OR_BOT","ALTAR_TYPE","UP_OR_DOWN","SUBROOM_ID","NAME_ID",
2011 "FLAGS_ID","FLAG_TYPE","MON_ATTITUDE","MON_ALERTNESS","MON_APPEARANCE",
2012 "ROOMDOOR_ID","IF_ID","ELSE_ID","TERRAIN_ID","HORIZ_OR_VERT",
2013 "REPLACE_TERRAIN_ID","EXIT_ID","SHUFFLE_ID","QUANTITY_ID","BURIED_ID","LOOP_ID",
2014 "FOR_ID","TO_ID","SWITCH_ID","CASE_ID","BREAK_ID","DEFAULT_ID","ERODED_ID",
2015 "TRAPPED_STATE","RECHARGED_ID","INVIS_ID","GREASED_ID","FEMALE_ID",
2016 "CANCELLED_ID","REVIVED_ID","AVENGE_ID","FLEEING_ID","BLINDED_ID",
2017 "PARALYZED_ID","STUNNED_ID","CONFUSED_ID","SEENTRAPS_ID","ALL_ID","MONTYPE_ID",
2018 "GRAVE_ID","ERODEPROOF_ID","FUNCTION_ID","MSG_OUTPUT_TYPE","COMPARE_TYPE",
2019 "UNKNOWN_TYPE","rect_ID","fillrect_ID","line_ID","randline_ID","grow_ID",
2020 "selection_ID","flood_ID","rndcoord_ID","circle_ID","ellipse_ID","filter_ID",
2021 "complement_ID","gradient_ID","GRADIENT_TYPE","LIMITED","HUMIDITY_TYPE",
2022 "STRING","MAP_ID","NQSTRING","VARSTRING","CFUNC","CFUNC_INT","CFUNC_STR",
2023 "CFUNC_COORD","CFUNC_REGION","VARSTRING_INT","VARSTRING_INT_ARRAY",
2024 "VARSTRING_STRING","VARSTRING_STRING_ARRAY","VARSTRING_VAR",
2025 "VARSTRING_VAR_ARRAY","VARSTRING_COORD","VARSTRING_COORD_ARRAY",
2026 "VARSTRING_REGION","VARSTRING_REGION_ARRAY","VARSTRING_MAPCHAR",
2027 "VARSTRING_MAPCHAR_ARRAY","VARSTRING_MONST","VARSTRING_MONST_ARRAY",
2028 "VARSTRING_OBJ","VARSTRING_OBJ_ARRAY","VARSTRING_SEL","VARSTRING_SEL_ARRAY",
2029 "METHOD_INT","METHOD_INT_ARRAY","METHOD_STRING","METHOD_STRING_ARRAY",
2030 "METHOD_VAR","METHOD_VAR_ARRAY","METHOD_COORD","METHOD_COORD_ARRAY",
2031 "METHOD_REGION","METHOD_REGION_ARRAY","METHOD_MAPCHAR","METHOD_MAPCHAR_ARRAY",
2032 "METHOD_MONST","METHOD_MONST_ARRAY","METHOD_OBJ","METHOD_OBJ_ARRAY",
2033 "METHOD_SEL","METHOD_SEL_ARRAY","DICE",
2040 "levels : level levels",
2041 "level : level_def flags levstatements",
2042 "level_def : LEVEL_ID ':' STRING",
2043 "level_def : MAZE_ID ':' STRING ',' mazefiller",
2044 "mazefiller : RANDOM_TYPE",
2045 "mazefiller : CHAR",
2046 "lev_init : LEV_INIT_ID ':' SOLID_FILL_ID ',' terrain_type",
2047 "lev_init : LEV_INIT_ID ':' MAZE_GRID_ID ',' CHAR",
2048 "lev_init : LEV_INIT_ID ':' ROGUELEV_ID",
2049 "lev_init : LEV_INIT_ID ':' MINES_ID ',' CHAR ',' CHAR ',' BOOLEAN ',' BOOLEAN ',' light_state ',' walled opt_fillchar",
2051 "opt_limited : ',' LIMITED",
2052 "opt_coord_or_var :",
2053 "opt_coord_or_var : ',' coord_or_var",
2055 "opt_fillchar : ',' CHAR",
2057 "walled : RANDOM_TYPE",
2059 "flags : FLAGS_ID ':' flag_list",
2060 "flag_list : FLAG_TYPE ',' flag_list",
2061 "flag_list : FLAG_TYPE",
2063 "levstatements : levstatement levstatements",
2064 "stmt_block : '{' levstatements '}'",
2065 "levstatement : message",
2066 "levstatement : lev_init",
2067 "levstatement : altar_detail",
2068 "levstatement : grave_detail",
2069 "levstatement : branch_region",
2070 "levstatement : corridor",
2071 "levstatement : variable_define",
2072 "levstatement : shuffle_detail",
2073 "levstatement : diggable_detail",
2074 "levstatement : door_detail",
2075 "levstatement : drawbridge_detail",
2076 "levstatement : engraving_detail",
2077 "levstatement : mineralize",
2078 "levstatement : fountain_detail",
2079 "levstatement : gold_detail",
2080 "levstatement : switchstatement",
2081 "levstatement : forstatement",
2082 "levstatement : loopstatement",
2083 "levstatement : ifstatement",
2084 "levstatement : chancestatement",
2085 "levstatement : exitstatement",
2086 "levstatement : breakstatement",
2087 "levstatement : function_define",
2088 "levstatement : function_call",
2089 "levstatement : ladder_detail",
2090 "levstatement : map_definition",
2091 "levstatement : mazewalk_detail",
2092 "levstatement : monster_detail",
2093 "levstatement : object_detail",
2094 "levstatement : passwall_detail",
2095 "levstatement : pool_detail",
2096 "levstatement : portal_region",
2097 "levstatement : random_corridors",
2098 "levstatement : region_detail",
2099 "levstatement : room_def",
2100 "levstatement : subroom_def",
2101 "levstatement : sink_detail",
2102 "levstatement : terrain_detail",
2103 "levstatement : replace_terrain_detail",
2104 "levstatement : stair_detail",
2105 "levstatement : stair_region",
2106 "levstatement : teleprt_region",
2107 "levstatement : trap_detail",
2108 "levstatement : wallify_detail",
2109 "any_var_array : VARSTRING_INT_ARRAY",
2110 "any_var_array : VARSTRING_STRING_ARRAY",
2111 "any_var_array : VARSTRING_VAR_ARRAY",
2112 "any_var_array : VARSTRING_COORD_ARRAY",
2113 "any_var_array : VARSTRING_REGION_ARRAY",
2114 "any_var_array : VARSTRING_MAPCHAR_ARRAY",
2115 "any_var_array : VARSTRING_MONST_ARRAY",
2116 "any_var_array : VARSTRING_OBJ_ARRAY",
2117 "any_var_array : VARSTRING_SEL_ARRAY",
2118 "any_var : VARSTRING_INT",
2119 "any_var : VARSTRING_STRING",
2120 "any_var : VARSTRING_VAR",
2121 "any_var : VARSTRING_COORD",
2122 "any_var : VARSTRING_REGION",
2123 "any_var : VARSTRING_MAPCHAR",
2124 "any_var : VARSTRING_MONST",
2125 "any_var : VARSTRING_OBJ",
2126 "any_var : VARSTRING_SEL",
2127 "any_var_or_arr : any_var_array",
2128 "any_var_or_arr : any_var",
2129 "any_var_or_arr : VARSTRING",
2130 "any_var_or_unk : VARSTRING",
2131 "any_var_or_unk : any_var",
2132 "shuffle_detail : SHUFFLE_ID ':' any_var_array",
2133 "variable_define : any_var_or_arr '=' math_expr_var",
2134 "variable_define : any_var_or_arr '=' selection_ID ':' ter_selection",
2135 "variable_define : any_var_or_arr '=' string_expr",
2136 "variable_define : any_var_or_arr '=' terrainid ':' mapchar_or_var",
2137 "variable_define : any_var_or_arr '=' monsterid ':' monster_or_var",
2138 "variable_define : any_var_or_arr '=' objectid ':' object_or_var",
2139 "variable_define : any_var_or_arr '=' coord_or_var",
2140 "variable_define : any_var_or_arr '=' region_or_var",
2141 "variable_define : any_var_or_arr '=' '{' integer_list '}'",
2142 "variable_define : any_var_or_arr '=' '{' encodecoord_list '}'",
2143 "variable_define : any_var_or_arr '=' '{' encoderegion_list '}'",
2144 "variable_define : any_var_or_arr '=' terrainid ':' '{' mapchar_list '}'",
2145 "variable_define : any_var_or_arr '=' monsterid ':' '{' encodemonster_list '}'",
2146 "variable_define : any_var_or_arr '=' objectid ':' '{' encodeobj_list '}'",
2147 "variable_define : any_var_or_arr '=' '{' string_list '}'",
2148 "encodeobj_list : encodeobj",
2149 "encodeobj_list : encodeobj_list ',' encodeobj",
2150 "encodemonster_list : encodemonster",
2151 "encodemonster_list : encodemonster_list ',' encodemonster",
2152 "mapchar_list : mapchar",
2153 "mapchar_list : mapchar_list ',' mapchar",
2154 "encoderegion_list : encoderegion",
2155 "encoderegion_list : encoderegion_list ',' encoderegion",
2156 "encodecoord_list : encodecoord",
2157 "encodecoord_list : encodecoord_list ',' encodecoord",
2158 "integer_list : math_expr_var",
2159 "integer_list : integer_list ',' math_expr_var",
2160 "string_list : string_expr",
2161 "string_list : string_list ',' string_expr",
2164 "function_define : FUNCTION_ID NQSTRING '(' $$1 func_params_list ')' $$2 stmt_block",
2165 "function_call : NQSTRING '(' func_call_params_list ')'",
2166 "exitstatement : EXIT_ID",
2168 "opt_percent : PERCENT",
2169 "comparestmt : PERCENT",
2170 "comparestmt : '[' math_expr_var COMPARE_TYPE math_expr_var ']'",
2171 "comparestmt : '[' math_expr_var ']'",
2174 "switchstatement : SWITCH_ID $$3 '[' integer_or_var ']' $$4 '{' switchcases '}'",
2176 "switchcases : switchcase switchcases",
2178 "switchcase : CASE_ID all_integers ':' $$5 levstatements",
2180 "switchcase : DEFAULT_ID ':' $$6 levstatements",
2181 "breakstatement : BREAK_ID",
2182 "for_to_span : '.' '.'",
2183 "for_to_span : TO_ID",
2184 "forstmt_start : FOR_ID any_var_or_unk '=' math_expr_var for_to_span math_expr_var",
2186 "forstatement : forstmt_start $$7 stmt_block",
2188 "loopstatement : LOOP_ID '[' integer_or_var ']' $$8 stmt_block",
2190 "chancestatement : comparestmt ':' $$9 levstatement",
2192 "ifstatement : IF_ID comparestmt $$10 if_ending",
2193 "if_ending : stmt_block",
2195 "if_ending : stmt_block $$11 ELSE_ID stmt_block",
2196 "message : MESSAGE_ID ':' string_expr",
2197 "random_corridors : RAND_CORRIDOR_ID",
2198 "random_corridors : RAND_CORRIDOR_ID ':' all_integers",
2199 "random_corridors : RAND_CORRIDOR_ID ':' RANDOM_TYPE",
2200 "corridor : CORRIDOR_ID ':' corr_spec ',' corr_spec",
2201 "corridor : CORRIDOR_ID ':' corr_spec ',' all_integers",
2202 "corr_spec : '(' INTEGER ',' DIRECTION ',' door_pos ')'",
2203 "room_begin : room_type opt_percent ',' light_state",
2205 "subroom_def : SUBROOM_ID ':' room_begin ',' subroom_pos ',' room_size optroomregionflags $$12 stmt_block",
2207 "room_def : ROOM_ID ':' room_begin ',' room_pos ',' room_align ',' room_size optroomregionflags $$13 stmt_block",
2209 "roomfill : ',' BOOLEAN",
2210 "room_pos : '(' INTEGER ',' INTEGER ')'",
2211 "room_pos : RANDOM_TYPE",
2212 "subroom_pos : '(' INTEGER ',' INTEGER ')'",
2213 "subroom_pos : RANDOM_TYPE",
2214 "room_align : '(' h_justif ',' v_justif ')'",
2215 "room_align : RANDOM_TYPE",
2216 "room_size : '(' INTEGER ',' INTEGER ')'",
2217 "room_size : RANDOM_TYPE",
2218 "door_detail : ROOMDOOR_ID ':' secret ',' door_state ',' door_wall ',' door_pos",
2219 "door_detail : DOOR_ID ':' door_state ',' ter_selection",
2221 "secret : RANDOM_TYPE",
2222 "door_wall : dir_list",
2223 "door_wall : RANDOM_TYPE",
2224 "dir_list : DIRECTION",
2225 "dir_list : DIRECTION '|' dir_list",
2226 "door_pos : INTEGER",
2227 "door_pos : RANDOM_TYPE",
2228 "map_definition : NOMAP_ID",
2229 "map_definition : GEOMETRY_ID ':' h_justif ',' v_justif roomfill MAP_ID",
2230 "map_definition : GEOMETRY_ID ':' coord_or_var roomfill MAP_ID",
2231 "h_justif : LEFT_OR_RIGHT",
2232 "h_justif : CENTER",
2233 "v_justif : TOP_OR_BOT",
2234 "v_justif : CENTER",
2235 "monster_detail : MONSTER_ID ':' monster_desc",
2237 "monster_detail : MONSTER_ID ':' monster_desc $$14 stmt_block",
2238 "monster_desc : monster_or_var ',' coord_or_var monster_infos",
2240 "monster_infos : monster_infos ',' monster_info",
2241 "monster_info : string_expr",
2242 "monster_info : MON_ATTITUDE",
2243 "monster_info : MON_ALERTNESS",
2244 "monster_info : alignment_prfx",
2245 "monster_info : MON_APPEARANCE string_expr",
2246 "monster_info : FEMALE_ID",
2247 "monster_info : INVIS_ID",
2248 "monster_info : CANCELLED_ID",
2249 "monster_info : REVIVED_ID",
2250 "monster_info : AVENGE_ID",
2251 "monster_info : FLEEING_ID ':' integer_or_var",
2252 "monster_info : BLINDED_ID ':' integer_or_var",
2253 "monster_info : PARALYZED_ID ':' integer_or_var",
2254 "monster_info : STUNNED_ID",
2255 "monster_info : CONFUSED_ID",
2256 "monster_info : SEENTRAPS_ID ':' seen_trap_mask",
2257 "seen_trap_mask : STRING",
2258 "seen_trap_mask : ALL_ID",
2259 "seen_trap_mask : STRING '|' seen_trap_mask",
2260 "object_detail : OBJECT_ID ':' object_desc",
2262 "object_detail : COBJECT_ID ':' object_desc $$15 stmt_block",
2263 "object_desc : object_or_var object_infos",
2265 "object_infos : object_infos ',' object_info",
2266 "object_info : CURSE_TYPE",
2267 "object_info : MONTYPE_ID ':' monster_or_var",
2268 "object_info : all_ints_push",
2269 "object_info : NAME_ID ':' string_expr",
2270 "object_info : QUANTITY_ID ':' integer_or_var",
2271 "object_info : BURIED_ID",
2272 "object_info : LIGHT_STATE",
2273 "object_info : ERODED_ID ':' integer_or_var",
2274 "object_info : ERODEPROOF_ID",
2275 "object_info : DOOR_STATE",
2276 "object_info : TRAPPED_STATE",
2277 "object_info : RECHARGED_ID ':' integer_or_var",
2278 "object_info : INVIS_ID",
2279 "object_info : GREASED_ID",
2280 "object_info : coord_or_var",
2281 "trap_detail : TRAP_ID ':' trap_name ',' coord_or_var",
2282 "drawbridge_detail : DRAWBRIDGE_ID ':' coord_or_var ',' DIRECTION ',' door_state",
2283 "mazewalk_detail : MAZEWALK_ID ':' coord_or_var ',' DIRECTION",
2284 "mazewalk_detail : MAZEWALK_ID ':' coord_or_var ',' DIRECTION ',' BOOLEAN opt_fillchar",
2285 "wallify_detail : WALLIFY_ID",
2286 "wallify_detail : WALLIFY_ID ':' ter_selection",
2287 "ladder_detail : LADDER_ID ':' coord_or_var ',' UP_OR_DOWN",
2288 "stair_detail : STAIR_ID ':' coord_or_var ',' UP_OR_DOWN",
2289 "stair_region : STAIR_ID ':' lev_region ',' lev_region ',' UP_OR_DOWN",
2290 "portal_region : PORTAL_ID ':' lev_region ',' lev_region ',' STRING",
2291 "teleprt_region : TELEPRT_ID ':' lev_region ',' lev_region teleprt_detail",
2292 "branch_region : BRANCH_ID ':' lev_region ',' lev_region",
2294 "teleprt_detail : ',' UP_OR_DOWN",
2295 "fountain_detail : FOUNTAIN_ID ':' ter_selection",
2296 "sink_detail : SINK_ID ':' ter_selection",
2297 "pool_detail : POOL_ID ':' ter_selection",
2298 "terrain_type : CHAR",
2299 "terrain_type : '(' CHAR ',' light_state ')'",
2300 "replace_terrain_detail : REPLACE_TERRAIN_ID ':' region_or_var ',' mapchar_or_var ',' mapchar_or_var ',' SPERCENT",
2301 "terrain_detail : TERRAIN_ID ':' ter_selection ',' mapchar_or_var",
2302 "diggable_detail : NON_DIGGABLE_ID ':' region_or_var",
2303 "passwall_detail : NON_PASSWALL_ID ':' region_or_var",
2305 "region_detail : REGION_ID ':' region_or_var ',' light_state ',' room_type optroomregionflags $$16 region_detail_end",
2306 "region_detail_end :",
2307 "region_detail_end : stmt_block",
2308 "altar_detail : ALTAR_ID ':' coord_or_var ',' alignment ',' altar_type",
2309 "grave_detail : GRAVE_ID ':' coord_or_var ',' string_expr",
2310 "grave_detail : GRAVE_ID ':' coord_or_var ',' RANDOM_TYPE",
2311 "grave_detail : GRAVE_ID ':' coord_or_var",
2312 "gold_detail : GOLD_ID ':' math_expr_var ',' coord_or_var",
2313 "engraving_detail : ENGRAVING_ID ':' coord_or_var ',' engraving_type ',' string_expr",
2314 "mineralize : MINERALIZE_ID ':' integer_or_var ',' integer_or_var ',' integer_or_var ',' integer_or_var",
2315 "mineralize : MINERALIZE_ID",
2316 "trap_name : STRING",
2317 "trap_name : RANDOM_TYPE",
2318 "room_type : STRING",
2319 "room_type : RANDOM_TYPE",
2320 "optroomregionflags :",
2321 "optroomregionflags : ',' roomregionflags",
2322 "roomregionflags : roomregionflag",
2323 "roomregionflags : roomregionflag ',' roomregionflags",
2324 "roomregionflag : FILLING",
2325 "roomregionflag : IRREGULAR",
2326 "roomregionflag : JOINED",
2327 "door_state : DOOR_STATE",
2328 "door_state : RANDOM_TYPE",
2329 "light_state : LIGHT_STATE",
2330 "light_state : RANDOM_TYPE",
2331 "alignment : ALIGNMENT",
2332 "alignment : a_register",
2333 "alignment : RANDOM_TYPE",
2334 "alignment_prfx : ALIGNMENT",
2335 "alignment_prfx : a_register",
2336 "alignment_prfx : A_REGISTER ':' RANDOM_TYPE",
2337 "altar_type : ALTAR_TYPE",
2338 "altar_type : RANDOM_TYPE",
2339 "a_register : A_REGISTER '[' INTEGER ']'",
2340 "string_or_var : STRING",
2341 "string_or_var : VARSTRING_STRING",
2342 "string_or_var : VARSTRING_STRING_ARRAY '[' math_expr_var ']'",
2343 "integer_or_var : math_expr_var",
2344 "coord_or_var : encodecoord",
2345 "coord_or_var : rndcoord_ID '(' ter_selection ')'",
2346 "coord_or_var : VARSTRING_COORD",
2347 "coord_or_var : VARSTRING_COORD_ARRAY '[' math_expr_var ']'",
2348 "encodecoord : '(' INTEGER ',' INTEGER ')'",
2349 "encodecoord : RANDOM_TYPE",
2350 "encodecoord : RANDOM_TYPE_BRACKET humidity_flags ']'",
2351 "humidity_flags : HUMIDITY_TYPE",
2352 "humidity_flags : HUMIDITY_TYPE ',' humidity_flags",
2353 "region_or_var : encoderegion",
2354 "region_or_var : VARSTRING_REGION",
2355 "region_or_var : VARSTRING_REGION_ARRAY '[' math_expr_var ']'",
2356 "encoderegion : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2357 "mapchar_or_var : mapchar",
2358 "mapchar_or_var : VARSTRING_MAPCHAR",
2359 "mapchar_or_var : VARSTRING_MAPCHAR_ARRAY '[' math_expr_var ']'",
2361 "mapchar : '(' CHAR ',' light_state ')'",
2362 "monster_or_var : encodemonster",
2363 "monster_or_var : VARSTRING_MONST",
2364 "monster_or_var : VARSTRING_MONST_ARRAY '[' math_expr_var ']'",
2365 "encodemonster : STRING",
2366 "encodemonster : CHAR",
2367 "encodemonster : '(' CHAR ',' STRING ')'",
2368 "encodemonster : RANDOM_TYPE",
2369 "object_or_var : encodeobj",
2370 "object_or_var : VARSTRING_OBJ",
2371 "object_or_var : VARSTRING_OBJ_ARRAY '[' math_expr_var ']'",
2372 "encodeobj : STRING",
2374 "encodeobj : '(' CHAR ',' STRING ')'",
2375 "encodeobj : RANDOM_TYPE",
2376 "string_expr : string_or_var",
2377 "string_expr : string_expr '.' string_or_var",
2378 "math_expr_var : INTEGER",
2379 "math_expr_var : dice",
2380 "math_expr_var : '(' MINUS_INTEGER ')'",
2381 "math_expr_var : VARSTRING_INT",
2382 "math_expr_var : VARSTRING_INT_ARRAY '[' math_expr_var ']'",
2383 "math_expr_var : math_expr_var '+' math_expr_var",
2384 "math_expr_var : math_expr_var '-' math_expr_var",
2385 "math_expr_var : math_expr_var '*' math_expr_var",
2386 "math_expr_var : math_expr_var '/' math_expr_var",
2387 "math_expr_var : math_expr_var '%' math_expr_var",
2388 "math_expr_var : '(' math_expr_var ')'",
2389 "func_param_type : CFUNC_INT",
2390 "func_param_type : CFUNC_STR",
2391 "func_param_part : any_var_or_arr ':' func_param_type",
2392 "func_param_list : func_param_part",
2393 "func_param_list : func_param_list ',' func_param_part",
2394 "func_params_list :",
2395 "func_params_list : func_param_list",
2396 "func_call_param_part : math_expr_var",
2397 "func_call_param_part : string_expr",
2398 "func_call_param_list : func_call_param_part",
2399 "func_call_param_list : func_call_param_list ',' func_call_param_part",
2400 "func_call_params_list :",
2401 "func_call_params_list : func_call_param_list",
2402 "ter_selection_x : coord_or_var",
2403 "ter_selection_x : rect_ID region_or_var",
2404 "ter_selection_x : fillrect_ID region_or_var",
2405 "ter_selection_x : line_ID coord_or_var ',' coord_or_var",
2406 "ter_selection_x : randline_ID coord_or_var ',' coord_or_var ',' math_expr_var",
2407 "ter_selection_x : grow_ID '(' ter_selection ')'",
2408 "ter_selection_x : grow_ID '(' dir_list ',' ter_selection ')'",
2409 "ter_selection_x : filter_ID '(' SPERCENT ',' ter_selection ')'",
2410 "ter_selection_x : filter_ID '(' ter_selection ',' ter_selection ')'",
2411 "ter_selection_x : filter_ID '(' mapchar_or_var ',' ter_selection ')'",
2412 "ter_selection_x : flood_ID coord_or_var",
2413 "ter_selection_x : circle_ID '(' coord_or_var ',' math_expr_var ')'",
2414 "ter_selection_x : circle_ID '(' coord_or_var ',' math_expr_var ',' FILLING ')'",
2415 "ter_selection_x : ellipse_ID '(' coord_or_var ',' math_expr_var ',' math_expr_var ')'",
2416 "ter_selection_x : ellipse_ID '(' coord_or_var ',' math_expr_var ',' math_expr_var ',' FILLING ')'",
2417 "ter_selection_x : gradient_ID '(' GRADIENT_TYPE ',' '(' math_expr_var '-' math_expr_var opt_limited ')' ',' coord_or_var opt_coord_or_var ')'",
2418 "ter_selection_x : complement_ID ter_selection_x",
2419 "ter_selection_x : VARSTRING_SEL",
2420 "ter_selection_x : '(' ter_selection ')'",
2421 "ter_selection : ter_selection_x",
2422 "ter_selection : ter_selection_x '&' ter_selection",
2424 "all_integers : MINUS_INTEGER",
2425 "all_integers : PLUS_INTEGER",
2426 "all_integers : INTEGER",
2427 "all_ints_push : MINUS_INTEGER",
2428 "all_ints_push : PLUS_INTEGER",
2429 "all_ints_push : INTEGER",
2430 "all_ints_push : dice",
2431 "objectid : object_ID",
2432 "objectid : OBJECT_ID",
2433 "monsterid : monster_ID",
2434 "monsterid : MONSTER_ID",
2435 "terrainid : terrain_ID",
2436 "terrainid : TERRAIN_ID",
2437 "engraving_type : ENGRAVING_TYPE",
2438 "engraving_type : RANDOM_TYPE",
2439 "lev_region : region",
2440 "lev_region : LEV '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2441 "region : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2446 #define YYMAXDEPTH YYSTACKSIZE
2449 #define YYSTACKSIZE YYMAXDEPTH
2451 #define YYSTACKSIZE 500
2452 #define YYMAXDEPTH 500
2463 short yyss
[YYSTACKSIZE
];
2464 YYSTYPE yyvs
[YYSTACKSIZE
];
2465 #define yystacksize YYSTACKSIZE
2468 #define YYABORT goto yyabort
2469 #define YYREJECT goto yyabort
2470 #define YYACCEPT goto yyaccept
2471 #define YYERROR goto yyerrlab
2475 register int yym
, yyn
, yystate
;
2478 extern char *getenv();
2480 if ((yys
= getenv("YYDEBUG")) != 0)
2483 if (yyn
>= '0' && yyn
<= '9')
2484 yydebug
= yyn
- '0';
2494 *yyssp
= yystate
= 0;
2497 if ((yyn
= yydefred
[yystate
]) != 0) goto yyreduce
;
2500 if ((yychar
= yylex()) < 0) yychar
= 0;
2505 if (yychar
<= YYMAXTOKEN
) yys
= yyname
[yychar
];
2506 if (!yys
) yys
= "illegal-symbol";
2507 printf("%sdebug: state %d, reading %d (%s)\n",
2508 YYPREFIX
, yystate
, yychar
, yys
);
2512 if ((yyn
= yysindex
[yystate
]) != 0 && (yyn
+= yychar
) >= 0 &&
2513 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == yychar
)
2517 printf("%sdebug: state %d, shifting to state %d\n",
2518 YYPREFIX
, yystate
, yytable
[yyn
]);
2520 if (yyssp
>= yyss
+ yystacksize
- 1)
2524 *++yyssp
= yystate
= yytable
[yyn
];
2527 if (yyerrflag
> 0) --yyerrflag
;
2530 if ((yyn
= yyrindex
[yystate
]) != 0 && (yyn
+= yychar
) >= 0 &&
2531 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == yychar
)
2536 if (yyerrflag
) goto yyinrecovery
;
2539 yyerror("syntax error");
2549 if ((yyn
= yysindex
[*yyssp
]) != 0 && (yyn
+= YYERRCODE
) >= 0 &&
2550 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == YYERRCODE
)
2554 printf("%sdebug: state %d, error recovery shifting\
2555 to state %d\n", YYPREFIX
, *yyssp
, yytable
[yyn
]);
2557 if (yyssp
>= yyss
+ yystacksize
- 1)
2561 *++yyssp
= yystate
= yytable
[yyn
];
2569 printf("%sdebug: error recovery discarding state %d\n",
2572 if (yyssp
<= yyss
) goto yyabort
;
2580 if (yychar
== 0) goto yyabort
;
2585 if (yychar
<= YYMAXTOKEN
) yys
= yyname
[yychar
];
2586 if (!yys
) yys
= "illegal-symbol";
2587 printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
2588 YYPREFIX
, yystate
, yychar
, yys
);
2597 printf("%sdebug: state %d, reducing by rule %d (%s)\n",
2598 YYPREFIX
, yystate
, yyn
, yyrule
[yyn
]);
2601 yyval
= yyvsp
[1-yym
];
2606 if (fatal_error
> 0) {
2607 (void) fprintf(stderr
,
2608 "%s: %d errors detected for level \"%s\". No output created!\n",
2609 fname
, fatal_error
, yyvsp
[-2].map
);
2612 } else if (!got_errors
) {
2613 if (!write_level_file(yyvsp
[-2].map
, splev
)) {
2614 lc_error("Can't write output file for '%s'!", yyvsp
[-2].map
);
2618 Free(yyvsp
[-2].map
);
2621 vardef_free_all(variable_definitions
);
2622 variable_definitions
= NULL
;
2627 start_level_def(&splev
, yyvsp
[0].map
);
2628 yyval
.map
= yyvsp
[0].map
;
2633 start_level_def(&splev
, yyvsp
[-2].map
);
2634 if (yyvsp
[0].i
== -1) {
2635 add_opvars(splev
, "iiiiiiiio",
2636 VA_PASS9(LVLINIT_MAZEGRID
,HWALL
,0,0,
2637 0,0,0,0, SPO_INITLEVEL
));
2639 long bg
= what_map_char((char) yyvsp
[0].i
);
2640 add_opvars(splev
, "iiiiiiiio",
2641 VA_PASS9(LVLINIT_SOLIDFILL
, bg
, 0,0,
2642 0,0,0,0, SPO_INITLEVEL
));
2644 add_opvars(splev
, "io",
2645 VA_PASS2(MAZELEVEL
, SPO_LEVEL_FLAGS
));
2646 max_x_map
= COLNO
-1;
2648 yyval
.map
= yyvsp
[-2].map
;
2658 yyval
.i
= what_map_char((char) yyvsp
[0].i
);
2663 long filling
= yyvsp
[0].terr
.ter
;
2664 if (filling
== INVALID_TYPE
|| filling
>= MAX_TYPE
)
2665 lc_error("INIT_MAP: Invalid fill char type.");
2666 add_opvars(splev
, "iiiiiiiio",
2667 LVLINIT_SOLIDFILL
,filling
,0,(long)yyvsp
[0].terr
.lit
, 0,0,0,0, SPO_INITLEVEL
);
2668 max_x_map
= COLNO
-1;
2674 long filling
= what_map_char((char) yyvsp
[0].i
);
2675 if (filling
== INVALID_TYPE
|| filling
>= MAX_TYPE
)
2676 lc_error("INIT_MAP: Invalid fill char type.");
2677 add_opvars(splev
, "iiiiiiiio",
2678 VA_PASS9(LVLINIT_MAZEGRID
,filling
,0,0,
2679 0,0,0,0, SPO_INITLEVEL
));
2680 max_x_map
= COLNO
-1;
2686 add_opvars(splev
, "iiiiiiiio",
2687 VA_PASS9(LVLINIT_ROGUE
,0,0,0,
2688 0,0,0,0, SPO_INITLEVEL
));
2693 long fg
= what_map_char((char) yyvsp
[-11].i
);
2694 long bg
= what_map_char((char) yyvsp
[-9].i
);
2695 long smoothed
= yyvsp
[-7].i
;
2696 long joined
= yyvsp
[-5].i
;
2697 long lit
= yyvsp
[-3].i
;
2698 long walled
= yyvsp
[-1].i
;
2699 long filling
= yyvsp
[0].i
;
2700 if (fg
== INVALID_TYPE
|| fg
>= MAX_TYPE
)
2701 lc_error("INIT_MAP: Invalid foreground type.");
2702 if (bg
== INVALID_TYPE
|| bg
>= MAX_TYPE
)
2703 lc_error("INIT_MAP: Invalid background type.");
2704 if (joined
&& fg
!= CORR
&& fg
!= ROOM
)
2705 lc_error("INIT_MAP: Invalid foreground type for joined map.");
2707 if (filling
== INVALID_TYPE
)
2708 lc_error("INIT_MAP: Invalid fill char type.");
2710 add_opvars(splev
, "iiiiiiiio",
2711 VA_PASS9(LVLINIT_MINES
,filling
,walled
,lit
,
2712 joined
,smoothed
,bg
,fg
,
2714 max_x_map
= COLNO
-1;
2725 yyval
.i
= yyvsp
[0].i
;
2730 add_opvars(splev
, "o", VA_PASS1(SPO_COPY
));
2746 yyval
.i
= what_map_char((char) yyvsp
[0].i
);
2751 add_opvars(splev
, "io", VA_PASS2(0, SPO_LEVEL_FLAGS
));
2756 add_opvars(splev
, "io", VA_PASS2(yyvsp
[0].i
, SPO_LEVEL_FLAGS
));
2761 yyval
.i
= (yyvsp
[-2].i
| yyvsp
[0].i
);
2766 yyval
.i
= yyvsp
[0].i
;
2776 yyval
.i
= 1 + yyvsp
[0].i
;
2781 yyval
.i
= yyvsp
[-1].i
;
2786 struct lc_vardefs
*vd
;
2787 if ((vd
= vardef_defined(variable_definitions
, yyvsp
[0].map
, 1))) {
2788 if (!(vd
->var_type
& SPOVAR_ARRAY
))
2789 lc_error("Trying to shuffle non-array variable '%s'", yyvsp
[0].map
);
2790 } else lc_error("Trying to shuffle undefined variable '%s'", yyvsp
[0].map
);
2791 add_opvars(splev
, "so", VA_PASS2(yyvsp
[0].map
, SPO_SHUFFLE_ARRAY
));
2797 variable_definitions
= add_vardef_type(variable_definitions
, yyvsp
[-2].map
, SPOVAR_INT
);
2798 add_opvars(splev
, "iso", VA_PASS3(0, yyvsp
[-2].map
, SPO_VAR_INIT
));
2799 Free(yyvsp
[-2].map
);
2804 variable_definitions
= add_vardef_type(variable_definitions
, yyvsp
[-4].map
, SPOVAR_SEL
);
2805 add_opvars(splev
, "iso", VA_PASS3(0, yyvsp
[-4].map
, SPO_VAR_INIT
));
2806 Free(yyvsp
[-4].map
);
2811 variable_definitions
= add_vardef_type(variable_definitions
, yyvsp
[-2].map
, SPOVAR_STRING
);
2812 add_opvars(splev
, "iso", VA_PASS3(0, yyvsp
[-2].map
, SPO_VAR_INIT
));
2813 Free(yyvsp
[-2].map
);
2818 variable_definitions
= add_vardef_type(variable_definitions
, yyvsp
[-4].map
, SPOVAR_MAPCHAR
);
2819 add_opvars(splev
, "iso", VA_PASS3(0, yyvsp
[-4].map
, SPO_VAR_INIT
));
2820 Free(yyvsp
[-4].map
);
2825 variable_definitions
= add_vardef_type(variable_definitions
, yyvsp
[-4].map
, SPOVAR_MONST
);
2826 add_opvars(splev
, "iso", VA_PASS3(0, yyvsp
[-4].map
, SPO_VAR_INIT
));
2827 Free(yyvsp
[-4].map
);
2832 variable_definitions
= add_vardef_type(variable_definitions
, yyvsp
[-4].map
, SPOVAR_OBJ
);
2833 add_opvars(splev
, "iso", VA_PASS3(0, yyvsp
[-4].map
, SPO_VAR_INIT
));
2834 Free(yyvsp
[-4].map
);
2839 variable_definitions
= add_vardef_type(variable_definitions
, yyvsp
[-2].map
, SPOVAR_COORD
);
2840 add_opvars(splev
, "iso", VA_PASS3(0, yyvsp
[-2].map
, SPO_VAR_INIT
));
2841 Free(yyvsp
[-2].map
);
2846 variable_definitions
= add_vardef_type(variable_definitions
, yyvsp
[-2].map
, SPOVAR_REGION
);
2847 add_opvars(splev
, "iso", VA_PASS3(0, yyvsp
[-2].map
, SPO_VAR_INIT
));
2848 Free(yyvsp
[-2].map
);
2853 long n_items
= yyvsp
[-1].i
;
2854 variable_definitions
= add_vardef_type(variable_definitions
, yyvsp
[-4].map
, SPOVAR_INT
|SPOVAR_ARRAY
);
2855 add_opvars(splev
, "iso",
2856 VA_PASS3(n_items
, yyvsp
[-4].map
, SPO_VAR_INIT
));
2857 Free(yyvsp
[-4].map
);
2862 long n_items
= yyvsp
[-1].i
;
2863 variable_definitions
= add_vardef_type(variable_definitions
, yyvsp
[-4].map
, SPOVAR_COORD
|SPOVAR_ARRAY
);
2864 add_opvars(splev
, "iso",
2865 VA_PASS3(n_items
, yyvsp
[-4].map
, SPO_VAR_INIT
));
2866 Free(yyvsp
[-4].map
);
2871 long n_items
= yyvsp
[-1].i
;
2872 variable_definitions
= add_vardef_type(variable_definitions
, yyvsp
[-4].map
, SPOVAR_REGION
|SPOVAR_ARRAY
);
2873 add_opvars(splev
, "iso",
2874 VA_PASS3(n_items
, yyvsp
[-4].map
, SPO_VAR_INIT
));
2875 Free(yyvsp
[-4].map
);
2880 long n_items
= yyvsp
[-1].i
;
2881 variable_definitions
= add_vardef_type(variable_definitions
, yyvsp
[-6].map
, SPOVAR_MAPCHAR
|SPOVAR_ARRAY
);
2882 add_opvars(splev
, "iso",
2883 VA_PASS3(n_items
, yyvsp
[-6].map
, SPO_VAR_INIT
));
2884 Free(yyvsp
[-6].map
);
2889 long n_items
= yyvsp
[-1].i
;
2890 variable_definitions
= add_vardef_type(variable_definitions
, yyvsp
[-6].map
, SPOVAR_MONST
|SPOVAR_ARRAY
);
2891 add_opvars(splev
, "iso",
2892 VA_PASS3(n_items
, yyvsp
[-6].map
, SPO_VAR_INIT
));
2893 Free(yyvsp
[-6].map
);
2898 long n_items
= yyvsp
[-1].i
;
2899 variable_definitions
= add_vardef_type(variable_definitions
, yyvsp
[-6].map
, SPOVAR_OBJ
|SPOVAR_ARRAY
);
2900 add_opvars(splev
, "iso",
2901 VA_PASS3(n_items
, yyvsp
[-6].map
, SPO_VAR_INIT
));
2902 Free(yyvsp
[-6].map
);
2907 long n_items
= yyvsp
[-1].i
;
2908 variable_definitions
= add_vardef_type(variable_definitions
, yyvsp
[-4].map
, SPOVAR_STRING
|SPOVAR_ARRAY
);
2909 add_opvars(splev
, "iso",
2910 VA_PASS3(n_items
, yyvsp
[-4].map
, SPO_VAR_INIT
));
2911 Free(yyvsp
[-4].map
);
2916 add_opvars(splev
, "O", VA_PASS1(yyvsp
[0].i
));
2922 add_opvars(splev
, "O", VA_PASS1(yyvsp
[0].i
));
2923 yyval
.i
= 1 + yyvsp
[-2].i
;
2928 add_opvars(splev
, "M", VA_PASS1(yyvsp
[0].i
));
2934 add_opvars(splev
, "M", VA_PASS1(yyvsp
[0].i
));
2935 yyval
.i
= 1 + yyvsp
[-2].i
;
2940 add_opvars(splev
, "m", VA_PASS1(yyvsp
[0].i
));
2946 add_opvars(splev
, "m", VA_PASS1(yyvsp
[0].i
));
2947 yyval
.i
= 1 + yyvsp
[-2].i
;
2957 yyval
.i
= 1 + yyvsp
[-2].i
;
2962 add_opvars(splev
, "c", VA_PASS1(yyvsp
[0].i
));
2968 add_opvars(splev
, "c", VA_PASS1(yyvsp
[0].i
));
2969 yyval
.i
= 1 + yyvsp
[-2].i
;
2979 yyval
.i
= 1 + yyvsp
[-2].i
;
2989 yyval
.i
= 1 + yyvsp
[-2].i
;
2994 struct lc_funcdefs
*funcdef
;
2996 if (in_function_definition
)
2997 lc_error("Recursively defined functions not allowed (function %s).", yyvsp
[-1].map
);
2999 in_function_definition
++;
3001 if (funcdef_defined(function_definitions
, yyvsp
[-1].map
, 1))
3002 lc_error("Function '%s' already defined once.", yyvsp
[-1].map
);
3004 funcdef
= funcdef_new(-1, yyvsp
[-1].map
);
3005 funcdef
->next
= function_definitions
;
3006 function_definitions
= funcdef
;
3007 function_splev_backup
= splev
;
3008 splev
= &(funcdef
->code
);
3009 Free(yyvsp
[-1].map
);
3010 curr_function
= funcdef
;
3011 function_tmp_var_defs
= variable_definitions
;
3012 variable_definitions
= NULL
;
3022 add_opvars(splev
, "io", VA_PASS2(0, SPO_RETURN
));
3023 splev
= function_splev_backup
;
3024 in_function_definition
--;
3025 curr_function
= NULL
;
3026 vardef_free_all(variable_definitions
);
3027 variable_definitions
= function_tmp_var_defs
;
3032 struct lc_funcdefs
*tmpfunc
;
3033 tmpfunc
= funcdef_defined(function_definitions
, yyvsp
[-3].map
, 1);
3036 long nparams
= strlen( yyvsp
[-1].map
);
3037 char *fparamstr
= funcdef_paramtypes(tmpfunc
);
3038 if (strcmp(yyvsp
[-1].map
, fparamstr
)) {
3039 char *tmps
= strdup(decode_parm_str(fparamstr
));
3040 lc_error("Function '%s' requires params '%s', got '%s' instead.", yyvsp
[-3].map
, tmps
, decode_parm_str(yyvsp
[-1].map
));
3044 Free(yyvsp
[-1].map
);
3045 if (!(tmpfunc
->n_called
)) {
3046 /* we haven't called the function yet, so insert it in the code */
3047 struct opvar
*jmp
= New(struct opvar
);
3048 set_opvar_int(jmp
, splev
->n_opcodes
+1);
3049 add_opcode(splev
, SPO_PUSH
, jmp
);
3050 add_opcode(splev
, SPO_JMP
, NULL
); /* we must jump past it first, then CALL it, due to RETURN. */
3052 tmpfunc
->addr
= splev
->n_opcodes
;
3054 { /* init function parameter variables */
3055 struct lc_funcdefs_parm
*tfp
= tmpfunc
->params
;
3057 add_opvars(splev
, "iso",
3058 VA_PASS3(0, tfp
->name
,
3064 splev_add_from(splev
, &(tmpfunc
->code
));
3065 set_opvar_int(jmp
, splev
->n_opcodes
- jmp
->vardata
.l
);
3067 l
= tmpfunc
->addr
- splev
->n_opcodes
- 2;
3068 add_opvars(splev
, "iio",
3069 VA_PASS3(nparams
, l
, SPO_CALL
));
3070 tmpfunc
->n_called
++;
3072 lc_error("Function '%s' not defined.", yyvsp
[-3].map
);
3074 Free(yyvsp
[-3].map
);
3079 add_opcode(splev
, SPO_EXIT
, NULL
);
3089 yyval
.i
= yyvsp
[0].i
;
3094 /* val > rn2(100) */
3095 add_opvars(splev
, "iio",
3096 VA_PASS3((long)yyvsp
[0].i
, 100, SPO_RN2
));
3102 yyval
.i
= yyvsp
[-2].i
;
3107 /* boolean, explicit foo != 0 */
3108 add_opvars(splev
, "i", VA_PASS1(0));
3114 is_inconstant_number
= 0;
3119 struct opvar
*chkjmp
;
3120 if (in_switch_statement
> 0)
3121 lc_error("Cannot nest switch-statements.");
3123 in_switch_statement
++;
3125 n_switch_case_list
= 0;
3126 switch_default_case
= NULL
;
3128 if (!is_inconstant_number
)
3129 add_opvars(splev
, "o", VA_PASS1(SPO_RN2
));
3130 is_inconstant_number
= 0;
3132 chkjmp
= New(struct opvar
);
3133 set_opvar_int(chkjmp
, splev
->n_opcodes
+1);
3134 switch_check_jump
= chkjmp
;
3135 add_opcode(splev
, SPO_PUSH
, chkjmp
);
3136 add_opcode(splev
, SPO_JMP
, NULL
);
3142 struct opvar
*endjump
= New(struct opvar
);
3145 set_opvar_int(endjump
, splev
->n_opcodes
+1);
3147 add_opcode(splev
, SPO_PUSH
, endjump
);
3148 add_opcode(splev
, SPO_JMP
, NULL
);
3150 set_opvar_int(switch_check_jump
,
3151 splev
->n_opcodes
- switch_check_jump
->vardata
.l
);
3153 for (i
= 0; i
< n_switch_case_list
; i
++) {
3154 add_opvars(splev
, "oio",
3156 switch_case_value
[i
], SPO_CMP
));
3157 set_opvar_int(switch_case_list
[i
],
3158 switch_case_list
[i
]->vardata
.l
- splev
->n_opcodes
-1);
3159 add_opcode(splev
, SPO_PUSH
, switch_case_list
[i
]);
3160 add_opcode(splev
, SPO_JE
, NULL
);
3163 if (switch_default_case
) {
3164 set_opvar_int(switch_default_case
,
3165 switch_default_case
->vardata
.l
- splev
->n_opcodes
-1);
3166 add_opcode(splev
, SPO_PUSH
, switch_default_case
);
3167 add_opcode(splev
, SPO_JMP
, NULL
);
3170 set_opvar_int(endjump
, splev
->n_opcodes
- endjump
->vardata
.l
);
3172 break_stmt_end(splev
);
3174 add_opcode(splev
, SPO_POP
, NULL
); /* get rid of the value in stack */
3175 in_switch_statement
--;
3182 if (n_switch_case_list
< MAX_SWITCH_CASES
) {
3183 struct opvar
*tmppush
= New(struct opvar
);
3184 set_opvar_int(tmppush
, splev
->n_opcodes
);
3185 switch_case_value
[n_switch_case_list
] = yyvsp
[-1].i
;
3186 switch_case_list
[n_switch_case_list
++] = tmppush
;
3187 } else lc_error("Too many cases in a switch.");
3196 struct opvar
*tmppush
= New(struct opvar
);
3198 if (switch_default_case
)
3199 lc_error("Switch default case already used.");
3201 set_opvar_int(tmppush
, splev
->n_opcodes
);
3202 switch_default_case
= tmppush
;
3211 if (!allow_break_statements
)
3212 lc_error("Cannot use BREAK outside a statement block.");
3214 break_stmt_new(splev
, splev
->n_opcodes
);
3220 char buf
[256], buf2
[256];
3222 if (n_forloops
>= MAX_NESTED_IFS
) {
3223 lc_error("FOR: Too deeply nested loops.");
3224 n_forloops
= MAX_NESTED_IFS
- 1;
3227 /* first, define a variable for the for-loop end value */
3228 Sprintf(buf
, "%s end", yyvsp
[-4].map
);
3229 /* the value of which is already in stack (the 2nd math_expr) */
3230 add_opvars(splev
, "iso", VA_PASS3(0, buf
, SPO_VAR_INIT
));
3232 variable_definitions
= add_vardef_type(variable_definitions
,
3233 yyvsp
[-4].map
, SPOVAR_INT
);
3234 /* define the for-loop variable. value is in stack (1st math_expr) */
3235 add_opvars(splev
, "iso", VA_PASS3(0, yyvsp
[-4].map
, SPO_VAR_INIT
));
3237 /* calculate value for the loop "step" variable */
3238 Sprintf(buf2
, "%s step", yyvsp
[-4].map
);
3240 add_opvars(splev
, "vvo",
3241 VA_PASS3(buf
, yyvsp
[-4].map
, SPO_MATH_SUB
));
3243 add_opvars(splev
, "o", VA_PASS1(SPO_MATH_SIGN
));
3244 /* save the sign into the step var */
3245 add_opvars(splev
, "iso",
3246 VA_PASS3(0, buf2
, SPO_VAR_INIT
));
3248 forloop_list
[n_forloops
].varname
= strdup(yyvsp
[-4].map
);
3249 forloop_list
[n_forloops
].jmp_point
= splev
->n_opcodes
;
3252 Free(yyvsp
[-4].map
);
3263 char buf
[256], buf2
[256];
3266 Sprintf(buf
, "%s step", forloop_list
[n_forloops
].varname
);
3267 Sprintf(buf2
, "%s end", forloop_list
[n_forloops
].varname
);
3268 /* compare for-loop var to end value */
3269 add_opvars(splev
, "vvo",
3270 VA_PASS3(forloop_list
[n_forloops
].varname
,
3273 add_opvars(splev
, "vvo",
3274 VA_PASS3(buf
, forloop_list
[n_forloops
].varname
,
3276 /* for-loop var = (for-loop var + step) */
3277 add_opvars(splev
, "iso",
3278 VA_PASS3(0, forloop_list
[n_forloops
].varname
,
3280 /* jump back if compared values were not equal */
3281 add_opvars(splev
, "io",
3283 forloop_list
[n_forloops
].jmp_point
- splev
->n_opcodes
- 1,
3285 Free(forloop_list
[n_forloops
].varname
);
3286 break_stmt_end(splev
);
3291 struct opvar
*tmppush
= New(struct opvar
);
3293 if (n_if_list
>= MAX_NESTED_IFS
) {
3294 lc_error("LOOP: Too deeply nested conditionals.");
3295 n_if_list
= MAX_NESTED_IFS
- 1;
3297 set_opvar_int(tmppush
, splev
->n_opcodes
);
3298 if_list
[n_if_list
++] = tmppush
;
3300 add_opvars(splev
, "o", VA_PASS1(SPO_DEC
));
3306 struct opvar
*tmppush
;
3308 add_opvars(splev
, "oio", VA_PASS3(SPO_COPY
, 0, SPO_CMP
));
3310 tmppush
= (struct opvar
*) if_list
[--n_if_list
];
3311 set_opvar_int(tmppush
, tmppush
->vardata
.l
- splev
->n_opcodes
-1);
3312 add_opcode(splev
, SPO_PUSH
, tmppush
);
3313 add_opcode(splev
, SPO_JG
, NULL
);
3314 add_opcode(splev
, SPO_POP
, NULL
); /* get rid of the count value in stack */
3315 break_stmt_end(splev
);
3320 struct opvar
*tmppush2
= New(struct opvar
);
3322 if (n_if_list
>= MAX_NESTED_IFS
) {
3323 lc_error("IF: Too deeply nested conditionals.");
3324 n_if_list
= MAX_NESTED_IFS
- 1;
3327 add_opcode(splev
, SPO_CMP
, NULL
);
3329 set_opvar_int(tmppush2
, splev
->n_opcodes
+1);
3331 if_list
[n_if_list
++] = tmppush2
;
3333 add_opcode(splev
, SPO_PUSH
, tmppush2
);
3335 add_opcode(splev
, reverse_jmp_opcode( yyvsp
[-1].i
), NULL
);
3341 if (n_if_list
> 0) {
3342 struct opvar
*tmppush
;
3343 tmppush
= (struct opvar
*) if_list
[--n_if_list
];
3344 set_opvar_int(tmppush
, splev
->n_opcodes
- tmppush
->vardata
.l
);
3345 } else lc_error("IF: Huh?! No start address?");
3350 struct opvar
*tmppush2
= New(struct opvar
);
3352 if (n_if_list
>= MAX_NESTED_IFS
) {
3353 lc_error("IF: Too deeply nested conditionals.");
3354 n_if_list
= MAX_NESTED_IFS
- 1;
3357 add_opcode(splev
, SPO_CMP
, NULL
);
3359 set_opvar_int(tmppush2
, splev
->n_opcodes
+1);
3361 if_list
[n_if_list
++] = tmppush2
;
3363 add_opcode(splev
, SPO_PUSH
, tmppush2
);
3365 add_opcode(splev
, reverse_jmp_opcode( yyvsp
[0].i
), NULL
);
3376 if (n_if_list
> 0) {
3377 struct opvar
*tmppush
;
3378 tmppush
= (struct opvar
*) if_list
[--n_if_list
];
3379 set_opvar_int(tmppush
, splev
->n_opcodes
- tmppush
->vardata
.l
);
3380 } else lc_error("IF: Huh?! No start address?");
3385 if (n_if_list
> 0) {
3386 struct opvar
*tmppush
= New(struct opvar
);
3387 struct opvar
*tmppush2
;
3389 set_opvar_int(tmppush
, splev
->n_opcodes
+1);
3390 add_opcode(splev
, SPO_PUSH
, tmppush
);
3392 add_opcode(splev
, SPO_JMP
, NULL
);
3394 tmppush2
= (struct opvar
*) if_list
[--n_if_list
];
3396 set_opvar_int(tmppush2
, splev
->n_opcodes
- tmppush2
->vardata
.l
);
3397 if_list
[n_if_list
++] = tmppush
;
3398 } else lc_error("IF: Huh?! No else-part address?");
3403 if (n_if_list
> 0) {
3404 struct opvar
*tmppush
;
3405 tmppush
= (struct opvar
*) if_list
[--n_if_list
];
3406 set_opvar_int(tmppush
, splev
->n_opcodes
- tmppush
->vardata
.l
);
3407 } else lc_error("IF: Huh?! No end address?");
3412 add_opvars(splev
, "o", VA_PASS1(SPO_MESSAGE
));
3417 add_opvars(splev
, "iiiiiio",
3418 VA_PASS7(-1, 0, -1, -1, -1, -1, SPO_CORRIDOR
));
3423 add_opvars(splev
, "iiiiiio",
3424 VA_PASS7(-1, yyvsp
[0].i
, -1, -1, -1, -1, SPO_CORRIDOR
));
3429 add_opvars(splev
, "iiiiiio",
3430 VA_PASS7(-1, -1, -1, -1, -1, -1, SPO_CORRIDOR
));
3435 add_opvars(splev
, "iiiiiio",
3436 VA_PASS7(yyvsp
[-2].corpos
.room
, yyvsp
[-2].corpos
.door
, yyvsp
[-2].corpos
.wall
,
3437 yyvsp
[0].corpos
.room
, yyvsp
[0].corpos
.door
, yyvsp
[0].corpos
.wall
,
3443 add_opvars(splev
, "iiiiiio",
3444 VA_PASS7(yyvsp
[-2].corpos
.room
, yyvsp
[-2].corpos
.door
, yyvsp
[-2].corpos
.wall
,
3445 -1, -1, (long)yyvsp
[0].i
,
3451 yyval
.corpos
.room
= yyvsp
[-5].i
;
3452 yyval
.corpos
.wall
= yyvsp
[-3].i
;
3453 yyval
.corpos
.door
= yyvsp
[-1].i
;
3458 if ((yyvsp
[-2].i
< 100) && (yyvsp
[-3].i
== OROOM
))
3459 lc_error("Only typed rooms can have a chance.");
3461 add_opvars(splev
, "iii",
3462 VA_PASS3((long)yyvsp
[-3].i
, (long)yyvsp
[-2].i
, (long)yyvsp
[0].i
));
3468 long rflags
= yyvsp
[0].i
;
3470 if (rflags
== -1) rflags
= (1 << 0);
3471 add_opvars(splev
, "iiiiiiio",
3472 VA_PASS8(rflags
, ERR
, ERR
,
3473 yyvsp
[-3].crd
.x
, yyvsp
[-3].crd
.y
, yyvsp
[-1].sze
.width
, yyvsp
[-1].sze
.height
,
3480 break_stmt_end(splev
);
3481 add_opcode(splev
, SPO_ENDROOM
, NULL
);
3486 long rflags
= yyvsp
[-2].i
;
3488 if (rflags
== -1) rflags
= (1 << 0);
3489 add_opvars(splev
, "iiiiiiio",
3491 yyvsp
[-3].crd
.x
, yyvsp
[-3].crd
.y
, yyvsp
[-5].crd
.x
, yyvsp
[-5].crd
.y
,
3492 yyvsp
[-1].sze
.width
, yyvsp
[-1].sze
.height
, SPO_ROOM
));
3498 break_stmt_end(splev
);
3499 add_opcode(splev
, SPO_ENDROOM
, NULL
);
3509 yyval
.i
= yyvsp
[0].i
;
3514 if ( yyvsp
[-3].i
< 1 || yyvsp
[-3].i
> 5 ||
3515 yyvsp
[-1].i
< 1 || yyvsp
[-1].i
> 5 ) {
3516 lc_error("Room positions should be between 1-5: (%li,%li)!", yyvsp
[-3].i
, yyvsp
[-1].i
);
3518 yyval
.crd
.x
= yyvsp
[-3].i
;
3519 yyval
.crd
.y
= yyvsp
[-1].i
;
3525 yyval
.crd
.x
= yyval
.crd
.y
= ERR
;
3530 if ( yyvsp
[-3].i
< 0 || yyvsp
[-1].i
< 0) {
3531 lc_error("Invalid subroom position (%li,%li)!", yyvsp
[-3].i
, yyvsp
[-1].i
);
3533 yyval
.crd
.x
= yyvsp
[-3].i
;
3534 yyval
.crd
.y
= yyvsp
[-1].i
;
3540 yyval
.crd
.x
= yyval
.crd
.y
= ERR
;
3545 yyval
.crd
.x
= yyvsp
[-3].i
;
3546 yyval
.crd
.y
= yyvsp
[-1].i
;
3551 yyval
.crd
.x
= yyval
.crd
.y
= ERR
;
3556 yyval
.sze
.width
= yyvsp
[-3].i
;
3557 yyval
.sze
.height
= yyvsp
[-1].i
;
3562 yyval
.sze
.height
= yyval
.sze
.width
= ERR
;
3567 /* ERR means random here */
3568 if (yyvsp
[-2].i
== ERR
&& yyvsp
[0].i
!= ERR
) {
3569 lc_error("If the door wall is random, so must be its pos!");
3571 add_opvars(splev
, "iiiio",
3572 VA_PASS5((long)yyvsp
[0].i
, (long)yyvsp
[-4].i
, (long)yyvsp
[-6].i
,
3573 (long)yyvsp
[-2].i
, SPO_ROOM_DOOR
));
3579 add_opvars(splev
, "io", VA_PASS2((long)yyvsp
[-2].i
, SPO_DOOR
));
3584 yyval
.i
= yyvsp
[0].i
;
3589 yyval
.i
= (yyvsp
[-2].i
| yyvsp
[0].i
);
3594 add_opvars(splev
, "ciisiio",
3595 VA_PASS7(0, 0, 1, (char *)0, 0, 0, SPO_MAP
));
3596 max_x_map
= COLNO
-1;
3602 add_opvars(splev
, "cii",
3603 VA_PASS3(SP_COORD_PACK((yyvsp
[-4].i
),(yyvsp
[-2].i
)),
3604 1, (long)yyvsp
[-1].i
));
3605 scan_map(yyvsp
[0].map
, splev
);
3611 add_opvars(splev
, "ii", VA_PASS2(2, (long)yyvsp
[-1].i
));
3612 scan_map(yyvsp
[0].map
, splev
);
3618 add_opvars(splev
, "io", VA_PASS2(0, SPO_MONSTER
));
3623 add_opvars(splev
, "io", VA_PASS2(1, SPO_MONSTER
));
3630 break_stmt_end(splev
);
3632 add_opvars(splev
, "o", VA_PASS1(SPO_END_MONINVENT
));
3642 struct opvar
*stopit
= New(struct opvar
);
3643 set_opvar_int(stopit
, SP_M_V_END
);
3644 add_opcode(splev
, SPO_PUSH
, stopit
);
3650 if (( yyvsp
[-2].i
& yyvsp
[0].i
))
3651 lc_error("MONSTER extra info defined twice.");
3652 yyval
.i
= ( yyvsp
[-2].i
| yyvsp
[0].i
);
3657 add_opvars(splev
, "i", VA_PASS1(SP_M_V_NAME
));
3663 add_opvars(splev
, "ii",
3664 VA_PASS2((long)yyvsp
[0].i
, SP_M_V_PEACEFUL
));
3670 add_opvars(splev
, "ii",
3671 VA_PASS2((long)yyvsp
[0].i
, SP_M_V_ASLEEP
));
3677 add_opvars(splev
, "ii",
3678 VA_PASS2((long)yyvsp
[0].i
, SP_M_V_ALIGN
));
3684 add_opvars(splev
, "ii",
3685 VA_PASS2((long)yyvsp
[-1].i
, SP_M_V_APPEAR
));
3691 add_opvars(splev
, "ii", VA_PASS2(1, SP_M_V_FEMALE
));
3697 add_opvars(splev
, "ii", VA_PASS2(1, SP_M_V_INVIS
));
3703 add_opvars(splev
, "ii", VA_PASS2(1, SP_M_V_CANCELLED
));
3709 add_opvars(splev
, "ii", VA_PASS2(1, SP_M_V_REVIVED
));
3715 add_opvars(splev
, "ii", VA_PASS2(1, SP_M_V_AVENGE
));
3721 add_opvars(splev
, "i", VA_PASS1(SP_M_V_FLEEING
));
3727 add_opvars(splev
, "i", VA_PASS1(SP_M_V_BLINDED
));
3733 add_opvars(splev
, "i", VA_PASS1(SP_M_V_PARALYZED
));
3739 add_opvars(splev
, "ii", VA_PASS2(1, SP_M_V_STUNNED
));
3745 add_opvars(splev
, "ii", VA_PASS2(1, SP_M_V_CONFUSED
));
3751 add_opvars(splev
, "ii",
3752 VA_PASS2((long)yyvsp
[0].i
, SP_M_V_SEENTRAPS
));
3758 int token
= get_trap_type(yyvsp
[0].map
);
3759 if (token
== ERR
|| token
== 0)
3760 lc_error("Unknown trap type '%s'!", yyvsp
[0].map
);
3762 yyval
.i
= (1L << (token
- 1));
3767 yyval
.i
= (long) ~0;
3772 int token
= get_trap_type(yyvsp
[-2].map
);
3773 if (token
== ERR
|| token
== 0)
3774 lc_error("Unknown trap type '%s'!", yyvsp
[-2].map
);
3776 if ((1L << (token
- 1)) & yyvsp
[0].i
)
3777 lc_error("Monster seen_traps, trap '%s' listed twice.", yyvsp
[-2].map
);
3778 Free(yyvsp
[-2].map
);
3779 yyval
.i
= ((1L << (token
- 1)) | yyvsp
[0].i
);
3785 if (in_container_obj
) cnt
|= SP_OBJ_CONTENT
;
3786 add_opvars(splev
, "io", VA_PASS2(cnt
, SPO_OBJECT
));
3791 long cnt
= SP_OBJ_CONTAINER
;
3792 if (in_container_obj
) cnt
|= SP_OBJ_CONTENT
;
3793 add_opvars(splev
, "io", VA_PASS2(cnt
, SPO_OBJECT
));
3800 break_stmt_end(splev
);
3802 add_opcode(splev
, SPO_POP_CONTAINER
, NULL
);
3807 if (( yyvsp
[0].i
& 0x4000) && in_container_obj
)
3808 lc_error("Object cannot have a coord when contained.");
3809 else if (!( yyvsp
[0].i
& 0x4000) && !in_container_obj
)
3810 lc_error("Object needs a coord when not contained.");
3815 struct opvar
*stopit
= New(struct opvar
);
3816 set_opvar_int(stopit
, SP_O_V_END
);
3817 add_opcode(splev
, SPO_PUSH
, stopit
);
3823 if (( yyvsp
[-2].i
& yyvsp
[0].i
))
3824 lc_error("OBJECT extra info '%s' defined twice.", curr_token
);
3825 yyval
.i
= ( yyvsp
[-2].i
| yyvsp
[0].i
);
3830 add_opvars(splev
, "ii",
3831 VA_PASS2((long)yyvsp
[0].i
, SP_O_V_CURSE
));
3837 add_opvars(splev
, "i", VA_PASS1(SP_O_V_CORPSENM
));
3843 add_opvars(splev
, "i", VA_PASS1(SP_O_V_SPE
));
3849 add_opvars(splev
, "i", VA_PASS1(SP_O_V_NAME
));
3855 add_opvars(splev
, "i", VA_PASS1(SP_O_V_QUAN
));
3861 add_opvars(splev
, "ii", VA_PASS2(1, SP_O_V_BURIED
));
3867 add_opvars(splev
, "ii", VA_PASS2((long)yyvsp
[0].i
, SP_O_V_LIT
));
3873 add_opvars(splev
, "i", VA_PASS1(SP_O_V_ERODED
));
3879 add_opvars(splev
, "ii", VA_PASS2(-1, SP_O_V_ERODED
));
3885 if (yyvsp
[0].i
== D_LOCKED
) {
3886 add_opvars(splev
, "ii", VA_PASS2(1, SP_O_V_LOCKED
));
3888 } else if (yyvsp
[0].i
== D_BROKEN
) {
3889 add_opvars(splev
, "ii", VA_PASS2(1, SP_O_V_BROKEN
));
3892 lc_error("DOOR state can only be locked or broken.");
3897 add_opvars(splev
, "ii", VA_PASS2(yyvsp
[0].i
, SP_O_V_TRAPPED
));
3903 add_opvars(splev
, "i", VA_PASS1(SP_O_V_RECHARGED
));
3909 add_opvars(splev
, "ii", VA_PASS2(1, SP_O_V_INVIS
));
3915 add_opvars(splev
, "ii", VA_PASS2(1, SP_O_V_GREASED
));
3921 add_opvars(splev
, "i", VA_PASS1(SP_O_V_COORD
));
3927 add_opvars(splev
, "io", VA_PASS2((long)yyvsp
[-2].i
, SPO_TRAP
));
3932 long dir
, state
= 0;
3934 /* convert dir from a DIRECTION to a DB_DIR */
3937 case W_NORTH
: dir
= DB_NORTH
; break;
3938 case W_SOUTH
: dir
= DB_SOUTH
; break;
3939 case W_EAST
: dir
= DB_EAST
; break;
3940 case W_WEST
: dir
= DB_WEST
; break;
3942 lc_error("Invalid drawbridge direction.");
3946 if ( yyvsp
[0].i
== D_ISOPEN
)
3948 else if ( yyvsp
[0].i
== D_CLOSED
)
3950 else if ( yyvsp
[0].i
== -1 )
3953 lc_error("A drawbridge can only be open, closed or random!");
3954 add_opvars(splev
, "iio",
3955 VA_PASS3(state
, dir
, SPO_DRAWBRIDGE
));
3960 add_opvars(splev
, "iiio",
3961 VA_PASS4((long)yyvsp
[0].i
, 1, 0, SPO_MAZEWALK
));
3966 add_opvars(splev
, "iiio",
3967 VA_PASS4((long)yyvsp
[-3].i
, (long)yyvsp
[-1].i
,
3968 (long)yyvsp
[0].i
, SPO_MAZEWALK
));
3973 add_opvars(splev
, "rio",
3974 VA_PASS3(SP_REGION_PACK(-1,-1,-1,-1),
3980 add_opvars(splev
, "io", VA_PASS2(1, SPO_WALLIFY
));
3985 add_opvars(splev
, "io",
3986 VA_PASS2((long)yyvsp
[0].i
, SPO_LADDER
));
3991 add_opvars(splev
, "io",
3992 VA_PASS2((long)yyvsp
[0].i
, SPO_STAIR
));
3997 add_opvars(splev
, "iiiii iiiii iiso",
3998 VA_PASS14(yyvsp
[-4].lregn
.x1
, yyvsp
[-4].lregn
.y1
, yyvsp
[-4].lregn
.x2
, yyvsp
[-4].lregn
.y2
, yyvsp
[-4].lregn
.area
,
3999 yyvsp
[-2].lregn
.x1
, yyvsp
[-2].lregn
.y1
, yyvsp
[-2].lregn
.x2
, yyvsp
[-2].lregn
.y2
, yyvsp
[-2].lregn
.area
,
4000 (long) ((yyvsp
[0].i
) ? LR_UPSTAIR
: LR_DOWNSTAIR
),
4001 0, (char *) 0, SPO_LEVREGION
));
4006 add_opvars(splev
, "iiiii iiiii iiso",
4007 VA_PASS14(yyvsp
[-4].lregn
.x1
, yyvsp
[-4].lregn
.y1
, yyvsp
[-4].lregn
.x2
, yyvsp
[-4].lregn
.y2
, yyvsp
[-4].lregn
.area
,
4008 yyvsp
[-2].lregn
.x1
, yyvsp
[-2].lregn
.y1
, yyvsp
[-2].lregn
.x2
, yyvsp
[-2].lregn
.y2
, yyvsp
[-2].lregn
.area
,
4009 LR_PORTAL
, 0, yyvsp
[0].map
, SPO_LEVREGION
));
4016 switch(yyvsp
[0].i
) {
4017 case -1: rtyp
= LR_TELE
; break;
4018 case 0: rtyp
= LR_DOWNTELE
; break;
4019 case 1: rtyp
= LR_UPTELE
; break;
4021 add_opvars(splev
, "iiiii iiiii iiso",
4022 VA_PASS14(yyvsp
[-3].lregn
.x1
, yyvsp
[-3].lregn
.y1
, yyvsp
[-3].lregn
.x2
, yyvsp
[-3].lregn
.y2
, yyvsp
[-3].lregn
.area
,
4023 yyvsp
[-1].lregn
.x1
, yyvsp
[-1].lregn
.y1
, yyvsp
[-1].lregn
.x2
, yyvsp
[-1].lregn
.y2
, yyvsp
[-1].lregn
.area
,
4024 rtyp
, 0, (char *)0, SPO_LEVREGION
));
4029 add_opvars(splev
, "iiiii iiiii iiso",
4030 VA_PASS14(yyvsp
[-2].lregn
.x1
, yyvsp
[-2].lregn
.y1
, yyvsp
[-2].lregn
.x2
, yyvsp
[-2].lregn
.y2
, yyvsp
[-2].lregn
.area
,
4031 yyvsp
[0].lregn
.x1
, yyvsp
[0].lregn
.y1
, yyvsp
[0].lregn
.x2
, yyvsp
[0].lregn
.y2
, yyvsp
[0].lregn
.area
,
4032 (long) LR_BRANCH
, 0,
4033 (char *) 0, SPO_LEVREGION
));
4043 yyval
.i
= yyvsp
[0].i
;
4048 add_opvars(splev
, "o", VA_PASS1(SPO_FOUNTAIN
));
4053 add_opvars(splev
, "o", VA_PASS1(SPO_SINK
));
4058 add_opvars(splev
, "o", VA_PASS1(SPO_POOL
));
4063 yyval
.terr
.lit
= -2;
4064 yyval
.terr
.ter
= what_map_char((char) yyvsp
[0].i
);
4069 yyval
.terr
.lit
= yyvsp
[-1].i
;
4070 yyval
.terr
.ter
= what_map_char((char) yyvsp
[-3].i
);
4075 add_opvars(splev
, "io",
4076 VA_PASS2(yyvsp
[0].i
, SPO_REPLACETERRAIN
));
4081 add_opvars(splev
, "o", VA_PASS1(SPO_TERRAIN
));
4086 add_opvars(splev
, "o", VA_PASS1(SPO_NON_DIGGABLE
));
4091 add_opvars(splev
, "o", VA_PASS1(SPO_NON_PASSWALL
));
4097 long rt
= yyvsp
[-1].i
;
4098 long rflags
= yyvsp
[0].i
;
4100 if (rflags
== -1) rflags
= (1 << 0);
4101 if (!(rflags
& 1)) rt
+= MAXRTYPE
+1;
4102 irr
= ((rflags
& 2) != 0);
4103 add_opvars(splev
, "iiio",
4104 VA_PASS4((long)yyvsp
[-3].i
, rt
, rflags
, SPO_REGION
));
4105 yyval
.i
= (irr
|| (rflags
& 1) || rt
!= OROOM
);
4111 break_stmt_end(splev
);
4112 if ( yyvsp
[-1].i
) {
4113 add_opcode(splev
, SPO_ENDROOM
, NULL
);
4114 } else if ( yyvsp
[0].i
)
4115 lc_error("Cannot use lev statements in non-permanent REGION");
4125 yyval
.i
= yyvsp
[0].i
;
4130 add_opvars(splev
, "iio",
4131 VA_PASS3((long)yyvsp
[0].i
, (long)yyvsp
[-2].i
, SPO_ALTAR
));
4136 add_opvars(splev
, "io", VA_PASS2(2, SPO_GRAVE
));
4141 add_opvars(splev
, "sio",
4142 VA_PASS3((char *)0, 1, SPO_GRAVE
));
4147 add_opvars(splev
, "sio",
4148 VA_PASS3((char *)0, 0, SPO_GRAVE
));
4153 add_opvars(splev
, "o", VA_PASS1(SPO_GOLD
));
4158 add_opvars(splev
, "io",
4159 VA_PASS2((long)yyvsp
[-2].i
, SPO_ENGRAVING
));
4164 add_opvars(splev
, "o", VA_PASS1(SPO_MINERALIZE
));
4169 add_opvars(splev
, "iiiio",
4170 VA_PASS5(-1L, -1L, -1L, -1L, SPO_MINERALIZE
));
4175 int token
= get_trap_type(yyvsp
[0].map
);
4177 lc_error("Unknown trap type '%s'!", yyvsp
[0].map
);
4184 int token
= get_room_type(yyvsp
[0].map
);
4186 lc_warning("Unknown room type \"%s\"! Making ordinary room...", yyvsp
[0].map
);
4200 yyval
.i
= yyvsp
[0].i
;
4205 yyval
.i
= yyvsp
[0].i
;
4210 yyval
.i
= yyvsp
[-2].i
| yyvsp
[0].i
;
4215 yyval
.i
= (yyvsp
[0].i
<< 0);
4220 yyval
.i
= (yyvsp
[0].i
<< 1);
4225 yyval
.i
= (yyvsp
[0].i
<< 2);
4230 yyval
.i
= - MAX_REGISTERS
- 1;
4235 yyval
.i
= - MAX_REGISTERS
- 1;
4240 if ( yyvsp
[-1].i
>= 3 )
4241 lc_error("Register Index overflow!");
4243 yyval
.i
= - yyvsp
[-1].i
- 1;
4248 add_opvars(splev
, "s", VA_PASS1(yyvsp
[0].map
));
4254 check_vardef_type(variable_definitions
, yyvsp
[0].map
, SPOVAR_STRING
);
4255 vardef_used(variable_definitions
, yyvsp
[0].map
);
4256 add_opvars(splev
, "v", VA_PASS1(yyvsp
[0].map
));
4262 check_vardef_type(variable_definitions
, yyvsp
[-3].map
, SPOVAR_STRING
|SPOVAR_ARRAY
);
4263 vardef_used(variable_definitions
, yyvsp
[-3].map
);
4264 add_opvars(splev
, "v", VA_PASS1(yyvsp
[-3].map
));
4265 Free(yyvsp
[-3].map
);
4275 add_opvars(splev
, "c", VA_PASS1(yyvsp
[0].i
));
4280 add_opvars(splev
, "o", VA_PASS1(SPO_SEL_RNDCOORD
));
4285 check_vardef_type(variable_definitions
, yyvsp
[0].map
, SPOVAR_COORD
);
4286 vardef_used(variable_definitions
, yyvsp
[0].map
);
4287 add_opvars(splev
, "v", VA_PASS1(yyvsp
[0].map
));
4293 check_vardef_type(variable_definitions
, yyvsp
[-3].map
, SPOVAR_COORD
|SPOVAR_ARRAY
);
4294 vardef_used(variable_definitions
, yyvsp
[-3].map
);
4295 add_opvars(splev
, "v", VA_PASS1(yyvsp
[-3].map
));
4296 Free(yyvsp
[-3].map
);
4301 if (yyvsp
[-3].i
< 0 || yyvsp
[-1].i
< 0 || yyvsp
[-3].i
>= COLNO
|| yyvsp
[-1].i
>= ROWNO
)
4302 lc_error("Coordinates (%li,%li) out of map range!", yyvsp
[-3].i
, yyvsp
[-1].i
);
4303 yyval
.i
= SP_COORD_PACK(yyvsp
[-3].i
, yyvsp
[-1].i
);
4308 yyval
.i
= SP_COORD_PACK_RANDOM(0);
4313 yyval
.i
= SP_COORD_PACK_RANDOM( yyvsp
[-1].i
);
4318 yyval
.i
= yyvsp
[0].i
;
4323 if ((yyvsp
[-2].i
& yyvsp
[0].i
))
4324 lc_warning("Humidity flag used twice.");
4325 yyval
.i
= (yyvsp
[-2].i
| yyvsp
[0].i
);
4335 check_vardef_type(variable_definitions
, yyvsp
[0].map
, SPOVAR_REGION
);
4336 vardef_used(variable_definitions
, yyvsp
[0].map
);
4337 add_opvars(splev
, "v", VA_PASS1(yyvsp
[0].map
));
4343 check_vardef_type(variable_definitions
, yyvsp
[-3].map
, SPOVAR_REGION
|SPOVAR_ARRAY
);
4344 vardef_used(variable_definitions
, yyvsp
[-3].map
);
4345 add_opvars(splev
, "v", VA_PASS1(yyvsp
[-3].map
));
4346 Free(yyvsp
[-3].map
);
4351 long r
= SP_REGION_PACK(yyvsp
[-7].i
, yyvsp
[-5].i
, yyvsp
[-3].i
, yyvsp
[-1].i
);
4352 if ( yyvsp
[-7].i
> yyvsp
[-3].i
|| yyvsp
[-5].i
> yyvsp
[-1].i
)
4353 lc_error("Region start > end: (%li,%li,%li,%li)!", yyvsp
[-7].i
, yyvsp
[-5].i
, yyvsp
[-3].i
, yyvsp
[-1].i
);
4355 add_opvars(splev
, "r", VA_PASS1(r
));
4361 add_opvars(splev
, "m", VA_PASS1(yyvsp
[0].i
));
4366 check_vardef_type(variable_definitions
, yyvsp
[0].map
, SPOVAR_MAPCHAR
);
4367 vardef_used(variable_definitions
, yyvsp
[0].map
);
4368 add_opvars(splev
, "v", VA_PASS1(yyvsp
[0].map
));
4374 check_vardef_type(variable_definitions
, yyvsp
[-3].map
, SPOVAR_MAPCHAR
|SPOVAR_ARRAY
);
4375 vardef_used(variable_definitions
, yyvsp
[-3].map
);
4376 add_opvars(splev
, "v", VA_PASS1(yyvsp
[-3].map
));
4377 Free(yyvsp
[-3].map
);
4382 if (what_map_char((char) yyvsp
[0].i
) != INVALID_TYPE
)
4383 yyval
.i
= SP_MAPCHAR_PACK(what_map_char((char) yyvsp
[0].i
), -2);
4385 lc_error("Unknown map char type '%c'!", yyvsp
[0].i
);
4386 yyval
.i
= SP_MAPCHAR_PACK(STONE
, -2);
4392 if (what_map_char((char) yyvsp
[-3].i
) != INVALID_TYPE
)
4393 yyval
.i
= SP_MAPCHAR_PACK(what_map_char((char) yyvsp
[-3].i
), yyvsp
[-1].i
);
4395 lc_error("Unknown map char type '%c'!", yyvsp
[-3].i
);
4396 yyval
.i
= SP_MAPCHAR_PACK(STONE
, yyvsp
[-1].i
);
4402 add_opvars(splev
, "M", VA_PASS1(yyvsp
[0].i
));
4407 check_vardef_type(variable_definitions
, yyvsp
[0].map
, SPOVAR_MONST
);
4408 vardef_used(variable_definitions
, yyvsp
[0].map
);
4409 add_opvars(splev
, "v", VA_PASS1(yyvsp
[0].map
));
4415 check_vardef_type(variable_definitions
, yyvsp
[-3].map
, SPOVAR_MONST
|SPOVAR_ARRAY
);
4416 vardef_used(variable_definitions
, yyvsp
[-3].map
);
4417 add_opvars(splev
, "v", VA_PASS1(yyvsp
[-3].map
));
4418 Free(yyvsp
[-3].map
);
4423 long m
= get_monster_id(yyvsp
[0].map
, (char)0);
4425 lc_error("Unknown monster \"%s\"!", yyvsp
[0].map
);
4428 yyval
.i
= SP_MONST_PACK(m
,
4429 def_monsyms
[(int) mons
[m
].mlet
].sym
);
4435 if (check_monster_char((char) yyvsp
[0].i
))
4436 yyval
.i
= SP_MONST_PACK(-1, yyvsp
[0].i
);
4438 lc_error("Unknown monster class '%c'!", yyvsp
[0].i
);
4445 long m
= get_monster_id(yyvsp
[-1].map
, (char) yyvsp
[-3].i
);
4447 lc_error("Unknown monster ('%c', \"%s\")!", yyvsp
[-3].i
, yyvsp
[-1].map
);
4450 yyval
.i
= SP_MONST_PACK(m
, yyvsp
[-3].i
);
4451 Free(yyvsp
[-1].map
);
4461 add_opvars(splev
, "O", VA_PASS1(yyvsp
[0].i
));
4466 check_vardef_type(variable_definitions
, yyvsp
[0].map
, SPOVAR_OBJ
);
4467 vardef_used(variable_definitions
, yyvsp
[0].map
);
4468 add_opvars(splev
, "v", VA_PASS1(yyvsp
[0].map
));
4474 check_vardef_type(variable_definitions
, yyvsp
[-3].map
, SPOVAR_OBJ
|SPOVAR_ARRAY
);
4475 vardef_used(variable_definitions
, yyvsp
[-3].map
);
4476 add_opvars(splev
, "v", VA_PASS1(yyvsp
[-3].map
));
4477 Free(yyvsp
[-3].map
);
4482 long m
= get_object_id(yyvsp
[0].map
, (char)0);
4484 lc_error("Unknown object \"%s\"!", yyvsp
[0].map
);
4487 yyval
.i
= SP_OBJ_PACK(m
, 1); /* obj class != 0 to force generation of a specific item */
4493 if (check_object_char((char) yyvsp
[0].i
))
4494 yyval
.i
= SP_OBJ_PACK(-1, yyvsp
[0].i
);
4496 lc_error("Unknown object class '%c'!", yyvsp
[0].i
);
4503 long m
= get_object_id(yyvsp
[-1].map
, (char) yyvsp
[-3].i
);
4505 lc_error("Unknown object ('%c', \"%s\")!", yyvsp
[-3].i
, yyvsp
[-1].map
);
4508 yyval
.i
= SP_OBJ_PACK(m
, yyvsp
[-3].i
);
4509 Free(yyvsp
[-1].map
);
4522 add_opvars(splev
, "o", VA_PASS1(SPO_MATH_ADD
));
4527 add_opvars(splev
, "i", VA_PASS1(yyvsp
[0].i
));
4532 is_inconstant_number
= 1;
4537 add_opvars(splev
, "i", VA_PASS1(yyvsp
[-1].i
));
4542 check_vardef_type(variable_definitions
, yyvsp
[0].map
, SPOVAR_INT
);
4543 vardef_used(variable_definitions
, yyvsp
[0].map
);
4544 add_opvars(splev
, "v", VA_PASS1(yyvsp
[0].map
));
4546 is_inconstant_number
= 1;
4551 check_vardef_type(variable_definitions
,
4552 yyvsp
[-3].map
, SPOVAR_INT
|SPOVAR_ARRAY
);
4553 vardef_used(variable_definitions
, yyvsp
[-3].map
);
4554 add_opvars(splev
, "v", VA_PASS1(yyvsp
[-3].map
));
4555 Free(yyvsp
[-3].map
);
4556 is_inconstant_number
= 1;
4561 add_opvars(splev
, "o", VA_PASS1(SPO_MATH_ADD
));
4566 add_opvars(splev
, "o", VA_PASS1(SPO_MATH_SUB
));
4571 add_opvars(splev
, "o", VA_PASS1(SPO_MATH_MUL
));
4576 add_opvars(splev
, "o", VA_PASS1(SPO_MATH_DIV
));
4581 add_opvars(splev
, "o", VA_PASS1(SPO_MATH_MOD
));
4589 if (!strcmp("int", yyvsp
[0].map
) || !strcmp("integer", yyvsp
[0].map
)) {
4592 lc_error("Unknown function parameter type '%s'", yyvsp
[0].map
);
4597 if (!strcmp("str", yyvsp
[0].map
) || !strcmp("string", yyvsp
[0].map
)) {
4600 lc_error("Unknown function parameter type '%s'", yyvsp
[0].map
);
4605 struct lc_funcdefs_parm
*tmp
= New(struct lc_funcdefs_parm
);
4607 if (!curr_function
) {
4608 lc_error("Function parameters outside function definition.");
4610 lc_error("Could not alloc function params.");
4612 long vt
= SPOVAR_NULL
;
4614 tmp
->name
= strdup(yyvsp
[-2].map
);
4615 tmp
->parmtype
= (char) yyvsp
[0].i
;
4616 tmp
->next
= curr_function
->params
;
4617 curr_function
->params
= tmp
;
4618 curr_function
->n_params
++;
4619 switch (tmp
->parmtype
) {
4627 lc_error("Unknown func param conversion.");
4630 variable_definitions
= add_vardef_type(
4631 variable_definitions
,
4634 Free(yyvsp
[-2].map
);
4650 tmpbuf
[0] = (char) yyvsp
[0].i
;
4652 yyval
.map
= strdup(tmpbuf
);
4657 long len
= strlen( yyvsp
[-2].map
);
4658 char *tmp
= (char *) alloc(len
+ 2);
4659 sprintf(tmp
, "%c%s", (char) yyvsp
[0].i
, yyvsp
[-2].map
);
4660 Free( yyvsp
[-2].map
);
4666 yyval
.map
= strdup("");
4671 char *tmp
= strdup( yyvsp
[0].map
);
4672 Free( yyvsp
[0].map
);
4678 add_opvars(splev
, "o", VA_PASS1(SPO_SEL_POINT
));
4683 add_opvars(splev
, "o", VA_PASS1(SPO_SEL_RECT
));
4688 add_opvars(splev
, "o", VA_PASS1(SPO_SEL_FILLRECT
));
4693 add_opvars(splev
, "o", VA_PASS1(SPO_SEL_LINE
));
4698 /* randline (x1,y1),(x2,y2), roughness */
4699 add_opvars(splev
, "o", VA_PASS1(SPO_SEL_RNDLINE
));
4704 add_opvars(splev
, "io", VA_PASS2(W_ANY
, SPO_SEL_GROW
));
4709 add_opvars(splev
, "io", VA_PASS2(yyvsp
[-3].i
, SPO_SEL_GROW
));
4714 add_opvars(splev
, "iio",
4715 VA_PASS3(yyvsp
[-3].i
, SPOFILTER_PERCENT
, SPO_SEL_FILTER
));
4720 add_opvars(splev
, "io",
4721 VA_PASS2(SPOFILTER_SELECTION
, SPO_SEL_FILTER
));
4726 add_opvars(splev
, "io",
4727 VA_PASS2(SPOFILTER_MAPCHAR
, SPO_SEL_FILTER
));
4732 add_opvars(splev
, "o", VA_PASS1(SPO_SEL_FLOOD
));
4737 add_opvars(splev
, "oio",
4738 VA_PASS3(SPO_COPY
, 1, SPO_SEL_ELLIPSE
));
4743 add_opvars(splev
, "oio",
4744 VA_PASS3(SPO_COPY
, yyvsp
[-1].i
, SPO_SEL_ELLIPSE
));
4749 add_opvars(splev
, "io", VA_PASS2(1, SPO_SEL_ELLIPSE
));
4754 add_opvars(splev
, "io", VA_PASS2(yyvsp
[-1].i
, SPO_SEL_ELLIPSE
));
4759 add_opvars(splev
, "iio",
4760 VA_PASS3(yyvsp
[-5].i
, yyvsp
[-11].i
, SPO_SEL_GRADIENT
));
4765 add_opvars(splev
, "o", VA_PASS1(SPO_SEL_COMPLEMENT
));
4770 check_vardef_type(variable_definitions
, yyvsp
[0].map
, SPOVAR_SEL
);
4771 vardef_used(variable_definitions
, yyvsp
[0].map
);
4772 add_opvars(splev
, "v", VA_PASS1(yyvsp
[0].map
));
4788 add_opvars(splev
, "o", VA_PASS1(SPO_SEL_ADD
));
4793 add_opvars(splev
, "iio",
4794 VA_PASS3(yyvsp
[0].dice
.num
, yyvsp
[0].dice
.die
, SPO_DICE
));
4799 add_opvars(splev
, "i", VA_PASS1(yyvsp
[0].i
));
4804 add_opvars(splev
, "i", VA_PASS1(yyvsp
[0].i
));
4809 add_opvars(splev
, "i", VA_PASS1(yyvsp
[0].i
));
4819 yyval
.lregn
= yyvsp
[0].lregn
;
4824 if (yyvsp
[-7].i
<= 0 || yyvsp
[-7].i
>= COLNO
)
4826 "Region (%ld,%ld,%ld,%ld) out of level range (x1)!",
4827 yyvsp
[-7].i
, yyvsp
[-5].i
, yyvsp
[-3].i
, yyvsp
[-1].i
);
4828 else if (yyvsp
[-5].i
< 0 || yyvsp
[-5].i
>= ROWNO
)
4830 "Region (%ld,%ld,%ld,%ld) out of level range (y1)!",
4831 yyvsp
[-7].i
, yyvsp
[-5].i
, yyvsp
[-3].i
, yyvsp
[-1].i
);
4832 else if (yyvsp
[-3].i
<= 0 || yyvsp
[-3].i
>= COLNO
)
4834 "Region (%ld,%ld,%ld,%ld) out of level range (x2)!",
4835 yyvsp
[-7].i
, yyvsp
[-5].i
, yyvsp
[-3].i
, yyvsp
[-1].i
);
4836 else if (yyvsp
[-1].i
< 0 || yyvsp
[-1].i
>= ROWNO
)
4838 "Region (%ld,%ld,%ld,%ld) out of level range (y2)!",
4839 yyvsp
[-7].i
, yyvsp
[-5].i
, yyvsp
[-3].i
, yyvsp
[-1].i
);
4840 yyval
.lregn
.x1
= yyvsp
[-7].i
;
4841 yyval
.lregn
.y1
= yyvsp
[-5].i
;
4842 yyval
.lregn
.x2
= yyvsp
[-3].i
;
4843 yyval
.lregn
.y2
= yyvsp
[-1].i
;
4844 yyval
.lregn
.area
= 1;
4849 /* This series of if statements is a hack for MSC 5.1. It seems that its
4850 tiny little brain cannot compile if these are all one big if statement. */
4851 if (yyvsp
[-7].i
< 0 || yyvsp
[-7].i
> (int) max_x_map
)
4853 "Region (%ld,%ld,%ld,%ld) out of map range (x1)!",
4854 yyvsp
[-7].i
, yyvsp
[-5].i
, yyvsp
[-3].i
, yyvsp
[-1].i
);
4855 else if (yyvsp
[-5].i
< 0 || yyvsp
[-5].i
> (int) max_y_map
)
4857 "Region (%ld,%ld,%ld,%ld) out of map range (y1)!",
4858 yyvsp
[-7].i
, yyvsp
[-5].i
, yyvsp
[-3].i
, yyvsp
[-1].i
);
4859 else if (yyvsp
[-3].i
< 0 || yyvsp
[-3].i
> (int) max_x_map
)
4861 "Region (%ld,%ld,%ld,%ld) out of map range (x2)!",
4862 yyvsp
[-7].i
, yyvsp
[-5].i
, yyvsp
[-3].i
, yyvsp
[-1].i
);
4863 else if (yyvsp
[-1].i
< 0 || yyvsp
[-1].i
> (int) max_y_map
)
4865 "Region (%ld,%ld,%ld,%ld) out of map range (y2)!",
4866 yyvsp
[-7].i
, yyvsp
[-5].i
, yyvsp
[-3].i
, yyvsp
[-1].i
);
4867 yyval
.lregn
.area
= 0;
4868 yyval
.lregn
.x1
= yyvsp
[-7].i
;
4869 yyval
.lregn
.y1
= yyvsp
[-5].i
;
4870 yyval
.lregn
.x2
= yyvsp
[-3].i
;
4871 yyval
.lregn
.y2
= yyvsp
[-1].i
;
4879 if (yystate
== 0 && yym
== 0)
4883 printf("%sdebug: after reduction, shifting from state 0 to\
4884 state %d\n", YYPREFIX
, YYFINAL
);
4891 if ((yychar
= yylex()) < 0) yychar
= 0;
4896 if (yychar
<= YYMAXTOKEN
) yys
= yyname
[yychar
];
4897 if (!yys
) yys
= "illegal-symbol";
4898 printf("%sdebug: state %d, reading %d (%s)\n",
4899 YYPREFIX
, YYFINAL
, yychar
, yys
);
4903 if (yychar
== 0) goto yyaccept
;
4906 if ((yyn
= yygindex
[yym
]) != 0 && (yyn
+= yystate
) >= 0 &&
4907 yyn
<= YYTABLESIZE
&& yycheck
[yyn
] == yystate
)
4908 yystate
= yytable
[yyn
];
4910 yystate
= yydgoto
[yym
];
4913 printf("%sdebug: after reduction, shifting from state %d \
4914 to state %d\n", YYPREFIX
, *yyssp
, yystate
);
4916 if (yyssp
>= yyss
+ yystacksize
- 1)
4924 yyerror("yacc stack overflow");