teleport control from the C++ code into the vault .des files. This is done with the additions of two things:
Changeable, persistent per-level and per-branch flags which affect game play.
Dungeon events for the killing of monsters, picking up of objects and changing of features.
The current level and branch flags are for teleport control prevention, making a level unmappable (like the Abyss or a Labyrinth), and preventing magic mapping from working (like the Abyss or a Labyrinth).
Some related changes:
The new .des header KMASK allows for dungeon grid masks like no_monster_gen to be applied to specific symbols rather than the entire vault.
If the wizard mapping command (&{) is used in a place which is unmappable, it will ask if you wish to force the area to be mappable (so you can see what an entire Labyrinth or Abyss level looks like without having to hack the source).
A new wizard-mode level-map command, 'T', will teleport the player to wherever the cursor is pointing.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2146 c06c8d41-db1a-0410-9941-cceddc491573
ED62QWGKBPORWVKDFOQRKJXEIWZVNGR3O4KWQBDSRNPT36AYOQYAC
3SAXELKUWVP3KWQCANMGQONEOSMRSQPSNDUSN43XRRYOMEGHULNAC
H6N5JENCC6GSO75VDOBRZCAE3ORIN3IJUAVZPPYYRVBY2DVGD3ZAC
GZMPIDNMBXZ4B2ZWKREHBPAVN53J6WRVY5W5KY52KEBHKU6IW4IQC
JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
PL6I2CMSTHY5ZHWVMIQE5YTM5S5VPKBNZM6QJVHZSSKOJGIJ5W4AC
AJJ6D6JRV6ZAZOAUHYUM2IQG42V6PBALOD4KEMNKSVVAOJXAUCPQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
AMFTO4UE74UYQBU3R2EYUU6BJ7SC4O4NOAFICRTLMT3MIFRQ6AKAC
OYTCBRC7LE44EUVRZVYTOOVKQWJ6P6YE3FXTOGUTNKEMLNWPHKSQC
JDM27QE4HR52AYFSQE763BFF57ANOTF5MXKMO377PP5EXMN7SAOAC
IVVTHLTTLOP5TSULXJWUSSXHOKYWVU3OWKYVK45A7RIB6V34MYQAC
TLO257LZSB6ZO36STDUEWJBO2LETXFKTFGXELA6Y4BZBVAEIIINAC
W52PCSHX72WAMWKG6L4BPUBVMO6E72KYYBNKAA7554KNOTY6V7WQC
AUYQDKLMOG4FGH2T3LACX4TH632DPKVXBNV5VU6PIVUEWSIO4LQQC
7Y5HSDFKA5TPLS2TWTRFMQVX6UXUDHXU5MUMXQSDFAIY4THQ3BIQC
SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC
5UVDIVD4NSXA52U4QMQIVST3GSZJ2A2YZK3RUEXKPM43YVQ7LI5AC
LCCGXSFIDQFIRXHGRJWOELNPQOHHCXCWXS366GOULDFPQVOKAIJAC
GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC
W5VEC2PBIM5DMU5233HOWAZUEPTGWJRZZIA3H35YYQQW6BTP6XUAC
WDOHDLADQOGV2FLDBHIWT2HOB7KWS5ZUQ5OOS7TSQLZIMXSYP5KQC
2XF6FUND5LXCDDQOTSYRNFZADI5RH3UG4D2Y77Z3XQVQ5VBC7TOAC
E46S7KO37G3QK6LA3ZGGJ6BZYQCP4SNV3575UDWO76O7KFRHCKNQC
YIWOMNWKM56MNSLEKYHUJTPQAEIVZ3E3XUR5VXO32Z72ITNCXD2QC
7D5YTNCPSR44S7KQ67IOCWXNVE4INO4GE2F47PMKV3SMCRAMNVVQC
LGJDZUQ4NG7WCHRMQ4ACJABLION2BMDHFUZGWN3KVTB52M56TBJAC
RYLDKET2N42S4UM2NRF3KIOTRHJ57A2KZAVJFGM7BWWRCHQJINTAC
MSQI3TH6T62JAXQGLL52QZCWAMC372TGB6ZNNRDGUGMJKBNNV2VAC
ANJ4QWXY2LDCFJRUSYFOR56CYBNCFZOVYYXWCZIQIBOEHYLUDM3QC
6226X6PUUL464V2CNMPPNZ7UDXFTRAS76Y3MKVHXWNQ37XK5JYCQC
KE25RXTJ46F64GNWJAY4DN4HJU7A4WGF6M6JXGRUDK3TPGRW4UUAC
WKTZHLOJ65WSK6FR5MF7RWGSMZ22T2D6LHB66FV3IPGXIBLYHHNAC
34C4U6EQWERY75GZJKUCM5KVGU2OUICETS5LGZF6RMKMZT4R5SQAC
3SHZYGGZHYROZ7QXGY5I4ZIVBJHUIMI5EYMXGI7F26FNPDY3KQSAC
L6O4LGZRKBURVWEY7XRVCSQLJ5RULNBEWMQJ6I2UYVWWB66FM3MQC
XHJRRN6K2ZYGIL6G27G2TNDSNKTTPCA5EUYXRIT242YMKPJQ3YZAC
TV3ZC6WOZKSQQJQN26JIVKCHK6UK7WMDBYZDUYRWEAZ4JB4YVNAAC
WT66JDIRTLLP37SHTV4GI3V64JFJ4D25LNRLGCHFG6CLEFKJ3QGQC
QS3ZRS3E6KL3YJHPKYEWCWJYRBJSXD5OOYF6Y25HZVECGPJRDB5QC
UZ6N6HOUPGVSPC5NQROEEDWMEGJA5XUWUY2AKH5QG65AZ25PVXDAC
PJ7HBIWAV3H23LXGZAAD2QYJ7HMOFOIR5ZJ4U2UTHI766LOTRRWQC
ILN2K6ASDZSMEHOPJ22IZLZJUO6DDGZTKAKXM3YXG6JZZHJNLX4AC
442VGKMARB6LTQUEBIB5P447EI34BRJL6JALZKXLWPDHWCM6KKCQC
KXUQB3WNWC5IFL6VFWADEPQMMU3VV3NDI5FLA666PGOEWFYUHCLQC
WTGKEI4F7WINPHW4UMWFADYQH7VK7TNV5V7RUORBVXGFSO5SNP5AC
AUXHSGS4EFOPZ6TVZYWNVOUDO7NYKUKE3HBKGQQWTALSVFOE3HAAC
RGHXFBNIULRVRYLBGG5JZDMYVM2E2JJ2Y5KQPMU6PUS3V26G6ZXQC
JK3HFJG76OOQHJMXJUSZRTR5CX5ZMS52LRVBLOR7E2NBI6PRSHHAC
L4RYVF46EQKMVOEADGRG4WMPVTQ6NNFGYMU4SHAH6XJIKWVHT77QC
52W74WXL5XIH6YFJBQRVAO47YHCS3CPMUUZS4Q3AZ3HAPDWMT54AC
3C2VE43SHCSBY4LTRTFYFLIPRWFUN6DXU6D34QVWDQTSNRBUFG7AC
FSD7GIK3YLZXWLEH37BU6KV3IUCFGXPQL6IZ7H65YWNRBEKDBX5AC
C22455VGUQOSUX2OORA32LROFQ7NNYDMD2ZDTTUZSAQLXK4AD6QAC
KCHX2F3JFEWOZT3WMJVZAAQUU2QSZ5Q7RDCD7WUJ7VE65J52JFUQC
H3552BCIAVBLKAYKE4DHFLBLFW5RGRMYBMRRYHYEB5IPIJRUVU5QC
5V47S4NNTHWTSAHV3YLO2VGH7JTUIYJ3GBPDN5ZM4UQALT2ZEXDQC
HNXKX6ZDQJV33E7UKZOLBYWJMRZ4QLEMXVXJZNRCTOIG2KVRTIEAC
JNB3PBPBJHDUHH47ZICB25QENPTMLYK7CXC5BXRVWZ3J3ZZPKCUAC
TZ55IZNANEJO2WDTKYWVLY2W2VV6BR7WKIN7XLNISAMMFT6LG2WQC
WWR4IDWLXP4XLBWDZBA5GFG7CRKUJQNRK7FFUFOISK6OJTMYQPFQC
R6XS2HO5QX2FJUGL5UQQRNETKCMYWTUFPHPPS5SYWK3OQA4UDUQQC
WE3JT43OR4L6675GINGU4B3YDBMURJZHDDYY3VLHUJEBAKH2HYEAC
static bool monster_on_level(int monster)
{
for (int i = 0; i < MAX_MONSTERS; i++)
{
if (menv[i].type == monster)
return true;
}
return false;
} // end monster_on_level()
// XXX: Relies on RUNE_xxx == BRANCH_xxx. See rune_type in enum.h.
static bool player_has_rune(branch_type branch)
{
for (int i = 0; i < ENDOFPACK; i++)
if (is_valid_item( you.inv[i] )
&& you.inv[i].base_type == OBJ_MISCELLANY
&& you.inv[i].sub_type == MISC_RUNE_OF_ZOT
&& you.inv[i].plus == branch)
{
return (true);
}
return (false);
}
switch (you.where_are_you)
{
case BRANCH_TOMB:
ret = player_has_rune(you.where_are_you);
break;
case BRANCH_COCYTUS:
case BRANCH_DIS:
case BRANCH_TARTARUS:
case BRANCH_GEHENNA:
if (player_branch_depth() == branches[you.where_are_you].depth)
ret = player_has_rune(you.where_are_you);
break;
case BRANCH_SLIME_PITS:
// Cannot teleport into the slime pit vaults until
// royal jelly is gone.
if (monster_on_level(MONS_ROYAL_JELLY))
ret = false;
break;
case BRANCH_ELVEN_HALLS:
// Cannot raid the elven halls vaults until fountain drained
if (player_branch_depth() == branches[BRANCH_ELVEN_HALLS].depth)
{
for (int x = 5; x < GXM - 5; x++)
{
for (int y = 5; y < GYM - 5; y++)
{
if (grd[x][y] == DNGN_SPARKLING_FOUNTAIN)
ret = false;
}
}
}
break;
case BRANCH_HALL_OF_ZOT:
// Cannot control teleport until the Orb is picked up
if (player_branch_depth() == branches[BRANCH_HALL_OF_ZOT].depth
&& you.char_direction != GDT_ASCENDING)
{
ret = false;
}
break;
default:
break;
}
ret = false;
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
under terms of your choice, so long as that work isn't itself a
parser generator using the skeleton or a modified version thereof
as a parser skeleton. Alternatively, if you modify or redistribute
the parser skeleton itself, you may (at your option) remove this
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
/* As a special exception, when this file is copied by Bison into a
Bison output file, you may use that output file without restriction.
This special exception was added by the Free Software Foundation
in version 1.24 of Bison. */
NAME = 265,
DEPTH = 266,
ORIENT = 267,
PLACE = 268,
CHANCE = 269,
MONS = 270,
ITEM = 271,
MARKER = 272,
PRELUDE = 273,
MAIN = 274,
VALIDATE = 275,
VETO = 276,
NSUBST = 277,
WELCOME = 278,
COMMA = 279,
INTEGER = 280,
CHARACTER = 281,
STRING = 282,
MAP_LINE = 283,
MONSTER_NAME = 284,
ITEM_INFO = 285,
LUA_LINE = 286
KMASK = 265,
NAME = 266,
DEPTH = 267,
ORIENT = 268,
PLACE = 269,
CHANCE = 270,
MONS = 271,
ITEM = 272,
MARKER = 273,
PRELUDE = 274,
MAIN = 275,
VALIDATE = 276,
VETO = 277,
NSUBST = 278,
WELCOME = 279,
LFLAGS = 280,
BFLAGS = 281,
COMMA = 282,
INTEGER = 283,
CHARACTER = 284,
STRING = 285,
MAP_LINE = 286,
MONSTER_NAME = 287,
ITEM_INFO = 288,
LUA_LINE = 289
#define NAME 265
#define DEPTH 266
#define ORIENT 267
#define PLACE 268
#define CHANCE 269
#define MONS 270
#define ITEM 271
#define MARKER 272
#define PRELUDE 273
#define MAIN 274
#define VALIDATE 275
#define VETO 276
#define NSUBST 277
#define WELCOME 278
#define COMMA 279
#define INTEGER 280
#define CHARACTER 281
#define STRING 282
#define MAP_LINE 283
#define MONSTER_NAME 284
#define ITEM_INFO 285
#define LUA_LINE 286
#define KMASK 265
#define NAME 266
#define DEPTH 267
#define ORIENT 268
#define PLACE 269
#define CHANCE 270
#define MONS 271
#define ITEM 272
#define MARKER 273
#define PRELUDE 274
#define MAIN 275
#define VALIDATE 276
#define VETO 277
#define NSUBST 278
#define WELCOME 279
#define LFLAGS 280
#define BFLAGS 281
#define COMMA 282
#define INTEGER 283
#define CHARACTER 284
#define STRING 285
#define MAP_LINE 286
#define MONSTER_NAME 287
#define ITEM_INFO 288
#define LUA_LINE 289
{
typedef union YYSTYPE {
}
/* Line 1529 of yacc.c. */
#line 117 "levcomp.tab.h"
YYSTYPE;
} YYSTYPE;
/* Line 1274 of yacc.c. */
#line 111 "levcomp.tab.h"
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
under terms of your choice, so long as that work isn't itself a
parser generator using the skeleton or a modified version thereof
as a parser skeleton. Alternatively, if you modify or redistribute
the parser skeleton itself, you may (at your option) remove this
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
/* As a special exception, when this file is copied by Bison into a
Bison output file, you may use that output file without restriction.
This special exception was added by the Free Software Foundation
in version 1.24 of Bison. */
NAME = 265,
DEPTH = 266,
ORIENT = 267,
PLACE = 268,
CHANCE = 269,
MONS = 270,
ITEM = 271,
MARKER = 272,
PRELUDE = 273,
MAIN = 274,
VALIDATE = 275,
VETO = 276,
NSUBST = 277,
WELCOME = 278,
COMMA = 279,
INTEGER = 280,
CHARACTER = 281,
STRING = 282,
MAP_LINE = 283,
MONSTER_NAME = 284,
ITEM_INFO = 285,
LUA_LINE = 286
KMASK = 265,
NAME = 266,
DEPTH = 267,
ORIENT = 268,
PLACE = 269,
CHANCE = 270,
MONS = 271,
ITEM = 272,
MARKER = 273,
PRELUDE = 274,
MAIN = 275,
VALIDATE = 276,
VETO = 277,
NSUBST = 278,
WELCOME = 279,
LFLAGS = 280,
BFLAGS = 281,
COMMA = 282,
INTEGER = 283,
CHARACTER = 284,
STRING = 285,
MAP_LINE = 286,
MONSTER_NAME = 287,
ITEM_INFO = 288,
LUA_LINE = 289
#define NAME 265
#define DEPTH 266
#define ORIENT 267
#define PLACE 268
#define CHANCE 269
#define MONS 270
#define ITEM 271
#define MARKER 272
#define PRELUDE 273
#define MAIN 274
#define VALIDATE 275
#define VETO 276
#define NSUBST 277
#define WELCOME 278
#define COMMA 279
#define INTEGER 280
#define CHARACTER 281
#define STRING 282
#define MAP_LINE 283
#define MONSTER_NAME 284
#define ITEM_INFO 285
#define LUA_LINE 286
#define KMASK 265
#define NAME 266
#define DEPTH 267
#define ORIENT 268
#define PLACE 269
#define CHANCE 270
#define MONS 271
#define ITEM 272
#define MARKER 273
#define PRELUDE 274
#define MAIN 275
#define VALIDATE 276
#define VETO 277
#define NSUBST 278
#define WELCOME 279
#define LFLAGS 280
#define BFLAGS 281
#define COMMA 282
#define INTEGER 283
#define CHARACTER 284
#define STRING 285
#define MAP_LINE 286
#define MONSTER_NAME 287
#define ITEM_INFO 288
#define LUA_LINE 289
{
typedef union YYSTYPE {
}
/* Line 193 of yacc.c. */
#line 208 "levcomp.tab.c"
YYSTYPE;
} YYSTYPE;
/* Line 185 of yacc.c. */
#line 194 "levcomp.tab.c"
/* Line 216 of yacc.c. */
#line 221 "levcomp.tab.c"
#ifdef short
# undef short
#endif
#ifdef YYTYPE_INT8
typedef YYTYPE_INT8 yytype_int8;
#elif (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
typedef signed char yytype_int8;
#else
typedef short int yytype_int8;
#endif
/* Line 213 of yacc.c. */
#line 206 "levcomp.tab.c"
#ifdef YYTYPE_INT16
typedef YYTYPE_INT16 yytype_int16;
#else
typedef short int yytype_int16;
#endif
#ifndef YYSIZE_T
# ifdef __SIZE_TYPE__
# define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
# define YYSIZE_T size_t
# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# else
# define YYSIZE_T unsigned int
# ifndef YYFREE
# define YYFREE free
#endif
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
#ifndef YY_
# if YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
# define YY_(msgid) dgettext ("bison-runtime", msgid)
# endif
# ifndef YYMALLOC
# define YYMALLOC malloc
# ifndef YY_
# define YY_(msgid) msgid
# endif
#endif
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
# define YYUSE(e) ((void) (e))
#else
# define YYUSE(e) /* empty */
#endif
/* Identity function, used to suppress warnings about constant conditions. */
#ifndef lint
# define YYID(n) (n)
#else
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static int
YYID (int i)
#else
static int
YYID (i)
int i;
#endif
{
return i;
}
#endif
#if ! defined yyoverflow || YYERROR_VERBOSE
/* Pacify GCC's `empty if-body' warning. */
# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
# ifndef YYSTACK_ALLOC_MAXIMUM
/* The OS might guarantee only one guard page at the bottom of the stack,
and a page size can be as small as 4096 bytes. So we cannot safely
invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
to allow for a few compiler-allocated temporary stack slots. */
# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
# endif
/* Pacify GCC's `empty if-body' warning. */
# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
# define YYSTACK_ALLOC YYMALLOC
# define YYSTACK_FREE YYFREE
# ifndef YYSTACK_ALLOC_MAXIMUM
# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
# endif
# if (defined __cplusplus && ! defined _STDLIB_H \
&& ! ((defined YYMALLOC || defined malloc) \
&& (defined YYFREE || defined free)))
# if defined (__STDC__) || defined (__cplusplus)
# ifndef YYMALLOC
# define YYMALLOC malloc
# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# ifndef YYFREE
# define YYFREE free
# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# define YYSTACK_ALLOC YYMALLOC
# define YYSTACK_FREE YYFREE
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 32
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 61
/* YYNRULES -- Number of rules. */
#define YYNRULES 105
/* YYNRULES -- Number of states. */
#define YYNSTATES 119
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 35
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 64
/* YYNRULES -- Number of rules. */
#define YYNRULES 112
/* YYNRULES -- Number of states. */
#define YYNSTATES 128
62, 64, 66, 68, 70, 72, 74, 76, 79, 80,
83, 85, 88, 89, 92, 94, 97, 98, 101, 103,
106, 107, 110, 112, 115, 116, 119, 121, 123, 126,
128, 131, 133, 136, 139, 141, 145, 147, 150, 151,
154, 156, 157, 161, 163, 164, 167, 169, 172, 174,
178, 180, 183, 185, 189, 191, 193, 196, 200, 202,
204, 206, 209, 213, 215, 217, 220, 222, 225, 228,
230, 233, 236, 238, 241, 243
62, 64, 66, 68, 70, 72, 74, 76, 78, 80,
82, 85, 86, 89, 91, 94, 95, 98, 100, 103,
104, 107, 109, 112, 113, 116, 118, 121, 122, 125,
127, 129, 132, 134, 137, 139, 142, 144, 147, 150,
152, 156, 158, 161, 162, 165, 167, 170, 173, 174,
178, 180, 181, 184, 186, 189, 191, 195, 197, 200,
202, 206, 208, 210, 213, 217, 219, 221, 223, 226,
230, 232, 234, 237, 239, 242, 245, 247, 250, 253,
255, 258, 260
33, 0, -1, 34, -1, -1, 34, 35, -1, 37,
-1, 39, -1, 26, -1, 38, -1, 44, -1, 3,
27, -1, 42, 40, -1, -1, 40, 41, -1, 43,
-1, 90, -1, 10, 27, -1, 85, -1, 86, -1,
87, -1, 88, -1, 89, -1, 82, -1, 79, -1,
68, -1, 76, -1, 73, -1, 62, -1, 65, -1,
59, -1, 61, -1, 60, -1, 47, -1, 56, -1,
50, -1, 53, -1, 36, -1, 19, 45, -1, -1,
45, 46, -1, 31, -1, 19, 48, -1, -1, 48,
49, -1, 31, -1, 20, 51, -1, -1, 51, 52,
-1, 31, -1, 21, 54, -1, -1, 54, 55, -1,
31, -1, 18, 57, -1, -1, 57, 58, -1, 31,
-1, 7, -1, 7, 27, -1, 9, -1, 9, 27,
-1, 8, -1, 8, 27, -1, 4, 63, -1, 64,
-1, 63, 24, 64, -1, 30, -1, 6, 66, -1,
-1, 66, 67, -1, 27, -1, -1, 17, 69, 70,
-1, 71, -1, -1, 71, 72, -1, 27, -1, 22,
74, -1, 75, -1, 74, 24, 75, -1, 30, -1,
5, 77, -1, 78, -1, 78, 24, 77, -1, 30,
-1, 16, -1, 16, 80, -1, 80, 24, 81, -1,
81, -1, 30, -1, 15, -1, 15, 83, -1, 84,
24, 83, -1, 84, -1, 29, -1, 13, 27, -1,
11, -1, 11, 27, -1, 14, 25, -1, 12, -1,
12, 27, -1, 23, 27, -1, 91, -1, 91, 92,
-1, 92, -1, 28, -1
36, 0, -1, 37, -1, -1, 37, 38, -1, 40,
-1, 42, -1, 29, -1, 41, -1, 47, -1, 3,
30, -1, 45, 43, -1, -1, 43, 44, -1, 46,
-1, 96, -1, 11, 30, -1, 91, -1, 92, -1,
93, -1, 94, -1, 95, -1, 88, -1, 85, -1,
74, -1, 82, -1, 79, -1, 66, -1, 69, -1,
72, -1, 73, -1, 62, -1, 64, -1, 63, -1,
65, -1, 50, -1, 59, -1, 53, -1, 56, -1,
39, -1, 20, 48, -1, -1, 48, 49, -1, 34,
-1, 20, 51, -1, -1, 51, 52, -1, 34, -1,
21, 54, -1, -1, 54, 55, -1, 34, -1, 22,
57, -1, -1, 57, 58, -1, 34, -1, 19, 60,
-1, -1, 60, 61, -1, 34, -1, 7, -1, 7,
30, -1, 9, -1, 9, 30, -1, 8, -1, 8,
30, -1, 10, -1, 10, 30, -1, 4, 67, -1,
68, -1, 67, 27, 68, -1, 33, -1, 6, 70,
-1, -1, 70, 71, -1, 30, -1, 25, 30, -1,
26, 30, -1, -1, 18, 75, 76, -1, 77, -1,
-1, 77, 78, -1, 30, -1, 23, 80, -1, 81,
-1, 80, 27, 81, -1, 33, -1, 5, 83, -1,
84, -1, 84, 27, 83, -1, 33, -1, 17, -1,
17, 86, -1, 86, 27, 87, -1, 87, -1, 33,
-1, 16, -1, 16, 89, -1, 90, 27, 89, -1,
90, -1, 32, -1, 14, 30, -1, 12, -1, 12,
30, -1, 15, 28, -1, 13, -1, 13, 30, -1,
24, 30, -1, 97, -1, 97, 98, -1, 98, -1,
31, -1
164, 165, 166, 167, 168, 169, 170, 173, 175, 176,
179, 184, 186, 187, 190, 195, 197, 198, 201, 206,
208, 209, 212, 217, 219, 220, 223, 228, 229, 237,
238, 246, 247, 255, 258, 259, 262, 270, 273, 274,
277, 287, 286, 297, 299, 300, 303, 315, 318, 319,
322, 331, 334, 335, 338, 347, 348, 351, 352, 355,
363, 364, 367, 368, 371, 380, 389, 390, 399, 407,
408, 417, 426, 429, 430, 433
164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
176, 178, 179, 182, 187, 189, 190, 193, 198, 200,
201, 204, 209, 211, 212, 215, 220, 222, 223, 226,
231, 232, 240, 241, 249, 250, 258, 259, 267, 270,
271, 274, 282, 285, 286, 289, 298, 307, 317, 316,
327, 329, 330, 333, 345, 348, 349, 352, 361, 364,
365, 368, 377, 378, 381, 382, 385, 393, 394, 397,
398, 401, 410, 419, 420, 429, 437, 438, 447, 456,
459, 460, 463
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
#if YYDEBUG || YYERROR_VERBOSE
/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
"TAGS", "KFEAT", "KITEM", "KMONS", "NAME", "DEPTH", "ORIENT", "PLACE",
"CHANCE", "MONS", "ITEM", "MARKER", "PRELUDE", "MAIN", "VALIDATE",
"VETO", "NSUBST", "WELCOME", "COMMA", "INTEGER", "CHARACTER", "STRING",
"MAP_LINE", "MONSTER_NAME", "ITEM_INFO", "LUA_LINE", "$accept", "file",
"definitions", "definition", "error_seq", "def", "defdepth", "level",
"map_specs", "map_spec", "name", "metaline", "global_lua",
"global_lua_lines", "global_lua_line", "main_lua", "main_lua_lines",
"main_lua_line", "validate_lua", "validate_lua_lines",
"validate_lua_line", "veto_lua", "veto_lua_lines", "veto_lua_line",
"prelude_lua", "prelude_lua_lines", "prelude_lua_line", "kfeat", "kmons",
"kitem", "shuffle", "shuffle_specifiers", "shuffle_spec", "tags",
"tagstrings", "tagstring", "marker", "@1", "marker_spec",
"mspec_segments", "mspec_segment", "nsubst", "nsubst_specifiers",
"nsubst_spec", "subst", "subst_specifiers", "subst_spec", "items",
"item_specifiers", "item_specifier", "mons", "mnames", "mname", "place",
"depth", "chance", "orientation", "welcome", "map_def", "map_lines",
"map_line", 0
"TAGS", "KFEAT", "KITEM", "KMONS", "KMASK", "NAME", "DEPTH", "ORIENT",
"PLACE", "CHANCE", "MONS", "ITEM", "MARKER", "PRELUDE", "MAIN",
"VALIDATE", "VETO", "NSUBST", "WELCOME", "LFLAGS", "BFLAGS", "COMMA",
"INTEGER", "CHARACTER", "STRING", "MAP_LINE", "MONSTER_NAME",
"ITEM_INFO", "LUA_LINE", "$accept", "file", "definitions", "definition",
"error_seq", "def", "defdepth", "level", "map_specs", "map_spec", "name",
"metaline", "global_lua", "global_lua_lines", "global_lua_line",
"main_lua", "main_lua_lines", "main_lua_line", "validate_lua",
"validate_lua_lines", "validate_lua_line", "veto_lua", "veto_lua_lines",
"veto_lua_line", "prelude_lua", "prelude_lua_lines", "prelude_lua_line",
"kfeat", "kmons", "kitem", "kmask", "shuffle", "shuffle_specifiers",
"shuffle_spec", "tags", "tagstrings", "tagstring", "lflags", "bflags",
"marker", "@1", "marker_spec", "mspec_segments", "mspec_segment",
"nsubst", "nsubst_specifiers", "nsubst_spec", "subst",
"subst_specifiers", "subst_spec", "items", "item_specifiers",
"item_specifier", "mons", "mnames", "mname", "place", "depth", "chance",
"orientation", "welcome", "map_def", "map_lines", "map_line", 0
0, 32, 33, 34, 34, 35, 35, 36, 37, 37,
38, 39, 40, 40, 41, 41, 42, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 44, 45, 45,
46, 47, 48, 48, 49, 50, 51, 51, 52, 53,
54, 54, 55, 56, 57, 57, 58, 59, 59, 60,
60, 61, 61, 62, 63, 63, 64, 65, 66, 66,
67, 69, 68, 70, 71, 71, 72, 73, 74, 74,
75, 76, 77, 77, 78, 79, 79, 80, 80, 81,
82, 82, 83, 83, 84, 85, 86, 86, 87, 88,
88, 89, 90, 91, 91, 92
0, 35, 36, 37, 37, 38, 38, 39, 40, 40,
41, 42, 43, 43, 44, 44, 45, 46, 46, 46,
46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
47, 48, 48, 49, 50, 51, 51, 52, 53, 54,
54, 55, 56, 57, 57, 58, 59, 60, 60, 61,
62, 62, 63, 63, 64, 64, 65, 65, 66, 67,
67, 68, 69, 70, 70, 71, 72, 73, 75, 74,
76, 77, 77, 78, 79, 80, 80, 81, 82, 83,
83, 84, 85, 85, 86, 86, 87, 88, 88, 89,
89, 90, 91, 92, 92, 93, 94, 94, 95, 96,
97, 97, 98
1, 1, 1, 1, 1, 1, 1, 2, 0, 2,
1, 2, 0, 2, 1, 2, 0, 2, 1, 2,
0, 2, 1, 2, 0, 2, 1, 1, 2, 1,
2, 1, 2, 2, 1, 3, 1, 2, 0, 2,
1, 0, 3, 1, 0, 2, 1, 2, 1, 3,
1, 2, 1, 3, 1, 1, 2, 3, 1, 1,
1, 2, 3, 1, 1, 2, 1, 2, 2, 1,
2, 2, 1, 2, 1, 1
2, 0, 2, 1, 2, 0, 2, 1, 2, 0,
2, 1, 2, 0, 2, 1, 2, 0, 2, 1,
1, 2, 1, 2, 1, 2, 1, 2, 2, 1,
3, 1, 2, 0, 2, 1, 2, 2, 0, 3,
1, 0, 2, 1, 2, 1, 3, 1, 2, 1,
3, 1, 1, 2, 3, 1, 1, 1, 2, 3,
1, 1, 2, 1, 2, 2, 1, 2, 2, 1,
2, 1, 1
3, 0, 2, 1, 0, 0, 38, 4, 5, 8,
6, 12, 9, 10, 16, 37, 11, 40, 39, 0,
0, 68, 57, 61, 59, 96, 99, 0, 0, 90,
85, 71, 54, 42, 46, 50, 0, 0, 7, 105,
36, 13, 14, 32, 34, 35, 33, 29, 31, 30,
27, 28, 24, 26, 25, 23, 22, 17, 18, 19,
20, 21, 15, 102, 104, 66, 63, 64, 84, 81,
82, 67, 58, 62, 60, 97, 100, 95, 98, 94,
91, 93, 89, 86, 88, 74, 53, 41, 45, 49,
80, 77, 78, 101, 103, 0, 0, 70, 69, 0,
0, 72, 73, 56, 55, 44, 43, 48, 47, 52,
51, 0, 65, 83, 92, 87, 76, 75, 79
3, 0, 2, 1, 0, 0, 41, 4, 5, 8,
6, 12, 9, 10, 16, 40, 11, 43, 42, 0,
0, 73, 60, 64, 62, 66, 103, 106, 0, 0,
97, 92, 78, 57, 45, 49, 53, 0, 0, 0,
0, 7, 112, 39, 13, 14, 35, 37, 38, 36,
31, 33, 32, 34, 27, 28, 29, 30, 24, 26,
25, 23, 22, 17, 18, 19, 20, 21, 15, 109,
111, 71, 68, 69, 91, 88, 89, 72, 61, 65,
63, 67, 104, 107, 102, 105, 101, 98, 100, 96,
93, 95, 81, 56, 44, 48, 52, 87, 84, 85,
108, 76, 77, 110, 0, 0, 75, 74, 0, 0,
79, 80, 59, 58, 47, 46, 51, 50, 55, 54,
0, 70, 90, 99, 94, 83, 82, 86
-1, 1, 2, 7, 40, 8, 9, 10, 16, 41,
11, 42, 12, 15, 18, 43, 87, 106, 44, 88,
108, 45, 89, 110, 46, 86, 104, 47, 48, 49,
50, 66, 67, 51, 71, 98, 52, 85, 101, 102,
117, 53, 91, 92, 54, 69, 70, 55, 83, 84,
56, 80, 81, 57, 58, 59, 60, 61, 62, 63,
64
-1, 1, 2, 7, 43, 8, 9, 10, 16, 44,
11, 45, 12, 15, 18, 46, 94, 115, 47, 95,
117, 48, 96, 119, 49, 93, 113, 50, 51, 52,
53, 54, 72, 73, 55, 77, 107, 56, 57, 58,
92, 110, 111, 126, 59, 98, 99, 60, 75, 76,
61, 90, 91, 62, 87, 88, 63, 64, 65, 66,
67, 68, 69, 70
#define YYPACT_NINF -64
static const yytype_int8 yypact[] =
#define YYPACT_NINF -68
static const yysigned_char yypact[] =
-64, 6, 17, -64, -6, -2, -64, -64, -64, -64,
-64, -64, -64, -64, -64, -8, -4, -64, -64, -1,
0, -64, 1, 4, 5, 7, 8, 10, 13, -3,
3, -64, -64, -64, -64, -64, 9, 14, -64, -64,
-64, -64, -64, -64, -64, -64, -64, -64, -64, -64,
-64, -64, -64, -64, -64, -64, -64, -64, -64, -64,
-64, -64, -64, 12, -64, -64, 18, -64, -64, -64,
19, 20, -64, -64, -64, -64, -64, -64, -64, -64,
-64, 21, -64, 22, -64, -64, 23, 24, 25, 26,
-64, 27, -64, -64, -64, -1, 0, -64, -64, -3,
3, -64, 31, -64, -64, -64, -64, -64, -64, -64,
-64, 9, -64, -64, -64, -64, -64, -64, -64
-68, 7, 20, -68, -6, -2, -68, -68, -68, -68,
-68, -68, -68, -68, -68, -8, -4, -68, -68, -3,
-1, -68, 3, 4, 5, 6, 8, 9, 11, 1,
10, 12, -68, -68, -68, -68, -68, 13, 14, 17,
18, -68, -68, -68, -68, -68, -68, -68, -68, -68,
-68, -68, -68, -68, -68, -68, -68, -68, -68, -68,
-68, -68, -68, -68, -68, -68, -68, -68, -68, 19,
-68, -68, 16, -68, -68, -68, 22, 21, -68, -68,
-68, -68, -68, -68, -68, -68, -68, -68, 25, -68,
26, -68, -68, 23, 24, 27, 28, -68, 29, -68,
-68, -68, -68, -68, -3, -1, -68, -68, 10, 12,
-68, 30, -68, -68, -68, -68, -68, -68, -68, -68,
13, -68, -68, -68, -68, -68, -68, -68
-64, -64, -64, -64, -64, -64, -64, -64, -64, -64,
-64, -64, -64, -64, -64, -64, -64, -64, -64, -64,
-64, -64, -64, -64, -64, -64, -64, -64, -64, -64,
-64, -64, -51, -64, -64, -64, -64, -64, -64, -64,
-64, -64, -64, -63, -64, -47, -64, -64, -64, -50,
-64, -46, -64, -64, -64, -64, -64, -64, -64, -64,
-11
-68, -68, -68, -68, -68, -68, -68, -68, -68, -68,
-68, -68, -68, -68, -68, -68, -68, -68, -68, -68,
-68, -68, -68, -68, -68, -68, -68, -68, -68, -68,
-68, -68, -68, -67, -68, -68, -68, -68, -68, -68,
-68, -68, -68, -68, -68, -68, -66, -68, -50, -68,
-68, -68, -46, -68, -49, -68, -68, -68, -68, -68,
-68, -68, -68, -5
4, 13, 38, 17, 39, 14, 79, 5, 72, 65,
68, 73, 74, 82, 75, 76, 6, 77, 78, 90,
39, 93, 95, 96, 112, 99, 100, 97, 118, 113,
115, 111, 94, 114, 103, 105, 107, 109, 116
38, 39, 40, 4, 13, 41, 17, 42, 14, 85,
71, 5, 74, 78, 79, 80, 81, 121, 82, 83,
6, 84, 86, 104, 100, 89, 97, 101, 102, 105,
42, 106, 108, 109, 127, 122, 120, 112, 114, 123,
125, 116, 118, 124, 103
3, 27, 26, 31, 28, 27, 29, 10, 27, 30,
30, 27, 27, 30, 27, 27, 19, 27, 25, 30,
28, 27, 24, 24, 95, 24, 24, 27, 111, 96,
100, 24, 63, 99, 31, 31, 31, 31, 27
24, 25, 26, 3, 30, 29, 34, 31, 30, 28,
33, 11, 33, 30, 30, 30, 30, 104, 30, 30,
20, 30, 32, 27, 30, 33, 33, 30, 30, 27,
31, 30, 27, 27, 120, 105, 27, 34, 34, 108,
30, 34, 34, 109, 69
0, 33, 34, 0, 3, 10, 19, 35, 37, 38,
39, 42, 44, 27, 27, 45, 40, 31, 46, 4,
5, 6, 7, 8, 9, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 26, 28,
36, 41, 43, 47, 50, 53, 56, 59, 60, 61,
62, 65, 68, 73, 76, 79, 82, 85, 86, 87,
88, 89, 90, 91, 92, 30, 63, 64, 30, 77,
78, 66, 27, 27, 27, 27, 27, 27, 25, 29,
83, 84, 30, 80, 81, 69, 57, 48, 51, 54,
30, 74, 75, 27, 92, 24, 24, 27, 67, 24,
24, 70, 71, 31, 58, 31, 49, 31, 52, 31,
55, 24, 64, 77, 83, 81, 27, 72, 75
0, 36, 37, 0, 3, 11, 20, 38, 40, 41,
42, 45, 47, 30, 30, 48, 43, 34, 49, 4,
5, 6, 7, 8, 9, 10, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 29, 31, 39, 44, 46, 50, 53, 56, 59,
62, 63, 64, 65, 66, 69, 72, 73, 74, 79,
82, 85, 88, 91, 92, 93, 94, 95, 96, 97,
98, 33, 67, 68, 33, 83, 84, 70, 30, 30,
30, 30, 30, 30, 30, 28, 32, 89, 90, 33,
86, 87, 75, 60, 51, 54, 57, 33, 80, 81,
30, 30, 30, 98, 27, 27, 30, 71, 27, 27,
76, 77, 34, 61, 34, 52, 34, 55, 34, 58,
27, 68, 83, 89, 87, 30, 78, 81
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
# define YYSIZE_T __SIZE_TYPE__
#endif
#if ! defined (YYSIZE_T) && defined (size_t)
# define YYSIZE_T size_t
#endif
#if ! defined (YYSIZE_T)
# if defined (__STDC__) || defined (__cplusplus)
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# endif
#endif
#if ! defined (YYSIZE_T)
# define YYSIZE_T unsigned int
#endif
# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
do { \
if (yydebug) \
{ \
YYFPRINTF (stderr, "%s ", Title); \
yy_symbol_print (stderr, \
Type, Value); \
YYFPRINTF (stderr, "\n"); \
} \
} while (YYID (0))
/*--------------------------------.
| Print this symbol on YYOUTPUT. |
`--------------------------------*/
# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
do { \
if (yydebug) \
{ \
YYFPRINTF (stderr, "%s ", Title); \
yysymprint (stderr, \
Type, Value); \
YYFPRINTF (stderr, "\n"); \
} \
} while (0)
/*ARGSUSED*/
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static void
yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
#else
static void
yy_symbol_value_print (yyoutput, yytype, yyvaluep)
FILE *yyoutput;
int yytype;
YYSTYPE const * const yyvaluep;
#endif
{
if (!yyvaluep)
return;
# ifdef YYPRINT
if (yytype < YYNTOKENS)
YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
# else
YYUSE (yyoutput);
# endif
switch (yytype)
{
default:
break;
}
}
/*--------------------------------.
| Print this symbol on YYOUTPUT. |
`--------------------------------*/
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static void
yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
#else
static void
yy_symbol_print (yyoutput, yytype, yyvaluep)
FILE *yyoutput;
int yytype;
YYSTYPE const * const yyvaluep;
#endif
{
if (yytype < YYNTOKENS)
YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
else
YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
yy_symbol_value_print (yyoutput, yytype, yyvaluep);
YYFPRINTF (yyoutput, ")");
}
unsigned long int yylno = yyrline[yyrule];
YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
yyrule - 1, yylno);
/* The symbols being reduced. */
for (yyi = 0; yyi < yynrhs; yyi++)
{
fprintf (stderr, " $%d = ", yyi + 1);
yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
&(yyvsp[(yyi + 1) - (yynrhs)])
);
fprintf (stderr, "\n");
}
unsigned int yylno = yyrline[yyrule];
YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
yyrule - 1, yylno);
/* Print the symbols being reduced, and their result. */
for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
# ifndef yytnamerr
/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
quotes and backslashes, so that it's suitable for yyerror. The
heuristic is that double-quoting is unnecessary unless the string
contains an apostrophe, a comma, or backslash (other than
backslash-backslash). YYSTR is taken from yytname. If YYRES is
null, do not copy; instead, return the length of what the result
would have been. */
static YYSIZE_T
yytnamerr (char *yyres, const char *yystr)
{
if (*yystr == '"')
{
YYSIZE_T yyn = 0;
char const *yyp = yystr;
#endif /* !YYERROR_VERBOSE */
case '\\':
if (*++yyp != '\\')
goto do_not_strip_quotes;
/* Fall through. */
default:
if (yyres)
yyres[yyn] = *yyp;
yyn++;
break;
case '"':
if (yyres)
yyres[yyn] = '\0';
return yyn;
}
do_not_strip_quotes: ;
}
if (! yyres)
return yystrlen (yystr);
return yystpcpy (yyres, yystr) - yyres;
}
# endif
#if YYDEBUG
/*--------------------------------.
| Print this symbol on YYOUTPUT. |
`--------------------------------*/
/* Copy into YYRESULT an error message about the unexpected token
YYCHAR while in state YYSTATE. Return the number of bytes copied,
including the terminating null byte. If YYRESULT is null, do not
copy anything; just return the number of bytes that would be
copied. As a special case, return 0 if an ordinary "syntax error"
message will do. Return YYSIZE_MAXIMUM if overflow occurs during
size calculation. */
static YYSIZE_T
yysyntax_error (char *yyresult, int yystate, int yychar)
#if defined (__STDC__) || defined (__cplusplus)
static void
yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
#else
static void
yysymprint (yyoutput, yytype, yyvaluep)
FILE *yyoutput;
int yytype;
YYSTYPE *yyvaluep;
#endif
{
int yytype = YYTRANSLATE (yychar);
YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
YYSIZE_T yysize = yysize0;
YYSIZE_T yysize1;
int yysize_overflow = 0;
enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
int yyx;
# if 0
/* This is so xgettext sees the translatable formats that are
constructed on the fly. */
YY_("syntax error, unexpected %s");
YY_("syntax error, unexpected %s, expecting %s");
YY_("syntax error, unexpected %s, expecting %s or %s");
YY_("syntax error, unexpected %s, expecting %s or %s or %s");
YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
# endif
char *yyfmt;
char const *yyf;
static char const yyunexpected[] = "syntax error, unexpected %s";
static char const yyexpecting[] = ", expecting %s";
static char const yyor[] = " or %s";
char yyformat[sizeof yyunexpected
+ sizeof yyexpecting - 1
+ ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
* (sizeof yyor - 1))];
char const *yyprefix = yyexpecting;
/* Start YYX at -YYN if negative to avoid negative indexes in
YYCHECK. */
int yyxbegin = yyn < 0 ? -yyn : 0;
YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
yyarg[0] = yytname[yytype];
yyfmt = yystpcpy (yyformat, yyunexpected);
for (yyx = yyxbegin; yyx < yyxend; ++yyx)
if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
{
if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
{
yycount = 1;
yysize = yysize0;
yyformat[sizeof yyunexpected - 1] = '\0';
break;
}
yyarg[yycount++] = yytname[yyx];
yysize1 = yysize + yytnamerr (0, yytname[yyx]);
yysize_overflow |= (yysize1 < yysize);
yysize = yysize1;
yyfmt = yystpcpy (yyfmt, yyprefix);
yyprefix = yyor;
}
yyf = YY_(yyformat);
yysize1 = yysize + yystrlen (yyf);
yysize_overflow |= (yysize1 < yysize);
yysize = yysize1;
if (yysize_overflow)
return YYSIZE_MAXIMUM;
if (yyresult)
{
/* Avoid sprintf, as that infringes on the user's name space.
Don't have undefined behavior even if the translation
produced a string with the wrong number of "%s"s. */
char *yyp = yyresult;
int yyi = 0;
while ((*yyp = *yyf) != '\0')
{
if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
{
yyp += yytnamerr (yyp, yyarg[yyi++]);
yyf += 2;
}
else
{
yyp++;
yyf++;
}
}
}
return yysize;
# ifdef YYPRINT
if (yytype < YYNTOKENS)
YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
# endif
switch (yytype)
{
default:
break;
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
int
yyparse (void *YYPARSE_PARAM)
#else
int
yyparse (YYPARSE_PARAM)
void *YYPARSE_PARAM;
#endif
# if defined (__STDC__) || defined (__cplusplus)
int yyparse (void *YYPARSE_PARAM)
# else
int yyparse (YYPARSE_PARAM)
void *YYPARSE_PARAM;
# endif
/* Do appropriate processing given the current state. Read a
look-ahead token if we need one and don't already have one. */
/* Do appropriate processing given the current state. */
/* Read a look-ahead token if we need one and don't already have one. */
/* yyresume: */
/* Count tokens shifted since error; after three, turn off error
status. */
if (yyerrstatus)
yyerrstatus--;
quote_lua_string((yyvsp[(2) - (2)].text)).c_str()));
quote_lua_string((yyvsp[0].text)).c_str()));
}
break;
case 66:
#line 258 "levcomp.ypp"
{ }
break;
case 67:
#line 260 "levcomp.ypp"
{
lc_map.main.add(
yylineno,
make_stringf("kmask(\"%s\")",
quote_lua_string((yyvsp[0].text)).c_str()));
/* Line 1267 of yacc.c. */
#line 2019 "levcomp.tab.c"
default: break;
#if ! YYERROR_VERBOSE
yyerror (YY_("syntax error"));
#else
{
YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
{
YYSIZE_T yyalloc = 2 * yysize;
if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
yyalloc = YYSTACK_ALLOC_MAXIMUM;
if (yymsg != yymsgbuf)
YYSTACK_FREE (yymsg);
yymsg = (char *) YYSTACK_ALLOC (yyalloc);
if (yymsg)
yymsg_alloc = yyalloc;
else
#if YYERROR_VERBOSE
yyn = yypact[yystate];
if (YYPACT_NINF < yyn && yyn < YYLAST)
{
YYSIZE_T yysize = 0;
int yytype = YYTRANSLATE (yychar);
const char* yyprefix;
char *yymsg;
int yyx;
/* Start YYX at -YYN if negative to avoid negative indexes in
YYCHECK. */
int yyxbegin = yyn < 0 ? -yyn : 0;
/* Stay within bounds of both yycheck and yytname. */
int yychecklim = YYLAST - yyn;
int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
int yycount = 0;
yyprefix = ", expecting ";
for (yyx = yyxbegin; yyx < yyxend; ++yyx)
if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
if (0 < yysize && yysize <= yymsg_alloc)
{
(void) yysyntax_error (yymsg, yystate, yychar);
yyerror (yymsg);
}
else
{
yyerror (YY_("syntax error"));
if (yysize != 0)
goto yyexhaustedlab;
}
}
#endif
if (yycount < 5)
{
yyprefix = ", expecting ";
for (yyx = yyxbegin; yyx < yyxend; ++yyx)
if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
{
yyp = yystpcpy (yyp, yyprefix);
yyp = yystpcpy (yyp, yytname[yyx]);
yyprefix = " or ";
}
}
yyerror (yymsg);
YYSTACK_FREE (yymsg);
}
else
yyerror ("syntax error; also virtual memory exhausted");
}
else
#endif /* YYERROR_VERBOSE */
yyerror ("syntax error");
/* Pacify compilers like GCC when the user code never invokes
YYERROR and the label yyerrorlab therefore never appears in user
code. */
if (/*CONSTCOND*/ 0)
#ifdef __GNUC__
/* Pacify GCC when the user code never invokes YYERROR and the label
yyerrorlab therefore never appears in user code. */
if (0)
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
yyexhaustedlab:
yyerror (YY_("memory exhausted"));
/*----------------------------------------------.
| yyoverflowlab -- parser overflow comes here. |
`----------------------------------------------*/
yyoverflowlab:
yyerror ("parser stack overflow");
if (yychar != YYEOF && yychar != YYEMPTY)
yydestruct ("Cleanup: discarding lookahead",
yytoken, &yylval);
/* Do not reclaim the symbols of the rule which action triggered
this YYABORT or YYACCEPT. */
YYPOPSTACK (yylen);
YY_STACK_PRINT (yyss, yyssp);
while (yyssp != yyss)
{
yydestruct ("Cleanup: popping",
yystos[*yyssp], yyvsp);
YYPOPSTACK (1);
}
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
* if you want the limit (max/min) macros for int types.
*/
#ifndef __STDC_LIMIT_MACROS
#define __STDC_LIMIT_MACROS 1
/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
#ifdef c_plusplus
#ifndef __cplusplus
#define __cplusplus
#endif
#include <inttypes.h>
typedef int8_t flex_int8_t;
typedef uint8_t flex_uint8_t;
typedef int16_t flex_int16_t;
typedef uint16_t flex_uint16_t;
typedef int32_t flex_int32_t;
typedef uint32_t flex_uint32_t;
#else
typedef signed char flex_int8_t;
typedef short int flex_int16_t;
typedef int flex_int32_t;
typedef unsigned char flex_uint8_t;
typedef unsigned short int flex_uint16_t;
typedef unsigned int flex_uint32_t;
#endif /* ! C99 */
/* Limits of integral types. */
#ifndef INT8_MIN
#define INT8_MIN (-128)
#endif
#ifndef INT16_MIN
#define INT16_MIN (-32767-1)
#endif
#ifndef INT32_MIN
#define INT32_MIN (-2147483647-1)
#endif
#ifndef INT8_MAX
#define INT8_MAX (127)
#endif
#ifndef INT16_MAX
#define INT16_MAX (32767)
#endif
#ifndef INT32_MAX
#define INT32_MAX (2147483647)
#endif
#ifndef UINT8_MAX
#define UINT8_MAX (255U)
#endif
#ifndef UINT16_MAX
#define UINT16_MAX (65535U)
#endif
#ifndef UINT32_MAX
#define UINT32_MAX (4294967295U)
#endif
#ifdef __cplusplus
#endif
/* The state buf must be large enough to hold one state per character in the main buffer.
*/
#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
/* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
* access to the local variable yy_act. Since yyless() is a macro, it would break
* existing scanners that call yyless() from OUTSIDE yylex.
* One obvious solution it to make yy_act a global. I tried that, and saw
* a 5% performance hit in a non-yylineno scanner, because yy_act is
* normally declared as a register variable-- so it is not worth it.
*/
#define YY_LESS_LINENO(n) \
do { \
int yyl;\
for ( yyl = n; yyl < yyleng; ++yyl )\
if ( yytext[yyl] == '\n' )\
--yylineno;\
}while(0)
/* Return all but the first "n" matched characters back to the input stream. */
/* The funky do-while in the following #define is used to turn the definition
* int a single C statement (which needs a semi-colon terminator). This
* avoids problems with code like:
*
* if ( condition_holds )
* yyless( 5 );
* else
* do_something_else();
*
* Prior to using the do-while the compiler would get upset at the
* "else" because it interpreted the "if" statement as being all
* done when it reached the ';' after the yyless() call.
*/
/* Return all but the first 'n' matched characters back to the input stream. */
/* Stack of input buffers. */
static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
static YY_BUFFER_STATE yy_current_buffer = 0;
void yyrestart (FILE *input_file );
void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
void yy_delete_buffer (YY_BUFFER_STATE b );
void yy_flush_buffer (YY_BUFFER_STATE b );
void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
void yypop_buffer_state (void );
#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
void yy_load_buffer_state YY_PROTO(( void ));
YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
if ( ! YY_CURRENT_BUFFER ){ \
yyensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \
yy_create_buffer(yyin,YY_BUF_SIZE ); \
} \
YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
if ( ! yy_current_buffer ) \
yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
yy_current_buffer->yy_is_interactive = is_interactive; \
if ( ! YY_CURRENT_BUFFER ){\
yyensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \
yy_create_buffer(yyin,YY_BUF_SIZE ); \
} \
YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
if ( ! yy_current_buffer ) \
yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
yy_current_buffer->yy_at_bol = at_bol; \
static yy_state_type yy_get_previous_state (void );
static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
static int yy_get_next_buffer (void );
static void yy_fatal_error (yyconst char msg[] );
static yy_state_type yy_get_previous_state YY_PROTO(( void ));
static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
static int yy_get_next_buffer YY_PROTO(( void ));
static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
#define YY_NUM_RULES 62
#define YY_END_OF_BUFFER 63
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
{
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
static yyconst flex_int16_t yy_accept[782] =
#define YY_NUM_RULES 65
#define YY_END_OF_BUFFER 66
static yyconst short int yy_acclist[902] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 63, 61,
59, 60, 61, 57, 58, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61, 59, 30,
32, 61, 61, 61, 61, 61, 61, 62, 6, 62,
62, 4, 2, 3, 62, 2, 2, 2, 2, 9,
10, 62, 9, 9, 62, 12, 62, 61, 26, 61,
57, 58, 61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 30, 32, 61, 61, 61,
61, 61, 61, 61, 24, 21, 24, 23, 58, 61,
66, 64, 65, 62, 64, 65, 63, 65, 64, 65,
60, 64, 65, 61, 64, 65, 64, 65, 64, 65,
64, 65, 64, 65, 64, 65, 64, 65, 64, 65,
64, 65, 64, 65, 64, 65, 64, 65, 64, 65,
64, 65, 64, 65, 64, 65, 62, 64, 65, 30,
64, 65, 32, 64, 65, 64, 65, 64, 65, 64,
65, 64, 65, 64, 65, 64, 65, 65, 6, 65,
65, 65, 4, 65, 2, 65, 3, 6, 65, 65,
2, 65, 2, 4, 65, 2, 65, 2, 65, 9,
65, 10, 65, 65, 9, 65, 9, 65, 65, 12,
61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 24, 30, 32, 61, 61, 61, 61, 61,
61, 14, 15, 61, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 14,
13, 13, 13, 13, 13, 17, 19, 20, 62, 18,
62, 29, 62, 62, 59, 60, 58, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 59, 30, 32, 0, 0,
0, 0, 30, 0, 0, 0, 0, 0, 0, 0,
35, 6, 5, 0, 0, 2, 3, 2, 0, 2,
65, 65, 64, 65, 26, 63, 65, 64, 65, 60,
64, 65, 61, 64, 65, 64, 65, 64, 65, 64,
65, 64, 65, 64, 65, 64, 65, 64, 65, 64,
65, 64, 65, 64, 65, 64, 65, 64, 65, 64,
65, 64, 65, 64, 65, 30, 64, 65, 32, 64,
65, 64, 65, 64, 65, 64, 65, 64, 65, 64,
65, 64, 65, 64, 65, 24, 62, 64, 65, 21,
63, 65, 24, 64, 65, 23, 60, 64, 65, 61,
64, 65, 64, 65, 64, 65, 64, 65, 64, 65,
64, 65, 64, 65, 64, 65, 64, 65, 64, 65,
2, 2, 2, 9, 9, 10, 9, 9, 9, 0,
11, 12, 25, 0, 26, 25, 25, 25, 25, 25,
64, 65, 64, 65, 64, 65, 64, 65, 64, 65,
64, 65, 24, 62, 64, 65, 30, 64, 65, 32,
64, 65, 64, 65, 64, 65, 64, 65, 64, 65,
64, 65, 64, 65, 14, 62, 64, 65, 15, 63,
65, 64, 65, 13, 64, 65, 13, 61, 64, 65,
13, 64, 65, 13, 64, 65, 13, 64, 65, 13,
64, 65, 13, 64, 65, 13, 64, 65, 13, 64,
65, 13, 64, 65, 13, 64, 65, 13, 64, 65,
13, 64, 65, 13, 64, 65, 13, 64, 65, 13,
64, 65, 13, 64, 65, 14, 62, 64, 65, 13,
64, 65, 13, 64, 65, 13, 64, 65, 13, 64,
65, 13, 64, 65, 17, 65, 19, 65, 20, 65,
65, 18, 65, 65, 29, 65, 65, 65, 62, 63,
61, 62, 30, 32, 30, 35, 6, 5, 2, 3,
6, 2, 5, 2, 2, 2, 2, 9, 9, 10,
9, 9, 9, 11, 12, 25, 26, 63, 25, 61,
25, 25, 25, 25, 25, 30, 25, 25, 25, 25,
25, 25, 25, 25, 0, 24, 21, 24, 21, 58,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 24, 30,
0, 0, 0, 0, 0, 0, 0, 35, 14, 15,
0, 15, 13, 13, 13, 13, 13, 13, 13, 13,
25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
25, 30, 30, 25, 25, 25, 25, 25, 25, 25,
25, 35, 24, 62, 21, 24, 21, 63, 61, 24,
62, 30, 35, 14, 62, 15, 15, 63, 13, 13,
61, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 14, 13, 13, 13, 13, 13, 13, 13,
16, 0, 19, 20, 0, 0, 28, 0, 28, 0,
27, 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, 2, 9, 9, 9,
7, 25, 25, 25, 25, 25, 25, 25, 25, 25,
13, 14, 62, 13, 13, 13, 13, 13, 13, 13,
16, 19, 20, 28, 28, 29, 27, 28, 2, 9,
9, 9, 7, 25, 25, 25, 25, 25, 25, 25,
25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 31, 0, 0, 0, 0, 0, 2, 9, 8,
9, 7, 25, 25, 25, 25, 25, 25, 25, 25,
13, 13, 13, 13, 31, 2, 9, 8, 9, 7,
8, 25, 25, 25, 25, 25, 25, 25, 25, 25,
13, 13, 13, 13, 0, 0, 0, 51, 0, 0,
0, 0, 50, 38, 0, 0, 0, 0, 0, 47,
0, 0, 0, 34, 0, 0, 0, 0, 2, 25,
25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
25, 0, 25, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
13, 13, 13, 13, 13, 13, 13, 13, 53, 52,
38, 47, 34, 2, 25, 25, 25, 25, 25, 53,
25, 25, 25, 25, 25, 25, 25, 52, 25, 38,
25, 25, 25, 25, 25, 25, 47, 25, 25, 25,
25, 34, 25, 25, 25, 22, 22, 22, 22, 22,
53, 22, 22, 22, 22, 22, 22, 22, 52, 22,
38, 22, 22, 22, 22, 22, 22, 47, 22, 22,
22, 22, 34, 22, 22, 22, 13, 13, 13, 13,
13, 13, 13, 13, 0, 40, 46, 54, 55, 56,
0, 0, 0, 42, 0, 48, 0, 0, 0, 0,
0, 37, 1, 25, 25, 25, 25, 25, 25, 25,
25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
25, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 44,
52, 49, 41, 0, 45, 0, 0, 0, 0, 1,
13, 13, 13, 13, 13, 13, 40, 46, 56, 57,
59, 58, 42, 50, 37, 1, 2, 25, 25, 25,
40, 25, 46, 25, 56, 25, 57, 25, 59, 25,
58, 25, 25, 25, 25, 25, 42, 25, 25, 50,
25, 25, 25, 25, 25, 25, 37, 22, 22, 22,
40, 22, 46, 22, 56, 22, 57, 22, 59, 22,
58, 22, 22, 22, 22, 22, 42, 22, 22, 50,
22, 22, 22, 22, 22, 22, 37, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 49,
44, 48, 54, 51, 41, 45, 1, 2, 25, 49,
25, 44, 25, 48, 25, 54, 25, 51, 25, 41,
25, 25, 45, 25, 25, 25, 25, 22, 49, 22,
44, 22, 48, 22, 54, 22, 51, 22, 41, 22,
22, 45, 22, 22, 22, 22, 13, 13, 13, 13,
13, 55, 43, 25, 55, 25, 43, 25, 25, 25,
22, 55, 22, 43, 22, 22, 22, 13, 13, 33,
25, 25, 33, 25, 22, 22, 33, 22, 13, 36,
25, 25, 36, 22, 22, 36, 13, 25, 22, 13,
25, 22, 13, 25, 22, 13, 39, 25, 39, 22,
39
} ;
static yyconst short int yy_accept[852] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
4, 7, 9, 11, 14, 17, 19, 21, 23, 25,
27, 29, 31, 33, 35, 37, 39, 41, 43, 45,
47, 50, 53, 56, 58, 60, 62, 64, 66, 68,
69, 71, 72, 73, 75, 77, 80, 81, 83, 86,
88, 90, 92, 94, 95, 97, 99, 100, 102, 103,
105, 108, 110, 113, 116, 118, 120, 122, 124, 126,
128, 130, 132, 134, 136, 138, 140, 142, 144, 146,
149, 152, 154, 156, 158, 160, 162, 164, 166, 170,
173, 176, 180, 183, 185, 187, 189, 191, 193, 195,
197, 199, 201, 203, 205, 207, 209, 211, 213, 217,
220, 223, 225, 227, 229, 231, 233, 235, 239, 242,
244, 247, 251, 254, 257, 260, 263, 266, 269, 272,
275, 278, 281, 284, 287, 290, 293, 296, 300, 303,
306, 309, 312, 315, 317, 319, 321, 322, 324, 325,
327, 328, 329, 330, 331, 332, 332, 332, 332, 332,
332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
332, 332, 332, 332, 332, 332, 333, 334, 335, 335,
335, 335, 335, 336, 336, 336, 336, 336, 336, 336,
336, 337, 338, 339, 339, 339, 340, 342, 344, 344,
345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
354, 355, 356, 357, 357, 359, 361, 362, 363, 364,
365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
375, 376, 377, 378, 379, 380, 381, 383, 384, 385,
386, 387, 388, 389, 390, 391, 393, 393, 395, 396,
397, 399, 400, 400, 400, 400, 400, 400, 400, 400,
400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
400, 400, 400, 402, 403, 403, 403, 403, 403, 403,
403, 403, 404, 406, 407, 407, 409, 410, 412, 413,
414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
424, 425, 426, 427, 428, 429, 430, 431, 432, 434,
435, 436, 437, 438, 439, 440, 441, 442, 442, 443,
444, 444, 444, 445, 445, 447, 447, 449, 449, 449,
449, 449, 449, 449, 449, 449, 449, 449, 449, 449,
449, 449, 449, 449, 449, 449, 449, 449, 449, 449,
449, 449, 449, 449, 449, 449, 450, 451, 452, 453,
454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
505, 506, 507, 509, 510, 511, 512, 513, 514, 515,
516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
545, 545, 545, 546, 546, 546, 546, 546, 546, 547,
548, 549, 550, 552, 553, 554, 555, 556, 557, 558,
559, 560, 561, 562, 563, 564, 565, 566, 567, 568,
569, 570, 571, 572, 573, 574, 574, 574, 575, 576,
577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
597, 598, 599, 600, 600, 600, 601, 602, 603, 604,
605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
625, 626, 627, 628, 629, 629, 629, 629, 629, 630,
630, 630, 630, 630, 630, 630, 631, 632, 632, 632,
632, 632, 632, 633, 633, 633, 633, 634, 634, 634,
634, 634, 635, 636, 637, 638, 639, 641, 642, 643,
644, 645, 646, 647, 649, 651, 652, 653, 654, 655,
656, 658, 659, 660, 661, 663, 664, 665, 665, 666,
667, 668, 669, 670, 672, 673, 674, 675, 676, 677,
678, 680, 682, 683, 684, 685, 686, 687, 689, 690,
691, 692, 694, 695, 696, 696, 697, 698, 699, 700,
701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
711, 712, 713, 714, 715, 716, 717, 717, 717, 718,
719, 720, 721, 722, 723, 723, 723, 723, 723, 724,
724, 725, 725, 725, 725, 725, 725, 726, 728, 729,
25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
13, 13, 13, 13, 13, 53, 43, 0, 0, 0,
0, 25, 25, 25, 0, 25, 25, 22, 22, 22,
0, 22, 22, 13, 13, 0, 33, 0, 0, 25,
25, 0, 25, 22, 22, 0, 22, 13, 0, 36,
25, 25, 22, 22, 13, 0, 25, 22, 13, 0,
25, 22, 13, 0, 25, 22, 13, 39, 25, 22,
0
730, 732, 734, 736, 738, 740, 742, 743, 744, 745,
746, 748, 749, 751, 752, 753, 754, 755, 756, 758,
759, 760, 762, 764, 766, 768, 770, 772, 773, 774,
775, 776, 778, 779, 781, 782, 783, 784, 785, 786,
788, 789, 790, 791, 792, 793, 794, 795, 796, 797,
798, 799, 800, 801, 802, 803, 804, 805, 806, 806,
807, 807, 807, 807, 807, 809, 811, 813, 815, 817,
819, 821, 822, 824, 825, 826, 827, 828, 830, 832,
834, 836, 838, 840, 841, 843, 844, 845, 846, 847,
848, 849, 850, 851, 852, 853, 854, 854, 854, 854,
854, 856, 858, 859, 859, 860, 861, 863, 865, 866,
866, 867, 868, 869, 870, 870, 871, 871, 871, 872,
874, 874, 875, 876, 878, 878, 879, 880, 880, 881,
882, 884, 885, 887, 888, 888, 889, 890, 891, 891,
892, 893, 894, 894, 895, 896, 897, 898, 900, 902,
902
0, 34, 80, 85, 89, 91, 7, 14, 138, 172,
219, 253, 301, 348, 94, 100, 106, 112, 2034, 2035,
10, 2035, 2030, 2035, 2023, 2013, 2015, 2007, 1999, 95,
95, 97, 2000, 2004, 2, 2014, 2009, 1988, 394, 0,
2035, 101, 1977, 1979, 90, 84, 1973, 2035, 2035, 2016,
118, 2035, 0, 2035, 2015, 357, 0, 1993, 112, 1968,
2035, 2012, 81, 1966, 2010, 2035, 2009, 144, 2035, 2008,
166, 225, 361, 365, 370, 379, 401, 405, 410, 421,
427, 432, 440, 450, 454, 247, 459, 465, 469, 473,
477, 483, 489, 0, 493, 2035, 499, 2035, 2001, 1991,
0, 47, 55, 60, 52, 64, 47, 68, 112, 159,
206, 253, 300, 347, 74, 80, 70, 159, 2137, 2138,
87, 2138, 2133, 2138, 2126, 2118, 2115, 2117, 2109, 2101,
82, 2113, 85, 69, 2101, 2105, 81, 2115, 2110, 2089,
393, 0, 2138, 155, 2078, 2080, 144, 71, 2074, 2138,
2138, 2117, 167, 2138, 0, 2138, 2116, 171, 0, 2094,
153, 2069, 2138, 2113, 135, 2067, 2111, 2138, 2110, 184,
2138, 2109, 188, 260, 266, 270, 275, 354, 358, 362,
279, 400, 369, 387, 404, 411, 416, 431, 426, 199,
440, 445, 449, 453, 458, 463, 467, 0, 471, 2138,
1993, 1985, 1977, 137, 125, 340, 1978, 1982, 207, 1992,
1987, 1966, 503, 23, 0, 353, 1955, 1957, 333, 206,
1951, 507, 2035, 1994, 0, 1987, 1977, 1979, 1971, 1963,
374, 377, 390, 1964, 1968, 355, 1978, 1973, 1952, 519,
402, 1941, 1943, 334, 433, 350, 523, 2035, 1981, 2035,
379, 2035, 425, 481, 417, 2035, 1974, 1971, 1955, 1969,
1964, 1963, 1948, 1951, 1945, 1944, 1944, 1936, 1937, 1944,
1924, 1936, 1927, 424, 1907, 0, 0, 2035, 1897, 1894,
484, 1883, 0, 104, 1892, 1884, 1907, 437, 1868, 1862,
2035, 2035, 2035, 1902, 526, 0, 2035, 0, 1891, 529,
475, 2138, 2102, 2094, 2091, 2093, 2085, 2077, 270, 2089,
170, 80, 2077, 2081, 167, 2091, 2086, 2065, 480, 253,
0, 262, 2054, 2056, 156, 342, 2050, 484, 2138, 2093,
0, 2086, 2078, 2075, 2077, 2069, 2061, 349, 2073, 344,
166, 2061, 2062, 248, 2069, 2064, 2043, 488, 371, 2023,
2025, 394, 377, 349, 500, 2138, 2063, 2138, 253, 2138,
347, 504, 417, 2138, 2051, 2034, 2044, 2028, 2037, 2027,
2022, 2002, 413, 2008, 1992, 1994, 1994, 1976, 1945, 1951,
1931, 1948, 1942, 478, 1920, 0, 0, 2138, 1909, 1904,
431, 1895, 0, 271, 1908, 1905, 1923, 400, 1881, 1868,
1819, 1808, 520, 1783, 1782, 2035, 188, 1781, 535, 1824,
2035, 2035, 537, 541, 2035, 545, 551, 555, 562, 567,
572, 584, 589, 593, 597, 601, 605, 613, 623, 634,
638, 642, 647, 651, 656, 663, 668, 672, 676, 680,
684, 694, 688, 698, 546, 710, 2035, 714, 2035, 556,
573, 628, 699, 614, 719, 718, 606, 621, 704, 720,
724, 733, 734, 735, 739, 744, 748, 753, 0, 755,
761, 766, 767, 771, 772, 773, 778, 779, 788, 2035,
1823, 2035, 0, 1814, 1806, 1785, 1795, 1790, 1776, 1750,
1753, 1750, 1734, 1725, 1706, 1716, 1720, 1700, 1712, 1699,
2138, 2138, 2138, 1905, 507, 0, 2138, 0, 1884, 512,
1868, 1854, 484, 1828, 1818, 2138, 465, 1814, 516, 1857,
2138, 2138, 518, 524, 2138, 528, 536, 540, 544, 548,
552, 558, 564, 570, 574, 578, 582, 586, 595, 599,
606, 610, 617, 622, 626, 630, 639, 645, 649, 653,
657, 663, 667, 675, 679, 683, 529, 691, 2138, 695,
2138, 611, 699, 587, 700, 631, 658, 701, 706, 707,
715, 717, 722, 726, 728, 734, 736, 738, 740, 746,
752, 754, 0, 760, 767, 768, 773, 774, 775, 781,
779, 786, 800, 2138, 1842, 2138, 0, 1832, 1815, 1820,
775, 1676, 0, 553, 1675, 1660, 1683, 449, 1642, 1631,
796, 798, 802, 2035, 1660, 609, 2035, 806, 2035, 811,
2035, 1631, 1613, 1623, 1609, 1617, 1609, 1596, 1595, 1582,
1576, 1572, 1568, 1559, 1547, 1530, 1526, 1528, 1528, 1504,
815, 819, 1493, 1499, 1479, 1473, 1486, 823, 827, 831,
2035, 835, 840, 844, 849, 853, 858, 863, 872, 876,
880, 884, 895, 901, 907, 911, 915, 920, 925, 929,
942, 946, 950, 954, 959, 963, 845, 889, 916, 955,
964, 930, 968, 970, 972, 981, 985, 986, 993, 1002,
1006, 1004, 1010, 1016, 1020, 1021, 1022, 1026, 1037, 1027,
1804, 1811, 1795, 1772, 1753, 514, 1759, 1750, 1746, 1729,
1718, 1725, 1729, 1706, 1718, 1707, 770, 1672, 0, 357,
1669, 1663, 1670, 512, 1633, 1623, 794, 795, 807, 2138,
1660, 562, 2138, 811, 2138, 819, 2138, 1643, 1626, 1617,
1623, 1616, 1624, 1614, 1600, 1600, 1609, 1594, 1582, 1591,
1590, 1579, 1580, 1572, 1559, 1555, 1547, 1545, 1513, 823,
825, 1505, 1507, 1494, 1486, 1493, 829, 833, 837, 2138,
842, 850, 854, 858, 863, 885, 889, 874, 893, 901,
905, 909, 914, 918, 923, 929, 939, 943, 947, 952,
957, 961, 974, 978, 982, 986, 991, 995, 843, 864,
1041, 1043, 1045, 1047, 1049, 1055, 1480, 1467, 1474, 1457,
1457, 1449, 1434, 1435, 1422, 1423, 1416, 1407, 1390, 1383,
1367, 1363, 1361, 1364, 1338, 1056, 1060, 1327, 1339, 1323,
1317, 1340, 1331, 1317, 1330, 1307, 1309, 1302, 1309, 1300,
1299, 1276, 1275, 1280, 1260, 1233, 1245, 1227, 1211, 1180,
1061, 2035, 1066, 1174, 1171, 1178, 1070, 1197, 1074, 2035,
1079, 2035, 1081, 1087, 1095, 1099, 1106, 1110, 1114, 1124,
1136, 1143, 1132, 1147, 1152, 1157, 1161, 1170, 1174, 1179,
1183, 1191, 1195, 1201, 1205, 1209, 1213, 1119, 1184, 1196,
1217, 1091, 1218, 1224, 1153, 1228, 1229, 1230, 1235, 1242,
859, 934, 987, 996, 930, 962, 1000, 1002, 1004, 1006,
919, 1017, 1018, 1022, 1034, 1035, 1036, 1041, 1042, 1048,
1049, 1053, 1059, 1054, 1066, 1070, 1071, 1072, 1076, 1077,
1082, 1499, 1463, 1454, 1462, 1441, 1443, 1438, 1412, 1412,
1421, 1407, 1394, 1406, 1405, 1396, 1397, 1390, 1372, 1371,
1378, 1380, 1354, 1086, 1088, 1347, 1353, 1337, 1334, 1352,
1352, 1345, 1330, 1335, 1312, 1304, 1305, 1286, 1291, 1289,
1292, 1286, 1267, 1270, 1270, 1263, 1240, 1249, 1230, 1218,
1189, 1093, 2138, 1098, 1183, 1179, 1189, 1099, 1208, 1103,
2138, 1109, 2138, 1116, 1121, 1125, 1134, 1145, 1154, 1159,
1249, 1244, 1251, 1261, 1262, 1266, 1267, 1272, 1273, 1278,
1279, 1280, 1178, 1164, 1149, 1160, 1140, 1141, 1122, 1129,
1133, 1121, 1102, 1101, 1091, 1086, 1069, 1078, 1060, 1048,
1022, 1008, 1007, 1284, 1021, 1025, 1006, 2035, 1004, 1000,
990, 972, 2035, 2035, 965, 963, 972, 956, 966, 2035,
942, 926, 903, 2035, 907, 903, 1286, 881, 900, 1288,
1292, 1296, 1303, 1312, 1324, 1333, 1337, 1342, 1346, 1350,
1354, 1358, 1365, 1370, 1380, 1384, 1388, 1392, 1396, 1400,
1404, 1410, 1414, 1310, 1371, 1415, 1316, 1419, 1425, 1431,
1405, 1421, 1437, 1438, 1442, 1443, 1444, 1449, 1450, 1458,
1163, 1167, 1171, 1175, 1187, 1194, 1198, 1203, 1207, 1212,
1216, 1227, 1231, 1236, 1242, 1248, 1252, 1258, 1262, 1266,
1270, 1135, 1271, 1126, 1237, 1176, 1253, 1275, 1276, 1281,
1208, 1286, 1301, 1308, 1287, 1288, 1314, 1318, 1319, 1320,
1326, 1330, 1331, 1335, 1337, 1341, 1345, 1347, 1349, 1198,
1193, 1183, 1166, 1183, 1158, 1162, 1153, 1142, 1149, 1145,
1144, 1143, 1120, 1118, 1126, 1116, 1095, 1107, 1098, 1077,
1049, 1047, 1051, 1351, 1052, 1052, 1050, 1032, 2138, 1022,
1021, 1016, 1008, 986, 983, 2138, 2138, 974, 956, 971,
952, 962, 2138, 939, 937, 911, 2138, 912, 882, 1355,
1460, 1467, 1468, 1473, 1472, 1474, 1479, 893, 897, 892,
891, 882, 880, 856, 841, 827, 842, 819, 825, 802,
804, 784, 785, 777, 786, 2035, 2035, 2035, 2035, 2035,
776, 775, 769, 2035, 749, 2035, 746, 733, 698, 696,
686, 2035, 703, 1484, 1488, 1493, 1497, 1506, 1510, 1514,
1518, 1525, 1529, 1534, 1538, 1542, 1546, 1551, 1555, 1560,
1564, 1565, 1480, 1498, 1569, 1571, 1575, 1576, 1577, 1583,
1587, 1592, 1594, 1596, 1598, 1600, 1606, 1607, 1612, 687,
673, 669, 665, 656, 653, 647, 613, 610, 593, 2035,
2035, 2035, 2035, 612, 2035, 594, 592, 1613, 561, 587,
861, 875, 1357, 1362, 1368, 1387, 1378, 1399, 1403, 1410,
1414, 1421, 1425, 1429, 1433, 1437, 1441, 1446, 1453, 1457,
1467, 1472, 1476, 1480, 1484, 1488, 1492, 1498, 1502, 1366,
1458, 1503, 1507, 1105, 1513, 1519, 1525, 1526, 1463, 1493,
1442, 1509, 1532, 1536, 1537, 1538, 1546, 1548, 1550, 1552,
1557, 1561, 1565, 1567, 1566, 1571, 872, 884, 882, 878,
874, 872, 870, 861, 829, 823, 820, 812, 827, 811,
819, 790, 794, 776, 773, 773, 785, 777, 2138, 2138,
2138, 2138, 2138, 2138, 772, 756, 751, 750, 2138, 740,
2138, 740, 719, 685, 690, 671, 2138, 708, 1576, 1580,
1617, 1621, 1625, 1629, 1633, 1643, 1648, 1657, 1652, 1662,
1634, 1644, 1666, 1667, 1668, 1672, 1674, 1678, 1680, 1685,
580, 575, 562, 1686, 533, 2035, 2035, 518, 1687, 497,
1691, 1696, 1700, 1705, 1709, 1713, 1717, 1701, 1721, 1723,
1727, 1735, 1739, 465, 1740, 418, 2035, 1741, 400, 1745,
1749, 1757, 1761, 1750, 1765, 1766, 1767, 404, 357, 2035,
1771, 1779, 1787, 1788, 345, 202, 1792, 1793, 121, 121,
1797, 1798, 98, 23, 1805, 1814, 12, 2035, 1816, 1820,
2035, 1837, 1843, 1849, 1855, 1861, 1867, 1873, 1879, 1885,
1891, 1897, 1903, 1909, 1915, 1921, 1927, 1933, 1939, 1945,
1587, 1593, 1599, 1603, 1607, 1612, 1617, 1621, 1628, 1632,
1639, 1643, 1647, 1651, 1655, 1660, 1664, 1669, 1673, 1674,
1678, 1572, 1680, 1684, 1685, 1689, 1690, 1691, 1695, 1701,
1705, 1707, 1712, 1714, 1716, 1718, 1720, 1726, 1727, 1732,
697, 681, 679, 672, 668, 660, 649, 646, 637, 602,
603, 593, 2138, 2138, 2138, 2138, 2138, 2138, 613, 2138,
597, 594, 1733, 550, 572, 1737, 1741, 1745, 1749, 1753,
1758, 1763, 1770, 1774, 1781, 1786, 1790, 1754, 1764, 1791,
1795, 1796, 1797, 1801, 1802, 1803, 1807, 1812, 1814, 561,
551, 539, 1816, 508, 2138, 2138, 490, 1818, 412, 1822,
0, 1951, 1957, 1963, 1969
1824, 1830, 1834, 1838, 1842, 1846, 1850, 1851, 1852, 1856,
1862, 1868, 418, 1869, 413, 2138, 1870, 360, 1875, 1879,
1886, 1890, 1894, 1895, 1896, 1900, 366, 359, 2138, 1909,
1902, 1916, 1917, 320, 247, 1921, 1922, 223, 224, 1926,
1930, 147, 99, 1934, 1943, 59, 2138, 1947, 1953, 2138,
1967, 1973, 1979, 1985, 1991, 1997, 2003, 2009, 2015, 2021,
2027, 2033, 2039, 2045, 2051, 2057, 48, 2063, 2069, 2075,
2081
782, 781, 783, 784, 785, 785, 786, 786, 787, 781,
788, 781, 781, 13, 789, 789, 790, 790, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 791,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
792, 781, 793, 781, 781, 794, 793, 793, 793, 795,
781, 781, 795, 795, 796, 781, 781, 797, 781, 781,
797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
797, 797, 797, 797, 797, 798, 797, 797, 797, 797,
797, 797, 797, 799, 781, 781, 781, 781, 799, 799,
850, 1, 851, 852, 853, 853, 854, 854, 850, 9,
850, 11, 850, 13, 855, 855, 856, 856, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 857, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 858, 850, 859, 850, 850, 860, 859, 859,
859, 861, 850, 850, 861, 861, 862, 850, 850, 863,
850, 850, 863, 863, 863, 863, 863, 863, 863, 863,
863, 863, 863, 863, 863, 863, 863, 863, 863, 864,
863, 863, 863, 863, 863, 863, 863, 865, 850, 850,
799, 799, 799, 799, 799, 799, 799, 799, 799, 799,
799, 799, 39, 800, 799, 799, 799, 799, 799, 799,
799, 781, 781, 781, 801, 801, 801, 801, 801, 801,
801, 801, 801, 801, 801, 801, 801, 801, 801, 39,
801, 801, 801, 801, 801, 802, 781, 781, 781, 781,
803, 781, 803, 803, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 39, 791, 781, 781, 781,
781, 781, 791, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 793, 781, 793, 781, 793,
850, 850, 865, 865, 865, 865, 865, 865, 865, 865,
865, 865, 865, 865, 865, 865, 865, 865, 41, 866,
865, 865, 865, 865, 865, 865, 865, 850, 850, 850,
867, 867, 867, 867, 867, 867, 867, 867, 867, 867,
867, 867, 867, 867, 867, 867, 867, 41, 867, 867,
867, 867, 867, 868, 850, 850, 850, 850, 869, 850,
869, 869, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 41, 857, 850, 850, 850,
850, 850, 857, 850, 850, 850, 850, 850, 850, 850,
793, 793, 793, 795, 795, 781, 795, 795, 795, 796,
781, 781, 797, 797, 781, 797, 797, 797, 797, 797,
797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
797, 797, 797, 797, 798, 798, 797, 797, 797, 797,
797, 797, 797, 797, 804, 781, 781, 781, 781, 804,
804, 804, 804, 804, 804, 804, 804, 804, 804, 804,
804, 804, 804, 804, 804, 804, 804, 804, 113, 805,
804, 804, 804, 804, 804, 804, 804, 804, 781, 781,
781, 781, 801, 801, 801, 801, 801, 801, 801, 801,
801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
850, 850, 850, 850, 850, 859, 850, 859, 850, 859,
859, 859, 859, 861, 861, 850, 861, 861, 861, 862,
850, 850, 863, 863, 850, 863, 863, 863, 863, 863,
863, 863, 863, 863, 863, 863, 863, 863, 863, 863,
863, 863, 863, 863, 863, 863, 864, 864, 863, 863,
863, 863, 863, 863, 863, 863, 870, 850, 850, 850,
850, 870, 870, 870, 870, 870, 870, 870, 870, 870,
870, 870, 870, 870, 870, 870, 870, 870, 870, 870,
870, 870, 119, 871, 870, 870, 870, 870, 870, 870,
870, 870, 850, 850, 850, 850, 867, 867, 867, 867,
801, 801, 140, 801, 801, 801, 801, 801, 801, 801,
802, 802, 781, 781, 781, 803, 781, 803, 781, 803,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 793, 795, 795, 795,
781, 797, 797, 797, 797, 797, 797, 797, 797, 797,
797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
797, 797, 797, 797, 797, 797, 804, 804, 804, 804,
804, 804, 804, 804, 804, 804, 804, 804, 804, 804,
804, 804, 804, 804, 804, 804, 804, 805, 804, 804,
867, 867, 867, 867, 867, 867, 867, 867, 867, 867,
867, 867, 867, 867, 867, 867, 867, 867, 148, 867,
867, 867, 867, 867, 867, 867, 868, 868, 850, 850,
850, 869, 850, 869, 850, 869, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 859, 861, 861, 861, 850,
863, 863, 863, 863, 863, 863, 863, 863, 863, 863,
863, 863, 863, 863, 863, 863, 863, 863, 863, 863,
863, 863, 863, 863, 863, 863, 863, 863, 870, 870,
804, 804, 804, 804, 804, 804, 801, 801, 801, 801,
801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
801, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 793, 795, 781,
795, 781, 797, 797, 797, 797, 797, 797, 797, 797,
797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
797, 797, 797, 797, 797, 797, 797, 804, 804, 804,
804, 804, 804, 804, 804, 804, 804, 804, 804, 804,
870, 870, 870, 870, 870, 870, 870, 870, 870, 870,
870, 870, 870, 870, 870, 870, 870, 870, 870, 870,
870, 870, 871, 870, 870, 870, 870, 870, 870, 870,
870, 867, 867, 867, 867, 867, 867, 867, 867, 867,
867, 867, 867, 867, 867, 867, 867, 867, 867, 867,
867, 867, 867, 867, 867, 867, 867, 867, 867, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 859, 861,
850, 861, 850, 863, 863, 863, 863, 863, 863, 863,
804, 804, 804, 804, 804, 804, 804, 804, 804, 804,
804, 804, 801, 801, 801, 801, 801, 801, 801, 801,
801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
801, 801, 801, 801, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 793, 797,
797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
797, 797, 797, 804, 804, 804, 804, 804, 804, 804,
804, 804, 804, 804, 804, 804, 804, 804, 804, 804,
863, 863, 863, 863, 863, 863, 863, 863, 863, 863,
863, 863, 863, 863, 863, 863, 863, 863, 863, 863,
863, 870, 870, 870, 870, 870, 870, 870, 870, 870,
870, 870, 870, 870, 870, 870, 870, 870, 870, 870,
870, 870, 870, 870, 870, 870, 870, 870, 870, 867,
867, 867, 867, 867, 867, 867, 867, 867, 867, 867,
867, 867, 867, 867, 867, 867, 867, 867, 867, 867,
867, 867, 867, 867, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
804, 804, 804, 804, 804, 804, 804, 801, 801, 801,
801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
801, 801, 801, 801, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 793, 797, 797, 797, 797, 797, 797, 797,
797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
797, 804, 804, 804, 804, 804, 804, 804, 804, 804,
804, 804, 804, 804, 804, 804, 804, 804, 804, 801,
801, 801, 801, 801, 801, 801, 801, 801, 801, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 793,
850, 859, 863, 863, 863, 863, 863, 863, 863, 863,
863, 863, 863, 863, 863, 863, 863, 863, 863, 863,
863, 863, 863, 863, 863, 863, 863, 863, 863, 870,
870, 870, 870, 870, 870, 870, 870, 870, 870, 870,
870, 870, 870, 870, 870, 870, 870, 870, 870, 870,
870, 870, 870, 870, 870, 870, 867, 867, 867, 867,
867, 867, 867, 867, 867, 867, 867, 867, 867, 867,
867, 867, 867, 867, 867, 867, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 859, 863, 863,
797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
804, 804, 804, 804, 804, 804, 804, 804, 804, 804,
801, 801, 801, 801, 801, 781, 781, 781, 781, 781,
781, 797, 797, 797, 797, 797, 797, 804, 804, 804,
804, 804, 804, 801, 801, 781, 781, 781, 781, 797,
797, 797, 797, 804, 804, 804, 804, 801, 781, 781,
797, 797, 804, 804, 801, 781, 797, 804, 801, 781,
797, 804, 801, 781, 797, 804, 801, 781, 797, 804,
0, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
863, 863, 863, 863, 863, 863, 863, 863, 863, 863,
863, 863, 863, 863, 863, 863, 863, 863, 863, 870,
870, 870, 870, 870, 870, 870, 870, 870, 870, 870,
870, 870, 870, 870, 870, 870, 870, 870, 870, 870,
867, 867, 867, 867, 867, 867, 867, 867, 867, 867,
867, 867, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 859, 863, 863, 863, 863, 863,
863, 863, 863, 863, 863, 863, 863, 870, 870, 870,
870, 870, 870, 870, 870, 870, 870, 870, 870, 867,
867, 867, 867, 867, 850, 850, 850, 850, 850, 850,
781, 781, 781, 781, 781
863, 863, 863, 863, 863, 863, 870, 870, 870, 870,
870, 870, 867, 867, 850, 850, 850, 850, 863, 863,
863, 863, 870, 870, 870, 870, 867, 850, 850, 863,
863, 870, 870, 867, 850, 863, 870, 867, 850, 863,
870, 867, 850, 863, 870, 867, 850, 863, 870, 0,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850
781, 21, 22, 23, 21, 283, 24, 781, 25, 66,
67, 155, 26, 27, 155, 28, 66, 67, 29, 171,
30, 778, 31, 32, 33, 34, 183, 35, 36, 183,
37, 172, 778, 38, 20, 39, 22, 23, 39, 40,
24, 20, 25, 41, 20, 20, 26, 27, 20, 28,
20, 20, 29, 20, 30, 20, 42, 32, 33, 34,
20, 35, 36, 20, 37, 20, 20, 38, 20, 20,
20, 20, 43, 20, 44, 20, 45, 20, 20, 46,
47, 20, 49, 50, 51, 52, 48, 54, 55, 56,
57, 61, 62, 61, 62, 147, 148, 149, 147, 58,
20, 21, 22, 23, 21, 20, 24, 20, 25, 20,
20, 26, 27, 28, 20, 29, 20, 20, 30, 20,
31, 32, 33, 34, 35, 36, 20, 37, 38, 20,
39, 20, 20, 40, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 41, 68,
69, 41, 42, 297, 63, 64, 43, 51, 52, 53,
54, 50, 56, 57, 58, 59, 63, 64, 847, 44,
68, 69, 160, 161, 60, 155, 156, 157, 155, 177,
158, 155, 156, 157, 155, 45, 158, 46, 163, 47,
274, 163, 48, 49, 65, 175, 178, 171, 181, 66,
150, 147, 148, 149, 147, 165, 150, 167, 152, 153,
162, 184, 187, 163, 152, 153, 189, 164, 190, 166,
192, 194, 195, 207, 168, 166, 202, 59, 208, 341,
329, 63, 188, 63, 777, 258, 64, 154, 64, 21,
69, 70, 21, 154, 71, 214, 72, 214, 214, 259,
73, 74, 255, 75, 203, 256, 76, 774, 77, 257,
78, 79, 80, 81, 773, 82, 83, 214, 84, 214,
214, 85, 68, 39, 69, 70, 39, 86, 71, 68,
72, 87, 68, 68, 73, 74, 68, 75, 68, 68,
76, 68, 77, 68, 88, 79, 80, 81, 68, 82,
172, 162, 61, 199, 173, 200, 65, 275, 847, 176,
182, 66, 70, 21, 71, 72, 21, 70, 73, 70,
74, 70, 70, 75, 76, 77, 70, 78, 70, 70,
79, 70, 80, 81, 82, 83, 84, 85, 70, 86,
87, 70, 88, 70, 70, 89, 70, 70, 70, 70,
70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
41, 160, 161, 41, 90, 194, 197, 212, 91, 202,
204, 205, 203, 207, 209, 210, 310, 217, 288, 176,
272, 92, 218, 846, 278, 224, 198, 224, 224, 224,
162, 224, 224, 311, 273, 213, 279, 93, 289, 94,
83, 68, 84, 68, 68, 85, 68, 68, 68, 68,
89, 68, 90, 68, 91, 68, 68, 92, 93, 68,
95, 96, 97, 95, 264, 98, 214, 99, 214, 214,
207, 100, 101, 216, 102, 208, 265, 103, 276, 104,
277, 105, 106, 107, 108, 770, 109, 110, 236, 111,
236, 236, 112, 94, 113, 96, 97, 113, 114, 98,
94, 99, 115, 94, 94, 100, 101, 94, 102, 94,
94, 103, 94, 104, 94, 116, 106, 107, 108, 94,
109, 110, 94, 111, 94, 94, 112, 94, 94, 94,
94, 117, 94, 118, 94, 119, 94, 94, 120, 121,
248, 95, 248, 248, 96, 97, 98, 99, 100, 101,
99, 98, 102, 98, 103, 98, 98, 104, 105, 106,
98, 107, 98, 98, 108, 98, 109, 110, 111, 112,
113, 114, 98, 115, 116, 98, 117, 98, 98, 118,
98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
98, 98, 98, 98, 119, 333, 193, 119, 120, 193,
843, 224, 121, 224, 224, 314, 842, 224, 226, 224,
224, 224, 285, 224, 224, 122, 224, 315, 224, 224,
224, 227, 224, 224, 334, 268, 273, 228, 269, 229,
839, 123, 270, 124, 235, 125, 360, 348, 126, 127,
94, 20, 122, 123, 124, 122, 20, 24, 125, 126,
20, 125, 125, 127, 128, 125, 129, 125, 125, 130,
125, 131, 125, 132, 133, 134, 135, 125, 136, 137,
125, 138, 20, 125, 139, 125, 125, 125, 125, 125,
125, 125, 125, 125, 125, 125, 125, 20, 20, 140,
260, 312, 140, 40, 312, 274, 307, 41, 193, 197,
199, 200, 214, 271, 214, 214, 214, 261, 214, 214,
141, 214, 298, 214, 214, 275, 308, 259, 217, 218,
214, 317, 214, 214, 299, 769, 142, 292, 143, 289,
144, 219, 290, 145, 47, 176, 291, 766, 176, 177,
20, 128, 129, 130, 128, 20, 24, 131, 132, 20,
131, 133, 134, 135, 131, 136, 131, 131, 137, 131,
138, 139, 140, 141, 142, 143, 131, 144, 145, 131,
146, 20, 131, 147, 131, 131, 131, 131, 131, 131,
131, 131, 131, 131, 131, 131, 20, 20, 148, 335,
328, 148, 42, 328, 308, 224, 43, 224, 224, 224,
838, 224, 224, 224, 304, 224, 224, 305, 309, 149,
224, 306, 224, 224, 290, 230, 291, 232, 334, 238,
233, 320, 454, 442, 234, 150, 231, 151, 224, 152,
224, 224, 153, 49, 186, 309, 239, 186, 187, 835,
294, 293, 214, 178, 214, 214, 214, 220, 214, 214,
318, 214, 304, 214, 214, 224, 221, 295, 155, 222,
226, 155, 214, 223, 214, 214, 293, 319, 214, 225,
214, 214, 179, 214, 180, 214, 214, 227, 765, 181,
182, 214, 338, 214, 214, 339, 760, 228, 229, 230,
232, 214, 759, 214, 214, 214, 318, 214, 214, 187,
214, 231, 214, 214, 233, 309, 214, 310, 214, 214,
214, 307, 214, 214, 214, 237, 214, 214, 214, 188,
214, 214, 320, 321, 214, 320, 214, 214, 234, 225,
214, 308, 214, 214, 246, 247, 248, 246, 758, 240,
834, 224, 188, 224, 224, 224, 829, 224, 224, 325,
236, 326, 224, 240, 224, 224, 323, 224, 163, 224,
224, 163, 197, 345, 237, 241, 244, 224, 242, 224,
224, 189, 224, 190, 224, 224, 324, 346, 191, 192,
243, 224, 198, 224, 224, 245, 224, 828, 224, 224,
224, 827, 224, 224, 224, 249, 224, 224, 816, 224,
246, 224, 224, 199, 224, 200, 224, 224, 224, 237,
224, 224, 258, 259, 260, 258, 260, 261, 260, 260,
252, 283, 259, 260, 283, 293, 294, 295, 293, 319,
294, 295, 319, 250, 251, 254, 357, 255, 212, 358,
253, 329, 330, 331, 329, 336, 337, 217, 336, 202,
204, 205, 218, 256, 207, 209, 210, 369, 370, 224,
369, 224, 224, 815, 439, 224, 213, 224, 224, 224,
257, 224, 224, 257, 323, 334, 226, 224, 440, 224,
224, 224, 814, 224, 224, 224, 813, 224, 224, 224,
372, 224, 224, 224, 324, 224, 224, 371, 374, 224,
796, 224, 224, 367, 333, 224, 375, 224, 224, 373,
795, 224, 376, 224, 224, 224, 765, 224, 224, 224,
378, 224, 224, 224, 800, 224, 224, 224, 257, 224,
224, 257, 377, 334, 379, 380, 224, 402, 224, 224,
248, 249, 248, 248, 269, 247, 248, 269, 279, 280,
281, 279, 318, 238, 239, 242, 189, 243, 190, 241,
303, 280, 281, 303, 313, 314, 315, 313, 192, 194,
195, 197, 199, 200, 202, 244, 350, 351, 214, 350,
214, 214, 214, 747, 214, 214, 214, 245, 214, 214,
245, 746, 214, 216, 214, 214, 214, 245, 214, 214,
245, 352, 203, 214, 378, 214, 214, 745, 214, 744,
214, 214, 354, 214, 245, 214, 214, 245, 426, 414,
353, 355, 348, 379, 727, 214, 356, 214, 214, 726,
214, 700, 214, 214, 214, 731, 214, 214, 214, 728,
224, 797, 224, 224, 381, 382, 796, 224, 383, 224,
224, 224, 257, 224, 224, 257, 386, 385, 224, 400,
224, 224, 795, 224, 384, 224, 224, 224, 388, 224,
224, 224, 257, 224, 224, 257, 794, 793, 389, 387,
248, 404, 248, 248, 390, 792, 248, 391, 248, 248,
224, 791, 224, 224, 224, 760, 224, 224, 224, 257,
224, 224, 257, 790, 224, 392, 224, 224, 224, 758,
224, 224, 405, 396, 393, 381, 224, 757, 224, 224,
224, 756, 224, 224, 224, 394, 224, 224, 755, 252,
754, 395, 258, 259, 260, 258, 260, 259, 260, 260,
214, 214, 214, 727, 214, 214, 214, 245, 214, 214,
245, 317, 357, 358, 214, 245, 214, 214, 245, 359,
360, 726, 245, 361, 214, 245, 214, 214, 382, 245,
385, 363, 245, 364, 362, 214, 725, 214, 214, 214,
318, 214, 214, 214, 724, 214, 214, 386, 214, 366,
214, 214, 214, 380, 214, 214, 723, 236, 367, 236,
236, 722, 695, 365, 236, 368, 236, 236, 369, 214,
721, 214, 214, 214, 693, 214, 214, 214, 692, 214,
214, 214, 691, 214, 214, 214, 370, 214, 214, 214,
374, 214, 214, 371, 359, 214, 690, 214, 214, 214,
257, 257, 257, 257, 257, 257, 753, 257, 257, 253,
257, 257, 765, 397, 764, 406, 257, 408, 257, 257,
401, 257, 398, 257, 763, 403, 257, 257, 762, 257,
257, 409, 257, 761, 407, 257, 410, 257, 257, 257,
257, 257, 257, 411, 257, 412, 416, 257, 413, 760,
257, 418, 415, 257, 759, 257, 257, 414, 257, 758,
757, 284, 419, 193, 284, 756, 193, 417, 257, 257,
420, 257, 257, 421, 257, 257, 257, 257, 257, 257,
257, 755, 257, 257, 427, 257, 754, 257, 451, 422,
257, 452, 424, 411, 753, 328, 328, 428, 328, 328,
245, 214, 214, 245, 372, 245, 240, 700, 245, 381,
373, 246, 247, 248, 246, 248, 247, 248, 248, 245,
245, 245, 245, 245, 245, 245, 241, 387, 245, 699,
698, 376, 375, 383, 245, 245, 245, 245, 245, 245,
245, 697, 388, 245, 391, 245, 384, 696, 245, 245,
393, 390, 245, 389, 245, 695, 270, 245, 183, 270,
394, 183, 245, 694, 392, 245, 395, 245, 245, 396,
245, 245, 245, 245, 245, 245, 245, 245, 693, 245,
245, 402, 245, 245, 692, 691, 399, 386, 397, 279,
280, 281, 279, 423, 403, 690, 424, 312, 400, 312,
425, 293, 294, 295, 293, 752, 751, 426, 329, 330,
331, 329, 336, 337, 750, 336, 749, 429, 748, 430,
336, 337, 431, 336, 482, 483, 484, 482, 691, 484,
490, 491, 747, 490, 492, 493, 689, 492, 369, 370,
746, 369, 334, 224, 257, 224, 224, 257, 745, 744,
334, 224, 494, 224, 224, 224, 743, 224, 224, 224,
257, 224, 224, 257, 224, 257, 224, 224, 257, 522,
684, 485, 400, 495, 497, 224, 367, 224, 224, 683,
367, 682, 496, 681, 215, 498, 224, 680, 224, 224,
224, 679, 224, 224, 224, 499, 224, 224, 742, 741,
312, 401, 312, 313, 314, 315, 313, 320, 321, 689,
320, 405, 320, 321, 404, 320, 451, 452, 688, 451,
453, 406, 687, 453, 459, 460, 686, 459, 461, 462,
685, 461, 350, 351, 636, 350, 214, 318, 214, 214,
684, 214, 318, 214, 214, 214, 245, 214, 214, 245,
214, 634, 214, 214, 214, 683, 214, 214, 463, 214,
465, 214, 214, 467, 214, 454, 214, 214, 464, 682,
348, 466, 468, 214, 348, 214, 214, 214, 205, 214,
214, 214, 681, 214, 214, 214, 469, 214, 214, 630,
245, 629, 470, 245, 472, 473, 214, 378, 214, 214,
698, 501, 224, 500, 224, 224, 224, 697, 224, 224,
224, 503, 224, 224, 696, 224, 502, 224, 224, 224,
257, 224, 224, 257, 224, 504, 224, 224, 506, 507,
224, 257, 224, 224, 257, 257, 505, 508, 257, 532,
224, 509, 224, 224, 224, 695, 224, 224, 224, 694,
224, 224, 526, 224, 510, 224, 224, 523, 224, 693,
224, 224, 224, 257, 224, 224, 257, 692, 513, 514,
511, 691, 527, 690, 512, 516, 483, 224, 516, 517,
689, 224, 517, 224, 688, 224, 224, 224, 257, 224,
224, 257, 224, 515, 224, 224, 224, 257, 224, 224,
628, 627, 214, 471, 214, 214, 626, 680, 214, 474,
214, 214, 214, 475, 214, 214, 214, 245, 214, 214,
245, 214, 476, 214, 214, 643, 214, 642, 214, 214,
214, 245, 214, 214, 245, 641, 479, 480, 477, 488,
640, 639, 478, 482, 452, 214, 482, 483, 638, 214,
483, 214, 491, 214, 214, 214, 245, 214, 214, 245,
214, 481, 214, 214, 214, 245, 214, 214, 245, 245,
637, 245, 245, 245, 245, 636, 245, 635, 492, 371,
490, 634, 245, 489, 493, 245, 245, 245, 485, 245,
245, 633, 484, 632, 245, 494, 486, 245, 631, 630,
257, 257, 687, 257, 257, 257, 257, 257, 257, 686,
257, 393, 525, 685, 528, 524, 531, 684, 257, 257,
519, 257, 257, 257, 518, 683, 257, 530, 520, 529,
682, 681, 534, 535, 521, 257, 257, 257, 257, 257,
257, 680, 257, 257, 533, 257, 257, 537, 536, 257,
257, 538, 257, 257, 257, 544, 483, 257, 544, 679,
284, 542, 193, 284, 541, 193, 678, 545, 539, 540,
545, 257, 257, 257, 257, 257, 257, 257, 257, 677,
257, 257, 427, 257, 676, 543, 257, 482, 483, 484,
482, 675, 484, 674, 482, 483, 424, 482, 428, 484,
497, 495, 487, 245, 498, 245, 245, 245, 245, 629,
245, 245, 496, 628, 245, 627, 499, 245, 500, 501,
245, 245, 245, 245, 245, 245, 245, 270, 508, 183,
270, 508, 183, 505, 626, 625, 504, 502, 507, 452,
624, 507, 245, 503, 245, 245, 245, 245, 245, 245,
245, 245, 623, 245, 506, 402, 245, 451, 452, 245,
451, 453, 451, 452, 453, 451, 622, 453, 399, 403,
453, 557, 621, 509, 557, 459, 460, 620, 459, 510,
461, 462, 214, 461, 214, 214, 511, 550, 214, 404,
214, 214, 245, 560, 512, 245, 214, 619, 214, 214,
600, 673, 484, 600, 490, 491, 257, 490, 547, 257,
492, 493, 546, 492, 548, 672, 593, 224, 429, 224,
224, 549, 224, 671, 224, 224, 224, 257, 224, 224,
257, 670, 603, 604, 485, 224, 257, 224, 224, 257,
669, 668, 605, 632, 485, 601, 224, 667, 224, 224,
215, 630, 587, 586, 607, 224, 215, 224, 224, 666,
224, 606, 224, 224, 224, 665, 224, 224, 224, 664,
224, 224, 224, 663, 224, 224, 224, 257, 224, 224,
257, 609, 608, 610, 662, 634, 661, 612, 224, 613,
224, 224, 579, 660, 611, 224, 614, 224, 224, 224,
214, 618, 214, 214, 561, 617, 454, 214, 563, 214,
214, 214, 454, 214, 214, 214, 558, 214, 214, 588,
245, 205, 562, 245, 616, 214, 205, 214, 214, 615,
544, 584, 565, 214, 564, 214, 214, 214, 567, 214,
214, 566, 543, 614, 214, 568, 214, 214, 214, 613,
214, 214, 569, 214, 245, 214, 214, 245, 214, 570,
214, 214, 214, 612, 214, 214, 572, 591, 611, 538,
571, 214, 573, 214, 214, 214, 610, 214, 214, 575,
214, 609, 214, 214, 214, 245, 214, 214, 245, 574,
608, 576, 482, 452, 214, 482, 483, 245, 214, 483,
659, 224, 224, 615, 224, 658, 224, 224, 224, 257,
224, 224, 257, 224, 657, 224, 224, 224, 602, 224,
224, 618, 599, 598, 639, 616, 617, 619, 224, 597,
224, 224, 224, 596, 224, 224, 621, 224, 257, 224,
224, 257, 595, 224, 620, 224, 224, 594, 622, 516,
483, 224, 516, 517, 257, 224, 517, 257, 593, 224,
623, 224, 224, 224, 633, 224, 224, 224, 592, 224,
224, 628, 257, 224, 628, 257, 257, 257, 591, 257,
257, 635, 257, 631, 590, 257, 624, 257, 257, 257,
257, 257, 257, 589, 588, 587, 637, 636, 518, 627,
245, 585, 214, 577, 214, 214, 214, 559, 214, 214,
214, 556, 214, 214, 582, 555, 214, 582, 245, 245,
554, 245, 245, 586, 553, 245, 587, 578, 245, 245,
245, 245, 245, 245, 245, 552, 245, 592, 593, 245,
589, 484, 581, 245, 551, 245, 245, 579, 245, 580,
245, 590, 245, 245, 550, 245, 596, 594, 595, 583,
599, 549, 245, 245, 597, 245, 245, 245, 507, 452,
245, 507, 598, 508, 245, 548, 508, 245, 600, 245,
245, 606, 245, 245, 606, 557, 601, 557, 557, 214,
557, 214, 214, 214, 547, 214, 214, 214, 546, 214,
640, 586, 257, 585, 625, 257, 626, 584, 638, 257,
641, 644, 257, 583, 643, 257, 629, 642, 257, 257,
257, 257, 257, 257, 257, 582, 581, 257, 645, 648,
257, 257, 257, 646, 257, 257, 544, 483, 545, 544,
580, 545, 257, 649, 579, 257, 257, 647, 257, 257,
655, 257, 600, 655, 650, 600, 600, 578, 224, 600,
224, 224, 577, 224, 576, 224, 224, 257, 575, 224,
257, 224, 224, 574, 573, 651, 700, 701, 454, 224,
654, 224, 224, 546, 699, 572, 571, 652, 224, 653,
224, 224, 570, 720, 569, 656, 702, 601, 568, 567,
214, 645, 644, 545, 214, 646, 214, 214, 544, 543,
602, 245, 605, 214, 245, 214, 214, 245, 509, 603,
245, 647, 604, 542, 662, 214, 607, 214, 214, 541,
558, 540, 558, 648, 214, 539, 214, 214, 214, 538,
214, 214, 649, 214, 537, 214, 214, 214, 536, 214,
214, 214, 535, 214, 214, 214, 534, 214, 214, 214,
533, 214, 214, 650, 426, 532, 214, 653, 214, 214,
531, 214, 245, 214, 214, 245, 530, 529, 651, 655,
663, 214, 652, 214, 214, 214, 654, 214, 214, 214,
528, 214, 214, 214, 527, 214, 214, 214, 526, 214,
224, 601, 224, 224, 224, 566, 224, 224, 703, 565,
564, 224, 704, 224, 224, 224, 563, 224, 224, 705,
562, 561, 224, 706, 224, 224, 224, 560, 224, 224,
224, 559, 224, 224, 224, 558, 224, 224, 224, 557,
224, 224, 224, 257, 224, 224, 257, 224, 707, 224,
224, 708, 556, 555, 224, 711, 224, 224, 224, 257,
224, 224, 257, 554, 257, 709, 713, 257, 224, 710,
224, 224, 721, 224, 712, 224, 224, 224, 553, 224,
224, 224, 552, 224, 224, 224, 551, 224, 224, 224,
728, 224, 224, 224, 257, 224, 224, 257, 715, 628,
214, 214, 525, 214, 214, 214, 245, 214, 214, 245,
657, 582, 656, 214, 582, 214, 245, 214, 214, 245,
245, 524, 245, 245, 664, 245, 245, 523, 665, 245,
658, 668, 245, 659, 666, 245, 660, 522, 245, 245,
667, 245, 245, 245, 245, 245, 245, 245, 245, 521,
245, 245, 671, 245, 245, 520, 583, 519, 673, 245,
661, 245, 245, 518, 245, 672, 669, 517, 245, 245,
670, 245, 245, 245, 245, 606, 245, 245, 606, 516,
245, 245, 675, 245, 245, 214, 674, 214, 214, 214,
515, 214, 214, 701, 214, 514, 214, 214, 214, 245,
714, 224, 628, 224, 257, 224, 224, 257, 257, 550,
257, 257, 722, 257, 257, 489, 723, 257, 716, 729,
257, 717, 724, 257, 718, 488, 257, 257, 725, 257,
257, 487, 360, 257, 726, 727, 257, 257, 257, 257,
257, 257, 257, 486, 629, 481, 732, 257, 719, 257,
257, 257, 257, 257, 257, 734, 257, 480, 257, 733,
730, 257, 257, 479, 731, 257, 257, 655, 257, 257,
655, 257, 257, 257, 736, 257, 257, 224, 735, 224,
224, 224, 478, 224, 224, 766, 477, 476, 224, 767,
224, 224, 475, 474, 224, 737, 224, 224, 738, 739,
214, 214, 245, 513, 678, 676, 677, 214, 458, 214,
214, 214, 457, 214, 214, 214, 456, 214, 214, 214,
607, 214, 214, 702, 341, 679, 214, 703, 214, 214,
214, 455, 214, 214, 704, 214, 450, 214, 214, 214,
449, 214, 214, 214, 448, 214, 214, 214, 705, 214,
214, 706, 214, 447, 214, 214, 214, 446, 214, 214,
707, 214, 445, 214, 214, 214, 245, 214, 214, 245,
245, 444, 245, 245, 711, 245, 245, 245, 245, 245,
245, 245, 443, 442, 245, 712, 713, 245, 245, 709,
441, 245, 714, 245, 708, 245, 245, 245, 245, 245,
224, 473, 224, 224, 224, 472, 224, 224, 224, 471,
224, 224, 656, 224, 470, 224, 224, 740, 224, 469,
224, 224, 224, 468, 224, 224, 768, 467, 466, 224,
769, 224, 224, 224, 465, 224, 224, 770, 464, 463,
224, 771, 224, 224, 224, 462, 224, 224, 224, 461,
224, 224, 224, 460, 224, 224, 224, 772, 224, 224,
773, 224, 330, 224, 224, 224, 459, 224, 224, 774,
224, 458, 224, 224, 224, 257, 224, 224, 257, 257,
457, 257, 257, 778, 257, 257, 257, 779, 257, 257,
257, 257, 257, 257, 257, 257, 257, 456, 776, 257,
245, 245, 245, 710, 245, 716, 715, 245, 245, 440,
245, 245, 717, 245, 729, 439, 245, 729, 214, 438,
214, 214, 214, 437, 214, 214, 214, 436, 214, 214,
214, 435, 214, 214, 214, 245, 214, 214, 245, 434,
719, 433, 732, 718, 214, 245, 214, 214, 245, 214,
720, 214, 214, 735, 432, 214, 735, 733, 214, 730,
214, 214, 314, 214, 734, 214, 214, 245, 245, 245,
245, 245, 245, 245, 431, 245, 245, 738, 245, 245,
430, 741, 245, 739, 741, 740, 245, 729, 729, 245,
729, 729, 748, 429, 428, 748, 737, 214, 736, 214,
780, 455, 257, 775, 781, 257, 257, 453, 257, 257,
782, 257, 777, 257, 783, 257, 257, 257, 257, 257,
257, 257, 257, 450, 257, 785, 784, 257, 257, 449,
257, 257, 786, 257, 798, 448, 257, 798, 224, 447,
224, 224, 224, 446, 224, 224, 224, 445, 224, 224,
224, 444, 224, 224, 224, 257, 224, 224, 257, 224,
788, 224, 224, 787, 224, 257, 224, 224, 257, 443,
789, 224, 801, 224, 224, 224, 442, 224, 224, 799,
441, 438, 224, 802, 224, 224, 437, 804, 803, 224,
804, 224, 257, 224, 224, 257, 257, 257, 257, 257,
214, 214, 245, 214, 214, 245, 214, 427, 214, 214,
735, 425, 214, 735, 214, 422, 214, 214, 752, 743,
214, 752, 245, 421, 245, 245, 742, 245, 741, 420,
419, 741, 730, 730, 418, 417, 245, 749, 750, 245,
756, 748, 748, 756, 748, 748, 214, 416, 214, 214,
214, 245, 214, 214, 245, 736, 754, 415, 752, 751,
214, 752, 214, 753, 214, 214, 245, 756, 245, 245,
756, 245, 214, 742, 214, 214, 414, 413, 412, 761,
214, 755, 214, 214, 763, 757, 749, 749, 245, 245,
411, 245, 245, 214, 245, 214, 214, 245, 214, 245,
257, 257, 257, 257, 257, 257, 257, 257, 257, 436,
807, 257, 808, 810, 809, 257, 810, 798, 257, 798,
798, 435, 798, 817, 806, 224, 817, 224, 224, 434,
433, 224, 805, 224, 224, 224, 432, 224, 224, 804,
298, 224, 804, 224, 294, 224, 224, 821, 812, 224,
821, 257, 257, 257, 257, 257, 257, 810, 811, 221,
810, 368, 799, 257, 799, 367, 257, 819, 818, 825,
817, 817, 825, 817, 817, 215, 224, 211, 224, 224,
224, 366, 224, 224, 805, 823, 207, 821, 820, 224,
821, 224, 822, 224, 224, 257, 257, 825, 257, 257,
214, 214, 245, 753, 410, 409, 214, 762, 214, 214,
408, 767, 757, 764, 779, 245, 407, 214, 245, 214,
214, 245, 284, 780, 245, 280, 211, 768, 349, 348,
205, 201, 347, 775, 776, 771, 772, 20, 20, 20,
20, 20, 20, 48, 48, 48, 48, 48, 48, 53,
53, 53, 53, 53, 53, 60, 60, 60, 60, 60,
60, 65, 65, 65, 65, 65, 65, 68, 68, 68,
68, 68, 68, 94, 94, 94, 94, 94, 94, 146,
146, 146, 146, 146, 146, 151, 151, 151, 151, 151,
151, 183, 183, 197, 183, 183, 183, 193, 193, 193,
825, 257, 811, 224, 257, 224, 224, 202, 824, 830,
224, 365, 224, 224, 826, 818, 818, 257, 257, 364,
257, 257, 224, 257, 224, 224, 257, 224, 832, 224,
224, 257, 822, 363, 257, 224, 831, 224, 224, 362,
361, 201, 826, 848, 257, 196, 833, 257, 224, 836,
224, 224, 849, 195, 257, 359, 837, 257, 356, 355,
354, 353, 844, 352, 840, 841, 845, 50, 50, 50,
50, 50, 50, 55, 55, 55, 55, 55, 55, 62,
62, 62, 62, 62, 62, 67, 67, 67, 67, 67,
67, 154, 154, 154, 154, 154, 154, 159, 159, 159,
193, 193, 193, 196, 192, 346, 345, 196, 196, 198,
198, 198, 198, 198, 198, 204, 204, 344, 343, 204,
204, 210, 210, 210, 342, 210, 210, 213, 213, 191,
213, 213, 213, 235, 235, 186, 235, 235, 235, 245,
245, 185, 340, 337, 245, 270, 270, 336, 270, 270,
270, 311, 311, 335, 334, 333, 311, 316, 316, 316,
316, 316, 316, 377, 377, 332, 331, 330, 377, 398,
398, 329, 398, 398, 398, 328, 327, 326, 325, 324,
323, 322, 157, 314, 306, 305, 302, 301, 300, 297,
296, 288, 287, 286, 285, 284, 282, 278, 273, 272,
159, 159, 159, 193, 193, 351, 193, 193, 193, 203,
203, 203, 203, 203, 203, 206, 350, 349, 348, 206,
206, 208, 208, 208, 208, 208, 208, 214, 214, 347,
344, 214, 214, 220, 220, 220, 343, 220, 220, 223,
223, 342, 223, 223, 223, 247, 247, 341, 247, 247,
247, 257, 257, 340, 339, 338, 257, 284, 284, 165,
284, 284, 284, 327, 327, 330, 322, 321, 327, 332,
332, 332, 332, 332, 332, 399, 399, 318, 317, 316,
399, 423, 423, 313, 423, 423, 423, 312, 307, 303,
302, 301, 300, 299, 298, 296, 292, 287, 286, 282,
268, 267, 266, 263, 262, 254, 253, 252, 251, 250,
215, 212, 211, 209, 206, 205, 201, 197, 192, 191,
186, 185, 175, 174, 173, 170, 169, 161, 160, 159,
158, 157, 156, 781, 19, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781
281, 280, 277, 276, 271, 267, 266, 265, 264, 263,
262, 225, 222, 221, 219, 216, 215, 211, 207, 202,
201, 196, 195, 185, 184, 183, 180, 179, 174, 170,
169, 168, 167, 166, 165, 164, 850, 19, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850
0, 1, 1, 1, 1, 801, 1, 0, 1, 7,
7, 21, 1, 1, 21, 1, 8, 8, 1, 35,
1, 777, 1, 1, 1, 1, 114, 1, 1, 114,
1, 35, 774, 1, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 3, 3, 3, 3, 4, 4, 4, 4,
4, 5, 5, 6, 6, 15, 15, 15, 15, 4,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 2, 7,
7, 2, 2, 867, 5, 5, 2, 3, 3, 3,
3, 4, 4, 4, 4, 4, 6, 6, 846, 2,
8, 8, 17, 17, 4, 15, 15, 15, 15, 34,
15, 16, 16, 16, 16, 2, 16, 2, 21, 2,
112, 21, 2, 2, 5, 33, 34, 31, 37, 5,
15, 16, 16, 16, 16, 31, 16, 32, 17, 17,
30, 42, 45, 30, 18, 18, 46, 30, 46, 31,
51, 51, 51, 63, 32, 42, 59, 4, 63, 184,
184, 5, 45, 6, 773, 105, 5, 17, 6, 9,
9, 9, 9, 18, 9, 68, 9, 68, 68, 105,
9, 9, 104, 9, 59, 104, 9, 770, 9, 104,
9, 9, 9, 9, 769, 9, 9, 71, 9, 71,
71, 9, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
31, 17, 4, 48, 31, 48, 6, 112, 843, 33,
37, 6, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
10, 18, 18, 10, 10, 44, 47, 61, 10, 53,
53, 53, 58, 58, 58, 58, 141, 65, 125, 44,
111, 10, 65, 842, 115, 70, 47, 70, 70, 73,
18, 73, 73, 141, 111, 61, 115, 10, 125, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
11, 11, 11, 11, 109, 11, 72, 11, 72, 72,
207, 11, 11, 72, 11, 207, 109, 11, 120, 11,
120, 11, 11, 11, 11, 766, 11, 11, 86, 11,
86, 86, 11, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
90, 10, 90, 90, 10, 10, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 12, 159, 120, 12, 12, 120,
839, 74, 12, 74, 74, 144, 838, 75, 74, 75,
75, 76, 122, 76, 76, 12, 77, 144, 77, 77,
81, 75, 81, 81, 159, 109, 122, 76, 109, 77,
835, 12, 109, 12, 81, 12, 194, 194, 12, 12,
13, 13, 13, 13, 13, 13, 13, 13, 13, 14,
106, 146, 14, 14, 146, 119, 144, 14, 56, 56,
56, 56, 73, 116, 73, 73, 74, 106, 74, 74,
14, 75, 136, 75, 75, 119, 144, 116, 73, 74,
76, 151, 76, 76, 136, 765, 14, 132, 14, 131,
14, 75, 131, 14, 14, 39, 131, 759, 39, 39,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 14, 161,
154, 14, 14, 154, 140, 78, 14, 78, 78, 79,
834, 79, 79, 80, 138, 80, 80, 138, 140, 14,
83, 138, 83, 83, 126, 78, 126, 80, 161, 83,
80, 149, 320, 320, 80, 14, 79, 14, 84, 14,
84, 84, 14, 14, 41, 149, 83, 41, 41, 828,
133, 132, 77, 39, 77, 77, 78, 76, 78, 78,
151, 79, 141, 79, 79, 78, 77, 133, 155, 77,
79, 155, 80, 77, 80, 80, 141, 153, 81, 78,
81, 81, 39, 82, 39, 82, 82, 79, 758, 39,
39, 83, 174, 83, 83, 174, 749, 80, 81, 82,
83, 84, 746, 84, 84, 85, 153, 85, 85, 188,
87, 82, 87, 87, 84, 145, 88, 145, 88, 88,
89, 308, 89, 89, 90, 88, 90, 90, 91, 188,
91, 91, 154, 154, 92, 154, 92, 92, 85, 88,
93, 308, 93, 93, 95, 95, 95, 95, 744, 91,
827, 82, 41, 82, 82, 85, 818, 85, 85, 153,
82, 153, 86, 84, 86, 86, 152, 87, 163, 87,
87, 163, 198, 173, 82, 85, 87, 89, 86, 89,
89, 41, 88, 41, 88, 88, 152, 173, 41, 41,
86, 91, 198, 91, 91, 88, 92, 815, 92, 92,
93, 813, 93, 93, 94, 92, 94, 94, 799, 95,
89, 95, 95, 191, 96, 191, 96, 96, 97, 92,
97, 97, 99, 99, 99, 99, 101, 101, 101, 101,
95, 119, 119, 119, 119, 128, 128, 128, 128, 148,
148, 148, 148, 93, 94, 96, 184, 96, 213, 184,
97, 97, 97, 97, 113, 113, 113, 113, 122, 122,
122, 122, 154, 89, 90, 92, 181, 92, 181, 91,
140, 140, 140, 140, 147, 147, 147, 147, 195, 195,
195, 200, 200, 200, 203, 93, 209, 209, 213, 209,
213, 213, 214, 730, 214, 214, 216, 245, 216, 216,
245, 728, 217, 216, 217, 217, 218, 250, 218, 218,
250, 217, 203, 219, 250, 219, 219, 725, 220, 723,
220, 220, 219, 221, 251, 221, 221, 251, 304, 304,
218, 220, 209, 251, 722, 222, 221, 222, 222, 721,
223, 700, 223, 223, 224, 699, 224, 224, 225, 697,
95, 155, 155, 155, 155, 162, 162, 217, 162, 205,
205, 205, 217, 97, 210, 210, 210, 219, 219, 223,
219, 223, 223, 797, 306, 224, 213, 224, 224, 226,
257, 226, 226, 257, 324, 162, 226, 227, 306, 227,
227, 228, 794, 228, 228, 229, 792, 229, 229, 230,
228, 230, 230, 231, 324, 231, 231, 227, 230, 232,
791, 232, 232, 219, 332, 233, 231, 233, 233, 229,
790, 234, 232, 234, 234, 235, 765, 235, 235, 236,
234, 236, 236, 237, 764, 237, 237, 238, 264, 238,
238, 264, 233, 332, 234, 235, 239, 264, 239, 239,
225, 225, 226, 696, 226, 226, 227, 257, 227, 227,
257, 316, 222, 223, 228, 254, 228, 228, 254, 224,
225, 694, 258, 226, 229, 258, 229, 229, 254, 252,
257, 228, 252, 229, 227, 230, 689, 230, 230, 231,
316, 231, 231, 232, 688, 232, 232, 258, 233, 231,
233, 233, 234, 252, 234, 234, 687, 235, 232, 235,
235, 686, 685, 230, 236, 233, 236, 236, 233, 237,
684, 237, 237, 238, 683, 238, 238, 239, 682, 239,
239, 240, 681, 240, 240, 241, 234, 241, 241, 243,
240, 243, 243, 237, 237, 242, 680, 242, 242, 244,
240, 762, 240, 240, 236, 237, 761, 241, 238, 241,
241, 242, 262, 242, 242, 262, 241, 240, 243, 262,
243, 243, 759, 244, 239, 244, 244, 245, 243, 245,
245, 246, 266, 246, 246, 266, 752, 751, 244, 242,
247, 266, 247, 247, 245, 750, 248, 245, 248, 248,
249, 749, 249, 249, 250, 748, 250, 250, 251, 267,
251, 251, 267, 747, 252, 246, 252, 252, 253, 746,
253, 253, 267, 252, 249, 249, 254, 745, 254, 254,
255, 744, 255, 255, 256, 250, 256, 256, 743, 253,
742, 251, 258, 258, 258, 258, 260, 260, 260, 260,
253, 244, 244, 253, 238, 259, 241, 643, 259, 253,
239, 246, 246, 246, 246, 248, 248, 248, 248, 256,
255, 260, 256, 255, 260, 261, 241, 259, 261, 641,
640, 243, 242, 255, 262, 263, 264, 262, 263, 264,
265, 639, 260, 265, 263, 266, 256, 638, 266, 267,
265, 262, 267, 261, 268, 637, 270, 268, 270, 270,
266, 270, 271, 635, 264, 271, 267, 272, 273, 267,
272, 273, 274, 275, 276, 274, 275, 276, 633, 277,
278, 274, 277, 278, 632, 631, 271, 271, 268, 279,
279, 279, 279, 301, 275, 625, 301, 311, 272, 312,
263, 265, 268, 263, 265, 268, 741, 269, 270, 253,
269, 270, 698, 254, 696, 268, 271, 270, 272, 271,
263, 272, 255, 273, 695, 265, 273, 274, 694, 275,
274, 270, 275, 693, 269, 276, 271, 277, 276, 278,
277, 279, 278, 272, 279, 273, 277, 280, 274, 692,
280, 279, 276, 281, 690, 282, 281, 275, 282, 688,
687, 284, 280, 284, 284, 686, 284, 278, 285, 286,
281, 285, 286, 281, 287, 288, 289, 287, 288, 289,
291, 685, 290, 291, 288, 290, 678, 292, 317, 282,
292, 317, 285, 285, 677, 327, 328, 289, 327, 328,
286, 293, 293, 293, 293, 676, 675, 287, 329, 329,
329, 329, 334, 334, 674, 334, 673, 289, 672, 290,
336, 336, 291, 336, 360, 360, 361, 360, 671, 361,
367, 367, 670, 367, 368, 368, 669, 368, 369, 369,
668, 369, 334, 371, 399, 371, 371, 399, 667, 666,
336, 372, 371, 372, 372, 373, 665, 373, 373, 374,
401, 374, 374, 401, 375, 400, 375, 375, 400, 401,
664, 361, 400, 372, 374, 378, 367, 378, 378, 663,
368, 662, 373, 661, 369, 375, 376, 660, 376, 376,
377, 659, 377, 377, 379, 376, 379, 379, 658, 657,
311, 273, 312, 313, 313, 313, 313, 318, 318, 624,
318, 276, 320, 320, 275, 320, 341, 341, 623, 341,
342, 277, 622, 342, 348, 348, 621, 348, 349, 349,
620, 349, 350, 350, 619, 350, 352, 318, 352, 352,
618, 353, 320, 353, 353, 354, 377, 354, 354, 377,
355, 617, 355, 355, 356, 616, 356, 356, 352, 357,
354, 357, 357, 356, 358, 342, 358, 358, 353, 615,
348, 355, 357, 359, 349, 359, 359, 360, 350, 360,
360, 361, 614, 361, 361, 362, 358, 362, 362, 613,
378, 612, 359, 378, 361, 362, 363, 378, 363, 363,
602, 378, 380, 377, 380, 380, 381, 601, 381, 381,
382, 380, 382, 382, 599, 383, 379, 383, 383, 384,
411, 384, 384, 411, 385, 381, 385, 385, 383, 384,
386, 405, 386, 386, 405, 402, 382, 385, 402, 411,
387, 386, 387, 387, 388, 598, 388, 388, 389, 596,
389, 389, 405, 390, 387, 390, 390, 402, 391, 595,
391, 391, 392, 406, 392, 392, 406, 594, 390, 391,
388, 592, 406, 591, 389, 393, 393, 393, 393, 394,
590, 394, 394, 395, 589, 395, 395, 396, 403, 396,
396, 403, 397, 392, 397, 397, 398, 404, 398, 398,
611, 610, 364, 360, 364, 364, 609, 608, 365, 363,
365, 365, 366, 364, 366, 366, 367, 379, 367, 367,
379, 368, 365, 368, 368, 559, 369, 558, 369, 369,
370, 382, 370, 370, 382, 556, 368, 369, 366, 379,
555, 553, 367, 371, 371, 371, 371, 372, 552, 372,
372, 373, 382, 373, 373, 374, 380, 374, 374, 380,
375, 370, 375, 375, 376, 381, 376, 376, 381, 383,
551, 384, 383, 385, 384, 549, 385, 548, 383, 374,
381, 547, 386, 380, 384, 386, 387, 388, 373, 387,
388, 546, 372, 545, 389, 385, 375, 389, 542, 541,
404, 407, 588, 408, 407, 409, 408, 410, 409, 585,
410, 396, 404, 584, 407, 403, 410, 583, 412, 413,
395, 412, 413, 414, 394, 582, 414, 409, 397, 408,
581, 580, 413, 414, 398, 415, 416, 417, 415, 416,
417, 578, 418, 419, 412, 418, 419, 416, 415, 420,
421, 417, 420, 421, 422, 424, 424, 422, 424, 577,
423, 421, 423, 423, 420, 423, 576, 425, 418, 419,
425, 426, 427, 428, 426, 427, 428, 429, 430, 575,
429, 430, 428, 431, 573, 422, 431, 454, 454, 455,
454, 572, 455, 571, 482, 482, 427, 482, 429, 484,
388, 386, 376, 390, 389, 392, 390, 391, 392, 540,
391, 393, 387, 539, 393, 537, 390, 394, 391, 392,
394, 395, 396, 397, 395, 396, 397, 398, 400, 398,
398, 400, 398, 396, 536, 535, 395, 393, 399, 399,
533, 399, 401, 394, 402, 401, 403, 402, 404, 403,
405, 404, 532, 405, 397, 403, 406, 426, 426, 406,
426, 427, 451, 451, 427, 451, 531, 453, 402, 404,
453, 457, 530, 400, 457, 459, 459, 529, 459, 401,
461, 461, 463, 461, 463, 463, 405, 528, 464, 404,
464, 464, 492, 463, 406, 492, 465, 527, 465, 465,
488, 570, 484, 488, 490, 490, 634, 490, 426, 634,
492, 492, 425, 492, 430, 569, 568, 494, 429, 494,
494, 431, 495, 567, 495, 495, 496, 524, 496, 496,
524, 566, 494, 495, 455, 497, 522, 497, 497, 522,
565, 564, 496, 524, 484, 488, 498, 563, 498, 498,
490, 522, 562, 561, 498, 499, 492, 499, 499, 560,
500, 497, 500, 500, 501, 559, 501, 501, 502, 558,
502, 502, 503, 557, 503, 503, 504, 526, 504, 504,
526, 500, 499, 501, 556, 526, 555, 503, 505, 504,
505, 505, 554, 553, 502, 506, 505, 506, 506, 507,
466, 526, 466, 466, 464, 525, 427, 467, 466, 467,
467, 468, 453, 468, 468, 469, 457, 469, 469, 492,
488, 459, 465, 488, 524, 470, 461, 470, 470, 523,
522, 488, 468, 473, 467, 473, 473, 471, 470, 471,
471, 469, 521, 520, 472, 471, 472, 472, 474, 519,
474, 474, 472, 475, 495, 475, 475, 495, 476, 473,
476, 476, 477, 518, 477, 477, 475, 495, 517, 516,
474, 478, 476, 478, 478, 479, 515, 479, 479, 478,
480, 514, 480, 480, 481, 489, 481, 481, 489, 477,
513, 479, 482, 482, 482, 482, 483, 490, 483, 483,
552, 507, 507, 506, 508, 551, 508, 508, 509, 531,
509, 509, 531, 510, 550, 510, 510, 511, 489, 511,
511, 509, 487, 486, 531, 507, 508, 510, 512, 485,
512, 512, 513, 481, 513, 513, 512, 514, 525, 514,
514, 525, 480, 515, 511, 515, 515, 479, 513, 516,
516, 516, 516, 517, 527, 517, 517, 527, 478, 518,
514, 518, 518, 519, 525, 519, 519, 520, 477, 520,
520, 521, 523, 521, 521, 523, 528, 529, 476, 528,
529, 527, 530, 523, 475, 530, 515, 532, 535, 536,
532, 535, 536, 474, 473, 472, 529, 528, 517, 520,
490, 489, 484, 480, 484, 484, 485, 458, 485, 485,
486, 456, 486, 486, 487, 455, 487, 487, 491, 493,
454, 491, 493, 490, 450, 494, 491, 481, 494, 496,
497, 498, 496, 497, 498, 449, 499, 496, 497, 499,
493, 483, 486, 500, 448, 502, 500, 484, 502, 485,
501, 494, 503, 501, 447, 503, 500, 498, 499, 487,
503, 446, 504, 505, 501, 504, 505, 506, 507, 507,
506, 507, 502, 508, 509, 445, 508, 509, 504, 510,
511, 512, 510, 511, 512, 534, 505, 557, 534, 560,
557, 560, 560, 561, 444, 561, 561, 562, 443, 562,
532, 471, 533, 470, 518, 533, 519, 469, 530, 534,
533, 536, 534, 468, 535, 537, 521, 534, 537, 538,
539, 540, 538, 539, 540, 467, 466, 541, 537, 540,
541, 542, 543, 538, 542, 543, 544, 544, 545, 544,
465, 545, 546, 541, 464, 546, 547, 539, 548, 547,
549, 548, 574, 549, 542, 574, 600, 463, 603, 600,
603, 603, 462, 604, 461, 604, 604, 630, 460, 605,
630, 605, 605, 459, 458, 543, 604, 605, 457, 607,
548, 607, 607, 545, 603, 456, 453, 546, 606, 547,
606, 606, 452, 630, 451, 549, 606, 574, 450, 449,
562, 561, 560, 442, 563, 562, 563, 563, 441, 440,
506, 584, 511, 564, 584, 564, 564, 587, 508, 509,
587, 564, 510, 439, 584, 565, 512, 565, 565, 438,
534, 437, 557, 565, 566, 436, 566, 566, 567, 435,
567, 567, 566, 568, 434, 568, 568, 569, 433, 569,
569, 570, 432, 570, 570, 571, 431, 571, 571, 572,
430, 572, 572, 567, 429, 428, 573, 572, 573, 573,
425, 574, 585, 574, 574, 585, 424, 423, 570, 574,
585, 575, 571, 575, 575, 576, 573, 576, 576, 577,
422, 577, 577, 578, 421, 578, 578, 579, 420, 579,
608, 600, 608, 608, 609, 448, 609, 609, 608, 447,
446, 610, 609, 610, 610, 611, 445, 611, 611, 610,
444, 443, 612, 611, 612, 612, 613, 442, 613, 613,
614, 441, 614, 614, 615, 440, 615, 615, 616, 439,
616, 616, 617, 641, 617, 617, 641, 618, 612, 618,
618, 613, 438, 437, 619, 618, 619, 619, 620, 631,
620, 620, 631, 436, 639, 616, 620, 639, 621, 617,
621, 621, 631, 622, 619, 622, 622, 623, 435, 623,
623, 624, 434, 624, 624, 625, 433, 625, 625, 626,
639, 626, 626, 627, 640, 627, 627, 640, 623, 628,
579, 580, 419, 580, 580, 581, 591, 581, 581, 591,
577, 582, 576, 582, 582, 583, 586, 583, 583, 586,
588, 418, 592, 588, 586, 592, 589, 417, 588, 589,
578, 591, 590, 580, 589, 590, 581, 416, 593, 594,
590, 593, 594, 595, 596, 597, 595, 596, 597, 415,
598, 599, 596, 598, 599, 414, 582, 413, 598, 600,
583, 601, 600, 412, 601, 597, 594, 411, 602, 603,
595, 602, 603, 605, 604, 606, 605, 604, 606, 410,
607, 663, 601, 607, 663, 644, 600, 644, 644, 645,
409, 645, 645, 644, 646, 408, 646, 646, 647, 664,
622, 628, 628, 629, 632, 629, 629, 632, 633, 432,
642, 633, 632, 642, 635, 366, 633, 635, 624, 640,
636, 626, 635, 636, 627, 365, 637, 638, 636, 637,
638, 364, 363, 643, 637, 638, 643, 644, 645, 646,
644, 645, 646, 362, 628, 359, 645, 647, 629, 648,
647, 649, 648, 650, 649, 647, 650, 358, 651, 646,
643, 651, 652, 357, 644, 652, 653, 655, 654, 653,
655, 654, 656, 722, 650, 656, 722, 699, 649, 699,
699, 700, 356, 700, 700, 699, 355, 354, 701, 700,
701, 701, 353, 352, 702, 651, 702, 702, 653, 654,
647, 647, 664, 407, 605, 602, 604, 648, 347, 648,
648, 649, 346, 649, 649, 650, 345, 650, 650, 651,
606, 651, 651, 650, 344, 607, 652, 651, 652, 652,
653, 343, 653, 653, 652, 654, 340, 654, 654, 655,
339, 655, 655, 656, 338, 656, 656, 657, 654, 657,
657, 656, 658, 337, 658, 658, 659, 336, 659, 659,
657, 660, 335, 660, 660, 661, 662, 661, 661, 662,
665, 334, 666, 665, 662, 666, 667, 668, 669, 667,
668, 669, 333, 332, 670, 668, 669, 670, 671, 659,
331, 671, 670, 672, 658, 673, 672, 674, 673, 675,
703, 351, 703, 703, 704, 350, 704, 704, 705, 349,
705, 705, 655, 706, 348, 706, 706, 656, 707, 347,
707, 707, 708, 346, 708, 708, 707, 345, 344, 709,
708, 709, 709, 710, 343, 710, 710, 709, 342, 341,
711, 710, 711, 711, 712, 340, 712, 712, 713, 339,
713, 713, 714, 338, 714, 714, 715, 712, 715, 715,
714, 716, 331, 716, 716, 717, 326, 717, 717, 715,
718, 325, 718, 718, 719, 720, 719, 719, 720, 721,
323, 723, 721, 720, 723, 724, 725, 721, 724, 725,
726, 727, 728, 726, 727, 728, 729, 322, 717, 729,
674, 676, 675, 660, 676, 674, 672, 677, 678, 330,
677, 678, 675, 679, 698, 329, 679, 698, 701, 328,
701, 701, 702, 327, 702, 702, 703, 326, 703, 703,
704, 325, 704, 704, 705, 711, 705, 705, 711, 324,
677, 323, 705, 676, 706, 712, 706, 706, 712, 707,
678, 707, 707, 709, 322, 709, 709, 707, 708, 698,
708, 708, 315, 710, 708, 710, 710, 713, 714, 715,
713, 714, 715, 716, 310, 717, 716, 715, 717, 718,
309, 719, 718, 717, 719, 718, 720, 724, 729, 720,
724, 729, 731, 307, 306, 731, 710, 732, 709, 732,
728, 321, 730, 716, 729, 730, 731, 318, 732, 731,
730, 732, 718, 733, 731, 734, 733, 735, 734, 736,
735, 737, 736, 316, 737, 735, 733, 738, 739, 315,
738, 739, 736, 740, 763, 314, 740, 763, 766, 313,
766, 766, 767, 312, 767, 767, 768, 311, 768, 768,
769, 310, 769, 769, 770, 778, 770, 770, 778, 771,
738, 771, 771, 737, 772, 779, 772, 772, 779, 309,
739, 773, 772, 773, 773, 774, 308, 774, 774, 763,
307, 305, 775, 774, 775, 775, 304, 776, 775, 776,
776, 777, 780, 777, 777, 780, 781, 782, 783, 781,
732, 733, 738, 733, 733, 738, 734, 305, 734, 734,
735, 302, 735, 735, 736, 300, 736, 736, 737, 720,
737, 737, 739, 299, 740, 739, 719, 740, 741, 298,
297, 741, 724, 729, 296, 295, 742, 731, 734, 742,
743, 745, 748, 743, 745, 748, 750, 294, 750, 750,
751, 754, 751, 751, 754, 735, 740, 293, 752, 736,
752, 752, 753, 737, 753, 753, 755, 756, 757, 755,
756, 757, 761, 741, 761, 761, 292, 291, 290, 750,
762, 742, 762, 762, 754, 743, 745, 748, 763, 764,
289, 763, 764, 767, 768, 767, 767, 768, 771, 772,
782, 783, 784, 785, 786, 784, 785, 786, 787, 303,
784, 787, 786, 788, 787, 789, 788, 793, 789, 798,
793, 302, 798, 800, 777, 801, 800, 801, 801, 301,
300, 802, 776, 802, 802, 803, 299, 803, 803, 804,
298, 804, 804, 805, 295, 805, 805, 806, 789, 806,
806, 807, 808, 809, 807, 808, 809, 810, 788, 220,
810, 218, 793, 811, 798, 215, 811, 803, 800, 812,
814, 817, 812, 814, 817, 214, 819, 212, 819, 819,
820, 211, 820, 820, 804, 809, 209, 821, 805, 821,
821, 822, 806, 822, 822, 823, 824, 825, 823, 824,
771, 771, 772, 752, 288, 287, 775, 753, 775, 775,
286, 761, 756, 757, 775, 776, 285, 779, 776, 779,
779, 780, 284, 776, 780, 281, 210, 763, 208, 205,
204, 202, 201, 771, 772, 767, 768, 782, 782, 782,
782, 782, 782, 783, 783, 783, 783, 783, 783, 784,
784, 784, 784, 784, 784, 785, 785, 785, 785, 785,
785, 786, 786, 786, 786, 786, 786, 787, 787, 787,
787, 787, 787, 788, 788, 788, 788, 788, 788, 789,
789, 789, 789, 789, 789, 790, 790, 790, 790, 790,
790, 791, 791, 199, 791, 791, 791, 792, 792, 792,
825, 826, 810, 831, 826, 831, 831, 204, 811, 819,
830, 200, 830, 830, 812, 814, 817, 832, 833, 199,
832, 833, 836, 837, 836, 836, 837, 840, 823, 840,
840, 841, 821, 197, 841, 844, 822, 844, 844, 196,
195, 192, 825, 844, 845, 190, 826, 845, 848, 830,
848, 848, 845, 189, 849, 185, 832, 849, 183, 182,
181, 180, 840, 179, 836, 837, 841, 851, 851, 851,
851, 851, 851, 852, 852, 852, 852, 852, 852, 853,
853, 853, 853, 853, 853, 854, 854, 854, 854, 854,
854, 855, 855, 855, 855, 855, 855, 856, 856, 856,
792, 792, 792, 793, 194, 190, 189, 793, 793, 794,
794, 794, 794, 794, 794, 795, 795, 187, 186, 795,
795, 796, 796, 796, 185, 796, 796, 797, 797, 182,
797, 797, 797, 798, 798, 180, 798, 798, 798, 799,
799, 179, 175, 173, 799, 800, 800, 172, 800, 800,
800, 802, 802, 171, 170, 169, 802, 803, 803, 803,
803, 803, 803, 804, 804, 168, 167, 166, 804, 805,
805, 165, 805, 805, 805, 164, 163, 162, 161, 160,
159, 158, 157, 149, 143, 142, 139, 138, 137, 135,
134, 130, 129, 128, 127, 126, 124, 121, 118, 117,
856, 856, 856, 857, 857, 178, 857, 857, 857, 858,
858, 858, 858, 858, 858, 859, 177, 176, 175, 859,
859, 860, 860, 860, 860, 860, 860, 861, 861, 174,
172, 861, 861, 862, 862, 862, 171, 862, 862, 863,
863, 170, 863, 863, 863, 864, 864, 169, 864, 864,
864, 865, 865, 168, 167, 166, 865, 866, 866, 165,
866, 866, 866, 868, 868, 157, 151, 150, 868, 869,
869, 869, 869, 869, 869, 870, 870, 147, 146, 145,
870, 871, 871, 143, 871, 871, 871, 142, 139, 137,
136, 135, 134, 133, 132, 130, 127, 124, 123, 118,
112, 111, 110, 108, 107, 103, 102, 101, 100, 99,
70, 67, 65, 64, 62, 60, 58, 55, 50, 47,
44, 43, 38, 37, 36, 34, 33, 29, 28, 27,
26, 25, 23, 19, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
781, 781, 781
117, 116, 114, 113, 110, 108, 107, 106, 105, 104,
103, 72, 69, 67, 66, 64, 62, 60, 57, 52,
49, 46, 45, 40, 39, 38, 36, 35, 32, 30,
29, 28, 27, 26, 25, 23, 19, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
850, 850, 850, 850, 850, 850
/* Table of booleans, true if rule could match eol. */
static yyconst flex_int32_t yy_rule_can_match_eol[63] =
{ 0,
0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0,
1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 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,
1, 0, 0, };
static yy_state_type yy_last_accepting_state;
static char *yy_last_accepting_cpos;
extern int yy_flex_debug;
int yy_flex_debug = 0;
/* The intent behind this definition is that it'll catch
* any uses of REJECT which flex missed.
*/
#define REJECT reject_used_but_not_detected
static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
static char *yy_full_match;
static int yy_lp;
#define REJECT \
{ \
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
yy_cp = yy_full_match; /* restore poss. backed-over text */ \
++yy_lp; \
goto find_rule; \
}
#line 1276 "levcomp.lex.cc"
#define INITIAL 0
#define MAPDEF 1
#define LUA 2
#define LUA_ONELINER 3
#define ARGUMENT 4
#define MNAME 5
#define KEYWORDS 6
#define ITEM_LIST 7
#ifndef YY_NO_UNISTD_H
/* Special case for "unistd.h", since it is non-ANSI. We include it way
* down here because we want the user's section 1 to have been scanned first.
* The user has a chance to override it with an option.
*/
#include <unistd.h>
#endif
#define YY_NEVER_INTERACTIVE 1
#line 1329 "levcomp.lex.cc"
#ifndef YY_EXTRA_TYPE
#define YY_EXTRA_TYPE void *
#endif
static int yy_init_globals (void );
#ifdef __cplusplus
static int yyinput (void );
#if YY_STACK_USED
static int yy_start_stack_ptr = 0;
static int yy_start_stack_depth = 0;
static int *yy_start_stack = 0;
#ifndef YY_NO_PUSH_STATE
static void yy_push_state YY_PROTO(( int new_state ));
#endif
#ifndef YY_NO_POP_STATE
static void yy_pop_state YY_PROTO(( void ));
#endif
#ifndef YY_NO_TOP_STATE
static int yy_top_state YY_PROTO(( void ));
#endif
#ifdef YY_MALLOC_DECL
YY_MALLOC_DECL
#else
#if __STDC__
#ifndef __cplusplus
#include <stdlib.h>
#endif
#else
/* Just try to get by without declaring the routines. This will fail
* miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
* or sizeof(void*) != sizeof(int).
*/
#endif
else \
{ \
errno=0; \
while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
{ \
if( errno != EINTR) \
{ \
YY_FATAL_ERROR( "input in flex scanner failed" ); \
break; \
} \
errno=0; \
clearerr(yyin); \
} \
}\
\
else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
&& ferror( yyin ) ) \
YY_FATAL_ERROR( "input in flex scanner failed" );
while ( yy_current_state != 781 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
while ( yy_base[yy_current_state] != 2138 );
yy_act = yy_accept[yy_current_state];
yy_current_state = *--yy_state_ptr;
yy_lp = yy_accept[yy_current_state];
find_rule: /* we branch to this label when backing up */
for ( ; ; ) /* until we find what rule we matched */
{
if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
{
yy_act = yy_acclist[yy_lp];
{
yy_full_match = yy_cp;
break;
}
}
--yy_cp;
yy_current_state = *--yy_state_ptr;
yy_lp = yy_accept[yy_current_state];
}
#line 1911 "levcomp.lex.cc"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(MAPDEF):
case YY_STATE_EOF(LUA):
case YY_STATE_EOF(LUA_ONELINER):
case YY_STATE_EOF(ARGUMENT):
case YY_STATE_EOF(MNAME):
case YY_STATE_EOF(KEYWORDS):
case YY_STATE_EOF(ITEM_LIST):
case YY_STATE_EOF(TOEOL):
yyterminate();
#line 1961 "levcomp.lex.cc"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(MAPDEF):
case YY_STATE_EOF(LUA):
case YY_STATE_EOF(LUA_ONELINER):
case YY_STATE_EOF(ARGUMENT):
case YY_STATE_EOF(MNAME):
case YY_STATE_EOF(KEYWORDS):
case YY_STATE_EOF(ITEM_LIST):
case YY_STATE_EOF(TOEOL):
yyterminate();
(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
yy_n_chars = yy_current_buffer->yy_n_chars;
yy_current_buffer->yy_input_file = yyin;
yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
static int yy_get_next_buffer (void)
{
register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
register char *source = (yytext_ptr);
static int yy_get_next_buffer()
{
register char *dest = yy_current_buffer->yy_ch_buf;
register char *source = yytext_ptr;
(yy_n_chars) += number_to_move;
YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
yy_n_chars += number_to_move;
yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
{
#ifdef YY_USE_PROTOS
static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
#else
static yy_state_type yy_try_NUL_trans( yy_current_state )
yy_state_type yy_current_state;
#endif
{
static void yyunput (int c, register char * yy_bp )
{
register char *yy_cp;
yy_cp = (yy_c_buf_p);
#ifndef YY_NO_UNPUT
#ifdef YY_USE_PROTOS
static void yyunput( int c, register char *yy_bp )
#else
static void yyunput( c, yy_bp )
int c;
register char *yy_bp;
#endif
{
register char *yy_cp = yy_c_buf_p;
register int number_to_move = (yy_n_chars) + 2;
register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
register int number_to_move = yy_n_chars + 2;
register char *dest = &yy_current_buffer->yy_ch_buf[
yy_current_buffer->yy_buf_size + 2];
c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
*(yy_c_buf_p) = '\0'; /* preserve yytext */
(yy_hold_char) = *++(yy_c_buf_p);
c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
*yy_c_buf_p = '\0'; /* preserve yytext */
yy_hold_char = *++yy_c_buf_p;
/** Immediately switch to a different input stream.
* @param input_file A readable stream.
*
* @note This function does not reset the start condition to @c INITIAL .
*/
void yyrestart (FILE * input_file )
{
if ( ! YY_CURRENT_BUFFER ){
yyensure_buffer_stack ();
YY_CURRENT_BUFFER_LVALUE =
yy_create_buffer(yyin,YY_BUF_SIZE );
yy_init_buffer( yy_current_buffer, input_file );
yy_load_buffer_state();
/** Switch to a different input buffer.
* @param new_buffer The new input buffer.
*
*/
void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
{
/* TODO. We should be able to replace this entire function body
* with
* yypop_buffer_state();
* yypush_buffer_state(new_buffer);
*/
yyensure_buffer_stack ();
if ( YY_CURRENT_BUFFER == new_buffer )
#ifdef YY_USE_PROTOS
void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
#else
void yy_switch_to_buffer( new_buffer )
YY_BUFFER_STATE new_buffer;
#endif
{
if ( yy_current_buffer == new_buffer )
*(yy_c_buf_p) = (yy_hold_char);
YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
*yy_c_buf_p = yy_hold_char;
yy_current_buffer->yy_buf_pos = yy_c_buf_p;
yy_current_buffer->yy_n_chars = yy_n_chars;
(yy_did_buffer_switch_on_eof) = 1;
}
yy_did_buffer_switch_on_eof = 1;
}
#ifdef YY_USE_PROTOS
void yy_load_buffer_state( void )
#else
void yy_load_buffer_state()
#endif
{
yy_n_chars = yy_current_buffer->yy_n_chars;
yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
yyin = yy_current_buffer->yy_input_file;
yy_hold_char = *yy_c_buf_p;
}
/** Allocate and initialize an input buffer state.
* @param file A readable stream.
* @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
*
* @return the allocated buffer state.
*/
YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
{
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
#else
YY_BUFFER_STATE yy_create_buffer( file, size )
FILE *file;
int size;
#endif
{
{
int oerrno = errno;
yy_flush_buffer(b );
#ifndef YY_ALWAYS_INTERACTIVE
#ifndef YY_NEVER_INTERACTIVE
extern int isatty YY_PROTO(( int ));
#endif
#endif
#ifdef YY_USE_PROTOS
void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
#else
void yy_init_buffer( b, file )
YY_BUFFER_STATE b;
FILE *file;
#endif
{
yy_flush_buffer( b );
/* If b is the current buffer, then yy_init_buffer was _probably_
* called from yyrestart() or through yy_get_next_buffer.
* In that case, we don't want to reset the lineno or column.
*/
if (b != YY_CURRENT_BUFFER){
b->yy_bs_lineno = 1;
b->yy_bs_column = 0;
}
#if YY_ALWAYS_INTERACTIVE
b->yy_is_interactive = 1;
#else
#if YY_NEVER_INTERACTIVE
b->yy_is_interactive = 0;
#else
b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
#endif
#endif
}
/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
* @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
*
*/
void yy_flush_buffer (YY_BUFFER_STATE b )
{
if ( ! b )
#ifdef YY_USE_PROTOS
void yy_flush_buffer( YY_BUFFER_STATE b )
#else
void yy_flush_buffer( b )
YY_BUFFER_STATE b;
#endif
{
if ( ! b )
if ( b == YY_CURRENT_BUFFER )
yy_load_buffer_state( );
}
/** Pushes the new state onto the stack. The new state becomes
* the current state. This function will allocate the stack
* if necessary.
* @param new_buffer The new state.
*
*/
void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
{
if (new_buffer == NULL)
return;
yyensure_buffer_stack();
/* This block is copied from yy_switch_to_buffer. */
if ( YY_CURRENT_BUFFER )
{
/* Flush out information for old buffer. */
*(yy_c_buf_p) = (yy_hold_char);
YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
}
/* Only push if top exists. Otherwise, replace top. */
if (YY_CURRENT_BUFFER)
(yy_buffer_stack_top)++;
YY_CURRENT_BUFFER_LVALUE = new_buffer;
/* copied from yy_switch_to_buffer. */
yy_load_buffer_state( );
(yy_did_buffer_switch_on_eof) = 1;
}
/** Removes and deletes the top of the stack, if present.
* The next element becomes the new top.
*
*/
void yypop_buffer_state (void)
{
if (!YY_CURRENT_BUFFER)
return;
yy_delete_buffer(YY_CURRENT_BUFFER );
YY_CURRENT_BUFFER_LVALUE = NULL;
if ((yy_buffer_stack_top) > 0)
--(yy_buffer_stack_top);
}
/* Allocates the stack if it does not exist.
* Guarantees space for at least one push.
*/
static void yyensure_buffer_stack (void)
{
int num_to_alloc;
if (!(yy_buffer_stack)) {
/* First allocation is just for 2 elements, since we don't know if this
* scanner will even need a stack. We use 2 instead of 1 to avoid an
* immediate realloc on the next call.
*/
num_to_alloc = 1;
(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
(num_to_alloc * sizeof(struct yy_buffer_state*)
);
memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
(yy_buffer_stack_max) = num_to_alloc;
(yy_buffer_stack_top) = 0;
return;
}
if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
/* Increase the buffer to prepare for a possible push. */
int grow_size = 8 /* arbitrary grow size */;
num_to_alloc = (yy_buffer_stack_max) + grow_size;
(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
((yy_buffer_stack),
num_to_alloc * sizeof(struct yy_buffer_state*)
);
/** Setup the input buffer state to scan directly from a user-specified character buffer.
* @param base the character buffer
* @param size the size in bytes of the character buffer
*
* @return the newly allocated buffer state object.
*/
YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
{
#ifndef YY_NO_SCAN_BUFFER
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
#else
YY_BUFFER_STATE yy_scan_buffer( base, size )
char *base;
yy_size_t size;
#endif
{
}
}
#endif
#ifndef YY_NO_SCAN_STRING
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
#else
YY_BUFFER_STATE yy_scan_string( yy_str )
yyconst char *yy_str;
#endif
{
int len;
for ( len = 0; yy_str[len]; ++len )
;
return yy_scan_bytes( yy_str, len );
}
#endif
/** Setup the input buffer state to scan a string. The next call to yylex() will
* scan from a @e copy of @a str.
* @param yystr a NUL-terminated string to scan
*
* @return the newly allocated buffer state object.
* @note If you want to scan bytes that may contain NUL values, then use
* yy_scan_bytes() instead.
*/
YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
{
return yy_scan_bytes(yystr,strlen(yystr) );
}
/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
* scan from a @e copy of @a bytes.
* @param bytes the byte buffer to scan
* @param len the number of bytes in the buffer pointed to by @a bytes.
*
* @return the newly allocated buffer state object.
*/
YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
{
#ifndef YY_NO_SCAN_BYTES
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
#else
YY_BUFFER_STATE yy_scan_bytes( bytes, len )
yyconst char *bytes;
int len;
#endif
{
/* Redefine yyless() so it works in section 3 code. */
#ifndef YY_NO_PUSH_STATE
#ifdef YY_USE_PROTOS
static void yy_push_state( int new_state )
#else
static void yy_push_state( new_state )
int new_state;
#endif
{
if ( yy_start_stack_ptr >= yy_start_stack_depth )
{
yy_size_t new_size;
#undef yyless
#define yyless(n) \
do \
{ \
/* Undo effects of setting up yytext. */ \
int yyless_macro_arg = (n); \
YY_LESS_LINENO(yyless_macro_arg);\
yytext[yyleng] = (yy_hold_char); \
(yy_c_buf_p) = yytext + yyless_macro_arg; \
(yy_hold_char) = *(yy_c_buf_p); \
*(yy_c_buf_p) = '\0'; \
yyleng = yyless_macro_arg; \
} \
while ( 0 )
yy_start_stack_depth += YY_START_STACK_INCR;
new_size = yy_start_stack_depth * sizeof( int );
void yyset_out (FILE * out_str )
{
yyout = out_str ;
}
int yyget_debug (void)
{
return yy_flex_debug;
}
void yyset_debug (int bdebug )
{
yy_flex_debug = bdebug ;
}
static int yy_init_globals (void)
{
/* Initialization is the same as for the non-reentrant scanner.
* This function is called from yylex_destroy(), so don't allocate here.
*/
#ifndef YY_NO_TOP_STATE
static int yy_top_state()
{
return yy_start_stack[yy_start_stack_ptr - 1];
}
#endif
/* We do not touch yylineno unless the option is enabled. */
yylineno = 1;
(yy_buffer_stack) = 0;
(yy_buffer_stack_top) = 0;
(yy_buffer_stack_max) = 0;
(yy_c_buf_p) = (char *) 0;
(yy_init) = 0;
(yy_start) = 0;
#ifndef YY_EXIT_FAILURE
#define YY_EXIT_FAILURE 2
#endif
/* yylex_destroy is for both reentrant and non-reentrant scanners. */
int yylex_destroy (void)
{
/* Pop the buffer stack, destroying each element. */
while(YY_CURRENT_BUFFER){
yy_delete_buffer(YY_CURRENT_BUFFER );
YY_CURRENT_BUFFER_LVALUE = NULL;
yypop_buffer_state();
}
/* Reset the globals. This is important in a non-reentrant scanner so the next time
* yylex() is called, initialization will occur. */
yy_init_globals( );
#undef yyless
#define yyless(n) \
do \
{ \
/* Undo effects of setting up yytext. */ \
yytext[yyleng] = yy_hold_char; \
yy_c_buf_p = yytext + n; \
yy_hold_char = *yy_c_buf_p; \
*yy_c_buf_p = '\0'; \
yyleng = n; \
} \
while ( 0 )
}
return (rmarkers);
}
std::vector<map_marker*> map_markers::get_all(const std::string &key,
const std::string &val)
{
std::vector<map_marker*> rmarkers;
for (dgn_marker_map::const_iterator i = markers.begin();
i != markers.end(); ++i)
{
map_marker* marker = i->second;
const std::string prop = marker->property(key);
if ((val == "" && !prop.empty()) || (val != "" && val == prop))
rmarkers.push_back(marker);
}
//////////////////////////////////////////////////////////////////////////
// map_flags
map_flags::map_flags()
: flags_set(0), flags_unset(0)
{
}
typedef std::map<std::string, unsigned long> flag_map;
map_flags map_flags::parse(const std::string flag_list[],
const std::string &s) throw(std::string)
{
map_flags mf;
const std::vector<std::string> segs = split_string("/", s);
flag_map flag_vals;
for (int i = 0; flag_list[i] != ""; i++)
flag_vals[flag_list[i]] = 1 << i;
for (int i = 0, size = segs.size(); i < size; i++)
{
std::string flag = segs[i];
bool negate = false;
if (flag[0] == '!')
{
flag = flag.substr(1);
negate = true;
}
flag_map::const_iterator val = flag_vals.find(flag);
if (val == flag_vals.end())
throw make_stringf("Unknown flag: '%s'", flag.c_str());
if (negate)
mf.flags_unset |= val->second;
else
mf.flags_set |= val->second;
}
return mf;
}
static const std::string level_flag_names[] =
{"no_tele_control", "not_mappable", "no_magic_map", ""};
static int dgn_lflags(lua_State *ls)
{
MAP(ls, 1, map);
try {
map->level_flags = map_flags::parse(level_flag_names,
luaL_checkstring(ls, 2));
}
catch (const std::string &error)
{
luaL_argerror(ls, 2, error.c_str());
}
return (0);
}
static int dgn_change_level_flags(lua_State *ls)
{
map_flags flags;
try {
flags = map_flags::parse(level_flag_names,
luaL_checkstring(ls, 1));
}
catch (const std::string &error)
{
luaL_argerror(ls, 2, error.c_str());
lua_pushboolean(ls, false);
return (1);
}
bool silent = lua_toboolean(ls, 2);
bool changed1 = set_level_flags(flags.flags_set, silent);
bool changed2 = unset_level_flags(flags.flags_unset, silent);
lua_pushboolean(ls, changed1 || changed2);
return (1);
}
static const std::string branch_flag_names[] =
{"no_tele_control", "not_mappable", "no_magic_map", ""};
static int dgn_bflags(lua_State *ls)
{
MAP(ls, 1, map);
try {
map->branch_flags = map_flags::parse(branch_flag_names,
luaL_checkstring(ls, 2));
}
catch (const std::string &error)
{
luaL_argerror(ls, 2, error.c_str());
}
return (0);
static int dgn_change_branch_flags(lua_State *ls)
{
map_flags flags;
try {
flags = map_flags::parse(branch_flag_names,
luaL_checkstring(ls, 1));
}
catch (const std::string &error)
{
luaL_argerror(ls, 2, error.c_str());
lua_pushboolean(ls, false);
return (1);
}
bool silent = lua_toboolean(ls, 2);
bool changed1 = set_branch_flags(flags.flags_set, silent);
bool changed2 = unset_branch_flags(flags.flags_unset, silent);
lua_pushboolean(ls, changed1 || changed2);
return (1);
}
static int dgn_num_matching_markers(lua_State *ls)
{
const char* key = luaL_checkstring(ls, 1);
const char* val_ptr = lua_tostring(ls, 2);
const char* val;
if (val_ptr == NULL)
val = "";
else
val = val_ptr;
std::vector<map_marker*> markers = env.markers.get_all(key, val);
PLUARET(number, markers.size());
}
static int dgn_item_from_index(lua_State *ls)
{
const int index = luaL_checkint(ls, 1);
item_def *item = &mitm[index];
if (is_valid_item(*item))
lua_pushlightuserdata(ls, item);
else
lua_pushnil(ls);
return (1);
}
static int dgn_mons_from_index(lua_State *ls)
{
const int index = luaL_checkint(ls, 1);
monsters *mons = &menv[index];
if (mons->type != -1)
push_monster(ls, mons);
else
lua_pushnil(ls);
return (1);
}
}
bool set_level_flags(unsigned long flags, bool silent)
{
bool could_control = allow_control_teleport(true);
bool could_map = player_in_mappable_area();
unsigned long old_flags = env.level_flags;
env.level_flags |= flags;
bool can_control = allow_control_teleport(true);
bool can_map = player_in_mappable_area();
if (you.skills[SK_TRANSLOCATIONS] > 0
&& could_control && !can_control && !silent)
{
mpr("You sense the appearence of a powerful magical force "
"which warps space.", MSGCH_WARN);
}
if (could_map && !can_map && !silent)
{
mpr("A powerful force appears that prevents you from "
"remembering where you've been.", MSGCH_WARN);
}
return (old_flags != env.level_flags);
}
bool unset_level_flags(unsigned long flags, bool silent)
{
bool could_control = allow_control_teleport(true);
bool could_map = player_in_mappable_area();
unsigned long old_flags = env.level_flags;
env.level_flags &= ~flags;
bool can_control = allow_control_teleport(true);
bool can_map = player_in_mappable_area();
if (you.skills[SK_TRANSLOCATIONS] > 0
&& !could_control && can_control && !silent)
{
// Isn't really a "recovery", but I couldn't think of where
// else to send it.
mpr("You sense the disappearence of a powerful magical force "
"which warped space.", MSGCH_RECOVERY);
}
if (!could_map && can_map && !silent)
{
// Isn't really a "recovery", but I couldn't think of where
// else to send it.
mpr("You sense the disappearence the force that prevented you "
"from remembering where you've been.", MSGCH_RECOVERY);
}
return (old_flags != env.level_flags);
// Now do per-square by-symbol masking
for (int y = place.y + place.height - 1; y >= place.y; --y)
for (int x = place.x + place.width - 1; x >= place.x; --x)
if (place.map.in_map(coord_def(x - place.x, y - place.y)))
{
int key = place.map.map.glyph(x - place.x, y - place.y);
const keyed_mapspec* spec = place.map.mapspec_for_key(key);
if (spec != NULL)
{
dgn_map_mask[x][y] |= (short)spec->map_mask.flags_set;
dgn_map_mask[x][y] &= ~((short)spec->map_mask.flags_unset);
}
}
set_branch_flags(place.map.branch_flags.flags_set, true);
unset_branch_flags(place.map.branch_flags.flags_unset, true);
set_level_flags(place.map.level_flags.flags_set, true);
unset_level_flags(place.map.level_flags.flags_unset, true);
// Set default level flags
if (you.level_type == LEVEL_DUNGEON)
env.level_flags = branches[you.where_are_you].default_level_flags;
else if (you.level_type == LEVEL_LABYRINTH ||
you.level_type == LEVEL_ABYSS)
{
env.level_flags = LFLAG_NO_TELE_CONTROL | LFLAG_NOT_MAPPABLE;
if (!(you.level_type == LEVEL_LABYRINTH
&& you.species != SP_MINOTAUR))
{
env.level_flags |= LFLAG_NO_MAGIC_MAP;
}
}
else
env.level_flags = 0;
DET_TURN_ELAPSED = 0x0001,
DET_MONSTER_MOVED = 0x0002,
DET_PLAYER_MOVED = 0x0004,
DET_LEAVING_LEVEL = 0x0008,
DET_ENTERING_LEVEL = 0x0010,
DET_PLAYER_IN_LOS = 0x0020, // Player just entered LOS.
DET_PLAYER_CLIMBS = 0x0040 // Player climbing stairs.
DET_TURN_ELAPSED = 0x0001,
DET_MONSTER_MOVED = 0x0002,
DET_PLAYER_MOVED = 0x0004,
DET_LEAVING_LEVEL = 0x0008,
DET_ENTERING_LEVEL = 0x0010,
DET_PLAYER_IN_LOS = 0x0020, // Player just entered LOS.
DET_PLAYER_CLIMBS = 0x0040, // Player climbing stairs.
DET_MONSTER_DIED = 0x0080,
DET_ITEM_PICKUP = 0x0100,
DET_FEAT_CHANGE = 0x0200
---------------------------------------------------------------------------
-- lm_flags.lua
-- Changing level flags and branch flags
--------------------------------------------------------------------------
--------------------------------------------------------------------------
-- There are three different types of pre-packaged "change level and
-- branch flags" marker types. All three share the following parameters:
--
-- * level_flags: A space separated list of level flag names to set or unset.
-- To unset a flag, prefix the name with "!".
--
-- * branch_flags: Like level_flags, but for branch flags to set or unset.
--
-- * group: Different flag change markers on the same level can be put
-- into the same group by giving them the same group name.
-- Of all of the markers in the same group, only the last one
-- to have its conditions met will cause the flags to change.
-- This is useful if, for example, there are two magical fountains,
-- and you only want the flags to change when both dry up.
--
-- * msg: A message to give the user when the flags are changed; suppress
-- any messages Crawl would normally give for the changes effected.
-- The message is not given if nothing is changed (i.e., if all
-- the flags to be set were already set and all the flags to be
-- unset were already unset).
--
-- The three different marker types can be created with the following
-- functions:
--
-- * mons_dies_change_flags(): Creates a marker which changes the flags
-- when a named monster dies. Accepts the parameter "mon_name"
-- as the name of the monster to watch. The marker can be
-- placed anywhere on the level, and doesn't have to be near the
-- monster when it dies.
--
-- * feat_change_change_flags(): Creates a marker which acts when the
-- feature of its grid changes. Accepts the optional string
-- parameter "final_feat", which will cause the change to only
-- take place when the changed feature contains final_feat as
-- a substring. For example, a sparkling fountain can dry up
-- either by turning directly into a dry_fountain_ii feature,
-- or by first turning into a blue_fountain feature, and then
-- into a dry_fountain_i feature. Without final_feat, the
-- flags will change if the sparkling fountain changes into
-- a blue fountain. However, if "final_feat" is set to
-- "dry_fountain", the marker will ignore the feature turning
-- into blue_fountain, and will only act when it changes into
-- dry_fountain_i or dry_fountain_ii
--
-- * item_pickup_change_flags(): Creates a marker which acts when
-- an item on its grid gets picked up. Accepts the parameter
-- "item", which is the plain name of the item its watching
-- (i.e., "Orb of Zot" and "golden rune" rather than "the Orb of Zot"
-- or "a golden rune").
--------------------------------------------------------------------------
ChangeFlags = { }
ChangeFlags.__index = ChangeFlags
function ChangeFlags:_new()
local cf = { }
setmetatable(cf, self)
self.__index = self
return cf
end
function ChangeFlags:new(pars)
pars = pars or { }
pars.level_flags = pars.level_flags or ""
pars.branch_flags = pars.branch_flags or ""
pars.msg = pars.msg or ""
if not (pars.level_flags ~= "" or pars.branch_flags ~= "") then
error("Must provide at least one of level_flags or branch_flags.")
end
local cf = self:_new()
cf.level_flags = pars.level_flags
cf.branch_flags = pars.branch_flags
cf.msg = pars.msg
cf.props = { flag_group = pars.group }
return cf
end
function ChangeFlags:do_change(marker)
local did_change1 = false
local did_change2 = false
local silent = self.msg and self.msg ~= ""
if self.props.flag_group and self.props.flag_group ~= "" then
local num_markers = dgn.num_matching_markers("flag_group",
self.props.group)
if num_markers > 1 then
return false, false
end
end
if self.level_flags and self.level_flags ~= "" then
did_change1 = dgn.change_level_flags(self.level_flags, silent)
end
if self.branch_flags and self.branch_flags ~= "" then
did_change2 = dgn.change_branch_flags(self.branch_flags, silent)
end
if did_change1 or did_change2 then
if self.msg and self.msg ~= "" then
crawl.mpr(self.smg)
end
return true, true
end
return true, false
end
function ChangeFlags:property(marker, pname)
return self.props[pname] or ''
end
function ChangeFlags:write(marker, th)
file.marshall(th, self.level_flags)
file.marshall(th, self.branch_flags)
file.marshall(th, self.msg)
lmark.marshall_table(th, self.props)
end
function ChangeFlags:read(marker, th)
self.level_flags = file.unmarshall_string(th)
self.branch_flags = file.unmarshall_string(th)
self.msg = file.unmarshall_string(th)
self.props = lmark.unmarshall_table(th)
setmetatable(self, ChangeFlags)
return self
end
--------------------------------------------------------------------------
--------------------------------------------------------------------------
MonDiesChangeFlags = ChangeFlags:_new()
MonDiesChangeFlags.__index = MonDiesChangeFlags
function MonDiesChangeFlags:_new(pars)
local mdcf
if pars then
mdcf = ChangeFlags:new(pars)
else
mdcf = ChangeFlags:_new()
end
setmetatable(mdcf, self)
self.__index = self
return mdcf
end
function MonDiesChangeFlags:new(pars)
pars = pars or { }
if not pars.mon_name then
error("No monster name provided.")
end
local mdcf = self:_new(pars)
mdcf.mon_name = pars.mon_name
return mdcf
end
function MonDiesChangeFlags:activate(marker)
dgn.register_listener(dgn.dgn_event_type('monster_dies'), marker)
end
function MonDiesChangeFlags:event(marker, ev)
local midx = ev:arg1()
local mons = dgn.mons_from_index(midx)
if not mons then
error("MonDiesChangeFlags:event() didn't get a valid monster index")
end
if mons.name == self.mon_name then
ChangeFlags.do_change(self, marker)
dgn.remove_listener(marker)
dgn.remove_marker(marker)
end
end
function MonDiesChangeFlags:write(marker, th)
ChangeFlags.write(self, marker, th)
file.marshall(th, self.mon_name)
end
function MonDiesChangeFlags:read(marker, th)
ChangeFlags.read(self, marker, th)
self.mon_name = file.unmarshall_string(th)
setmetatable(self, MonDiesChangeFlags)
return self
end
function mons_dies_change_flags(pars)
return MonDiesChangeFlags:new(pars)
end
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
FeatChangeChangeFlags = ChangeFlags:_new()
FeatChangeChangeFlags.__index = FeatChangeChangeFlags
function FeatChangeChangeFlags:_new(pars)
local fccf
if pars then
fccf = ChangeFlags:new(pars)
else
fccf = ChangeFlags:_new()
end
setmetatable(fccf, self)
self.__index = self
return fccf
end
function FeatChangeChangeFlags:new(pars)
pars = pars or { }
local fccf = self:_new(pars)
fccf.final_feat = pars.final_feat
return fccf
end
function FeatChangeChangeFlags:activate(marker)
dgn.register_listener(dgn.dgn_event_type('feat_change'), marker,
marker:pos())
end
function FeatChangeChangeFlags:event(marker, ev)
if self.final_feat and self.final_feat ~= "" then
local feat = dgn.feature_name(dgn.grid(ev:pos()))
if not string.find(feat, self.final_feat) then
return
end
end
ChangeFlags.do_change(self, marker)
dgn.remove_listener(marker, marker:pos())
dgn.remove_marker(marker)
end
function FeatChangeChangeFlags:write(marker, th)
ChangeFlags.write(self, marker, th)
file.marshall(th, self.final_feat)
end
function FeatChangeChangeFlags:read(marker, th)
ChangeFlags.read(self, marker, th)
self.final_feat = file.unmarshall_string(th)
setmetatable(self, FeatChangeChangeFlags)
return self
end
function feat_change_change_flags(pars)
return FeatChangeChangeFlags:new(pars)
end
--------------------------------------------------------------------------
--------------------------------------------------------------------------
ItemPickupChangeFlags = ChangeFlags:_new()
ItemPickupChangeFlags.__index = ItemPickupChangeFlags
function ItemPickupChangeFlags:_new(pars)
local ipcf
if pars then
ipcf = ChangeFlags:new(pars)
else
ipcf = ChangeFlags:_new()
end
setmetatable(ipcf, self)
self.__index = self
return ipcf
end
function ItemPickupChangeFlags:new(pars)
pars = pars or { }
if not pars.item then
error("No item name provided.")
end
local ipcf = self:_new(pars)
ipcf.item = pars.item
return ipcf
end
function ItemPickupChangeFlags:activate(marker)
dgn.register_listener(dgn.dgn_event_type('item_pickup'), marker,
marker:pos())
end
function ItemPickupChangeFlags:event(marker, ev)
local obj_idx = ev:arg1()
local it = dgn.item_from_index(obj_idx)
if not it then
error("ItemPickupChangeFlags:event() didn't get a valid item index")
end
if item.name(it) == self.item then
ChangeFlags.do_change(self, marker)
dgn.remove_listener(marker, marker:pos())
dgn.remove_marker(marker)
end
end
function ItemPickupChangeFlags:write(marker, th)
ChangeFlags.write(self, marker, th)
file.marshall(th, self.item)
end
function ItemPickupChangeFlags:read(marker, th)
ChangeFlags.read(self, marker, th)
self.item = file.unmarshall_string(th)
setmetatable(self, ItemPickupChangeFlags)
return self
end
function item_pickup_change_flags(pars)
return ItemPickupChangeFlags:new(pars)
end
}
bool set_branch_flags(unsigned long flags, bool silent,
branch_type branch)
{
if (branch == NUM_BRANCHES)
branch = you.where_are_you;
bool could_control = allow_control_teleport(true);
bool could_map = player_in_mappable_area();
unsigned long old_flags = branches[static_cast<int>(branch)].branch_flags;
branches[static_cast<int>(branch)].branch_flags |= flags;
bool can_control = allow_control_teleport(true);
bool can_map = player_in_mappable_area();
if (you.level_type == LEVEL_DUNGEON && branch == you.where_are_you
&& you.skills[SK_TRANSLOCATIONS] > 0
&& could_control && !can_control && !silent)
{
mpr("You sense the appearence of a powerful magical force "
"which warps space.", MSGCH_WARN);
}
if (you.level_type == LEVEL_DUNGEON && branch == you.where_are_you
&& could_map && !can_map && !silent)
{
mpr("A powerful force appears that prevents you from "
"remembering where you've been.", MSGCH_WARN);
}
return (old_flags != branches[static_cast<int>(branch)].branch_flags);
bool unset_branch_flags(unsigned long flags, bool silent,
branch_type branch)
{
if (branch == NUM_BRANCHES)
branch = you.where_are_you;
bool could_control = allow_control_teleport(true);
bool could_map = player_in_mappable_area();
unsigned long old_flags = branches[static_cast<int>(branch)].branch_flags;
branches[static_cast<int>(branch)].branch_flags &= ~flags;
bool can_control = allow_control_teleport(true);
bool can_map = player_in_mappable_area();
if (you.level_type == LEVEL_DUNGEON && branch == you.where_are_you
&& you.skills[SK_TRANSLOCATIONS] > 0
&& !could_control && can_control && !silent)
{
// Isn't really a "recovery", but I couldn't think of where
// else to send it.
mpr("You sense the disappearence of a powerful magical force "
"which warped space.", MSGCH_RECOVERY);
}
if (you.level_type == LEVEL_DUNGEON && branch == you.where_are_you
&& !could_map && can_map && !silent)
{
// Isn't really a "recovery", but I couldn't think of where
// else to send it.
mpr("You sense the disappearence the force that prevented you "
"from remembering where you've been.", MSGCH_RECOVERY);
}
return (old_flags != branches[static_cast<int>(branch)].branch_flags);
}
unsigned long get_branch_flags(branch_type branch)
{
if (branch == NUM_BRANCHES)
{
if (you.level_type != LEVEL_DUNGEON)
return (0);
branch = you.where_are_you;
}
return branches[static_cast<int>(branch)].branch_flags;
}
if (testbits(env.level_flags, LFLAG_NOT_MAPPABLE)
|| testbits(get_branch_flags(), BFLAG_NOT_MAPPABLE))
{
if (!yesno("Force level to be mappable? "))
{
canned_msg( MSG_OK );
return;
}
unset_level_flags(LFLAG_NOT_MAPPABLE | LFLAG_NO_MAGIC_MAP);
unset_branch_flags(BFLAG_NOT_MAPPABLE | BFLAG_NO_MAGIC_MAP);
}
vaults, avoid this with the no_monster_gen TAG.
l - lava - again, use the no_monster_gen TAG for entry vaults!
vaults, avoid this with the no_monster_gen TAG or KMASK.
l - lava - again, use the no_monster_gen TAG or KMASK for entry vaults!
LFLAGS: Persistent, changeable per-level flags which affect game
behavior (FLAGS just controls how the vault is placed); should
only be used for vaults with ORIENT encompass or with PLACE.
This causes a level's flags to be set when the level is first
created. These flags can later be altered using Lua markers;
see the slime pit vault in lair.des, and the vaults in hell.des
and elf.des for examples.
Valid flags are: no_tele_control, which prevents the player
from using teleport control; not_mappable, which prevents
the player from remembering where they've been (like in
the Abyss), and no_magic_map, which prevents magic mapping
from working.
BFLAGS: Persistent, changeable per-*branch* flags which affect game
behavior; should only be used for vaults which go on the fist
level of a particular branch. These flags can later be altered
using Lua markers; see the Tomb vaults in vaults.lua for an
example.
Valid flags are: no_tele_control, which prevents the player
from using teleport control; not_mappable, which prevents
the player from remembering where they've been (like in
the Abyss), and no_magic_map, which prevents magic mapping
from working.
KMASK: Z = no_monster_gen
KMASK allows you set or unset various masks for particular
symbols, rather than for the entire vault like if you did it
with TAGS. Valid masks are
* "no_item_gen": Prevents random item on that symbol. Items
explicitly placed on that symbol aren't affected.
* "no_monster_gen": Prevents random monster generation on that
symbol. MUST-HAVE for those with water/lava symbols in
entry vaults.
* "no_pool_fixup": prevents a water square next to land from being
randomly converted from deep water (the default) to shallow.
* "no_secret_doors": prevents a door from randomly being turned
into a secret door.
For example
KMASK: W = no_monster_gen
will prevent monsters from randomly being generated on shallow
water squares. Note that if shuffling and substitutions cause
W to end up as water 10% of the time and floor 90% of the time,
then those floor squares will still have no_monster_gen set, but
that's still a higher degree of control than you get with TAGS.
If TAGS has been used to set a mask for the entire vault, you
can use KMASK to remove that mask from particular symbols.
For instance:
TAGS: no_monster_gen
KMASK: W = !no_monster_gen
would make it so that monsters are only randomly generated
on shallow water squares.
orig_gly_points.
orig_gly_points, load_des_file, feature_number, feature_name,
dgn_event_type, register_listener, remove_listener, remove_marker,
num_matching_markers, feature_desc, feature_desc_at, item_from_index,
mons_from_index, change_level_flags, change_branch_flags