ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
(Generate patch)

Comparing ircd-hybrid/trunk/src/conf_parser.c (file contents):
Revision 1619 by michael, Wed Oct 31 19:21:26 2012 UTC vs.
Revision 4070 by michael, Thu Jun 26 15:36:08 2014 UTC

# Line 1 | Line 1
1 < /* A Bison parser, made by GNU Bison 2.6.2.33-cc5a9.  */
1 > /* A Bison parser, made by GNU Bison 3.0.2.  */
2  
3   /* Bison implementation for Yacc-like parsers in C
4 <  
5 <      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
6 <  
4 >
5 >   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
6 >
7     This program is free software: you can redistribute it and/or modify
8     it under the terms of the GNU General Public License as published by
9     the Free Software Foundation, either version 3 of the License, or
10     (at your option) any later version.
11 <  
11 >
12     This program is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15     GNU General Public License for more details.
16 <  
16 >
17     You should have received a copy of the GNU General Public License
18     along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19  
# Line 26 | Line 26
26     special exception, which will cause the skeleton and the resulting
27     Bison output files to be licensed under the GNU General Public
28     License without this special exception.
29 <  
29 >
30     This special exception was added by the Free Software Foundation in
31     version 2.2 of Bison.  */
32  
# Line 44 | Line 44
44   #define YYBISON 1
45  
46   /* Bison version.  */
47 < #define YYBISON_VERSION "2.6.2.33-cc5a9"
47 > #define YYBISON_VERSION "3.0.2"
48  
49   /* Skeleton name.  */
50   #define YYSKELETON_NAME "yacc.c"
# Line 62 | Line 62
62  
63  
64   /* Copy the first part of user declarations.  */
65 < /* Line 358 of yacc.c  */
66 < #line 25 "conf_parser.y"
65 > #line 28 "conf_parser.y" /* yacc.c:339  */
66  
67  
68   #define YY_NO_UNPUT
# Line 75 | Line 74
74   #include "ircd.h"
75   #include "list.h"
76   #include "conf.h"
77 + #include "conf_class.h"
78   #include "event.h"
79   #include "log.h"
80   #include "client.h"     /* for UMODE_ALL only */
81   #include "irc_string.h"
82 #include "sprintf_irc.h"
82   #include "memory.h"
83   #include "modules.h"
84 < #include "s_serv.h"
84 > #include "server.h"
85   #include "hostmask.h"
86   #include "send.h"
87   #include "listener.h"
88   #include "resv.h"
89   #include "numeric.h"
90 < #include "s_user.h"
90 > #include "user.h"
91 > #include "motd.h"
92  
93   #ifdef HAVE_LIBCRYPTO
94   #include <openssl/rsa.h>
# Line 97 | Line 97
97   #include <openssl/dh.h>
98   #endif
99  
100 < int yylex(void);
100 > #include "rsa.h"
101  
102 < static char *class_name = NULL;
103 < static struct ConfItem *yy_conf = NULL;
104 < static struct AccessItem *yy_aconf = NULL;
105 < static struct MatchItem *yy_match_item = NULL;
106 < static struct ClassItem *yy_class = NULL;
107 < static char *yy_class_name = NULL;
108 <
109 < static dlink_list col_conf_list  = { NULL, NULL, 0 };
110 < static unsigned int listener_flags = 0;
111 < static unsigned int regex_ban = 0;
112 < static char userbuf[IRCD_BUFSIZE];
113 < static char hostbuf[IRCD_BUFSIZE];
114 < static char reasonbuf[REASONLEN + 1];
115 < static char gecos_name[REALLEN * 4];
116 < static char lfile[IRCD_BUFSIZE];
117 < static unsigned int ltype = 0;
118 < static unsigned int lsize = 0;
119 < static char *resv_reason = NULL;
120 < static char *listener_address = NULL;
102 > int yylex(void);
103  
104 < struct CollectItem
104 > static struct
105   {
106 <  dlink_node node;
107 <  char *name;
108 <  char *user;
109 <  char *host;
110 <  char *passwd;
111 <  int  port;
112 <  int  flags;
113 < #ifdef HAVE_LIBCRYPTO
114 <  char *rsa_public_key_file;
115 <  RSA *rsa_public_key;
116 < #endif
117 < };
106 >  struct
107 >  {
108 >    dlink_list list;
109 >  } mask,
110 >    leaf,
111 >    hub;
112 >
113 >  struct
114 >  {
115 >    char buf[IRCD_BUFSIZE];
116 >  } name,
117 >    user,
118 >    host,
119 >    addr,
120 >    bind,
121 >    file,
122 >    ciph,
123 >    cert,
124 >    rpass,
125 >    spass,
126 >    class;
127 >
128 >  struct
129 >  {
130 >    unsigned int value;
131 >  } flags,
132 >    modes,
133 >    size,
134 >    type,
135 >    port,
136 >    aftype,
137 >    ping_freq,
138 >    max_perip,
139 >    con_freq,
140 >    min_idle,
141 >    max_idle,
142 >    max_total,
143 >    max_global,
144 >    max_local,
145 >    max_ident,
146 >    max_sendq,
147 >    max_recvq,
148 >    max_channels,
149 >    cidr_bitlen_ipv4,
150 >    cidr_bitlen_ipv6,
151 >    number_per_cidr;
152 > } block_state;
153  
154   static void
155 < free_collect_item(struct CollectItem *item)
155 > reset_block_state(void)
156   {
157 <  MyFree(item->name);
158 <  MyFree(item->user);
159 <  MyFree(item->host);
160 <  MyFree(item->passwd);
161 < #ifdef HAVE_LIBCRYPTO
162 <  MyFree(item->rsa_public_key_file);
163 < #endif
164 <  MyFree(item);
157 >  dlink_node *ptr = NULL, *ptr_next = NULL;
158 >
159 >  DLINK_FOREACH_SAFE(ptr, ptr_next, block_state.mask.list.head)
160 >  {
161 >    MyFree(ptr->data);
162 >    dlinkDelete(ptr, &block_state.mask.list);
163 >    free_dlink_node(ptr);
164 >  }
165 >
166 >  DLINK_FOREACH_SAFE(ptr, ptr_next, block_state.leaf.list.head)
167 >  {
168 >    MyFree(ptr->data);
169 >    dlinkDelete(ptr, &block_state.leaf.list);
170 >    free_dlink_node(ptr);
171 >  }
172 >
173 >  DLINK_FOREACH_SAFE(ptr, ptr_next, block_state.hub.list.head)
174 >  {
175 >    MyFree(ptr->data);
176 >    dlinkDelete(ptr, &block_state.hub.list);
177 >    free_dlink_node(ptr);
178 >  }
179 >
180 >  memset(&block_state, 0, sizeof(block_state));
181   }
182  
183  
184 < /* Line 358 of yacc.c  */
152 < #line 153 "conf_parser.c"
184 > #line 185 "conf_parser.c" /* yacc.c:339  */
185  
186 < # ifndef YY_NULL
186 > # ifndef YY_NULLPTR
187   #  if defined __cplusplus && 201103L <= __cplusplus
188 < #   define YY_NULL nullptr
188 > #   define YY_NULLPTR nullptr
189   #  else
190 < #   define YY_NULL 0
190 > #   define YY_NULLPTR 0
191   #  endif
192   # endif
193  
# Line 169 | Line 201 | free_collect_item(struct CollectItem *it
201  
202   /* In a future release of Bison, this section will be replaced
203     by #include "y.tab.h".  */
204 < #ifndef YY_YY_Y_TAB_H_INCLUDED
205 < # define YY_YY_Y_TAB_H_INCLUDED
206 < /* Enabling traces.  */
204 > #ifndef YY_YY_CONF_PARSER_H_INCLUDED
205 > # define YY_YY_CONF_PARSER_H_INCLUDED
206 > /* Debug traces.  */
207   #ifndef YYDEBUG
208   # define YYDEBUG 0
209   #endif
# Line 179 | Line 211 | free_collect_item(struct CollectItem *it
211   extern int yydebug;
212   #endif
213  
214 < /* Tokens.  */
214 > /* Token type.  */
215   #ifndef YYTOKENTYPE
216   # define YYTOKENTYPE
217 <   /* Put the tokens into the symbol table, so that GDB and other debuggers
218 <      know about them.  */
219 <   enum yytokentype {
220 <     ACCEPT_PASSWORD = 258,
221 <     ADMIN = 259,
222 <     AFTYPE = 260,
223 <     ANTI_NICK_FLOOD = 261,
224 <     ANTI_SPAM_EXIT_MESSAGE_TIME = 262,
225 <     AUTOCONN = 263,
226 <     BYTES = 264,
227 <     KBYTES = 265,
228 <     MBYTES = 266,
229 <     CALLER_ID_WAIT = 267,
230 <     CAN_FLOOD = 268,
231 <     CHANNEL = 269,
232 <     CIDR_BITLEN_IPV4 = 270,
233 <     CIDR_BITLEN_IPV6 = 271,
234 <     CLASS = 272,
235 <     CONNECT = 273,
236 <     CONNECTFREQ = 274,
237 <     DEFAULT_FLOODCOUNT = 275,
238 <     DEFAULT_SPLIT_SERVER_COUNT = 276,
239 <     DEFAULT_SPLIT_USER_COUNT = 277,
240 <     DENY = 278,
241 <     DESCRIPTION = 279,
242 <     DIE = 280,
243 <     DISABLE_AUTH = 281,
244 <     DISABLE_FAKE_CHANNELS = 282,
245 <     DISABLE_REMOTE_COMMANDS = 283,
246 <     DOTS_IN_IDENT = 284,
247 <     EGDPOOL_PATH = 285,
248 <     EMAIL = 286,
249 <     ENCRYPTED = 287,
250 <     EXCEED_LIMIT = 288,
251 <     EXEMPT = 289,
252 <     FAILED_OPER_NOTICE = 290,
253 <     IRCD_FLAGS = 291,
254 <     FLATTEN_LINKS = 292,
255 <     GECOS = 293,
256 <     GENERAL = 294,
257 <     GLINE = 295,
258 <     GLINE_DURATION = 296,
259 <     GLINE_ENABLE = 297,
260 <     GLINE_EXEMPT = 298,
261 <     GLINE_REQUEST_DURATION = 299,
262 <     GLINE_MIN_CIDR = 300,
263 <     GLINE_MIN_CIDR6 = 301,
264 <     GLOBAL_KILL = 302,
265 <     IRCD_AUTH = 303,
266 <     NEED_IDENT = 304,
267 <     HAVENT_READ_CONF = 305,
268 <     HIDDEN = 306,
269 <     HIDDEN_NAME = 307,
270 <     HIDE_SERVER_IPS = 308,
271 <     HIDE_SERVERS = 309,
272 <     HIDE_SPOOF_IPS = 310,
273 <     HOST = 311,
274 <     HUB = 312,
275 <     HUB_MASK = 313,
276 <     IGNORE_BOGUS_TS = 314,
277 <     INVISIBLE_ON_CONNECT = 315,
278 <     IP = 316,
279 <     KILL = 317,
280 <     KILL_CHASE_TIME_LIMIT = 318,
281 <     KLINE = 319,
282 <     KLINE_EXEMPT = 320,
283 <     KNOCK_DELAY = 321,
284 <     KNOCK_DELAY_CHANNEL = 322,
285 <     LEAF_MASK = 323,
286 <     LINKS_DELAY = 324,
287 <     LISTEN = 325,
288 <     T_LOG = 326,
289 <     MAX_ACCEPT = 327,
290 <     MAX_BANS = 328,
291 <     MAX_CHANS_PER_OPER = 329,
292 <     MAX_CHANS_PER_USER = 330,
293 <     MAX_GLOBAL = 331,
294 <     MAX_IDENT = 332,
295 <     MAX_LOCAL = 333,
296 <     MAX_NICK_CHANGES = 334,
297 <     MAX_NICK_TIME = 335,
298 <     MAX_NUMBER = 336,
299 <     MAX_TARGETS = 337,
300 <     MAX_WATCH = 338,
301 <     MESSAGE_LOCALE = 339,
302 <     MIN_NONWILDCARD = 340,
303 <     MIN_NONWILDCARD_SIMPLE = 341,
304 <     MODULE = 342,
305 <     MODULES = 343,
306 <     NAME = 344,
307 <     NEED_PASSWORD = 345,
308 <     NETWORK_DESC = 346,
309 <     NETWORK_NAME = 347,
310 <     NICK = 348,
311 <     NICK_CHANGES = 349,
312 <     NO_CREATE_ON_SPLIT = 350,
313 <     NO_JOIN_ON_SPLIT = 351,
314 <     NO_OPER_FLOOD = 352,
315 <     NO_TILDE = 353,
316 <     NUMBER = 354,
317 <     NUMBER_PER_CIDR = 355,
318 <     NUMBER_PER_IP = 356,
319 <     OPERATOR = 357,
320 <     OPERS_BYPASS_CALLERID = 358,
321 <     OPER_ONLY_UMODES = 359,
322 <     OPER_PASS_RESV = 360,
323 <     OPER_SPY_T = 361,
324 <     OPER_UMODES = 362,
325 <     JOIN_FLOOD_COUNT = 363,
326 <     JOIN_FLOOD_TIME = 364,
327 <     PACE_WAIT = 365,
328 <     PACE_WAIT_SIMPLE = 366,
329 <     PASSWORD = 367,
330 <     PATH = 368,
331 <     PING_COOKIE = 369,
332 <     PING_TIME = 370,
333 <     PING_WARNING = 371,
334 <     PORT = 372,
335 <     QSTRING = 373,
336 <     QUIET_ON_BAN = 374,
337 <     REASON = 375,
338 <     REDIRPORT = 376,
339 <     REDIRSERV = 377,
340 <     REGEX_T = 378,
341 <     REHASH = 379,
342 <     REMOTE = 380,
343 <     REMOTEBAN = 381,
344 <     RESTRICT_CHANNELS = 382,
345 <     RSA_PRIVATE_KEY_FILE = 383,
346 <     RSA_PUBLIC_KEY_FILE = 384,
347 <     SSL_CERTIFICATE_FILE = 385,
348 <     SSL_DH_PARAM_FILE = 386,
349 <     T_SSL_CLIENT_METHOD = 387,
350 <     T_SSL_SERVER_METHOD = 388,
351 <     T_SSLV3 = 389,
352 <     T_TLSV1 = 390,
353 <     RESV = 391,
354 <     RESV_EXEMPT = 392,
355 <     SECONDS = 393,
356 <     MINUTES = 394,
357 <     HOURS = 395,
358 <     DAYS = 396,
359 <     WEEKS = 397,
360 <     SENDQ = 398,
361 <     SEND_PASSWORD = 399,
362 <     SERVERHIDE = 400,
363 <     SERVERINFO = 401,
364 <     IRCD_SID = 402,
365 <     TKLINE_EXPIRE_NOTICES = 403,
366 <     T_SHARED = 404,
367 <     T_CLUSTER = 405,
368 <     TYPE = 406,
369 <     SHORT_MOTD = 407,
370 <     SPOOF = 408,
371 <     SPOOF_NOTICE = 409,
372 <     STATS_E_DISABLED = 410,
373 <     STATS_I_OPER_ONLY = 411,
374 <     STATS_K_OPER_ONLY = 412,
375 <     STATS_O_OPER_ONLY = 413,
376 <     STATS_P_OPER_ONLY = 414,
377 <     TBOOL = 415,
378 <     TMASKED = 416,
379 <     TS_MAX_DELTA = 417,
380 <     TS_WARN_DELTA = 418,
381 <     TWODOTS = 419,
382 <     T_ALL = 420,
383 <     T_BOTS = 421,
384 <     T_SOFTCALLERID = 422,
385 <     T_CALLERID = 423,
386 <     T_CCONN = 424,
387 <     T_CCONN_FULL = 425,
388 <     T_SSL_CIPHER_LIST = 426,
389 <     T_DEAF = 427,
390 <     T_DEBUG = 428,
391 <     T_DLINE = 429,
392 <     T_EXTERNAL = 430,
393 <     T_FULL = 431,
394 <     T_INVISIBLE = 432,
395 <     T_IPV4 = 433,
396 <     T_IPV6 = 434,
397 <     T_LOCOPS = 435,
398 <     T_MAX_CLIENTS = 436,
399 <     T_NCHANGE = 437,
400 <     T_OPERWALL = 438,
401 <     T_RECVQ = 439,
402 <     T_REJ = 440,
403 <     T_SERVER = 441,
404 <     T_SERVNOTICE = 442,
405 <     T_SET = 443,
406 <     T_SKILL = 444,
407 <     T_SPY = 445,
408 <     T_SSL = 446,
409 <     T_UMODES = 447,
410 <     T_UNAUTH = 448,
411 <     T_UNDLINE = 449,
412 <     T_UNLIMITED = 450,
413 <     T_UNRESV = 451,
414 <     T_UNXLINE = 452,
415 <     T_GLOBOPS = 453,
416 <     T_WALLOP = 454,
417 <     T_RESTART = 455,
418 <     T_SERVICE = 456,
419 <     T_SERVICES_NAME = 457,
420 <     THROTTLE_TIME = 458,
421 <     TRUE_NO_OPER_FLOOD = 459,
422 <     UNKLINE = 460,
423 <     USER = 461,
424 <     USE_EGD = 462,
425 <     USE_LOGGING = 463,
426 <     VHOST = 464,
427 <     VHOST6 = 465,
428 <     XLINE = 466,
429 <     WARN_NO_NLINE = 467,
430 <     T_SIZE = 468,
431 <     T_FILE = 469
432 <   };
217 >  enum yytokentype
218 >  {
219 >    ACCEPT_PASSWORD = 258,
220 >    ADMIN = 259,
221 >    AFTYPE = 260,
222 >    ANTI_NICK_FLOOD = 261,
223 >    ANTI_SPAM_EXIT_MESSAGE_TIME = 262,
224 >    AUTOCONN = 263,
225 >    BYTES = 264,
226 >    KBYTES = 265,
227 >    MBYTES = 266,
228 >    CALLER_ID_WAIT = 267,
229 >    CAN_FLOOD = 268,
230 >    CHANNEL = 269,
231 >    CIDR_BITLEN_IPV4 = 270,
232 >    CIDR_BITLEN_IPV6 = 271,
233 >    CLASS = 272,
234 >    CONNECT = 273,
235 >    CONNECTFREQ = 274,
236 >    CYCLE_ON_HOST_CHANGE = 275,
237 >    DEFAULT_FLOODCOUNT = 276,
238 >    DEFAULT_SPLIT_SERVER_COUNT = 277,
239 >    DEFAULT_SPLIT_USER_COUNT = 278,
240 >    DENY = 279,
241 >    DESCRIPTION = 280,
242 >    DIE = 281,
243 >    DISABLE_AUTH = 282,
244 >    DISABLE_FAKE_CHANNELS = 283,
245 >    DISABLE_REMOTE_COMMANDS = 284,
246 >    DOTS_IN_IDENT = 285,
247 >    EGDPOOL_PATH = 286,
248 >    EMAIL = 287,
249 >    ENCRYPTED = 288,
250 >    EXCEED_LIMIT = 289,
251 >    EXEMPT = 290,
252 >    FAILED_OPER_NOTICE = 291,
253 >    FLATTEN_LINKS = 292,
254 >    GECOS = 293,
255 >    GENERAL = 294,
256 >    GLINE = 295,
257 >    GLINE_DURATION = 296,
258 >    GLINE_ENABLE = 297,
259 >    GLINE_EXEMPT = 298,
260 >    GLINE_MIN_CIDR = 299,
261 >    GLINE_MIN_CIDR6 = 300,
262 >    GLINE_REQUEST_DURATION = 301,
263 >    GLOBAL_KILL = 302,
264 >    HAVENT_READ_CONF = 303,
265 >    HIDDEN = 304,
266 >    HIDDEN_NAME = 305,
267 >    HIDE_CHANS = 306,
268 >    HIDE_IDLE = 307,
269 >    HIDE_IDLE_FROM_OPERS = 308,
270 >    HIDE_SERVER_IPS = 309,
271 >    HIDE_SERVERS = 310,
272 >    HIDE_SERVICES = 311,
273 >    HIDE_SPOOF_IPS = 312,
274 >    HOST = 313,
275 >    HUB = 314,
276 >    HUB_MASK = 315,
277 >    IGNORE_BOGUS_TS = 316,
278 >    INVISIBLE_ON_CONNECT = 317,
279 >    INVITE_CLIENT_COUNT = 318,
280 >    INVITE_CLIENT_TIME = 319,
281 >    IP = 320,
282 >    IRCD_AUTH = 321,
283 >    IRCD_FLAGS = 322,
284 >    IRCD_SID = 323,
285 >    JOIN_FLOOD_COUNT = 324,
286 >    JOIN_FLOOD_TIME = 325,
287 >    KILL = 326,
288 >    KILL_CHASE_TIME_LIMIT = 327,
289 >    KLINE = 328,
290 >    KLINE_EXEMPT = 329,
291 >    KNOCK_CLIENT_COUNT = 330,
292 >    KNOCK_CLIENT_TIME = 331,
293 >    KNOCK_DELAY_CHANNEL = 332,
294 >    LEAF_MASK = 333,
295 >    LINKS_DELAY = 334,
296 >    LISTEN = 335,
297 >    MASK = 336,
298 >    MAX_ACCEPT = 337,
299 >    MAX_BANS = 338,
300 >    MAX_CHANNELS = 339,
301 >    MAX_GLOBAL = 340,
302 >    MAX_IDENT = 341,
303 >    MAX_IDLE = 342,
304 >    MAX_LOCAL = 343,
305 >    MAX_NICK_CHANGES = 344,
306 >    MAX_NICK_LENGTH = 345,
307 >    MAX_NICK_TIME = 346,
308 >    MAX_NUMBER = 347,
309 >    MAX_TARGETS = 348,
310 >    MAX_TOPIC_LENGTH = 349,
311 >    MAX_WATCH = 350,
312 >    MIN_IDLE = 351,
313 >    MIN_NONWILDCARD = 352,
314 >    MIN_NONWILDCARD_SIMPLE = 353,
315 >    MODULE = 354,
316 >    MODULES = 355,
317 >    MOTD = 356,
318 >    NAME = 357,
319 >    NEED_IDENT = 358,
320 >    NEED_PASSWORD = 359,
321 >    NETWORK_DESC = 360,
322 >    NETWORK_NAME = 361,
323 >    NICK = 362,
324 >    NO_CREATE_ON_SPLIT = 363,
325 >    NO_JOIN_ON_SPLIT = 364,
326 >    NO_OPER_FLOOD = 365,
327 >    NO_TILDE = 366,
328 >    NUMBER = 367,
329 >    NUMBER_PER_CIDR = 368,
330 >    NUMBER_PER_IP = 369,
331 >    OPER_ONLY_UMODES = 370,
332 >    OPER_PASS_RESV = 371,
333 >    OPER_UMODES = 372,
334 >    OPERATOR = 373,
335 >    OPERS_BYPASS_CALLERID = 374,
336 >    PACE_WAIT = 375,
337 >    PACE_WAIT_SIMPLE = 376,
338 >    PASSWORD = 377,
339 >    PATH = 378,
340 >    PING_COOKIE = 379,
341 >    PING_TIME = 380,
342 >    PORT = 381,
343 >    QSTRING = 382,
344 >    RANDOM_IDLE = 383,
345 >    REASON = 384,
346 >    REDIRPORT = 385,
347 >    REDIRSERV = 386,
348 >    REHASH = 387,
349 >    REMOTE = 388,
350 >    REMOTEBAN = 389,
351 >    RESV = 390,
352 >    RESV_EXEMPT = 391,
353 >    RSA_PRIVATE_KEY_FILE = 392,
354 >    RSA_PUBLIC_KEY_FILE = 393,
355 >    SECONDS = 394,
356 >    MINUTES = 395,
357 >    HOURS = 396,
358 >    DAYS = 397,
359 >    WEEKS = 398,
360 >    MONTHS = 399,
361 >    YEARS = 400,
362 >    SEND_PASSWORD = 401,
363 >    SENDQ = 402,
364 >    SERVERHIDE = 403,
365 >    SERVERINFO = 404,
366 >    SHORT_MOTD = 405,
367 >    SPOOF = 406,
368 >    SPOOF_NOTICE = 407,
369 >    SQUIT = 408,
370 >    SSL_CERTIFICATE_FILE = 409,
371 >    SSL_CERTIFICATE_FINGERPRINT = 410,
372 >    SSL_CONNECTION_REQUIRED = 411,
373 >    SSL_DH_ELLIPTIC_CURVE = 412,
374 >    SSL_DH_PARAM_FILE = 413,
375 >    STATS_E_DISABLED = 414,
376 >    STATS_I_OPER_ONLY = 415,
377 >    STATS_K_OPER_ONLY = 416,
378 >    STATS_O_OPER_ONLY = 417,
379 >    STATS_P_OPER_ONLY = 418,
380 >    STATS_U_OPER_ONLY = 419,
381 >    T_ALL = 420,
382 >    T_BOTS = 421,
383 >    T_CALLERID = 422,
384 >    T_CCONN = 423,
385 >    T_CLUSTER = 424,
386 >    T_DEAF = 425,
387 >    T_DEBUG = 426,
388 >    T_DLINE = 427,
389 >    T_EXTERNAL = 428,
390 >    T_FARCONNECT = 429,
391 >    T_FILE = 430,
392 >    T_FULL = 431,
393 >    T_GLOBOPS = 432,
394 >    T_INVISIBLE = 433,
395 >    T_IPV4 = 434,
396 >    T_IPV6 = 435,
397 >    T_LOCOPS = 436,
398 >    T_LOG = 437,
399 >    T_MAX_CLIENTS = 438,
400 >    T_NCHANGE = 439,
401 >    T_NONONREG = 440,
402 >    T_RECVQ = 441,
403 >    T_REJ = 442,
404 >    T_RESTART = 443,
405 >    T_SERVER = 444,
406 >    T_SERVICE = 445,
407 >    T_SERVICES_NAME = 446,
408 >    T_SERVNOTICE = 447,
409 >    T_SET = 448,
410 >    T_SHARED = 449,
411 >    T_SIZE = 450,
412 >    T_SKILL = 451,
413 >    T_SOFTCALLERID = 452,
414 >    T_SPY = 453,
415 >    T_SSL = 454,
416 >    T_SSL_CIPHER_LIST = 455,
417 >    T_SSL_CLIENT_METHOD = 456,
418 >    T_SSL_SERVER_METHOD = 457,
419 >    T_SSLV3 = 458,
420 >    T_TLSV1 = 459,
421 >    T_UMODES = 460,
422 >    T_UNAUTH = 461,
423 >    T_UNDLINE = 462,
424 >    T_UNLIMITED = 463,
425 >    T_UNRESV = 464,
426 >    T_UNXLINE = 465,
427 >    T_WALLOP = 466,
428 >    T_WALLOPS = 467,
429 >    T_WEBIRC = 468,
430 >    TBOOL = 469,
431 >    THROTTLE_COUNT = 470,
432 >    THROTTLE_TIME = 471,
433 >    TKLINE_EXPIRE_NOTICES = 472,
434 >    TMASKED = 473,
435 >    TRUE_NO_OPER_FLOOD = 474,
436 >    TS_MAX_DELTA = 475,
437 >    TS_WARN_DELTA = 476,
438 >    TWODOTS = 477,
439 >    TYPE = 478,
440 >    UNKLINE = 479,
441 >    USE_EGD = 480,
442 >    USE_LOGGING = 481,
443 >    USER = 482,
444 >    VHOST = 483,
445 >    VHOST6 = 484,
446 >    WARN_NO_CONNECT_BLOCK = 485,
447 >    XLINE = 486
448 >  };
449   #endif
450   /* Tokens.  */
451   #define ACCEPT_PASSWORD 258
# Line 417 | Line 465 | extern int yydebug;
465   #define CLASS 272
466   #define CONNECT 273
467   #define CONNECTFREQ 274
468 < #define DEFAULT_FLOODCOUNT 275
469 < #define DEFAULT_SPLIT_SERVER_COUNT 276
470 < #define DEFAULT_SPLIT_USER_COUNT 277
471 < #define DENY 278
472 < #define DESCRIPTION 279
473 < #define DIE 280
474 < #define DISABLE_AUTH 281
475 < #define DISABLE_FAKE_CHANNELS 282
476 < #define DISABLE_REMOTE_COMMANDS 283
477 < #define DOTS_IN_IDENT 284
478 < #define EGDPOOL_PATH 285
479 < #define EMAIL 286
480 < #define ENCRYPTED 287
481 < #define EXCEED_LIMIT 288
482 < #define EXEMPT 289
483 < #define FAILED_OPER_NOTICE 290
484 < #define IRCD_FLAGS 291
468 > #define CYCLE_ON_HOST_CHANGE 275
469 > #define DEFAULT_FLOODCOUNT 276
470 > #define DEFAULT_SPLIT_SERVER_COUNT 277
471 > #define DEFAULT_SPLIT_USER_COUNT 278
472 > #define DENY 279
473 > #define DESCRIPTION 280
474 > #define DIE 281
475 > #define DISABLE_AUTH 282
476 > #define DISABLE_FAKE_CHANNELS 283
477 > #define DISABLE_REMOTE_COMMANDS 284
478 > #define DOTS_IN_IDENT 285
479 > #define EGDPOOL_PATH 286
480 > #define EMAIL 287
481 > #define ENCRYPTED 288
482 > #define EXCEED_LIMIT 289
483 > #define EXEMPT 290
484 > #define FAILED_OPER_NOTICE 291
485   #define FLATTEN_LINKS 292
486   #define GECOS 293
487   #define GENERAL 294
# Line 441 | Line 489 | extern int yydebug;
489   #define GLINE_DURATION 296
490   #define GLINE_ENABLE 297
491   #define GLINE_EXEMPT 298
492 < #define GLINE_REQUEST_DURATION 299
493 < #define GLINE_MIN_CIDR 300
494 < #define GLINE_MIN_CIDR6 301
492 > #define GLINE_MIN_CIDR 299
493 > #define GLINE_MIN_CIDR6 300
494 > #define GLINE_REQUEST_DURATION 301
495   #define GLOBAL_KILL 302
496 < #define IRCD_AUTH 303
497 < #define NEED_IDENT 304
498 < #define HAVENT_READ_CONF 305
499 < #define HIDDEN 306
500 < #define HIDDEN_NAME 307
501 < #define HIDE_SERVER_IPS 308
502 < #define HIDE_SERVERS 309
503 < #define HIDE_SPOOF_IPS 310
504 < #define HOST 311
505 < #define HUB 312
506 < #define HUB_MASK 313
507 < #define IGNORE_BOGUS_TS 314
508 < #define INVISIBLE_ON_CONNECT 315
509 < #define IP 316
510 < #define KILL 317
511 < #define KILL_CHASE_TIME_LIMIT 318
512 < #define KLINE 319
513 < #define KLINE_EXEMPT 320
514 < #define KNOCK_DELAY 321
515 < #define KNOCK_DELAY_CHANNEL 322
516 < #define LEAF_MASK 323
517 < #define LINKS_DELAY 324
518 < #define LISTEN 325
519 < #define T_LOG 326
520 < #define MAX_ACCEPT 327
521 < #define MAX_BANS 328
522 < #define MAX_CHANS_PER_OPER 329
523 < #define MAX_CHANS_PER_USER 330
524 < #define MAX_GLOBAL 331
525 < #define MAX_IDENT 332
526 < #define MAX_LOCAL 333
527 < #define MAX_NICK_CHANGES 334
528 < #define MAX_NICK_TIME 335
529 < #define MAX_NUMBER 336
530 < #define MAX_TARGETS 337
531 < #define MAX_WATCH 338
532 < #define MESSAGE_LOCALE 339
533 < #define MIN_NONWILDCARD 340
534 < #define MIN_NONWILDCARD_SIMPLE 341
535 < #define MODULE 342
536 < #define MODULES 343
537 < #define NAME 344
538 < #define NEED_PASSWORD 345
539 < #define NETWORK_DESC 346
540 < #define NETWORK_NAME 347
541 < #define NICK 348
542 < #define NICK_CHANGES 349
543 < #define NO_CREATE_ON_SPLIT 350
544 < #define NO_JOIN_ON_SPLIT 351
545 < #define NO_OPER_FLOOD 352
546 < #define NO_TILDE 353
547 < #define NUMBER 354
548 < #define NUMBER_PER_CIDR 355
549 < #define NUMBER_PER_IP 356
550 < #define OPERATOR 357
551 < #define OPERS_BYPASS_CALLERID 358
552 < #define OPER_ONLY_UMODES 359
553 < #define OPER_PASS_RESV 360
554 < #define OPER_SPY_T 361
555 < #define OPER_UMODES 362
556 < #define JOIN_FLOOD_COUNT 363
557 < #define JOIN_FLOOD_TIME 364
558 < #define PACE_WAIT 365
559 < #define PACE_WAIT_SIMPLE 366
560 < #define PASSWORD 367
561 < #define PATH 368
562 < #define PING_COOKIE 369
563 < #define PING_TIME 370
564 < #define PING_WARNING 371
565 < #define PORT 372
566 < #define QSTRING 373
567 < #define QUIET_ON_BAN 374
568 < #define REASON 375
569 < #define REDIRPORT 376
570 < #define REDIRSERV 377
571 < #define REGEX_T 378
572 < #define REHASH 379
573 < #define REMOTE 380
574 < #define REMOTEBAN 381
575 < #define RESTRICT_CHANNELS 382
576 < #define RSA_PRIVATE_KEY_FILE 383
577 < #define RSA_PUBLIC_KEY_FILE 384
578 < #define SSL_CERTIFICATE_FILE 385
579 < #define SSL_DH_PARAM_FILE 386
580 < #define T_SSL_CLIENT_METHOD 387
581 < #define T_SSL_SERVER_METHOD 388
582 < #define T_SSLV3 389
583 < #define T_TLSV1 390
584 < #define RESV 391
585 < #define RESV_EXEMPT 392
586 < #define SECONDS 393
587 < #define MINUTES 394
588 < #define HOURS 395
589 < #define DAYS 396
590 < #define WEEKS 397
591 < #define SENDQ 398
592 < #define SEND_PASSWORD 399
593 < #define SERVERHIDE 400
594 < #define SERVERINFO 401
595 < #define IRCD_SID 402
596 < #define TKLINE_EXPIRE_NOTICES 403
597 < #define T_SHARED 404
598 < #define T_CLUSTER 405
599 < #define TYPE 406
600 < #define SHORT_MOTD 407
601 < #define SPOOF 408
602 < #define SPOOF_NOTICE 409
603 < #define STATS_E_DISABLED 410
604 < #define STATS_I_OPER_ONLY 411
605 < #define STATS_K_OPER_ONLY 412
606 < #define STATS_O_OPER_ONLY 413
607 < #define STATS_P_OPER_ONLY 414
608 < #define TBOOL 415
609 < #define TMASKED 416
610 < #define TS_MAX_DELTA 417
611 < #define TS_WARN_DELTA 418
612 < #define TWODOTS 419
496 > #define HAVENT_READ_CONF 303
497 > #define HIDDEN 304
498 > #define HIDDEN_NAME 305
499 > #define HIDE_CHANS 306
500 > #define HIDE_IDLE 307
501 > #define HIDE_IDLE_FROM_OPERS 308
502 > #define HIDE_SERVER_IPS 309
503 > #define HIDE_SERVERS 310
504 > #define HIDE_SERVICES 311
505 > #define HIDE_SPOOF_IPS 312
506 > #define HOST 313
507 > #define HUB 314
508 > #define HUB_MASK 315
509 > #define IGNORE_BOGUS_TS 316
510 > #define INVISIBLE_ON_CONNECT 317
511 > #define INVITE_CLIENT_COUNT 318
512 > #define INVITE_CLIENT_TIME 319
513 > #define IP 320
514 > #define IRCD_AUTH 321
515 > #define IRCD_FLAGS 322
516 > #define IRCD_SID 323
517 > #define JOIN_FLOOD_COUNT 324
518 > #define JOIN_FLOOD_TIME 325
519 > #define KILL 326
520 > #define KILL_CHASE_TIME_LIMIT 327
521 > #define KLINE 328
522 > #define KLINE_EXEMPT 329
523 > #define KNOCK_CLIENT_COUNT 330
524 > #define KNOCK_CLIENT_TIME 331
525 > #define KNOCK_DELAY_CHANNEL 332
526 > #define LEAF_MASK 333
527 > #define LINKS_DELAY 334
528 > #define LISTEN 335
529 > #define MASK 336
530 > #define MAX_ACCEPT 337
531 > #define MAX_BANS 338
532 > #define MAX_CHANNELS 339
533 > #define MAX_GLOBAL 340
534 > #define MAX_IDENT 341
535 > #define MAX_IDLE 342
536 > #define MAX_LOCAL 343
537 > #define MAX_NICK_CHANGES 344
538 > #define MAX_NICK_LENGTH 345
539 > #define MAX_NICK_TIME 346
540 > #define MAX_NUMBER 347
541 > #define MAX_TARGETS 348
542 > #define MAX_TOPIC_LENGTH 349
543 > #define MAX_WATCH 350
544 > #define MIN_IDLE 351
545 > #define MIN_NONWILDCARD 352
546 > #define MIN_NONWILDCARD_SIMPLE 353
547 > #define MODULE 354
548 > #define MODULES 355
549 > #define MOTD 356
550 > #define NAME 357
551 > #define NEED_IDENT 358
552 > #define NEED_PASSWORD 359
553 > #define NETWORK_DESC 360
554 > #define NETWORK_NAME 361
555 > #define NICK 362
556 > #define NO_CREATE_ON_SPLIT 363
557 > #define NO_JOIN_ON_SPLIT 364
558 > #define NO_OPER_FLOOD 365
559 > #define NO_TILDE 366
560 > #define NUMBER 367
561 > #define NUMBER_PER_CIDR 368
562 > #define NUMBER_PER_IP 369
563 > #define OPER_ONLY_UMODES 370
564 > #define OPER_PASS_RESV 371
565 > #define OPER_UMODES 372
566 > #define OPERATOR 373
567 > #define OPERS_BYPASS_CALLERID 374
568 > #define PACE_WAIT 375
569 > #define PACE_WAIT_SIMPLE 376
570 > #define PASSWORD 377
571 > #define PATH 378
572 > #define PING_COOKIE 379
573 > #define PING_TIME 380
574 > #define PORT 381
575 > #define QSTRING 382
576 > #define RANDOM_IDLE 383
577 > #define REASON 384
578 > #define REDIRPORT 385
579 > #define REDIRSERV 386
580 > #define REHASH 387
581 > #define REMOTE 388
582 > #define REMOTEBAN 389
583 > #define RESV 390
584 > #define RESV_EXEMPT 391
585 > #define RSA_PRIVATE_KEY_FILE 392
586 > #define RSA_PUBLIC_KEY_FILE 393
587 > #define SECONDS 394
588 > #define MINUTES 395
589 > #define HOURS 396
590 > #define DAYS 397
591 > #define WEEKS 398
592 > #define MONTHS 399
593 > #define YEARS 400
594 > #define SEND_PASSWORD 401
595 > #define SENDQ 402
596 > #define SERVERHIDE 403
597 > #define SERVERINFO 404
598 > #define SHORT_MOTD 405
599 > #define SPOOF 406
600 > #define SPOOF_NOTICE 407
601 > #define SQUIT 408
602 > #define SSL_CERTIFICATE_FILE 409
603 > #define SSL_CERTIFICATE_FINGERPRINT 410
604 > #define SSL_CONNECTION_REQUIRED 411
605 > #define SSL_DH_ELLIPTIC_CURVE 412
606 > #define SSL_DH_PARAM_FILE 413
607 > #define STATS_E_DISABLED 414
608 > #define STATS_I_OPER_ONLY 415
609 > #define STATS_K_OPER_ONLY 416
610 > #define STATS_O_OPER_ONLY 417
611 > #define STATS_P_OPER_ONLY 418
612 > #define STATS_U_OPER_ONLY 419
613   #define T_ALL 420
614   #define T_BOTS 421
615 < #define T_SOFTCALLERID 422
616 < #define T_CALLERID 423
617 < #define T_CCONN 424
618 < #define T_CCONN_FULL 425
619 < #define T_SSL_CIPHER_LIST 426
620 < #define T_DEAF 427
621 < #define T_DEBUG 428
622 < #define T_DLINE 429
623 < #define T_EXTERNAL 430
615 > #define T_CALLERID 422
616 > #define T_CCONN 423
617 > #define T_CLUSTER 424
618 > #define T_DEAF 425
619 > #define T_DEBUG 426
620 > #define T_DLINE 427
621 > #define T_EXTERNAL 428
622 > #define T_FARCONNECT 429
623 > #define T_FILE 430
624   #define T_FULL 431
625 < #define T_INVISIBLE 432
626 < #define T_IPV4 433
627 < #define T_IPV6 434
628 < #define T_LOCOPS 435
629 < #define T_MAX_CLIENTS 436
630 < #define T_NCHANGE 437
631 < #define T_OPERWALL 438
632 < #define T_RECVQ 439
633 < #define T_REJ 440
634 < #define T_SERVER 441
635 < #define T_SERVNOTICE 442
636 < #define T_SET 443
637 < #define T_SKILL 444
638 < #define T_SPY 445
639 < #define T_SSL 446
640 < #define T_UMODES 447
641 < #define T_UNAUTH 448
642 < #define T_UNDLINE 449
643 < #define T_UNLIMITED 450
644 < #define T_UNRESV 451
645 < #define T_UNXLINE 452
646 < #define T_GLOBOPS 453
647 < #define T_WALLOP 454
648 < #define T_RESTART 455
649 < #define T_SERVICE 456
650 < #define T_SERVICES_NAME 457
651 < #define THROTTLE_TIME 458
652 < #define TRUE_NO_OPER_FLOOD 459
653 < #define UNKLINE 460
654 < #define USER 461
655 < #define USE_EGD 462
656 < #define USE_LOGGING 463
657 < #define VHOST 464
658 < #define VHOST6 465
659 < #define XLINE 466
660 < #define WARN_NO_NLINE 467
661 < #define T_SIZE 468
662 < #define T_FILE 469
663 <
664 <
625 > #define T_GLOBOPS 432
626 > #define T_INVISIBLE 433
627 > #define T_IPV4 434
628 > #define T_IPV6 435
629 > #define T_LOCOPS 436
630 > #define T_LOG 437
631 > #define T_MAX_CLIENTS 438
632 > #define T_NCHANGE 439
633 > #define T_NONONREG 440
634 > #define T_RECVQ 441
635 > #define T_REJ 442
636 > #define T_RESTART 443
637 > #define T_SERVER 444
638 > #define T_SERVICE 445
639 > #define T_SERVICES_NAME 446
640 > #define T_SERVNOTICE 447
641 > #define T_SET 448
642 > #define T_SHARED 449
643 > #define T_SIZE 450
644 > #define T_SKILL 451
645 > #define T_SOFTCALLERID 452
646 > #define T_SPY 453
647 > #define T_SSL 454
648 > #define T_SSL_CIPHER_LIST 455
649 > #define T_SSL_CLIENT_METHOD 456
650 > #define T_SSL_SERVER_METHOD 457
651 > #define T_SSLV3 458
652 > #define T_TLSV1 459
653 > #define T_UMODES 460
654 > #define T_UNAUTH 461
655 > #define T_UNDLINE 462
656 > #define T_UNLIMITED 463
657 > #define T_UNRESV 464
658 > #define T_UNXLINE 465
659 > #define T_WALLOP 466
660 > #define T_WALLOPS 467
661 > #define T_WEBIRC 468
662 > #define TBOOL 469
663 > #define THROTTLE_COUNT 470
664 > #define THROTTLE_TIME 471
665 > #define TKLINE_EXPIRE_NOTICES 472
666 > #define TMASKED 473
667 > #define TRUE_NO_OPER_FLOOD 474
668 > #define TS_MAX_DELTA 475
669 > #define TS_WARN_DELTA 476
670 > #define TWODOTS 477
671 > #define TYPE 478
672 > #define UNKLINE 479
673 > #define USE_EGD 480
674 > #define USE_LOGGING 481
675 > #define USER 482
676 > #define VHOST 483
677 > #define VHOST6 484
678 > #define WARN_NO_CONNECT_BLOCK 485
679 > #define XLINE 486
680  
681 + /* Value type.  */
682   #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
683 < typedef union YYSTYPE
683 > typedef union YYSTYPE YYSTYPE;
684 > union YYSTYPE
685   {
686 < /* Line 374 of yacc.c  */
622 < #line 110 "conf_parser.y"
686 > #line 147 "conf_parser.y" /* yacc.c:355  */
687  
688    int number;
689    char *string;
690  
691 <
692 < /* Line 374 of yacc.c  */
629 < #line 630 "conf_parser.c"
630 < } YYSTYPE;
691 > #line 692 "conf_parser.c" /* yacc.c:355  */
692 > };
693   # define YYSTYPE_IS_TRIVIAL 1
632 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
694   # define YYSTYPE_IS_DECLARED 1
695   #endif
696  
697 +
698   extern YYSTYPE yylval;
699  
638 #ifdef YYPARSE_PARAM
639 #if defined __STDC__ || defined __cplusplus
640 int yyparse (void *YYPARSE_PARAM);
641 #else
642 int yyparse ();
643 #endif
644 #else /* ! YYPARSE_PARAM */
645 #if defined __STDC__ || defined __cplusplus
700   int yyparse (void);
647 #else
648 int yyparse ();
649 #endif
650 #endif /* ! YYPARSE_PARAM */
701  
702 < #endif /* !YY_YY_Y_TAB_H_INCLUDED  */
702 > #endif /* !YY_YY_CONF_PARSER_H_INCLUDED  */
703  
704   /* Copy the second part of user declarations.  */
705  
706 < /* Line 377 of yacc.c  */
657 < #line 658 "conf_parser.c"
706 > #line 707 "conf_parser.c" /* yacc.c:358  */
707  
708   #ifdef short
709   # undef short
# Line 668 | Line 717 | typedef unsigned char yytype_uint8;
717  
718   #ifdef YYTYPE_INT8
719   typedef YYTYPE_INT8 yytype_int8;
671 #elif (defined __STDC__ || defined __C99__FUNC__ \
672     || defined __cplusplus || defined _MSC_VER)
673 typedef signed char yytype_int8;
720   #else
721 < typedef short int yytype_int8;
721 > typedef signed char yytype_int8;
722   #endif
723  
724   #ifdef YYTYPE_UINT16
# Line 692 | Line 738 | typedef short int yytype_int16;
738   #  define YYSIZE_T __SIZE_TYPE__
739   # elif defined size_t
740   #  define YYSIZE_T size_t
741 < # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
696 <     || defined __cplusplus || defined _MSC_VER)
741 > # elif ! defined YYSIZE_T
742   #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
743   #  define YYSIZE_T size_t
744   # else
# Line 715 | Line 760 | typedef short int yytype_int16;
760   # endif
761   #endif
762  
763 + #ifndef YY_ATTRIBUTE
764 + # if (defined __GNUC__                                               \
765 +      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
766 +     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
767 + #  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
768 + # else
769 + #  define YY_ATTRIBUTE(Spec) /* empty */
770 + # endif
771 + #endif
772 +
773 + #ifndef YY_ATTRIBUTE_PURE
774 + # define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
775 + #endif
776 +
777 + #ifndef YY_ATTRIBUTE_UNUSED
778 + # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
779 + #endif
780 +
781 + #if !defined _Noreturn \
782 +     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
783 + # if defined _MSC_VER && 1200 <= _MSC_VER
784 + #  define _Noreturn __declspec (noreturn)
785 + # else
786 + #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
787 + # endif
788 + #endif
789 +
790   /* Suppress unused-variable warnings by "using" E.  */
791   #if ! defined lint || defined __GNUC__
792   # define YYUSE(E) ((void) (E))
# Line 722 | Line 794 | typedef short int yytype_int16;
794   # define YYUSE(E) /* empty */
795   #endif
796  
797 < /* Identity function, used to suppress warnings about constant conditions.  */
798 < #ifndef lint
799 < # define YYID(N) (N)
800 < #else
801 < #if (defined __STDC__ || defined __C99__FUNC__ \
802 <     || defined __cplusplus || defined _MSC_VER)
803 < static int
804 < YYID (int yyi)
797 > #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
798 > /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
799 > # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
800 >    _Pragma ("GCC diagnostic push") \
801 >    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
802 >    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
803 > # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
804 >    _Pragma ("GCC diagnostic pop")
805   #else
806 < static int
735 < YYID (yyi)
736 <    int yyi;
806 > # define YY_INITIAL_VALUE(Value) Value
807   #endif
808 < {
809 <  return yyi;
810 < }
808 > #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
809 > # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
810 > # define YY_IGNORE_MAYBE_UNINITIALIZED_END
811 > #endif
812 > #ifndef YY_INITIAL_VALUE
813 > # define YY_INITIAL_VALUE(Value) /* Nothing. */
814   #endif
815  
816 +
817   #if ! defined yyoverflow || YYERROR_VERBOSE
818  
819   /* The parser invokes alloca or malloc; define the necessary symbols.  */
# Line 757 | Line 831 | YYID (yyi)
831   #    define alloca _alloca
832   #   else
833   #    define YYSTACK_ALLOC alloca
834 < #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
761 <     || defined __cplusplus || defined _MSC_VER)
834 > #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
835   #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
836        /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
837   #     ifndef EXIT_SUCCESS
# Line 770 | Line 843 | YYID (yyi)
843   # endif
844  
845   # ifdef YYSTACK_ALLOC
846 <   /* Pacify GCC's `empty if-body' warning.  */
847 < #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
846 >   /* Pacify GCC's 'empty if-body' warning.  */
847 > #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
848   #  ifndef YYSTACK_ALLOC_MAXIMUM
849      /* The OS might guarantee only one guard page at the bottom of the stack,
850         and a page size can be as small as 4096 bytes.  So we cannot safely
# Line 787 | Line 860 | YYID (yyi)
860   #  endif
861   #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
862         && ! ((defined YYMALLOC || defined malloc) \
863 <             && (defined YYFREE || defined free)))
863 >             && (defined YYFREE || defined free)))
864   #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
865   #   ifndef EXIT_SUCCESS
866   #    define EXIT_SUCCESS 0
# Line 795 | Line 868 | YYID (yyi)
868   #  endif
869   #  ifndef YYMALLOC
870   #   define YYMALLOC malloc
871 < #   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
799 <     || defined __cplusplus || defined _MSC_VER)
871 > #   if ! defined malloc && ! defined EXIT_SUCCESS
872   void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
873   #   endif
874   #  endif
875   #  ifndef YYFREE
876   #   define YYFREE free
877 < #   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
806 <     || defined __cplusplus || defined _MSC_VER)
877 > #   if ! defined free && ! defined EXIT_SUCCESS
878   void free (void *); /* INFRINGES ON USER NAME SPACE */
879   #   endif
880   #  endif
# Line 813 | Line 884 | void free (void *); /* INFRINGES ON USER
884  
885   #if (! defined yyoverflow \
886       && (! defined __cplusplus \
887 <         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
887 >         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
888  
889   /* A type that is properly aligned for any stack member.  */
890   union yyalloc
# Line 838 | Line 909 | union yyalloc
909     elements in the stack, and YYPTR gives the new location of the
910     stack.  Advance YYPTR to a properly aligned location for the next
911     stack.  */
912 < # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
913 <    do                                                                  \
914 <      {                                                                 \
915 <        YYSIZE_T yynewbytes;                                            \
916 <        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
917 <        Stack = &yyptr->Stack_alloc;                                    \
918 <        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
919 <        yyptr += yynewbytes / sizeof (*yyptr);                          \
920 <      }                                                                 \
921 <    while (YYID (0))
912 > # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
913 >    do                                                                  \
914 >      {                                                                 \
915 >        YYSIZE_T yynewbytes;                                            \
916 >        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
917 >        Stack = &yyptr->Stack_alloc;                                    \
918 >        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
919 >        yyptr += yynewbytes / sizeof (*yyptr);                          \
920 >      }                                                                 \
921 >    while (0)
922  
923   #endif
924  
# Line 866 | Line 937 | union yyalloc
937            for (yyi = 0; yyi < (Count); yyi++)   \
938              (Dst)[yyi] = (Src)[yyi];            \
939          }                                       \
940 <      while (YYID (0))
940 >      while (0)
941   #  endif
942   # endif
943   #endif /* !YYCOPY_NEEDED */
# Line 874 | Line 945 | union yyalloc
945   /* YYFINAL -- State number of the termination state.  */
946   #define YYFINAL  2
947   /* YYLAST -- Last index in YYTABLE.  */
948 < #define YYLAST   1206
948 > #define YYLAST   1260
949  
950   /* YYNTOKENS -- Number of terminals.  */
951 < #define YYNTOKENS  220
951 > #define YYNTOKENS  238
952   /* YYNNTS -- Number of nonterminals.  */
953 < #define YYNNTS  283
953 > #define YYNNTS  296
954   /* YYNRULES -- Number of rules.  */
955 < #define YYNRULES  627
956 < /* YYNRULES -- Number of states.  */
957 < #define YYNSTATES  1228
955 > #define YYNRULES  667
956 > /* YYNSTATES -- Number of states.  */
957 > #define YYNSTATES  1313
958  
959 < /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
959 > /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
960 >   by yylex, with out-of-bounds checking.  */
961   #define YYUNDEFTOK  2
962 < #define YYMAXUTOK   469
962 > #define YYMAXUTOK   486
963  
964 < #define YYTRANSLATE(YYX)                                                \
964 > #define YYTRANSLATE(YYX)                                                \
965    ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
966  
967 < /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
967 > /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
968 >   as returned by yylex, without out-of-bounds checking.  */
969   static const yytype_uint8 yytranslate[] =
970   {
971         0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
972         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
973         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
974         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
975 <       2,     2,     2,     2,   219,     2,     2,     2,     2,     2,
976 <       2,     2,     2,     2,     2,     2,     2,     2,     2,   215,
977 <       2,   218,     2,     2,     2,     2,     2,     2,     2,     2,
975 >       2,     2,     2,     2,   236,     2,     2,     2,     2,     2,
976 >       2,     2,     2,     2,     2,     2,     2,     2,   237,   232,
977 >       2,   235,     2,     2,     2,     2,     2,     2,     2,     2,
978         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
979         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
980         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
981         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
982         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
983 <       2,     2,     2,   217,     2,   216,     2,     2,     2,     2,
983 >       2,     2,     2,   234,     2,   233,     2,     2,     2,     2,
984         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
985         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
986         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
# Line 941 | Line 1014 | static const yytype_uint8 yytranslate[]
1014       175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
1015       185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
1016       195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
1017 <     205,   206,   207,   208,   209,   210,   211,   212,   213,   214
1017 >     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
1018 >     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
1019 >     225,   226,   227,   228,   229,   230,   231
1020   };
1021  
1022   #if YYDEBUG
1023 < /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
949 <   YYRHS.  */
950 < static const yytype_uint16 yyprhs[] =
951 < {
952 <       0,     0,     3,     4,     7,     9,    11,    13,    15,    17,
953 <      19,    21,    23,    25,    27,    29,    31,    33,    35,    37,
954 <      39,    41,    43,    45,    47,    50,    53,    54,    56,    59,
955 <      63,    67,    71,    75,    79,    80,    82,    85,    89,    93,
956 <      97,   103,   106,   108,   110,   112,   115,   120,   125,   131,
957 <     134,   136,   138,   140,   142,   144,   146,   148,   150,   152,
958 <     154,   156,   158,   160,   162,   164,   166,   169,   174,   179,
959 <     183,   185,   187,   189,   193,   195,   197,   199,   204,   209,
960 <     214,   219,   224,   229,   234,   239,   244,   249,   254,   259,
961 <     264,   270,   273,   275,   277,   279,   281,   284,   289,   294,
962 <     299,   305,   308,   310,   312,   314,   317,   322,   323,   330,
963 <     333,   335,   337,   339,   341,   344,   349,   354,   359,   360,
964 <     366,   370,   372,   374,   376,   378,   380,   382,   384,   386,
965 <     387,   394,   397,   399,   401,   403,   405,   407,   409,   411,
966 <     413,   415,   418,   423,   428,   433,   438,   443,   448,   449,
967 <     455,   459,   461,   463,   465,   467,   469,   471,   473,   475,
968 <     477,   479,   481,   483,   485,   487,   489,   491,   493,   495,
969 <     497,   499,   501,   502,   508,   512,   514,   516,   518,   520,
970 <     522,   524,   526,   528,   530,   532,   534,   536,   538,   540,
971 <     542,   544,   546,   548,   550,   552,   553,   560,   563,   565,
972 <     567,   569,   571,   573,   575,   577,   579,   581,   583,   585,
973 <     587,   589,   591,   593,   596,   601,   606,   611,   616,   621,
974 <     626,   631,   636,   641,   646,   651,   656,   661,   666,   667,
975 <     674,   675,   681,   685,   687,   689,   691,   693,   696,   698,
976 <     700,   702,   704,   706,   709,   710,   716,   720,   722,   724,
977 <     728,   733,   738,   739,   746,   749,   751,   753,   755,   757,
978 <     759,   761,   763,   765,   767,   770,   775,   780,   785,   790,
979 <     791,   797,   801,   803,   805,   807,   809,   811,   813,   815,
980 <     817,   819,   821,   826,   831,   836,   837,   844,   847,   849,
981 <     851,   853,   855,   858,   863,   868,   873,   879,   882,   884,
982 <     886,   888,   893,   894,   901,   904,   906,   908,   910,   912,
983 <     915,   920,   925,   926,   932,   936,   938,   940,   942,   944,
984 <     946,   948,   950,   952,   954,   956,   958,   959,   966,   969,
985 <     971,   973,   975,   978,   983,   984,   990,   994,   996,   998,
986 <    1000,  1002,  1004,  1006,  1008,  1010,  1012,  1014,  1016,  1017,
987 <    1024,  1027,  1029,  1031,  1033,  1035,  1037,  1039,  1041,  1043,
988 <    1045,  1047,  1049,  1051,  1053,  1055,  1058,  1063,  1068,  1073,
989 <    1078,  1083,  1088,  1093,  1098,  1099,  1105,  1109,  1111,  1113,
990 <    1115,  1120,  1125,  1130,  1135,  1140,  1141,  1148,  1149,  1155,
991 <    1159,  1161,  1163,  1166,  1168,  1170,  1172,  1174,  1176,  1181,
992 <    1186,  1187,  1194,  1197,  1199,  1201,  1203,  1205,  1210,  1215,
993 <    1221,  1224,  1226,  1228,  1230,  1235,  1236,  1243,  1244,  1250,
994 <    1254,  1256,  1258,  1261,  1263,  1265,  1267,  1269,  1271,  1276,
995 <    1281,  1287,  1290,  1292,  1294,  1296,  1298,  1300,  1302,  1304,
996 <    1306,  1308,  1310,  1312,  1314,  1316,  1318,  1320,  1322,  1324,
997 <    1326,  1328,  1330,  1332,  1334,  1336,  1338,  1340,  1342,  1344,
998 <    1346,  1348,  1350,  1352,  1354,  1356,  1358,  1360,  1362,  1364,
999 <    1366,  1368,  1370,  1372,  1374,  1376,  1378,  1380,  1382,  1384,
1000 <    1386,  1388,  1390,  1392,  1397,  1402,  1407,  1412,  1417,  1422,
1001 <    1427,  1432,  1437,  1442,  1447,  1452,  1457,  1462,  1467,  1472,
1002 <    1477,  1482,  1487,  1492,  1497,  1502,  1507,  1512,  1517,  1522,
1003 <    1527,  1532,  1537,  1542,  1547,  1552,  1557,  1562,  1567,  1572,
1004 <    1577,  1582,  1587,  1592,  1597,  1602,  1607,  1612,  1617,  1622,
1005 <    1623,  1629,  1633,  1635,  1637,  1639,  1641,  1643,  1645,  1647,
1006 <    1649,  1651,  1653,  1655,  1657,  1659,  1661,  1663,  1665,  1667,
1007 <    1669,  1671,  1673,  1675,  1676,  1682,  1686,  1688,  1690,  1692,
1008 <    1694,  1696,  1698,  1700,  1702,  1704,  1706,  1708,  1710,  1712,
1009 <    1714,  1716,  1718,  1720,  1722,  1724,  1726,  1728,  1733,  1738,
1010 <    1743,  1749,  1752,  1754,  1756,  1758,  1760,  1762,  1764,  1766,
1011 <    1768,  1770,  1772,  1774,  1776,  1778,  1780,  1782,  1784,  1789,
1012 <    1794,  1799,  1804,  1809,  1814,  1819,  1824,  1829,  1834,  1839,
1013 <    1844,  1849,  1854,  1860,  1863,  1865,  1867,  1869,  1871,  1873,
1014 <    1875,  1877,  1879,  1884,  1889,  1894,  1899,  1904
1015 < };
1016 <
1017 < /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
1018 < static const yytype_int16 yyrhs[] =
1019 < {
1020 <     221,     0,    -1,    -1,   221,   222,    -1,   254,    -1,   260,
1021 <      -1,   274,    -1,   477,    -1,   292,    -1,   310,    -1,   324,
1022 <      -1,   232,    -1,   494,    -1,   339,    -1,   346,    -1,   350,
1023 <      -1,   360,    -1,   369,    -1,   389,    -1,   399,    -1,   405,
1024 <      -1,   419,    -1,   409,    -1,   227,    -1,     1,   215,    -1,
1025 <       1,   216,    -1,    -1,   224,    -1,    99,   223,    -1,    99,
1026 <     138,   223,    -1,    99,   139,   223,    -1,    99,   140,   223,
1027 <      -1,    99,   141,   223,    -1,    99,   142,   223,    -1,    -1,
1028 <     226,    -1,    99,   225,    -1,    99,     9,   225,    -1,    99,
1029 <      10,   225,    -1,    99,    11,   225,    -1,    88,   217,   228,
1030 <     216,   215,    -1,   228,   229,    -1,   229,    -1,   230,    -1,
1031 <     231,    -1,     1,   215,    -1,    87,   218,   118,   215,    -1,
1032 <     113,   218,   118,   215,    -1,   146,   217,   233,   216,   215,
1033 <      -1,   233,   234,    -1,   234,    -1,   245,    -1,   250,    -1,
1034 <     253,    -1,   247,    -1,   248,    -1,   249,    -1,   252,    -1,
1035 <     243,    -1,   242,    -1,   251,    -1,   246,    -1,   241,    -1,
1036 <     235,    -1,   236,    -1,   244,    -1,     1,   215,    -1,   132,
1037 <     218,   237,   215,    -1,   133,   218,   239,   215,    -1,   237,
1038 <     219,   238,    -1,   238,    -1,   134,    -1,   135,    -1,   239,
1039 <     219,   240,    -1,   240,    -1,   134,    -1,   135,    -1,   130,
1040 <     218,   118,   215,    -1,   128,   218,   118,   215,    -1,   131,
1041 <     218,   118,   215,    -1,   171,   218,   118,   215,    -1,    89,
1042 <     218,   118,   215,    -1,   147,   218,   118,   215,    -1,    24,
1043 <     218,   118,   215,    -1,    92,   218,   118,   215,    -1,    91,
1044 <     218,   118,   215,    -1,   209,   218,   118,   215,    -1,   210,
1045 <     218,   118,   215,    -1,   181,   218,    99,   215,    -1,    57,
1046 <     218,   160,   215,    -1,     4,   217,   255,   216,   215,    -1,
1047 <     255,   256,    -1,   256,    -1,   257,    -1,   259,    -1,   258,
1048 <      -1,     1,   215,    -1,    89,   218,   118,   215,    -1,    31,
1049 <     218,   118,   215,    -1,    24,   218,   118,   215,    -1,    71,
1050 <     217,   261,   216,   215,    -1,   261,   262,    -1,   262,    -1,
1051 <     263,    -1,   264,    -1,     1,   215,    -1,   208,   218,   160,
1052 <     215,    -1,    -1,   265,   214,   217,   266,   216,   215,    -1,
1053 <     266,   267,    -1,   267,    -1,   268,    -1,   270,    -1,   269,
1054 <      -1,     1,   215,    -1,    89,   218,   118,   215,    -1,   213,
1055 <     218,   226,   215,    -1,   213,   218,   195,   215,    -1,    -1,
1056 <     151,   271,   218,   272,   215,    -1,   272,   219,   273,    -1,
1057 <     273,    -1,   206,    -1,   102,    -1,    40,    -1,   174,    -1,
1058 <      64,    -1,    62,    -1,   173,    -1,    -1,   102,   275,   217,
1059 <     276,   216,   215,    -1,   276,   277,    -1,   277,    -1,   278,
1060 <      -1,   279,    -1,   280,    -1,   284,    -1,   283,    -1,   281,
1061 <      -1,   282,    -1,   288,    -1,     1,   215,    -1,    89,   218,
1062 <     118,   215,    -1,   206,   218,   118,   215,    -1,   112,   218,
1063 <     118,   215,    -1,    32,   218,   160,   215,    -1,   129,   218,
1064 <     118,   215,    -1,    17,   218,   118,   215,    -1,    -1,   192,
1065 <     285,   218,   286,   215,    -1,   286,   219,   287,    -1,   287,
1066 <      -1,   166,    -1,   169,    -1,   170,    -1,   172,    -1,   173,
1067 <      -1,   176,    -1,    51,    -1,   189,    -1,   182,    -1,   185,
1068 <      -1,   193,    -1,   190,    -1,   175,    -1,   183,    -1,   187,
1069 <      -1,   177,    -1,   199,    -1,   167,    -1,   168,    -1,   180,
1070 <      -1,    -1,    36,   289,   218,   290,   215,    -1,   290,   219,
1071 <     291,    -1,   291,    -1,    47,    -1,   125,    -1,    64,    -1,
1072 <     205,    -1,   174,    -1,   194,    -1,   211,    -1,    40,    -1,
1073 <      25,    -1,   200,    -1,   124,    -1,     4,    -1,    94,    -1,
1074 <     183,    -1,   198,    -1,   106,    -1,   126,    -1,   188,    -1,
1075 <      87,    -1,    -1,    17,   293,   217,   294,   216,   215,    -1,
1076 <     294,   295,    -1,   295,    -1,   296,    -1,   307,    -1,   308,
1077 <      -1,   297,    -1,   298,    -1,   309,    -1,   299,    -1,   300,
1078 <      -1,   301,    -1,   302,    -1,   303,    -1,   304,    -1,   305,
1079 <      -1,   306,    -1,     1,   215,    -1,    89,   218,   118,   215,
1080 <      -1,   115,   218,   224,   215,    -1,   116,   218,   224,   215,
1081 <      -1,   101,   218,    99,   215,    -1,    19,   218,   224,   215,
1082 <      -1,    81,   218,    99,   215,    -1,    76,   218,    99,   215,
1083 <      -1,    78,   218,    99,   215,    -1,    77,   218,    99,   215,
1084 <      -1,   143,   218,   226,   215,    -1,   184,   218,   226,   215,
1085 <      -1,    15,   218,    99,   215,    -1,    16,   218,    99,   215,
1086 <      -1,   100,   218,    99,   215,    -1,    -1,    70,   311,   217,
1087 <     316,   216,   215,    -1,    -1,    36,   313,   218,   314,   215,
1088 <      -1,   314,   219,   315,    -1,   315,    -1,   191,    -1,    51,
1089 <      -1,   186,    -1,   316,   317,    -1,   317,    -1,   318,    -1,
1090 <     312,    -1,   322,    -1,   323,    -1,     1,   215,    -1,    -1,
1091 <     117,   218,   320,   319,   215,    -1,   320,   219,   321,    -1,
1092 <     321,    -1,    99,    -1,    99,   164,    99,    -1,    61,   218,
1093 <     118,   215,    -1,    56,   218,   118,   215,    -1,    -1,    48,
1094 <     325,   217,   326,   216,   215,    -1,   326,   327,    -1,   327,
1095 <      -1,   328,    -1,   329,    -1,   330,    -1,   332,    -1,   336,
1096 <      -1,   337,    -1,   338,    -1,   331,    -1,     1,   215,    -1,
1097 <     206,   218,   118,   215,    -1,   112,   218,   118,   215,    -1,
1098 <      17,   218,   118,   215,    -1,    32,   218,   160,   215,    -1,
1099 <      -1,    36,   333,   218,   334,   215,    -1,   334,   219,   335,
1100 <      -1,   335,    -1,   154,    -1,    33,    -1,    65,    -1,    49,
1101 <      -1,    13,    -1,    98,    -1,    43,    -1,   137,    -1,    90,
1102 <      -1,   153,   218,   118,   215,    -1,   122,   218,   118,   215,
1103 <      -1,   121,   218,    99,   215,    -1,    -1,   136,   340,   217,
1104 <     341,   216,   215,    -1,   341,   342,    -1,   342,    -1,   343,
1105 <      -1,   344,    -1,   345,    -1,     1,   215,    -1,   120,   218,
1106 <     118,   215,    -1,    14,   218,   118,   215,    -1,    93,   218,
1107 <     118,   215,    -1,   201,   217,   347,   216,   215,    -1,   347,
1108 <     348,    -1,   348,    -1,   349,    -1,     1,    -1,    89,   218,
1109 <     118,   215,    -1,    -1,   149,   351,   217,   352,   216,   215,
1110 <      -1,   352,   353,    -1,   353,    -1,   354,    -1,   355,    -1,
1111 <     356,    -1,     1,   215,    -1,    89,   218,   118,   215,    -1,
1112 <     206,   218,   118,   215,    -1,    -1,   151,   357,   218,   358,
1113 <     215,    -1,   358,   219,   359,    -1,   359,    -1,    64,    -1,
1114 <     205,    -1,   174,    -1,   194,    -1,   211,    -1,   197,    -1,
1115 <     136,    -1,   196,    -1,   180,    -1,   165,    -1,    -1,   150,
1116 <     361,   217,   362,   216,   215,    -1,   362,   363,    -1,   363,
1117 <      -1,   364,    -1,   365,    -1,     1,   215,    -1,    89,   218,
1118 <     118,   215,    -1,    -1,   151,   366,   218,   367,   215,    -1,
1119 <     367,   219,   368,    -1,   368,    -1,    64,    -1,   205,    -1,
1120 <     174,    -1,   194,    -1,   211,    -1,   197,    -1,   136,    -1,
1121 <     196,    -1,   180,    -1,   165,    -1,    -1,    18,   370,   217,
1122 <     371,   216,   215,    -1,   371,   372,    -1,   372,    -1,   373,
1123 <      -1,   374,    -1,   375,    -1,   376,    -1,   377,    -1,   379,
1124 <      -1,   378,    -1,   388,    -1,   380,    -1,   385,    -1,   386,
1125 <      -1,   387,    -1,   384,    -1,     1,   215,    -1,    89,   218,
1126 <     118,   215,    -1,    56,   218,   118,   215,    -1,   209,   218,
1127 <     118,   215,    -1,   144,   218,   118,   215,    -1,     3,   218,
1128 <     118,   215,    -1,   117,   218,    99,   215,    -1,     5,   218,
1129 <     178,   215,    -1,     5,   218,   179,   215,    -1,    -1,    36,
1130 <     381,   218,   382,   215,    -1,   382,   219,   383,    -1,   383,
1131 <      -1,     8,    -1,   191,    -1,    32,   218,   160,   215,    -1,
1132 <      58,   218,   118,   215,    -1,    68,   218,   118,   215,    -1,
1133 <      17,   218,   118,   215,    -1,   171,   218,   118,   215,    -1,
1134 <      -1,    62,   390,   217,   395,   216,   215,    -1,    -1,   151,
1135 <     392,   218,   393,   215,    -1,   393,   219,   394,    -1,   394,
1136 <      -1,   123,    -1,   395,   396,    -1,   396,    -1,   397,    -1,
1137 <     398,    -1,   391,    -1,     1,    -1,   206,   218,   118,   215,
1138 <      -1,   120,   218,   118,   215,    -1,    -1,    23,   400,   217,
1139 <     401,   216,   215,    -1,   401,   402,    -1,   402,    -1,   403,
1140 <      -1,   404,    -1,     1,    -1,    61,   218,   118,   215,    -1,
1141 <     120,   218,   118,   215,    -1,    34,   217,   406,   216,   215,
1142 <      -1,   406,   407,    -1,   407,    -1,   408,    -1,     1,    -1,
1143 <      61,   218,   118,   215,    -1,    -1,    38,   410,   217,   415,
1144 <     216,   215,    -1,    -1,   151,   412,   218,   413,   215,    -1,
1145 <     413,   219,   414,    -1,   414,    -1,   123,    -1,   415,   416,
1146 <      -1,   416,    -1,   417,    -1,   418,    -1,   411,    -1,     1,
1147 <      -1,    89,   218,   118,   215,    -1,   120,   218,   118,   215,
1148 <      -1,    39,   217,   420,   216,   215,    -1,   420,   421,    -1,
1149 <     421,    -1,   430,    -1,   431,    -1,   433,    -1,   434,    -1,
1150 <     435,    -1,   436,    -1,   437,    -1,   438,    -1,   439,    -1,
1151 <     440,    -1,   429,    -1,   442,    -1,   443,    -1,   458,    -1,
1152 <     445,    -1,   447,    -1,   449,    -1,   448,    -1,   452,    -1,
1153 <     446,    -1,   453,    -1,   454,    -1,   455,    -1,   456,    -1,
1154 <     457,    -1,   470,    -1,   459,    -1,   460,    -1,   461,    -1,
1155 <     466,    -1,   450,    -1,   451,    -1,   476,    -1,   474,    -1,
1156 <     475,    -1,   432,    -1,   465,    -1,   441,    -1,   463,    -1,
1157 <     464,    -1,   428,    -1,   423,    -1,   424,    -1,   425,    -1,
1158 <     426,    -1,   427,    -1,   444,    -1,   422,    -1,   462,    -1,
1159 <       1,    -1,    83,   218,    99,   215,    -1,    42,   218,   160,
1160 <     215,    -1,    41,   218,   224,   215,    -1,    44,   218,   224,
1161 <     215,    -1,    45,   218,    99,   215,    -1,    46,   218,    99,
1162 <     215,    -1,   148,   218,   160,   215,    -1,    63,   218,   224,
1163 <     215,    -1,    55,   218,   160,   215,    -1,    59,   218,   160,
1164 <     215,    -1,    28,   218,   160,   215,    -1,    35,   218,   160,
1165 <     215,    -1,     6,   218,   160,   215,    -1,    80,   218,   224,
1166 <     215,    -1,    79,   218,    99,   215,    -1,    72,   218,    99,
1167 <     215,    -1,     7,   218,   224,   215,    -1,   163,   218,   224,
1168 <     215,    -1,   162,   218,   224,   215,    -1,    50,   218,    99,
1169 <     215,    -1,    60,   218,   160,   215,    -1,   212,   218,   160,
1170 <     215,    -1,   155,   218,   160,   215,    -1,   158,   218,   160,
1171 <     215,    -1,   159,   218,   160,   215,    -1,   157,   218,   160,
1172 <     215,    -1,   157,   218,   161,   215,    -1,   156,   218,   160,
1173 <     215,    -1,   156,   218,   161,   215,    -1,   110,   218,   224,
1174 <     215,    -1,    12,   218,   224,   215,    -1,   103,   218,   160,
1175 <     215,    -1,   111,   218,   224,   215,    -1,   152,   218,   160,
1176 <     215,    -1,    97,   218,   160,   215,    -1,   204,   218,   160,
1177 <     215,    -1,   105,   218,   160,   215,    -1,    84,   218,   118,
1178 <     215,    -1,    29,   218,    99,   215,    -1,    82,   218,    99,
1179 <     215,    -1,   207,   218,   160,   215,    -1,    30,   218,   118,
1180 <     215,    -1,   202,   218,   118,   215,    -1,   114,   218,   160,
1181 <     215,    -1,    26,   218,   160,   215,    -1,   203,   218,   224,
1182 <     215,    -1,    -1,   107,   467,   218,   468,   215,    -1,   468,
1183 <     219,   469,    -1,   469,    -1,   166,    -1,   169,    -1,   170,
1184 <      -1,   172,    -1,   173,    -1,   176,    -1,    51,    -1,   189,
1185 <      -1,   182,    -1,   185,    -1,   193,    -1,   190,    -1,   175,
1186 <      -1,   183,    -1,   187,    -1,   177,    -1,   199,    -1,   167,
1187 <      -1,   168,    -1,   180,    -1,    -1,   104,   471,   218,   472,
1188 <     215,    -1,   472,   219,   473,    -1,   473,    -1,   166,    -1,
1189 <     169,    -1,   170,    -1,   172,    -1,   173,    -1,   176,    -1,
1190 <     189,    -1,    51,    -1,   182,    -1,   185,    -1,   193,    -1,
1191 <     190,    -1,   175,    -1,   183,    -1,   187,    -1,   177,    -1,
1192 <     199,    -1,   167,    -1,   168,    -1,   180,    -1,    85,   218,
1193 <      99,   215,    -1,    86,   218,    99,   215,    -1,    20,   218,
1194 <      99,   215,    -1,    14,   217,   478,   216,   215,    -1,   478,
1195 <     479,    -1,   479,    -1,   487,    -1,   482,    -1,   483,    -1,
1196 <     484,    -1,   485,    -1,   486,    -1,   488,    -1,   489,    -1,
1197 <     490,    -1,   481,    -1,   491,    -1,   492,    -1,   493,    -1,
1198 <     480,    -1,     1,    -1,    27,   218,   160,   215,    -1,   127,
1199 <     218,   160,   215,    -1,    66,   218,   224,   215,    -1,    67,
1200 <     218,   224,   215,    -1,    75,   218,    99,   215,    -1,    74,
1201 <     218,    99,   215,    -1,   119,   218,   160,   215,    -1,    73,
1202 <     218,    99,   215,    -1,    22,   218,    99,   215,    -1,    21,
1203 <     218,    99,   215,    -1,    95,   218,   160,   215,    -1,    96,
1204 <     218,   160,   215,    -1,   108,   218,    99,   215,    -1,   109,
1205 <     218,   224,   215,    -1,   145,   217,   495,   216,   215,    -1,
1206 <     495,   496,    -1,   496,    -1,   497,    -1,   498,    -1,   500,
1207 <      -1,   501,    -1,   499,    -1,   502,    -1,     1,    -1,    37,
1208 <     218,   160,   215,    -1,    54,   218,   160,   215,    -1,    52,
1209 <     218,   118,   215,    -1,    69,   218,   224,   215,    -1,    51,
1210 <     218,   160,   215,    -1,    53,   218,   160,   215,    -1
1211 < };
1212 <
1213 < /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
1023 >  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
1024   static const yytype_uint16 yyrline[] =
1025   {
1026 <       0,   330,   330,   331,   334,   335,   336,   337,   338,   339,
1027 <     340,   341,   342,   343,   344,   345,   346,   347,   348,   349,
1028 <     350,   351,   352,   353,   354,   355,   359,   359,   360,   364,
1029 <     368,   372,   376,   380,   386,   386,   387,   388,   389,   390,
1030 <     397,   400,   400,   401,   401,   401,   403,   409,   416,   418,
1031 <     418,   419,   419,   420,   420,   421,   421,   422,   422,   423,
1032 <     423,   424,   424,   425,   425,   426,   427,   430,   431,   433,
1033 <     433,   434,   440,   448,   448,   449,   455,   463,   502,   561,
1034 <     589,   597,   612,   627,   636,   650,   659,   687,   717,   740,
1035 <     749,   751,   751,   752,   752,   753,   753,   755,   764,   773,
1036 <     785,   786,   786,   788,   788,   789,   791,   798,   798,   808,
1037 <     809,   811,   811,   812,   812,   814,   819,   822,   828,   827,
1038 <     833,   833,   834,   838,   842,   846,   850,   854,   858,   869,
1039 <     868,   966,   966,   967,   967,   967,   968,   968,   968,   969,
1040 <     969,   969,   971,   980,  1017,  1029,  1040,  1082,  1092,  1091,
1041 <    1097,  1097,  1098,  1102,  1106,  1110,  1114,  1118,  1122,  1126,
1042 <    1130,  1134,  1138,  1142,  1146,  1150,  1154,  1158,  1162,  1166,
1043 <    1170,  1174,  1181,  1180,  1186,  1186,  1187,  1191,  1195,  1199,
1044 <    1203,  1207,  1211,  1215,  1219,  1223,  1227,  1231,  1235,  1239,
1045 <    1243,  1247,  1251,  1255,  1259,  1270,  1269,  1319,  1319,  1320,
1046 <    1321,  1321,  1322,  1323,  1324,  1325,  1326,  1327,  1328,  1329,
1047 <    1330,  1331,  1331,  1332,  1334,  1343,  1349,  1355,  1361,  1367,
1048 <    1373,  1379,  1385,  1391,  1397,  1404,  1410,  1416,  1426,  1425,
1049 <    1442,  1441,  1446,  1446,  1447,  1451,  1455,  1463,  1463,  1464,
1050 <    1464,  1464,  1464,  1464,  1466,  1466,  1468,  1468,  1470,  1484,
1051 <    1504,  1513,  1526,  1525,  1594,  1594,  1595,  1595,  1595,  1595,
1052 <    1596,  1596,  1596,  1597,  1597,  1599,  1634,  1647,  1656,  1668,
1053 <    1667,  1671,  1671,  1672,  1676,  1680,  1684,  1688,  1692,  1696,
1054 <    1700,  1704,  1710,  1729,  1739,  1753,  1752,  1768,  1768,  1769,
1055 <    1769,  1769,  1769,  1771,  1780,  1795,  1808,  1810,  1810,  1811,
1056 <    1811,  1813,  1829,  1828,  1844,  1844,  1845,  1845,  1845,  1845,
1057 <    1847,  1856,  1879,  1878,  1884,  1884,  1885,  1889,  1893,  1897,
1058 <    1901,  1905,  1909,  1913,  1917,  1921,  1931,  1930,  1947,  1947,
1059 <    1948,  1948,  1948,  1950,  1957,  1956,  1962,  1962,  1963,  1967,
1060 <    1971,  1975,  1979,  1983,  1987,  1991,  1995,  1999,  2009,  2008,
1061 <    2059,  2059,  2060,  2060,  2060,  2061,  2061,  2062,  2062,  2062,
1062 <    2063,  2063,  2063,  2064,  2064,  2065,  2067,  2076,  2085,  2111,
1063 <    2129,  2147,  2153,  2157,  2166,  2165,  2169,  2169,  2170,  2174,
1064 <    2180,  2191,  2202,  2213,  2222,  2241,  2240,  2306,  2305,  2309,
1065 <    2309,  2310,  2316,  2316,  2317,  2317,  2317,  2317,  2319,  2338,
1066 <    2348,  2347,  2372,  2372,  2373,  2373,  2373,  2375,  2381,  2390,
1067 <    2392,  2392,  2393,  2393,  2395,  2414,  2413,  2461,  2460,  2464,
1068 <    2464,  2465,  2471,  2471,  2472,  2472,  2472,  2472,  2474,  2480,
1069 <    2489,  2492,  2492,  2493,  2493,  2494,  2494,  2495,  2495,  2496,
1070 <    2496,  2497,  2497,  2498,  2499,  2500,  2500,  2501,  2501,  2502,
1071 <    2502,  2503,  2503,  2504,  2504,  2505,  2505,  2506,  2507,  2507,
1072 <    2508,  2508,  2509,  2509,  2510,  2510,  2511,  2511,  2512,  2513,
1073 <    2513,  2514,  2515,  2516,  2516,  2517,  2517,  2518,  2519,  2520,
1074 <    2521,  2521,  2522,  2525,  2530,  2536,  2542,  2548,  2553,  2558,
1075 <    2563,  2568,  2573,  2578,  2583,  2588,  2593,  2598,  2603,  2608,
1076 <    2613,  2618,  2624,  2635,  2640,  2645,  2650,  2655,  2660,  2663,
1077 <    2668,  2671,  2676,  2681,  2686,  2691,  2696,  2701,  2706,  2711,
1078 <    2716,  2727,  2732,  2737,  2742,  2751,  2760,  2765,  2770,  2776,
1079 <    2775,  2780,  2780,  2781,  2784,  2787,  2790,  2793,  2796,  2799,
1080 <    2802,  2805,  2808,  2811,  2814,  2817,  2820,  2823,  2826,  2829,
1081 <    2832,  2835,  2838,  2844,  2843,  2848,  2848,  2849,  2852,  2855,
1082 <    2858,  2861,  2864,  2867,  2870,  2873,  2876,  2879,  2882,  2885,
1083 <    2888,  2891,  2894,  2897,  2900,  2903,  2906,  2911,  2916,  2921,
1084 <    2930,  2933,  2933,  2934,  2935,  2935,  2936,  2936,  2937,  2937,
1085 <    2938,  2939,  2939,  2940,  2941,  2941,  2942,  2942,  2944,  2949,
1086 <    2954,  2959,  2964,  2969,  2974,  2979,  2984,  2989,  2994,  2999,
1087 <    3004,  3009,  3017,  3020,  3020,  3021,  3021,  3022,  3023,  3023,
1088 <    3024,  3025,  3027,  3033,  3039,  3048,  3062,  3068
1026 >       0,   382,   382,   383,   386,   387,   388,   389,   390,   391,
1027 >     392,   393,   394,   395,   396,   397,   398,   399,   400,   401,
1028 >     402,   403,   404,   405,   406,   407,   408,   412,   412,   413,
1029 >     414,   415,   416,   417,   418,   419,   420,   423,   423,   424,
1030 >     425,   426,   427,   434,   437,   437,   438,   438,   438,   440,
1031 >     446,   453,   455,   455,   456,   457,   458,   459,   460,   461,
1032 >     462,   463,   464,   465,   466,   467,   468,   469,   470,   471,
1033 >     472,   473,   474,   477,   478,   480,   480,   481,   487,   495,
1034 >     495,   496,   502,   510,   552,   610,   638,   646,   674,   689,
1035 >     704,   713,   727,   736,   764,   794,   819,   841,   863,   872,
1036 >     874,   874,   875,   876,   877,   878,   880,   889,   898,   911,
1037 >     910,   928,   928,   929,   929,   929,   931,   937,   946,   947,
1038 >     947,   949,   949,   950,   952,   959,   959,   972,   973,   975,
1039 >     975,   976,   976,   978,   986,   989,   995,   994,  1000,  1000,
1040 >    1001,  1005,  1009,  1013,  1017,  1021,  1025,  1029,  1033,  1044,
1041 >    1043,  1123,  1123,  1124,  1125,  1126,  1127,  1128,  1129,  1130,
1042 >    1131,  1132,  1133,  1134,  1136,  1142,  1148,  1154,  1165,  1171,
1043 >    1177,  1188,  1195,  1194,  1200,  1200,  1201,  1205,  1209,  1213,
1044 >    1217,  1221,  1225,  1229,  1233,  1237,  1241,  1245,  1249,  1253,
1045 >    1257,  1261,  1265,  1269,  1273,  1277,  1281,  1285,  1292,  1291,
1046 >    1297,  1297,  1298,  1302,  1306,  1310,  1314,  1318,  1322,  1326,
1047 >    1330,  1334,  1338,  1342,  1346,  1350,  1354,  1358,  1362,  1366,
1048 >    1370,  1374,  1378,  1382,  1386,  1397,  1396,  1458,  1458,  1459,
1049 >    1460,  1461,  1462,  1463,  1464,  1465,  1466,  1467,  1468,  1469,
1050 >    1470,  1471,  1471,  1472,  1473,  1474,  1475,  1477,  1483,  1489,
1051 >    1495,  1501,  1507,  1513,  1519,  1525,  1531,  1537,  1544,  1550,
1052 >    1556,  1562,  1571,  1581,  1580,  1586,  1586,  1587,  1591,  1602,
1053 >    1601,  1608,  1607,  1612,  1612,  1613,  1617,  1621,  1627,  1627,
1054 >    1628,  1628,  1628,  1628,  1628,  1630,  1630,  1632,  1632,  1634,
1055 >    1648,  1666,  1672,  1682,  1681,  1723,  1723,  1724,  1725,  1726,
1056 >    1727,  1728,  1729,  1730,  1731,  1732,  1734,  1740,  1746,  1752,
1057 >    1764,  1763,  1769,  1769,  1770,  1774,  1778,  1782,  1786,  1790,
1058 >    1794,  1798,  1802,  1806,  1812,  1826,  1835,  1849,  1848,  1863,
1059 >    1863,  1864,  1864,  1864,  1864,  1866,  1872,  1878,  1888,  1890,
1060 >    1890,  1891,  1891,  1893,  1909,  1908,  1933,  1933,  1934,  1934,
1061 >    1934,  1934,  1936,  1942,  1962,  1961,  1967,  1967,  1968,  1972,
1062 >    1976,  1980,  1984,  1988,  1992,  1996,  2000,  2004,  2014,  2013,
1063 >    2034,  2034,  2035,  2035,  2035,  2037,  2044,  2043,  2049,  2049,
1064 >    2050,  2054,  2058,  2062,  2066,  2070,  2074,  2078,  2082,  2086,
1065 >    2096,  2095,  2167,  2167,  2168,  2169,  2170,  2171,  2172,  2173,
1066 >    2174,  2175,  2176,  2177,  2178,  2179,  2180,  2181,  2182,  2184,
1067 >    2190,  2196,  2202,  2215,  2228,  2234,  2240,  2244,  2253,  2252,
1068 >    2257,  2257,  2258,  2262,  2268,  2279,  2285,  2291,  2297,  2313,
1069 >    2312,  2338,  2338,  2339,  2339,  2339,  2341,  2361,  2371,  2370,
1070 >    2397,  2397,  2398,  2398,  2398,  2400,  2406,  2415,  2417,  2417,
1071 >    2418,  2418,  2420,  2438,  2437,  2460,  2460,  2461,  2461,  2461,
1072 >    2463,  2469,  2478,  2481,  2481,  2482,  2483,  2484,  2485,  2486,
1073 >    2487,  2488,  2489,  2490,  2491,  2492,  2493,  2494,  2495,  2496,
1074 >    2497,  2498,  2499,  2500,  2501,  2502,  2503,  2504,  2505,  2506,
1075 >    2507,  2508,  2509,  2510,  2511,  2512,  2513,  2514,  2515,  2516,
1076 >    2517,  2518,  2519,  2520,  2521,  2522,  2523,  2524,  2525,  2526,
1077 >    2527,  2528,  2529,  2530,  2531,  2532,  2535,  2540,  2546,  2552,
1078 >    2558,  2564,  2569,  2574,  2579,  2584,  2589,  2594,  2599,  2604,
1079 >    2609,  2614,  2619,  2624,  2629,  2635,  2646,  2651,  2656,  2661,
1080 >    2666,  2671,  2676,  2679,  2684,  2687,  2692,  2697,  2702,  2707,
1081 >    2712,  2717,  2722,  2727,  2732,  2737,  2742,  2747,  2756,  2765,
1082 >    2770,  2775,  2780,  2786,  2785,  2790,  2790,  2791,  2794,  2797,
1083 >    2800,  2803,  2806,  2809,  2812,  2815,  2818,  2821,  2824,  2827,
1084 >    2830,  2833,  2836,  2839,  2842,  2845,  2848,  2851,  2854,  2860,
1085 >    2859,  2864,  2864,  2865,  2868,  2871,  2874,  2877,  2880,  2883,
1086 >    2886,  2889,  2892,  2895,  2898,  2901,  2904,  2907,  2910,  2913,
1087 >    2916,  2919,  2922,  2927,  2932,  2937,  2946,  2949,  2949,  2950,
1088 >    2951,  2952,  2953,  2954,  2955,  2956,  2957,  2958,  2959,  2960,
1089 >    2961,  2962,  2963,  2964,  2966,  2971,  2976,  2981,  2986,  2991,
1090 >    2996,  3001,  3006,  3011,  3016,  3021,  3026,  3031,  3039,  3042,
1091 >    3042,  3043,  3044,  3045,  3046,  3047,  3048,  3049,  3050,  3051,
1092 >    3053,  3059,  3065,  3071,  3077,  3086,  3100,  3106
1093   };
1094   #endif
1095  
# Line 1288 | Line 1102 | static const char *const yytname[] =
1102    "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME", "AUTOCONN", "BYTES",
1103    "KBYTES", "MBYTES", "CALLER_ID_WAIT", "CAN_FLOOD", "CHANNEL",
1104    "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CLASS", "CONNECT",
1105 <  "CONNECTFREQ", "DEFAULT_FLOODCOUNT", "DEFAULT_SPLIT_SERVER_COUNT",
1106 <  "DEFAULT_SPLIT_USER_COUNT", "DENY", "DESCRIPTION", "DIE", "DISABLE_AUTH",
1107 <  "DISABLE_FAKE_CHANNELS", "DISABLE_REMOTE_COMMANDS", "DOTS_IN_IDENT",
1108 <  "EGDPOOL_PATH", "EMAIL", "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT",
1109 <  "FAILED_OPER_NOTICE", "IRCD_FLAGS", "FLATTEN_LINKS", "GECOS", "GENERAL",
1110 <  "GLINE", "GLINE_DURATION", "GLINE_ENABLE", "GLINE_EXEMPT",
1111 <  "GLINE_REQUEST_DURATION", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
1112 <  "GLOBAL_KILL", "IRCD_AUTH", "NEED_IDENT", "HAVENT_READ_CONF", "HIDDEN",
1113 <  "HIDDEN_NAME", "HIDE_SERVER_IPS", "HIDE_SERVERS", "HIDE_SPOOF_IPS",
1105 >  "CONNECTFREQ", "CYCLE_ON_HOST_CHANGE", "DEFAULT_FLOODCOUNT",
1106 >  "DEFAULT_SPLIT_SERVER_COUNT", "DEFAULT_SPLIT_USER_COUNT", "DENY",
1107 >  "DESCRIPTION", "DIE", "DISABLE_AUTH", "DISABLE_FAKE_CHANNELS",
1108 >  "DISABLE_REMOTE_COMMANDS", "DOTS_IN_IDENT", "EGDPOOL_PATH", "EMAIL",
1109 >  "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT", "FAILED_OPER_NOTICE",
1110 >  "FLATTEN_LINKS", "GECOS", "GENERAL", "GLINE", "GLINE_DURATION",
1111 >  "GLINE_ENABLE", "GLINE_EXEMPT", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
1112 >  "GLINE_REQUEST_DURATION", "GLOBAL_KILL", "HAVENT_READ_CONF", "HIDDEN",
1113 >  "HIDDEN_NAME", "HIDE_CHANS", "HIDE_IDLE", "HIDE_IDLE_FROM_OPERS",
1114 >  "HIDE_SERVER_IPS", "HIDE_SERVERS", "HIDE_SERVICES", "HIDE_SPOOF_IPS",
1115    "HOST", "HUB", "HUB_MASK", "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT",
1116 <  "IP", "KILL", "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT",
1117 <  "KNOCK_DELAY", "KNOCK_DELAY_CHANNEL", "LEAF_MASK", "LINKS_DELAY",
1118 <  "LISTEN", "T_LOG", "MAX_ACCEPT", "MAX_BANS", "MAX_CHANS_PER_OPER",
1119 <  "MAX_CHANS_PER_USER", "MAX_GLOBAL", "MAX_IDENT", "MAX_LOCAL",
1120 <  "MAX_NICK_CHANGES", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1121 <  "MAX_WATCH", "MESSAGE_LOCALE", "MIN_NONWILDCARD",
1122 <  "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "NAME", "NEED_PASSWORD",
1123 <  "NETWORK_DESC", "NETWORK_NAME", "NICK", "NICK_CHANGES",
1116 >  "INVITE_CLIENT_COUNT", "INVITE_CLIENT_TIME", "IP", "IRCD_AUTH",
1117 >  "IRCD_FLAGS", "IRCD_SID", "JOIN_FLOOD_COUNT", "JOIN_FLOOD_TIME", "KILL",
1118 >  "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT", "KNOCK_CLIENT_COUNT",
1119 >  "KNOCK_CLIENT_TIME", "KNOCK_DELAY_CHANNEL", "LEAF_MASK", "LINKS_DELAY",
1120 >  "LISTEN", "MASK", "MAX_ACCEPT", "MAX_BANS", "MAX_CHANNELS", "MAX_GLOBAL",
1121 >  "MAX_IDENT", "MAX_IDLE", "MAX_LOCAL", "MAX_NICK_CHANGES",
1122 >  "MAX_NICK_LENGTH", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1123 >  "MAX_TOPIC_LENGTH", "MAX_WATCH", "MIN_IDLE", "MIN_NONWILDCARD",
1124 >  "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "MOTD", "NAME",
1125 >  "NEED_IDENT", "NEED_PASSWORD", "NETWORK_DESC", "NETWORK_NAME", "NICK",
1126    "NO_CREATE_ON_SPLIT", "NO_JOIN_ON_SPLIT", "NO_OPER_FLOOD", "NO_TILDE",
1127 <  "NUMBER", "NUMBER_PER_CIDR", "NUMBER_PER_IP", "OPERATOR",
1128 <  "OPERS_BYPASS_CALLERID", "OPER_ONLY_UMODES", "OPER_PASS_RESV",
1312 <  "OPER_SPY_T", "OPER_UMODES", "JOIN_FLOOD_COUNT", "JOIN_FLOOD_TIME",
1127 >  "NUMBER", "NUMBER_PER_CIDR", "NUMBER_PER_IP", "OPER_ONLY_UMODES",
1128 >  "OPER_PASS_RESV", "OPER_UMODES", "OPERATOR", "OPERS_BYPASS_CALLERID",
1129    "PACE_WAIT", "PACE_WAIT_SIMPLE", "PASSWORD", "PATH", "PING_COOKIE",
1130 <  "PING_TIME", "PING_WARNING", "PORT", "QSTRING", "QUIET_ON_BAN", "REASON",
1131 <  "REDIRPORT", "REDIRSERV", "REGEX_T", "REHASH", "REMOTE", "REMOTEBAN",
1132 <  "RESTRICT_CHANNELS", "RSA_PRIVATE_KEY_FILE", "RSA_PUBLIC_KEY_FILE",
1133 <  "SSL_CERTIFICATE_FILE", "SSL_DH_PARAM_FILE", "T_SSL_CLIENT_METHOD",
1134 <  "T_SSL_SERVER_METHOD", "T_SSLV3", "T_TLSV1", "RESV", "RESV_EXEMPT",
1135 <  "SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS", "SENDQ", "SEND_PASSWORD",
1136 <  "SERVERHIDE", "SERVERINFO", "IRCD_SID", "TKLINE_EXPIRE_NOTICES",
1321 <  "T_SHARED", "T_CLUSTER", "TYPE", "SHORT_MOTD", "SPOOF", "SPOOF_NOTICE",
1130 >  "PING_TIME", "PORT", "QSTRING", "RANDOM_IDLE", "REASON", "REDIRPORT",
1131 >  "REDIRSERV", "REHASH", "REMOTE", "REMOTEBAN", "RESV", "RESV_EXEMPT",
1132 >  "RSA_PRIVATE_KEY_FILE", "RSA_PUBLIC_KEY_FILE", "SECONDS", "MINUTES",
1133 >  "HOURS", "DAYS", "WEEKS", "MONTHS", "YEARS", "SEND_PASSWORD", "SENDQ",
1134 >  "SERVERHIDE", "SERVERINFO", "SHORT_MOTD", "SPOOF", "SPOOF_NOTICE",
1135 >  "SQUIT", "SSL_CERTIFICATE_FILE", "SSL_CERTIFICATE_FINGERPRINT",
1136 >  "SSL_CONNECTION_REQUIRED", "SSL_DH_ELLIPTIC_CURVE", "SSL_DH_PARAM_FILE",
1137    "STATS_E_DISABLED", "STATS_I_OPER_ONLY", "STATS_K_OPER_ONLY",
1138 <  "STATS_O_OPER_ONLY", "STATS_P_OPER_ONLY", "TBOOL", "TMASKED",
1139 <  "TS_MAX_DELTA", "TS_WARN_DELTA", "TWODOTS", "T_ALL", "T_BOTS",
1140 <  "T_SOFTCALLERID", "T_CALLERID", "T_CCONN", "T_CCONN_FULL",
1141 <  "T_SSL_CIPHER_LIST", "T_DEAF", "T_DEBUG", "T_DLINE", "T_EXTERNAL",
1142 <  "T_FULL", "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS", "T_MAX_CLIENTS",
1143 <  "T_NCHANGE", "T_OPERWALL", "T_RECVQ", "T_REJ", "T_SERVER",
1144 <  "T_SERVNOTICE", "T_SET", "T_SKILL", "T_SPY", "T_SSL", "T_UMODES",
1145 <  "T_UNAUTH", "T_UNDLINE", "T_UNLIMITED", "T_UNRESV", "T_UNXLINE",
1146 <  "T_GLOBOPS", "T_WALLOP", "T_RESTART", "T_SERVICE", "T_SERVICES_NAME",
1147 <  "THROTTLE_TIME", "TRUE_NO_OPER_FLOOD", "UNKLINE", "USER", "USE_EGD",
1148 <  "USE_LOGGING", "VHOST", "VHOST6", "XLINE", "WARN_NO_NLINE", "T_SIZE",
1149 <  "T_FILE", "';'", "'}'", "'{'", "'='", "','", "$accept", "conf",
1150 <  "conf_item", "timespec_", "timespec", "sizespec_", "sizespec",
1151 <  "modules_entry", "modules_items", "modules_item", "modules_module",
1152 <  "modules_path", "serverinfo_entry", "serverinfo_items",
1153 <  "serverinfo_item", "serverinfo_ssl_client_method",
1138 >  "STATS_O_OPER_ONLY", "STATS_P_OPER_ONLY", "STATS_U_OPER_ONLY", "T_ALL",
1139 >  "T_BOTS", "T_CALLERID", "T_CCONN", "T_CLUSTER", "T_DEAF", "T_DEBUG",
1140 >  "T_DLINE", "T_EXTERNAL", "T_FARCONNECT", "T_FILE", "T_FULL", "T_GLOBOPS",
1141 >  "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS", "T_LOG", "T_MAX_CLIENTS",
1142 >  "T_NCHANGE", "T_NONONREG", "T_RECVQ", "T_REJ", "T_RESTART", "T_SERVER",
1143 >  "T_SERVICE", "T_SERVICES_NAME", "T_SERVNOTICE", "T_SET", "T_SHARED",
1144 >  "T_SIZE", "T_SKILL", "T_SOFTCALLERID", "T_SPY", "T_SSL",
1145 >  "T_SSL_CIPHER_LIST", "T_SSL_CLIENT_METHOD", "T_SSL_SERVER_METHOD",
1146 >  "T_SSLV3", "T_TLSV1", "T_UMODES", "T_UNAUTH", "T_UNDLINE", "T_UNLIMITED",
1147 >  "T_UNRESV", "T_UNXLINE", "T_WALLOP", "T_WALLOPS", "T_WEBIRC", "TBOOL",
1148 >  "THROTTLE_COUNT", "THROTTLE_TIME", "TKLINE_EXPIRE_NOTICES", "TMASKED",
1149 >  "TRUE_NO_OPER_FLOOD", "TS_MAX_DELTA", "TS_WARN_DELTA", "TWODOTS", "TYPE",
1150 >  "UNKLINE", "USE_EGD", "USE_LOGGING", "USER", "VHOST", "VHOST6",
1151 >  "WARN_NO_CONNECT_BLOCK", "XLINE", "';'", "'}'", "'{'", "'='", "','",
1152 >  "':'", "$accept", "conf", "conf_item", "timespec_", "timespec",
1153 >  "sizespec_", "sizespec", "modules_entry", "modules_items",
1154 >  "modules_item", "modules_module", "modules_path", "serverinfo_entry",
1155 >  "serverinfo_items", "serverinfo_item", "serverinfo_ssl_client_method",
1156    "serverinfo_ssl_server_method", "client_method_types",
1157    "client_method_type_item", "server_method_types",
1158    "server_method_type_item", "serverinfo_ssl_certificate_file",
1159    "serverinfo_rsa_private_key_file", "serverinfo_ssl_dh_param_file",
1160 <  "serverinfo_ssl_cipher_list", "serverinfo_name", "serverinfo_sid",
1161 <  "serverinfo_description", "serverinfo_network_name",
1162 <  "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
1163 <  "serverinfo_max_clients", "serverinfo_hub", "admin_entry", "admin_items",
1164 <  "admin_item", "admin_name", "admin_email", "admin_description",
1165 <  "logging_entry", "logging_items", "logging_item", "logging_use_logging",
1166 <  "logging_file_entry", "$@1", "logging_file_items", "logging_file_item",
1167 <  "logging_file_name", "logging_file_size", "logging_file_type", "$@2",
1168 <  "logging_file_type_items", "logging_file_type_item", "oper_entry", "$@3",
1160 >  "serverinfo_ssl_cipher_list", "serverinfo_ssl_dh_elliptic_curve",
1161 >  "serverinfo_name", "serverinfo_sid", "serverinfo_description",
1162 >  "serverinfo_network_name", "serverinfo_network_desc", "serverinfo_vhost",
1163 >  "serverinfo_vhost6", "serverinfo_max_clients",
1164 >  "serverinfo_max_nick_length", "serverinfo_max_topic_length",
1165 >  "serverinfo_hub", "admin_entry", "admin_items", "admin_item",
1166 >  "admin_name", "admin_email", "admin_description", "motd_entry", "$@1",
1167 >  "motd_items", "motd_item", "motd_mask", "motd_file", "logging_entry",
1168 >  "logging_items", "logging_item", "logging_use_logging",
1169 >  "logging_file_entry", "$@2", "logging_file_items", "logging_file_item",
1170 >  "logging_file_name", "logging_file_size", "logging_file_type", "$@3",
1171 >  "logging_file_type_items", "logging_file_type_item", "oper_entry", "$@4",
1172    "oper_items", "oper_item", "oper_name", "oper_user", "oper_password",
1173 <  "oper_encrypted", "oper_rsa_public_key_file", "oper_class",
1174 <  "oper_umodes", "$@4", "oper_umodes_items", "oper_umodes_item",
1175 <  "oper_flags", "$@5", "oper_flags_items", "oper_flags_item",
1176 <  "class_entry", "$@6", "class_items", "class_item", "class_name",
1177 <  "class_ping_time", "class_ping_warning", "class_number_per_ip",
1178 <  "class_connectfreq", "class_max_number", "class_max_global",
1179 <  "class_max_local", "class_max_ident", "class_sendq", "class_recvq",
1180 <  "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1181 <  "class_number_per_cidr", "listen_entry", "$@7", "listen_flags", "$@8",
1182 <  "listen_flags_items", "listen_flags_item", "listen_items", "listen_item",
1183 <  "listen_port", "$@9", "port_items", "port_item", "listen_address",
1184 <  "listen_host", "auth_entry", "$@10", "auth_items", "auth_item",
1185 <  "auth_user", "auth_passwd", "auth_class", "auth_encrypted", "auth_flags",
1186 <  "$@11", "auth_flags_items", "auth_flags_item", "auth_spoof",
1187 <  "auth_redir_serv", "auth_redir_port", "resv_entry", "$@12", "resv_items",
1188 <  "resv_item", "resv_creason", "resv_channel", "resv_nick",
1189 <  "service_entry", "service_items", "service_item", "service_name",
1190 <  "shared_entry", "$@13", "shared_items", "shared_item", "shared_name",
1191 <  "shared_user", "shared_type", "$@14", "shared_types", "shared_type_item",
1192 <  "cluster_entry", "$@15", "cluster_items", "cluster_item", "cluster_name",
1193 <  "cluster_type", "$@16", "cluster_types", "cluster_type_item",
1194 <  "connect_entry", "$@17", "connect_items", "connect_item", "connect_name",
1173 >  "oper_encrypted", "oper_rsa_public_key_file",
1174 >  "oper_ssl_certificate_fingerprint", "oper_ssl_connection_required",
1175 >  "oper_class", "oper_umodes", "$@5", "oper_umodes_items",
1176 >  "oper_umodes_item", "oper_flags", "$@6", "oper_flags_items",
1177 >  "oper_flags_item", "class_entry", "$@7", "class_items", "class_item",
1178 >  "class_name", "class_ping_time", "class_number_per_ip",
1179 >  "class_connectfreq", "class_max_channels", "class_max_number",
1180 >  "class_max_global", "class_max_local", "class_max_ident", "class_sendq",
1181 >  "class_recvq", "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1182 >  "class_number_per_cidr", "class_min_idle", "class_max_idle",
1183 >  "class_flags", "$@8", "class_flags_items", "class_flags_item",
1184 >  "listen_entry", "$@9", "listen_flags", "$@10", "listen_flags_items",
1185 >  "listen_flags_item", "listen_items", "listen_item", "listen_port",
1186 >  "$@11", "port_items", "port_item", "listen_address", "listen_host",
1187 >  "auth_entry", "$@12", "auth_items", "auth_item", "auth_user",
1188 >  "auth_passwd", "auth_class", "auth_encrypted", "auth_flags", "$@13",
1189 >  "auth_flags_items", "auth_flags_item", "auth_spoof", "auth_redir_serv",
1190 >  "auth_redir_port", "resv_entry", "$@14", "resv_items", "resv_item",
1191 >  "resv_mask", "resv_reason", "resv_exempt", "service_entry",
1192 >  "service_items", "service_item", "service_name", "shared_entry", "$@15",
1193 >  "shared_items", "shared_item", "shared_name", "shared_user",
1194 >  "shared_type", "$@16", "shared_types", "shared_type_item",
1195 >  "cluster_entry", "$@17", "cluster_items", "cluster_item", "cluster_name",
1196 >  "cluster_type", "$@18", "cluster_types", "cluster_type_item",
1197 >  "connect_entry", "$@19", "connect_items", "connect_item", "connect_name",
1198    "connect_host", "connect_vhost", "connect_send_password",
1199 <  "connect_accept_password", "connect_port", "connect_aftype",
1200 <  "connect_flags", "$@18", "connect_flags_items", "connect_flags_item",
1201 <  "connect_encrypted", "connect_hub_mask", "connect_leaf_mask",
1202 <  "connect_class", "connect_ssl_cipher_list", "kill_entry", "$@19",
1203 <  "kill_type", "$@20", "kill_type_items", "kill_type_item", "kill_items",
1204 <  "kill_item", "kill_user", "kill_reason", "deny_entry", "$@21",
1199 >  "connect_accept_password", "connect_ssl_certificate_fingerprint",
1200 >  "connect_port", "connect_aftype", "connect_flags", "$@20",
1201 >  "connect_flags_items", "connect_flags_item", "connect_encrypted",
1202 >  "connect_hub_mask", "connect_leaf_mask", "connect_class",
1203 >  "connect_ssl_cipher_list", "kill_entry", "$@21", "kill_items",
1204 >  "kill_item", "kill_user", "kill_reason", "deny_entry", "$@22",
1205    "deny_items", "deny_item", "deny_ip", "deny_reason", "exempt_entry",
1206 <  "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@22",
1384 <  "gecos_flags", "$@23", "gecos_flags_items", "gecos_flags_item",
1206 >  "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@23",
1207    "gecos_items", "gecos_item", "gecos_name", "gecos_reason",
1208    "general_entry", "general_items", "general_item", "general_max_watch",
1209 <  "general_gline_enable", "general_gline_duration",
1210 <  "general_gline_request_duration", "general_gline_min_cidr",
1211 <  "general_gline_min_cidr6", "general_tkline_expire_notices",
1212 <  "general_kill_chase_time_limit", "general_hide_spoof_ips",
1213 <  "general_ignore_bogus_ts", "general_disable_remote_commands",
1209 >  "general_cycle_on_host_change", "general_gline_enable",
1210 >  "general_gline_duration", "general_gline_request_duration",
1211 >  "general_gline_min_cidr", "general_gline_min_cidr6",
1212 >  "general_tkline_expire_notices", "general_kill_chase_time_limit",
1213 >  "general_hide_spoof_ips", "general_ignore_bogus_ts",
1214    "general_failed_oper_notice", "general_anti_nick_flood",
1215    "general_max_nick_time", "general_max_nick_changes",
1216    "general_max_accept", "general_anti_spam_exit_message_time",
1217    "general_ts_warn_delta", "general_ts_max_delta",
1218    "general_havent_read_conf", "general_invisible_on_connect",
1219 <  "general_warn_no_nline", "general_stats_e_disabled",
1219 >  "general_warn_no_connect_block", "general_stats_e_disabled",
1220    "general_stats_o_oper_only", "general_stats_P_oper_only",
1221 <  "general_stats_k_oper_only", "general_stats_i_oper_only",
1222 <  "general_pace_wait", "general_caller_id_wait",
1223 <  "general_opers_bypass_callerid", "general_pace_wait_simple",
1224 <  "general_short_motd", "general_no_oper_flood",
1225 <  "general_true_no_oper_flood", "general_oper_pass_resv",
1226 <  "general_message_locale", "general_dots_in_ident", "general_max_targets",
1221 >  "general_stats_u_oper_only", "general_stats_k_oper_only",
1222 >  "general_stats_i_oper_only", "general_pace_wait",
1223 >  "general_caller_id_wait", "general_opers_bypass_callerid",
1224 >  "general_pace_wait_simple", "general_short_motd",
1225 >  "general_no_oper_flood", "general_true_no_oper_flood",
1226 >  "general_oper_pass_resv", "general_dots_in_ident", "general_max_targets",
1227    "general_use_egd", "general_egdpool_path", "general_services_name",
1228 <  "general_ping_cookie", "general_disable_auth", "general_throttle_time",
1229 <  "general_oper_umodes", "$@24", "umode_oitems", "umode_oitem",
1230 <  "general_oper_only_umodes", "$@25", "umode_items", "umode_item",
1231 <  "general_min_nonwildcard", "general_min_nonwildcard_simple",
1232 <  "general_default_floodcount", "channel_entry", "channel_items",
1233 <  "channel_item", "channel_disable_fake_channels",
1234 <  "channel_restrict_channels", "channel_knock_delay",
1235 <  "channel_knock_delay_channel", "channel_max_chans_per_user",
1236 <  "channel_max_chans_per_oper", "channel_quiet_on_ban", "channel_max_bans",
1228 >  "general_ping_cookie", "general_disable_auth", "general_throttle_count",
1229 >  "general_throttle_time", "general_oper_umodes", "$@24", "umode_oitems",
1230 >  "umode_oitem", "general_oper_only_umodes", "$@25", "umode_items",
1231 >  "umode_item", "general_min_nonwildcard",
1232 >  "general_min_nonwildcard_simple", "general_default_floodcount",
1233 >  "channel_entry", "channel_items", "channel_item",
1234 >  "channel_disable_fake_channels", "channel_invite_client_count",
1235 >  "channel_invite_client_time", "channel_knock_client_count",
1236 >  "channel_knock_client_time", "channel_knock_delay_channel",
1237 >  "channel_max_channels", "channel_max_bans",
1238    "channel_default_split_user_count", "channel_default_split_server_count",
1239    "channel_no_create_on_split", "channel_no_join_on_split",
1240    "channel_jflood_count", "channel_jflood_time", "serverhide_entry",
1241    "serverhide_items", "serverhide_item", "serverhide_flatten_links",
1242 <  "serverhide_hide_servers", "serverhide_hidden_name",
1242 >  "serverhide_disable_remote_commands", "serverhide_hide_servers",
1243 >  "serverhide_hide_services", "serverhide_hidden_name",
1244    "serverhide_links_delay", "serverhide_hidden",
1245 <  "serverhide_hide_server_ips", YY_NULL
1245 >  "serverhide_hide_server_ips", YY_NULLPTR
1246   };
1247   #endif
1248  
1249   # ifdef YYPRINT
1250 < /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1251 <   token YYLEX-NUM.  */
1250 > /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1251 >   (internal) symbol number NUM (which must be that of a token).  */
1252   static const yytype_uint16 yytoknum[] =
1253   {
1254         0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
# Line 1448 | Line 1272 | static const yytype_uint16 yytoknum[] =
1272       435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
1273       445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
1274       455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
1275 <     465,   466,   467,   468,   469,    59,   125,   123,    61,    44
1275 >     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
1276 >     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
1277 >     485,   486,    59,   125,   123,    61,    44,    58
1278   };
1279   # endif
1280  
1281 < /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1456 < static const yytype_uint16 yyr1[] =
1457 < {
1458 <       0,   220,   221,   221,   222,   222,   222,   222,   222,   222,
1459 <     222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
1460 <     222,   222,   222,   222,   222,   222,   223,   223,   224,   224,
1461 <     224,   224,   224,   224,   225,   225,   226,   226,   226,   226,
1462 <     227,   228,   228,   229,   229,   229,   230,   231,   232,   233,
1463 <     233,   234,   234,   234,   234,   234,   234,   234,   234,   234,
1464 <     234,   234,   234,   234,   234,   234,   234,   235,   236,   237,
1465 <     237,   238,   238,   239,   239,   240,   240,   241,   242,   243,
1466 <     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
1467 <     254,   255,   255,   256,   256,   256,   256,   257,   258,   259,
1468 <     260,   261,   261,   262,   262,   262,   263,   265,   264,   266,
1469 <     266,   267,   267,   267,   267,   268,   269,   269,   271,   270,
1470 <     272,   272,   273,   273,   273,   273,   273,   273,   273,   275,
1471 <     274,   276,   276,   277,   277,   277,   277,   277,   277,   277,
1472 <     277,   277,   278,   279,   280,   281,   282,   283,   285,   284,
1473 <     286,   286,   287,   287,   287,   287,   287,   287,   287,   287,
1474 <     287,   287,   287,   287,   287,   287,   287,   287,   287,   287,
1475 <     287,   287,   289,   288,   290,   290,   291,   291,   291,   291,
1476 <     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
1477 <     291,   291,   291,   291,   291,   293,   292,   294,   294,   295,
1478 <     295,   295,   295,   295,   295,   295,   295,   295,   295,   295,
1479 <     295,   295,   295,   295,   296,   297,   298,   299,   300,   301,
1480 <     302,   303,   304,   305,   306,   307,   308,   309,   311,   310,
1481 <     313,   312,   314,   314,   315,   315,   315,   316,   316,   317,
1482 <     317,   317,   317,   317,   319,   318,   320,   320,   321,   321,
1483 <     322,   323,   325,   324,   326,   326,   327,   327,   327,   327,
1484 <     327,   327,   327,   327,   327,   328,   329,   330,   331,   333,
1485 <     332,   334,   334,   335,   335,   335,   335,   335,   335,   335,
1486 <     335,   335,   336,   337,   338,   340,   339,   341,   341,   342,
1487 <     342,   342,   342,   343,   344,   345,   346,   347,   347,   348,
1488 <     348,   349,   351,   350,   352,   352,   353,   353,   353,   353,
1489 <     354,   355,   357,   356,   358,   358,   359,   359,   359,   359,
1490 <     359,   359,   359,   359,   359,   359,   361,   360,   362,   362,
1491 <     363,   363,   363,   364,   366,   365,   367,   367,   368,   368,
1492 <     368,   368,   368,   368,   368,   368,   368,   368,   370,   369,
1493 <     371,   371,   372,   372,   372,   372,   372,   372,   372,   372,
1494 <     372,   372,   372,   372,   372,   372,   373,   374,   375,   376,
1495 <     377,   378,   379,   379,   381,   380,   382,   382,   383,   383,
1496 <     384,   385,   386,   387,   388,   390,   389,   392,   391,   393,
1497 <     393,   394,   395,   395,   396,   396,   396,   396,   397,   398,
1498 <     400,   399,   401,   401,   402,   402,   402,   403,   404,   405,
1499 <     406,   406,   407,   407,   408,   410,   409,   412,   411,   413,
1500 <     413,   414,   415,   415,   416,   416,   416,   416,   417,   418,
1501 <     419,   420,   420,   421,   421,   421,   421,   421,   421,   421,
1502 <     421,   421,   421,   421,   421,   421,   421,   421,   421,   421,
1503 <     421,   421,   421,   421,   421,   421,   421,   421,   421,   421,
1504 <     421,   421,   421,   421,   421,   421,   421,   421,   421,   421,
1505 <     421,   421,   421,   421,   421,   421,   421,   421,   421,   421,
1506 <     421,   421,   421,   422,   423,   424,   425,   426,   427,   428,
1507 <     429,   430,   431,   432,   433,   434,   435,   436,   437,   438,
1508 <     439,   440,   441,   442,   443,   444,   445,   446,   447,   447,
1509 <     448,   448,   449,   450,   451,   452,   453,   454,   455,   456,
1510 <     457,   458,   459,   460,   461,   462,   463,   464,   465,   467,
1511 <     466,   468,   468,   469,   469,   469,   469,   469,   469,   469,
1512 <     469,   469,   469,   469,   469,   469,   469,   469,   469,   469,
1513 <     469,   469,   469,   471,   470,   472,   472,   473,   473,   473,
1514 <     473,   473,   473,   473,   473,   473,   473,   473,   473,   473,
1515 <     473,   473,   473,   473,   473,   473,   473,   474,   475,   476,
1516 <     477,   478,   478,   479,   479,   479,   479,   479,   479,   479,
1517 <     479,   479,   479,   479,   479,   479,   479,   479,   480,   481,
1518 <     482,   483,   484,   485,   486,   487,   488,   489,   490,   491,
1519 <     492,   493,   494,   495,   495,   496,   496,   496,   496,   496,
1520 <     496,   496,   497,   498,   499,   500,   501,   502
1521 < };
1281 > #define YYPACT_NINF -880
1282  
1283 < /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
1284 < static const yytype_uint8 yyr2[] =
1283 > #define yypact_value_is_default(Yystate) \
1284 >  (!!((Yystate) == (-880)))
1285 >
1286 > #define YYTABLE_NINF -126
1287 >
1288 > #define yytable_value_is_error(Yytable_value) \
1289 >  0
1290 >
1291 >  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1292 >     STATE-NUM.  */
1293 > static const yytype_int16 yypact[] =
1294   {
1295 <       0,     2,     0,     2,     1,     1,     1,     1,     1,     1,
1296 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1297 <       1,     1,     1,     1,     2,     2,     0,     1,     2,     3,
1298 <       3,     3,     3,     3,     0,     1,     2,     3,     3,     3,
1299 <       5,     2,     1,     1,     1,     2,     4,     4,     5,     2,
1300 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1301 <       1,     1,     1,     1,     1,     1,     2,     4,     4,     3,
1302 <       1,     1,     1,     3,     1,     1,     1,     4,     4,     4,
1303 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1304 <       5,     2,     1,     1,     1,     1,     2,     4,     4,     4,
1305 <       5,     2,     1,     1,     1,     2,     4,     0,     6,     2,
1306 <       1,     1,     1,     1,     2,     4,     4,     4,     0,     5,
1307 <       3,     1,     1,     1,     1,     1,     1,     1,     1,     0,
1308 <       6,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1309 <       1,     2,     4,     4,     4,     4,     4,     4,     0,     5,
1310 <       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1311 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1312 <       1,     1,     0,     5,     3,     1,     1,     1,     1,     1,
1313 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1314 <       1,     1,     1,     1,     1,     0,     6,     2,     1,     1,
1315 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1316 <       1,     1,     1,     2,     4,     4,     4,     4,     4,     4,
1317 <       4,     4,     4,     4,     4,     4,     4,     4,     0,     6,
1318 <       0,     5,     3,     1,     1,     1,     1,     2,     1,     1,
1319 <       1,     1,     1,     2,     0,     5,     3,     1,     1,     3,
1320 <       4,     4,     0,     6,     2,     1,     1,     1,     1,     1,
1321 <       1,     1,     1,     1,     2,     4,     4,     4,     4,     0,
1322 <       5,     3,     1,     1,     1,     1,     1,     1,     1,     1,
1323 <       1,     1,     4,     4,     4,     0,     6,     2,     1,     1,
1324 <       1,     1,     2,     4,     4,     4,     5,     2,     1,     1,
1325 <       1,     4,     0,     6,     2,     1,     1,     1,     1,     2,
1326 <       4,     4,     0,     5,     3,     1,     1,     1,     1,     1,
1327 <       1,     1,     1,     1,     1,     1,     0,     6,     2,     1,
1328 <       1,     1,     2,     4,     0,     5,     3,     1,     1,     1,
1329 <       1,     1,     1,     1,     1,     1,     1,     1,     0,     6,
1330 <       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1331 <       1,     1,     1,     1,     1,     2,     4,     4,     4,     4,
1332 <       4,     4,     4,     4,     0,     5,     3,     1,     1,     1,
1333 <       4,     4,     4,     4,     4,     0,     6,     0,     5,     3,
1334 <       1,     1,     2,     1,     1,     1,     1,     1,     4,     4,
1335 <       0,     6,     2,     1,     1,     1,     1,     4,     4,     5,
1336 <       2,     1,     1,     1,     4,     0,     6,     0,     5,     3,
1337 <       1,     1,     2,     1,     1,     1,     1,     1,     4,     4,
1338 <       5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1339 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1340 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1341 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1342 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1343 <       1,     1,     1,     4,     4,     4,     4,     4,     4,     4,
1344 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1345 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1346 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1347 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     0,
1348 <       5,     3,     1,     1,     1,     1,     1,     1,     1,     1,
1349 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1350 <       1,     1,     1,     0,     5,     3,     1,     1,     1,     1,
1351 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1352 <       1,     1,     1,     1,     1,     1,     1,     4,     4,     4,
1353 <       5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1354 <       1,     1,     1,     1,     1,     1,     1,     1,     4,     4,
1355 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1356 <       4,     4,     5,     2,     1,     1,     1,     1,     1,     1,
1357 <       1,     1,     4,     4,     4,     4,     4,     4
1295 >    -880,   707,  -880,  -177,  -165,  -159,  -880,  -880,  -880,  -150,
1296 >    -880,  -147,  -880,  -880,  -880,   -87,  -880,  -880,  -880,   -81,
1297 >     -74,  -880,   -62,   -55,  -880,  -880,  -880,  -880,  -880,  -880,
1298 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1299 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,    25,
1300 >     965,   -43,   -30,   -24,   125,   -15,   418,    -8,    51,    53,
1301 >      50,    72,    75,    77,   823,   464,    83,   118,    22,    89,
1302 >      -3,   -41,    68,    94,    12,  -880,  -880,  -880,  -880,  -880,
1303 >      96,   102,   106,   110,   112,   113,   114,   115,   117,   121,
1304 >     124,   126,   127,   134,     2,  -880,  -880,  -880,  -880,  -880,
1305 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1306 >     667,   612,    60,  -880,   135,    28,  -880,  -880,    26,  -880,
1307 >     137,   142,   143,   145,   146,   147,   149,   150,   151,   153,
1308 >     154,   156,   158,   159,   160,   163,   165,   166,   167,   168,
1309 >     169,   170,   172,   173,   175,   176,   178,  -880,   179,  -880,
1310 >     181,   187,   192,   193,   194,   196,   197,   198,   199,   201,
1311 >     202,   206,   209,   212,   215,   218,   220,   221,   222,   223,
1312 >      61,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1313 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1314 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1315 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1316 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1317 >    -880,  -880,   373,    11,   232,   119,   226,   234,    14,  -880,
1318 >    -880,  -880,     9,   450,   133,  -880,   235,   236,   237,   242,
1319 >     243,   246,   247,   249,     4,  -880,  -880,  -880,  -880,  -880,
1320 >    -880,  -880,  -880,  -880,   128,   250,   251,   252,   253,   256,
1321 >     257,   258,   259,   261,   263,   264,   266,   267,   270,   271,
1322 >     273,   275,   277,   138,  -880,  -880,  -880,  -880,  -880,  -880,
1323 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1324 >    -880,  -880,  -880,    30,   136,   279,    37,  -880,  -880,  -880,
1325 >     301,  -880,   283,    39,  -880,  -880,    46,  -880,   285,   290,
1326 >     392,   141,  -880,   408,   409,   308,   414,   415,   419,   415,
1327 >     424,   415,   415,   428,   429,   339,   341,   324,  -880,   325,
1328 >     326,   328,   329,  -880,   332,   336,   338,   340,   349,   350,
1329 >     351,   352,   354,   355,   356,   358,   359,   240,  -880,  -880,
1330 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1331 >    -880,  -880,  -880,  -880,  -880,  -880,   327,   360,   364,   367,
1332 >     368,   369,   372,  -880,   375,   376,   377,   379,   381,   384,
1333 >     385,   297,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1334 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,   390,   391,
1335 >      15,  -880,  -880,  -880,   433,   342,  -880,  -880,   393,   395,
1336 >      33,  -880,  -880,  -880,   362,   415,   415,   394,   515,   417,
1337 >     520,   509,   426,   415,   427,   530,   532,   415,   534,   435,
1338 >     436,   437,   415,   542,   544,   415,   546,   550,   551,   555,
1339 >     447,   434,   457,   438,   460,   415,   415,   461,   462,   466,
1340 >    -197,  -196,   467,   470,   473,   561,   577,   415,   477,   480,
1341 >     415,   415,   481,   482,   468,  -880,   471,   463,   469,  -880,
1342 >     474,   484,   485,   487,   488,   182,  -880,  -880,  -880,  -880,
1343 >    -880,  -880,  -880,  -880,  -880,  -880,   491,   492,    38,  -880,
1344 >    -880,  -880,   483,   493,   494,  -880,   495,  -880,    31,  -880,
1345 >    -880,  -880,  -880,  -880,   572,   578,   501,  -880,   504,   505,
1346 >     506,    18,  -880,  -880,  -880,   507,   508,   512,  -880,   513,
1347 >     522,   526,   529,   533,  -880,   535,   241,  -880,  -880,  -880,
1348 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,   518,   536,
1349 >     539,   540,    35,  -880,  -880,  -880,  -880,   498,   502,   503,
1350 >     617,   562,   563,   565,   415,   528,  -880,  -880,   638,   568,
1351 >     656,   672,   673,   663,   664,   674,   676,   677,   678,   679,
1352 >     688,   683,  -140,   116,   684,   686,   583,  -880,   584,   582,
1353 >    -880,    34,  -880,  -880,  -880,  -880,   605,   589,  -880,   592,
1354 >     700,   596,  -880,   597,   595,  -880,   598,    27,  -880,  -880,
1355 >    -880,  -880,   599,   600,   602,  -880,   603,   604,   606,   607,
1356 >     654,   609,   611,   613,   616,   618,   619,   625,   626,   627,
1357 >     630,  -880,  -880,   725,   751,   415,   614,   752,   753,   754,
1358 >     415,   755,   757,   415,   743,   759,   762,   415,   763,   763,
1359 >     648,  -880,  -880,   756,   155,   758,   668,   760,   761,   646,
1360 >     764,   765,   772,   766,   767,   768,   769,   658,  -880,   773,
1361 >     779,   666,  -880,   680,  -880,   782,   787,   685,  -880,   687,
1362 >     691,   693,   694,   695,   696,   698,   699,   704,   708,   714,
1363 >     718,   719,   721,   722,   727,   728,   729,   730,   732,   733,
1364 >     738,   742,   748,   774,   775,   776,   805,   777,   737,   778,
1365 >     780,   781,   783,   785,   786,   788,   789,   790,   791,   792,
1366 >     793,   794,   795,   798,   799,   800,   801,   804,   806,   807,
1367 >     811,  -880,  -880,   830,   702,   651,   857,   808,   858,   864,
1368 >     867,   812,  -880,   868,   869,   813,  -880,  -880,   871,   872,
1369 >     697,   888,   814,  -880,   815,   818,  -880,  -880,   877,   878,
1370 >     819,  -880,  -880,   887,   838,   784,   910,   926,   927,   928,
1371 >     842,   822,   931,   827,  -880,  -880,   933,   934,   935,   831,
1372 >    -880,   832,   833,   834,   835,   836,   837,   839,   840,  -880,
1373 >     843,   844,   845,   846,   847,   848,   849,   850,   851,   852,
1374 >     853,   854,   855,   856,  -880,  -880,  -190,  -880,  -880,  -880,
1375 >    -187,  -880,   859,   860,  -880,  -880,   943,   861,   862,  -880,
1376 >     863,  -880,    93,   865,  -880,  -880,   962,   866,   963,   870,
1377 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,   415,   415,
1378 >     415,   415,   415,   415,   415,  -880,  -880,  -880,  -880,  -880,
1379 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,   873,   874,   875,
1380 >     -33,   876,   879,   880,   881,   882,   883,   884,   885,   886,
1381 >     889,   890,   177,   891,   892,  -880,   893,   894,   895,   896,
1382 >     897,   898,   899,     1,   900,   901,   902,   903,   904,   905,
1383 >     906,  -880,   907,   908,  -880,  -880,   909,   911,  -880,  -880,
1384 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1385 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1386 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1387 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1388 >    -880,  -880,  -880,  -880,  -880,  -880,  -184,  -880,  -880,  -880,
1389 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1390 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1391 >    -880,   -67,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1392 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1393 >    -880,  -880,  -880,  -880,  -880,   912,   913,   549,   914,   915,
1394 >     916,   917,   918,  -880,   919,   920,  -880,   921,   922,   -38,
1395 >     936,   923,  -880,  -880,  -880,  -880,   924,   925,  -880,   929,
1396 >     930,   525,   932,   937,   938,   939,   940,   771,   941,  -880,
1397 >     942,   944,   945,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1398 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1399 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -140,  -880,   116,
1400 >    -880,  -880,   946,   211,  -880,  -880,   947,   948,   949,  -880,
1401 >      13,  -880,  -880,  -880,  -880,  -880,   950,   637,   953,  -880,
1402 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1403 >    -880,  -880,   -66,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1404 >    -880,  -880,  -880,  -880,  -880,   763,   763,   763,  -880,  -880,
1405 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1406 >    -880,   -40,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1407 >    -880,  -880,  -880,  -880,  -880,   805,  -880,   737,  -880,  -880,
1408 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1409 >     -34,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1410 >    -880,  -880,  -880,  -880,   -31,  -880,   981,   888,   954,  -880,
1411 >    -880,  -880,  -880,  -880,   662,  -880,  -880,   951,  -880,  -880,
1412 >    -880,  -880,   952,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1413 >    -880,  -880,  -880,   -29,  -880,  -880,  -880,  -880,  -880,  -880,
1414 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1415 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1416 >    -880,  -880,   -23,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1417 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1418 >    -880,    -5,  -880,  -880,   971,  -104,   955,   959,  -880,  -880,
1419 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1420 >      47,  -880,  -880,  -880,   -33,  -880,  -880,  -880,  -880,     1,
1421 >    -880,  -880,  -880,   549,  -880,   -38,  -880,  -880,  -880,   966,
1422 >     967,   970,  -880,   525,  -880,   771,  -880,   211,   960,   961,
1423 >     964,     3,  -880,  -880,   637,  -880,  -880,  -880,  -880,  -880,
1424 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1425 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,    69,  -880,  -880,
1426 >    -880,     3,  -880
1427   };
1428  
1429 < /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
1430 <   Performed when YYTABLE doesn't specify something else to do.  Zero
1431 <   means the default is an error.  */
1429 >  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1430 >     Performed when YYTABLE does not specify something else to do.  Zero
1431 >     means the default is an error.  */
1432   static const yytype_uint16 yydefact[] =
1433   {
1434 <       2,     0,     1,     0,     0,     0,   195,   348,   400,     0,
1435 <     415,     0,   252,   385,   228,     0,     0,   129,   285,     0,
1436 <       0,   302,   326,     0,     3,    23,    11,     4,     5,     6,
1437 <       8,     9,    10,    13,    14,    15,    16,    17,    18,    19,
1438 <      20,    22,    21,     7,    12,    24,    25,     0,     0,     0,
1434 >       2,     0,     1,     0,     0,     0,   225,   390,   438,     0,
1435 >     453,     0,   293,   429,   269,     0,   109,   149,   327,     0,
1436 >       0,   368,     0,     0,   344,     3,    23,    11,     4,    24,
1437 >       5,     6,     8,     9,    10,    13,    14,    15,    16,    17,
1438 >      18,    19,    20,    22,    21,     7,    12,    25,    26,     0,
1439         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1440         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1441 <       0,     0,    92,    93,    95,    94,   597,     0,     0,     0,
1441 >       0,     0,     0,     0,     0,   101,   102,   104,   103,   633,
1442         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1443 <       0,     0,   582,   596,   592,   584,   585,   586,   587,   588,
1444 <     583,   589,   590,   591,   593,   594,   595,     0,     0,     0,
1445 <     413,     0,     0,   411,   412,     0,   482,     0,     0,     0,
1443 >       0,     0,     0,     0,     0,   618,   632,   620,   621,   622,
1444 >     623,   624,   625,   619,   626,   627,   628,   629,   630,   631,
1445 >       0,     0,     0,   451,     0,     0,   449,   450,     0,   515,
1446         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1447         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1448 <       0,     0,     0,     0,     0,     0,   553,     0,   529,     0,
1448 >       0,     0,     0,     0,     0,     0,     0,   589,     0,   563,
1449         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1612       0,     0,     0,     0,     0,     0,     0,   432,   480,   474,
1613     475,   476,   477,   478,   473,   443,   433,   434,   468,   435,
1614     436,   437,   438,   439,   440,   441,   442,   470,   444,   445,
1615     479,   447,   452,   448,   450,   449,   463,   464,   451,   453,
1616     454,   455,   456,   457,   446,   459,   460,   461,   481,   471,
1617     472,   469,   462,   458,   466,   467,   465,     0,     0,     0,
1618       0,     0,     0,   102,   103,   104,     0,     0,     0,     0,
1619       0,    42,    43,    44,     0,     0,   621,     0,     0,     0,
1620       0,     0,     0,     0,   614,   615,   616,   619,   617,   618,
1621     620,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1622       0,     0,     0,     0,     0,     0,     0,     0,    50,    63,
1623      64,    62,    59,    58,    65,    51,    61,    54,    55,    56,
1624      52,    60,    57,    53,     0,     0,   300,     0,     0,   298,
1625     299,    96,     0,     0,     0,     0,    91,     0,     0,     0,
1450         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1451 <       0,     0,   581,     0,     0,     0,     0,     0,     0,     0,
1452 <       0,     0,     0,     0,     0,     0,     0,     0,     0,   198,
1453 <     199,   202,   203,   205,   206,   207,   208,   209,   210,   211,
1454 <     212,   200,   201,   204,     0,     0,     0,     0,     0,   374,
1455 <       0,     0,     0,     0,     0,     0,     0,     0,     0,   351,
1456 <     352,   353,   354,   355,   356,   358,   357,   360,   364,   361,
1457 <     362,   363,   359,   406,     0,     0,     0,   403,   404,   405,
1458 <       0,     0,   410,   427,     0,     0,   417,   426,     0,   423,
1459 <     424,   425,     0,     0,     0,     0,     0,     0,     0,     0,
1451 >       0,   464,   512,   514,   506,   507,   508,   509,   510,   505,
1452 >     475,   465,   466,   467,   468,   469,   470,   471,   472,   473,
1453 >     474,   502,   476,   477,   511,   479,   484,   485,   480,   482,
1454 >     481,   495,   496,   483,   486,   487,   488,   489,   478,   491,
1455 >     492,   493,   513,   503,   504,   500,   501,   494,   490,   498,
1456 >     499,   497,     0,     0,     0,     0,     0,     0,     0,    45,
1457 >      46,    47,     0,     0,     0,   659,     0,     0,     0,     0,
1458 >       0,     0,     0,     0,     0,   650,   651,   652,   653,   654,
1459 >     657,   655,   656,   658,     0,     0,     0,     0,     0,     0,
1460         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1461 +       0,     0,     0,     0,    53,    69,    70,    68,    65,    63,
1462 +      71,    64,    54,    67,    57,    58,    59,    55,    66,    60,
1463 +      61,    62,    56,     0,     0,     0,     0,   120,   121,   122,
1464 +       0,   342,     0,     0,   340,   341,     0,   105,     0,     0,
1465 +       0,     0,   100,     0,     0,     0,     0,     0,     0,     0,
1466 +       0,     0,     0,     0,     0,     0,     0,     0,   617,     0,
1467 +       0,     0,     0,   263,     0,     0,     0,     0,     0,     0,
1468 +       0,     0,     0,     0,     0,     0,     0,     0,   228,   229,
1469 +     232,   234,   235,   236,   237,   238,   239,   240,   241,   242,
1470 +     230,   231,   233,   243,   244,   245,     0,     0,     0,     0,
1471 +       0,     0,     0,   418,     0,     0,     0,     0,     0,     0,
1472 +       0,     0,   393,   394,   395,   396,   397,   398,   399,   401,
1473 +     400,   403,   407,   404,   405,   406,   402,   444,     0,     0,
1474 +       0,   441,   442,   443,     0,     0,   448,   459,     0,     0,
1475 +       0,   456,   457,   458,     0,     0,     0,     0,     0,     0,
1476         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1477         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1478         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1640       0,     0,   431,     0,     0,     0,   269,     0,     0,     0,
1641       0,     0,     0,   255,   256,   257,   258,   263,   259,   260,
1642     261,   262,   397,     0,   387,     0,   396,     0,   393,   394,
1643     395,     0,   230,     0,     0,     0,   240,     0,   238,   239,
1644     241,   242,   105,     0,     0,   101,     0,    45,     0,     0,
1645       0,    41,     0,     0,     0,   172,     0,     0,     0,   148,
1646       0,     0,   132,   133,   134,   135,   138,   139,   137,   136,
1647     140,     0,     0,     0,     0,     0,   288,   289,   290,   291,
1648       0,     0,     0,     0,     0,     0,     0,   613,    66,     0,
1479         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1480 <       0,     0,     0,     0,     0,    49,     0,     0,   312,     0,
1481 <       0,   305,   306,   307,   308,     0,     0,   334,     0,   329,
1482 <     330,   331,     0,     0,   297,     0,     0,     0,    90,     0,
1483 <       0,     0,    26,     0,     0,     0,     0,     0,     0,     0,
1484 <       0,     0,     0,     0,   580,   213,     0,     0,     0,     0,
1480 >       0,     0,     0,     0,     0,   463,     0,     0,     0,   310,
1481 >       0,     0,     0,     0,     0,     0,   296,   297,   298,   299,
1482 >     304,   300,   301,   302,   303,   435,     0,     0,     0,   432,
1483 >     433,   434,     0,     0,     0,   271,     0,   281,     0,   279,
1484 >     280,   282,   283,    48,     0,     0,     0,    44,     0,     0,
1485 >       0,     0,   112,   113,   114,     0,     0,     0,   198,     0,
1486 >       0,     0,     0,     0,   172,     0,     0,   152,   153,   154,
1487 >     155,   158,   159,   160,   161,   157,   156,   162,     0,     0,
1488 >       0,     0,     0,   330,   331,   332,   333,     0,     0,     0,
1489 >       0,     0,     0,     0,     0,     0,   649,    72,     0,     0,
1490         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1491 <       0,   197,   365,     0,     0,     0,     0,     0,     0,     0,
1492 <       0,     0,     0,     0,     0,     0,     0,   350,     0,     0,
1493 <       0,   402,     0,   409,     0,     0,     0,     0,   422,     0,
1491 >       0,     0,     0,     0,     0,     0,     0,    52,     0,     0,
1492 >     376,     0,   371,   372,   373,   123,     0,     0,   119,     0,
1493 >       0,     0,   339,     0,     0,   354,     0,     0,   347,   348,
1494 >     349,   350,     0,     0,     0,    99,     0,     0,     0,     0,
1495 >      27,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1496 >       0,   616,   246,     0,     0,     0,     0,     0,     0,     0,
1497         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1498 +       0,   227,   408,     0,     0,     0,     0,     0,     0,     0,
1499 +       0,     0,     0,     0,     0,     0,     0,     0,   392,     0,
1500 +       0,     0,   440,     0,   447,     0,     0,     0,   455,     0,
1501         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1502         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1503         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1504         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1664     430,   264,     0,     0,     0,     0,     0,     0,     0,     0,
1665       0,   254,     0,     0,     0,     0,   392,   243,     0,     0,
1666       0,     0,     0,   237,     0,   100,     0,     0,     0,    40,
1667     141,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1668     131,   292,     0,     0,     0,     0,   287,     0,     0,     0,
1669       0,     0,     0,   612,     0,     0,     0,     0,     0,     0,
1670       0,     0,    71,    72,     0,    70,    75,    76,     0,    74,
1671       0,     0,     0,     0,     0,    48,   309,     0,     0,     0,
1672       0,   304,   332,     0,     0,     0,   328,     0,   296,    99,
1673      98,    97,   607,   606,   598,    26,    26,    26,    26,    26,
1674      28,    27,   600,   601,   605,   603,   602,   608,   609,   610,
1675     611,   604,   599,     0,     0,     0,     0,     0,     0,     0,
1676       0,     0,     0,     0,     0,    34,     0,     0,   196,     0,
1505         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1506 <       0,     0,     0,   349,     0,     0,   401,   414,     0,     0,
1507 <       0,   416,   495,   499,   513,   579,   527,   493,   521,   524,
1508 <     494,   485,   484,   486,   487,   488,   502,   491,   492,   503,
1509 <     490,   498,   497,   496,   522,   483,   520,   577,   578,   517,
1510 <     514,   564,   557,   574,   575,   558,   559,   560,   561,   569,
1511 <     562,   572,   576,   565,   570,   566,   571,   563,   568,   567,
1512 <     573,     0,   556,   519,   539,   533,   550,   551,   534,   535,
1513 <     536,   537,   545,   538,   548,   552,   541,   546,   542,   547,
1514 <     540,   544,   543,   549,     0,   532,   512,   515,   526,   489,
1515 <     516,   505,   510,   511,   508,   509,   506,   507,   501,   500,
1516 <     525,   528,   518,   523,   504,     0,     0,     0,     0,     0,
1517 <       0,     0,     0,   253,     0,     0,     0,   386,     0,     0,
1518 <       0,   248,   244,   247,   229,   106,     0,     0,   118,     0,
1519 <       0,   110,   111,   113,   112,    46,    47,     0,     0,     0,
1520 <       0,     0,     0,     0,     0,   130,     0,     0,     0,   286,
1521 <     622,   626,   624,   627,   623,   625,    83,    89,    81,    85,
1522 <      84,    78,    77,    79,    67,     0,    68,     0,    82,    80,
1523 <      88,    86,    87,     0,     0,     0,   303,     0,     0,   327,
1524 <     301,    29,    30,    31,    32,    33,   225,   226,   218,   220,
1525 <     222,   221,   219,   214,   227,   217,   215,   216,    34,    34,
1526 <      34,    36,    35,   223,   224,   370,   372,   373,   383,   380,
1527 <     378,   379,     0,   377,   367,   381,   382,   366,   371,   369,
1528 <     384,   368,   407,   408,   428,   429,   421,     0,   420,   554,
1529 <       0,   530,     0,   267,   268,   277,   274,   279,   276,   275,
1530 <     281,   278,   280,   273,     0,   272,   266,   284,   283,   282,
1531 <     265,   399,   391,     0,   390,   398,   235,   236,   234,     0,
1532 <     233,   251,   250,     0,     0,     0,   114,     0,     0,     0,
1533 <       0,   109,   147,   145,   187,   184,   183,   176,   178,   194,
1534 <     188,   191,   186,   177,   192,   180,   189,   193,   181,   190,
1535 <     185,   179,   182,     0,   175,   142,   144,   146,   158,   152,
1536 <     169,   170,   153,   154,   155,   156,   164,   157,   167,   171,
1537 <     160,   165,   161,   166,   159,   163,   162,   168,     0,   151,
1538 <     143,   294,   295,   293,    69,    73,   310,   316,   322,   325,
1539 <     318,   324,   319,   323,   321,   317,   320,     0,   315,   311,
1540 <     333,   338,   344,   347,   340,   346,   341,   345,   343,   339,
1541 <     342,     0,   337,    37,    38,    39,   375,     0,   418,     0,
1542 <     555,   531,   270,     0,   388,     0,   231,     0,   249,   246,
1543 <     245,     0,     0,     0,     0,   108,   173,     0,   149,     0,
1544 <     313,     0,   335,     0,   376,   419,   271,   389,   232,   115,
1545 <     124,   127,   126,   123,   128,   125,   122,     0,   121,   117,
1546 <     116,   174,   150,   314,   336,   119,     0,   120
1547 < };
1548 <
1549 < /* YYDEFGOTO[NTERM-NUM].  */
1550 < static const yytype_int16 yydefgoto[] =
1551 < {
1552 <      -1,     1,    24,   780,   781,  1021,  1022,    25,   230,   231,
1553 <     232,   233,    26,   267,   268,   269,   270,   744,   745,   748,
1554 <     749,   271,   272,   273,   274,   275,   276,   277,   278,   279,
1555 <     280,   281,   282,   283,    27,    71,    72,    73,    74,    75,
1556 <      28,   222,   223,   224,   225,   226,   950,   951,   952,   953,
1557 <     954,  1088,  1217,  1218,    29,    60,   501,   502,   503,   504,
1558 <     505,   506,   507,   508,   509,   717,  1138,  1139,   510,   713,
1559 <    1113,  1114,    30,    49,   328,   329,   330,   331,   332,   333,
1560 <     334,   335,   336,   337,   338,   339,   340,   341,   342,   343,
1561 <      31,    57,   476,   698,  1079,  1080,   477,   478,   479,  1085,
1562 <     942,   943,   480,   481,    32,    55,   452,   453,   454,   455,
1563 <     456,   457,   458,   684,  1064,  1065,   459,   460,   461,    33,
1564 <      61,   515,   516,   517,   518,   519,    34,   288,   289,   290,
1565 <      35,    64,   550,   551,   552,   553,   554,   758,  1157,  1158,
1738 <      36,    65,   558,   559,   560,   561,   764,  1171,  1172,    37,
1739 <      50,   358,   359,   360,   361,   362,   363,   364,   365,   366,
1740 <     367,   607,  1032,  1033,   368,   369,   370,   371,   372,    38,
1741 <      56,   466,   693,  1073,  1074,   467,   468,   469,   470,    39,
1742 <      51,   376,   377,   378,   379,    40,   112,   113,   114,    41,
1743 <      53,   387,   626,  1047,  1048,   388,   389,   390,   391,    42,
1744 <     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
1745 <     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
1746 <     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
1747 <     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
1748 <     206,   207,   208,   209,   210,   211,   212,   423,   904,   905,
1749 <     213,   421,   881,   882,   214,   215,   216,    43,    91,    92,
1750 <      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
1751 <     103,   104,   105,   106,    44,   243,   244,   245,   246,   247,
1752 <     248,   249,   250
1506 >       0,   462,   305,     0,     0,     0,     0,     0,     0,     0,
1507 >       0,     0,   295,     0,     0,     0,   431,   284,     0,     0,
1508 >       0,     0,     0,   278,     0,     0,    43,   115,     0,     0,
1509 >       0,   111,   163,     0,     0,     0,     0,     0,     0,     0,
1510 >       0,     0,     0,     0,   151,   334,     0,     0,     0,     0,
1511 >     329,     0,     0,     0,     0,     0,     0,     0,     0,   648,
1512 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1513 >       0,     0,     0,     0,    77,    78,     0,    76,    81,    82,
1514 >       0,    80,     0,     0,    51,   374,     0,     0,     0,   370,
1515 >       0,   118,     0,     0,   338,   351,     0,     0,     0,     0,
1516 >     346,   108,   107,   106,   643,   642,   634,   635,    27,    27,
1517 >      27,    27,    27,    27,    27,    29,    28,   636,   646,   647,
1518 >     637,   638,   639,   641,   640,   644,   645,     0,     0,     0,
1519 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1520 >       0,     0,    37,     0,     0,   226,     0,     0,     0,     0,
1521 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1522 >       0,   391,     0,     0,   439,   452,     0,     0,   454,   528,
1523 >     532,   547,   517,   615,   560,   554,   557,   527,   519,   518,
1524 >     521,   522,   520,   535,   525,   526,   536,   524,   531,   530,
1525 >     529,   555,   516,   613,   614,   551,   599,   593,   609,   594,
1526 >     595,   596,   604,   612,   597,   606,   610,   600,   611,   601,
1527 >     605,   598,   608,   603,   602,   607,     0,   592,   553,   572,
1528 >     573,   574,   567,   585,   568,   569,   570,   580,   588,   571,
1529 >     582,   586,   576,   587,   577,   581,   575,   584,   579,   578,
1530 >     583,     0,   566,   548,   546,   549,   559,   550,   538,   544,
1531 >     545,   542,   543,   539,   540,   541,   558,   561,   562,   523,
1532 >     552,   534,   533,   556,   537,     0,     0,     0,     0,     0,
1533 >       0,     0,     0,   294,     0,     0,   430,     0,     0,     0,
1534 >     289,   285,   288,   270,    49,    50,     0,     0,   110,     0,
1535 >       0,     0,     0,     0,     0,     0,     0,     0,     0,   150,
1536 >       0,     0,     0,   328,   661,   660,   666,   664,   667,   662,
1537 >     663,   665,    90,    98,    89,    96,    97,    88,    92,    91,
1538 >      84,    83,    87,    85,    95,    86,    73,     0,    74,     0,
1539 >      93,    94,     0,     0,   369,   124,     0,     0,     0,   136,
1540 >       0,   128,   129,   131,   130,   343,     0,     0,     0,   345,
1541 >      30,    31,    32,    33,    34,    35,    36,   258,   259,   250,
1542 >     268,   267,     0,   266,   251,   253,   255,   262,   254,   252,
1543 >     261,   247,   260,   249,   248,    37,    37,    37,    39,    38,
1544 >     256,   257,   413,   416,   417,   427,   424,   410,   425,   422,
1545 >     423,     0,   421,   426,   409,   415,   412,   414,   428,   411,
1546 >     445,   446,   460,   461,   590,     0,   564,     0,   308,   309,
1547 >     318,   315,   320,   316,   317,   323,   319,   321,   314,   322,
1548 >       0,   313,   307,   326,   325,   324,   306,   437,   436,   292,
1549 >     291,   276,   277,   275,     0,   274,     0,     0,     0,   116,
1550 >     117,   171,   167,   218,   205,   215,   214,   203,   208,   224,
1551 >     217,   222,   207,   210,   219,   221,   216,   223,   211,   213,
1552 >     220,   209,   212,     0,   201,   164,   166,   168,   169,   170,
1553 >     181,   182,   183,   176,   194,   177,   178,   179,   189,   197,
1554 >     180,   191,   195,   185,   196,   186,   190,   184,   193,   188,
1555 >     187,   192,     0,   175,   165,   337,   335,   336,    75,    79,
1556 >     375,   380,   386,   389,   382,   388,   383,   387,   385,   381,
1557 >     384,     0,   379,   132,     0,     0,     0,     0,   127,   352,
1558 >     358,   364,   367,   360,   366,   361,   365,   363,   359,   362,
1559 >       0,   357,   353,   264,     0,    40,    41,    42,   419,     0,
1560 >     591,   565,   311,     0,   272,     0,   290,   287,   286,     0,
1561 >       0,     0,   199,     0,   173,     0,   377,     0,     0,     0,
1562 >       0,     0,   126,   355,     0,   265,   420,   312,   273,   204,
1563 >     202,   206,   200,   174,   378,   133,   135,   134,   142,   147,
1564 >     146,   141,   144,   148,   145,   140,   143,     0,   139,   356,
1565 >     137,     0,   138
1566   };
1567  
1568 < /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1569 <   STATE-NUM.  */
1757 < #define YYPACT_NINF -744
1758 < static const yytype_int16 yypact[] =
1568 >  /* YYPGOTO[NTERM-NUM].  */
1569 > static const yytype_int16 yypgoto[] =
1570   {
1571 <    -744,   610,  -744,  -209,  -187,  -179,  -744,  -744,  -744,  -176,
1572 <    -744,  -171,  -744,  -744,  -744,  -166,  -164,  -744,  -744,  -139,
1573 <    -136,  -744,  -744,  -131,  -744,  -744,  -744,  -744,  -744,  -744,
1574 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1575 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,    61,   807,  -126,
1576 <    -104,   -84,    16,   -79,   382,   -77,   -63,   -60,     7,    21,
1577 <     -49,   -40,   638,   381,   -26,    52,    25,  -152,    62,    85,
1578 <      86,    18,  -744,  -744,  -744,  -744,  -744,    88,    89,    93,
1579 <      94,    96,   101,   108,   112,   118,   119,   125,   127,   132,
1580 <     133,   162,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1581 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,   531,   499,   266,
1582 <    -744,   135,    28,  -744,  -744,    11,  -744,   142,   143,   145,
1583 <     147,   148,   150,   153,   163,   166,   167,   169,   173,   174,
1584 <     175,   177,   178,   180,   182,   183,   185,   191,   197,   200,
1585 <     201,   202,   204,   211,   212,   215,  -744,   216,  -744,   217,
1586 <     218,   221,   222,   225,   226,   229,   234,   235,   237,   238,
1587 <     239,   242,   253,   256,   257,   262,    38,  -744,  -744,  -744,
1588 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1589 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1590 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1591 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1592 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,   337,    24,   259,
1593 <      73,   263,     4,  -744,  -744,  -744,   126,   131,   264,   270,
1594 <      59,  -744,  -744,  -744,   389,   209,  -744,   276,   279,   280,
1595 <     281,   285,   287,     3,  -744,  -744,  -744,  -744,  -744,  -744,
1596 <    -744,   149,   288,   289,   290,   292,   299,   301,   302,   303,
1597 <     304,   305,   307,   308,   315,   324,   330,    75,  -744,  -744,
1598 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1599 <    -744,  -744,  -744,  -744,   208,    30,  -744,   331,    15,  -744,
1600 <    -744,  -744,   107,   254,   359,   165,  -744,   385,   396,   367,
1790 <     454,   454,   455,   457,   461,   399,   401,   464,   454,   404,
1791 <     405,   351,  -744,   358,   356,   360,   361,   362,   364,   365,
1792 <     369,   374,   375,   379,   383,   386,   388,   395,   232,  -744,
1793 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1794 <    -744,  -744,  -744,  -744,   384,   397,   400,   403,   408,  -744,
1795 <     411,   412,   420,   423,   424,   427,   433,   434,   260,  -744,
1796 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1797 <    -744,  -744,  -744,  -744,   435,   437,     8,  -744,  -744,  -744,
1798 <     458,   407,  -744,  -744,   441,   442,  -744,  -744,    36,  -744,
1799 <    -744,  -744,   417,   454,   454,   501,   443,   459,   524,   543,
1800 <     502,   454,   503,   454,   565,   567,   568,   508,   509,   513,
1801 <     454,   577,   578,   454,   580,   583,   566,   584,   587,   527,
1802 <     528,   475,   535,   478,   454,   454,   537,   540,   541,   542,
1803 <    -146,  -133,   544,   546,   454,   454,   585,   454,   550,   553,
1804 <     554,   510,  -744,   515,   514,   517,  -744,   519,   521,   525,
1805 <     529,   530,    58,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1806 <    -744,  -744,  -744,   533,  -744,   534,  -744,    10,  -744,  -744,
1807 <    -744,   538,  -744,   536,   539,   545,  -744,   115,  -744,  -744,
1808 <    -744,  -744,  -744,   582,   547,  -744,   532,  -744,   640,   643,
1809 <     549,  -744,   555,   559,   560,  -744,   562,   569,   572,  -744,
1810 <     573,    70,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1811 <    -744,   558,   588,   595,   597,   146,  -744,  -744,  -744,  -744,
1812 <     623,   625,   687,   658,   659,   454,   606,  -744,  -744,   704,
1813 <     663,   706,   707,   709,   713,   714,   715,    79,   159,   717,
1814 <     718,   646,   719,   720,   626,  -744,   628,   622,  -744,   624,
1815 <     128,  -744,  -744,  -744,  -744,   629,   630,  -744,    22,  -744,
1816 <    -744,  -744,   728,   632,  -744,   634,   635,   636,  -744,   637,
1817 <     639,   641,   430,   642,   645,   648,   649,   650,   651,   652,
1818 <     653,   654,   656,   657,  -744,  -744,   754,   756,   454,   759,
1819 <     776,   778,   779,   761,   784,   785,   454,   454,   786,   786,
1820 <     671,  -744,  -744,   769,   122,   770,   729,   672,   773,   774,
1821 <     775,   777,   795,   780,   781,   782,   681,  -744,   783,   787,
1822 <     682,  -744,   689,  -744,   788,   789,   690,   694,  -744,   695,
1823 <     696,   697,   698,   699,   702,   703,   705,   708,   710,   712,
1824 <     716,   721,   722,   723,   724,   725,   726,   727,   730,   731,
1825 <     732,   733,   734,   735,   736,   737,   738,   739,   551,   740,
1826 <     599,   741,   742,   743,   744,   745,   746,   747,   748,   749,
1827 <     750,   751,   752,   753,   755,   757,   758,   760,   762,   763,
1828 <    -744,  -744,   801,   764,   711,   803,   823,   810,   812,   814,
1829 <     765,  -744,   815,   766,   817,   767,  -744,  -744,   768,   825,
1830 <     826,   870,   772,  -744,   790,  -744,   184,   791,   792,  -744,
1831 <    -744,   853,   816,   771,   856,   861,   863,   793,   865,   794,
1832 <    -744,  -744,   867,   872,   873,   797,  -744,   798,   799,   800,
1833 <     802,   804,   805,  -744,   806,   808,   809,   811,   813,   818,
1834 <     819,   820,  -744,  -744,  -195,  -744,  -744,  -744,  -172,  -744,
1835 <     821,   822,   824,   827,   828,  -744,  -744,   874,   829,   875,
1836 <     830,  -744,  -744,   876,   831,   833,  -744,   835,  -744,  -744,
1837 <    -744,  -744,  -744,  -744,  -744,   454,   454,   454,   454,   454,
1838 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1839 <    -744,  -744,  -744,   836,   837,   838,   839,   840,   841,   842,
1840 <     843,   844,   845,   846,   847,   314,   848,   849,  -744,   850,
1841 <     851,   852,   854,   855,    13,   857,   858,   859,   860,   862,
1842 <     864,   866,   868,  -744,   869,   871,  -744,  -744,   877,   878,
1843 <     879,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1844 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1845 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1846 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1847 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1848 <    -744,  -167,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1849 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1850 <    -744,  -744,  -744,  -744,  -154,  -744,  -744,  -744,  -744,  -744,
1851 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1852 <    -744,  -744,  -744,  -744,  -744,   880,   881,   309,   882,   883,
1853 <     884,   885,   886,  -744,   887,   893,   888,  -744,   -33,   889,
1854 <     890,   832,   891,  -744,  -744,  -744,   892,   894,  -744,   895,
1855 <     154,  -744,  -744,  -744,  -744,  -744,  -744,   896,   899,   511,
1856 <     900,   901,   902,   627,   903,  -744,   904,   905,   906,  -744,
1857 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1858 <    -744,  -744,  -744,  -744,  -744,    79,  -744,   159,  -744,  -744,
1859 <    -744,  -744,  -744,   907,   460,   908,  -744,   909,   665,  -744,
1860 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1861 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,   786,   786,
1862 <     786,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1863 <    -744,  -744,  -145,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1864 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,   -50,  -744,  -744,
1865 <     551,  -744,   599,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1866 <    -744,  -744,  -744,  -744,   -41,  -744,  -744,  -744,  -744,  -744,
1867 <    -744,  -744,  -744,   -27,  -744,  -744,  -744,  -744,  -744,   -17,
1868 <    -744,  -744,  -744,   898,   870,   910,  -744,   911,   912,   -86,
1869 <     913,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1870 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1871 <    -744,  -744,  -744,    34,  -744,  -744,  -744,  -744,  -744,  -744,
1872 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1873 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,    40,  -744,
1874 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1875 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,    53,  -744,  -744,
1876 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1877 <    -744,    63,  -744,  -744,  -744,  -744,  -744,    13,  -744,   879,
1878 <    -744,  -744,  -744,   309,  -744,   893,  -744,   -33,  -744,  -744,
1879 <    -744,   914,   277,   916,   917,  -744,  -744,   511,  -744,   627,
1880 <    -744,   460,  -744,   665,  -744,  -744,  -744,  -744,  -744,  -744,
1881 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,    68,  -744,  -744,
1882 <    -744,  -744,  -744,  -744,  -744,  -744,   277,  -744
1571 >    -880,  -880,  -880,  -284,  -315,  -879,  -638,  -880,  -880,   969,
1572 >    -880,  -880,  -880,  -880,   956,  -880,  -880,  -880,    57,  -880,
1573 >      70,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1574 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  1035,
1575 >    -880,  -880,  -880,  -880,  -880,  -880,   631,  -880,  -880,  -880,
1576 >    -880,   824,  -880,  -880,  -880,  -880,    95,  -880,  -880,  -880,
1577 >    -880,  -880,  -201,  -880,  -880,  -880,   634,  -880,  -880,  -880,
1578 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -112,  -880,
1579 >    -880,  -880,  -108,  -880,  -880,  -880,   820,  -880,  -880,  -880,
1580 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1581 >    -880,  -880,  -880,  -880,  -880,  -880,   -88,  -880,  -880,  -880,
1582 >    -880,  -880,   -97,  -880,   682,  -880,  -880,  -880,    24,  -880,
1583 >    -880,  -880,  -880,  -880,   712,  -880,  -880,  -880,  -880,  -880,
1584 >    -880,  -880,   -69,  -880,  -880,  -880,  -880,  -880,  -880,   633,
1585 >    -880,  -880,  -880,  -880,  -880,   957,  -880,  -880,  -880,  -880,
1586 >     601,  -880,  -880,  -880,  -880,  -880,   -89,  -880,  -880,  -880,
1587 >     620,  -880,  -880,  -880,  -880,   -78,  -880,  -880,  -880,   821,
1588 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1589 >    -880,   -59,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1590 >     715,  -880,  -880,  -880,  -880,  -880,   809,  -880,  -880,  -880,
1591 >    -880,  1089,  -880,  -880,  -880,  -880,   796,  -880,  -880,  -880,
1592 >    -880,  1037,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1593 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1594 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1595 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1596 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1597 >      78,  -880,  -880,  -880,    85,  -880,  -880,  -880,  -880,  -880,
1598 >    1114,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,  -880,
1599 >    -880,  -880,  -880,  -880,  -880,  -880,  -880,   968,  -880,  -880,
1600 >    -880,  -880,  -880,  -880,  -880,  -880
1601   };
1602  
1603 < /* YYPGOTO[NTERM-NUM].  */
1604 < static const yytype_int16 yypgoto[] =
1603 >  /* YYDEFGOTO[NTERM-NUM].  */
1604 > static const yytype_int16 yydefgoto[] =
1605   {
1606 <    -744,  -744,  -744,  -743,  -298,  -663,  -598,  -744,  -744,   897,
1607 <    -744,  -744,  -744,  -744,   915,  -744,  -744,  -744,    14,  -744,
1608 <       1,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1609 <    -744,  -744,  -744,  -744,  -744,  -744,   924,  -744,  -744,  -744,
1610 <    -744,  -744,   796,  -744,  -744,  -744,  -744,    48,  -744,  -744,
1611 <    -744,  -744,  -744,  -226,  -744,  -744,  -744,   500,  -744,  -744,
1612 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -196,  -744,  -744,
1613 <    -744,  -193,  -744,  -744,  -744,   680,  -744,  -744,  -744,  -744,
1614 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1615 <    -744,  -744,  -744,  -744,  -744,  -177,  -744,   548,  -744,  -744,
1616 <    -744,   -62,  -744,  -744,  -744,  -744,  -744,   575,  -744,  -744,
1617 <    -744,  -744,  -744,  -744,  -744,  -153,  -744,  -744,  -744,  -744,
1618 <    -744,  -744,   516,  -744,  -744,  -744,  -744,  -744,   918,  -744,
1619 <    -744,  -744,  -744,   482,  -744,  -744,  -744,  -744,  -744,  -163,
1620 <    -744,  -744,  -744,   483,  -744,  -744,  -744,  -744,  -159,  -744,
1621 <    -744,  -744,   688,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1622 <    -744,  -744,  -744,  -137,  -744,  -744,  -744,  -744,  -744,  -744,
1623 <    -744,  -744,  -744,  -744,  -117,  -744,   604,  -744,  -744,  -744,
1624 <    -744,  -744,   700,  -744,  -744,  -744,  -744,   966,  -744,  -744,
1625 <    -744,  -744,  -744,  -744,   -99,  -744,   701,  -744,  -744,  -744,
1626 <    -744,   919,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1627 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1628 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1629 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1630 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,    35,
1631 <    -744,  -744,  -744,    32,  -744,  -744,  -744,  -744,  -744,   997,
1632 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1633 <    -744,  -744,  -744,  -744,  -744,  -744,   920,  -744,  -744,  -744,
1634 <    -744,  -744,  -744
1606 >      -1,     1,    25,   835,   836,  1098,  1099,    26,   228,   229,
1607 >     230,   231,    27,   273,   274,   275,   276,   796,   797,   800,
1608 >     801,   277,   278,   279,   280,   281,   282,   283,   284,   285,
1609 >     286,   287,   288,   289,   290,   291,   292,    28,    74,    75,
1610 >      76,    77,    78,    29,    61,   511,   512,   513,   514,    30,
1611 >     296,   297,   298,   299,   300,  1060,  1061,  1062,  1063,  1064,
1612 >    1236,  1307,  1308,    31,    62,   526,   527,   528,   529,   530,
1613 >     531,   532,   533,   534,   535,   536,   761,  1212,  1213,   537,
1614 >     755,  1183,  1184,    32,    51,   347,   348,   349,   350,   351,
1615 >     352,   353,   354,   355,   356,   357,   358,   359,   360,   361,
1616 >     362,   363,   364,   365,   626,  1082,  1083,    33,    59,   497,
1617 >     740,  1154,  1155,   498,   499,   500,  1158,  1001,  1002,   501,
1618 >     502,    34,    57,   475,   476,   477,   478,   479,   480,   481,
1619 >     725,  1140,  1141,   482,   483,   484,    35,    63,   542,   543,
1620 >     544,   545,   546,    36,   303,   304,   305,    37,    69,   597,
1621 >     598,   599,   600,   601,   817,  1250,  1251,    38,    66,   581,
1622 >     582,   583,   584,   807,  1231,  1232,    39,    52,   381,   382,
1623 >     383,   384,   385,   386,   387,   388,   389,   390,   391,   649,
1624 >    1111,  1112,   392,   393,   394,   395,   396,    40,    58,   488,
1625 >     489,   490,   491,    41,    53,   400,   401,   402,   403,    42,
1626 >     115,   116,   117,    43,    55,   410,   411,   412,   413,    44,
1627 >     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
1628 >     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
1629 >     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
1630 >     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
1631 >     210,   211,   212,   213,   214,   215,   216,   217,   443,   961,
1632 >     962,   218,   441,   936,   937,   219,   220,   221,    45,    94,
1633 >      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
1634 >     105,   106,   107,   108,   109,    46,   244,   245,   246,   247,
1635 >     248,   249,   250,   251,   252,   253
1636   };
1637  
1638 < /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
1639 <   positive, shift that token.  If negative, reduce the rule which
1640 <   number is the opposite.  If YYTABLE_NINF, syntax error.  */
1922 < #define YYTABLE_NINF -108
1638 >  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
1639 >     positive, shift that token.  If negative, reduce the rule whose
1640 >     number is the opposite.  If YYTABLE_NINF, syntax error.  */
1641   static const yytype_int16 yytable[] =
1642   {
1643 <     806,   807,   573,   574,   236,   220,    45,    46,   220,   373,
1644 <     581,   462,   383,   805,   667,   668,   286,   110,  1076,    67,
1645 <     984,  1030,   227,   555,   985,   462,   286,   669,   670,   110,
1646 <      47,   555,  1001,  1002,  1003,  1004,  1005,   383,    48,   116,
1647 <     237,    52,    68,   986,   117,   118,    54,   987,  1049,    69,
1648 <     119,    58,  1050,    59,   238,   239,   240,   241,   120,   443,
1649 <     227,  1051,    67,   291,   121,  1052,   122,   123,   124,   374,
1650 <    1176,   492,   242,   125,  1177,   444,   251,   111,    62,   126,
1651 <     127,    63,   128,   129,   130,    68,    66,   493,   131,   111,
1652 <     445,   107,    69,   132,   446,   630,   631,   133,   134,   252,
1653 <     384,   135,   494,   638,   287,   640,   495,    70,   228,  1193,
1654 <     136,   556,   647,   108,   287,   650,   471,   137,   138,   556,
1655 <     139,   140,   141,   142,   143,   384,   661,   662,   375,   546,
1656 <     463,   385,   253,   109,   229,   144,   673,   674,   115,   676,
1657 <     217,   145,   146,   147,   463,   148,   228,   511,   149,   150,
1658 <      70,   472,   151,  1077,   218,   946,   385,   219,  1078,   496,
1659 <     512,   464,   386,    76,   254,  1178,   255,   256,   234,  1179,
1660 <     447,   473,   229,   557,  1182,   464,   474,   235,  1183,   448,
1661 <     449,   557,   497,    77,    78,   946,   152,   386,  1184,    79,
1662 <     153,   284,  1185,   154,   155,   156,   157,   158,  1186,   498,
1663 <     159,   160,  1187,   257,  1031,   258,   259,   260,   261,   546,
1664 <     511,   450,   221,   742,   743,   221,   465,   547,  -107,   526,
1665 <     484,  -107,   262,   512,   620,   565,   695,   732,    80,    81,
1666 <     465,   563,   475,   313,   295,    82,    83,    84,   765,   513,
1667 <     161,   162,   163,   947,   381,   164,   263,   314,   315,  1196,
1668 <     165,   316,   627,  1197,   441,  1198,   264,    85,    86,  1199,
1669 <     471,   344,   499,   345,   451,   346,   514,   373,  1200,   285,
1670 <      87,    88,  1201,   947,   690,   490,   500,   347,  1202,   548,
1671 <     292,    89,  1203,  1225,   265,   266,   719,  1226,   482,    90,
1672 <     795,   544,   348,   746,   747,   472,   349,   547,   803,   804,
1673 <     810,   811,   513,   293,   294,   948,   297,   298,   317,   318,
1674 <     319,   299,   300,   320,   301,   473,   350,  1210,   351,   302,
1675 <     474,   321,  1055,  1018,  1019,  1020,   303,   374,   352,   514,
1676 <     304,   702,   322,   323,   549,   948,   305,   306,   443,  1211,
1677 <     486,  1212,  1056,   307,   760,   308,   487,   324,   325,   353,
1678 <     309,   310,  1057,   380,   444,  1173,  1174,  1175,  1058,   548,
1679 <     392,   393,   725,   394,   528,   395,   396,   949,   397,   445,
1680 <    1090,   398,   566,   446,  1059,   326,   475,   354,   311,  1213,
1681 <     568,   399,   251,   116,   400,   401,   375,   402,   117,   118,
1682 <     492,   403,   404,   405,   119,   406,   407,   949,   408,  1060,
1683 <     409,   410,   120,   411,   355,   252,   493,  1061,   121,   412,
1684 <     122,   123,   124,   805,   549,   413,   327,   125,   414,   415,
1685 <     416,   494,   417,   126,   127,   495,   128,   129,   130,   418,
1686 <     419,   356,   131,   420,   422,   424,   425,   132,   253,   426,
1687 <     427,   133,   134,   428,   429,   135,  1062,   430,   600,   447,
1688 <    1214,  1215,   431,   432,   136,   433,   434,   435,   448,   449,
1689 <     436,   137,   138,  1063,   139,   140,   141,   142,   143,   357,
1690 <     254,   437,   255,   256,   438,   439,   616,   567,   496,   144,
1691 <     440,   483,   488,  1216,   569,   145,   146,   147,   489,   148,
1692 <     450,  1194,   149,   150,   520,   570,   151,   521,   522,   523,
1693 <     344,   497,   345,   524,   346,   525,   529,   530,   531,   257,
1694 <     532,   258,   259,   260,   261,  1094,   347,   533,   498,   534,
1695 <     535,   536,   537,   538,  1147,   539,   540,   571,   262,   572,
1696 <     152,   348,   313,   541,   153,   349,  1095,   154,   155,   156,
1697 <     157,   158,   542,   451,   159,   160,   314,   315,   543,   562,
1698 <     316,  1096,   263,   572,   575,   350,   576,   351,  1097,   578,
1699 <     577,   579,   264,   580,   582,   583,   584,   352,   775,   776,
1700 <     777,   778,   779,   585,   586,  1098,   622,   629,   587,   588,
1701 <     589,   499,   590,   591,   161,   162,   163,   592,   353,   164,
1702 <     265,   266,   593,   594,   165,   500,  1148,   595,  1099,   602,
1703 <     632,   596,   861,   633,   597,  1100,   598,   317,   318,   319,
1704 <       2,     3,   320,   599,     4,   603,   354,  1101,   604,   634,
1705 <     321,   605,   623,   635,     5,  1149,   606,     6,     7,   608,
1706 <     609,   322,   323,     8,  1150,  1102,  1103,  1104,   610,   236,
1707 <    1151,   611,   612,   355,     9,   613,   324,   325,    10,    11,
1708 <     884,   614,   615,   618,  1152,   619,  1153,  1154,    12,   624,
1709 <     625,   636,   637,   639,   641,  1155,   642,   643,   644,   645,
1710 <     356,  1156,    13,   646,   326,   237,   648,   649,  1118,   651,
1711 <      14,    15,   652,   654,   653,  1105,   655,   656,   657,   238,
1712 <     239,   240,   241,   658,  1106,   659,   660,   663,    16,  1107,
1713 <     664,   665,   666,   675,   671,  1108,   672,   242,   357,  1109,
1714 <     677,  1110,    17,   678,   679,   327,  1111,   862,   863,   864,
1715 <     865,   866,  1112,   867,   868,   680,   869,   870,   871,  1161,
1716 <     681,   872,   682,   873,   874,   683,   875,   685,   876,   686,
1717 <     877,   878,   704,   687,   879,   752,    18,   688,   689,   706,
1718 <     880,   692,   694,   697,   699,    19,    20,   700,   707,    21,
1719 <      22,   708,   705,   701,   709,   885,   886,   887,   888,   889,
1720 <     710,   890,   891,   721,   892,   893,   894,   711,   712,   895,
1721 <     714,   896,   897,   727,   898,   728,   899,   715,   900,   901,
1722 <     716,   718,   902,  1119,  1120,  1121,  1122,  1123,   903,  1124,
1723 <    1125,  1162,  1126,  1127,  1128,   729,   722,  1129,    76,  1130,
1724 <    1131,    23,  1132,   723,  1133,   724,  1134,  1135,   730,   731,
1725 <    1136,   733,   734,   735,   736,   737,  1137,   738,    77,    78,
1726 <    1163,   739,   740,   741,    79,   750,   751,   753,   754,  1164,
1727 <     757,   755,   759,   756,   762,  1165,   767,   768,   763,   769,
1728 <     770,   771,   772,   793,   773,   794,   774,   782,   796,  1166,
1729 <     783,  1167,  1168,   784,   785,   786,   787,   788,   789,   790,
1730 <    1169,   791,   792,    80,    81,   797,  1170,   798,   799,   800,
1731 <      82,    83,    84,   801,   802,   805,   808,   809,   812,   813,
1732 <     814,   815,   816,   817,   819,   818,   823,   826,   820,   821,
1733 <     822,   824,    85,    86,   827,   825,   828,   829,   830,   831,
1734 <     832,   833,   834,   835,   836,    87,    88,   837,   838,   925,
1735 <     839,   928,   929,   840,   926,   841,    89,   842,   930,   927,
1736 <     931,   843,   932,   934,    90,   936,   844,   845,   846,   847,
1737 <     848,   849,   850,   939,   940,   851,   852,   853,   854,   855,
1738 <     856,   857,   858,   859,   860,   883,   906,   907,   908,   909,
1739 <     910,   911,   912,   913,   914,   915,   916,   917,   918,   941,
1740 <     919,   957,   920,   921,   960,   922,   958,   923,   924,   961,
1741 <     933,   962,   937,   964,   935,   966,   938,   944,  1145,   959,
1742 <     967,   968,   993,   995,   997,   296,  1083,  1188,  1091,  1144,
1743 <    1227,   720,  1046,  1222,  1221,   945,   955,   956,   601,   965,
1744 <    1208,   963,   969,   970,   971,   972,  1072,   973,   485,   974,
1745 <     975,   976,  1189,   977,   978,   703,   979,   691,   980,  1191,
1746 <    1206,   726,   761,   981,   982,   983,   988,   989,  1223,   990,
1747 <    1204,   766,   991,   992,  1224,   996,   617,   994,   999,   998,
1748 <    1000,  1006,  1007,  1008,  1009,  1010,  1011,  1012,  1013,  1014,
1749 <    1015,  1016,  1017,  1023,  1024,  1025,  1026,  1027,  1207,  1028,
1750 <    1029,   696,  1034,  1035,  1036,  1037,   621,  1038,   382,  1039,
1751 <    1205,  1040,  1180,  1041,  1042,   442,  1043,  1181,   312,   628,
1752 <       0,     0,  1044,  1045,     0,  1053,  1054,  1066,  1067,  1068,
1753 <    1069,  1070,  1071,  1075,  1081,  1082,     0,  1086,     0,     0,
1754 <    1084,  1092,  1087,  1089,  1093,  1115,  1116,  1117,  1140,  1141,
1755 <    1142,  1143,  1146,  1159,  1160,  1190,     0,   491,  1195,  1209,
1756 <    1192,  1219,  1220,     0,     0,     0,     0,     0,     0,     0,
1643 >     863,   864,   611,    79,   613,   235,   615,   616,   862,  1109,
1644 >     508,  1151,   485,    70,  1056,   225,   397,   705,   707,   508,
1645 >    1080,   706,   708,   301,    80,    81,    70,   407,   593,   113,
1646 >      82,   578,   492,   236,   407,   578,   538,    71,   294,   485,
1647 >     301,   237,  1046,  1298,    72,  1048,  1047,   593,  1124,  1049,
1648 >      71,   225,  1125,   238,   239,    47,    48,    72,   240,   241,
1649 >     242,   397,   119,   794,   795,    83,    84,   120,   121,    49,
1650 >     539,    85,    86,   122,  1299,    50,  1300,    87,    88,    89,
1651 >     398,   123,   124,   243,    54,    90,    91,    56,   125,   493,
1652 >     509,   126,   127,   114,  1056,  1081,   494,   128,   495,   509,
1653 >     670,   671,   129,   130,  1279,   131,   132,   133,   678,   134,
1654 >      92,    93,   682,   226,    73,  1057,   540,   687,   135,   294,
1655 >     690,  1301,   136,   137,   302,   398,   113,    73,   408,   594,
1656 >     700,   701,   579,   138,   538,   408,   579,   227,  1302,   254,
1657 >     486,   302,   714,   139,   399,   717,   718,    60,   594,   226,
1658 >     140,  1152,   141,    64,   142,   409,   143,   496,   144,   145,
1659 >      65,  1153,   409,   255,   541,  1126,  1253,   486,   539,  1127,
1660 >    1254,   146,    67,   227,  1303,  1304,   147,   148,   149,    68,
1661 >     150,   151,   152,   466,   510,   153,  1095,  1096,  1097,   399,
1662 >     114,   110,  1258,   510,   308,  1057,  1259,   256,  1262,   467,
1663 >    1110,  1264,  1263,  1272,   111,  1265,   257,  1273,  1058,  1274,
1664 >     112,   154,  -125,  1275,   540,   468,  1255,  1256,  1257,   118,
1665 >     155,   156,   157,   158,   159,   160,   222,  1276,   258,   307,
1666 >    1305,  1277,   259,   492,  1306,   327,  1059,   555,   487,   778,
1667 >     260,   329,   515,   261,   262,   311,  1237,   506,   661,   469,
1668 >     595,   750,   161,   580,   596,   330,   331,   580,   516,   332,
1669 >     819,   405,   541,   295,   742,   487,   667,   808,   769,   595,
1670 >     587,   735,   591,   596,   517,   263,   162,   163,   164,  1283,
1671 >     165,   166,   167,  1284,  1221,   223,   168,   224,  1058,   862,
1672 >     493,   169,   264,  -125,   464,   265,   266,   494,   366,   495,
1673 >     367,  1310,   368,   309,   470,  1311,   232,   333,   518,   233,
1674 >     849,   234,   471,   472,   369,   854,  1059,   293,   857,   798,
1675 >     799,   267,   861,   306,   334,   335,   336,   337,   338,   310,
1676 >     370,   313,   339,   473,   867,   868,   340,   314,   268,   269,
1677 >     270,   315,   341,   519,   295,   316,  1222,   317,   318,   319,
1678 >     320,   503,   321,   342,   343,   371,   322,   372,   496,   323,
1679 >     557,   324,   325,   520,   373,   344,   271,   272,   585,   326,
1680 >     404,   576,   414,   605,   466,   374,  1223,   415,   416,   521,
1681 >     417,   418,   419,  1224,   420,   421,   422,   345,   423,   424,
1682 >     467,   425,  1225,   426,   427,   428,   522,   523,   429,   375,
1683 >     430,   431,   432,   433,   434,   435,   468,   436,   437,   474,
1684 >     438,   439,   602,   440,   442,   731,   444,   603,  1226,   119,
1685 >    1227,  1228,   445,   376,   120,   121,   346,   446,   447,   448,
1686 >     122,   449,   450,   451,   452,  1229,   453,   454,   123,   124,
1687 >     469,   455,  1230,   377,   456,   125,   524,   457,   126,   127,
1688 >     458,   515,   378,   459,   128,   460,   461,   462,   463,   129,
1689 >     130,   504,   131,   132,   133,   254,   134,   516,   525,   505,
1690 >     547,   548,   549,   640,   763,   135,   589,   550,   551,   136,
1691 >     137,   552,   553,   517,   554,   558,   559,   560,   561,   255,
1692 >     138,   562,   563,   564,   565,   470,   566,   379,   567,   568,
1693 >     139,   569,   570,   471,   472,   571,   572,   140,   573,   141,
1694 >     574,   142,   575,   143,   586,   144,   145,   518,   590,   604,
1695 >     606,   607,   608,   256,   473,   380,   609,   610,   146,  1163,
1696 >     657,   612,   257,   147,   148,   149,   614,   150,   151,   152,
1697 >     617,   618,   153,  1164,  1070,  1071,  1072,  1073,  1074,  1075,
1698 >    1076,  1165,   519,   619,   258,   620,   621,   622,   259,   642,
1699 >     663,   623,  1130,   624,   625,  1166,   260,   627,   154,   261,
1700 >     262,   628,   520,   629,   664,   630,   669,   155,   156,   157,
1701 >     158,   159,   160,  1131,   631,   632,   633,   634,   521,   635,
1702 >     636,   637,  1132,   638,   639,   643,  1167,  1280,  1168,   644,
1703 >     474,   263,   645,   646,   647,   522,   523,   648,   672,   161,
1704 >     650,   651,   652,   366,   653,   367,   654,   368,   264,   655,
1705 >     656,   265,   266,  1133,  1169,   659,   660,   673,   665,   369,
1706 >     666,   674,   675,   162,   163,   164,   676,   165,   166,   167,
1707 >     677,   679,   680,   168,   681,   370,   683,   267,   169,   684,
1708 >     685,   686,  1134,  1135,   688,   524,   689,  1170,   691,  1171,
1709 >    1136,   695,   692,   693,   268,   269,   270,   694,   329,   696,
1710 >     371,   697,   372,   698,   699,   702,   703,   525,  1172,   373,
1711 >     704,   709,   330,   331,   710,  1137,   332,   711,   712,   713,
1712 >     374,   715,   271,   272,   716,   719,   720,  1173,   723,   744,
1713 >     721,  1138,  1174,   722,   724,   745,  1175,     2,     3,   726,
1714 >    1240,     4,   771,  1176,   375,   737,   772,   773,  1177,   727,
1715 >     728,     5,   729,   730,     6,     7,   733,   734,   738,   739,
1716 >     741,     8,  1178,   746,   333,  1179,   747,  1180,   376,   752,
1717 >     748,   749,     9,   753,   774,    10,    11,   754,   756,  1181,
1718 >     765,   334,   335,   336,   337,   338,  1182,   757,   377,   339,
1719 >     779,   758,  1139,   340,   759,   780,   610,   378,   760,   341,
1720 >     762,   766,  1241,    12,   767,   768,   775,   776,    13,   777,
1721 >     342,   343,   781,   782,   783,   784,   939,    14,   940,   941,
1722 >     785,   786,   344,   828,   829,   830,   831,   832,   833,   834,
1723 >     792,   787,  1242,   788,   789,   790,   791,    15,    16,  1243,
1724 >     793,   802,   379,   803,   345,   804,   805,   806,  1244,   810,
1725 >    1190,   811,  1191,  1192,   235,    17,   812,   813,   814,   815,
1726 >     816,   821,   822,   818,   823,   824,   825,   847,   826,   827,
1727 >     380,   837,    18,   838,  1245,   839,  1246,  1247,   840,   850,
1728 >     841,   842,   236,   346,   916,    19,    20,   843,   844,   845,
1729 >     237,  1248,   846,   848,   851,   852,   853,   855,  1249,   856,
1730 >     858,   859,   238,   239,   860,   862,    21,   240,   241,   242,
1731 >     865,   873,   870,   866,   876,   869,   987,   871,   872,    22,
1732 >     881,   874,   875,   877,   878,   879,   880,    23,   884,  1269,
1733 >     882,    24,   243,   942,   943,   944,   883,   945,   946,   886,
1734 >     947,   948,   885,   949,   887,   950,   986,   888,   951,   889,
1735 >     989,   952,   953,   890,   954,   891,   892,   893,   894,   955,
1736 >     895,   896,   999,   956,   957,   958,   897,  1193,  1194,  1195,
1737 >     898,  1196,  1197,   959,  1198,  1199,   899,  1200,   960,  1201,
1738 >     900,   901,  1202,   902,   903,  1203,  1204,   985,  1205,   904,
1739 >     905,   906,   907,  1206,   908,   909,    79,  1207,  1208,  1209,
1740 >     910,   917,   918,   919,   911,   920,   921,  1210,   922,   923,
1741 >     912,   924,  1211,   925,   988,   990,   926,    80,    81,   927,
1742 >     928,   991,   929,    82,   992,   994,   995,   930,   997,   998,
1743 >    1000,   931,   932,   933,  1006,  1007,   913,   914,   915,   938,
1744 >     963,   934,   964,   965,  1009,   966,   935,   967,   968,  1011,
1745 >     969,   970,   971,   972,   973,   974,   975,   976,    83,    84,
1746 >     977,   978,   979,   980,    85,    86,   981,  1012,   982,   983,
1747 >      87,    88,    89,   984,   993,   996,  1003,  1004,    90,    91,
1748 >    1005,  1008,  1010,  1013,  1014,  1015,  1016,  1017,  1018,  1019,
1749 >    1020,  1021,  1022,  1023,  1024,  1025,  1026,  1027,  1028,  1029,
1750 >    1052,  1030,  1031,    92,    93,  1032,  1033,  1034,  1035,  1036,
1751 >    1037,  1038,  1039,  1040,  1041,  1042,  1043,  1044,  1045,  1066,
1752 >    1068,  1050,  1051,  1266,  1054,  1055,  1053,  1065,  1278,  1289,
1753 >    1290,  1067,  1069,  1291,  1218,  1077,  1078,  1079,  1084,   312,
1754 >    1312,  1085,  1086,  1087,  1088,  1089,  1090,  1091,  1092,  1219,
1755 >     588,  1093,  1094,  1100,  1101,  1102,  1103,  1104,  1105,  1106,
1756 >    1107,  1108,  1113,  1114,  1115,  1116,  1117,  1118,  1119,  1120,
1757 >    1121,  1122,   751,  1123,  1128,  1129,  1142,  1143,  1144,  1145,
1758 >    1146,  1147,  1148,  1149,  1150,  1238,  1159,  1160,  1156,  1157,
1759 >     764,  1161,  1162,  1293,  1185,  1292,  1285,   641,  1288,  1186,
1760 >    1187,  1188,  1189,  1214,  1215,   770,  1216,  1217,  1220,  1233,
1761 >     743,  1267,  1239,  1234,  1235,  1252,  1268,   732,  1270,  1271,
1762 >    1281,  1282,  1295,  1296,  1287,  1309,  1297,   507,   820,  1294,
1763 >    1286,   809,   658,   736,   406,  1261,   668,   465,   328,   662,
1764 >    1260,     0,   556,     0,     0,     0,     0,     0,     0,     0,
1765 >       0,     0,     0,     0,     0,     0,     0,     0,     0,   577,
1766         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1767         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2041       0,     0,     0,   527,     0,     0,     0,     0,     0,     0,
1768         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1769 <       0,     0,   545,     0,     0,     0,     0,     0,     0,     0,
2044 <       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2045 <       0,     0,     0,     0,     0,     0,   564
1769 >     592
1770   };
1771  
2048 #define yypact_value_is_default(Yystate) \
2049  (!!((Yystate) == (-744)))
2050
2051 #define yytable_value_is_error(Yytable_value) \
2052  YYID (0)
2053
1772   static const yytype_int16 yycheck[] =
1773   {
1774 <     598,   599,   300,   301,     1,     1,   215,   216,     1,     1,
1775 <     308,     1,     1,    99,   160,   161,     1,     1,    51,     1,
1776 <     215,     8,     1,     1,   219,     1,     1,   160,   161,     1,
1777 <     217,     1,   775,   776,   777,   778,   779,     1,   217,     1,
1778 <      37,   217,    24,   215,     6,     7,   217,   219,   215,    31,
1779 <      12,   217,   219,   217,    51,    52,    53,    54,    20,     1,
1780 <       1,   215,     1,   215,    26,   219,    28,    29,    30,    61,
1781 <     215,     1,    69,    35,   219,    17,     1,    61,   217,    41,
1782 <      42,   217,    44,    45,    46,    24,   217,    17,    50,    61,
1783 <      32,   217,    31,    55,    36,   393,   394,    59,    60,    24,
1784 <      89,    63,    32,   401,    89,   403,    36,    89,    87,   195,
1785 <      72,    89,   410,   217,    89,   413,     1,    79,    80,    89,
1786 <      82,    83,    84,    85,    86,    89,   424,   425,   120,     1,
1787 <     120,   120,    57,   217,   113,    97,   434,   435,   217,   437,
1788 <     217,   103,   104,   105,   120,   107,    87,     1,   110,   111,
1789 <      89,    36,   114,   186,   217,     1,   120,   217,   191,    89,
1790 <      14,   151,   151,     1,    89,   215,    91,    92,   217,   219,
1791 <     112,    56,   113,   151,   215,   151,    61,   217,   219,   121,
1792 <     122,   151,   112,    21,    22,     1,   148,   151,   215,    27,
1793 <     152,   217,   219,   155,   156,   157,   158,   159,   215,   129,
1794 <     162,   163,   219,   128,   191,   130,   131,   132,   133,     1,
1795 <       1,   153,   208,   134,   135,   208,   206,    89,   214,   216,
1796 <     216,   214,   147,    14,   216,   118,   216,   525,    66,    67,
1797 <     206,   216,   117,     1,   216,    73,    74,    75,   216,    93,
1798 <     202,   203,   204,    89,   216,   207,   171,    15,    16,   215,
1799 <     212,    19,   216,   219,   216,   215,   181,    95,    96,   219,
1800 <       1,     1,   192,     3,   206,     5,   120,     1,   215,   217,
1801 <     108,   109,   219,    89,   216,   216,   206,    17,   215,   151,
1802 <     218,   119,   219,   215,   209,   210,   216,   219,   215,   127,
1803 <     588,   216,    32,   134,   135,    36,    36,    89,   596,   597,
1804 <     178,   179,    93,   218,   218,   151,   218,   218,    76,    77,
1805 <      78,   218,   218,    81,   218,    56,    56,    40,    58,   218,
1806 <      61,    89,    13,     9,    10,    11,   218,    61,    68,   120,
1807 <     218,   216,   100,   101,   206,   151,   218,   218,     1,    62,
1808 <     214,    64,    33,   218,   216,   218,   215,   115,   116,    89,
1809 <     218,   218,    43,   218,    17,  1018,  1019,  1020,    49,   151,
1810 <     218,   218,   216,   218,   215,   218,   218,   213,   218,    32,
1811 <     216,   218,   118,    36,    65,   143,   117,   117,   216,   102,
1812 <     215,   218,     1,     1,   218,   218,   120,   218,     6,     7,
1813 <       1,   218,   218,   218,    12,   218,   218,   213,   218,    90,
1814 <     218,   218,    20,   218,   144,    24,    17,    98,    26,   218,
1815 <      28,    29,    30,    99,   206,   218,   184,    35,   218,   218,
1816 <     218,    32,   218,    41,    42,    36,    44,    45,    46,   218,
1817 <     218,   171,    50,   218,   218,   218,   218,    55,    57,   218,
1818 <     218,    59,    60,   218,   218,    63,   137,   218,   216,   112,
1819 <     173,   174,   218,   218,    72,   218,   218,   218,   121,   122,
1820 <     218,    79,    80,   154,    82,    83,    84,    85,    86,   209,
1821 <      89,   218,    91,    92,   218,   218,   216,   118,    89,    97,
1822 <     218,   218,   218,   206,    99,   103,   104,   105,   218,   107,
1823 <     153,  1089,   110,   111,   218,    99,   114,   218,   218,   218,
1824 <       1,   112,     3,   218,     5,   218,   218,   218,   218,   128,
1825 <     218,   130,   131,   132,   133,     4,    17,   218,   129,   218,
1826 <     218,   218,   218,   218,    64,   218,   218,   160,   147,    99,
1827 <     148,    32,     1,   218,   152,    36,    25,   155,   156,   157,
1828 <     158,   159,   218,   206,   162,   163,    15,    16,   218,   218,
1829 <      19,    40,   171,    99,    99,    56,    99,    58,    47,   160,
1830 <      99,   160,   181,    99,   160,   160,   215,    68,   138,   139,
1831 <     140,   141,   142,   215,   218,    64,   118,   160,   218,   218,
1832 <     218,   192,   218,   218,   202,   203,   204,   218,    89,   207,
1833 <     209,   210,   218,   218,   212,   206,   136,   218,    87,   215,
1834 <      99,   218,    51,   160,   218,    94,   218,    76,    77,    78,
1835 <       0,     1,    81,   218,     4,   218,   117,   106,   218,   160,
1836 <      89,   218,   215,    99,    14,   165,   218,    17,    18,   218,
1837 <     218,   100,   101,    23,   174,   124,   125,   126,   218,     1,
1838 <     180,   218,   218,   144,    34,   218,   115,   116,    38,    39,
1839 <      51,   218,   218,   218,   194,   218,   196,   197,    48,   218,
1840 <     218,   118,   160,   160,    99,   205,    99,    99,   160,   160,
1841 <     171,   211,    62,   160,   143,    37,    99,    99,    51,    99,
1842 <      70,    71,    99,    99,   118,   174,    99,   160,   160,    51,
1843 <      52,    53,    54,   218,   183,   160,   218,   160,    88,   188,
1844 <     160,   160,   160,   118,   160,   194,   160,    69,   209,   198,
1845 <     160,   200,   102,   160,   160,   184,   205,   166,   167,   168,
1846 <     169,   170,   211,   172,   173,   215,   175,   176,   177,    64,
1847 <     215,   180,   218,   182,   183,   218,   185,   218,   187,   218,
1848 <     189,   190,   160,   218,   193,    99,   136,   218,   218,   217,
1849 <     199,   218,   218,   215,   218,   145,   146,   218,   118,   149,
1850 <     150,   118,   215,   218,   215,   166,   167,   168,   169,   170,
1851 <     215,   172,   173,   215,   175,   176,   177,   218,   218,   180,
1852 <     218,   182,   183,   160,   185,   160,   187,   218,   189,   190,
1853 <     218,   218,   193,   166,   167,   168,   169,   170,   199,   172,
1854 <     173,   136,   175,   176,   177,   118,   218,   180,     1,   182,
1855 <     183,   201,   185,   218,   187,   218,   189,   190,   160,   160,
1856 <     193,   215,   118,   160,   118,   118,   199,   118,    21,    22,
1857 <     165,   118,   118,   118,    27,   118,   118,   118,   118,   174,
1858 <     218,   215,   218,   215,   215,   180,   118,   215,   218,   215,
1859 <     215,   215,   215,    99,   215,    99,   215,   215,    99,   194,
1860 <     215,   196,   197,   215,   215,   215,   215,   215,   215,   215,
1861 <     205,   215,   215,    66,    67,    99,   211,    99,    99,   118,
1862 <      73,    74,    75,    99,    99,    99,   215,   118,   118,   160,
1863 <     218,   118,   118,   118,    99,   118,   215,   215,   118,   118,
1864 <     118,   118,    95,    96,   215,   118,   118,   118,   218,   215,
1865 <     215,   215,   215,   215,   215,   108,   109,   215,   215,   118,
1866 <     215,   118,    99,   215,   160,   215,   119,   215,   118,   218,
1867 <     118,   215,   118,   118,   127,   118,   215,   215,   215,   215,
1868 <     215,   215,   215,   118,   118,   215,   215,   215,   215,   215,
1869 <     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
1870 <     215,   215,   215,   215,   215,   215,   215,   215,   215,    99,
1871 <     215,   118,   215,   215,   118,   215,   160,   215,   215,   118,
1872 <     215,   118,   215,   118,   218,   118,   218,   215,   987,   218,
1873 <     118,   118,   118,   118,   118,    71,   164,    99,   950,   985,
1874 <    1226,   501,   123,  1199,  1197,   215,   215,   215,   328,   215,
1875 <    1187,   218,   215,   215,   215,   215,   123,   215,   222,   215,
1876 <     215,   215,  1084,   215,   215,   477,   215,   452,   215,   118,
1877 <    1183,   515,   550,   215,   215,   215,   215,   215,  1201,   215,
1878 <    1177,   558,   215,   215,  1203,   215,   358,   218,   215,   218,
1879 <     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
1880 <     215,   215,   215,   215,   215,   215,   215,   215,  1185,   215,
1881 <     215,   467,   215,   215,   215,   215,   376,   215,   112,   215,
1882 <    1179,   215,  1050,   215,   215,   166,   215,  1052,    91,   388,
1883 <      -1,    -1,   215,   215,    -1,   215,   215,   215,   215,   215,
1884 <     215,   215,   215,   215,   215,   215,    -1,   215,    -1,    -1,
1885 <     219,   215,   218,   218,   215,   215,   215,   215,   215,   215,
1886 <     215,   215,   215,   215,   215,   215,    -1,   230,   215,   215,
1887 <     218,   215,   215,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1774 >     638,   639,   317,     1,   319,     1,   321,   322,   112,     8,
1775 >       1,    49,     1,     1,     1,     1,     1,   214,   214,     1,
1776 >      53,   218,   218,     1,    22,    23,     1,     1,     1,     1,
1777 >      28,     1,     1,    29,     1,     1,     1,    25,     1,     1,
1778 >       1,    37,   232,    40,    32,   232,   236,     1,   232,   236,
1779 >      25,     1,   236,    49,    50,   232,   233,    32,    54,    55,
1780 >      56,     1,     1,   203,   204,    63,    64,     6,     7,   234,
1781 >      35,    69,    70,    12,    71,   234,    73,    75,    76,    77,
1782 >      65,    20,    21,    79,   234,    83,    84,   234,    27,    58,
1783 >      81,    30,    31,    65,     1,   128,    65,    36,    67,    81,
1784 >     415,   416,    41,    42,   208,    44,    45,    46,   423,    48,
1785 >     108,   109,   427,    99,   102,   102,    81,   432,    57,     1,
1786 >     435,   118,    61,    62,   102,    65,     1,   102,   102,   102,
1787 >     445,   446,   102,    72,     1,   102,   102,   123,   135,     1,
1788 >     129,   102,   457,    82,   129,   460,   461,   234,   102,    99,
1789 >      89,   189,    91,   234,    93,   129,    95,   126,    97,    98,
1790 >     234,   199,   129,    25,   129,   232,   232,   129,    35,   236,
1791 >     236,   110,   234,   123,   171,   172,   115,   116,   117,   234,
1792 >     119,   120,   121,     1,   175,   124,     9,    10,    11,   129,
1793 >      65,   234,   232,   175,   235,   102,   236,    59,   232,    17,
1794 >     199,   232,   236,   232,   234,   236,    68,   236,   195,   232,
1795 >     234,   150,   175,   236,    81,    33,  1095,  1096,  1097,   234,
1796 >     159,   160,   161,   162,   163,   164,   234,   232,    90,   232,
1797 >     227,   236,    94,     1,   231,   233,   223,   233,   227,   554,
1798 >     102,     1,     1,   105,   106,   233,   233,   233,   233,    67,
1799 >     223,   233,   191,   223,   227,    15,    16,   223,    17,    19,
1800 >     233,   233,   129,   226,   233,   227,   233,   233,   233,   223,
1801 >     233,   233,   233,   227,    33,   137,   215,   216,   217,   232,
1802 >     219,   220,   221,   236,    73,   234,   225,   234,   195,   112,
1803 >      58,   230,   154,   175,   233,   157,   158,    65,     1,    67,
1804 >       3,   232,     5,   235,   122,   236,   234,    67,    67,   234,
1805 >     625,   234,   130,   131,    17,   630,   223,   234,   633,   203,
1806 >     204,   183,   637,   234,    84,    85,    86,    87,    88,   235,
1807 >      33,   235,    92,   151,   179,   180,    96,   235,   200,   201,
1808 >     202,   235,   102,   102,   226,   235,   135,   235,   235,   235,
1809 >     235,   232,   235,   113,   114,    58,   235,    60,   126,   235,
1810 >     232,   235,   235,   122,    67,   125,   228,   229,   232,   235,
1811 >     235,   233,   235,   232,     1,    78,   165,   235,   235,   138,
1812 >     235,   235,   235,   172,   235,   235,   235,   147,   235,   235,
1813 >      17,   235,   181,   235,   235,   235,   155,   156,   235,   102,
1814 >     235,   235,   235,   235,   235,   235,    33,   235,   235,   227,
1815 >     235,   235,   127,   235,   235,   233,   235,   127,   207,     1,
1816 >     209,   210,   235,   126,     6,     7,   186,   235,   235,   235,
1817 >      12,   235,   235,   235,   235,   224,   235,   235,    20,    21,
1818 >      67,   235,   231,   146,   235,    27,   205,   235,    30,    31,
1819 >     235,     1,   155,   235,    36,   235,   235,   235,   235,    41,
1820 >      42,   235,    44,    45,    46,     1,    48,    17,   227,   235,
1821 >     235,   235,   235,   233,   233,    57,   175,   235,   235,    61,
1822 >      62,   235,   235,    33,   235,   235,   235,   235,   235,    25,
1823 >      72,   235,   235,   235,   235,   122,   235,   200,   235,   235,
1824 >      82,   235,   235,   130,   131,   235,   235,    89,   235,    91,
1825 >     235,    93,   235,    95,   235,    97,    98,    67,   235,   127,
1826 >     112,   112,   214,    59,   151,   228,   112,   112,   110,     4,
1827 >     233,   112,    68,   115,   116,   117,   112,   119,   120,   121,
1828 >     112,   112,   124,    18,   828,   829,   830,   831,   832,   833,
1829 >     834,    26,   102,   214,    90,   214,   232,   232,    94,   232,
1830 >     127,   235,    13,   235,   235,    40,   102,   235,   150,   105,
1831 >     106,   235,   122,   235,   232,   235,   214,   159,   160,   161,
1832 >     162,   163,   164,    34,   235,   235,   235,   235,   138,   235,
1833 >     235,   235,    43,   235,   235,   235,    71,  1235,    73,   235,
1834 >     227,   137,   235,   235,   235,   155,   156,   235,   214,   191,
1835 >     235,   235,   235,     1,   235,     3,   235,     5,   154,   235,
1836 >     235,   157,   158,    74,    99,   235,   235,   112,   235,    17,
1837 >     235,   214,   112,   215,   216,   217,   127,   219,   220,   221,
1838 >     214,   214,   112,   225,   112,    33,   112,   183,   230,   214,
1839 >     214,   214,   103,   104,   112,   205,   112,   132,   112,   134,
1840 >     111,   214,   112,   112,   200,   201,   202,   112,     1,   235,
1841 >      58,   214,    60,   235,   214,   214,   214,   227,   153,    67,
1842 >     214,   214,    15,    16,   214,   136,    19,   214,   127,   112,
1843 >      78,   214,   228,   229,   214,   214,   214,   172,   235,   127,
1844 >     232,   152,   177,   232,   235,   127,   181,     0,     1,   235,
1845 >      73,     4,   214,   188,   102,   232,   214,   214,   193,   235,
1846 >     235,    14,   235,   235,    17,    18,   235,   235,   235,   235,
1847 >     235,    24,   207,   232,    67,   210,   232,   212,   126,   232,
1848 >     235,   235,    35,   235,   127,    38,    39,   235,   235,   224,
1849 >     232,    84,    85,    86,    87,    88,   231,   235,   146,    92,
1850 >     232,   235,   213,    96,   235,   127,   112,   155,   235,   102,
1851 >     235,   235,   135,    66,   235,   235,   214,   214,    71,   214,
1852 >     113,   114,   214,   127,   112,   112,    49,    80,    51,    52,
1853 >     127,   127,   125,   139,   140,   141,   142,   143,   144,   145,
1854 >     112,   127,   165,   127,   127,   127,   127,   100,   101,   172,
1855 >     127,   127,   200,   127,   147,   232,   232,   235,   181,   214,
1856 >      49,   232,    51,    52,     1,   118,   234,   127,   232,   232,
1857 >     235,   232,   232,   235,   232,   232,   232,   112,   232,   232,
1858 >     228,   232,   135,   232,   207,   232,   209,   210,   232,   235,
1859 >     232,   232,    29,   186,    49,   148,   149,   232,   232,   232,
1860 >      37,   224,   232,   112,   112,   112,   112,   112,   231,   112,
1861 >     127,   112,    49,    50,   112,   112,   169,    54,    55,    56,
1862 >     232,   235,   214,   127,   112,   127,   235,   127,   127,   182,
1863 >     232,   127,   127,   127,   127,   127,   127,   190,   232,   237,
1864 >     127,   194,    79,   166,   167,   168,   127,   170,   171,   127,
1865 >     173,   174,   232,   176,   127,   178,   214,   232,   181,   232,
1866 >     112,   184,   185,   232,   187,   232,   232,   232,   232,   192,
1867 >     232,   232,   235,   196,   197,   198,   232,   166,   167,   168,
1868 >     232,   170,   171,   206,   173,   174,   232,   176,   211,   178,
1869 >     232,   232,   181,   232,   232,   184,   185,   127,   187,   232,
1870 >     232,   232,   232,   192,   232,   232,     1,   196,   197,   198,
1871 >     232,   166,   167,   168,   232,   170,   171,   206,   173,   174,
1872 >     232,   176,   211,   178,   127,   127,   181,    22,    23,   184,
1873 >     185,   127,   187,    28,   127,   127,   127,   192,   127,   127,
1874 >     112,   196,   197,   198,   127,   127,   232,   232,   232,   232,
1875 >     232,   206,   232,   232,   127,   232,   211,   232,   232,   235,
1876 >     232,   232,   232,   232,   232,   232,   232,   232,    63,    64,
1877 >     232,   232,   232,   232,    69,    70,   232,   127,   232,   232,
1878 >      75,    76,    77,   232,   232,   232,   232,   232,    83,    84,
1879 >     232,   232,   214,   127,   127,   127,   214,   235,   127,   232,
1880 >     127,   127,   127,   232,   232,   232,   232,   232,   232,   232,
1881 >     127,   232,   232,   108,   109,   232,   232,   232,   232,   232,
1882 >     232,   232,   232,   232,   232,   232,   232,   232,   232,   127,
1883 >     127,   232,   232,   112,   232,   232,   235,   232,   127,   133,
1884 >     133,   235,   232,   133,  1047,   232,   232,   232,   232,    74,
1885 >    1311,   232,   232,   232,   232,   232,   232,   232,   232,  1049,
1886 >     296,   232,   232,   232,   232,   232,   232,   232,   232,   232,
1887 >     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
1888 >     232,   232,   511,   232,   232,   232,   232,   232,   232,   232,
1889 >     232,   232,   232,   232,   232,  1060,   232,   232,   222,   236,
1890 >     526,   232,   232,  1275,   232,  1273,  1254,   347,  1265,   232,
1891 >     232,   232,   232,   232,   232,   542,   232,   232,   232,   232,
1892 >     498,  1157,   232,   235,   235,   232,   232,   475,   237,   237,
1893 >     235,   232,   232,   232,  1263,  1284,   232,   228,   597,  1277,
1894 >    1259,   581,   381,   488,   115,  1127,   410,   170,    94,   400,
1895 >    1125,    -1,   244,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1896 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   273,
1897        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1898        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2172      -1,    -1,    -1,   243,    -1,    -1,    -1,    -1,    -1,    -1,
1899        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1900 <      -1,    -1,   267,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2175 <      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2176 <      -1,    -1,    -1,    -1,    -1,    -1,   288
1900 >     303
1901   };
1902  
1903 < /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1904 <   symbol of state STATE-NUM.  */
1903 >  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1904 >     symbol of state STATE-NUM.  */
1905   static const yytype_uint16 yystos[] =
1906   {
1907 <       0,   221,     0,     1,     4,    14,    17,    18,    23,    34,
1908 <      38,    39,    48,    62,    70,    71,    88,   102,   136,   145,
1909 <     146,   149,   150,   201,   222,   227,   232,   254,   260,   274,
1910 <     292,   310,   324,   339,   346,   350,   360,   369,   389,   399,
1911 <     405,   409,   419,   477,   494,   215,   216,   217,   217,   293,
1912 <     370,   400,   217,   410,   217,   325,   390,   311,   217,   217,
1913 <     275,   340,   217,   217,   351,   361,   217,     1,    24,    31,
1914 <      89,   255,   256,   257,   258,   259,     1,    21,    22,    27,
1915 <      66,    67,    73,    74,    75,    95,    96,   108,   109,   119,
1916 <     127,   478,   479,   480,   481,   482,   483,   484,   485,   486,
1917 <     487,   488,   489,   490,   491,   492,   493,   217,   217,   217,
1918 <       1,    61,   406,   407,   408,   217,     1,     6,     7,    12,
1919 <      20,    26,    28,    29,    30,    35,    41,    42,    44,    45,
1920 <      46,    50,    55,    59,    60,    63,    72,    79,    80,    82,
1921 <      83,    84,    85,    86,    97,   103,   104,   105,   107,   110,
1922 <     111,   114,   148,   152,   155,   156,   157,   158,   159,   162,
1923 <     163,   202,   203,   204,   207,   212,   420,   421,   422,   423,
1924 <     424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
1925 <     434,   435,   436,   437,   438,   439,   440,   441,   442,   443,
1926 <     444,   445,   446,   447,   448,   449,   450,   451,   452,   453,
1907 >       0,   239,     0,     1,     4,    14,    17,    18,    24,    35,
1908 >      38,    39,    66,    71,    80,   100,   101,   118,   135,   148,
1909 >     149,   169,   182,   190,   194,   240,   245,   250,   275,   281,
1910 >     287,   301,   321,   345,   359,   374,   381,   385,   395,   404,
1911 >     425,   431,   437,   441,   447,   506,   523,   232,   233,   234,
1912 >     234,   322,   405,   432,   234,   442,   234,   360,   426,   346,
1913 >     234,   282,   302,   375,   234,   234,   396,   234,   234,   386,
1914 >       1,    25,    32,   102,   276,   277,   278,   279,   280,     1,
1915 >      22,    23,    28,    63,    64,    69,    70,    75,    76,    77,
1916 >      83,    84,   108,   109,   507,   508,   509,   510,   511,   512,
1917 >     513,   514,   515,   516,   517,   518,   519,   520,   521,   522,
1918 >     234,   234,   234,     1,    65,   438,   439,   440,   234,     1,
1919 >       6,     7,    12,    20,    21,    27,    30,    31,    36,    41,
1920 >      42,    44,    45,    46,    48,    57,    61,    62,    72,    82,
1921 >      89,    91,    93,    95,    97,    98,   110,   115,   116,   117,
1922 >     119,   120,   121,   124,   150,   159,   160,   161,   162,   163,
1923 >     164,   191,   215,   216,   217,   219,   220,   221,   225,   230,
1924 >     448,   449,   450,   451,   452,   453,   454,   455,   456,   457,
1925 >     458,   459,   460,   461,   462,   463,   464,   465,   466,   467,
1926 >     468,   469,   470,   471,   472,   473,   474,   475,   476,   477,
1927 >     478,   479,   480,   481,   482,   483,   484,   485,   486,   487,
1928 >     488,   489,   490,   491,   492,   493,   494,   495,   499,   503,
1929 >     504,   505,   234,   234,   234,     1,    99,   123,   246,   247,
1930 >     248,   249,   234,   234,   234,     1,    29,    37,    49,    50,
1931 >      54,    55,    56,    79,   524,   525,   526,   527,   528,   529,
1932 >     530,   531,   532,   533,     1,    25,    59,    68,    90,    94,
1933 >     102,   105,   106,   137,   154,   157,   158,   183,   200,   201,
1934 >     202,   228,   229,   251,   252,   253,   254,   259,   260,   261,
1935 >     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
1936 >     272,   273,   274,   234,     1,   226,   288,   289,   290,   291,
1937 >     292,     1,   102,   382,   383,   384,   234,   232,   235,   235,
1938 >     235,   233,   277,   235,   235,   235,   235,   235,   235,   235,
1939 >     235,   235,   235,   235,   235,   235,   235,   233,   508,     1,
1940 >      15,    16,    19,    67,    84,    85,    86,    87,    88,    92,
1941 >      96,   102,   113,   114,   125,   147,   186,   323,   324,   325,
1942 >     326,   327,   328,   329,   330,   331,   332,   333,   334,   335,
1943 >     336,   337,   338,   339,   340,   341,     1,     3,     5,    17,
1944 >      33,    58,    60,    67,    78,   102,   126,   146,   155,   200,
1945 >     228,   406,   407,   408,   409,   410,   411,   412,   413,   414,
1946 >     415,   416,   420,   421,   422,   423,   424,     1,    65,   129,
1947 >     433,   434,   435,   436,   235,   233,   439,     1,   102,   129,
1948 >     443,   444,   445,   446,   235,   235,   235,   235,   235,   235,
1949 >     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
1950 >     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
1951 >     235,   500,   235,   496,   235,   235,   235,   235,   235,   235,
1952 >     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
1953 >     235,   235,   235,   235,   233,   449,     1,    17,    33,    67,
1954 >     122,   130,   131,   151,   227,   361,   362,   363,   364,   365,
1955 >     366,   367,   371,   372,   373,     1,   129,   227,   427,   428,
1956 >     429,   430,     1,    58,    65,    67,   126,   347,   351,   352,
1957 >     353,   357,   358,   232,   235,   235,   233,   247,     1,    81,
1958 >     175,   283,   284,   285,   286,     1,    17,    33,    67,   102,
1959 >     122,   138,   155,   156,   205,   227,   303,   304,   305,   306,
1960 >     307,   308,   309,   310,   311,   312,   313,   317,     1,    35,
1961 >      81,   129,   376,   377,   378,   379,   380,   235,   235,   235,
1962 >     235,   235,   235,   235,   235,   233,   525,   232,   235,   235,
1963 >     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
1964 >     235,   235,   235,   235,   235,   235,   233,   252,     1,   102,
1965 >     223,   397,   398,   399,   400,   232,   235,   233,   289,   175,
1966 >     235,   233,   383,     1,   102,   223,   227,   387,   388,   389,
1967 >     390,   391,   127,   127,   127,   232,   112,   112,   214,   112,
1968 >     112,   242,   112,   242,   112,   242,   242,   112,   112,   214,
1969 >     214,   232,   232,   235,   235,   235,   342,   235,   235,   235,
1970 >     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
1971 >     233,   324,   232,   235,   235,   235,   235,   235,   235,   417,
1972 >     235,   235,   235,   235,   235,   235,   235,   233,   407,   235,
1973 >     235,   233,   434,   127,   232,   235,   235,   233,   444,   214,
1974 >     242,   242,   214,   112,   214,   112,   127,   214,   242,   214,
1975 >     112,   112,   242,   112,   214,   214,   214,   242,   112,   112,
1976 >     242,   112,   112,   112,   112,   214,   235,   214,   235,   214,
1977 >     242,   242,   214,   214,   214,   214,   218,   214,   218,   214,
1978 >     214,   214,   127,   112,   242,   214,   214,   242,   242,   214,
1979 >     214,   232,   232,   235,   235,   368,   235,   235,   235,   235,
1980 >     235,   233,   362,   235,   235,   233,   428,   232,   235,   235,
1981 >     348,   235,   233,   352,   127,   127,   232,   232,   235,   235,
1982 >     233,   284,   232,   235,   235,   318,   235,   235,   235,   235,
1983 >     235,   314,   235,   233,   304,   232,   235,   235,   235,   233,
1984 >     377,   214,   214,   214,   127,   214,   214,   214,   242,   232,
1985 >     127,   214,   127,   112,   112,   127,   127,   127,   127,   127,
1986 >     127,   127,   112,   127,   203,   204,   255,   256,   203,   204,
1987 >     257,   258,   127,   127,   232,   232,   235,   401,   233,   398,
1988 >     214,   232,   234,   127,   232,   232,   235,   392,   235,   233,
1989 >     388,   232,   232,   232,   232,   232,   232,   232,   139,   140,
1990 >     141,   142,   143,   144,   145,   241,   242,   232,   232,   232,
1991 >     232,   232,   232,   232,   232,   232,   232,   112,   112,   242,
1992 >     235,   112,   112,   112,   242,   112,   112,   242,   127,   112,
1993 >     112,   242,   112,   244,   244,   232,   127,   179,   180,   127,
1994 >     214,   127,   127,   235,   127,   127,   112,   127,   127,   127,
1995 >     127,   232,   127,   127,   232,   232,   127,   127,   232,   232,
1996 >     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
1997 >     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
1998 >     232,   232,   232,   232,   232,   232,    49,   166,   167,   168,
1999 >     170,   171,   173,   174,   176,   178,   181,   184,   185,   187,
2000 >     192,   196,   197,   198,   206,   211,   501,   502,   232,    49,
2001 >      51,    52,   166,   167,   168,   170,   171,   173,   174,   176,
2002 >     178,   181,   184,   185,   187,   192,   196,   197,   198,   206,
2003 >     211,   497,   498,   232,   232,   232,   232,   232,   232,   232,
2004 >     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
2005 >     232,   232,   232,   232,   232,   127,   214,   235,   127,   112,
2006 >     127,   127,   127,   232,   127,   127,   232,   127,   127,   235,
2007 >     112,   355,   356,   232,   232,   232,   127,   127,   232,   127,
2008 >     214,   235,   127,   127,   127,   127,   214,   235,   127,   232,
2009 >     127,   127,   127,   232,   232,   232,   232,   232,   232,   232,
2010 >     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
2011 >     232,   232,   232,   232,   232,   232,   232,   236,   232,   236,
2012 >     232,   232,   127,   235,   232,   232,     1,   102,   195,   223,
2013 >     293,   294,   295,   296,   297,   232,   127,   235,   127,   232,
2014 >     241,   241,   241,   241,   241,   241,   241,   232,   232,   232,
2015 >      53,   128,   343,   344,   232,   232,   232,   232,   232,   232,
2016 >     232,   232,   232,   232,   232,     9,    10,    11,   243,   244,
2017 >     232,   232,   232,   232,   232,   232,   232,   232,   232,     8,
2018 >     199,   418,   419,   232,   232,   232,   232,   232,   232,   232,
2019 >     232,   232,   232,   232,   232,   236,   232,   236,   232,   232,
2020 >      13,    34,    43,    74,   103,   104,   111,   136,   152,   213,
2021 >     369,   370,   232,   232,   232,   232,   232,   232,   232,   232,
2022 >     232,    49,   189,   199,   349,   350,   222,   236,   354,   232,
2023 >     232,   232,   232,     4,    18,    26,    40,    71,    73,    99,
2024 >     132,   134,   153,   172,   177,   181,   188,   193,   207,   210,
2025 >     212,   224,   231,   319,   320,   232,   232,   232,   232,   232,
2026 >      49,    51,    52,   166,   167,   168,   170,   171,   173,   174,
2027 >     176,   178,   181,   184,   185,   187,   192,   196,   197,   198,
2028 >     206,   211,   315,   316,   232,   232,   232,   232,   256,   258,
2029 >     232,    73,   135,   165,   172,   181,   207,   209,   210,   224,
2030 >     231,   402,   403,   232,   235,   235,   298,   233,   294,   232,
2031 >      73,   135,   165,   172,   181,   207,   209,   210,   224,   231,
2032 >     393,   394,   232,   232,   236,   243,   243,   243,   232,   236,
2033 >     502,   498,   232,   236,   232,   236,   112,   356,   232,   237,
2034 >     237,   237,   232,   236,   232,   236,   232,   236,   127,   208,
2035 >     244,   235,   232,   232,   236,   344,   419,   370,   350,   133,
2036 >     133,   133,   320,   316,   403,   232,   232,   232,    40,    71,
2037 >      73,   118,   135,   171,   172,   227,   231,   299,   300,   394,
2038 >     232,   236,   300
2039 > };
2040 >
2041 >  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
2042 > static const yytype_uint16 yyr1[] =
2043 > {
2044 >       0,   238,   239,   239,   240,   240,   240,   240,   240,   240,
2045 >     240,   240,   240,   240,   240,   240,   240,   240,   240,   240,
2046 >     240,   240,   240,   240,   240,   240,   240,   241,   241,   242,
2047 >     242,   242,   242,   242,   242,   242,   242,   243,   243,   244,
2048 >     244,   244,   244,   245,   246,   246,   247,   247,   247,   248,
2049 >     249,   250,   251,   251,   252,   252,   252,   252,   252,   252,
2050 >     252,   252,   252,   252,   252,   252,   252,   252,   252,   252,
2051 >     252,   252,   252,   253,   254,   255,   255,   256,   256,   257,
2052 >     257,   258,   258,   259,   260,   261,   262,   263,   264,   265,
2053 >     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
2054 >     276,   276,   277,   277,   277,   277,   278,   279,   280,   282,
2055 >     281,   283,   283,   284,   284,   284,   285,   286,   287,   288,
2056 >     288,   289,   289,   289,   290,   292,   291,   293,   293,   294,
2057 >     294,   294,   294,   295,   296,   296,   298,   297,   299,   299,
2058 >     300,   300,   300,   300,   300,   300,   300,   300,   300,   302,
2059 >     301,   303,   303,   304,   304,   304,   304,   304,   304,   304,
2060 >     304,   304,   304,   304,   305,   306,   307,   308,   309,   310,
2061 >     311,   312,   314,   313,   315,   315,   316,   316,   316,   316,
2062 >     316,   316,   316,   316,   316,   316,   316,   316,   316,   316,
2063 >     316,   316,   316,   316,   316,   316,   316,   316,   318,   317,
2064 >     319,   319,   320,   320,   320,   320,   320,   320,   320,   320,
2065 >     320,   320,   320,   320,   320,   320,   320,   320,   320,   320,
2066 >     320,   320,   320,   320,   320,   322,   321,   323,   323,   324,
2067 >     324,   324,   324,   324,   324,   324,   324,   324,   324,   324,
2068 >     324,   324,   324,   324,   324,   324,   324,   325,   326,   327,
2069 >     328,   329,   330,   331,   332,   333,   334,   335,   336,   337,
2070 >     338,   339,   340,   342,   341,   343,   343,   344,   344,   346,
2071 >     345,   348,   347,   349,   349,   350,   350,   350,   351,   351,
2072 >     352,   352,   352,   352,   352,   354,   353,   355,   355,   356,
2073 >     356,   357,   358,   360,   359,   361,   361,   362,   362,   362,
2074 >     362,   362,   362,   362,   362,   362,   363,   364,   365,   366,
2075 >     368,   367,   369,   369,   370,   370,   370,   370,   370,   370,
2076 >     370,   370,   370,   370,   371,   372,   373,   375,   374,   376,
2077 >     376,   377,   377,   377,   377,   378,   379,   380,   381,   382,
2078 >     382,   383,   383,   384,   386,   385,   387,   387,   388,   388,
2079 >     388,   388,   389,   390,   392,   391,   393,   393,   394,   394,
2080 >     394,   394,   394,   394,   394,   394,   394,   394,   396,   395,
2081 >     397,   397,   398,   398,   398,   399,   401,   400,   402,   402,
2082 >     403,   403,   403,   403,   403,   403,   403,   403,   403,   403,
2083 >     405,   404,   406,   406,   407,   407,   407,   407,   407,   407,
2084 >     407,   407,   407,   407,   407,   407,   407,   407,   407,   408,
2085 >     409,   410,   411,   412,   413,   414,   415,   415,   417,   416,
2086 >     418,   418,   419,   419,   420,   421,   422,   423,   424,   426,
2087 >     425,   427,   427,   428,   428,   428,   429,   430,   432,   431,
2088 >     433,   433,   434,   434,   434,   435,   436,   437,   438,   438,
2089 >     439,   439,   440,   442,   441,   443,   443,   444,   444,   444,
2090 >     445,   446,   447,   448,   448,   449,   449,   449,   449,   449,
2091 >     449,   449,   449,   449,   449,   449,   449,   449,   449,   449,
2092 >     449,   449,   449,   449,   449,   449,   449,   449,   449,   449,
2093 >     449,   449,   449,   449,   449,   449,   449,   449,   449,   449,
2094 >     449,   449,   449,   449,   449,   449,   449,   449,   449,   449,
2095 >     449,   449,   449,   449,   449,   449,   450,   451,   452,   453,
2096       454,   455,   456,   457,   458,   459,   460,   461,   462,   463,
2097 <     464,   465,   466,   470,   474,   475,   476,   217,   217,   217,
2098 <       1,   208,   261,   262,   263,   264,   265,     1,    87,   113,
2099 <     228,   229,   230,   231,   217,   217,     1,    37,    51,    52,
2100 <      53,    54,    69,   495,   496,   497,   498,   499,   500,   501,
2101 <     502,     1,    24,    57,    89,    91,    92,   128,   130,   131,
2102 <     132,   133,   147,   171,   181,   209,   210,   233,   234,   235,
2103 <     236,   241,   242,   243,   244,   245,   246,   247,   248,   249,
2104 <     250,   251,   252,   253,   217,   217,     1,    89,   347,   348,
2105 <     349,   215,   218,   218,   218,   216,   256,   218,   218,   218,
2106 <     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
2107 <     218,   216,   479,     1,    15,    16,    19,    76,    77,    78,
2108 <      81,    89,   100,   101,   115,   116,   143,   184,   294,   295,
2109 <     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
2110 <     306,   307,   308,   309,     1,     3,     5,    17,    32,    36,
2111 <      56,    58,    68,    89,   117,   144,   171,   209,   371,   372,
2112 <     373,   374,   375,   376,   377,   378,   379,   380,   384,   385,
2113 <     386,   387,   388,     1,    61,   120,   401,   402,   403,   404,
2114 <     218,   216,   407,     1,    89,   120,   151,   411,   415,   416,
2115 <     417,   418,   218,   218,   218,   218,   218,   218,   218,   218,
2116 <     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
2117 <     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
2118 <     218,   471,   218,   467,   218,   218,   218,   218,   218,   218,
2119 <     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
2120 <     218,   216,   421,     1,    17,    32,    36,   112,   121,   122,
2121 <     153,   206,   326,   327,   328,   329,   330,   331,   332,   336,
2122 <     337,   338,     1,   120,   151,   206,   391,   395,   396,   397,
2123 <     398,     1,    36,    56,    61,   117,   312,   316,   317,   318,
2124 <     322,   323,   215,   218,   216,   262,   214,   215,   218,   218,
2125 <     216,   229,     1,    17,    32,    36,    89,   112,   129,   192,
2126 <     206,   276,   277,   278,   279,   280,   281,   282,   283,   284,
2127 <     288,     1,    14,    93,   120,   341,   342,   343,   344,   345,
2128 <     218,   218,   218,   218,   218,   218,   216,   496,   215,   218,
2129 <     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
2130 <     218,   218,   218,   218,   216,   234,     1,    89,   151,   206,
2131 <     352,   353,   354,   355,   356,     1,    89,   151,   362,   363,
2132 <     364,   365,   218,   216,   348,   118,   118,   118,   215,    99,
2133 <      99,   160,    99,   224,   224,    99,    99,    99,   160,   160,
2134 <      99,   224,   160,   160,   215,   215,   218,   218,   218,   218,
2135 <     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
2136 <     216,   295,   215,   218,   218,   218,   218,   381,   218,   218,
2137 <     218,   218,   218,   218,   218,   218,   216,   372,   218,   218,
2138 <     216,   402,   118,   215,   218,   218,   412,   216,   416,   160,
2139 <     224,   224,    99,   160,   160,    99,   118,   160,   224,   160,
2140 <     224,    99,    99,    99,   160,   160,   160,   224,    99,    99,
2141 <     224,    99,    99,   118,    99,    99,   160,   160,   218,   160,
2142 <     218,   224,   224,   160,   160,   160,   160,   160,   161,   160,
2143 <     161,   160,   160,   224,   224,   118,   224,   160,   160,   160,
2144 <     215,   215,   218,   218,   333,   218,   218,   218,   218,   218,
2145 <     216,   327,   218,   392,   218,   216,   396,   215,   313,   218,
2146 <     218,   218,   216,   317,   160,   215,   217,   118,   118,   215,
2147 <     215,   218,   218,   289,   218,   218,   218,   285,   218,   216,
2148 <     277,   215,   218,   218,   218,   216,   342,   160,   160,   118,
2149 <     160,   160,   224,   215,   118,   160,   118,   118,   118,   118,
2150 <     118,   118,   134,   135,   237,   238,   134,   135,   239,   240,
2151 <     118,   118,    99,   118,   118,   215,   215,   218,   357,   218,
2152 <     216,   353,   215,   218,   366,   216,   363,   118,   215,   215,
2153 <     215,   215,   215,   215,   215,   138,   139,   140,   141,   142,
2154 <     223,   224,   215,   215,   215,   215,   215,   215,   215,   215,
2155 <     215,   215,   215,    99,    99,   224,    99,    99,    99,    99,
2156 <     118,    99,    99,   224,   224,    99,   226,   226,   215,   118,
2157 <     178,   179,   118,   160,   218,   118,   118,   118,   118,    99,
2158 <     118,   118,   118,   215,   118,   118,   215,   215,   118,   118,
2159 <     218,   215,   215,   215,   215,   215,   215,   215,   215,   215,
2160 <     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
2161 <     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
2162 <     215,    51,   166,   167,   168,   169,   170,   172,   173,   175,
2163 <     176,   177,   180,   182,   183,   185,   187,   189,   190,   193,
2164 <     199,   472,   473,   215,    51,   166,   167,   168,   169,   170,
2165 <     172,   173,   175,   176,   177,   180,   182,   183,   185,   187,
2166 <     189,   190,   193,   199,   468,   469,   215,   215,   215,   215,
2167 <     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
2168 <     215,   215,   215,   215,   215,   118,   160,   218,   118,    99,
2169 <     118,   118,   118,   215,   118,   218,   118,   215,   218,   118,
2170 <     118,    99,   320,   321,   215,   215,     1,    89,   151,   213,
2171 <     266,   267,   268,   269,   270,   215,   215,   118,   160,   218,
2172 <     118,   118,   118,   218,   118,   215,   118,   118,   118,   215,
2173 <     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
2174 <     215,   215,   215,   215,   215,   219,   215,   219,   215,   215,
2175 <     215,   215,   215,   118,   218,   118,   215,   118,   218,   215,
2176 <     215,   223,   223,   223,   223,   223,   215,   215,   215,   215,
2177 <     215,   215,   215,   215,   215,   215,   215,   215,     9,    10,
2178 <      11,   225,   226,   215,   215,   215,   215,   215,   215,   215,
2179 <       8,   191,   382,   383,   215,   215,   215,   215,   215,   215,
2180 <     215,   215,   215,   215,   215,   215,   123,   413,   414,   215,
2181 <     219,   215,   219,   215,   215,    13,    33,    43,    49,    65,
2182 <      90,    98,   137,   154,   334,   335,   215,   215,   215,   215,
2290 <     215,   215,   123,   393,   394,   215,    51,   186,   191,   314,
2291 <     315,   215,   215,   164,   219,   319,   215,   218,   271,   218,
2292 <     216,   267,   215,   215,     4,    25,    40,    47,    64,    87,
2293 <      94,   106,   124,   125,   126,   174,   183,   188,   194,   198,
2294 <     200,   205,   211,   290,   291,   215,   215,   215,    51,   166,
2295 <     167,   168,   169,   170,   172,   173,   175,   176,   177,   180,
2296 <     182,   183,   185,   187,   189,   190,   193,   199,   286,   287,
2297 <     215,   215,   215,   215,   238,   240,   215,    64,   136,   165,
2298 <     174,   180,   194,   196,   197,   205,   211,   358,   359,   215,
2299 <     215,    64,   136,   165,   174,   180,   194,   196,   197,   205,
2300 <     211,   367,   368,   225,   225,   225,   215,   219,   215,   219,
2301 <     473,   469,   215,   219,   215,   219,   215,   219,    99,   321,
2302 <     215,   118,   218,   195,   226,   215,   215,   219,   215,   219,
2303 <     215,   219,   215,   219,   383,   414,   335,   394,   315,   215,
2304 <      40,    62,    64,   102,   173,   174,   206,   272,   273,   215,
2305 <     215,   291,   287,   359,   368,   215,   219,   273
2097 >     464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
2098 >     474,   475,   476,   476,   477,   477,   478,   479,   480,   481,
2099 >     482,   483,   484,   485,   486,   487,   488,   489,   490,   491,
2100 >     492,   493,   494,   496,   495,   497,   497,   498,   498,   498,
2101 >     498,   498,   498,   498,   498,   498,   498,   498,   498,   498,
2102 >     498,   498,   498,   498,   498,   498,   498,   498,   498,   500,
2103 >     499,   501,   501,   502,   502,   502,   502,   502,   502,   502,
2104 >     502,   502,   502,   502,   502,   502,   502,   502,   502,   502,
2105 >     502,   502,   502,   503,   504,   505,   506,   507,   507,   508,
2106 >     508,   508,   508,   508,   508,   508,   508,   508,   508,   508,
2107 >     508,   508,   508,   508,   509,   510,   511,   512,   513,   514,
2108 >     515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
2109 >     524,   525,   525,   525,   525,   525,   525,   525,   525,   525,
2110 >     526,   527,   528,   529,   530,   531,   532,   533
2111 > };
2112 >
2113 >  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
2114 > static const yytype_uint8 yyr2[] =
2115 > {
2116 >       0,     2,     0,     2,     1,     1,     1,     1,     1,     1,
2117 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2118 >       1,     1,     1,     1,     1,     2,     2,     0,     1,     2,
2119 >       3,     3,     3,     3,     3,     3,     3,     0,     1,     2,
2120 >       3,     3,     3,     5,     2,     1,     1,     1,     2,     4,
2121 >       4,     5,     2,     1,     1,     1,     1,     1,     1,     1,
2122 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2123 >       1,     1,     2,     4,     4,     3,     1,     1,     1,     3,
2124 >       1,     1,     1,     4,     4,     4,     4,     4,     4,     4,
2125 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     5,
2126 >       2,     1,     1,     1,     1,     2,     4,     4,     4,     0,
2127 >       6,     2,     1,     1,     1,     2,     4,     4,     5,     2,
2128 >       1,     1,     1,     2,     4,     0,     6,     2,     1,     1,
2129 >       1,     1,     2,     4,     4,     4,     0,     5,     3,     1,
2130 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
2131 >       6,     2,     1,     1,     1,     1,     1,     1,     1,     1,
2132 >       1,     1,     1,     2,     4,     4,     4,     4,     4,     4,
2133 >       4,     4,     0,     5,     3,     1,     1,     1,     1,     1,
2134 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2135 >       1,     1,     1,     1,     1,     1,     1,     1,     0,     5,
2136 >       3,     1,     3,     1,     3,     1,     3,     1,     1,     1,
2137 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2138 >       1,     1,     1,     1,     1,     0,     6,     2,     1,     1,
2139 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2140 >       1,     1,     1,     1,     1,     1,     2,     4,     4,     4,
2141 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2142 >       4,     4,     4,     0,     5,     3,     1,     1,     1,     0,
2143 >       6,     0,     5,     3,     1,     1,     1,     1,     2,     1,
2144 >       1,     1,     1,     1,     2,     0,     5,     3,     1,     1,
2145 >       3,     4,     4,     0,     6,     2,     1,     1,     1,     1,
2146 >       1,     1,     1,     1,     1,     2,     4,     4,     4,     4,
2147 >       0,     5,     3,     1,     1,     1,     1,     1,     1,     1,
2148 >       1,     1,     1,     1,     4,     4,     4,     0,     6,     2,
2149 >       1,     1,     1,     1,     2,     4,     4,     4,     5,     2,
2150 >       1,     1,     1,     4,     0,     6,     2,     1,     1,     1,
2151 >       1,     2,     4,     4,     0,     5,     3,     1,     1,     1,
2152 >       1,     1,     1,     1,     1,     1,     1,     1,     0,     6,
2153 >       2,     1,     1,     1,     2,     4,     0,     5,     3,     1,
2154 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2155 >       0,     6,     2,     1,     1,     1,     1,     1,     1,     1,
2156 >       1,     1,     1,     1,     1,     1,     1,     1,     2,     4,
2157 >       4,     4,     4,     4,     4,     4,     4,     4,     0,     5,
2158 >       3,     1,     1,     1,     4,     4,     4,     4,     4,     0,
2159 >       6,     2,     1,     1,     1,     1,     4,     4,     0,     6,
2160 >       2,     1,     1,     1,     1,     4,     4,     5,     2,     1,
2161 >       1,     1,     4,     0,     6,     2,     1,     1,     1,     1,
2162 >       4,     4,     5,     2,     1,     1,     1,     1,     1,     1,
2163 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2164 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2165 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2166 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2167 >       1,     1,     1,     1,     1,     1,     4,     4,     4,     4,
2168 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2169 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2170 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2171 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2172 >       4,     4,     4,     0,     5,     3,     1,     1,     1,     1,
2173 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2174 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
2175 >       5,     3,     1,     1,     1,     1,     1,     1,     1,     1,
2176 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2177 >       1,     1,     1,     4,     4,     4,     5,     2,     1,     1,
2178 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2179 >       1,     1,     1,     1,     4,     4,     4,     4,     4,     4,
2180 >       4,     4,     4,     4,     4,     4,     4,     4,     5,     2,
2181 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2182 >       4,     4,     4,     4,     4,     4,     4,     4
2183   };
2184  
2185 < #define yyerrok         (yyerrstatus = 0)
2186 < #define yyclearin       (yychar = YYEMPTY)
2187 < #define YYEMPTY         (-2)
2188 < #define YYEOF           0
2189 <
2190 < #define YYACCEPT        goto yyacceptlab
2191 < #define YYABORT         goto yyabortlab
2192 < #define YYERROR         goto yyerrorlab
2193 <
2194 <
2318 < /* Like YYERROR except do call yyerror.  This remains here temporarily
2319 <   to ease the transition to the new meaning of YYERROR, for GCC.
2320 <   Once GCC version 2 has supplanted version 1, this can go.  However,
2321 <   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
2322 <   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
2323 <   discussed.  */
2324 <
2325 < #define YYFAIL          goto yyerrlab
2326 < #if defined YYFAIL
2327 <  /* This is here to suppress warnings from the GCC cpp's
2328 <     -Wunused-macros.  Normally we don't worry about that warning, but
2329 <     some users do, and we want to make it easy for users to remove
2330 <     YYFAIL uses, which will produce warnings from Bison 2.5.  */
2331 < #endif
2185 >
2186 > #define yyerrok         (yyerrstatus = 0)
2187 > #define yyclearin       (yychar = YYEMPTY)
2188 > #define YYEMPTY         (-2)
2189 > #define YYEOF           0
2190 >
2191 > #define YYACCEPT        goto yyacceptlab
2192 > #define YYABORT         goto yyabortlab
2193 > #define YYERROR         goto yyerrorlab
2194 >
2195  
2196   #define YYRECOVERING()  (!!yyerrstatus)
2197  
# Line 2345 | Line 2208 | do
2208    else                                                          \
2209      {                                                           \
2210        yyerror (YY_("syntax error: cannot back up")); \
2211 <      YYERROR;                                                  \
2212 <    }                                                           \
2213 < while (YYID (0))
2351 <
2211 >      YYERROR;                                                  \
2212 >    }                                                           \
2213 > while (0)
2214  
2215 < #define YYTERROR        1
2216 < #define YYERRCODE       256
2215 > /* Error token number */
2216 > #define YYTERROR        1
2217 > #define YYERRCODE       256
2218  
2356 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2357   If N is 0, then set CURRENT to the empty location which ends
2358   the previous symbol: RHS[0] (always defined).  */
2219  
2360 #ifndef YYLLOC_DEFAULT
2361 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
2362    do                                                                  \
2363      if (YYID (N))                                                     \
2364        {                                                               \
2365          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
2366          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
2367          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
2368          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
2369        }                                                               \
2370      else                                                              \
2371        {                                                               \
2372          (Current).first_line   = (Current).last_line   =              \
2373            YYRHSLOC (Rhs, 0).last_line;                                \
2374          (Current).first_column = (Current).last_column =              \
2375            YYRHSLOC (Rhs, 0).last_column;                              \
2376        }                                                               \
2377    while (YYID (0))
2378 #endif
2220  
2221 < #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2221 > /* Enable debugging if requested.  */
2222 > #if YYDEBUG
2223  
2224 + # ifndef YYFPRINTF
2225 + #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2226 + #  define YYFPRINTF fprintf
2227 + # endif
2228  
2229 + # define YYDPRINTF(Args)                        \
2230 + do {                                            \
2231 +  if (yydebug)                                  \
2232 +    YYFPRINTF Args;                             \
2233 + } while (0)
2234  
2235   /* This macro is provided for backward compatibility. */
2385
2236   #ifndef YY_LOCATION_PRINT
2237   # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2238   #endif
2239  
2240  
2241 < /* YYLEX -- calling `yylex' with the right arguments.  */
2242 <
2243 < #ifdef YYLEX_PARAM
2244 < # define YYLEX yylex (YYLEX_PARAM)
2245 < #else
2246 < # define YYLEX yylex ()
2247 < #endif
2248 <
2249 < /* Enable debugging if requested.  */
2250 < #if YYDEBUG
2401 <
2402 < # ifndef YYFPRINTF
2403 < #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2404 < #  define YYFPRINTF fprintf
2405 < # endif
2406 <
2407 < # define YYDPRINTF(Args)                        \
2408 < do {                                            \
2409 <  if (yydebug)                                  \
2410 <    YYFPRINTF Args;                             \
2411 < } while (YYID (0))
2412 <
2413 < # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
2414 < do {                                                                      \
2415 <  if (yydebug)                                                            \
2416 <    {                                                                     \
2417 <      YYFPRINTF (stderr, "%s ", Title);                                   \
2418 <      yy_symbol_print (stderr,                                            \
2419 <                  Type, Value); \
2420 <      YYFPRINTF (stderr, "\n");                                           \
2421 <    }                                                                     \
2422 < } while (YYID (0))
2241 > # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
2242 > do {                                                                      \
2243 >  if (yydebug)                                                            \
2244 >    {                                                                     \
2245 >      YYFPRINTF (stderr, "%s ", Title);                                   \
2246 >      yy_symbol_print (stderr,                                            \
2247 >                  Type, Value); \
2248 >      YYFPRINTF (stderr, "\n");                                           \
2249 >    }                                                                     \
2250 > } while (0)
2251  
2252  
2253 < /*--------------------------------.
2254 < | Print this symbol on YYOUTPUT.  |
2255 < `--------------------------------*/
2253 > /*----------------------------------------.
2254 > | Print this symbol's value on YYOUTPUT.  |
2255 > `----------------------------------------*/
2256  
2429 /*ARGSUSED*/
2430 #if (defined __STDC__ || defined __C99__FUNC__ \
2431     || defined __cplusplus || defined _MSC_VER)
2257   static void
2258   yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2434 #else
2435 static void
2436 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
2437    FILE *yyoutput;
2438    int yytype;
2439    YYSTYPE const * const yyvaluep;
2440 #endif
2259   {
2260    FILE *yyo = yyoutput;
2261    YYUSE (yyo);
# Line 2446 | Line 2264 | yy_symbol_value_print (yyoutput, yytype,
2264   # ifdef YYPRINT
2265    if (yytype < YYNTOKENS)
2266      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2449 # else
2450  YYUSE (yyoutput);
2267   # endif
2268 <  switch (yytype)
2453 <    {
2454 <      default:
2455 <        break;
2456 <    }
2268 >  YYUSE (yytype);
2269   }
2270  
2271  
# Line 2461 | Line 2273 | yy_symbol_value_print (yyoutput, yytype,
2273   | Print this symbol on YYOUTPUT.  |
2274   `--------------------------------*/
2275  
2464 #if (defined __STDC__ || defined __C99__FUNC__ \
2465     || defined __cplusplus || defined _MSC_VER)
2276   static void
2277   yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2468 #else
2469 static void
2470 yy_symbol_print (yyoutput, yytype, yyvaluep)
2471    FILE *yyoutput;
2472    int yytype;
2473    YYSTYPE const * const yyvaluep;
2474 #endif
2278   {
2279 <  if (yytype < YYNTOKENS)
2280 <    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2478 <  else
2479 <    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
2279 >  YYFPRINTF (yyoutput, "%s %s (",
2280 >             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
2281  
2282    yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2283    YYFPRINTF (yyoutput, ")");
# Line 2487 | Line 2288 | yy_symbol_print (yyoutput, yytype, yyval
2288   | TOP (included).                                                   |
2289   `------------------------------------------------------------------*/
2290  
2490 #if (defined __STDC__ || defined __C99__FUNC__ \
2491     || defined __cplusplus || defined _MSC_VER)
2291   static void
2292   yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2494 #else
2495 static void
2496 yy_stack_print (yybottom, yytop)
2497    yytype_int16 *yybottom;
2498    yytype_int16 *yytop;
2499 #endif
2293   {
2294    YYFPRINTF (stderr, "Stack now");
2295    for (; yybottom <= yytop; yybottom++)
# Line 2507 | Line 2300 | yy_stack_print (yybottom, yytop)
2300    YYFPRINTF (stderr, "\n");
2301   }
2302  
2303 < # define YY_STACK_PRINT(Bottom, Top)                            \
2304 < do {                                                            \
2305 <  if (yydebug)                                                  \
2306 <    yy_stack_print ((Bottom), (Top));                           \
2307 < } while (YYID (0))
2303 > # define YY_STACK_PRINT(Bottom, Top)                            \
2304 > do {                                                            \
2305 >  if (yydebug)                                                  \
2306 >    yy_stack_print ((Bottom), (Top));                           \
2307 > } while (0)
2308  
2309  
2310   /*------------------------------------------------.
2311   | Report that the YYRULE is going to be reduced.  |
2312   `------------------------------------------------*/
2313  
2521 #if (defined __STDC__ || defined __C99__FUNC__ \
2522     || defined __cplusplus || defined _MSC_VER)
2314   static void
2315 < yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
2525 < #else
2526 < static void
2527 < yy_reduce_print (yyvsp, yyrule)
2528 <    YYSTYPE *yyvsp;
2529 <    int yyrule;
2530 < #endif
2315 > yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
2316   {
2317 +  unsigned long int yylno = yyrline[yyrule];
2318    int yynrhs = yyr2[yyrule];
2319    int yyi;
2534  unsigned long int yylno = yyrline[yyrule];
2320    YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2321 <             yyrule - 1, yylno);
2321 >             yyrule - 1, yylno);
2322    /* The symbols being reduced.  */
2323    for (yyi = 0; yyi < yynrhs; yyi++)
2324      {
2325        YYFPRINTF (stderr, "   $%d = ", yyi + 1);
2326 <      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
2327 <                       &(yyvsp[(yyi + 1) - (yynrhs)])
2328 <                                       );
2326 >      yy_symbol_print (stderr,
2327 >                       yystos[yyssp[yyi + 1 - yynrhs]],
2328 >                       &(yyvsp[(yyi + 1) - (yynrhs)])
2329 >                                              );
2330        YYFPRINTF (stderr, "\n");
2331      }
2332   }
2333  
2334 < # define YY_REDUCE_PRINT(Rule)          \
2335 < do {                                    \
2336 <  if (yydebug)                          \
2337 <    yy_reduce_print (yyvsp, Rule); \
2338 < } while (YYID (0))
2334 > # define YY_REDUCE_PRINT(Rule)          \
2335 > do {                                    \
2336 >  if (yydebug)                          \
2337 >    yy_reduce_print (yyssp, yyvsp, Rule); \
2338 > } while (0)
2339  
2340   /* Nonzero means print parse trace.  It is left uninitialized so that
2341     multiple parsers can coexist.  */
# Line 2563 | Line 2349 | int yydebug;
2349  
2350  
2351   /* YYINITDEPTH -- initial size of the parser's stacks.  */
2352 < #ifndef YYINITDEPTH
2352 > #ifndef YYINITDEPTH
2353   # define YYINITDEPTH 200
2354   #endif
2355  
# Line 2586 | Line 2372 | int yydebug;
2372   #   define yystrlen strlen
2373   #  else
2374   /* Return the length of YYSTR.  */
2589 #if (defined __STDC__ || defined __C99__FUNC__ \
2590     || defined __cplusplus || defined _MSC_VER)
2375   static YYSIZE_T
2376   yystrlen (const char *yystr)
2593 #else
2594 static YYSIZE_T
2595 yystrlen (yystr)
2596    const char *yystr;
2597 #endif
2377   {
2378    YYSIZE_T yylen;
2379    for (yylen = 0; yystr[yylen]; yylen++)
# Line 2610 | Line 2389 | yystrlen (yystr)
2389   #  else
2390   /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2391     YYDEST.  */
2613 #if (defined __STDC__ || defined __C99__FUNC__ \
2614     || defined __cplusplus || defined _MSC_VER)
2392   static char *
2393   yystpcpy (char *yydest, const char *yysrc)
2617 #else
2618 static char *
2619 yystpcpy (yydest, yysrc)
2620    char *yydest;
2621    const char *yysrc;
2622 #endif
2394   {
2395    char *yyd = yydest;
2396    const char *yys = yysrc;
# Line 2649 | Line 2420 | yytnamerr (char *yyres, const char *yyst
2420        char const *yyp = yystr;
2421  
2422        for (;;)
2423 <        switch (*++yyp)
2424 <          {
2425 <          case '\'':
2426 <          case ',':
2427 <            goto do_not_strip_quotes;
2428 <
2429 <          case '\\':
2430 <            if (*++yyp != '\\')
2431 <              goto do_not_strip_quotes;
2432 <            /* Fall through.  */
2433 <          default:
2434 <            if (yyres)
2435 <              yyres[yyn] = *yyp;
2436 <            yyn++;
2437 <            break;
2438 <
2439 <          case '"':
2440 <            if (yyres)
2441 <              yyres[yyn] = '\0';
2442 <            return yyn;
2443 <          }
2423 >        switch (*++yyp)
2424 >          {
2425 >          case '\'':
2426 >          case ',':
2427 >            goto do_not_strip_quotes;
2428 >
2429 >          case '\\':
2430 >            if (*++yyp != '\\')
2431 >              goto do_not_strip_quotes;
2432 >            /* Fall through.  */
2433 >          default:
2434 >            if (yyres)
2435 >              yyres[yyn] = *yyp;
2436 >            yyn++;
2437 >            break;
2438 >
2439 >          case '"':
2440 >            if (yyres)
2441 >              yyres[yyn] = '\0';
2442 >            return yyn;
2443 >          }
2444      do_not_strip_quotes: ;
2445      }
2446  
# Line 2692 | Line 2463 | static int
2463   yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
2464                  yytype_int16 *yyssp, int yytoken)
2465   {
2466 <  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
2466 >  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
2467    YYSIZE_T yysize = yysize0;
2697  YYSIZE_T yysize1;
2468    enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2469    /* Internationalized format string. */
2470 <  const char *yyformat = YY_NULL;
2470 >  const char *yyformat = YY_NULLPTR;
2471    /* Arguments of yyformat. */
2472    char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2473    /* Number of reported tokens (one for the "unexpected", one per
# Line 2705 | Line 2475 | yysyntax_error (YYSIZE_T *yymsg_alloc, c
2475    int yycount = 0;
2476  
2477    /* There are many possibilities here to consider:
2708     - Assume YYFAIL is not used.  It's too flawed to consider.  See
2709       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
2710       for details.  YYERROR is fine as it does not invoke this
2711       function.
2478       - If this state is a consistent state with a default action, then
2479         the only way this function was invoked is if the default action
2480         is an error action.  In that case, don't check for expected
# Line 2757 | Line 2523 | yysyntax_error (YYSIZE_T *yymsg_alloc, c
2523                      break;
2524                    }
2525                  yyarg[yycount++] = yytname[yyx];
2526 <                yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
2527 <                if (! (yysize <= yysize1
2528 <                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2529 <                  return 2;
2530 <                yysize = yysize1;
2526 >                {
2527 >                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
2528 >                  if (! (yysize <= yysize1
2529 >                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2530 >                    return 2;
2531 >                  yysize = yysize1;
2532 >                }
2533                }
2534          }
2535      }
# Line 2781 | Line 2549 | yysyntax_error (YYSIZE_T *yymsg_alloc, c
2549   # undef YYCASE_
2550      }
2551  
2552 <  yysize1 = yysize + yystrlen (yyformat);
2553 <  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2554 <    return 2;
2555 <  yysize = yysize1;
2552 >  {
2553 >    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
2554 >    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2555 >      return 2;
2556 >    yysize = yysize1;
2557 >  }
2558  
2559    if (*yymsg_alloc < yysize)
2560      {
# Line 2821 | Line 2591 | yysyntax_error (YYSIZE_T *yymsg_alloc, c
2591   | Release the memory associated to this symbol.  |
2592   `-----------------------------------------------*/
2593  
2824 /*ARGSUSED*/
2825 #if (defined __STDC__ || defined __C99__FUNC__ \
2826     || defined __cplusplus || defined _MSC_VER)
2594   static void
2595   yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2829 #else
2830 static void
2831 yydestruct (yymsg, yytype, yyvaluep)
2832    const char *yymsg;
2833    int yytype;
2834    YYSTYPE *yyvaluep;
2835 #endif
2596   {
2597    YYUSE (yyvaluep);
2838
2598    if (!yymsg)
2599      yymsg = "Deleting";
2600    YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2601  
2602 <  switch (yytype)
2603 <    {
2604 <
2846 <      default:
2847 <        break;
2848 <    }
2602 >  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2603 >  YYUSE (yytype);
2604 >  YY_IGNORE_MAYBE_UNINITIALIZED_END
2605   }
2606  
2607  
# Line 2854 | Line 2610 | yydestruct (yymsg, yytype, yyvaluep)
2610   /* The lookahead symbol.  */
2611   int yychar;
2612  
2857
2858 #ifndef YYLVAL_INITIALIZE
2859 # define YYLVAL_INITIALIZE()
2860 #endif
2861 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2862 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2863 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
2864 #endif
2865
2613   /* The semantic value of the lookahead symbol.  */
2614   YYSTYPE yylval;
2868
2615   /* Number of syntax errors so far.  */
2616   int yynerrs;
2617  
# Line 2874 | Line 2620 | int yynerrs;
2620   | yyparse.  |
2621   `----------*/
2622  
2877 #ifdef YYPARSE_PARAM
2878 #if (defined __STDC__ || defined __C99__FUNC__ \
2879     || defined __cplusplus || defined _MSC_VER)
2880 int
2881 yyparse (void *YYPARSE_PARAM)
2882 #else
2883 int
2884 yyparse (YYPARSE_PARAM)
2885    void *YYPARSE_PARAM;
2886 #endif
2887 #else /* ! YYPARSE_PARAM */
2888 #if (defined __STDC__ || defined __C99__FUNC__ \
2889     || defined __cplusplus || defined _MSC_VER)
2623   int
2624   yyparse (void)
2892 #else
2893 int
2894 yyparse ()
2895
2896 #endif
2897 #endif
2625   {
2626      int yystate;
2627      /* Number of tokens to shift before error messages enabled.  */
2628      int yyerrstatus;
2629  
2630      /* The stacks and their tools:
2631 <       `yyss': related to states.
2632 <       `yyvs': related to semantic values.
2631 >       'yyss': related to states.
2632 >       'yyvs': related to semantic values.
2633  
2634         Refer to the stacks through separate pointers, to allow yyoverflow
2635         to reallocate them elsewhere.  */
# Line 2940 | Line 2667 | yyparse ()
2667       Keep to zero when no symbol should be popped.  */
2668    int yylen = 0;
2669  
2670 <  yyss = yyssa;
2671 <  yyvs = yyvsa;
2670 >  yyssp = yyss = yyssa;
2671 >  yyvsp = yyvs = yyvsa;
2672    yystacksize = YYINITDEPTH;
2673  
2674    YYDPRINTF ((stderr, "Starting parse\n"));
# Line 2950 | Line 2677 | yyparse ()
2677    yyerrstatus = 0;
2678    yynerrs = 0;
2679    yychar = YYEMPTY; /* Cause a token to be read.  */
2953
2954  /* Initialize stack pointers.
2955     Waste one element of value and location stack
2956     so that they stay on the same level as the state stack.
2957     The wasted elements are never initialized.  */
2958  yyssp = yyss;
2959  yyvsp = yyvs;
2960
2961  YYLVAL_INITIALIZE ();
2680    goto yysetstate;
2681  
2682   /*------------------------------------------------------------.
# Line 2979 | Line 2697 | yyparse ()
2697  
2698   #ifdef yyoverflow
2699        {
2700 <        /* Give user a chance to reallocate the stack.  Use copies of
2701 <           these so that the &'s don't force the real ones into
2702 <           memory.  */
2703 <        YYSTYPE *yyvs1 = yyvs;
2704 <        yytype_int16 *yyss1 = yyss;
2705 <
2706 <        /* Each stack pointer address is followed by the size of the
2707 <           data in use in that stack, in bytes.  This used to be a
2708 <           conditional around just the two extra args, but that might
2709 <           be undefined if yyoverflow is a macro.  */
2710 <        yyoverflow (YY_("memory exhausted"),
2711 <                    &yyss1, yysize * sizeof (*yyssp),
2712 <                    &yyvs1, yysize * sizeof (*yyvsp),
2713 <                    &yystacksize);
2700 >        /* Give user a chance to reallocate the stack.  Use copies of
2701 >           these so that the &'s don't force the real ones into
2702 >           memory.  */
2703 >        YYSTYPE *yyvs1 = yyvs;
2704 >        yytype_int16 *yyss1 = yyss;
2705 >
2706 >        /* Each stack pointer address is followed by the size of the
2707 >           data in use in that stack, in bytes.  This used to be a
2708 >           conditional around just the two extra args, but that might
2709 >           be undefined if yyoverflow is a macro.  */
2710 >        yyoverflow (YY_("memory exhausted"),
2711 >                    &yyss1, yysize * sizeof (*yyssp),
2712 >                    &yyvs1, yysize * sizeof (*yyvsp),
2713 >                    &yystacksize);
2714  
2715 <        yyss = yyss1;
2716 <        yyvs = yyvs1;
2715 >        yyss = yyss1;
2716 >        yyvs = yyvs1;
2717        }
2718   #else /* no yyoverflow */
2719   # ifndef YYSTACK_RELOCATE
# Line 3003 | Line 2721 | yyparse ()
2721   # else
2722        /* Extend the stack our own way.  */
2723        if (YYMAXDEPTH <= yystacksize)
2724 <        goto yyexhaustedlab;
2724 >        goto yyexhaustedlab;
2725        yystacksize *= 2;
2726        if (YYMAXDEPTH < yystacksize)
2727 <        yystacksize = YYMAXDEPTH;
2727 >        yystacksize = YYMAXDEPTH;
2728  
2729        {
2730 <        yytype_int16 *yyss1 = yyss;
2731 <        union yyalloc *yyptr =
2732 <          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2733 <        if (! yyptr)
2734 <          goto yyexhaustedlab;
2735 <        YYSTACK_RELOCATE (yyss_alloc, yyss);
2736 <        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2730 >        yytype_int16 *yyss1 = yyss;
2731 >        union yyalloc *yyptr =
2732 >          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2733 >        if (! yyptr)
2734 >          goto yyexhaustedlab;
2735 >        YYSTACK_RELOCATE (yyss_alloc, yyss);
2736 >        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2737   #  undef YYSTACK_RELOCATE
2738 <        if (yyss1 != yyssa)
2739 <          YYSTACK_FREE (yyss1);
2738 >        if (yyss1 != yyssa)
2739 >          YYSTACK_FREE (yyss1);
2740        }
2741   # endif
2742   #endif /* no yyoverflow */
# Line 3027 | Line 2745 | yyparse ()
2745        yyvsp = yyvs + yysize - 1;
2746  
2747        YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2748 <                  (unsigned long int) yystacksize));
2748 >                  (unsigned long int) yystacksize));
2749  
2750        if (yyss + yystacksize - 1 <= yyssp)
2751 <        YYABORT;
2751 >        YYABORT;
2752      }
2753  
2754    YYDPRINTF ((stderr, "Entering state %d\n", yystate));
# Line 3059 | Line 2777 | yybackup:
2777    if (yychar == YYEMPTY)
2778      {
2779        YYDPRINTF ((stderr, "Reading a token: "));
2780 <      yychar = YYLEX;
2780 >      yychar = yylex ();
2781      }
2782  
2783    if (yychar <= YYEOF)
# Line 3124 | Line 2842 | yyreduce:
2842    yylen = yyr2[yyn];
2843  
2844    /* If YYLEN is nonzero, implement the default value of the action:
2845 <     `$$ = $1'.
2845 >     '$$ = $1'.
2846  
2847       Otherwise, the following line sets YYVAL to garbage.
2848       This behavior is undocumented and Bison
# Line 3137 | Line 2855 | yyreduce:
2855    YY_REDUCE_PRINT (yyn);
2856    switch (yyn)
2857      {
2858 <        case 26:
2859 < /* Line 1813 of yacc.c  */
3142 < #line 359 "conf_parser.y"
2858 >        case 27:
2859 > #line 412 "conf_parser.y" /* yacc.c:1646  */
2860      { (yyval.number) = 0; }
2861 <    break;
3145 <
3146 <  case 28:
3147 < /* Line 1813 of yacc.c  */
3148 < #line 361 "conf_parser.y"
3149 <    {
3150 <                        (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
3151 <                }
2861 > #line 2862 "conf_parser.c" /* yacc.c:1646  */
2862      break;
2863  
2864    case 29:
2865 < /* Line 1813 of yacc.c  */
2866 < #line 365 "conf_parser.y"
2867 <    {
3158 <                        (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
3159 <                }
2865 > #line 413 "conf_parser.y" /* yacc.c:1646  */
2866 >    { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2867 > #line 2868 "conf_parser.c" /* yacc.c:1646  */
2868      break;
2869  
2870    case 30:
2871 < /* Line 1813 of yacc.c  */
2872 < #line 369 "conf_parser.y"
2873 <    {
3166 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
3167 <                }
2871 > #line 414 "conf_parser.y" /* yacc.c:1646  */
2872 >    { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2873 > #line 2874 "conf_parser.c" /* yacc.c:1646  */
2874      break;
2875  
2876    case 31:
2877 < /* Line 1813 of yacc.c  */
2878 < #line 373 "conf_parser.y"
2879 <    {
3174 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
3175 <                }
2877 > #line 415 "conf_parser.y" /* yacc.c:1646  */
2878 >    { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
2879 > #line 2880 "conf_parser.c" /* yacc.c:1646  */
2880      break;
2881  
2882    case 32:
2883 < /* Line 1813 of yacc.c  */
2884 < #line 377 "conf_parser.y"
2885 <    {
3182 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
3183 <                }
2883 > #line 416 "conf_parser.y" /* yacc.c:1646  */
2884 >    { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
2885 > #line 2886 "conf_parser.c" /* yacc.c:1646  */
2886      break;
2887  
2888    case 33:
2889 < /* Line 1813 of yacc.c  */
2890 < #line 381 "conf_parser.y"
2891 <    {
3190 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
3191 <                }
2889 > #line 417 "conf_parser.y" /* yacc.c:1646  */
2890 >    { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
2891 > #line 2892 "conf_parser.c" /* yacc.c:1646  */
2892      break;
2893  
2894    case 34:
2895 < /* Line 1813 of yacc.c  */
2896 < #line 386 "conf_parser.y"
2897 <    { (yyval.number) = 0; }
2895 > #line 418 "conf_parser.y" /* yacc.c:1646  */
2896 >    { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
2897 > #line 2898 "conf_parser.c" /* yacc.c:1646  */
2898 >    break;
2899 >
2900 >  case 35:
2901 > #line 419 "conf_parser.y" /* yacc.c:1646  */
2902 >    { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
2903 > #line 2904 "conf_parser.c" /* yacc.c:1646  */
2904      break;
2905  
2906    case 36:
2907 < /* Line 1813 of yacc.c  */
2908 < #line 387 "conf_parser.y"
2909 <    { (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number); }
2907 > #line 420 "conf_parser.y" /* yacc.c:1646  */
2908 >    { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
2909 > #line 2910 "conf_parser.c" /* yacc.c:1646  */
2910      break;
2911  
2912    case 37:
2913 < /* Line 1813 of yacc.c  */
2914 < #line 388 "conf_parser.y"
2915 <    { (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number); }
2913 > #line 423 "conf_parser.y" /* yacc.c:1646  */
2914 >    { (yyval.number) = 0; }
2915 > #line 2916 "conf_parser.c" /* yacc.c:1646  */
2916 >    break;
2917 >
2918 >  case 39:
2919 > #line 424 "conf_parser.y" /* yacc.c:1646  */
2920 >    { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2921 > #line 2922 "conf_parser.c" /* yacc.c:1646  */
2922      break;
2923  
2924 <  case 38:
2925 < /* Line 1813 of yacc.c  */
2926 < #line 389 "conf_parser.y"
2927 <    { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 + (yyvsp[(3) - (3)].number); }
2924 >  case 40:
2925 > #line 425 "conf_parser.y" /* yacc.c:1646  */
2926 >    { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2927 > #line 2928 "conf_parser.c" /* yacc.c:1646  */
2928      break;
2929  
2930 <  case 39:
2931 < /* Line 1813 of yacc.c  */
2932 < #line 390 "conf_parser.y"
2933 <    { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 * 1024 + (yyvsp[(3) - (3)].number); }
2930 >  case 41:
2931 > #line 426 "conf_parser.y" /* yacc.c:1646  */
2932 >    { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
2933 > #line 2934 "conf_parser.c" /* yacc.c:1646  */
2934 >    break;
2935 >
2936 >  case 42:
2937 > #line 427 "conf_parser.y" /* yacc.c:1646  */
2938 >    { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
2939 > #line 2940 "conf_parser.c" /* yacc.c:1646  */
2940      break;
2941  
2942 <  case 46:
2943 < /* Line 1813 of yacc.c  */
3226 < #line 404 "conf_parser.y"
2942 >  case 49:
2943 > #line 441 "conf_parser.y" /* yacc.c:1646  */
2944      {
2945    if (conf_parser_ctx.pass == 2)
2946      add_conf_module(libio_basename(yylval.string));
2947   }
2948 + #line 2949 "conf_parser.c" /* yacc.c:1646  */
2949      break;
2950  
2951 <  case 47:
2952 < /* Line 1813 of yacc.c  */
3235 < #line 410 "conf_parser.y"
2951 >  case 50:
2952 > #line 447 "conf_parser.y" /* yacc.c:1646  */
2953      {
2954    if (conf_parser_ctx.pass == 2)
2955      mod_add_path(yylval.string);
2956   }
2957 + #line 2958 "conf_parser.c" /* yacc.c:1646  */
2958      break;
2959  
2960 <  case 71:
2961 < /* Line 1813 of yacc.c  */
3244 < #line 435 "conf_parser.y"
2960 >  case 77:
2961 > #line 482 "conf_parser.y" /* yacc.c:1646  */
2962      {
2963   #ifdef HAVE_LIBCRYPTO
2964    if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
2965      SSL_CTX_clear_options(ServerInfo.client_ctx, SSL_OP_NO_SSLv3);
2966   #endif
2967   }
2968 + #line 2969 "conf_parser.c" /* yacc.c:1646  */
2969      break;
2970  
2971 <  case 72:
2972 < /* Line 1813 of yacc.c  */
3255 < #line 441 "conf_parser.y"
2971 >  case 78:
2972 > #line 488 "conf_parser.y" /* yacc.c:1646  */
2973      {
2974   #ifdef HAVE_LIBCRYPTO
2975    if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
2976      SSL_CTX_clear_options(ServerInfo.client_ctx, SSL_OP_NO_TLSv1);
2977   #endif
2978   }
2979 + #line 2980 "conf_parser.c" /* yacc.c:1646  */
2980      break;
2981  
2982 <  case 75:
2983 < /* Line 1813 of yacc.c  */
3266 < #line 450 "conf_parser.y"
2982 >  case 81:
2983 > #line 497 "conf_parser.y" /* yacc.c:1646  */
2984      {
2985   #ifdef HAVE_LIBCRYPTO
2986    if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
2987      SSL_CTX_clear_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
2988   #endif
2989   }
2990 + #line 2991 "conf_parser.c" /* yacc.c:1646  */
2991      break;
2992  
2993 <  case 76:
2994 < /* Line 1813 of yacc.c  */
3277 < #line 456 "conf_parser.y"
2993 >  case 82:
2994 > #line 503 "conf_parser.y" /* yacc.c:1646  */
2995      {
2996   #ifdef HAVE_LIBCRYPTO
2997    if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
2998      SSL_CTX_clear_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
2999   #endif
3000   }
3001 + #line 3002 "conf_parser.c" /* yacc.c:1646  */
3002      break;
3003  
3004 <  case 77:
3005 < /* Line 1813 of yacc.c  */
3288 < #line 464 "conf_parser.y"
3004 >  case 83:
3005 > #line 511 "conf_parser.y" /* yacc.c:1646  */
3006      {
3007   #ifdef HAVE_LIBCRYPTO
3008 <  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3008 >  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3009    {
3010      if (!ServerInfo.rsa_private_key_file)
3011      {
3012 <      yyerror("No rsa_private_key_file specified, SSL disabled");
3012 >      conf_error_report("No rsa_private_key_file specified, SSL disabled");
3013        break;
3014      }
3015  
# Line 3301 | Line 3018 | yyreduce:
3018          SSL_CTX_use_certificate_file(ServerInfo.client_ctx, yylval.string,
3019                                       SSL_FILETYPE_PEM) <= 0)
3020      {
3021 <      yyerror(ERR_lib_error_string(ERR_get_error()));
3021 >      report_crypto_errors();
3022 >      conf_error_report("Could not open/read certificate file");
3023        break;
3024      }
3025  
# Line 3310 | Line 3028 | yyreduce:
3028          SSL_CTX_use_PrivateKey_file(ServerInfo.client_ctx, ServerInfo.rsa_private_key_file,
3029                                      SSL_FILETYPE_PEM) <= 0)
3030      {
3031 <      yyerror(ERR_lib_error_string(ERR_get_error()));
3031 >      report_crypto_errors();
3032 >      conf_error_report("Could not read RSA private key");
3033        break;
3034      }
3035  
3036      if (!SSL_CTX_check_private_key(ServerInfo.server_ctx) ||
3037          !SSL_CTX_check_private_key(ServerInfo.client_ctx))
3038      {
3039 <      yyerror(ERR_lib_error_string(ERR_get_error()));
3039 >      report_crypto_errors();
3040 >      conf_error_report("Could not read RSA private key");
3041        break;
3042      }
3043    }
3044   #endif
3045   }
3046 + #line 3047 "conf_parser.c" /* yacc.c:1646  */
3047      break;
3048  
3049 <  case 78:
3050 < /* Line 1813 of yacc.c  */
3330 < #line 503 "conf_parser.y"
3049 >  case 84:
3050 > #line 553 "conf_parser.y" /* yacc.c:1646  */
3051      {
3052   #ifdef HAVE_LIBCRYPTO
3053 <  if (conf_parser_ctx.pass == 1)
3334 <  {
3335 <    BIO *file;
3053 >  BIO *file = NULL;
3054  
3055 <    if (ServerInfo.rsa_private_key)
3056 <    {
3339 <      RSA_free(ServerInfo.rsa_private_key);
3340 <      ServerInfo.rsa_private_key = NULL;
3341 <    }
3055 >  if (conf_parser_ctx.pass != 1)
3056 >    break;
3057  
3058 <    if (ServerInfo.rsa_private_key_file)
3059 <    {
3060 <      MyFree(ServerInfo.rsa_private_key_file);
3061 <      ServerInfo.rsa_private_key_file = NULL;
3062 <    }
3058 >  if (ServerInfo.rsa_private_key)
3059 >  {
3060 >    RSA_free(ServerInfo.rsa_private_key);
3061 >    ServerInfo.rsa_private_key = NULL;
3062 >  }
3063  
3064 <    DupString(ServerInfo.rsa_private_key_file, yylval.string);
3064 >  if (ServerInfo.rsa_private_key_file)
3065 >  {
3066 >    MyFree(ServerInfo.rsa_private_key_file);
3067 >    ServerInfo.rsa_private_key_file = NULL;
3068 >  }
3069  
3070 <    if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3352 <    {
3353 <      yyerror("File open failed, ignoring");
3354 <      break;
3355 <    }
3070 >  ServerInfo.rsa_private_key_file = xstrdup(yylval.string);
3071  
3072 <    ServerInfo.rsa_private_key = PEM_read_bio_RSAPrivateKey(file, NULL, 0, NULL);
3072 >  if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3073 >  {
3074 >    conf_error_report("File open failed, ignoring");
3075 >    break;
3076 >  }
3077  
3078 <    BIO_set_close(file, BIO_CLOSE);
3360 <    BIO_free(file);
3078 >  ServerInfo.rsa_private_key = PEM_read_bio_RSAPrivateKey(file, NULL, 0, NULL);
3079  
3080 <    if (ServerInfo.rsa_private_key == NULL)
3081 <    {
3364 <      yyerror("Couldn't extract key, ignoring");
3365 <      break;
3366 <    }
3080 >  BIO_set_close(file, BIO_CLOSE);
3081 >  BIO_free(file);
3082  
3083 <    if (!RSA_check_key(ServerInfo.rsa_private_key))
3084 <    {
3085 <      RSA_free(ServerInfo.rsa_private_key);
3086 <      ServerInfo.rsa_private_key = NULL;
3083 >  if (ServerInfo.rsa_private_key == NULL)
3084 >  {
3085 >    conf_error_report("Couldn't extract key, ignoring");
3086 >    break;
3087 >  }
3088  
3089 <      yyerror("Invalid key, ignoring");
3090 <      break;
3091 <    }
3089 >  if (!RSA_check_key(ServerInfo.rsa_private_key))
3090 >  {
3091 >    RSA_free(ServerInfo.rsa_private_key);
3092 >    ServerInfo.rsa_private_key = NULL;
3093  
3094 <    /* require 2048 bit (256 byte) key */
3095 <    if (RSA_size(ServerInfo.rsa_private_key) != 256)
3096 <    {
3380 <      RSA_free(ServerInfo.rsa_private_key);
3381 <      ServerInfo.rsa_private_key = NULL;
3094 >    conf_error_report("Invalid key, ignoring");
3095 >    break;
3096 >  }
3097  
3098 <      yyerror("Not a 2048 bit key, ignoring");
3099 <    }
3098 >  if (RSA_size(ServerInfo.rsa_private_key) < 128)
3099 >  {
3100 >    RSA_free(ServerInfo.rsa_private_key);
3101 >    ServerInfo.rsa_private_key = NULL;
3102 >
3103 >    conf_error_report("Ignoring serverinfo::rsa_private_key_file -- need at least a 1024 bit key size");
3104    }
3105   #endif
3106   }
3107 + #line 3108 "conf_parser.c" /* yacc.c:1646  */
3108      break;
3109  
3110 <  case 79:
3111 < /* Line 1813 of yacc.c  */
3392 < #line 562 "conf_parser.y"
3110 >  case 85:
3111 > #line 611 "conf_parser.y" /* yacc.c:1646  */
3112      {
3113   /* TBD - XXX: error reporting */
3114   #ifdef HAVE_LIBCRYPTO
# Line 3406 | Line 3125 | yyreduce:
3125        if (dh)
3126        {
3127          if (DH_size(dh) < 128)
3128 <          ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::ssl_dh_param_file -- need at least a 1024 bit DH prime size");
3128 >          conf_error_report("Ignoring serverinfo::ssl_dh_param_file -- need at least a 1024 bit DH prime size");
3129          else
3130            SSL_CTX_set_tmp_dh(ServerInfo.server_ctx, dh);
3131  
# Line 3416 | Line 3135 | yyreduce:
3135    }
3136   #endif
3137   }
3138 + #line 3139 "conf_parser.c" /* yacc.c:1646  */
3139      break;
3140  
3141 <  case 80:
3142 < /* Line 1813 of yacc.c  */
3423 < #line 590 "conf_parser.y"
3141 >  case 86:
3142 > #line 639 "conf_parser.y" /* yacc.c:1646  */
3143      {
3144   #ifdef HAVE_LIBCRYPTO
3145    if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3146      SSL_CTX_set_cipher_list(ServerInfo.server_ctx, yylval.string);
3147   #endif
3148   }
3149 + #line 3150 "conf_parser.c" /* yacc.c:1646  */
3150      break;
3151  
3152 <  case 81:
3153 < /* Line 1813 of yacc.c  */
3154 < #line 598 "conf_parser.y"
3152 >  case 87:
3153 > #line 647 "conf_parser.y" /* yacc.c:1646  */
3154 >    {
3155 > #ifdef HAVE_LIBCRYPTO
3156 > #if OPENSSL_VERSION_NUMBER >= 0x1000005FL && !defined(OPENSSL_NO_ECDH)
3157 >  int nid = 0;
3158 >  EC_KEY *key = NULL;
3159 >
3160 >  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3161 >  {
3162 >    if ((nid = OBJ_sn2nid(yylval.string)) == 0)
3163 >    {
3164 >        conf_error_report("Ignoring serverinfo::serverinfo_ssl_dh_elliptic_curve -- unknown curve name");
3165 >        break;
3166 >    }
3167 >
3168 >    if ((key = EC_KEY_new_by_curve_name(nid)) == NULL)
3169 >    {
3170 >      conf_error_report("Ignoring serverinfo::serverinfo_ssl_dh_elliptic_curve -- could not create curve");
3171 >      break;
3172 >    }
3173 >
3174 >    SSL_CTX_set_tmp_ecdh(ServerInfo.server_ctx, key);
3175 >    EC_KEY_free(key);
3176 > }
3177 > #endif
3178 > #endif
3179 > }
3180 > #line 3181 "conf_parser.c" /* yacc.c:1646  */
3181 >    break;
3182 >
3183 >  case 88:
3184 > #line 675 "conf_parser.y" /* yacc.c:1646  */
3185      {
3186    /* this isn't rehashable */
3187    if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
3188    {
3189      if (valid_servname(yylval.string))
3190 <      DupString(ServerInfo.name, yylval.string);
3190 >      ServerInfo.name = xstrdup(yylval.string);
3191      else
3192      {
3193 <      ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::name -- invalid name. Aborting.");
3193 >      conf_error_report("Ignoring serverinfo::name -- invalid name. Aborting.");
3194        exit(0);
3195      }
3196    }
3197   }
3198 + #line 3199 "conf_parser.c" /* yacc.c:1646  */
3199      break;
3200  
3201 <  case 82:
3202 < /* Line 1813 of yacc.c  */
3452 < #line 613 "conf_parser.y"
3201 >  case 89:
3202 > #line 690 "conf_parser.y" /* yacc.c:1646  */
3203      {
3204    /* this isn't rehashable */
3205    if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3206    {
3207      if (valid_sid(yylval.string))
3208 <      DupString(ServerInfo.sid, yylval.string);
3208 >      ServerInfo.sid = xstrdup(yylval.string);
3209      else
3210      {
3211 <      ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::sid -- invalid SID. Aborting.");
3211 >      conf_error_report("Ignoring serverinfo::sid -- invalid SID. Aborting.");
3212        exit(0);
3213      }
3214    }
3215   }
3216 + #line 3217 "conf_parser.c" /* yacc.c:1646  */
3217      break;
3218  
3219 <  case 83:
3220 < /* Line 1813 of yacc.c  */
3470 < #line 628 "conf_parser.y"
3219 >  case 90:
3220 > #line 705 "conf_parser.y" /* yacc.c:1646  */
3221      {
3222    if (conf_parser_ctx.pass == 2)
3223    {
3224      MyFree(ServerInfo.description);
3225 <    DupString(ServerInfo.description,yylval.string);
3225 >    ServerInfo.description = xstrdup(yylval.string);
3226    }
3227   }
3228 + #line 3229 "conf_parser.c" /* yacc.c:1646  */
3229      break;
3230  
3231 <  case 84:
3232 < /* Line 1813 of yacc.c  */
3482 < #line 637 "conf_parser.y"
3231 >  case 91:
3232 > #line 714 "conf_parser.y" /* yacc.c:1646  */
3233      {
3234    if (conf_parser_ctx.pass == 2)
3235    {
3236      char *p;
3237  
3238 <    if ((p = strchr(yylval.string, ' ')) != NULL)
3239 <      p = '\0';
3238 >    if ((p = strchr(yylval.string, ' ')))
3239 >      *p = '\0';
3240  
3241      MyFree(ServerInfo.network_name);
3242 <    DupString(ServerInfo.network_name, yylval.string);
3242 >    ServerInfo.network_name = xstrdup(yylval.string);
3243    }
3244   }
3245 + #line 3246 "conf_parser.c" /* yacc.c:1646  */
3246      break;
3247  
3248 <  case 85:
3249 < /* Line 1813 of yacc.c  */
3499 < #line 651 "conf_parser.y"
3248 >  case 92:
3249 > #line 728 "conf_parser.y" /* yacc.c:1646  */
3250      {
3251 <  if (conf_parser_ctx.pass == 2)
3252 <  {
3253 <    MyFree(ServerInfo.network_desc);
3254 <    DupString(ServerInfo.network_desc, yylval.string);
3255 <  }
3251 >  if (conf_parser_ctx.pass != 2)
3252 >    break;
3253 >
3254 >  MyFree(ServerInfo.network_desc);
3255 >  ServerInfo.network_desc = xstrdup(yylval.string);
3256   }
3257 + #line 3258 "conf_parser.c" /* yacc.c:1646  */
3258      break;
3259  
3260 <  case 86:
3261 < /* Line 1813 of yacc.c  */
3511 < #line 660 "conf_parser.y"
3260 >  case 93:
3261 > #line 737 "conf_parser.y" /* yacc.c:1646  */
3262      {
3263    if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3264    {
# Line 3524 | Line 3274 | yyreduce:
3274        ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
3275      else
3276      {
3277 <      assert(res != NULL);
3277 >      assert(res);
3278  
3279        memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3280        ServerInfo.ip.ss.ss_family = res->ai_family;
# Line 3535 | Line 3285 | yyreduce:
3285      }
3286    }
3287   }
3288 + #line 3289 "conf_parser.c" /* yacc.c:1646  */
3289      break;
3290  
3291 <  case 87:
3292 < /* Line 1813 of yacc.c  */
3542 < #line 688 "conf_parser.y"
3291 >  case 94:
3292 > #line 765 "conf_parser.y" /* yacc.c:1646  */
3293      {
3294   #ifdef IPV6
3295    if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
# Line 3556 | Line 3306 | yyreduce:
3306        ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
3307      else
3308      {
3309 <      assert(res != NULL);
3309 >      assert(res);
3310  
3311        memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3312        ServerInfo.ip6.ss.ss_family = res->ai_family;
# Line 3568 | Line 3318 | yyreduce:
3318    }
3319   #endif
3320   }
3321 + #line 3322 "conf_parser.c" /* yacc.c:1646  */
3322      break;
3323  
3324 <  case 88:
3325 < /* Line 1813 of yacc.c  */
3575 < #line 718 "conf_parser.y"
3324 >  case 95:
3325 > #line 795 "conf_parser.y" /* yacc.c:1646  */
3326      {
3327 <  if (conf_parser_ctx.pass == 2)
3327 >  if (conf_parser_ctx.pass != 2)
3328 >    break;
3329 >
3330 >  if ((yyvsp[-1].number) < MAXCLIENTS_MIN)
3331    {
3332 <    recalc_fdlimit(NULL);
3332 >    char buf[IRCD_BUFSIZE] = "";
3333  
3334 <    if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3335 <    {
3336 <      char buf[IRCD_BUFSIZE];
3337 <      ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3338 <      yyerror(buf);
3339 <    }
3340 <    else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3341 <    {
3342 <      char buf[IRCD_BUFSIZE];
3343 <      ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3344 <      yyerror(buf);
3592 <    }
3593 <    else
3594 <      ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3334 >    snprintf(buf, sizeof(buf), "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3335 >    conf_error_report(buf);
3336 >    ServerInfo.max_clients = MAXCLIENTS_MIN;
3337 >  }
3338 >  else if ((yyvsp[-1].number) > MAXCLIENTS_MAX)
3339 >  {
3340 >    char buf[IRCD_BUFSIZE] = "";
3341 >
3342 >    snprintf(buf, sizeof(buf), "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3343 >    conf_error_report(buf);
3344 >    ServerInfo.max_clients = MAXCLIENTS_MAX;
3345    }
3346 +  else
3347 +    ServerInfo.max_clients = (yyvsp[-1].number);
3348   }
3349 + #line 3350 "conf_parser.c" /* yacc.c:1646  */
3350      break;
3351  
3352 <  case 89:
3353 < /* Line 1813 of yacc.c  */
3601 < #line 741 "conf_parser.y"
3352 >  case 96:
3353 > #line 820 "conf_parser.y" /* yacc.c:1646  */
3354      {
3355 <  if (conf_parser_ctx.pass == 2)
3604 <    ServerInfo.hub = yylval.number;
3605 < }
3355 >  if (conf_parser_ctx.pass != 2)
3356      break;
3357  
3358 <  case 97:
3359 < /* Line 1813 of yacc.c  */
3360 < #line 756 "conf_parser.y"
3361 <    {
3362 <  if (conf_parser_ctx.pass == 2)
3358 >  if ((yyvsp[-1].number) < 9)
3359 >  {
3360 >    conf_error_report("max_nick_length too low, setting to 9");
3361 >    ServerInfo.max_nick_length = 9;
3362 >  }
3363 >  else if ((yyvsp[-1].number) > NICKLEN)
3364    {
3365 <    MyFree(AdminInfo.name);
3366 <    DupString(AdminInfo.name, yylval.string);
3365 >    char buf[IRCD_BUFSIZE] = "";
3366 >
3367 >    snprintf(buf, sizeof(buf), "max_nick_length too high, setting to %d", NICKLEN);
3368 >    conf_error_report(buf);
3369 >    ServerInfo.max_nick_length = NICKLEN;
3370    }
3371 +  else
3372 +    ServerInfo.max_nick_length = (yyvsp[-1].number);
3373   }
3374 + #line 3375 "conf_parser.c" /* yacc.c:1646  */
3375      break;
3376  
3377 <  case 98:
3378 < /* Line 1813 of yacc.c  */
3622 < #line 765 "conf_parser.y"
3377 >  case 97:
3378 > #line 842 "conf_parser.y" /* yacc.c:1646  */
3379      {
3380 <  if (conf_parser_ctx.pass == 2)
3380 >  if (conf_parser_ctx.pass != 2)
3381 >    break;
3382 >
3383 >  if ((yyvsp[-1].number) < 80)
3384 >  {
3385 >    conf_error_report("max_topic_length too low, setting to 80");
3386 >    ServerInfo.max_topic_length = 80;
3387 >  }
3388 >  else if ((yyvsp[-1].number) > TOPICLEN)
3389    {
3390 <    MyFree(AdminInfo.email);
3391 <    DupString(AdminInfo.email, yylval.string);
3390 >    char buf[IRCD_BUFSIZE] = "";
3391 >
3392 >    snprintf(buf, sizeof(buf), "max_topic_length too high, setting to %d", TOPICLEN);
3393 >    conf_error_report(buf);
3394 >    ServerInfo.max_topic_length = TOPICLEN;
3395    }
3396 +  else
3397 +    ServerInfo.max_topic_length = (yyvsp[-1].number);
3398   }
3399 + #line 3400 "conf_parser.c" /* yacc.c:1646  */
3400      break;
3401  
3402 <  case 99:
3403 < /* Line 1813 of yacc.c  */
3634 < #line 774 "conf_parser.y"
3402 >  case 98:
3403 > #line 864 "conf_parser.y" /* yacc.c:1646  */
3404      {
3405    if (conf_parser_ctx.pass == 2)
3406 <  {
3638 <    MyFree(AdminInfo.description);
3639 <    DupString(AdminInfo.description, yylval.string);
3640 <  }
3406 >    ServerInfo.hub = yylval.number;
3407   }
3408 + #line 3409 "conf_parser.c" /* yacc.c:1646  */
3409      break;
3410  
3411    case 106:
3412 < /* Line 1813 of yacc.c  */
3646 < #line 792 "conf_parser.y"
3412 > #line 881 "conf_parser.y" /* yacc.c:1646  */
3413      {
3414 <  if (conf_parser_ctx.pass == 2)
3415 <    ConfigLoggingEntry.use_logging = yylval.number;
3414 >  if (conf_parser_ctx.pass != 2)
3415 >    break;
3416 >
3417 >  MyFree(AdminInfo.name);
3418 >  AdminInfo.name = xstrdup(yylval.string);
3419   }
3420 + #line 3421 "conf_parser.c" /* yacc.c:1646  */
3421      break;
3422  
3423    case 107:
3424 < /* Line 1813 of yacc.c  */
3655 < #line 798 "conf_parser.y"
3424 > #line 890 "conf_parser.y" /* yacc.c:1646  */
3425      {
3426 <  lfile[0] = '\0';
3427 <  ltype = 0;
3428 <  lsize = 0;
3426 >  if (conf_parser_ctx.pass != 2)
3427 >    break;
3428 >
3429 >  MyFree(AdminInfo.email);
3430 >  AdminInfo.email = xstrdup(yylval.string);
3431   }
3432 + #line 3433 "conf_parser.c" /* yacc.c:1646  */
3433      break;
3434  
3435    case 108:
3436 < /* Line 1813 of yacc.c  */
3437 < #line 803 "conf_parser.y"
3436 > #line 899 "conf_parser.y" /* yacc.c:1646  */
3437 >    {
3438 >  if (conf_parser_ctx.pass != 2)
3439 >    break;
3440 >
3441 >  MyFree(AdminInfo.description);
3442 >  AdminInfo.description = xstrdup(yylval.string);
3443 > }
3444 > #line 3445 "conf_parser.c" /* yacc.c:1646  */
3445 >    break;
3446 >
3447 >  case 109:
3448 > #line 911 "conf_parser.y" /* yacc.c:1646  */
3449      {
3450 <  if (conf_parser_ctx.pass == 2 && ltype > 0)
3451 <    log_add_file(ltype, lsize, lfile);
3450 >  if (conf_parser_ctx.pass == 2)
3451 >    reset_block_state();
3452   }
3453 + #line 3454 "conf_parser.c" /* yacc.c:1646  */
3454      break;
3455  
3456 <  case 115:
3457 < /* Line 1813 of yacc.c  */
3674 < #line 815 "conf_parser.y"
3456 >  case 110:
3457 > #line 915 "conf_parser.y" /* yacc.c:1646  */
3458      {
3459 <  strlcpy(lfile, yylval.string, sizeof(lfile));
3459 >  dlink_node *ptr = NULL;
3460 >
3461 >  if (conf_parser_ctx.pass != 2)
3462 >    break;
3463 >
3464 >  if (!block_state.file.buf[0])
3465 >    break;
3466 >
3467 >  DLINK_FOREACH(ptr, block_state.mask.list.head)
3468 >    motd_add(ptr->data, block_state.file.buf);
3469   }
3470 + #line 3471 "conf_parser.c" /* yacc.c:1646  */
3471      break;
3472  
3473    case 116:
3474 < /* Line 1813 of yacc.c  */
3682 < #line 820 "conf_parser.y"
3474 > #line 932 "conf_parser.y" /* yacc.c:1646  */
3475      {
3476 <  lsize = (yyvsp[(3) - (4)].number);
3476 >  if (conf_parser_ctx.pass == 2)
3477 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3478   }
3479 + #line 3480 "conf_parser.c" /* yacc.c:1646  */
3480      break;
3481  
3482    case 117:
3483 < /* Line 1813 of yacc.c  */
3690 < #line 823 "conf_parser.y"
3483 > #line 938 "conf_parser.y" /* yacc.c:1646  */
3484      {
3485 <  lsize = 0;
3485 >  if (conf_parser_ctx.pass == 2)
3486 >    strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3487   }
3488 + #line 3489 "conf_parser.c" /* yacc.c:1646  */
3489      break;
3490  
3491 <  case 118:
3492 < /* Line 1813 of yacc.c  */
3698 < #line 828 "conf_parser.y"
3491 >  case 124:
3492 > #line 953 "conf_parser.y" /* yacc.c:1646  */
3493      {
3494    if (conf_parser_ctx.pass == 2)
3495 <    ltype = 0;
3495 >    ConfigLoggingEntry.use_logging = yylval.number;
3496   }
3497 + #line 3498 "conf_parser.c" /* yacc.c:1646  */
3498      break;
3499  
3500 <  case 122:
3501 < /* Line 1813 of yacc.c  */
3707 < #line 835 "conf_parser.y"
3500 >  case 125:
3501 > #line 959 "conf_parser.y" /* yacc.c:1646  */
3502      {
3503    if (conf_parser_ctx.pass == 2)
3504 <    ltype = LOG_TYPE_USER;
3504 >    reset_block_state();
3505 > }
3506 > #line 3507 "conf_parser.c" /* yacc.c:1646  */
3507 >    break;
3508 >
3509 >  case 126:
3510 > #line 963 "conf_parser.y" /* yacc.c:1646  */
3511 >    {
3512 >  if (conf_parser_ctx.pass != 2)
3513 >    break;
3514 >
3515 >  if (block_state.type.value && block_state.file.buf[0])
3516 >    log_set_file(block_state.type.value, block_state.size.value,
3517 >                 block_state.file.buf);
3518 > }
3519 > #line 3520 "conf_parser.c" /* yacc.c:1646  */
3520 >    break;
3521 >
3522 >  case 133:
3523 > #line 979 "conf_parser.y" /* yacc.c:1646  */
3524 >    {
3525 >  if (conf_parser_ctx.pass != 2)
3526 >    break;
3527 >
3528 >  strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3529 > }
3530 > #line 3531 "conf_parser.c" /* yacc.c:1646  */
3531 >    break;
3532 >
3533 >  case 134:
3534 > #line 987 "conf_parser.y" /* yacc.c:1646  */
3535 >    {
3536 >  block_state.size.value = (yyvsp[-1].number);
3537 > }
3538 > #line 3539 "conf_parser.c" /* yacc.c:1646  */
3539 >    break;
3540 >
3541 >  case 135:
3542 > #line 990 "conf_parser.y" /* yacc.c:1646  */
3543 >    {
3544 >  block_state.size.value = 0;
3545   }
3546 + #line 3547 "conf_parser.c" /* yacc.c:1646  */
3547      break;
3548  
3549 <  case 123:
3550 < /* Line 1813 of yacc.c  */
3716 < #line 839 "conf_parser.y"
3549 >  case 136:
3550 > #line 995 "conf_parser.y" /* yacc.c:1646  */
3551      {
3552    if (conf_parser_ctx.pass == 2)
3553 <    ltype = LOG_TYPE_OPER;
3553 >    block_state.type.value = 0;
3554   }
3555 + #line 3556 "conf_parser.c" /* yacc.c:1646  */
3556      break;
3557  
3558 <  case 124:
3559 < /* Line 1813 of yacc.c  */
3725 < #line 843 "conf_parser.y"
3558 >  case 140:
3559 > #line 1002 "conf_parser.y" /* yacc.c:1646  */
3560      {
3561    if (conf_parser_ctx.pass == 2)
3562 <    ltype = LOG_TYPE_GLINE;
3562 >    block_state.type.value = LOG_TYPE_USER;
3563   }
3564 + #line 3565 "conf_parser.c" /* yacc.c:1646  */
3565      break;
3566  
3567 <  case 125:
3568 < /* Line 1813 of yacc.c  */
3734 < #line 847 "conf_parser.y"
3567 >  case 141:
3568 > #line 1006 "conf_parser.y" /* yacc.c:1646  */
3569      {
3570    if (conf_parser_ctx.pass == 2)
3571 <    ltype = LOG_TYPE_DLINE;
3571 >    block_state.type.value = LOG_TYPE_OPER;
3572   }
3573 + #line 3574 "conf_parser.c" /* yacc.c:1646  */
3574      break;
3575  
3576 <  case 126:
3577 < /* Line 1813 of yacc.c  */
3743 < #line 851 "conf_parser.y"
3576 >  case 142:
3577 > #line 1010 "conf_parser.y" /* yacc.c:1646  */
3578      {
3579    if (conf_parser_ctx.pass == 2)
3580 <    ltype = LOG_TYPE_KLINE;
3580 >    block_state.type.value = LOG_TYPE_GLINE;
3581   }
3582 + #line 3583 "conf_parser.c" /* yacc.c:1646  */
3583      break;
3584  
3585 <  case 127:
3586 < /* Line 1813 of yacc.c  */
3752 < #line 855 "conf_parser.y"
3585 >  case 143:
3586 > #line 1014 "conf_parser.y" /* yacc.c:1646  */
3587      {
3588    if (conf_parser_ctx.pass == 2)
3589 <    ltype = LOG_TYPE_KILL;
3589 >    block_state.type.value = LOG_TYPE_XLINE;
3590   }
3591 + #line 3592 "conf_parser.c" /* yacc.c:1646  */
3592      break;
3593  
3594 <  case 128:
3595 < /* Line 1813 of yacc.c  */
3761 < #line 859 "conf_parser.y"
3594 >  case 144:
3595 > #line 1018 "conf_parser.y" /* yacc.c:1646  */
3596      {
3597    if (conf_parser_ctx.pass == 2)
3598 <    ltype = LOG_TYPE_DEBUG;
3598 >    block_state.type.value = LOG_TYPE_RESV;
3599   }
3600 + #line 3601 "conf_parser.c" /* yacc.c:1646  */
3601      break;
3602  
3603 <  case 129:
3604 < /* Line 1813 of yacc.c  */
3770 < #line 869 "conf_parser.y"
3603 >  case 145:
3604 > #line 1022 "conf_parser.y" /* yacc.c:1646  */
3605      {
3606    if (conf_parser_ctx.pass == 2)
3607 <  {
3774 <    yy_conf = make_conf_item(OPER_TYPE);
3775 <    yy_aconf = map_to_conf(yy_conf);
3776 <    SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
3777 <  }
3778 <  else
3779 <  {
3780 <    MyFree(class_name);
3781 <    class_name = NULL;
3782 <  }
3607 >    block_state.type.value = LOG_TYPE_DLINE;
3608   }
3609 + #line 3610 "conf_parser.c" /* yacc.c:1646  */
3610      break;
3611  
3612 <  case 130:
3613 < /* Line 1813 of yacc.c  */
3788 < #line 882 "conf_parser.y"
3612 >  case 146:
3613 > #line 1026 "conf_parser.y" /* yacc.c:1646  */
3614      {
3615    if (conf_parser_ctx.pass == 2)
3616 <  {
3617 <    struct CollectItem *yy_tmp;
3618 <    dlink_node *ptr;
3619 <    dlink_node *next_ptr;
3616 >    block_state.type.value = LOG_TYPE_KLINE;
3617 > }
3618 > #line 3619 "conf_parser.c" /* yacc.c:1646  */
3619 >    break;
3620  
3621 <    conf_add_class_to_conf(yy_conf, class_name);
3621 >  case 147:
3622 > #line 1030 "conf_parser.y" /* yacc.c:1646  */
3623 >    {
3624 >  if (conf_parser_ctx.pass == 2)
3625 >    block_state.type.value = LOG_TYPE_KILL;
3626 > }
3627 > #line 3628 "conf_parser.c" /* yacc.c:1646  */
3628 >    break;
3629  
3630 <    /* Now, make sure there is a copy of the "base" given oper
3631 <     * block in each of the collected copies
3632 <     */
3630 >  case 148:
3631 > #line 1034 "conf_parser.y" /* yacc.c:1646  */
3632 >    {
3633 >  if (conf_parser_ctx.pass == 2)
3634 >    block_state.type.value = LOG_TYPE_DEBUG;
3635 > }
3636 > #line 3637 "conf_parser.c" /* yacc.c:1646  */
3637 >    break;
3638  
3639 <    DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
3639 >  case 149:
3640 > #line 1044 "conf_parser.y" /* yacc.c:1646  */
3641      {
3642 <      struct AccessItem *new_aconf;
3643 <      struct ConfItem *new_conf;
3806 <      yy_tmp = ptr->data;
3642 >  if (conf_parser_ctx.pass != 2)
3643 >    break;
3644  
3645 <      new_conf = make_conf_item(OPER_TYPE);
3646 <      new_aconf = (struct AccessItem *)map_to_conf(new_conf);
3645 >  reset_block_state();
3646 >  block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3647 > }
3648 > #line 3649 "conf_parser.c" /* yacc.c:1646  */
3649 >    break;
3650  
3651 <      new_aconf->flags = yy_aconf->flags;
3651 >  case 150:
3652 > #line 1051 "conf_parser.y" /* yacc.c:1646  */
3653 >    {
3654 >  dlink_node *ptr = NULL;
3655  
3656 <      if (yy_conf->name != NULL)
3657 <        DupString(new_conf->name, yy_conf->name);
3815 <      if (yy_tmp->user != NULL)
3816 <        DupString(new_aconf->user, yy_tmp->user);
3817 <      else
3818 <        DupString(new_aconf->user, "*");
3819 <      if (yy_tmp->host != NULL)
3820 <        DupString(new_aconf->host, yy_tmp->host);
3821 <      else
3822 <        DupString(new_aconf->host, "*");
3656 >  if (conf_parser_ctx.pass != 2)
3657 >    break;
3658  
3659 <      new_aconf->type = parse_netmask(new_aconf->host, &new_aconf->addr,
3660 <                                     &new_aconf->bits);
3659 >  if (!block_state.name.buf[0])
3660 >    break;
3661 > #ifdef HAVE_LIBCRYPTO
3662 >  if (!block_state.file.buf[0] &&
3663 >      !block_state.rpass.buf[0])
3664 >    break;
3665 > #else
3666 >  if (!block_state.rpass.buf[0])
3667 >    break;
3668 > #endif
3669  
3670 <      conf_add_class_to_conf(new_conf, class_name);
3671 <      if (yy_aconf->passwd != NULL)
3672 <        DupString(new_aconf->passwd, yy_aconf->passwd);
3670 >  DLINK_FOREACH(ptr, block_state.mask.list.head)
3671 >  {
3672 >    struct MaskItem *conf = NULL;
3673 >    struct split_nuh_item nuh;
3674  
3675 <      new_aconf->port = yy_aconf->port;
3676 < #ifdef HAVE_LIBCRYPTO
3677 <      if (yy_aconf->rsa_public_key_file != NULL)
3678 <      {
3679 <        BIO *file;
3675 >    nuh.nuhmask  = ptr->data;
3676 >    nuh.nickptr  = NULL;
3677 >    nuh.userptr  = block_state.user.buf;
3678 >    nuh.hostptr  = block_state.host.buf;
3679 >    nuh.nicksize = 0;
3680 >    nuh.usersize = sizeof(block_state.user.buf);
3681 >    nuh.hostsize = sizeof(block_state.host.buf);
3682 >    split_nuh(&nuh);
3683  
3684 <        DupString(new_aconf->rsa_public_key_file,
3685 <                  yy_aconf->rsa_public_key_file);
3684 >    conf         = conf_make(CONF_OPER);
3685 >    conf->name   = xstrdup(block_state.name.buf);
3686 >    conf->user   = xstrdup(block_state.user.buf);
3687 >    conf->host   = xstrdup(block_state.host.buf);
3688 >
3689 >    if (block_state.cert.buf[0])
3690 >      conf->certfp = xstrdup(block_state.cert.buf);
3691 >
3692 >    if (block_state.rpass.buf[0])
3693 >      conf->passwd = xstrdup(block_state.rpass.buf);
3694 >
3695 >    conf->flags = block_state.flags.value;
3696 >    conf->modes = block_state.modes.value;
3697 >    conf->port  = block_state.port.value;
3698 >    conf->htype = parse_netmask(conf->host, &conf->addr, &conf->bits);
3699  
3700 <        file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
3841 <        new_aconf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file,
3842 <                                                           NULL, 0, NULL);
3843 <        BIO_set_close(file, BIO_CLOSE);
3844 <        BIO_free(file);
3845 <      }
3846 < #endif
3700 >    conf_add_class_to_conf(conf, block_state.class.buf);
3701  
3702   #ifdef HAVE_LIBCRYPTO
3703 <      if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
3704 <          && yy_tmp->host)
3705 < #else
3706 <      if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
3707 < #endif
3703 >    if (block_state.file.buf[0])
3704 >    {
3705 >      BIO *file = NULL;
3706 >      RSA *pkey = NULL;
3707 >
3708 >      if ((file = BIO_new_file(block_state.file.buf, "r")) == NULL)
3709        {
3710 <        conf_add_class_to_conf(new_conf, class_name);
3711 <        if (yy_tmp->name != NULL)
3857 <          DupString(new_conf->name, yy_tmp->name);
3710 >        conf_error_report("Ignoring rsa_public_key_file -- file doesn't exist");
3711 >        break;
3712        }
3713  
3714 <      dlinkDelete(&yy_tmp->node, &col_conf_list);
3715 <      free_collect_item(yy_tmp);
3862 <    }
3863 <
3864 <    yy_conf = NULL;
3865 <    yy_aconf = NULL;
3714 >      if ((pkey = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL)) == NULL)
3715 >        conf_error_report("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
3716  
3717 <
3718 <    MyFree(class_name);
3719 <    class_name = NULL;
3717 >      conf->rsa_public_key = pkey;
3718 >      BIO_set_close(file, BIO_CLOSE);
3719 >      BIO_free(file);
3720 >    }
3721 > #endif /* HAVE_LIBCRYPTO */
3722    }
3723   }
3724 + #line 3725 "conf_parser.c" /* yacc.c:1646  */
3725      break;
3726  
3727 <  case 142:
3728 < /* Line 1813 of yacc.c  */
3876 < #line 972 "conf_parser.y"
3727 >  case 164:
3728 > #line 1137 "conf_parser.y" /* yacc.c:1646  */
3729      {
3730    if (conf_parser_ctx.pass == 2)
3731 <  {
3880 <    MyFree(yy_conf->name);
3881 <    DupString(yy_conf->name, yylval.string);
3882 <  }
3731 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3732   }
3733 + #line 3734 "conf_parser.c" /* yacc.c:1646  */
3734      break;
3735  
3736 <  case 143:
3737 < /* Line 1813 of yacc.c  */
3888 < #line 981 "conf_parser.y"
3736 >  case 165:
3737 > #line 1143 "conf_parser.y" /* yacc.c:1646  */
3738      {
3739    if (conf_parser_ctx.pass == 2)
3740 <  {
3741 <    struct split_nuh_item nuh;
3742 <
3743 <    nuh.nuhmask  = yylval.string;
3895 <    nuh.nickptr  = NULL;
3896 <    nuh.userptr  = userbuf;
3897 <    nuh.hostptr  = hostbuf;
3898 <
3899 <    nuh.nicksize = 0;
3900 <    nuh.usersize = sizeof(userbuf);
3901 <    nuh.hostsize = sizeof(hostbuf);
3902 <
3903 <    split_nuh(&nuh);
3740 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3741 > }
3742 > #line 3743 "conf_parser.c" /* yacc.c:1646  */
3743 >    break;
3744  
3745 <    if (yy_aconf->user == NULL)
3745 >  case 166:
3746 > #line 1149 "conf_parser.y" /* yacc.c:1646  */
3747      {
3748 <      DupString(yy_aconf->user, userbuf);
3749 <      DupString(yy_aconf->host, hostbuf);
3748 >  if (conf_parser_ctx.pass == 2)
3749 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
3750 > }
3751 > #line 3752 "conf_parser.c" /* yacc.c:1646  */
3752 >    break;
3753  
3754 <      yy_aconf->type = parse_netmask(yy_aconf->host, &yy_aconf->addr,
3755 <                                    &yy_aconf->bits);
3912 <    }
3913 <    else
3754 >  case 167:
3755 > #line 1155 "conf_parser.y" /* yacc.c:1646  */
3756      {
3757 <      struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
3757 >  if (conf_parser_ctx.pass != 2)
3758 >    break;
3759  
3760 <      DupString(yy_tmp->user, userbuf);
3761 <      DupString(yy_tmp->host, hostbuf);
3760 >  if (yylval.number)
3761 >    block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3762 >  else
3763 >    block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
3764 > }
3765 > #line 3766 "conf_parser.c" /* yacc.c:1646  */
3766 >    break;
3767  
3768 <      dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
3769 <    }
3770 <  }
3768 >  case 168:
3769 > #line 1166 "conf_parser.y" /* yacc.c:1646  */
3770 >    {
3771 >  if (conf_parser_ctx.pass == 2)
3772 >    strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3773   }
3774 + #line 3775 "conf_parser.c" /* yacc.c:1646  */
3775      break;
3776  
3777 <  case 144:
3778 < /* Line 1813 of yacc.c  */
3928 < #line 1018 "conf_parser.y"
3777 >  case 169:
3778 > #line 1172 "conf_parser.y" /* yacc.c:1646  */
3779      {
3780    if (conf_parser_ctx.pass == 2)
3781 <  {
3782 <    if (yy_aconf->passwd != NULL)
3783 <      memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
3781 >    strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
3782 > }
3783 > #line 3784 "conf_parser.c" /* yacc.c:1646  */
3784 >    break;
3785  
3786 <    MyFree(yy_aconf->passwd);
3787 <    DupString(yy_aconf->passwd, yylval.string);
3788 <  }
3786 >  case 170:
3787 > #line 1178 "conf_parser.y" /* yacc.c:1646  */
3788 >    {
3789 >  if (conf_parser_ctx.pass != 2)
3790 >    break;
3791 >
3792 >  if (yylval.number)
3793 >    block_state.flags.value |= CONF_FLAGS_SSL;
3794 >  else
3795 >    block_state.flags.value &= ~CONF_FLAGS_SSL;
3796   }
3797 + #line 3798 "conf_parser.c" /* yacc.c:1646  */
3798      break;
3799  
3800 <  case 145:
3801 < /* Line 1813 of yacc.c  */
3943 < #line 1030 "conf_parser.y"
3800 >  case 171:
3801 > #line 1189 "conf_parser.y" /* yacc.c:1646  */
3802      {
3803    if (conf_parser_ctx.pass == 2)
3804 <  {
3947 <    if (yylval.number)
3948 <      SetConfEncrypted(yy_aconf);
3949 <    else
3950 <      ClearConfEncrypted(yy_aconf);
3951 <  }
3804 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
3805   }
3806 + #line 3807 "conf_parser.c" /* yacc.c:1646  */
3807      break;
3808  
3809 <  case 146:
3810 < /* Line 1813 of yacc.c  */
3957 < #line 1041 "conf_parser.y"
3809 >  case 172:
3810 > #line 1195 "conf_parser.y" /* yacc.c:1646  */
3811      {
3959 #ifdef HAVE_LIBCRYPTO
3812    if (conf_parser_ctx.pass == 2)
3813 <  {
3814 <    BIO *file;
3813 >    block_state.modes.value = 0;
3814 > }
3815 > #line 3816 "conf_parser.c" /* yacc.c:1646  */
3816 >    break;
3817  
3818 <    if (yy_aconf->rsa_public_key != NULL)
3818 >  case 176:
3819 > #line 1202 "conf_parser.y" /* yacc.c:1646  */
3820      {
3821 <      RSA_free(yy_aconf->rsa_public_key);
3822 <      yy_aconf->rsa_public_key = NULL;
3823 <    }
3821 >  if (conf_parser_ctx.pass == 2)
3822 >    block_state.modes.value |= UMODE_BOTS;
3823 > }
3824 > #line 3825 "conf_parser.c" /* yacc.c:1646  */
3825 >    break;
3826  
3827 <    if (yy_aconf->rsa_public_key_file != NULL)
3827 >  case 177:
3828 > #line 1206 "conf_parser.y" /* yacc.c:1646  */
3829      {
3830 <      MyFree(yy_aconf->rsa_public_key_file);
3831 <      yy_aconf->rsa_public_key_file = NULL;
3832 <    }
3833 <
3834 <    DupString(yy_aconf->rsa_public_key_file, yylval.string);
3977 <    file = BIO_new_file(yylval.string, "r");
3830 >  if (conf_parser_ctx.pass == 2)
3831 >    block_state.modes.value |= UMODE_CCONN;
3832 > }
3833 > #line 3834 "conf_parser.c" /* yacc.c:1646  */
3834 >    break;
3835  
3836 <    if (file == NULL)
3836 >  case 178:
3837 > #line 1210 "conf_parser.y" /* yacc.c:1646  */
3838      {
3839 <      yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
3840 <      break;
3841 <    }
3842 <
3843 <    yy_aconf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
3839 >  if (conf_parser_ctx.pass == 2)
3840 >    block_state.modes.value |= UMODE_DEAF;
3841 > }
3842 > #line 3843 "conf_parser.c" /* yacc.c:1646  */
3843 >    break;
3844  
3845 <    if (yy_aconf->rsa_public_key == NULL)
3845 >  case 179:
3846 > #line 1214 "conf_parser.y" /* yacc.c:1646  */
3847      {
3848 <      yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
3849 <      break;
3991 <    }
3992 <
3993 <    BIO_set_close(file, BIO_CLOSE);
3994 <    BIO_free(file);
3995 <  }
3996 < #endif /* HAVE_LIBCRYPTO */
3848 >  if (conf_parser_ctx.pass == 2)
3849 >    block_state.modes.value |= UMODE_DEBUG;
3850   }
3851 + #line 3852 "conf_parser.c" /* yacc.c:1646  */
3852      break;
3853  
3854 <  case 147:
3855 < /* Line 1813 of yacc.c  */
4002 < #line 1083 "conf_parser.y"
3854 >  case 180:
3855 > #line 1218 "conf_parser.y" /* yacc.c:1646  */
3856      {
3857    if (conf_parser_ctx.pass == 2)
3858 <  {
4006 <    MyFree(class_name);
4007 <    DupString(class_name, yylval.string);
4008 <  }
3858 >    block_state.modes.value |= UMODE_FULL;
3859   }
3860 + #line 3861 "conf_parser.c" /* yacc.c:1646  */
3861      break;
3862  
3863 <  case 148:
3864 < /* Line 1813 of yacc.c  */
4014 < #line 1092 "conf_parser.y"
3863 >  case 181:
3864 > #line 1222 "conf_parser.y" /* yacc.c:1646  */
3865      {
3866    if (conf_parser_ctx.pass == 2)
3867 <    yy_aconf->modes = 0;
3867 >    block_state.modes.value |= UMODE_HIDDEN;
3868   }
3869 + #line 3870 "conf_parser.c" /* yacc.c:1646  */
3870      break;
3871  
3872 <  case 152:
3873 < /* Line 1813 of yacc.c  */
4023 < #line 1099 "conf_parser.y"
3872 >  case 182:
3873 > #line 1226 "conf_parser.y" /* yacc.c:1646  */
3874      {
3875    if (conf_parser_ctx.pass == 2)
3876 <    yy_aconf->modes |= UMODE_BOTS;
3876 >    block_state.modes.value |= UMODE_HIDECHANS;
3877   }
3878 + #line 3879 "conf_parser.c" /* yacc.c:1646  */
3879      break;
3880  
3881 <  case 153:
3882 < /* Line 1813 of yacc.c  */
4032 < #line 1103 "conf_parser.y"
3881 >  case 183:
3882 > #line 1230 "conf_parser.y" /* yacc.c:1646  */
3883      {
3884    if (conf_parser_ctx.pass == 2)
3885 <    yy_aconf->modes |= UMODE_CCONN;
3885 >    block_state.modes.value |= UMODE_HIDEIDLE;
3886   }
3887 + #line 3888 "conf_parser.c" /* yacc.c:1646  */
3888      break;
3889  
3890 <  case 154:
3891 < /* Line 1813 of yacc.c  */
4041 < #line 1107 "conf_parser.y"
3890 >  case 184:
3891 > #line 1234 "conf_parser.y" /* yacc.c:1646  */
3892      {
3893    if (conf_parser_ctx.pass == 2)
3894 <    yy_aconf->modes |= UMODE_CCONN_FULL;
3894 >    block_state.modes.value |= UMODE_SKILL;
3895   }
3896 + #line 3897 "conf_parser.c" /* yacc.c:1646  */
3897      break;
3898  
3899 <  case 155:
3900 < /* Line 1813 of yacc.c  */
4050 < #line 1111 "conf_parser.y"
3899 >  case 185:
3900 > #line 1238 "conf_parser.y" /* yacc.c:1646  */
3901      {
3902    if (conf_parser_ctx.pass == 2)
3903 <    yy_aconf->modes |= UMODE_DEAF;
3903 >    block_state.modes.value |= UMODE_NCHANGE;
3904   }
3905 + #line 3906 "conf_parser.c" /* yacc.c:1646  */
3906      break;
3907  
3908 <  case 156:
3909 < /* Line 1813 of yacc.c  */
4059 < #line 1115 "conf_parser.y"
3908 >  case 186:
3909 > #line 1242 "conf_parser.y" /* yacc.c:1646  */
3910      {
3911    if (conf_parser_ctx.pass == 2)
3912 <    yy_aconf->modes |= UMODE_DEBUG;
3912 >    block_state.modes.value |= UMODE_REJ;
3913   }
3914 + #line 3915 "conf_parser.c" /* yacc.c:1646  */
3915      break;
3916  
3917 <  case 157:
3918 < /* Line 1813 of yacc.c  */
4068 < #line 1119 "conf_parser.y"
3917 >  case 187:
3918 > #line 1246 "conf_parser.y" /* yacc.c:1646  */
3919      {
3920    if (conf_parser_ctx.pass == 2)
3921 <    yy_aconf->modes |= UMODE_FULL;
3921 >    block_state.modes.value |= UMODE_UNAUTH;
3922   }
3923 + #line 3924 "conf_parser.c" /* yacc.c:1646  */
3924      break;
3925  
3926 <  case 158:
3927 < /* Line 1813 of yacc.c  */
4077 < #line 1123 "conf_parser.y"
3926 >  case 188:
3927 > #line 1250 "conf_parser.y" /* yacc.c:1646  */
3928      {
3929    if (conf_parser_ctx.pass == 2)
3930 <    yy_aconf->modes |= UMODE_HIDDEN;
3930 >    block_state.modes.value |= UMODE_SPY;
3931   }
3932 + #line 3933 "conf_parser.c" /* yacc.c:1646  */
3933      break;
3934  
3935 <  case 159:
3936 < /* Line 1813 of yacc.c  */
4086 < #line 1127 "conf_parser.y"
3935 >  case 189:
3936 > #line 1254 "conf_parser.y" /* yacc.c:1646  */
3937      {
3938    if (conf_parser_ctx.pass == 2)
3939 <    yy_aconf->modes |= UMODE_SKILL;
3939 >    block_state.modes.value |= UMODE_EXTERNAL;
3940   }
3941 + #line 3942 "conf_parser.c" /* yacc.c:1646  */
3942      break;
3943  
3944 <  case 160:
3945 < /* Line 1813 of yacc.c  */
4095 < #line 1131 "conf_parser.y"
3944 >  case 190:
3945 > #line 1258 "conf_parser.y" /* yacc.c:1646  */
3946      {
3947    if (conf_parser_ctx.pass == 2)
3948 <    yy_aconf->modes |= UMODE_NCHANGE;
3948 >    block_state.modes.value |= UMODE_SERVNOTICE;
3949   }
3950 + #line 3951 "conf_parser.c" /* yacc.c:1646  */
3951      break;
3952  
3953 <  case 161:
3954 < /* Line 1813 of yacc.c  */
4104 < #line 1135 "conf_parser.y"
3953 >  case 191:
3954 > #line 1262 "conf_parser.y" /* yacc.c:1646  */
3955      {
3956    if (conf_parser_ctx.pass == 2)
3957 <    yy_aconf->modes |= UMODE_REJ;
3957 >    block_state.modes.value |= UMODE_INVISIBLE;
3958   }
3959 + #line 3960 "conf_parser.c" /* yacc.c:1646  */
3960      break;
3961  
3962 <  case 162:
3963 < /* Line 1813 of yacc.c  */
4113 < #line 1139 "conf_parser.y"
3962 >  case 192:
3963 > #line 1266 "conf_parser.y" /* yacc.c:1646  */
3964      {
3965    if (conf_parser_ctx.pass == 2)
3966 <    yy_aconf->modes |= UMODE_UNAUTH;
3966 >    block_state.modes.value |= UMODE_WALLOP;
3967   }
3968 + #line 3969 "conf_parser.c" /* yacc.c:1646  */
3969      break;
3970  
3971 <  case 163:
3972 < /* Line 1813 of yacc.c  */
4122 < #line 1143 "conf_parser.y"
3971 >  case 193:
3972 > #line 1270 "conf_parser.y" /* yacc.c:1646  */
3973      {
3974    if (conf_parser_ctx.pass == 2)
3975 <    yy_aconf->modes |= UMODE_SPY;
3975 >    block_state.modes.value |= UMODE_SOFTCALLERID;
3976   }
3977 + #line 3978 "conf_parser.c" /* yacc.c:1646  */
3978      break;
3979  
3980 <  case 164:
3981 < /* Line 1813 of yacc.c  */
4131 < #line 1147 "conf_parser.y"
3980 >  case 194:
3981 > #line 1274 "conf_parser.y" /* yacc.c:1646  */
3982      {
3983    if (conf_parser_ctx.pass == 2)
3984 <    yy_aconf->modes |= UMODE_EXTERNAL;
3984 >    block_state.modes.value |= UMODE_CALLERID;
3985   }
3986 + #line 3987 "conf_parser.c" /* yacc.c:1646  */
3987      break;
3988  
3989 <  case 165:
3990 < /* Line 1813 of yacc.c  */
4140 < #line 1151 "conf_parser.y"
3989 >  case 195:
3990 > #line 1278 "conf_parser.y" /* yacc.c:1646  */
3991      {
3992    if (conf_parser_ctx.pass == 2)
3993 <    yy_aconf->modes |= UMODE_OPERWALL;
3993 >    block_state.modes.value |= UMODE_LOCOPS;
3994   }
3995 + #line 3996 "conf_parser.c" /* yacc.c:1646  */
3996      break;
3997  
3998 <  case 166:
3999 < /* Line 1813 of yacc.c  */
4149 < #line 1155 "conf_parser.y"
3998 >  case 196:
3999 > #line 1282 "conf_parser.y" /* yacc.c:1646  */
4000      {
4001    if (conf_parser_ctx.pass == 2)
4002 <    yy_aconf->modes |= UMODE_SERVNOTICE;
4002 >    block_state.modes.value |= UMODE_REGONLY;
4003   }
4004 + #line 4005 "conf_parser.c" /* yacc.c:1646  */
4005      break;
4006  
4007 <  case 167:
4008 < /* Line 1813 of yacc.c  */
4158 < #line 1159 "conf_parser.y"
4007 >  case 197:
4008 > #line 1286 "conf_parser.y" /* yacc.c:1646  */
4009      {
4010    if (conf_parser_ctx.pass == 2)
4011 <    yy_aconf->modes |= UMODE_INVISIBLE;
4011 >    block_state.modes.value |= UMODE_FARCONNECT;
4012   }
4013 + #line 4014 "conf_parser.c" /* yacc.c:1646  */
4014      break;
4015  
4016 <  case 168:
4017 < /* Line 1813 of yacc.c  */
4167 < #line 1163 "conf_parser.y"
4016 >  case 198:
4017 > #line 1292 "conf_parser.y" /* yacc.c:1646  */
4018      {
4019    if (conf_parser_ctx.pass == 2)
4020 <    yy_aconf->modes |= UMODE_WALLOP;
4020 >    block_state.port.value = 0;
4021   }
4022 + #line 4023 "conf_parser.c" /* yacc.c:1646  */
4023      break;
4024  
4025 <  case 169:
4026 < /* Line 1813 of yacc.c  */
4176 < #line 1167 "conf_parser.y"
4025 >  case 202:
4026 > #line 1299 "conf_parser.y" /* yacc.c:1646  */
4027      {
4028    if (conf_parser_ctx.pass == 2)
4029 <    yy_aconf->modes |= UMODE_SOFTCALLERID;
4029 >    block_state.port.value |= OPER_FLAG_KILL_REMOTE;
4030   }
4031 + #line 4032 "conf_parser.c" /* yacc.c:1646  */
4032      break;
4033  
4034 <  case 170:
4035 < /* Line 1813 of yacc.c  */
4185 < #line 1171 "conf_parser.y"
4034 >  case 203:
4035 > #line 1303 "conf_parser.y" /* yacc.c:1646  */
4036      {
4037    if (conf_parser_ctx.pass == 2)
4038 <    yy_aconf->modes |= UMODE_CALLERID;
4038 >    block_state.port.value |= OPER_FLAG_KILL;
4039   }
4040 + #line 4041 "conf_parser.c" /* yacc.c:1646  */
4041      break;
4042  
4043 <  case 171:
4044 < /* Line 1813 of yacc.c  */
4194 < #line 1175 "conf_parser.y"
4043 >  case 204:
4044 > #line 1307 "conf_parser.y" /* yacc.c:1646  */
4045      {
4046    if (conf_parser_ctx.pass == 2)
4047 <    yy_aconf->modes |= UMODE_LOCOPS;
4047 >    block_state.port.value |= OPER_FLAG_CONNECT_REMOTE;
4048   }
4049 + #line 4050 "conf_parser.c" /* yacc.c:1646  */
4050      break;
4051  
4052 <  case 172:
4053 < /* Line 1813 of yacc.c  */
4203 < #line 1181 "conf_parser.y"
4052 >  case 205:
4053 > #line 1311 "conf_parser.y" /* yacc.c:1646  */
4054      {
4055    if (conf_parser_ctx.pass == 2)
4056 <    yy_aconf->port = 0;
4056 >    block_state.port.value |= OPER_FLAG_CONNECT;
4057   }
4058 + #line 4059 "conf_parser.c" /* yacc.c:1646  */
4059      break;
4060  
4061 <  case 176:
4062 < /* Line 1813 of yacc.c  */
4212 < #line 1188 "conf_parser.y"
4061 >  case 206:
4062 > #line 1315 "conf_parser.y" /* yacc.c:1646  */
4063      {
4064    if (conf_parser_ctx.pass == 2)
4065 <    yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4065 >    block_state.port.value |= OPER_FLAG_SQUIT_REMOTE;
4066   }
4067 + #line 4068 "conf_parser.c" /* yacc.c:1646  */
4068      break;
4069  
4070 <  case 177:
4071 < /* Line 1813 of yacc.c  */
4221 < #line 1192 "conf_parser.y"
4070 >  case 207:
4071 > #line 1319 "conf_parser.y" /* yacc.c:1646  */
4072      {
4073    if (conf_parser_ctx.pass == 2)
4074 <    yy_aconf->port |= OPER_FLAG_REMOTE;
4074 >    block_state.port.value |= OPER_FLAG_SQUIT;
4075   }
4076 + #line 4077 "conf_parser.c" /* yacc.c:1646  */
4077      break;
4078  
4079 <  case 178:
4080 < /* Line 1813 of yacc.c  */
4230 < #line 1196 "conf_parser.y"
4079 >  case 208:
4080 > #line 1323 "conf_parser.y" /* yacc.c:1646  */
4081      {
4082    if (conf_parser_ctx.pass == 2)
4083 <    yy_aconf->port |= OPER_FLAG_K;
4083 >    block_state.port.value |= OPER_FLAG_KLINE;
4084   }
4085 + #line 4086 "conf_parser.c" /* yacc.c:1646  */
4086      break;
4087  
4088 <  case 179:
4089 < /* Line 1813 of yacc.c  */
4239 < #line 1200 "conf_parser.y"
4088 >  case 209:
4089 > #line 1327 "conf_parser.y" /* yacc.c:1646  */
4090      {
4091    if (conf_parser_ctx.pass == 2)
4092 <    yy_aconf->port |= OPER_FLAG_UNKLINE;
4092 >    block_state.port.value |= OPER_FLAG_UNKLINE;
4093   }
4094 + #line 4095 "conf_parser.c" /* yacc.c:1646  */
4095      break;
4096  
4097 <  case 180:
4098 < /* Line 1813 of yacc.c  */
4248 < #line 1204 "conf_parser.y"
4097 >  case 210:
4098 > #line 1331 "conf_parser.y" /* yacc.c:1646  */
4099      {
4100    if (conf_parser_ctx.pass == 2)
4101 <    yy_aconf->port |= OPER_FLAG_DLINE;
4101 >    block_state.port.value |= OPER_FLAG_DLINE;
4102   }
4103 + #line 4104 "conf_parser.c" /* yacc.c:1646  */
4104      break;
4105  
4106 <  case 181:
4107 < /* Line 1813 of yacc.c  */
4257 < #line 1208 "conf_parser.y"
4106 >  case 211:
4107 > #line 1335 "conf_parser.y" /* yacc.c:1646  */
4108      {
4109    if (conf_parser_ctx.pass == 2)
4110 <    yy_aconf->port |= OPER_FLAG_UNDLINE;
4110 >    block_state.port.value |= OPER_FLAG_UNDLINE;
4111   }
4112 + #line 4113 "conf_parser.c" /* yacc.c:1646  */
4113      break;
4114  
4115 <  case 182:
4116 < /* Line 1813 of yacc.c  */
4266 < #line 1212 "conf_parser.y"
4115 >  case 212:
4116 > #line 1339 "conf_parser.y" /* yacc.c:1646  */
4117      {
4118    if (conf_parser_ctx.pass == 2)
4119 <    yy_aconf->port |= OPER_FLAG_X;
4119 >    block_state.port.value |= OPER_FLAG_XLINE;
4120   }
4121 + #line 4122 "conf_parser.c" /* yacc.c:1646  */
4122      break;
4123  
4124 <  case 183:
4125 < /* Line 1813 of yacc.c  */
4275 < #line 1216 "conf_parser.y"
4124 >  case 213:
4125 > #line 1343 "conf_parser.y" /* yacc.c:1646  */
4126      {
4127    if (conf_parser_ctx.pass == 2)
4128 <    yy_aconf->port |= OPER_FLAG_GLINE;
4128 >    block_state.port.value |= OPER_FLAG_UNXLINE;
4129   }
4130 + #line 4131 "conf_parser.c" /* yacc.c:1646  */
4131      break;
4132  
4133 <  case 184:
4134 < /* Line 1813 of yacc.c  */
4284 < #line 1220 "conf_parser.y"
4133 >  case 214:
4134 > #line 1347 "conf_parser.y" /* yacc.c:1646  */
4135      {
4136    if (conf_parser_ctx.pass == 2)
4137 <    yy_aconf->port |= OPER_FLAG_DIE;
4137 >    block_state.port.value |= OPER_FLAG_GLINE;
4138   }
4139 + #line 4140 "conf_parser.c" /* yacc.c:1646  */
4140      break;
4141  
4142 <  case 185:
4143 < /* Line 1813 of yacc.c  */
4293 < #line 1224 "conf_parser.y"
4142 >  case 215:
4143 > #line 1351 "conf_parser.y" /* yacc.c:1646  */
4144      {
4145    if (conf_parser_ctx.pass == 2)
4146 <    yy_aconf->port |= OPER_FLAG_RESTART;
4146 >    block_state.port.value |= OPER_FLAG_DIE;
4147   }
4148 + #line 4149 "conf_parser.c" /* yacc.c:1646  */
4149      break;
4150  
4151 <  case 186:
4152 < /* Line 1813 of yacc.c  */
4302 < #line 1228 "conf_parser.y"
4151 >  case 216:
4152 > #line 1355 "conf_parser.y" /* yacc.c:1646  */
4153      {
4154    if (conf_parser_ctx.pass == 2)
4155 <    yy_aconf->port |= OPER_FLAG_REHASH;
4155 >    block_state.port.value |= OPER_FLAG_RESTART;
4156   }
4157 + #line 4158 "conf_parser.c" /* yacc.c:1646  */
4158      break;
4159  
4160 <  case 187:
4161 < /* Line 1813 of yacc.c  */
4311 < #line 1232 "conf_parser.y"
4160 >  case 217:
4161 > #line 1359 "conf_parser.y" /* yacc.c:1646  */
4162      {
4163    if (conf_parser_ctx.pass == 2)
4164 <    yy_aconf->port |= OPER_FLAG_ADMIN;
4164 >    block_state.port.value |= OPER_FLAG_REHASH;
4165   }
4166 + #line 4167 "conf_parser.c" /* yacc.c:1646  */
4167      break;
4168  
4169 <  case 188:
4170 < /* Line 1813 of yacc.c  */
4320 < #line 1236 "conf_parser.y"
4169 >  case 218:
4170 > #line 1363 "conf_parser.y" /* yacc.c:1646  */
4171      {
4172    if (conf_parser_ctx.pass == 2)
4173 <    yy_aconf->port |= OPER_FLAG_N;
4173 >    block_state.port.value |= OPER_FLAG_ADMIN;
4174   }
4175 + #line 4176 "conf_parser.c" /* yacc.c:1646  */
4176      break;
4177  
4178 <  case 189:
4179 < /* Line 1813 of yacc.c  */
4329 < #line 1240 "conf_parser.y"
4178 >  case 219:
4179 > #line 1367 "conf_parser.y" /* yacc.c:1646  */
4180      {
4181    if (conf_parser_ctx.pass == 2)
4182 <    yy_aconf->port |= OPER_FLAG_OPERWALL;
4182 >    block_state.port.value |= OPER_FLAG_GLOBOPS;
4183   }
4184 + #line 4185 "conf_parser.c" /* yacc.c:1646  */
4185      break;
4186  
4187 <  case 190:
4188 < /* Line 1813 of yacc.c  */
4338 < #line 1244 "conf_parser.y"
4187 >  case 220:
4188 > #line 1371 "conf_parser.y" /* yacc.c:1646  */
4189      {
4190    if (conf_parser_ctx.pass == 2)
4191 <    yy_aconf->port |= OPER_FLAG_GLOBOPS;
4191 >    block_state.port.value |= OPER_FLAG_WALLOPS;
4192   }
4193 + #line 4194 "conf_parser.c" /* yacc.c:1646  */
4194      break;
4195  
4196 <  case 191:
4197 < /* Line 1813 of yacc.c  */
4347 < #line 1248 "conf_parser.y"
4196 >  case 221:
4197 > #line 1375 "conf_parser.y" /* yacc.c:1646  */
4198      {
4199    if (conf_parser_ctx.pass == 2)
4200 <    yy_aconf->port |= OPER_FLAG_OPER_SPY;
4200 >    block_state.port.value |= OPER_FLAG_LOCOPS;
4201   }
4202 + #line 4203 "conf_parser.c" /* yacc.c:1646  */
4203      break;
4204  
4205 <  case 192:
4206 < /* Line 1813 of yacc.c  */
4356 < #line 1252 "conf_parser.y"
4205 >  case 222:
4206 > #line 1379 "conf_parser.y" /* yacc.c:1646  */
4207      {
4208    if (conf_parser_ctx.pass == 2)
4209 <    yy_aconf->port |= OPER_FLAG_REMOTEBAN;
4209 >    block_state.port.value |= OPER_FLAG_REMOTEBAN;
4210   }
4211 + #line 4212 "conf_parser.c" /* yacc.c:1646  */
4212      break;
4213  
4214 <  case 193:
4215 < /* Line 1813 of yacc.c  */
4365 < #line 1256 "conf_parser.y"
4214 >  case 223:
4215 > #line 1383 "conf_parser.y" /* yacc.c:1646  */
4216      {
4217    if (conf_parser_ctx.pass == 2)
4218 <    yy_aconf->port |= OPER_FLAG_SET;
4218 >    block_state.port.value |= OPER_FLAG_SET;
4219   }
4220 + #line 4221 "conf_parser.c" /* yacc.c:1646  */
4221      break;
4222  
4223 <  case 194:
4224 < /* Line 1813 of yacc.c  */
4374 < #line 1260 "conf_parser.y"
4223 >  case 224:
4224 > #line 1387 "conf_parser.y" /* yacc.c:1646  */
4225      {
4226    if (conf_parser_ctx.pass == 2)
4227 <    yy_aconf->port |= OPER_FLAG_MODULE;
4227 >    block_state.port.value |= OPER_FLAG_MODULE;
4228   }
4229 + #line 4230 "conf_parser.c" /* yacc.c:1646  */
4230      break;
4231  
4232 <  case 195:
4233 < /* Line 1813 of yacc.c  */
4383 < #line 1270 "conf_parser.y"
4232 >  case 225:
4233 > #line 1397 "conf_parser.y" /* yacc.c:1646  */
4234      {
4235 <  if (conf_parser_ctx.pass == 1)
4236 <  {
4237 <    yy_conf = make_conf_item(CLASS_TYPE);
4238 <    yy_class = map_to_conf(yy_conf);
4239 <  }
4235 >  if (conf_parser_ctx.pass != 1)
4236 >    break;
4237 >
4238 >  reset_block_state();
4239 >
4240 >  block_state.ping_freq.value = DEFAULT_PINGFREQUENCY;
4241 >  block_state.con_freq.value  = DEFAULT_CONNECTFREQUENCY;
4242 >  block_state.max_total.value = MAXIMUM_LINKS_DEFAULT;
4243 >  block_state.max_sendq.value = DEFAULT_SENDQ;
4244 >  block_state.max_recvq.value = DEFAULT_RECVQ;
4245   }
4246 + #line 4247 "conf_parser.c" /* yacc.c:1646  */
4247      break;
4248  
4249 <  case 196:
4250 < /* Line 1813 of yacc.c  */
4395 < #line 1277 "conf_parser.y"
4249 >  case 226:
4250 > #line 1409 "conf_parser.y" /* yacc.c:1646  */
4251      {
4252 <  if (conf_parser_ctx.pass == 1)
4398 <  {
4399 <    struct ConfItem *cconf = NULL;
4400 <    struct ClassItem *class = NULL;
4252 >  struct ClassItem *class = NULL;
4253  
4254 <    if (yy_class_name == NULL)
4255 <      delete_conf_item(yy_conf);
4404 <    else
4405 <    {
4406 <      cconf = find_exact_name_conf(CLASS_TYPE, NULL, yy_class_name, NULL, NULL);
4254 >  if (conf_parser_ctx.pass != 1)
4255 >    break;
4256  
4257 <      if (cconf != NULL)                /* The class existed already */
4258 <      {
4410 <        int user_count = 0;
4257 >  if (!block_state.class.buf[0])
4258 >    break;
4259  
4260 <        rebuild_cidr_class(cconf, yy_class);
4260 >  if (!(class = class_find(block_state.class.buf, 0)))
4261 >    class = class_make();
4262  
4263 <        class = map_to_conf(cconf);
4263 >  class->active = 1;
4264 >  MyFree(class->name);
4265 >  class->name = xstrdup(block_state.class.buf);
4266 >  class->ping_freq = block_state.ping_freq.value;
4267 >  class->max_perip = block_state.max_perip.value;
4268 >  class->con_freq = block_state.con_freq.value;
4269 >  class->max_total = block_state.max_total.value;
4270 >  class->max_global = block_state.max_global.value;
4271 >  class->max_local = block_state.max_local.value;
4272 >  class->max_ident = block_state.max_ident.value;
4273 >  class->max_sendq = block_state.max_sendq.value;
4274 >  class->max_recvq = block_state.max_recvq.value;
4275 >  class->max_channels = block_state.max_channels.value;
4276  
4277 <        user_count = class->curr_user_count;
4278 <        memcpy(class, yy_class, sizeof(*class));
4279 <        class->curr_user_count = user_count;
4280 <        class->active = 1;
4277 >  if (block_state.min_idle.value > block_state.max_idle.value)
4278 >  {
4279 >    block_state.min_idle.value = 0;
4280 >    block_state.max_idle.value = 0;
4281 >    block_state.flags.value &= ~CLASS_FLAGS_FAKE_IDLE;
4282 >  }
4283  
4284 <        delete_conf_item(yy_conf);
4284 >  class->flags = block_state.flags.value;
4285 >  class->min_idle = block_state.min_idle.value;
4286 >  class->max_idle = block_state.max_idle.value;
4287  
4288 <        MyFree(cconf->name);            /* Allows case change of class name */
4289 <        cconf->name = yy_class_name;
4290 <      }
4291 <      else      /* Brand new class */
4292 <      {
4293 <        MyFree(yy_conf->name);          /* just in case it was allocated */
4429 <        yy_conf->name = yy_class_name;
4430 <        yy_class->active = 1;
4431 <      }
4432 <    }
4288 >  if (class->number_per_cidr && block_state.number_per_cidr.value)
4289 >    if ((class->cidr_bitlen_ipv4 && block_state.cidr_bitlen_ipv4.value) ||
4290 >        (class->cidr_bitlen_ipv6 && block_state.cidr_bitlen_ipv6.value))
4291 >      if ((class->cidr_bitlen_ipv4 != block_state.cidr_bitlen_ipv4.value) ||
4292 >          (class->cidr_bitlen_ipv6 != block_state.cidr_bitlen_ipv6.value))
4293 >        rebuild_cidr_list(class);
4294  
4295 <    yy_class_name = NULL;
4296 <  }
4295 >  class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4296 >  class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4297 >  class->number_per_cidr = block_state.number_per_cidr.value;
4298   }
4299 + #line 4300 "conf_parser.c" /* yacc.c:1646  */
4300      break;
4301  
4302 <  case 214:
4303 < /* Line 1813 of yacc.c  */
4441 < #line 1335 "conf_parser.y"
4302 >  case 247:
4303 > #line 1478 "conf_parser.y" /* yacc.c:1646  */
4304      {
4305    if (conf_parser_ctx.pass == 1)
4306 <  {
4445 <    MyFree(yy_class_name);
4446 <    DupString(yy_class_name, yylval.string);
4447 <  }
4306 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4307   }
4308 + #line 4309 "conf_parser.c" /* yacc.c:1646  */
4309      break;
4310  
4311 <  case 215:
4312 < /* Line 1813 of yacc.c  */
4453 < #line 1344 "conf_parser.y"
4311 >  case 248:
4312 > #line 1484 "conf_parser.y" /* yacc.c:1646  */
4313      {
4314    if (conf_parser_ctx.pass == 1)
4315 <    yy_class->ping_freq = (yyvsp[(3) - (4)].number);
4315 >    block_state.ping_freq.value = (yyvsp[-1].number);
4316   }
4317 + #line 4318 "conf_parser.c" /* yacc.c:1646  */
4318      break;
4319  
4320 <  case 216:
4321 < /* Line 1813 of yacc.c  */
4462 < #line 1350 "conf_parser.y"
4320 >  case 249:
4321 > #line 1490 "conf_parser.y" /* yacc.c:1646  */
4322      {
4323    if (conf_parser_ctx.pass == 1)
4324 <    yy_class->ping_warning = (yyvsp[(3) - (4)].number);
4324 >    block_state.max_perip.value = (yyvsp[-1].number);
4325   }
4326 + #line 4327 "conf_parser.c" /* yacc.c:1646  */
4327      break;
4328  
4329 <  case 217:
4330 < /* Line 1813 of yacc.c  */
4471 < #line 1356 "conf_parser.y"
4329 >  case 250:
4330 > #line 1496 "conf_parser.y" /* yacc.c:1646  */
4331      {
4332    if (conf_parser_ctx.pass == 1)
4333 <    yy_class->max_perip = (yyvsp[(3) - (4)].number);
4333 >    block_state.con_freq.value = (yyvsp[-1].number);
4334   }
4335 + #line 4336 "conf_parser.c" /* yacc.c:1646  */
4336      break;
4337  
4338 <  case 218:
4339 < /* Line 1813 of yacc.c  */
4480 < #line 1362 "conf_parser.y"
4338 >  case 251:
4339 > #line 1502 "conf_parser.y" /* yacc.c:1646  */
4340      {
4341    if (conf_parser_ctx.pass == 1)
4342 <    yy_class->con_freq = (yyvsp[(3) - (4)].number);
4342 >    block_state.max_channels.value = (yyvsp[-1].number);
4343   }
4344 + #line 4345 "conf_parser.c" /* yacc.c:1646  */
4345      break;
4346  
4347 <  case 219:
4348 < /* Line 1813 of yacc.c  */
4489 < #line 1368 "conf_parser.y"
4347 >  case 252:
4348 > #line 1508 "conf_parser.y" /* yacc.c:1646  */
4349      {
4350    if (conf_parser_ctx.pass == 1)
4351 <    yy_class->max_total = (yyvsp[(3) - (4)].number);
4351 >    block_state.max_total.value = (yyvsp[-1].number);
4352   }
4353 + #line 4354 "conf_parser.c" /* yacc.c:1646  */
4354      break;
4355  
4356 <  case 220:
4357 < /* Line 1813 of yacc.c  */
4498 < #line 1374 "conf_parser.y"
4356 >  case 253:
4357 > #line 1514 "conf_parser.y" /* yacc.c:1646  */
4358      {
4359    if (conf_parser_ctx.pass == 1)
4360 <    yy_class->max_global = (yyvsp[(3) - (4)].number);
4360 >    block_state.max_global.value = (yyvsp[-1].number);
4361   }
4362 + #line 4363 "conf_parser.c" /* yacc.c:1646  */
4363      break;
4364  
4365 <  case 221:
4366 < /* Line 1813 of yacc.c  */
4507 < #line 1380 "conf_parser.y"
4365 >  case 254:
4366 > #line 1520 "conf_parser.y" /* yacc.c:1646  */
4367      {
4368    if (conf_parser_ctx.pass == 1)
4369 <    yy_class->max_local = (yyvsp[(3) - (4)].number);
4369 >    block_state.max_local.value = (yyvsp[-1].number);
4370   }
4371 + #line 4372 "conf_parser.c" /* yacc.c:1646  */
4372      break;
4373  
4374 <  case 222:
4375 < /* Line 1813 of yacc.c  */
4516 < #line 1386 "conf_parser.y"
4374 >  case 255:
4375 > #line 1526 "conf_parser.y" /* yacc.c:1646  */
4376      {
4377    if (conf_parser_ctx.pass == 1)
4378 <    yy_class->max_ident = (yyvsp[(3) - (4)].number);
4378 >    block_state.max_ident.value = (yyvsp[-1].number);
4379   }
4380 + #line 4381 "conf_parser.c" /* yacc.c:1646  */
4381      break;
4382  
4383 <  case 223:
4384 < /* Line 1813 of yacc.c  */
4525 < #line 1392 "conf_parser.y"
4383 >  case 256:
4384 > #line 1532 "conf_parser.y" /* yacc.c:1646  */
4385      {
4386    if (conf_parser_ctx.pass == 1)
4387 <    yy_class->max_sendq = (yyvsp[(3) - (4)].number);
4387 >    block_state.max_sendq.value = (yyvsp[-1].number);
4388   }
4389 + #line 4390 "conf_parser.c" /* yacc.c:1646  */
4390      break;
4391  
4392 <  case 224:
4393 < /* Line 1813 of yacc.c  */
4534 < #line 1398 "conf_parser.y"
4392 >  case 257:
4393 > #line 1538 "conf_parser.y" /* yacc.c:1646  */
4394      {
4395    if (conf_parser_ctx.pass == 1)
4396 <    if ((yyvsp[(3) - (4)].number) >= CLIENT_FLOOD_MIN && (yyvsp[(3) - (4)].number) <= CLIENT_FLOOD_MAX)
4397 <      yy_class->max_recvq = (yyvsp[(3) - (4)].number);
4396 >    if ((yyvsp[-1].number) >= CLIENT_FLOOD_MIN && (yyvsp[-1].number) <= CLIENT_FLOOD_MAX)
4397 >      block_state.max_recvq.value = (yyvsp[-1].number);
4398   }
4399 + #line 4400 "conf_parser.c" /* yacc.c:1646  */
4400      break;
4401  
4402 <  case 225:
4403 < /* Line 1813 of yacc.c  */
4544 < #line 1405 "conf_parser.y"
4402 >  case 258:
4403 > #line 1545 "conf_parser.y" /* yacc.c:1646  */
4404      {
4405    if (conf_parser_ctx.pass == 1)
4406 <    yy_class->cidr_bitlen_ipv4 = (yyvsp[(3) - (4)].number) > 32 ? 32 : (yyvsp[(3) - (4)].number);
4406 >    block_state.cidr_bitlen_ipv4.value = (yyvsp[-1].number) > 32 ? 32 : (yyvsp[-1].number);
4407   }
4408 + #line 4409 "conf_parser.c" /* yacc.c:1646  */
4409      break;
4410  
4411 <  case 226:
4412 < /* Line 1813 of yacc.c  */
4553 < #line 1411 "conf_parser.y"
4411 >  case 259:
4412 > #line 1551 "conf_parser.y" /* yacc.c:1646  */
4413      {
4414    if (conf_parser_ctx.pass == 1)
4415 <    yy_class->cidr_bitlen_ipv6 = (yyvsp[(3) - (4)].number) > 128 ? 128 : (yyvsp[(3) - (4)].number);
4415 >    block_state.cidr_bitlen_ipv6.value = (yyvsp[-1].number) > 128 ? 128 : (yyvsp[-1].number);
4416   }
4417 + #line 4418 "conf_parser.c" /* yacc.c:1646  */
4418      break;
4419  
4420 <  case 227:
4421 < /* Line 1813 of yacc.c  */
4562 < #line 1417 "conf_parser.y"
4420 >  case 260:
4421 > #line 1557 "conf_parser.y" /* yacc.c:1646  */
4422      {
4423    if (conf_parser_ctx.pass == 1)
4424 <    yy_class->number_per_cidr = (yyvsp[(3) - (4)].number);
4424 >    block_state.number_per_cidr.value = (yyvsp[-1].number);
4425   }
4426 + #line 4427 "conf_parser.c" /* yacc.c:1646  */
4427      break;
4428  
4429 <  case 228:
4430 < /* Line 1813 of yacc.c  */
4571 < #line 1426 "conf_parser.y"
4429 >  case 261:
4430 > #line 1563 "conf_parser.y" /* yacc.c:1646  */
4431      {
4432 <  if (conf_parser_ctx.pass == 2)
4433 <  {
4434 <    listener_address = NULL;
4435 <    listener_flags = 0;
4436 <  }
4432 >  if (conf_parser_ctx.pass != 1)
4433 >    break;
4434 >
4435 >  block_state.min_idle.value = (yyvsp[-1].number);
4436 >  block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4437 > }
4438 > #line 4439 "conf_parser.c" /* yacc.c:1646  */
4439 >    break;
4440 >
4441 >  case 262:
4442 > #line 1572 "conf_parser.y" /* yacc.c:1646  */
4443 >    {
4444 >  if (conf_parser_ctx.pass != 1)
4445 >    break;
4446 >
4447 >  block_state.max_idle.value = (yyvsp[-1].number);
4448 >  block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4449 > }
4450 > #line 4451 "conf_parser.c" /* yacc.c:1646  */
4451 >    break;
4452 >
4453 >  case 263:
4454 > #line 1581 "conf_parser.y" /* yacc.c:1646  */
4455 >    {
4456 >  if (conf_parser_ctx.pass == 1)
4457 >    block_state.flags.value &= CLASS_FLAGS_FAKE_IDLE;
4458 > }
4459 > #line 4460 "conf_parser.c" /* yacc.c:1646  */
4460 >    break;
4461 >
4462 >  case 267:
4463 > #line 1588 "conf_parser.y" /* yacc.c:1646  */
4464 >    {
4465 >  if (conf_parser_ctx.pass == 1)
4466 >    block_state.flags.value |= CLASS_FLAGS_RANDOM_IDLE;
4467 > }
4468 > #line 4469 "conf_parser.c" /* yacc.c:1646  */
4469 >    break;
4470 >
4471 >  case 268:
4472 > #line 1592 "conf_parser.y" /* yacc.c:1646  */
4473 >    {
4474 >  if (conf_parser_ctx.pass == 1)
4475 >    block_state.flags.value |= CLASS_FLAGS_HIDE_IDLE_FROM_OPERS;
4476   }
4477 + #line 4478 "conf_parser.c" /* yacc.c:1646  */
4478      break;
4479  
4480 <  case 229:
4481 < /* Line 1813 of yacc.c  */
4583 < #line 1433 "conf_parser.y"
4480 >  case 269:
4481 > #line 1602 "conf_parser.y" /* yacc.c:1646  */
4482      {
4483    if (conf_parser_ctx.pass == 2)
4484 <  {
4587 <    MyFree(listener_address);
4588 <    listener_address = NULL;
4589 <  }
4484 >    reset_block_state();
4485   }
4486 + #line 4487 "conf_parser.c" /* yacc.c:1646  */
4487      break;
4488  
4489 <  case 230:
4490 < /* Line 1813 of yacc.c  */
4595 < #line 1442 "conf_parser.y"
4489 >  case 271:
4490 > #line 1608 "conf_parser.y" /* yacc.c:1646  */
4491      {
4492 <  listener_flags = 0;
4492 >  block_state.flags.value = 0;
4493   }
4494 + #line 4495 "conf_parser.c" /* yacc.c:1646  */
4495      break;
4496  
4497 <  case 234:
4498 < /* Line 1813 of yacc.c  */
4603 < #line 1448 "conf_parser.y"
4497 >  case 275:
4498 > #line 1614 "conf_parser.y" /* yacc.c:1646  */
4499      {
4500    if (conf_parser_ctx.pass == 2)
4501 <    listener_flags |= LISTENER_SSL;
4501 >    block_state.flags.value |= LISTENER_SSL;
4502   }
4503 + #line 4504 "conf_parser.c" /* yacc.c:1646  */
4504      break;
4505  
4506 <  case 235:
4507 < /* Line 1813 of yacc.c  */
4612 < #line 1452 "conf_parser.y"
4506 >  case 276:
4507 > #line 1618 "conf_parser.y" /* yacc.c:1646  */
4508      {
4509    if (conf_parser_ctx.pass == 2)
4510 <    listener_flags |= LISTENER_HIDDEN;
4510 >    block_state.flags.value |= LISTENER_HIDDEN;
4511   }
4512 + #line 4513 "conf_parser.c" /* yacc.c:1646  */
4513      break;
4514  
4515 <  case 236:
4516 < /* Line 1813 of yacc.c  */
4621 < #line 1456 "conf_parser.y"
4515 >  case 277:
4516 > #line 1622 "conf_parser.y" /* yacc.c:1646  */
4517      {
4518    if (conf_parser_ctx.pass == 2)
4519 <    listener_flags |= LISTENER_SERVER;
4519 >   block_state.flags.value |= LISTENER_SERVER;
4520   }
4521 + #line 4522 "conf_parser.c" /* yacc.c:1646  */
4522      break;
4523  
4524 <  case 244:
4525 < /* Line 1813 of yacc.c  */
4526 < #line 1466 "conf_parser.y"
4527 <    { listener_flags = 0; }
4524 >  case 285:
4525 > #line 1630 "conf_parser.y" /* yacc.c:1646  */
4526 >    { block_state.flags.value = 0; }
4527 > #line 4528 "conf_parser.c" /* yacc.c:1646  */
4528      break;
4529  
4530 <  case 248:
4531 < /* Line 1813 of yacc.c  */
4636 < #line 1471 "conf_parser.y"
4530 >  case 289:
4531 > #line 1635 "conf_parser.y" /* yacc.c:1646  */
4532      {
4533    if (conf_parser_ctx.pass == 2)
4534    {
4535 <    if ((listener_flags & LISTENER_SSL))
4535 >    if (block_state.flags.value & LISTENER_SSL)
4536   #ifdef HAVE_LIBCRYPTO
4537        if (!ServerInfo.server_ctx)
4538   #endif
4539        {
4540 <        yyerror("SSL not available - port closed");
4541 <        break;
4540 >        conf_error_report("SSL not available - port closed");
4541 >        break;
4542        }
4543 <    add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
4543 >    add_listener((yyvsp[0].number), block_state.addr.buf, block_state.flags.value);
4544    }
4545   }
4546 + #line 4547 "conf_parser.c" /* yacc.c:1646  */
4547      break;
4548  
4549 <  case 249:
4550 < /* Line 1813 of yacc.c  */
4655 < #line 1485 "conf_parser.y"
4549 >  case 290:
4550 > #line 1649 "conf_parser.y" /* yacc.c:1646  */
4551      {
4552    if (conf_parser_ctx.pass == 2)
4553    {
4554 <    int i;
4660 <
4661 <    if ((listener_flags & LISTENER_SSL))
4554 >    if (block_state.flags.value & LISTENER_SSL)
4555   #ifdef HAVE_LIBCRYPTO
4556        if (!ServerInfo.server_ctx)
4557   #endif
4558        {
4559 <        yyerror("SSL not available - port closed");
4560 <        break;
4559 >        conf_error_report("SSL not available - port closed");
4560 >        break;
4561        }
4562  
4563 <    for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
4564 <      add_listener(i, listener_address, listener_flags);
4563 >    for (int i = (yyvsp[-2].number); i <= (yyvsp[0].number); ++i)
4564 >      add_listener(i, block_state.addr.buf, block_state.flags.value);
4565    }
4566   }
4567 + #line 4568 "conf_parser.c" /* yacc.c:1646  */
4568      break;
4569  
4570 <  case 250:
4571 < /* Line 1813 of yacc.c  */
4678 < #line 1505 "conf_parser.y"
4570 >  case 291:
4571 > #line 1667 "conf_parser.y" /* yacc.c:1646  */
4572      {
4573    if (conf_parser_ctx.pass == 2)
4574 <  {
4682 <    MyFree(listener_address);
4683 <    DupString(listener_address, yylval.string);
4684 <  }
4574 >    strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4575   }
4576 + #line 4577 "conf_parser.c" /* yacc.c:1646  */
4577      break;
4578  
4579 <  case 251:
4580 < /* Line 1813 of yacc.c  */
4690 < #line 1514 "conf_parser.y"
4579 >  case 292:
4580 > #line 1673 "conf_parser.y" /* yacc.c:1646  */
4581      {
4582    if (conf_parser_ctx.pass == 2)
4583 <  {
4694 <    MyFree(listener_address);
4695 <    DupString(listener_address, yylval.string);
4696 <  }
4583 >    strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4584   }
4585 + #line 4586 "conf_parser.c" /* yacc.c:1646  */
4586      break;
4587  
4588 <  case 252:
4589 < /* Line 1813 of yacc.c  */
4702 < #line 1526 "conf_parser.y"
4588 >  case 293:
4589 > #line 1682 "conf_parser.y" /* yacc.c:1646  */
4590      {
4591    if (conf_parser_ctx.pass == 2)
4592 <  {
4706 <    yy_conf = make_conf_item(CLIENT_TYPE);
4707 <    yy_aconf = map_to_conf(yy_conf);
4708 <  }
4709 <  else
4710 <  {
4711 <    MyFree(class_name);
4712 <    class_name = NULL;
4713 <  }
4592 >    reset_block_state();
4593   }
4594 + #line 4595 "conf_parser.c" /* yacc.c:1646  */
4595      break;
4596  
4597 <  case 253:
4598 < /* Line 1813 of yacc.c  */
4719 < #line 1538 "conf_parser.y"
4720 <    {
4721 <  if (conf_parser_ctx.pass == 2)
4722 <  {
4723 <    struct CollectItem *yy_tmp = NULL;
4724 <    dlink_node *ptr = NULL, *next_ptr = NULL;
4725 <
4726 <    if (yy_aconf->user && yy_aconf->host)
4727 <    {
4728 <      conf_add_class_to_conf(yy_conf, class_name);
4729 <      add_conf_by_address(CONF_CLIENT, yy_aconf);
4730 <    }
4731 <    else
4732 <      delete_conf_item(yy_conf);
4733 <
4734 <    /* copy over settings from first struct */
4735 <    DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
4597 >  case 294:
4598 > #line 1686 "conf_parser.y" /* yacc.c:1646  */
4599      {
4600 <      struct AccessItem *new_aconf;
4738 <      struct ConfItem *new_conf;
4739 <
4740 <      new_conf = make_conf_item(CLIENT_TYPE);
4741 <      new_aconf = map_to_conf(new_conf);
4742 <
4743 <      yy_tmp = ptr->data;
4744 <
4745 <      assert(yy_tmp->user && yy_tmp->host);
4746 <
4747 <      if (yy_aconf->passwd != NULL)
4748 <        DupString(new_aconf->passwd, yy_aconf->passwd);
4749 <      if (yy_conf->name != NULL)
4750 <        DupString(new_conf->name, yy_conf->name);
4751 <      if (yy_aconf->passwd != NULL)
4752 <        DupString(new_aconf->passwd, yy_aconf->passwd);
4753 <
4754 <      new_aconf->flags = yy_aconf->flags;
4755 <      new_aconf->port  = yy_aconf->port;
4756 <
4757 <      DupString(new_aconf->user, yy_tmp->user);
4758 <      collapse(new_aconf->user);
4600 >  dlink_node *ptr = NULL;
4601  
4602 <      DupString(new_aconf->host, yy_tmp->host);
4761 <      collapse(new_aconf->host);
4762 <
4763 <      conf_add_class_to_conf(new_conf, class_name);
4764 <      add_conf_by_address(CONF_CLIENT, new_aconf);
4765 <      dlinkDelete(&yy_tmp->node, &col_conf_list);
4766 <      free_collect_item(yy_tmp);
4767 <    }
4768 <
4769 <    MyFree(class_name);
4770 <    class_name = NULL;
4771 <    yy_conf = NULL;
4772 <    yy_aconf = NULL;
4773 <  }
4774 < }
4602 >  if (conf_parser_ctx.pass != 2)
4603      break;
4604  
4605 <  case 265:
4778 < /* Line 1813 of yacc.c  */
4779 < #line 1600 "conf_parser.y"
4780 <    {
4781 <  if (conf_parser_ctx.pass == 2)
4605 >  DLINK_FOREACH(ptr, block_state.mask.list.head)
4606    {
4607 <    struct CollectItem *yy_tmp = NULL;
4607 >    struct MaskItem *conf = NULL;
4608      struct split_nuh_item nuh;
4609  
4610 <    nuh.nuhmask  = yylval.string;
4610 >    nuh.nuhmask  = ptr->data;
4611      nuh.nickptr  = NULL;
4612 <    nuh.userptr  = userbuf;
4613 <    nuh.hostptr  = hostbuf;
4790 <
4612 >    nuh.userptr  = block_state.user.buf;
4613 >    nuh.hostptr  = block_state.host.buf;
4614      nuh.nicksize = 0;
4615 <    nuh.usersize = sizeof(userbuf);
4616 <    nuh.hostsize = sizeof(hostbuf);
4794 <
4615 >    nuh.usersize = sizeof(block_state.user.buf);
4616 >    nuh.hostsize = sizeof(block_state.host.buf);
4617      split_nuh(&nuh);
4618  
4619 <    if (yy_aconf->user == NULL)
4620 <    {
4621 <      DupString(yy_aconf->user, userbuf);
4800 <      DupString(yy_aconf->host, hostbuf);
4801 <    }
4802 <    else
4803 <    {
4804 <      yy_tmp = MyMalloc(sizeof(struct CollectItem));
4619 >    conf        = conf_make(CONF_CLIENT);
4620 >    conf->user  = xstrdup(block_state.user.buf);
4621 >    conf->host  = xstrdup(block_state.host.buf);
4622  
4623 <      DupString(yy_tmp->user, userbuf);
4624 <      DupString(yy_tmp->host, hostbuf);
4623 >    if (block_state.rpass.buf[0])
4624 >      conf->passwd = xstrdup(block_state.rpass.buf);
4625 >    if (block_state.name.buf[0])
4626 >      conf->name = xstrdup(block_state.name.buf);
4627  
4628 <      dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4629 <    }
4628 >    conf->flags = block_state.flags.value;
4629 >    conf->port  = block_state.port.value;
4630 >
4631 >    conf_add_class_to_conf(conf, block_state.class.buf);
4632 >    add_conf_by_address(CONF_CLIENT, conf);
4633    }
4634   }
4635 + #line 4636 "conf_parser.c" /* yacc.c:1646  */
4636      break;
4637  
4638 <  case 266:
4639 < /* Line 1813 of yacc.c  */
4817 < #line 1635 "conf_parser.y"
4638 >  case 306:
4639 > #line 1735 "conf_parser.y" /* yacc.c:1646  */
4640      {
4641    if (conf_parser_ctx.pass == 2)
4642 <  {
4643 <    /* be paranoid */
4644 <    if (yy_aconf->passwd != NULL)
4645 <      memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
4642 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4643 > }
4644 > #line 4645 "conf_parser.c" /* yacc.c:1646  */
4645 >    break;
4646  
4647 <    MyFree(yy_aconf->passwd);
4648 <    DupString(yy_aconf->passwd, yylval.string);
4649 <  }
4647 >  case 307:
4648 > #line 1741 "conf_parser.y" /* yacc.c:1646  */
4649 >    {
4650 >  if (conf_parser_ctx.pass == 2)
4651 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4652   }
4653 + #line 4654 "conf_parser.c" /* yacc.c:1646  */
4654      break;
4655  
4656 <  case 267:
4657 < /* Line 1813 of yacc.c  */
4833 < #line 1648 "conf_parser.y"
4656 >  case 308:
4657 > #line 1747 "conf_parser.y" /* yacc.c:1646  */
4658      {
4659    if (conf_parser_ctx.pass == 2)
4660 <  {
4837 <    MyFree(class_name);
4838 <    DupString(class_name, yylval.string);
4839 <  }
4660 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4661   }
4662 + #line 4663 "conf_parser.c" /* yacc.c:1646  */
4663      break;
4664  
4665 <  case 268:
4666 < /* Line 1813 of yacc.c  */
4845 < #line 1657 "conf_parser.y"
4665 >  case 309:
4666 > #line 1753 "conf_parser.y" /* yacc.c:1646  */
4667      {
4668    if (conf_parser_ctx.pass == 2)
4669    {
4670      if (yylval.number)
4671 <      SetConfEncrypted(yy_aconf);
4671 >      block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4672      else
4673 <      ClearConfEncrypted(yy_aconf);
4673 >      block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4674    }
4675   }
4676 + #line 4677 "conf_parser.c" /* yacc.c:1646  */
4677      break;
4678  
4679 <  case 269:
4680 < /* Line 1813 of yacc.c  */
4859 < #line 1668 "conf_parser.y"
4679 >  case 310:
4680 > #line 1764 "conf_parser.y" /* yacc.c:1646  */
4681      {
4682 +  if (conf_parser_ctx.pass == 2)
4683 +    block_state.flags.value &= (CONF_FLAGS_ENCRYPTED | CONF_FLAGS_SPOOF_IP);
4684   }
4685 + #line 4686 "conf_parser.c" /* yacc.c:1646  */
4686      break;
4687  
4688 <  case 273:
4689 < /* Line 1813 of yacc.c  */
4866 < #line 1673 "conf_parser.y"
4688 >  case 314:
4689 > #line 1771 "conf_parser.y" /* yacc.c:1646  */
4690      {
4691    if (conf_parser_ctx.pass == 2)
4692 <    yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
4692 >    block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4693   }
4694 + #line 4695 "conf_parser.c" /* yacc.c:1646  */
4695      break;
4696  
4697 <  case 274:
4698 < /* Line 1813 of yacc.c  */
4875 < #line 1677 "conf_parser.y"
4697 >  case 315:
4698 > #line 1775 "conf_parser.y" /* yacc.c:1646  */
4699      {
4700    if (conf_parser_ctx.pass == 2)
4701 <    yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
4701 >    block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4702   }
4703 + #line 4704 "conf_parser.c" /* yacc.c:1646  */
4704      break;
4705  
4706 <  case 275:
4707 < /* Line 1813 of yacc.c  */
4884 < #line 1681 "conf_parser.y"
4706 >  case 316:
4707 > #line 1779 "conf_parser.y" /* yacc.c:1646  */
4708      {
4709    if (conf_parser_ctx.pass == 2)
4710 <    yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
4710 >    block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4711   }
4712 + #line 4713 "conf_parser.c" /* yacc.c:1646  */
4713      break;
4714  
4715 <  case 276:
4716 < /* Line 1813 of yacc.c  */
4893 < #line 1685 "conf_parser.y"
4715 >  case 317:
4716 > #line 1783 "conf_parser.y" /* yacc.c:1646  */
4717      {
4718    if (conf_parser_ctx.pass == 2)
4719 <    yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
4719 >    block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4720   }
4721 + #line 4722 "conf_parser.c" /* yacc.c:1646  */
4722      break;
4723  
4724 <  case 277:
4725 < /* Line 1813 of yacc.c  */
4902 < #line 1689 "conf_parser.y"
4724 >  case 318:
4725 > #line 1787 "conf_parser.y" /* yacc.c:1646  */
4726      {
4727    if (conf_parser_ctx.pass == 2)
4728 <    yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
4728 >    block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4729   }
4730 + #line 4731 "conf_parser.c" /* yacc.c:1646  */
4731      break;
4732  
4733 <  case 278:
4734 < /* Line 1813 of yacc.c  */
4911 < #line 1693 "conf_parser.y"
4733 >  case 319:
4734 > #line 1791 "conf_parser.y" /* yacc.c:1646  */
4735      {
4736    if (conf_parser_ctx.pass == 2)
4737 <    yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
4737 >    block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4738   }
4739 + #line 4740 "conf_parser.c" /* yacc.c:1646  */
4740      break;
4741  
4742 <  case 279:
4743 < /* Line 1813 of yacc.c  */
4920 < #line 1697 "conf_parser.y"
4742 >  case 320:
4743 > #line 1795 "conf_parser.y" /* yacc.c:1646  */
4744      {
4745    if (conf_parser_ctx.pass == 2)
4746 <    yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
4746 >    block_state.flags.value |= CONF_FLAGS_EXEMPTGLINE;
4747   }
4748 + #line 4749 "conf_parser.c" /* yacc.c:1646  */
4749      break;
4750  
4751 <  case 280:
4752 < /* Line 1813 of yacc.c  */
4929 < #line 1701 "conf_parser.y"
4751 >  case 321:
4752 > #line 1799 "conf_parser.y" /* yacc.c:1646  */
4753      {
4754    if (conf_parser_ctx.pass == 2)
4755 <    yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
4755 >    block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4756   }
4757 + #line 4758 "conf_parser.c" /* yacc.c:1646  */
4758      break;
4759  
4760 <  case 281:
4761 < /* Line 1813 of yacc.c  */
4938 < #line 1705 "conf_parser.y"
4760 >  case 322:
4761 > #line 1803 "conf_parser.y" /* yacc.c:1646  */
4762      {
4763    if (conf_parser_ctx.pass == 2)
4764 <    yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
4764 >    block_state.flags.value |= CONF_FLAGS_WEBIRC;
4765   }
4766 + #line 4767 "conf_parser.c" /* yacc.c:1646  */
4767      break;
4768  
4769 <  case 282:
4770 < /* Line 1813 of yacc.c  */
4947 < #line 1711 "conf_parser.y"
4769 >  case 323:
4770 > #line 1807 "conf_parser.y" /* yacc.c:1646  */
4771      {
4772    if (conf_parser_ctx.pass == 2)
4773 <  {
4774 <    MyFree(yy_conf->name);
4773 >    block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4774 > }
4775 > #line 4776 "conf_parser.c" /* yacc.c:1646  */
4776 >    break;
4777  
4778 <    if (strlen(yylval.string) <= HOSTLEN && valid_hostname(yylval.string))
4779 <    {    
4955 <      DupString(yy_conf->name, yylval.string);
4956 <      yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
4957 <    }
4958 <    else
4778 >  case 324:
4779 > #line 1813 "conf_parser.y" /* yacc.c:1646  */
4780      {
4781 <      ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4782 <      yy_conf->name = NULL;
4783 <    }
4781 >  if (conf_parser_ctx.pass != 2)
4782 >    break;
4783 >
4784 >  if (valid_hostname(yylval.string))
4785 >  {
4786 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4787 >    block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
4788    }
4789 +  else
4790 +    ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4791   }
4792 + #line 4793 "conf_parser.c" /* yacc.c:1646  */
4793      break;
4794  
4795 <  case 283:
4796 < /* Line 1813 of yacc.c  */
4969 < #line 1730 "conf_parser.y"
4795 >  case 325:
4796 > #line 1827 "conf_parser.y" /* yacc.c:1646  */
4797      {
4798 <  if (conf_parser_ctx.pass == 2)
4799 <  {
4800 <    yy_aconf->flags |= CONF_FLAGS_REDIR;
4801 <    MyFree(yy_conf->name);
4802 <    DupString(yy_conf->name, yylval.string);
4976 <  }
4798 >  if (conf_parser_ctx.pass != 2)
4799 >    break;
4800 >
4801 >  strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4802 >  block_state.flags.value |= CONF_FLAGS_REDIR;
4803   }
4804 + #line 4805 "conf_parser.c" /* yacc.c:1646  */
4805      break;
4806  
4807 <  case 284:
4808 < /* Line 1813 of yacc.c  */
4982 < #line 1740 "conf_parser.y"
4807 >  case 326:
4808 > #line 1836 "conf_parser.y" /* yacc.c:1646  */
4809      {
4810 <  if (conf_parser_ctx.pass == 2)
4811 <  {
4812 <    yy_aconf->flags |= CONF_FLAGS_REDIR;
4813 <    yy_aconf->port = (yyvsp[(3) - (4)].number);
4814 <  }
4810 >  if (conf_parser_ctx.pass != 2)
4811 >    break;
4812 >
4813 >  block_state.flags.value |= CONF_FLAGS_REDIR;
4814 >  block_state.port.value = (yyvsp[-1].number);
4815   }
4816 + #line 4817 "conf_parser.c" /* yacc.c:1646  */
4817      break;
4818  
4819 <  case 285:
4820 < /* Line 1813 of yacc.c  */
4994 < #line 1753 "conf_parser.y"
4819 >  case 327:
4820 > #line 1849 "conf_parser.y" /* yacc.c:1646  */
4821      {
4822 <  if (conf_parser_ctx.pass == 2)
4823 <  {
4824 <    MyFree(resv_reason);
4825 <    resv_reason = NULL;
4826 <  }
4822 >  if (conf_parser_ctx.pass != 2)
4823 >    break;
4824 >
4825 >  reset_block_state();
4826 >  strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4827   }
4828 + #line 4829 "conf_parser.c" /* yacc.c:1646  */
4829      break;
4830  
4831 <  case 286:
4832 < /* Line 1813 of yacc.c  */
5006 < #line 1760 "conf_parser.y"
4831 >  case 328:
4832 > #line 1856 "conf_parser.y" /* yacc.c:1646  */
4833      {
4834 <  if (conf_parser_ctx.pass == 2)
4835 <  {
4836 <    MyFree(resv_reason);
4837 <    resv_reason = NULL;
5012 <  }
4834 >  if (conf_parser_ctx.pass != 2)
4835 >    break;
4836 >
4837 >  create_resv(block_state.name.buf, block_state.rpass.buf, &block_state.mask.list);
4838   }
4839 + #line 4840 "conf_parser.c" /* yacc.c:1646  */
4840      break;
4841  
4842 <  case 293:
4843 < /* Line 1813 of yacc.c  */
5018 < #line 1772 "conf_parser.y"
4842 >  case 335:
4843 > #line 1867 "conf_parser.y" /* yacc.c:1646  */
4844      {
4845    if (conf_parser_ctx.pass == 2)
4846 <  {
5022 <    MyFree(resv_reason);
5023 <    DupString(resv_reason, yylval.string);
5024 <  }
4846 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4847   }
4848 + #line 4849 "conf_parser.c" /* yacc.c:1646  */
4849      break;
4850  
4851 <  case 294:
4852 < /* Line 1813 of yacc.c  */
5030 < #line 1781 "conf_parser.y"
4851 >  case 336:
4852 > #line 1873 "conf_parser.y" /* yacc.c:1646  */
4853      {
4854    if (conf_parser_ctx.pass == 2)
4855 <  {
5034 <    if (IsChanPrefix(*yylval.string))
5035 <    {
5036 <      char def_reason[] = "No reason";
5037 <
5038 <      create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5039 <    }
5040 <  }
5041 <  /* ignore it for now.. but we really should make a warning if
5042 <   * its an erroneous name --fl_ */
4855 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4856   }
4857 + #line 4858 "conf_parser.c" /* yacc.c:1646  */
4858      break;
4859  
4860 <  case 295:
4861 < /* Line 1813 of yacc.c  */
5048 < #line 1796 "conf_parser.y"
4860 >  case 337:
4861 > #line 1879 "conf_parser.y" /* yacc.c:1646  */
4862      {
4863    if (conf_parser_ctx.pass == 2)
4864 <  {
5052 <    char def_reason[] = "No reason";
5053 <
5054 <    create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5055 <  }
4864 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4865   }
4866 + #line 4867 "conf_parser.c" /* yacc.c:1646  */
4867      break;
4868  
4869 <  case 301:
4870 < /* Line 1813 of yacc.c  */
5061 < #line 1814 "conf_parser.y"
4869 >  case 343:
4870 > #line 1894 "conf_parser.y" /* yacc.c:1646  */
4871      {
4872 <  if (conf_parser_ctx.pass == 2)
4872 >  if (conf_parser_ctx.pass != 2)
4873 >    break;
4874 >
4875 >  if (valid_servname(yylval.string))
4876    {
4877 <    if (valid_servname(yylval.string))
4878 <    {
5067 <      yy_conf = make_conf_item(SERVICE_TYPE);
5068 <      DupString(yy_conf->name, yylval.string);
5069 <    }
4877 >    struct MaskItem *conf = conf_make(CONF_SERVICE);
4878 >    conf->name = xstrdup(yylval.string);
4879    }
4880   }
4881 + #line 4882 "conf_parser.c" /* yacc.c:1646  */
4882      break;
4883  
4884 <  case 302:
4885 < /* Line 1813 of yacc.c  */
5076 < #line 1829 "conf_parser.y"
4884 >  case 344:
4885 > #line 1909 "conf_parser.y" /* yacc.c:1646  */
4886      {
4887 <  if (conf_parser_ctx.pass == 2)
4888 <  {
4889 <    yy_conf = make_conf_item(ULINE_TYPE);
4890 <    yy_match_item = map_to_conf(yy_conf);
4891 <    yy_match_item->action = SHARED_ALL;
4892 <  }
4887 >  if (conf_parser_ctx.pass != 2)
4888 >    break;
4889 >
4890 >  reset_block_state();
4891 >
4892 >  strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4893 >  strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4894 >  strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4895 >  block_state.flags.value = SHARED_ALL;
4896   }
4897 + #line 4898 "conf_parser.c" /* yacc.c:1646  */
4898      break;
4899  
4900 <  case 303:
4901 < /* Line 1813 of yacc.c  */
5089 < #line 1837 "conf_parser.y"
4900 >  case 345:
4901 > #line 1920 "conf_parser.y" /* yacc.c:1646  */
4902      {
4903 <  if (conf_parser_ctx.pass == 2)
4904 <  {
4905 <    yy_conf = NULL;
4906 <  }
4903 >  struct MaskItem *conf = NULL;
4904 >
4905 >  if (conf_parser_ctx.pass != 2)
4906 >    break;
4907 >
4908 >  conf = conf_make(CONF_ULINE);
4909 >  conf->flags = block_state.flags.value;
4910 >  conf->name = xstrdup(block_state.name.buf);
4911 >  conf->user = xstrdup(block_state.user.buf);
4912 >  conf->host = xstrdup(block_state.host.buf);
4913   }
4914 + #line 4915 "conf_parser.c" /* yacc.c:1646  */
4915      break;
4916  
4917 <  case 310:
4918 < /* Line 1813 of yacc.c  */
5100 < #line 1848 "conf_parser.y"
4917 >  case 352:
4918 > #line 1937 "conf_parser.y" /* yacc.c:1646  */
4919      {
4920    if (conf_parser_ctx.pass == 2)
4921 <  {
5104 <    MyFree(yy_conf->name);
5105 <    DupString(yy_conf->name, yylval.string);
5106 <  }
4921 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4922   }
4923 + #line 4924 "conf_parser.c" /* yacc.c:1646  */
4924      break;
4925  
4926 <  case 311:
4927 < /* Line 1813 of yacc.c  */
5112 < #line 1857 "conf_parser.y"
4926 >  case 353:
4927 > #line 1943 "conf_parser.y" /* yacc.c:1646  */
4928      {
4929    if (conf_parser_ctx.pass == 2)
4930    {
# Line 5117 | Line 4932 | yyreduce:
4932  
4933      nuh.nuhmask  = yylval.string;
4934      nuh.nickptr  = NULL;
4935 <    nuh.userptr  = userbuf;
4936 <    nuh.hostptr  = hostbuf;
4935 >    nuh.userptr  = block_state.user.buf;
4936 >    nuh.hostptr  = block_state.host.buf;
4937  
4938      nuh.nicksize = 0;
4939 <    nuh.usersize = sizeof(userbuf);
4940 <    nuh.hostsize = sizeof(hostbuf);
4939 >    nuh.usersize = sizeof(block_state.user.buf);
4940 >    nuh.hostsize = sizeof(block_state.host.buf);
4941  
4942      split_nuh(&nuh);
5128
5129    DupString(yy_match_item->user, userbuf);
5130    DupString(yy_match_item->host, hostbuf);
4943    }
4944   }
4945 + #line 4946 "conf_parser.c" /* yacc.c:1646  */
4946      break;
4947  
4948 <  case 312:
4949 < /* Line 1813 of yacc.c  */
5137 < #line 1879 "conf_parser.y"
4948 >  case 354:
4949 > #line 1962 "conf_parser.y" /* yacc.c:1646  */
4950      {
4951    if (conf_parser_ctx.pass == 2)
4952 <    yy_match_item->action = 0;
4952 >    block_state.flags.value = 0;
4953   }
4954 + #line 4955 "conf_parser.c" /* yacc.c:1646  */
4955      break;
4956  
4957 <  case 316:
4958 < /* Line 1813 of yacc.c  */
5146 < #line 1886 "conf_parser.y"
4957 >  case 358:
4958 > #line 1969 "conf_parser.y" /* yacc.c:1646  */
4959      {
4960    if (conf_parser_ctx.pass == 2)
4961 <    yy_match_item->action |= SHARED_KLINE;
4961 >    block_state.flags.value |= SHARED_KLINE;
4962   }
4963 + #line 4964 "conf_parser.c" /* yacc.c:1646  */
4964      break;
4965  
4966 <  case 317:
4967 < /* Line 1813 of yacc.c  */
5155 < #line 1890 "conf_parser.y"
4966 >  case 359:
4967 > #line 1973 "conf_parser.y" /* yacc.c:1646  */
4968      {
4969    if (conf_parser_ctx.pass == 2)
4970 <    yy_match_item->action |= SHARED_UNKLINE;
4970 >    block_state.flags.value |= SHARED_UNKLINE;
4971   }
4972 + #line 4973 "conf_parser.c" /* yacc.c:1646  */
4973      break;
4974  
4975 <  case 318:
4976 < /* Line 1813 of yacc.c  */
5164 < #line 1894 "conf_parser.y"
4975 >  case 360:
4976 > #line 1977 "conf_parser.y" /* yacc.c:1646  */
4977      {
4978    if (conf_parser_ctx.pass == 2)
4979 <    yy_match_item->action |= SHARED_DLINE;
4979 >    block_state.flags.value |= SHARED_DLINE;
4980   }
4981 + #line 4982 "conf_parser.c" /* yacc.c:1646  */
4982      break;
4983  
4984 <  case 319:
4985 < /* Line 1813 of yacc.c  */
5173 < #line 1898 "conf_parser.y"
4984 >  case 361:
4985 > #line 1981 "conf_parser.y" /* yacc.c:1646  */
4986      {
4987    if (conf_parser_ctx.pass == 2)
4988 <    yy_match_item->action |= SHARED_UNDLINE;
4988 >    block_state.flags.value |= SHARED_UNDLINE;
4989   }
4990 + #line 4991 "conf_parser.c" /* yacc.c:1646  */
4991      break;
4992  
4993 <  case 320:
4994 < /* Line 1813 of yacc.c  */
5182 < #line 1902 "conf_parser.y"
4993 >  case 362:
4994 > #line 1985 "conf_parser.y" /* yacc.c:1646  */
4995      {
4996    if (conf_parser_ctx.pass == 2)
4997 <    yy_match_item->action |= SHARED_XLINE;
4997 >    block_state.flags.value |= SHARED_XLINE;
4998   }
4999 + #line 5000 "conf_parser.c" /* yacc.c:1646  */
5000      break;
5001  
5002 <  case 321:
5003 < /* Line 1813 of yacc.c  */
5191 < #line 1906 "conf_parser.y"
5002 >  case 363:
5003 > #line 1989 "conf_parser.y" /* yacc.c:1646  */
5004      {
5005    if (conf_parser_ctx.pass == 2)
5006 <    yy_match_item->action |= SHARED_UNXLINE;
5006 >    block_state.flags.value |= SHARED_UNXLINE;
5007   }
5008 + #line 5009 "conf_parser.c" /* yacc.c:1646  */
5009      break;
5010  
5011 <  case 322:
5012 < /* Line 1813 of yacc.c  */
5200 < #line 1910 "conf_parser.y"
5011 >  case 364:
5012 > #line 1993 "conf_parser.y" /* yacc.c:1646  */
5013      {
5014    if (conf_parser_ctx.pass == 2)
5015 <    yy_match_item->action |= SHARED_RESV;
5015 >    block_state.flags.value |= SHARED_RESV;
5016   }
5017 + #line 5018 "conf_parser.c" /* yacc.c:1646  */
5018      break;
5019  
5020 <  case 323:
5021 < /* Line 1813 of yacc.c  */
5209 < #line 1914 "conf_parser.y"
5020 >  case 365:
5021 > #line 1997 "conf_parser.y" /* yacc.c:1646  */
5022      {
5023    if (conf_parser_ctx.pass == 2)
5024 <    yy_match_item->action |= SHARED_UNRESV;
5024 >    block_state.flags.value |= SHARED_UNRESV;
5025   }
5026 + #line 5027 "conf_parser.c" /* yacc.c:1646  */
5027      break;
5028  
5029 <  case 324:
5030 < /* Line 1813 of yacc.c  */
5218 < #line 1918 "conf_parser.y"
5029 >  case 366:
5030 > #line 2001 "conf_parser.y" /* yacc.c:1646  */
5031      {
5032    if (conf_parser_ctx.pass == 2)
5033 <    yy_match_item->action |= SHARED_LOCOPS;
5033 >    block_state.flags.value |= SHARED_LOCOPS;
5034   }
5035 + #line 5036 "conf_parser.c" /* yacc.c:1646  */
5036      break;
5037  
5038 <  case 325:
5039 < /* Line 1813 of yacc.c  */
5227 < #line 1922 "conf_parser.y"
5038 >  case 367:
5039 > #line 2005 "conf_parser.y" /* yacc.c:1646  */
5040      {
5041    if (conf_parser_ctx.pass == 2)
5042 <    yy_match_item->action = SHARED_ALL;
5042 >    block_state.flags.value = SHARED_ALL;
5043   }
5044 + #line 5045 "conf_parser.c" /* yacc.c:1646  */
5045      break;
5046  
5047 <  case 326:
5048 < /* Line 1813 of yacc.c  */
5236 < #line 1931 "conf_parser.y"
5047 >  case 368:
5048 > #line 2014 "conf_parser.y" /* yacc.c:1646  */
5049      {
5050 <  if (conf_parser_ctx.pass == 2)
5051 <  {
5052 <    yy_conf = make_conf_item(CLUSTER_TYPE);
5053 <    yy_conf->flags = SHARED_ALL;
5054 <  }
5050 >  if (conf_parser_ctx.pass != 2)
5051 >    break;
5052 >
5053 >  reset_block_state();
5054 >
5055 >  strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
5056 >  block_state.flags.value = SHARED_ALL;
5057   }
5058 + #line 5059 "conf_parser.c" /* yacc.c:1646  */
5059      break;
5060  
5061 <  case 327:
5062 < /* Line 1813 of yacc.c  */
5248 < #line 1938 "conf_parser.y"
5061 >  case 369:
5062 > #line 2023 "conf_parser.y" /* yacc.c:1646  */
5063      {
5064 <  if (conf_parser_ctx.pass == 2)
5065 <  {
5066 <    if (yy_conf->name == NULL)
5067 <      DupString(yy_conf->name, "*");
5068 <    yy_conf = NULL;
5069 <  }
5064 >  struct MaskItem *conf = NULL;
5065 >
5066 >  if (conf_parser_ctx.pass != 2)
5067 >    break;
5068 >
5069 >  conf = conf_make(CONF_CLUSTER);
5070 >  conf->flags = block_state.flags.value;
5071 >  conf->name = xstrdup(block_state.name.buf);
5072   }
5073 + #line 5074 "conf_parser.c" /* yacc.c:1646  */
5074      break;
5075  
5076 <  case 333:
5077 < /* Line 1813 of yacc.c  */
5261 < #line 1951 "conf_parser.y"
5076 >  case 375:
5077 > #line 2038 "conf_parser.y" /* yacc.c:1646  */
5078      {
5079    if (conf_parser_ctx.pass == 2)
5080 <    DupString(yy_conf->name, yylval.string);
5080 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5081   }
5082 + #line 5083 "conf_parser.c" /* yacc.c:1646  */
5083      break;
5084  
5085 <  case 334:
5086 < /* Line 1813 of yacc.c  */
5270 < #line 1957 "conf_parser.y"
5085 >  case 376:
5086 > #line 2044 "conf_parser.y" /* yacc.c:1646  */
5087      {
5088    if (conf_parser_ctx.pass == 2)
5089 <    yy_conf->flags = 0;
5089 >    block_state.flags.value = 0;
5090   }
5091 + #line 5092 "conf_parser.c" /* yacc.c:1646  */
5092      break;
5093  
5094 <  case 338:
5095 < /* Line 1813 of yacc.c  */
5279 < #line 1964 "conf_parser.y"
5094 >  case 380:
5095 > #line 2051 "conf_parser.y" /* yacc.c:1646  */
5096      {
5097    if (conf_parser_ctx.pass == 2)
5098 <    yy_conf->flags |= SHARED_KLINE;
5098 >    block_state.flags.value |= SHARED_KLINE;
5099   }
5100 + #line 5101 "conf_parser.c" /* yacc.c:1646  */
5101      break;
5102  
5103 <  case 339:
5104 < /* Line 1813 of yacc.c  */
5288 < #line 1968 "conf_parser.y"
5103 >  case 381:
5104 > #line 2055 "conf_parser.y" /* yacc.c:1646  */
5105      {
5106    if (conf_parser_ctx.pass == 2)
5107 <    yy_conf->flags |= SHARED_UNKLINE;
5107 >    block_state.flags.value |= SHARED_UNKLINE;
5108   }
5109 + #line 5110 "conf_parser.c" /* yacc.c:1646  */
5110      break;
5111  
5112 <  case 340:
5113 < /* Line 1813 of yacc.c  */
5297 < #line 1972 "conf_parser.y"
5112 >  case 382:
5113 > #line 2059 "conf_parser.y" /* yacc.c:1646  */
5114      {
5115    if (conf_parser_ctx.pass == 2)
5116 <    yy_conf->flags |= SHARED_DLINE;
5116 >    block_state.flags.value |= SHARED_DLINE;
5117   }
5118 + #line 5119 "conf_parser.c" /* yacc.c:1646  */
5119      break;
5120  
5121 <  case 341:
5122 < /* Line 1813 of yacc.c  */
5306 < #line 1976 "conf_parser.y"
5121 >  case 383:
5122 > #line 2063 "conf_parser.y" /* yacc.c:1646  */
5123      {
5124    if (conf_parser_ctx.pass == 2)
5125 <    yy_conf->flags |= SHARED_UNDLINE;
5125 >    block_state.flags.value |= SHARED_UNDLINE;
5126   }
5127 + #line 5128 "conf_parser.c" /* yacc.c:1646  */
5128      break;
5129  
5130 <  case 342:
5131 < /* Line 1813 of yacc.c  */
5315 < #line 1980 "conf_parser.y"
5130 >  case 384:
5131 > #line 2067 "conf_parser.y" /* yacc.c:1646  */
5132      {
5133    if (conf_parser_ctx.pass == 2)
5134 <    yy_conf->flags |= SHARED_XLINE;
5134 >    block_state.flags.value |= SHARED_XLINE;
5135   }
5136 + #line 5137 "conf_parser.c" /* yacc.c:1646  */
5137      break;
5138  
5139 <  case 343:
5140 < /* Line 1813 of yacc.c  */
5324 < #line 1984 "conf_parser.y"
5139 >  case 385:
5140 > #line 2071 "conf_parser.y" /* yacc.c:1646  */
5141      {
5142    if (conf_parser_ctx.pass == 2)
5143 <    yy_conf->flags |= SHARED_UNXLINE;
5143 >    block_state.flags.value |= SHARED_UNXLINE;
5144   }
5145 + #line 5146 "conf_parser.c" /* yacc.c:1646  */
5146      break;
5147  
5148 <  case 344:
5149 < /* Line 1813 of yacc.c  */
5333 < #line 1988 "conf_parser.y"
5148 >  case 386:
5149 > #line 2075 "conf_parser.y" /* yacc.c:1646  */
5150      {
5151    if (conf_parser_ctx.pass == 2)
5152 <    yy_conf->flags |= SHARED_RESV;
5152 >    block_state.flags.value |= SHARED_RESV;
5153   }
5154 + #line 5155 "conf_parser.c" /* yacc.c:1646  */
5155      break;
5156  
5157 <  case 345:
5158 < /* Line 1813 of yacc.c  */
5342 < #line 1992 "conf_parser.y"
5157 >  case 387:
5158 > #line 2079 "conf_parser.y" /* yacc.c:1646  */
5159      {
5160    if (conf_parser_ctx.pass == 2)
5161 <    yy_conf->flags |= SHARED_UNRESV;
5161 >    block_state.flags.value |= SHARED_UNRESV;
5162   }
5163 + #line 5164 "conf_parser.c" /* yacc.c:1646  */
5164      break;
5165  
5166 <  case 346:
5167 < /* Line 1813 of yacc.c  */
5351 < #line 1996 "conf_parser.y"
5166 >  case 388:
5167 > #line 2083 "conf_parser.y" /* yacc.c:1646  */
5168      {
5169    if (conf_parser_ctx.pass == 2)
5170 <    yy_conf->flags |= SHARED_LOCOPS;
5170 >    block_state.flags.value |= SHARED_LOCOPS;
5171   }
5172 + #line 5173 "conf_parser.c" /* yacc.c:1646  */
5173      break;
5174  
5175 <  case 347:
5176 < /* Line 1813 of yacc.c  */
5360 < #line 2000 "conf_parser.y"
5175 >  case 389:
5176 > #line 2087 "conf_parser.y" /* yacc.c:1646  */
5177      {
5178    if (conf_parser_ctx.pass == 2)
5179 <    yy_conf->flags = SHARED_ALL;
5179 >    block_state.flags.value = SHARED_ALL;
5180   }
5181 + #line 5182 "conf_parser.c" /* yacc.c:1646  */
5182      break;
5183  
5184 <  case 348:
5185 < /* Line 1813 of yacc.c  */
5369 < #line 2009 "conf_parser.y"
5184 >  case 390:
5185 > #line 2096 "conf_parser.y" /* yacc.c:1646  */
5186      {
5371  if (conf_parser_ctx.pass == 2)
5372  {
5373    yy_conf = make_conf_item(SERVER_TYPE);
5374    yy_aconf = map_to_conf(yy_conf);
5187  
5188 <    /* defaults */
5189 <    yy_aconf->port = PORTNUM;
5190 <  }
5191 <  else
5192 <  {
5193 <    MyFree(class_name);
5382 <    class_name = NULL;
5383 <  }
5188 >  if (conf_parser_ctx.pass != 2)
5189 >    break;
5190 >
5191 >  reset_block_state();
5192 >  block_state.aftype.value = AF_INET;
5193 >  block_state.port.value = PORTNUM;
5194   }
5195 + #line 5196 "conf_parser.c" /* yacc.c:1646  */
5196      break;
5197  
5198 <  case 349:
5199 < /* Line 1813 of yacc.c  */
5389 < #line 2024 "conf_parser.y"
5198 >  case 391:
5199 > #line 2105 "conf_parser.y" /* yacc.c:1646  */
5200      {
5201 <  if (conf_parser_ctx.pass == 2)
5201 >  struct MaskItem *conf = NULL;
5202 >  struct addrinfo hints, *res;
5203 >
5204 >  if (conf_parser_ctx.pass != 2)
5205 >    break;
5206 >
5207 >  if (!block_state.name.buf[0] ||
5208 >      !block_state.host.buf[0])
5209 >    break;
5210 >
5211 >  if (!block_state.rpass.buf[0] ||
5212 >      !block_state.spass.buf[0])
5213 >    break;
5214 >
5215 >  if (has_wildcards(block_state.name.buf) ||
5216 >      has_wildcards(block_state.host.buf))
5217 >    break;
5218 >
5219 >  conf = conf_make(CONF_SERVER);
5220 >  conf->port = block_state.port.value;
5221 >  conf->flags = block_state.flags.value;
5222 >  conf->aftype = block_state.aftype.value;
5223 >  conf->host = xstrdup(block_state.host.buf);
5224 >  conf->name = xstrdup(block_state.name.buf);
5225 >  conf->passwd = xstrdup(block_state.rpass.buf);
5226 >  conf->spasswd = xstrdup(block_state.spass.buf);
5227 >
5228 >  if (block_state.cert.buf[0])
5229 >    conf->certfp = xstrdup(block_state.cert.buf);
5230 >
5231 >  if (block_state.ciph.buf[0])
5232 >    conf->cipher_list = xstrdup(block_state.ciph.buf);
5233 >
5234 >  dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5235 >  dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5236 >
5237 >  if (block_state.bind.buf[0])
5238    {
5239 <    if (yy_aconf->host && yy_aconf->passwd && yy_aconf->spasswd)
5240 <    {
5241 <      if (conf_add_server(yy_conf, class_name) == -1)
5242 <        delete_conf_item(yy_conf);
5243 <    }
5239 >    memset(&hints, 0, sizeof(hints));
5240 >
5241 >    hints.ai_family   = AF_UNSPEC;
5242 >    hints.ai_socktype = SOCK_STREAM;
5243 >    hints.ai_flags    = AI_PASSIVE | AI_NUMERICHOST;
5244 >
5245 >    if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5246 >      ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", block_state.bind.buf);
5247      else
5248      {
5249 <      if (yy_conf->name != NULL)
5401 <      {
5402 <        if (yy_aconf->host == NULL)
5403 <          yyerror("Ignoring connect block -- missing host");
5404 <        else if (!yy_aconf->passwd || !yy_aconf->spasswd)
5405 <          yyerror("Ignoring connect block -- missing password");
5406 <      }
5249 >      assert(res);
5250  
5251 <      /* XXX
5252 <       * This fixes a try_connections() core (caused by invalid class_ptr
5253 <       * pointers) reported by metalrock. That's an ugly fix, but there
5254 <       * is currently no better way. The entire config subsystem needs an
5412 <       * rewrite ASAP. make_conf_item() shouldn't really add things onto
5413 <       * a doubly linked list immediately without any sanity checks!  -Michael
5414 <       */
5415 <      delete_conf_item(yy_conf);
5251 >      memcpy(&conf->bind, res->ai_addr, res->ai_addrlen);
5252 >      conf->bind.ss.ss_family = res->ai_family;
5253 >      conf->bind.ss_len = res->ai_addrlen;
5254 >      freeaddrinfo(res);
5255      }
5417
5418    MyFree(class_name);
5419    class_name = NULL;
5420    yy_conf = NULL;
5421    yy_aconf = NULL;
5256    }
5257 +
5258 +  conf_add_class_to_conf(conf, block_state.class.buf);
5259 +  lookup_confhost(conf);
5260   }
5261 + #line 5262 "conf_parser.c" /* yacc.c:1646  */
5262      break;
5263  
5264 <  case 366:
5265 < /* Line 1813 of yacc.c  */
5428 < #line 2068 "conf_parser.y"
5264 >  case 409:
5265 > #line 2185 "conf_parser.y" /* yacc.c:1646  */
5266      {
5267    if (conf_parser_ctx.pass == 2)
5268 <  {
5432 <    MyFree(yy_conf->name);
5433 <    DupString(yy_conf->name, yylval.string);
5434 <  }
5268 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5269   }
5270 + #line 5271 "conf_parser.c" /* yacc.c:1646  */
5271      break;
5272  
5273 <  case 367:
5274 < /* Line 1813 of yacc.c  */
5440 < #line 2077 "conf_parser.y"
5273 >  case 410:
5274 > #line 2191 "conf_parser.y" /* yacc.c:1646  */
5275      {
5276    if (conf_parser_ctx.pass == 2)
5277 <  {
5444 <    MyFree(yy_aconf->host);
5445 <    DupString(yy_aconf->host, yylval.string);
5446 <  }
5277 >    strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5278   }
5279 + #line 5280 "conf_parser.c" /* yacc.c:1646  */
5280      break;
5281  
5282 <  case 368:
5283 < /* Line 1813 of yacc.c  */
5452 < #line 2086 "conf_parser.y"
5282 >  case 411:
5283 > #line 2197 "conf_parser.y" /* yacc.c:1646  */
5284      {
5285    if (conf_parser_ctx.pass == 2)
5286 <  {
5287 <    struct addrinfo hints, *res;
5288 <
5289 <    memset(&hints, 0, sizeof(hints));
5459 <
5460 <    hints.ai_family   = AF_UNSPEC;
5461 <    hints.ai_socktype = SOCK_STREAM;
5462 <    hints.ai_flags    = AI_PASSIVE | AI_NUMERICHOST;
5286 >    strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5287 > }
5288 > #line 5289 "conf_parser.c" /* yacc.c:1646  */
5289 >    break;
5290  
5291 <    if (getaddrinfo(yylval.string, NULL, &hints, &res))
5292 <      ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
5466 <    else
5291 >  case 412:
5292 > #line 2203 "conf_parser.y" /* yacc.c:1646  */
5293      {
5294 <      assert(res != NULL);
5294 >  if (conf_parser_ctx.pass != 2)
5295 >    break;
5296  
5297 <      memcpy(&yy_aconf->bind, res->ai_addr, res->ai_addrlen);
5298 <      yy_aconf->bind.ss.ss_family = res->ai_family;
5299 <      yy_aconf->bind.ss_len = res->ai_addrlen;
5300 <      freeaddrinfo(res);
5301 <    }
5302 <  }
5297 >  if ((yyvsp[-1].string)[0] == ':')
5298 >    conf_error_report("Server passwords cannot begin with a colon");
5299 >  else if (strchr((yyvsp[-1].string), ' '))
5300 >    conf_error_report("Server passwords cannot contain spaces");
5301 >  else
5302 >    strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5303   }
5304 + #line 5305 "conf_parser.c" /* yacc.c:1646  */
5305      break;
5306  
5307 <  case 369:
5308 < /* Line 1813 of yacc.c  */
5481 < #line 2112 "conf_parser.y"
5307 >  case 413:
5308 > #line 2216 "conf_parser.y" /* yacc.c:1646  */
5309      {
5310 <  if (conf_parser_ctx.pass == 2)
5311 <  {
5485 <    if ((yyvsp[(3) - (4)].string)[0] == ':')
5486 <      yyerror("Server passwords cannot begin with a colon");
5487 <    else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5488 <      yyerror("Server passwords cannot contain spaces");
5489 <    else {
5490 <      if (yy_aconf->spasswd != NULL)
5491 <        memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
5310 >  if (conf_parser_ctx.pass != 2)
5311 >    break;
5312  
5313 <      MyFree(yy_aconf->spasswd);
5314 <      DupString(yy_aconf->spasswd, yylval.string);
5315 <    }
5316 <  }
5313 >  if ((yyvsp[-1].string)[0] == ':')
5314 >    conf_error_report("Server passwords cannot begin with a colon");
5315 >  else if (strchr((yyvsp[-1].string), ' '))
5316 >    conf_error_report("Server passwords cannot contain spaces");
5317 >  else
5318 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5319   }
5320 + #line 5321 "conf_parser.c" /* yacc.c:1646  */
5321      break;
5322  
5323 <  case 370:
5324 < /* Line 1813 of yacc.c  */
5502 < #line 2130 "conf_parser.y"
5323 >  case 414:
5324 > #line 2229 "conf_parser.y" /* yacc.c:1646  */
5325      {
5326    if (conf_parser_ctx.pass == 2)
5327 <  {
5506 <    if ((yyvsp[(3) - (4)].string)[0] == ':')
5507 <      yyerror("Server passwords cannot begin with a colon");
5508 <    else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5509 <      yyerror("Server passwords cannot contain spaces");
5510 <    else {
5511 <      if (yy_aconf->passwd != NULL)
5512 <        memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5513 <
5514 <      MyFree(yy_aconf->passwd);
5515 <      DupString(yy_aconf->passwd, yylval.string);
5516 <    }
5517 <  }
5327 >    strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
5328   }
5329 + #line 5330 "conf_parser.c" /* yacc.c:1646  */
5330      break;
5331  
5332 <  case 371:
5333 < /* Line 1813 of yacc.c  */
5523 < #line 2148 "conf_parser.y"
5332 >  case 415:
5333 > #line 2235 "conf_parser.y" /* yacc.c:1646  */
5334      {
5335    if (conf_parser_ctx.pass == 2)
5336 <    yy_aconf->port = (yyvsp[(3) - (4)].number);
5336 >    block_state.port.value = (yyvsp[-1].number);
5337   }
5338 + #line 5339 "conf_parser.c" /* yacc.c:1646  */
5339      break;
5340  
5341 <  case 372:
5342 < /* Line 1813 of yacc.c  */
5532 < #line 2154 "conf_parser.y"
5341 >  case 416:
5342 > #line 2241 "conf_parser.y" /* yacc.c:1646  */
5343      {
5344    if (conf_parser_ctx.pass == 2)
5345 <    yy_aconf->aftype = AF_INET;
5345 >    block_state.aftype.value = AF_INET;
5346   }
5347 + #line 5348 "conf_parser.c" /* yacc.c:1646  */
5348      break;
5349  
5350 <  case 373:
5351 < /* Line 1813 of yacc.c  */
5541 < #line 2158 "conf_parser.y"
5350 >  case 417:
5351 > #line 2245 "conf_parser.y" /* yacc.c:1646  */
5352      {
5353   #ifdef IPV6
5354    if (conf_parser_ctx.pass == 2)
5355 <    yy_aconf->aftype = AF_INET6;
5355 >    block_state.aftype.value = AF_INET6;
5356   #endif
5357   }
5358 + #line 5359 "conf_parser.c" /* yacc.c:1646  */
5359      break;
5360  
5361 <  case 374:
5362 < /* Line 1813 of yacc.c  */
5552 < #line 2166 "conf_parser.y"
5361 >  case 418:
5362 > #line 2253 "conf_parser.y" /* yacc.c:1646  */
5363      {
5364 +  block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5365   }
5366 + #line 5367 "conf_parser.c" /* yacc.c:1646  */
5367      break;
5368  
5369 <  case 378:
5370 < /* Line 1813 of yacc.c  */
5559 < #line 2171 "conf_parser.y"
5369 >  case 422:
5370 > #line 2259 "conf_parser.y" /* yacc.c:1646  */
5371      {
5372    if (conf_parser_ctx.pass == 2)
5373 <    SetConfAllowAutoConn(yy_aconf);
5373 >    block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5374   }
5375 + #line 5376 "conf_parser.c" /* yacc.c:1646  */
5376      break;
5377  
5378 <  case 379:
5379 < /* Line 1813 of yacc.c  */
5568 < #line 2175 "conf_parser.y"
5378 >  case 423:
5379 > #line 2263 "conf_parser.y" /* yacc.c:1646  */
5380      {
5381    if (conf_parser_ctx.pass == 2)
5382 <    SetConfSSL(yy_aconf);
5382 >    block_state.flags.value |= CONF_FLAGS_SSL;
5383   }
5384 + #line 5385 "conf_parser.c" /* yacc.c:1646  */
5385      break;
5386  
5387 <  case 380:
5388 < /* Line 1813 of yacc.c  */
5577 < #line 2181 "conf_parser.y"
5387 >  case 424:
5388 > #line 2269 "conf_parser.y" /* yacc.c:1646  */
5389      {
5390    if (conf_parser_ctx.pass == 2)
5391    {
5392      if (yylval.number)
5393 <      yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
5393 >      block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5394      else
5395 <      yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
5395 >      block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5396    }
5397   }
5398 + #line 5399 "conf_parser.c" /* yacc.c:1646  */
5399      break;
5400  
5401 <  case 381:
5402 < /* Line 1813 of yacc.c  */
5591 < #line 2192 "conf_parser.y"
5401 >  case 425:
5402 > #line 2280 "conf_parser.y" /* yacc.c:1646  */
5403      {
5404    if (conf_parser_ctx.pass == 2)
5405 <  {
5595 <    char *mask;
5596 <
5597 <    DupString(mask, yylval.string);
5598 <    dlinkAdd(mask, make_dlink_node(), &yy_aconf->hub_list);
5599 <  }
5405 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5406   }
5407 + #line 5408 "conf_parser.c" /* yacc.c:1646  */
5408      break;
5409  
5410 <  case 382:
5411 < /* Line 1813 of yacc.c  */
5605 < #line 2203 "conf_parser.y"
5410 >  case 426:
5411 > #line 2286 "conf_parser.y" /* yacc.c:1646  */
5412      {
5413    if (conf_parser_ctx.pass == 2)
5414 <  {
5609 <    char *mask;
5610 <
5611 <    DupString(mask, yylval.string);
5612 <    dlinkAdd(mask, make_dlink_node(), &yy_aconf->leaf_list);
5613 <  }
5414 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5415   }
5416 + #line 5417 "conf_parser.c" /* yacc.c:1646  */
5417      break;
5418  
5419 <  case 383:
5420 < /* Line 1813 of yacc.c  */
5619 < #line 2214 "conf_parser.y"
5419 >  case 427:
5420 > #line 2292 "conf_parser.y" /* yacc.c:1646  */
5421      {
5422    if (conf_parser_ctx.pass == 2)
5423 <  {
5623 <    MyFree(class_name);
5624 <    DupString(class_name, yylval.string);
5625 <  }
5423 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5424   }
5425 + #line 5426 "conf_parser.c" /* yacc.c:1646  */
5426      break;
5427  
5428 <  case 384:
5429 < /* Line 1813 of yacc.c  */
5631 < #line 2223 "conf_parser.y"
5428 >  case 428:
5429 > #line 2298 "conf_parser.y" /* yacc.c:1646  */
5430      {
5431   #ifdef HAVE_LIBCRYPTO
5432    if (conf_parser_ctx.pass == 2)
5433 <  {
5636 <    MyFree(yy_aconf->cipher_list);
5637 <    DupString(yy_aconf->cipher_list, yylval.string);
5638 <  }
5433 >    strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5434   #else
5435    if (conf_parser_ctx.pass == 2)
5436 <    yyerror("Ignoring connect::ciphers -- no OpenSSL support");
5436 >    conf_error_report("Ignoring connect::ciphers -- no OpenSSL support");
5437   #endif
5438   }
5439 + #line 5440 "conf_parser.c" /* yacc.c:1646  */
5440      break;
5441  
5442 <  case 385:
5443 < /* Line 1813 of yacc.c  */
5648 < #line 2241 "conf_parser.y"
5442 >  case 429:
5443 > #line 2313 "conf_parser.y" /* yacc.c:1646  */
5444      {
5445    if (conf_parser_ctx.pass == 2)
5446 <  {
5652 <    userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
5653 <    regex_ban = 0;
5654 <  }
5446 >    reset_block_state();
5447   }
5448 + #line 5449 "conf_parser.c" /* yacc.c:1646  */
5449      break;
5450  
5451 <  case 386:
5452 < /* Line 1813 of yacc.c  */
5660 < #line 2248 "conf_parser.y"
5661 <    {
5662 <  if (conf_parser_ctx.pass == 2)
5663 <  {
5664 <    if (userbuf[0] && hostbuf[0])
5451 >  case 430:
5452 > #line 2317 "conf_parser.y" /* yacc.c:1646  */
5453      {
5454 <      if (regex_ban)
5667 <      {
5668 < #ifdef HAVE_LIBPCRE
5669 <        void *exp_user = NULL;
5670 <        void *exp_host = NULL;
5671 <        const char *errptr = NULL;
5672 <
5673 <        if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
5674 <            !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
5675 <        {
5676 <          ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: %s",
5677 <               errptr);
5678 <          break;
5679 <        }
5680 <
5681 <        yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
5682 <        yy_aconf->regexuser = exp_user;
5683 <        yy_aconf->regexhost = exp_host;
5684 <
5685 <        DupString(yy_aconf->user, userbuf);
5686 <        DupString(yy_aconf->host, hostbuf);
5687 <
5688 <        if (reasonbuf[0])
5689 <          DupString(yy_aconf->reason, reasonbuf);
5690 <        else
5691 <          DupString(yy_aconf->reason, "No reason");
5692 < #else
5693 <        ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: no PCRE support");
5694 <        break;
5695 < #endif
5696 <      }
5697 <      else
5698 <      {
5699 <        find_and_delete_temporary(userbuf, hostbuf, CONF_KLINE);
5700 <
5701 <        yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
5702 <
5703 <        DupString(yy_aconf->user, userbuf);
5704 <        DupString(yy_aconf->host, hostbuf);
5705 <
5706 <        if (reasonbuf[0])
5707 <          DupString(yy_aconf->reason, reasonbuf);
5708 <        else
5709 <          DupString(yy_aconf->reason, "No reason");
5710 <        add_conf_by_address(CONF_KLINE, yy_aconf);
5711 <      }
5712 <    }
5454 >  struct MaskItem *conf = NULL;
5455  
5456 <    yy_aconf = NULL;
5715 <  }
5716 < }
5456 >  if (conf_parser_ctx.pass != 2)
5457      break;
5458  
5459 <  case 387:
5460 < /* Line 1813 of yacc.c  */
5721 < #line 2306 "conf_parser.y"
5722 <    {
5723 < }
5459 >  if (!block_state.user.buf[0] ||
5460 >      !block_state.host.buf[0])
5461      break;
5462  
5463 <  case 391:
5464 < /* Line 1813 of yacc.c  */
5465 < #line 2311 "conf_parser.y"
5466 <    {
5467 <  if (conf_parser_ctx.pass == 2)
5468 <    regex_ban = 1;
5463 >  conf = conf_make(CONF_KLINE);
5464 >  conf->user = xstrdup(block_state.user.buf);
5465 >  conf->host = xstrdup(block_state.host.buf);
5466 >
5467 >  if (block_state.rpass.buf[0])
5468 >    conf->reason = xstrdup(block_state.rpass.buf);
5469 >  else
5470 >    conf->reason = xstrdup(CONF_NOREASON);
5471 >  add_conf_by_address(CONF_KLINE, conf);
5472   }
5473 + #line 5474 "conf_parser.c" /* yacc.c:1646  */
5474      break;
5475  
5476 <  case 398:
5477 < /* Line 1813 of yacc.c  */
5737 < #line 2320 "conf_parser.y"
5476 >  case 436:
5477 > #line 2342 "conf_parser.y" /* yacc.c:1646  */
5478      {
5479 +
5480    if (conf_parser_ctx.pass == 2)
5481    {
5482      struct split_nuh_item nuh;
5483  
5484      nuh.nuhmask  = yylval.string;
5485      nuh.nickptr  = NULL;
5486 <    nuh.userptr  = userbuf;
5487 <    nuh.hostptr  = hostbuf;
5486 >    nuh.userptr  = block_state.user.buf;
5487 >    nuh.hostptr  = block_state.host.buf;
5488  
5489      nuh.nicksize = 0;
5490 <    nuh.usersize = sizeof(userbuf);
5491 <    nuh.hostsize = sizeof(hostbuf);
5490 >    nuh.usersize = sizeof(block_state.user.buf);
5491 >    nuh.hostsize = sizeof(block_state.host.buf);
5492  
5493      split_nuh(&nuh);
5494    }
5495   }
5496 + #line 5497 "conf_parser.c" /* yacc.c:1646  */
5497      break;
5498  
5499 <  case 399:
5500 < /* Line 1813 of yacc.c  */
5759 < #line 2339 "conf_parser.y"
5499 >  case 437:
5500 > #line 2362 "conf_parser.y" /* yacc.c:1646  */
5501      {
5502    if (conf_parser_ctx.pass == 2)
5503 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5503 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5504   }
5505 + #line 5506 "conf_parser.c" /* yacc.c:1646  */
5506      break;
5507  
5508 <  case 400:
5509 < /* Line 1813 of yacc.c  */
5768 < #line 2348 "conf_parser.y"
5508 >  case 438:
5509 > #line 2371 "conf_parser.y" /* yacc.c:1646  */
5510      {
5511    if (conf_parser_ctx.pass == 2)
5512 <    hostbuf[0] = reasonbuf[0] = '\0';
5512 >    reset_block_state();
5513   }
5514 + #line 5515 "conf_parser.c" /* yacc.c:1646  */
5515      break;
5516  
5517 <  case 401:
5518 < /* Line 1813 of yacc.c  */
5777 < #line 2352 "conf_parser.y"
5778 <    {
5779 <  if (conf_parser_ctx.pass == 2)
5780 <  {
5781 <    if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
5517 >  case 439:
5518 > #line 2375 "conf_parser.y" /* yacc.c:1646  */
5519      {
5520 <      find_and_delete_temporary(NULL, hostbuf, CONF_DLINE);
5520 >  struct MaskItem *conf = NULL;
5521  
5522 <      yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
5523 <      DupString(yy_aconf->host, hostbuf);
5522 >  if (conf_parser_ctx.pass != 2)
5523 >    break;
5524  
5525 <      if (reasonbuf[0])
5526 <        DupString(yy_aconf->reason, reasonbuf);
5527 <      else
5528 <        DupString(yy_aconf->reason, "No reason");
5529 <      add_conf_by_address(CONF_DLINE, yy_aconf);
5530 <      yy_aconf = NULL;
5531 <    }
5525 >  if (!block_state.addr.buf[0])
5526 >    break;
5527 >
5528 >  if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5529 >  {
5530 >    conf = conf_make(CONF_DLINE);
5531 >    conf->host = xstrdup(block_state.addr.buf);
5532 >
5533 >    if (block_state.rpass.buf[0])
5534 >      conf->reason = xstrdup(block_state.rpass.buf);
5535 >    else
5536 >      conf->reason = xstrdup(CONF_NOREASON);
5537 >    add_conf_by_address(CONF_DLINE, conf);
5538    }
5539   }
5540 + #line 5541 "conf_parser.c" /* yacc.c:1646  */
5541      break;
5542  
5543 <  case 407:
5544 < /* Line 1813 of yacc.c  */
5801 < #line 2376 "conf_parser.y"
5543 >  case 445:
5544 > #line 2401 "conf_parser.y" /* yacc.c:1646  */
5545      {
5546    if (conf_parser_ctx.pass == 2)
5547 <    strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
5547 >    strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5548   }
5549 + #line 5550 "conf_parser.c" /* yacc.c:1646  */
5550      break;
5551  
5552 <  case 408:
5553 < /* Line 1813 of yacc.c  */
5810 < #line 2382 "conf_parser.y"
5552 >  case 446:
5553 > #line 2407 "conf_parser.y" /* yacc.c:1646  */
5554      {
5555    if (conf_parser_ctx.pass == 2)
5556 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5556 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5557   }
5558 + #line 5559 "conf_parser.c" /* yacc.c:1646  */
5559      break;
5560  
5561 <  case 414:
5562 < /* Line 1813 of yacc.c  */
5819 < #line 2396 "conf_parser.y"
5561 >  case 452:
5562 > #line 2421 "conf_parser.y" /* yacc.c:1646  */
5563      {
5564    if (conf_parser_ctx.pass == 2)
5565    {
5566      if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5567      {
5568 <      yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
5569 <      DupString(yy_aconf->host, yylval.string);
5568 >      struct MaskItem *conf = conf_make(CONF_EXEMPT);
5569 >      conf->host = xstrdup(yylval.string);
5570  
5571 <      add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
5829 <      yy_aconf = NULL;
5571 >      add_conf_by_address(CONF_EXEMPT, conf);
5572      }
5573    }
5574   }
5575 + #line 5576 "conf_parser.c" /* yacc.c:1646  */
5576      break;
5577  
5578 <  case 415:
5579 < /* Line 1813 of yacc.c  */
5837 < #line 2414 "conf_parser.y"
5578 >  case 453:
5579 > #line 2438 "conf_parser.y" /* yacc.c:1646  */
5580      {
5581    if (conf_parser_ctx.pass == 2)
5582 <  {
5841 <    regex_ban = 0;
5842 <    reasonbuf[0] = gecos_name[0] = '\0';
5843 <  }
5582 >    reset_block_state();
5583   }
5584 + #line 5585 "conf_parser.c" /* yacc.c:1646  */
5585      break;
5586  
5587 <  case 416:
5588 < /* Line 1813 of yacc.c  */
5849 < #line 2421 "conf_parser.y"
5587 >  case 454:
5588 > #line 2442 "conf_parser.y" /* yacc.c:1646  */
5589      {
5590 <  if (conf_parser_ctx.pass == 2)
5852 <  {
5853 <    if (gecos_name[0])
5854 <    {
5855 <      if (regex_ban)
5856 <      {
5857 < #ifdef HAVE_LIBPCRE
5858 <        void *exp_p = NULL;
5859 <        const char *errptr = NULL;
5860 <
5861 <        if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
5862 <        {
5863 <          ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: %s",
5864 <               errptr);
5865 <          break;
5866 <        }
5867 <
5868 <        yy_conf = make_conf_item(RXLINE_TYPE);
5869 <        yy_conf->regexpname = exp_p;
5870 < #else
5871 <        ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: no PCRE support");
5872 <        break;
5873 < #endif
5874 <      }
5875 <      else
5876 <        yy_conf = make_conf_item(XLINE_TYPE);
5590 >  struct MaskItem *conf = NULL;
5591  
5592 <      yy_match_item = map_to_conf(yy_conf);
5593 <      DupString(yy_conf->name, gecos_name);
5592 >  if (conf_parser_ctx.pass != 2)
5593 >    break;
5594  
5595 <      if (reasonbuf[0])
5882 <        DupString(yy_match_item->reason, reasonbuf);
5883 <      else
5884 <        DupString(yy_match_item->reason, "No reason");
5885 <    }
5886 <  }
5887 < }
5595 >  if (!block_state.name.buf[0])
5596      break;
5597  
5598 <  case 417:
5599 < /* Line 1813 of yacc.c  */
5600 < #line 2461 "conf_parser.y"
5601 <    {
5598 >  conf = conf_make(CONF_XLINE);
5599 >  conf->name = xstrdup(block_state.name.buf);
5600 >
5601 >  if (block_state.rpass.buf[0])
5602 >    conf->reason = xstrdup(block_state.rpass.buf);
5603 >  else
5604 >    conf->reason = xstrdup(CONF_NOREASON);
5605   }
5606 + #line 5607 "conf_parser.c" /* yacc.c:1646  */
5607      break;
5608  
5609 <  case 421:
5610 < /* Line 1813 of yacc.c  */
5899 < #line 2466 "conf_parser.y"
5609 >  case 460:
5610 > #line 2464 "conf_parser.y" /* yacc.c:1646  */
5611      {
5612    if (conf_parser_ctx.pass == 2)
5613 <    regex_ban = 1;
5613 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5614   }
5615 + #line 5616 "conf_parser.c" /* yacc.c:1646  */
5616      break;
5617  
5618 <  case 428:
5619 < /* Line 1813 of yacc.c  */
5908 < #line 2475 "conf_parser.y"
5618 >  case 461:
5619 > #line 2470 "conf_parser.y" /* yacc.c:1646  */
5620      {
5621    if (conf_parser_ctx.pass == 2)
5622 <    strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
5622 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5623   }
5624 + #line 5625 "conf_parser.c" /* yacc.c:1646  */
5625      break;
5626  
5627 <  case 429:
5628 < /* Line 1813 of yacc.c  */
5917 < #line 2481 "conf_parser.y"
5627 >  case 516:
5628 > #line 2536 "conf_parser.y" /* yacc.c:1646  */
5629      {
5630 <  if (conf_parser_ctx.pass == 2)
5920 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5630 >  ConfigFileEntry.max_watch = (yyvsp[-1].number);
5631   }
5632 + #line 5633 "conf_parser.c" /* yacc.c:1646  */
5633      break;
5634  
5635 <  case 483:
5636 < /* Line 1813 of yacc.c  */
5926 < #line 2526 "conf_parser.y"
5635 >  case 517:
5636 > #line 2541 "conf_parser.y" /* yacc.c:1646  */
5637      {
5638 <  ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
5638 >  if (conf_parser_ctx.pass == 2)
5639 >    ConfigFileEntry.cycle_on_host_change = yylval.number;
5640   }
5641 + #line 5642 "conf_parser.c" /* yacc.c:1646  */
5642      break;
5643  
5644 <  case 484:
5645 < /* Line 1813 of yacc.c  */
5934 < #line 2531 "conf_parser.y"
5644 >  case 518:
5645 > #line 2547 "conf_parser.y" /* yacc.c:1646  */
5646      {
5647    if (conf_parser_ctx.pass == 2)
5648      ConfigFileEntry.glines = yylval.number;
5649   }
5650 + #line 5651 "conf_parser.c" /* yacc.c:1646  */
5651      break;
5652  
5653 <  case 485:
5654 < /* Line 1813 of yacc.c  */
5943 < #line 2537 "conf_parser.y"
5653 >  case 519:
5654 > #line 2553 "conf_parser.y" /* yacc.c:1646  */
5655      {
5656    if (conf_parser_ctx.pass == 2)
5657 <    ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
5657 >    ConfigFileEntry.gline_time = (yyvsp[-1].number);
5658   }
5659 + #line 5660 "conf_parser.c" /* yacc.c:1646  */
5660      break;
5661  
5662 <  case 486:
5663 < /* Line 1813 of yacc.c  */
5952 < #line 2543 "conf_parser.y"
5662 >  case 520:
5663 > #line 2559 "conf_parser.y" /* yacc.c:1646  */
5664      {
5665    if (conf_parser_ctx.pass == 2)
5666 <    ConfigFileEntry.gline_request_time = (yyvsp[(3) - (4)].number);
5666 >    ConfigFileEntry.gline_request_time = (yyvsp[-1].number);
5667   }
5668 + #line 5669 "conf_parser.c" /* yacc.c:1646  */
5669      break;
5670  
5671 <  case 487:
5672 < /* Line 1813 of yacc.c  */
5961 < #line 2549 "conf_parser.y"
5671 >  case 521:
5672 > #line 2565 "conf_parser.y" /* yacc.c:1646  */
5673      {
5674 <  ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
5674 >  ConfigFileEntry.gline_min_cidr = (yyvsp[-1].number);
5675   }
5676 + #line 5677 "conf_parser.c" /* yacc.c:1646  */
5677      break;
5678  
5679 <  case 488:
5680 < /* Line 1813 of yacc.c  */
5969 < #line 2554 "conf_parser.y"
5679 >  case 522:
5680 > #line 2570 "conf_parser.y" /* yacc.c:1646  */
5681      {
5682 <  ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
5682 >  ConfigFileEntry.gline_min_cidr6 = (yyvsp[-1].number);
5683   }
5684 + #line 5685 "conf_parser.c" /* yacc.c:1646  */
5685      break;
5686  
5687 <  case 489:
5688 < /* Line 1813 of yacc.c  */
5977 < #line 2559 "conf_parser.y"
5687 >  case 523:
5688 > #line 2575 "conf_parser.y" /* yacc.c:1646  */
5689      {
5690    ConfigFileEntry.tkline_expire_notices = yylval.number;
5691   }
5692 + #line 5693 "conf_parser.c" /* yacc.c:1646  */
5693      break;
5694  
5695 <  case 490:
5696 < /* Line 1813 of yacc.c  */
5985 < #line 2564 "conf_parser.y"
5695 >  case 524:
5696 > #line 2580 "conf_parser.y" /* yacc.c:1646  */
5697      {
5698 <  ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
5698 >  ConfigFileEntry.kill_chase_time_limit = (yyvsp[-1].number);
5699   }
5700 + #line 5701 "conf_parser.c" /* yacc.c:1646  */
5701      break;
5702  
5703 <  case 491:
5704 < /* Line 1813 of yacc.c  */
5993 < #line 2569 "conf_parser.y"
5703 >  case 525:
5704 > #line 2585 "conf_parser.y" /* yacc.c:1646  */
5705      {
5706    ConfigFileEntry.hide_spoof_ips = yylval.number;
5707   }
5708 + #line 5709 "conf_parser.c" /* yacc.c:1646  */
5709      break;
5710  
5711 <  case 492:
5712 < /* Line 1813 of yacc.c  */
6001 < #line 2574 "conf_parser.y"
5711 >  case 526:
5712 > #line 2590 "conf_parser.y" /* yacc.c:1646  */
5713      {
5714    ConfigFileEntry.ignore_bogus_ts = yylval.number;
5715   }
5716 + #line 5717 "conf_parser.c" /* yacc.c:1646  */
5717      break;
5718  
5719 <  case 493:
5720 < /* Line 1813 of yacc.c  */
6009 < #line 2579 "conf_parser.y"
6010 <    {
6011 <  ConfigFileEntry.disable_remote = yylval.number;
6012 < }
6013 <    break;
6014 <
6015 <  case 494:
6016 < /* Line 1813 of yacc.c  */
6017 < #line 2584 "conf_parser.y"
5719 >  case 527:
5720 > #line 2595 "conf_parser.y" /* yacc.c:1646  */
5721      {
5722    ConfigFileEntry.failed_oper_notice = yylval.number;
5723   }
5724 + #line 5725 "conf_parser.c" /* yacc.c:1646  */
5725      break;
5726  
5727 <  case 495:
5728 < /* Line 1813 of yacc.c  */
6025 < #line 2589 "conf_parser.y"
5727 >  case 528:
5728 > #line 2600 "conf_parser.y" /* yacc.c:1646  */
5729      {
5730    ConfigFileEntry.anti_nick_flood = yylval.number;
5731   }
5732 + #line 5733 "conf_parser.c" /* yacc.c:1646  */
5733      break;
5734  
5735 <  case 496:
5736 < /* Line 1813 of yacc.c  */
6033 < #line 2594 "conf_parser.y"
5735 >  case 529:
5736 > #line 2605 "conf_parser.y" /* yacc.c:1646  */
5737      {
5738 <  ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
5738 >  ConfigFileEntry.max_nick_time = (yyvsp[-1].number);
5739   }
5740 + #line 5741 "conf_parser.c" /* yacc.c:1646  */
5741      break;
5742  
5743 <  case 497:
5744 < /* Line 1813 of yacc.c  */
6041 < #line 2599 "conf_parser.y"
5743 >  case 530:
5744 > #line 2610 "conf_parser.y" /* yacc.c:1646  */
5745      {
5746 <  ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
5746 >  ConfigFileEntry.max_nick_changes = (yyvsp[-1].number);
5747   }
5748 + #line 5749 "conf_parser.c" /* yacc.c:1646  */
5749      break;
5750  
5751 <  case 498:
5752 < /* Line 1813 of yacc.c  */
6049 < #line 2604 "conf_parser.y"
5751 >  case 531:
5752 > #line 2615 "conf_parser.y" /* yacc.c:1646  */
5753      {
5754 <  ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
5754 >  ConfigFileEntry.max_accept = (yyvsp[-1].number);
5755   }
5756 + #line 5757 "conf_parser.c" /* yacc.c:1646  */
5757      break;
5758  
5759 <  case 499:
5760 < /* Line 1813 of yacc.c  */
6057 < #line 2609 "conf_parser.y"
5759 >  case 532:
5760 > #line 2620 "conf_parser.y" /* yacc.c:1646  */
5761      {
5762 <  ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
5762 >  ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[-1].number);
5763   }
5764 + #line 5765 "conf_parser.c" /* yacc.c:1646  */
5765      break;
5766  
5767 <  case 500:
5768 < /* Line 1813 of yacc.c  */
6065 < #line 2614 "conf_parser.y"
5767 >  case 533:
5768 > #line 2625 "conf_parser.y" /* yacc.c:1646  */
5769      {
5770 <  ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
5770 >  ConfigFileEntry.ts_warn_delta = (yyvsp[-1].number);
5771   }
5772 + #line 5773 "conf_parser.c" /* yacc.c:1646  */
5773      break;
5774  
5775 <  case 501:
5776 < /* Line 1813 of yacc.c  */
6073 < #line 2619 "conf_parser.y"
5775 >  case 534:
5776 > #line 2630 "conf_parser.y" /* yacc.c:1646  */
5777      {
5778    if (conf_parser_ctx.pass == 2)
5779 <    ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
5779 >    ConfigFileEntry.ts_max_delta = (yyvsp[-1].number);
5780   }
5781 + #line 5782 "conf_parser.c" /* yacc.c:1646  */
5782      break;
5783  
5784 <  case 502:
5785 < /* Line 1813 of yacc.c  */
6082 < #line 2625 "conf_parser.y"
5784 >  case 535:
5785 > #line 2636 "conf_parser.y" /* yacc.c:1646  */
5786      {
5787 <  if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
5787 >  if (((yyvsp[-1].number) > 0) && conf_parser_ctx.pass == 1)
5788    {
5789      ilog(LOG_TYPE_IRCD, "You haven't read your config file properly.");
5790      ilog(LOG_TYPE_IRCD, "There is a line in the example conf that will kill your server if not removed.");
# Line 6089 | Line 5792 | yyreduce:
5792      exit(0);
5793    }
5794   }
5795 + #line 5796 "conf_parser.c" /* yacc.c:1646  */
5796      break;
5797  
5798 <  case 503:
5799 < /* Line 1813 of yacc.c  */
6096 < #line 2636 "conf_parser.y"
5798 >  case 536:
5799 > #line 2647 "conf_parser.y" /* yacc.c:1646  */
5800      {
5801    ConfigFileEntry.invisible_on_connect = yylval.number;
5802   }
5803 + #line 5804 "conf_parser.c" /* yacc.c:1646  */
5804      break;
5805  
5806 <  case 504:
5807 < /* Line 1813 of yacc.c  */
6104 < #line 2641 "conf_parser.y"
5806 >  case 537:
5807 > #line 2652 "conf_parser.y" /* yacc.c:1646  */
5808      {
5809 <  ConfigFileEntry.warn_no_nline = yylval.number;
5809 >  ConfigFileEntry.warn_no_connect_block = yylval.number;
5810   }
5811 + #line 5812 "conf_parser.c" /* yacc.c:1646  */
5812      break;
5813  
5814 <  case 505:
5815 < /* Line 1813 of yacc.c  */
6112 < #line 2646 "conf_parser.y"
5814 >  case 538:
5815 > #line 2657 "conf_parser.y" /* yacc.c:1646  */
5816      {
5817    ConfigFileEntry.stats_e_disabled = yylval.number;
5818   }
5819 + #line 5820 "conf_parser.c" /* yacc.c:1646  */
5820      break;
5821  
5822 <  case 506:
5823 < /* Line 1813 of yacc.c  */
6120 < #line 2651 "conf_parser.y"
5822 >  case 539:
5823 > #line 2662 "conf_parser.y" /* yacc.c:1646  */
5824      {
5825    ConfigFileEntry.stats_o_oper_only = yylval.number;
5826   }
5827 + #line 5828 "conf_parser.c" /* yacc.c:1646  */
5828      break;
5829  
5830 <  case 507:
5831 < /* Line 1813 of yacc.c  */
6128 < #line 2656 "conf_parser.y"
5830 >  case 540:
5831 > #line 2667 "conf_parser.y" /* yacc.c:1646  */
5832      {
5833    ConfigFileEntry.stats_P_oper_only = yylval.number;
5834   }
5835 + #line 5836 "conf_parser.c" /* yacc.c:1646  */
5836 +    break;
5837 +
5838 +  case 541:
5839 + #line 2672 "conf_parser.y" /* yacc.c:1646  */
5840 +    {
5841 +  ConfigFileEntry.stats_u_oper_only = yylval.number;
5842 + }
5843 + #line 5844 "conf_parser.c" /* yacc.c:1646  */
5844      break;
5845  
5846 <  case 508:
5847 < /* Line 1813 of yacc.c  */
6136 < #line 2661 "conf_parser.y"
5846 >  case 542:
5847 > #line 2677 "conf_parser.y" /* yacc.c:1646  */
5848      {
5849    ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
5850   }
5851 + #line 5852 "conf_parser.c" /* yacc.c:1646  */
5852      break;
5853  
5854 <  case 509:
5855 < /* Line 1813 of yacc.c  */
6144 < #line 2664 "conf_parser.y"
5854 >  case 543:
5855 > #line 2680 "conf_parser.y" /* yacc.c:1646  */
5856      {
5857    ConfigFileEntry.stats_k_oper_only = 1;
5858   }
5859 + #line 5860 "conf_parser.c" /* yacc.c:1646  */
5860      break;
5861  
5862 <  case 510:
5863 < /* Line 1813 of yacc.c  */
6152 < #line 2669 "conf_parser.y"
5862 >  case 544:
5863 > #line 2685 "conf_parser.y" /* yacc.c:1646  */
5864      {
5865    ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
5866   }
5867 + #line 5868 "conf_parser.c" /* yacc.c:1646  */
5868      break;
5869  
5870 <  case 511:
5871 < /* Line 1813 of yacc.c  */
6160 < #line 2672 "conf_parser.y"
5870 >  case 545:
5871 > #line 2688 "conf_parser.y" /* yacc.c:1646  */
5872      {
5873    ConfigFileEntry.stats_i_oper_only = 1;
5874   }
5875 + #line 5876 "conf_parser.c" /* yacc.c:1646  */
5876      break;
5877  
5878 <  case 512:
5879 < /* Line 1813 of yacc.c  */
6168 < #line 2677 "conf_parser.y"
5878 >  case 546:
5879 > #line 2693 "conf_parser.y" /* yacc.c:1646  */
5880      {
5881 <  ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
5881 >  ConfigFileEntry.pace_wait = (yyvsp[-1].number);
5882   }
5883 + #line 5884 "conf_parser.c" /* yacc.c:1646  */
5884      break;
5885  
5886 <  case 513:
5887 < /* Line 1813 of yacc.c  */
6176 < #line 2682 "conf_parser.y"
5886 >  case 547:
5887 > #line 2698 "conf_parser.y" /* yacc.c:1646  */
5888      {
5889 <  ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
5889 >  ConfigFileEntry.caller_id_wait = (yyvsp[-1].number);
5890   }
5891 + #line 5892 "conf_parser.c" /* yacc.c:1646  */
5892      break;
5893  
5894 <  case 514:
5895 < /* Line 1813 of yacc.c  */
6184 < #line 2687 "conf_parser.y"
5894 >  case 548:
5895 > #line 2703 "conf_parser.y" /* yacc.c:1646  */
5896      {
5897    ConfigFileEntry.opers_bypass_callerid = yylval.number;
5898   }
5899 + #line 5900 "conf_parser.c" /* yacc.c:1646  */
5900      break;
5901  
5902 <  case 515:
5903 < /* Line 1813 of yacc.c  */
6192 < #line 2692 "conf_parser.y"
5902 >  case 549:
5903 > #line 2708 "conf_parser.y" /* yacc.c:1646  */
5904      {
5905 <  ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
5905 >  ConfigFileEntry.pace_wait_simple = (yyvsp[-1].number);
5906   }
5907 + #line 5908 "conf_parser.c" /* yacc.c:1646  */
5908      break;
5909  
5910 <  case 516:
5911 < /* Line 1813 of yacc.c  */
6200 < #line 2697 "conf_parser.y"
5910 >  case 550:
5911 > #line 2713 "conf_parser.y" /* yacc.c:1646  */
5912      {
5913    ConfigFileEntry.short_motd = yylval.number;
5914   }
5915 + #line 5916 "conf_parser.c" /* yacc.c:1646  */
5916      break;
5917  
5918 <  case 517:
5919 < /* Line 1813 of yacc.c  */
6208 < #line 2702 "conf_parser.y"
5918 >  case 551:
5919 > #line 2718 "conf_parser.y" /* yacc.c:1646  */
5920      {
5921    ConfigFileEntry.no_oper_flood = yylval.number;
5922   }
5923 + #line 5924 "conf_parser.c" /* yacc.c:1646  */
5924      break;
5925  
5926 <  case 518:
5927 < /* Line 1813 of yacc.c  */
6216 < #line 2707 "conf_parser.y"
5926 >  case 552:
5927 > #line 2723 "conf_parser.y" /* yacc.c:1646  */
5928      {
5929    ConfigFileEntry.true_no_oper_flood = yylval.number;
5930   }
5931 + #line 5932 "conf_parser.c" /* yacc.c:1646  */
5932      break;
5933  
5934 <  case 519:
5935 < /* Line 1813 of yacc.c  */
6224 < #line 2712 "conf_parser.y"
5934 >  case 553:
5935 > #line 2728 "conf_parser.y" /* yacc.c:1646  */
5936      {
5937    ConfigFileEntry.oper_pass_resv = yylval.number;
5938   }
5939 + #line 5940 "conf_parser.c" /* yacc.c:1646  */
5940      break;
5941  
5942 <  case 520:
5943 < /* Line 1813 of yacc.c  */
6232 < #line 2717 "conf_parser.y"
6233 <    {
6234 <  if (conf_parser_ctx.pass == 2)
6235 <  {
6236 <    if (strlen(yylval.string) > LOCALE_LENGTH-2)
6237 <      yylval.string[LOCALE_LENGTH-1] = '\0';
6238 <
6239 <    set_locale(yylval.string);
6240 <  }
6241 < }
6242 <    break;
6243 <
6244 <  case 521:
6245 < /* Line 1813 of yacc.c  */
6246 < #line 2728 "conf_parser.y"
5942 >  case 554:
5943 > #line 2733 "conf_parser.y" /* yacc.c:1646  */
5944      {
5945 <  ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
5945 >  ConfigFileEntry.dots_in_ident = (yyvsp[-1].number);
5946   }
5947 + #line 5948 "conf_parser.c" /* yacc.c:1646  */
5948      break;
5949  
5950 <  case 522:
5951 < /* Line 1813 of yacc.c  */
6254 < #line 2733 "conf_parser.y"
5950 >  case 555:
5951 > #line 2738 "conf_parser.y" /* yacc.c:1646  */
5952      {
5953 <  ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
5953 >  ConfigFileEntry.max_targets = (yyvsp[-1].number);
5954   }
5955 + #line 5956 "conf_parser.c" /* yacc.c:1646  */
5956      break;
5957  
5958 <  case 523:
5959 < /* Line 1813 of yacc.c  */
6262 < #line 2738 "conf_parser.y"
5958 >  case 556:
5959 > #line 2743 "conf_parser.y" /* yacc.c:1646  */
5960      {
5961    ConfigFileEntry.use_egd = yylval.number;
5962   }
5963 + #line 5964 "conf_parser.c" /* yacc.c:1646  */
5964      break;
5965  
5966 <  case 524:
5967 < /* Line 1813 of yacc.c  */
6270 < #line 2743 "conf_parser.y"
5966 >  case 557:
5967 > #line 2748 "conf_parser.y" /* yacc.c:1646  */
5968      {
5969    if (conf_parser_ctx.pass == 2)
5970    {
5971      MyFree(ConfigFileEntry.egdpool_path);
5972 <    DupString(ConfigFileEntry.egdpool_path, yylval.string);
5972 >    ConfigFileEntry.egdpool_path = xstrdup(yylval.string);
5973    }
5974   }
5975 + #line 5976 "conf_parser.c" /* yacc.c:1646  */
5976      break;
5977  
5978 <  case 525:
5979 < /* Line 1813 of yacc.c  */
6282 < #line 2752 "conf_parser.y"
5978 >  case 558:
5979 > #line 2757 "conf_parser.y" /* yacc.c:1646  */
5980      {
5981    if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
5982    {
5983      MyFree(ConfigFileEntry.service_name);
5984 <    DupString(ConfigFileEntry.service_name, yylval.string);
5984 >    ConfigFileEntry.service_name = xstrdup(yylval.string);
5985    }
5986   }
5987 + #line 5988 "conf_parser.c" /* yacc.c:1646  */
5988      break;
5989  
5990 <  case 526:
5991 < /* Line 1813 of yacc.c  */
6294 < #line 2761 "conf_parser.y"
5990 >  case 559:
5991 > #line 2766 "conf_parser.y" /* yacc.c:1646  */
5992      {
5993    ConfigFileEntry.ping_cookie = yylval.number;
5994   }
5995 + #line 5996 "conf_parser.c" /* yacc.c:1646  */
5996      break;
5997  
5998 <  case 527:
5999 < /* Line 1813 of yacc.c  */
6302 < #line 2766 "conf_parser.y"
5998 >  case 560:
5999 > #line 2771 "conf_parser.y" /* yacc.c:1646  */
6000      {
6001    ConfigFileEntry.disable_auth = yylval.number;
6002   }
6003 + #line 6004 "conf_parser.c" /* yacc.c:1646  */
6004      break;
6005  
6006 <  case 528:
6007 < /* Line 1813 of yacc.c  */
6310 < #line 2771 "conf_parser.y"
6006 >  case 561:
6007 > #line 2776 "conf_parser.y" /* yacc.c:1646  */
6008      {
6009 <  ConfigFileEntry.throttle_time = yylval.number;
6009 >  ConfigFileEntry.throttle_count = (yyvsp[-1].number);
6010   }
6011 + #line 6012 "conf_parser.c" /* yacc.c:1646  */
6012      break;
6013  
6014 <  case 529:
6015 < /* Line 1813 of yacc.c  */
6318 < #line 2776 "conf_parser.y"
6014 >  case 562:
6015 > #line 2781 "conf_parser.y" /* yacc.c:1646  */
6016      {
6017 <  ConfigFileEntry.oper_umodes = 0;
6017 >  ConfigFileEntry.throttle_time = (yyvsp[-1].number);
6018   }
6019 + #line 6020 "conf_parser.c" /* yacc.c:1646  */
6020      break;
6021  
6022 <  case 533:
6023 < /* Line 1813 of yacc.c  */
6326 < #line 2782 "conf_parser.y"
6022 >  case 563:
6023 > #line 2786 "conf_parser.y" /* yacc.c:1646  */
6024      {
6025 <  ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6025 >  ConfigFileEntry.oper_umodes = 0;
6026   }
6027 + #line 6028 "conf_parser.c" /* yacc.c:1646  */
6028      break;
6029  
6030 <  case 534:
6031 < /* Line 1813 of yacc.c  */
6334 < #line 2785 "conf_parser.y"
6030 >  case 567:
6031 > #line 2792 "conf_parser.y" /* yacc.c:1646  */
6032      {
6033 <  ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6033 >  ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6034   }
6035 + #line 6036 "conf_parser.c" /* yacc.c:1646  */
6036      break;
6037  
6038 <  case 535:
6039 < /* Line 1813 of yacc.c  */
6342 < #line 2788 "conf_parser.y"
6038 >  case 568:
6039 > #line 2795 "conf_parser.y" /* yacc.c:1646  */
6040      {
6041 <  ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
6041 >  ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6042   }
6043 + #line 6044 "conf_parser.c" /* yacc.c:1646  */
6044      break;
6045  
6046 <  case 536:
6047 < /* Line 1813 of yacc.c  */
6350 < #line 2791 "conf_parser.y"
6046 >  case 569:
6047 > #line 2798 "conf_parser.y" /* yacc.c:1646  */
6048      {
6049    ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6050   }
6051 + #line 6052 "conf_parser.c" /* yacc.c:1646  */
6052      break;
6053  
6054 <  case 537:
6055 < /* Line 1813 of yacc.c  */
6358 < #line 2794 "conf_parser.y"
6054 >  case 570:
6055 > #line 2801 "conf_parser.y" /* yacc.c:1646  */
6056      {
6057    ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6058   }
6059 + #line 6060 "conf_parser.c" /* yacc.c:1646  */
6060      break;
6061  
6062 <  case 538:
6063 < /* Line 1813 of yacc.c  */
6366 < #line 2797 "conf_parser.y"
6062 >  case 571:
6063 > #line 2804 "conf_parser.y" /* yacc.c:1646  */
6064      {
6065    ConfigFileEntry.oper_umodes |= UMODE_FULL;
6066   }
6067 + #line 6068 "conf_parser.c" /* yacc.c:1646  */
6068      break;
6069  
6070 <  case 539:
6071 < /* Line 1813 of yacc.c  */
6374 < #line 2800 "conf_parser.y"
6070 >  case 572:
6071 > #line 2807 "conf_parser.y" /* yacc.c:1646  */
6072      {
6073    ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6074   }
6075 + #line 6076 "conf_parser.c" /* yacc.c:1646  */
6076      break;
6077  
6078 <  case 540:
6079 < /* Line 1813 of yacc.c  */
6080 < #line 2803 "conf_parser.y"
6078 >  case 573:
6079 > #line 2810 "conf_parser.y" /* yacc.c:1646  */
6080 >    {
6081 >  ConfigFileEntry.oper_umodes |= UMODE_HIDECHANS;
6082 > }
6083 > #line 6084 "conf_parser.c" /* yacc.c:1646  */
6084 >    break;
6085 >
6086 >  case 574:
6087 > #line 2813 "conf_parser.y" /* yacc.c:1646  */
6088 >    {
6089 >  ConfigFileEntry.oper_umodes |= UMODE_HIDEIDLE;
6090 > }
6091 > #line 6092 "conf_parser.c" /* yacc.c:1646  */
6092 >    break;
6093 >
6094 >  case 575:
6095 > #line 2816 "conf_parser.y" /* yacc.c:1646  */
6096      {
6097    ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6098   }
6099 + #line 6100 "conf_parser.c" /* yacc.c:1646  */
6100      break;
6101  
6102 <  case 541:
6103 < /* Line 1813 of yacc.c  */
6390 < #line 2806 "conf_parser.y"
6102 >  case 576:
6103 > #line 2819 "conf_parser.y" /* yacc.c:1646  */
6104      {
6105    ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6106   }
6107 + #line 6108 "conf_parser.c" /* yacc.c:1646  */
6108      break;
6109  
6110 <  case 542:
6111 < /* Line 1813 of yacc.c  */
6398 < #line 2809 "conf_parser.y"
6110 >  case 577:
6111 > #line 2822 "conf_parser.y" /* yacc.c:1646  */
6112      {
6113    ConfigFileEntry.oper_umodes |= UMODE_REJ;
6114   }
6115 + #line 6116 "conf_parser.c" /* yacc.c:1646  */
6116      break;
6117  
6118 <  case 543:
6119 < /* Line 1813 of yacc.c  */
6406 < #line 2812 "conf_parser.y"
6118 >  case 578:
6119 > #line 2825 "conf_parser.y" /* yacc.c:1646  */
6120      {
6121    ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6122   }
6123 + #line 6124 "conf_parser.c" /* yacc.c:1646  */
6124      break;
6125  
6126 <  case 544:
6127 < /* Line 1813 of yacc.c  */
6414 < #line 2815 "conf_parser.y"
6126 >  case 579:
6127 > #line 2828 "conf_parser.y" /* yacc.c:1646  */
6128      {
6129    ConfigFileEntry.oper_umodes |= UMODE_SPY;
6130   }
6131 + #line 6132 "conf_parser.c" /* yacc.c:1646  */
6132      break;
6133  
6134 <  case 545:
6135 < /* Line 1813 of yacc.c  */
6422 < #line 2818 "conf_parser.y"
6134 >  case 580:
6135 > #line 2831 "conf_parser.y" /* yacc.c:1646  */
6136      {
6137    ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6138   }
6139 + #line 6140 "conf_parser.c" /* yacc.c:1646  */
6140      break;
6141  
6142 <  case 546:
6143 < /* Line 1813 of yacc.c  */
6430 < #line 2821 "conf_parser.y"
6431 <    {
6432 <  ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
6433 < }
6434 <    break;
6435 <
6436 <  case 547:
6437 < /* Line 1813 of yacc.c  */
6438 < #line 2824 "conf_parser.y"
6142 >  case 581:
6143 > #line 2834 "conf_parser.y" /* yacc.c:1646  */
6144      {
6145    ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6146   }
6147 + #line 6148 "conf_parser.c" /* yacc.c:1646  */
6148      break;
6149  
6150 <  case 548:
6151 < /* Line 1813 of yacc.c  */
6446 < #line 2827 "conf_parser.y"
6150 >  case 582:
6151 > #line 2837 "conf_parser.y" /* yacc.c:1646  */
6152      {
6153    ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6154   }
6155 + #line 6156 "conf_parser.c" /* yacc.c:1646  */
6156      break;
6157  
6158 <  case 549:
6159 < /* Line 1813 of yacc.c  */
6454 < #line 2830 "conf_parser.y"
6158 >  case 583:
6159 > #line 2840 "conf_parser.y" /* yacc.c:1646  */
6160      {
6161    ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6162   }
6163 + #line 6164 "conf_parser.c" /* yacc.c:1646  */
6164      break;
6165  
6166 <  case 550:
6167 < /* Line 1813 of yacc.c  */
6462 < #line 2833 "conf_parser.y"
6166 >  case 584:
6167 > #line 2843 "conf_parser.y" /* yacc.c:1646  */
6168      {
6169    ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6170   }
6171 + #line 6172 "conf_parser.c" /* yacc.c:1646  */
6172      break;
6173  
6174 <  case 551:
6175 < /* Line 1813 of yacc.c  */
6470 < #line 2836 "conf_parser.y"
6174 >  case 585:
6175 > #line 2846 "conf_parser.y" /* yacc.c:1646  */
6176      {
6177    ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6178   }
6179 + #line 6180 "conf_parser.c" /* yacc.c:1646  */
6180      break;
6181  
6182 <  case 552:
6183 < /* Line 1813 of yacc.c  */
6478 < #line 2839 "conf_parser.y"
6182 >  case 586:
6183 > #line 2849 "conf_parser.y" /* yacc.c:1646  */
6184      {
6185    ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6186   }
6187 + #line 6188 "conf_parser.c" /* yacc.c:1646  */
6188      break;
6189  
6190 <  case 553:
6191 < /* Line 1813 of yacc.c  */
6486 < #line 2844 "conf_parser.y"
6190 >  case 587:
6191 > #line 2852 "conf_parser.y" /* yacc.c:1646  */
6192      {
6193 <  ConfigFileEntry.oper_only_umodes = 0;
6193 >  ConfigFileEntry.oper_umodes |= UMODE_REGONLY;
6194   }
6195 + #line 6196 "conf_parser.c" /* yacc.c:1646  */
6196      break;
6197  
6198 <  case 557:
6199 < /* Line 1813 of yacc.c  */
6494 < #line 2850 "conf_parser.y"
6198 >  case 588:
6199 > #line 2855 "conf_parser.y" /* yacc.c:1646  */
6200      {
6201 <  ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6201 >  ConfigFileEntry.oper_umodes |= UMODE_FARCONNECT;
6202   }
6203 + #line 6204 "conf_parser.c" /* yacc.c:1646  */
6204      break;
6205  
6206 <  case 558:
6207 < /* Line 1813 of yacc.c  */
6502 < #line 2853 "conf_parser.y"
6206 >  case 589:
6207 > #line 2860 "conf_parser.y" /* yacc.c:1646  */
6208      {
6209 <  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6209 >  ConfigFileEntry.oper_only_umodes = 0;
6210   }
6211 + #line 6212 "conf_parser.c" /* yacc.c:1646  */
6212      break;
6213  
6214 <  case 559:
6215 < /* Line 1813 of yacc.c  */
6510 < #line 2856 "conf_parser.y"
6214 >  case 593:
6215 > #line 2866 "conf_parser.y" /* yacc.c:1646  */
6216      {
6217 <  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
6217 >  ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6218   }
6219 + #line 6220 "conf_parser.c" /* yacc.c:1646  */
6220      break;
6221  
6222 <  case 560:
6223 < /* Line 1813 of yacc.c  */
6224 < #line 2859 "conf_parser.y"
6222 >  case 594:
6223 > #line 2869 "conf_parser.y" /* yacc.c:1646  */
6224 >    {
6225 >  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6226 > }
6227 > #line 6228 "conf_parser.c" /* yacc.c:1646  */
6228 >    break;
6229 >
6230 >  case 595:
6231 > #line 2872 "conf_parser.y" /* yacc.c:1646  */
6232      {
6233    ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
6234   }
6235 + #line 6236 "conf_parser.c" /* yacc.c:1646  */
6236      break;
6237  
6238 <  case 561:
6239 < /* Line 1813 of yacc.c  */
6526 < #line 2862 "conf_parser.y"
6238 >  case 596:
6239 > #line 2875 "conf_parser.y" /* yacc.c:1646  */
6240      {
6241    ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
6242   }
6243 + #line 6244 "conf_parser.c" /* yacc.c:1646  */
6244      break;
6245  
6246 <  case 562:
6247 < /* Line 1813 of yacc.c  */
6248 < #line 2865 "conf_parser.y"
6535 <    {
6246 >  case 597:
6247 > #line 2878 "conf_parser.y" /* yacc.c:1646  */
6248 >    {
6249    ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
6250   }
6251 + #line 6252 "conf_parser.c" /* yacc.c:1646  */
6252      break;
6253  
6254 <  case 563:
6255 < /* Line 1813 of yacc.c  */
6542 < #line 2868 "conf_parser.y"
6254 >  case 598:
6255 > #line 2881 "conf_parser.y" /* yacc.c:1646  */
6256      {
6257    ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
6258   }
6259 + #line 6260 "conf_parser.c" /* yacc.c:1646  */
6260      break;
6261  
6262 <  case 564:
6263 < /* Line 1813 of yacc.c  */
6550 < #line 2871 "conf_parser.y"
6262 >  case 599:
6263 > #line 2884 "conf_parser.y" /* yacc.c:1646  */
6264      {
6265    ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
6266   }
6267 + #line 6268 "conf_parser.c" /* yacc.c:1646  */
6268      break;
6269  
6270 <  case 565:
6271 < /* Line 1813 of yacc.c  */
6558 < #line 2874 "conf_parser.y"
6270 >  case 600:
6271 > #line 2887 "conf_parser.y" /* yacc.c:1646  */
6272      {
6273    ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
6274   }
6275 + #line 6276 "conf_parser.c" /* yacc.c:1646  */
6276      break;
6277  
6278 <  case 566:
6279 < /* Line 1813 of yacc.c  */
6566 < #line 2877 "conf_parser.y"
6278 >  case 601:
6279 > #line 2890 "conf_parser.y" /* yacc.c:1646  */
6280      {
6281    ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
6282   }
6283 + #line 6284 "conf_parser.c" /* yacc.c:1646  */
6284      break;
6285  
6286 <  case 567:
6287 < /* Line 1813 of yacc.c  */
6574 < #line 2880 "conf_parser.y"
6286 >  case 602:
6287 > #line 2893 "conf_parser.y" /* yacc.c:1646  */
6288      {
6289    ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
6290   }
6291 + #line 6292 "conf_parser.c" /* yacc.c:1646  */
6292      break;
6293  
6294 <  case 568:
6295 < /* Line 1813 of yacc.c  */
6582 < #line 2883 "conf_parser.y"
6294 >  case 603:
6295 > #line 2896 "conf_parser.y" /* yacc.c:1646  */
6296      {
6297    ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
6298   }
6299 + #line 6300 "conf_parser.c" /* yacc.c:1646  */
6300      break;
6301  
6302 <  case 569:
6303 < /* Line 1813 of yacc.c  */
6590 < #line 2886 "conf_parser.y"
6302 >  case 604:
6303 > #line 2899 "conf_parser.y" /* yacc.c:1646  */
6304      {
6305    ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
6306   }
6307 + #line 6308 "conf_parser.c" /* yacc.c:1646  */
6308      break;
6309  
6310 <  case 570:
6311 < /* Line 1813 of yacc.c  */
6598 < #line 2889 "conf_parser.y"
6599 <    {
6600 <  ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
6601 < }
6602 <    break;
6603 <
6604 <  case 571:
6605 < /* Line 1813 of yacc.c  */
6606 < #line 2892 "conf_parser.y"
6310 >  case 605:
6311 > #line 2902 "conf_parser.y" /* yacc.c:1646  */
6312      {
6313    ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
6314   }
6315 + #line 6316 "conf_parser.c" /* yacc.c:1646  */
6316      break;
6317  
6318 <  case 572:
6319 < /* Line 1813 of yacc.c  */
6614 < #line 2895 "conf_parser.y"
6318 >  case 606:
6319 > #line 2905 "conf_parser.y" /* yacc.c:1646  */
6320      {
6321    ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
6322   }
6323 + #line 6324 "conf_parser.c" /* yacc.c:1646  */
6324      break;
6325  
6326 <  case 573:
6327 < /* Line 1813 of yacc.c  */
6622 < #line 2898 "conf_parser.y"
6326 >  case 607:
6327 > #line 2908 "conf_parser.y" /* yacc.c:1646  */
6328      {
6329    ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
6330   }
6331 + #line 6332 "conf_parser.c" /* yacc.c:1646  */
6332      break;
6333  
6334 <  case 574:
6335 < /* Line 1813 of yacc.c  */
6630 < #line 2901 "conf_parser.y"
6334 >  case 608:
6335 > #line 2911 "conf_parser.y" /* yacc.c:1646  */
6336      {
6337    ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
6338   }
6339 + #line 6340 "conf_parser.c" /* yacc.c:1646  */
6340      break;
6341  
6342 <  case 575:
6343 < /* Line 1813 of yacc.c  */
6638 < #line 2904 "conf_parser.y"
6342 >  case 609:
6343 > #line 2914 "conf_parser.y" /* yacc.c:1646  */
6344      {
6345    ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
6346   }
6347 + #line 6348 "conf_parser.c" /* yacc.c:1646  */
6348      break;
6349  
6350 <  case 576:
6351 < /* Line 1813 of yacc.c  */
6646 < #line 2907 "conf_parser.y"
6350 >  case 610:
6351 > #line 2917 "conf_parser.y" /* yacc.c:1646  */
6352      {
6353    ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
6354   }
6355 + #line 6356 "conf_parser.c" /* yacc.c:1646  */
6356      break;
6357  
6358 <  case 577:
6359 < /* Line 1813 of yacc.c  */
6654 < #line 2912 "conf_parser.y"
6358 >  case 611:
6359 > #line 2920 "conf_parser.y" /* yacc.c:1646  */
6360      {
6361 <  ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
6361 >  ConfigFileEntry.oper_only_umodes |= UMODE_REGONLY;
6362   }
6363 + #line 6364 "conf_parser.c" /* yacc.c:1646  */
6364      break;
6365  
6366 <  case 578:
6367 < /* Line 1813 of yacc.c  */
6662 < #line 2917 "conf_parser.y"
6366 >  case 612:
6367 > #line 2923 "conf_parser.y" /* yacc.c:1646  */
6368      {
6369 <  ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
6369 >  ConfigFileEntry.oper_only_umodes |= UMODE_FARCONNECT;
6370   }
6371 + #line 6372 "conf_parser.c" /* yacc.c:1646  */
6372      break;
6373  
6374 <  case 579:
6375 < /* Line 1813 of yacc.c  */
6670 < #line 2922 "conf_parser.y"
6374 >  case 613:
6375 > #line 2928 "conf_parser.y" /* yacc.c:1646  */
6376      {
6377 <  ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
6377 >  ConfigFileEntry.min_nonwildcard = (yyvsp[-1].number);
6378   }
6379 + #line 6380 "conf_parser.c" /* yacc.c:1646  */
6380      break;
6381  
6382 <  case 598:
6383 < /* Line 1813 of yacc.c  */
6384 < #line 2945 "conf_parser.y"
6382 >  case 614:
6383 > #line 2933 "conf_parser.y" /* yacc.c:1646  */
6384 >    {
6385 >  ConfigFileEntry.min_nonwildcard_simple = (yyvsp[-1].number);
6386 > }
6387 > #line 6388 "conf_parser.c" /* yacc.c:1646  */
6388 >    break;
6389 >
6390 >  case 615:
6391 > #line 2938 "conf_parser.y" /* yacc.c:1646  */
6392 >    {
6393 >  ConfigFileEntry.default_floodcount = (yyvsp[-1].number);
6394 > }
6395 > #line 6396 "conf_parser.c" /* yacc.c:1646  */
6396 >    break;
6397 >
6398 >  case 634:
6399 > #line 2967 "conf_parser.y" /* yacc.c:1646  */
6400      {
6401    ConfigChannel.disable_fake_channels = yylval.number;
6402   }
6403 + #line 6404 "conf_parser.c" /* yacc.c:1646  */
6404      break;
6405  
6406 <  case 599:
6407 < /* Line 1813 of yacc.c  */
6686 < #line 2950 "conf_parser.y"
6406 >  case 635:
6407 > #line 2972 "conf_parser.y" /* yacc.c:1646  */
6408      {
6409 <  ConfigChannel.restrict_channels = yylval.number;
6409 >  ConfigChannel.invite_client_count = (yyvsp[-1].number);
6410   }
6411 + #line 6412 "conf_parser.c" /* yacc.c:1646  */
6412      break;
6413  
6414 <  case 600:
6415 < /* Line 1813 of yacc.c  */
6694 < #line 2955 "conf_parser.y"
6414 >  case 636:
6415 > #line 2977 "conf_parser.y" /* yacc.c:1646  */
6416      {
6417 <  ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
6417 >  ConfigChannel.invite_client_time = (yyvsp[-1].number);
6418   }
6419 + #line 6420 "conf_parser.c" /* yacc.c:1646  */
6420      break;
6421  
6422 <  case 601:
6423 < /* Line 1813 of yacc.c  */
6702 < #line 2960 "conf_parser.y"
6422 >  case 637:
6423 > #line 2982 "conf_parser.y" /* yacc.c:1646  */
6424      {
6425 <  ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
6425 >  ConfigChannel.knock_client_count = (yyvsp[-1].number);
6426   }
6427 + #line 6428 "conf_parser.c" /* yacc.c:1646  */
6428      break;
6429  
6430 <  case 602:
6431 < /* Line 1813 of yacc.c  */
6710 < #line 2965 "conf_parser.y"
6430 >  case 638:
6431 > #line 2987 "conf_parser.y" /* yacc.c:1646  */
6432      {
6433 <  ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
6433 >  ConfigChannel.knock_client_time = (yyvsp[-1].number);
6434   }
6435 + #line 6436 "conf_parser.c" /* yacc.c:1646  */
6436      break;
6437  
6438 <  case 603:
6439 < /* Line 1813 of yacc.c  */
6718 < #line 2970 "conf_parser.y"
6438 >  case 639:
6439 > #line 2992 "conf_parser.y" /* yacc.c:1646  */
6440      {
6441 <  ConfigChannel.max_chans_per_oper = (yyvsp[(3) - (4)].number);
6441 >  ConfigChannel.knock_delay_channel = (yyvsp[-1].number);
6442   }
6443 + #line 6444 "conf_parser.c" /* yacc.c:1646  */
6444      break;
6445  
6446 <  case 604:
6447 < /* Line 1813 of yacc.c  */
6726 < #line 2975 "conf_parser.y"
6446 >  case 640:
6447 > #line 2997 "conf_parser.y" /* yacc.c:1646  */
6448      {
6449 <  ConfigChannel.quiet_on_ban = yylval.number;
6449 >  ConfigChannel.max_channels = (yyvsp[-1].number);
6450   }
6451 + #line 6452 "conf_parser.c" /* yacc.c:1646  */
6452      break;
6453  
6454 <  case 605:
6455 < /* Line 1813 of yacc.c  */
6734 < #line 2980 "conf_parser.y"
6454 >  case 641:
6455 > #line 3002 "conf_parser.y" /* yacc.c:1646  */
6456      {
6457 <  ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
6457 >  ConfigChannel.max_bans = (yyvsp[-1].number);
6458   }
6459 + #line 6460 "conf_parser.c" /* yacc.c:1646  */
6460      break;
6461  
6462 <  case 606:
6463 < /* Line 1813 of yacc.c  */
6742 < #line 2985 "conf_parser.y"
6462 >  case 642:
6463 > #line 3007 "conf_parser.y" /* yacc.c:1646  */
6464      {
6465 <  ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
6465 >  ConfigChannel.default_split_user_count = (yyvsp[-1].number);
6466   }
6467 + #line 6468 "conf_parser.c" /* yacc.c:1646  */
6468      break;
6469  
6470 <  case 607:
6471 < /* Line 1813 of yacc.c  */
6750 < #line 2990 "conf_parser.y"
6470 >  case 643:
6471 > #line 3012 "conf_parser.y" /* yacc.c:1646  */
6472      {
6473 <  ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
6473 >  ConfigChannel.default_split_server_count = (yyvsp[-1].number);
6474   }
6475 + #line 6476 "conf_parser.c" /* yacc.c:1646  */
6476      break;
6477  
6478 <  case 608:
6479 < /* Line 1813 of yacc.c  */
6758 < #line 2995 "conf_parser.y"
6478 >  case 644:
6479 > #line 3017 "conf_parser.y" /* yacc.c:1646  */
6480      {
6481    ConfigChannel.no_create_on_split = yylval.number;
6482   }
6483 + #line 6484 "conf_parser.c" /* yacc.c:1646  */
6484      break;
6485  
6486 <  case 609:
6487 < /* Line 1813 of yacc.c  */
6766 < #line 3000 "conf_parser.y"
6486 >  case 645:
6487 > #line 3022 "conf_parser.y" /* yacc.c:1646  */
6488      {
6489    ConfigChannel.no_join_on_split = yylval.number;
6490   }
6491 + #line 6492 "conf_parser.c" /* yacc.c:1646  */
6492      break;
6493  
6494 <  case 610:
6495 < /* Line 1813 of yacc.c  */
6774 < #line 3005 "conf_parser.y"
6494 >  case 646:
6495 > #line 3027 "conf_parser.y" /* yacc.c:1646  */
6496      {
6497    GlobalSetOptions.joinfloodcount = yylval.number;
6498   }
6499 + #line 6500 "conf_parser.c" /* yacc.c:1646  */
6500      break;
6501  
6502 <  case 611:
6503 < /* Line 1813 of yacc.c  */
6782 < #line 3010 "conf_parser.y"
6502 >  case 647:
6503 > #line 3032 "conf_parser.y" /* yacc.c:1646  */
6504      {
6505 <  GlobalSetOptions.joinfloodtime = yylval.number;
6505 >  GlobalSetOptions.joinfloodtime = (yyvsp[-1].number);
6506   }
6507 + #line 6508 "conf_parser.c" /* yacc.c:1646  */
6508      break;
6509  
6510 <  case 622:
6511 < /* Line 1813 of yacc.c  */
6790 < #line 3028 "conf_parser.y"
6510 >  case 660:
6511 > #line 3054 "conf_parser.y" /* yacc.c:1646  */
6512      {
6513    if (conf_parser_ctx.pass == 2)
6514      ConfigServerHide.flatten_links = yylval.number;
6515   }
6516 + #line 6517 "conf_parser.c" /* yacc.c:1646  */
6517 +    break;
6518 +
6519 +  case 661:
6520 + #line 3060 "conf_parser.y" /* yacc.c:1646  */
6521 +    {
6522 +  if (conf_parser_ctx.pass == 2)
6523 +    ConfigServerHide.disable_remote_commands = yylval.number;
6524 + }
6525 + #line 6526 "conf_parser.c" /* yacc.c:1646  */
6526      break;
6527  
6528 <  case 623:
6529 < /* Line 1813 of yacc.c  */
6799 < #line 3034 "conf_parser.y"
6528 >  case 662:
6529 > #line 3066 "conf_parser.y" /* yacc.c:1646  */
6530      {
6531    if (conf_parser_ctx.pass == 2)
6532      ConfigServerHide.hide_servers = yylval.number;
6533   }
6534 + #line 6535 "conf_parser.c" /* yacc.c:1646  */
6535      break;
6536  
6537 <  case 624:
6538 < /* Line 1813 of yacc.c  */
6539 < #line 3040 "conf_parser.y"
6537 >  case 663:
6538 > #line 3072 "conf_parser.y" /* yacc.c:1646  */
6539 >    {
6540 >  if (conf_parser_ctx.pass == 2)
6541 >    ConfigServerHide.hide_services = yylval.number;
6542 > }
6543 > #line 6544 "conf_parser.c" /* yacc.c:1646  */
6544 >    break;
6545 >
6546 >  case 664:
6547 > #line 3078 "conf_parser.y" /* yacc.c:1646  */
6548      {
6549    if (conf_parser_ctx.pass == 2)
6550    {
6551      MyFree(ConfigServerHide.hidden_name);
6552 <    DupString(ConfigServerHide.hidden_name, yylval.string);
6552 >    ConfigServerHide.hidden_name = xstrdup(yylval.string);
6553    }
6554   }
6555 + #line 6556 "conf_parser.c" /* yacc.c:1646  */
6556      break;
6557  
6558 <  case 625:
6559 < /* Line 1813 of yacc.c  */
6820 < #line 3049 "conf_parser.y"
6558 >  case 665:
6559 > #line 3087 "conf_parser.y" /* yacc.c:1646  */
6560      {
6561    if (conf_parser_ctx.pass == 2)
6562    {
6563 <    if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
6563 >    if (((yyvsp[-1].number) > 0) && ConfigServerHide.links_disabled == 1)
6564      {
6565 <      eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
6565 >      eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[-1].number));
6566        ConfigServerHide.links_disabled = 0;
6567      }
6568  
6569 <    ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
6569 >    ConfigServerHide.links_delay = (yyvsp[-1].number);
6570    }
6571   }
6572 + #line 6573 "conf_parser.c" /* yacc.c:1646  */
6573      break;
6574  
6575 <  case 626:
6576 < /* Line 1813 of yacc.c  */
6837 < #line 3063 "conf_parser.y"
6575 >  case 666:
6576 > #line 3101 "conf_parser.y" /* yacc.c:1646  */
6577      {
6578    if (conf_parser_ctx.pass == 2)
6579      ConfigServerHide.hidden = yylval.number;
6580   }
6581 + #line 6582 "conf_parser.c" /* yacc.c:1646  */
6582      break;
6583  
6584 <  case 627:
6585 < /* Line 1813 of yacc.c  */
6846 < #line 3069 "conf_parser.y"
6584 >  case 667:
6585 > #line 3107 "conf_parser.y" /* yacc.c:1646  */
6586      {
6587    if (conf_parser_ctx.pass == 2)
6588      ConfigServerHide.hide_server_ips = yylval.number;
6589   }
6590 + #line 6591 "conf_parser.c" /* yacc.c:1646  */
6591      break;
6592  
6593  
6594 < /* Line 1813 of yacc.c  */
6855 < #line 6856 "conf_parser.c"
6594 > #line 6595 "conf_parser.c" /* yacc.c:1646  */
6595        default: break;
6596      }
6597    /* User semantic actions sometimes alter yychar, and that requires
# Line 6874 | Line 6613 | yyreduce:
6613  
6614    *++yyvsp = yyval;
6615  
6616 <  /* Now `shift' the result of the reduction.  Determine what state
6616 >  /* Now 'shift' the result of the reduction.  Determine what state
6617       that goes to, based on the state we popped back to and the rule
6618       number reduced by.  */
6619  
# Line 6889 | Line 6628 | yyreduce:
6628    goto yynewstate;
6629  
6630  
6631 < /*------------------------------------.
6632 < | yyerrlab -- here on detecting error |
6633 < `------------------------------------*/
6631 > /*--------------------------------------.
6632 > | yyerrlab -- here on detecting error.  |
6633 > `--------------------------------------*/
6634   yyerrlab:
6635    /* Make sure we have latest lookahead translation.  See comments at
6636       user semantic actions for why this is necessary.  */
# Line 6942 | Line 6681 | yyerrlab:
6681    if (yyerrstatus == 3)
6682      {
6683        /* If just tried and failed to reuse lookahead token after an
6684 <         error, discard it.  */
6684 >         error, discard it.  */
6685  
6686        if (yychar <= YYEOF)
6687 <        {
6688 <          /* Return failure if at end of input.  */
6689 <          if (yychar == YYEOF)
6690 <            YYABORT;
6691 <        }
6687 >        {
6688 >          /* Return failure if at end of input.  */
6689 >          if (yychar == YYEOF)
6690 >            YYABORT;
6691 >        }
6692        else
6693 <        {
6694 <          yydestruct ("Error: discarding",
6695 <                      yytoken, &yylval);
6696 <          yychar = YYEMPTY;
6697 <        }
6693 >        {
6694 >          yydestruct ("Error: discarding",
6695 >                      yytoken, &yylval);
6696 >          yychar = YYEMPTY;
6697 >        }
6698      }
6699  
6700    /* Else will try to reuse lookahead token after shifting the error
# Line 6974 | Line 6713 | yyerrorlab:
6713    if (/*CONSTCOND*/ 0)
6714       goto yyerrorlab;
6715  
6716 <  /* Do not reclaim the symbols of the rule which action triggered
6716 >  /* Do not reclaim the symbols of the rule whose action triggered
6717       this YYERROR.  */
6718    YYPOPSTACK (yylen);
6719    yylen = 0;
# Line 6987 | Line 6726 | yyerrorlab:
6726   | yyerrlab1 -- common code for both syntax error and YYERROR.  |
6727   `-------------------------------------------------------------*/
6728   yyerrlab1:
6729 <  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
6729 >  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
6730  
6731    for (;;)
6732      {
6733        yyn = yypact[yystate];
6734        if (!yypact_value_is_default (yyn))
6735 <        {
6736 <          yyn += YYTERROR;
6737 <          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6738 <            {
6739 <              yyn = yytable[yyn];
6740 <              if (0 < yyn)
6741 <                break;
6742 <            }
6743 <        }
6735 >        {
6736 >          yyn += YYTERROR;
6737 >          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6738 >            {
6739 >              yyn = yytable[yyn];
6740 >              if (0 < yyn)
6741 >                break;
6742 >            }
6743 >        }
6744  
6745        /* Pop the current state because it cannot handle the error token.  */
6746        if (yyssp == yyss)
6747 <        YYABORT;
6747 >        YYABORT;
6748  
6749  
6750        yydestruct ("Error: popping",
6751 <                  yystos[yystate], yyvsp);
6751 >                  yystos[yystate], yyvsp);
6752        YYPOPSTACK (1);
6753        yystate = *yyssp;
6754        YY_STACK_PRINT (yyss, yyssp);
# Line 7060 | Line 6799 | yyreturn:
6799        yydestruct ("Cleanup: discarding lookahead",
6800                    yytoken, &yylval);
6801      }
6802 <  /* Do not reclaim the symbols of the rule which action triggered
6802 >  /* Do not reclaim the symbols of the rule whose action triggered
6803       this YYABORT or YYACCEPT.  */
6804    YYPOPSTACK (yylen);
6805    YY_STACK_PRINT (yyss, yyssp);
6806    while (yyssp != yyss)
6807      {
6808        yydestruct ("Cleanup: popping",
6809 <                  yystos[*yyssp], yyvsp);
6809 >                  yystos[*yyssp], yyvsp);
6810        YYPOPSTACK (1);
6811      }
6812   #ifndef yyoverflow
# Line 7078 | Line 6817 | yyreturn:
6817    if (yymsg != yymsgbuf)
6818      YYSTACK_FREE (yymsg);
6819   #endif
6820 <  /* Make sure YYID is used.  */
7082 <  return YYID (yyresult);
6820 >  return yyresult;
6821   }
7084
7085

Comparing ircd-hybrid/trunk/src/conf_parser.c (property svn:keywords):
Revision 1619 by michael, Wed Oct 31 19:21:26 2012 UTC vs.
Revision 4070 by michael, Thu Jun 26 15:36:08 2014 UTC

# Line 0 | Line 1
1 + Id Revision

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)