OSDN Git Service

import nethack-3.6.0
[jnethack/source.git] / sys / share / lev_yacc.c
1 #ifndef lint
2 /* static char yysccsid[] = "@(#)yaccpar        1.9 (Berkeley) 02/21/93"; */
3 /* static char nhsccsid[] = "@(#)yaccpar   1.9.0-nh (NetHack) 12/03/2015"; */
4 #endif
5 #define YYBYACC 1
6 #define YYMAJOR 1
7 #define YYMINOR 9
8 #define YYSUBMINOR "0-nh"
9
10 #define yyclearin (yychar=(-1))
11 #define yyerrok (yyerrflag=0)
12 #define YYRECOVERING (yyerrflag!=0)
13 #define YYPREFIX "yy"
14 /* NetHack 3.6  lev_comp.y      $NHDT-Date: 1449233826 2015/12/04 12:57:06 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.19 $ */
15 /*      Copyright (c) 1989 by Jean-Christophe Collet */
16 /* NetHack may be freely redistributed.  See license for details. */
17
18 /*
19  * This file contains the Level Compiler code
20  * It may handle special mazes & special room-levels
21  */
22
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...).
27  *
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.
31  */
32 #ifdef _AIX
33  #pragma alloca         /* keep leading space! */
34 #endif
35
36 #define SPEC_LEV    /* for USE_OLDARGS (sp_lev.h) */
37 #include "hack.h"
38 #include "sp_lev.h"
39
40 #define ERR             (-1)
41 /* many types of things are put in chars for transference to NetHack.
42  * since some systems will use signed chars, limit everybody to the
43  * same number for portability.
44  */
45 #define MAX_OF_TYPE     128
46
47 #define MAX_NESTED_IFS  20
48 #define MAX_SWITCH_CASES 20
49
50 #define New(type)               \
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)
54
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);
60 int NDECL(yyparse);
61
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 *));
79
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 *,char *, int));
83 extern char *FDECL(funcdef_paramtypes, (struct lc_funcdefs *));
84 extern char *FDECL(decode_parm_str, (char *));
85
86 extern struct lc_vardefs *FDECL(vardef_new,(long,char *));
87 extern void FDECL(vardef_free_all,(struct lc_vardefs *));
88 extern struct lc_vardefs *FDECL(vardef_defined,(struct lc_vardefs *,char *, int));
89
90 extern void NDECL(break_stmt_start);
91 extern void FDECL(break_stmt_end, (sp_lev *));
92 extern void FDECL(break_stmt_new, (sp_lev *, long));
93
94 extern void FDECL(splev_add_from, (sp_lev *, sp_lev *));
95
96 extern void FDECL(check_vardef_type, (struct lc_vardefs *, char *, long));
97 extern void FDECL(vardef_used, (struct lc_vardefs *, char *));
98 extern struct lc_vardefs *FDECL(add_vardef_type, (struct lc_vardefs *, char *, long));
99
100 extern int FDECL(reverse_jmp_opcode, (int));
101
102 struct coord {
103         long x;
104         long y;
105 };
106
107 struct forloopdef {
108     char *varname;
109     long jmp_point;
110 };
111 static struct forloopdef forloop_list[MAX_NESTED_IFS];
112 static short n_forloops = 0;
113
114
115 sp_lev *splev = NULL;
116
117 static struct opvar *if_list[MAX_NESTED_IFS];
118
119 static short n_if_list = 0;
120
121 unsigned int max_x_map, max_y_map;
122 int obj_containment = 0;
123
124 int in_container_obj = 0;
125
126 /* integer value is possibly an inconstant value (eg. dice notation or a variable) */
127 int is_inconstant_number = 0;
128
129 int in_switch_statement = 0;
130 static struct opvar *switch_check_jump = NULL;
131 static struct opvar *switch_default_case = NULL;
132 static struct opvar *switch_case_list[MAX_SWITCH_CASES];
133 static long switch_case_value[MAX_SWITCH_CASES];
134 int n_switch_case_list = 0;
135
136 int allow_break_statements = 0;
137 struct lc_breakdef *break_list = NULL;
138
139 extern struct lc_vardefs *variable_definitions;
140
141
142 struct lc_vardefs *function_tmp_var_defs = NULL;
143 extern struct lc_funcdefs *function_definitions;
144 struct lc_funcdefs *curr_function = NULL;
145 struct lc_funcdefs_parm * curr_function_param = NULL;
146 int in_function_definition = 0;
147 sp_lev *function_splev_backup = NULL;
148
149 extern int fatal_error;
150 extern int got_errors;
151 extern int line_number;
152 extern const char *fname;
153
154 extern char curr_token[512];
155
156 typedef union
157 {
158         long    i;
159         char*   map;
160         struct {
161                 long room;
162                 long wall;
163                 long door;
164         } corpos;
165     struct {
166         long area;
167         long x1;
168         long y1;
169         long x2;
170         long y2;
171     } lregn;
172     struct {
173         long x;
174         long y;
175     } crd;
176     struct {
177         long ter;
178         long lit;
179     } terr;
180     struct {
181         long height;
182         long width;
183     } sze;
184     struct {
185         long die;
186         long num;
187     } dice;
188     struct {
189         long cfunc;
190         char *varstr;
191     } meth;
192 } YYSTYPE;
193 #define CHAR 257
194 #define INTEGER 258
195 #define BOOLEAN 259
196 #define PERCENT 260
197 #define SPERCENT 261
198 #define MINUS_INTEGER 262
199 #define PLUS_INTEGER 263
200 #define MAZE_GRID_ID 264
201 #define SOLID_FILL_ID 265
202 #define MINES_ID 266
203 #define ROGUELEV_ID 267
204 #define MESSAGE_ID 268
205 #define MAZE_ID 269
206 #define LEVEL_ID 270
207 #define LEV_INIT_ID 271
208 #define GEOMETRY_ID 272
209 #define NOMAP_ID 273
210 #define OBJECT_ID 274
211 #define COBJECT_ID 275
212 #define MONSTER_ID 276
213 #define TRAP_ID 277
214 #define DOOR_ID 278
215 #define DRAWBRIDGE_ID 279
216 #define object_ID 280
217 #define monster_ID 281
218 #define terrain_ID 282
219 #define MAZEWALK_ID 283
220 #define WALLIFY_ID 284
221 #define REGION_ID 285
222 #define FILLING 286
223 #define IRREGULAR 287
224 #define JOINED 288
225 #define ALTAR_ID 289
226 #define LADDER_ID 290
227 #define STAIR_ID 291
228 #define NON_DIGGABLE_ID 292
229 #define NON_PASSWALL_ID 293
230 #define ROOM_ID 294
231 #define PORTAL_ID 295
232 #define TELEPRT_ID 296
233 #define BRANCH_ID 297
234 #define LEV 298
235 #define MINERALIZE_ID 299
236 #define CORRIDOR_ID 300
237 #define GOLD_ID 301
238 #define ENGRAVING_ID 302
239 #define FOUNTAIN_ID 303
240 #define POOL_ID 304
241 #define SINK_ID 305
242 #define NONE 306
243 #define RAND_CORRIDOR_ID 307
244 #define DOOR_STATE 308
245 #define LIGHT_STATE 309
246 #define CURSE_TYPE 310
247 #define ENGRAVING_TYPE 311
248 #define DIRECTION 312
249 #define RANDOM_TYPE 313
250 #define RANDOM_TYPE_BRACKET 314
251 #define A_REGISTER 315
252 #define ALIGNMENT 316
253 #define LEFT_OR_RIGHT 317
254 #define CENTER 318
255 #define TOP_OR_BOT 319
256 #define ALTAR_TYPE 320
257 #define UP_OR_DOWN 321
258 #define SUBROOM_ID 322
259 #define NAME_ID 323
260 #define FLAGS_ID 324
261 #define FLAG_TYPE 325
262 #define MON_ATTITUDE 326
263 #define MON_ALERTNESS 327
264 #define MON_APPEARANCE 328
265 #define ROOMDOOR_ID 329
266 #define IF_ID 330
267 #define ELSE_ID 331
268 #define TERRAIN_ID 332
269 #define HORIZ_OR_VERT 333
270 #define REPLACE_TERRAIN_ID 334
271 #define EXIT_ID 335
272 #define SHUFFLE_ID 336
273 #define QUANTITY_ID 337
274 #define BURIED_ID 338
275 #define LOOP_ID 339
276 #define FOR_ID 340
277 #define TO_ID 341
278 #define SWITCH_ID 342
279 #define CASE_ID 343
280 #define BREAK_ID 344
281 #define DEFAULT_ID 345
282 #define ERODED_ID 346
283 #define TRAPPED_STATE 347
284 #define RECHARGED_ID 348
285 #define INVIS_ID 349
286 #define GREASED_ID 350
287 #define FEMALE_ID 351
288 #define CANCELLED_ID 352
289 #define REVIVED_ID 353
290 #define AVENGE_ID 354
291 #define FLEEING_ID 355
292 #define BLINDED_ID 356
293 #define PARALYZED_ID 357
294 #define STUNNED_ID 358
295 #define CONFUSED_ID 359
296 #define SEENTRAPS_ID 360
297 #define ALL_ID 361
298 #define MONTYPE_ID 362
299 #define GRAVE_ID 363
300 #define ERODEPROOF_ID 364
301 #define FUNCTION_ID 365
302 #define MSG_OUTPUT_TYPE 366
303 #define COMPARE_TYPE 367
304 #define UNKNOWN_TYPE 368
305 #define rect_ID 369
306 #define fillrect_ID 370
307 #define line_ID 371
308 #define randline_ID 372
309 #define grow_ID 373
310 #define selection_ID 374
311 #define flood_ID 375
312 #define rndcoord_ID 376
313 #define circle_ID 377
314 #define ellipse_ID 378
315 #define filter_ID 379
316 #define complement_ID 380
317 #define gradient_ID 381
318 #define GRADIENT_TYPE 382
319 #define LIMITED 383
320 #define HUMIDITY_TYPE 384
321 #define STRING 385
322 #define MAP_ID 386
323 #define NQSTRING 387
324 #define VARSTRING 388
325 #define CFUNC 389
326 #define CFUNC_INT 390
327 #define CFUNC_STR 391
328 #define CFUNC_COORD 392
329 #define CFUNC_REGION 393
330 #define VARSTRING_INT 394
331 #define VARSTRING_INT_ARRAY 395
332 #define VARSTRING_STRING 396
333 #define VARSTRING_STRING_ARRAY 397
334 #define VARSTRING_VAR 398
335 #define VARSTRING_VAR_ARRAY 399
336 #define VARSTRING_COORD 400
337 #define VARSTRING_COORD_ARRAY 401
338 #define VARSTRING_REGION 402
339 #define VARSTRING_REGION_ARRAY 403
340 #define VARSTRING_MAPCHAR 404
341 #define VARSTRING_MAPCHAR_ARRAY 405
342 #define VARSTRING_MONST 406
343 #define VARSTRING_MONST_ARRAY 407
344 #define VARSTRING_OBJ 408
345 #define VARSTRING_OBJ_ARRAY 409
346 #define VARSTRING_SEL 410
347 #define VARSTRING_SEL_ARRAY 411
348 #define METHOD_INT 412
349 #define METHOD_INT_ARRAY 413
350 #define METHOD_STRING 414
351 #define METHOD_STRING_ARRAY 415
352 #define METHOD_VAR 416
353 #define METHOD_VAR_ARRAY 417
354 #define METHOD_COORD 418
355 #define METHOD_COORD_ARRAY 419
356 #define METHOD_REGION 420
357 #define METHOD_REGION_ARRAY 421
358 #define METHOD_MAPCHAR 422
359 #define METHOD_MAPCHAR_ARRAY 423
360 #define METHOD_MONST 424
361 #define METHOD_MONST_ARRAY 425
362 #define METHOD_OBJ 426
363 #define METHOD_OBJ_ARRAY 427
364 #define METHOD_SEL 428
365 #define METHOD_SEL_ARRAY 429
366 #define DICE 430
367 #define YYERRCODE 256
368 short yylhs[] = {                                        -1,
369     0,    0,   73,   73,   74,   57,   57,   56,   56,   76,
370    76,   76,   76,   55,   55,   54,   54,   46,   46,   14,
371    14,   75,   75,   26,   26,   22,   22,   23,   78,   78,
372    78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
373    78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
374    78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
375    78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
376    78,   78,   59,   59,   59,   59,   59,   59,   59,   59,
377    59,   58,   58,   58,   58,   58,   58,   58,   58,   58,
378    60,   60,   60,   61,   61,   85,   84,   84,   84,   84,
379    84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
380    84,   38,   38,   44,   44,   43,   43,   42,   42,   41,
381    41,   39,   39,   40,   40,  129,  130,  100,  101,   98,
382    45,   45,   31,   31,   31,  131,  133,   93,  134,  134,
383   136,  135,  137,  135,   99,  138,  138,  139,  140,   94,
384   141,   95,  142,   97,  144,   96,  143,  145,  143,   79,
385   110,  110,  110,   83,   83,   65,  146,  147,  113,  148,
386   112,   10,   10,   68,   68,   69,   69,   70,   70,   71,
387    71,   87,   87,   15,   15,   13,   13,   16,   16,   11,
388    11,  103,  103,  103,    1,    1,    2,    2,  105,  150,
389   105,  149,   20,   20,   21,   21,   21,   21,   21,   21,
390    21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
391    35,   35,   35,  106,  152,  106,  151,   18,   18,   19,
392    19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
393    19,   19,   19,   19,  120,   88,  104,  104,  121,  121,
394   102,  117,  118,  109,  119,   82,   17,   17,   91,  114,
395   108,   72,   72,  116,  115,   86,  107,  154,  111,   24,
396    24,   80,   81,   81,   81,   92,   89,   90,   90,    3,
397     3,    4,    4,   29,   29,   28,   28,   27,   27,   27,
398     5,    5,    6,    6,    7,    7,    7,   12,   12,   12,
399     8,    8,    9,  155,  155,  155,  132,   77,   77,   77,
400    77,   32,   32,   32,   30,   30,  127,  127,  127,   33,
401   124,  124,  124,   34,   34,  125,  125,  125,   36,   36,
402    36,   36,  126,  126,  126,   37,   37,   37,   37,  123,
403   123,  122,  122,  122,  122,  122,  122,  122,  122,  122,
404   122,  122,   50,   50,  157,  158,  158,  128,  128,   64,
405    64,   63,   63,   62,   62,   49,   49,   49,   49,   49,
406    49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
407    49,   49,   49,   49,   48,   48,  156,   47,   47,   47,
408   153,  153,  153,  153,   51,   51,   52,   52,   53,   53,
409    25,   25,   67,   67,   66,
410 };
411 short yylen[] = {                                         2,
412     0,    1,    1,    2,    3,    3,    5,    1,    1,    5,
413     5,    3,   16,    0,    2,    0,    2,    0,    2,    1,
414     1,    0,    3,    3,    1,    0,    2,    3,    1,    1,
415     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
416     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
417     1,    1,    1,    1,    1,    1,    1,    1,    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,    3,    3,    5,    3,    5,
422     5,    5,    3,    3,    5,    5,    5,    7,    7,    7,
423     5,    1,    3,    1,    3,    1,    3,    1,    3,    1,
424     3,    1,    3,    1,    3,    0,    0,    8,    4,    1,
425     0,    1,    1,    5,    3,    0,    0,    9,    0,    2,
426     0,    5,    0,    4,    1,    2,    1,    6,    0,    3,
427     0,    6,    0,    4,    0,    4,    1,    0,    4,    3,
428     1,    3,    3,    5,    5,    7,    4,    0,   10,    0,
429    12,    0,    2,    5,    1,    5,    1,    5,    1,    5,
430     1,    9,    5,    1,    1,    1,    1,    1,    3,    1,
431     1,    1,    7,    5,    1,    1,    1,    1,    3,    0,
432     5,    4,    0,    3,    1,    1,    1,    1,    2,    1,
433     1,    1,    1,    1,    3,    3,    3,    1,    1,    3,
434     1,    1,    3,    3,    0,    5,    2,    0,    3,    1,
435     3,    1,    3,    3,    1,    1,    3,    1,    1,    1,
436     3,    1,    1,    1,    5,    7,    5,    8,    1,    3,
437     5,    5,    7,    7,    6,    5,    0,    2,    3,    3,
438     3,    1,    5,    9,    5,    3,    3,    0,   10,    0,
439     1,    7,    5,    5,    3,    5,    7,    9,    1,    1,
440     1,    1,    1,    0,    2,    1,    3,    1,    1,    1,
441     1,    1,    1,    1,    1,    1,    1,    1,    1,    3,
442     1,    1,    4,    1,    1,    4,    1,    1,    4,    1,
443     4,    5,    1,    3,    1,    3,    1,    1,    4,    9,
444     1,    1,    4,    1,    5,    1,    1,    4,    1,    1,
445     5,    1,    1,    1,    4,    1,    1,    5,    1,    1,
446     3,    1,    1,    3,    1,    4,    3,    3,    3,    3,
447     3,    3,    1,    1,    3,    1,    3,    0,    1,    1,
448     1,    1,    3,    0,    1,    1,    2,    2,    4,    6,
449     4,    6,    6,    6,    6,    2,    6,    8,    8,   10,
450    14,    2,    1,    3,    1,    3,    1,    1,    1,    1,
451     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
452     1,    1,    1,   10,    9,
453 };
454 short yydefred[] = {                                      0,
455     0,    0,    0,    0,    2,    0,    0,    0,    0,    0,
456     4,    0,    6,    0,  133,    0,    0,    0,  192,    0,
457     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
458     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
459     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
460   130,    0,    0,    0,  136,  145,    0,    0,    0,    0,
461    93,   82,   73,   83,   74,   84,   75,   85,   76,   86,
462    77,   87,   78,   88,   79,   89,   80,   90,   81,    5,
463     0,   92,   91,    0,   30,    0,   29,   31,   32,   33,
464    34,   35,   36,   37,   38,   39,   40,   41,   42,   43,
465    44,   45,   46,   47,   48,   49,   50,   51,   52,   53,
466    54,   55,   56,   57,   58,   59,   60,   61,   62,   63,
467    64,   65,   66,   67,   68,   69,   70,   71,   72,  149,
468     0,    0,   23,    0,    0,    0,    0,    0,    0,    0,
469     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
470     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
471     0,    0,    0,    0,  155,    0,    0,    0,    0,   94,
472    95,    0,    0,    0,    0,  342,    0,  345,    0,  387,
473     0,  343,    0,  153,    0,   27,    0,    9,    8,    7,
474     0,  304,  305,    0,    0,  340,    0,    0,    0,   12,
475   313,    0,  195,  196,    0,    0,  310,    0,    0,  308,
476     0,  337,  339,    0,  336,  334,    0,  333,  228,  224,
477   225,  330,  332,    0,  329,  327,    0,  326,    0,    0,
478   281,  280,    0,  291,  292,    0,    0,    0,    0,    0,
479     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
480   383,  250,    0,  366,    0,  318,    0,  317,    0,    0,
481     0,    0,    0,  403,    0,    0,  266,  267,  283,  282,
482     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
483     0,    0,  259,  261,  260,  390,  388,  389,  163,  162,
484     0,  184,  185,    0,    0,    0,    0,   96,    0,    0,
485     0,    0,  126,    0,    0,    0,    0,  135,    0,    0,
486     0,    0,    0,    0,    0,  362,    0,    0,    0,  396,
487   398,  395,  397,  399,  400,    0,    0,    0,    0,    0,
488     0,  103,    0,    0,  104,    0,  150,   24,    0,    0,
489     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
490     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
491     0,    0,    0,  367,  368,    0,    0,    0,  376,    0,
492     0,    0,  382,    0,    0,    0,    0,    0,    0,    0,
493     0,    0,    0,    0,    0,  132,    0,    0,    0,    0,
494     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
495   156,    0,    0,  151,    0,    0,    0,    0,  344,  352,
496     0,    0,    0,    0,  349,  350,  351,  129,    0,  154,
497     0,    0,  120,  118,    0,    0,    0,    0,    0,    0,
498     0,    0,    0,    0,    0,  341,   11,  262,    0,   10,
499     0,    0,  314,    0,    0,    0,  198,  197,    0,  173,
500   194,    0,    0,    0,  226,    0,    0,  203,  201,  245,
501   183,    0,    0,    0,    0,    0,    0,    0,    0,    0,
502   324,    0,    0,  322,    0,  321,    0,    0,    0,  384,
503   386,    0,    0,  293,  294,    0,  297,    0,  295,    0,
504   296,  251,    0,    0,    0,  252,    0,  175,    0,    0,
505     0,    0,    0,  256,    0,    0,  165,  164,  276,  401,
506   402,    0,  177,    0,    0,    0,    0,    0,  265,    0,
507     0,  147,    0,    0,  137,  274,    0,    0,    0,  356,
508     0,  346,  134,  363,   98,    0,    0,  105,    0,  111,
509     0,  106,    0,  107,    0,  102,    0,  101,    0,  100,
510    28,  306,    0,    0,  316,  309,    0,  311,    0,    0,
511   335,  393,  391,  392,  239,  236,  230,    0,    0,  235,
512     0,  240,    0,  242,  243,    0,  238,  229,  244,  232,
513   394,    0,  328,    0,    0,    0,  369,    0,    0,    0,
514   371,    0,    0,    0,    0,    0,    0,    0,    0,    0,
515   319,    0,    0,    0,    0,    0,    0,  167,    0,    0,
516     0,    0,    0,  255,    0,    0,    0,    0,    0,    0,
517     0,    0,  152,  146,    0,    0,    0,  127,    0,    0,
518     0,    0,  121,  119,  112,    0,  114,    0,  116,    0,
519     0,    0,  312,  193,  338,    0,    0,    0,    0,    0,
520   331,    0,  246,    0,    0,  189,    0,    0,    0,    0,
521     0,    0,    0,    0,    0,    0,    0,    0,  302,  301,
522   272,    0,    0,  253,    0,  179,    0,    0,  254,  258,
523     0,    0,    0,    0,  181,    0,    0,  187,    0,  186,
524   159,    0,    0,  353,  354,  355,    0,  357,    0,  110,
525     0,  109,    0,  108,    0,    0,    0,  234,  237,  241,
526   231,    0,  298,  206,  207,    0,  211,  210,  212,  213,
527   214,    0,    0,    0,  218,  219,    0,  299,  208,  204,
528     0,    0,  248,    0,  372,    0,  377,    0,  373,    0,
529   323,  374,  375,    0,    0,    0,  268,  303,    0,    0,
530     0,    0,    0,    0,  190,  191,    0,    0,    0,  168,
531     0,    0,    0,    0,    0,    0,  128,  113,  115,  117,
532   263,    0,    0,    0,    0,    0,    0,    0,   19,    0,
533     0,  325,    0,    0,  288,  289,  290,    0,  285,    0,
534     0,    0,  174,    0,    0,  278,  166,  176,    0,    0,
535   182,  264,    0,  143,  138,  140,    0,  300,  215,  216,
536   217,  222,    0,  220,  378,    0,  379,    0,    0,    0,
537   271,  269,    0,    0,    0,  170,    0,  169,  141,    0,
538     0,    0,    0,    0,    0,  320,  287,    0,  405,  178,
539     0,  180,    0,  144,    0,  223,  380,   15,    0,  404,
540   171,  142,    0,    0,    0,    0,   20,   21,    0,    0,
541     0,   13,   17,  381,
542 };
543 short yydgoto[] = {                                       3,
544   209,  449,  233,  271,  236,  486,  490,  671,  491,  351,
545   757,  729,  689,  859,  294,  467,  614,  354,  578,  584,
546   730,   80,  337,  822,  512,  133,  788,  789,  747,  345,
547    81,  210,  258,  476,  814,  228,  218,  636,  425,  426,
548   427,  428,  640,  638,  387,  733,  290,  375,  253,  696,
549   329,  330,  331,  861,  835,  190,    4,   82,   83,   84,
550   172,  314,  315,  316,  280,  264,  265,  500,  515,  678,
551   687,  440,    5,    6,   10,   85,  254,   86,   87,   88,
552    89,   90,   91,   92,   93,   94,   95,   96,   97,   98,
553    99,  100,  101,  102,  103,  104,  105,  106,  107,  108,
554   109,  110,  111,  112,  113,  114,  115,  116,  117,  118,
555   119,  120,  121,  122,  123,  124,  125,  126,  127,  128,
556   129,  277,  318,  478,  229,  219,  259,  529,  408,  697,
557   173,  278,  626,  765,  766,  843,  830,  524,  130,  187,
558   521,  319,  401,  295,  517,  272,  800,  841,  230,  359,
559   220,  355,  580,  790,  196,  182,  530,  531,
560 };
561 short yysindex[] = {                                     68,
562    17,   31,    0, -217,    0,   68, -257, -226,  112, 5680,
563     0,  136,    0, -136,    0,  170,  185,  201,    0,  225,
564   229,  238,  244,  248,  251,  255,  266,  272,  275,  283,
565   304,  309,  346,  366,  378,  380,  382,  383,  396,  397,
566   398,  400,  401,  404,  405,  413,  415,  -46,  417,  420,
567     0,  426,  108,  489,    0,    0,  428,  101,  -35,  449,
568     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
569     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
570   432,    0,    0,  430,    0, 5680,    0,    0,    0,    0,
571     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
572     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
573     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
574     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
575  -190,  450,    0, -234,   62,  -13,   41,   41,   40, -252,
576  -121,  109,  109, 1644,  -34,  109,  109,   92,  -34,  -34,
577  -249,  -20,  -20,  -20,  -35,  458,  -35,  109, 1644, 1644,
578  1644, -160, -249, -174,    0, 1644,  -34,  288,  -35,    0,
579     0,  439,  414,  109,  467,    0,  -22,    0,  421,    0,
580    -9,    0,  -14,    0,  163,    0,  385,    0,    0,    0,
581  -136,    0,    0,  423,  465,    0,  471,  473,  475,    0,
582     0,  137,    0,    0,  490,  271,    0,  441,  496,    0,
583   503,    0,    0,  276,    0,    0,  452,    0,    0,    0,
584     0,    0,    0,  292,    0,    0,  470,    0,  512,    0,
585     0,    0,  518,    0,    0,  523,  524,  526,  -34,  -34,
586   109,  109,  540,  109,  542,  544,  545, 1644,  548, 5537,
587     0,    0,  533,    0,  331,    0,  500,    0,  555,  558,
588   559,  564,  347,    0,  571,  582,    0,    0,    0,    0,
589   367,  584,  379,  592,  594,  595,  141,  596,  402,  597,
590   588,  611,    0,    0,    0,    0,    0,    0,    0,    0,
591   617,    0,    0,  628,  385,  638,  640,    0,  593,  -35,
592   -35,  644,    0,  649,  159,  -35,  -35,    0,  -35,  -35,
593   -35,  -35,  -35,  651,  650,    0,  141,  465, 5680,    0,
594     0,    0,    0,    0,    0,  642,   -1,    4,  643,  647,
595   653,    0,  141,  465,    0, 5680,    0,    0,  -35, -234,
596   445,   14,  455,  654,  614, 1644,  678,  -35,   38,  476,
597   338,  682,  -35,  688,  385,  690,  -35,  109,  385,  109,
598  1644,  424,  431,    0,    0,  694,  696, 1298,    0,  109,
599   109, 5435,    0,  360,  704, 1644,  702,  -35, -165,  -83,
600   429,  491,  703,  -20,  433,    0,  707,  -24,  708,  -20,
601   -20,  -20,  -35,  709,   10,  109,  -91,  -19, -121,    0,
602     0,    9,    9,    0,   45,  655, -254,  560,    0,    0,
603    75,  148,   79,   79,    0,    0,    0,    0,  -14,    0,
604  1644,  711,    0,    0,   16,   25,   27,   29,  141,  465,
605    22,  -10,  -28,  631,  427,    0,    0,    0,  501,    0,
606   715,  137,    0,  719,  505,  459,    0,    0,  503,    0,
607     0,  381,  499,    2,    0,  403,  508,    0,    0,    0,
608     0,  721,  723,  109,  109,  662,  743,  748,  746,  749,
609     0,  750, 5448,    0,  701,    0,  751,  752,  753,    0,
610     0,  554,  536,    0,    0,  754,    0,  726,    0,  774,
611     0,    0,  775,  579,  785,    0, -165,    0,  581,  796,
612   583,  798,  800,    0,  802,  535,    0,    0,    0,    0,
613     0,  804,    0,  591,  806,  807,  521,  598,    0,  810,
614   385,    0,  811,  -35,    0,    0,  465,  801,  815,    0,
615   814,    0,    0,    0,    0,  604,  -35,    0, -234,    0,
616   -21,    0,  824,    0,   57,    0,   98,    0,   23,    0,
617     0,    0,  825,  621,    0,    0,  827,    0,  493,  839,
618     0,    0,    0,    0,    0,    0,    0,  823,  826,    0,
619   828,    0,  830,    0,    0,  832,    0,    0,    0,    0,
620     0,  841,    0,  848, -121,  641,    0,  857,  590, 1644,
621     0,  -35,  -35, 1644,  859,  -35, 1644, 1644,  864,  861,
622     0, -249,  648, -148,  652,  135,  586,    0,  867,   -5,
623   868,  528,  587,    0,  -35,  870, -234,  871,    6,   72,
624   385,    9,    0,    0,  141,  793,    1,    0,  560,  166,
625   141,  465,    0,    0,    0,   32,    0,   33,    0,   35,
626  -165,  873,    0,    0,    0, -234,  -35,  -35,  -35,   40,
627     0, 5526,    0,  876,  -35,    0,  880,  174,  686,  881,
628  -165,  569,  882,  883,  -35,  685,  900,  852,    0,    0,
629     0,  902,  691,    0,  693,    0,  110,  908,    0,    0,
630   928, -184,  465,  716,    0,  717,  900,    0,  929,    0,
631     0,  932,   90,    0,    0,    0,  385,    0,   57,    0,
632    98,    0,   23,    0,  936,  722,  465,    0,    0,    0,
633     0,   56,    0,    0,    0, -234,    0,    0,    0,    0,
634     0,  920,  921,  924,    0,    0,  925,    0,    0,    0,
635   465,  727,    0,  141,    0,  699,    0,  -35,    0,  945,
636     0,    0,    0,  481,  943,   59,    0,    0,  744,  957,
637   965,  963,    6,  -35,    0,    0,  967,  977,  982,    0,
638  -184,  767,  -50,  971,  905,   90,    0,    0,    0,    0,
639     0,  987,  724,  465,  -35,  -35,  -35, -261,    0,  991,
640   576,    0,  -35,  777,    0,    0,    0,  989,    0,  385,
641   992,  780,    0,   38,  900,    0,    0,    0,  781,  385,
642     0,    0,  983,    0,    0,    0,  784,    0,    0,    0,
643     0,    0,  916,    0,    0,  758,    0,   93, 1004,   59,
644     0,    0,  788, 1006, 1007,    0, 1010,    0,    0, 5680,
645  1009, -261, 1016,  675, 1020,    0,    0, 1025,    0,    0,
646   385,    0, 5680,    0, -165,    0,    0,    0, 1023,    0,
647     0,    0, 1024,  109, -149, 1026,    0,    0,  876,  109,
648  1028,    0,    0,    0,
649 };
650 short yyrindex[] = {                                   1071,
651     0,    0,    0, 5225,    0, 1072,    0,    0,    0,   53,
652     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
653     0,    0,    0,    0,    0,    0, 2985,    0,    0,    0,
654     0,    0,    0,    0,    0,    0,    0, 3174,    0,    0,
655     0,    0,    0,    0, 3331,    0,    0,    0,    0,    0,
656     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
657     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
658     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
659     0,    0,    0,    0,    0,  182,    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,    0,    0,    0,    0,    0,
663     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
664     0, 5382,    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,    0,    0,    0,    0,    0,    0,    0,    0,    0,
668     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
669     0,    0, 1032,    0,    0,    0,    0,    0,    0,    0,
670     0,    0,    0,    0, 3520,    0,    0,    0,    0,    0,
671     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
672   689,    0,    0,    0,    0,    0,    0,    0,    0,    0,
673     0,    0,    0,    0,    0,    0,    0,    0,    0, 1947,
674     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
675     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
676     0,    0, 1098,    0,    0,    0,    0,    0,    0,    0,
677     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
678   136,    0,    0,    0,    0,    0,  720,    0,    0,    0,
679     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
680     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
681     0, 3677,    0,    0,    0,    0,    0,    0,    0,    0,
682     0,    0,    0,    0, 1033,    0,  241,  247,    0,    0,
683     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
684     0,    0, 3866, 4023,    0,  951,    0,    0,    0,    0,
685     0,    0,    0,  984,    0,    0,    0,    0,    0,    0,
686     0,    0,    0, 2136,    0,    0,    0,    0,    0,    0,
687     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
688     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
689     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
690     0,    0,    0,    0,    0,    0,    0,    0,    0, 2293,
691     0,    0,    0,    0,    0,    0,    0, 1037,    0,    0,
692     0,    0,  374,  531,    0,    0,    0,    0,    0,    0,
693     0,  553,    0,    0,    0,    0,    0,    0,   42,   49,
694     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
695     0,    0,    0,    0,    0,    0,    0,    0,  689,    0,
696     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
697     0,    0, 4212,    0,    0, 1035,    0,    0,    0,    0,
698     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
699     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
700     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
701     0,    0, 4369,    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, 4558,    0,    0,    0,
704  1039,    0,    0,    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,    0,    0,    0,    0,
707     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
708     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
709     0,    0,    0, 2482,    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,    0,    0,    0,    0,    0,    0,    0,
713     0,    0,    0,    0,  958,    0,    0,    0,    0,    0,
714    50,   52,    0,    0,    0,    0,    0,    0,    0,    0,
715     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
716     0,    0,    0, 4715,    0,    0,    0,    0,    0,    0,
717     0,    0,    0,    0,    0,    0, 2639,    0,    0,    0,
718     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
719     0,    0, 4904,    0,    0,    0,  959,    0,    0,    0,
720     0,    0,  961,    0,    0,    0,    0,    0,    0,    0,
721     0,    0,    0,    0,    0,    0, 1255,    0,    0,    0,
722     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
723     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
724  1444,    0,    0,  909,    0,    0,    0,    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     0,    0,    0,    0,    0,  961,    0,    0,    0,    0,
728     0,    0,    0, 1601,    0,    0,    0,    0,    0,    0,
729     0,    0,    0,    0,    0,    0,    0, 2828,    0, 5061,
730     0,    0,    0,    0,  959,    0,    0,    0,    0,    0,
731     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
732     0,    0, 1790,    0,    0,    0,    0,  128,    0,    0,
733     0,    0,    0,    0,    0,    0,    0,    0,    0,  -69,
734     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
735     0,    0,  -69,    0,    0,    0,    0,    0,    0,    0,
736     0,    0,    0,    0,    0, 1043,    0,    0, 4715,    0,
737     0,    0,    0,    0,
738 };
739 short yygindex[] = {                                      0,
740   410,  294,    0,  487, -329, -480,    0,    0,  438,  645,
741   330,    0,    0,    0,    0, -474,    0,    0,    0,    0,
742     0,  -86, -287,    0,    0,  901,    0,  273, -629,  657,
743  1047, -296, -297, -509,  264, -504, -494,    0,    0,    0,
744     0,    0,    0,    0,    0,  242, -384, -137,  849,    0,
745     0,    0,    0,    0,    0,    0,    0, 1046,  934, -371,
746     0,    0,    0,  684,  710,    0,  -48,    0,    0,    0,
747   351,    0, 1100,    0,    0,    0, -133,  790,    0,    0,
748     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
749     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
750     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
751     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
752     0,  -58, -130, -355, -375,  679,  -84,    0,    0,    0,
753     0, -167,    0,  345,    0,    0,    0,    0,    0,    0,
754     0,    0,    0,    0,    0,  949,    0,    0,    0,    0,
755   975,    0,    0,    0,  792,  680,  504,    0,
756 };
757 #define YYTABLESIZE 6091
758 short yytable[] = {                                     186,
759   181,  299,  211,  195,  177,  255,  252,  400,  237,  238,
760   507,  518,  260,  261,  266,  499,  608,  177,  206,  273,
761   514,  283,  284,  285,  282,  177,  206,  313,  296,  224,
762   424,  423,  311,  309,  677,  310,  528,  312,  177,  639,
763   302,  206,  637,  327,   59,  686,  519,  520,  518,  279,
764   635,  332,   26,  439,  334,   26,  548,  760,  526,  537,
765   231,  214,  518,  269,  267,  268,  188,  455,  539,  516,
766   541,  459,  543,  755,    7,  699,  701,  550,  703,  224,
767   214,  313,  297,  308,  292,  122,  311,  309,    8,  310,
768   523,  312,  124,  123,  549,  125,  214,  286,  281,  812,
769   335,  287,  288,  274,  275,  276,    9,  366,  367,  857,
770   369,  313,  547,  773,  656,  313,  311,  309,  305,  310,
771   311,  312,  189,  813,  317,  312,  333,   12,  756,  313,
772   192,  263,  232,  406,  311,  270,  834,  224,  293,  312,
773   538,  193,  194,  484,  545,  690,  603,  485,  206,  540,
774   192,  542,  289,  544,  364,  365,  700,  702,   13,  704,
775   705,  193,  194,  858,  669,  826,  122,  532,   14,   14,
776   348,  670,  348,  124,  123,  643,  125,  313,  673,  131,
777   740,   26,  311,  309,  313,  310,  234,  312,  132,  311,
778   309,  235,  310,  770,  312,  313,  769,  430,  169,  410,
779   311,  309,  327,  310,  768,  312,  643,  286,  444,  666,
780   313,  287,  288,   15,  737,  311,  309,  736,  310,  510,
781   312,  511,  176,  461,  458,  505,  460,  134,  471,  487,
782   468,  488,  489,  623,  477,  176,  469,  470,  481,  304,
783   533,  405,  135,  176,  633,  634,  222,  411,  412,  434,
784   413,  414,  415,  416,  417,  653,  422,  528,  136,  562,
785   304,  176,  509,  563,  564,  471,  692,  286,  305,  429,
786   438,  287,  288,   26,  711,   26,  527,  262,  212,  471,
787   435,  360,  137,  535,  360,  328,  138,  361,  498,  446,
788   361,  201,  202,  513,  453,  139,  222,  212,  457,  201,
789   202,  140,  223,  203,  204,  141,   26,  676,  142,  565,
790   566,  567,  143,  212,  201,  202,  201,  202,  685,  483,
791   579,   26,   26,  144,  568,  197,  198,  199,  200,  145,
792   587,  588,  146,  691,  213,  495,    1,    2,  569,  570,
793   147,  502,  503,  504,  785,  786,  787,  571,  572,  573,
794   574,  575,  223,  213,  222,  447,  448,  307,  178,  179,
795   317,  148,  205,  576,  853,  577,  149,  256,  257,  213,
796   192,  178,  179,  347,  225,  474,  475,  205,  803,  178,
797   179,  193,  194,  466,  688,  522,  207,  208,  192,  262,
798   694,  695,  178,  179,  180,  226,  227,  178,  179,  193,
799   194,  207,  208,  150,  201,  202,  215,  180,  632,  767,
800   223,  347,  474,  475,  347,  180,  347,  347,  347,  347,
801   176,  201,  202,  151,  225,  215,  203,  204,  180,  216,
802   217,  180,  763,  180,  764,  152,  320,  153,  321,  154,
803   155,  215,  322,  323,  324,  226,  227,  681,  216,  217,
804    26,   26,  657,  156,  157,  158,  660,  159,  160,  663,
805   664,  161,  162,  313,  347,  625,  347,  205,  311,  309,
806   163,  310,  164,  312,  166,  201,  202,  167,  631,  708,
807   709,  710,  225,  168,  205,  174,  683,  175,  183,  184,
808   185,  207,  208,  191,  325,  313,  347,  279,  347,  300,
809   311,  309,  821,  310,  301,  312,  303,  336,  207,  208,
810   340,  306,  828,  339,  341,  707,  342,  313,  343,  552,
811   344,  731,  311,  309,   26,  783,   26,  312,  347,  346,
812   348,  348,  352,  658,  659,  313,  326,  662,  205,  349,
813   311,  309,  353,  310,  313,  312,  350,  192,  356,  311,
814   309,  558,  310,  851,  312,  358,  178,  179,  193,  194,
815   357,  360,  207,  208,  256,  257,  361,  362,  348,  363,
816   376,  348,  313,  348,  348,  348,  348,  311,  309,  368,
817   310,  370,  312,  371,  372,  774,  796,  374,  377,  342,
818   378,  561,  180,  342,  342,  342,  734,  342,  379,  342,
819   583,  380,  381,  382,  383,  313,  744,  809,  810,  811,
820   311,  309,  313,  310,  384,  312,  817,  311,  309,  816,
821   310,  348,  312,  348,  313,  385,  386,  388,  601,  311,
822   309,  396,  310,  347,  312,  390,  389,  391,  392,  393,
823   395,  347,  347,  347,  347,  347,  347,  347,  347,  347,
824   347,  347,  347,  348,  397,  348,  347,  347,  347,  394,
825   398,  741,  347,  347,  347,  347,  347,  347,  347,  347,
826   347,  399,  347,  347,  347,  347,  347,  347,  347,  781,
827   347,  402,   63,  403,   65,  404,   67,  407,   69,  409,
828    71,  418,   73,  419,   75,  347,   77,  442,   79,  421,
829   431,  437,  347,  347,  432,  347,  443,  347,  347,  347,
830   433,  441,  347,  347,  347,  347,  347,  347,  347,  307,
831   856,  445,  313,  451,  818,  452,  863,  311,  309,  738,
832   310,  454,  312,  456,  450,  462,  347,  464,  347,  465,
833   347,  479,  463,  844,  480,  482,  494,  525,  493,  492,
834   497,  501,  506,  496,  536,  551,  852,  553,  554,  556,
835   347,  347,  557,  307,  585,  560,  586,  347,  347,  347,
836   347,  347,  347,  347,  347,  347,  347,  347,  347,  347,
837   347,  347,  347,  347,  347,  589,  590,  582,  591,  592,
838   348,  596,  593,  594,  597,  598,  599,  602,  348,  348,
839   348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
840   307,  600,  307,  348,  348,  348,  603,  604,  605,  348,
841   348,  348,  348,  348,  348,  348,  348,  348,  607,  348,
842   348,  348,  348,  348,  348,  348,  606,  348,  609,  610,
843   611,  612,  307,  613,  307,  615,  616,  617,  618,  619,
844   620,  621,  348,  622,  595,  628,  624,  629,  627,  348,
845   348,  630,  348,  255,  348,  348,  348,  643,  641,  348,
846   348,  348,  348,  348,  348,  348,  170,  642,  644,  645,
847   646,  651,   62,  647,   64,  648,   66,  649,   68,  650,
848    70,  652,   72,  348,   74,  348,   76,  348,   78,  654,
849   655,  466,  661,  665,  666,  668,  674,  680,  370,  672,
850   675,  673,  679,  682,  684,  693,  706,  348,  348,  732,
851   735,  739,  742,  743,  348,  348,  348,  348,  348,  348,
852   348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
853   348,  348,  745,  746,  748,  749,  370,   61,  750,  370,
854   751,  753,  370,   62,   63,   64,   65,   66,   67,   68,
855    69,   70,   71,   72,   73,   74,   75,   76,   77,   78,
856    79,  754,  761,  758,  759,  762,  771,  775,  776,  307,
857   772,  777,  778,  779,  780,  782,  784,  307,  307,  307,
858   307,  307,  307,  307,  307,  307,  307,  307,  307,  370,
859   792,  791,  307,  307,  307,  793,  794,  797,  307,  307,
860   307,  307,  307,  307,  307,  307,  307,  798,  307,  307,
861   307,  307,  307,  307,  307,  799,  307,  802,  804,  805,
862   807,  815,  820,  370,  819,  823,  808,  824,  827,  832,
863   829,  307,  831,  833,  836,  838,  839,  840,  307,  307,
864   842,  307,  845,  307,  307,  307,  847,  848,  307,  307,
865   849,  307,  307,  307,  307,  850,  854,  855,  864,  860,
866     1,    3,  364,  365,  172,   26,  315,  358,  188,  359,
867   148,  284,  307,   16,  307,  139,  752,  825,  667,  728,
868   801,  338,  837,  559,  165,  846,  373,  385,  555,  171,
869   862,  298,  534,  795,  508,   11,  307,  307,  420,  546,
870   806,  291,  221,  307,  307,  307,  307,  307,  307,  307,
871   307,  307,  307,  307,  307,  307,  307,  307,  307,  307,
872   307,  436,  698,  581,    0,    0,    0,    0,  385,    0,
873     0,  385,    0,    0,    0,    0,    0,    0,    0,    0,
874     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
875     0,    0,    0,    0,    0,    0,    0,    0,  370,    0,
876     0,    0,    0,    0,    0,    0,  370,  370,  370,  370,
877   370,  370,  370,  370,  370,  370,  370,  370,  385,    0,
878     0,  370,  370,  370,    0,    0,    0,  370,  370,  370,
879   370,  370,  370,  370,  370,  370,    0,  370,  370,  370,
880   370,  370,  370,  370,    0,  370,    0,    0,    0,    0,
881     0,    0,  385,    0,    0,    0,    0,    0,    0,    0,
882   370,    0,    0,    0,    0,    0,    0,  370,  370,    0,
883   370,    0,  370,  370,  370,    0,    0,  370,  370,    0,
884   370,  370,  370,  370,  233,    0,    0,    0,    0,    0,
885     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
886     0,  370,    0,  370,    0,    0,    0,    0,    0,    0,
887     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
888     0,    0,    0,    0,    0,  370,  370,    0,  233,    0,
889     0,    0,  370,  370,  370,  370,  370,  370,  370,  370,
890   370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
891     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
892     0,    0,    0,    0,    0,    0,    0,  250,    0,    0,
893     0,    0,    0,    0,    0,  233,    0,    0,    0,    0,
894     0,    0,    0,    0,    0,    0,    0,  385,    0,    0,
895     0,    0,    0,    0,    0,  385,  385,  385,  385,  385,
896   385,  385,  385,  385,  385,  385,  385,  233,    0,  233,
897   385,  385,  385,    0,    0,    0,  385,  385,  385,  385,
898   385,  385,  385,  385,  385,    0,  385,  385,  385,  385,
899   385,  385,  385,    0,  385,    0,    0,    0,    0,    0,
900     0,    0,    0,    0,    0,    0,    0,    0,    0,  385,
901     0,    0,    0,    0,    0,    0,  385,  385,    0,  385,
902     0,  385,  385,  385,    0,    0,  385,  385,    0,  385,
903   385,  385,  385,  205,    0,    0,    0,    0,    0,    0,
904     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
905   385,    0,  385,    0,    0,    0,    0,    0,    0,    0,
906     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
907     0,    0,    0,    0,  385,  385,    0,  205,    0,    0,
908     0,  385,  385,  385,  385,  385,  385,  385,  385,  385,
909   385,  385,  385,  385,  385,  385,  385,  385,  385,    0,
910     0,    0,    0,    0,  233,    0,    0,    0,    0,    0,
911     0,    0,  233,  233,  233,  233,  233,  233,  233,  233,
912   233,  233,  233,  233,  205,    0,    0,  233,  233,  233,
913     0,    0,    0,  233,  233,  233,  233,  233,  233,  233,
914   233,  233,    0,  233,  233,  233,  233,  233,  233,  233,
915     0,  233,    0,    0,    0,    0,  205,    0,  205,    0,
916     0,    0,    0,    0,    0,    0,  233,    0,    0,    0,
917     0,    0,    0,  233,  233,    0,  233,    0,  233,  233,
918   233,    0,    0,  233,  233,    0,  233,  233,  233,  233,
919   209,    0,    0,    0,    0,    0,    0,    0,    0,  466,
920   201,  202,    0,    0,    0,    0,    0,  233,    0,  233,
921     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
922     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
923     0,  233,  233,    0,  209,    0,    0,    0,  233,  233,
924   233,  233,  233,  233,  233,  233,  233,  233,  233,  233,
925   233,  233,  233,  233,  233,  233,  239,  240,  241,  242,
926   243,    0,  244,  205,  245,  246,  247,  248,  249,    0,
927     0,    0,    0,  250,    0,    0,    0,    0,    0,    0,
928     0,  209,    0,    0,    0,    0,    0,  207,  208,    0,
929     0,    0,    0,  205,    0,    0,    0,  251,    0,    0,
930     0,  205,  205,  205,  205,  205,  205,  205,  205,  205,
931   205,  205,  205,  209,    0,  209,  205,  205,  205,    0,
932     0,    0,  205,  205,  205,  205,  205,  205,  205,  205,
933   205,    0,  205,  205,  205,  205,  205,  205,  205,    0,
934   205,    0,    0,    0,    0,    0,    0,    0,    0,    0,
935     0,    0,    0,    0,    0,  205,    0,    0,    0,    0,
936     0,    0,  205,  205,    0,  205,    0,  205,  205,  205,
937     0,    0,  205,  205,    0,  205,  205,  205,  205,  221,
938     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
939     0,    0,    0,    0,    0,    0,  205,    0,  205,    0,
940     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
941     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
942   205,  205,    0,  221,    0,    0,    0,  205,  205,  205,
943   205,  205,  205,  205,  205,  205,  205,  205,  205,  205,
944   205,  205,  205,  205,  205,    0,    0,    0,    0,    0,
945   209,    0,    0,    0,    0,    0,    0,    0,  209,  209,
946   209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
947   221,    0,    0,  209,  209,  209,    0,    0,    0,  209,
948   209,  209,  209,  209,  209,  209,  209,  209,    0,  209,
949   209,  209,  209,  209,  209,  209,    0,  209,    0,    0,
950     0,    0,  221,    0,  221,    0,    0,    0,    0,    0,
951     0,    0,  209,    0,    0,    0,    0,    0,    0,  209,
952   209,    0,  209,    0,  209,  209,  209,    0,    0,  209,
953   209,    0,  209,  209,  209,  209,  199,    0,    0,    0,
954     0,    0,    0,    0,    0,    0,  201,  202,    0,    0,
955     0,    0,    0,  209,    0,  209,    0,    0,    0,    0,
956     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
957     0,    0,    0,    0,    0,    0,    0,  209,  209,    0,
958     0,    0,    0,    0,  209,  209,  209,  209,  209,  209,
959   209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
960   209,  209,  239,  240,  241,  242,  243,    0,  244,  205,
961   245,  246,  247,  248,  249,    0,    0,    0,    0,    0,
962     0,    0,    0,    0,    0,    0,    0,  199,    0,    0,
963     0,    0,    0,  207,  208,    0,    0,    0,    0,  221,
964     0,    0,    0,  251,    0,    0,    0,  221,  221,  221,
965   221,  221,  221,  221,  221,  221,  221,  221,  221,  200,
966     0,  199,  221,  221,  221,    0,    0,    0,  221,  221,
967   221,  221,  221,  221,  221,  221,  221,    0,  221,  221,
968   221,  221,  221,  221,  221,    0,  221,    0,    0,    0,
969     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
970     0,  221,    0,    0,    0,    0,    0,    0,  221,  221,
971     0,  221,    0,  221,  221,  221,    0,    0,  221,  221,
972     0,  221,  221,  221,  221,  227,    0,    0,    0,    0,
973     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
974     0,    0,  221,    0,  221,    0,    0,    0,    0,    0,
975     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
976     0,    0,    0,    0,    0,    0,  221,  221,    0,    0,
977     0,    0,    0,  221,  221,  221,  221,  221,  221,  221,
978   221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
979   221,    0,    0,    0,    0,    0,  199,    0,    0,    0,
980     0,    0,    0,    0,  199,  199,  199,  199,  199,  199,
981   199,  199,  199,  199,  199,  199,  227,    0,    0,  199,
982   199,  199,    0,    0,    0,  199,  199,  199,  199,  199,
983   199,  199,  199,  199,    0,  199,  199,  199,  199,  199,
984   199,  199,    0,  199,    0,    0,    0,    0,  227,    0,
985   227,    0,    0,    0,    0,    0,    0,    0,  199,    0,
986     0,    0,    0,    0,    0,  199,  199,    0,  199,    0,
987   199,  199,  199,    0,    0,  199,  199,    0,  199,  199,
988   199,  199,  157,    0,    0,    0,    0,    0,    0,    0,
989     0,    0,    0,    0,    0,    0,    0,    0,    0,  199,
990     0,  199,    0,    0,    0,    0,    0,    0,    0,    0,
991     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
992     0,    0,    0,  199,  199,    0,    0,    0,    0,    0,
993   199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
994   199,  199,  199,  199,  199,  199,  199,  199,    0,    0,
995     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
996     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
997     0,    0,    0,  157,    0,    0,    0,    0,    0,    0,
998     0,    0,    0,    0,    0,  227,    0,    0,    0,    0,
999     0,    0,    0,  227,  227,  227,  227,  227,  227,  227,
1000   227,  227,  227,  227,  227,    0,    0,  157,  227,  227,
1001   227,    0,    0,    0,  227,  227,  227,  227,  227,  227,
1002   227,  227,  227,    0,  227,  227,  227,  227,  227,  227,
1003   227,    0,  227,    0,    0,    0,    0,    0,    0,    0,
1004     0,    0,    0,    0,    0,    0,    0,  227,    0,    0,
1005     0,    0,    0,    0,  227,  227,    0,  227,    0,  227,
1006   227,  227,    0,    0,  227,  227,    0,  227,  227,  227,
1007   227,  202,    0,    0,    0,    0,    0,    0,    0,    0,
1008     0,    0,    0,    0,    0,    0,    0,    0,  227,    0,
1009   227,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1010     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1011     0,    0,  227,  227,    0,    0,    0,    0,    0,  227,
1012   227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
1013   227,  227,  227,  227,  227,  227,  227,    0,    0,    0,
1014     0,    0,  157,    0,    0,    0,    0,    0,    0,    0,
1015   157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
1016   157,  157,  202,    0,    0,  157,  157,  157,    0,    0,
1017     0,  157,  157,  157,  157,  157,  157,  157,  157,  157,
1018     0,  157,  157,  157,  157,  157,  157,  157,    0,  157,
1019     0,    0,    0,    0,  202,    0,  202,    0,    0,    0,
1020     0,    0,    0,    0,  157,    0,    0,    0,    0,    0,
1021     0,  157,  157,  158,  157,    0,  157,  157,  157,    0,
1022     0,  157,  157,    0,  157,  157,  157,  157,  284,    0,
1023     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1024     0,    0,    0,    0,    0,  157,    0,  157,    0,    0,
1025     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1026     0,    0,    0,    0,    0,    0,    0,    0,    0,  157,
1027   157,    0,    0,    0,    0,    0,  157,  157,  157,  157,
1028   157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
1029   157,  157,  157,  157,    0,    0,    0,    0,    0,    0,
1030     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1031     0,    0,    0,    0,    0,    0,    0,    0,    0,  284,
1032     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1033     0,  202,    0,    0,    0,    0,    0,    0,    0,  202,
1034   202,  202,  202,  202,  202,  202,  202,  202,  202,  202,
1035   202,  284,    0,  284,  202,  202,  202,    0,    0,    0,
1036   202,  202,  202,  202,  202,  202,  202,  202,  202,    0,
1037   202,  202,  202,  202,  202,  202,  202,    0,  202,    0,
1038     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1039     0,    0,    0,  202,    0,    0,    0,    0,    0,    0,
1040   202,  202,    0,  202,    0,  202,  202,  202,    0,    0,
1041   202,  202,    0,  202,  202,  202,  202,  286,    0,    0,
1042     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1043     0,    0,    0,    0,  202,    0,  202,    0,    0,    0,
1044     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1045     0,    0,    0,    0,    0,    0,    0,    0,  202,  202,
1046     0,    0,    0,    0,    0,  202,  202,  202,  202,  202,
1047   202,  202,  202,  202,  202,  202,  202,  202,  202,  202,
1048   202,  202,  202,    0,    0,    0,    0,    0,  284,    0,
1049     0,    0,    0,    0,    0,    0,  284,  284,  284,  284,
1050   284,  284,  284,  284,  284,  284,  284,  284,  286,    0,
1051     0,  284,  284,  284,    0,    0,    0,  284,  284,  284,
1052   284,  284,  284,  284,  284,  284,    0,  284,  284,  284,
1053   284,  284,  284,  284,    0,  284,    0,    0,    0,    0,
1054   286,    0,  286,    0,    0,    0,    0,    0,    0,    0,
1055   284,    0,    0,    0,    0,    0,    0,  284,  284,    0,
1056   284,    0,  284,  284,  284,    0,    0,  284,  284,    0,
1057   284,  284,  284,  284,  249,    0,    0,    0,    0,    0,
1058     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1059     0,  284,    0,  284,    0,    0,    0,    0,    0,    0,
1060     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1061     0,    0,    0,    0,    0,  284,  284,    0,    0,    0,
1062     0,    0,  284,  284,  284,  284,  284,  284,  284,  284,
1063   284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
1064     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1065     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1066     0,    0,    0,    0,    0,  249,    0,    0,    0,    0,
1067     0,    0,    0,    0,    0,    0,    0,  286,    0,    0,
1068     0,    0,    0,    0,    0,  286,  286,  286,  286,  286,
1069   286,  286,  286,  286,  286,  286,  286,    0,    0,  249,
1070   286,  286,  286,    0,    0,    0,  286,  286,  286,  286,
1071   286,  286,  286,  286,  286,    0,  286,  286,  286,  286,
1072   286,  286,  286,    0,  286,    0,    0,    0,    0,    0,
1073     0,    0,    0,    0,    0,    0,    0,    0,    0,  286,
1074     0,    0,    0,    0,    0,    0,  286,  286,    0,  286,
1075     0,  286,  286,  286,    0,    0,  286,  286,    0,  286,
1076   286,  286,  286,  279,    0,    0,    0,    0,    0,    0,
1077     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1078   286,    0,  286,    0,    0,    0,    0,    0,    0,    0,
1079     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1080     0,    0,    0,    0,  286,  286,    0,    0,    0,    0,
1081     0,  286,  286,  286,  286,  286,  286,  286,  286,  286,
1082   286,  286,  286,  286,  286,  286,  286,  286,  286,    0,
1083     0,    0,    0,    0,  249,    0,    0,    0,    0,    0,
1084     0,    0,  249,  249,  249,  249,  249,  249,  249,  249,
1085   249,  249,  249,  249,  279,    0,    0,  249,  249,  249,
1086     0,    0,    0,  249,  249,  249,  249,  249,  249,  249,
1087   249,  249,    0,  249,  249,  249,  249,  249,  249,  249,
1088     0,  249,    0,    0,    0,    0,    0,    0,  279,    0,
1089     0,    0,    0,    0,    0,    0,  249,    0,    0,    0,
1090     0,    0,    0,  249,  249,    0,  249,    0,  249,  249,
1091   249,    0,    0,  249,  249,    0,  249,  249,  249,  249,
1092   161,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1093     0,    0,    0,    0,    0,    0,    0,  249,    0,  249,
1094     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1095     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1096     0,  249,  249,    0,    0,    0,    0,    0,  249,  249,
1097   249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
1098   249,  249,  249,  249,  249,  249,    0,    0,    0,    0,
1099     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1100     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1101     0,  161,    0,    0,    0,    0,    0,    0,    0,    0,
1102     0,    0,    0,  279,    0,    0,    0,    0,    0,    0,
1103     0,  279,  279,  279,  279,  279,  279,  279,  279,  279,
1104   279,  279,  279,    0,    0,  161,  279,  279,  279,    0,
1105     0,    0,  279,  279,  279,  279,  279,  279,  279,  279,
1106   279,    0,  279,  279,  279,  279,  279,  279,  279,    0,
1107   279,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1108     0,    0,    0,    0,    0,  279,    0,    0,    0,    0,
1109     0,    0,  279,  279,    0,  279,    0,  279,  279,  279,
1110     0,    0,  279,  279,    0,  279,  279,  279,  279,  160,
1111     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1112     0,    0,    0,    0,    0,    0,  279,    0,  279,    0,
1113     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1114     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1115   279,  279,    0,    0,    0,    0,    0,  279,  279,  279,
1116   279,  279,  279,  279,  279,  279,  279,  279,  279,  279,
1117   279,  279,  279,  279,  279,    0,    0,    0,    0,    0,
1118   161,    0,    0,    0,    0,    0,    0,    0,  161,  161,
1119   161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
1120   160,    0,    0,  161,  161,  161,    0,    0,    0,  161,
1121   161,  161,  161,  161,  161,  161,  161,  161,    0,  161,
1122   161,  161,  161,  161,  161,  161,    0,  161,    0,    0,
1123     0,    0,    0,    0,  160,    0,    0,    0,    0,    0,
1124     0,    0,  161,    0,    0,    0,    0,    0,    0,  161,
1125   161,    0,  161,    0,  161,  161,  161,    0,    0,  161,
1126   161,    0,  161,  161,  161,  161,  275,    0,    0,    0,
1127     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1128     0,    0,    0,  161,    0,  161,    0,    0,    0,    0,
1129     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1130     0,    0,    0,    0,    0,    0,    0,  161,  161,    0,
1131     0,    0,    0,    0,  161,  161,  161,  161,  161,  161,
1132   161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
1133   161,  161,    0,    0,    0,    0,    0,    0,    0,    0,
1134     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1135     0,    0,    0,    0,    0,    0,    0,  275,    0,    0,
1136     0,    0,    0,    0,    0,    0,    0,    0,    0,  160,
1137     0,    0,    0,    0,    0,    0,    0,  160,  160,  160,
1138   160,  160,  160,  160,  160,  160,  160,  160,  160,    0,
1139     0,  275,  160,  160,  160,    0,    0,    0,  160,  160,
1140   160,  160,  160,  160,  160,  160,  160,    0,  160,  160,
1141   160,  160,  160,  160,  160,    0,  160,    0,    0,    0,
1142     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1143     0,  160,    0,    0,    0,    0,    0,    0,  160,  160,
1144     0,  160,    0,  160,  160,  160,    0,    0,  160,  160,
1145     0,  160,  160,  160,  160,   97,    0,    0,    0,    0,
1146     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1147     0,    0,  160,    0,  160,    0,    0,    0,    0,    0,
1148     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1149     0,    0,    0,    0,    0,    0,  160,  160,    0,    0,
1150     0,    0,    0,  160,  160,  160,  160,  160,  160,  160,
1151   160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
1152   160,    0,    0,    0,    0,    0,  275,    0,    0,    0,
1153     0,    0,    0,    0,  275,  275,  275,  275,  275,  275,
1154   275,  275,  275,  275,  275,  275,   97,    0,    0,  275,
1155   275,  275,    0,    0,    0,  275,  275,  275,  275,  275,
1156   275,  275,  275,  275,    0,  275,  275,  275,  275,  275,
1157   275,  275,    0,  275,    0,    0,    0,    0,    0,    0,
1158    97,    0,    0,    0,    0,    0,    0,    0,  275,    0,
1159     0,    0,    0,    0,    0,  275,  275,    0,  275,    0,
1160   275,  275,  275,    0,    0,  275,  275,    0,  275,  275,
1161   275,  275,   99,    0,    0,    0,    0,    0,    0,    0,
1162     0,    0,    0,    0,    0,    0,    0,    0,    0,  275,
1163     0,  275,    0,    0,    0,    0,    0,    0,    0,    0,
1164     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1165     0,    0,    0,  275,  275,    0,    0,    0,    0,    0,
1166   275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
1167   275,  275,  275,  275,  275,  275,  275,  275,    0,    0,
1168     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1169     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1170     0,    0,    0,   99,    0,    0,    0,    0,    0,    0,
1171     0,    0,    0,    0,    0,   97,    0,    0,    0,    0,
1172     0,    0,    0,   97,   97,   97,   97,   97,   97,   97,
1173    97,   97,   97,   97,   97,    0,    0,   99,   97,   97,
1174    97,    0,    0,    0,   97,   97,   97,   97,   97,   97,
1175    97,   97,   97,    0,   97,   97,   97,   97,   97,   97,
1176    97,    0,   97,    0,    0,    0,    0,    0,    0,    0,
1177     0,    0,    0,    0,    0,    0,    0,   97,    0,    0,
1178     0,    0,    0,    0,   97,   97,    0,   97,    0,   97,
1179    97,   97,    0,    0,   97,   97,    0,   97,   97,   97,
1180    97,  247,    0,    0,    0,    0,    0,    0,    0,    0,
1181     0,    0,    0,    0,    0,    0,    0,    0,   97,    0,
1182    97,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1183     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1184     0,    0,   97,   97,    0,    0,    0,    0,    0,   97,
1185    97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
1186    97,   97,   97,   97,   97,   97,   97,    0,    0,    0,
1187     0,    0,   99,    0,    0,    0,    0,    0,    0,    0,
1188    99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
1189    99,   99,  247,    0,    0,   99,   99,   99,    0,    0,
1190     0,   99,   99,   99,   99,   99,   99,   99,   99,   99,
1191     0,   99,   99,   99,   99,   99,   99,   99,    0,   99,
1192     0,    0,    0,    0,    0,    0,  247,    0,    0,    0,
1193     0,    0,    0,    0,   99,    0,    0,    0,    0,    0,
1194     0,   99,   99,    0,   99,    0,   99,   99,   99,    0,
1195     0,   99,   99,    0,   99,   99,   99,   99,  257,    0,
1196     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1197     0,    0,    0,    0,    0,   99,    0,   99,    0,    0,
1198     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1199     0,    0,    0,    0,    0,    0,    0,    0,    0,   99,
1200    99,    0,    0,    0,    0,    0,   99,   99,   99,   99,
1201    99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
1202    99,   99,   99,   99,    0,    0,    0,    0,    0,    0,
1203     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1204     0,    0,    0,    0,    0,    0,    0,    0,    0,  257,
1205     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1206     0,  247,    0,    0,    0,    0,    0,    0,    0,  247,
1207   247,  247,  247,  247,  247,  247,  247,  247,  247,  247,
1208   247,    0,    0,  257,  247,  247,  247,    0,    0,    0,
1209   247,  247,  247,  247,  247,  247,  247,  247,  247,    0,
1210   247,  247,  247,  247,  247,  247,  247,    0,  247,    0,
1211     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1212     0,    0,    0,  247,    0,    0,    0,    0,    0,    0,
1213   247,  247,    0,  247,    0,  247,  247,  247,    0,    0,
1214   247,  247,    0,  247,  247,  247,  247,  273,    0,    0,
1215     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1216     0,    0,    0,    0,  247,    0,  247,    0,    0,    0,
1217     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1218     0,    0,    0,    0,    0,    0,    0,    0,  247,  247,
1219     0,    0,    0,    0,    0,  247,  247,  247,  247,  247,
1220   247,  247,  247,  247,  247,  247,  247,  247,  247,  247,
1221   247,  247,  247,    0,    0,    0,    0,    0,  257,    0,
1222     0,    0,    0,    0,    0,    0,  257,  257,  257,  257,
1223   257,  257,  257,  257,  257,  257,  257,  257,  273,    0,
1224     0,  257,  257,  257,    0,    0,    0,  257,  257,  257,
1225   257,  257,  257,  257,  257,  257,    0,  257,  257,  257,
1226   257,  257,  257,  257,    0,  257,    0,    0,    0,    0,
1227     0,    0,  273,    0,    0,    0,    0,    0,    0,    0,
1228   257,    0,    0,    0,    0,    0,    0,  257,  257,    0,
1229   257,    0,  257,  257,  257,    0,    0,  257,  257,    0,
1230   257,  257,  257,  257,   18,    0,    0,    0,    0,    0,
1231     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1232     0,  257,    0,  257,    0,    0,    0,    0,    0,    0,
1233     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1234     0,    0,    0,    0,    0,  257,  257,    0,    0,    0,
1235     0,    0,  257,  257,  257,  257,  257,  257,  257,  257,
1236   257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
1237     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1238     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1239     0,    0,    0,    0,    0,   18,    0,    0,    0,    0,
1240     0,    0,    0,    0,    0,    0,    0,  273,    0,    0,
1241     0,    0,    0,    0,    0,  273,  273,  273,  273,  273,
1242   273,  273,  273,  273,  273,  273,  273,    0,    0,   18,
1243   273,  273,  273,    0,    0,    0,  273,  273,  273,  273,
1244   273,  273,  273,  273,  273,    0,  273,  273,  273,  273,
1245   273,  273,  273,    0,  273,    0,    0,    0,    0,    0,
1246     0,    0,    0,    0,    0,    0,    0,    0,    0,  273,
1247     0,    0,    0,    0,    0,    0,  273,  273,    0,  273,
1248     0,  273,  273,  273,    0,    0,  273,  273,    0,  273,
1249   273,  273,  273,  277,    0,    0,    0,    0,    0,    0,
1250     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1251   273,    0,  273,    0,    0,    0,    0,    0,    0,    0,
1252     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1253     0,    0,    0,    0,  273,  273,    0,    0,    0,    0,
1254     0,  273,  273,  273,  273,  273,  273,  273,  273,  273,
1255   273,  273,  273,  273,  273,  273,  273,  273,  273,    0,
1256     0,    0,    0,    0,   18,    0,    0,    0,    0,    0,
1257     0,    0,   18,   18,   18,   18,   18,   18,   18,   18,
1258    18,   18,   18,   18,  277,    0,    0,   18,   18,   18,
1259     0,    0,    0,   18,   18,   18,   18,   18,   18,   18,
1260    18,   18,    0,   18,   18,   18,   18,   18,   18,   18,
1261     0,   18,    0,    0,    0,    0,    0,    0,  277,    0,
1262     0,    0,    0,    0,    0,    0,   18,    0,    0,    0,
1263     0,    0,    0,   18,   18,    0,   18,    0,   18,   18,
1264    18,    0,    0,   18,   18,    0,   18,   18,   18,   18,
1265   270,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1266     0,    0,    0,    0,    0,    0,    0,   18,    0,   18,
1267     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1268     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1269     0,   18,   18,    0,    0,    0,    0,    0,   18,   18,
1270    18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
1271    18,   18,   18,   18,   18,   18,    0,    0,    0,    0,
1272     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1273     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1274     0,  270,    0,    0,    0,    0,    0,    0,    0,    0,
1275     0,    0,    0,  277,    0,    0,    0,    0,    0,    0,
1276     0,  277,  277,  277,  277,  277,  277,  277,  277,  277,
1277   277,  277,  277,    0,    0,  270,  277,  277,  277,    0,
1278     0,    0,  277,  277,  277,  277,  277,  277,  277,  277,
1279   277,    0,  277,  277,  277,  277,  277,  277,  277,    0,
1280   277,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1281     0,    0,    0,    0,   22,  277,    0,    0,    0,    0,
1282     0,    0,  277,  277,    0,  277,    0,  277,  277,  277,
1283     0,    0,  277,  277,    0,  277,  277,  277,  277,    0,
1284     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1285     0,    0,    0,    0,    0,    0,  277,    0,  277,    0,
1286     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1287     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1288   277,  277,    0,    0,    0,    0,    0,  277,  277,  277,
1289   277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
1290   277,  277,  277,  277,  277,   22,    0,    0,    0,    0,
1291   270,    0,    0,    0,    0,    0,    0,    0,  270,  270,
1292   270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
1293     0,    0,    0,  270,  270,  270,    0,    0,    0,  270,
1294   270,  270,  270,  270,  270,  270,  270,  270,    0,  270,
1295   270,  270,  270,  270,  270,  270,    0,  270,    0,    0,
1296     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1297     0,   25,  270,    0,    0,    0,    0,    0,    0,  270,
1298   270,    0,  270,    0,  270,  270,  270,    0,    0,  270,
1299   270,    0,  270,  270,  270,  270,    0,    0,    0,    0,
1300     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1301     0,    0,    0,  270,    0,  270,    0,    0,    0,    0,
1302     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1303     0,    0,    0,    0,    0,    0,    0,  270,  270,    0,
1304     0,    0,    0,    0,  270,  270,  270,  270,  270,  270,
1305   270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
1306   270,  270,   25,    0,  473,    0,    0,    0,    0,    0,
1307     0,    0,    0,    0,   22,    0,    0,  250,    0,    0,
1308     0,    0,   22,   22,   22,   22,   22,   22,   22,   22,
1309    22,   22,   22,   22,    0,    0,    0,   22,   22,   22,
1310     0,    0,    0,   22,   22,   22,   22,   22,   22,   22,
1311    22,   22,    0,   22,   22,   22,   22,   22,   22,   22,
1312     0,   22,    0,    0,    0,    0,    0,    0,    0,    0,
1313     0,    0,    0,    0,    0,    0,   22,    0,    0,    0,
1314     0,    0,    0,   22,   22,    0,   22,    0,   22,   22,
1315    22,    0,    0,   22,   22,    0,   22,    0,   22,    0,
1316     0,    0,    0,    0,    0,    0,  250,    0,    0,    0,
1317     0,    0,    0,    0,    0,    0,    0,   22,    0,   22,
1318     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1319     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1320     0,   22,   22,    0,    0,    0,    0,    0,   22,   22,
1321    22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
1322    22,   22,   22,   22,   22,   22,    0,    0,    0,    0,
1323     0,   25,    0,    0,    0,    0,    0,    0,    0,   25,
1324    25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
1325    25,    0,    0,    0,   25,   25,   25,    0,    0,    0,
1326    25,   25,   25,   25,   25,   25,   25,   25,   25,    0,
1327    25,   25,   25,   25,   25,   25,   25,    0,   25,    0,
1328     0,  471,    0,    0,    0,  472,    0,    0,    0,    0,
1329     0,    0,    0,   25,  595,  347,    0,    0,    0,    0,
1330    25,   25,    0,   25,    0,   25,   25,   25,    0,    0,
1331    25,   25,    0,   25,    0,   25,    0,    0,    0,    0,
1332     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1333     0,    0,    0,    0,   25,    0,   25,  201,  202,    0,
1334     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1335   201,  202,    0,    0,    0,    0,    0,    0,   25,   25,
1336    59,    0,    0,    0,    0,   25,   25,   25,   25,   25,
1337    25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
1338    25,   25,   25,    0,  347,    0,    0,    0,    0,    0,
1339     0,    0,    0,  239,  240,  241,  242,  243,    0,  244,
1340   205,  245,  246,  247,  248,  249,  239,  240,  241,  242,
1341   243,    0,  244,  205,  245,  246,  247,  248,  249,    0,
1342     0,    0,    0,    0,  207,  208,    0,    0,  474,  475,
1343   712,  713,    0,    0,  251,    0,    0,  207,  208,  201,
1344   202,  714,  715,  716,    0,    0,    0,  251,    0,    0,
1345     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1346     0,    0,    0,    0,  717,    0,  718,  719,  720,  721,
1347   722,  723,  724,  725,  726,  727,    0,    0,    0,    0,
1348     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1349     0,    0,    0,    0,    0,  239,  240,  241,  242,  243,
1350   192,  244,  205,  245,  246,  247,  248,  249,    0,    0,
1351     0,  193,  194,    0,    0,    0,    0,    0,    0,    0,
1352     0,    0,    0,    0,    0,    0,  207,  208,    0,   15,
1353     0,    0,    0,    0,    0,    0,  251,   16,    0,    0,
1354    17,   18,   19,   20,   21,   22,   23,   24,   25,    0,
1355     0,    0,   26,   27,   28,    0,    0,    0,   29,   30,
1356    31,   32,   33,   34,   35,   36,   37,    0,   38,   39,
1357    40,   41,   42,   43,   44,    0,   45,    0,    0,    0,
1358     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1359     0,   46,    0,    0,    0,    0,    0,    0,   47,   48,
1360     0,   49,    0,   50,   51,   52,    0,    0,   53,   54,
1361     0,   55,    0,   56,    0,    0,    0,    0,    0,    0,
1362     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1363     0,    0,   57,    0,   58,    0,    0,    0,    0,    0,
1364     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1365     0,    0,    0,    0,    0,    0,   60,   61,    0,    0,
1366     0,    0,    0,   62,   63,   64,   65,   66,   67,   68,
1367    69,   70,   71,   72,   73,   74,   75,   76,   77,   78,
1368    79,
1369 };
1370 short yycheck[] = {                                      86,
1371    59,  169,  136,  134,   40,   40,  144,  295,  142,  143,
1372   395,   40,  146,  147,  148,   40,  497,   40,   40,   40,
1373    40,  159,  160,  161,  158,   40,   40,   37,  166,   40,
1374   328,  328,   42,   43,   40,   45,  408,   47,   40,  549,
1375   174,   40,  547,   40,   91,   40,  402,  403,   40,   40,
1376   545,  185,    0,   40,  185,  125,  432,  687,  313,   44,
1377   313,   40,   40,  313,  149,  150,  257,  355,   44,  399,
1378    44,  359,   44,  258,   58,   44,   44,  433,   44,   40,
1379    40,   37,  167,   93,  259,   44,   42,   43,   58,   45,
1380    46,   47,   44,   44,  123,   44,   40,  258,  157,  361,
1381   185,  262,  263,  152,  153,  154,  324,  241,  242,  259,
1382   244,   37,  123,   58,  589,   37,   42,   43,  177,   45,
1383    42,   47,  313,  385,  183,   47,  185,  385,  313,   37,
1384   385,   40,  385,  301,   42,  385,   44,   40,  313,   47,
1385   125,  396,  397,  309,  123,  620,   91,  313,   40,  125,
1386   385,  125,  313,  125,  239,  240,  125,  125,  385,  125,
1387   641,  396,  397,  313,  313,  795,  125,   93,   41,   58,
1388    43,  320,   45,  125,  125,   41,  125,   37,   44,   44,
1389   661,    0,   42,   43,   37,   45,  308,   47,  325,   42,
1390    43,  313,   45,  703,   47,   37,  701,  328,   91,   41,
1391    42,   43,   40,   45,  699,   47,   41,  258,  346,   44,
1392    37,  262,  263,  260,   41,   42,   43,   44,   45,  311,
1393    47,  313,  258,  361,  358,  393,  360,   58,  257,  313,
1394   368,  315,  316,  521,  372,  258,  370,  371,  376,  262,
1395    93,  300,   58,  258,  541,  543,  257,  306,  307,  336,
1396   309,  310,  311,  312,  313,  585,  258,  629,   58,  258,
1397   262,  258,  396,  262,  263,  257,  622,  258,  327,  328,
1398   257,  262,  263,  343,  650,  345,  407,  298,  257,  257,
1399   339,   41,   58,  421,   44,  123,   58,   41,  313,  348,
1400    44,  313,  314,  313,  353,   58,  257,  257,  357,  313,
1401   314,   58,  313,  317,  318,   58,  125,  313,   58,  308,
1402   309,  310,   58,  257,  313,  314,  313,  314,  313,  378,
1403   454,  269,  270,   58,  323,  264,  265,  266,  267,   58,
1404   464,  465,   58,  621,  313,  384,  269,  270,  337,  338,
1405    58,  390,  391,  392,  286,  287,  288,  346,  347,  348,
1406   349,  350,  313,  313,  257,  318,  319,  367,  394,  395,
1407   419,   58,  376,  362,  845,  364,   58,  402,  403,  313,
1408   385,  394,  395,    0,  385,  404,  405,  376,  763,  394,
1409   395,  396,  397,  312,  313,  341,  400,  401,  385,  298,
1410   390,  391,  394,  395,  430,  406,  407,  394,  395,  396,
1411   397,  400,  401,   58,  313,  314,  385,  430,  539,  697,
1412   313,   38,  404,  405,   41,  430,   43,   44,   45,   46,
1413   258,  313,  314,   58,  385,  385,  317,  318,  430,  408,
1414   409,  430,  343,  430,  345,   58,  274,   58,  276,   58,
1415    58,  385,  280,  281,  282,  406,  407,  615,  408,  409,
1416   269,  270,  590,   58,   58,   58,  594,   58,   58,  597,
1417   598,   58,   58,   37,   91,  524,   93,  376,   42,   43,
1418    58,   45,   58,   47,   58,  313,  314,   58,  537,  647,
1419   648,  649,  385,   58,  376,   58,  617,  387,   40,   58,
1420    61,  400,  401,   44,  332,   37,  123,   40,  125,   61,
1421    42,   43,  790,   45,   91,   47,   40,  123,  400,  401,
1422    46,   91,  800,   91,   44,  646,   44,   37,   44,   93,
1423   384,  652,   42,   43,  343,   45,  345,   47,  258,   40,
1424     0,   91,  257,  592,  593,   37,  374,  596,  376,   44,
1425    42,   43,   91,   45,   37,   47,   44,  385,  257,   42,
1426    43,   93,   45,  841,   47,   44,  394,  395,  396,  397,
1427    91,   44,  400,  401,  402,  403,   44,   44,   38,   44,
1428    38,   41,   37,   43,   44,   45,   46,   42,   43,   40,
1429    45,   40,   47,   40,   40,  716,  754,   40,  258,   37,
1430    91,   93,  430,   41,   42,   43,  655,   45,   44,   47,
1431    93,   44,   44,   40,  258,   37,  665,  775,  776,  777,
1432    42,   43,   37,   45,   44,   47,   41,   42,   43,   44,
1433    45,   91,   47,   93,   37,   44,  260,   44,   93,   42,
1434    43,   44,   45,  260,   47,   44,  258,   44,   44,   44,
1435    44,  268,  269,  270,  271,  272,  273,  274,  275,  276,
1436   277,  278,  279,  123,   44,  125,  283,  284,  285,  258,
1437    44,   93,  289,  290,  291,  292,  293,  294,  295,  296,
1438   297,   44,  299,  300,  301,  302,  303,  304,  305,  738,
1439   307,   44,  395,   44,  397,   93,  399,   44,  401,   41,
1440   403,   41,  405,   44,  407,  322,  409,   44,  411,   58,
1441    58,  257,  329,  330,   58,  332,   93,  334,  335,  336,
1442    58,  257,  339,  340,  341,  342,  343,  344,  345,    0,
1443   854,   44,   37,  386,  783,   44,  860,   42,   43,   44,
1444    45,   44,   47,   44,  259,  312,  363,   44,  365,   44,
1445   367,  382,  312,  830,   41,   44,   44,   93,  258,  321,
1446    44,   44,   44,  321,   44,  125,  843,  257,   44,   41,
1447   387,  388,  258,   44,   44,  385,   44,  394,  395,  396,
1448   397,  398,  399,  400,  401,  402,  403,  404,  405,  406,
1449   407,  408,  409,  410,  411,  124,   44,  385,   41,   44,
1450   260,   91,   44,   44,   44,   44,   44,   44,  268,  269,
1451   270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
1452    91,  258,   93,  283,  284,  285,   91,   44,   44,  289,
1453   290,  291,  292,  293,  294,  295,  296,  297,   44,  299,
1454   300,  301,  302,  303,  304,  305,  258,  307,  258,   44,
1455   258,   44,  123,   44,  125,   44,  312,   44,  258,   44,
1456    44,  331,  322,   44,  257,   41,   46,   44,   58,  329,
1457   330,  258,  332,   40,  334,  335,  336,   41,   44,  339,
1458   340,  341,  342,  343,  344,  345,  388,  257,  386,   41,
1459    58,   41,  394,   58,  396,   58,  398,   58,  400,   58,
1460   402,   44,  404,  363,  406,  365,  408,  367,  410,  259,
1461    44,  312,   44,   40,   44,  258,  321,  321,    0,  258,
1462    44,   44,  385,   44,   44,  123,   44,  387,  388,   44,
1463    41,   41,   41,   41,  394,  395,  396,  397,  398,  399,
1464   400,  401,  402,  403,  404,  405,  406,  407,  408,  409,
1465   410,  411,  258,   44,   93,   44,   38,  388,  258,   41,
1466   258,   44,   44,  394,  395,  396,  397,  398,  399,  400,
1467   401,  402,  403,  404,  405,  406,  407,  408,  409,  410,
1468   411,   44,   44,  258,  258,   44,   41,   58,   58,  260,
1469   259,   58,   58,  257,  286,   41,   44,  268,  269,  270,
1470   271,  272,  273,  274,  275,  276,  277,  278,  279,   91,
1471    44,  258,  283,  284,  285,   41,   44,   41,  289,  290,
1472   291,  292,  293,  294,  295,  296,  297,   41,  299,  300,
1473   301,  302,  303,  304,  305,   44,  307,  261,   58,  125,
1474    44,   41,   44,  125,  258,   44,  313,  258,  258,  124,
1475    58,  322,  259,  286,   41,  258,   41,   41,  329,  330,
1476    41,  332,   44,  334,  335,  336,   41,  383,  339,  340,
1477    41,  342,  343,  344,  345,   41,   44,   44,   41,   44,
1478     0,    0,   41,   41,  386,  125,   93,   41,   44,   41,
1479   123,  123,  363,   41,  365,  125,  677,  794,  602,  652,
1480   761,  191,  820,  449,   48,  832,  248,    0,  442,   54,
1481   859,  168,  419,  753,  395,    6,  387,  388,  319,  431,
1482   766,  163,  138,  394,  395,  396,  397,  398,  399,  400,
1483   401,  402,  403,  404,  405,  406,  407,  408,  409,  410,
1484   411,  340,  629,  454,   -1,   -1,   -1,   -1,   41,   -1,
1485    -1,   44,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1486    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1487    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  260,   -1,
1488    -1,   -1,   -1,   -1,   -1,   -1,  268,  269,  270,  271,
1489   272,  273,  274,  275,  276,  277,  278,  279,   91,   -1,
1490    -1,  283,  284,  285,   -1,   -1,   -1,  289,  290,  291,
1491   292,  293,  294,  295,  296,  297,   -1,  299,  300,  301,
1492   302,  303,  304,  305,   -1,  307,   -1,   -1,   -1,   -1,
1493    -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1494   322,   -1,   -1,   -1,   -1,   -1,   -1,  329,  330,   -1,
1495   332,   -1,  334,  335,  336,   -1,   -1,  339,  340,   -1,
1496   342,  343,  344,  345,    0,   -1,   -1,   -1,   -1,   -1,
1497    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1498    -1,  363,   -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,
1499    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1500    -1,   -1,   -1,   -1,   -1,  387,  388,   -1,   44,   -1,
1501    -1,   -1,  394,  395,  396,  397,  398,  399,  400,  401,
1502   402,  403,  404,  405,  406,  407,  408,  409,  410,  411,
1503    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1504    -1,   -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,
1505    -1,   -1,   -1,   -1,   -1,   91,   -1,   -1,   -1,   -1,
1506    -1,   -1,   -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,
1507    -1,   -1,   -1,   -1,   -1,  268,  269,  270,  271,  272,
1508   273,  274,  275,  276,  277,  278,  279,  123,   -1,  125,
1509   283,  284,  285,   -1,   -1,   -1,  289,  290,  291,  292,
1510   293,  294,  295,  296,  297,   -1,  299,  300,  301,  302,
1511   303,  304,  305,   -1,  307,   -1,   -1,   -1,   -1,   -1,
1512    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  322,
1513    -1,   -1,   -1,   -1,   -1,   -1,  329,  330,   -1,  332,
1514    -1,  334,  335,  336,   -1,   -1,  339,  340,   -1,  342,
1515   343,  344,  345,    0,   -1,   -1,   -1,   -1,   -1,   -1,
1516    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1517   363,   -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1518    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1519    -1,   -1,   -1,   -1,  387,  388,   -1,   44,   -1,   -1,
1520    -1,  394,  395,  396,  397,  398,  399,  400,  401,  402,
1521   403,  404,  405,  406,  407,  408,  409,  410,  411,   -1,
1522    -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,   -1,
1523    -1,   -1,  268,  269,  270,  271,  272,  273,  274,  275,
1524   276,  277,  278,  279,   91,   -1,   -1,  283,  284,  285,
1525    -1,   -1,   -1,  289,  290,  291,  292,  293,  294,  295,
1526   296,  297,   -1,  299,  300,  301,  302,  303,  304,  305,
1527    -1,  307,   -1,   -1,   -1,   -1,  123,   -1,  125,   -1,
1528    -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,
1529    -1,   -1,   -1,  329,  330,   -1,  332,   -1,  334,  335,
1530   336,   -1,   -1,  339,  340,   -1,  342,  343,  344,  345,
1531     0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  312,
1532   313,  314,   -1,   -1,   -1,   -1,   -1,  363,   -1,  365,
1533    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1534    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1535    -1,  387,  388,   -1,   44,   -1,   -1,   -1,  394,  395,
1536   396,  397,  398,  399,  400,  401,  402,  403,  404,  405,
1537   406,  407,  408,  409,  410,  411,  369,  370,  371,  372,
1538   373,   -1,  375,  376,  377,  378,  379,  380,  381,   -1,
1539    -1,   -1,   -1,   40,   -1,   -1,   -1,   -1,   -1,   -1,
1540    -1,   91,   -1,   -1,   -1,   -1,   -1,  400,  401,   -1,
1541    -1,   -1,   -1,  260,   -1,   -1,   -1,  410,   -1,   -1,
1542    -1,  268,  269,  270,  271,  272,  273,  274,  275,  276,
1543   277,  278,  279,  123,   -1,  125,  283,  284,  285,   -1,
1544    -1,   -1,  289,  290,  291,  292,  293,  294,  295,  296,
1545   297,   -1,  299,  300,  301,  302,  303,  304,  305,   -1,
1546   307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1547    -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,   -1,
1548    -1,   -1,  329,  330,   -1,  332,   -1,  334,  335,  336,
1549    -1,   -1,  339,  340,   -1,  342,  343,  344,  345,    0,
1550    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1551    -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,  365,   -1,
1552    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1553    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1554   387,  388,   -1,   44,   -1,   -1,   -1,  394,  395,  396,
1555   397,  398,  399,  400,  401,  402,  403,  404,  405,  406,
1556   407,  408,  409,  410,  411,   -1,   -1,   -1,   -1,   -1,
1557   260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  268,  269,
1558   270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
1559    91,   -1,   -1,  283,  284,  285,   -1,   -1,   -1,  289,
1560   290,  291,  292,  293,  294,  295,  296,  297,   -1,  299,
1561   300,  301,  302,  303,  304,  305,   -1,  307,   -1,   -1,
1562    -1,   -1,  123,   -1,  125,   -1,   -1,   -1,   -1,   -1,
1563    -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,  329,
1564   330,   -1,  332,   -1,  334,  335,  336,   -1,   -1,  339,
1565   340,   -1,  342,  343,  344,  345,    0,   -1,   -1,   -1,
1566    -1,   -1,   -1,   -1,   -1,   -1,  313,  314,   -1,   -1,
1567    -1,   -1,   -1,  363,   -1,  365,   -1,   -1,   -1,   -1,
1568    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1569    -1,   -1,   -1,   -1,   -1,   -1,   -1,  387,  388,   -1,
1570    -1,   -1,   -1,   -1,  394,  395,  396,  397,  398,  399,
1571   400,  401,  402,  403,  404,  405,  406,  407,  408,  409,
1572   410,  411,  369,  370,  371,  372,  373,   -1,  375,  376,
1573   377,  378,  379,  380,  381,   -1,   -1,   -1,   -1,   -1,
1574    -1,   -1,   -1,   -1,   -1,   -1,   -1,   91,   -1,   -1,
1575    -1,   -1,   -1,  400,  401,   -1,   -1,   -1,   -1,  260,
1576    -1,   -1,   -1,  410,   -1,   -1,   -1,  268,  269,  270,
1577   271,  272,  273,  274,  275,  276,  277,  278,  279,  123,
1578    -1,  125,  283,  284,  285,   -1,   -1,   -1,  289,  290,
1579   291,  292,  293,  294,  295,  296,  297,   -1,  299,  300,
1580   301,  302,  303,  304,  305,   -1,  307,   -1,   -1,   -1,
1581    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1582    -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,  329,  330,
1583    -1,  332,   -1,  334,  335,  336,   -1,   -1,  339,  340,
1584    -1,  342,  343,  344,  345,    0,   -1,   -1,   -1,   -1,
1585    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1586    -1,   -1,  363,   -1,  365,   -1,   -1,   -1,   -1,   -1,
1587    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1588    -1,   -1,   -1,   -1,   -1,   -1,  387,  388,   -1,   -1,
1589    -1,   -1,   -1,  394,  395,  396,  397,  398,  399,  400,
1590   401,  402,  403,  404,  405,  406,  407,  408,  409,  410,
1591   411,   -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,
1592    -1,   -1,   -1,   -1,  268,  269,  270,  271,  272,  273,
1593   274,  275,  276,  277,  278,  279,   91,   -1,   -1,  283,
1594   284,  285,   -1,   -1,   -1,  289,  290,  291,  292,  293,
1595   294,  295,  296,  297,   -1,  299,  300,  301,  302,  303,
1596   304,  305,   -1,  307,   -1,   -1,   -1,   -1,  123,   -1,
1597   125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,
1598    -1,   -1,   -1,   -1,   -1,  329,  330,   -1,  332,   -1,
1599   334,  335,  336,   -1,   -1,  339,  340,   -1,  342,  343,
1600   344,  345,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1601    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  363,
1602    -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1603    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1604    -1,   -1,   -1,  387,  388,   -1,   -1,   -1,   -1,   -1,
1605   394,  395,  396,  397,  398,  399,  400,  401,  402,  403,
1606   404,  405,  406,  407,  408,  409,  410,  411,   -1,   -1,
1607    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1608    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1609    -1,   -1,   -1,   91,   -1,   -1,   -1,   -1,   -1,   -1,
1610    -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,
1611    -1,   -1,   -1,  268,  269,  270,  271,  272,  273,  274,
1612   275,  276,  277,  278,  279,   -1,   -1,  125,  283,  284,
1613   285,   -1,   -1,   -1,  289,  290,  291,  292,  293,  294,
1614   295,  296,  297,   -1,  299,  300,  301,  302,  303,  304,
1615   305,   -1,  307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1616    -1,   -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,
1617    -1,   -1,   -1,   -1,  329,  330,   -1,  332,   -1,  334,
1618   335,  336,   -1,   -1,  339,  340,   -1,  342,  343,  344,
1619   345,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1620    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,
1621   365,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1622    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1623    -1,   -1,  387,  388,   -1,   -1,   -1,   -1,   -1,  394,
1624   395,  396,  397,  398,  399,  400,  401,  402,  403,  404,
1625   405,  406,  407,  408,  409,  410,  411,   -1,   -1,   -1,
1626    -1,   -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1627   268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
1628   278,  279,   91,   -1,   -1,  283,  284,  285,   -1,   -1,
1629    -1,  289,  290,  291,  292,  293,  294,  295,  296,  297,
1630    -1,  299,  300,  301,  302,  303,  304,  305,   -1,  307,
1631    -1,   -1,   -1,   -1,  123,   -1,  125,   -1,   -1,   -1,
1632    -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,
1633    -1,  329,  330,  331,  332,   -1,  334,  335,  336,   -1,
1634    -1,  339,  340,   -1,  342,  343,  344,  345,    0,   -1,
1635    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1636    -1,   -1,   -1,   -1,   -1,  363,   -1,  365,   -1,   -1,
1637    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1638    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  387,
1639   388,   -1,   -1,   -1,   -1,   -1,  394,  395,  396,  397,
1640   398,  399,  400,  401,  402,  403,  404,  405,  406,  407,
1641   408,  409,  410,  411,   -1,   -1,   -1,   -1,   -1,   -1,
1642    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1643    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   91,
1644    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1645    -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  268,
1646   269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
1647   279,  123,   -1,  125,  283,  284,  285,   -1,   -1,   -1,
1648   289,  290,  291,  292,  293,  294,  295,  296,  297,   -1,
1649   299,  300,  301,  302,  303,  304,  305,   -1,  307,   -1,
1650    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1651    -1,   -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,
1652   329,  330,   -1,  332,   -1,  334,  335,  336,   -1,   -1,
1653   339,  340,   -1,  342,  343,  344,  345,    0,   -1,   -1,
1654    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1655    -1,   -1,   -1,   -1,  363,   -1,  365,   -1,   -1,   -1,
1656    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1657    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  387,  388,
1658    -1,   -1,   -1,   -1,   -1,  394,  395,  396,  397,  398,
1659   399,  400,  401,  402,  403,  404,  405,  406,  407,  408,
1660   409,  410,  411,   -1,   -1,   -1,   -1,   -1,  260,   -1,
1661    -1,   -1,   -1,   -1,   -1,   -1,  268,  269,  270,  271,
1662   272,  273,  274,  275,  276,  277,  278,  279,   91,   -1,
1663    -1,  283,  284,  285,   -1,   -1,   -1,  289,  290,  291,
1664   292,  293,  294,  295,  296,  297,   -1,  299,  300,  301,
1665   302,  303,  304,  305,   -1,  307,   -1,   -1,   -1,   -1,
1666   123,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1667   322,   -1,   -1,   -1,   -1,   -1,   -1,  329,  330,   -1,
1668   332,   -1,  334,  335,  336,   -1,   -1,  339,  340,   -1,
1669   342,  343,  344,  345,    0,   -1,   -1,   -1,   -1,   -1,
1670    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1671    -1,  363,   -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,
1672    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1673    -1,   -1,   -1,   -1,   -1,  387,  388,   -1,   -1,   -1,
1674    -1,   -1,  394,  395,  396,  397,  398,  399,  400,  401,
1675   402,  403,  404,  405,  406,  407,  408,  409,  410,  411,
1676    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1677    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1678    -1,   -1,   -1,   -1,   -1,   91,   -1,   -1,   -1,   -1,
1679    -1,   -1,   -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,
1680    -1,   -1,   -1,   -1,   -1,  268,  269,  270,  271,  272,
1681   273,  274,  275,  276,  277,  278,  279,   -1,   -1,  125,
1682   283,  284,  285,   -1,   -1,   -1,  289,  290,  291,  292,
1683   293,  294,  295,  296,  297,   -1,  299,  300,  301,  302,
1684   303,  304,  305,   -1,  307,   -1,   -1,   -1,   -1,   -1,
1685    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  322,
1686    -1,   -1,   -1,   -1,   -1,   -1,  329,  330,   -1,  332,
1687    -1,  334,  335,  336,   -1,   -1,  339,  340,   -1,  342,
1688   343,  344,  345,    0,   -1,   -1,   -1,   -1,   -1,   -1,
1689    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1690   363,   -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1691    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1692    -1,   -1,   -1,   -1,  387,  388,   -1,   -1,   -1,   -1,
1693    -1,  394,  395,  396,  397,  398,  399,  400,  401,  402,
1694   403,  404,  405,  406,  407,  408,  409,  410,  411,   -1,
1695    -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,   -1,
1696    -1,   -1,  268,  269,  270,  271,  272,  273,  274,  275,
1697   276,  277,  278,  279,   91,   -1,   -1,  283,  284,  285,
1698    -1,   -1,   -1,  289,  290,  291,  292,  293,  294,  295,
1699   296,  297,   -1,  299,  300,  301,  302,  303,  304,  305,
1700    -1,  307,   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,
1701    -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,
1702    -1,   -1,   -1,  329,  330,   -1,  332,   -1,  334,  335,
1703   336,   -1,   -1,  339,  340,   -1,  342,  343,  344,  345,
1704     0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1705    -1,   -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,  365,
1706    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1707    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1708    -1,  387,  388,   -1,   -1,   -1,   -1,   -1,  394,  395,
1709   396,  397,  398,  399,  400,  401,  402,  403,  404,  405,
1710   406,  407,  408,  409,  410,  411,   -1,   -1,   -1,   -1,
1711    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1712    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1713    -1,   91,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1714    -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,
1715    -1,  268,  269,  270,  271,  272,  273,  274,  275,  276,
1716   277,  278,  279,   -1,   -1,  125,  283,  284,  285,   -1,
1717    -1,   -1,  289,  290,  291,  292,  293,  294,  295,  296,
1718   297,   -1,  299,  300,  301,  302,  303,  304,  305,   -1,
1719   307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1720    -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,   -1,
1721    -1,   -1,  329,  330,   -1,  332,   -1,  334,  335,  336,
1722    -1,   -1,  339,  340,   -1,  342,  343,  344,  345,    0,
1723    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1724    -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,  365,   -1,
1725    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1726    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1727   387,  388,   -1,   -1,   -1,   -1,   -1,  394,  395,  396,
1728   397,  398,  399,  400,  401,  402,  403,  404,  405,  406,
1729   407,  408,  409,  410,  411,   -1,   -1,   -1,   -1,   -1,
1730   260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  268,  269,
1731   270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
1732    91,   -1,   -1,  283,  284,  285,   -1,   -1,   -1,  289,
1733   290,  291,  292,  293,  294,  295,  296,  297,   -1,  299,
1734   300,  301,  302,  303,  304,  305,   -1,  307,   -1,   -1,
1735    -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,
1736    -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,  329,
1737   330,   -1,  332,   -1,  334,  335,  336,   -1,   -1,  339,
1738   340,   -1,  342,  343,  344,  345,    0,   -1,   -1,   -1,
1739    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1740    -1,   -1,   -1,  363,   -1,  365,   -1,   -1,   -1,   -1,
1741    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1742    -1,   -1,   -1,   -1,   -1,   -1,   -1,  387,  388,   -1,
1743    -1,   -1,   -1,   -1,  394,  395,  396,  397,  398,  399,
1744   400,  401,  402,  403,  404,  405,  406,  407,  408,  409,
1745   410,  411,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1746    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1747    -1,   -1,   -1,   -1,   -1,   -1,   -1,   91,   -1,   -1,
1748    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  260,
1749    -1,   -1,   -1,   -1,   -1,   -1,   -1,  268,  269,  270,
1750   271,  272,  273,  274,  275,  276,  277,  278,  279,   -1,
1751    -1,  125,  283,  284,  285,   -1,   -1,   -1,  289,  290,
1752   291,  292,  293,  294,  295,  296,  297,   -1,  299,  300,
1753   301,  302,  303,  304,  305,   -1,  307,   -1,   -1,   -1,
1754    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1755    -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,  329,  330,
1756    -1,  332,   -1,  334,  335,  336,   -1,   -1,  339,  340,
1757    -1,  342,  343,  344,  345,    0,   -1,   -1,   -1,   -1,
1758    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1759    -1,   -1,  363,   -1,  365,   -1,   -1,   -1,   -1,   -1,
1760    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1761    -1,   -1,   -1,   -1,   -1,   -1,  387,  388,   -1,   -1,
1762    -1,   -1,   -1,  394,  395,  396,  397,  398,  399,  400,
1763   401,  402,  403,  404,  405,  406,  407,  408,  409,  410,
1764   411,   -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,
1765    -1,   -1,   -1,   -1,  268,  269,  270,  271,  272,  273,
1766   274,  275,  276,  277,  278,  279,   91,   -1,   -1,  283,
1767   284,  285,   -1,   -1,   -1,  289,  290,  291,  292,  293,
1768   294,  295,  296,  297,   -1,  299,  300,  301,  302,  303,
1769   304,  305,   -1,  307,   -1,   -1,   -1,   -1,   -1,   -1,
1770   125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,
1771    -1,   -1,   -1,   -1,   -1,  329,  330,   -1,  332,   -1,
1772   334,  335,  336,   -1,   -1,  339,  340,   -1,  342,  343,
1773   344,  345,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1774    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  363,
1775    -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1776    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1777    -1,   -1,   -1,  387,  388,   -1,   -1,   -1,   -1,   -1,
1778   394,  395,  396,  397,  398,  399,  400,  401,  402,  403,
1779   404,  405,  406,  407,  408,  409,  410,  411,   -1,   -1,
1780    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1781    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1782    -1,   -1,   -1,   91,   -1,   -1,   -1,   -1,   -1,   -1,
1783    -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,
1784    -1,   -1,   -1,  268,  269,  270,  271,  272,  273,  274,
1785   275,  276,  277,  278,  279,   -1,   -1,  125,  283,  284,
1786   285,   -1,   -1,   -1,  289,  290,  291,  292,  293,  294,
1787   295,  296,  297,   -1,  299,  300,  301,  302,  303,  304,
1788   305,   -1,  307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1789    -1,   -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,
1790    -1,   -1,   -1,   -1,  329,  330,   -1,  332,   -1,  334,
1791   335,  336,   -1,   -1,  339,  340,   -1,  342,  343,  344,
1792   345,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1793    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,
1794   365,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1795    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1796    -1,   -1,  387,  388,   -1,   -1,   -1,   -1,   -1,  394,
1797   395,  396,  397,  398,  399,  400,  401,  402,  403,  404,
1798   405,  406,  407,  408,  409,  410,  411,   -1,   -1,   -1,
1799    -1,   -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1800   268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
1801   278,  279,   91,   -1,   -1,  283,  284,  285,   -1,   -1,
1802    -1,  289,  290,  291,  292,  293,  294,  295,  296,  297,
1803    -1,  299,  300,  301,  302,  303,  304,  305,   -1,  307,
1804    -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,
1805    -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,
1806    -1,  329,  330,   -1,  332,   -1,  334,  335,  336,   -1,
1807    -1,  339,  340,   -1,  342,  343,  344,  345,    0,   -1,
1808    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1809    -1,   -1,   -1,   -1,   -1,  363,   -1,  365,   -1,   -1,
1810    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1811    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  387,
1812   388,   -1,   -1,   -1,   -1,   -1,  394,  395,  396,  397,
1813   398,  399,  400,  401,  402,  403,  404,  405,  406,  407,
1814   408,  409,  410,  411,   -1,   -1,   -1,   -1,   -1,   -1,
1815    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1816    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   91,
1817    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1818    -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  268,
1819   269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
1820   279,   -1,   -1,  125,  283,  284,  285,   -1,   -1,   -1,
1821   289,  290,  291,  292,  293,  294,  295,  296,  297,   -1,
1822   299,  300,  301,  302,  303,  304,  305,   -1,  307,   -1,
1823    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1824    -1,   -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,
1825   329,  330,   -1,  332,   -1,  334,  335,  336,   -1,   -1,
1826   339,  340,   -1,  342,  343,  344,  345,    0,   -1,   -1,
1827    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1828    -1,   -1,   -1,   -1,  363,   -1,  365,   -1,   -1,   -1,
1829    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1830    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  387,  388,
1831    -1,   -1,   -1,   -1,   -1,  394,  395,  396,  397,  398,
1832   399,  400,  401,  402,  403,  404,  405,  406,  407,  408,
1833   409,  410,  411,   -1,   -1,   -1,   -1,   -1,  260,   -1,
1834    -1,   -1,   -1,   -1,   -1,   -1,  268,  269,  270,  271,
1835   272,  273,  274,  275,  276,  277,  278,  279,   91,   -1,
1836    -1,  283,  284,  285,   -1,   -1,   -1,  289,  290,  291,
1837   292,  293,  294,  295,  296,  297,   -1,  299,  300,  301,
1838   302,  303,  304,  305,   -1,  307,   -1,   -1,   -1,   -1,
1839    -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1840   322,   -1,   -1,   -1,   -1,   -1,   -1,  329,  330,   -1,
1841   332,   -1,  334,  335,  336,   -1,   -1,  339,  340,   -1,
1842   342,  343,  344,  345,    0,   -1,   -1,   -1,   -1,   -1,
1843    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1844    -1,  363,   -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,
1845    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1846    -1,   -1,   -1,   -1,   -1,  387,  388,   -1,   -1,   -1,
1847    -1,   -1,  394,  395,  396,  397,  398,  399,  400,  401,
1848   402,  403,  404,  405,  406,  407,  408,  409,  410,  411,
1849    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1850    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1851    -1,   -1,   -1,   -1,   -1,   91,   -1,   -1,   -1,   -1,
1852    -1,   -1,   -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,
1853    -1,   -1,   -1,   -1,   -1,  268,  269,  270,  271,  272,
1854   273,  274,  275,  276,  277,  278,  279,   -1,   -1,  125,
1855   283,  284,  285,   -1,   -1,   -1,  289,  290,  291,  292,
1856   293,  294,  295,  296,  297,   -1,  299,  300,  301,  302,
1857   303,  304,  305,   -1,  307,   -1,   -1,   -1,   -1,   -1,
1858    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  322,
1859    -1,   -1,   -1,   -1,   -1,   -1,  329,  330,   -1,  332,
1860    -1,  334,  335,  336,   -1,   -1,  339,  340,   -1,  342,
1861   343,  344,  345,    0,   -1,   -1,   -1,   -1,   -1,   -1,
1862    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1863   363,   -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1864    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1865    -1,   -1,   -1,   -1,  387,  388,   -1,   -1,   -1,   -1,
1866    -1,  394,  395,  396,  397,  398,  399,  400,  401,  402,
1867   403,  404,  405,  406,  407,  408,  409,  410,  411,   -1,
1868    -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,   -1,
1869    -1,   -1,  268,  269,  270,  271,  272,  273,  274,  275,
1870   276,  277,  278,  279,   91,   -1,   -1,  283,  284,  285,
1871    -1,   -1,   -1,  289,  290,  291,  292,  293,  294,  295,
1872   296,  297,   -1,  299,  300,  301,  302,  303,  304,  305,
1873    -1,  307,   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,
1874    -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,
1875    -1,   -1,   -1,  329,  330,   -1,  332,   -1,  334,  335,
1876   336,   -1,   -1,  339,  340,   -1,  342,  343,  344,  345,
1877     0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1878    -1,   -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,  365,
1879    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1880    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1881    -1,  387,  388,   -1,   -1,   -1,   -1,   -1,  394,  395,
1882   396,  397,  398,  399,  400,  401,  402,  403,  404,  405,
1883   406,  407,  408,  409,  410,  411,   -1,   -1,   -1,   -1,
1884    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1885    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1886    -1,   91,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1887    -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,
1888    -1,  268,  269,  270,  271,  272,  273,  274,  275,  276,
1889   277,  278,  279,   -1,   -1,  125,  283,  284,  285,   -1,
1890    -1,   -1,  289,  290,  291,  292,  293,  294,  295,  296,
1891   297,   -1,  299,  300,  301,  302,  303,  304,  305,   -1,
1892   307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1893    -1,   -1,   -1,   -1,    0,  322,   -1,   -1,   -1,   -1,
1894    -1,   -1,  329,  330,   -1,  332,   -1,  334,  335,  336,
1895    -1,   -1,  339,  340,   -1,  342,  343,  344,  345,   -1,
1896    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1897    -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,  365,   -1,
1898    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1899    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1900   387,  388,   -1,   -1,   -1,   -1,   -1,  394,  395,  396,
1901   397,  398,  399,  400,  401,  402,  403,  404,  405,  406,
1902   407,  408,  409,  410,  411,   91,   -1,   -1,   -1,   -1,
1903   260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  268,  269,
1904   270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
1905    -1,   -1,   -1,  283,  284,  285,   -1,   -1,   -1,  289,
1906   290,  291,  292,  293,  294,  295,  296,  297,   -1,  299,
1907   300,  301,  302,  303,  304,  305,   -1,  307,   -1,   -1,
1908    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1909    -1,    0,  322,   -1,   -1,   -1,   -1,   -1,   -1,  329,
1910   330,   -1,  332,   -1,  334,  335,  336,   -1,   -1,  339,
1911   340,   -1,  342,  343,  344,  345,   -1,   -1,   -1,   -1,
1912    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1913    -1,   -1,   -1,  363,   -1,  365,   -1,   -1,   -1,   -1,
1914    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1915    -1,   -1,   -1,   -1,   -1,   -1,   -1,  387,  388,   -1,
1916    -1,   -1,   -1,   -1,  394,  395,  396,  397,  398,  399,
1917   400,  401,  402,  403,  404,  405,  406,  407,  408,  409,
1918   410,  411,   91,   -1,   40,   -1,   -1,   -1,   -1,   -1,
1919    -1,   -1,   -1,   -1,  260,   -1,   -1,   40,   -1,   -1,
1920    -1,   -1,  268,  269,  270,  271,  272,  273,  274,  275,
1921   276,  277,  278,  279,   -1,   -1,   -1,  283,  284,  285,
1922    -1,   -1,   -1,  289,  290,  291,  292,  293,  294,  295,
1923   296,  297,   -1,  299,  300,  301,  302,  303,  304,  305,
1924    -1,  307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1925    -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,
1926    -1,   -1,   -1,  329,  330,   -1,  332,   -1,  334,  335,
1927   336,   -1,   -1,  339,  340,   -1,  342,   -1,  344,   -1,
1928    -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,
1929    -1,   -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,  365,
1930    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1931    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1932    -1,  387,  388,   -1,   -1,   -1,   -1,   -1,  394,  395,
1933   396,  397,  398,  399,  400,  401,  402,  403,  404,  405,
1934   406,  407,  408,  409,  410,  411,   -1,   -1,   -1,   -1,
1935    -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  268,
1936   269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
1937   279,   -1,   -1,   -1,  283,  284,  285,   -1,   -1,   -1,
1938   289,  290,  291,  292,  293,  294,  295,  296,  297,   -1,
1939   299,  300,  301,  302,  303,  304,  305,   -1,  307,   -1,
1940    -1,  257,   -1,   -1,   -1,  261,   -1,   -1,   -1,   -1,
1941    -1,   -1,   -1,  322,  257,  258,   -1,   -1,   -1,   -1,
1942   329,  330,   -1,  332,   -1,  334,  335,  336,   -1,   -1,
1943   339,  340,   -1,  342,   -1,  344,   -1,   -1,   -1,   -1,
1944    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1945    -1,   -1,   -1,   -1,  363,   -1,  365,  313,  314,   -1,
1946    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1947   313,  314,   -1,   -1,   -1,   -1,   -1,   -1,  387,  388,
1948    91,   -1,   -1,   -1,   -1,  394,  395,  396,  397,  398,
1949   399,  400,  401,  402,  403,  404,  405,  406,  407,  408,
1950   409,  410,  411,   -1,  258,   -1,   -1,   -1,   -1,   -1,
1951    -1,   -1,   -1,  369,  370,  371,  372,  373,   -1,  375,
1952   376,  377,  378,  379,  380,  381,  369,  370,  371,  372,
1953   373,   -1,  375,  376,  377,  378,  379,  380,  381,   -1,
1954    -1,   -1,   -1,   -1,  400,  401,   -1,   -1,  404,  405,
1955   315,  316,   -1,   -1,  410,   -1,   -1,  400,  401,  313,
1956   314,  326,  327,  328,   -1,   -1,   -1,  410,   -1,   -1,
1957    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1958    -1,   -1,   -1,   -1,  349,   -1,  351,  352,  353,  354,
1959   355,  356,  357,  358,  359,  360,   -1,   -1,   -1,   -1,
1960    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1961    -1,   -1,   -1,   -1,   -1,  369,  370,  371,  372,  373,
1962   385,  375,  376,  377,  378,  379,  380,  381,   -1,   -1,
1963    -1,  396,  397,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1964    -1,   -1,   -1,   -1,   -1,   -1,  400,  401,   -1,  260,
1965    -1,   -1,   -1,   -1,   -1,   -1,  410,  268,   -1,   -1,
1966   271,  272,  273,  274,  275,  276,  277,  278,  279,   -1,
1967    -1,   -1,  283,  284,  285,   -1,   -1,   -1,  289,  290,
1968   291,  292,  293,  294,  295,  296,  297,   -1,  299,  300,
1969   301,  302,  303,  304,  305,   -1,  307,   -1,   -1,   -1,
1970    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1971    -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,  329,  330,
1972    -1,  332,   -1,  334,  335,  336,   -1,   -1,  339,  340,
1973    -1,  342,   -1,  344,   -1,   -1,   -1,   -1,   -1,   -1,
1974    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1975    -1,   -1,  363,   -1,  365,   -1,   -1,   -1,   -1,   -1,
1976    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1977    -1,   -1,   -1,   -1,   -1,   -1,  387,  388,   -1,   -1,
1978    -1,   -1,   -1,  394,  395,  396,  397,  398,  399,  400,
1979   401,  402,  403,  404,  405,  406,  407,  408,  409,  410,
1980   411,
1981 };
1982 #define YYFINAL 3
1983 #ifndef YYDEBUG
1984 #define YYDEBUG 0
1985 #endif
1986 #define YYMAXTOKEN 430
1987 #if YYDEBUG
1988 char *yyname[] = {
1989 "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,
1990 0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0,0,
1991 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,
1992 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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,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,"CHAR","INTEGER","BOOLEAN","PERCENT",
1997 "SPERCENT","MINUS_INTEGER","PLUS_INTEGER","MAZE_GRID_ID","SOLID_FILL_ID",
1998 "MINES_ID","ROGUELEV_ID","MESSAGE_ID","MAZE_ID","LEVEL_ID","LEV_INIT_ID",
1999 "GEOMETRY_ID","NOMAP_ID","OBJECT_ID","COBJECT_ID","MONSTER_ID","TRAP_ID",
2000 "DOOR_ID","DRAWBRIDGE_ID","object_ID","monster_ID","terrain_ID","MAZEWALK_ID",
2001 "WALLIFY_ID","REGION_ID","FILLING","IRREGULAR","JOINED","ALTAR_ID","LADDER_ID",
2002 "STAIR_ID","NON_DIGGABLE_ID","NON_PASSWALL_ID","ROOM_ID","PORTAL_ID",
2003 "TELEPRT_ID","BRANCH_ID","LEV","MINERALIZE_ID","CORRIDOR_ID","GOLD_ID",
2004 "ENGRAVING_ID","FOUNTAIN_ID","POOL_ID","SINK_ID","NONE","RAND_CORRIDOR_ID",
2005 "DOOR_STATE","LIGHT_STATE","CURSE_TYPE","ENGRAVING_TYPE","DIRECTION",
2006 "RANDOM_TYPE","RANDOM_TYPE_BRACKET","A_REGISTER","ALIGNMENT","LEFT_OR_RIGHT",
2007 "CENTER","TOP_OR_BOT","ALTAR_TYPE","UP_OR_DOWN","SUBROOM_ID","NAME_ID",
2008 "FLAGS_ID","FLAG_TYPE","MON_ATTITUDE","MON_ALERTNESS","MON_APPEARANCE",
2009 "ROOMDOOR_ID","IF_ID","ELSE_ID","TERRAIN_ID","HORIZ_OR_VERT",
2010 "REPLACE_TERRAIN_ID","EXIT_ID","SHUFFLE_ID","QUANTITY_ID","BURIED_ID","LOOP_ID",
2011 "FOR_ID","TO_ID","SWITCH_ID","CASE_ID","BREAK_ID","DEFAULT_ID","ERODED_ID",
2012 "TRAPPED_STATE","RECHARGED_ID","INVIS_ID","GREASED_ID","FEMALE_ID",
2013 "CANCELLED_ID","REVIVED_ID","AVENGE_ID","FLEEING_ID","BLINDED_ID",
2014 "PARALYZED_ID","STUNNED_ID","CONFUSED_ID","SEENTRAPS_ID","ALL_ID","MONTYPE_ID",
2015 "GRAVE_ID","ERODEPROOF_ID","FUNCTION_ID","MSG_OUTPUT_TYPE","COMPARE_TYPE",
2016 "UNKNOWN_TYPE","rect_ID","fillrect_ID","line_ID","randline_ID","grow_ID",
2017 "selection_ID","flood_ID","rndcoord_ID","circle_ID","ellipse_ID","filter_ID",
2018 "complement_ID","gradient_ID","GRADIENT_TYPE","LIMITED","HUMIDITY_TYPE",
2019 "STRING","MAP_ID","NQSTRING","VARSTRING","CFUNC","CFUNC_INT","CFUNC_STR",
2020 "CFUNC_COORD","CFUNC_REGION","VARSTRING_INT","VARSTRING_INT_ARRAY",
2021 "VARSTRING_STRING","VARSTRING_STRING_ARRAY","VARSTRING_VAR",
2022 "VARSTRING_VAR_ARRAY","VARSTRING_COORD","VARSTRING_COORD_ARRAY",
2023 "VARSTRING_REGION","VARSTRING_REGION_ARRAY","VARSTRING_MAPCHAR",
2024 "VARSTRING_MAPCHAR_ARRAY","VARSTRING_MONST","VARSTRING_MONST_ARRAY",
2025 "VARSTRING_OBJ","VARSTRING_OBJ_ARRAY","VARSTRING_SEL","VARSTRING_SEL_ARRAY",
2026 "METHOD_INT","METHOD_INT_ARRAY","METHOD_STRING","METHOD_STRING_ARRAY",
2027 "METHOD_VAR","METHOD_VAR_ARRAY","METHOD_COORD","METHOD_COORD_ARRAY",
2028 "METHOD_REGION","METHOD_REGION_ARRAY","METHOD_MAPCHAR","METHOD_MAPCHAR_ARRAY",
2029 "METHOD_MONST","METHOD_MONST_ARRAY","METHOD_OBJ","METHOD_OBJ_ARRAY",
2030 "METHOD_SEL","METHOD_SEL_ARRAY","DICE",
2031 };
2032 char *yyrule[] = {
2033 "$accept : file",
2034 "file :",
2035 "file : levels",
2036 "levels : level",
2037 "levels : level levels",
2038 "level : level_def flags levstatements",
2039 "level_def : LEVEL_ID ':' STRING",
2040 "level_def : MAZE_ID ':' STRING ',' mazefiller",
2041 "mazefiller : RANDOM_TYPE",
2042 "mazefiller : CHAR",
2043 "lev_init : LEV_INIT_ID ':' SOLID_FILL_ID ',' terrain_type",
2044 "lev_init : LEV_INIT_ID ':' MAZE_GRID_ID ',' CHAR",
2045 "lev_init : LEV_INIT_ID ':' ROGUELEV_ID",
2046 "lev_init : LEV_INIT_ID ':' MINES_ID ',' CHAR ',' CHAR ',' BOOLEAN ',' BOOLEAN ',' light_state ',' walled opt_fillchar",
2047 "opt_limited :",
2048 "opt_limited : ',' LIMITED",
2049 "opt_coord_or_var :",
2050 "opt_coord_or_var : ',' coord_or_var",
2051 "opt_fillchar :",
2052 "opt_fillchar : ',' CHAR",
2053 "walled : BOOLEAN",
2054 "walled : RANDOM_TYPE",
2055 "flags :",
2056 "flags : FLAGS_ID ':' flag_list",
2057 "flag_list : FLAG_TYPE ',' flag_list",
2058 "flag_list : FLAG_TYPE",
2059 "levstatements :",
2060 "levstatements : levstatement levstatements",
2061 "stmt_block : '{' levstatements '}'",
2062 "levstatement : message",
2063 "levstatement : lev_init",
2064 "levstatement : altar_detail",
2065 "levstatement : grave_detail",
2066 "levstatement : branch_region",
2067 "levstatement : corridor",
2068 "levstatement : variable_define",
2069 "levstatement : shuffle_detail",
2070 "levstatement : diggable_detail",
2071 "levstatement : door_detail",
2072 "levstatement : drawbridge_detail",
2073 "levstatement : engraving_detail",
2074 "levstatement : mineralize",
2075 "levstatement : fountain_detail",
2076 "levstatement : gold_detail",
2077 "levstatement : switchstatement",
2078 "levstatement : forstatement",
2079 "levstatement : loopstatement",
2080 "levstatement : ifstatement",
2081 "levstatement : chancestatement",
2082 "levstatement : exitstatement",
2083 "levstatement : breakstatement",
2084 "levstatement : function_define",
2085 "levstatement : function_call",
2086 "levstatement : ladder_detail",
2087 "levstatement : map_definition",
2088 "levstatement : mazewalk_detail",
2089 "levstatement : monster_detail",
2090 "levstatement : object_detail",
2091 "levstatement : passwall_detail",
2092 "levstatement : pool_detail",
2093 "levstatement : portal_region",
2094 "levstatement : random_corridors",
2095 "levstatement : region_detail",
2096 "levstatement : room_def",
2097 "levstatement : subroom_def",
2098 "levstatement : sink_detail",
2099 "levstatement : terrain_detail",
2100 "levstatement : replace_terrain_detail",
2101 "levstatement : stair_detail",
2102 "levstatement : stair_region",
2103 "levstatement : teleprt_region",
2104 "levstatement : trap_detail",
2105 "levstatement : wallify_detail",
2106 "any_var_array : VARSTRING_INT_ARRAY",
2107 "any_var_array : VARSTRING_STRING_ARRAY",
2108 "any_var_array : VARSTRING_VAR_ARRAY",
2109 "any_var_array : VARSTRING_COORD_ARRAY",
2110 "any_var_array : VARSTRING_REGION_ARRAY",
2111 "any_var_array : VARSTRING_MAPCHAR_ARRAY",
2112 "any_var_array : VARSTRING_MONST_ARRAY",
2113 "any_var_array : VARSTRING_OBJ_ARRAY",
2114 "any_var_array : VARSTRING_SEL_ARRAY",
2115 "any_var : VARSTRING_INT",
2116 "any_var : VARSTRING_STRING",
2117 "any_var : VARSTRING_VAR",
2118 "any_var : VARSTRING_COORD",
2119 "any_var : VARSTRING_REGION",
2120 "any_var : VARSTRING_MAPCHAR",
2121 "any_var : VARSTRING_MONST",
2122 "any_var : VARSTRING_OBJ",
2123 "any_var : VARSTRING_SEL",
2124 "any_var_or_arr : any_var_array",
2125 "any_var_or_arr : any_var",
2126 "any_var_or_arr : VARSTRING",
2127 "any_var_or_unk : VARSTRING",
2128 "any_var_or_unk : any_var",
2129 "shuffle_detail : SHUFFLE_ID ':' any_var_array",
2130 "variable_define : any_var_or_arr '=' math_expr_var",
2131 "variable_define : any_var_or_arr '=' selection_ID ':' ter_selection",
2132 "variable_define : any_var_or_arr '=' string_expr",
2133 "variable_define : any_var_or_arr '=' terrainid ':' mapchar_or_var",
2134 "variable_define : any_var_or_arr '=' monsterid ':' monster_or_var",
2135 "variable_define : any_var_or_arr '=' objectid ':' object_or_var",
2136 "variable_define : any_var_or_arr '=' coord_or_var",
2137 "variable_define : any_var_or_arr '=' region_or_var",
2138 "variable_define : any_var_or_arr '=' '{' integer_list '}'",
2139 "variable_define : any_var_or_arr '=' '{' encodecoord_list '}'",
2140 "variable_define : any_var_or_arr '=' '{' encoderegion_list '}'",
2141 "variable_define : any_var_or_arr '=' terrainid ':' '{' mapchar_list '}'",
2142 "variable_define : any_var_or_arr '=' monsterid ':' '{' encodemonster_list '}'",
2143 "variable_define : any_var_or_arr '=' objectid ':' '{' encodeobj_list '}'",
2144 "variable_define : any_var_or_arr '=' '{' string_list '}'",
2145 "encodeobj_list : encodeobj",
2146 "encodeobj_list : encodeobj_list ',' encodeobj",
2147 "encodemonster_list : encodemonster",
2148 "encodemonster_list : encodemonster_list ',' encodemonster",
2149 "mapchar_list : mapchar",
2150 "mapchar_list : mapchar_list ',' mapchar",
2151 "encoderegion_list : encoderegion",
2152 "encoderegion_list : encoderegion_list ',' encoderegion",
2153 "encodecoord_list : encodecoord",
2154 "encodecoord_list : encodecoord_list ',' encodecoord",
2155 "integer_list : math_expr_var",
2156 "integer_list : integer_list ',' math_expr_var",
2157 "string_list : string_expr",
2158 "string_list : string_list ',' string_expr",
2159 "$$1 :",
2160 "$$2 :",
2161 "function_define : FUNCTION_ID NQSTRING '(' $$1 func_params_list ')' $$2 stmt_block",
2162 "function_call : NQSTRING '(' func_call_params_list ')'",
2163 "exitstatement : EXIT_ID",
2164 "opt_percent :",
2165 "opt_percent : PERCENT",
2166 "comparestmt : PERCENT",
2167 "comparestmt : '[' math_expr_var COMPARE_TYPE math_expr_var ']'",
2168 "comparestmt : '[' math_expr_var ']'",
2169 "$$3 :",
2170 "$$4 :",
2171 "switchstatement : SWITCH_ID $$3 '[' integer_or_var ']' $$4 '{' switchcases '}'",
2172 "switchcases :",
2173 "switchcases : switchcase switchcases",
2174 "$$5 :",
2175 "switchcase : CASE_ID all_integers ':' $$5 levstatements",
2176 "$$6 :",
2177 "switchcase : DEFAULT_ID ':' $$6 levstatements",
2178 "breakstatement : BREAK_ID",
2179 "for_to_span : '.' '.'",
2180 "for_to_span : TO_ID",
2181 "forstmt_start : FOR_ID any_var_or_unk '=' math_expr_var for_to_span math_expr_var",
2182 "$$7 :",
2183 "forstatement : forstmt_start $$7 stmt_block",
2184 "$$8 :",
2185 "loopstatement : LOOP_ID '[' integer_or_var ']' $$8 stmt_block",
2186 "$$9 :",
2187 "chancestatement : comparestmt ':' $$9 levstatement",
2188 "$$10 :",
2189 "ifstatement : IF_ID comparestmt $$10 if_ending",
2190 "if_ending : stmt_block",
2191 "$$11 :",
2192 "if_ending : stmt_block $$11 ELSE_ID stmt_block",
2193 "message : MESSAGE_ID ':' string_expr",
2194 "random_corridors : RAND_CORRIDOR_ID",
2195 "random_corridors : RAND_CORRIDOR_ID ':' all_integers",
2196 "random_corridors : RAND_CORRIDOR_ID ':' RANDOM_TYPE",
2197 "corridor : CORRIDOR_ID ':' corr_spec ',' corr_spec",
2198 "corridor : CORRIDOR_ID ':' corr_spec ',' all_integers",
2199 "corr_spec : '(' INTEGER ',' DIRECTION ',' door_pos ')'",
2200 "room_begin : room_type opt_percent ',' light_state",
2201 "$$12 :",
2202 "subroom_def : SUBROOM_ID ':' room_begin ',' subroom_pos ',' room_size optroomregionflags $$12 stmt_block",
2203 "$$13 :",
2204 "room_def : ROOM_ID ':' room_begin ',' room_pos ',' room_align ',' room_size optroomregionflags $$13 stmt_block",
2205 "roomfill :",
2206 "roomfill : ',' BOOLEAN",
2207 "room_pos : '(' INTEGER ',' INTEGER ')'",
2208 "room_pos : RANDOM_TYPE",
2209 "subroom_pos : '(' INTEGER ',' INTEGER ')'",
2210 "subroom_pos : RANDOM_TYPE",
2211 "room_align : '(' h_justif ',' v_justif ')'",
2212 "room_align : RANDOM_TYPE",
2213 "room_size : '(' INTEGER ',' INTEGER ')'",
2214 "room_size : RANDOM_TYPE",
2215 "door_detail : ROOMDOOR_ID ':' secret ',' door_state ',' door_wall ',' door_pos",
2216 "door_detail : DOOR_ID ':' door_state ',' ter_selection",
2217 "secret : BOOLEAN",
2218 "secret : RANDOM_TYPE",
2219 "door_wall : dir_list",
2220 "door_wall : RANDOM_TYPE",
2221 "dir_list : DIRECTION",
2222 "dir_list : DIRECTION '|' dir_list",
2223 "door_pos : INTEGER",
2224 "door_pos : RANDOM_TYPE",
2225 "map_definition : NOMAP_ID",
2226 "map_definition : GEOMETRY_ID ':' h_justif ',' v_justif roomfill MAP_ID",
2227 "map_definition : GEOMETRY_ID ':' coord_or_var roomfill MAP_ID",
2228 "h_justif : LEFT_OR_RIGHT",
2229 "h_justif : CENTER",
2230 "v_justif : TOP_OR_BOT",
2231 "v_justif : CENTER",
2232 "monster_detail : MONSTER_ID ':' monster_desc",
2233 "$$14 :",
2234 "monster_detail : MONSTER_ID ':' monster_desc $$14 stmt_block",
2235 "monster_desc : monster_or_var ',' coord_or_var monster_infos",
2236 "monster_infos :",
2237 "monster_infos : monster_infos ',' monster_info",
2238 "monster_info : string_expr",
2239 "monster_info : MON_ATTITUDE",
2240 "monster_info : MON_ALERTNESS",
2241 "monster_info : alignment_prfx",
2242 "monster_info : MON_APPEARANCE string_expr",
2243 "monster_info : FEMALE_ID",
2244 "monster_info : INVIS_ID",
2245 "monster_info : CANCELLED_ID",
2246 "monster_info : REVIVED_ID",
2247 "monster_info : AVENGE_ID",
2248 "monster_info : FLEEING_ID ':' integer_or_var",
2249 "monster_info : BLINDED_ID ':' integer_or_var",
2250 "monster_info : PARALYZED_ID ':' integer_or_var",
2251 "monster_info : STUNNED_ID",
2252 "monster_info : CONFUSED_ID",
2253 "monster_info : SEENTRAPS_ID ':' seen_trap_mask",
2254 "seen_trap_mask : STRING",
2255 "seen_trap_mask : ALL_ID",
2256 "seen_trap_mask : STRING '|' seen_trap_mask",
2257 "object_detail : OBJECT_ID ':' object_desc",
2258 "$$15 :",
2259 "object_detail : COBJECT_ID ':' object_desc $$15 stmt_block",
2260 "object_desc : object_or_var object_infos",
2261 "object_infos :",
2262 "object_infos : object_infos ',' object_info",
2263 "object_info : CURSE_TYPE",
2264 "object_info : MONTYPE_ID ':' monster_or_var",
2265 "object_info : all_ints_push",
2266 "object_info : NAME_ID ':' string_expr",
2267 "object_info : QUANTITY_ID ':' integer_or_var",
2268 "object_info : BURIED_ID",
2269 "object_info : LIGHT_STATE",
2270 "object_info : ERODED_ID ':' integer_or_var",
2271 "object_info : ERODEPROOF_ID",
2272 "object_info : DOOR_STATE",
2273 "object_info : TRAPPED_STATE",
2274 "object_info : RECHARGED_ID ':' integer_or_var",
2275 "object_info : INVIS_ID",
2276 "object_info : GREASED_ID",
2277 "object_info : coord_or_var",
2278 "trap_detail : TRAP_ID ':' trap_name ',' coord_or_var",
2279 "drawbridge_detail : DRAWBRIDGE_ID ':' coord_or_var ',' DIRECTION ',' door_state",
2280 "mazewalk_detail : MAZEWALK_ID ':' coord_or_var ',' DIRECTION",
2281 "mazewalk_detail : MAZEWALK_ID ':' coord_or_var ',' DIRECTION ',' BOOLEAN opt_fillchar",
2282 "wallify_detail : WALLIFY_ID",
2283 "wallify_detail : WALLIFY_ID ':' ter_selection",
2284 "ladder_detail : LADDER_ID ':' coord_or_var ',' UP_OR_DOWN",
2285 "stair_detail : STAIR_ID ':' coord_or_var ',' UP_OR_DOWN",
2286 "stair_region : STAIR_ID ':' lev_region ',' lev_region ',' UP_OR_DOWN",
2287 "portal_region : PORTAL_ID ':' lev_region ',' lev_region ',' STRING",
2288 "teleprt_region : TELEPRT_ID ':' lev_region ',' lev_region teleprt_detail",
2289 "branch_region : BRANCH_ID ':' lev_region ',' lev_region",
2290 "teleprt_detail :",
2291 "teleprt_detail : ',' UP_OR_DOWN",
2292 "fountain_detail : FOUNTAIN_ID ':' ter_selection",
2293 "sink_detail : SINK_ID ':' ter_selection",
2294 "pool_detail : POOL_ID ':' ter_selection",
2295 "terrain_type : CHAR",
2296 "terrain_type : '(' CHAR ',' light_state ')'",
2297 "replace_terrain_detail : REPLACE_TERRAIN_ID ':' region_or_var ',' mapchar_or_var ',' mapchar_or_var ',' SPERCENT",
2298 "terrain_detail : TERRAIN_ID ':' ter_selection ',' mapchar_or_var",
2299 "diggable_detail : NON_DIGGABLE_ID ':' region_or_var",
2300 "passwall_detail : NON_PASSWALL_ID ':' region_or_var",
2301 "$$16 :",
2302 "region_detail : REGION_ID ':' region_or_var ',' light_state ',' room_type optroomregionflags $$16 region_detail_end",
2303 "region_detail_end :",
2304 "region_detail_end : stmt_block",
2305 "altar_detail : ALTAR_ID ':' coord_or_var ',' alignment ',' altar_type",
2306 "grave_detail : GRAVE_ID ':' coord_or_var ',' string_expr",
2307 "grave_detail : GRAVE_ID ':' coord_or_var ',' RANDOM_TYPE",
2308 "grave_detail : GRAVE_ID ':' coord_or_var",
2309 "gold_detail : GOLD_ID ':' math_expr_var ',' coord_or_var",
2310 "engraving_detail : ENGRAVING_ID ':' coord_or_var ',' engraving_type ',' string_expr",
2311 "mineralize : MINERALIZE_ID ':' integer_or_var ',' integer_or_var ',' integer_or_var ',' integer_or_var",
2312 "mineralize : MINERALIZE_ID",
2313 "trap_name : STRING",
2314 "trap_name : RANDOM_TYPE",
2315 "room_type : STRING",
2316 "room_type : RANDOM_TYPE",
2317 "optroomregionflags :",
2318 "optroomregionflags : ',' roomregionflags",
2319 "roomregionflags : roomregionflag",
2320 "roomregionflags : roomregionflag ',' roomregionflags",
2321 "roomregionflag : FILLING",
2322 "roomregionflag : IRREGULAR",
2323 "roomregionflag : JOINED",
2324 "door_state : DOOR_STATE",
2325 "door_state : RANDOM_TYPE",
2326 "light_state : LIGHT_STATE",
2327 "light_state : RANDOM_TYPE",
2328 "alignment : ALIGNMENT",
2329 "alignment : a_register",
2330 "alignment : RANDOM_TYPE",
2331 "alignment_prfx : ALIGNMENT",
2332 "alignment_prfx : a_register",
2333 "alignment_prfx : A_REGISTER ':' RANDOM_TYPE",
2334 "altar_type : ALTAR_TYPE",
2335 "altar_type : RANDOM_TYPE",
2336 "a_register : A_REGISTER '[' INTEGER ']'",
2337 "string_or_var : STRING",
2338 "string_or_var : VARSTRING_STRING",
2339 "string_or_var : VARSTRING_STRING_ARRAY '[' math_expr_var ']'",
2340 "integer_or_var : math_expr_var",
2341 "coord_or_var : encodecoord",
2342 "coord_or_var : rndcoord_ID '(' ter_selection ')'",
2343 "coord_or_var : VARSTRING_COORD",
2344 "coord_or_var : VARSTRING_COORD_ARRAY '[' math_expr_var ']'",
2345 "encodecoord : '(' INTEGER ',' INTEGER ')'",
2346 "encodecoord : RANDOM_TYPE",
2347 "encodecoord : RANDOM_TYPE_BRACKET humidity_flags ']'",
2348 "humidity_flags : HUMIDITY_TYPE",
2349 "humidity_flags : HUMIDITY_TYPE ',' humidity_flags",
2350 "region_or_var : encoderegion",
2351 "region_or_var : VARSTRING_REGION",
2352 "region_or_var : VARSTRING_REGION_ARRAY '[' math_expr_var ']'",
2353 "encoderegion : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2354 "mapchar_or_var : mapchar",
2355 "mapchar_or_var : VARSTRING_MAPCHAR",
2356 "mapchar_or_var : VARSTRING_MAPCHAR_ARRAY '[' math_expr_var ']'",
2357 "mapchar : CHAR",
2358 "mapchar : '(' CHAR ',' light_state ')'",
2359 "monster_or_var : encodemonster",
2360 "monster_or_var : VARSTRING_MONST",
2361 "monster_or_var : VARSTRING_MONST_ARRAY '[' math_expr_var ']'",
2362 "encodemonster : STRING",
2363 "encodemonster : CHAR",
2364 "encodemonster : '(' CHAR ',' STRING ')'",
2365 "encodemonster : RANDOM_TYPE",
2366 "object_or_var : encodeobj",
2367 "object_or_var : VARSTRING_OBJ",
2368 "object_or_var : VARSTRING_OBJ_ARRAY '[' math_expr_var ']'",
2369 "encodeobj : STRING",
2370 "encodeobj : CHAR",
2371 "encodeobj : '(' CHAR ',' STRING ')'",
2372 "encodeobj : RANDOM_TYPE",
2373 "string_expr : string_or_var",
2374 "string_expr : string_expr '.' string_or_var",
2375 "math_expr_var : INTEGER",
2376 "math_expr_var : dice",
2377 "math_expr_var : '(' MINUS_INTEGER ')'",
2378 "math_expr_var : VARSTRING_INT",
2379 "math_expr_var : VARSTRING_INT_ARRAY '[' math_expr_var ']'",
2380 "math_expr_var : math_expr_var '+' math_expr_var",
2381 "math_expr_var : math_expr_var '-' math_expr_var",
2382 "math_expr_var : math_expr_var '*' 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 ')'",
2386 "func_param_type : CFUNC_INT",
2387 "func_param_type : CFUNC_STR",
2388 "func_param_part : any_var_or_arr ':' func_param_type",
2389 "func_param_list : func_param_part",
2390 "func_param_list : func_param_list ',' func_param_part",
2391 "func_params_list :",
2392 "func_params_list : func_param_list",
2393 "func_call_param_part : math_expr_var",
2394 "func_call_param_part : string_expr",
2395 "func_call_param_list : func_call_param_part",
2396 "func_call_param_list : func_call_param_list ',' func_call_param_part",
2397 "func_call_params_list :",
2398 "func_call_params_list : func_call_param_list",
2399 "ter_selection_x : coord_or_var",
2400 "ter_selection_x : rect_ID region_or_var",
2401 "ter_selection_x : fillrect_ID region_or_var",
2402 "ter_selection_x : line_ID coord_or_var ',' coord_or_var",
2403 "ter_selection_x : randline_ID coord_or_var ',' coord_or_var ',' math_expr_var",
2404 "ter_selection_x : grow_ID '(' ter_selection ')'",
2405 "ter_selection_x : grow_ID '(' dir_list ',' ter_selection ')'",
2406 "ter_selection_x : filter_ID '(' SPERCENT ',' ter_selection ')'",
2407 "ter_selection_x : filter_ID '(' ter_selection ',' ter_selection ')'",
2408 "ter_selection_x : filter_ID '(' mapchar_or_var ',' ter_selection ')'",
2409 "ter_selection_x : flood_ID coord_or_var",
2410 "ter_selection_x : circle_ID '(' coord_or_var ',' math_expr_var ')'",
2411 "ter_selection_x : circle_ID '(' coord_or_var ',' math_expr_var ',' FILLING ')'",
2412 "ter_selection_x : ellipse_ID '(' coord_or_var ',' math_expr_var ',' math_expr_var ')'",
2413 "ter_selection_x : ellipse_ID '(' coord_or_var ',' math_expr_var ',' math_expr_var ',' FILLING ')'",
2414 "ter_selection_x : gradient_ID '(' GRADIENT_TYPE ',' '(' math_expr_var '-' math_expr_var opt_limited ')' ',' coord_or_var opt_coord_or_var ')'",
2415 "ter_selection_x : complement_ID ter_selection_x",
2416 "ter_selection_x : VARSTRING_SEL",
2417 "ter_selection_x : '(' ter_selection ')'",
2418 "ter_selection : ter_selection_x",
2419 "ter_selection : ter_selection_x '&' ter_selection",
2420 "dice : DICE",
2421 "all_integers : MINUS_INTEGER",
2422 "all_integers : PLUS_INTEGER",
2423 "all_integers : INTEGER",
2424 "all_ints_push : MINUS_INTEGER",
2425 "all_ints_push : PLUS_INTEGER",
2426 "all_ints_push : INTEGER",
2427 "all_ints_push : dice",
2428 "objectid : object_ID",
2429 "objectid : OBJECT_ID",
2430 "monsterid : monster_ID",
2431 "monsterid : MONSTER_ID",
2432 "terrainid : terrain_ID",
2433 "terrainid : TERRAIN_ID",
2434 "engraving_type : ENGRAVING_TYPE",
2435 "engraving_type : RANDOM_TYPE",
2436 "lev_region : region",
2437 "lev_region : LEV '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2438 "region : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2439 };
2440 #endif
2441 #ifdef YYSTACKSIZE
2442 #undef YYMAXDEPTH
2443 #define YYMAXDEPTH YYSTACKSIZE
2444 #else
2445 #ifdef YYMAXDEPTH
2446 #define YYSTACKSIZE YYMAXDEPTH
2447 #else
2448 #define YYSTACKSIZE 500
2449 #define YYMAXDEPTH 500
2450 #endif
2451 #endif
2452 int yydebug;
2453 int yynerrs;
2454 int yyerrflag;
2455 int yychar;
2456 short *yyssp;
2457 YYSTYPE *yyvsp;
2458 YYSTYPE yyval;
2459 YYSTYPE yylval;
2460 short yyss[YYSTACKSIZE];
2461 YYSTYPE yyvs[YYSTACKSIZE];
2462 #define yystacksize YYSTACKSIZE
2463
2464 /*lev_comp.y*/
2465 #define YYABORT goto yyabort
2466 #define YYREJECT goto yyabort
2467 #define YYACCEPT goto yyaccept
2468 #define YYERROR goto yyerrlab
2469 int
2470 yyparse()
2471 {
2472     register int yym, yyn, yystate;
2473 #if YYDEBUG
2474     register char *yys;
2475     extern char *getenv();
2476
2477     if ((yys = getenv("YYDEBUG")) != 0)
2478     {
2479         yyn = *yys;
2480         if (yyn >= '0' && yyn <= '9')
2481             yydebug = yyn - '0';
2482     }
2483 #endif
2484
2485     yynerrs = 0;
2486     yyerrflag = 0;
2487     yychar = (-1);
2488
2489     yyssp = yyss;
2490     yyvsp = yyvs;
2491     *yyssp = yystate = 0;
2492
2493 yyloop:
2494     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
2495     if (yychar < 0)
2496     {
2497         if ((yychar = yylex()) < 0) yychar = 0;
2498 #if YYDEBUG
2499         if (yydebug)
2500         {
2501             yys = 0;
2502             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
2503             if (!yys) yys = "illegal-symbol";
2504             printf("%sdebug: state %d, reading %d (%s)\n",
2505                     YYPREFIX, yystate, yychar, yys);
2506         }
2507 #endif
2508     }
2509     if ((yyn = yysindex[yystate]) != 0 && (yyn += yychar) >= 0 &&
2510             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
2511     {
2512 #if YYDEBUG
2513         if (yydebug)
2514             printf("%sdebug: state %d, shifting to state %d\n",
2515                     YYPREFIX, yystate, yytable[yyn]);
2516 #endif
2517         if (yyssp >= yyss + yystacksize - 1)
2518         {
2519             goto yyoverflow;
2520         }
2521         *++yyssp = yystate = yytable[yyn];
2522         *++yyvsp = yylval;
2523         yychar = (-1);
2524         if (yyerrflag > 0)  --yyerrflag;
2525         goto yyloop;
2526     }
2527     if ((yyn = yyrindex[yystate]) != 0 && (yyn += yychar) >= 0 &&
2528             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
2529     {
2530         yyn = yytable[yyn];
2531         goto yyreduce;
2532     }
2533     if (yyerrflag) goto yyinrecovery;
2534     goto yynewerror;
2535 yynewerror:
2536     yyerror("syntax error");
2537     goto yyerrlab;
2538 yyerrlab:
2539     ++yynerrs;
2540 yyinrecovery:
2541     if (yyerrflag < 3)
2542     {
2543         yyerrflag = 3;
2544         for (;;)
2545         {
2546             if ((yyn = yysindex[*yyssp]) != 0 && (yyn += YYERRCODE) >= 0 &&
2547                     yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
2548             {
2549 #if YYDEBUG
2550                 if (yydebug)
2551                     printf("%sdebug: state %d, error recovery shifting\
2552  to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
2553 #endif
2554                 if (yyssp >= yyss + yystacksize - 1)
2555                 {
2556                     goto yyoverflow;
2557                 }
2558                 *++yyssp = yystate = yytable[yyn];
2559                 *++yyvsp = yylval;
2560                 goto yyloop;
2561             }
2562             else
2563             {
2564 #if YYDEBUG
2565                 if (yydebug)
2566                     printf("%sdebug: error recovery discarding state %d\n",
2567                             YYPREFIX, *yyssp);
2568 #endif
2569                 if (yyssp <= yyss) goto yyabort;
2570                 --yyssp;
2571                 --yyvsp;
2572             }
2573         }
2574     }
2575     else
2576     {
2577         if (yychar == 0) goto yyabort;
2578 #if YYDEBUG
2579         if (yydebug)
2580         {
2581             yys = 0;
2582             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
2583             if (!yys) yys = "illegal-symbol";
2584             printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
2585                     YYPREFIX, yystate, yychar, yys);
2586         }
2587 #endif
2588         yychar = (-1);
2589         goto yyloop;
2590     }
2591 yyreduce:
2592 #if YYDEBUG
2593     if (yydebug)
2594         printf("%sdebug: state %d, reducing by rule %d (%s)\n",
2595                 YYPREFIX, yystate, yyn, yyrule[yyn]);
2596 #endif
2597     yym = yylen[yyn];
2598     yyval = yyvsp[1-yym];
2599     switch (yyn)
2600     {
2601 case 5:
2602 {
2603                         if (fatal_error > 0) {
2604                                 (void) fprintf(stderr,
2605                                 "%s: %d errors detected for level \"%s\". No output created!\n",
2606                                                fname, fatal_error, yyvsp[-2].map);
2607                                 fatal_error = 0;
2608                                 got_errors++;
2609                         } else if (!got_errors) {
2610                                 if (!write_level_file(yyvsp[-2].map, splev)) {
2611                                     lc_error("Can't write output file for '%s'!", yyvsp[-2].map);
2612                                     exit(EXIT_FAILURE);
2613                                 }
2614                         }
2615                         Free(yyvsp[-2].map);
2616                         Free(splev);
2617                         splev = NULL;
2618                         vardef_free_all(variable_definitions);
2619                         variable_definitions = NULL;
2620                   }
2621 break;
2622 case 6:
2623 {
2624                       start_level_def(&splev, yyvsp[0].map);
2625                       yyval.map = yyvsp[0].map;
2626                   }
2627 break;
2628 case 7:
2629 {
2630                       start_level_def(&splev, yyvsp[-2].map);
2631                       if (yyvsp[0].i == -1) {
2632                           add_opvars(splev, "iiiiiiiio",
2633                                      VA_PASS9(LVLINIT_MAZEGRID,HWALL,0,0,
2634                                               0,0,0,0, SPO_INITLEVEL));
2635                       } else {
2636                           long bg = what_map_char((char) yyvsp[0].i);
2637                           add_opvars(splev, "iiiiiiiio",
2638                                      VA_PASS9(LVLINIT_SOLIDFILL, bg, 0,0,
2639                                               0,0,0,0, SPO_INITLEVEL));
2640                       }
2641                       add_opvars(splev, "io",
2642                                  VA_PASS2(MAZELEVEL, SPO_LEVEL_FLAGS));
2643                       max_x_map = COLNO-1;
2644                       max_y_map = ROWNO;
2645                       yyval.map = yyvsp[-2].map;
2646                   }
2647 break;
2648 case 8:
2649 {
2650                       yyval.i = -1;
2651                   }
2652 break;
2653 case 9:
2654 {
2655                       yyval.i = what_map_char((char) yyvsp[0].i);
2656                   }
2657 break;
2658 case 10:
2659 {
2660                       long filling = yyvsp[0].terr.ter;
2661                       if (filling == INVALID_TYPE || filling >= MAX_TYPE)
2662                           lc_error("INIT_MAP: Invalid fill char type.");
2663                       add_opvars(splev, "iiiiiiiio",
2664                                  LVLINIT_SOLIDFILL,filling,0,(long)yyvsp[0].terr.lit, 0,0,0,0, SPO_INITLEVEL);
2665                       max_x_map = COLNO-1;
2666                       max_y_map = ROWNO;
2667                   }
2668 break;
2669 case 11:
2670 {
2671                       long filling = what_map_char((char) yyvsp[0].i);
2672                       if (filling == INVALID_TYPE || filling >= MAX_TYPE)
2673                           lc_error("INIT_MAP: Invalid fill char type.");
2674                       add_opvars(splev, "iiiiiiiio",
2675                                  VA_PASS9(LVLINIT_MAZEGRID,filling,0,0,
2676                                           0,0,0,0, SPO_INITLEVEL));
2677                       max_x_map = COLNO-1;
2678                       max_y_map = ROWNO;
2679                   }
2680 break;
2681 case 12:
2682 {
2683                       add_opvars(splev, "iiiiiiiio",
2684                                  VA_PASS9(LVLINIT_ROGUE,0,0,0,
2685                                           0,0,0,0, SPO_INITLEVEL));
2686                   }
2687 break;
2688 case 13:
2689 {
2690                       long fg = what_map_char((char) yyvsp[-11].i);
2691                       long bg = what_map_char((char) yyvsp[-9].i);
2692                       long smoothed = yyvsp[-7].i;
2693                       long joined = yyvsp[-5].i;
2694                       long lit = yyvsp[-3].i;
2695                       long walled = yyvsp[-1].i;
2696                       long filling = yyvsp[0].i;
2697                       if (fg == INVALID_TYPE || fg >= MAX_TYPE)
2698                           lc_error("INIT_MAP: Invalid foreground type.");
2699                       if (bg == INVALID_TYPE || bg >= MAX_TYPE)
2700                           lc_error("INIT_MAP: Invalid background type.");
2701                       if (joined && fg != CORR && fg != ROOM)
2702                           lc_error("INIT_MAP: Invalid foreground type for joined map.");
2703
2704                       if (filling == INVALID_TYPE)
2705                           lc_error("INIT_MAP: Invalid fill char type.");
2706
2707                       add_opvars(splev, "iiiiiiiio",
2708                                  VA_PASS9(LVLINIT_MINES,filling,walled,lit,
2709                                           joined,smoothed,bg,fg,
2710                                           SPO_INITLEVEL));
2711                         max_x_map = COLNO-1;
2712                         max_y_map = ROWNO;
2713                   }
2714 break;
2715 case 14:
2716 {
2717                       yyval.i = 0;
2718                   }
2719 break;
2720 case 15:
2721 {
2722                       yyval.i = yyvsp[0].i;
2723                   }
2724 break;
2725 case 16:
2726 {
2727                       add_opvars(splev, "o", VA_PASS1(SPO_COPY));
2728                       yyval.i = 0;
2729                   }
2730 break;
2731 case 17:
2732 {
2733                       yyval.i = 1;
2734                   }
2735 break;
2736 case 18:
2737 {
2738                       yyval.i = -1;
2739                   }
2740 break;
2741 case 19:
2742 {
2743                       yyval.i = what_map_char((char) yyvsp[0].i);
2744                   }
2745 break;
2746 case 22:
2747 {
2748                       add_opvars(splev, "io", VA_PASS2(0, SPO_LEVEL_FLAGS));
2749                   }
2750 break;
2751 case 23:
2752 {
2753                       add_opvars(splev, "io", VA_PASS2(yyvsp[0].i, SPO_LEVEL_FLAGS));
2754                   }
2755 break;
2756 case 24:
2757 {
2758                       yyval.i = (yyvsp[-2].i | yyvsp[0].i);
2759                   }
2760 break;
2761 case 25:
2762 {
2763                       yyval.i = yyvsp[0].i;
2764                   }
2765 break;
2766 case 26:
2767 {
2768                       yyval.i = 0;
2769                   }
2770 break;
2771 case 27:
2772 {
2773                       yyval.i = 1 + yyvsp[0].i;
2774                   }
2775 break;
2776 case 28:
2777 {
2778                       yyval.i = yyvsp[-1].i;
2779                   }
2780 break;
2781 case 96:
2782 {
2783                       struct lc_vardefs *vd;
2784                       if ((vd = vardef_defined(variable_definitions, yyvsp[0].map, 1))) {
2785                           if (!(vd->var_type & SPOVAR_ARRAY))
2786                               lc_error("Trying to shuffle non-array variable '%s'", yyvsp[0].map);
2787                       } else lc_error("Trying to shuffle undefined variable '%s'", yyvsp[0].map);
2788                       add_opvars(splev, "so", VA_PASS2(yyvsp[0].map, SPO_SHUFFLE_ARRAY));
2789                       Free(yyvsp[0].map);
2790                   }
2791 break;
2792 case 97:
2793 {
2794                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_INT);
2795                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2796                       Free(yyvsp[-2].map);
2797                   }
2798 break;
2799 case 98:
2800 {
2801                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_SEL);
2802                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2803                       Free(yyvsp[-4].map);
2804                   }
2805 break;
2806 case 99:
2807 {
2808                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_STRING);
2809                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2810                       Free(yyvsp[-2].map);
2811                   }
2812 break;
2813 case 100:
2814 {
2815                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_MAPCHAR);
2816                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2817                       Free(yyvsp[-4].map);
2818                   }
2819 break;
2820 case 101:
2821 {
2822                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_MONST);
2823                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2824                       Free(yyvsp[-4].map);
2825                   }
2826 break;
2827 case 102:
2828 {
2829                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_OBJ);
2830                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2831                       Free(yyvsp[-4].map);
2832                   }
2833 break;
2834 case 103:
2835 {
2836                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_COORD);
2837                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2838                       Free(yyvsp[-2].map);
2839                   }
2840 break;
2841 case 104:
2842 {
2843                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_REGION);
2844                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2845                       Free(yyvsp[-2].map);
2846                   }
2847 break;
2848 case 105:
2849 {
2850                       long n_items = yyvsp[-1].i;
2851                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_INT|SPOVAR_ARRAY);
2852                       add_opvars(splev, "iso",
2853                                  VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2854                       Free(yyvsp[-4].map);
2855                   }
2856 break;
2857 case 106:
2858 {
2859                       long n_items = yyvsp[-1].i;
2860                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_COORD|SPOVAR_ARRAY);
2861                       add_opvars(splev, "iso",
2862                                  VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2863                       Free(yyvsp[-4].map);
2864                   }
2865 break;
2866 case 107:
2867 {
2868                       long n_items = yyvsp[-1].i;
2869                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_REGION|SPOVAR_ARRAY);
2870                       add_opvars(splev, "iso",
2871                                  VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2872                       Free(yyvsp[-4].map);
2873                   }
2874 break;
2875 case 108:
2876 {
2877                       long n_items = yyvsp[-1].i;
2878                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-6].map, SPOVAR_MAPCHAR|SPOVAR_ARRAY);
2879                       add_opvars(splev, "iso",
2880                                  VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
2881                       Free(yyvsp[-6].map);
2882                   }
2883 break;
2884 case 109:
2885 {
2886                       long n_items = yyvsp[-1].i;
2887                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-6].map, SPOVAR_MONST|SPOVAR_ARRAY);
2888                       add_opvars(splev, "iso",
2889                                  VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
2890                       Free(yyvsp[-6].map);
2891                   }
2892 break;
2893 case 110:
2894 {
2895                       long n_items = yyvsp[-1].i;
2896                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-6].map, SPOVAR_OBJ|SPOVAR_ARRAY);
2897                       add_opvars(splev, "iso",
2898                                  VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
2899                       Free(yyvsp[-6].map);
2900                   }
2901 break;
2902 case 111:
2903 {
2904                       long n_items = yyvsp[-1].i;
2905                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_STRING|SPOVAR_ARRAY);
2906                       add_opvars(splev, "iso",
2907                                  VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2908                       Free(yyvsp[-4].map);
2909                   }
2910 break;
2911 case 112:
2912 {
2913                       add_opvars(splev, "O", VA_PASS1(yyvsp[0].i));
2914                       yyval.i = 1;
2915                   }
2916 break;
2917 case 113:
2918 {
2919                       add_opvars(splev, "O", VA_PASS1(yyvsp[0].i));
2920                       yyval.i = 1 + yyvsp[-2].i;
2921                   }
2922 break;
2923 case 114:
2924 {
2925                       add_opvars(splev, "M", VA_PASS1(yyvsp[0].i));
2926                       yyval.i = 1;
2927                   }
2928 break;
2929 case 115:
2930 {
2931                       add_opvars(splev, "M", VA_PASS1(yyvsp[0].i));
2932                       yyval.i = 1 + yyvsp[-2].i;
2933                   }
2934 break;
2935 case 116:
2936 {
2937                       add_opvars(splev, "m", VA_PASS1(yyvsp[0].i));
2938                       yyval.i = 1;
2939                   }
2940 break;
2941 case 117:
2942 {
2943                       add_opvars(splev, "m", VA_PASS1(yyvsp[0].i));
2944                       yyval.i = 1 + yyvsp[-2].i;
2945                   }
2946 break;
2947 case 118:
2948 {
2949                       yyval.i = 1;
2950                   }
2951 break;
2952 case 119:
2953 {
2954                       yyval.i = 1 + yyvsp[-2].i;
2955                   }
2956 break;
2957 case 120:
2958 {
2959                       add_opvars(splev, "c", VA_PASS1(yyvsp[0].i));
2960                       yyval.i = 1;
2961                   }
2962 break;
2963 case 121:
2964 {
2965                       add_opvars(splev, "c", VA_PASS1(yyvsp[0].i));
2966                       yyval.i = 1 + yyvsp[-2].i;
2967                   }
2968 break;
2969 case 122:
2970 {
2971                       yyval.i = 1;
2972                   }
2973 break;
2974 case 123:
2975 {
2976                       yyval.i = 1 + yyvsp[-2].i;
2977                   }
2978 break;
2979 case 124:
2980 {
2981                       yyval.i = 1;
2982                   }
2983 break;
2984 case 125:
2985 {
2986                       yyval.i = 1 + yyvsp[-2].i;
2987                   }
2988 break;
2989 case 126:
2990 {
2991                       struct lc_funcdefs *funcdef;
2992
2993                       if (in_function_definition)
2994                           lc_error("Recursively defined functions not allowed (function %s).", yyvsp[-1].map);
2995
2996                       in_function_definition++;
2997
2998                       if (funcdef_defined(function_definitions, yyvsp[-1].map, 1))
2999                           lc_error("Function '%s' already defined once.", yyvsp[-1].map);
3000
3001                       funcdef = funcdef_new(-1, yyvsp[-1].map);
3002                       funcdef->next = function_definitions;
3003                       function_definitions = funcdef;
3004                       function_splev_backup = splev;
3005                       splev = &(funcdef->code);
3006                       Free(yyvsp[-1].map);
3007                       curr_function = funcdef;
3008                       function_tmp_var_defs = variable_definitions;
3009                       variable_definitions = NULL;
3010                   }
3011 break;
3012 case 127:
3013 {
3014                       /* nothing */
3015                   }
3016 break;
3017 case 128:
3018 {
3019                       add_opvars(splev, "io", VA_PASS2(0, SPO_RETURN));
3020                       splev = function_splev_backup;
3021                       in_function_definition--;
3022                       curr_function = NULL;
3023                       vardef_free_all(variable_definitions);
3024                       variable_definitions = function_tmp_var_defs;
3025                   }
3026 break;
3027 case 129:
3028 {
3029                       struct lc_funcdefs *tmpfunc;
3030                       tmpfunc = funcdef_defined(function_definitions, yyvsp[-3].map, 1);
3031                       if (tmpfunc) {
3032                           long l;
3033                           long nparams = strlen( yyvsp[-1].map );
3034                           char *fparamstr = funcdef_paramtypes(tmpfunc);
3035                           if (strcmp(yyvsp[-1].map, fparamstr)) {
3036                               char *tmps = strdup(decode_parm_str(fparamstr));
3037                               lc_error("Function '%s' requires params '%s', got '%s' instead.", yyvsp[-3].map, tmps, decode_parm_str(yyvsp[-1].map));
3038                               Free(tmps);
3039                           }
3040                           Free(fparamstr);
3041                           Free(yyvsp[-1].map);
3042                           if (!(tmpfunc->n_called)) {
3043                               /* we haven't called the function yet, so insert it in the code */
3044                               struct opvar *jmp = New(struct opvar);
3045                               set_opvar_int(jmp, splev->n_opcodes+1);
3046                               add_opcode(splev, SPO_PUSH, jmp);
3047                               add_opcode(splev, SPO_JMP, NULL); /* we must jump past it first, then CALL it, due to RETURN. */
3048
3049                               tmpfunc->addr = splev->n_opcodes;
3050
3051                               { /* init function parameter variables */
3052                                   struct lc_funcdefs_parm *tfp = tmpfunc->params;
3053                                   while (tfp) {
3054                                       add_opvars(splev, "iso",
3055                                                  VA_PASS3(0, tfp->name,
3056                                                           SPO_VAR_INIT));
3057                                       tfp = tfp->next;
3058                                   }
3059                               }
3060
3061                               splev_add_from(splev, &(tmpfunc->code));
3062                               set_opvar_int(jmp, splev->n_opcodes - jmp->vardata.l);
3063                           }
3064                           l = tmpfunc->addr - splev->n_opcodes - 2;
3065                           add_opvars(splev, "iio",
3066                                      VA_PASS3(nparams, l, SPO_CALL));
3067                           tmpfunc->n_called++;
3068                       } else {
3069                           lc_error("Function '%s' not defined.", yyvsp[-3].map);
3070                       }
3071                       Free(yyvsp[-3].map);
3072                   }
3073 break;
3074 case 130:
3075 {
3076                       add_opcode(splev, SPO_EXIT, NULL);
3077                   }
3078 break;
3079 case 131:
3080 {
3081                       yyval.i = 100;
3082                   }
3083 break;
3084 case 132:
3085 {
3086                       yyval.i = yyvsp[0].i;
3087                   }
3088 break;
3089 case 133:
3090 {
3091                       /* val > rn2(100) */
3092                       add_opvars(splev, "iio",
3093                                  VA_PASS3((long)yyvsp[0].i, 100, SPO_RN2));
3094                       yyval.i = SPO_JG;
3095                   }
3096 break;
3097 case 134:
3098 {
3099                       yyval.i = yyvsp[-2].i;
3100                   }
3101 break;
3102 case 135:
3103 {
3104                       /* boolean, explicit foo != 0 */
3105                       add_opvars(splev, "i", VA_PASS1(0));
3106                       yyval.i = SPO_JNE;
3107                   }
3108 break;
3109 case 136:
3110 {
3111                       is_inconstant_number = 0;
3112                   }
3113 break;
3114 case 137:
3115 {
3116                       struct opvar *chkjmp;
3117                       if (in_switch_statement > 0)
3118                           lc_error("Cannot nest switch-statements.");
3119
3120                       in_switch_statement++;
3121
3122                       n_switch_case_list = 0;
3123                       switch_default_case = NULL;
3124
3125                       if (!is_inconstant_number)
3126                           add_opvars(splev, "o", VA_PASS1(SPO_RN2));
3127                       is_inconstant_number = 0;
3128
3129                       chkjmp = New(struct opvar);
3130                       set_opvar_int(chkjmp, splev->n_opcodes+1);
3131                       switch_check_jump = chkjmp;
3132                       add_opcode(splev, SPO_PUSH, chkjmp);
3133                       add_opcode(splev, SPO_JMP, NULL);
3134                       break_stmt_start();
3135                   }
3136 break;
3137 case 138:
3138 {
3139                       struct opvar *endjump = New(struct opvar);
3140                       int i;
3141
3142                       set_opvar_int(endjump, splev->n_opcodes+1);
3143
3144                       add_opcode(splev, SPO_PUSH, endjump);
3145                       add_opcode(splev, SPO_JMP, NULL);
3146
3147                       set_opvar_int(switch_check_jump,
3148                              splev->n_opcodes - switch_check_jump->vardata.l);
3149
3150                       for (i = 0; i < n_switch_case_list; i++) {
3151                           add_opvars(splev, "oio",
3152                                      VA_PASS3(SPO_COPY,
3153                                               switch_case_value[i], SPO_CMP));
3154                           set_opvar_int(switch_case_list[i],
3155                          switch_case_list[i]->vardata.l - splev->n_opcodes-1);
3156                           add_opcode(splev, SPO_PUSH, switch_case_list[i]);
3157                           add_opcode(splev, SPO_JE, NULL);
3158                       }
3159
3160                       if (switch_default_case) {
3161                           set_opvar_int(switch_default_case,
3162                          switch_default_case->vardata.l - splev->n_opcodes-1);
3163                           add_opcode(splev, SPO_PUSH, switch_default_case);
3164                           add_opcode(splev, SPO_JMP, NULL);
3165                       }
3166
3167                       set_opvar_int(endjump, splev->n_opcodes - endjump->vardata.l);
3168
3169                       break_stmt_end(splev);
3170
3171                       add_opcode(splev, SPO_POP, NULL); /* get rid of the value in stack */
3172                       in_switch_statement--;
3173
3174
3175                   }
3176 break;
3177 case 141:
3178 {
3179                       if (n_switch_case_list < MAX_SWITCH_CASES) {
3180                           struct opvar *tmppush = New(struct opvar);
3181                           set_opvar_int(tmppush, splev->n_opcodes);
3182                           switch_case_value[n_switch_case_list] = yyvsp[-1].i;
3183                           switch_case_list[n_switch_case_list++] = tmppush;
3184                       } else lc_error("Too many cases in a switch.");
3185                   }
3186 break;
3187 case 142:
3188 {
3189                   }
3190 break;
3191 case 143:
3192 {
3193                       struct opvar *tmppush = New(struct opvar);
3194
3195                       if (switch_default_case)
3196                           lc_error("Switch default case already used.");
3197
3198                       set_opvar_int(tmppush, splev->n_opcodes);
3199                       switch_default_case = tmppush;
3200                   }
3201 break;
3202 case 144:
3203 {
3204                   }
3205 break;
3206 case 145:
3207 {
3208                       if (!allow_break_statements)
3209                           lc_error("Cannot use BREAK outside a statement block.");
3210                       else {
3211                           break_stmt_new(splev, splev->n_opcodes);
3212                       }
3213                   }
3214 break;
3215 case 148:
3216 {
3217                       char buf[256], buf2[256];
3218
3219                       if (n_forloops >= MAX_NESTED_IFS) {
3220                           lc_error("FOR: Too deeply nested loops.");
3221                           n_forloops = MAX_NESTED_IFS - 1;
3222                       }
3223
3224                       /* first, define a variable for the for-loop end value */
3225                       snprintf(buf, 255, "%s end", yyvsp[-4].map);
3226                       /* the value of which is already in stack (the 2nd math_expr) */
3227                       add_opvars(splev, "iso", VA_PASS3(0, buf, SPO_VAR_INIT));
3228
3229                       variable_definitions = add_vardef_type(variable_definitions,
3230                                                              yyvsp[-4].map, SPOVAR_INT);
3231                       /* define the for-loop variable. value is in stack (1st math_expr) */
3232                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
3233
3234                       /* calculate value for the loop "step" variable */
3235                       snprintf(buf2, 255, "%s step", yyvsp[-4].map);
3236                       /* end - start */
3237                       add_opvars(splev, "vvo",
3238                                  VA_PASS3(buf, yyvsp[-4].map, SPO_MATH_SUB));
3239                       /* sign of that */
3240                       add_opvars(splev, "o", VA_PASS1(SPO_MATH_SIGN));
3241                       /* save the sign into the step var */
3242                       add_opvars(splev, "iso",
3243                                  VA_PASS3(0, buf2, SPO_VAR_INIT));
3244
3245                       forloop_list[n_forloops].varname = strdup(yyvsp[-4].map);
3246                       forloop_list[n_forloops].jmp_point = splev->n_opcodes;
3247
3248                       n_forloops++;
3249                       Free(yyvsp[-4].map);
3250                   }
3251 break;
3252 case 149:
3253 {
3254                       /* nothing */
3255                       break_stmt_start();
3256                   }
3257 break;
3258 case 150:
3259 {
3260                       char buf[256], buf2[256];
3261                       n_forloops--;
3262                       snprintf(buf, 255, "%s step", forloop_list[n_forloops].varname);
3263                       snprintf(buf2, 255, "%s end", forloop_list[n_forloops].varname);
3264                       /* compare for-loop var to end value */
3265                       add_opvars(splev, "vvo",
3266                                  VA_PASS3(forloop_list[n_forloops].varname,
3267                                           buf2, SPO_CMP));
3268                       /* var + step */
3269                       add_opvars(splev, "vvo",
3270                                 VA_PASS3(buf, forloop_list[n_forloops].varname,
3271                                          SPO_MATH_ADD));
3272                       /* for-loop var = (for-loop var + step) */
3273                       add_opvars(splev, "iso",
3274                                  VA_PASS3(0, forloop_list[n_forloops].varname,
3275                                           SPO_VAR_INIT));
3276                       /* jump back if compared values were not equal */
3277                       add_opvars(splev, "io",
3278                                  VA_PASS2(
3279                     forloop_list[n_forloops].jmp_point - splev->n_opcodes - 1,
3280                                           SPO_JNE));
3281                       Free(forloop_list[n_forloops].varname);
3282                       break_stmt_end(splev);
3283                   }
3284 break;
3285 case 151:
3286 {
3287                       struct opvar *tmppush = New(struct opvar);
3288
3289                       if (n_if_list >= MAX_NESTED_IFS) {
3290                           lc_error("LOOP: Too deeply nested conditionals.");
3291                           n_if_list = MAX_NESTED_IFS - 1;
3292                       }
3293                       set_opvar_int(tmppush, splev->n_opcodes);
3294                       if_list[n_if_list++] = tmppush;
3295
3296                       add_opvars(splev, "o", VA_PASS1(SPO_DEC));
3297                       break_stmt_start();
3298                   }
3299 break;
3300 case 152:
3301 {
3302                       struct opvar *tmppush;
3303
3304                       add_opvars(splev, "oio", VA_PASS3(SPO_COPY, 0, SPO_CMP));
3305
3306                       tmppush = (struct opvar *) if_list[--n_if_list];
3307                       set_opvar_int(tmppush, tmppush->vardata.l - splev->n_opcodes-1);
3308                       add_opcode(splev, SPO_PUSH, tmppush);
3309                       add_opcode(splev, SPO_JG, NULL);
3310                       add_opcode(splev, SPO_POP, NULL); /* get rid of the count value in stack */
3311                       break_stmt_end(splev);
3312                   }
3313 break;
3314 case 153:
3315 {
3316                       struct opvar *tmppush2 = New(struct opvar);
3317
3318                       if (n_if_list >= MAX_NESTED_IFS) {
3319                           lc_error("IF: Too deeply nested conditionals.");
3320                           n_if_list = MAX_NESTED_IFS - 1;
3321                       }
3322
3323                       add_opcode(splev, SPO_CMP, NULL);
3324
3325                       set_opvar_int(tmppush2, splev->n_opcodes+1);
3326
3327                       if_list[n_if_list++] = tmppush2;
3328
3329                       add_opcode(splev, SPO_PUSH, tmppush2);
3330
3331                       add_opcode(splev, reverse_jmp_opcode( yyvsp[-1].i ), NULL);
3332
3333                   }
3334 break;
3335 case 154:
3336 {
3337                       if (n_if_list > 0) {
3338                           struct opvar *tmppush;
3339                           tmppush = (struct opvar *) if_list[--n_if_list];
3340                           set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
3341                       } else lc_error("IF: Huh?!  No start address?");
3342                   }
3343 break;
3344 case 155:
3345 {
3346                       struct opvar *tmppush2 = New(struct opvar);
3347
3348                       if (n_if_list >= MAX_NESTED_IFS) {
3349                           lc_error("IF: Too deeply nested conditionals.");
3350                           n_if_list = MAX_NESTED_IFS - 1;
3351                       }
3352
3353                       add_opcode(splev, SPO_CMP, NULL);
3354
3355                       set_opvar_int(tmppush2, splev->n_opcodes+1);
3356
3357                       if_list[n_if_list++] = tmppush2;
3358
3359                       add_opcode(splev, SPO_PUSH, tmppush2);
3360
3361                       add_opcode(splev, reverse_jmp_opcode( yyvsp[0].i ), NULL);
3362
3363                   }
3364 break;
3365 case 156:
3366 {
3367                      /* do nothing */
3368                   }
3369 break;
3370 case 157:
3371 {
3372                       if (n_if_list > 0) {
3373                           struct opvar *tmppush;
3374                           tmppush = (struct opvar *) if_list[--n_if_list];
3375                           set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
3376                       } else lc_error("IF: Huh?!  No start address?");
3377                   }
3378 break;
3379 case 158:
3380 {
3381                       if (n_if_list > 0) {
3382                           struct opvar *tmppush = New(struct opvar);
3383                           struct opvar *tmppush2;
3384
3385                           set_opvar_int(tmppush, splev->n_opcodes+1);
3386                           add_opcode(splev, SPO_PUSH, tmppush);
3387
3388                           add_opcode(splev, SPO_JMP, NULL);
3389
3390                           tmppush2 = (struct opvar *) if_list[--n_if_list];
3391
3392                           set_opvar_int(tmppush2, splev->n_opcodes - tmppush2->vardata.l);
3393                           if_list[n_if_list++] = tmppush;
3394                       } else lc_error("IF: Huh?!  No else-part address?");
3395                   }
3396 break;
3397 case 159:
3398 {
3399                       if (n_if_list > 0) {
3400                           struct opvar *tmppush;
3401                           tmppush = (struct opvar *) if_list[--n_if_list];
3402                           set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
3403                       } else lc_error("IF: Huh?! No end address?");
3404                   }
3405 break;
3406 case 160:
3407 {
3408                       add_opvars(splev, "o", VA_PASS1(SPO_MESSAGE));
3409                   }
3410 break;
3411 case 161:
3412 {
3413                       add_opvars(splev, "iiiiiio",
3414                               VA_PASS7(-1,  0, -1, -1, -1, -1, SPO_CORRIDOR));
3415                   }
3416 break;
3417 case 162:
3418 {
3419                       add_opvars(splev, "iiiiiio",
3420                               VA_PASS7(-1, yyvsp[0].i, -1, -1, -1, -1, SPO_CORRIDOR));
3421                   }
3422 break;
3423 case 163:
3424 {
3425                       add_opvars(splev, "iiiiiio",
3426                               VA_PASS7(-1, -1, -1, -1, -1, -1, SPO_CORRIDOR));
3427                   }
3428 break;
3429 case 164:
3430 {
3431                       add_opvars(splev, "iiiiiio",
3432                                  VA_PASS7(yyvsp[-2].corpos.room, yyvsp[-2].corpos.door, yyvsp[-2].corpos.wall,
3433                                           yyvsp[0].corpos.room, yyvsp[0].corpos.door, yyvsp[0].corpos.wall,
3434                                           SPO_CORRIDOR));
3435                   }
3436 break;
3437 case 165:
3438 {
3439                       add_opvars(splev, "iiiiiio",
3440                                  VA_PASS7(yyvsp[-2].corpos.room, yyvsp[-2].corpos.door, yyvsp[-2].corpos.wall,
3441                                           -1, -1, (long)yyvsp[0].i,
3442                                           SPO_CORRIDOR));
3443                   }
3444 break;
3445 case 166:
3446 {
3447                         yyval.corpos.room = yyvsp[-5].i;
3448                         yyval.corpos.wall = yyvsp[-3].i;
3449                         yyval.corpos.door = yyvsp[-1].i;
3450                   }
3451 break;
3452 case 167:
3453 {
3454                       if ((yyvsp[-2].i < 100) && (yyvsp[-3].i == OROOM))
3455                           lc_error("Only typed rooms can have a chance.");
3456                       else {
3457                           add_opvars(splev, "iii",
3458                                      VA_PASS3((long)yyvsp[-3].i, (long)yyvsp[-2].i, (long)yyvsp[0].i));
3459                       }
3460                   }
3461 break;
3462 case 168:
3463 {
3464                       long rflags = yyvsp[0].i;
3465
3466                       if (rflags == -1) rflags = (1 << 0);
3467                       add_opvars(splev, "iiiiiiio",
3468                                  VA_PASS8(rflags, ERR, ERR,
3469                                           yyvsp[-3].crd.x, yyvsp[-3].crd.y, yyvsp[-1].sze.width, yyvsp[-1].sze.height,
3470                                           SPO_SUBROOM));
3471                       break_stmt_start();
3472                   }
3473 break;
3474 case 169:
3475 {
3476                       break_stmt_end(splev);
3477                       add_opcode(splev, SPO_ENDROOM, NULL);
3478                   }
3479 break;
3480 case 170:
3481 {
3482                       long rflags = yyvsp[-2].i;
3483
3484                       if (rflags == -1) rflags = (1 << 0);
3485                       add_opvars(splev, "iiiiiiio",
3486                                  VA_PASS8(rflags,
3487                                           yyvsp[-3].crd.x, yyvsp[-3].crd.y, yyvsp[-5].crd.x, yyvsp[-5].crd.y,
3488                                           yyvsp[-1].sze.width, yyvsp[-1].sze.height, SPO_ROOM));
3489                       break_stmt_start();
3490                   }
3491 break;
3492 case 171:
3493 {
3494                       break_stmt_end(splev);
3495                       add_opcode(splev, SPO_ENDROOM, NULL);
3496                   }
3497 break;
3498 case 172:
3499 {
3500                         yyval.i = 1;
3501                   }
3502 break;
3503 case 173:
3504 {
3505                         yyval.i = yyvsp[0].i;
3506                   }
3507 break;
3508 case 174:
3509 {
3510                         if ( yyvsp[-3].i < 1 || yyvsp[-3].i > 5 ||
3511                             yyvsp[-1].i < 1 || yyvsp[-1].i > 5 ) {
3512                             lc_error("Room positions should be between 1-5: (%li,%li)!", yyvsp[-3].i, yyvsp[-1].i);
3513                         } else {
3514                             yyval.crd.x = yyvsp[-3].i;
3515                             yyval.crd.y = yyvsp[-1].i;
3516                         }
3517                   }
3518 break;
3519 case 175:
3520 {
3521                         yyval.crd.x = yyval.crd.y = ERR;
3522                   }
3523 break;
3524 case 176:
3525 {
3526                         if ( yyvsp[-3].i < 0 || yyvsp[-1].i < 0) {
3527                             lc_error("Invalid subroom position (%li,%li)!", yyvsp[-3].i, yyvsp[-1].i);
3528                         } else {
3529                             yyval.crd.x = yyvsp[-3].i;
3530                             yyval.crd.y = yyvsp[-1].i;
3531                         }
3532                   }
3533 break;
3534 case 177:
3535 {
3536                         yyval.crd.x = yyval.crd.y = ERR;
3537                   }
3538 break;
3539 case 178:
3540 {
3541                       yyval.crd.x = yyvsp[-3].i;
3542                       yyval.crd.y = yyvsp[-1].i;
3543                   }
3544 break;
3545 case 179:
3546 {
3547                       yyval.crd.x = yyval.crd.y = ERR;
3548                   }
3549 break;
3550 case 180:
3551 {
3552                         yyval.sze.width = yyvsp[-3].i;
3553                         yyval.sze.height = yyvsp[-1].i;
3554                   }
3555 break;
3556 case 181:
3557 {
3558                         yyval.sze.height = yyval.sze.width = ERR;
3559                   }
3560 break;
3561 case 182:
3562 {
3563                         /* ERR means random here */
3564                         if (yyvsp[-2].i == ERR && yyvsp[0].i != ERR) {
3565                             lc_error("If the door wall is random, so must be its pos!");
3566                         } else {
3567                             add_opvars(splev, "iiiio",
3568                                        VA_PASS5((long)yyvsp[0].i, (long)yyvsp[-4].i, (long)yyvsp[-6].i,
3569                                                 (long)yyvsp[-2].i, SPO_ROOM_DOOR));
3570                         }
3571                   }
3572 break;
3573 case 183:
3574 {
3575                       add_opvars(splev, "io", VA_PASS2((long)yyvsp[-2].i, SPO_DOOR));
3576                   }
3577 break;
3578 case 188:
3579 {
3580                       yyval.i = yyvsp[0].i;
3581                   }
3582 break;
3583 case 189:
3584 {
3585                       yyval.i = (yyvsp[-2].i | yyvsp[0].i);
3586                   }
3587 break;
3588 case 192:
3589 {
3590                       add_opvars(splev, "ciisiio",
3591                                  VA_PASS7(0, 0, 1, (char *)0, 0, 0, SPO_MAP));
3592                       max_x_map = COLNO-1;
3593                       max_y_map = ROWNO;
3594                   }
3595 break;
3596 case 193:
3597 {
3598                       add_opvars(splev, "cii",
3599                                  VA_PASS3(SP_COORD_PACK((yyvsp[-4].i),(yyvsp[-2].i)),
3600                                           1, (long)yyvsp[-1].i));
3601                       scan_map(yyvsp[0].map, splev);
3602                       Free(yyvsp[0].map);
3603                   }
3604 break;
3605 case 194:
3606 {
3607                       add_opvars(splev, "ii", VA_PASS2(2, (long)yyvsp[-1].i));
3608                       scan_map(yyvsp[0].map, splev);
3609                       Free(yyvsp[0].map);
3610                   }
3611 break;
3612 case 199:
3613 {
3614                       add_opvars(splev, "io", VA_PASS2(0, SPO_MONSTER));
3615                   }
3616 break;
3617 case 200:
3618 {
3619                       add_opvars(splev, "io", VA_PASS2(1, SPO_MONSTER));
3620                       in_container_obj++;
3621                       break_stmt_start();
3622                   }
3623 break;
3624 case 201:
3625 {
3626                      break_stmt_end(splev);
3627                      in_container_obj--;
3628                      add_opvars(splev, "o", VA_PASS1(SPO_END_MONINVENT));
3629                  }
3630 break;
3631 case 202:
3632 {
3633                       /* nothing */
3634                   }
3635 break;
3636 case 203:
3637 {
3638                       struct opvar *stopit = New(struct opvar);
3639                       set_opvar_int(stopit, SP_M_V_END);
3640                       add_opcode(splev, SPO_PUSH, stopit);
3641                       yyval.i = 0x0000;
3642                   }
3643 break;
3644 case 204:
3645 {
3646                       if (( yyvsp[-2].i & yyvsp[0].i ))
3647                           lc_error("MONSTER extra info defined twice.");
3648                       yyval.i = ( yyvsp[-2].i | yyvsp[0].i );
3649                   }
3650 break;
3651 case 205:
3652 {
3653                       add_opvars(splev, "i", VA_PASS1(SP_M_V_NAME));
3654                       yyval.i = 0x0001;
3655                   }
3656 break;
3657 case 206:
3658 {
3659                       add_opvars(splev, "ii",
3660                                  VA_PASS2((long)yyvsp[0].i, SP_M_V_PEACEFUL));
3661                       yyval.i = 0x0002;
3662                   }
3663 break;
3664 case 207:
3665 {
3666                       add_opvars(splev, "ii",
3667                                  VA_PASS2((long)yyvsp[0].i, SP_M_V_ASLEEP));
3668                       yyval.i = 0x0004;
3669                   }
3670 break;
3671 case 208:
3672 {
3673                       add_opvars(splev, "ii",
3674                                  VA_PASS2((long)yyvsp[0].i, SP_M_V_ALIGN));
3675                       yyval.i = 0x0008;
3676                   }
3677 break;
3678 case 209:
3679 {
3680                       add_opvars(splev, "ii",
3681                                  VA_PASS2((long)yyvsp[-1].i, SP_M_V_APPEAR));
3682                       yyval.i = 0x0010;
3683                   }
3684 break;
3685 case 210:
3686 {
3687                       add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_FEMALE));
3688                       yyval.i = 0x0020;
3689                   }
3690 break;
3691 case 211:
3692 {
3693                       add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_INVIS));
3694                       yyval.i = 0x0040;
3695                   }
3696 break;
3697 case 212:
3698 {
3699                       add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_CANCELLED));
3700                       yyval.i = 0x0080;
3701                   }
3702 break;
3703 case 213:
3704 {
3705                       add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_REVIVED));
3706                       yyval.i = 0x0100;
3707                   }
3708 break;
3709 case 214:
3710 {
3711                       add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_AVENGE));
3712                       yyval.i = 0x0200;
3713                   }
3714 break;
3715 case 215:
3716 {
3717                       add_opvars(splev, "i", VA_PASS1(SP_M_V_FLEEING));
3718                       yyval.i = 0x0400;
3719                   }
3720 break;
3721 case 216:
3722 {
3723                       add_opvars(splev, "i", VA_PASS1(SP_M_V_BLINDED));
3724                       yyval.i = 0x0800;
3725                   }
3726 break;
3727 case 217:
3728 {
3729                       add_opvars(splev, "i", VA_PASS1(SP_M_V_PARALYZED));
3730                       yyval.i = 0x1000;
3731                   }
3732 break;
3733 case 218:
3734 {
3735                       add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_STUNNED));
3736                       yyval.i = 0x2000;
3737                   }
3738 break;
3739 case 219:
3740 {
3741                       add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_CONFUSED));
3742                       yyval.i = 0x4000;
3743                   }
3744 break;
3745 case 220:
3746 {
3747                       add_opvars(splev, "ii",
3748                                  VA_PASS2((long)yyvsp[0].i, SP_M_V_SEENTRAPS));
3749                       yyval.i = 0x8000;
3750                   }
3751 break;
3752 case 221:
3753 {
3754                       int token = get_trap_type(yyvsp[0].map);
3755                       if (token == ERR || token == 0)
3756                           lc_error("Unknown trap type '%s'!", yyvsp[0].map);
3757                       Free(yyvsp[0].map);
3758                       yyval.i = (1L << (token - 1));
3759                   }
3760 break;
3761 case 222:
3762 {
3763                       yyval.i = (long) ~0;
3764                   }
3765 break;
3766 case 223:
3767 {
3768                       int token = get_trap_type(yyvsp[-2].map);
3769                       if (token == ERR || token == 0)
3770                           lc_error("Unknown trap type '%s'!", yyvsp[-2].map);
3771
3772                       if ((1L << (token - 1)) & yyvsp[0].i)
3773                           lc_error("Monster seen_traps, trap '%s' listed twice.", yyvsp[-2].map);
3774                       Free(yyvsp[-2].map);
3775                       yyval.i = ((1L << (token - 1)) | yyvsp[0].i);
3776                   }
3777 break;
3778 case 224:
3779 {
3780                       long cnt = 0;
3781                       if (in_container_obj) cnt |= SP_OBJ_CONTENT;
3782                       add_opvars(splev, "io", VA_PASS2(cnt, SPO_OBJECT));
3783                   }
3784 break;
3785 case 225:
3786 {
3787                       long cnt = SP_OBJ_CONTAINER;
3788                       if (in_container_obj) cnt |= SP_OBJ_CONTENT;
3789                       add_opvars(splev, "io", VA_PASS2(cnt, SPO_OBJECT));
3790                       in_container_obj++;
3791                       break_stmt_start();
3792                   }
3793 break;
3794 case 226:
3795 {
3796                      break_stmt_end(splev);
3797                      in_container_obj--;
3798                      add_opcode(splev, SPO_POP_CONTAINER, NULL);
3799                  }
3800 break;
3801 case 227:
3802 {
3803                       if (( yyvsp[0].i & 0x4000) && in_container_obj)
3804                           lc_error("Object cannot have a coord when contained.");
3805                       else if (!( yyvsp[0].i & 0x4000) && !in_container_obj)
3806                           lc_error("Object needs a coord when not contained.");
3807                   }
3808 break;
3809 case 228:
3810 {
3811                       struct opvar *stopit = New(struct opvar);
3812                       set_opvar_int(stopit, SP_O_V_END);
3813                       add_opcode(splev, SPO_PUSH, stopit);
3814                       yyval.i = 0x00;
3815                   }
3816 break;
3817 case 229:
3818 {
3819                       if (( yyvsp[-2].i & yyvsp[0].i ))
3820                           lc_error("OBJECT extra info '%s' defined twice.", curr_token);
3821                       yyval.i = ( yyvsp[-2].i | yyvsp[0].i );
3822                   }
3823 break;
3824 case 230:
3825 {
3826                       add_opvars(splev, "ii",
3827                                  VA_PASS2((long)yyvsp[0].i, SP_O_V_CURSE));
3828                       yyval.i = 0x0001;
3829                   }
3830 break;
3831 case 231:
3832 {
3833                       add_opvars(splev, "i", VA_PASS1(SP_O_V_CORPSENM));
3834                       yyval.i = 0x0002;
3835                   }
3836 break;
3837 case 232:
3838 {
3839                       add_opvars(splev, "i", VA_PASS1(SP_O_V_SPE));
3840                       yyval.i = 0x0004;
3841                   }
3842 break;
3843 case 233:
3844 {
3845                       add_opvars(splev, "i", VA_PASS1(SP_O_V_NAME));
3846                       yyval.i = 0x0008;
3847                   }
3848 break;
3849 case 234:
3850 {
3851                       add_opvars(splev, "i", VA_PASS1(SP_O_V_QUAN));
3852                       yyval.i = 0x0010;
3853                   }
3854 break;
3855 case 235:
3856 {
3857                       add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_BURIED));
3858                       yyval.i = 0x0020;
3859                   }
3860 break;
3861 case 236:
3862 {
3863                       add_opvars(splev, "ii", VA_PASS2((long)yyvsp[0].i, SP_O_V_LIT));
3864                       yyval.i = 0x0040;
3865                   }
3866 break;
3867 case 237:
3868 {
3869                       add_opvars(splev, "i", VA_PASS1(SP_O_V_ERODED));
3870                       yyval.i = 0x0080;
3871                   }
3872 break;
3873 case 238:
3874 {
3875                       add_opvars(splev, "ii", VA_PASS2(-1, SP_O_V_ERODED));
3876                       yyval.i = 0x0080;
3877                   }
3878 break;
3879 case 239:
3880 {
3881                       if (yyvsp[0].i == D_LOCKED) {
3882                           add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_LOCKED));
3883                           yyval.i = 0x0100;
3884                       } else if (yyvsp[0].i == D_BROKEN) {
3885                           add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_BROKEN));
3886                           yyval.i = 0x0200;
3887                       } else
3888                           lc_error("DOOR state can only be locked or broken.");
3889                   }
3890 break;
3891 case 240:
3892 {
3893                       add_opvars(splev, "ii", VA_PASS2(yyvsp[0].i, SP_O_V_TRAPPED));
3894                       yyval.i = 0x0400;
3895                   }
3896 break;
3897 case 241:
3898 {
3899                       add_opvars(splev, "i", VA_PASS1(SP_O_V_RECHARGED));
3900                       yyval.i = 0x0800;
3901                   }
3902 break;
3903 case 242:
3904 {
3905                       add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_INVIS));
3906                       yyval.i = 0x1000;
3907                   }
3908 break;
3909 case 243:
3910 {
3911                       add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_GREASED));
3912                       yyval.i = 0x2000;
3913                   }
3914 break;
3915 case 244:
3916 {
3917                       add_opvars(splev, "i", VA_PASS1(SP_O_V_COORD));
3918                       yyval.i = 0x4000;
3919                   }
3920 break;
3921 case 245:
3922 {
3923                       add_opvars(splev, "io", VA_PASS2((long)yyvsp[-2].i, SPO_TRAP));
3924                   }
3925 break;
3926 case 246:
3927 {
3928                        long dir, state = 0;
3929
3930                        /* convert dir from a DIRECTION to a DB_DIR */
3931                        dir = yyvsp[-2].i;
3932                        switch (dir) {
3933                        case W_NORTH: dir = DB_NORTH; break;
3934                        case W_SOUTH: dir = DB_SOUTH; break;
3935                        case W_EAST:  dir = DB_EAST;  break;
3936                        case W_WEST:  dir = DB_WEST;  break;
3937                        default:
3938                            lc_error("Invalid drawbridge direction.");
3939                            break;
3940                        }
3941
3942                        if ( yyvsp[0].i == D_ISOPEN )
3943                            state = 1;
3944                        else if ( yyvsp[0].i == D_CLOSED )
3945                            state = 0;
3946                        else if ( yyvsp[0].i == -1 )
3947                            state = -1;
3948                        else
3949                            lc_error("A drawbridge can only be open, closed or random!");
3950                        add_opvars(splev, "iio",
3951                                   VA_PASS3(state, dir, SPO_DRAWBRIDGE));
3952                    }
3953 break;
3954 case 247:
3955 {
3956                       add_opvars(splev, "iiio",
3957                                  VA_PASS4((long)yyvsp[0].i, 1, 0, SPO_MAZEWALK));
3958                   }
3959 break;
3960 case 248:
3961 {
3962                       add_opvars(splev, "iiio",
3963                                  VA_PASS4((long)yyvsp[-3].i, (long)yyvsp[-1].i,
3964                                           (long)yyvsp[0].i, SPO_MAZEWALK));
3965                   }
3966 break;
3967 case 249:
3968 {
3969                       add_opvars(splev, "rio",
3970                                  VA_PASS3(SP_REGION_PACK(-1,-1,-1,-1),
3971                                           0, SPO_WALLIFY));
3972                   }
3973 break;
3974 case 250:
3975 {
3976                       add_opvars(splev, "io", VA_PASS2(1, SPO_WALLIFY));
3977                   }
3978 break;
3979 case 251:
3980 {
3981                       add_opvars(splev, "io",
3982                                  VA_PASS2((long)yyvsp[0].i, SPO_LADDER));
3983                   }
3984 break;
3985 case 252:
3986 {
3987                       add_opvars(splev, "io",
3988                                  VA_PASS2((long)yyvsp[0].i, SPO_STAIR));
3989                   }
3990 break;
3991 case 253:
3992 {
3993                       add_opvars(splev, "iiiii iiiii iiso",
3994                                  VA_PASS14(yyvsp[-4].lregn.x1, yyvsp[-4].lregn.y1, yyvsp[-4].lregn.x2, yyvsp[-4].lregn.y2, yyvsp[-4].lregn.area,
3995                                            yyvsp[-2].lregn.x1, yyvsp[-2].lregn.y1, yyvsp[-2].lregn.x2, yyvsp[-2].lregn.y2, yyvsp[-2].lregn.area,
3996                                       (long)((yyvsp[0].i) ? LR_UPSTAIR : LR_DOWNSTAIR),
3997                                            0, (char *)0, SPO_LEVREGION));
3998                   }
3999 break;
4000 case 254:
4001 {
4002                       add_opvars(splev, "iiiii iiiii iiso",
4003                                  VA_PASS14(yyvsp[-4].lregn.x1, yyvsp[-4].lregn.y1, yyvsp[-4].lregn.x2, yyvsp[-4].lregn.y2, yyvsp[-4].lregn.area,
4004                                            yyvsp[-2].lregn.x1, yyvsp[-2].lregn.y1, yyvsp[-2].lregn.x2, yyvsp[-2].lregn.y2, yyvsp[-2].lregn.area,
4005                                            LR_PORTAL, 0, yyvsp[0].map, SPO_LEVREGION));
4006                       Free(yyvsp[0].map);
4007                   }
4008 break;
4009 case 255:
4010 {
4011                       long rtyp = 0;
4012                       switch(yyvsp[0].i) {
4013                       case -1: rtyp = LR_TELE; break;
4014                       case  0: rtyp = LR_DOWNTELE; break;
4015                       case  1: rtyp = LR_UPTELE; break;
4016                       }
4017                       add_opvars(splev, "iiiii iiiii iiso",
4018                                  VA_PASS14(yyvsp[-3].lregn.x1, yyvsp[-3].lregn.y1, yyvsp[-3].lregn.x2, yyvsp[-3].lregn.y2, yyvsp[-3].lregn.area,
4019                                            yyvsp[-1].lregn.x1, yyvsp[-1].lregn.y1, yyvsp[-1].lregn.x2, yyvsp[-1].lregn.y2, yyvsp[-1].lregn.area,
4020                                            rtyp, 0, (char *)0, SPO_LEVREGION));
4021                   }
4022 break;
4023 case 256:
4024 {
4025                       add_opvars(splev, "iiiii iiiii iiso",
4026                                  VA_PASS14(yyvsp[-2].lregn.x1, yyvsp[-2].lregn.y1, yyvsp[-2].lregn.x2, yyvsp[-2].lregn.y2, yyvsp[-2].lregn.area,
4027                                            yyvsp[0].lregn.x1, yyvsp[0].lregn.y1, yyvsp[0].lregn.x2, yyvsp[0].lregn.y2, yyvsp[0].lregn.area,
4028                                            (long)LR_BRANCH, 0,
4029                                            (char *)0, SPO_LEVREGION));
4030                   }
4031 break;
4032 case 257:
4033 {
4034                         yyval.i = -1;
4035                   }
4036 break;
4037 case 258:
4038 {
4039                         yyval.i = yyvsp[0].i;
4040                   }
4041 break;
4042 case 259:
4043 {
4044                       add_opvars(splev, "o", VA_PASS1(SPO_FOUNTAIN));
4045                   }
4046 break;
4047 case 260:
4048 {
4049                       add_opvars(splev, "o", VA_PASS1(SPO_SINK));
4050                   }
4051 break;
4052 case 261:
4053 {
4054                       add_opvars(splev, "o", VA_PASS1(SPO_POOL));
4055                   }
4056 break;
4057 case 262:
4058 {
4059                       yyval.terr.lit = -2;
4060                       yyval.terr.ter = what_map_char((char) yyvsp[0].i);
4061                   }
4062 break;
4063 case 263:
4064 {
4065                       yyval.terr.lit = yyvsp[-1].i;
4066                       yyval.terr.ter = what_map_char((char) yyvsp[-3].i);
4067                   }
4068 break;
4069 case 264:
4070 {
4071                       add_opvars(splev, "io",
4072                                  VA_PASS2(yyvsp[0].i, SPO_REPLACETERRAIN));
4073                   }
4074 break;
4075 case 265:
4076 {
4077                      add_opvars(splev, "o", VA_PASS1(SPO_TERRAIN));
4078                  }
4079 break;
4080 case 266:
4081 {
4082                       add_opvars(splev, "o", VA_PASS1(SPO_NON_DIGGABLE));
4083                   }
4084 break;
4085 case 267:
4086 {
4087                       add_opvars(splev, "o", VA_PASS1(SPO_NON_PASSWALL));
4088                   }
4089 break;
4090 case 268:
4091 {
4092                       long irr;
4093                       long rt = yyvsp[-1].i;
4094                       long rflags = yyvsp[0].i;
4095
4096                       if (rflags == -1) rflags = (1 << 0);
4097                       if (!(rflags & 1)) rt += MAXRTYPE+1;
4098                       irr = ((rflags & 2) != 0);
4099                       add_opvars(splev, "iiio",
4100                                  VA_PASS4((long)yyvsp[-3].i, rt, rflags, SPO_REGION));
4101                       yyval.i = (irr || (rflags & 1) || rt != OROOM);
4102                       break_stmt_start();
4103                   }
4104 break;
4105 case 269:
4106 {
4107                       break_stmt_end(splev);
4108                       if ( yyvsp[-1].i ) {
4109                           add_opcode(splev, SPO_ENDROOM, NULL);
4110                       } else if ( yyvsp[0].i )
4111                           lc_error("Cannot use lev statements in non-permanent REGION");
4112                   }
4113 break;
4114 case 270:
4115 {
4116                       yyval.i = 0;
4117                   }
4118 break;
4119 case 271:
4120 {
4121                       yyval.i = yyvsp[0].i;
4122                   }
4123 break;
4124 case 272:
4125 {
4126                       add_opvars(splev, "iio",
4127                                  VA_PASS3((long)yyvsp[0].i, (long)yyvsp[-2].i, SPO_ALTAR));
4128                   }
4129 break;
4130 case 273:
4131 {
4132                       add_opvars(splev, "io", VA_PASS2(2, SPO_GRAVE));
4133                   }
4134 break;
4135 case 274:
4136 {
4137                       add_opvars(splev, "sio",
4138                                  VA_PASS3((char *)0, 1, SPO_GRAVE));
4139                   }
4140 break;
4141 case 275:
4142 {
4143                       add_opvars(splev, "sio",
4144                                  VA_PASS3((char *)0, 0, SPO_GRAVE));
4145                   }
4146 break;
4147 case 276:
4148 {
4149                       add_opvars(splev, "o", VA_PASS1(SPO_GOLD));
4150                   }
4151 break;
4152 case 277:
4153 {
4154                       add_opvars(splev, "io",
4155                                  VA_PASS2((long)yyvsp[-2].i, SPO_ENGRAVING));
4156                   }
4157 break;
4158 case 278:
4159 {
4160                       add_opvars(splev, "o", VA_PASS1(SPO_MINERALIZE));
4161                   }
4162 break;
4163 case 279:
4164 {
4165                       add_opvars(splev, "iiiio",
4166                                  VA_PASS5(-1L, -1L, -1L, -1L, SPO_MINERALIZE));
4167                   }
4168 break;
4169 case 280:
4170 {
4171                         int token = get_trap_type(yyvsp[0].map);
4172                         if (token == ERR)
4173                             lc_error("Unknown trap type '%s'!", yyvsp[0].map);
4174                         yyval.i = token;
4175                         Free(yyvsp[0].map);
4176                   }
4177 break;
4178 case 282:
4179 {
4180                         int token = get_room_type(yyvsp[0].map);
4181                         if (token == ERR) {
4182                             lc_warning("Unknown room type \"%s\"!  Making ordinary room...", yyvsp[0].map);
4183                                 yyval.i = OROOM;
4184                         } else
4185                                 yyval.i = token;
4186                         Free(yyvsp[0].map);
4187                   }
4188 break;
4189 case 284:
4190 {
4191                         yyval.i = -1;
4192                   }
4193 break;
4194 case 285:
4195 {
4196                         yyval.i = yyvsp[0].i;
4197                   }
4198 break;
4199 case 286:
4200 {
4201                         yyval.i = yyvsp[0].i;
4202                   }
4203 break;
4204 case 287:
4205 {
4206                         yyval.i = yyvsp[-2].i | yyvsp[0].i;
4207                   }
4208 break;
4209 case 288:
4210 {
4211                       yyval.i = (yyvsp[0].i << 0);
4212                   }
4213 break;
4214 case 289:
4215 {
4216                       yyval.i = (yyvsp[0].i << 1);
4217                   }
4218 break;
4219 case 290:
4220 {
4221                       yyval.i = (yyvsp[0].i << 2);
4222                   }
4223 break;
4224 case 297:
4225 {
4226                         yyval.i = - MAX_REGISTERS - 1;
4227                   }
4228 break;
4229 case 300:
4230 {
4231                         yyval.i = - MAX_REGISTERS - 1;
4232                   }
4233 break;
4234 case 303:
4235 {
4236                         if ( yyvsp[-1].i >= 3 )
4237                                 lc_error("Register Index overflow!");
4238                         else
4239                                 yyval.i = - yyvsp[-1].i - 1;
4240                   }
4241 break;
4242 case 304:
4243 {
4244                       add_opvars(splev, "s", VA_PASS1(yyvsp[0].map));
4245                       Free(yyvsp[0].map);
4246                   }
4247 break;
4248 case 305:
4249 {
4250                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_STRING);
4251                       vardef_used(variable_definitions, yyvsp[0].map);
4252                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4253                       Free(yyvsp[0].map);
4254                   }
4255 break;
4256 case 306:
4257 {
4258                       check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_STRING|SPOVAR_ARRAY);
4259                       vardef_used(variable_definitions, yyvsp[-3].map);
4260                       add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4261                       Free(yyvsp[-3].map);
4262                   }
4263 break;
4264 case 307:
4265 {
4266                       /* nothing */
4267                   }
4268 break;
4269 case 308:
4270 {
4271                       add_opvars(splev, "c", VA_PASS1(yyvsp[0].i));
4272                   }
4273 break;
4274 case 309:
4275 {
4276                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_RNDCOORD));
4277                   }
4278 break;
4279 case 310:
4280 {
4281                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_COORD);
4282                       vardef_used(variable_definitions, yyvsp[0].map);
4283                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4284                       Free(yyvsp[0].map);
4285                   }
4286 break;
4287 case 311:
4288 {
4289                       check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_COORD|SPOVAR_ARRAY);
4290                       vardef_used(variable_definitions, yyvsp[-3].map);
4291                       add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4292                       Free(yyvsp[-3].map);
4293                   }
4294 break;
4295 case 312:
4296 {
4297                       if (yyvsp[-3].i < 0 || yyvsp[-1].i < 0 || yyvsp[-3].i >= COLNO || yyvsp[-1].i >= ROWNO)
4298                           lc_error("Coordinates (%li,%li) out of map range!", yyvsp[-3].i, yyvsp[-1].i);
4299                       yyval.i = SP_COORD_PACK(yyvsp[-3].i, yyvsp[-1].i);
4300                   }
4301 break;
4302 case 313:
4303 {
4304                       yyval.i = SP_COORD_PACK_RANDOM(0);
4305                   }
4306 break;
4307 case 314:
4308 {
4309                       yyval.i = SP_COORD_PACK_RANDOM( yyvsp[-1].i );
4310                   }
4311 break;
4312 case 315:
4313 {
4314                       yyval.i = yyvsp[0].i;
4315                   }
4316 break;
4317 case 316:
4318 {
4319                       if ((yyvsp[-2].i & yyvsp[0].i))
4320                           lc_warning("Humidity flag used twice.");
4321                       yyval.i = (yyvsp[-2].i | yyvsp[0].i);
4322                   }
4323 break;
4324 case 317:
4325 {
4326                       /* nothing */
4327                   }
4328 break;
4329 case 318:
4330 {
4331                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_REGION);
4332                       vardef_used(variable_definitions, yyvsp[0].map);
4333                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4334                       Free(yyvsp[0].map);
4335                   }
4336 break;
4337 case 319:
4338 {
4339                       check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_REGION|SPOVAR_ARRAY);
4340                       vardef_used(variable_definitions, yyvsp[-3].map);
4341                       add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4342                       Free(yyvsp[-3].map);
4343                   }
4344 break;
4345 case 320:
4346 {
4347                       long r = SP_REGION_PACK(yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4348                       if ( yyvsp[-7].i > yyvsp[-3].i || yyvsp[-5].i > yyvsp[-1].i )
4349                           lc_error("Region start > end: (%li,%li,%li,%li)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4350
4351                       add_opvars(splev, "r", VA_PASS1(r));
4352                       yyval.i = r;
4353                   }
4354 break;
4355 case 321:
4356 {
4357                       add_opvars(splev, "m", VA_PASS1(yyvsp[0].i));
4358                   }
4359 break;
4360 case 322:
4361 {
4362                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_MAPCHAR);
4363                       vardef_used(variable_definitions, yyvsp[0].map);
4364                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4365                       Free(yyvsp[0].map);
4366                   }
4367 break;
4368 case 323:
4369 {
4370                       check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_MAPCHAR|SPOVAR_ARRAY);
4371                       vardef_used(variable_definitions, yyvsp[-3].map);
4372                       add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4373                       Free(yyvsp[-3].map);
4374                   }
4375 break;
4376 case 324:
4377 {
4378                       if (what_map_char((char) yyvsp[0].i) != INVALID_TYPE)
4379                           yyval.i = SP_MAPCHAR_PACK(what_map_char((char) yyvsp[0].i), -2);
4380                       else {
4381                           lc_error("Unknown map char type '%c'!", yyvsp[0].i);
4382                           yyval.i = SP_MAPCHAR_PACK(STONE, -2);
4383                       }
4384                   }
4385 break;
4386 case 325:
4387 {
4388                       if (what_map_char((char) yyvsp[-3].i) != INVALID_TYPE)
4389                           yyval.i = SP_MAPCHAR_PACK(what_map_char((char) yyvsp[-3].i), yyvsp[-1].i);
4390                       else {
4391                           lc_error("Unknown map char type '%c'!", yyvsp[-3].i);
4392                           yyval.i = SP_MAPCHAR_PACK(STONE, yyvsp[-1].i);
4393                       }
4394                   }
4395 break;
4396 case 326:
4397 {
4398                       add_opvars(splev, "M", VA_PASS1(yyvsp[0].i));
4399                   }
4400 break;
4401 case 327:
4402 {
4403                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_MONST);
4404                       vardef_used(variable_definitions, yyvsp[0].map);
4405                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4406                       Free(yyvsp[0].map);
4407                   }
4408 break;
4409 case 328:
4410 {
4411                       check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_MONST|SPOVAR_ARRAY);
4412                       vardef_used(variable_definitions, yyvsp[-3].map);
4413                       add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4414                       Free(yyvsp[-3].map);
4415                   }
4416 break;
4417 case 329:
4418 {
4419                       long m = get_monster_id(yyvsp[0].map, (char)0);
4420                       if (m == ERR) {
4421                           lc_error("Unknown monster \"%s\"!", yyvsp[0].map);
4422                           yyval.i = -1;
4423                       } else
4424                           yyval.i = SP_MONST_PACK(m, def_monsyms[(int)mons[m].mlet].sym);
4425                       Free(yyvsp[0].map);
4426                   }
4427 break;
4428 case 330:
4429 {
4430                         if (check_monster_char((char) yyvsp[0].i))
4431                             yyval.i = SP_MONST_PACK(-1, yyvsp[0].i);
4432                         else {
4433                             lc_error("Unknown monster class '%c'!", yyvsp[0].i);
4434                             yyval.i = -1;
4435                         }
4436                   }
4437 break;
4438 case 331:
4439 {
4440                       long m = get_monster_id(yyvsp[-1].map, (char) yyvsp[-3].i);
4441                       if (m == ERR) {
4442                           lc_error("Unknown monster ('%c', \"%s\")!", yyvsp[-3].i, yyvsp[-1].map);
4443                           yyval.i = -1;
4444                       } else
4445                           yyval.i = SP_MONST_PACK(m, yyvsp[-3].i);
4446                       Free(yyvsp[-1].map);
4447                   }
4448 break;
4449 case 332:
4450 {
4451                       yyval.i = -1;
4452                   }
4453 break;
4454 case 333:
4455 {
4456                       add_opvars(splev, "O", VA_PASS1(yyvsp[0].i));
4457                   }
4458 break;
4459 case 334:
4460 {
4461                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_OBJ);
4462                       vardef_used(variable_definitions, yyvsp[0].map);
4463                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4464                       Free(yyvsp[0].map);
4465                   }
4466 break;
4467 case 335:
4468 {
4469                       check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_OBJ|SPOVAR_ARRAY);
4470                       vardef_used(variable_definitions, yyvsp[-3].map);
4471                       add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4472                       Free(yyvsp[-3].map);
4473                   }
4474 break;
4475 case 336:
4476 {
4477                       long m = get_object_id(yyvsp[0].map, (char)0);
4478                       if (m == ERR) {
4479                           lc_error("Unknown object \"%s\"!", yyvsp[0].map);
4480                           yyval.i = -1;
4481                       } else
4482                           yyval.i = SP_OBJ_PACK(m, 1); /* obj class != 0 to force generation of a specific item */
4483                       Free(yyvsp[0].map);
4484                   }
4485 break;
4486 case 337:
4487 {
4488                         if (check_object_char((char) yyvsp[0].i))
4489                             yyval.i = SP_OBJ_PACK(-1, yyvsp[0].i);
4490                         else {
4491                             lc_error("Unknown object class '%c'!", yyvsp[0].i);
4492                             yyval.i = -1;
4493                         }
4494                   }
4495 break;
4496 case 338:
4497 {
4498                       long m = get_object_id(yyvsp[-1].map, (char) yyvsp[-3].i);
4499                       if (m == ERR) {
4500                           lc_error("Unknown object ('%c', \"%s\")!", yyvsp[-3].i, yyvsp[-1].map);
4501                           yyval.i = -1;
4502                       } else
4503                           yyval.i = SP_OBJ_PACK(m, yyvsp[-3].i);
4504                       Free(yyvsp[-1].map);
4505                   }
4506 break;
4507 case 339:
4508 {
4509                       yyval.i = -1;
4510                   }
4511 break;
4512 case 340:
4513 { }
4514 break;
4515 case 341:
4516 {
4517                       add_opvars(splev, "o", VA_PASS1(SPO_MATH_ADD));
4518                   }
4519 break;
4520 case 342:
4521 {
4522                       add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4523                   }
4524 break;
4525 case 343:
4526 {
4527                       is_inconstant_number = 1;
4528                   }
4529 break;
4530 case 344:
4531 {
4532                       add_opvars(splev, "i", VA_PASS1(yyvsp[-1].i));
4533                   }
4534 break;
4535 case 345:
4536 {
4537                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_INT);
4538                       vardef_used(variable_definitions, yyvsp[0].map);
4539                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4540                       Free(yyvsp[0].map);
4541                       is_inconstant_number = 1;
4542                   }
4543 break;
4544 case 346:
4545 {
4546                       check_vardef_type(variable_definitions,
4547                                         yyvsp[-3].map, SPOVAR_INT|SPOVAR_ARRAY);
4548                       vardef_used(variable_definitions, yyvsp[-3].map);
4549                       add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4550                       Free(yyvsp[-3].map);
4551                       is_inconstant_number = 1;
4552                   }
4553 break;
4554 case 347:
4555 {
4556                       add_opvars(splev, "o", VA_PASS1(SPO_MATH_ADD));
4557                   }
4558 break;
4559 case 348:
4560 {
4561                       add_opvars(splev, "o", VA_PASS1(SPO_MATH_SUB));
4562                   }
4563 break;
4564 case 349:
4565 {
4566                       add_opvars(splev, "o", VA_PASS1(SPO_MATH_MUL));
4567                   }
4568 break;
4569 case 350:
4570 {
4571                       add_opvars(splev, "o", VA_PASS1(SPO_MATH_DIV));
4572                   }
4573 break;
4574 case 351:
4575 {
4576                       add_opvars(splev, "o", VA_PASS1(SPO_MATH_MOD));
4577                   }
4578 break;
4579 case 352:
4580 { }
4581 break;
4582 case 353:
4583 {
4584                       if (!strcmp("int", yyvsp[0].map) || !strcmp("integer", yyvsp[0].map)) {
4585                           yyval.i = (int)'i';
4586                       } else
4587                           lc_error("Unknown function parameter type '%s'", yyvsp[0].map);
4588                   }
4589 break;
4590 case 354:
4591 {
4592                       if (!strcmp("str", yyvsp[0].map) || !strcmp("string", yyvsp[0].map)) {
4593                           yyval.i = (int)'s';
4594                       } else
4595                           lc_error("Unknown function parameter type '%s'", yyvsp[0].map);
4596                   }
4597 break;
4598 case 355:
4599 {
4600                       struct lc_funcdefs_parm *tmp = New(struct lc_funcdefs_parm);
4601
4602                       if (!curr_function) {
4603                           lc_error("Function parameters outside function definition.");
4604                       } else if (!tmp) {
4605                           lc_error("Could not alloc function params.");
4606                       } else {
4607                           long vt;
4608                           tmp->name = strdup(yyvsp[-2].map);
4609                           tmp->parmtype = (char) yyvsp[0].i;
4610                           tmp->next = curr_function->params;
4611                           curr_function->params = tmp;
4612                           curr_function->n_params++;
4613                           switch (tmp->parmtype) {
4614                           case 'i': vt = SPOVAR_INT; break;
4615                           case 's': vt = SPOVAR_STRING; break;
4616                           default: lc_error("Unknown func param conversion."); break;
4617                           }
4618                           variable_definitions = add_vardef_type(
4619                                                          variable_definitions,
4620                                                                  yyvsp[-2].map, vt);
4621                       }
4622                       Free(yyvsp[-2].map);
4623                   }
4624 break;
4625 case 360:
4626 {
4627                               yyval.i = (int)'i';
4628                           }
4629 break;
4630 case 361:
4631 {
4632                               yyval.i = (int)'s';
4633                           }
4634 break;
4635 case 362:
4636 {
4637                               char tmpbuf[2];
4638                               tmpbuf[0] = (char) yyvsp[0].i;
4639                               tmpbuf[1] = '\0';
4640                               yyval.map = strdup(tmpbuf);
4641                           }
4642 break;
4643 case 363:
4644 {
4645                               long len = strlen( yyvsp[-2].map );
4646                               char *tmp = (char *)alloc(len + 2);
4647                               sprintf(tmp, "%c%s", (char) yyvsp[0].i, yyvsp[-2].map );
4648                               Free( yyvsp[-2].map );
4649                               yyval.map = tmp;
4650                           }
4651 break;
4652 case 364:
4653 {
4654                               yyval.map = strdup("");
4655                           }
4656 break;
4657 case 365:
4658 {
4659                               char *tmp = strdup( yyvsp[0].map );
4660                               Free( yyvsp[0].map );
4661                               yyval.map = tmp;
4662                           }
4663 break;
4664 case 366:
4665 {
4666                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_POINT));
4667                   }
4668 break;
4669 case 367:
4670 {
4671                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_RECT));
4672                   }
4673 break;
4674 case 368:
4675 {
4676                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_FILLRECT));
4677                   }
4678 break;
4679 case 369:
4680 {
4681                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_LINE));
4682                   }
4683 break;
4684 case 370:
4685 {
4686                       /* randline (x1,y1),(x2,y2), roughness */
4687                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_RNDLINE));
4688                   }
4689 break;
4690 case 371:
4691 {
4692                       add_opvars(splev, "io", VA_PASS2(W_ANY, SPO_SEL_GROW));
4693                   }
4694 break;
4695 case 372:
4696 {
4697                       add_opvars(splev, "io", VA_PASS2(yyvsp[-3].i, SPO_SEL_GROW));
4698                   }
4699 break;
4700 case 373:
4701 {
4702                       add_opvars(splev, "iio",
4703                              VA_PASS3(yyvsp[-3].i, SPOFILTER_PERCENT, SPO_SEL_FILTER));
4704                   }
4705 break;
4706 case 374:
4707 {
4708                       add_opvars(splev, "io",
4709                                VA_PASS2(SPOFILTER_SELECTION, SPO_SEL_FILTER));
4710                   }
4711 break;
4712 case 375:
4713 {
4714                       add_opvars(splev, "io",
4715                                  VA_PASS2(SPOFILTER_MAPCHAR, SPO_SEL_FILTER));
4716                   }
4717 break;
4718 case 376:
4719 {
4720                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_FLOOD));
4721                   }
4722 break;
4723 case 377:
4724 {
4725                       add_opvars(splev, "oio",
4726                                  VA_PASS3(SPO_COPY, 1, SPO_SEL_ELLIPSE));
4727                   }
4728 break;
4729 case 378:
4730 {
4731                       add_opvars(splev, "oio",
4732                                  VA_PASS3(SPO_COPY, yyvsp[-1].i, SPO_SEL_ELLIPSE));
4733                   }
4734 break;
4735 case 379:
4736 {
4737                       add_opvars(splev, "io", VA_PASS2(1, SPO_SEL_ELLIPSE));
4738                   }
4739 break;
4740 case 380:
4741 {
4742                       add_opvars(splev, "io", VA_PASS2(yyvsp[-1].i, SPO_SEL_ELLIPSE));
4743                   }
4744 break;
4745 case 381:
4746 {
4747                       add_opvars(splev, "iio",
4748                                  VA_PASS3(yyvsp[-5].i, yyvsp[-11].i, SPO_SEL_GRADIENT));
4749                   }
4750 break;
4751 case 382:
4752 {
4753                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_COMPLEMENT));
4754                   }
4755 break;
4756 case 383:
4757 {
4758                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_SEL);
4759                       vardef_used(variable_definitions, yyvsp[0].map);
4760                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4761                       Free(yyvsp[0].map);
4762                   }
4763 break;
4764 case 384:
4765 {
4766                       /* nothing */
4767                   }
4768 break;
4769 case 385:
4770 {
4771                       /* nothing */
4772                   }
4773 break;
4774 case 386:
4775 {
4776                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_ADD));
4777                   }
4778 break;
4779 case 387:
4780 {
4781                       add_opvars(splev, "iio",
4782                                  VA_PASS3(yyvsp[0].dice.num, yyvsp[0].dice.die, SPO_DICE));
4783                   }
4784 break;
4785 case 391:
4786 {
4787                       add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4788                   }
4789 break;
4790 case 392:
4791 {
4792                       add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4793                   }
4794 break;
4795 case 393:
4796 {
4797                       add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4798                   }
4799 break;
4800 case 394:
4801 {
4802                       /* nothing */
4803                   }
4804 break;
4805 case 403:
4806 {
4807                         yyval.lregn = yyvsp[0].lregn;
4808                   }
4809 break;
4810 case 404:
4811 {
4812                         if (yyvsp[-7].i <= 0 || yyvsp[-7].i >= COLNO)
4813                             lc_error("Region (%li,%li,%li,%li) out of level range (x1)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4814                         else if (yyvsp[-5].i < 0 || yyvsp[-5].i >= ROWNO)
4815                             lc_error("Region (%li,%li,%li,%li) out of level range (y1)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4816                         else if (yyvsp[-3].i <= 0 || yyvsp[-3].i >= COLNO)
4817                             lc_error("Region (%li,%li,%li,%li) out of level range (x2)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4818                         else if (yyvsp[-1].i < 0 || yyvsp[-1].i >= ROWNO)
4819                             lc_error("Region (%li,%li,%li,%li) out of level range (y2)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4820                         yyval.lregn.x1 = yyvsp[-7].i;
4821                         yyval.lregn.y1 = yyvsp[-5].i;
4822                         yyval.lregn.x2 = yyvsp[-3].i;
4823                         yyval.lregn.y2 = yyvsp[-1].i;
4824                         yyval.lregn.area = 1;
4825                   }
4826 break;
4827 case 405:
4828 {
4829 /* This series of if statements is a hack for MSC 5.1.  It seems that its
4830    tiny little brain cannot compile if these are all one big if statement. */
4831                         if (yyvsp[-7].i < 0 || yyvsp[-7].i > (int)max_x_map)
4832                             lc_error("Region (%li,%li,%li,%li) out of map range (x1)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4833                         else if (yyvsp[-5].i < 0 || yyvsp[-5].i > (int)max_y_map)
4834                             lc_error("Region (%li,%li,%li,%li) out of map range (y1)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4835                         else if (yyvsp[-3].i < 0 || yyvsp[-3].i > (int)max_x_map)
4836                             lc_error("Region (%li,%li,%li,%li) out of map range (x2)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4837                         else if (yyvsp[-1].i < 0 || yyvsp[-1].i > (int)max_y_map)
4838                             lc_error("Region (%li,%li,%li,%li) out of map range (y2)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4839                         yyval.lregn.area = 0;
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                   }
4845 break;
4846     }
4847     yyssp -= yym;
4848     yystate = *yyssp;
4849     yyvsp -= yym;
4850     yym = yylhs[yyn];
4851     if (yystate == 0 && yym == 0)
4852     {
4853 #if YYDEBUG
4854         if (yydebug)
4855             printf("%sdebug: after reduction, shifting from state 0 to\
4856  state %d\n", YYPREFIX, YYFINAL);
4857 #endif
4858         yystate = YYFINAL;
4859         *++yyssp = YYFINAL;
4860         *++yyvsp = yyval;
4861         if (yychar < 0)
4862         {
4863             if ((yychar = yylex()) < 0) yychar = 0;
4864 #if YYDEBUG
4865             if (yydebug)
4866             {
4867                 yys = 0;
4868                 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
4869                 if (!yys) yys = "illegal-symbol";
4870                 printf("%sdebug: state %d, reading %d (%s)\n",
4871                         YYPREFIX, YYFINAL, yychar, yys);
4872             }
4873 #endif
4874         }
4875         if (yychar == 0) goto yyaccept;
4876         goto yyloop;
4877     }
4878     if ((yyn = yygindex[yym]) != 0 && (yyn += yystate) >= 0 &&
4879             yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
4880         yystate = yytable[yyn];
4881     else
4882         yystate = yydgoto[yym];
4883 #if YYDEBUG
4884     if (yydebug)
4885         printf("%sdebug: after reduction, shifting from state %d \
4886 to state %d\n", YYPREFIX, *yyssp, yystate);
4887 #endif
4888     if (yyssp >= yyss + yystacksize - 1)
4889     {
4890         goto yyoverflow;
4891     }
4892     *++yyssp = yystate;
4893     *++yyvsp = yyval;
4894     goto yyloop;
4895 yyoverflow:
4896     yyerror("yacc stack overflow");
4897 yyabort:
4898     return (1);
4899 yyaccept:
4900     return (0);
4901 }