blob: c32cfd98beb601d2f72ace41d48cfb69e01b011b [file] [log] [blame]
#include <config.h>
/* A Bison parser, made by GNU Bison 2.4.1. */
/* Skeleton implementation for Bison's Yacc-like parsers in C
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
under terms of your choice, so long as that work isn't itself a
parser generator using the skeleton or a modified version thereof
as a parser skeleton. Alternatively, if you modify or redistribute
the parser skeleton itself, you may (at your option) remove this
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
/* C LALR(1) parser skeleton written by Richard Stallman, by
simplifying the original so-called "semantic" parser. */
/* All symbols defined below should begin with yy or YY, to avoid
infringing on user name space. This should be done even for local
variables, as they might otherwise be expanded by user macros.
There are some unavoidable exceptions within include files to
define necessary library symbols; they are noted "INFRINGES ON
USER NAME SPACE" below. */
/* Identify Bison output. */
#define YYBISON 1
/* Bison version. */
#define YYBISON_VERSION "2.4.1"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
/* Pure parsers. */
#define YYPURE 0
/* Push parsers. */
#define YYPUSH 0
/* Pull parsers. */
#define YYPULL 1
/* Using locations. */
#define YYLSP_NEEDED 0
/* Copy the first part of user declarations. */
/* Line 189 of yacc.c */
#line 26 "src/p.y"
/*
* DESCRIPTION
* Simple context-free grammar for parsing the control file.
*
*/
#include "config.h"
#ifdef HAVE_STDIO_H
#include <stdio.h>
#endif
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#ifdef HAVE_ERRNO_H
#include <errno.h>
#endif
#ifdef HAVE_CTYPE_H
#include <ctype.h>
#endif
#ifdef HAVE_PWD_H
#include <pwd.h>
#endif
#ifdef HAVE_GRP_H
#include <grp.h>
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_TIME_H
#include <time.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_ASM_PARAM_H
#include <asm/param.h>
#endif
#ifdef HAVE_STRING_H
#include <string.h>
#endif
#ifdef HAVE_STRINGS_H
#include <strings.h>
#endif
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
#ifdef HAVE_SYSLOG_H
#include <syslog.h>
#endif
#ifndef HAVE_SOL_IP
#include <netinet/in_systm.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#endif
#ifdef HAVE_NETINET_IP_ICMP_H
#include <netinet/ip_icmp.h>
#endif
#ifdef HAVE_REGEX_H
#include <regex.h>
#endif
#include "net.h"
#include "monit.h"
#include "protocol.h"
#include "engine.h"
#include "alert.h"
#include "process.h"
#include "ssl.h"
#include "device.h"
// libmonit
#include "io/File.h"
/* ------------------------------------------------------------- Definitions */
struct IHavePrecedence {
int daemon;
int logfile;
int pidfile;
};
struct myrate {
unsigned count;
unsigned cycles;
};
/* yacc interface */
void yyerror(const char *,...);
void yyerror2(const char *,...);
void yywarning(const char *,...);
void yywarning2(const char *,...);
/* lexer interface */
int yylex(void);
extern FILE *yyin;
extern int lineno;
extern int arglineno;
extern char *yytext;
extern char *argyytext;
extern char *currentfile;
extern char *argcurrentfile;
extern int buffer_stack_ptr;
/* Local variables */
static int cfg_errflag = FALSE;
static Service_T tail = NULL;
static Service_T current = NULL;
static Request_T urlrequest = NULL;
static command_t command = NULL;
static command_t command1 = NULL;
static command_t command2 = NULL;
static Service_T depend_list = NULL;
static struct mygid gidset;
static struct myuid uidset;
static struct myprogram programset;
static struct myperm permset;
static struct mysize sizeset;
static struct myuptime uptimeset;
static struct mymatch matchset;
static struct myicmp icmpset;
static struct mymail mailset;
static struct myport portset;
static struct mymailserver mailserverset;
static struct myfilesystem filesystemset;
static struct myresource resourceset;
static struct mychecksum checksumset;
static struct mytimestamp timestampset;
static struct myactionrate actionrateset;
static struct IHavePrecedence ihp = {FALSE, FALSE, FALSE};
static struct myrate rate1 = {1, 1};
static struct myrate rate2 = {1, 1};
static char * htpasswd_file = NULL;
static int digesttype = DIGEST_CLEARTEXT;
static int hassystem = FALSE;
#define BITMAP_MAX (sizeof(long long) * 8)
/* -------------------------------------------------------------- Prototypes */
static void preparse();
static void postparse();
static void addservice(Service_T);
static void addmail(char *, Mail_T, Mail_T *);
static void createservice(int, char *, char *, int (*)(Service_T));
static void adddependant(char *);
static void addservicegroup(char *);
static void addport(Port_T);
static void addresource(Resource_T);
static void addtimestamp(Timestamp_T, int);
static void addactionrate(ActionRate_T);
static void addsize(Size_T);
static void adduptime(Uptime_T);
static void addfilesystem(Filesystem_T);
static void addicmp(Icmp_T);
static void addgeneric(Port_T, char*, char*);
static void addcommand(int, unsigned);
static void addargument(char *);
static void addmmonit(URL_T, int, int, char *);
static void addmailserver(MailServer_T);
static int addcredentials(char *, char *, int, int);
#ifdef HAVE_LIBPAM
static void addpamauth(char *, int);
#endif
static void addhtpasswdentry(char *, char *, int);
static uid_t get_uid(char *, uid_t);
static gid_t get_gid(char *, gid_t);
static void addchecksum(Checksum_T);
static void addperm(Perm_T);
static void addmatch(Match_T, int, int);
static void addmatchpath(Match_T, int);
static void addprogram(Program_T);
static void adduid(Uid_T);
static void addgid(Gid_T);
static void addeuid(uid_t);
static void addegid(gid_t);
static void addeventaction(EventAction_T *, int, int);
static void seteventaction(EventAction_T *, int, int);
static void prepare_urlrequest(URL_T U);
static void seturlrequest(int, char *);
static void setlogfile(char *);
static void setpidfile(char *);
static void reset_mailset();
static void reset_mailserverset();
static void reset_portset();
static void reset_resourceset();
static void reset_timestampset();
static void reset_actionrateset();
static void reset_sizeset();
static void reset_uptimeset();
static void reset_checksumset();
static void reset_permset();
static void reset_uidset();
static void reset_programset();
static void reset_gidset();
static void reset_filesystemset();
static void reset_icmpset();
static void reset_rateset();
static void check_name(char *);
static int check_perm(int);
static void check_hostname (char *);
static void check_exec(char *);
static int cleanup_hash_string(char *);
static void check_depend();
static void setsyslog(char *);
static command_t copycommand(command_t);
static int verifyMaxForward(int);
/* Line 189 of yacc.c */
#line 308 "src/y.tab.c"
/* Enabling traces. */
#ifndef YYDEBUG
# define YYDEBUG 1
#endif
/* Enabling verbose error messages. */
#ifdef YYERROR_VERBOSE
# undef YYERROR_VERBOSE
# define YYERROR_VERBOSE 1
#else
# define YYERROR_VERBOSE 0
#endif
/* Enabling the token table. */
#ifndef YYTOKEN_TABLE
# define YYTOKEN_TABLE 0
#endif
/* Tokens. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
/* Put the tokens into the symbol table, so that GDB and other debuggers
know about them. */
enum yytokentype {
IF = 258,
ELSE = 259,
THEN = 260,
OR = 261,
FAILED = 262,
SET = 263,
LOGFILE = 264,
FACILITY = 265,
DAEMON = 266,
SYSLOG = 267,
MAILSERVER = 268,
HTTPD = 269,
ALLOW = 270,
ADDRESS = 271,
INIT = 272,
READONLY = 273,
CLEARTEXT = 274,
MD5HASH = 275,
SHA1HASH = 276,
CRYPT = 277,
DELAY = 278,
PEMFILE = 279,
ENABLE = 280,
DISABLE = 281,
HTTPDSSL = 282,
CLIENTPEMFILE = 283,
ALLOWSELFCERTIFICATION = 284,
IDFILE = 285,
STATEFILE = 286,
SEND = 287,
EXPECT = 288,
EXPECTBUFFER = 289,
CYCLE = 290,
COUNT = 291,
REMINDER = 292,
PIDFILE = 293,
START = 294,
STOP = 295,
PATHTOK = 296,
HOST = 297,
HOSTNAME = 298,
PORT = 299,
TYPE = 300,
UDP = 301,
TCP = 302,
TCPSSL = 303,
PROTOCOL = 304,
CONNECTION = 305,
ALERT = 306,
NOALERT = 307,
MAILFORMAT = 308,
UNIXSOCKET = 309,
SIGNATURE = 310,
TIMEOUT = 311,
RETRY = 312,
RESTART = 313,
CHECKSUM = 314,
EVERY = 315,
NOTEVERY = 316,
DEFAULT = 317,
HTTP = 318,
APACHESTATUS = 319,
FTP = 320,
SMTP = 321,
POP = 322,
IMAP = 323,
CLAMAV = 324,
NNTP = 325,
NTP3 = 326,
MYSQL = 327,
DNS = 328,
SSH = 329,
DWP = 330,
LDAP2 = 331,
LDAP3 = 332,
RDATE = 333,
RSYNC = 334,
TNS = 335,
PGSQL = 336,
POSTFIXPOLICY = 337,
SIP = 338,
LMTP = 339,
GPS = 340,
RADIUS = 341,
MEMCACHE = 342,
STRING = 343,
PATH = 344,
MAILADDR = 345,
MAILFROM = 346,
MAILREPLYTO = 347,
MAILSUBJECT = 348,
MAILBODY = 349,
SERVICENAME = 350,
STRINGNAME = 351,
NUMBER = 352,
PERCENT = 353,
LOGLIMIT = 354,
CLOSELIMIT = 355,
DNSLIMIT = 356,
KEEPALIVELIMIT = 357,
REPLYLIMIT = 358,
REQUESTLIMIT = 359,
STARTLIMIT = 360,
WAITLIMIT = 361,
GRACEFULLIMIT = 362,
CLEANUPLIMIT = 363,
REAL = 364,
CHECKPROC = 365,
CHECKFILESYS = 366,
CHECKFILE = 367,
CHECKDIR = 368,
CHECKHOST = 369,
CHECKSYSTEM = 370,
CHECKFIFO = 371,
CHECKPROGRAM = 372,
CHILDREN = 373,
SYSTEM = 374,
STATUS = 375,
RESOURCE = 376,
MEMORY = 377,
TOTALMEMORY = 378,
LOADAVG1 = 379,
LOADAVG5 = 380,
LOADAVG15 = 381,
SWAP = 382,
MODE = 383,
ACTIVE = 384,
PASSIVE = 385,
MANUAL = 386,
CPU = 387,
TOTALCPU = 388,
CPUUSER = 389,
CPUSYSTEM = 390,
CPUWAIT = 391,
GROUP = 392,
REQUEST = 393,
DEPENDS = 394,
BASEDIR = 395,
SLOT = 396,
EVENTQUEUE = 397,
SECRET = 398,
HOSTHEADER = 399,
UID = 400,
GID = 401,
MMONIT = 402,
INSTANCE = 403,
USERNAME = 404,
PASSWORD = 405,
TIMESTAMP = 406,
CHANGED = 407,
SECOND = 408,
MINUTE = 409,
HOUR = 410,
DAY = 411,
SSLAUTO = 412,
SSLV2 = 413,
SSLV3 = 414,
TLSV1 = 415,
CERTMD5 = 416,
BYTE = 417,
KILOBYTE = 418,
MEGABYTE = 419,
GIGABYTE = 420,
INODE = 421,
SPACE = 422,
PERMISSION = 423,
SIZE = 424,
MATCH = 425,
NOT = 426,
IGNORE = 427,
ACTION = 428,
UPTIME = 429,
EXEC = 430,
UNMONITOR = 431,
ICMP = 432,
ICMPECHO = 433,
NONEXIST = 434,
EXIST = 435,
INVALID = 436,
DATA = 437,
RECOVERED = 438,
PASSED = 439,
SUCCEEDED = 440,
URL = 441,
CONTENT = 442,
PID = 443,
PPID = 444,
FSFLAG = 445,
REGISTER = 446,
CREDENTIALS = 447,
URLOBJECT = 448,
TARGET = 449,
TIMESPEC = 450,
MAXFORWARD = 451,
FIPS = 452,
NOTEQUAL = 453,
EQUAL = 454,
LESS = 455,
GREATER = 456
};
#endif
/* Tokens. */
#define IF 258
#define ELSE 259
#define THEN 260
#define OR 261
#define FAILED 262
#define SET 263
#define LOGFILE 264
#define FACILITY 265
#define DAEMON 266
#define SYSLOG 267
#define MAILSERVER 268
#define HTTPD 269
#define ALLOW 270
#define ADDRESS 271
#define INIT 272
#define READONLY 273
#define CLEARTEXT 274
#define MD5HASH 275
#define SHA1HASH 276
#define CRYPT 277
#define DELAY 278
#define PEMFILE 279
#define ENABLE 280
#define DISABLE 281
#define HTTPDSSL 282
#define CLIENTPEMFILE 283
#define ALLOWSELFCERTIFICATION 284
#define IDFILE 285
#define STATEFILE 286
#define SEND 287
#define EXPECT 288
#define EXPECTBUFFER 289
#define CYCLE 290
#define COUNT 291
#define REMINDER 292
#define PIDFILE 293
#define START 294
#define STOP 295
#define PATHTOK 296
#define HOST 297
#define HOSTNAME 298
#define PORT 299
#define TYPE 300
#define UDP 301
#define TCP 302
#define TCPSSL 303
#define PROTOCOL 304
#define CONNECTION 305
#define ALERT 306
#define NOALERT 307
#define MAILFORMAT 308
#define UNIXSOCKET 309
#define SIGNATURE 310
#define TIMEOUT 311
#define RETRY 312
#define RESTART 313
#define CHECKSUM 314
#define EVERY 315
#define NOTEVERY 316
#define DEFAULT 317
#define HTTP 318
#define APACHESTATUS 319
#define FTP 320
#define SMTP 321
#define POP 322
#define IMAP 323
#define CLAMAV 324
#define NNTP 325
#define NTP3 326
#define MYSQL 327
#define DNS 328
#define SSH 329
#define DWP 330
#define LDAP2 331
#define LDAP3 332
#define RDATE 333
#define RSYNC 334
#define TNS 335
#define PGSQL 336
#define POSTFIXPOLICY 337
#define SIP 338
#define LMTP 339
#define GPS 340
#define RADIUS 341
#define MEMCACHE 342
#define STRING 343
#define PATH 344
#define MAILADDR 345
#define MAILFROM 346
#define MAILREPLYTO 347
#define MAILSUBJECT 348
#define MAILBODY 349
#define SERVICENAME 350
#define STRINGNAME 351
#define NUMBER 352
#define PERCENT 353
#define LOGLIMIT 354
#define CLOSELIMIT 355
#define DNSLIMIT 356
#define KEEPALIVELIMIT 357
#define REPLYLIMIT 358
#define REQUESTLIMIT 359
#define STARTLIMIT 360
#define WAITLIMIT 361
#define GRACEFULLIMIT 362
#define CLEANUPLIMIT 363
#define REAL 364
#define CHECKPROC 365
#define CHECKFILESYS 366
#define CHECKFILE 367
#define CHECKDIR 368
#define CHECKHOST 369
#define CHECKSYSTEM 370
#define CHECKFIFO 371
#define CHECKPROGRAM 372
#define CHILDREN 373
#define SYSTEM 374
#define STATUS 375
#define RESOURCE 376
#define MEMORY 377
#define TOTALMEMORY 378
#define LOADAVG1 379
#define LOADAVG5 380
#define LOADAVG15 381
#define SWAP 382
#define MODE 383
#define ACTIVE 384
#define PASSIVE 385
#define MANUAL 386
#define CPU 387
#define TOTALCPU 388
#define CPUUSER 389
#define CPUSYSTEM 390
#define CPUWAIT 391
#define GROUP 392
#define REQUEST 393
#define DEPENDS 394
#define BASEDIR 395
#define SLOT 396
#define EVENTQUEUE 397
#define SECRET 398
#define HOSTHEADER 399
#define UID 400
#define GID 401
#define MMONIT 402
#define INSTANCE 403
#define USERNAME 404
#define PASSWORD 405
#define TIMESTAMP 406
#define CHANGED 407
#define SECOND 408
#define MINUTE 409
#define HOUR 410
#define DAY 411
#define SSLAUTO 412
#define SSLV2 413
#define SSLV3 414
#define TLSV1 415
#define CERTMD5 416
#define BYTE 417
#define KILOBYTE 418
#define MEGABYTE 419
#define GIGABYTE 420
#define INODE 421
#define SPACE 422
#define PERMISSION 423
#define SIZE 424
#define MATCH 425
#define NOT 426
#define IGNORE 427
#define ACTION 428
#define UPTIME 429
#define EXEC 430
#define UNMONITOR 431
#define ICMP 432
#define ICMPECHO 433
#define NONEXIST 434
#define EXIST 435
#define INVALID 436
#define DATA 437
#define RECOVERED 438
#define PASSED 439
#define SUCCEEDED 440
#define URL 441
#define CONTENT 442
#define PID 443
#define PPID 444
#define FSFLAG 445
#define REGISTER 446
#define CREDENTIALS 447
#define URLOBJECT 448
#define TARGET 449
#define TIMESPEC 450
#define MAXFORWARD 451
#define FIPS 452
#define NOTEQUAL 453
#define EQUAL 454
#define LESS 455
#define GREATER 456
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
{
/* Line 214 of yacc.c */
#line 260 "src/p.y"
URL_T url;
float real;
int number;
char *string;
/* Line 214 of yacc.c */
#line 755 "src/y.tab.c"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
#endif
/* Copy the second part of user declarations. */
/* Line 264 of yacc.c */
#line 767 "src/y.tab.c"
#ifdef short
# undef short
#endif
#ifdef YYTYPE_UINT8
typedef YYTYPE_UINT8 yytype_uint8;
#else
typedef unsigned char yytype_uint8;
#endif
#ifdef YYTYPE_INT8
typedef YYTYPE_INT8 yytype_int8;
#elif (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
typedef signed char yytype_int8;
#else
typedef short int yytype_int8;
#endif
#ifdef YYTYPE_UINT16
typedef YYTYPE_UINT16 yytype_uint16;
#else
typedef unsigned short int yytype_uint16;
#endif
#ifdef YYTYPE_INT16
typedef YYTYPE_INT16 yytype_int16;
#else
typedef short int yytype_int16;
#endif
#ifndef YYSIZE_T
# ifdef __SIZE_TYPE__
# define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
# define YYSIZE_T size_t
# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# else
# define YYSIZE_T unsigned int
# endif
#endif
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
#ifndef YY_
# if YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
# define YY_(msgid) dgettext ("bison-runtime", msgid)
# endif
# endif
# ifndef YY_
# define YY_(msgid) msgid
# endif
#endif
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
# define YYUSE(e) ((void) (e))
#else
# define YYUSE(e) /* empty */
#endif
/* Identity function, used to suppress warnings about constant conditions. */
#ifndef lint
# define YYID(n) (n)
#else
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static int
YYID (int yyi)
#else
static int
YYID (yyi)
int yyi;
#endif
{
return yyi;
}
#endif
#if ! defined yyoverflow || YYERROR_VERBOSE
/* The parser invokes alloca or malloc; define the necessary symbols. */
# ifdef YYSTACK_USE_ALLOCA
# if YYSTACK_USE_ALLOCA
# ifdef __GNUC__
# define YYSTACK_ALLOC __builtin_alloca
# elif defined __BUILTIN_VA_ARG_INCR
# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
# elif defined _AIX
# define YYSTACK_ALLOC __alloca
# elif defined _MSC_VER
# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
# define alloca _alloca
# else
# define YYSTACK_ALLOC alloca
# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
# ifndef _STDLIB_H
# define _STDLIB_H 1
# endif
# endif
# endif
# endif
# endif
# ifdef YYSTACK_ALLOC
/* Pacify GCC's `empty if-body' warning. */
# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
# ifndef YYSTACK_ALLOC_MAXIMUM
/* The OS might guarantee only one guard page at the bottom of the stack,
and a page size can be as small as 4096 bytes. So we cannot safely
invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
to allow for a few compiler-allocated temporary stack slots. */
# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
# endif
# else
# define YYSTACK_ALLOC YYMALLOC
# define YYSTACK_FREE YYFREE
# ifndef YYSTACK_ALLOC_MAXIMUM
# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
# endif
# if (defined __cplusplus && ! defined _STDLIB_H \
&& ! ((defined YYMALLOC || defined malloc) \
&& (defined YYFREE || defined free)))
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
# ifndef _STDLIB_H
# define _STDLIB_H 1
# endif
# endif
# ifndef YYMALLOC
# define YYMALLOC malloc
# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# ifndef YYFREE
# define YYFREE free
# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# endif
#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
#if (! defined yyoverflow \
&& (! defined __cplusplus \
|| (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
/* A type that is properly aligned for any stack member. */
union yyalloc
{
yytype_int16 yyss_alloc;
YYSTYPE yyvs_alloc;
};
/* The size of the maximum gap between one aligned stack and the next. */
# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
/* The size of an array large to enough to hold all stacks, each with
N elements. */
# define YYSTACK_BYTES(N) \
((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ YYSTACK_GAP_MAXIMUM)
/* Copy COUNT objects from FROM to TO. The source and destination do
not overlap. */
# ifndef YYCOPY
# if defined __GNUC__ && 1 < __GNUC__
# define YYCOPY(To, From, Count) \
__builtin_memcpy (To, From, (Count) * sizeof (*(From)))
# else
# define YYCOPY(To, From, Count) \
do \
{ \
YYSIZE_T yyi; \
for (yyi = 0; yyi < (Count); yyi++) \
(To)[yyi] = (From)[yyi]; \
} \
while (YYID (0))
# endif
# endif
/* Relocate STACK from its old location to the new one. The
local variables YYSIZE and YYSTACKSIZE give the old and new number of
elements in the stack, and YYPTR gives the new location of the
stack. Advance YYPTR to a properly aligned location for the next
stack. */
# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
do \
{ \
YYSIZE_T yynewbytes; \
YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
Stack = &yyptr->Stack_alloc; \
yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
yyptr += yynewbytes / sizeof (*yyptr); \
} \
while (YYID (0))
#endif
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 58
/* YYLAST -- Last index in YYTABLE. */
#define YYLAST 989
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 206
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 164
/* YYNRULES -- Number of rules. */
#define YYNRULES 509
/* YYNRULES -- Number of states. */
#define YYNSTATES 893
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
#define YYMAXUTOK 456
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
static const yytype_uint8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 204, 2,
2, 2, 2, 2, 205, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 202, 2, 203, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
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, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
195, 196, 197, 198, 199, 200, 201
};
#if YYDEBUG
/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
YYRHS. */
static const yytype_uint16 yyprhs[] =
{
0, 0, 3, 4, 6, 8, 11, 13, 15, 17,
19, 21, 23, 25, 27, 29, 31, 33, 35, 37,
39, 42, 45, 48, 51, 54, 57, 60, 63, 64,
67, 69, 71, 73, 75, 77, 79, 81, 83, 85,
87, 89, 91, 93, 95, 97, 99, 100, 103, 105,
107, 109, 111, 113, 115, 117, 119, 121, 123, 125,
127, 129, 131, 133, 135, 137, 138, 141, 143, 145,
147, 149, 151, 153, 155, 157, 159, 161, 163, 165,
167, 169, 171, 173, 174, 177, 179, 181, 183, 185,
187, 189, 191, 193, 195, 197, 199, 201, 203, 205,
207, 210, 212, 214, 216, 218, 220, 222, 224, 226,
228, 230, 232, 234, 235, 238, 240, 242, 244, 246,
248, 250, 252, 254, 256, 257, 260, 262, 264, 266,
268, 270, 272, 274, 276, 278, 280, 282, 284, 286,
288, 289, 292, 294, 296, 298, 300, 302, 304, 306,
308, 310, 312, 317, 325, 334, 339, 340, 344, 349,
352, 355, 359, 363, 369, 374, 381, 386, 390, 394,
398, 402, 405, 409, 414, 415, 418, 424, 430, 436,
438, 441, 447, 455, 456, 459, 461, 463, 465, 467,
469, 472, 473, 476, 478, 480, 482, 484, 487, 490,
493, 496, 500, 504, 507, 509, 511, 514, 517, 520,
523, 526, 529, 532, 534, 540, 545, 548, 552, 556,
560, 561, 566, 567, 573, 574, 580, 581, 587, 590,
592, 595, 597, 598, 600, 605, 610, 615, 620, 625,
630, 635, 640, 643, 648, 653, 657, 662, 666, 671,
675, 680, 682, 685, 687, 690, 692, 694, 697, 700,
703, 706, 707, 710, 713, 714, 717, 718, 721, 734,
746, 758, 769, 770, 773, 776, 779, 780, 783, 788,
791, 792, 795, 796, 798, 800, 802, 804, 805, 809,
812, 815, 818, 821, 825, 828, 831, 834, 837, 840,
845, 848, 851, 854, 857, 860, 863, 866, 869, 872,
875, 878, 881, 885, 888, 890, 892, 895, 898, 901,
902, 905, 908, 909, 912, 913, 917, 923, 924, 927,
930, 932, 936, 941, 946, 951, 956, 961, 966, 971,
976, 981, 986, 994, 1001, 1008, 1018, 1019, 1022, 1023,
1027, 1028, 1032, 1033, 1037, 1038, 1041, 1049, 1057, 1058,
1062, 1064, 1066, 1070, 1077, 1085, 1087, 1090, 1093, 1095,
1098, 1100, 1102, 1104, 1106, 1108, 1110, 1112, 1114, 1116,
1118, 1120, 1122, 1124, 1126, 1128, 1130, 1132, 1134, 1136,
1138, 1140, 1142, 1143, 1148, 1150, 1153, 1155, 1157, 1159,
1161, 1165, 1168, 1171, 1174, 1177, 1180, 1183, 1186, 1188,
1191, 1193, 1203, 1210, 1212, 1215, 1217, 1219, 1221, 1223,
1230, 1232, 1235, 1237, 1239, 1241, 1243, 1248, 1253, 1258,
1260, 1262, 1264, 1269, 1274, 1279, 1284, 1289, 1294, 1298,
1302, 1304, 1306, 1308, 1310, 1312, 1322, 1329, 1330, 1332,
1334, 1336, 1338, 1340, 1341, 1343, 1345, 1347, 1349, 1351,
1354, 1358, 1360, 1362, 1364, 1366, 1368, 1370, 1371, 1374,
1378, 1379, 1382, 1386, 1387, 1394, 1401, 1408, 1417, 1428,
1436, 1437, 1439, 1441, 1450, 1460, 1470, 1480, 1487, 1488,
1490, 1492, 1494, 1496, 1505, 1513, 1521, 1526, 1531, 1532,
1534, 1544, 1551, 1560, 1569, 1578, 1587, 1590, 1591, 1594
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int16 yyrhs[] =
{
207, 0, -1, -1, 208, -1, 209, -1, 208, 209,
-1, 226, -1, 227, -1, 232, -1, 233, -1, 237,
-1, 241, -1, 242, -1, 243, -1, 236, -1, 234,
-1, 235, -1, 229, -1, 230, -1, 231, -1, 268,
210, -1, 269, 212, -1, 270, 214, -1, 271, 216,
-1, 272, 218, -1, 273, 220, -1, 274, 222, -1,
275, 224, -1, -1, 210, 211, -1, 276, -1, 277,
-1, 278, -1, 305, -1, 306, -1, 307, -1, 308,
-1, 286, -1, 287, -1, 314, -1, 317, -1, 325,
-1, 326, -1, 327, -1, 328, -1, 332, -1, -1,
212, 213, -1, 276, -1, 277, -1, 278, -1, 305,
-1, 347, -1, 314, -1, 325, -1, 317, -1, 362,
-1, 366, -1, 367, -1, 356, -1, 365, -1, 363,
-1, 326, -1, 327, -1, 328, -1, -1, 214, 215,
-1, 276, -1, 277, -1, 278, -1, 305, -1, 314,
-1, 325, -1, 317, -1, 362, -1, 366, -1, 367,
-1, 326, -1, 327, -1, 328, -1, 358, -1, 359,
-1, 360, -1, -1, 216, 217, -1, 276, -1, 277,
-1, 278, -1, 305, -1, 347, -1, 314, -1, 325,
-1, 317, -1, 362, -1, 366, -1, 367, -1, 326,
-1, 327, -1, 328, -1, 219, -1, 218, 219, -1,
276, -1, 277, -1, 278, -1, 305, -1, 286, -1,
288, -1, 314, -1, 317, -1, 325, -1, 326, -1,
327, -1, 328, -1, -1, 220, 221, -1, 276, -1,
277, -1, 278, -1, 314, -1, 317, -1, 325, -1,
327, -1, 328, -1, 335, -1, -1, 222, 223, -1,
276, -1, 277, -1, 278, -1, 305, -1, 347, -1,
314, -1, 325, -1, 317, -1, 362, -1, 366, -1,
367, -1, 326, -1, 327, -1, 328, -1, -1, 224,
225, -1, 276, -1, 277, -1, 278, -1, 314, -1,
305, -1, 317, -1, 325, -1, 327, -1, 328, -1,
331, -1, 8, 318, 322, 369, -1, 8, 318, 202,
320, 203, 322, 369, -1, 8, 318, 171, 202, 320,
203, 322, 369, -1, 8, 11, 97, 228, -1, -1,
39, 23, 97, -1, 8, 34, 97, 361, -1, 8,
17, -1, 8, 197, -1, 8, 9, 89, -1, 8,
9, 12, -1, 8, 9, 12, 10, 88, -1, 8,
142, 140, 89, -1, 8, 142, 140, 89, 141, 97,
-1, 8, 142, 141, 97, -1, 8, 30, 89, -1,
8, 31, 89, -1, 8, 38, 89, -1, 8, 147,
238, -1, 239, 240, -1, 238, 239, 240, -1, 193,
312, 294, 293, -1, -1, 191, 192, -1, 8, 13,
244, 312, 285, -1, 8, 53, 202, 323, 203, -1,
8, 14, 44, 97, 246, -1, 245, -1, 244, 245,
-1, 88, 283, 284, 294, 293, -1, 88, 44, 97,
283, 284, 294, 293, -1, -1, 246, 247, -1, 248,
-1, 253, -1, 256, -1, 260, -1, 252, -1, 251,
249, -1, -1, 249, 250, -1, 257, -1, 258, -1,
259, -1, 27, -1, 27, 25, -1, 25, 27, -1,
27, 26, -1, 26, 27, -1, 252, 24, 89, -1,
252, 28, 89, -1, 252, 29, -1, 254, -1, 255,
-1, 55, 25, -1, 25, 55, -1, 55, 26, -1,
26, 55, -1, 16, 88, -1, 24, 89, -1, 28,
89, -1, 29, -1, 15, 88, 204, 88, 267, -1,
15, 205, 88, 267, -1, 15, 89, -1, 15, 19,
89, -1, 15, 20, 89, -1, 15, 22, 89, -1,
-1, 15, 89, 261, 265, -1, -1, 15, 19, 89,
262, 265, -1, -1, 15, 20, 89, 263, 265, -1,
-1, 15, 22, 89, 264, 265, -1, 15, 88, -1,
266, -1, 265, 266, -1, 88, -1, -1, 18, -1,
110, 95, 38, 89, -1, 110, 95, 41, 89, -1,
110, 95, 170, 88, -1, 110, 95, 170, 89, -1,
112, 95, 41, 89, -1, 111, 95, 41, 89, -1,
113, 95, 41, 89, -1, 114, 95, 16, 88, -1,
115, 95, -1, 116, 95, 41, 89, -1, 117, 95,
41, 89, -1, 39, 279, 310, -1, 39, 279, 280,
310, -1, 40, 279, 310, -1, 40, 279, 280, 310,
-1, 58, 279, 310, -1, 58, 279, 280, 310, -1,
281, -1, 279, 281, -1, 282, -1, 280, 282, -1,
88, -1, 89, -1, 145, 88, -1, 146, 88, -1,
145, 97, -1, 146, 97, -1, -1, 149, 90, -1,
149, 88, -1, -1, 150, 88, -1, -1, 43, 88,
-1, 3, 7, 289, 290, 292, 295, 312, 313, 353,
5, 351, 355, -1, 3, 7, 186, 193, 315, 312,
313, 353, 5, 351, 355, -1, 3, 7, 291, 292,
295, 312, 313, 353, 5, 351, 355, -1, 3, 7,
177, 368, 309, 312, 353, 5, 351, 355, -1, -1,
42, 88, -1, 44, 97, -1, 54, 89, -1, -1,
45, 47, -1, 45, 48, 294, 293, -1, 45, 46,
-1, -1, 161, 88, -1, -1, 158, -1, 159, -1,
160, -1, 157, -1, -1, 49, 64, 303, -1, 49,
62, -1, 49, 73, -1, 49, 75, -1, 49, 65,
-1, 49, 63, 300, -1, 49, 68, -1, 49, 69,
-1, 49, 76, -1, 49, 77, -1, 49, 72, -1,
49, 83, 298, 299, -1, 49, 70, -1, 49, 71,
-1, 49, 82, -1, 49, 67, -1, 49, 66, -1,
49, 74, -1, 49, 78, -1, 49, 79, -1, 49,
80, -1, 49, 81, -1, 49, 84, -1, 49, 85,
-1, 49, 86, 302, -1, 49, 87, -1, 296, -1,
297, -1, 296, 297, -1, 32, 88, -1, 33, 88,
-1, -1, 194, 90, -1, 194, 88, -1, -1, 196,
97, -1, -1, 138, 89, 301, -1, 138, 89, 59,
88, 301, -1, -1, 144, 88, -1, 143, 88, -1,
304, -1, 303, 6, 304, -1, 99, 348, 97, 98,
-1, 100, 348, 97, 98, -1, 101, 348, 97, 98,
-1, 102, 348, 97, 98, -1, 103, 348, 97, 98,
-1, 104, 348, 97, 98, -1, 105, 348, 97, 98,
-1, 106, 348, 97, 98, -1, 107, 348, 97, 98,
-1, 108, 348, 97, 98, -1, 3, 171, 180, 353,
5, 351, 355, -1, 3, 152, 188, 353, 5, 351,
-1, 3, 152, 189, 353, 5, 351, -1, 3, 174,
348, 97, 349, 353, 5, 351, 355, -1, -1, 36,
97, -1, -1, 56, 97, 153, -1, -1, 56, 97,
153, -1, -1, 56, 97, 153, -1, -1, 57, 97,
-1, 3, 97, 58, 97, 35, 5, 351, -1, 3,
97, 58, 97, 35, 5, 56, -1, -1, 187, 316,
88, -1, 199, -1, 198, -1, 318, 322, 369, -1,
318, 202, 320, 203, 322, 369, -1, 318, 171, 202,
320, 203, 322, 369, -1, 319, -1, 51, 90, -1,
52, 90, -1, 321, -1, 320, 321, -1, 173, -1,
59, -1, 50, -1, 187, -1, 182, -1, 175, -1,
190, -1, 146, -1, 177, -1, 148, -1, 181, -1,
179, -1, 168, -1, 188, -1, 189, -1, 121, -1,
169, -1, 120, -1, 56, -1, 151, -1, 145, -1,
174, -1, -1, 53, 202, 323, 203, -1, 324, -1,
323, 324, -1, 91, -1, 92, -1, 93, -1, 94,
-1, 60, 97, 35, -1, 60, 195, -1, 61, 195,
-1, 128, 129, -1, 128, 130, -1, 128, 131, -1,
137, 96, -1, 139, 329, -1, 330, -1, 329, 330,
-1, 95, -1, 3, 120, 348, 97, 311, 353, 5,
351, 355, -1, 3, 333, 353, 5, 351, 355, -1,
334, -1, 333, 334, -1, 338, -1, 341, -1, 343,
-1, 344, -1, 3, 336, 353, 5, 351, 355, -1,
337, -1, 336, 337, -1, 344, -1, 341, -1, 342,
-1, 339, -1, 132, 348, 97, 98, -1, 133, 348,
97, 98, -1, 340, 348, 97, 98, -1, 134, -1,
135, -1, 136, -1, 122, 348, 346, 361, -1, 122,
348, 97, 98, -1, 123, 348, 346, 361, -1, 123,
348, 97, 98, -1, 127, 348, 346, 361, -1, 127,
348, 97, 98, -1, 118, 348, 97, -1, 345, 348,
346, -1, 124, -1, 125, -1, 126, -1, 109, -1,
97, -1, 3, 151, 348, 97, 349, 353, 5, 351,
355, -1, 3, 152, 151, 353, 5, 351, -1, -1,
201, -1, 200, -1, 199, -1, 198, -1, 152, -1,
-1, 153, -1, 154, -1, 155, -1, 156, -1, 51,
-1, 175, 279, -1, 175, 279, 280, -1, 58, -1,
39, -1, 40, -1, 176, -1, 350, -1, 350, -1,
-1, 97, 35, -1, 97, 97, 35, -1, -1, 97,
35, -1, 97, 97, 35, -1, -1, 4, 3, 183,
354, 5, 352, -1, 4, 3, 184, 354, 5, 352,
-1, 4, 3, 185, 354, 5, 352, -1, 3, 7,
357, 59, 353, 5, 351, 355, -1, 3, 7, 357,
59, 33, 88, 353, 5, 351, 355, -1, 3, 152,
357, 59, 353, 5, 351, -1, -1, 20, -1, 21,
-1, 3, 166, 348, 97, 353, 5, 351, 355, -1,
3, 166, 348, 97, 98, 353, 5, 351, 355, -1,
3, 167, 348, 346, 361, 353, 5, 351, 355, -1,
3, 167, 348, 97, 98, 353, 5, 351, 355, -1,
3, 152, 190, 353, 5, 351, -1, -1, 162, -1,
163, -1, 164, -1, 165, -1, 3, 7, 168, 97,
353, 5, 351, 355, -1, 3, 364, 170, 89, 353,
5, 351, -1, 3, 364, 170, 88, 353, 5, 351,
-1, 172, 364, 170, 89, -1, 172, 364, 170, 88,
-1, -1, 171, -1, 3, 169, 348, 97, 361, 353,
5, 351, 355, -1, 3, 152, 169, 353, 5, 351,
-1, 3, 7, 145, 88, 353, 5, 351, 355, -1,
3, 7, 145, 97, 353, 5, 351, 355, -1, 3,
7, 146, 88, 353, 5, 351, 355, -1, 3, 7,
146, 97, 353, 5, 351, 355, -1, 45, 178, -1,
-1, 37, 97, -1, 37, 97, 35, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
0, 306, 306, 307, 310, 311, 314, 315, 316, 317,
318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
328, 329, 330, 331, 332, 333, 334, 335, 338, 339,
342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
352, 353, 354, 355, 356, 357, 360, 361, 364, 365,
366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
376, 377, 378, 379, 380, 383, 384, 387, 388, 389,
390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
400, 401, 402, 405, 406, 409, 410, 411, 412, 413,
414, 415, 416, 417, 418, 419, 420, 421, 422, 425,
426, 429, 430, 431, 432, 433, 434, 435, 436, 437,
438, 439, 440, 443, 444, 447, 448, 449, 450, 451,
452, 453, 454, 455, 458, 459, 462, 463, 464, 465,
466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
478, 479, 482, 483, 484, 485, 486, 487, 488, 489,
490, 491, 494, 498, 501, 507, 517, 518, 521, 526,
531, 538, 546, 549, 554, 557, 561, 567, 572, 577,
585, 588, 589, 592, 598, 599, 604, 610, 619, 625,
626, 629, 648, 667, 668, 671, 672, 673, 674, 677,
678, 689, 690, 693, 694, 695, 698, 699, 700, 703,
704, 705, 706, 707, 710, 711, 714, 715, 718, 719,
722, 725, 730, 738, 743, 746, 754, 758, 762, 766,
770, 770, 777, 777, 784, 784, 791, 791, 798, 806,
807, 810, 814, 815, 818, 821, 824, 831, 840, 845,
850, 855, 861, 867, 872, 878, 881, 886, 889, 895,
898, 903, 904, 907, 908, 911, 912, 915, 916, 917,
918, 921, 922, 923, 926, 927, 930, 931, 934, 941,
951, 960, 970, 976, 979, 982, 987, 990, 993, 1001,
1006, 1007, 1010, 1011, 1012, 1013, 1014, 1017, 1020, 1023,
1026, 1029, 1032, 1035, 1038, 1041, 1044, 1047, 1050, 1053,
1056, 1059, 1063, 1066, 1069, 1072, 1075, 1078, 1081, 1084,
1087, 1090, 1093, 1096, 1099, 1104, 1105, 1108, 1109, 1112,
1113, 1116, 1121, 1122, 1127, 1128, 1132, 1139, 1140, 1145,
1150, 1151, 1154, 1158, 1162, 1166, 1170, 1174, 1178, 1182,
1186, 1190, 1196, 1202, 1207, 1212, 1219, 1222, 1227, 1230,
1235, 1238, 1243, 1246, 1251, 1254, 1259, 1265, 1273, 1274,
1280, 1281, 1284, 1288, 1291, 1295, 1300, 1303, 1306, 1307,
1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319,
1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329,
1330, 1331, 1334, 1335, 1338, 1339, 1342, 1343, 1344, 1345,
1348, 1352, 1356, 1362, 1365, 1368, 1374, 1378, 1381, 1382,
1385, 1388, 1397, 1403, 1404, 1407, 1408, 1409, 1410, 1413,
1419, 1420, 1423, 1424, 1425, 1426, 1429, 1434, 1441, 1448,
1449, 1450, 1453, 1458, 1463, 1468, 1475, 1480, 1487, 1494,
1501, 1502, 1503, 1506, 1507, 1510, 1516, 1523, 1524, 1525,
1526, 1527, 1528, 1531, 1532, 1533, 1534, 1535, 1538, 1539,
1540, 1541, 1542, 1543, 1544, 1547, 1556, 1565, 1566, 1572,
1582, 1583, 1589, 1599, 1602, 1605, 1608, 1613, 1617, 1624,
1630, 1631, 1632, 1635, 1642, 1651, 1660, 1669, 1674, 1675,
1676, 1677, 1678, 1681, 1688, 1695, 1701, 1708, 1716, 1719,
1725, 1731, 1738, 1744, 1751, 1757, 1764, 1767, 1768, 1769
};
#endif
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
"$end", "error", "$undefined", "IF", "ELSE", "THEN", "OR", "FAILED",
"SET", "LOGFILE", "FACILITY", "DAEMON", "SYSLOG", "MAILSERVER", "HTTPD",
"ALLOW", "ADDRESS", "INIT", "READONLY", "CLEARTEXT", "MD5HASH",
"SHA1HASH", "CRYPT", "DELAY", "PEMFILE", "ENABLE", "DISABLE", "HTTPDSSL",
"CLIENTPEMFILE", "ALLOWSELFCERTIFICATION", "IDFILE", "STATEFILE", "SEND",
"EXPECT", "EXPECTBUFFER", "CYCLE", "COUNT", "REMINDER", "PIDFILE",
"START", "STOP", "PATHTOK", "HOST", "HOSTNAME", "PORT", "TYPE", "UDP",
"TCP", "TCPSSL", "PROTOCOL", "CONNECTION", "ALERT", "NOALERT",
"MAILFORMAT", "UNIXSOCKET", "SIGNATURE", "TIMEOUT", "RETRY", "RESTART",
"CHECKSUM", "EVERY", "NOTEVERY", "DEFAULT", "HTTP", "APACHESTATUS",
"FTP", "SMTP", "POP", "IMAP", "CLAMAV", "NNTP", "NTP3", "MYSQL", "DNS",
"SSH", "DWP", "LDAP2", "LDAP3", "RDATE", "RSYNC", "TNS", "PGSQL",
"POSTFIXPOLICY", "SIP", "LMTP", "GPS", "RADIUS", "MEMCACHE", "STRING",
"PATH", "MAILADDR", "MAILFROM", "MAILREPLYTO", "MAILSUBJECT", "MAILBODY",
"SERVICENAME", "STRINGNAME", "NUMBER", "PERCENT", "LOGLIMIT",
"CLOSELIMIT", "DNSLIMIT", "KEEPALIVELIMIT", "REPLYLIMIT", "REQUESTLIMIT",
"STARTLIMIT", "WAITLIMIT", "GRACEFULLIMIT", "CLEANUPLIMIT", "REAL",
"CHECKPROC", "CHECKFILESYS", "CHECKFILE", "CHECKDIR", "CHECKHOST",
"CHECKSYSTEM", "CHECKFIFO", "CHECKPROGRAM", "CHILDREN", "SYSTEM",
"STATUS", "RESOURCE", "MEMORY", "TOTALMEMORY", "LOADAVG1", "LOADAVG5",
"LOADAVG15", "SWAP", "MODE", "ACTIVE", "PASSIVE", "MANUAL", "CPU",
"TOTALCPU", "CPUUSER", "CPUSYSTEM", "CPUWAIT", "GROUP", "REQUEST",
"DEPENDS", "BASEDIR", "SLOT", "EVENTQUEUE", "SECRET", "HOSTHEADER",
"UID", "GID", "MMONIT", "INSTANCE", "USERNAME", "PASSWORD", "TIMESTAMP",
"CHANGED", "SECOND", "MINUTE", "HOUR", "DAY", "SSLAUTO", "SSLV2",
"SSLV3", "TLSV1", "CERTMD5", "BYTE", "KILOBYTE", "MEGABYTE", "GIGABYTE",
"INODE", "SPACE", "PERMISSION", "SIZE", "MATCH", "NOT", "IGNORE",
"ACTION", "UPTIME", "EXEC", "UNMONITOR", "ICMP", "ICMPECHO", "NONEXIST",
"EXIST", "INVALID", "DATA", "RECOVERED", "PASSED", "SUCCEEDED", "URL",
"CONTENT", "PID", "PPID", "FSFLAG", "REGISTER", "CREDENTIALS",
"URLOBJECT", "TARGET", "TIMESPEC", "MAXFORWARD", "FIPS", "NOTEQUAL",
"EQUAL", "LESS", "GREATER", "'{'", "'}'", "':'", "'@'", "$accept",
"cfgfile", "statement_list", "statement", "optproclist", "optproc",
"optfilelist", "optfile", "optfilesyslist", "optfilesys", "optdirlist",
"optdir", "opthostlist", "opthost", "optsystemlist", "optsystem",
"optfifolist", "optfifo", "optstatuslist", "optstatus", "setalert",
"setdaemon", "startdelay", "setexpectbuffer", "setinit", "setfips",
"setlog", "seteventqueue", "setidfile", "setstatefile", "setpid",
"setmmonits", "mmonitlist", "mmonit", "credentials", "setmailservers",
"setmailformat", "sethttpd", "mailserverlist", "mailserver", "httpdlist",
"httpdoption", "ssl", "optssllist", "optssl", "sslenable", "ssldisable",
"signature", "sigenable", "sigdisable", "bindaddress", "pemfile",
"clientpemfile", "allowselfcert", "allow", "$@1", "$@2", "$@3", "$@4",
"allowuserlist", "allowuser", "readonly", "checkproc", "checkfile",
"checkfilesys", "checkdir", "checkhost", "checksystem", "checkfifo",
"checkprogram", "start", "stop", "restart", "argumentlist",
"useroptionlist", "argument", "useroption", "username", "password",
"hostname", "connection", "connectionunix", "icmp", "host", "port",
"unixsocket", "type", "certmd5", "sslversion", "protocol",
"sendexpectlist", "sendexpect", "target", "maxforward", "request",
"hostheader", "secret", "apache_stat_list", "apache_stat", "exist",
"pid", "ppid", "uptime", "icmpcount", "exectimeout", "programtimeout",
"nettimeout", "retry", "actionrate", "urloption", "urloperator", "alert",
"alertmail", "noalertmail", "eventoptionlist", "eventoption",
"formatlist", "formatoptionlist", "formatoption", "every", "mode",
"group", "depend", "dependlist", "dependant", "exitvalue",
"resourceprocess", "resourceprocesslist", "resourceprocessopt",
"resourcesystem", "resourcesystemlist", "resourcesystemopt",
"resourcecpuproc", "resourcecpu", "resourcecpuid", "resourcemem",
"resourceswap", "resourcechild", "resourceload", "resourceloadavg",
"value", "timestamp", "operator", "time", "action", "action1", "action2",
"rate1", "rate2", "recovery", "checksum", "hashtype", "inode", "space",
"fsflag", "unit", "permission", "match", "matchflagnot", "size", "uid",
"gid", "icmptype", "reminder", 0
};
#endif
# ifdef YYPRINT
/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
token YYLEX-NUM. */
static const yytype_uint16 yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
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, 363, 364,
365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
455, 456, 123, 125, 58, 64
};
# endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint16 yyr1[] =
{
0, 206, 207, 207, 208, 208, 209, 209, 209, 209,
209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
209, 209, 209, 209, 209, 209, 209, 209, 210, 210,
211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
211, 211, 211, 211, 211, 211, 212, 212, 213, 213,
213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
213, 213, 213, 213, 213, 214, 214, 215, 215, 215,
215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
215, 215, 215, 216, 216, 217, 217, 217, 217, 217,
217, 217, 217, 217, 217, 217, 217, 217, 217, 218,
218, 219, 219, 219, 219, 219, 219, 219, 219, 219,
219, 219, 219, 220, 220, 221, 221, 221, 221, 221,
221, 221, 221, 221, 222, 222, 223, 223, 223, 223,
223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
224, 224, 225, 225, 225, 225, 225, 225, 225, 225,
225, 225, 226, 226, 226, 227, 228, 228, 229, 230,
231, 232, 232, 232, 233, 233, 233, 234, 235, 236,
237, 238, 238, 239, 240, 240, 241, 242, 243, 244,
244, 245, 245, 246, 246, 247, 247, 247, 247, 248,
248, 249, 249, 250, 250, 250, 251, 251, 251, 252,
252, 252, 252, 252, 253, 253, 254, 254, 255, 255,
256, 257, 258, 259, 260, 260, 260, 260, 260, 260,
261, 260, 262, 260, 263, 260, 264, 260, 260, 265,
265, 266, 267, 267, 268, 268, 268, 268, 269, 270,
271, 272, 273, 274, 275, 276, 276, 277, 277, 278,
278, 279, 279, 280, 280, 281, 281, 282, 282, 282,
282, 283, 283, 283, 284, 284, 285, 285, 286, 286,
287, 288, 289, 289, 290, 291, 292, 292, 292, 292,
293, 293, 294, 294, 294, 294, 294, 295, 295, 295,
295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
295, 295, 295, 295, 295, 296, 296, 297, 297, 298,
298, 298, 299, 299, 300, 300, 300, 301, 301, 302,
303, 303, 304, 304, 304, 304, 304, 304, 304, 304,
304, 304, 305, 306, 307, 308, 309, 309, 310, 310,
311, 311, 312, 312, 313, 313, 314, 314, 315, 315,
316, 316, 317, 317, 317, 317, 318, 319, 320, 320,
321, 321, 321, 321, 321, 321, 321, 321, 321, 321,
321, 321, 321, 321, 321, 321, 321, 321, 321, 321,
321, 321, 322, 322, 323, 323, 324, 324, 324, 324,
325, 325, 325, 326, 326, 326, 327, 328, 329, 329,
330, 331, 332, 333, 333, 334, 334, 334, 334, 335,
336, 336, 337, 337, 337, 337, 338, 338, 339, 340,
340, 340, 341, 341, 341, 341, 342, 342, 343, 344,
345, 345, 345, 346, 346, 347, 347, 348, 348, 348,
348, 348, 348, 349, 349, 349, 349, 349, 350, 350,
350, 350, 350, 350, 350, 351, 352, 353, 353, 353,
354, 354, 354, 355, 355, 355, 355, 356, 356, 356,
357, 357, 357, 358, 358, 359, 359, 360, 361, 361,
361, 361, 361, 362, 363, 363, 363, 363, 364, 364,
365, 365, 366, 366, 367, 367, 368, 369, 369, 369
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const yytype_uint8 yyr2[] =
{
0, 2, 0, 1, 1, 2, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 0, 2,
1, 1, 1, 1, 1, 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,
1, 1, 1, 1, 1, 0, 2, 1, 1, 1,
1, 1, 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, 1, 1, 1,
2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 0, 2, 1, 1, 1, 1, 1,
1, 1, 1, 1, 0, 2, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 4, 7, 8, 4, 0, 3, 4, 2,
2, 3, 3, 5, 4, 6, 4, 3, 3, 3,
3, 2, 3, 4, 0, 2, 5, 5, 5, 1,
2, 5, 7, 0, 2, 1, 1, 1, 1, 1,
2, 0, 2, 1, 1, 1, 1, 2, 2, 2,
2, 3, 3, 2, 1, 1, 2, 2, 2, 2,
2, 2, 2, 1, 5, 4, 2, 3, 3, 3,
0, 4, 0, 5, 0, 5, 0, 5, 2, 1,
2, 1, 0, 1, 4, 4, 4, 4, 4, 4,
4, 4, 2, 4, 4, 3, 4, 3, 4, 3,
4, 1, 2, 1, 2, 1, 1, 2, 2, 2,
2, 0, 2, 2, 0, 2, 0, 2, 12, 11,
11, 10, 0, 2, 2, 2, 0, 2, 4, 2,
0, 2, 0, 1, 1, 1, 1, 0, 3, 2,
2, 2, 2, 3, 2, 2, 2, 2, 2, 4,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 3, 2, 1, 1, 2, 2, 2, 0,
2, 2, 0, 2, 0, 3, 5, 0, 2, 2,
1, 3, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 7, 6, 6, 9, 0, 2, 0, 3,
0, 3, 0, 3, 0, 2, 7, 7, 0, 3,
1, 1, 3, 6, 7, 1, 2, 2, 1, 2,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 4, 1, 2, 1, 1, 1, 1,
3, 2, 2, 2, 2, 2, 2, 2, 1, 2,
1, 9, 6, 1, 2, 1, 1, 1, 1, 6,
1, 2, 1, 1, 1, 1, 4, 4, 4, 1,
1, 1, 4, 4, 4, 4, 4, 4, 3, 3,
1, 1, 1, 1, 1, 9, 6, 0, 1, 1,
1, 1, 1, 0, 1, 1, 1, 1, 1, 2,
3, 1, 1, 1, 1, 1, 1, 0, 2, 3,
0, 2, 3, 0, 6, 6, 6, 8, 10, 7,
0, 1, 1, 8, 9, 9, 9, 6, 0, 1,
1, 1, 1, 8, 7, 7, 4, 4, 0, 1,
9, 6, 8, 8, 8, 8, 2, 0, 2, 3
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
STATE-NUM when YYTABLE doesn't specify something else to do. Zero
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 3, 4, 6, 7, 17, 18, 19, 8, 9,
15, 16, 14, 10, 11, 12, 13, 28, 46, 65,
83, 0, 113, 124, 140, 0, 0, 0, 0, 159,
0, 0, 0, 0, 0, 0, 0, 0, 160, 392,
0, 0, 0, 0, 0, 242, 0, 0, 1, 5,
20, 21, 22, 23, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 24, 99, 101, 102, 103, 105,
106, 104, 107, 108, 392, 365, 109, 110, 111, 112,
25, 26, 27, 162, 161, 156, 261, 352, 179, 0,
167, 168, 488, 169, 366, 0, 0, 0, 352, 170,
174, 0, 0, 0, 507, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 29, 30, 31, 32, 37,
38, 33, 34, 35, 36, 39, 40, 41, 42, 43,
44, 45, 498, 498, 47, 48, 49, 50, 51, 53,
55, 54, 62, 63, 64, 52, 59, 56, 61, 60,
57, 58, 0, 66, 67, 68, 69, 70, 71, 73,
72, 77, 78, 79, 80, 81, 82, 74, 75, 76,
0, 84, 85, 86, 87, 88, 90, 92, 91, 96,
97, 98, 89, 93, 94, 95, 272, 0, 0, 255,
256, 348, 251, 348, 367, 348, 0, 401, 402, 403,
404, 405, 406, 410, 407, 408, 100, 0, 0, 507,
0, 114, 115, 116, 117, 118, 119, 120, 121, 122,
123, 125, 126, 127, 128, 129, 131, 133, 132, 137,
138, 139, 130, 134, 135, 136, 0, 141, 142, 143,
144, 146, 145, 147, 148, 149, 150, 151, 0, 0,
155, 0, 0, 264, 0, 180, 266, 183, 489, 490,
491, 492, 158, 396, 397, 398, 399, 0, 394, 164,
166, 282, 174, 0, 171, 0, 0, 372, 388, 371,
387, 385, 390, 377, 379, 389, 382, 386, 370, 391,
375, 378, 381, 380, 374, 373, 383, 384, 376, 0,
368, 0, 152, 234, 235, 236, 237, 239, 238, 240,
241, 243, 244, 272, 447, 447, 447, 440, 441, 442,
447, 447, 0, 447, 467, 413, 415, 416, 417, 418,
447, 480, 447, 480, 447, 499, 0, 499, 0, 0,
0, 447, 447, 0, 0, 0, 0, 0, 0, 467,
0, 0, 0, 348, 252, 253, 245, 348, 247, 348,
249, 400, 409, 0, 0, 362, 447, 429, 430, 431,
467, 420, 425, 447, 423, 424, 422, 447, 163, 0,
261, 263, 262, 0, 282, 0, 0, 176, 178, 177,
395, 0, 286, 283, 284, 285, 280, 172, 175, 0,
0, 392, 369, 508, 0, 276, 452, 451, 450, 449,
448, 0, 0, 0, 0, 0, 467, 467, 0, 0,
414, 0, 0, 481, 482, 0, 0, 0, 0, 0,
467, 467, 0, 0, 0, 0, 467, 0, 0, 273,
0, 346, 358, 0, 276, 0, 0, 0, 257, 259,
258, 260, 254, 246, 248, 250, 0, 392, 0, 421,
0, 0, 0, 157, 264, 265, 280, 353, 267, 0,
0, 0, 0, 196, 0, 184, 185, 191, 189, 186,
204, 205, 187, 188, 165, 0, 173, 393, 392, 507,
509, 275, 0, 287, 438, 444, 443, 488, 444, 488,
0, 0, 0, 0, 453, 468, 0, 0, 444, 439,
467, 467, 467, 467, 467, 467, 453, 0, 0, 467,
488, 467, 467, 497, 496, 0, 467, 444, 488, 506,
0, 352, 0, 352, 274, 287, 0, 0, 349, 392,
507, 444, 488, 0, 0, 350, 282, 181, 0, 0,
0, 228, 216, 0, 210, 198, 207, 200, 209, 197,
199, 206, 208, 190, 0, 0, 203, 281, 507, 153,
279, 277, 282, 0, 0, 0, 352, 314, 315, 433,
432, 435, 434, 426, 427, 0, 0, 454, 455, 456,
457, 467, 469, 462, 463, 458, 461, 0, 464, 465,
473, 0, 0, 0, 0, 0, 0, 0, 467, 0,
0, 0, 467, 0, 0, 0, 467, 0, 467, 467,
347, 467, 361, 360, 0, 354, 352, 0, 473, 507,
363, 437, 436, 473, 428, 0, 467, 280, 217, 218,
219, 0, 0, 232, 0, 0, 213, 192, 193, 194,
195, 201, 202, 154, 280, 317, 318, 289, 324, 0,
292, 304, 303, 294, 295, 300, 301, 298, 290, 305,
291, 296, 297, 306, 307, 308, 309, 302, 319, 310,
311, 0, 313, 354, 316, 343, 344, 0, 459, 0,
412, 0, 0, 0, 0, 0, 467, 0, 0, 446,
501, 0, 0, 0, 0, 487, 0, 0, 0, 0,
0, 359, 0, 467, 354, 357, 356, 342, 364, 419,
0, 0, 182, 0, 0, 0, 232, 231, 221, 229,
233, 215, 211, 212, 278, 0, 293, 447, 447, 447,
447, 447, 447, 447, 447, 447, 447, 288, 330, 0,
322, 0, 312, 467, 0, 460, 0, 473, 473, 473,
473, 473, 0, 473, 0, 479, 0, 495, 494, 0,
473, 0, 0, 0, 355, 0, 467, 351, 0, 223,
225, 227, 214, 230, 327, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 321, 320, 0, 299,
329, 0, 473, 470, 470, 470, 502, 503, 504, 505,
493, 0, 477, 473, 473, 473, 483, 473, 473, 473,
0, 0, 473, 0, 0, 325, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 331, 323, 0, 345,
0, 0, 0, 0, 473, 445, 500, 484, 486, 485,
271, 473, 0, 411, 327, 328, 332, 333, 334, 335,
336, 337, 338, 339, 340, 341, 473, 471, 0, 0,
0, 0, 478, 269, 473, 326, 270, 472, 466, 474,
475, 476, 268
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
-1, 10, 11, 12, 60, 125, 61, 144, 62, 163,
63, 181, 74, 75, 90, 221, 91, 231, 92, 247,
13, 14, 260, 15, 16, 17, 18, 19, 20, 21,
22, 23, 109, 110, 284, 24, 25, 26, 97, 98,
398, 485, 486, 573, 657, 487, 488, 489, 490, 491,
492, 658, 659, 660, 493, 652, 733, 734, 735, 738,
739, 741, 27, 28, 29, 30, 31, 32, 33, 34,
76, 77, 78, 201, 363, 202, 365, 263, 394, 397,
79, 130, 80, 357, 454, 415, 503, 496, 406, 586,
587, 588, 760, 809, 746, 835, 762, 757, 758, 81,
132, 133, 134, 541, 366, 646, 266, 723, 82, 543,
634, 83, 84, 85, 309, 310, 114, 277, 278, 86,
87, 88, 89, 214, 215, 257, 141, 334, 335, 230,
380, 381, 336, 382, 383, 337, 385, 338, 339, 340,
507, 155, 421, 601, 609, 610, 889, 431, 851, 700,
156, 438, 174, 175, 176, 272, 157, 158, 346, 159,
160, 161, 451, 312
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
#define YYPACT_NINF -614
static const yytype_int16 yypact[] =
{
212, 54, -58, -33, -25, -23, -19, -14, 1, 15,
123, 212, -614, -614, -614, -614, -614, -614, -614, -614,
-614, -614, -614, -614, -614, -614, -614, -614, -614, -614,
-614, 260, -614, -614, -614, 37, 33, 77, 102, -614,
82, 92, 110, 122, 131, 32, 142, 59, -614, -36,
-3, 216, 236, 249, 297, -614, 278, 304, -614, -614,
592, 76, 664, 710, 5, 275, 275, 250, 275, -57,
171, 345, 281, 290, 260, -614, -614, -614, -614, -614,
-614, -614, -614, -614, 3, -614, -614, -614, -614, -614,
727, 710, 790, 388, -614, 348, -17, 18, -614, 295,
-614, -614, 247, -614, -614, 326, 325, 324, 376, 59,
257, 233, 270, 638, 424, 412, 415, 312, 421, 423,
429, 447, 444, 448, 143, -614, -614, -614, -614, -614,
-614, -614, -614, -614, -614, -614, -614, -614, -614, -614,
-614, -614, 4, 309, -614, -614, -614, -614, -614, -614,
-614, -614, -614, -614, -614, -614, -614, -614, -614, -614,
-614, -614, 11, -614, -614, -614, -614, -614, -614, -614,
-614, -614, -614, -614, -614, -614, -614, -614, -614, -614,
51, -614, -614, -614, -614, -614, -614, -614, -614, -614,
-614, -614, -614, -614, -614, -614, -16, 482, 378, -614,
-614, -2, -614, -2, -614, -2, 526, -614, -614, -614,
-614, -614, -614, -614, 290, -614, -614, 361, 638, 424,
467, -614, -614, -614, -614, -614, -614, -614, -614, -614,
-614, -614, -614, -614, -614, -614, -614, -614, -614, -614,
-614, -614, -614, -614, -614, -614, -42, -614, -614, -614,
-614, -614, -614, -614, -614, -614, -614, -614, 477, 552,
-614, 481, 43, 430, 484, -614, 540, -614, -614, -614,
-614, -614, -614, -614, -614, -614, -614, -41, -614, 446,
-614, 271, 257, 396, -614, 326, 638, -614, -614, -614,
-614, -614, -614, -614, -614, -614, -614, -614, -614, -614,
-614, -614, -614, -614, -614, -614, -614, -614, -614, 357,
-614, 510, -614, -614, -614, -614, -614, -614, -614, -614,
-614, -614, -614, -18, 132, 132, 132, -614, -614, -614,
132, 132, 262, 132, 391, -614, -614, -614, -614, -614,
132, 73, 132, 39, 132, 378, 439, -614, 441, 134,
425, 132, 132, 463, 529, 581, 440, 591, 545, 548,
549, 156, 200, 8, -614, -614, -614, 8, -614, 8,
-614, -614, -614, 638, 431, -614, 132, -614, -614, -614,
539, -614, -614, 132, -614, -614, -614, 132, -614, 550,
488, -614, -614, 568, 271, 502, 572, -614, 323, -614,
-614, 582, -614, -614, -614, -614, 520, -614, -614, 6,
503, 630, -614, 654, 606, 651, -614, -614, -614, -614,
-614, 601, 42, 55, 602, 603, 548, 548, 604, 48,
-614, 697, 163, -614, -614, 254, 259, 608, 659, 622,
548, 548, 662, 626, 368, 377, 548, 629, 165, -614,
554, 691, 541, 636, 651, 701, 732, 589, -614, -614,
-614, -614, -614, -614, -614, -614, 566, 630, 244, -614,
739, 649, 655, -614, 430, -614, 520, -614, -614, 25,
663, 64, 85, 355, 460, -614, -614, -614, 218, -614,
-614, -614, -614, -614, -614, 669, -614, -614, 630, 424,
-614, -614, 445, 238, -614, 665, -614, 247, 666, 247,
667, 674, 755, 768, 315, -614, 740, 192, -614, -614,
548, 548, 548, 548, 548, 28, 315, 769, 772, 548,
247, 548, 548, -614, -614, 775, 397, 678, 247, -614,
684, 376, 299, 376, -614, 238, 777, 192, -614, 630,
424, 692, 247, 192, 693, 738, 271, -614, 706, 707,
708, 594, 711, 712, -614, -614, -614, -614, -614, -614,
-614, -614, -614, 347, 713, 715, -614, -614, 424, -614,
-614, -614, 271, 717, 720, 814, 376, 474, -614, -614,
-614, -614, -614, -614, -614, 192, 192, -614, -614, -614,
-614, 548, -614, -614, -614, -614, -614, 275, -614, -614,
805, 809, 811, 813, 816, 817, 722, 818, 548, 192,
192, 819, 548, 830, 831, 192, 548, 832, 548, 548,
-614, 548, -614, -614, 751, 795, 376, 198, 805, 424,
-614, -614, -614, 805, -614, 743, 548, 520, 765, 766,
767, 770, 779, 838, 776, 780, -614, -614, -614, -614,
-614, -614, -614, -614, 520, -614, -614, -614, 719, 803,
-614, -614, -614, -614, -614, -614, -614, -614, -614, -614,
-614, -614, -614, -614, -614, -614, -614, -614, 676, -614,
-614, 716, -614, 795, -614, -614, -614, 855, 170, 865,
-614, 192, 192, 192, 192, 192, 548, 192, 866, -614,
-614, 192, 867, 192, 192, -614, 907, 192, 908, 909,
910, -614, 820, 548, 795, -614, -614, -614, -614, -614,
763, 913, -614, 779, 779, 779, 838, -614, 779, -614,
-614, -614, -614, -614, -614, 833, -614, 132, 132, 132,
132, 132, 132, 132, 132, 132, 132, 914, -614, 101,
723, 835, -614, 548, 192, 382, 337, 805, 805, 805,
805, 805, 916, 805, 192, -614, 192, -614, -614, 192,
805, 192, 192, 192, -614, 919, 548, -614, 192, 779,
779, 779, -614, -614, -20, 828, 829, 834, 836, 837,
839, 840, 841, 842, 843, 803, -614, -614, 844, -614,
-614, 923, 805, 845, 845, 845, -614, -614, -614, -614,
-614, 192, -614, 805, 805, 805, -614, 805, 805, 805,
192, 925, 805, 847, 856, -614, 848, 849, 850, 851,
852, 853, 854, 857, 858, 859, -614, -614, 192, -614,
60, 927, 938, 940, 805, -614, -614, -614, -614, -614,
-614, 805, 192, -614, 810, -614, -614, -614, -614, -614,
-614, -614, -614, -614, -614, -614, 805, -614, 918, 192,
192, 192, -614, -614, 805, -614, -614, -614, -614, -614,
-614, -614, -614
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
-614, -614, -614, 947, -614, -614, -614, -614, -614, -614,
-614, -614, -614, 885, -614, -614, -614, -614, -614, -614,
-614, -614, -614, -614, -614, -614, -614, -614, -614, -614,
-614, -614, -614, 860, 679, -614, -614, -614, -614, 863,
-614, -614, -614, -614, -614, -614, -614, -614, -614, -614,
-614, -614, -614, -614, -614, -614, -614, -614, -614, -185,
-483, 226, -614, -614, -614, -614, -614, -614, -614, -614,
333, 392, 494, -66, -199, -198, -338, 573, 490, -614,
905, -614, -614, -614, -614, -614, 512, -467, -384, 422,
-614, 381, -614, -614, -614, 106, -614, -614, 166, 298,
-614, -614, -614, -614, -157, -614, -107, -613, 506, -614,
-614, 567, 971, -614, -204, -252, -76, 688, -249, 578,
647, 771, 783, -614, 760, -614, -614, -614, 641, -614,
-614, 596, -614, -614, -614, -201, -614, -614, -187, -614,
-86, 137, -310, 451, -309, -478, -307, -337, -272, -365,
-614, 635, -614, -614, -614, -173, 58, -614, 846, -614,
154, 292, -614, -206
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
number is the opposite. If zero, do what YYDEFACT says.
If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -227
static const yytype_int16 yytable[] =
{
203, 281, 205, 364, 367, 364, 369, 364, 219, 557,
476, 341, 196, 375, 374, 422, 423, 111, 349, 384,
424, 425, 456, 428, 354, 462, 354, 261, 400, 462,
432, 462, 439, 386, 443, 115, 414, 50, 116, 833,
206, 447, 448, 470, 558, 559