[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#798749: marked as done (pu: package monit/1:5.9-1+jessie1)



Your message dated Sat, 23 Jan 2016 13:57:15 +0000
with message-id <1453557435.1835.52.camel@adam-barratt.org.uk>
and subject line 8.3 point release cleanup
has caused the Debian Bug report #798749,
regarding pu: package monit/1:5.9-1+jessie1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
798749: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798749
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: jessie
Usertags: pu

I would like to make an upload to stable in order to fix bug
#796989 (umask bug) in the monit package.

The full patch between this new package version and the version
1:5.9-1 currently in Jessie is attached (mostly it's come from
upstream, tokens.h and y.tab.c are automatically updated with yacc).
diff -Nru monit-5.9/debian/changelog monit-5.9/debian/changelog
--- monit-5.9/debian/changelog	2014-09-30 14:24:21.000000000 +0400
+++ monit-5.9/debian/changelog	2015-09-12 11:35:51.000000000 +0300
@@ -1,3 +1,9 @@
+monit (1:5.9-1+jessie1) unstable; urgency=medium
+
+  * Fix umask-related regression between 5.8.1 and 5.9 (Closes: #796989)
+
+ -- Sergey B Kirpichev <skirpichev@gmail.com>  Sat, 12 Sep 2015 11:34:20 +0300
+
 monit (1:5.9-1) unstable; urgency=medium
 
   * Imported Upstream version 5.9
diff -Nru monit-5.9/debian/patches/13_umask_fix.patch monit-5.9/debian/patches/13_umask_fix.patch
--- monit-5.9/debian/patches/13_umask_fix.patch	1970-01-01 03:00:00.000000000 +0300
+++ monit-5.9/debian/patches/13_umask_fix.patch	2015-09-12 11:35:51.000000000 +0300
@@ -0,0 +1,7179 @@
+Description: Restore the umask when executing start/stop/restart programs
+ and check program.
+Bug-Debian: http://bugs.debian.org/796989
+Origin: https://bitbucket.org/tildeslash/monit/commits/4e68a4
+Forwarded: not-needed
+
+---
+ libmonit/src/system/Command.c |   24 
+ libmonit/src/system/Command.h |   16 
+ libmonit/src/system/Process.h |   12 
+ libmonit/test/CommandTest.c   |    5 
+ src/control.c                 |    1 
+ src/p.y                       |    1 
+ src/tokens.h                  |  480 ++--
+ src/y.tab.c                   | 4109 ++++++++++++++++++++++++------------------
+ 8 files changed, 2689 insertions(+), 1959 deletions(-)
+
+--- a/libmonit/src/system/Command.c
++++ b/libmonit/src/system/Command.c
+@@ -63,6 +63,7 @@
+ struct T {
+         uid_t uid;
+         gid_t gid;
++        mode_t umask;
+         List_T env;
+         List_T args;
+         char **_env;
+@@ -75,6 +76,7 @@
+         pid_t pid;
+         uid_t uid;
+         gid_t gid;
++        mode_t umask;
+         int status;
+         int stdin_pipe[2];
+         int stdout_pipe[2];
+@@ -252,6 +254,12 @@
+ }
+ 
+ 
++mode_t Process_getUmask(Process_T P) {
++        assert(P);
++        return P->umask;
++}
++
++
+ const char *Process_getDir(Process_T P) {
+         assert(P);
+         if (! P->working_directory) {
+@@ -411,6 +419,18 @@
+ }
+ 
+ 
++void Command_setUmask(T C, mode_t umask) {
++        assert(C);
++        C->umask = umask;
++}
++
++
++mode_t Command_getUmask(T C) {
++        assert(C);
++        return C->umask;
++}
++
++
+ void Command_setDir(T C, const char *dir) {
+         assert(C);
+         if (dir) { // Allow to set a NULL directory, meaning the calling process's current directory
+@@ -510,6 +530,10 @@
+                         P->uid = (setuid(C->uid) != 0) ? ERROR("Command: Cannot change process uid to '%d' -- %s\n", C->uid, System_getLastError()), getuid() : C->uid;
+                 else
+                         P->uid = getuid();
++                if (C->umask) {
++                        P->umask = C->umask;
++                        umask(P->umask);
++                }
+                 setsid(); // Loose controlling terminal
+                 setupChildPipes(P);
+                 // Close all descriptors except stdio
+--- a/libmonit/src/system/Command.h
++++ b/libmonit/src/system/Command.h
+@@ -136,6 +136,22 @@
+ 
+ 
+ /**
++ * Set the file creation mode mask the sub-process should switch to on exec.
++ * @param C A Command object
++ * @param umask The file creation mode mask the sub-process should switch to when executed
++ */
++void Command_setUmask(T C, mode_t umask);
++
++
++/**
++ * Returns the file creation mode mask the Command should switch to on exec.
++ * @param C A Command object
++ * @return The umask the sub-process should switch to when executed
++ */
++mode_t Command_getUmask(T C);
++
++
++/**
+  * Returns the Process timeout. Default is no timeout. The timeout
+  * is set with Command_setOnTimeout().
+  * @param C A Command object
+--- a/libmonit/src/system/Process.h
++++ b/libmonit/src/system/Process.h
+@@ -77,7 +77,7 @@
+ /**
+  * Returns the user id of the sub-process
+  * @param P A Process object
+- * @return The user id the sub-process
++ * @return The user id of the sub-process
+  */
+ uid_t Process_getUid(T P);
+ 
+@@ -85,12 +85,20 @@
+ /**
+  * Returns the group id of the sub-process
+  * @param P A Process object
+- * @return The group id the sub-process
++ * @return The group id of the sub-process
+  */
+ gid_t Process_getGid(T P);
+ 
+ 
+ /**
++ * Returns the file creation mode mask of the sub-process
++ * @param P A Process object
++ * @return The umask of the sub-process
++ */
++mode_t Process_getUmask(T P);
++
++
++/**
+  * Returns the Process timeout. 
+  * @param P A Process object
+  * @return The number of seconds this Process has until exit before
+--- a/libmonit/test/CommandTest.c
++++ b/libmonit/test/CommandTest.c
+@@ -104,18 +104,21 @@
+         }
+         printf("=> Test1: OK\n\n");
+ 
+-        printf("=> Test2: set and get uid/gid\n");
++        printf("=> Test2: set and get uid/gid/umask\n");
+         {
+                 Command_T c = Command_new("/bin/sh", "-c", "ps -aef|grep monit", NULL);
+                 assert(c);
+                 // Check that default is 0
+                 assert(Command_getUid(c) == 0);
+                 assert(Command_getGid(c) == 0);
++                assert(Command_getUmask(c) == 0);
+                 // set and test uid and gid
+                 Command_setUid(c,42);
+                 assert(Command_getUid(c) == 42);
+                 Command_setGid(c,148);
+                 assert(Command_getGid(c) == 148);
++                Command_setUmask(c,0222);
++                assert(Command_getUmask(c) == 0222);
+                 Command_free(&c);
+                 assert(!c);
+         }
+--- a/src/control.c
++++ b/src/control.c
+@@ -109,6 +109,7 @@
+                         Command_setUid(C, c->uid);
+                 if (c->has_gid)
+                         Command_setGid(C, c->gid);
++                Command_setUmask(C, Run.umask);
+                 Command_setEnv(C, "MONIT_DATE", Time_string(Time_now(), (char[26]){}));
+                 Command_setEnv(C, "MONIT_SERVICE", S->name);
+                 Command_setEnv(C, "MONIT_HOST", Run.system->name);
+--- a/src/p.y
++++ b/src/p.y
+@@ -2145,6 +2145,7 @@
+                         if (s->program->args->has_gid) {
+                                 Command_setGid(s->program->C, s->program->args->gid);
+                         }
++                        Command_setUmask(s->program->C, Run.umask);
+                 }
+         }
+ 
+--- a/src/tokens.h
++++ b/src/tokens.h
+@@ -1,19 +1,19 @@
+-/* A Bison parser, made by GNU Bison 3.0.2.  */
++/* A Bison parser, made by GNU Bison 2.5.  */
+ 
+ /* Bison interface for Yacc-like parsers in C
+-
+-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+-
++   
++      Copyright (C) 1984, 1989-1990, 2000-2011 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/>.  */
+ 
+@@ -26,235 +26,227 @@
+    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.  */
+ 
+-#ifndef YY_YY_SRC_Y_TAB_H_INCLUDED
+-# define YY_YY_SRC_Y_TAB_H_INCLUDED
+-/* Debug traces.  */
+-#ifndef YYDEBUG
+-# define YYDEBUG 1
+-#endif
+-#if YYDEBUG
+-extern int yydebug;
+-#endif
+ 
+-/* Token type.  */
++/* Tokens.  */
+ #ifndef YYTOKENTYPE
+ # define YYTOKENTYPE
+-  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,
+-    HTTPS = 319,
+-    APACHESTATUS = 320,
+-    FTP = 321,
+-    SMTP = 322,
+-    SMTPS = 323,
+-    POP = 324,
+-    IMAP = 325,
+-    CLAMAV = 326,
+-    NNTP = 327,
+-    NTP3 = 328,
+-    MYSQL = 329,
+-    DNS = 330,
+-    WEBSOCKET = 331,
+-    SSH = 332,
+-    DWP = 333,
+-    LDAP2 = 334,
+-    LDAP3 = 335,
+-    RDATE = 336,
+-    RSYNC = 337,
+-    TNS = 338,
+-    PGSQL = 339,
+-    POSTFIXPOLICY = 340,
+-    SIP = 341,
+-    LMTP = 342,
+-    GPS = 343,
+-    RADIUS = 344,
+-    MEMCACHE = 345,
+-    STRING = 346,
+-    PATH = 347,
+-    MAILADDR = 348,
+-    MAILFROM = 349,
+-    MAILREPLYTO = 350,
+-    MAILSUBJECT = 351,
+-    MAILBODY = 352,
+-    SERVICENAME = 353,
+-    STRINGNAME = 354,
+-    NUMBER = 355,
+-    PERCENT = 356,
+-    LOGLIMIT = 357,
+-    CLOSELIMIT = 358,
+-    DNSLIMIT = 359,
+-    KEEPALIVELIMIT = 360,
+-    REPLYLIMIT = 361,
+-    REQUESTLIMIT = 362,
+-    STARTLIMIT = 363,
+-    WAITLIMIT = 364,
+-    GRACEFULLIMIT = 365,
+-    CLEANUPLIMIT = 366,
+-    REAL = 367,
+-    CHECKPROC = 368,
+-    CHECKFILESYS = 369,
+-    CHECKFILE = 370,
+-    CHECKDIR = 371,
+-    CHECKHOST = 372,
+-    CHECKSYSTEM = 373,
+-    CHECKFIFO = 374,
+-    CHECKPROGRAM = 375,
+-    CHILDREN = 376,
+-    SYSTEM = 377,
+-    STATUS = 378,
+-    ORIGIN = 379,
+-    VERSIONOPT = 380,
+-    RESOURCE = 381,
+-    MEMORY = 382,
+-    TOTALMEMORY = 383,
+-    LOADAVG1 = 384,
+-    LOADAVG5 = 385,
+-    LOADAVG15 = 386,
+-    SWAP = 387,
+-    MODE = 388,
+-    ACTIVE = 389,
+-    PASSIVE = 390,
+-    MANUAL = 391,
+-    CPU = 392,
+-    TOTALCPU = 393,
+-    CPUUSER = 394,
+-    CPUSYSTEM = 395,
+-    CPUWAIT = 396,
+-    GROUP = 397,
+-    REQUEST = 398,
+-    DEPENDS = 399,
+-    BASEDIR = 400,
+-    SLOT = 401,
+-    EVENTQUEUE = 402,
+-    SECRET = 403,
+-    HOSTHEADER = 404,
+-    UID = 405,
+-    EUID = 406,
+-    GID = 407,
+-    MMONIT = 408,
+-    INSTANCE = 409,
+-    USERNAME = 410,
+-    PASSWORD = 411,
+-    TIMESTAMP = 412,
+-    CHANGED = 413,
+-    SECOND = 414,
+-    MINUTE = 415,
+-    HOUR = 416,
+-    DAY = 417,
+-    SSLAUTO = 418,
+-    SSLV2 = 419,
+-    SSLV3 = 420,
+-    TLSV1 = 421,
+-    TLSV11 = 422,
+-    TLSV12 = 423,
+-    CERTMD5 = 424,
+-    BYTE = 425,
+-    KILOBYTE = 426,
+-    MEGABYTE = 427,
+-    GIGABYTE = 428,
+-    INODE = 429,
+-    SPACE = 430,
+-    PERMISSION = 431,
+-    SIZE = 432,
+-    MATCH = 433,
+-    NOT = 434,
+-    IGNORE = 435,
+-    ACTION = 436,
+-    UPTIME = 437,
+-    EXEC = 438,
+-    UNMONITOR = 439,
+-    PING = 440,
+-    ICMP = 441,
+-    ICMPECHO = 442,
+-    NONEXIST = 443,
+-    EXIST = 444,
+-    INVALID = 445,
+-    DATA = 446,
+-    RECOVERED = 447,
+-    PASSED = 448,
+-    SUCCEEDED = 449,
+-    URL = 450,
+-    CONTENT = 451,
+-    PID = 452,
+-    PPID = 453,
+-    FSFLAG = 454,
+-    REGISTER = 455,
+-    CREDENTIALS = 456,
+-    URLOBJECT = 457,
+-    TARGET = 458,
+-    TIMESPEC = 459,
+-    HTTPHEADER = 460,
+-    MAXFORWARD = 461,
+-    FIPS = 462,
+-    GREATER = 463,
+-    LESS = 464,
+-    EQUAL = 465,
+-    NOTEQUAL = 466
+-  };
++   /* 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,
++     HTTPS = 319,
++     APACHESTATUS = 320,
++     FTP = 321,
++     SMTP = 322,
++     SMTPS = 323,
++     POP = 324,
++     IMAP = 325,
++     CLAMAV = 326,
++     NNTP = 327,
++     NTP3 = 328,
++     MYSQL = 329,
++     DNS = 330,
++     WEBSOCKET = 331,
++     SSH = 332,
++     DWP = 333,
++     LDAP2 = 334,
++     LDAP3 = 335,
++     RDATE = 336,
++     RSYNC = 337,
++     TNS = 338,
++     PGSQL = 339,
++     POSTFIXPOLICY = 340,
++     SIP = 341,
++     LMTP = 342,
++     GPS = 343,
++     RADIUS = 344,
++     MEMCACHE = 345,
++     STRING = 346,
++     PATH = 347,
++     MAILADDR = 348,
++     MAILFROM = 349,
++     MAILREPLYTO = 350,
++     MAILSUBJECT = 351,
++     MAILBODY = 352,
++     SERVICENAME = 353,
++     STRINGNAME = 354,
++     NUMBER = 355,
++     PERCENT = 356,
++     LOGLIMIT = 357,
++     CLOSELIMIT = 358,
++     DNSLIMIT = 359,
++     KEEPALIVELIMIT = 360,
++     REPLYLIMIT = 361,
++     REQUESTLIMIT = 362,
++     STARTLIMIT = 363,
++     WAITLIMIT = 364,
++     GRACEFULLIMIT = 365,
++     CLEANUPLIMIT = 366,
++     REAL = 367,
++     CHECKPROC = 368,
++     CHECKFILESYS = 369,
++     CHECKFILE = 370,
++     CHECKDIR = 371,
++     CHECKHOST = 372,
++     CHECKSYSTEM = 373,
++     CHECKFIFO = 374,
++     CHECKPROGRAM = 375,
++     CHILDREN = 376,
++     SYSTEM = 377,
++     STATUS = 378,
++     ORIGIN = 379,
++     VERSIONOPT = 380,
++     RESOURCE = 381,
++     MEMORY = 382,
++     TOTALMEMORY = 383,
++     LOADAVG1 = 384,
++     LOADAVG5 = 385,
++     LOADAVG15 = 386,
++     SWAP = 387,
++     MODE = 388,
++     ACTIVE = 389,
++     PASSIVE = 390,
++     MANUAL = 391,
++     CPU = 392,
++     TOTALCPU = 393,
++     CPUUSER = 394,
++     CPUSYSTEM = 395,
++     CPUWAIT = 396,
++     GROUP = 397,
++     REQUEST = 398,
++     DEPENDS = 399,
++     BASEDIR = 400,
++     SLOT = 401,
++     EVENTQUEUE = 402,
++     SECRET = 403,
++     HOSTHEADER = 404,
++     UID = 405,
++     EUID = 406,
++     GID = 407,
++     MMONIT = 408,
++     INSTANCE = 409,
++     USERNAME = 410,
++     PASSWORD = 411,
++     TIMESTAMP = 412,
++     CHANGED = 413,
++     SECOND = 414,
++     MINUTE = 415,
++     HOUR = 416,
++     DAY = 417,
++     SSLAUTO = 418,
++     SSLV2 = 419,
++     SSLV3 = 420,
++     TLSV1 = 421,
++     TLSV11 = 422,
++     TLSV12 = 423,
++     CERTMD5 = 424,
++     BYTE = 425,
++     KILOBYTE = 426,
++     MEGABYTE = 427,
++     GIGABYTE = 428,
++     INODE = 429,
++     SPACE = 430,
++     PERMISSION = 431,
++     SIZE = 432,
++     MATCH = 433,
++     NOT = 434,
++     IGNORE = 435,
++     ACTION = 436,
++     UPTIME = 437,
++     EXEC = 438,
++     UNMONITOR = 439,
++     PING = 440,
++     ICMP = 441,
++     ICMPECHO = 442,
++     NONEXIST = 443,
++     EXIST = 444,
++     INVALID = 445,
++     DATA = 446,
++     RECOVERED = 447,
++     PASSED = 448,
++     SUCCEEDED = 449,
++     URL = 450,
++     CONTENT = 451,
++     PID = 452,
++     PPID = 453,
++     FSFLAG = 454,
++     REGISTER = 455,
++     CREDENTIALS = 456,
++     URLOBJECT = 457,
++     TARGET = 458,
++     TIMESPEC = 459,
++     HTTPHEADER = 460,
++     MAXFORWARD = 461,
++     FIPS = 462,
++     NOTEQUAL = 463,
++     EQUAL = 464,
++     LESS = 465,
++     GREATER = 466
++   };
+ #endif
+ /* Tokens.  */
+ #define IF 258
+@@ -462,32 +454,36 @@
+ #define HTTPHEADER 460
+ #define MAXFORWARD 461
+ #define FIPS 462
+-#define GREATER 463
+-#define LESS 464
+-#define EQUAL 465
+-#define NOTEQUAL 466
++#define NOTEQUAL 463
++#define EQUAL 464
++#define LESS 465
++#define GREATER 466
++
++
++
+ 
+-/* Value type.  */
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+-typedef union YYSTYPE YYSTYPE;
+-union YYSTYPE
++typedef union YYSTYPE
+ {
+-#line 260 "src/p.y" /* yacc.c:1909  */
++
++/* Line 2068 of yacc.c  */
++#line 260 "src/p.y"
+ 
+   URL_T url;
+   float real;
+   int   number;
+   char *string;
+ 
+-#line 483 "src/y.tab.h" /* yacc.c:1909  */
+-};
++
++
++/* Line 2068 of yacc.c  */
++#line 481 "src/y.tab.h"
++} YYSTYPE;
+ # define YYSTYPE_IS_TRIVIAL 1
++# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ #endif
+ 
+-
+ extern YYSTYPE yylval;
+ 
+-int yyparse (void);
+ 
+-#endif /* !YY_YY_SRC_Y_TAB_H_INCLUDED  */
+--- a/src/y.tab.c
++++ b/src/y.tab.c
+@@ -1,20 +1,20 @@
+ #include <config.h>
+-/* A Bison parser, made by GNU Bison 3.0.2.  */
++/* A Bison parser, made by GNU Bison 2.5.  */
+ 
+ /* Bison implementation for Yacc-like parsers in C
+-
+-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+-
++   
++      Copyright (C) 1984, 1989-1990, 2000-2011 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/>.  */
+ 
+@@ -27,7 +27,7 @@
+    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.  */
+ 
+@@ -45,7 +45,7 @@
+ #define YYBISON 1
+ 
+ /* Bison version.  */
+-#define YYBISON_VERSION "3.0.2"
++#define YYBISON_VERSION "2.5"
+ 
+ /* Skeleton name.  */
+ #define YYSKELETON_NAME "yacc.c"
+@@ -59,11 +59,15 @@
+ /* Pull parsers.  */
+ #define YYPULL 1
+ 
++/* Using locations.  */
++#define YYLSP_NEEDED 0
+ 
+ 
+ 
+ /* Copy the first part of user declarations.  */
+-#line 26 "src/p.y" /* yacc.c:339  */
++
++/* Line 268 of yacc.c  */
++#line 26 "src/p.y"
+ 
+ 
+ /*
+@@ -297,15 +301,14 @@
+   static int verifyMaxForward(int);
+ 
+ 
+-#line 300 "src/y.tab.c" /* yacc.c:339  */
+ 
+-# ifndef YY_NULLPTR
+-#  if defined __cplusplus && 201103L <= __cplusplus
+-#   define YY_NULLPTR nullptr
+-#  else
+-#   define YY_NULLPTR 0
+-#  endif
+-# endif
++/* Line 268 of yacc.c  */
++#line 306 "src/y.tab.c"
++
++/* Enabling traces.  */
++#ifndef YYDEBUG
++# define YYDEBUG 1
++#endif
+ 
+ /* Enabling verbose error messages.  */
+ #ifdef YYERROR_VERBOSE
+@@ -315,233 +318,228 @@
+ # define YYERROR_VERBOSE 0
+ #endif
+ 
+-/* In a future release of Bison, this section will be replaced
+-   by #include "y.tab.h".  */
+-#ifndef YY_YY_SRC_Y_TAB_H_INCLUDED
+-# define YY_YY_SRC_Y_TAB_H_INCLUDED
+-/* Debug traces.  */
+-#ifndef YYDEBUG
+-# define YYDEBUG 1
+-#endif
+-#if YYDEBUG
+-extern int yydebug;
++/* Enabling the token table.  */
++#ifndef YYTOKEN_TABLE
++# define YYTOKEN_TABLE 0
+ #endif
+ 
+-/* Token type.  */
++
++/* Tokens.  */
+ #ifndef YYTOKENTYPE
+ # define YYTOKENTYPE
+-  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,
+-    HTTPS = 319,
+-    APACHESTATUS = 320,
+-    FTP = 321,
+-    SMTP = 322,
+-    SMTPS = 323,
+-    POP = 324,
+-    IMAP = 325,
+-    CLAMAV = 326,
+-    NNTP = 327,
+-    NTP3 = 328,
+-    MYSQL = 329,
+-    DNS = 330,
+-    WEBSOCKET = 331,
+-    SSH = 332,
+-    DWP = 333,
+-    LDAP2 = 334,
+-    LDAP3 = 335,
+-    RDATE = 336,
+-    RSYNC = 337,
+-    TNS = 338,
+-    PGSQL = 339,
+-    POSTFIXPOLICY = 340,
+-    SIP = 341,
+-    LMTP = 342,
+-    GPS = 343,
+-    RADIUS = 344,
+-    MEMCACHE = 345,
+-    STRING = 346,
+-    PATH = 347,
+-    MAILADDR = 348,
+-    MAILFROM = 349,
+-    MAILREPLYTO = 350,
+-    MAILSUBJECT = 351,
+-    MAILBODY = 352,
+-    SERVICENAME = 353,
+-    STRINGNAME = 354,
+-    NUMBER = 355,
+-    PERCENT = 356,
+-    LOGLIMIT = 357,
+-    CLOSELIMIT = 358,
+-    DNSLIMIT = 359,
+-    KEEPALIVELIMIT = 360,
+-    REPLYLIMIT = 361,
+-    REQUESTLIMIT = 362,
+-    STARTLIMIT = 363,
+-    WAITLIMIT = 364,
+-    GRACEFULLIMIT = 365,
+-    CLEANUPLIMIT = 366,
+-    REAL = 367,
+-    CHECKPROC = 368,
+-    CHECKFILESYS = 369,
+-    CHECKFILE = 370,
+-    CHECKDIR = 371,
+-    CHECKHOST = 372,
+-    CHECKSYSTEM = 373,
+-    CHECKFIFO = 374,
+-    CHECKPROGRAM = 375,
+-    CHILDREN = 376,
+-    SYSTEM = 377,
+-    STATUS = 378,
+-    ORIGIN = 379,
+-    VERSIONOPT = 380,
+-    RESOURCE = 381,
+-    MEMORY = 382,
+-    TOTALMEMORY = 383,
+-    LOADAVG1 = 384,
+-    LOADAVG5 = 385,
+-    LOADAVG15 = 386,
+-    SWAP = 387,
+-    MODE = 388,
+-    ACTIVE = 389,
+-    PASSIVE = 390,
+-    MANUAL = 391,
+-    CPU = 392,
+-    TOTALCPU = 393,
+-    CPUUSER = 394,
+-    CPUSYSTEM = 395,
+-    CPUWAIT = 396,
+-    GROUP = 397,
+-    REQUEST = 398,
+-    DEPENDS = 399,
+-    BASEDIR = 400,
+-    SLOT = 401,
+-    EVENTQUEUE = 402,
+-    SECRET = 403,
+-    HOSTHEADER = 404,
+-    UID = 405,
+-    EUID = 406,
+-    GID = 407,
+-    MMONIT = 408,
+-    INSTANCE = 409,
+-    USERNAME = 410,
+-    PASSWORD = 411,
+-    TIMESTAMP = 412,
+-    CHANGED = 413,
+-    SECOND = 414,
+-    MINUTE = 415,
+-    HOUR = 416,
+-    DAY = 417,
+-    SSLAUTO = 418,
+-    SSLV2 = 419,
+-    SSLV3 = 420,
+-    TLSV1 = 421,
+-    TLSV11 = 422,
+-    TLSV12 = 423,
+-    CERTMD5 = 424,
+-    BYTE = 425,
+-    KILOBYTE = 426,
+-    MEGABYTE = 427,
+-    GIGABYTE = 428,
+-    INODE = 429,
+-    SPACE = 430,
+-    PERMISSION = 431,
+-    SIZE = 432,
+-    MATCH = 433,
+-    NOT = 434,
+-    IGNORE = 435,
+-    ACTION = 436,
+-    UPTIME = 437,
+-    EXEC = 438,
+-    UNMONITOR = 439,
+-    PING = 440,
+-    ICMP = 441,
+-    ICMPECHO = 442,
+-    NONEXIST = 443,
+-    EXIST = 444,
+-    INVALID = 445,
+-    DATA = 446,
+-    RECOVERED = 447,
+-    PASSED = 448,
+-    SUCCEEDED = 449,
+-    URL = 450,
+-    CONTENT = 451,
+-    PID = 452,
+-    PPID = 453,
+-    FSFLAG = 454,
+-    REGISTER = 455,
+-    CREDENTIALS = 456,
+-    URLOBJECT = 457,
+-    TARGET = 458,
+-    TIMESPEC = 459,
+-    HTTPHEADER = 460,
+-    MAXFORWARD = 461,
+-    FIPS = 462,
+-    GREATER = 463,
+-    LESS = 464,
+-    EQUAL = 465,
+-    NOTEQUAL = 466
+-  };
++   /* 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,
++     HTTPS = 319,
++     APACHESTATUS = 320,
++     FTP = 321,
++     SMTP = 322,
++     SMTPS = 323,
++     POP = 324,
++     IMAP = 325,
++     CLAMAV = 326,
++     NNTP = 327,
++     NTP3 = 328,
++     MYSQL = 329,
++     DNS = 330,
++     WEBSOCKET = 331,
++     SSH = 332,
++     DWP = 333,
++     LDAP2 = 334,
++     LDAP3 = 335,
++     RDATE = 336,
++     RSYNC = 337,
++     TNS = 338,
++     PGSQL = 339,
++     POSTFIXPOLICY = 340,
++     SIP = 341,
++     LMTP = 342,
++     GPS = 343,
++     RADIUS = 344,
++     MEMCACHE = 345,
++     STRING = 346,
++     PATH = 347,
++     MAILADDR = 348,
++     MAILFROM = 349,
++     MAILREPLYTO = 350,
++     MAILSUBJECT = 351,
++     MAILBODY = 352,
++     SERVICENAME = 353,
++     STRINGNAME = 354,
++     NUMBER = 355,
++     PERCENT = 356,
++     LOGLIMIT = 357,
++     CLOSELIMIT = 358,
++     DNSLIMIT = 359,
++     KEEPALIVELIMIT = 360,
++     REPLYLIMIT = 361,
++     REQUESTLIMIT = 362,
++     STARTLIMIT = 363,
++     WAITLIMIT = 364,
++     GRACEFULLIMIT = 365,
++     CLEANUPLIMIT = 366,
++     REAL = 367,
++     CHECKPROC = 368,
++     CHECKFILESYS = 369,
++     CHECKFILE = 370,
++     CHECKDIR = 371,
++     CHECKHOST = 372,
++     CHECKSYSTEM = 373,
++     CHECKFIFO = 374,
++     CHECKPROGRAM = 375,
++     CHILDREN = 376,
++     SYSTEM = 377,
++     STATUS = 378,
++     ORIGIN = 379,
++     VERSIONOPT = 380,
++     RESOURCE = 381,
++     MEMORY = 382,
++     TOTALMEMORY = 383,
++     LOADAVG1 = 384,
++     LOADAVG5 = 385,
++     LOADAVG15 = 386,
++     SWAP = 387,
++     MODE = 388,
++     ACTIVE = 389,
++     PASSIVE = 390,
++     MANUAL = 391,
++     CPU = 392,
++     TOTALCPU = 393,
++     CPUUSER = 394,
++     CPUSYSTEM = 395,
++     CPUWAIT = 396,
++     GROUP = 397,
++     REQUEST = 398,
++     DEPENDS = 399,
++     BASEDIR = 400,
++     SLOT = 401,
++     EVENTQUEUE = 402,
++     SECRET = 403,
++     HOSTHEADER = 404,
++     UID = 405,
++     EUID = 406,
++     GID = 407,
++     MMONIT = 408,
++     INSTANCE = 409,
++     USERNAME = 410,
++     PASSWORD = 411,
++     TIMESTAMP = 412,
++     CHANGED = 413,
++     SECOND = 414,
++     MINUTE = 415,
++     HOUR = 416,
++     DAY = 417,
++     SSLAUTO = 418,
++     SSLV2 = 419,
++     SSLV3 = 420,
++     TLSV1 = 421,
++     TLSV11 = 422,
++     TLSV12 = 423,
++     CERTMD5 = 424,
++     BYTE = 425,
++     KILOBYTE = 426,
++     MEGABYTE = 427,
++     GIGABYTE = 428,
++     INODE = 429,
++     SPACE = 430,
++     PERMISSION = 431,
++     SIZE = 432,
++     MATCH = 433,
++     NOT = 434,
++     IGNORE = 435,
++     ACTION = 436,
++     UPTIME = 437,
++     EXEC = 438,
++     UNMONITOR = 439,
++     PING = 440,
++     ICMP = 441,
++     ICMPECHO = 442,
++     NONEXIST = 443,
++     EXIST = 444,
++     INVALID = 445,
++     DATA = 446,
++     RECOVERED = 447,
++     PASSED = 448,
++     SUCCEEDED = 449,
++     URL = 450,
++     CONTENT = 451,
++     PID = 452,
++     PPID = 453,
++     FSFLAG = 454,
++     REGISTER = 455,
++     CREDENTIALS = 456,
++     URLOBJECT = 457,
++     TARGET = 458,
++     TIMESPEC = 459,
++     HTTPHEADER = 460,
++     MAXFORWARD = 461,
++     FIPS = 462,
++     NOTEQUAL = 463,
++     EQUAL = 464,
++     LESS = 465,
++     GREATER = 466
++   };
+ #endif
+ /* Tokens.  */
+ #define IF 258
+@@ -749,39 +747,42 @@
+ #define HTTPHEADER 460
+ #define MAXFORWARD 461
+ #define FIPS 462
+-#define GREATER 463
+-#define LESS 464
+-#define EQUAL 465
+-#define NOTEQUAL 466
++#define NOTEQUAL 463
++#define EQUAL 464
++#define LESS 465
++#define GREATER 466
++
++
++
+ 
+-/* Value type.  */
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+-typedef union YYSTYPE YYSTYPE;
+-union YYSTYPE
++typedef union YYSTYPE
+ {
+-#line 260 "src/p.y" /* yacc.c:355  */
++
++/* Line 293 of yacc.c  */
++#line 260 "src/p.y"
+ 
+   URL_T url;
+   float real;
+   int   number;
+   char *string;
+ 
+-#line 769 "src/y.tab.c" /* yacc.c:355  */
+-};
++
++
++/* Line 293 of yacc.c  */
++#line 773 "src/y.tab.c"
++} YYSTYPE;
+ # define YYSTYPE_IS_TRIVIAL 1
++# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ #endif
+ 
+ 
+-extern YYSTYPE yylval;
+-
+-int yyparse (void);
+-
+-#endif /* !YY_YY_SRC_Y_TAB_H_INCLUDED  */
+-
+ /* Copy the second part of user declarations.  */
+ 
+-#line 784 "src/y.tab.c" /* yacc.c:358  */
++
++/* Line 343 of yacc.c  */
++#line 785 "src/y.tab.c"
+ 
+ #ifdef short
+ # undef short
+@@ -795,8 +796,11 @@
+ 
+ #ifdef YYTYPE_INT8
+ typedef YYTYPE_INT8 yytype_int8;
+-#else
++#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
+@@ -816,7 +820,8 @@
+ #  define YYSIZE_T __SIZE_TYPE__
+ # elif defined size_t
+ #  define YYSIZE_T size_t
+-# elif ! defined YYSIZE_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
+@@ -830,68 +835,39 @@
+ # if defined YYENABLE_NLS && YYENABLE_NLS
+ #  if ENABLE_NLS
+ #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+-#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
++#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+ #  endif
+ # endif
+ # ifndef YY_
+-#  define YY_(Msgid) Msgid
+-# endif
+-#endif
+-
+-#ifndef YY_ATTRIBUTE
+-# if (defined __GNUC__                                               \
+-      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
+-     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+-#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+-# else
+-#  define YY_ATTRIBUTE(Spec) /* empty */
+-# endif
+-#endif
+-
+-#ifndef YY_ATTRIBUTE_PURE
+-# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
+-#endif
+-
+-#ifndef YY_ATTRIBUTE_UNUSED
+-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+-#endif
+-
+-#if !defined _Noreturn \
+-     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+-# if defined _MSC_VER && 1200 <= _MSC_VER
+-#  define _Noreturn __declspec (noreturn)
+-# else
+-#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
++#  define YY_(msgid) msgid
+ # endif
+ #endif
+ 
+ /* Suppress unused-variable warnings by "using" E.  */
+ #if ! defined lint || defined __GNUC__
+-# define YYUSE(E) ((void) (E))
++# define YYUSE(e) ((void) (e))
+ #else
+-# define YYUSE(E) /* empty */
++# define YYUSE(e) /* empty */
+ #endif
+ 
+-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+-/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+-    _Pragma ("GCC diagnostic push") \
+-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+-    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+-    _Pragma ("GCC diagnostic pop")
++/* Identity function, used to suppress warnings about constant conditions.  */
++#ifndef lint
++# define YYID(n) (n)
+ #else
+-# define YY_INITIAL_VALUE(Value) Value
+-#endif
+-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static int
++YYID (int yyi)
++#else
++static int
++YYID (yyi)
++    int yyi;
+ #endif
+-#ifndef YY_INITIAL_VALUE
+-# define YY_INITIAL_VALUE(Value) /* Nothing. */
++{
++  return yyi;
++}
+ #endif
+ 
+-
+ #if ! defined yyoverflow || YYERROR_VERBOSE
+ 
+ /* The parser invokes alloca or malloc; define the necessary symbols.  */
+@@ -909,9 +885,9 @@
+ #    define alloca _alloca
+ #   else
+ #    define YYSTACK_ALLOC alloca
+-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
++#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+ #     ifndef EXIT_SUCCESS
+ #      define EXIT_SUCCESS 0
+ #     endif
+@@ -921,8 +897,8 @@
+ # endif
+ 
+ # ifdef YYSTACK_ALLOC
+-   /* Pacify GCC's 'empty if-body' warning.  */
+-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
++   /* 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
+@@ -938,7 +914,7 @@
+ #  endif
+ #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
+        && ! ((defined YYMALLOC || defined malloc) \
+-             && (defined YYFREE || defined free)))
++	     && (defined YYFREE || defined free)))
+ #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+ #   ifndef EXIT_SUCCESS
+ #    define EXIT_SUCCESS 0
+@@ -946,13 +922,15 @@
+ #  endif
+ #  ifndef YYMALLOC
+ #   define YYMALLOC malloc
+-#   if ! defined malloc && ! defined EXIT_SUCCESS
++#   if ! defined malloc && ! defined EXIT_SUCCESS && (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 EXIT_SUCCESS
++#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ void free (void *); /* INFRINGES ON USER NAME SPACE */
+ #   endif
+ #  endif
+@@ -962,7 +940,7 @@
+ 
+ #if (! defined yyoverflow \
+      && (! defined __cplusplus \
+-         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
++	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+ 
+ /* A type that is properly aligned for any stack member.  */
+ union yyalloc
+@@ -987,35 +965,35 @@
+    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 (0)
++# 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
+ 
+ #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+-/* Copy COUNT objects from SRC to DST.  The source and destination do
++/* Copy COUNT objects from FROM to TO.  The source and destination do
+    not overlap.  */
+ # ifndef YYCOPY
+ #  if defined __GNUC__ && 1 < __GNUC__
+-#   define YYCOPY(Dst, Src, Count) \
+-      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
++#   define YYCOPY(To, From, Count) \
++      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+ #  else
+-#   define YYCOPY(Dst, Src, Count)              \
+-      do                                        \
+-        {                                       \
+-          YYSIZE_T yyi;                         \
+-          for (yyi = 0; yyi < (Count); yyi++)   \
+-            (Dst)[yyi] = (Src)[yyi];            \
+-        }                                       \
+-      while (0)
++#   define YYCOPY(To, From, Count)		\
++      do					\
++	{					\
++	  YYSIZE_T yyi;				\
++	  for (yyi = 0; yyi < (Count); yyi++)	\
++	    (To)[yyi] = (From)[yyi];		\
++	}					\
++      while (YYID (0))
+ #  endif
+ # endif
+ #endif /* !YYCOPY_NEEDED */
+@@ -1031,19 +1009,17 @@
+ #define YYNNTS  172
+ /* YYNRULES -- Number of rules.  */
+ #define YYNRULES  533
+-/* YYNSTATES -- Number of states.  */
++/* YYNRULES -- Number of states.  */
+ #define YYNSTATES  946
+ 
+-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+-   by yylex, with out-of-bounds checking.  */
++/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+ #define YYUNDEFTOK  2
+ #define YYMAXUTOK   466
+ 
+-#define YYTRANSLATE(YYX)                                                \
++#define YYTRANSLATE(YYX)						\
+   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+ 
+-/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+-   as returned by yylex, without out-of-bounds checking.  */
++/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+ static const yytype_uint8 yytranslate[] =
+ {
+        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+@@ -1096,7 +1072,241 @@
+ };
+ 
+ #if YYDEBUG
+-  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
++/* 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,   101,   103,   105,
++     106,   109,   111,   113,   115,   117,   119,   121,   123,   125,
++     127,   129,   131,   133,   135,   137,   139,   141,   143,   144,
++     147,   149,   151,   153,   155,   157,   159,   161,   163,   165,
++     167,   169,   171,   173,   175,   177,   179,   180,   183,   185,
++     187,   189,   191,   193,   195,   197,   199,   201,   203,   205,
++     207,   209,   211,   213,   216,   218,   220,   222,   224,   226,
++     228,   230,   232,   234,   236,   238,   240,   241,   244,   246,
++     248,   250,   252,   254,   256,   258,   260,   262,   263,   266,
++     268,   270,   272,   274,   276,   278,   280,   282,   284,   286,
++     288,   290,   292,   294,   295,   298,   300,   302,   304,   306,
++     308,   310,   312,   314,   316,   318,   323,   331,   340,   345,
++     346,   350,   355,   358,   361,   365,   369,   375,   380,   387,
++     392,   396,   400,   404,   408,   411,   415,   420,   421,   424,
++     430,   436,   442,   444,   447,   453,   461,   462,   465,   467,
++     469,   471,   473,   476,   479,   480,   483,   485,   487,   489,
++     492,   495,   498,   501,   503,   505,   508,   511,   514,   517,
++     520,   523,   526,   528,   534,   539,   542,   546,   550,   554,
++     555,   560,   561,   567,   568,   574,   575,   581,   584,   586,
++     589,   591,   592,   594,   599,   604,   609,   614,   619,   624,
++     629,   634,   639,   642,   647,   653,   660,   664,   669,   673,
++     678,   682,   687,   689,   692,   694,   697,   699,   701,   704,
++     707,   710,   713,   714,   717,   720,   721,   724,   725,   728,
++     742,   754,   766,   777,   787,   788,   791,   794,   797,   798,
++     801,   806,   809,   810,   813,   814,   816,   818,   820,   822,
++     824,   826,   827,   831,   834,   837,   840,   843,   847,   851,
++     854,   857,   860,   863,   866,   871,   874,   877,   880,   883,
++     886,   889,   892,   895,   898,   901,   904,   907,   910,   914,
++     917,   921,   923,   925,   928,   931,   934,   936,   939,   942,
++     945,   948,   951,   952,   955,   958,   959,   962,   963,   966,
++     968,   970,   972,   974,   978,   982,   985,   988,   991,   992,
++     995,   998,  1000,  1004,  1009,  1014,  1019,  1024,  1029,  1034,
++    1039,  1044,  1049,  1054,  1062,  1069,  1076,  1086,  1087,  1090,
++    1091,  1095,  1096,  1100,  1101,  1105,  1106,  1109,  1117,  1125,
++    1126,  1130,  1132,  1134,  1138,  1145,  1153,  1155,  1158,  1161,
++    1163,  1166,  1168,  1170,  1172,  1174,  1176,  1178,  1180,  1182,
++    1184,  1186,  1188,  1190,  1192,  1194,  1196,  1198,  1200,  1202,
++    1204,  1206,  1208,  1210,  1211,  1216,  1218,  1221,  1223,  1225,
++    1227,  1229,  1233,  1236,  1239,  1242,  1245,  1248,  1251,  1254,
++    1256,  1259,  1261,  1270,  1277,  1284,  1286,  1289,  1291,  1293,
++    1295,  1297,  1304,  1306,  1309,  1311,  1313,  1315,  1317,  1322,
++    1327,  1332,  1334,  1336,  1338,  1343,  1348,  1353,  1358,  1363,
++    1368,  1372,  1376,  1378,  1380,  1382,  1384,  1386,  1396,  1403,
++    1404,  1406,  1408,  1410,  1412,  1414,  1415,  1417,  1419,  1421,
++    1423,  1425,  1428,  1432,  1434,  1436,  1438,  1440,  1442,  1444,
++    1445,  1448,  1452,  1453,  1456,  1460,  1461,  1468,  1475,  1482,
++    1491,  1502,  1510,  1511,  1513,  1515,  1524,  1534,  1544,  1554,
++    1561,  1562,  1564,  1566,  1568,  1570,  1579,  1587,  1595,  1600,
++    1605,  1606,  1608,  1618,  1625,  1634,  1643,  1652,  1661,  1670,
++    1679,  1682,  1683,  1686
++};
++
++/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
++static const yytype_int16 yyrhs[] =
++{
++     219,     0,    -1,    -1,   220,    -1,   221,    -1,   220,   221,
++      -1,   238,    -1,   239,    -1,   244,    -1,   245,    -1,   249,
++      -1,   253,    -1,   254,    -1,   255,    -1,   248,    -1,   246,
++      -1,   247,    -1,   241,    -1,   242,    -1,   243,    -1,   280,
++     222,    -1,   281,   224,    -1,   282,   226,    -1,   283,   228,
++      -1,   284,   230,    -1,   285,   232,    -1,   286,   234,    -1,
++     287,   236,    -1,    -1,   222,   223,    -1,   288,    -1,   289,
++      -1,   290,    -1,   324,    -1,   325,    -1,   326,    -1,   385,
++      -1,   386,    -1,   387,    -1,   327,    -1,   298,    -1,   299,
++      -1,   333,    -1,   336,    -1,   344,    -1,   345,    -1,   346,
++      -1,   347,    -1,   351,    -1,    -1,   224,   225,    -1,   288,
++      -1,   289,    -1,   290,    -1,   324,    -1,   366,    -1,   333,
++      -1,   344,    -1,   336,    -1,   381,    -1,   385,    -1,   387,
++      -1,   375,    -1,   384,    -1,   382,    -1,   345,    -1,   346,
++      -1,   347,    -1,    -1,   226,   227,    -1,   288,    -1,   289,
++      -1,   290,    -1,   324,    -1,   333,    -1,   344,    -1,   336,
++      -1,   381,    -1,   385,    -1,   387,    -1,   345,    -1,   346,
++      -1,   347,    -1,   377,    -1,   378,    -1,   379,    -1,    -1,
++     228,   229,    -1,   288,    -1,   289,    -1,   290,    -1,   324,
++      -1,   366,    -1,   333,    -1,   344,    -1,   336,    -1,   381,
++      -1,   385,    -1,   387,    -1,   345,    -1,   346,    -1,   347,
++      -1,   231,    -1,   230,   231,    -1,   288,    -1,   289,    -1,
++     290,    -1,   324,    -1,   298,    -1,   300,    -1,   333,    -1,
++     336,    -1,   344,    -1,   345,    -1,   346,    -1,   347,    -1,
++      -1,   232,   233,    -1,   288,    -1,   289,    -1,   290,    -1,
++     333,    -1,   336,    -1,   344,    -1,   346,    -1,   347,    -1,
++     354,    -1,    -1,   234,   235,    -1,   288,    -1,   289,    -1,
++     290,    -1,   324,    -1,   366,    -1,   333,    -1,   344,    -1,
++     336,    -1,   381,    -1,   385,    -1,   387,    -1,   345,    -1,
++     346,    -1,   347,    -1,    -1,   236,   237,    -1,   288,    -1,
++     289,    -1,   290,    -1,   333,    -1,   324,    -1,   336,    -1,
++     344,    -1,   346,    -1,   347,    -1,   350,    -1,     8,   337,
++     341,   389,    -1,     8,   337,   212,   339,   213,   341,   389,
++      -1,     8,   337,   179,   212,   339,   213,   341,   389,    -1,
++       8,    11,   100,   240,    -1,    -1,    39,    23,   100,    -1,
++       8,    34,   100,   380,    -1,     8,    17,    -1,     8,   207,
++      -1,     8,     9,    92,    -1,     8,     9,    12,    -1,     8,
++       9,    12,    10,    91,    -1,     8,   147,   145,    92,    -1,
++       8,   147,   145,    92,   146,   100,    -1,     8,   147,   146,
++     100,    -1,     8,    30,    92,    -1,     8,    31,    92,    -1,
++       8,    38,    92,    -1,     8,   153,   250,    -1,   251,   252,
++      -1,   250,   251,   252,    -1,   202,   331,   306,   305,    -1,
++      -1,   200,   201,    -1,     8,    13,   256,   331,   297,    -1,
++       8,    53,   212,   342,   213,    -1,     8,    14,    44,   100,
++     258,    -1,   257,    -1,   256,   257,    -1,    91,   295,   296,
++     306,   305,    -1,    91,    44,   100,   295,   296,   306,   305,
++      -1,    -1,   258,   259,    -1,   260,    -1,   265,    -1,   268,
++      -1,   272,    -1,   264,   261,    -1,   263,   261,    -1,    -1,
++     261,   262,    -1,   269,    -1,   270,    -1,   271,    -1,    27,
++      25,    -1,    25,    27,    -1,    27,    26,    -1,    26,    27,
++      -1,   266,    -1,   267,    -1,    55,    25,    -1,    25,    55,
++      -1,    55,    26,    -1,    26,    55,    -1,    16,    91,    -1,
++      24,    92,    -1,    28,    92,    -1,    29,    -1,    15,    91,
++     214,    91,   279,    -1,    15,   215,    91,   279,    -1,    15,
++      92,    -1,    15,    19,    92,    -1,    15,    20,    92,    -1,
++      15,    22,    92,    -1,    -1,    15,    92,   273,   277,    -1,
++      -1,    15,    19,    92,   274,   277,    -1,    -1,    15,    20,
++      92,   275,   277,    -1,    -1,    15,    22,    92,   276,   277,
++      -1,    15,    91,    -1,   278,    -1,   277,   278,    -1,    91,
++      -1,    -1,    18,    -1,   113,    98,    38,    92,    -1,   113,
++      98,    41,    92,    -1,   113,    98,   178,    91,    -1,   113,
++      98,   178,    92,    -1,   115,    98,    41,    92,    -1,   114,
++      98,    41,    92,    -1,   114,    98,    41,    91,    -1,   116,
++      98,    41,    92,    -1,   117,    98,    16,    91,    -1,   118,
++      98,    -1,   119,    98,    41,    92,    -1,   120,    98,    41,
++     291,   330,    -1,   120,    98,    41,   291,   292,   330,    -1,
++      39,   291,   329,    -1,    39,   291,   292,   329,    -1,    40,
++     291,   329,    -1,    40,   291,   292,   329,    -1,    58,   291,
++     329,    -1,    58,   291,   292,   329,    -1,   293,    -1,   291,
++     293,    -1,   294,    -1,   292,   294,    -1,    91,    -1,    92,
++      -1,   150,    91,    -1,   152,    91,    -1,   150,   100,    -1,
++     152,   100,    -1,    -1,   155,    93,    -1,   155,    91,    -1,
++      -1,   156,    91,    -1,    -1,    43,    91,    -1,     3,     7,
++     301,   302,   304,   307,   334,   331,   332,   372,     5,   370,
++     374,    -1,     3,     7,   195,   202,   334,   331,   332,   372,
++       5,   370,   374,    -1,     3,     7,   303,   304,   307,   331,
++     332,   372,     5,   370,   374,    -1,     3,     7,   186,   388,
++     328,   331,   372,     5,   370,   374,    -1,     3,     7,   185,
++     328,   331,   372,     5,   370,   374,    -1,    -1,    42,    91,
++      -1,    44,   100,    -1,    54,    92,    -1,    -1,    45,    47,
++      -1,    45,    48,   306,   305,    -1,    45,    46,    -1,    -1,
++     169,    91,    -1,    -1,   164,    -1,   165,    -1,   166,    -1,
++     167,    -1,   168,    -1,   163,    -1,    -1,    49,    65,   322,
++      -1,    49,    62,    -1,    49,    75,    -1,    49,    78,    -1,
++      49,    66,    -1,    49,    63,   314,    -1,    49,    64,   314,
++      -1,    49,    70,    -1,    49,    71,    -1,    49,    79,    -1,
++      49,    80,    -1,    49,    74,    -1,    49,    86,   312,   313,
++      -1,    49,    72,    -1,    49,    73,    -1,    49,    85,    -1,
++      49,    69,    -1,    49,    67,    -1,    49,    68,    -1,    49,
++      77,    -1,    49,    81,    -1,    49,    82,    -1,    49,    83,
++      -1,    49,    84,    -1,    49,    87,    -1,    49,    88,    -1,
++      49,    89,   321,    -1,    49,    90,    -1,    49,    76,   310,
++      -1,   308,    -1,   309,    -1,   308,   309,    -1,    32,    91,
++      -1,    33,    91,    -1,   311,    -1,   310,   311,    -1,   124,
++      91,    -1,   143,    92,    -1,    42,    91,    -1,   125,   100,
++      -1,    -1,   203,    93,    -1,   203,    91,    -1,    -1,   206,
++     100,    -1,    -1,   314,   315,    -1,   317,    -1,   318,    -1,
++     316,    -1,   319,    -1,   216,   320,   217,    -1,   123,   367,
++     100,    -1,   143,    92,    -1,    59,    91,    -1,   149,    91,
++      -1,    -1,   320,   205,    -1,   148,    91,    -1,   323,    -1,
++     322,     6,   323,    -1,   102,   367,   100,   101,    -1,   103,
++     367,   100,   101,    -1,   104,   367,   100,   101,    -1,   105,
++     367,   100,   101,    -1,   106,   367,   100,   101,    -1,   107,
++     367,   100,   101,    -1,   108,   367,   100,   101,    -1,   109,
++     367,   100,   101,    -1,   110,   367,   100,   101,    -1,   111,
++     367,   100,   101,    -1,     3,   179,   189,   372,     5,   370,
++     374,    -1,     3,   158,   197,   372,     5,   370,    -1,     3,
++     158,   198,   372,     5,   370,    -1,     3,   182,   367,   100,
++     368,   372,     5,   370,   374,    -1,    -1,    36,   100,    -1,
++      -1,    56,   100,   159,    -1,    -1,    56,   100,   159,    -1,
++      -1,    56,   100,   159,    -1,    -1,    57,   100,    -1,     3,
++     100,    58,   100,    35,     5,   370,    -1,     3,   100,    58,
++     100,    35,     5,    56,    -1,    -1,   196,   335,    91,    -1,
++     209,    -1,   208,    -1,   337,   341,   389,    -1,   337,   212,
++     339,   213,   341,   389,    -1,   337,   179,   212,   339,   213,
++     341,   389,    -1,   338,    -1,    51,    93,    -1,    52,    93,
++      -1,   340,    -1,   339,   340,    -1,   181,    -1,    59,    -1,
++      50,    -1,   196,    -1,   191,    -1,   183,    -1,   199,    -1,
++     152,    -1,   186,    -1,   154,    -1,   190,    -1,   188,    -1,
++     176,    -1,   197,    -1,   198,    -1,   126,    -1,   177,    -1,
++     123,    -1,    56,    -1,   157,    -1,   150,    -1,   182,    -1,
++      -1,    53,   212,   342,   213,    -1,   343,    -1,   342,   343,
++      -1,    94,    -1,    95,    -1,    96,    -1,    97,    -1,    60,
++     100,    35,    -1,    60,   204,    -1,    61,   204,    -1,   133,
++     134,    -1,   133,   135,    -1,   133,   136,    -1,   142,    99,
++      -1,   144,   348,    -1,   349,    -1,   348,   349,    -1,    98,
++      -1,     3,   123,   367,   100,   372,     5,   370,   374,    -1,
++       3,   158,   123,   372,     5,   370,    -1,     3,   352,   372,
++       5,   370,   374,    -1,   353,    -1,   352,   353,    -1,   357,
++      -1,   360,    -1,   362,    -1,   363,    -1,     3,   355,   372,
++       5,   370,   374,    -1,   356,    -1,   355,   356,    -1,   363,
++      -1,   360,    -1,   361,    -1,   358,    -1,   137,   367,   100,
++     101,    -1,   138,   367,   100,   101,    -1,   359,   367,   100,
++     101,    -1,   139,    -1,   140,    -1,   141,    -1,   127,   367,
++     365,   380,    -1,   127,   367,   100,   101,    -1,   128,   367,
++     365,   380,    -1,   128,   367,   100,   101,    -1,   132,   367,
++     365,   380,    -1,   132,   367,   100,   101,    -1,   121,   367,
++     100,    -1,   364,   367,   365,    -1,   129,    -1,   130,    -1,
++     131,    -1,   112,    -1,   100,    -1,     3,   157,   367,   100,
++     368,   372,     5,   370,   374,    -1,     3,   158,   157,   372,
++       5,   370,    -1,    -1,   211,    -1,   210,    -1,   209,    -1,
++     208,    -1,   158,    -1,    -1,   159,    -1,   160,    -1,   161,
++      -1,   162,    -1,    51,    -1,   183,   291,    -1,   183,   291,
++     292,    -1,    58,    -1,    39,    -1,    40,    -1,   184,    -1,
++     369,    -1,   369,    -1,    -1,   100,    35,    -1,   100,   100,
++      35,    -1,    -1,   100,    35,    -1,   100,   100,    35,    -1,
++      -1,     4,     3,   192,   373,     5,   371,    -1,     4,     3,
++     193,   373,     5,   371,    -1,     4,     3,   194,   373,     5,
++     371,    -1,     3,     7,   376,    59,   372,     5,   370,   374,
++      -1,     3,     7,   376,    59,    33,    91,   372,     5,   370,
++     374,    -1,     3,   158,   376,    59,   372,     5,   370,    -1,
++      -1,    20,    -1,    21,    -1,     3,   174,   367,   100,   372,
++       5,   370,   374,    -1,     3,   174,   367,   100,   101,   372,
++       5,   370,   374,    -1,     3,   175,   367,   365,   380,   372,
++       5,   370,   374,    -1,     3,   175,   367,   100,   101,   372,
++       5,   370,   374,    -1,     3,   158,   199,   372,     5,   370,
++      -1,    -1,   170,    -1,   171,    -1,   172,    -1,   173,    -1,
++       3,     7,   176,   100,   372,     5,   370,   374,    -1,     3,
++     383,   178,    92,   372,     5,   370,    -1,     3,   383,   178,
++      91,   372,     5,   370,    -1,   180,   383,   178,    92,    -1,
++     180,   383,   178,    91,    -1,    -1,   179,    -1,     3,   177,
++     367,   100,   380,   372,     5,   370,   374,    -1,     3,   158,
++     177,   372,     5,   370,    -1,     3,     7,   150,    91,   372,
++       5,   370,   374,    -1,     3,     7,   150,   100,   372,     5,
++     370,   374,    -1,     3,     7,   151,    91,   372,     5,   370,
++     374,    -1,     3,     7,   151,   100,   372,     5,   370,   374,
++      -1,     3,     7,   152,    91,   372,     5,   370,   374,    -1,
++       3,     7,   152,   100,   372,     5,   370,   374,    -1,    45,
++     187,    -1,    -1,    37,   100,    -1,    37,   100,    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,
+@@ -1156,7 +1366,7 @@
+ };
+ #endif
+ 
+-#if YYDEBUG || YYERROR_VERBOSE || 0
++#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[] =
+@@ -1193,8 +1403,8 @@
+   "UNMONITOR", "PING", "ICMP", "ICMPECHO", "NONEXIST", "EXIST", "INVALID",
+   "DATA", "RECOVERED", "PASSED", "SUCCEEDED", "URL", "CONTENT", "PID",
+   "PPID", "FSFLAG", "REGISTER", "CREDENTIALS", "URLOBJECT", "TARGET",
+-  "TIMESPEC", "HTTPHEADER", "MAXFORWARD", "FIPS", "GREATER", "LESS",
+-  "EQUAL", "NOTEQUAL", "'{'", "'}'", "':'", "'@'", "'['", "']'", "$accept",
++  "TIMESPEC", "HTTPHEADER", "MAXFORWARD", "FIPS", "NOTEQUAL", "EQUAL",
++  "LESS", "GREATER", "'{'", "'}'", "':'", "'@'", "'['", "']'", "$accept",
+   "cfgfile", "statement_list", "statement", "optproclist", "optproc",
+   "optfilelist", "optfile", "optfilesyslist", "optfilesys", "optdirlist",
+   "optdir", "opthostlist", "opthost", "optsystemlist", "optsystem",
+@@ -1227,13 +1437,13 @@
+   "resourceloadavg", "value", "timestamp", "operator", "time", "action",
+   "action1", "action2", "rate1", "rate2", "recovery", "checksum",
+   "hashtype", "inode", "space", "fsflag", "unit", "permission", "match",
+-  "matchflagnot", "size", "uid", "euid", "gid", "icmptype", "reminder", YY_NULLPTR
++  "matchflagnot", "size", "uid", "euid", "gid", "icmptype", "reminder", 0
+ };
+ #endif
+ 
+ # ifdef YYPRINT
+-/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+-   (internal) symbol number NUM (which must be that of a token).  */
++/* 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,
+@@ -1261,120 +1471,127 @@
+ };
+ # endif
+ 
+-#define YYPACT_NINF -679
+-
+-#define yypact_value_is_default(Yystate) \
+-  (!!((Yystate) == (-679)))
+-
+-#define YYTABLE_NINF -226
+-
+-#define yytable_value_is_error(Yytable_value) \
+-  0
++/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
++static const yytype_uint16 yyr1[] =
++{
++       0,   218,   219,   219,   220,   220,   221,   221,   221,   221,
++     221,   221,   221,   221,   221,   221,   221,   221,   221,   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,   223,   223,   223,   223,   223,   224,
++     224,   225,   225,   225,   225,   225,   225,   225,   225,   225,
++     225,   225,   225,   225,   225,   225,   225,   225,   226,   226,
++     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
++     227,   227,   227,   227,   227,   227,   228,   228,   229,   229,
++     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
++     229,   229,   230,   230,   231,   231,   231,   231,   231,   231,
++     231,   231,   231,   231,   231,   231,   232,   232,   233,   233,
++     233,   233,   233,   233,   233,   233,   233,   234,   234,   235,
++     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
++     235,   235,   235,   236,   236,   237,   237,   237,   237,   237,
++     237,   237,   237,   237,   237,   238,   238,   238,   239,   240,
++     240,   241,   242,   243,   244,   244,   244,   245,   245,   245,
++     246,   247,   248,   249,   250,   250,   251,   252,   252,   253,
++     254,   255,   256,   256,   257,   257,   258,   258,   259,   259,
++     259,   259,   260,   260,   261,   261,   262,   262,   262,   263,
++     263,   264,   264,   265,   265,   266,   266,   267,   267,   268,
++     269,   270,   271,   272,   272,   272,   272,   272,   272,   273,
++     272,   274,   272,   275,   272,   276,   272,   272,   277,   277,
++     278,   279,   279,   280,   280,   280,   280,   281,   282,   282,
++     283,   284,   285,   286,   287,   287,   288,   288,   289,   289,
++     290,   290,   291,   291,   292,   292,   293,   293,   294,   294,
++     294,   294,   295,   295,   295,   296,   296,   297,   297,   298,
++     298,   299,   300,   300,   301,   301,   302,   303,   304,   304,
++     304,   304,   305,   305,   306,   306,   306,   306,   306,   306,
++     306,   307,   307,   307,   307,   307,   307,   307,   307,   307,
++     307,   307,   307,   307,   307,   307,   307,   307,   307,   307,
++     307,   307,   307,   307,   307,   307,   307,   307,   307,   307,
++     307,   307,   308,   308,   309,   309,   310,   310,   311,   311,
++     311,   311,   312,   312,   312,   313,   313,   314,   314,   315,
++     315,   315,   315,   315,   316,   317,   318,   319,   320,   320,
++     321,   322,   322,   323,   323,   323,   323,   323,   323,   323,
++     323,   323,   323,   324,   325,   326,   327,   328,   328,   329,
++     329,   330,   330,   331,   331,   332,   332,   333,   333,   334,
++     334,   335,   335,   336,   336,   336,   336,   337,   338,   339,
++     339,   340,   340,   340,   340,   340,   340,   340,   340,   340,
++     340,   340,   340,   340,   340,   340,   340,   340,   340,   340,
++     340,   340,   340,   341,   341,   342,   342,   343,   343,   343,
++     343,   344,   344,   344,   345,   345,   345,   346,   347,   348,
++     348,   349,   350,   350,   351,   352,   352,   353,   353,   353,
++     353,   354,   355,   355,   356,   356,   356,   356,   357,   357,
++     358,   359,   359,   359,   360,   360,   360,   360,   361,   361,
++     362,   363,   364,   364,   364,   365,   365,   366,   366,   367,
++     367,   367,   367,   367,   367,   368,   368,   368,   368,   368,
++     369,   369,   369,   369,   369,   369,   369,   370,   371,   372,
++     372,   372,   373,   373,   373,   374,   374,   374,   374,   375,
++     375,   375,   376,   376,   376,   377,   377,   378,   378,   379,
++     380,   380,   380,   380,   380,   381,   382,   382,   382,   382,
++     383,   383,   384,   384,   385,   385,   386,   386,   387,   387,
++     388,   389,   389,   389
++};
+ 
+-  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+-     STATE-NUM.  */
+-static const yytype_int16 yypact[] =
++/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
++static const yytype_uint8 yyr2[] =
+ {
+-     514,   250,   -51,   -35,   -27,   -11,     3,    42,    52,    65,
+-     145,   514,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,   284,  -679,  -679,  -679,    16,    74,   107,   221,  -679,
+-     176,   198,   226,   279,   292,   180,   137,   196,  -679,   -21,
+-      -3,   372,   377,   393,   411,  -679,   397,   415,  -679,  -679,
+-     451,    96,   700,   716,     7,   286,   286,   343,   286,   -52,
+-     273,   289,   381,   391,   284,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,    37,  -679,  -679,  -679,  -679,  -679,
+-     436,   716,   585,   482,  -679,   456,   -18,     0,  -679,   405,
+-    -679,  -679,   260,  -679,  -679,   424,   425,   407,   475,   196,
+-     349,   331,   339,   612,   530,   485,   491,   367,   379,   517,
+-     519,   523,   524,   286,   237,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,    15,   443,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,    27,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,    26,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,    47,
+-     559,   452,  -679,  -679,   230,  -679,   230,  -679,   230,   609,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,   391,  -679,  -679,
+-     435,   612,   530,   685,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,   256,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,   558,   625,  -679,   551,   -14,   497,   555,  -679,   613,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-     -43,  -679,   513,  -679,   277,   349,   459,  -679,   424,   612,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,   356,  -679,   567,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,   236,   201,   191,   191,
+-     191,  -679,  -679,  -679,   191,   191,   326,   191,   734,  -679,
+-    -679,  -679,  -679,  -679,   191,   101,   191,    62,   191,   452,
+-     492,  -679,   494,   231,   470,   191,   191,   516,   583,   639,
+-     633,   477,   636,   584,   600,   601,   -36,   150,    -6,  -679,
+-    -679,  -679,    -6,  -679,    -6,  -679,  -679,  -679,   612,   422,
+-    -679,   191,  -679,  -679,  -679,   691,  -679,  -679,   191,  -679,
+-    -679,  -679,   191,   579,  -679,   604,   550,  -679,  -679,   615,
+-     277,   548,   617,  -679,   395,  -679,  -679,   610,  -679,  -679,
+-    -679,  -679,  -679,  -679,   540,  -679,  -679,    23,   500,   661,
+-    -679,   680,   620,    73,  -679,   630,   225,   240,   259,   679,
+-    -679,  -679,  -679,  -679,  -679,   628,    41,    59,   637,   645,
+-     600,   600,   646,    -4,  -679,   725,    87,  -679,  -679,   647,
+-     677,   649,   600,   600,   694,   650,   449,   466,   600,   654,
+-     166,  -679,   657,   475,   572,   639,   569,   663,   679,   735,
+-     770,   619,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-     535,   661,   179,  -679,   774,   682,   683,   600,  -679,   497,
+-    -679,   540,  -679,  -679,    20,   689,    33,    51,   545,   556,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-     690,  -679,  -679,   661,   530,  -679,   627,  -679,  -679,   600,
+-     600,   600,   600,   600,   600,   488,    35,  -679,   686,  -679,
+-     260,   695,   260,   696,   698,   779,   787,   401,  -679,   755,
+-      91,  -679,  -679,   600,    28,   401,   796,   799,   600,   260,
+-     600,   600,  -679,  -679,   800,   486,   705,   260,  -679,   600,
+-    -679,   475,   386,   475,  -679,    35,   802,    91,  -679,   661,
+-     530,   726,   260,    91,   727,   600,   824,   277,  -679,   743,
+-     748,   749,   629,   763,   765,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,   380,   380,  -679,   530,  -679,  -679,
+-     852,   854,   864,   865,   868,   869,  -679,  -679,   277,   788,
+-     810,   858,   475,   557,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,    91,    91,  -679,  -679,  -679,  -679,   600,  -679,  -679,
+-    -679,  -679,  -679,   286,  -679,  -679,   874,   897,   812,   899,
+-     600,    91,    91,   900,   600,   901,   902,    91,   600,   903,
+-     600,   600,   904,   600,  -679,  -679,   819,   855,   569,   290,
+-     874,   530,  -679,  -679,  -679,   874,  -679,   906,    91,   540,
+-     825,   859,   860,   861,   862,   931,   863,   866,  -679,  -679,
+-    -679,  -679,  -679,  -679,    91,    91,    91,    91,    91,    91,
+-     540,  -679,  -679,  -679,  -679,  -679,   789,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,   214,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,   751,  -679,  -679,
+-     808,  -679,   855,  -679,  -679,  -679,   952,   220,   956,  -679,
+-      91,   600,    91,   955,  -679,  -679,    91,   957,    91,    91,
+-    -679,   958,    91,   959,   960,    91,   961,  -679,   867,   600,
+-     475,  -679,  -679,  -679,  -679,  -679,    91,  -679,  -679,   862,
+-     862,   862,   931,  -679,   862,  -679,  -679,  -679,  -679,  -679,
+-     874,   874,   874,   874,   874,   874,  -679,   103,   103,   191,
+-     191,   191,   191,   191,   191,   191,   191,   191,   191,   962,
+-    -679,   870,   878,   871,   880,   214,  -679,   167,   764,   882,
+-    -679,   600,    91,   239,   255,   874,   969,   874,    91,  -679,
+-      91,  -679,  -679,    91,   874,    91,    91,   874,    91,  -679,
+-     970,   855,   874,   862,   862,   862,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,   885,   191,   886,   888,  -679,  -679,
+-    -679,  -679,  -679,  -679,   877,   881,   883,   884,   887,   889,
+-     890,   891,   892,   893,   789,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,   894,  -679,  -679,   975,   874,   895,   895,   895,
+-    -679,    91,  -679,   874,   874,   874,  -679,   874,   874,  -679,
+-     874,    91,   600,  -679,  -679,   896,  -679,  -679,    92,   898,
+-     905,   907,   908,   909,   910,   911,   912,   913,   914,  -679,
+-    -679,    91,  -679,    10,   977,   980,   981,   874,  -679,  -679,
+-    -679,  -679,  -679,  -679,   874,   983,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,   874,
+-    -679,   963,    91,    91,    91,  -679,  -679,    91,  -679,  -679,
+-    -679,  -679,  -679,  -679,   874,  -679
++       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,     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,     2,     2,     0,     2,     1,     1,     1,     2,
++       2,     2,     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,     4,     2,     4,     5,     6,     3,     4,     3,     4,
++       3,     4,     1,     2,     1,     2,     1,     1,     2,     2,
++       2,     2,     0,     2,     2,     0,     2,     0,     2,    13,
++      11,    11,    10,     9,     0,     2,     2,     2,     0,     2,
++       4,     2,     0,     2,     0,     1,     1,     1,     1,     1,
++       1,     0,     3,     2,     2,     2,     2,     3,     3,     2,
++       2,     2,     2,     2,     4,     2,     2,     2,     2,     2,
++       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
++       3,     1,     1,     2,     2,     2,     1,     2,     2,     2,
++       2,     2,     0,     2,     2,     0,     2,     0,     2,     1,
++       1,     1,     1,     3,     3,     2,     2,     2,     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,     8,     6,     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,     8,     8,
++       2,     0,     2,     3
+ };
+ 
+-  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+-     Performed when YYTABLE does not specify something else to do.  Zero
+-     means the default is an error.  */
++/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
++   Performed 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,
+@@ -1420,7 +1637,7 @@
+      284,     0,     0,   179,   181,   180,   416,     0,   290,   285,
+      286,   287,   288,   289,   282,   175,   178,     0,     0,   413,
+      390,   532,     0,   371,   244,     0,     0,     0,     0,   278,
+-     474,   470,   471,   472,   473,     0,     0,     0,     0,     0,
++     474,   473,   472,   471,   470,     0,     0,     0,     0,     0,
+      489,   489,     0,     0,   436,     0,     0,   503,   504,     0,
+        0,     0,   489,   489,     0,     0,     0,     0,   489,     0,
+        0,   275,     0,   373,     0,   367,   379,     0,   278,     0,
+@@ -1442,7 +1659,7 @@
+      449,     0,     0,   476,   477,   478,   479,   489,   491,   484,
+      485,   480,   483,     0,   486,   487,   495,     0,     0,     0,
+      489,     0,     0,     0,   489,     0,     0,     0,   489,     0,
+-     489,   489,     0,   489,   381,   382,     0,   375,   379,     0,
++     489,   489,     0,   489,   382,   381,     0,   375,   379,     0,
+      495,   531,   384,   459,   458,   495,   450,     0,     0,   282,
+      216,   217,   218,     0,     0,   231,     0,     0,   212,   195,
+      196,   197,   198,   157,     0,     0,     0,     0,     0,     0,
+@@ -1474,30 +1691,7 @@
+      488,   496,   497,   498,   495,   269
+ };
+ 
+-  /* YYPGOTO[NTERM-NUM].  */
+-static const yytype_int16 yypgoto[] =
+-{
+-    -679,  -679,  -679,   986,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,   926,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,   915,   717,  -679,  -679,  -679,  -679,   919,
+-    -679,  -679,  -679,   498,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -195,
+-    -491,   241,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-     438,   603,   681,   -65,  -201,  -202,  -351,   608,   518,  -679,
+-     945,  -679,  -679,  -679,  -679,  -679,   549,  -472,  -387,   453,
+-    -679,   406,  -679,   227,  -679,  -679,   325,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,   169,   423,  -679,  -679,  -679,
+-     560,  -165,   598,  -108,  -678,   776,   368,  -679,   785,  1026,
+-    -679,  -151,  -263,   -76,   740,  -256,   790,    32,   823,   827,
+-    -679,   813,  -679,  -679,  -679,   693,  -679,  -679,   644,  -679,
+-    -679,  -679,  -203,  -679,  -679,  -177,  -679,  -380,    18,  -319,
+-     487,  -294,  -508,  -332,  -355,  -262,  -560,  -679,   687,  -679,
+-    -679,  -679,    43,   299,  -679,   916,  -679,    13,  -679,   208,
+-    -679,  -210
+-};
+-
+-  /* YYDEFGOTO[NTERM-NUM].  */
++/* YYDEFGOTO[NTERM-NUM].  */
+ static const yytype_int16 yydefgoto[] =
+ {
+       -1,    10,    11,    12,    60,   125,    61,   147,    62,   166,
+@@ -1520,9 +1714,135 @@
+      465,   315
+ };
+ 
+-  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+-     positive, shift that token.  If negative, reduce the rule whose
+-     number is the opposite.  If YYTABLE_NINF, syntax error.  */
++/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
++   STATE-NUM.  */
++#define YYPACT_NINF -679
++static const yytype_int16 yypact[] =
++{
++     514,   250,   -51,   -35,   -27,   -11,     3,    42,    52,    65,
++     145,   514,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,   284,  -679,  -679,  -679,    16,    74,   107,   221,  -679,
++     176,   198,   226,   279,   292,   180,   137,   196,  -679,   -21,
++      -3,   372,   377,   386,   418,  -679,   397,   415,  -679,  -679,
++     451,    96,   700,   716,     7,   286,   286,   343,   286,   -52,
++     273,   289,   390,   382,   284,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,    37,  -679,  -679,  -679,  -679,  -679,
++     436,   716,   585,   482,  -679,   456,   -18,     0,  -679,   405,
++    -679,  -679,   260,  -679,  -679,   424,   425,   407,   475,   196,
++     349,   331,   339,   612,   530,   485,   491,   367,   379,   517,
++     519,   523,   524,   286,   237,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,    15,   443,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,    27,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,    26,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,    47,
++     559,   452,  -679,  -679,   230,  -679,   230,  -679,   230,   609,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,   382,  -679,  -679,
++     435,   612,   530,   685,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,   256,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,   557,   626,  -679,   551,   -14,   497,   555,  -679,   613,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++     -43,  -679,   513,  -679,   277,   349,   459,  -679,   424,   612,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,   356,  -679,   567,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,   236,   201,   191,   191,
++     191,  -679,  -679,  -679,   191,   191,   326,   191,   734,  -679,
++    -679,  -679,  -679,  -679,   191,   101,   191,    62,   191,   452,
++     492,  -679,   494,   231,   470,   191,   191,   516,   583,   639,
++     633,   477,   636,   584,   600,   601,   -36,   150,    -6,  -679,
++    -679,  -679,    -6,  -679,    -6,  -679,  -679,  -679,   612,   422,
++    -679,   191,  -679,  -679,  -679,   691,  -679,  -679,   191,  -679,
++    -679,  -679,   191,   579,  -679,   604,   550,  -679,  -679,   615,
++     277,   548,   617,  -679,   395,  -679,  -679,   610,  -679,  -679,
++    -679,  -679,  -679,  -679,   540,  -679,  -679,    23,   500,   661,
++    -679,   680,   620,    73,  -679,   630,   225,   240,   259,   679,
++    -679,  -679,  -679,  -679,  -679,   628,    41,    59,   637,   645,
++     600,   600,   646,    -4,  -679,   725,    87,  -679,  -679,   647,
++     677,   649,   600,   600,   694,   650,   449,   466,   600,   654,
++     166,  -679,   657,   475,   572,   639,   569,   663,   679,   735,
++     770,   619,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++     535,   661,   179,  -679,   774,   682,   683,   600,  -679,   497,
++    -679,   540,  -679,  -679,    20,   689,    33,    51,   545,   556,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++     690,  -679,  -679,   661,   530,  -679,   625,  -679,  -679,   600,
++     600,   600,   600,   600,   600,   488,    35,  -679,   686,  -679,
++     260,   695,   260,   696,   698,   781,   787,   401,  -679,   755,
++      91,  -679,  -679,   600,    28,   401,   796,   799,   600,   260,
++     600,   600,  -679,  -679,   800,   486,   705,   260,  -679,   600,
++    -679,   475,   381,   475,  -679,    35,   802,    91,  -679,   661,
++     530,   726,   260,    91,   727,   600,   824,   277,  -679,   743,
++     748,   749,   629,   763,   765,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,   380,   380,  -679,   530,  -679,  -679,
++     852,   854,   864,   865,   868,   869,  -679,  -679,   277,   788,
++     810,   858,   475,   564,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,    91,    91,  -679,  -679,  -679,  -679,   600,  -679,  -679,
++    -679,  -679,  -679,   286,  -679,  -679,   874,   897,   812,   899,
++     600,    91,    91,   900,   600,   901,   902,    91,   600,   903,
++     600,   600,   904,   600,  -679,  -679,   819,   855,   569,   290,
++     874,   530,  -679,  -679,  -679,   874,  -679,   906,    91,   540,
++     825,   859,   860,   861,   862,   931,   863,   866,  -679,  -679,
++    -679,  -679,  -679,  -679,    91,    91,    91,    91,    91,    91,
++     540,  -679,  -679,  -679,  -679,  -679,   789,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,   214,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,   751,  -679,  -679,
++     808,  -679,   855,  -679,  -679,  -679,   952,   220,   956,  -679,
++      91,   600,    91,   955,  -679,  -679,    91,   957,    91,    91,
++    -679,   958,    91,   959,   960,    91,   961,  -679,   867,   600,
++     475,  -679,  -679,  -679,  -679,  -679,    91,  -679,  -679,   862,
++     862,   862,   931,  -679,   862,  -679,  -679,  -679,  -679,  -679,
++     874,   874,   874,   874,   874,   874,  -679,   103,   103,   191,
++     191,   191,   191,   191,   191,   191,   191,   191,   191,   962,
++    -679,   870,   878,   871,   880,   214,  -679,   167,   764,   882,
++    -679,   600,    91,   239,   255,   874,   969,   874,    91,  -679,
++      91,  -679,  -679,    91,   874,    91,    91,   874,    91,  -679,
++     970,   855,   874,   862,   862,   862,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,   885,   191,   886,   888,  -679,  -679,
++    -679,  -679,  -679,  -679,   877,   881,   883,   884,   887,   889,
++     890,   891,   892,   893,   789,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,   894,  -679,  -679,   975,   874,   895,   895,   895,
++    -679,    91,  -679,   874,   874,   874,  -679,   874,   874,  -679,
++     874,    91,   600,  -679,  -679,   896,  -679,  -679,    92,   898,
++     905,   907,   908,   909,   910,   911,   912,   913,   914,  -679,
++    -679,    91,  -679,    10,   977,   980,   981,   874,  -679,  -679,
++    -679,  -679,  -679,  -679,   874,   983,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,   874,
++    -679,   963,    91,    91,    91,  -679,  -679,    91,  -679,  -679,
++    -679,  -679,  -679,  -679,   874,  -679
++};
++
++/* YYPGOTO[NTERM-NUM].  */
++static const yytype_int16 yypgoto[] =
++{
++    -679,  -679,  -679,   986,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,   926,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,   915,   717,  -679,  -679,  -679,  -679,   919,
++    -679,  -679,  -679,   498,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -195,
++    -491,   241,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++     438,   603,   681,   -65,  -201,  -202,  -351,   608,   518,  -679,
++     945,  -679,  -679,  -679,  -679,  -679,   549,  -472,  -387,   453,
++    -679,   406,  -679,   227,  -679,  -679,   325,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,   169,   423,  -679,  -679,  -679,
++     560,  -165,   598,  -108,  -678,   776,   368,  -679,   785,  1026,
++    -679,  -151,  -263,   -76,   740,  -256,   790,    32,   823,   827,
++    -679,   813,  -679,  -679,  -679,   693,  -679,  -679,   644,  -679,
++    -679,  -679,  -203,  -679,  -679,  -177,  -679,  -380,    18,  -319,
++     487,  -294,  -508,  -332,  -355,  -262,  -560,  -679,   687,  -679,
++    -679,  -679,    43,   299,  -679,   916,  -679,    13,  -679,   208,
++    -679,  -210
++};
++
++/* 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 YYTABLE_NINF, syntax error.  */
++#define YYTABLE_NINF -226
+ static const yytype_int16 yytable[] =
+ {
+      284,   206,   369,   208,   369,   372,   369,   374,   222,   470,
+@@ -1567,13 +1887,13 @@
+      246,   367,   105,   929,   820,   336,   361,    46,   108,   431,
+      432,   433,   434,    47,   676,   570,   290,   449,   677,   678,
+      494,   495,   291,   118,   393,   292,   201,    71,   119,   337,
+-     496,   497,   498,   212,   213,   214,    72,   121,    73,   944,
+-     271,   272,   273,   274,   120,   201,   207,   597,   122,   223,
++     496,   497,   498,   212,   213,   214,    72,   120,    73,   944,
++     271,   272,   273,   274,   121,   201,   207,   597,   122,   223,
+      408,   409,   410,   411,   412,   413,   865,   867,   868,   869,
+      499,   754,   476,   653,   124,   657,   123,    48,   318,   319,
+      844,   845,   846,   847,   848,   849,   850,   851,   852,   853,
+      320,   321,   290,   633,   634,    65,    66,   211,   291,   293,
+-     215,   292,   294,   131,   151,   170,   188,    44,    67,   216,
++     216,   292,   294,   131,   151,   170,   188,    44,    67,   215,
+       65,    66,   261,   661,    68,   262,    69,    70,   126,   148,
+      167,   185,    44,    67,   722,   270,   295,   283,   296,    68,
+      297,    69,    70,   298,   238,   254,   885,   282,   276,   277,
+@@ -1583,13 +1903,13 @@
+      290,   289,   308,   309,   310,   311,   291,   552,   553,   292,
+      623,   624,   625,   626,   823,   824,   825,   314,   727,   419,
+      590,   591,   295,   616,   296,   618,   297,   316,    72,   298,
+-      73,   592,   593,   317,    71,   290,   443,   648,   249,   609,
+-     610,   291,   644,    72,   292,    73,   654,   655,   299,   300,
++      73,   592,   593,   317,    71,   290,   443,   648,   249,   654,
++     655,   291,   644,    72,   292,    73,   609,   610,   299,   300,
+      651,   942,   943,   301,   302,   303,   905,   906,   304,   322,
+      305,   323,   306,   307,   324,   664,   325,   363,   308,   309,
+      310,   311,   351,   293,    65,    66,   294,     2,     3,     4,
+        5,     6,     7,     8,     9,   481,    44,    67,   940,   940,
+-     940,   364,   821,    68,   376,    69,    70,   378,   395,   394,
++     940,   364,   821,    68,   376,    69,    70,   378,   394,   395,
+      295,   396,   296,   399,   297,   401,   402,   298,   293,   407,
+      416,   294,   290,   127,   149,   168,   186,   421,   291,   458,
+      456,   292,   457,   452,   461,   462,   299,   300,   464,   466,
+@@ -1603,7 +1923,7 @@
+      549,    44,    67,   548,   555,    65,    66,   558,    68,   560,
+       69,    70,   295,   564,   296,   562,   297,    44,    67,   298,
+      566,   227,   237,   253,    68,   567,    69,    70,   568,   573,
+-     585,   596,   574,   575,   621,   200,   599,   615,   299,   300,
++     585,   596,   574,   575,   599,   200,   621,   615,   299,   300,
+      628,   443,   622,   301,   302,   303,   617,   619,   304,   620,
+      305,   641,   306,   307,   642,   647,   650,   659,   308,   309,
+      310,   311,   329,   330,   331,   332,   333,   381,   329,   330,
+@@ -1634,6 +1954,12 @@
+        0,     0,   352
+ };
+ 
++#define yypact_value_is_default(yystate) \
++  ((yystate) == (-679))
++
++#define yytable_value_is_error(yytable_value) \
++  YYID (0)
++
+ static const yytype_int16 yycheck[] =
+ {
+      108,    66,   204,    68,   206,   206,   208,   208,    84,   364,
+@@ -1678,13 +2004,13 @@
+       91,   152,   212,   901,   749,   158,   195,   147,   202,   208,
+      209,   210,   211,   153,    24,   481,    50,   176,    28,    29,
+       15,    16,    56,    41,   158,    59,   179,   133,    41,   182,
+-      25,    26,    27,   134,   135,   136,   142,    16,   144,   937,
+-     170,   171,   172,   173,    41,   179,    93,   513,    41,     3,
++      25,    26,    27,   134,   135,   136,   142,    41,   144,   937,
++     170,   171,   172,   173,    16,   179,    93,   513,    41,     3,
+      163,   164,   165,   166,   167,   168,   801,   192,   193,   194,
+       55,   661,   803,   561,     3,   563,    41,   207,    91,    92,
+      779,   780,   781,   782,   783,   784,   785,   786,   787,   788,
+       91,    92,    50,   183,   184,    39,    40,   204,    56,   123,
+-      99,    59,   126,    60,    61,    62,    63,    51,    52,    98,
++      98,    59,   126,    60,    61,    62,    63,    51,    52,    99,
+       39,    40,    10,   569,    58,    39,    60,    61,    60,    61,
+       62,    63,    51,    52,   612,   100,   150,   100,   152,    58,
+      154,    60,    61,   157,    91,    92,   835,    92,    94,    95,
+@@ -1694,13 +2020,13 @@
+       50,   212,   196,   197,   198,   199,    56,    91,    92,    59,
+      159,   160,   161,   162,   759,   760,   761,    37,   633,   213,
+       25,    26,   150,   530,   152,   532,   154,    92,   142,   157,
+-     144,    25,    26,    92,   133,    50,   100,   101,     3,    32,
+-      33,    56,   549,   142,    59,   144,   210,   211,   176,   177,
++     144,    25,    26,    92,   133,    50,   100,   101,     3,   208,
++     209,    56,   549,   142,    59,   144,    32,    33,   176,   177,
+      557,   933,   934,   181,   182,   183,   868,   869,   186,    92,
+      188,    92,   190,   191,    91,   572,    92,    58,   196,   197,
+      198,   199,   179,   123,    39,    40,   126,   113,   114,   115,
+      116,   117,   118,   119,   120,   213,    51,    52,   932,   933,
+-     934,   189,   750,    58,    35,    60,    61,   212,    23,    91,
++     934,   189,   750,    58,    35,    60,    61,   212,    91,    23,
+      150,   100,   152,   156,   154,   100,    43,   157,   123,   146,
+      201,   126,    50,    60,    61,    62,    63,   100,    56,   199,
+      178,    59,   178,   157,    91,    36,   176,   177,    45,   202,
+@@ -1714,7 +2040,7 @@
+      100,    51,    52,    59,   100,    39,    40,   100,    58,   187,
+       60,    61,   150,   100,   152,   196,   154,    51,    52,   157,
+       35,    90,    91,    92,    58,     5,    60,    61,   159,     5,
+-      91,    91,   100,   100,     5,   100,   159,   101,   176,   177,
++      91,    91,   100,   100,   159,   100,     5,   101,   176,   177,
+       35,   100,     5,   181,   182,   183,   101,   101,   186,   101,
+      188,     5,   190,   191,     5,     5,   101,     5,   196,   197,
+      198,   199,   127,   128,   129,   130,   131,   132,   127,   128,
+@@ -1745,8 +2071,8 @@
+       -1,    -1,   146
+ };
+ 
+-  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+-     symbol of state STATE-NUM.  */
++/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
++   symbol of state STATE-NUM.  */
+ static const yytype_uint16 yystos[] =
+ {
+        0,     8,   113,   114,   115,   116,   117,   118,   119,   120,
+@@ -1814,7 +2140,7 @@
+      101,     5,     5,   159,   160,   161,   162,   368,    35,    39,
+       40,    51,    58,   183,   184,   369,   370,   372,    33,   372,
+      368,     5,     5,   372,   380,   372,   372,     5,   101,   372,
+-     101,   380,   372,   331,   210,   211,   335,   331,   307,     5,
++     101,   380,   372,   331,   208,   209,   335,   331,   307,     5,
+      370,   341,   389,   101,   380,   370,   101,   372,     5,   306,
+       92,    92,    92,   214,   273,    91,    24,    28,    29,   262,
+      269,   270,   271,   389,     5,     5,     5,     5,     5,     5,
+@@ -1846,159 +2172,94 @@
+      369,   371,   371,   371,   370,   374
+ };
+ 
+-  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+-static const yytype_uint16 yyr1[] =
+-{
+-       0,   218,   219,   219,   220,   220,   221,   221,   221,   221,
+-     221,   221,   221,   221,   221,   221,   221,   221,   221,   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,   223,   223,   223,   223,   223,   224,
+-     224,   225,   225,   225,   225,   225,   225,   225,   225,   225,
+-     225,   225,   225,   225,   225,   225,   225,   225,   226,   226,
+-     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
+-     227,   227,   227,   227,   227,   227,   228,   228,   229,   229,
+-     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
+-     229,   229,   230,   230,   231,   231,   231,   231,   231,   231,
+-     231,   231,   231,   231,   231,   231,   232,   232,   233,   233,
+-     233,   233,   233,   233,   233,   233,   233,   234,   234,   235,
+-     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
+-     235,   235,   235,   236,   236,   237,   237,   237,   237,   237,
+-     237,   237,   237,   237,   237,   238,   238,   238,   239,   240,
+-     240,   241,   242,   243,   244,   244,   244,   245,   245,   245,
+-     246,   247,   248,   249,   250,   250,   251,   252,   252,   253,
+-     254,   255,   256,   256,   257,   257,   258,   258,   259,   259,
+-     259,   259,   260,   260,   261,   261,   262,   262,   262,   263,
+-     263,   264,   264,   265,   265,   266,   266,   267,   267,   268,
+-     269,   270,   271,   272,   272,   272,   272,   272,   272,   273,
+-     272,   274,   272,   275,   272,   276,   272,   272,   277,   277,
+-     278,   279,   279,   280,   280,   280,   280,   281,   282,   282,
+-     283,   284,   285,   286,   287,   287,   288,   288,   289,   289,
+-     290,   290,   291,   291,   292,   292,   293,   293,   294,   294,
+-     294,   294,   295,   295,   295,   296,   296,   297,   297,   298,
+-     298,   299,   300,   300,   301,   301,   302,   303,   304,   304,
+-     304,   304,   305,   305,   306,   306,   306,   306,   306,   306,
+-     306,   307,   307,   307,   307,   307,   307,   307,   307,   307,
+-     307,   307,   307,   307,   307,   307,   307,   307,   307,   307,
+-     307,   307,   307,   307,   307,   307,   307,   307,   307,   307,
+-     307,   307,   308,   308,   309,   309,   310,   310,   311,   311,
+-     311,   311,   312,   312,   312,   313,   313,   314,   314,   315,
+-     315,   315,   315,   315,   316,   317,   318,   319,   320,   320,
+-     321,   322,   322,   323,   323,   323,   323,   323,   323,   323,
+-     323,   323,   323,   324,   325,   326,   327,   328,   328,   329,
+-     329,   330,   330,   331,   331,   332,   332,   333,   333,   334,
+-     334,   335,   335,   336,   336,   336,   336,   337,   338,   339,
+-     339,   340,   340,   340,   340,   340,   340,   340,   340,   340,
+-     340,   340,   340,   340,   340,   340,   340,   340,   340,   340,
+-     340,   340,   340,   341,   341,   342,   342,   343,   343,   343,
+-     343,   344,   344,   344,   345,   345,   345,   346,   347,   348,
+-     348,   349,   350,   350,   351,   352,   352,   353,   353,   353,
+-     353,   354,   355,   355,   356,   356,   356,   356,   357,   357,
+-     358,   359,   359,   359,   360,   360,   360,   360,   361,   361,
+-     362,   363,   364,   364,   364,   365,   365,   366,   366,   367,
+-     367,   367,   367,   367,   367,   368,   368,   368,   368,   368,
+-     369,   369,   369,   369,   369,   369,   369,   370,   371,   372,
+-     372,   372,   373,   373,   373,   374,   374,   374,   374,   375,
+-     375,   375,   376,   376,   376,   377,   377,   378,   378,   379,
+-     380,   380,   380,   380,   380,   381,   382,   382,   382,   382,
+-     383,   383,   384,   384,   385,   385,   386,   386,   387,   387,
+-     388,   389,   389,   389
+-};
++#define yyerrok		(yyerrstatus = 0)
++#define yyclearin	(yychar = YYEMPTY)
++#define YYEMPTY		(-2)
++#define YYEOF		0
++
++#define YYACCEPT	goto yyacceptlab
++#define YYABORT		goto yyabortlab
++#define YYERROR		goto yyerrorlab
++
++
++/* Like YYERROR except do call yyerror.  This remains here temporarily
++   to ease the transition to the new meaning of YYERROR, for GCC.
++   Once GCC version 2 has supplanted version 1, this can go.  However,
++   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
++   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
++   discussed.  */
++
++#define YYFAIL		goto yyerrlab
++#if defined YYFAIL
++  /* This is here to suppress warnings from the GCC cpp's
++     -Wunused-macros.  Normally we don't worry about that warning, but
++     some users do, and we want to make it easy for users to remove
++     YYFAIL uses, which will produce warnings from Bison 2.5.  */
++#endif
+ 
+-  /* YYR2[YYN] -- Number of symbols on the 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,     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,     2,     2,     0,     2,     1,     1,     1,     2,
+-       2,     2,     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,     4,     2,     4,     5,     6,     3,     4,     3,     4,
+-       3,     4,     1,     2,     1,     2,     1,     1,     2,     2,
+-       2,     2,     0,     2,     2,     0,     2,     0,     2,    13,
+-      11,    11,    10,     9,     0,     2,     2,     2,     0,     2,
+-       4,     2,     0,     2,     0,     1,     1,     1,     1,     1,
+-       1,     0,     3,     2,     2,     2,     2,     3,     3,     2,
+-       2,     2,     2,     2,     4,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
+-       3,     1,     1,     2,     2,     2,     1,     2,     2,     2,
+-       2,     2,     0,     2,     2,     0,     2,     0,     2,     1,
+-       1,     1,     1,     3,     3,     2,     2,     2,     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,     8,     6,     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,     8,     8,
+-       2,     0,     2,     3
+-};
++#define YYRECOVERING()  (!!yyerrstatus)
+ 
++#define YYBACKUP(Token, Value)					\
++do								\
++  if (yychar == YYEMPTY && yylen == 1)				\
++    {								\
++      yychar = (Token);						\
++      yylval = (Value);						\
++      YYPOPSTACK (1);						\
++      goto yybackup;						\
++    }								\
++  else								\
++    {								\
++      yyerror (YY_("syntax error: cannot back up")); \
++      YYERROR;							\
++    }								\
++while (YYID (0))
++
++
++#define YYTERROR	1
++#define YYERRCODE	256
++
++
++/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
++   If N is 0, then set CURRENT to the empty location which ends
++   the previous symbol: RHS[0] (always defined).  */
++
++#define YYRHSLOC(Rhs, K) ((Rhs)[K])
++#ifndef YYLLOC_DEFAULT
++# define YYLLOC_DEFAULT(Current, Rhs, N)				\
++    do									\
++      if (YYID (N))                                                    \
++	{								\
++	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
++	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
++	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
++	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
++	}								\
++      else								\
++	{								\
++	  (Current).first_line   = (Current).last_line   =		\
++	    YYRHSLOC (Rhs, 0).last_line;				\
++	  (Current).first_column = (Current).last_column =		\
++	    YYRHSLOC (Rhs, 0).last_column;				\
++	}								\
++    while (YYID (0))
++#endif
+ 
+-#define yyerrok         (yyerrstatus = 0)
+-#define yyclearin       (yychar = YYEMPTY)
+-#define YYEMPTY         (-2)
+-#define YYEOF           0
+-
+-#define YYACCEPT        goto yyacceptlab
+-#define YYABORT         goto yyabortlab
+-#define YYERROR         goto yyerrorlab
+ 
++/* This macro is provided for backward compatibility. */
+ 
+-#define YYRECOVERING()  (!!yyerrstatus)
++#ifndef YY_LOCATION_PRINT
++# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
++#endif
+ 
+-#define YYBACKUP(Token, Value)                                  \
+-do                                                              \
+-  if (yychar == YYEMPTY)                                        \
+-    {                                                           \
+-      yychar = (Token);                                         \
+-      yylval = (Value);                                         \
+-      YYPOPSTACK (yylen);                                       \
+-      yystate = *yyssp;                                         \
+-      goto yybackup;                                            \
+-    }                                                           \
+-  else                                                          \
+-    {                                                           \
+-      yyerror (YY_("syntax error: cannot back up")); \
+-      YYERROR;                                                  \
+-    }                                                           \
+-while (0)
+-
+-/* Error token number */
+-#define YYTERROR        1
+-#define YYERRCODE       256
+ 
++/* YYLEX -- calling `yylex' with the right arguments.  */
+ 
++#ifdef YYLEX_PARAM
++# define YYLEX yylex (YYLEX_PARAM)
++#else
++# define YYLEX yylex ()
++#endif
+ 
+ /* Enable debugging if requested.  */
+ #if YYDEBUG
+@@ -2008,46 +2269,54 @@
+ #  define YYFPRINTF fprintf
+ # endif
+ 
+-# define YYDPRINTF(Args)                        \
+-do {                                            \
+-  if (yydebug)                                  \
+-    YYFPRINTF Args;                             \
+-} while (0)
+-
+-/* This macro is provided for backward compatibility. */
+-#ifndef YY_LOCATION_PRINT
+-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+-#endif
++# define YYDPRINTF(Args)			\
++do {						\
++  if (yydebug)					\
++    YYFPRINTF Args;				\
++} while (YYID (0))
++
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
++do {									  \
++  if (yydebug)								  \
++    {									  \
++      YYFPRINTF (stderr, "%s ", Title);					  \
++      yy_symbol_print (stderr,						  \
++		  Type, Value); \
++      YYFPRINTF (stderr, "\n");						  \
++    }									  \
++} while (YYID (0))
+ 
+ 
+-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
+-do {                                                                      \
+-  if (yydebug)                                                            \
+-    {                                                                     \
+-      YYFPRINTF (stderr, "%s ", Title);                                   \
+-      yy_symbol_print (stderr,                                            \
+-                  Type, Value); \
+-      YYFPRINTF (stderr, "\n");                                           \
+-    }                                                                     \
+-} while (0)
+-
+-
+-/*----------------------------------------.
+-| Print this symbol's value on YYOUTPUT.  |
+-`----------------------------------------*/
++/*--------------------------------.
++| Print this symbol on YYOUTPUT.  |
++`--------------------------------*/
+ 
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_value_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
+ {
+-  FILE *yyo = yyoutput;
+-  YYUSE (yyo);
+   if (!yyvaluep)
+     return;
+ # ifdef YYPRINT
+   if (yytype < YYNTOKENS)
+     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++# else
++  YYUSE (yyoutput);
+ # endif
+-  YYUSE (yytype);
++  switch (yytype)
++    {
++      default:
++	break;
++    }
+ }
+ 
+ 
+@@ -2055,11 +2324,22 @@
+ | Print this symbol on YYOUTPUT.  |
+ `--------------------------------*/
+ 
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
+ {
+-  YYFPRINTF (yyoutput, "%s %s (",
+-             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
++  if (yytype < YYNTOKENS)
++    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
++  else
++    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+ 
+   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+   YYFPRINTF (yyoutput, ")");
+@@ -2070,8 +2350,16 @@
+ | TOP (included).                                                   |
+ `------------------------------------------------------------------*/
+ 
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+ yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
++#else
++static void
++yy_stack_print (yybottom, yytop)
++    yytype_int16 *yybottom;
++    yytype_int16 *yytop;
++#endif
+ {
+   YYFPRINTF (stderr, "Stack now");
+   for (; yybottom <= yytop; yybottom++)
+@@ -2082,42 +2370,49 @@
+   YYFPRINTF (stderr, "\n");
+ }
+ 
+-# define YY_STACK_PRINT(Bottom, Top)                            \
+-do {                                                            \
+-  if (yydebug)                                                  \
+-    yy_stack_print ((Bottom), (Top));                           \
+-} while (0)
++# define YY_STACK_PRINT(Bottom, Top)				\
++do {								\
++  if (yydebug)							\
++    yy_stack_print ((Bottom), (Top));				\
++} while (YYID (0))
+ 
+ 
+ /*------------------------------------------------.
+ | Report that the YYRULE is going to be reduced.  |
+ `------------------------------------------------*/
+ 
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static void
++yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
++#else
+ static void
+-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
++yy_reduce_print (yyvsp, yyrule)
++    YYSTYPE *yyvsp;
++    int yyrule;
++#endif
+ {
+-  unsigned long int yylno = yyrline[yyrule];
+   int yynrhs = yyr2[yyrule];
+   int yyi;
++  unsigned long int yylno = yyrline[yyrule];
+   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+-             yyrule - 1, yylno);
++	     yyrule - 1, yylno);
+   /* The symbols being reduced.  */
+   for (yyi = 0; yyi < yynrhs; yyi++)
+     {
+       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
+-      yy_symbol_print (stderr,
+-                       yystos[yyssp[yyi + 1 - yynrhs]],
+-                       &(yyvsp[(yyi + 1) - (yynrhs)])
+-                                              );
++      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
++		       &(yyvsp[(yyi + 1) - (yynrhs)])
++		       		       );
+       YYFPRINTF (stderr, "\n");
+     }
+ }
+ 
+-# define YY_REDUCE_PRINT(Rule)          \
+-do {                                    \
+-  if (yydebug)                          \
+-    yy_reduce_print (yyssp, yyvsp, Rule); \
+-} while (0)
++# define YY_REDUCE_PRINT(Rule)		\
++do {					\
++  if (yydebug)				\
++    yy_reduce_print (yyvsp, Rule); \
++} while (YYID (0))
+ 
+ /* Nonzero means print parse trace.  It is left uninitialized so that
+    multiple parsers can coexist.  */
+@@ -2131,7 +2426,7 @@
+ 
+ 
+ /* YYINITDEPTH -- initial size of the parser's stacks.  */
+-#ifndef YYINITDEPTH
++#ifndef	YYINITDEPTH
+ # define YYINITDEPTH 200
+ #endif
+ 
+@@ -2154,8 +2449,15 @@
+ #   define yystrlen strlen
+ #  else
+ /* Return the length of YYSTR.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static YYSIZE_T
+ yystrlen (const char *yystr)
++#else
++static YYSIZE_T
++yystrlen (yystr)
++    const char *yystr;
++#endif
+ {
+   YYSIZE_T yylen;
+   for (yylen = 0; yystr[yylen]; yylen++)
+@@ -2171,8 +2473,16 @@
+ #  else
+ /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+    YYDEST.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static char *
+ yystpcpy (char *yydest, const char *yysrc)
++#else
++static char *
++yystpcpy (yydest, yysrc)
++    char *yydest;
++    const char *yysrc;
++#endif
+ {
+   char *yyd = yydest;
+   const char *yys = yysrc;
+@@ -2202,27 +2512,27 @@
+       char const *yyp = yystr;
+ 
+       for (;;)
+-        switch (*++yyp)
+-          {
+-          case '\'':
+-          case ',':
+-            goto do_not_strip_quotes;
+-
+-          case '\\':
+-            if (*++yyp != '\\')
+-              goto do_not_strip_quotes;
+-            /* Fall through.  */
+-          default:
+-            if (yyres)
+-              yyres[yyn] = *yyp;
+-            yyn++;
+-            break;
+-
+-          case '"':
+-            if (yyres)
+-              yyres[yyn] = '\0';
+-            return yyn;
+-          }
++	switch (*++yyp)
++	  {
++	  case '\'':
++	  case ',':
++	    goto do_not_strip_quotes;
++
++	  case '\\':
++	    if (*++yyp != '\\')
++	      goto do_not_strip_quotes;
++	    /* Fall through.  */
++	  default:
++	    if (yyres)
++	      yyres[yyn] = *yyp;
++	    yyn++;
++	    break;
++
++	  case '"':
++	    if (yyres)
++	      yyres[yyn] = '\0';
++	    return yyn;
++	  }
+     do_not_strip_quotes: ;
+     }
+ 
+@@ -2245,11 +2555,12 @@
+ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+                 yytype_int16 *yyssp, int yytoken)
+ {
+-  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
++  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+   YYSIZE_T yysize = yysize0;
++  YYSIZE_T yysize1;
+   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+   /* Internationalized format string. */
+-  const char *yyformat = YY_NULLPTR;
++  const char *yyformat = 0;
+   /* Arguments of yyformat. */
+   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+   /* Number of reported tokens (one for the "unexpected", one per
+@@ -2257,6 +2568,10 @@
+   int yycount = 0;
+ 
+   /* There are many possibilities here to consider:
++     - Assume YYFAIL is not used.  It's too flawed to consider.  See
++       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
++       for details.  YYERROR is fine as it does not invoke this
++       function.
+      - If this state is a consistent state with a default action, then
+        the only way this function was invoked is if the default action
+        is an error action.  In that case, don't check for expected
+@@ -2305,13 +2620,11 @@
+                     break;
+                   }
+                 yyarg[yycount++] = yytname[yyx];
+-                {
+-                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
+-                  if (! (yysize <= yysize1
+-                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+-                    return 2;
+-                  yysize = yysize1;
+-                }
++                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
++                if (! (yysize <= yysize1
++                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
++                  return 2;
++                yysize = yysize1;
+               }
+         }
+     }
+@@ -2331,12 +2644,10 @@
+ # undef YYCASE_
+     }
+ 
+-  {
+-    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+-    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+-      return 2;
+-    yysize = yysize1;
+-  }
++  yysize1 = yysize + yystrlen (yyformat);
++  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
++    return 2;
++  yysize = yysize1;
+ 
+   if (*yymsg_alloc < yysize)
+     {
+@@ -2373,20 +2684,48 @@
+ | Release the memory associated to this symbol.  |
+ `-----------------------------------------------*/
+ 
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
++#else
++static void
++yydestruct (yymsg, yytype, yyvaluep)
++    const char *yymsg;
++    int yytype;
++    YYSTYPE *yyvaluep;
++#endif
+ {
+   YYUSE (yyvaluep);
++
+   if (!yymsg)
+     yymsg = "Deleting";
+   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ 
+-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+-  YYUSE (yytype);
+-  YY_IGNORE_MAYBE_UNINITIALIZED_END
++  switch (yytype)
++    {
++
++      default:
++	break;
++    }
+ }
+ 
+ 
++/* Prevent warnings from -Wmissing-prototypes.  */
++#ifdef YYPARSE_PARAM
++#if defined __STDC__ || defined __cplusplus
++int yyparse (void *YYPARSE_PARAM);
++#else
++int yyparse ();
++#endif
++#else /* ! YYPARSE_PARAM */
++#if defined __STDC__ || defined __cplusplus
++int yyparse (void);
++#else
++int yyparse ();
++#endif
++#endif /* ! YYPARSE_PARAM */
+ 
+ 
+ /* The lookahead symbol.  */
+@@ -2394,6 +2733,7 @@
+ 
+ /* The semantic value of the lookahead symbol.  */
+ YYSTYPE yylval;
++
+ /* Number of syntax errors so far.  */
+ int yynerrs;
+ 
+@@ -2402,18 +2742,37 @@
+ | yyparse.  |
+ `----------*/
+ 
++#ifdef YYPARSE_PARAM
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++int
++yyparse (void *YYPARSE_PARAM)
++#else
++int
++yyparse (YYPARSE_PARAM)
++    void *YYPARSE_PARAM;
++#endif
++#else /* ! YYPARSE_PARAM */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ int
+ yyparse (void)
++#else
++int
++yyparse ()
++
++#endif
++#endif
+ {
+     int yystate;
+     /* Number of tokens to shift before error messages enabled.  */
+     int yyerrstatus;
+ 
+     /* The stacks and their tools:
+-       'yyss': related to states.
+-       'yyvs': related to semantic values.
++       `yyss': related to states.
++       `yyvs': related to semantic values.
+ 
+-       Refer to the stacks through separate pointers, to allow yyoverflow
++       Refer to the stacks thru separate pointers, to allow yyoverflow
+        to reallocate them elsewhere.  */
+ 
+     /* The state stack.  */
+@@ -2431,7 +2790,7 @@
+   int yyn;
+   int yyresult;
+   /* Lookahead token as an internal (translated) token number.  */
+-  int yytoken = 0;
++  int yytoken;
+   /* The variables used to return semantic value and location from the
+      action routines.  */
+   YYSTYPE yyval;
+@@ -2449,8 +2808,9 @@
+      Keep to zero when no symbol should be popped.  */
+   int yylen = 0;
+ 
+-  yyssp = yyss = yyssa;
+-  yyvsp = yyvs = yyvsa;
++  yytoken = 0;
++  yyss = yyssa;
++  yyvs = yyvsa;
+   yystacksize = YYINITDEPTH;
+ 
+   YYDPRINTF ((stderr, "Starting parse\n"));
+@@ -2459,6 +2819,14 @@
+   yyerrstatus = 0;
+   yynerrs = 0;
+   yychar = YYEMPTY; /* Cause a token to be read.  */
++
++  /* Initialize stack pointers.
++     Waste one element of value and location stack
++     so that they stay on the same level as the state stack.
++     The wasted elements are never initialized.  */
++  yyssp = yyss;
++  yyvsp = yyvs;
++
+   goto yysetstate;
+ 
+ /*------------------------------------------------------------.
+@@ -2479,23 +2847,23 @@
+ 
+ #ifdef yyoverflow
+       {
+-        /* Give user a chance to reallocate the stack.  Use copies of
+-           these so that the &'s don't force the real ones into
+-           memory.  */
+-        YYSTYPE *yyvs1 = yyvs;
+-        yytype_int16 *yyss1 = yyss;
+-
+-        /* Each stack pointer address is followed by the size of the
+-           data in use in that stack, in bytes.  This used to be a
+-           conditional around just the two extra args, but that might
+-           be undefined if yyoverflow is a macro.  */
+-        yyoverflow (YY_("memory exhausted"),
+-                    &yyss1, yysize * sizeof (*yyssp),
+-                    &yyvs1, yysize * sizeof (*yyvsp),
+-                    &yystacksize);
++	/* Give user a chance to reallocate the stack.  Use copies of
++	   these so that the &'s don't force the real ones into
++	   memory.  */
++	YYSTYPE *yyvs1 = yyvs;
++	yytype_int16 *yyss1 = yyss;
++
++	/* Each stack pointer address is followed by the size of the
++	   data in use in that stack, in bytes.  This used to be a
++	   conditional around just the two extra args, but that might
++	   be undefined if yyoverflow is a macro.  */
++	yyoverflow (YY_("memory exhausted"),
++		    &yyss1, yysize * sizeof (*yyssp),
++		    &yyvs1, yysize * sizeof (*yyvsp),
++		    &yystacksize);
+ 
+-        yyss = yyss1;
+-        yyvs = yyvs1;
++	yyss = yyss1;
++	yyvs = yyvs1;
+       }
+ #else /* no yyoverflow */
+ # ifndef YYSTACK_RELOCATE
+@@ -2503,22 +2871,22 @@
+ # else
+       /* Extend the stack our own way.  */
+       if (YYMAXDEPTH <= yystacksize)
+-        goto yyexhaustedlab;
++	goto yyexhaustedlab;
+       yystacksize *= 2;
+       if (YYMAXDEPTH < yystacksize)
+-        yystacksize = YYMAXDEPTH;
++	yystacksize = YYMAXDEPTH;
+ 
+       {
+-        yytype_int16 *yyss1 = yyss;
+-        union yyalloc *yyptr =
+-          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+-        if (! yyptr)
+-          goto yyexhaustedlab;
+-        YYSTACK_RELOCATE (yyss_alloc, yyss);
+-        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
++	yytype_int16 *yyss1 = yyss;
++	union yyalloc *yyptr =
++	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
++	if (! yyptr)
++	  goto yyexhaustedlab;
++	YYSTACK_RELOCATE (yyss_alloc, yyss);
++	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+ #  undef YYSTACK_RELOCATE
+-        if (yyss1 != yyssa)
+-          YYSTACK_FREE (yyss1);
++	if (yyss1 != yyssa)
++	  YYSTACK_FREE (yyss1);
+       }
+ # endif
+ #endif /* no yyoverflow */
+@@ -2527,10 +2895,10 @@
+       yyvsp = yyvs + yysize - 1;
+ 
+       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+-                  (unsigned long int) yystacksize));
++		  (unsigned long int) yystacksize));
+ 
+       if (yyss + yystacksize - 1 <= yyssp)
+-        YYABORT;
++	YYABORT;
+     }
+ 
+   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+@@ -2559,7 +2927,7 @@
+   if (yychar == YYEMPTY)
+     {
+       YYDPRINTF ((stderr, "Reading a token: "));
+-      yychar = yylex ();
++      yychar = YYLEX;
+     }
+ 
+   if (yychar <= YYEOF)
+@@ -2599,9 +2967,7 @@
+   yychar = YYEMPTY;
+ 
+   yystate = yyn;
+-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+   *++yyvsp = yylval;
+-  YY_IGNORE_MAYBE_UNINITIALIZED_END
+ 
+   goto yynewstate;
+ 
+@@ -2624,7 +2990,7 @@
+   yylen = yyr2[yyn];
+ 
+   /* If YYLEN is nonzero, implement the default value of the action:
+-     '$$ = $1'.
++     `$$ = $1'.
+ 
+      Otherwise, the following line sets YYVAL to garbage.
+      This behavior is undocumented and Bison
+@@ -2638,195 +3004,218 @@
+   switch (yyn)
+     {
+         case 155:
+-#line 497 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 497 "src/p.y"
+     {
+                    mailset.events = Event_All;
+-                    addmail((yyvsp[-2].string), &mailset, &Run.maillist);
++                    addmail((yyvsp[(2) - (4)].string), &mailset, &Run.maillist);
+                   }
+-#line 2646 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 156:
+-#line 501 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 501 "src/p.y"
+     {
+-                    addmail((yyvsp[-5].string), &mailset, &Run.maillist);
++                    addmail((yyvsp[(2) - (7)].string), &mailset, &Run.maillist);
+                   }
+-#line 2654 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 157:
+-#line 504 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 504 "src/p.y"
+     {
+                    mailset.events = ~mailset.events;
+-                   addmail((yyvsp[-6].string), &mailset, &Run.maillist);
++                   addmail((yyvsp[(2) - (8)].string), &mailset, &Run.maillist);
+                   }
+-#line 2663 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 158:
+-#line 510 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 510 "src/p.y"
+     {
+                     if (!Run.isdaemon || ihp.daemon) {
+                       ihp.daemon     = TRUE;
+                       Run.isdaemon   = TRUE;
+-                      Run.polltime   = (yyvsp[-1].number);
+-                      Run.startdelay = (yyvsp[0].number);
++                      Run.polltime   = (yyvsp[(3) - (4)].number);
++                      Run.startdelay = (yyvsp[(4) - (4)].number);
+                     }
+                   }
+-#line 2676 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 159:
+-#line 520 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 520 "src/p.y"
+     { (yyval.number) = START_DELAY; }
+-#line 2682 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 160:
+-#line 521 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.number) = (yyvsp[0].number); }
+-#line 2688 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 521 "src/p.y"
++    { (yyval.number) = (yyvsp[(3) - (3)].number); }
+     break;
+ 
+   case 161:
+-#line 524 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 524 "src/p.y"
+     {
+-                    Run.expectbuffer = (yyvsp[-1].number) * (yyvsp[0].number);
++                    Run.expectbuffer = (yyvsp[(3) - (4)].number) * (yyvsp[(4) - (4)].number);
+                     if (Run.expectbuffer > EXPECT_BUFFER_MAX)
+                         yyerror("Maximum value for expect buffer is 100 KB");
+                   }
+-#line 2698 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 162:
+-#line 531 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 531 "src/p.y"
+     {
+                     Run.init = TRUE;
+                   }
+-#line 2706 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 163:
+-#line 536 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 536 "src/p.y"
+     {
+                   #ifdef OPENSSL_FIPS
+                     Run.fipsEnabled = TRUE;
+                   #endif
+                   }
+-#line 2716 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 164:
+-#line 543 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 543 "src/p.y"
+     {
+                    if (!Run.logfile || ihp.logfile) {
+                      ihp.logfile = TRUE;
+-                     setlogfile((yyvsp[0].string));
++                     setlogfile((yyvsp[(3) - (3)].string));
+                      Run.use_syslog = FALSE;
+                      Run.dolog =TRUE;
+                    }
+                   }
+-#line 2729 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 165:
+-#line 551 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 551 "src/p.y"
+     {
+                     setsyslog(NULL);
+                   }
+-#line 2737 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 166:
+-#line 554 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 554 "src/p.y"
+     {
+-                    setsyslog((yyvsp[0].string)); FREE((yyvsp[0].string));
++                    setsyslog((yyvsp[(5) - (5)].string)); FREE((yyvsp[(5) - (5)].string));
+                   }
+-#line 2745 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 167:
+-#line 559 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 559 "src/p.y"
+     {
+-                    Run.eventlist_dir = (yyvsp[0].string);
++                    Run.eventlist_dir = (yyvsp[(4) - (4)].string);
+                   }
+-#line 2753 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 168:
+-#line 562 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 562 "src/p.y"
+     {
+-                    Run.eventlist_dir = (yyvsp[-2].string);
+-                    Run.eventlist_slots = (yyvsp[0].number);
++                    Run.eventlist_dir = (yyvsp[(4) - (6)].string);
++                    Run.eventlist_slots = (yyvsp[(6) - (6)].number);
+                   }
+-#line 2762 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 169:
+-#line 566 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 566 "src/p.y"
+     {
+                     Run.eventlist_dir = Str_dup(MYEVENTLISTBASE);
+-                    Run.eventlist_slots = (yyvsp[0].number);
++                    Run.eventlist_slots = (yyvsp[(4) - (4)].number);
+                   }
+-#line 2771 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 170:
+-#line 572 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 572 "src/p.y"
+     {
+-                    Run.idfile = (yyvsp[0].string);
++                    Run.idfile = (yyvsp[(3) - (3)].string);
+                   }
+-#line 2779 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 171:
+-#line 577 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 577 "src/p.y"
+     {
+-                    Run.statefile = (yyvsp[0].string);
++                    Run.statefile = (yyvsp[(3) - (3)].string);
+                   }
+-#line 2787 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 172:
+-#line 582 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 582 "src/p.y"
+     {
+                    if (!Run.pidfile || ihp.pidfile) {
+                      ihp.pidfile = TRUE;
+-                     setpidfile((yyvsp[0].string));
++                     setpidfile((yyvsp[(3) - (3)].string));
+                    }
+                  }
+-#line 2798 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 176:
+-#line 597 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 597 "src/p.y"
+     {
+-                    check_hostname(((yyvsp[-3].url))->hostname);
+-                    addmmonit((yyvsp[-3].url), (yyvsp[-2].number), (yyvsp[-1].number), (yyvsp[0].string));
++                    check_hostname(((yyvsp[(1) - (4)].url))->hostname);
++                    addmmonit((yyvsp[(1) - (4)].url), (yyvsp[(2) - (4)].number), (yyvsp[(3) - (4)].number), (yyvsp[(4) - (4)].string));
+                   }
+-#line 2807 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 178:
+-#line 604 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 604 "src/p.y"
+     {
+                     Run.dommonitcredentials = FALSE;
+                   }
+-#line 2815 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 179:
+-#line 609 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 609 "src/p.y"
+     {
+-                   if (((yyvsp[-1].number)) > SMTP_TIMEOUT)
+-                     Run.mailserver_timeout = (yyvsp[-1].number);
+-                   Run.mail_hostname = (yyvsp[0].string);
++                   if (((yyvsp[(4) - (5)].number)) > SMTP_TIMEOUT)
++                     Run.mailserver_timeout = (yyvsp[(4) - (5)].number);
++                   Run.mail_hostname = (yyvsp[(5) - (5)].string);
+                   }
+-#line 2825 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 180:
+-#line 616 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 616 "src/p.y"
+     {
+                    Run.MailFormat.from    = mailset.from    ?  mailset.from    : Str_dup(ALERT_FROM);
+                    Run.MailFormat.replyto = mailset.replyto ?  mailset.replyto : NULL;
+@@ -2834,73 +3223,78 @@
+                    Run.MailFormat.message = mailset.message ?  mailset.message : Str_dup(ALERT_MESSAGE);
+                    reset_mailset();
+                  }
+-#line 2837 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 181:
+-#line 625 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 625 "src/p.y"
+     {
+                    Run.dohttpd = TRUE;
+-                   Run.httpdport = (yyvsp[-1].number);
++                   Run.httpdport = (yyvsp[(4) - (5)].number);
+                  }
+-#line 2846 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 184:
+-#line 635 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 635 "src/p.y"
+     {
+                     /* Restore the current text overriden by lookahead */
+                     FREE(argyytext);
+-                    argyytext = Str_dup((yyvsp[-4].string));
++                    argyytext = Str_dup((yyvsp[(1) - (5)].string));
+ 
+-                    check_hostname((yyvsp[-4].string));
+-                    mailserverset.host = (yyvsp[-4].string);
+-                    mailserverset.username = (yyvsp[-3].string);
+-                    mailserverset.password = (yyvsp[-2].string);
+-                    mailserverset.ssl.version = (yyvsp[-1].number);
++                    check_hostname((yyvsp[(1) - (5)].string));
++                    mailserverset.host = (yyvsp[(1) - (5)].string);
++                    mailserverset.username = (yyvsp[(2) - (5)].string);
++                    mailserverset.password = (yyvsp[(3) - (5)].string);
++                    mailserverset.ssl.version = (yyvsp[(4) - (5)].number);
+                     if (mailserverset.ssl.version != SSL_VERSION_NONE) {
+                       mailserverset.ssl.use_ssl = TRUE;
+                       if (mailserverset.ssl.version == SSL_VERSION_SSLV2 || mailserverset.ssl.version == SSL_VERSION_SSLV3)
+                          mailserverset.port = PORT_SMTPS;
+-                      mailserverset.ssl.certmd5 = (yyvsp[0].string);
++                      mailserverset.ssl.certmd5 = (yyvsp[(5) - (5)].string);
+                     }
+                     addmailserver(&mailserverset);
+                   }
+-#line 2869 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 185:
+-#line 653 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 653 "src/p.y"
+     {
+                     /* Restore the current text overriden by lookahead */
+                     FREE(argyytext);
+-                    argyytext = Str_dup((yyvsp[-6].string));
++                    argyytext = Str_dup((yyvsp[(1) - (7)].string));
+ 
+-                    check_hostname((yyvsp[-6].string));
+-                    mailserverset.host = (yyvsp[-6].string);
+-                    mailserverset.port = (yyvsp[-4].number);
+-                    mailserverset.username = (yyvsp[-3].string);
+-                    mailserverset.password = (yyvsp[-2].string);
+-                    mailserverset.ssl.version = (yyvsp[-1].number);
++                    check_hostname((yyvsp[(1) - (7)].string));
++                    mailserverset.host = (yyvsp[(1) - (7)].string);
++                    mailserverset.port = (yyvsp[(3) - (7)].number);
++                    mailserverset.username = (yyvsp[(4) - (7)].string);
++                    mailserverset.password = (yyvsp[(5) - (7)].string);
++                    mailserverset.ssl.version = (yyvsp[(6) - (7)].number);
+                     if (mailserverset.ssl.version != SSL_VERSION_NONE) {
+                       mailserverset.ssl.use_ssl = TRUE;
+-                      mailserverset.ssl.certmd5 = (yyvsp[0].string);
++                      mailserverset.ssl.certmd5 = (yyvsp[(7) - (7)].string);
+                     }
+                     addmailserver(&mailserverset);
+                   }
+-#line 2891 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 192:
+-#line 682 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 682 "src/p.y"
+     {
+                     Run.httpdssl = FALSE;
+                   }
+-#line 2899 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 193:
+-#line 685 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 685 "src/p.y"
+     {
+                     Run.httpdssl = TRUE;
+                     if (! have_ssl())
+@@ -2910,2303 +3304,2585 @@
+                     else if (! file_checkStat(Run.httpsslpem, "SSL server PEM file", S_IRWXU))
+                       yyerror("SSL server PEM file permissions check failed");
+                   }
+-#line 2913 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 203:
+-#line 713 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 713 "src/p.y"
+     { Run.httpdsig = TRUE; }
+-#line 2919 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 204:
+-#line 714 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 714 "src/p.y"
+     { Run.httpdsig = FALSE; }
+-#line 2925 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 209:
+-#line 725 "src/p.y" /* yacc.c:1646  */
+-    { Run.bind_addr = (yyvsp[0].string); }
+-#line 2931 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 725 "src/p.y"
++    { Run.bind_addr = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 210:
+-#line 728 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 728 "src/p.y"
+     {
+-                    Run.httpsslpem = (yyvsp[0].string);
++                    Run.httpsslpem = (yyvsp[(2) - (2)].string);
+                   }
+-#line 2939 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 211:
+-#line 733 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 733 "src/p.y"
+     {
+-                    Run.httpsslclientpem = (yyvsp[0].string);
++                    Run.httpsslclientpem = (yyvsp[(2) - (2)].string);
+                     Run.clientssl = TRUE;
+                     if (!file_checkStat(Run.httpsslclientpem, "SSL client PEM file", S_IRWXU | S_IRGRP | S_IROTH))
+                       yyerror2("SSL client PEM file has too loose permissions");
+                   }
+-#line 2950 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 212:
+-#line 741 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 741 "src/p.y"
+     {
+                     Run.allowselfcert = TRUE;
+                   }
+-#line 2958 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 213:
+-#line 746 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 746 "src/p.y"
+     {
+-                    addcredentials((yyvsp[-3].string),(yyvsp[-1].string), DIGEST_CLEARTEXT, (yyvsp[0].number));
++                    addcredentials((yyvsp[(2) - (5)].string),(yyvsp[(4) - (5)].string), DIGEST_CLEARTEXT, (yyvsp[(5) - (5)].number));
+                   }
+-#line 2966 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 214:
+-#line 749 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 749 "src/p.y"
+     {
+ #ifdef HAVE_LIBPAM
+-                    addpamauth((yyvsp[-1].string), (yyvsp[0].number));
++                    addpamauth((yyvsp[(3) - (4)].string), (yyvsp[(4) - (4)].number));
+ #else
+                     yyerror("PAM is not supported");
+-                    FREE((yyvsp[-1].string));
++                    FREE((yyvsp[(3) - (4)].string));
+ #endif
+                   }
+-#line 2979 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 215:
+-#line 757 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 757 "src/p.y"
+     {
+-                    addhtpasswdentry((yyvsp[0].string), NULL, DIGEST_CLEARTEXT);
+-                    FREE((yyvsp[0].string));
++                    addhtpasswdentry((yyvsp[(2) - (2)].string), NULL, DIGEST_CLEARTEXT);
++                    FREE((yyvsp[(2) - (2)].string));
+                   }
+-#line 2988 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 216:
+-#line 761 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 761 "src/p.y"
+     {
+-                    addhtpasswdentry((yyvsp[0].string), NULL, DIGEST_CLEARTEXT);
+-                    FREE((yyvsp[0].string));
++                    addhtpasswdentry((yyvsp[(3) - (3)].string), NULL, DIGEST_CLEARTEXT);
++                    FREE((yyvsp[(3) - (3)].string));
+                   }
+-#line 2997 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 217:
+-#line 765 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 765 "src/p.y"
+     {
+-                    addhtpasswdentry((yyvsp[0].string), NULL, DIGEST_MD5);
+-                    FREE((yyvsp[0].string));
++                    addhtpasswdentry((yyvsp[(3) - (3)].string), NULL, DIGEST_MD5);
++                    FREE((yyvsp[(3) - (3)].string));
+                   }
+-#line 3006 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 218:
+-#line 769 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 769 "src/p.y"
+     {
+-                    addhtpasswdentry((yyvsp[0].string), NULL, DIGEST_CRYPT);
+-                    FREE((yyvsp[0].string));
++                    addhtpasswdentry((yyvsp[(3) - (3)].string), NULL, DIGEST_CRYPT);
++                    FREE((yyvsp[(3) - (3)].string));
+                   }
+-#line 3015 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 219:
+-#line 773 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 773 "src/p.y"
+     {
+-                    htpasswd_file = (yyvsp[0].string);
++                    htpasswd_file = (yyvsp[(2) - (2)].string);
+                     digesttype = CLEARTEXT;
+                   }
+-#line 3024 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 220:
+-#line 777 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 777 "src/p.y"
+     {
+                     FREE(htpasswd_file);
+                   }
+-#line 3032 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 221:
+-#line 780 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 780 "src/p.y"
+     {
+-                    htpasswd_file = (yyvsp[0].string);
++                    htpasswd_file = (yyvsp[(3) - (3)].string);
+                     digesttype = DIGEST_CLEARTEXT;
+                   }
+-#line 3041 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 222:
+-#line 784 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 784 "src/p.y"
+     {
+                     FREE(htpasswd_file);
+                   }
+-#line 3049 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 223:
+-#line 787 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 787 "src/p.y"
+     {
+-                    htpasswd_file = (yyvsp[0].string);
++                    htpasswd_file = (yyvsp[(3) - (3)].string);
+                     digesttype = DIGEST_MD5;
+                   }
+-#line 3058 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 224:
+-#line 791 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 791 "src/p.y"
+     {
+                     FREE(htpasswd_file);
+                   }
+-#line 3066 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 225:
+-#line 794 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 794 "src/p.y"
+     {
+-                    htpasswd_file = (yyvsp[0].string);
++                    htpasswd_file = (yyvsp[(3) - (3)].string);
+                     digesttype = DIGEST_CRYPT;
+                   }
+-#line 3075 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 226:
+-#line 798 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 798 "src/p.y"
+     {
+                     FREE(htpasswd_file);
+                   }
+-#line 3083 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 227:
+-#line 801 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 801 "src/p.y"
+     {
+-                    if (! (add_net_allow((yyvsp[0].string)) || add_host_allow((yyvsp[0].string)))) {
+-                      yyerror2("Erroneous network or host identifier %s", (yyvsp[0].string));
++                    if (! (add_net_allow((yyvsp[(2) - (2)].string)) || add_host_allow((yyvsp[(2) - (2)].string)))) {
++                      yyerror2("Erroneous network or host identifier %s", (yyvsp[(2) - (2)].string));
+                     }
+-                    FREE((yyvsp[0].string));
++                    FREE((yyvsp[(2) - (2)].string));
+                   }
+-#line 3094 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 230:
+-#line 813 "src/p.y" /* yacc.c:1646  */
+-    { addhtpasswdentry(htpasswd_file, (yyvsp[0].string), digesttype);
+-                           FREE((yyvsp[0].string)); }
+-#line 3101 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 813 "src/p.y"
++    { addhtpasswdentry(htpasswd_file, (yyvsp[(1) - (1)].string), digesttype);
++                           FREE((yyvsp[(1) - (1)].string)); }
+     break;
+ 
+   case 231:
+-#line 817 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 817 "src/p.y"
+     { (yyval.number) = FALSE; }
+-#line 3107 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 232:
+-#line 818 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 818 "src/p.y"
+     { (yyval.number) = TRUE; }
+-#line 3113 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 233:
+-#line 821 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 821 "src/p.y"
+     {
+-                    createservice(TYPE_PROCESS, (yyvsp[-2].string), (yyvsp[0].string), check_process);
++                    createservice(TYPE_PROCESS, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_process);
+                   }
+-#line 3121 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 234:
+-#line 824 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 824 "src/p.y"
+     {
+-                    createservice(TYPE_PROCESS, (yyvsp[-2].string), (yyvsp[0].string), check_process);
++                    createservice(TYPE_PROCESS, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_process);
+                   }
+-#line 3129 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 235:
+-#line 827 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 827 "src/p.y"
+     {
+-                    createservice(TYPE_PROCESS, (yyvsp[-2].string), (yyvsp[0].string), check_process);
++                    createservice(TYPE_PROCESS, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_process);
+                     matchset.ignore = FALSE;
+                     matchset.match_path = NULL;
+-                    matchset.match_string = Str_dup((yyvsp[0].string));
++                    matchset.match_string = Str_dup((yyvsp[(4) - (4)].string));
+                     addmatch(&matchset, ACTION_IGNORE, 0);
+                   }
+-#line 3141 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 236:
+-#line 834 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 834 "src/p.y"
+     {
+-                    createservice(TYPE_PROCESS, (yyvsp[-2].string), (yyvsp[0].string), check_process);
++                    createservice(TYPE_PROCESS, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_process);
+                     matchset.ignore = FALSE;
+                     matchset.match_path = NULL;
+-                    matchset.match_string = Str_dup((yyvsp[0].string));
++                    matchset.match_string = Str_dup((yyvsp[(4) - (4)].string));
+                     addmatch(&matchset, ACTION_IGNORE, 0);
+                   }
+-#line 3153 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 237:
+-#line 843 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 843 "src/p.y"
+     {
+-                    createservice(TYPE_FILE, (yyvsp[-2].string), (yyvsp[0].string), check_file);
++                    createservice(TYPE_FILE, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_file);
+                   }
+-#line 3161 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 238:
+-#line 848 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 848 "src/p.y"
+     {
+-                    createservice(TYPE_FILESYSTEM, (yyvsp[-2].string), (yyvsp[0].string), check_filesystem);
++                    createservice(TYPE_FILESYSTEM, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_filesystem);
+                   }
+-#line 3169 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 239:
+-#line 851 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 851 "src/p.y"
+     {
+-                    createservice(TYPE_FILESYSTEM, (yyvsp[-2].string), (yyvsp[0].string), check_filesystem);
++                    createservice(TYPE_FILESYSTEM, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_filesystem);
+                   }
+-#line 3177 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 240:
+-#line 856 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 856 "src/p.y"
+     {
+-                    createservice(TYPE_DIRECTORY, (yyvsp[-2].string), (yyvsp[0].string), check_directory);
++                    createservice(TYPE_DIRECTORY, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_directory);
+                   }
+-#line 3185 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 241:
+-#line 861 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 861 "src/p.y"
+     {
+-                    check_hostname((yyvsp[0].string));
+-                    createservice(TYPE_HOST, (yyvsp[-2].string), (yyvsp[0].string), check_remote_host);
++                    check_hostname((yyvsp[(4) - (4)].string));
++                    createservice(TYPE_HOST, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_remote_host);
+                   }
+-#line 3194 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 242:
+-#line 867 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 867 "src/p.y"
+     {
+                     char hostname[STRLEN];
+                     if (Util_getfqdnhostname(hostname, sizeof(hostname))) {
+                       LogError("Cannot get system hostname\n");
+                       cfg_errflag++;
+                     }
+-                    char *servicename = (yyvsp[0].string);
++                    char *servicename = (yyvsp[(2) - (2)].string);
+                     Util_replaceString(&servicename, "$HOST", hostname);
+                     Run.system = createservice(TYPE_SYSTEM, servicename, Str_dup(""), check_system); // The name given in the 'check system' statement overrides system hostname
+                   }
+-#line 3209 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 243:
+-#line 879 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 879 "src/p.y"
+     {
+-                    createservice(TYPE_FIFO, (yyvsp[-2].string), (yyvsp[0].string), check_fifo);
++                    createservice(TYPE_FIFO, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_fifo);
+                   }
+-#line 3217 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 244:
+-#line 884 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 884 "src/p.y"
+     {
+                         command_t c = command; // Current command
+                         check_exec(c->arg[0]);
+-                        createservice(TYPE_PROGRAM, (yyvsp[-3].string), Str_dup(c->arg[0]), check_program);
+-                        current->program->timeout = (yyvsp[0].number);
++                        createservice(TYPE_PROGRAM, (yyvsp[(2) - (5)].string), Str_dup(c->arg[0]), check_program);
++                        current->program->timeout = (yyvsp[(5) - (5)].number);
+                         current->program->output = StringBuffer_create(64);
+                  }
+-#line 3229 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 245:
+-#line 891 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 891 "src/p.y"
+     {
+                         command_t c = command; // Current command
+                         check_exec(c->arg[0]);
+-                        createservice(TYPE_PROGRAM, (yyvsp[-4].string), Str_dup(c->arg[0]), check_program);
+-                        current->program->timeout = (yyvsp[-1].number);
++                        createservice(TYPE_PROGRAM, (yyvsp[(2) - (6)].string), Str_dup(c->arg[0]), check_program);
++                        current->program->timeout = (yyvsp[(5) - (6)].number);
+                         current->program->output = StringBuffer_create(64);
+                  }
+-#line 3241 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 246:
+-#line 900 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 900 "src/p.y"
+     {
+-                    addcommand(START, (yyvsp[0].number));
++                    addcommand(START, (yyvsp[(3) - (3)].number));
+                   }
+-#line 3249 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 247:
+-#line 903 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 903 "src/p.y"
+     {
+-                    addcommand(START, (yyvsp[0].number));
++                    addcommand(START, (yyvsp[(4) - (4)].number));
+                   }
+-#line 3257 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 248:
+-#line 908 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 908 "src/p.y"
+     {
+-                    addcommand(STOP, (yyvsp[0].number));
++                    addcommand(STOP, (yyvsp[(3) - (3)].number));
+                   }
+-#line 3265 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 249:
+-#line 911 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 911 "src/p.y"
+     {
+-                    addcommand(STOP, (yyvsp[0].number));
++                    addcommand(STOP, (yyvsp[(4) - (4)].number));
+                   }
+-#line 3273 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 250:
+-#line 917 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 917 "src/p.y"
+     {
+-                    addcommand(RESTART, (yyvsp[0].number));
++                    addcommand(RESTART, (yyvsp[(3) - (3)].number));
+                   }
+-#line 3281 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 251:
+-#line 920 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 920 "src/p.y"
+     {
+-                    addcommand(RESTART, (yyvsp[0].number));
++                    addcommand(RESTART, (yyvsp[(4) - (4)].number));
+                   }
+-#line 3289 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 256:
+-#line 933 "src/p.y" /* yacc.c:1646  */
+-    { addargument((yyvsp[0].string)); }
+-#line 3295 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 933 "src/p.y"
++    { addargument((yyvsp[(1) - (1)].string)); }
+     break;
+ 
+   case 257:
+-#line 934 "src/p.y" /* yacc.c:1646  */
+-    { addargument((yyvsp[0].string)); }
+-#line 3301 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 934 "src/p.y"
++    { addargument((yyvsp[(1) - (1)].string)); }
+     break;
+ 
+   case 258:
+-#line 937 "src/p.y" /* yacc.c:1646  */
+-    { addeuid( get_uid((yyvsp[0].string), 0) ); FREE((yyvsp[0].string)); }
+-#line 3307 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 937 "src/p.y"
++    { addeuid( get_uid((yyvsp[(2) - (2)].string), 0) ); FREE((yyvsp[(2) - (2)].string)); }
+     break;
+ 
+   case 259:
+-#line 938 "src/p.y" /* yacc.c:1646  */
+-    { addegid( get_gid((yyvsp[0].string), 0) ); FREE((yyvsp[0].string)); }
+-#line 3313 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 938 "src/p.y"
++    { addegid( get_gid((yyvsp[(2) - (2)].string), 0) ); FREE((yyvsp[(2) - (2)].string)); }
+     break;
+ 
+   case 260:
+-#line 939 "src/p.y" /* yacc.c:1646  */
+-    { addeuid( get_uid(NULL, (yyvsp[0].number)) ); }
+-#line 3319 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 939 "src/p.y"
++    { addeuid( get_uid(NULL, (yyvsp[(2) - (2)].number)) ); }
+     break;
+ 
+   case 261:
+-#line 940 "src/p.y" /* yacc.c:1646  */
+-    { addegid( get_gid(NULL, (yyvsp[0].number)) ); }
+-#line 3325 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 940 "src/p.y"
++    { addegid( get_gid(NULL, (yyvsp[(2) - (2)].number)) ); }
+     break;
+ 
+   case 262:
+-#line 943 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 943 "src/p.y"
+     { (yyval.string) = NULL; }
+-#line 3331 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 263:
+-#line 944 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.string) = (yyvsp[0].string); }
+-#line 3337 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 944 "src/p.y"
++    { (yyval.string) = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 264:
+-#line 945 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.string) = (yyvsp[0].string); }
+-#line 3343 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 945 "src/p.y"
++    { (yyval.string) = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 265:
+-#line 948 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 948 "src/p.y"
+     { (yyval.string) = NULL; }
+-#line 3349 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 266:
+-#line 949 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.string) = (yyvsp[0].string); }
+-#line 3355 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 949 "src/p.y"
++    { (yyval.string) = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 267:
+-#line 952 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 952 "src/p.y"
+     { (yyval.string) = NULL; }
+-#line 3361 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 268:
+-#line 953 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.string) = (yyvsp[0].string); }
+-#line 3367 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 953 "src/p.y"
++    { (yyval.string) = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 269:
+-#line 957 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 957 "src/p.y"
+     {
+-                    portset.timeout = (yyvsp[-5].number);
+-                    portset.retry = (yyvsp[-4].number);
++                    portset.timeout = (yyvsp[(8) - (13)].number);
++                    portset.retry = (yyvsp[(9) - (13)].number);
+                     /* This is a workaround to support content match without having to create
+                      an URL object. 'urloption' creates the Request_T object we need minus the
+                      URL object, but with enough information to perform content test. 
+                      TODO: Parser is in need of refactoring */
+                     portset.url_request = urlrequest;
+-                    addeventaction(&(portset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    addeventaction(&(portset).action, (yyvsp[(12) - (13)].number), (yyvsp[(13) - (13)].number));
+                     addport(&portset);
+                   }
+-#line 3383 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 270:
+-#line 969 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 969 "src/p.y"
+     {
+-                    prepare_urlrequest((yyvsp[-7].url));
+-                    portset.timeout = (yyvsp[-5].number);
+-                    portset.retry = (yyvsp[-4].number);
+-                    addeventaction(&(portset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    prepare_urlrequest((yyvsp[(4) - (11)].url));
++                    portset.timeout = (yyvsp[(6) - (11)].number);
++                    portset.retry = (yyvsp[(7) - (11)].number);
++                    addeventaction(&(portset).action, (yyvsp[(10) - (11)].number), (yyvsp[(11) - (11)].number));
+                     addport(&portset);
+                   }
+-#line 3395 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 271:
+-#line 979 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 979 "src/p.y"
+     {
+-                   portset.timeout = (yyvsp[-5].number);
+-                   portset.retry = (yyvsp[-4].number);
+-                   addeventaction(&(portset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                   portset.timeout = (yyvsp[(6) - (11)].number);
++                   portset.retry = (yyvsp[(7) - (11)].number);
++                   addeventaction(&(portset).action, (yyvsp[(10) - (11)].number), (yyvsp[(11) - (11)].number));
+                    addport(&portset);
+                   }
+-#line 3406 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 272:
+-#line 987 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 987 "src/p.y"
+     {
+-                   icmpset.type = (yyvsp[-6].number);
+-                   icmpset.count = (yyvsp[-5].number);
+-                   icmpset.timeout = (yyvsp[-4].number);
+-                   addeventaction(&(icmpset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                   icmpset.type = (yyvsp[(4) - (10)].number);
++                   icmpset.count = (yyvsp[(5) - (10)].number);
++                   icmpset.timeout = (yyvsp[(6) - (10)].number);
++                   addeventaction(&(icmpset).action, (yyvsp[(9) - (10)].number), (yyvsp[(10) - (10)].number));
+                    addicmp(&icmpset);
+                   }
+-#line 3418 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 273:
+-#line 994 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 994 "src/p.y"
+     {
+                         icmpset.type = ICMP_ECHO;
+-                        icmpset.count = (yyvsp[-5].number);
+-                        icmpset.timeout = (yyvsp[-4].number);
+-                        addeventaction(&(icmpset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                        icmpset.count = (yyvsp[(4) - (9)].number);
++                        icmpset.timeout = (yyvsp[(5) - (9)].number);
++                        addeventaction(&(icmpset).action, (yyvsp[(8) - (9)].number), (yyvsp[(9) - (9)].number));
+                         addicmp(&icmpset);
+                  }
+-#line 3430 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 274:
+-#line 1003 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1003 "src/p.y"
+     {
+                     if (current->type == TYPE_HOST)
+                       portset.hostname = Str_dup(current->path);
+                     else
+                       portset.hostname = Str_dup(LOCALHOST);
+                   }
+-#line 3441 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 275:
+-#line 1009 "src/p.y" /* yacc.c:1646  */
+-    { check_hostname((yyvsp[0].string)); portset.hostname = (yyvsp[0].string); }
+-#line 3447 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1009 "src/p.y"
++    { check_hostname((yyvsp[(2) - (2)].string)); portset.hostname = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 276:
+-#line 1012 "src/p.y" /* yacc.c:1646  */
+-    { portset.port = (yyvsp[0].number); portset.family = AF_INET; }
+-#line 3453 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1012 "src/p.y"
++    { portset.port = (yyvsp[(2) - (2)].number); portset.family = AF_INET; }
+     break;
+ 
+   case 277:
+-#line 1015 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1015 "src/p.y"
+     {
+-                    portset.pathname = (yyvsp[0].string); portset.family = AF_UNIX;
++                    portset.pathname = (yyvsp[(2) - (2)].string); portset.family = AF_UNIX;
+                   }
+-#line 3461 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 278:
+-#line 1020 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1020 "src/p.y"
+     {
+                     portset.type = SOCK_STREAM;
+                   }
+-#line 3469 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 279:
+-#line 1023 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1023 "src/p.y"
+     {
+                     portset.type = SOCK_STREAM;
+                   }
+-#line 3477 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 280:
+-#line 1026 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1026 "src/p.y"
+     {
+                     portset.type = SOCK_STREAM;
+                     portset.SSL.use_ssl = TRUE;
+-                    portset.SSL.version = (yyvsp[-1].number);
++                    portset.SSL.version = (yyvsp[(3) - (4)].number);
+                     if (portset.SSL.version == SSL_VERSION_NONE)
+                       portset.SSL.version = SSL_VERSION_AUTO;
+-                    portset.SSL.certmd5 = (yyvsp[0].string);
++                    portset.SSL.certmd5 = (yyvsp[(4) - (4)].string);
+                   }
+-#line 3490 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 281:
+-#line 1034 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1034 "src/p.y"
+     {
+                     portset.type = SOCK_DGRAM;
+                   }
+-#line 3498 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 282:
+-#line 1039 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1039 "src/p.y"
+     { (yyval.string) = NULL; }
+-#line 3504 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 283:
+-#line 1040 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.string) = (yyvsp[0].string); }
+-#line 3510 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1040 "src/p.y"
++    { (yyval.string) = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 284:
+-#line 1043 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1043 "src/p.y"
+     { (yyval.number) = SSL_VERSION_NONE; }
+-#line 3516 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 285:
+-#line 1044 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1044 "src/p.y"
+     { (yyval.number) = SSL_VERSION_SSLV2; }
+-#line 3522 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 286:
+-#line 1045 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1045 "src/p.y"
+     { (yyval.number) = SSL_VERSION_SSLV3; }
+-#line 3528 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 287:
+-#line 1046 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1046 "src/p.y"
+     { (yyval.number) = SSL_VERSION_TLSV1; }
+-#line 3534 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 288:
+-#line 1048 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1048 "src/p.y"
+     {
+ #ifndef HAVE_TLSV1_1_CLIENT_METHOD
+                         yyerror("Your SSL Library does not support TLS version 1.1");
+ #endif
+                         (yyval.number) = SSL_VERSION_TLSV11;
+                 }
+-#line 3545 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 289:
+-#line 1055 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1055 "src/p.y"
+     {
+ #ifndef HAVE_TLSV1_1_CLIENT_METHOD
+                         yyerror("Your SSL Library does not support TLS version 1.2");
+ #endif
+                         (yyval.number) = SSL_VERSION_TLSV12;
+                 }
+-#line 3556 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 290:
+-#line 1061 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1061 "src/p.y"
+     { (yyval.number) = SSL_VERSION_AUTO; }
+-#line 3562 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 291:
+-#line 1064 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1064 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_DEFAULT);
+                   }
+-#line 3570 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 292:
+-#line 1067 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1067 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_APACHESTATUS);
+                   }
+-#line 3578 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 293:
+-#line 1070 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1070 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_DEFAULT);
+                   }
+-#line 3586 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 294:
+-#line 1073 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1073 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_DNS);
+                   }
+-#line 3594 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 295:
+-#line 1076 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1076 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_DWP);
+                   }
+-#line 3602 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 296:
+-#line 1079 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1079 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_FTP);
+                   }
+-#line 3610 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 297:
+-#line 1082 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1082 "src/p.y"
+     {
+                         portset.protocol = Protocol_get(Protocol_HTTP);
+                   }
+-#line 3618 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 298:
+-#line 1085 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1085 "src/p.y"
+     {
+                         portset.type = SOCK_STREAM;
+                         portset.SSL.use_ssl = TRUE;
+                         portset.SSL.version = SSL_VERSION_AUTO;
+                         portset.protocol = Protocol_get(Protocol_HTTP);
+                  }
+-#line 3629 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 299:
+-#line 1091 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1091 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_IMAP);
+                   }
+-#line 3637 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 300:
+-#line 1094 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1094 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_CLAMAV);
+                   }
+-#line 3645 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 301:
+-#line 1097 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1097 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_LDAP2);
+                   }
+-#line 3653 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 302:
+-#line 1100 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1100 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_LDAP3);
+                   }
+-#line 3661 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 303:
+-#line 1103 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1103 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_MYSQL);
+                   }
+-#line 3669 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 304:
+-#line 1106 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1106 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_SIP);
+                   }
+-#line 3677 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 305:
+-#line 1109 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1109 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_NNTP);
+                   }
+-#line 3685 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 306:
+-#line 1112 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1112 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_NTP3);
+                     portset.type = SOCK_DGRAM;
+                   }
+-#line 3694 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 307:
+-#line 1116 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1116 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_POSTFIXPOLICY);
+                   }
+-#line 3702 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 308:
+-#line 1119 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1119 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_POP);
+                   }
+-#line 3710 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 309:
+-#line 1122 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1122 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_SMTP);
+                   }
+-#line 3718 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 310:
+-#line 1125 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1125 "src/p.y"
+     {
+                         portset.type = SOCK_STREAM;
+                         portset.SSL.use_ssl = TRUE;
+                         portset.SSL.version = SSL_VERSION_AUTO;
+                         portset.protocol = Protocol_get(Protocol_SMTP);
+                  }
+-#line 3729 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 311:
+-#line 1131 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1131 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_SSH);
+                   }
+-#line 3737 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 312:
+-#line 1134 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1134 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_RDATE);
+                   }
+-#line 3745 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 313:
+-#line 1137 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1137 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_RSYNC);
+                   }
+-#line 3753 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 314:
+-#line 1140 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1140 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_TNS);
+                   }
+-#line 3761 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 315:
+-#line 1143 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1143 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_PGSQL);
+                   }
+-#line 3769 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 316:
+-#line 1146 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1146 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_LMTP);
+                   }
+-#line 3777 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 317:
+-#line 1149 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1149 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_GPS);
+                   }
+-#line 3785 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 318:
+-#line 1152 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1152 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_RADIUS);
+                   }
+-#line 3793 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 319:
+-#line 1155 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1155 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_MEMCACHE);
+                   }
+-#line 3801 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 320:
+-#line 1158 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1158 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_WEBSOCKET);
+                   }
+-#line 3809 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 321:
+-#line 1161 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1161 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_GENERIC);
+                   }
+-#line 3817 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 324:
+-#line 1170 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1170 "src/p.y"
+     {
+-                    addgeneric(&portset, (yyvsp[0].string), NULL);
++                    addgeneric(&portset, (yyvsp[(2) - (2)].string), NULL);
+                   }
+-#line 3825 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 325:
+-#line 1173 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1173 "src/p.y"
+     {
+-                    addgeneric(&portset, NULL, (yyvsp[0].string));
++                    addgeneric(&portset, NULL, (yyvsp[(2) - (2)].string));
+                   }
+-#line 3833 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 328:
+-#line 1182 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1182 "src/p.y"
+     {
+-                    portset.pathname = (yyvsp[0].string);
++                    portset.pathname = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3841 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 329:
+-#line 1185 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1185 "src/p.y"
+     {
+-                    portset.request = (yyvsp[0].string);
++                    portset.request = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3849 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 330:
+-#line 1188 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1188 "src/p.y"
+     {
+-                    portset.request_hostheader = (yyvsp[0].string);
++                    portset.request_hostheader = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3857 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 331:
+-#line 1191 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1191 "src/p.y"
+     {
+-                    portset.version = (yyvsp[0].number);
++                    portset.version = (yyvsp[(2) - (2)].number);
+                   }
+-#line 3865 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 333:
+-#line 1197 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1197 "src/p.y"
+     {
+-                    portset.request = (yyvsp[0].string);
++                    portset.request = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3873 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 334:
+-#line 1200 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1200 "src/p.y"
+     {
+-                    portset.request = (yyvsp[0].string);
++                    portset.request = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3881 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 336:
+-#line 1206 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1206 "src/p.y"
+     {
+-                     portset.maxforward = verifyMaxForward((yyvsp[0].number));
++                     portset.maxforward = verifyMaxForward((yyvsp[(2) - (2)].number));
+                    }
+-#line 3889 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 344:
+-#line 1222 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1222 "src/p.y"
+     {
+-                    portset.operator = (yyvsp[-1].number);
+-                    portset.status = (yyvsp[0].number);
++                    portset.operator = (yyvsp[(2) - (3)].number);
++                    portset.status = (yyvsp[(3) - (3)].number);
+                   }
+-#line 3898 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 345:
+-#line 1228 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1228 "src/p.y"
+     {
+-                    portset.request = Util_urlEncode((yyvsp[0].string));
+-                    FREE((yyvsp[0].string));
++                    portset.request = Util_urlEncode((yyvsp[(2) - (2)].string));
++                    FREE((yyvsp[(2) - (2)].string));
+                   }
+-#line 3907 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 346:
+-#line 1234 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1234 "src/p.y"
+     {
+-                    portset.request_checksum = (yyvsp[0].string);
++                    portset.request_checksum = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3915 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 347:
+-#line 1239 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1239 "src/p.y"
+     {
+-                    portset.request_hostheader = (yyvsp[0].string);
++                    portset.request_hostheader = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3923 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 349:
+-#line 1245 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1245 "src/p.y"
+     {
+                         if (! portset.http_headers) {
+                                 portset.http_headers = List_new();
+                         }
+-                        List_append(portset.http_headers, (yyvsp[0].string));
++                        List_append(portset.http_headers, (yyvsp[(2) - (2)].string));
+                  }
+-#line 3934 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 350:
+-#line 1253 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1253 "src/p.y"
+     {
+-                    portset.request = (yyvsp[0].string);
++                    portset.request = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3942 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 353:
+-#line 1262 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1262 "src/p.y"
+     {
+-                    portset.ApacheStatus.loglimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.loglimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.loglimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.loglimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 3951 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 354:
+-#line 1266 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1266 "src/p.y"
+     {
+-                    portset.ApacheStatus.closelimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.closelimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.closelimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.closelimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 3960 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 355:
+-#line 1270 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1270 "src/p.y"
+     {
+-                    portset.ApacheStatus.dnslimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.dnslimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.dnslimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.dnslimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 3969 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 356:
+-#line 1274 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1274 "src/p.y"
+     {
+-                    portset.ApacheStatus.keepalivelimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.keepalivelimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.keepalivelimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.keepalivelimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 3978 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 357:
+-#line 1278 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1278 "src/p.y"
+     {
+-                    portset.ApacheStatus.replylimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.replylimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.replylimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.replylimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 3987 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 358:
+-#line 1282 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1282 "src/p.y"
+     {
+-                    portset.ApacheStatus.requestlimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.requestlimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.requestlimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.requestlimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 3996 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 359:
+-#line 1286 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1286 "src/p.y"
+     {
+-                    portset.ApacheStatus.startlimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.startlimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.startlimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.startlimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 4005 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 360:
+-#line 1290 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1290 "src/p.y"
+     {
+-                    portset.ApacheStatus.waitlimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.waitlimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.waitlimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.waitlimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 4014 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 361:
+-#line 1294 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1294 "src/p.y"
+     {
+-                    portset.ApacheStatus.gracefullimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.gracefullimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.gracefullimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.gracefullimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 4023 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 362:
+-#line 1298 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1298 "src/p.y"
+     {
+-                    portset.ApacheStatus.cleanuplimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.cleanuplimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.cleanuplimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.cleanuplimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 4032 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 363:
+-#line 1304 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1304 "src/p.y"
+     {
+-                    seteventaction(&(current)->action_NONEXIST, (yyvsp[-1].number), (yyvsp[0].number));
++                    seteventaction(&(current)->action_NONEXIST, (yyvsp[(6) - (7)].number), (yyvsp[(7) - (7)].number));
+                   }
+-#line 4040 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 364:
+-#line 1310 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1310 "src/p.y"
+     {
+-                    seteventaction(&(current)->action_PID, (yyvsp[0].number), ACTION_IGNORE);
++                    seteventaction(&(current)->action_PID, (yyvsp[(6) - (6)].number), ACTION_IGNORE);
+                   }
+-#line 4048 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 365:
+-#line 1315 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1315 "src/p.y"
+     {
+-                    seteventaction(&(current)->action_PPID, (yyvsp[0].number), ACTION_IGNORE);
++                    seteventaction(&(current)->action_PPID, (yyvsp[(6) - (6)].number), ACTION_IGNORE);
+                   }
+-#line 4056 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 366:
+-#line 1320 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1320 "src/p.y"
+     {
+-                    uptimeset.operator = (yyvsp[-6].number);
+-                    uptimeset.uptime = ((unsigned long long)(yyvsp[-5].number) * (yyvsp[-4].number));
+-                    addeventaction(&(uptimeset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    uptimeset.operator = (yyvsp[(3) - (9)].number);
++                    uptimeset.uptime = ((unsigned long long)(yyvsp[(4) - (9)].number) * (yyvsp[(5) - (9)].number));
++                    addeventaction(&(uptimeset).action, (yyvsp[(8) - (9)].number), (yyvsp[(9) - (9)].number));
+                     adduptime(&uptimeset);
+                   }
+-#line 4067 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 367:
+-#line 1327 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1327 "src/p.y"
+     {
+                    (yyval.number) = ICMP_ATTEMPT_COUNT;
+                   }
+-#line 4075 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 368:
+-#line 1330 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1330 "src/p.y"
+     {
+-                        (yyval.number) = (yyvsp[0].number);
++                        (yyval.number) = (yyvsp[(2) - (2)].number);
+                  }
+-#line 4083 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 369:
+-#line 1335 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1335 "src/p.y"
+     {
+                    (yyval.number) = EXEC_TIMEOUT;
+                   }
+-#line 4091 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 370:
+-#line 1338 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1338 "src/p.y"
+     {
+-                   (yyval.number) = (yyvsp[-1].number);
++                   (yyval.number) = (yyvsp[(2) - (3)].number);
+                   }
+-#line 4099 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 371:
+-#line 1343 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1343 "src/p.y"
+     {
+                    (yyval.number) = PROGRAM_TIMEOUT; // Default program status check timeout is 5 min
+                   }
+-#line 4107 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 372:
+-#line 1346 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1346 "src/p.y"
+     {
+-                   (yyval.number) = (yyvsp[-1].number);
++                   (yyval.number) = (yyvsp[(2) - (3)].number);
+                   }
+-#line 4115 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 373:
+-#line 1351 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1351 "src/p.y"
+     {
+                    (yyval.number) = NET_TIMEOUT; // timeout is in milliseconds
+                   }
+-#line 4123 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 374:
+-#line 1354 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1354 "src/p.y"
+     {
+-                   (yyval.number) = (yyvsp[-1].number) * 1000; // net timeout is in milliseconds internally
++                   (yyval.number) = (yyvsp[(2) - (3)].number) * 1000; // net timeout is in milliseconds internally
+                   }
+-#line 4131 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 375:
+-#line 1359 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1359 "src/p.y"
+     {
+                    (yyval.number) = 1;
+                   }
+-#line 4139 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 376:
+-#line 1362 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1362 "src/p.y"
+     {
+-                   (yyval.number) = (yyvsp[0].number);
++                   (yyval.number) = (yyvsp[(2) - (2)].number);
+                   }
+-#line 4147 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 377:
+-#line 1367 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1367 "src/p.y"
+     {
+-                   actionrateset.count = (yyvsp[-5].number);
+-                   actionrateset.cycle = (yyvsp[-3].number);
+-                   addeventaction(&(actionrateset).action, (yyvsp[0].number), ACTION_ALERT);
++                   actionrateset.count = (yyvsp[(2) - (7)].number);
++                   actionrateset.cycle = (yyvsp[(4) - (7)].number);
++                   addeventaction(&(actionrateset).action, (yyvsp[(7) - (7)].number), ACTION_ALERT);
+                    addactionrate(&actionrateset);
+                  }
+-#line 4158 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 378:
+-#line 1373 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1373 "src/p.y"
+     {
+-                   actionrateset.count = (yyvsp[-5].number);
+-                   actionrateset.cycle = (yyvsp[-3].number);
++                   actionrateset.count = (yyvsp[(2) - (7)].number);
++                   actionrateset.cycle = (yyvsp[(4) - (7)].number);
+                    addeventaction(&(actionrateset).action, ACTION_UNMONITOR, ACTION_ALERT);
+                    addactionrate(&actionrateset);
+                  }
+-#line 4169 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 380:
+-#line 1382 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1382 "src/p.y"
+     {
+-                    seturlrequest((yyvsp[-1].number), (yyvsp[0].string));
+-                    FREE((yyvsp[0].string));
++                    seturlrequest((yyvsp[(2) - (3)].number), (yyvsp[(3) - (3)].string));
++                    FREE((yyvsp[(3) - (3)].string));
+                   }
+-#line 4178 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 381:
+-#line 1388 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1388 "src/p.y"
+     { (yyval.number) = Operator_Equal; }
+-#line 4184 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 382:
+-#line 1389 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1389 "src/p.y"
+     { (yyval.number) = Operator_NotEqual; }
+-#line 4190 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 383:
+-#line 1392 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1392 "src/p.y"
+     {
+                    mailset.events = Event_All;
+-                   addmail((yyvsp[-2].string), &mailset, &current->maillist);
++                   addmail((yyvsp[(1) - (3)].string), &mailset, &current->maillist);
+                   }
+-#line 4199 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 384:
+-#line 1396 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1396 "src/p.y"
+     {
+-                   addmail((yyvsp[-5].string), &mailset, &current->maillist);
++                   addmail((yyvsp[(1) - (6)].string), &mailset, &current->maillist);
+                   }
+-#line 4207 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 385:
+-#line 1399 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1399 "src/p.y"
+     {
+                    mailset.events = ~mailset.events;
+-                   addmail((yyvsp[-6].string), &mailset, &current->maillist);
++                   addmail((yyvsp[(1) - (7)].string), &mailset, &current->maillist);
+                   }
+-#line 4216 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 386:
+-#line 1403 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1403 "src/p.y"
+     {
+-                   addmail((yyvsp[0].string), &mailset, &current->maillist);
++                   addmail((yyvsp[(1) - (1)].string), &mailset, &current->maillist);
+                   }
+-#line 4224 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 387:
+-#line 1408 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.string) = (yyvsp[0].string); }
+-#line 4230 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1408 "src/p.y"
++    { (yyval.string) = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 388:
+-#line 1411 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.string) = (yyvsp[0].string); }
+-#line 4236 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1411 "src/p.y"
++    { (yyval.string) = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 391:
+-#line 1418 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1418 "src/p.y"
+     { mailset.events |= Event_Action; }
+-#line 4242 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 392:
+-#line 1419 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1419 "src/p.y"
+     { mailset.events |= Event_Checksum; }
+-#line 4248 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 393:
+-#line 1420 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1420 "src/p.y"
+     { mailset.events |= Event_Connection; }
+-#line 4254 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 394:
+-#line 1421 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1421 "src/p.y"
+     { mailset.events |= Event_Content; }
+-#line 4260 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 395:
+-#line 1422 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1422 "src/p.y"
+     { mailset.events |= Event_Data; }
+-#line 4266 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 396:
+-#line 1423 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1423 "src/p.y"
+     { mailset.events |= Event_Exec; }
+-#line 4272 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 397:
+-#line 1424 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1424 "src/p.y"
+     { mailset.events |= Event_Fsflag; }
+-#line 4278 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 398:
+-#line 1425 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1425 "src/p.y"
+     { mailset.events |= Event_Gid; }
+-#line 4284 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 399:
+-#line 1426 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1426 "src/p.y"
+     { mailset.events |= Event_Icmp; }
+-#line 4290 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 400:
+-#line 1427 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1427 "src/p.y"
+     { mailset.events |= Event_Instance; }
+-#line 4296 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 401:
+-#line 1428 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1428 "src/p.y"
+     { mailset.events |= Event_Invalid; }
+-#line 4302 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 402:
+-#line 1429 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1429 "src/p.y"
+     { mailset.events |= Event_Nonexist; }
+-#line 4308 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 403:
+-#line 1430 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1430 "src/p.y"
+     { mailset.events |= Event_Permission; }
+-#line 4314 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 404:
+-#line 1431 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1431 "src/p.y"
+     { mailset.events |= Event_Pid; }
+-#line 4320 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 405:
+-#line 1432 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1432 "src/p.y"
+     { mailset.events |= Event_PPid; }
+-#line 4326 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 406:
+-#line 1433 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1433 "src/p.y"
+     { mailset.events |= Event_Resource; }
+-#line 4332 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 407:
+-#line 1434 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1434 "src/p.y"
+     { mailset.events |= Event_Size; }
+-#line 4338 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 408:
+-#line 1435 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1435 "src/p.y"
+     { mailset.events |= Event_Status; }
+-#line 4344 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 409:
+-#line 1436 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1436 "src/p.y"
+     { mailset.events |= Event_Timeout; }
+-#line 4350 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 410:
+-#line 1437 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1437 "src/p.y"
+     { mailset.events |= Event_Timestamp; }
+-#line 4356 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 411:
+-#line 1438 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1438 "src/p.y"
+     { mailset.events |= Event_Uid; }
+-#line 4362 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 412:
+-#line 1439 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1439 "src/p.y"
+     { mailset.events |= Event_Uptime; }
+-#line 4368 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 417:
+-#line 1450 "src/p.y" /* yacc.c:1646  */
+-    { mailset.from = (yyvsp[0].string); }
+-#line 4374 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1450 "src/p.y"
++    { mailset.from = (yyvsp[(1) - (1)].string); }
+     break;
+ 
+   case 418:
+-#line 1451 "src/p.y" /* yacc.c:1646  */
+-    { mailset.replyto = (yyvsp[0].string); }
+-#line 4380 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1451 "src/p.y"
++    { mailset.replyto = (yyvsp[(1) - (1)].string); }
+     break;
+ 
+   case 419:
+-#line 1452 "src/p.y" /* yacc.c:1646  */
+-    { mailset.subject = (yyvsp[0].string); }
+-#line 4386 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1452 "src/p.y"
++    { mailset.subject = (yyvsp[(1) - (1)].string); }
+     break;
+ 
+   case 420:
+-#line 1453 "src/p.y" /* yacc.c:1646  */
+-    { mailset.message = (yyvsp[0].string); }
+-#line 4392 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1453 "src/p.y"
++    { mailset.message = (yyvsp[(1) - (1)].string); }
+     break;
+ 
+   case 421:
+-#line 1456 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1456 "src/p.y"
+     {
+                    current->every.type = EVERY_SKIPCYCLES;
+-                   current->every.spec.cycle.number = (yyvsp[-1].number);
++                   current->every.spec.cycle.number = (yyvsp[(2) - (3)].number);
+                  }
+-#line 4401 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 422:
+-#line 1460 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1460 "src/p.y"
+     {
+                    current->every.type = EVERY_CRON;
+-                   current->every.spec.cron = (yyvsp[0].string);
++                   current->every.spec.cron = (yyvsp[(2) - (2)].string);
+                  }
+-#line 4410 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 423:
+-#line 1464 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1464 "src/p.y"
+     {
+                    current->every.type = EVERY_NOTINCRON;
+-                   current->every.spec.cron = (yyvsp[0].string);
++                   current->every.spec.cron = (yyvsp[(2) - (2)].string);
+                  }
+-#line 4419 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 424:
+-#line 1470 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1470 "src/p.y"
+     {
+                     current->mode = MODE_ACTIVE;
+                   }
+-#line 4427 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 425:
+-#line 1473 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1473 "src/p.y"
+     {
+                     current->mode = MODE_PASSIVE;
+                   }
+-#line 4435 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 426:
+-#line 1476 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1476 "src/p.y"
+     {
+                     current->mode = MODE_MANUAL;
+                     current->monitor = MONITOR_NOT;
+                   }
+-#line 4444 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 427:
+-#line 1482 "src/p.y" /* yacc.c:1646  */
+-    { addservicegroup((yyvsp[0].string)); FREE((yyvsp[0].string));}
+-#line 4450 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1482 "src/p.y"
++    { addservicegroup((yyvsp[(2) - (2)].string)); FREE((yyvsp[(2) - (2)].string));}
+     break;
+ 
+   case 431:
+-#line 1493 "src/p.y" /* yacc.c:1646  */
+-    { adddependant((yyvsp[0].string)); }
+-#line 4456 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1493 "src/p.y"
++    { adddependant((yyvsp[(1) - (1)].string)); }
+     break;
+ 
+   case 432:
+-#line 1496 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1496 "src/p.y"
+     {
+                         statusset.initialized = TRUE;
+-                        statusset.operator = (yyvsp[-5].number);
+-                        statusset.return_value = (yyvsp[-4].number);
+-                        addeventaction(&(statusset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                        statusset.operator = (yyvsp[(3) - (8)].number);
++                        statusset.return_value = (yyvsp[(4) - (8)].number);
++                        addeventaction(&(statusset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                         addstatus(&statusset);
+                    }
+-#line 4468 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 433:
+-#line 1503 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1503 "src/p.y"
+     {
+                         statusset.initialized = FALSE;
+                         statusset.operator = Operator_Changed;
+                         statusset.return_value = 0;
+-                        addeventaction(&(statusset).action, (yyvsp[0].number), ACTION_IGNORE);
++                        addeventaction(&(statusset).action, (yyvsp[(6) - (6)].number), ACTION_IGNORE);
+                         addstatus(&statusset);
+                    }
+-#line 4480 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 434:
+-#line 1512 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1512 "src/p.y"
+     {
+-                     addeventaction(&(resourceset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                     addeventaction(&(resourceset).action, (yyvsp[(5) - (6)].number), (yyvsp[(6) - (6)].number));
+                      addresource(&resourceset);
+                    }
+-#line 4489 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 441:
+-#line 1528 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1528 "src/p.y"
+     {
+-                     addeventaction(&(resourceset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                     addeventaction(&(resourceset).action, (yyvsp[(5) - (6)].number), (yyvsp[(6) - (6)].number));
+                      addresource(&resourceset);
+                    }
+-#line 4498 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 448:
+-#line 1544 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1544 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_CPU_PERCENT;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = ((yyvsp[-1].number) * 10);
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = ((yyvsp[(3) - (4)].number) * 10);
+                   }
+-#line 4508 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 449:
+-#line 1549 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1549 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_TOTAL_CPU_PERCENT;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = ((yyvsp[-1].number) * 10);
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = ((yyvsp[(3) - (4)].number) * 10);
+                   }
+-#line 4518 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 450:
+-#line 1556 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1556 "src/p.y"
+     {
+-                    resourceset.resource_id = (yyvsp[-3].number);
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = ((yyvsp[-1].number) * 10);
++                    resourceset.resource_id = (yyvsp[(1) - (4)].number);
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = ((yyvsp[(3) - (4)].number) * 10);
+                   }
+-#line 4528 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 451:
+-#line 1563 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1563 "src/p.y"
+     { (yyval.number) = RESOURCE_ID_CPUUSER; }
+-#line 4534 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 452:
+-#line 1564 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1564 "src/p.y"
+     { (yyval.number) = RESOURCE_ID_CPUSYSTEM; }
+-#line 4540 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 453:
+-#line 1565 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1565 "src/p.y"
+     { (yyval.number) = RESOURCE_ID_CPUWAIT; }
+-#line 4546 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 454:
+-#line 1568 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1568 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_MEM_KBYTE;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = (int) ((yyvsp[-1].real) * ((yyvsp[0].number) / 1024.0));
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = (int) ((yyvsp[(3) - (4)].real) * ((yyvsp[(4) - (4)].number) / 1024.0));
+                   }
+-#line 4556 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 455:
+-#line 1573 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1573 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_MEM_PERCENT;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = ((yyvsp[-1].number) * 10);
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = ((yyvsp[(3) - (4)].number) * 10);
+                   }
+-#line 4566 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 456:
+-#line 1578 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1578 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_TOTAL_MEM_KBYTE;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = (int) ((yyvsp[-1].real) * ((yyvsp[0].number) / 1024.0));
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = (int) ((yyvsp[(3) - (4)].real) * ((yyvsp[(4) - (4)].number) / 1024.0));
+                   }
+-#line 4576 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 457:
+-#line 1583 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1583 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_TOTAL_MEM_PERCENT;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = ((yyvsp[-1].number) * 10);
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = ((yyvsp[(3) - (4)].number) * 10);
+                   }
+-#line 4586 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 458:
+-#line 1590 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1590 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_SWAP_KBYTE;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = (int) ((yyvsp[-1].real) * ((yyvsp[0].number) / 1024.0));
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = (int) ((yyvsp[(3) - (4)].real) * ((yyvsp[(4) - (4)].number) / 1024.0));
+                   }
+-#line 4596 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 459:
+-#line 1595 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1595 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_SWAP_PERCENT;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = ((yyvsp[-1].number) * 10);
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = ((yyvsp[(3) - (4)].number) * 10);
+                   }
+-#line 4606 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 460:
+-#line 1602 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1602 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_CHILDREN;
+-                    resourceset.operator = (yyvsp[-1].number);
+-                    resourceset.limit = (int) (yyvsp[0].number);
++                    resourceset.operator = (yyvsp[(2) - (3)].number);
++                    resourceset.limit = (int) (yyvsp[(3) - (3)].number);
+                   }
+-#line 4616 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 461:
+-#line 1609 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1609 "src/p.y"
+     {
+-                    resourceset.resource_id = (yyvsp[-2].number);
+-                    resourceset.operator = (yyvsp[-1].number);
+-                    resourceset.limit = (int) ((yyvsp[0].real) * 10.0);
++                    resourceset.resource_id = (yyvsp[(1) - (3)].number);
++                    resourceset.operator = (yyvsp[(2) - (3)].number);
++                    resourceset.limit = (int) ((yyvsp[(3) - (3)].real) * 10.0);
+                   }
+-#line 4626 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 462:
+-#line 1616 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1616 "src/p.y"
+     { (yyval.number) = RESOURCE_ID_LOAD1; }
+-#line 4632 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 463:
+-#line 1617 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1617 "src/p.y"
+     { (yyval.number) = RESOURCE_ID_LOAD5; }
+-#line 4638 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 464:
+-#line 1618 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1618 "src/p.y"
+     { (yyval.number) = RESOURCE_ID_LOAD15; }
+-#line 4644 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 465:
+-#line 1621 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.real) = (yyvsp[0].real); }
+-#line 4650 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1621 "src/p.y"
++    { (yyval.real) = (yyvsp[(1) - (1)].real); }
+     break;
+ 
+   case 466:
+-#line 1622 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.real) = (float) (yyvsp[0].number); }
+-#line 4656 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1622 "src/p.y"
++    { (yyval.real) = (float) (yyvsp[(1) - (1)].number); }
+     break;
+ 
+   case 467:
+-#line 1625 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1625 "src/p.y"
+     {
+-                    timestampset.operator = (yyvsp[-6].number);
+-                    timestampset.time = ((yyvsp[-5].number) * (yyvsp[-4].number));
+-                    addeventaction(&(timestampset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    timestampset.operator = (yyvsp[(3) - (9)].number);
++                    timestampset.time = ((yyvsp[(4) - (9)].number) * (yyvsp[(5) - (9)].number));
++                    addeventaction(&(timestampset).action, (yyvsp[(8) - (9)].number), (yyvsp[(9) - (9)].number));
+                     addtimestamp(&timestampset, FALSE);
+                   }
+-#line 4667 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 468:
+-#line 1631 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1631 "src/p.y"
+     {
+                     timestampset.test_changes = TRUE;
+-                    addeventaction(&(timestampset).action, (yyvsp[0].number), ACTION_IGNORE);
++                    addeventaction(&(timestampset).action, (yyvsp[(6) - (6)].number), ACTION_IGNORE);
+                     addtimestamp(&timestampset, TRUE);
+                   }
+-#line 4677 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 469:
+-#line 1638 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1638 "src/p.y"
+     { (yyval.number) = Operator_Equal; }
+-#line 4683 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 470:
+-#line 1639 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1639 "src/p.y"
+     { (yyval.number) = Operator_Greater; }
+-#line 4689 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 471:
+-#line 1640 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1640 "src/p.y"
+     { (yyval.number) = Operator_Less; }
+-#line 4695 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 472:
+-#line 1641 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1641 "src/p.y"
+     { (yyval.number) = Operator_Equal; }
+-#line 4701 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 473:
+-#line 1642 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1642 "src/p.y"
+     { (yyval.number) = Operator_NotEqual; }
+-#line 4707 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 474:
+-#line 1643 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1643 "src/p.y"
+     { (yyval.number) = Operator_Changed; }
+-#line 4713 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 475:
+-#line 1646 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1646 "src/p.y"
+     { (yyval.number) = TIME_SECOND; }
+-#line 4719 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 476:
+-#line 1647 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1647 "src/p.y"
+     { (yyval.number) = TIME_SECOND; }
+-#line 4725 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 477:
+-#line 1648 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1648 "src/p.y"
+     { (yyval.number) = TIME_MINUTE; }
+-#line 4731 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 478:
+-#line 1649 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1649 "src/p.y"
+     { (yyval.number) = TIME_HOUR; }
+-#line 4737 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 479:
+-#line 1650 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1650 "src/p.y"
+     { (yyval.number) = TIME_DAY; }
+-#line 4743 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 480:
+-#line 1653 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1653 "src/p.y"
+     { (yyval.number) = ACTION_ALERT; }
+-#line 4749 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 481:
+-#line 1654 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1654 "src/p.y"
+     { (yyval.number) = ACTION_EXEC; }
+-#line 4755 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 482:
+-#line 1655 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1655 "src/p.y"
+     { (yyval.number) = ACTION_EXEC; }
+-#line 4761 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 483:
+-#line 1656 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1656 "src/p.y"
+     { (yyval.number) = ACTION_RESTART; }
+-#line 4767 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 484:
+-#line 1657 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1657 "src/p.y"
+     { (yyval.number) = ACTION_START; }
+-#line 4773 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 485:
+-#line 1658 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1658 "src/p.y"
+     { (yyval.number) = ACTION_STOP; }
+-#line 4779 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 486:
+-#line 1659 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1659 "src/p.y"
+     { (yyval.number) = ACTION_UNMONITOR; }
+-#line 4785 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 487:
+-#line 1662 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1662 "src/p.y"
+     {
+-                    (yyval.number) = (yyvsp[0].number);
+-                    if ((yyvsp[0].number) == ACTION_EXEC && command) {
++                    (yyval.number) = (yyvsp[(1) - (1)].number);
++                    if ((yyvsp[(1) - (1)].number) == ACTION_EXEC && command) {
+                       command1 = command;
+                       command = NULL;
+                     }
+                   }
+-#line 4797 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 488:
+-#line 1671 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1671 "src/p.y"
+     {
+-                    (yyval.number) = (yyvsp[0].number);
+-                    if ((yyvsp[0].number) == ACTION_EXEC && command) {
++                    (yyval.number) = (yyvsp[(1) - (1)].number);
++                    if ((yyvsp[(1) - (1)].number) == ACTION_EXEC && command) {
+                       command2 = command;
+                       command = NULL;
+                     }
+                   }
+-#line 4809 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 490:
+-#line 1681 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1681 "src/p.y"
+     {
+-                    rate1.count  = (yyvsp[-1].number);
+-                    rate1.cycles = (yyvsp[-1].number);
++                    rate1.count  = (yyvsp[(1) - (2)].number);
++                    rate1.cycles = (yyvsp[(1) - (2)].number);
+                     if (rate1.cycles < 1 || rate1.cycles > BITMAP_MAX)
+                       yyerror2("The number of cycles must be between 1 and %d", BITMAP_MAX);
+                   }
+-#line 4820 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 491:
+-#line 1687 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1687 "src/p.y"
+     {
+-                    rate1.count  = (yyvsp[-2].number);
+-                    rate1.cycles = (yyvsp[-1].number);
++                    rate1.count  = (yyvsp[(1) - (3)].number);
++                    rate1.cycles = (yyvsp[(2) - (3)].number);
+                     if (rate1.cycles < 1 || rate1.cycles > BITMAP_MAX)
+                       yyerror2("The number of cycles must be between 1 and %d", BITMAP_MAX);
+                     if (rate1.count < 1 || rate1.count > rate1.cycles)
+                       yyerror2("The number of events must be bigger then 0 and less than poll cycles");
+                   }
+-#line 4833 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 493:
+-#line 1698 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1698 "src/p.y"
+     {
+-                    rate2.count  = (yyvsp[-1].number);
+-                    rate2.cycles = (yyvsp[-1].number);
++                    rate2.count  = (yyvsp[(1) - (2)].number);
++                    rate2.cycles = (yyvsp[(1) - (2)].number);
+                     if (rate2.cycles < 1 || rate2.cycles > BITMAP_MAX)
+                       yyerror2("The number of cycles must be between 1 and %d", BITMAP_MAX);
+                   }
+-#line 4844 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 494:
+-#line 1704 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1704 "src/p.y"
+     {
+-                    rate2.count  = (yyvsp[-2].number);
+-                    rate2.cycles = (yyvsp[-1].number);
++                    rate2.count  = (yyvsp[(1) - (3)].number);
++                    rate2.cycles = (yyvsp[(2) - (3)].number);
+                     if (rate2.cycles < 1 || rate2.cycles > BITMAP_MAX)
+                       yyerror2("The number of cycles must be between 1 and %d", BITMAP_MAX);
+                     if (rate2.count < 1 || rate2.count > rate2.cycles)
+                       yyerror2("The number of events must be bigger then 0 and less than poll cycles");
+                   }
+-#line 4857 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 495:
+-#line 1714 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1714 "src/p.y"
+     {
+                     (yyval.number) = ACTION_ALERT;
+                   }
+-#line 4865 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 496:
+-#line 1717 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1717 "src/p.y"
+     {
+-                    (yyval.number) = (yyvsp[0].number);
++                    (yyval.number) = (yyvsp[(6) - (6)].number);
+                   }
+-#line 4873 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 497:
+-#line 1720 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1720 "src/p.y"
+     {
+-                    (yyval.number) = (yyvsp[0].number);
++                    (yyval.number) = (yyvsp[(6) - (6)].number);
+                   }
+-#line 4881 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 498:
+-#line 1723 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1723 "src/p.y"
+     {
+-                    (yyval.number) = (yyvsp[0].number);
++                    (yyval.number) = (yyvsp[(6) - (6)].number);
+                   }
+-#line 4889 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 499:
+-#line 1728 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1728 "src/p.y"
+     {
+-                    addeventaction(&(checksumset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    addeventaction(&(checksumset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     addchecksum(&checksumset);
+                   }
+-#line 4898 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 500:
+-#line 1733 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1733 "src/p.y"
+     {
+-                    snprintf(checksumset.hash, sizeof(checksumset.hash), "%s", (yyvsp[-4].string));
+-                    FREE((yyvsp[-4].string));
+-                    addeventaction(&(checksumset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    snprintf(checksumset.hash, sizeof(checksumset.hash), "%s", (yyvsp[(6) - (10)].string));
++                    FREE((yyvsp[(6) - (10)].string));
++                    addeventaction(&(checksumset).action, (yyvsp[(9) - (10)].number), (yyvsp[(10) - (10)].number));
+                     addchecksum(&checksumset);
+                   }
+-#line 4909 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 501:
+-#line 1739 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1739 "src/p.y"
+     {
+                     checksumset.test_changes = TRUE;
+-                    addeventaction(&(checksumset).action, (yyvsp[0].number), ACTION_IGNORE);
++                    addeventaction(&(checksumset).action, (yyvsp[(7) - (7)].number), ACTION_IGNORE);
+                     addchecksum(&checksumset);
+                   }
+-#line 4919 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 502:
+-#line 1745 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1745 "src/p.y"
+     { checksumset.type = HASH_UNKNOWN; }
+-#line 4925 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 503:
+-#line 1746 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1746 "src/p.y"
+     { checksumset.type = HASH_MD5; }
+-#line 4931 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 504:
+-#line 1747 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1747 "src/p.y"
+     { checksumset.type = HASH_SHA1; }
+-#line 4937 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 505:
+-#line 1750 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1750 "src/p.y"
+     {
+                     filesystemset.resource = RESOURCE_ID_INODE;
+-                    filesystemset.operator = (yyvsp[-5].number);
+-                    filesystemset.limit_absolute = (yyvsp[-4].number);
+-                    addeventaction(&(filesystemset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    filesystemset.operator = (yyvsp[(3) - (8)].number);
++                    filesystemset.limit_absolute = (yyvsp[(4) - (8)].number);
++                    addeventaction(&(filesystemset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     addfilesystem(&filesystemset);
+                   }
+-#line 4949 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 506:
+-#line 1757 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1757 "src/p.y"
+     {
+                     filesystemset.resource = RESOURCE_ID_INODE;
+-                    filesystemset.operator = (yyvsp[-6].number);
+-                    filesystemset.limit_percent = (int)((yyvsp[-5].number) * 10);
+-                    addeventaction(&(filesystemset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    filesystemset.operator = (yyvsp[(3) - (9)].number);
++                    filesystemset.limit_percent = (int)((yyvsp[(4) - (9)].number) * 10);
++                    addeventaction(&(filesystemset).action, (yyvsp[(8) - (9)].number), (yyvsp[(9) - (9)].number));
+                     addfilesystem(&filesystemset);
+                   }
+-#line 4961 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 507:
+-#line 1766 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1766 "src/p.y"
+     {
+                     if (! filesystem_usage(current))
+                       yyerror2("Cannot read usage of filesystem %s", current->path);
+                     filesystemset.resource = RESOURCE_ID_SPACE;
+-                    filesystemset.operator = (yyvsp[-6].number);
+-                    filesystemset.limit_absolute = (long long)((double)(yyvsp[-5].real) / (double)current->inf->priv.filesystem.f_bsize * (double)(yyvsp[-4].number));
+-                    addeventaction(&(filesystemset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    filesystemset.operator = (yyvsp[(3) - (9)].number);
++                    filesystemset.limit_absolute = (long long)((double)(yyvsp[(4) - (9)].real) / (double)current->inf->priv.filesystem.f_bsize * (double)(yyvsp[(5) - (9)].number));
++                    addeventaction(&(filesystemset).action, (yyvsp[(8) - (9)].number), (yyvsp[(9) - (9)].number));
+                     addfilesystem(&filesystemset);
+                   }
+-#line 4975 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 508:
+-#line 1775 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1775 "src/p.y"
+     {
+                     filesystemset.resource = RESOURCE_ID_SPACE;
+-                    filesystemset.operator = (yyvsp[-6].number);
+-                    filesystemset.limit_percent = (int)((yyvsp[-5].number) * 10);
+-                    addeventaction(&(filesystemset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    filesystemset.operator = (yyvsp[(3) - (9)].number);
++                    filesystemset.limit_percent = (int)((yyvsp[(4) - (9)].number) * 10);
++                    addeventaction(&(filesystemset).action, (yyvsp[(8) - (9)].number), (yyvsp[(9) - (9)].number));
+                     addfilesystem(&filesystemset);
+                   }
+-#line 4987 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 509:
+-#line 1784 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1784 "src/p.y"
+     {
+-                    seteventaction(&(current)->action_FSFLAG, (yyvsp[0].number), ACTION_IGNORE);
++                    seteventaction(&(current)->action_FSFLAG, (yyvsp[(6) - (6)].number), ACTION_IGNORE);
+                   }
+-#line 4995 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 510:
+-#line 1789 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1789 "src/p.y"
+     { (yyval.number) = UNIT_BYTE; }
+-#line 5001 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 511:
+-#line 1790 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1790 "src/p.y"
+     { (yyval.number) = UNIT_BYTE; }
+-#line 5007 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 512:
+-#line 1791 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1791 "src/p.y"
+     { (yyval.number) = UNIT_KILOBYTE; }
+-#line 5013 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 513:
+-#line 1792 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1792 "src/p.y"
+     { (yyval.number) = UNIT_MEGABYTE; }
+-#line 5019 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 514:
+-#line 1793 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1793 "src/p.y"
+     { (yyval.number) = UNIT_GIGABYTE; }
+-#line 5025 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 515:
+-#line 1796 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1796 "src/p.y"
+     {
+-                    permset.perm = check_perm((yyvsp[-4].number));
+-                    addeventaction(&(permset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    permset.perm = check_perm((yyvsp[(4) - (8)].number));
++                    addeventaction(&(permset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     addperm(&permset);
+                   }
+-#line 5035 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 516:
+-#line 1803 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1803 "src/p.y"
+     {
+                     matchset.ignore = FALSE;
+-                    matchset.match_path = (yyvsp[-3].string);
++                    matchset.match_path = (yyvsp[(4) - (7)].string);
+                     matchset.match_string = NULL;
+-                    addmatchpath(&matchset, (yyvsp[0].number));
+-                    FREE((yyvsp[-3].string));
++                    addmatchpath(&matchset, (yyvsp[(7) - (7)].number));
++                    FREE((yyvsp[(4) - (7)].string));
+                   }
+-#line 5047 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 517:
+-#line 1810 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1810 "src/p.y"
+     {
+                     matchset.ignore = FALSE;
+                     matchset.match_path = NULL;
+-                    matchset.match_string = (yyvsp[-3].string);
+-                    addmatch(&matchset, (yyvsp[0].number), 0);
++                    matchset.match_string = (yyvsp[(4) - (7)].string);
++                    addmatch(&matchset, (yyvsp[(7) - (7)].number), 0);
+                   }
+-#line 5058 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 518:
+-#line 1816 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1816 "src/p.y"
+     {
+                     matchset.ignore = TRUE;
+-                    matchset.match_path = (yyvsp[0].string);
++                    matchset.match_path = (yyvsp[(4) - (4)].string);
+                     matchset.match_string = NULL;
+                     addmatchpath(&matchset, ACTION_IGNORE);
+-                    FREE((yyvsp[0].string));
++                    FREE((yyvsp[(4) - (4)].string));
+                   }
+-#line 5070 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 519:
+-#line 1823 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1823 "src/p.y"
+     {
+                     matchset.ignore = TRUE;
+                     matchset.match_path = NULL;
+-                    matchset.match_string = (yyvsp[0].string);
++                    matchset.match_string = (yyvsp[(4) - (4)].string);
+                     addmatch(&matchset, ACTION_IGNORE, 0);
+                   }
+-#line 5081 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 520:
+-#line 1831 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1831 "src/p.y"
+     {
+                     matchset.not = FALSE;
+                   }
+-#line 5089 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 521:
+-#line 1834 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1834 "src/p.y"
+     {
+                     matchset.not = TRUE;
+                   }
+-#line 5097 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 522:
+-#line 1840 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1840 "src/p.y"
+     {
+-                    sizeset.operator = (yyvsp[-6].number);
+-                    sizeset.size = ((unsigned long long)(yyvsp[-5].number) * (yyvsp[-4].number));
+-                    addeventaction(&(sizeset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    sizeset.operator = (yyvsp[(3) - (9)].number);
++                    sizeset.size = ((unsigned long long)(yyvsp[(4) - (9)].number) * (yyvsp[(5) - (9)].number));
++                    addeventaction(&(sizeset).action, (yyvsp[(8) - (9)].number), (yyvsp[(9) - (9)].number));
+                     addsize(&sizeset);
+                   }
+-#line 5108 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 523:
+-#line 1846 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1846 "src/p.y"
+     {
+                     sizeset.test_changes = TRUE;
+-                    addeventaction(&(sizeset).action, (yyvsp[0].number), ACTION_IGNORE);
++                    addeventaction(&(sizeset).action, (yyvsp[(6) - (6)].number), ACTION_IGNORE);
+                     addsize(&sizeset);
+                   }
+-#line 5118 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 524:
+-#line 1853 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1853 "src/p.y"
+     {
+-                    uidset.uid = get_uid((yyvsp[-4].string), 0);
+-                    addeventaction(&(uidset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    uidset.uid = get_uid((yyvsp[(4) - (8)].string), 0);
++                    addeventaction(&(uidset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     current->uid = adduid(&uidset);
+-                    FREE((yyvsp[-4].string));
++                    FREE((yyvsp[(4) - (8)].string));
+                   }
+-#line 5129 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 525:
+-#line 1859 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1859 "src/p.y"
+     {
+-                    uidset.uid = get_uid(NULL, (yyvsp[-4].number));
+-                    addeventaction(&(uidset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    uidset.uid = get_uid(NULL, (yyvsp[(4) - (8)].number));
++                    addeventaction(&(uidset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     current->uid = adduid(&uidset);
+                   }
+-#line 5139 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 526:
+-#line 1866 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1866 "src/p.y"
+     {
+-                    uidset.uid = get_uid((yyvsp[-4].string), 0);
+-                    addeventaction(&(uidset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    uidset.uid = get_uid((yyvsp[(4) - (8)].string), 0);
++                    addeventaction(&(uidset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     current->euid = adduid(&uidset);
+-                    FREE((yyvsp[-4].string));
++                    FREE((yyvsp[(4) - (8)].string));
+                   }
+-#line 5150 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 527:
+-#line 1872 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1872 "src/p.y"
+     {
+-                    uidset.uid = get_uid(NULL, (yyvsp[-4].number));
+-                    addeventaction(&(uidset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    uidset.uid = get_uid(NULL, (yyvsp[(4) - (8)].number));
++                    addeventaction(&(uidset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     current->euid = adduid(&uidset);
+                   }
+-#line 5160 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 528:
+-#line 1879 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1879 "src/p.y"
+     {
+-                    gidset.gid = get_gid((yyvsp[-4].string), 0);
+-                    addeventaction(&(gidset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    gidset.gid = get_gid((yyvsp[(4) - (8)].string), 0);
++                    addeventaction(&(gidset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     current->gid = addgid(&gidset);
+-                    FREE((yyvsp[-4].string));
++                    FREE((yyvsp[(4) - (8)].string));
+                   }
+-#line 5171 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 529:
+-#line 1885 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1885 "src/p.y"
+     {
+-                    gidset.gid = get_gid(NULL, (yyvsp[-4].number));
+-                    addeventaction(&(gidset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    gidset.gid = get_gid(NULL, (yyvsp[(4) - (8)].number));
++                    addeventaction(&(gidset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     current->gid = addgid(&gidset);
+                   }
+-#line 5181 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 530:
+-#line 1892 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1892 "src/p.y"
+     { (yyval.number) = ICMP_ECHO; }
+-#line 5187 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 531:
+-#line 1895 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1895 "src/p.y"
+     { mailset.reminder = 0; }
+-#line 5193 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 532:
+-#line 1896 "src/p.y" /* yacc.c:1646  */
+-    { mailset.reminder = (yyvsp[0].number); }
+-#line 5199 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1896 "src/p.y"
++    { mailset.reminder = (yyvsp[(2) - (2)].number); }
+     break;
+ 
+   case 533:
+-#line 1897 "src/p.y" /* yacc.c:1646  */
+-    { mailset.reminder = (yyvsp[-1].number); }
+-#line 5205 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1897 "src/p.y"
++    { mailset.reminder = (yyvsp[(2) - (3)].number); }
+     break;
+ 
+ 
+-#line 5209 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 5885 "src/y.tab.c"
+       default: break;
+     }
+   /* User semantic actions sometimes alter yychar, and that requires
+@@ -5228,7 +5904,7 @@
+ 
+   *++yyvsp = yyval;
+ 
+-  /* Now 'shift' the result of the reduction.  Determine what state
++  /* Now `shift' the result of the reduction.  Determine what state
+      that goes to, based on the state we popped back to and the rule
+      number reduced by.  */
+ 
+@@ -5243,9 +5919,9 @@
+   goto yynewstate;
+ 
+ 
+-/*--------------------------------------.
+-| yyerrlab -- here on detecting error.  |
+-`--------------------------------------*/
++/*------------------------------------.
++| yyerrlab -- here on detecting error |
++`------------------------------------*/
+ yyerrlab:
+   /* Make sure we have latest lookahead translation.  See comments at
+      user semantic actions for why this is necessary.  */
+@@ -5296,20 +5972,20 @@
+   if (yyerrstatus == 3)
+     {
+       /* If just tried and failed to reuse lookahead token after an
+-         error, discard it.  */
++	 error, discard it.  */
+ 
+       if (yychar <= YYEOF)
+-        {
+-          /* Return failure if at end of input.  */
+-          if (yychar == YYEOF)
+-            YYABORT;
+-        }
++	{
++	  /* Return failure if at end of input.  */
++	  if (yychar == YYEOF)
++	    YYABORT;
++	}
+       else
+-        {
+-          yydestruct ("Error: discarding",
+-                      yytoken, &yylval);
+-          yychar = YYEMPTY;
+-        }
++	{
++	  yydestruct ("Error: discarding",
++		      yytoken, &yylval);
++	  yychar = YYEMPTY;
++	}
+     }
+ 
+   /* Else will try to reuse lookahead token after shifting the error
+@@ -5328,7 +6004,7 @@
+   if (/*CONSTCOND*/ 0)
+      goto yyerrorlab;
+ 
+-  /* Do not reclaim the symbols of the rule whose action triggered
++  /* Do not reclaim the symbols of the rule which action triggered
+      this YYERROR.  */
+   YYPOPSTACK (yylen);
+   yylen = 0;
+@@ -5341,37 +6017,35 @@
+ | yyerrlab1 -- common code for both syntax error and YYERROR.  |
+ `-------------------------------------------------------------*/
+ yyerrlab1:
+-  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
++  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+ 
+   for (;;)
+     {
+       yyn = yypact[yystate];
+       if (!yypact_value_is_default (yyn))
+-        {
+-          yyn += YYTERROR;
+-          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+-            {
+-              yyn = yytable[yyn];
+-              if (0 < yyn)
+-                break;
+-            }
+-        }
++	{
++	  yyn += YYTERROR;
++	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
++	    {
++	      yyn = yytable[yyn];
++	      if (0 < yyn)
++		break;
++	    }
++	}
+ 
+       /* Pop the current state because it cannot handle the error token.  */
+       if (yyssp == yyss)
+-        YYABORT;
++	YYABORT;
+ 
+ 
+       yydestruct ("Error: popping",
+-                  yystos[yystate], yyvsp);
++		  yystos[yystate], yyvsp);
+       YYPOPSTACK (1);
+       yystate = *yyssp;
+       YY_STACK_PRINT (yyss, yyssp);
+     }
+ 
+-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+   *++yyvsp = yylval;
+-  YY_IGNORE_MAYBE_UNINITIALIZED_END
+ 
+ 
+   /* Shift the error token.  */
+@@ -5395,7 +6069,7 @@
+   yyresult = 1;
+   goto yyreturn;
+ 
+-#if !defined yyoverflow || YYERROR_VERBOSE
++#if !defined(yyoverflow) || YYERROR_VERBOSE
+ /*-------------------------------------------------.
+ | yyexhaustedlab -- memory exhaustion comes here.  |
+ `-------------------------------------------------*/
+@@ -5414,14 +6088,14 @@
+       yydestruct ("Cleanup: discarding lookahead",
+                   yytoken, &yylval);
+     }
+-  /* Do not reclaim the symbols of the rule whose action triggered
++  /* Do not reclaim the symbols of the rule which action triggered
+      this YYABORT or YYACCEPT.  */
+   YYPOPSTACK (yylen);
+   YY_STACK_PRINT (yyss, yyssp);
+   while (yyssp != yyss)
+     {
+       yydestruct ("Cleanup: popping",
+-                  yystos[*yyssp], yyvsp);
++		  yystos[*yyssp], yyvsp);
+       YYPOPSTACK (1);
+     }
+ #ifndef yyoverflow
+@@ -5432,9 +6106,14 @@
+   if (yymsg != yymsgbuf)
+     YYSTACK_FREE (yymsg);
+ #endif
+-  return yyresult;
++  /* Make sure YYID is used.  */
++  return YYID (yyresult);
+ }
+-#line 1900 "src/p.y" /* yacc.c:1906  */
++
++
++
++/* Line 2067 of yacc.c  */
++#line 1900 "src/p.y"
+ 
+ 
+ 
+@@ -5683,6 +6362,7 @@
+                         if (s->program->args->has_gid) {
+                                 Command_setGid(s->program->C, s->program->args->gid);
+                         }
++                        Command_setUmask(s->program->C, Run.umask);
+                 }
+         }
+ 
+@@ -7246,3 +7926,4 @@
+   return copy;
+ }
+ 
++
diff -Nru monit-5.9/debian/patches/series monit-5.9/debian/patches/series
--- monit-5.9/debian/patches/series	2014-09-30 14:24:21.000000000 +0400
+++ monit-5.9/debian/patches/series	2015-09-12 11:35:51.000000000 +0300
@@ -2,3 +2,4 @@
  05_monitrc.patch
  11_enable_hurd.patch
 12_FTBFS_on_kfreebsd.patch
+13_umask_fix.patch

Attachment: signature.asc
Description: Digital signature


--- End Message ---
--- Begin Message ---
Version: 8.3

Hi,

The updates referred to in these bugs were included in today's 8.3
Jessie point release.

Regards,

Adam

--- End Message ---

Reply to: