/* original parser id follows */
/* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */

#define YYBYACC 1
#define YYMAJOR 1
#define YYMINOR 9
#define YYPATCH 20140409

#define YYEMPTY        (-1)
#define yyclearin      (yychar = YYEMPTY)
#define yyerrok        (yyerrflag = 0)
#define YYRECOVERING() (yyerrflag != 0)
#define YYENOMEM       (-2)
#define YYEOF          0
#define YYPREFIX "yy"

#define YYPURE 0

#line 68 "gram.y"
#include <stdio.h>
#include <ctype.h>
#include "twm.h"
#include "menus.h"
#include "icons.h"
#include "windowbox.h"
#include "add_window.h"
#include "list.h"
#include "util.h"
#include "screen.h"
#include "parse.h"
#include "cursor.h"
#ifdef VMS
#  include <decw$include/Xos.h>
#  include <X11Xmu/CharSet.h>
#else
#  include <X11/Xos.h>
#  include <X11/Xmu/CharSet.h>
#endif

static char *Action = "";
static char *Name = "";
static char *defstring = "default";
static MenuRoot	*root, *pull = NULL;
static char *curWorkSpc;
static char *client, *workspace;
static MenuItem *lastmenuitem = (MenuItem*) 0;

extern void yyerror(char *s);
extern void RemoveDQuote(char *str);

static MenuRoot *GetRoot(char *name, char *fore, char *back);

static Bool CheckWarpScreenArg(register char *s);
static Bool CheckWarpRingArg(register char *s);
static Bool CheckColormapArg(register char *s);
static void GotButton(int butt, int func);
static void GotKey(char *key, int func);
static void GotTitleButton(char *bitmapname, int func, Bool rightside);
static char *ptr;
static name_list **list;
static int cont = 0;
static int color;
Bool donttoggleworkspacemanagerstate = FALSE;
int mods = 0;
unsigned int mods_used = (ShiftMask | ControlMask | Mod1Mask);

extern void twmrc_error_prefix(void);

extern int yylex(void);
extern int yyparse(void);
#line 121 "gram.y"
#ifdef YYSTYPE
#undef  YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
#endif
#ifndef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
typedef union
{
    int num;
    char *ptr;
} YYSTYPE;
#endif /* !YYSTYPE_IS_DECLARED */
#line 86 "gram.tab.c"

/* compatibility with bison */
#ifdef YYPARSE_PARAM
/* compatibility with FreeBSD */
# ifdef YYPARSE_PARAM_TYPE
#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
# else
#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
# endif
#else
# define YYPARSE_DECL() yyparse(void)
#endif

/* Parameters sent to lex. */
#ifdef YYLEX_PARAM
# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
# define YYLEX yylex(YYLEX_PARAM)
#else
# define YYLEX_DECL() yylex(void)
# define YYLEX yylex()
#endif

/* Parameters sent to yyerror. */
#ifndef YYERROR_DECL
#define YYERROR_DECL() yyerror(const char *s)
#endif
#ifndef YYERROR_CALL
#define YYERROR_CALL(msg) yyerror(msg)
#endif

extern int YYPARSE_DECL();

#define LB 257
#define RB 258
#define LP 259
#define RP 260
#define MENUS 261
#define MENU 262
#define BUTTON 263
#define DEFAULT_FUNCTION 264
#define PLUS 265
#define MINUS 266
#define ALL 267
#define OR 268
#define CURSORS 269
#define PIXMAPS 270
#define ICONS 271
#define COLOR 272
#define SAVECOLOR 273
#define MONOCHROME 274
#define FUNCTION 275
#define ICONMGR_SHOW 276
#define ICONMGR 277
#define ALTER 278
#define WINDOW_FUNCTION 279
#define ZOOM 280
#define ICONMGRS 281
#define ICONMGR_GEOMETRY 282
#define ICONMGR_NOSHOW 283
#define MAKE_TITLE 284
#define ICONIFY_BY_UNMAPPING 285
#define DONT_ICONIFY_BY_UNMAPPING 286
#define NO_BORDER 287
#define NO_ICON_TITLE 288
#define NO_TITLE 289
#define AUTO_RAISE 290
#define NO_HILITE 291
#define ICON_REGION 292
#define WINDOW_REGION 293
#define META 294
#define SHIFT 295
#define LOCK 296
#define CONTROL 297
#define WINDOW 298
#define TITLE 299
#define ICON 300
#define ROOT 301
#define FRAME 302
#define COLON 303
#define EQUALS 304
#define SQUEEZE_TITLE 305
#define DONT_SQUEEZE_TITLE 306
#define START_ICONIFIED 307
#define NO_TITLE_HILITE 308
#define TITLE_HILITE 309
#define MOVE 310
#define RESIZE 311
#define WAITC 312
#define SELECT 313
#define KILL 314
#define LEFT_TITLEBUTTON 315
#define RIGHT_TITLEBUTTON 316
#define NUMBER 317
#define KEYWORD 318
#define NKEYWORD 319
#define CKEYWORD 320
#define CLKEYWORD 321
#define FKEYWORD 322
#define FSKEYWORD 323
#define SKEYWORD 324
#define SSKEYWORD 325
#define DKEYWORD 326
#define JKEYWORD 327
#define WINDOW_RING 328
#define WINDOW_RING_EXCLUDE 329
#define WARP_CURSOR 330
#define ERRORTOKEN 331
#define NO_STACKMODE 332
#define ALWAYS_ON_TOP 333
#define WORKSPACE 334
#define WORKSPACES 335
#define WORKSPCMGR_GEOMETRY 336
#define OCCUPYALL 337
#define OCCUPYLIST 338
#define MAPWINDOWCURRENTWORKSPACE 339
#define MAPWINDOWDEFAULTWORKSPACE 340
#define UNMAPBYMOVINGFARAWAY 341
#define OPAQUEMOVE 342
#define NOOPAQUEMOVE 343
#define OPAQUERESIZE 344
#define NOOPAQUERESIZE 345
#define DONTSETINACTIVE 346
#define CHANGE_WORKSPACE_FUNCTION 347
#define DEICONIFY_FUNCTION 348
#define ICONIFY_FUNCTION 349
#define AUTOSQUEEZE 350
#define STARTSQUEEZED 351
#define DONT_SAVE 352
#define AUTO_LOWER 353
#define ICONMENU_DONTSHOW 354
#define WINDOW_BOX 355
#define IGNOREMODIFIER 356
#define WINDOW_GEOMETRIES 357
#define ALWAYSSQUEEZETOGRAVITY 358
#define VIRTUAL_SCREENS 359
#define IGNORE_TRANSIENT 360
#define DONTTOGGLEWORKSPACEMANAGERSTATE 361
#define STRING 362
#define YYERRCODE 256
typedef short YYINT;
static const YYINT yylhs[] = {                           -1,
    0,    9,    9,   10,   10,   10,   10,   10,   10,   10,
   10,   10,   16,   10,   17,   10,   18,   10,   19,   10,
   20,   10,   21,   10,   10,   10,   10,   10,   23,   10,
   25,   10,   10,   10,   10,   10,   28,   10,   10,   29,
   10,   10,   30,   10,   10,   31,   10,   10,   32,   10,
   10,   10,   10,   34,   10,   35,   10,   10,   10,   10,
   10,   36,   10,   38,   10,   39,   41,   10,   42,   10,
   43,   10,   45,   10,   46,   10,   47,   10,   48,   10,
   10,   49,   10,   50,   10,   51,   10,   10,   53,   10,
   54,   10,   55,   10,   10,   56,   10,   10,   57,   10,
   58,   10,   10,   59,   10,   60,   10,   61,   10,   10,
   62,   10,   10,   63,   10,   10,   64,   10,   65,   10,
   66,   10,   10,   67,   10,   10,   69,   10,   70,   10,
   72,   10,   74,   10,   76,   10,   78,   10,   79,   10,
   10,   10,   10,   10,   10,   80,   10,   10,   81,   10,
   10,   82,   10,   84,   10,   86,   10,   11,   12,   12,
   12,   12,   12,   13,    6,    7,    8,   40,   40,   89,
   89,   89,   89,   89,   89,   89,   87,   87,   90,   90,
   90,   90,   90,   90,   90,   90,   90,   90,   90,   88,
   88,   91,   91,   91,   91,   91,   91,   91,   91,   91,
   91,   91,   91,   33,   92,   92,   93,   93,   93,   26,
   94,   94,   95,   27,   96,   96,   97,   97,   97,   97,
   97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
   97,   97,   97,   97,   97,   97,   97,   97,   75,   98,
   98,   99,  101,   99,   99,   77,  102,  102,  103,  103,
  100,  104,  104,  105,   83,  106,  106,  107,   85,  108,
  108,  109,   14,  110,   14,   14,  112,   14,  111,  111,
   52,  113,  113,  114,  114,   37,  115,  115,  116,  118,
  116,  117,  119,  119,  120,  120,  120,  120,  120,   22,
   22,   22,   22,   24,   24,   24,   24,   15,  121,  121,
  122,   44,  123,  123,  126,  124,  127,  124,  129,  124,
  125,  130,  130,  131,  128,  132,  132,  133,   73,  134,
  134,  135,   71,  136,  136,  137,   68,  138,  138,  139,
  139,    2,    2,    5,    5,    5,    3,    1,    4,
};
static const YYINT yylen[] = {                            2,
    1,    0,    2,    1,    1,    1,    1,    1,    6,    7,
    8,    9,    0,    8,    0,    9,    0,   10,    0,   11,
    0,    6,    0,    5,    3,    2,    3,    2,    0,    3,
    0,    3,    2,    1,    2,    2,    0,    3,    1,    0,
    3,    1,    0,    3,    1,    0,    3,    1,    0,    3,
    1,    4,    4,    0,    4,    0,    4,    2,    2,    2,
    2,    0,    3,    0,    3,    0,    0,    6,    0,    3,
    0,    3,    0,    3,    0,    3,    0,    3,    0,    3,
    1,    0,    3,    0,    3,    0,    3,    1,    0,    3,
    0,    3,    0,    3,    1,    0,    3,    1,    0,    3,
    0,    3,    1,    0,    3,    0,    3,    0,    3,    1,
    0,    3,    1,    0,    3,    1,    0,    3,    0,    3,
    0,    3,    1,    0,    3,    1,    0,    9,    0,    4,
    0,    4,    0,    3,    0,    3,    0,    3,    0,    3,
    2,    2,    2,    2,    2,    0,    3,    1,    0,    3,
    1,    0,    3,    0,    3,    0,    3,    1,    2,    1,
    3,    2,    1,    2,    4,    6,    6,    0,    2,    1,
    1,    1,    1,    2,    2,    1,    0,    2,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    0,
    2,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    3,    0,    2,    2,    3,    3,    3,
    0,    2,    2,    3,    0,    2,    3,    2,    3,    2,
    3,    2,    3,    2,    3,    2,    3,    2,    3,    2,
    3,    2,    3,    2,    3,    2,    3,    2,    3,    0,
    2,    2,    0,    4,    2,    3,    0,    2,    1,    1,
    3,    0,    2,    2,    3,    0,    2,    2,    3,    0,
    2,    1,    1,    0,    5,    1,    0,    3,    0,    5,
    3,    0,    2,    3,    4,    3,    0,    2,    1,    0,
    3,    3,    0,    2,    1,    2,    3,    4,    5,    3,
    4,    5,    6,    3,    4,    5,    6,    3,    0,    2,
    1,    3,    0,    2,    0,    3,    0,    4,    0,    4,
    3,    0,    2,    1,    3,    0,    2,    1,    3,    0,
    2,    2,    3,    0,    2,    1,    3,    0,    2,    2,
    7,    1,    2,    1,    2,    2,    2,    1,    1,
};
static const YYINT yydefred[] = {                         2,
    0,    0,    4,    0,    0,    0,    0,    0,  133,  135,
  137,  139,    0,   91,    0,    0,   89,    0,    0,  117,
    0,   62,  104,    0,    0,    0,    0,    0,    0,    0,
    0,  119,    0,    0,    0,  158,    0,    0,    0,    0,
  152,    0,    0,   99,   64,    0,   69,   73,   29,   31,
   75,    0,    0,    0,    0,   84,    0,    0,    0,   77,
   79,  106,    0,   71,    0,   66,  154,    0,  156,  114,
  116,  338,    0,    0,    3,    5,    6,    7,    8,    0,
  339,  337,  332,    0,  141,  215,   36,  211,   35,    0,
    0,    0,    0,  131,    0,  142,   33,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  164,  159,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  143,  144,  145,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  168,   60,  168,   58,   59,   61,    0,    0,  333,    0,
    0,  320,  134,  240,  136,  247,  138,  140,    0,  299,
   92,  272,   90,   25,   87,  118,   38,   63,  105,  109,
  112,  122,   97,    0,    0,  269,  268,  120,   94,    0,
    0,    0,    0,  161,  150,  153,  147,  102,  100,  277,
   65,   27,   70,  303,   74,    0,   30,    0,   32,   76,
   41,   44,   47,   50,   85,   78,   80,  107,  125,   72,
   23,  168,  256,  155,   83,  260,  157,  115,    0,    0,
    0,  328,  130,  214,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  216,  210,    0,  212,    0,
    0,    0,  324,  132,    0,    0,    0,   21,    0,   52,
  205,   55,   53,   57,    0,    0,    0,    0,    0,    0,
    0,    0,  176,    0,    0,  171,  172,  173,  190,  169,
  177,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  213,  319,    0,  321,  239,    0,
    0,  241,  246,  250,  249,  248,    0,  298,  301,  300,
  271,    0,  273,    0,    0,  265,    0,    0,  276,    0,
  278,  302,    0,    0,  305,  304,  290,    0,  294,    0,
   24,    0,  255,    0,  257,  259,  262,  261,  174,  175,
    0,    0,    0,  327,    0,  329,  233,  225,  223,  219,
  221,  217,  227,  229,  231,  235,  237,  322,  245,    0,
  323,  326,  325,    0,    0,   22,    0,  204,    0,  206,
    0,  307,  309,    0,  291,    0,  295,    0,   68,  258,
  200,  202,  198,  201,  199,  192,  193,  194,  195,  196,
    0,  197,  203,  191,  188,  189,  185,  187,  186,  179,
  180,  181,  182,  183,    0,  184,  178,  127,    0,  330,
    0,    0,  274,    0,    0,    0,    0,  334,    0,    0,
    0,  207,  283,  281,    0,    0,  312,  306,  292,    0,
  296,    0,  167,  166,    0,    0,  252,  244,  275,    0,
    0,   14,  335,  336,  270,  209,  208,    0,    0,  308,
  316,  310,    0,  293,  297,  128,    0,    0,    0,    0,
   16,    0,  282,    0,  284,    0,  311,  314,  313,    0,
  251,    0,  253,    0,   18,  165,    0,  315,  318,  317,
    0,  254,   20,    0,  331,    0,  289,
};
static const YYINT yydgoto[] = {                          1,
   73,   85,   74,   82,  419,  422,  156,  152,    2,   75,
   76,   77,   78,   79,  171,  415,  441,  460,  474,  315,
  269,  207,  129,  209,  130,   89,   87,  102,  132,  133,
  134,  135,  262,  191,  193,  103,  201,  125,  146,  229,
  332,  127,  144,  205,  128,  131,  140,  141,  148,  136,
  100,  173,   98,   95,  114,  108,  124,  123,  104,  142,
  105,  106,  150,  101,  113,  107,  143,  233,  435,  158,
  254,  169,  163,   90,  165,   91,  167,   92,   93,  122,
  120,  121,  224,  147,  227,  149,  342,  341,  280,  407,
  394,  318,  370,  161,  249,  160,  246,  251,  302,  438,
  411,  252,  306,  458,  473,  271,  335,  272,  338,  111,
  259,  112,  256,  313,  265,  321,  424,  371,  449,  465,
  255,  310,  266,  326,  428,  374,  425,  452,  426,  453,
  469,  466,  480,  250,  298,  307,  363,  283,  346,
};
static const YYINT yysindex[] = {                         0,
    0, 3222,    0, -355, -280, -303, -204, -190,    0,    0,
    0,    0, -355,    0, -303, -280,    0, -355,    0,    0,
    0,    0,    0,    0,    0,    0,    0, -355, -355,    0,
    0,    0,    0, -355, -355,    0, -280, -355, -355,    0,
    0,    0,    0,    0,    0, -355,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0, -303, -303, -303,    0,
    0,    0,    0,    0, -355,    0,    0,    0,    0,    0,
    0,    0, -261, -271,    0,    0,    0,    0,    0, -196,
    0,    0,    0, -355,    0,    0,    0,    0,    0, -189,
 -180, -179, -180,    0, -178,    0,    0, -176, -280, -178,
 -178, -178, -178, -178, -178, -178, -178, -178, -239, -238,
 -172, -178, -178, -178, -249, -211,    0,    0, -355, -178,
 -178, -178, -178, -178, -163, -280, -178, -160, -159, -157,
 -178, -178, -178, -178, -178, -178,    0,    0,    0, -178,
 -178, -178, -178, -178, -355, -144, -139, -178, -123, -178,
    0,    0,    0,    0,    0,    0, -355, -119,    0,   44,
 -235,    0,    0,    0,    0,    0,    0,    0, -108,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0, -175, -156,    0,    0,    0,    0, -303,
  -85, -303,  -85,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0, -355,    0, -355,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   45,   91,
 -129,    0,    0,    0, -355, -355, -355, -355, -355, -355,
 -355, -355, -355, -355, -355,    0,    0, -355,    0, -250,
 -219, -252,    0,    0, -246, -245, -280,    0, -243,    0,
    0,    0,    0,    0, -242, -248, -241, -240, -178,  -21,
 -230, -229,    0, -280, -280,    0,    0,    0,    0,    0,
    0, -355, -222, -355, -355, -355, -355, -355, -355, -355,
 -355, -355, -355, -355,    0,    0, -355,    0,    0, -355,
 -355,    0,    0,    0,    0,    0, -247,    0,    0,    0,
    0, -355,    0, -280, -178,    0, -152, -209,    0,    0,
    0,    0, -355, -355,    0,    0,    0, -220,    0, -214,
    0,  -77,    0, -355,    0,    0,    0,    0,    0,    0,
  -91, -195,  -78,    0, -227,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0, -296, -355,    0, -225,    0, -244,    0,
  -74,    0,    0,  -73,    0, -210,    0, -202,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 -303,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0, -303,    0,    0,    0, -355,    0,
  -72, -280,    0, -355, -178, -280, -280,    0, -280, -303,
 -303,    0,    0,    0,  -73,  -69,    0,    0,    0,  -68,
    0,  -67,    0,    0, -119, -111,    0,    0,    0, -355,
 -178,    0,    0,    0,    0,    0,    0,  193, -201,    0,
    0,    0, -200,    0,    0,    0, -355, -194,    0, -178,
    0, -303,    0, -355,    0, -193,    0,    0,    0,  -66,
    0, -355,    0, -178,    0,    0, -355,    0,    0,    0,
 -303,    0,    0, -355,    0, -355,    0,
};
static const YYINT yyrindex[] = {                         0,
    0,  195,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0, 2262,    0,    0,  229,    0,
  336,    0,    0,  443,  550,  657,  764,    0,    0,  871,
  978,    0, 1085,    0,    0,    0,    0, 2903, 3009, 1192,
    0, 1299, 1406,    0,    0,    0,    0,    0,    0,    0,
    0, 1513, 1620, 1727, 1834,    0,    0,    0,    0,    0,
    0,    0, 1941,    0,    0,    0,    0, 2048,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  -64,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0, 2369,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  -61,  -60,    0,    0, 3116,    0,
    0,    0,    0,    0,    0, 2476,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  -58,
    0,    0,    0,    0,  -79,    0,    0,    0,    0,    0,
    0,    0,    0,  113,  119, 3327, 3333, 3351, 3357, 3414,
 3420, 3438, 3444, 3501,    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, -253,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0, -231,
    0,    0,    0,    0, 2583,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0, 2689,    0,    0,    0,    0,    0,    0,
 3492,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0, 2796,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0, 2155,    0,
    0,    0,    0,  -57,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  -53,    0,    0,    0,
    0,    0,    0,  -52,    0,  -45,    0,
};
static const YYINT yygindex[] = {                         0,
   -4,  -12, -120,  -15,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   23,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   21,    0,    0,    0,    0,    0,    0, -151,
    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, -216,    0,    0,
    0,    0,    0,    0,  127,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0, -203,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,
};
#define YYTABLESIZE 3815
static const YYINT yytable[] = {                         80,
   97,  230,   96,  280,  279,  303,   72,  296,   94,  322,
  361,  308,  311,   99,  316,  319,  327,  329,   83,   84,
   81,  117,  247,  109,  110,  243,  242,  333,  336,  115,
  116,  409,  153,  118,  119,  344,   81,  375,  299,  416,
  417,  126,  151,  377,  137,  138,  139,  429,  368,  323,
   83,   84,   86,    5,  190,  431,  463,  467,  420,  421,
  145,  155,  157,  471,  478,   72,   88,  162,  304,  154,
  270,  395,  396,  248,   83,   84,  164,  166,  170,  159,
  172,  397,  398,  174,  186,  324,  184,  185,  242,  242,
   72,   81,  192,  200,   83,   84,  204,  206,  399,  208,
  300,  301,  400,  401,  402,  403,  404,  405,  279,   72,
  202,   72,  222,   72,  194,   72,   72,  223,   72,   72,
   72,   72,  175,  176,  177,  178,  179,  180,  181,  182,
  183,   72,   72,  226,  187,  188,  189,  232,  406,   72,
  221,   72,  195,  196,  197,  198,  199,   72,  253,  203,
  257,   72,  231,  210,  211,  212,  213,  214,  215,   72,
   72,   72,  216,  217,  218,  219,  220,   72,   72,  258,
  225,  261,  228,  282,  367,  381,  382,  260,  170,  263,
  379,  408,  423,  427,  437,  383,  384,  451,  170,  454,
  455,  457,  129,  481,    1,   54,   56,  369,  170,   67,
  285,  267,  385,  268,  286,  287,  386,  387,  388,  389,
  390,  391,  288,  264,  170,  170,  170,  170,  456,  168,
    0,  450,    0,  170,    0,    0,    0,    0,   88,    0,
  284,  285,  286,  287,  288,  289,  290,  291,  292,  293,
  294,  314,  392,  295,    0,  297,  273,  305,    0,    0,
  309,  312,    0,    0,  317,    0,  274,    0,  339,  340,
  320,  325,  328,  330,    0,    0,  334,  337,    0,  448,
   72,    0,  275,  276,  277,  278,    0,  343,  345,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,  357,
    0,  331,  358,    0,  362,  359,  360,    0,  365,    0,
    0,  234,    0,    0,    0,  235,  236,  364,    0,    0,
    0,    0,  273,    0,    0,    0,    0,    0,  372,  373,
  237,    0,  274,  376,    0,  378,    0,    0,    0,  380,
    0,    0,  410,    0,    0,   39,  393,  366,  275,  276,
  277,  278,  238,  239,    0,  240,    0,  279,  413,    0,
    0,  418,    0,  241,  242,  243,  244,  245,  273,  412,
  414,    0,    0,    0,    0,    0,    0,    0,  274,    0,
  234,  430,    0,  432,  234,  234,  226,    0,  433,    0,
  226,  226,    0,    0,  275,  276,  277,  278,    0,  234,
    0,    0,  434,  281,    0,  226,  439,    0,    0,    0,
  443,  444,    0,  445,  436,    0,    0,  446,  447,  440,
    0,  234,  234,    0,  234,    0,    0,  226,  226,    0,
  226,    0,  234,  234,  234,  234,  234,    0,  226,  226,
  226,  226,  226,    0,    0,  459,    0,  442,    0,    0,
    0,    0,  110,    0,  464,    0,    0,    0,  468,  476,
    0,    0,  470,  472,    0,    0,    0,    0,    0,  477,
  273,  479,    0,  461,    0,    0,    0,  482,  485,    0,
  274,    0,  484,    0,    0,    0,    0,    0,    0,  486,
    0,  487,  475,    0,   88,   86,  275,  276,  277,  278,
   88,   88,   88,    0,    0,  462,  483,   88,   88,   88,
   88,   88,   88,   88,   88,    0,    0,   88,   88,   88,
   88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
   88,   88,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   88,   88,   88,   88,    0,    0,    0,
    0,    0,    0,   88,   88,    0,   88,   88,    0,  113,
    0,    0,   88,   88,    0,    0,   88,   88,   88,    0,
   88,   88,    0,   88,   88,   88,   88,   88,   88,   88,
   88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
   88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
   88,   39,   37,    0,    0,    0,    0,   39,   39,   39,
    0,    0,    0,    0,   39,   39,   39,   39,   39,   39,
   39,   39,    0,    0,   39,   39,   39,   39,   39,   39,
   39,   39,   39,   39,   39,   39,   39,   39,   39,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   39,   39,   39,   39,    0,    0,    0,    0,    0,    0,
   39,   39,    0,   39,   39,    0,  123,    0,    0,   39,
   39,    0,    0,   39,   39,   39,    0,   39,   39,    0,
   39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
   39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
   39,   39,   39,   39,   39,   39,   39,   39,  110,  108,
    0,    0,    0,    0,  110,  110,  110,    0,    0,    0,
    0,  110,  110,  110,  110,  110,  110,  110,  110,    0,
    0,  110,  110,  110,  110,  110,  110,  110,  110,  110,
  110,  110,  110,  110,  110,  110,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  110,  110,  110,
  110,    0,    0,    0,    0,    0,    0,  110,  110,    0,
  110,  110,    0,   98,    0,    0,  110,  110,    0,    0,
  110,  110,  110,    0,  110,  110,    0,  110,  110,  110,
  110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
  110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
  110,  110,  110,  110,  110,  113,  111,    0,    0,    0,
    0,  113,  113,  113,    0,    0,    0,    0,  113,  113,
  113,  113,  113,  113,  113,  113,    0,    0,  113,  113,
  113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
  113,  113,  113,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  113,  113,  113,  113,    0,    0,
    0,    0,    0,    0,  113,  113,    0,  113,  113,    0,
  263,    0,    0,  113,  113,    0,    0,  113,  113,  113,
    0,  113,  113,    0,  113,  113,  113,  113,  113,  113,
  113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
  113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
  113,  113,  123,  121,    0,    0,    0,    0,  123,  123,
  123,    0,    0,    0,    0,  123,  123,  123,  123,  123,
  123,  123,  123,    0,    0,  123,  123,  123,  123,  123,
  123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  123,  123,  123,  123,    0,    0,    0,    0,    0,
    0,  123,  123,    0,  123,  123,    0,  266,    0,    0,
  123,  123,    0,    0,  123,  123,  123,    0,  123,  123,
    0,  123,  123,  123,  123,  123,  123,  123,  123,  123,
  123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
  123,  123,  123,  123,  123,  123,  123,  123,  123,   98,
   96,    0,    0,    0,    0,   98,   98,   98,    0,    0,
    0,    0,   98,   98,   98,   98,   98,   98,   98,   98,
    0,    0,   98,   98,   98,   98,   98,   98,   98,   98,
   98,   98,   98,   98,   98,   98,   98,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   98,   98,
   98,   98,    0,    0,    0,    0,    0,    0,   98,   98,
    0,   98,   98,    0,   95,    0,    0,   98,   98,    0,
    0,   98,   98,   98,    0,   98,   98,    0,   98,   98,
   98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
   98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
   98,   98,   98,   98,   98,   98,  263,  264,    0,    0,
    0,    0,  263,  263,  263,    0,    0,    0,    0,  263,
  263,  263,  263,  263,  263,  263,  263,    0,    0,  263,
  263,  263,  263,  263,  263,  263,  263,  263,  263,  263,
  263,  263,  263,  263,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  263,  263,  263,  263,    0,
    0,    0,    0,    0,    0,  263,  263,    0,  263,  263,
    0,  151,    0,    0,  263,  263,    0,    0,  263,  263,
  263,    0,  263,  263,    0,  263,  263,  263,  263,  263,
  263,  263,  263,  263,  263,  263,  263,  263,  263,  263,
  263,  263,  263,  263,  263,  263,  263,  263,  263,  263,
  263,  263,  263,  266,  267,    0,    0,    0,    0,  266,
  266,  266,    0,    0,    0,    0,  266,  266,  266,  266,
  266,  266,  266,  266,    0,    0,  266,  266,  266,  266,
  266,  266,  266,  266,  266,  266,  266,  266,  266,  266,
  266,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  266,  266,  266,  266,    0,    0,    0,    0,
    0,    0,  266,  266,    0,  266,  266,    0,  148,    0,
    0,  266,  266,    0,    0,  266,  266,  266,    0,  266,
  266,    0,  266,  266,  266,  266,  266,  266,  266,  266,
  266,  266,  266,  266,  266,  266,  266,  266,  266,  266,
  266,  266,  266,  266,  266,  266,  266,  266,  266,  266,
   95,   93,    0,    0,    0,    0,   95,   95,   95,    0,
    0,    0,    0,   95,   95,   95,   95,   95,   95,   95,
   95,    0,    0,   95,   95,   95,   95,   95,   95,   95,
   95,   95,   95,   95,   95,   95,   95,   95,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   95,
   95,   95,   95,    0,    0,    0,    0,    0,    0,   95,
   95,    0,   95,   95,    0,  103,    0,    0,   95,   95,
    0,    0,   95,   95,   95,    0,   95,   95,    0,   95,
   95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
   95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
   95,   95,   95,   95,   95,   95,   95,  151,  149,    0,
    0,    0,    0,  151,  151,  151,    0,    0,    0,    0,
  151,  151,  151,  151,  151,  151,  151,  151,    0,    0,
  151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
  151,  151,  151,  151,  151,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  151,  151,  151,  151,
    0,    0,    0,    0,    0,    0,  151,  151,    0,  151,
  151,    0,   42,    0,    0,  151,  151,    0,    0,  151,
  151,  151,    0,  151,  151,    0,  151,  151,  151,  151,
  151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
  151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
  151,  151,  151,  151,  148,  146,    0,    0,    0,    0,
  148,  148,  148,    0,    0,    0,    0,  148,  148,  148,
  148,  148,  148,  148,  148,    0,    0,  148,  148,  148,
  148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
  148,  148,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  148,  148,  148,  148,    0,    0,    0,
    0,    0,    0,  148,  148,    0,  148,  148,    0,   45,
    0,    0,  148,  148,    0,    0,  148,  148,  148,    0,
  148,  148,    0,  148,  148,  148,  148,  148,  148,  148,
  148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
  148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
  148,  103,  101,    0,    0,    0,    0,  103,  103,  103,
    0,    0,    0,    0,  103,  103,  103,  103,  103,  103,
  103,  103,    0,    0,  103,  103,  103,  103,  103,  103,
  103,  103,  103,  103,  103,  103,  103,  103,  103,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  103,  103,  103,  103,    0,    0,    0,    0,    0,    0,
  103,  103,    0,  103,  103,    0,   48,    0,    0,  103,
  103,    0,    0,  103,  103,  103,    0,  103,  103,    0,
  103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
  103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
  103,  103,  103,  103,  103,  103,  103,  103,   42,   40,
    0,    0,    0,    0,   42,   42,   42,    0,    0,    0,
    0,   42,   42,   42,   42,   42,   42,   42,   42,    0,
    0,   42,   42,   42,   42,   42,   42,   42,   42,   42,
   42,   42,   42,   42,   42,   42,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   42,   42,   42,
   42,    0,    0,    0,    0,    0,    0,   42,   42,    0,
   42,   42,    0,   51,    0,    0,   42,   42,    0,    0,
   42,   42,   42,    0,   42,   42,    0,   42,   42,   42,
   42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
   42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
   42,   42,   42,   42,   42,   45,   43,    0,    0,    0,
    0,   45,   45,   45,    0,    0,    0,    0,   45,   45,
   45,   45,   45,   45,   45,   45,    0,    0,   45,   45,
   45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
   45,   45,   45,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   45,   45,   45,   45,    0,    0,
    0,    0,    0,    0,   45,   45,    0,   45,   45,    0,
  126,    0,    0,   45,   45,    0,    0,   45,   45,   45,
    0,   45,   45,    0,   45,   45,   45,   45,   45,   45,
   45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
   45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
   45,   45,   48,   46,    0,    0,    0,    0,   48,   48,
   48,    0,    0,    0,    0,   48,   48,   48,   48,   48,
   48,   48,   48,    0,    0,   48,   48,   48,   48,   48,
   48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   48,   48,   48,   48,    0,    0,    0,    0,    0,
    0,   48,   48,    0,   48,   48,    0,   81,    0,    0,
   48,   48,    0,    0,   48,   48,   48,    0,   48,   48,
    0,   48,   48,   48,   48,   48,   48,   48,   48,   48,
   48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
   48,   48,   48,   48,   48,   48,   48,   48,   48,   51,
   49,    0,    0,    0,    0,   51,   51,   51,    0,    0,
    0,    0,   51,   51,   51,   51,   51,   51,   51,   51,
    0,    0,   51,   51,   51,   51,   51,   51,   51,   51,
   51,   51,   51,   51,   51,   51,   51,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   51,   51,
   51,   51,    0,    0,    0,    0,    0,    0,   51,   51,
    0,   51,   51,    0,   12,    0,    0,   51,   51,    0,
    0,   51,   51,   51,    0,   51,   51,    0,   51,   51,
   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
   51,   51,   51,   51,   51,   51,  126,  124,    0,    0,
    0,    0,  126,  126,  126,    0,    0,    0,    0,  126,
  126,  126,  126,  126,  126,  126,  126,    0,    0,  126,
  126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
  126,  126,  126,  126,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  126,  126,  126,  126,    0,
    0,    0,    0,    0,    0,  126,  126,    0,  126,  126,
    0,   34,    0,    0,  126,  126,    0,    0,  126,  126,
  126,    0,  126,  126,    0,  126,  126,  126,  126,  126,
  126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
  126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
  126,  126,  126,   81,   82,    0,    0,    0,    0,   81,
   81,   81,    0,    0,    0,    0,   81,   81,   81,   81,
   81,   81,   81,   81,    0,    0,   81,   81,   81,   81,
   81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
   81,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   81,   81,   81,   81,    0,    0,    0,    0,
    0,    0,   81,   81,    0,   81,   81,    0,   26,    0,
    0,   81,   81,    0,    0,   81,   81,   81,    0,   81,
   81,    0,   81,   81,   81,   81,   81,   81,   81,   81,
   81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
   81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
   12,   19,    0,    0,    0,    0,   12,   12,   12,    0,
    0,    0,    0,   12,   12,   12,   12,   12,   12,   12,
   12,    0,    0,   12,   12,   12,   12,   12,   12,   12,
   12,   12,   12,   12,   12,   12,   12,   12,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   12,
   12,   12,   12,    0,    0,    0,    0,    0,    0,   12,
   12,    0,   12,   12,    0,   28,    0,    0,   12,   12,
    0,    0,   12,   12,   12,    0,   12,   12,    0,   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,   34,    0,    0,
    0,    0,    0,   34,   34,   34,    0,    0,    0,    0,
   34,   34,   34,   34,   34,   34,   34,   34,    0,    0,
   34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
   34,   34,   34,   34,   34,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   34,   34,   34,   34,
    0,    0,    0,    0,    0,    0,   34,   34,    0,   34,
   34,    0,    9,    0,    0,   34,   34,    0,    0,   34,
   34,   34,    0,   34,   34,    0,   34,   34,   34,   34,
   34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
   34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
   34,   34,   34,   34,   26,    0,    0,    0,    0,    0,
   26,   26,   26,    0,    0,    0,    0,   26,   26,   26,
   26,   26,   26,   26,   26,    0,    0,   26,   26,   26,
   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
   26,   26,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   26,   26,   26,   26,    0,    0,    0,
    0,    0,    0,   26,   26,    0,   26,   26,   10,    0,
    0,    0,   26,   26,    0,    0,   26,   26,   26,    0,
   26,   26,    0,   26,   26,   26,   26,   26,   26,   26,
   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
   26,   28,    0,    0,    0,    0,    0,   28,   28,   28,
    0,    0,    0,    0,   28,   28,   28,   28,   28,   28,
   28,   28,    0,    0,   28,   28,   28,   28,   28,   28,
   28,   28,   28,   28,   28,   28,   28,   28,   28,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   28,   28,   28,   28,    0,    0,    0,    0,    0,    0,
   28,   28,    0,   28,   28,   11,    0,    0,    0,   28,
   28,    0,    0,   28,   28,   28,    0,   28,   28,    0,
   28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
   28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
   28,   28,   28,   28,   28,   28,   28,   28,    9,   13,
    0,    0,    0,    0,    9,    9,    9,    0,    0,    0,
    0,    9,    9,    9,    9,    9,    9,    9,    9,    0,
    0,    9,    9,    9,    9,    9,    9,    9,    9,    9,
    9,    9,    9,    9,    9,    9,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    9,    9,    9,
    9,    0,    0,    0,    0,    0,    0,    9,    9,    0,
    9,    9,  160,    0,    0,    0,    9,    9,    0,    0,
    9,    9,    9,    0,    9,    9,    0,    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,   15,    0,    0,    0,    0,
   10,   10,   10,    0,    0,    0,    0,   10,   10,   10,
   10,   10,   10,   10,   10,    0,    0,   10,   10,   10,
   10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
   10,   10,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   10,   10,   10,   10,    0,    0,    0,
    0,    0,    0,   10,   10,    0,   10,   10,  163,    0,
    0,    0,   10,   10,    0,    0,   10,   10,   10,    0,
   10,   10,    0,   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,
    0,   11,   17,    0,    0,    0,    0,   11,   11,   11,
    0,    0,    0,    0,   11,   11,   11,   11,   11,   11,
   11,   11,    0,    0,   11,   11,   11,   11,   11,   11,
   11,   11,   11,   11,   11,   11,   11,   11,   11,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   11,   11,   11,   11,    0,    0,    0,    0,    0,    0,
   11,   11,    0,   11,   11,  162,    0,    0,    0,   11,
   11,    0,    0,   11,   11,   11,    0,   11,   11,    0,
   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,    0,  160,    0,
    0,    0,    0,    0,  160,  160,  160,    0,    0,    0,
    0,  160,  160,  160,  160,  160,  160,  160,  160,    0,
    0,  160,  160,  160,  160,  160,  160,  160,  160,  160,
  160,  160,  160,  160,  160,  160,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  160,  160,  160,
  160,    0,    0,    0,    0,    0,    0,  160,  160,    0,
  160,  160,    0,    0,    0,    0,  160,  160,    0,    0,
  160,  160,  160,    0,  160,  160,    0,  160,  160,  160,
  160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
  160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
  160,  160,  160,  160,  163,    0,    0,    0,    0,    0,
  163,  163,  163,    0,    0,    0,    0,  163,  163,  163,
  163,  163,  163,  163,  163,    0,    0,  163,  163,  163,
  163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
  163,  163,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  163,  163,  163,  163,    0,    0,    0,
    0,    0,    0,  163,  163,    0,  163,  163,    0,    0,
    0,    0,  163,  163,    0,    0,  163,  163,  163,    0,
  163,  163,    0,  163,  163,  163,  163,  163,  163,  163,
  163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
  163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
    0,  162,    0,    0,    0,    0,    0,  162,  162,  162,
    0,    0,    0,    0,  162,  162,  162,  162,  162,  162,
  162,  162,    0,    0,  162,  162,  162,  162,  162,  162,
  162,  162,  162,  162,  162,  162,  162,  162,  162,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  162,  162,  162,  162,    0,    0,    0,    0,    0,    0,
  162,  162,    0,  162,  162,    0,    0,    0,    0,  162,
  162,    0,    0,  162,  162,  162,    0,  162,  162,    0,
  162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
  162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
  162,  162,  162,  162,  162,  162,  162,    3,    0,    0,
    0,    0,    0,    4,    5,    6,    0,    0,    0,    0,
    7,    8,    9,   10,   11,   12,   13,   14,    0,    0,
   15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
   25,   26,   27,   28,   29,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   30,   31,   32,   33,
    0,    0,    0,    0,    0,    0,   34,   35,    0,   36,
   37,    0,    0,    0,    0,   38,   39,    0,    0,   40,
   41,   42,    0,   43,   44,    0,   45,   46,   47,   48,
   49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
   59,   60,   61,   62,   63,   64,   65,   66,   67,   68,
   69,   70,   71,   72,  224,    0,    0,    0,  224,  224,
  220,    0,    0,    0,  220,  220,    0,    0,    0,    0,
    0,    0,    0,  224,    0,    0,    0,    0,  222,  220,
    0,    0,  222,  222,  218,    0,    0,    0,  218,  218,
    0,    0,    0,    0,    0,  224,  224,  222,  224,    0,
    0,  220,  220,  218,  220,    0,  224,  224,  224,  224,
  224,    0,  220,  220,  220,  220,  220,    0,    0,  222,
  222,    0,  222,    0,    0,  218,  218,    0,  218,    0,
  222,  222,  222,  222,  222,    0,  218,  218,  218,  218,
  218,  228,    0,    0,    0,  228,  228,  230,    0,    0,
    0,  230,  230,    0,    0,    0,    0,    0,    0,    0,
  228,    0,    0,    0,    0,  232,  230,    0,    0,  232,
  232,  236,    0,    0,    0,  236,  236,    0,    0,    0,
    0,    0,  228,  228,  232,  228,    0,    0,  230,  230,
  236,  230,    0,  228,  228,  228,  228,  228,    0,  230,
  230,  230,  230,  230,    0,    0,  232,  232,    0,  232,
    0,    0,  236,  236,    0,  236,    0,  232,  232,  232,
  232,  232,    0,  236,  236,  236,  236,  236,  238,  168,
    0,    0,  238,  238,    0,    0,    0,    0,    0,  168,
    0,    0,    0,    0,    0,    0,    0,  238,    0,    0,
    0,    0,    0,    0,    0,  168,  168,  168,  168,    0,
    0,    0,    0,    0,  168,    0,    0,    0,    0,  238,
  238,    0,  238,    0,    0,    0,    0,    0,    0,    0,
  238,  238,  238,  238,  238,
};
static const YYINT yycheck[] = {                          4,
   16,  153,   15,  257,  258,  258,  362,  258,   13,  258,
  258,  258,  258,   18,  258,  258,  258,  258,  322,  323,
  317,   37,  258,   28,   29,  257,  258,  258,  258,   34,
   35,  259,  304,   38,   39,  258,  317,  258,  258,  265,
  266,   46,  304,  258,   57,   58,   59,  258,  258,  298,
  322,  323,  257,  263,  304,  258,  258,  258,  303,  304,
   65,   74,  259,  258,  258,  362,  257,  257,  321,   74,
  222,  267,  268,  309,  322,  323,  257,  257,  257,   84,
  257,  277,  278,   99,  257,  334,  326,  326,  320,  321,
  362,  317,  304,  257,  322,  323,  257,  257,  294,  257,
  320,  321,  298,  299,  300,  301,  302,  303,  362,  362,
  126,  362,  257,  362,  119,  362,  362,  257,  362,  362,
  362,  362,  100,  101,  102,  103,  104,  105,  106,  107,
  108,  362,  362,  257,  112,  113,  114,  257,  334,  362,
  145,  362,  120,  121,  122,  123,  124,  362,  257,  127,
  326,  362,  157,  131,  132,  133,  134,  135,  136,  362,
  362,  362,  140,  141,  142,  143,  144,  362,  362,  326,
  148,  257,  150,  303,  327,  267,  268,  190,  258,  192,
  258,  260,  257,  257,  257,  277,  278,  257,  268,  258,
  258,  303,  257,  260,    0,  257,  257,  318,  278,  258,
  258,  206,  294,  208,  258,  258,  298,  299,  300,  301,
  302,  303,  258,  193,  294,  295,  296,  297,  435,   93,
   -1,  425,   -1,  303,   -1,   -1,   -1,   -1,    0,   -1,
  235,  236,  237,  238,  239,  240,  241,  242,  243,  244,
  245,  257,  334,  248,   -1,  250,  268,  252,   -1,   -1,
  255,  256,   -1,   -1,  259,   -1,  278,   -1,  274,  275,
  265,  266,  267,  268,   -1,   -1,  271,  272,   -1,  421,
  362,   -1,  294,  295,  296,  297,   -1,  282,  283,  284,
  285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
   -1,  269,  297,   -1,  307,  300,  301,   -1,  314,   -1,
   -1,  258,   -1,   -1,   -1,  262,  263,  312,   -1,   -1,
   -1,   -1,  268,   -1,   -1,   -1,   -1,   -1,  323,  324,
  277,   -1,  278,  328,   -1,  330,   -1,   -1,   -1,  334,
   -1,   -1,  345,   -1,   -1,    0,  341,  315,  294,  295,
  296,  297,  299,  300,   -1,  302,   -1,  303,  364,   -1,
   -1,  367,   -1,  310,  311,  312,  313,  314,  268,  364,
  365,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  278,   -1,
  258,  376,   -1,  378,  262,  263,  258,   -1,  391,   -1,
  262,  263,   -1,   -1,  294,  295,  296,  297,   -1,  277,
   -1,   -1,  405,  303,   -1,  277,  412,   -1,   -1,   -1,
  416,  417,   -1,  419,  409,   -1,   -1,  420,  421,  414,
   -1,  299,  300,   -1,  302,   -1,   -1,  299,  300,   -1,
  302,   -1,  310,  311,  312,  313,  314,   -1,  310,  311,
  312,  313,  314,   -1,   -1,  440,   -1,  415,   -1,   -1,
   -1,   -1,    0,   -1,  449,   -1,   -1,   -1,  453,  462,
   -1,   -1,  457,  458,   -1,   -1,   -1,   -1,   -1,  464,
  268,  466,   -1,  441,   -1,   -1,   -1,  472,  481,   -1,
  278,   -1,  477,   -1,   -1,   -1,   -1,   -1,   -1,  484,
   -1,  486,  460,   -1,  256,  257,  294,  295,  296,  297,
  262,  263,  264,   -1,   -1,  303,  474,  269,  270,  271,
  272,  273,  274,  275,  276,   -1,   -1,  279,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
  292,  293,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  305,  306,  307,  308,   -1,   -1,   -1,
   -1,   -1,   -1,  315,  316,   -1,  318,  319,   -1,    0,
   -1,   -1,  324,  325,   -1,   -1,  328,  329,  330,   -1,
  332,  333,   -1,  335,  336,  337,  338,  339,  340,  341,
  342,  343,  344,  345,  346,  347,  348,  349,  350,  351,
  352,  353,  354,  355,  356,  357,  358,  359,  360,  361,
  362,  256,  257,   -1,   -1,   -1,   -1,  262,  263,  264,
   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,
  275,  276,   -1,   -1,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,  289,  290,  291,  292,  293,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  305,  306,  307,  308,   -1,   -1,   -1,   -1,   -1,   -1,
  315,  316,   -1,  318,  319,   -1,    0,   -1,   -1,  324,
  325,   -1,   -1,  328,  329,  330,   -1,  332,  333,   -1,
  335,  336,  337,  338,  339,  340,  341,  342,  343,  344,
  345,  346,  347,  348,  349,  350,  351,  352,  353,  354,
  355,  356,  357,  358,  359,  360,  361,  362,  256,  257,
   -1,   -1,   -1,   -1,  262,  263,  264,   -1,   -1,   -1,
   -1,  269,  270,  271,  272,  273,  274,  275,  276,   -1,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  305,  306,  307,
  308,   -1,   -1,   -1,   -1,   -1,   -1,  315,  316,   -1,
  318,  319,   -1,    0,   -1,   -1,  324,  325,   -1,   -1,
  328,  329,  330,   -1,  332,  333,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,  345,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,  357,
  358,  359,  360,  361,  362,  256,  257,   -1,   -1,   -1,
   -1,  262,  263,  264,   -1,   -1,   -1,   -1,  269,  270,
  271,  272,  273,  274,  275,  276,   -1,   -1,  279,  280,
  281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
  291,  292,  293,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  305,  306,  307,  308,   -1,   -1,
   -1,   -1,   -1,   -1,  315,  316,   -1,  318,  319,   -1,
    0,   -1,   -1,  324,  325,   -1,   -1,  328,  329,  330,
   -1,  332,  333,   -1,  335,  336,  337,  338,  339,  340,
  341,  342,  343,  344,  345,  346,  347,  348,  349,  350,
  351,  352,  353,  354,  355,  356,  357,  358,  359,  360,
  361,  362,  256,  257,   -1,   -1,   -1,   -1,  262,  263,
  264,   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,
  274,  275,  276,   -1,   -1,  279,  280,  281,  282,  283,
  284,  285,  286,  287,  288,  289,  290,  291,  292,  293,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  305,  306,  307,  308,   -1,   -1,   -1,   -1,   -1,
   -1,  315,  316,   -1,  318,  319,   -1,    0,   -1,   -1,
  324,  325,   -1,   -1,  328,  329,  330,   -1,  332,  333,
   -1,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,  345,  346,  347,  348,  349,  350,  351,  352,  353,
  354,  355,  356,  357,  358,  359,  360,  361,  362,  256,
  257,   -1,   -1,   -1,   -1,  262,  263,  264,   -1,   -1,
   -1,   -1,  269,  270,  271,  272,  273,  274,  275,  276,
   -1,   -1,  279,  280,  281,  282,  283,  284,  285,  286,
  287,  288,  289,  290,  291,  292,  293,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  305,  306,
  307,  308,   -1,   -1,   -1,   -1,   -1,   -1,  315,  316,
   -1,  318,  319,   -1,    0,   -1,   -1,  324,  325,   -1,
   -1,  328,  329,  330,   -1,  332,  333,   -1,  335,  336,
  337,  338,  339,  340,  341,  342,  343,  344,  345,  346,
  347,  348,  349,  350,  351,  352,  353,  354,  355,  356,
  357,  358,  359,  360,  361,  362,  256,  257,   -1,   -1,
   -1,   -1,  262,  263,  264,   -1,   -1,   -1,   -1,  269,
  270,  271,  272,  273,  274,  275,  276,   -1,   -1,  279,
  280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
  290,  291,  292,  293,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  305,  306,  307,  308,   -1,
   -1,   -1,   -1,   -1,   -1,  315,  316,   -1,  318,  319,
   -1,    0,   -1,   -1,  324,  325,   -1,   -1,  328,  329,
  330,   -1,  332,  333,   -1,  335,  336,  337,  338,  339,
  340,  341,  342,  343,  344,  345,  346,  347,  348,  349,
  350,  351,  352,  353,  354,  355,  356,  357,  358,  359,
  360,  361,  362,  256,  257,   -1,   -1,   -1,   -1,  262,
  263,  264,   -1,   -1,   -1,   -1,  269,  270,  271,  272,
  273,  274,  275,  276,   -1,   -1,  279,  280,  281,  282,
  283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
  293,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  305,  306,  307,  308,   -1,   -1,   -1,   -1,
   -1,   -1,  315,  316,   -1,  318,  319,   -1,    0,   -1,
   -1,  324,  325,   -1,   -1,  328,  329,  330,   -1,  332,
  333,   -1,  335,  336,  337,  338,  339,  340,  341,  342,
  343,  344,  345,  346,  347,  348,  349,  350,  351,  352,
  353,  354,  355,  356,  357,  358,  359,  360,  361,  362,
  256,  257,   -1,   -1,   -1,   -1,  262,  263,  264,   -1,
   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,  275,
  276,   -1,   -1,  279,  280,  281,  282,  283,  284,  285,
  286,  287,  288,  289,  290,  291,  292,  293,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  305,
  306,  307,  308,   -1,   -1,   -1,   -1,   -1,   -1,  315,
  316,   -1,  318,  319,   -1,    0,   -1,   -1,  324,  325,
   -1,   -1,  328,  329,  330,   -1,  332,  333,   -1,  335,
  336,  337,  338,  339,  340,  341,  342,  343,  344,  345,
  346,  347,  348,  349,  350,  351,  352,  353,  354,  355,
  356,  357,  358,  359,  360,  361,  362,  256,  257,   -1,
   -1,   -1,   -1,  262,  263,  264,   -1,   -1,   -1,   -1,
  269,  270,  271,  272,  273,  274,  275,  276,   -1,   -1,
  279,  280,  281,  282,  283,  284,  285,  286,  287,  288,
  289,  290,  291,  292,  293,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  305,  306,  307,  308,
   -1,   -1,   -1,   -1,   -1,   -1,  315,  316,   -1,  318,
  319,   -1,    0,   -1,   -1,  324,  325,   -1,   -1,  328,
  329,  330,   -1,  332,  333,   -1,  335,  336,  337,  338,
  339,  340,  341,  342,  343,  344,  345,  346,  347,  348,
  349,  350,  351,  352,  353,  354,  355,  356,  357,  358,
  359,  360,  361,  362,  256,  257,   -1,   -1,   -1,   -1,
  262,  263,  264,   -1,   -1,   -1,   -1,  269,  270,  271,
  272,  273,  274,  275,  276,   -1,   -1,  279,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
  292,  293,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  305,  306,  307,  308,   -1,   -1,   -1,
   -1,   -1,   -1,  315,  316,   -1,  318,  319,   -1,    0,
   -1,   -1,  324,  325,   -1,   -1,  328,  329,  330,   -1,
  332,  333,   -1,  335,  336,  337,  338,  339,  340,  341,
  342,  343,  344,  345,  346,  347,  348,  349,  350,  351,
  352,  353,  354,  355,  356,  357,  358,  359,  360,  361,
  362,  256,  257,   -1,   -1,   -1,   -1,  262,  263,  264,
   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,
  275,  276,   -1,   -1,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,  289,  290,  291,  292,  293,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  305,  306,  307,  308,   -1,   -1,   -1,   -1,   -1,   -1,
  315,  316,   -1,  318,  319,   -1,    0,   -1,   -1,  324,
  325,   -1,   -1,  328,  329,  330,   -1,  332,  333,   -1,
  335,  336,  337,  338,  339,  340,  341,  342,  343,  344,
  345,  346,  347,  348,  349,  350,  351,  352,  353,  354,
  355,  356,  357,  358,  359,  360,  361,  362,  256,  257,
   -1,   -1,   -1,   -1,  262,  263,  264,   -1,   -1,   -1,
   -1,  269,  270,  271,  272,  273,  274,  275,  276,   -1,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  305,  306,  307,
  308,   -1,   -1,   -1,   -1,   -1,   -1,  315,  316,   -1,
  318,  319,   -1,    0,   -1,   -1,  324,  325,   -1,   -1,
  328,  329,  330,   -1,  332,  333,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,  345,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,  357,
  358,  359,  360,  361,  362,  256,  257,   -1,   -1,   -1,
   -1,  262,  263,  264,   -1,   -1,   -1,   -1,  269,  270,
  271,  272,  273,  274,  275,  276,   -1,   -1,  279,  280,
  281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
  291,  292,  293,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  305,  306,  307,  308,   -1,   -1,
   -1,   -1,   -1,   -1,  315,  316,   -1,  318,  319,   -1,
    0,   -1,   -1,  324,  325,   -1,   -1,  328,  329,  330,
   -1,  332,  333,   -1,  335,  336,  337,  338,  339,  340,
  341,  342,  343,  344,  345,  346,  347,  348,  349,  350,
  351,  352,  353,  354,  355,  356,  357,  358,  359,  360,
  361,  362,  256,  257,   -1,   -1,   -1,   -1,  262,  263,
  264,   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,
  274,  275,  276,   -1,   -1,  279,  280,  281,  282,  283,
  284,  285,  286,  287,  288,  289,  290,  291,  292,  293,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  305,  306,  307,  308,   -1,   -1,   -1,   -1,   -1,
   -1,  315,  316,   -1,  318,  319,   -1,    0,   -1,   -1,
  324,  325,   -1,   -1,  328,  329,  330,   -1,  332,  333,
   -1,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,  345,  346,  347,  348,  349,  350,  351,  352,  353,
  354,  355,  356,  357,  358,  359,  360,  361,  362,  256,
  257,   -1,   -1,   -1,   -1,  262,  263,  264,   -1,   -1,
   -1,   -1,  269,  270,  271,  272,  273,  274,  275,  276,
   -1,   -1,  279,  280,  281,  282,  283,  284,  285,  286,
  287,  288,  289,  290,  291,  292,  293,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  305,  306,
  307,  308,   -1,   -1,   -1,   -1,   -1,   -1,  315,  316,
   -1,  318,  319,   -1,    0,   -1,   -1,  324,  325,   -1,
   -1,  328,  329,  330,   -1,  332,  333,   -1,  335,  336,
  337,  338,  339,  340,  341,  342,  343,  344,  345,  346,
  347,  348,  349,  350,  351,  352,  353,  354,  355,  356,
  357,  358,  359,  360,  361,  362,  256,  257,   -1,   -1,
   -1,   -1,  262,  263,  264,   -1,   -1,   -1,   -1,  269,
  270,  271,  272,  273,  274,  275,  276,   -1,   -1,  279,
  280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
  290,  291,  292,  293,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  305,  306,  307,  308,   -1,
   -1,   -1,   -1,   -1,   -1,  315,  316,   -1,  318,  319,
   -1,    0,   -1,   -1,  324,  325,   -1,   -1,  328,  329,
  330,   -1,  332,  333,   -1,  335,  336,  337,  338,  339,
  340,  341,  342,  343,  344,  345,  346,  347,  348,  349,
  350,  351,  352,  353,  354,  355,  356,  357,  358,  359,
  360,  361,  362,  256,  257,   -1,   -1,   -1,   -1,  262,
  263,  264,   -1,   -1,   -1,   -1,  269,  270,  271,  272,
  273,  274,  275,  276,   -1,   -1,  279,  280,  281,  282,
  283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
  293,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  305,  306,  307,  308,   -1,   -1,   -1,   -1,
   -1,   -1,  315,  316,   -1,  318,  319,   -1,    0,   -1,
   -1,  324,  325,   -1,   -1,  328,  329,  330,   -1,  332,
  333,   -1,  335,  336,  337,  338,  339,  340,  341,  342,
  343,  344,  345,  346,  347,  348,  349,  350,  351,  352,
  353,  354,  355,  356,  357,  358,  359,  360,  361,  362,
  256,  257,   -1,   -1,   -1,   -1,  262,  263,  264,   -1,
   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,  275,
  276,   -1,   -1,  279,  280,  281,  282,  283,  284,  285,
  286,  287,  288,  289,  290,  291,  292,  293,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  305,
  306,  307,  308,   -1,   -1,   -1,   -1,   -1,   -1,  315,
  316,   -1,  318,  319,   -1,    0,   -1,   -1,  324,  325,
   -1,   -1,  328,  329,  330,   -1,  332,  333,   -1,  335,
  336,  337,  338,  339,  340,  341,  342,  343,  344,  345,
  346,  347,  348,  349,  350,  351,  352,  353,  354,  355,
  356,  357,  358,  359,  360,  361,  362,  256,   -1,   -1,
   -1,   -1,   -1,  262,  263,  264,   -1,   -1,   -1,   -1,
  269,  270,  271,  272,  273,  274,  275,  276,   -1,   -1,
  279,  280,  281,  282,  283,  284,  285,  286,  287,  288,
  289,  290,  291,  292,  293,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  305,  306,  307,  308,
   -1,   -1,   -1,   -1,   -1,   -1,  315,  316,   -1,  318,
  319,   -1,    0,   -1,   -1,  324,  325,   -1,   -1,  328,
  329,  330,   -1,  332,  333,   -1,  335,  336,  337,  338,
  339,  340,  341,  342,  343,  344,  345,  346,  347,  348,
  349,  350,  351,  352,  353,  354,  355,  356,  357,  358,
  359,  360,  361,  362,  256,   -1,   -1,   -1,   -1,   -1,
  262,  263,  264,   -1,   -1,   -1,   -1,  269,  270,  271,
  272,  273,  274,  275,  276,   -1,   -1,  279,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
  292,  293,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  305,  306,  307,  308,   -1,   -1,   -1,
   -1,   -1,   -1,  315,  316,   -1,  318,  319,    0,   -1,
   -1,   -1,  324,  325,   -1,   -1,  328,  329,  330,   -1,
  332,  333,   -1,  335,  336,  337,  338,  339,  340,  341,
  342,  343,  344,  345,  346,  347,  348,  349,  350,  351,
  352,  353,  354,  355,  356,  357,  358,  359,  360,  361,
  362,  256,   -1,   -1,   -1,   -1,   -1,  262,  263,  264,
   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,
  275,  276,   -1,   -1,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,  289,  290,  291,  292,  293,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  305,  306,  307,  308,   -1,   -1,   -1,   -1,   -1,   -1,
  315,  316,   -1,  318,  319,    0,   -1,   -1,   -1,  324,
  325,   -1,   -1,  328,  329,  330,   -1,  332,  333,   -1,
  335,  336,  337,  338,  339,  340,  341,  342,  343,  344,
  345,  346,  347,  348,  349,  350,  351,  352,  353,  354,
  355,  356,  357,  358,  359,  360,  361,  362,  256,  257,
   -1,   -1,   -1,   -1,  262,  263,  264,   -1,   -1,   -1,
   -1,  269,  270,  271,  272,  273,  274,  275,  276,   -1,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  305,  306,  307,
  308,   -1,   -1,   -1,   -1,   -1,   -1,  315,  316,   -1,
  318,  319,    0,   -1,   -1,   -1,  324,  325,   -1,   -1,
  328,  329,  330,   -1,  332,  333,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,  345,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,  357,
  358,  359,  360,  361,  256,  257,   -1,   -1,   -1,   -1,
  262,  263,  264,   -1,   -1,   -1,   -1,  269,  270,  271,
  272,  273,  274,  275,  276,   -1,   -1,  279,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
  292,  293,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  305,  306,  307,  308,   -1,   -1,   -1,
   -1,   -1,   -1,  315,  316,   -1,  318,  319,    0,   -1,
   -1,   -1,  324,  325,   -1,   -1,  328,  329,  330,   -1,
  332,  333,   -1,  335,  336,  337,  338,  339,  340,  341,
  342,  343,  344,  345,  346,  347,  348,  349,  350,  351,
  352,  353,  354,  355,  356,  357,  358,  359,  360,  361,
   -1,  256,  257,   -1,   -1,   -1,   -1,  262,  263,  264,
   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,
  275,  276,   -1,   -1,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,  289,  290,  291,  292,  293,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  305,  306,  307,  308,   -1,   -1,   -1,   -1,   -1,   -1,
  315,  316,   -1,  318,  319,    0,   -1,   -1,   -1,  324,
  325,   -1,   -1,  328,  329,  330,   -1,  332,  333,   -1,
  335,  336,  337,  338,  339,  340,  341,  342,  343,  344,
  345,  346,  347,  348,  349,  350,  351,  352,  353,  354,
  355,  356,  357,  358,  359,  360,  361,   -1,  256,   -1,
   -1,   -1,   -1,   -1,  262,  263,  264,   -1,   -1,   -1,
   -1,  269,  270,  271,  272,  273,  274,  275,  276,   -1,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  305,  306,  307,
  308,   -1,   -1,   -1,   -1,   -1,   -1,  315,  316,   -1,
  318,  319,   -1,   -1,   -1,   -1,  324,  325,   -1,   -1,
  328,  329,  330,   -1,  332,  333,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,  345,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,  357,
  358,  359,  360,  361,  256,   -1,   -1,   -1,   -1,   -1,
  262,  263,  264,   -1,   -1,   -1,   -1,  269,  270,  271,
  272,  273,  274,  275,  276,   -1,   -1,  279,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
  292,  293,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  305,  306,  307,  308,   -1,   -1,   -1,
   -1,   -1,   -1,  315,  316,   -1,  318,  319,   -1,   -1,
   -1,   -1,  324,  325,   -1,   -1,  328,  329,  330,   -1,
  332,  333,   -1,  335,  336,  337,  338,  339,  340,  341,
  342,  343,  344,  345,  346,  347,  348,  349,  350,  351,
  352,  353,  354,  355,  356,  357,  358,  359,  360,  361,
   -1,  256,   -1,   -1,   -1,   -1,   -1,  262,  263,  264,
   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,
  275,  276,   -1,   -1,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,  289,  290,  291,  292,  293,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  305,  306,  307,  308,   -1,   -1,   -1,   -1,   -1,   -1,
  315,  316,   -1,  318,  319,   -1,   -1,   -1,   -1,  324,
  325,   -1,   -1,  328,  329,  330,   -1,  332,  333,   -1,
  335,  336,  337,  338,  339,  340,  341,  342,  343,  344,
  345,  346,  347,  348,  349,  350,  351,  352,  353,  354,
  355,  356,  357,  358,  359,  360,  361,  256,   -1,   -1,
   -1,   -1,   -1,  262,  263,  264,   -1,   -1,   -1,   -1,
  269,  270,  271,  272,  273,  274,  275,  276,   -1,   -1,
  279,  280,  281,  282,  283,  284,  285,  286,  287,  288,
  289,  290,  291,  292,  293,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  305,  306,  307,  308,
   -1,   -1,   -1,   -1,   -1,   -1,  315,  316,   -1,  318,
  319,   -1,   -1,   -1,   -1,  324,  325,   -1,   -1,  328,
  329,  330,   -1,  332,  333,   -1,  335,  336,  337,  338,
  339,  340,  341,  342,  343,  344,  345,  346,  347,  348,
  349,  350,  351,  352,  353,  354,  355,  356,  357,  358,
  359,  360,  361,  362,  258,   -1,   -1,   -1,  262,  263,
  258,   -1,   -1,   -1,  262,  263,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  277,   -1,   -1,   -1,   -1,  258,  277,
   -1,   -1,  262,  263,  258,   -1,   -1,   -1,  262,  263,
   -1,   -1,   -1,   -1,   -1,  299,  300,  277,  302,   -1,
   -1,  299,  300,  277,  302,   -1,  310,  311,  312,  313,
  314,   -1,  310,  311,  312,  313,  314,   -1,   -1,  299,
  300,   -1,  302,   -1,   -1,  299,  300,   -1,  302,   -1,
  310,  311,  312,  313,  314,   -1,  310,  311,  312,  313,
  314,  258,   -1,   -1,   -1,  262,  263,  258,   -1,   -1,
   -1,  262,  263,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  277,   -1,   -1,   -1,   -1,  258,  277,   -1,   -1,  262,
  263,  258,   -1,   -1,   -1,  262,  263,   -1,   -1,   -1,
   -1,   -1,  299,  300,  277,  302,   -1,   -1,  299,  300,
  277,  302,   -1,  310,  311,  312,  313,  314,   -1,  310,
  311,  312,  313,  314,   -1,   -1,  299,  300,   -1,  302,
   -1,   -1,  299,  300,   -1,  302,   -1,  310,  311,  312,
  313,  314,   -1,  310,  311,  312,  313,  314,  258,  268,
   -1,   -1,  262,  263,   -1,   -1,   -1,   -1,   -1,  278,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  294,  295,  296,  297,   -1,
   -1,   -1,   -1,   -1,  303,   -1,   -1,   -1,   -1,  299,
  300,   -1,  302,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  310,  311,  312,  313,  314,
};
#define YYFINAL 1
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 362
#define YYUNDFTOKEN 504
#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
#if YYDEBUG
static const char *const yyname[] = {

"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"LB","RB","LP","RP","MENUS",
"MENU","BUTTON","DEFAULT_FUNCTION","PLUS","MINUS","ALL","OR","CURSORS",
"PIXMAPS","ICONS","COLOR","SAVECOLOR","MONOCHROME","FUNCTION","ICONMGR_SHOW",
"ICONMGR","ALTER","WINDOW_FUNCTION","ZOOM","ICONMGRS","ICONMGR_GEOMETRY",
"ICONMGR_NOSHOW","MAKE_TITLE","ICONIFY_BY_UNMAPPING",
"DONT_ICONIFY_BY_UNMAPPING","NO_BORDER","NO_ICON_TITLE","NO_TITLE","AUTO_RAISE",
"NO_HILITE","ICON_REGION","WINDOW_REGION","META","SHIFT","LOCK","CONTROL",
"WINDOW","TITLE","ICON","ROOT","FRAME","COLON","EQUALS","SQUEEZE_TITLE",
"DONT_SQUEEZE_TITLE","START_ICONIFIED","NO_TITLE_HILITE","TITLE_HILITE","MOVE",
"RESIZE","WAITC","SELECT","KILL","LEFT_TITLEBUTTON","RIGHT_TITLEBUTTON",
"NUMBER","KEYWORD","NKEYWORD","CKEYWORD","CLKEYWORD","FKEYWORD","FSKEYWORD",
"SKEYWORD","SSKEYWORD","DKEYWORD","JKEYWORD","WINDOW_RING",
"WINDOW_RING_EXCLUDE","WARP_CURSOR","ERRORTOKEN","NO_STACKMODE","ALWAYS_ON_TOP",
"WORKSPACE","WORKSPACES","WORKSPCMGR_GEOMETRY","OCCUPYALL","OCCUPYLIST",
"MAPWINDOWCURRENTWORKSPACE","MAPWINDOWDEFAULTWORKSPACE","UNMAPBYMOVINGFARAWAY",
"OPAQUEMOVE","NOOPAQUEMOVE","OPAQUERESIZE","NOOPAQUERESIZE","DONTSETINACTIVE",
"CHANGE_WORKSPACE_FUNCTION","DEICONIFY_FUNCTION","ICONIFY_FUNCTION",
"AUTOSQUEEZE","STARTSQUEEZED","DONT_SAVE","AUTO_LOWER","ICONMENU_DONTSHOW",
"WINDOW_BOX","IGNOREMODIFIER","WINDOW_GEOMETRIES","ALWAYSSQUEEZETOGRAVITY",
"VIRTUAL_SCREENS","IGNORE_TRANSIENT","DONTTOGGLEWORKSPACEMANAGERSTATE","STRING",
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"illegal-symbol",
};
static const char *const yyrule[] = {
"$accept : twmrc",
"twmrc : stmts",
"stmts :",
"stmts : stmts stmt",
"stmt : error",
"stmt : noarg",
"stmt : sarg",
"stmt : narg",
"stmt : squeeze",
"stmt : ICON_REGION string DKEYWORD DKEYWORD number number",
"stmt : ICON_REGION string DKEYWORD DKEYWORD number number string",
"stmt : ICON_REGION string DKEYWORD DKEYWORD number number string string",
"stmt : ICON_REGION string DKEYWORD DKEYWORD number number string string string",
"$$1 :",
"stmt : ICON_REGION string DKEYWORD DKEYWORD number number $$1 win_list",
"$$2 :",
"stmt : ICON_REGION string DKEYWORD DKEYWORD number number string $$2 win_list",
"$$3 :",
"stmt : ICON_REGION string DKEYWORD DKEYWORD number number string string $$3 win_list",
"$$4 :",
"stmt : ICON_REGION string DKEYWORD DKEYWORD number number string string string $$4 win_list",
"$$5 :",
"stmt : WINDOW_REGION string DKEYWORD DKEYWORD $$5 win_list",
"$$6 :",
"stmt : WINDOW_BOX string string $$6 win_list",
"stmt : ICONMGR_GEOMETRY string number",
"stmt : ICONMGR_GEOMETRY string",
"stmt : WORKSPCMGR_GEOMETRY string number",
"stmt : WORKSPCMGR_GEOMETRY string",
"$$7 :",
"stmt : MAPWINDOWCURRENTWORKSPACE $$7 curwork",
"$$8 :",
"stmt : MAPWINDOWDEFAULTWORKSPACE $$8 defwork",
"stmt : ZOOM number",
"stmt : ZOOM",
"stmt : PIXMAPS pixmap_list",
"stmt : CURSORS cursor_list",
"$$9 :",
"stmt : ICONIFY_BY_UNMAPPING $$9 win_list",
"stmt : ICONIFY_BY_UNMAPPING",
"$$10 :",
"stmt : OPAQUEMOVE $$10 win_list",
"stmt : OPAQUEMOVE",
"$$11 :",
"stmt : NOOPAQUEMOVE $$11 win_list",
"stmt : NOOPAQUEMOVE",
"$$12 :",
"stmt : OPAQUERESIZE $$12 win_list",
"stmt : OPAQUERESIZE",
"$$13 :",
"stmt : NOOPAQUERESIZE $$13 win_list",
"stmt : NOOPAQUERESIZE",
"stmt : LEFT_TITLEBUTTON string EQUALS action",
"stmt : RIGHT_TITLEBUTTON string EQUALS action",
"$$14 :",
"stmt : LEFT_TITLEBUTTON string $$14 binding_list",
"$$15 :",
"stmt : RIGHT_TITLEBUTTON string $$15 binding_list",
"stmt : button string",
"stmt : button action",
"stmt : string fullkey",
"stmt : button full",
"$$16 :",
"stmt : DONT_ICONIFY_BY_UNMAPPING $$16 win_list",
"$$17 :",
"stmt : WORKSPACES $$17 workspc_list",
"$$18 :",
"$$19 :",
"stmt : IGNOREMODIFIER $$18 LB keys $$19 RB",
"$$20 :",
"stmt : OCCUPYALL $$20 win_list",
"$$21 :",
"stmt : ICONMENU_DONTSHOW $$21 win_list",
"$$22 :",
"stmt : OCCUPYLIST $$22 occupy_list",
"$$23 :",
"stmt : UNMAPBYMOVINGFARAWAY $$23 win_list",
"$$24 :",
"stmt : AUTOSQUEEZE $$24 win_list",
"$$25 :",
"stmt : STARTSQUEEZED $$25 win_list",
"stmt : ALWAYSSQUEEZETOGRAVITY",
"$$26 :",
"stmt : ALWAYSSQUEEZETOGRAVITY $$26 win_list",
"$$27 :",
"stmt : DONTSETINACTIVE $$27 win_list",
"$$28 :",
"stmt : ICONMGR_NOSHOW $$28 win_list",
"stmt : ICONMGR_NOSHOW",
"$$29 :",
"stmt : ICONMGRS $$29 iconm_list",
"$$30 :",
"stmt : ICONMGR_SHOW $$30 win_list",
"$$31 :",
"stmt : NO_TITLE_HILITE $$31 win_list",
"stmt : NO_TITLE_HILITE",
"$$32 :",
"stmt : NO_HILITE $$32 win_list",
"stmt : NO_HILITE",
"$$33 :",
"stmt : ALWAYS_ON_TOP $$33 win_list",
"$$34 :",
"stmt : NO_STACKMODE $$34 win_list",
"stmt : NO_STACKMODE",
"$$35 :",
"stmt : NO_BORDER $$35 win_list",
"$$36 :",
"stmt : DONT_SAVE $$36 win_list",
"$$37 :",
"stmt : NO_ICON_TITLE $$37 win_list",
"stmt : NO_ICON_TITLE",
"$$38 :",
"stmt : NO_TITLE $$38 win_list",
"stmt : NO_TITLE",
"$$39 :",
"stmt : IGNORE_TRANSIENT $$39 win_list",
"stmt : DONTTOGGLEWORKSPACEMANAGERSTATE",
"$$40 :",
"stmt : MAKE_TITLE $$40 win_list",
"$$41 :",
"stmt : START_ICONIFIED $$41 win_list",
"$$42 :",
"stmt : AUTO_RAISE $$42 win_list",
"stmt : AUTO_RAISE",
"$$43 :",
"stmt : AUTO_LOWER $$43 win_list",
"stmt : AUTO_LOWER",
"$$44 :",
"stmt : MENU string LP string COLON string RP $$44 menu",
"$$45 :",
"stmt : MENU string $$45 menu",
"$$46 :",
"stmt : FUNCTION string $$46 function",
"$$47 :",
"stmt : ICONS $$47 icon_list",
"$$48 :",
"stmt : COLOR $$48 color_list",
"$$49 :",
"stmt : SAVECOLOR $$49 save_color_list",
"$$50 :",
"stmt : MONOCHROME $$50 color_list",
"stmt : DEFAULT_FUNCTION action",
"stmt : WINDOW_FUNCTION action",
"stmt : CHANGE_WORKSPACE_FUNCTION action",
"stmt : DEICONIFY_FUNCTION action",
"stmt : ICONIFY_FUNCTION action",
"$$51 :",
"stmt : WARP_CURSOR $$51 win_list",
"stmt : WARP_CURSOR",
"$$52 :",
"stmt : WINDOW_RING $$52 win_list",
"stmt : WINDOW_RING",
"$$53 :",
"stmt : WINDOW_RING_EXCLUDE $$53 win_list",
"$$54 :",
"stmt : WINDOW_GEOMETRIES $$54 wingeom_list",
"$$55 :",
"stmt : VIRTUAL_SCREENS $$55 geom_list",
"noarg : KEYWORD",
"sarg : SKEYWORD string",
"sarg : SKEYWORD",
"sarg : SSKEYWORD string string",
"sarg : SSKEYWORD string",
"sarg : SSKEYWORD",
"narg : NKEYWORD number",
"keyaction : EQUALS keys COLON action",
"full : EQUALS keys COLON contexts COLON action",
"fullkey : EQUALS keys COLON contextkeys COLON action",
"keys :",
"keys : keys key",
"key : META",
"key : SHIFT",
"key : LOCK",
"key : CONTROL",
"key : ALTER number",
"key : META number",
"key : OR",
"contexts :",
"contexts : contexts context",
"context : WINDOW",
"context : TITLE",
"context : ICON",
"context : ROOT",
"context : FRAME",
"context : WORKSPACE",
"context : ICONMGR",
"context : META",
"context : ALTER",
"context : ALL",
"context : OR",
"contextkeys :",
"contextkeys : contextkeys contextkey",
"contextkey : WINDOW",
"contextkey : TITLE",
"contextkey : ICON",
"contextkey : ROOT",
"contextkey : FRAME",
"contextkey : WORKSPACE",
"contextkey : ICONMGR",
"contextkey : META",
"contextkey : ALL",
"contextkey : ALTER",
"contextkey : OR",
"contextkey : string",
"binding_list : LB binding_entries RB",
"binding_entries :",
"binding_entries : binding_entries binding_entry",
"binding_entry : button keyaction",
"binding_entry : button EQUALS action",
"binding_entry : button COLON action",
"pixmap_list : LB pixmap_entries RB",
"pixmap_entries :",
"pixmap_entries : pixmap_entries pixmap_entry",
"pixmap_entry : TITLE_HILITE string",
"cursor_list : LB cursor_entries RB",
"cursor_entries :",
"cursor_entries : cursor_entries cursor_entry",
"cursor_entry : FRAME string string",
"cursor_entry : FRAME string",
"cursor_entry : TITLE string string",
"cursor_entry : TITLE string",
"cursor_entry : ICON string string",
"cursor_entry : ICON string",
"cursor_entry : ICONMGR string string",
"cursor_entry : ICONMGR string",
"cursor_entry : BUTTON string string",
"cursor_entry : BUTTON string",
"cursor_entry : MOVE string string",
"cursor_entry : MOVE string",
"cursor_entry : RESIZE string string",
"cursor_entry : RESIZE string",
"cursor_entry : WAITC string string",
"cursor_entry : WAITC string",
"cursor_entry : MENU string string",
"cursor_entry : MENU string",
"cursor_entry : SELECT string string",
"cursor_entry : SELECT string",
"cursor_entry : KILL string string",
"cursor_entry : KILL string",
"color_list : LB color_entries RB",
"color_entries :",
"color_entries : color_entries color_entry",
"color_entry : CLKEYWORD string",
"$$56 :",
"color_entry : CLKEYWORD string $$56 win_color_list",
"color_entry : CKEYWORD string",
"save_color_list : LB s_color_entries RB",
"s_color_entries :",
"s_color_entries : s_color_entries s_color_entry",
"s_color_entry : string",
"s_color_entry : CLKEYWORD",
"win_color_list : LB win_color_entries RB",
"win_color_entries :",
"win_color_entries : win_color_entries win_color_entry",
"win_color_entry : string string",
"wingeom_list : LB wingeom_entries RB",
"wingeom_entries :",
"wingeom_entries : wingeom_entries wingeom_entry",
"wingeom_entry : string string",
"geom_list : LB geom_entries RB",
"geom_entries :",
"geom_entries : geom_entries geom_entry",
"geom_entry : string",
"squeeze : SQUEEZE_TITLE",
"$$57 :",
"squeeze : SQUEEZE_TITLE $$57 LB win_sqz_entries RB",
"squeeze : DONT_SQUEEZE_TITLE",
"$$58 :",
"squeeze : DONT_SQUEEZE_TITLE $$58 win_list",
"win_sqz_entries :",
"win_sqz_entries : win_sqz_entries string JKEYWORD signed_number number",
"iconm_list : LB iconm_entries RB",
"iconm_entries :",
"iconm_entries : iconm_entries iconm_entry",
"iconm_entry : string string number",
"iconm_entry : string string string number",
"workspc_list : LB workspc_entries RB",
"workspc_entries :",
"workspc_entries : workspc_entries workspc_entry",
"workspc_entry : string",
"$$59 :",
"workspc_entry : string $$59 workapp_list",
"workapp_list : LB workapp_entries RB",
"workapp_entries :",
"workapp_entries : workapp_entries workapp_entry",
"workapp_entry : string",
"workapp_entry : string string",
"workapp_entry : string string string",
"workapp_entry : string string string string",
"workapp_entry : string string string string string",
"curwork : LB string RB",
"curwork : LB string string RB",
"curwork : LB string string string RB",
"curwork : LB string string string string RB",
"defwork : LB string RB",
"defwork : LB string string RB",
"defwork : LB string string string RB",
"defwork : LB string string string string RB",
"win_list : LB win_entries RB",
"win_entries :",
"win_entries : win_entries win_entry",
"win_entry : string",
"occupy_list : LB occupy_entries RB",
"occupy_entries :",
"occupy_entries : occupy_entries occupy_entry",
"$$60 :",
"occupy_entry : string $$60 occupy_workspc_list",
"$$61 :",
"occupy_entry : WINDOW string $$61 occupy_workspc_list",
"$$62 :",
"occupy_entry : WORKSPACE string $$62 occupy_window_list",
"occupy_workspc_list : LB occupy_workspc_entries RB",
"occupy_workspc_entries :",
"occupy_workspc_entries : occupy_workspc_entries occupy_workspc_entry",
"occupy_workspc_entry : string",
"occupy_window_list : LB occupy_window_entries RB",
"occupy_window_entries :",
"occupy_window_entries : occupy_window_entries occupy_window_entry",
"occupy_window_entry : string",
"icon_list : LB icon_entries RB",
"icon_entries :",
"icon_entries : icon_entries icon_entry",
"icon_entry : string string",
"function : LB function_entries RB",
"function_entries :",
"function_entries : function_entries function_entry",
"function_entry : action",
"menu : LB menu_entries RB",
"menu_entries :",
"menu_entries : menu_entries menu_entry",
"menu_entry : string action",
"menu_entry : string LP string COLON string RP action",
"action : FKEYWORD",
"action : FSKEYWORD string",
"signed_number : number",
"signed_number : PLUS number",
"signed_number : MINUS number",
"button : BUTTON number",
"string : STRING",
"number : NUMBER",

};
#endif

int      yydebug;
int      yynerrs;

int      yyerrflag;
int      yychar;
YYSTYPE  yyval;
YYSTYPE  yylval;

/* define the initial stack-sizes */
#ifdef YYSTACKSIZE
#undef YYMAXDEPTH
#define YYMAXDEPTH  YYSTACKSIZE
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 10000
#define YYMAXDEPTH  10000
#endif
#endif

#define YYINITSTACKSIZE 200

typedef struct {
    unsigned stacksize;
    YYINT    *s_base;
    YYINT    *s_mark;
    YYINT    *s_last;
    YYSTYPE  *l_base;
    YYSTYPE  *l_mark;
} YYSTACKDATA;
/* variables for the parser stack */
static YYSTACKDATA yystack;
#line 1025 "gram.y"
void yyerror(char *s)
{
    twmrc_error_prefix();
    fprintf (stderr, "error in input file:  %s\n", s ? s : "");
    ParseError = 1;
}

void RemoveDQuote(char *str)
{
    register char *i, *o;
    register int n;
    register int count;

    for (i=str+1, o=str; *i && *i != '\"'; o++)
    {
	if (*i == '\\')
	{
	    switch (*++i)
	    {
	    case 'n':
		*o = '\n';
		i++;
		break;
	    case 'b':
		*o = '\b';
		i++;
		break;
	    case 'r':
		*o = '\r';
		i++;
		break;
	    case 't':
		*o = '\t';
		i++;
		break;
	    case 'f':
		*o = '\f';
		i++;
		break;
	    case '0':
		if (*++i == 'x')
		    goto hex;
		else
		    --i;
	    case '1': case '2': case '3':
	    case '4': case '5': case '6': case '7':
		n = 0;
		count = 0;
		while (*i >= '0' && *i <= '7' && count < 3)
		{
		    n = (n<<3) + (*i++ - '0');
		    count++;
		}
		*o = n;
		break;
	    hex:
	    case 'x':
		n = 0;
		count = 0;
		while (i++, count++ < 2)
		{
		    if (*i >= '0' && *i <= '9')
			n = (n<<4) + (*i - '0');
		    else if (*i >= 'a' && *i <= 'f')
			n = (n<<4) + (*i - 'a') + 10;
		    else if (*i >= 'A' && *i <= 'F')
			n = (n<<4) + (*i - 'A') + 10;
		    else
			break;
		}
		*o = n;
		break;
	    case '\n':
		i++;	/* punt */
		o--;	/* to account for o++ at end of loop */
		break;
	    case '\"':
	    case '\'':
	    case '\\':
	    default:
		*o = *i++;
		break;
	    }
	}
	else
	    *o = *i++;
    }
    *o = '\0';
}

static MenuRoot *GetRoot(char *name, char *fore, char *back)
{
    MenuRoot *tmp;

    tmp = FindMenuRoot(name);
    if (tmp == NULL)
	tmp = NewMenuRoot(name);

    if (fore)
    {
	int save;

	save = Scr->FirstTime;
	Scr->FirstTime = TRUE;
	GetColor(COLOR, &tmp->highlight.fore, fore);
	GetColor(COLOR, &tmp->highlight.back, back);
	Scr->FirstTime = save;
    }

    return tmp;
}

static void GotButton (int butt, int func)
{
    int i;
    MenuItem *item;

    for (i = 0; i < NUM_CONTEXTS; i++) {
	if ((cont & (1 << i)) == 0) continue;

	if (func == F_MENU) {
	    pull->prev = NULL;
	    AddFuncButton (butt, i, mods, func, pull, (MenuItem*) 0);
	}
	else {
	    root = GetRoot (TWM_ROOT, NULLSTR, NULLSTR);
	    item = AddToMenu (root, "x", Action, NULL, func, NULLSTR, NULLSTR);
	    AddFuncButton (butt, i, mods, func, (MenuRoot*) 0, item);
	}
    }

    Action = "";
    pull = NULL;
    cont = 0;
    mods_used |= mods;
    mods = 0;
}

static void GotKey(char *key, int func)
{
    int i;

    for (i = 0; i < NUM_CONTEXTS; i++)
    {
	if ((cont & (1 << i)) == 0)
	  continue;

	if (func == F_MENU) {
	    pull->prev = NULL;
	    if (!AddFuncKey (key, i, mods, func, pull, Name, Action)) break;
	}
	else
	if (!AddFuncKey(key, i, mods, func, (MenuRoot*) 0, Name, Action))
	  break;
    }

    Action = "";
    pull = NULL;
    cont = 0;
    mods_used |= mods;
    mods = 0;
}


static void GotTitleButton (char *bitmapname, int func, Bool rightside)
{
    if (!CreateTitleButton (bitmapname, func, Action, pull, rightside, True)) {
	twmrc_error_prefix();
	fprintf (stderr,
		 "unable to create %s titlebutton \"%s\"\n",
		 rightside ? "right" : "left", bitmapname);
    }
    Action = "";
    pull = NULL;
}

static Bool CheckWarpScreenArg (register char *s)
{
    XmuCopyISOLatin1Lowered (s, s);

    if (strcmp (s,  WARPSCREEN_NEXT) == 0 ||
	strcmp (s,  WARPSCREEN_PREV) == 0 ||
	strcmp (s,  WARPSCREEN_BACK) == 0)
      return True;

    for (; *s && Isascii(*s) && Isdigit(*s); s++) ; /* SUPPRESS 530 */
    return (*s ? False : True);
}


static Bool CheckWarpRingArg (register char *s)
{
    XmuCopyISOLatin1Lowered (s, s);

    if (strcmp (s,  WARPSCREEN_NEXT) == 0 ||
	strcmp (s,  WARPSCREEN_PREV) == 0)
      return True;

    return False;
}


static Bool CheckColormapArg (register char *s)
{
    XmuCopyISOLatin1Lowered (s, s);

    if (strcmp (s, COLORMAP_NEXT) == 0 ||
	strcmp (s, COLORMAP_PREV) == 0 ||
	strcmp (s, COLORMAP_DEFAULT) == 0)
      return True;

    return False;
}


void twmrc_error_prefix (void)
{
    fprintf (stderr, "%s:  line %d:  ", ProgramName, twmrc_lineno);
}
#line 1892 "gram.tab.c"

#if YYDEBUG
#include <stdio.h>		/* needed for printf */
#endif

#include <stdlib.h>	/* needed for malloc, etc */
#include <string.h>	/* needed for memset */

/* allocate initial stack or double stack size, up to YYMAXDEPTH */
static int yygrowstack(YYSTACKDATA *data)
{
    int i;
    unsigned newsize;
    YYINT *newss;
    YYSTYPE *newvs;

    if ((newsize = data->stacksize) == 0)
        newsize = YYINITSTACKSIZE;
    else if (newsize >= YYMAXDEPTH)
        return YYENOMEM;
    else if ((newsize *= 2) > YYMAXDEPTH)
        newsize = YYMAXDEPTH;

    i = (int) (data->s_mark - data->s_base);
    newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
    if (newss == 0)
        return YYENOMEM;

    data->s_base = newss;
    data->s_mark = newss + i;

    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
    if (newvs == 0)
        return YYENOMEM;

    data->l_base = newvs;
    data->l_mark = newvs + i;

    data->stacksize = newsize;
    data->s_last = data->s_base + newsize - 1;
    return 0;
}

#if YYPURE || defined(YY_NO_LEAKS)
static void yyfreestack(YYSTACKDATA *data)
{
    free(data->s_base);
    free(data->l_base);
    memset(data, 0, sizeof(*data));
}
#else
#define yyfreestack(data) /* nothing */
#endif

#define YYABORT  goto yyabort
#define YYREJECT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR  goto yyerrlab

int
YYPARSE_DECL()
{
    int yym, yyn, yystate;
#if YYDEBUG
    const char *yys;

    if ((yys = getenv("YYDEBUG")) != 0)
    {
        yyn = *yys;
        if (yyn >= '0' && yyn <= '9')
            yydebug = yyn - '0';
    }
#endif

    yynerrs = 0;
    yyerrflag = 0;
    yychar = YYEMPTY;
    yystate = 0;

#if YYPURE
    memset(&yystack, 0, sizeof(yystack));
#endif

    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    yystack.s_mark = yystack.s_base;
    yystack.l_mark = yystack.l_base;
    yystate = 0;
    *yystack.s_mark = 0;

yyloop:
    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
    if (yychar < 0)
    {
        if ((yychar = YYLEX) < 0) yychar = YYEOF;
#if YYDEBUG
        if (yydebug)
        {
            yys = yyname[YYTRANSLATE(yychar)];
            printf("%sdebug: state %d, reading %d (%s)\n",
                    YYPREFIX, yystate, yychar, yys);
        }
#endif
    }
    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
#if YYDEBUG
        if (yydebug)
            printf("%sdebug: state %d, shifting to state %d\n",
                    YYPREFIX, yystate, yytable[yyn]);
#endif
        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
        {
            goto yyoverflow;
        }
        yystate = yytable[yyn];
        *++yystack.s_mark = yytable[yyn];
        *++yystack.l_mark = yylval;
        yychar = YYEMPTY;
        if (yyerrflag > 0)  --yyerrflag;
        goto yyloop;
    }
    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
        yyn = yytable[yyn];
        goto yyreduce;
    }
    if (yyerrflag) goto yyinrecovery;

    YYERROR_CALL("syntax error");

    goto yyerrlab;

yyerrlab:
    ++yynerrs;

yyinrecovery:
    if (yyerrflag < 3)
    {
        yyerrflag = 3;
        for (;;)
        {
            if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 &&
                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
            {
#if YYDEBUG
                if (yydebug)
                    printf("%sdebug: state %d, error recovery shifting\
 to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
#endif
                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
                {
                    goto yyoverflow;
                }
                yystate = yytable[yyn];
                *++yystack.s_mark = yytable[yyn];
                *++yystack.l_mark = yylval;
                goto yyloop;
            }
            else
            {
#if YYDEBUG
                if (yydebug)
                    printf("%sdebug: error recovery discarding state %d\n",
                            YYPREFIX, *yystack.s_mark);
#endif
                if (yystack.s_mark <= yystack.s_base) goto yyabort;
                --yystack.s_mark;
                --yystack.l_mark;
            }
        }
    }
    else
    {
        if (yychar == YYEOF) goto yyabort;
#if YYDEBUG
        if (yydebug)
        {
            yys = yyname[YYTRANSLATE(yychar)];
            printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
                    YYPREFIX, yystate, yychar, yys);
        }
#endif
        yychar = YYEMPTY;
        goto yyloop;
    }

yyreduce:
#if YYDEBUG
    if (yydebug)
        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
                YYPREFIX, yystate, yyn, yyrule[yyn]);
#endif
    yym = yylen[yyn];
    if (yym)
        yyval = yystack.l_mark[1-yym];
    else
        memset(&yyval, 0, sizeof yyval);
    switch (yyn)
    {
case 9:
#line 167 "gram.y"
	{
		      (void) AddIconRegion(yystack.l_mark[-4].ptr, yystack.l_mark[-3].num, yystack.l_mark[-2].num, yystack.l_mark[-1].num, yystack.l_mark[0].num, "undef", "undef", "undef");
		  }
break;
case 10:
#line 170 "gram.y"
	{
		      (void) AddIconRegion(yystack.l_mark[-5].ptr, yystack.l_mark[-4].num, yystack.l_mark[-3].num, yystack.l_mark[-2].num, yystack.l_mark[-1].num, yystack.l_mark[0].ptr, "undef", "undef");
		  }
break;
case 11:
#line 173 "gram.y"
	{
		      (void) AddIconRegion(yystack.l_mark[-6].ptr, yystack.l_mark[-5].num, yystack.l_mark[-4].num, yystack.l_mark[-3].num, yystack.l_mark[-2].num, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr, "undef");
		  }
break;
case 12:
#line 176 "gram.y"
	{
		      (void) AddIconRegion(yystack.l_mark[-7].ptr, yystack.l_mark[-6].num, yystack.l_mark[-5].num, yystack.l_mark[-4].num, yystack.l_mark[-3].num, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr);
		  }
break;
case 13:
#line 179 "gram.y"
	{
		      list = AddIconRegion(yystack.l_mark[-4].ptr, yystack.l_mark[-3].num, yystack.l_mark[-2].num, yystack.l_mark[-1].num, yystack.l_mark[0].num, "undef", "undef", "undef");
		  }
break;
case 15:
#line 183 "gram.y"
	{
		      list = AddIconRegion(yystack.l_mark[-5].ptr, yystack.l_mark[-4].num, yystack.l_mark[-3].num, yystack.l_mark[-2].num, yystack.l_mark[-1].num, yystack.l_mark[0].ptr, "undef", "undef");
		  }
break;
case 17:
#line 187 "gram.y"
	{
		      list = AddIconRegion(yystack.l_mark[-6].ptr, yystack.l_mark[-5].num, yystack.l_mark[-4].num, yystack.l_mark[-3].num, yystack.l_mark[-2].num, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr, "undef");
		  }
break;
case 19:
#line 191 "gram.y"
	{
		      list = AddIconRegion(yystack.l_mark[-7].ptr, yystack.l_mark[-6].num, yystack.l_mark[-5].num, yystack.l_mark[-4].num, yystack.l_mark[-3].num, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr);
		  }
break;
case 21:
#line 196 "gram.y"
	{
		      list = AddWindowRegion (yystack.l_mark[-2].ptr, yystack.l_mark[-1].num, yystack.l_mark[0].num);
		  }
break;
case 23:
#line 201 "gram.y"
	{
		      list = addWindowBox (yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr);
		  }
break;
case 25:
#line 206 "gram.y"
	{ if (Scr->FirstTime)
						  {
						    Scr->iconmgr->geometry= (char*)yystack.l_mark[-1].ptr;
						    Scr->iconmgr->columns=yystack.l_mark[0].num;
						  }
						}
break;
case 26:
#line 212 "gram.y"
	{ if (Scr->FirstTime)
						    Scr->iconmgr->geometry = (char*)yystack.l_mark[0].ptr;
						}
break;
case 27:
#line 215 "gram.y"
	{ if (Scr->FirstTime)
				{
				    Scr->workSpaceMgr.geometry= (char*)yystack.l_mark[-1].ptr;
				    Scr->workSpaceMgr.columns=yystack.l_mark[0].num;
				}
						}
break;
case 28:
#line 221 "gram.y"
	{ if (Scr->FirstTime)
				    Scr->workSpaceMgr.geometry = (char*)yystack.l_mark[0].ptr;
						}
break;
case 29:
#line 224 "gram.y"
	{}
break;
case 31:
#line 227 "gram.y"
	{}
break;
case 33:
#line 230 "gram.y"
	{ if (Scr->FirstTime)
					  {
						Scr->DoZoom = TRUE;
						Scr->ZoomCount = yystack.l_mark[0].num;
					  }
					}
break;
case 34:
#line 236 "gram.y"
	{ if (Scr->FirstTime)
						Scr->DoZoom = TRUE; }
break;
case 35:
#line 238 "gram.y"
	{}
break;
case 36:
#line 239 "gram.y"
	{}
break;
case 37:
#line 240 "gram.y"
	{ list = &Scr->IconifyByUn; }
break;
case 39:
#line 242 "gram.y"
	{ if (Scr->FirstTime)
		    Scr->IconifyByUnmapping = TRUE; }
break;
case 40:
#line 245 "gram.y"
	{ list = &Scr->OpaqueMoveList; }
break;
case 42:
#line 247 "gram.y"
	{ if (Scr->FirstTime) Scr->DoOpaqueMove = TRUE; }
break;
case 43:
#line 248 "gram.y"
	{ list = &Scr->NoOpaqueMoveList; }
break;
case 45:
#line 250 "gram.y"
	{ if (Scr->FirstTime) Scr->DoOpaqueMove = FALSE; }
break;
case 46:
#line 251 "gram.y"
	{ list = &Scr->OpaqueMoveList; }
break;
case 48:
#line 253 "gram.y"
	{ if (Scr->FirstTime) Scr->DoOpaqueResize = TRUE; }
break;
case 49:
#line 254 "gram.y"
	{ list = &Scr->NoOpaqueResizeList; }
break;
case 51:
#line 256 "gram.y"
	{ if (Scr->FirstTime) Scr->DoOpaqueResize = FALSE; }
break;
case 52:
#line 258 "gram.y"
	{
					  GotTitleButton (yystack.l_mark[-2].ptr, yystack.l_mark[0].num, False);
					}
break;
case 53:
#line 261 "gram.y"
	{
					  GotTitleButton (yystack.l_mark[-2].ptr, yystack.l_mark[0].num, True);
					}
break;
case 54:
#line 264 "gram.y"
	{ CreateTitleButton(yystack.l_mark[0].ptr, 0, NULL, NULL, FALSE, TRUE); }
break;
case 56:
#line 266 "gram.y"
	{ CreateTitleButton(yystack.l_mark[0].ptr, 0, NULL, NULL, TRUE, TRUE); }
break;
case 58:
#line 268 "gram.y"
	{
		    root = GetRoot(yystack.l_mark[0].ptr, NULLSTR, NULLSTR);
		    AddFuncButton (yystack.l_mark[-1].num, C_ROOT, 0, F_MENU, root, (MenuItem*) 0);
		}
break;
case 59:
#line 272 "gram.y"
	{
			if (yystack.l_mark[0].num == F_MENU) {
			    pull->prev = NULL;
			    AddFuncButton (yystack.l_mark[-1].num, C_ROOT, 0, yystack.l_mark[0].num, pull, (MenuItem*) 0);
			}
			else {
			    MenuItem *item;

			    root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR);
			    item = AddToMenu (root, "x", Action,
					NULL, yystack.l_mark[0].num, NULLSTR, NULLSTR);
			    AddFuncButton (yystack.l_mark[-1].num, C_ROOT, 0, yystack.l_mark[0].num, (MenuRoot*) 0, item);
			}
			Action = "";
			pull = NULL;
		}
break;
case 60:
#line 288 "gram.y"
	{ GotKey(yystack.l_mark[-1].ptr, yystack.l_mark[0].num); }
break;
case 61:
#line 289 "gram.y"
	{ GotButton(yystack.l_mark[-1].num, yystack.l_mark[0].num); }
break;
case 62:
#line 291 "gram.y"
	{ list = &Scr->DontIconify; }
break;
case 64:
#line 293 "gram.y"
	{}
break;
case 66:
#line 295 "gram.y"
	{}
break;
case 67:
#line 295 "gram.y"
	{ Scr->IgnoreModifier = mods; mods = 0; }
break;
case 69:
#line 296 "gram.y"
	{ list = &Scr->OccupyAll; }
break;
case 71:
#line 298 "gram.y"
	{ list = &Scr->IconMenuDontShow; }
break;
case 73:
#line 300 "gram.y"
	{}
break;
case 75:
#line 302 "gram.y"
	{ list = &Scr->UnmapByMovingFarAway; }
break;
case 77:
#line 304 "gram.y"
	{ list = &Scr->AutoSqueeze; }
break;
case 79:
#line 306 "gram.y"
	{ list = &Scr->StartSqueezed; }
break;
case 81:
#line 308 "gram.y"
	{ Scr->AlwaysSqueezeToGravity = TRUE; }
break;
case 82:
#line 309 "gram.y"
	{ list = &Scr->AlwaysSqueezeToGravityL; }
break;
case 84:
#line 311 "gram.y"
	{ list = &Scr->DontSetInactive; }
break;
case 86:
#line 313 "gram.y"
	{ list = &Scr->IconMgrNoShow; }
break;
case 88:
#line 315 "gram.y"
	{ Scr->IconManagerDontShow = TRUE; }
break;
case 89:
#line 316 "gram.y"
	{ list = &Scr->IconMgrs; }
break;
case 91:
#line 318 "gram.y"
	{ list = &Scr->IconMgrShow; }
break;
case 93:
#line 320 "gram.y"
	{ list = &Scr->NoTitleHighlight; }
break;
case 95:
#line 322 "gram.y"
	{ if (Scr->FirstTime)
						Scr->TitleHighlight = FALSE; }
break;
case 96:
#line 324 "gram.y"
	{ list = &Scr->NoHighlight; }
break;
case 98:
#line 326 "gram.y"
	{ if (Scr->FirstTime)
						Scr->Highlight = FALSE; }
break;
case 99:
#line 328 "gram.y"
	{ list = &Scr->AlwaysOnTopL; }
break;
case 101:
#line 330 "gram.y"
	{ list = &Scr->NoStackModeL; }
break;
case 103:
#line 332 "gram.y"
	{ if (Scr->FirstTime)
						Scr->StackMode = FALSE; }
break;
case 104:
#line 334 "gram.y"
	{ list = &Scr->NoBorder; }
break;
case 106:
#line 336 "gram.y"
	{ list = &Scr->DontSave; }
break;
case 108:
#line 338 "gram.y"
	{ list = &Scr->NoIconTitle; }
break;
case 110:
#line 340 "gram.y"
	{ if (Scr->FirstTime)
						Scr->NoIconTitlebar = TRUE; }
break;
case 111:
#line 342 "gram.y"
	{ list = &Scr->NoTitle; }
break;
case 113:
#line 344 "gram.y"
	{ if (Scr->FirstTime)
						Scr->NoTitlebar = TRUE; }
break;
case 114:
#line 346 "gram.y"
	{ list = &Scr->IgnoreTransientL; }
break;
case 116:
#line 348 "gram.y"
	{ donttoggleworkspacemanagerstate = TRUE; }
break;
case 117:
#line 349 "gram.y"
	{ list = &Scr->MakeTitle; }
break;
case 119:
#line 351 "gram.y"
	{ list = &Scr->StartIconified; }
break;
case 121:
#line 353 "gram.y"
	{ list = &Scr->AutoRaise; }
break;
case 123:
#line 355 "gram.y"
	{ Scr->AutoRaiseDefault = TRUE; }
break;
case 124:
#line 356 "gram.y"
	{ list = &Scr->AutoLower; }
break;
case 126:
#line 358 "gram.y"
	{ Scr->AutoLowerDefault = TRUE; }
break;
case 127:
#line 359 "gram.y"
	{
					root = GetRoot(yystack.l_mark[-5].ptr, yystack.l_mark[-3].ptr, yystack.l_mark[-1].ptr); }
break;
case 128:
#line 361 "gram.y"
	{ root->real_menu = TRUE;}
break;
case 129:
#line 362 "gram.y"
	{ root = GetRoot(yystack.l_mark[0].ptr, NULLSTR, NULLSTR); }
break;
case 130:
#line 363 "gram.y"
	{ root->real_menu = TRUE; }
break;
case 131:
#line 364 "gram.y"
	{ root = GetRoot(yystack.l_mark[0].ptr, NULLSTR, NULLSTR); }
break;
case 133:
#line 366 "gram.y"
	{ list = &Scr->IconNames; }
break;
case 135:
#line 368 "gram.y"
	{ color = COLOR; }
break;
case 137:
#line 370 "gram.y"
	{}
break;
case 139:
#line 372 "gram.y"
	{ color = MONOCHROME; }
break;
case 141:
#line 374 "gram.y"
	{ Scr->DefaultFunction.func = yystack.l_mark[0].num;
					  if (yystack.l_mark[0].num == F_MENU)
					  {
					    pull->prev = NULL;
					    Scr->DefaultFunction.menu = pull;
					  }
					  else
					  {
					    root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR);
					    Scr->DefaultFunction.item =
						AddToMenu(root,"x",Action,
							  NULL,yystack.l_mark[0].num, NULLSTR, NULLSTR);
					  }
					  Action = "";
					  pull = NULL;
					}
break;
case 142:
#line 390 "gram.y"
	{ Scr->WindowFunction.func = yystack.l_mark[0].num;
					   root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR);
					   Scr->WindowFunction.item =
						AddToMenu(root,"x",Action,
							  NULL,yystack.l_mark[0].num, NULLSTR, NULLSTR);
					   Action = "";
					   pull = NULL;
					}
break;
case 143:
#line 398 "gram.y"
	{ Scr->ChangeWorkspaceFunction.func = yystack.l_mark[0].num;
					   root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR);
					   Scr->ChangeWorkspaceFunction.item =
						AddToMenu(root,"x",Action,
							  NULL,yystack.l_mark[0].num, NULLSTR, NULLSTR);
					   Action = "";
					   pull = NULL;
					}
break;
case 144:
#line 406 "gram.y"
	{ Scr->DeIconifyFunction.func = yystack.l_mark[0].num;
					   root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR);
					   Scr->DeIconifyFunction.item =
						AddToMenu(root,"x",Action,
							  NULL,yystack.l_mark[0].num, NULLSTR, NULLSTR);
					   Action = "";
					   pull = NULL;
					}
break;
case 145:
#line 414 "gram.y"
	{ Scr->IconifyFunction.func = yystack.l_mark[0].num;
					   root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR);
					   Scr->IconifyFunction.item =
						AddToMenu(root,"x",Action,
							  NULL,yystack.l_mark[0].num, NULLSTR, NULLSTR);
					   Action = "";
					   pull = NULL;
					}
break;
case 146:
#line 422 "gram.y"
	{ list = &Scr->WarpCursorL; }
break;
case 148:
#line 424 "gram.y"
	{ if (Scr->FirstTime)
					    Scr->WarpCursor = TRUE; }
break;
case 149:
#line 426 "gram.y"
	{ list = &Scr->WindowRingL; }
break;
case 151:
#line 428 "gram.y"
	{ Scr->WindowRingAll = TRUE; }
break;
case 152:
#line 429 "gram.y"
	{ if (!Scr->WindowRingL)
					    Scr->WindowRingAll = TRUE;
					  list = &Scr->WindowRingExcludeL; }
break;
case 154:
#line 433 "gram.y"
	{  }
break;
case 156:
#line 435 "gram.y"
	{ }
break;
case 158:
#line 439 "gram.y"
	{ if (!do_single_keyword (yystack.l_mark[0].num)) {
					    twmrc_error_prefix();
					    fprintf (stderr,
					"unknown singleton keyword %d\n",
						     yystack.l_mark[0].num);
					    ParseError = 1;
					  }
					}
break;
case 159:
#line 449 "gram.y"
	{ if (!do_string_keyword (yystack.l_mark[-1].num, yystack.l_mark[0].ptr)) {
					    twmrc_error_prefix();
					    fprintf (stderr,
				"unknown string keyword %d (value \"%s\")\n",
						     yystack.l_mark[-1].num, yystack.l_mark[0].ptr);
					    ParseError = 1;
					  }
					}
break;
case 160:
#line 457 "gram.y"
	{ if (!do_string_keyword (yystack.l_mark[0].num, defstring)) {
					    twmrc_error_prefix();
					    fprintf (stderr,
				"unknown string keyword %d (no value)\n",
						     yystack.l_mark[0].num);
					    ParseError = 1;
					  }
					}
break;
case 161:
#line 468 "gram.y"
	{ if (!do_string_string_keyword (yystack.l_mark[-2].num, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr)) {
					    twmrc_error_prefix();
					    fprintf (stderr,
				"unknown strings keyword %d (value \"%s\" and \"%s\")\n",
						     yystack.l_mark[-2].num, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr);
					    ParseError = 1;
					  }
					}
break;
case 162:
#line 476 "gram.y"
	{ if (!do_string_string_keyword (yystack.l_mark[-1].num, yystack.l_mark[0].ptr, defstring)) {
					    twmrc_error_prefix();
					    fprintf (stderr,
				"unknown string keyword %d (value \"%s\")\n",
						     yystack.l_mark[-1].num, yystack.l_mark[0].ptr);
					    ParseError = 1;
					  }
					}
break;
case 163:
#line 484 "gram.y"
	{ if (!do_string_string_keyword (yystack.l_mark[0].num, defstring, defstring)) {
					    twmrc_error_prefix();
					    fprintf (stderr,
				"unknown string keyword %d (no value)\n",
						     yystack.l_mark[0].num);
					    ParseError = 1;
					  }
					}
break;
case 164:
#line 494 "gram.y"
	{ if (!do_number_keyword (yystack.l_mark[-1].num, yystack.l_mark[0].num)) {
					    twmrc_error_prefix();
					    fprintf (stderr,
				"unknown numeric keyword %d (value %d)\n",
						     yystack.l_mark[-1].num, yystack.l_mark[0].num);
					    ParseError = 1;
					  }
					}
break;
case 165:
#line 506 "gram.y"
	{ yyval.num = yystack.l_mark[0].num; }
break;
case 166:
#line 509 "gram.y"
	{ yyval.num = yystack.l_mark[0].num; }
break;
case 167:
#line 512 "gram.y"
	{ yyval.num = yystack.l_mark[0].num; }
break;
case 170:
#line 519 "gram.y"
	{ mods |= Mod1Mask; }
break;
case 171:
#line 520 "gram.y"
	{ mods |= ShiftMask; }
break;
case 172:
#line 521 "gram.y"
	{ mods |= LockMask; }
break;
case 173:
#line 522 "gram.y"
	{ mods |= ControlMask; }
break;
case 174:
#line 523 "gram.y"
	{ if (yystack.l_mark[0].num < 1 || yystack.l_mark[0].num > 5) {
					     twmrc_error_prefix();
					     fprintf (stderr,
				"bad modifier number (%d), must be 1-5\n",
						      yystack.l_mark[0].num);
					     ParseError = 1;
					  } else {
					     mods |= (Alt1Mask << (yystack.l_mark[0].num - 1));
					  }
					}
break;
case 175:
#line 533 "gram.y"
	{ if (yystack.l_mark[0].num < 1 || yystack.l_mark[0].num > 5) {
					     twmrc_error_prefix();
					     fprintf (stderr,
				"bad modifier number (%d), must be 1-5\n",
						      yystack.l_mark[0].num);
					     ParseError = 1;
					  } else {
					     mods |= (Mod1Mask << (yystack.l_mark[0].num - 1));
					  }
					}
break;
case 176:
#line 543 "gram.y"
	{ }
break;
case 179:
#line 550 "gram.y"
	{ cont |= C_WINDOW_BIT; }
break;
case 180:
#line 551 "gram.y"
	{ cont |= C_TITLE_BIT; }
break;
case 181:
#line 552 "gram.y"
	{ cont |= C_ICON_BIT; }
break;
case 182:
#line 553 "gram.y"
	{ cont |= C_ROOT_BIT; }
break;
case 183:
#line 554 "gram.y"
	{ cont |= C_FRAME_BIT; }
break;
case 184:
#line 555 "gram.y"
	{ cont |= C_WORKSPACE_BIT; }
break;
case 185:
#line 556 "gram.y"
	{ cont |= C_ICONMGR_BIT; }
break;
case 186:
#line 557 "gram.y"
	{ cont |= C_ICONMGR_BIT; }
break;
case 187:
#line 558 "gram.y"
	{ cont |= C_ALTER_BIT; }
break;
case 188:
#line 559 "gram.y"
	{ cont |= C_ALL_BITS; }
break;
case 189:
#line 560 "gram.y"
	{  }
break;
case 192:
#line 567 "gram.y"
	{ cont |= C_WINDOW_BIT; }
break;
case 193:
#line 568 "gram.y"
	{ cont |= C_TITLE_BIT; }
break;
case 194:
#line 569 "gram.y"
	{ cont |= C_ICON_BIT; }
break;
case 195:
#line 570 "gram.y"
	{ cont |= C_ROOT_BIT; }
break;
case 196:
#line 571 "gram.y"
	{ cont |= C_FRAME_BIT; }
break;
case 197:
#line 572 "gram.y"
	{ cont |= C_WORKSPACE_BIT; }
break;
case 198:
#line 573 "gram.y"
	{ cont |= C_ICONMGR_BIT; }
break;
case 199:
#line 574 "gram.y"
	{ cont |= C_ICONMGR_BIT; }
break;
case 200:
#line 575 "gram.y"
	{ cont |= C_ALL_BITS; }
break;
case 201:
#line 576 "gram.y"
	{ cont |= C_ALTER_BIT; }
break;
case 202:
#line 577 "gram.y"
	{ }
break;
case 203:
#line 578 "gram.y"
	{ Name = (char*)yystack.l_mark[0].ptr; cont |= C_NAME_BIT; }
break;
case 204:
#line 582 "gram.y"
	{}
break;
case 207:
#line 589 "gram.y"
	{ ModifyCurrentTB(yystack.l_mark[-1].num, mods, yystack.l_mark[0].num, Action, pull); mods = 0;}
break;
case 208:
#line 590 "gram.y"
	{ ModifyCurrentTB(yystack.l_mark[-2].num, 0, yystack.l_mark[0].num, Action, pull);}
break;
case 209:
#line 592 "gram.y"
	{ ModifyCurrentTB(yystack.l_mark[-2].num, 0, yystack.l_mark[0].num, Action, pull);}
break;
case 210:
#line 596 "gram.y"
	{}
break;
case 213:
#line 603 "gram.y"
	{ SetHighlightPixmap (yystack.l_mark[0].ptr); }
break;
case 214:
#line 607 "gram.y"
	{}
break;
case 217:
#line 614 "gram.y"
	{
			NewBitmapCursor(&Scr->FrameCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); }
break;
case 218:
#line 616 "gram.y"
	{
			NewFontCursor(&Scr->FrameCursor, yystack.l_mark[0].ptr); }
break;
case 219:
#line 618 "gram.y"
	{
			NewBitmapCursor(&Scr->TitleCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); }
break;
case 220:
#line 620 "gram.y"
	{
			NewFontCursor(&Scr->TitleCursor, yystack.l_mark[0].ptr); }
break;
case 221:
#line 622 "gram.y"
	{
			NewBitmapCursor(&Scr->IconCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); }
break;
case 222:
#line 624 "gram.y"
	{
			NewFontCursor(&Scr->IconCursor, yystack.l_mark[0].ptr); }
break;
case 223:
#line 626 "gram.y"
	{
			NewBitmapCursor(&Scr->IconMgrCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); }
break;
case 224:
#line 628 "gram.y"
	{
			NewFontCursor(&Scr->IconMgrCursor, yystack.l_mark[0].ptr); }
break;
case 225:
#line 630 "gram.y"
	{
			NewBitmapCursor(&Scr->ButtonCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); }
break;
case 226:
#line 632 "gram.y"
	{
			NewFontCursor(&Scr->ButtonCursor, yystack.l_mark[0].ptr); }
break;
case 227:
#line 634 "gram.y"
	{
			NewBitmapCursor(&Scr->MoveCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); }
break;
case 228:
#line 636 "gram.y"
	{
			NewFontCursor(&Scr->MoveCursor, yystack.l_mark[0].ptr); }
break;
case 229:
#line 638 "gram.y"
	{
			NewBitmapCursor(&Scr->ResizeCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); }
break;
case 230:
#line 640 "gram.y"
	{
			NewFontCursor(&Scr->ResizeCursor, yystack.l_mark[0].ptr); }
break;
case 231:
#line 642 "gram.y"
	{
			NewBitmapCursor(&Scr->WaitCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); }
break;
case 232:
#line 644 "gram.y"
	{
			NewFontCursor(&Scr->WaitCursor, yystack.l_mark[0].ptr); }
break;
case 233:
#line 646 "gram.y"
	{
			NewBitmapCursor(&Scr->MenuCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); }
break;
case 234:
#line 648 "gram.y"
	{
			NewFontCursor(&Scr->MenuCursor, yystack.l_mark[0].ptr); }
break;
case 235:
#line 650 "gram.y"
	{
			NewBitmapCursor(&Scr->SelectCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); }
break;
case 236:
#line 652 "gram.y"
	{
			NewFontCursor(&Scr->SelectCursor, yystack.l_mark[0].ptr); }
break;
case 237:
#line 654 "gram.y"
	{
			NewBitmapCursor(&Scr->DestroyCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); }
break;
case 238:
#line 656 "gram.y"
	{
			NewFontCursor(&Scr->DestroyCursor, yystack.l_mark[0].ptr); }
break;
case 239:
#line 660 "gram.y"
	{}
break;
case 242:
#line 668 "gram.y"
	{ if (!do_colorlist_keyword (yystack.l_mark[-1].num, color,
								     yystack.l_mark[0].ptr)) {
					    twmrc_error_prefix();
					    fprintf (stderr,
			"unhandled list color keyword %d (string \"%s\")\n",
						     yystack.l_mark[-1].num, yystack.l_mark[0].ptr);
					    ParseError = 1;
					  }
					}
break;
case 243:
#line 677 "gram.y"
	{ list = do_colorlist_keyword(yystack.l_mark[-1].num,color,
								      yystack.l_mark[0].ptr);
					  if (!list) {
					    twmrc_error_prefix();
					    fprintf (stderr,
			"unhandled color list keyword %d (string \"%s\")\n",
						     yystack.l_mark[-1].num, yystack.l_mark[0].ptr);
					    ParseError = 1;
					  }
					}
break;
case 245:
#line 688 "gram.y"
	{ if (!do_color_keyword (yystack.l_mark[-1].num, color,
								 yystack.l_mark[0].ptr)) {
					    twmrc_error_prefix();
					    fprintf (stderr,
			"unhandled color keyword %d (string \"%s\")\n",
						     yystack.l_mark[-1].num, yystack.l_mark[0].ptr);
					    ParseError = 1;
					  }
					}
break;
case 246:
#line 699 "gram.y"
	{}
break;
case 249:
#line 706 "gram.y"
	{ do_string_savecolor(color, yystack.l_mark[0].ptr); }
break;
case 250:
#line 707 "gram.y"
	{ do_var_savecolor(yystack.l_mark[0].num); }
break;
case 251:
#line 710 "gram.y"
	{}
break;
case 254:
#line 717 "gram.y"
	{ if (Scr->FirstTime &&
					      color == Scr->Monochrome)
					    AddToList(list, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); }
break;
case 255:
#line 722 "gram.y"
	{}
break;
case 258:
#line 729 "gram.y"
	{ AddToList (&Scr->WindowGeometries, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); }
break;
case 259:
#line 732 "gram.y"
	{}
break;
case 262:
#line 739 "gram.y"
	{ AddToList (&Scr->VirtualScreens, yystack.l_mark[0].ptr, ""); }
break;
case 263:
#line 742 "gram.y"
	{
				    if (HasShape) Scr->SqueezeTitle = TRUE;
				}
break;
case 264:
#line 745 "gram.y"
	{ list = &Scr->SqueezeTitleL;
				  if (HasShape && Scr->SqueezeTitle == -1)
				    Scr->SqueezeTitle = TRUE;
				}
break;
case 266:
#line 750 "gram.y"
	{ Scr->SqueezeTitle = FALSE; }
break;
case 267:
#line 751 "gram.y"
	{ list = &Scr->DontSqueezeTitleL; }
break;
case 270:
#line 756 "gram.y"
	{
				if (Scr->FirstTime) {
				   do_squeeze_entry (list, yystack.l_mark[-3].ptr, yystack.l_mark[-2].num, yystack.l_mark[-1].num, yystack.l_mark[0].num);
				}
			}
break;
case 271:
#line 764 "gram.y"
	{}
break;
case 274:
#line 771 "gram.y"
	{ if (Scr->FirstTime)
					    AddToList(list, yystack.l_mark[-2].ptr, (char *)
						AllocateIconManager(yystack.l_mark[-2].ptr, NULLSTR,
							yystack.l_mark[-1].ptr,yystack.l_mark[0].num));
					}
break;
case 275:
#line 777 "gram.y"
	{ if (Scr->FirstTime)
					    AddToList(list, yystack.l_mark[-3].ptr, (char *)
						AllocateIconManager(yystack.l_mark[-3].ptr,yystack.l_mark[-2].ptr,
						yystack.l_mark[-1].ptr, yystack.l_mark[0].num));
					}
break;
case 276:
#line 784 "gram.y"
	{}
break;
case 279:
#line 791 "gram.y"
	{
			AddWorkSpace (yystack.l_mark[0].ptr, NULLSTR, NULLSTR, NULLSTR, NULLSTR, NULLSTR);
		}
break;
case 280:
#line 794 "gram.y"
	{
			curWorkSpc = (char*)yystack.l_mark[0].ptr;
		}
break;
case 282:
#line 800 "gram.y"
	{}
break;
case 285:
#line 807 "gram.y"
	{
			AddWorkSpace (curWorkSpc, yystack.l_mark[0].ptr, NULLSTR, NULLSTR, NULLSTR, NULLSTR);
		}
break;
case 286:
#line 810 "gram.y"
	{
			AddWorkSpace (curWorkSpc, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr, NULLSTR, NULLSTR, NULLSTR);
		}
break;
case 287:
#line 813 "gram.y"
	{
			AddWorkSpace (curWorkSpc, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr, NULLSTR, NULLSTR);
		}
break;
case 288:
#line 816 "gram.y"
	{
			AddWorkSpace (curWorkSpc, yystack.l_mark[-3].ptr, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr, NULLSTR);
		}
break;
case 289:
#line 819 "gram.y"
	{
			AddWorkSpace (curWorkSpc, yystack.l_mark[-4].ptr, yystack.l_mark[-3].ptr, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr);
		}
break;
case 290:
#line 824 "gram.y"
	{
		    WMapCreateCurrentBackGround (yystack.l_mark[-1].ptr, NULL, NULL, NULL);
		}
break;
case 291:
#line 827 "gram.y"
	{
		    WMapCreateCurrentBackGround (yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, NULL, NULL);
		}
break;
case 292:
#line 830 "gram.y"
	{
		    WMapCreateCurrentBackGround (yystack.l_mark[-3].ptr, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, NULL);
		}
break;
case 293:
#line 833 "gram.y"
	{
		    WMapCreateCurrentBackGround (yystack.l_mark[-4].ptr, yystack.l_mark[-3].ptr, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr);
		}
break;
case 294:
#line 838 "gram.y"
	{
		    WMapCreateDefaultBackGround (yystack.l_mark[-1].ptr, NULL, NULL, NULL);
		}
break;
case 295:
#line 841 "gram.y"
	{
		    WMapCreateDefaultBackGround (yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, NULL, NULL);
		}
break;
case 296:
#line 844 "gram.y"
	{
		    WMapCreateDefaultBackGround (yystack.l_mark[-3].ptr, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, NULL);
		}
break;
case 297:
#line 847 "gram.y"
	{
		    WMapCreateDefaultBackGround (yystack.l_mark[-4].ptr, yystack.l_mark[-3].ptr, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr);
		}
break;
case 298:
#line 852 "gram.y"
	{}
break;
case 301:
#line 859 "gram.y"
	{ if (Scr->FirstTime)
					    AddToList(list, yystack.l_mark[0].ptr, 0);
					}
break;
case 302:
#line 864 "gram.y"
	{}
break;
case 305:
#line 871 "gram.y"
	{client = (char*)yystack.l_mark[0].ptr;}
break;
case 307:
#line 873 "gram.y"
	{client = (char*)yystack.l_mark[0].ptr;}
break;
case 309:
#line 875 "gram.y"
	{workspace = (char*)yystack.l_mark[0].ptr;}
break;
case 311:
#line 879 "gram.y"
	{}
break;
case 314:
#line 886 "gram.y"
	{
				AddToClientsList (yystack.l_mark[0].ptr, client);
			  }
break;
case 315:
#line 891 "gram.y"
	{}
break;
case 318:
#line 898 "gram.y"
	{
				AddToClientsList (workspace, yystack.l_mark[0].ptr);
			  }
break;
case 319:
#line 903 "gram.y"
	{}
break;
case 322:
#line 910 "gram.y"
	{ if (Scr->FirstTime) AddToList(list, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); }
break;
case 323:
#line 913 "gram.y"
	{}
break;
case 326:
#line 920 "gram.y"
	{ AddToMenu(root, "", Action, NULL, yystack.l_mark[0].num,
						    NULLSTR, NULLSTR);
					  Action = "";
					}
break;
case 327:
#line 926 "gram.y"
	{lastmenuitem = (MenuItem*) 0;}
break;
case 330:
#line 933 "gram.y"
	{
			if (yystack.l_mark[0].num == F_SEPARATOR) {
			    if (lastmenuitem) lastmenuitem->separated = 1;
			}
			else {
			    lastmenuitem = AddToMenu(root, yystack.l_mark[-1].ptr, Action, pull, yystack.l_mark[0].num, NULLSTR, NULLSTR);
			    Action = "";
			    pull = NULL;
			}
		}
break;
case 331:
#line 943 "gram.y"
	{
			if (yystack.l_mark[0].num == F_SEPARATOR) {
			    if (lastmenuitem) lastmenuitem->separated = 1;
			}
			else {
			    lastmenuitem = AddToMenu(root, yystack.l_mark[-6].ptr, Action, pull, yystack.l_mark[0].num, yystack.l_mark[-4].ptr, yystack.l_mark[-2].ptr);
			    Action = "";
			    pull = NULL;
			}
		}
break;
case 332:
#line 955 "gram.y"
	{ yyval.num = yystack.l_mark[0].num; }
break;
case 333:
#line 956 "gram.y"
	{
				yyval.num = yystack.l_mark[-1].num;
				Action = (char*)yystack.l_mark[0].ptr;
				switch (yystack.l_mark[-1].num) {
				  case F_MENU:
				    pull = GetRoot (yystack.l_mark[0].ptr, NULLSTR,NULLSTR);
				    pull->prev = root;
				    break;
				  case F_WARPRING:
				    if (!CheckWarpRingArg (Action)) {
					twmrc_error_prefix();
					fprintf (stderr,
			"ignoring invalid f.warptoring argument \"%s\"\n",
						 Action);
					yyval.num = F_NOP;
				    }
				  case F_WARPTOSCREEN:
				    if (!CheckWarpScreenArg (Action)) {
					twmrc_error_prefix();
					fprintf (stderr,
			"ignoring invalid f.warptoscreen argument \"%s\"\n",
						 Action);
					yyval.num = F_NOP;
				    }
				    break;
				  case F_COLORMAP:
				    if (CheckColormapArg (Action)) {
					yyval.num = F_COLORMAP;
				    } else {
					twmrc_error_prefix();
					fprintf (stderr,
			"ignoring invalid f.colormap argument \"%s\"\n",
						 Action);
					yyval.num = F_NOP;
				    }
				    break;
				} /* end switch */
				   }
break;
case 334:
#line 997 "gram.y"
	{ yyval.num = yystack.l_mark[0].num; }
break;
case 335:
#line 998 "gram.y"
	{ yyval.num = yystack.l_mark[0].num; }
break;
case 336:
#line 999 "gram.y"
	{ yyval.num = -(yystack.l_mark[0].num); }
break;
case 337:
#line 1002 "gram.y"
	{ yyval.num = yystack.l_mark[0].num;
					  if (yystack.l_mark[0].num == 0)
						yyerror("bad button 0");

					  if (yystack.l_mark[0].num > MAX_BUTTONS)
					  {
						yyval.num = 0;
						yyerror("button number too large");
					  }
					}
break;
case 338:
#line 1014 "gram.y"
	{ ptr = (char *)malloc(strlen((char*)yystack.l_mark[0].ptr)+1);
					  strcpy(ptr, yystack.l_mark[0].ptr);
					  RemoveDQuote(ptr);
					  yyval.ptr = ptr;
					}
break;
case 339:
#line 1021 "gram.y"
	{ yyval.num = yystack.l_mark[0].num; }
break;
#line 3365 "gram.tab.c"
    }
    yystack.s_mark -= yym;
    yystate = *yystack.s_mark;
    yystack.l_mark -= yym;
    yym = yylhs[yyn];
    if (yystate == 0 && yym == 0)
    {
#if YYDEBUG
        if (yydebug)
            printf("%sdebug: after reduction, shifting from state 0 to\
 state %d\n", YYPREFIX, YYFINAL);
#endif
        yystate = YYFINAL;
        *++yystack.s_mark = YYFINAL;
        *++yystack.l_mark = yyval;
        if (yychar < 0)
        {
            if ((yychar = YYLEX) < 0) yychar = YYEOF;
#if YYDEBUG
            if (yydebug)
            {
                yys = yyname[YYTRANSLATE(yychar)];
                printf("%sdebug: state %d, reading %d (%s)\n",
                        YYPREFIX, YYFINAL, yychar, yys);
            }
#endif
        }
        if (yychar == YYEOF) goto yyaccept;
        goto yyloop;
    }
    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
        yystate = yytable[yyn];
    else
        yystate = yydgoto[yym];
#if YYDEBUG
    if (yydebug)
        printf("%sdebug: after reduction, shifting from state %d \
to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
#endif
    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
    {
        goto yyoverflow;
    }
    *++yystack.s_mark = (YYINT) yystate;
    *++yystack.l_mark = yyval;
    goto yyloop;

yyoverflow:
    YYERROR_CALL("yacc stack overflow");

yyabort:
    yyfreestack(&yystack);
    return (1);

yyaccept:
    yyfreestack(&yystack);
    return (0);
}
