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-7.3/src/ircd_parser.c (file contents), Revision 1119 by michael, Fri Jan 7 22:01:47 2011 UTC vs.
ircd-hybrid/trunk/src/conf_parser.c (file contents), Revision 4094 by michael, Sun Jun 29 11:48:50 2014 UTC

# Line 1 | Line 1
1 < /* A Bison parser, made by GNU Bison 2.4.3.  */
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-2013 Free Software Foundation, Inc.
6  
3 /* Skeleton implementation for Bison's Yacc-like parsers in C
4  
5      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
6   2009, 2010 Free Software Foundation, Inc.
7  
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 27 | 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 45 | Line 44
44   #define YYBISON 1
45  
46   /* Bison version.  */
47 < #define YYBISON_VERSION "2.4.3"
47 > #define YYBISON_VERSION "3.0.2"
48  
49   /* Skeleton name.  */
50   #define YYSKELETON_NAME "yacc.c"
# Line 59 | Line 58
58   /* Pull parsers.  */
59   #define YYPULL 1
60  
62 /* Using locations.  */
63 #define YYLSP_NEEDED 0
61  
62  
63  
64   /* Copy the first part of user declarations.  */
65 <
69 < /* Line 189 of yacc.c  */
70 < #line 25 "ircd_parser.y"
65 > #line 28 "conf_parser.y" /* yacc.c:339  */
66  
67  
68   #define YY_NO_UNPUT
# Line 78 | Line 73
73   #include "stdinc.h"
74   #include "ircd.h"
75   #include "list.h"
76 < #include "s_conf.h"
76 > #include "conf.h"
77 > #include "conf_class.h"
78   #include "event.h"
79 < #include "s_log.h"
79 > #include "log.h"
80   #include "client.h"     /* for UMODE_ALL only */
81   #include "irc_string.h"
86 #include "irc_getaddrinfo.h"
87 #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>
95   #include <openssl/bio.h>
96   #include <openssl/pem.h>
97 + #include <openssl/dh.h>
98   #endif
99  
100 < static char *class_name = NULL;
105 < static struct ConfItem *yy_conf = NULL;
106 < static struct AccessItem *yy_aconf = NULL;
107 < static struct MatchItem *yy_match_item = NULL;
108 < static struct ClassItem *yy_class = NULL;
109 < static char *yy_class_name = NULL;
110 <
111 < static dlink_list col_conf_list  = { NULL, NULL, 0 };
112 < static dlink_list hub_conf_list  = { NULL, NULL, 0 };
113 < static dlink_list leaf_conf_list = { NULL, NULL, 0 };
114 < static unsigned int listener_flags = 0;
115 < static unsigned int regex_ban = 0;
116 < static char userbuf[IRCD_BUFSIZE];
117 < static char hostbuf[IRCD_BUFSIZE];
118 < static char reasonbuf[REASONLEN + 1];
119 < static char gecos_name[REALLEN * 4];
120 <
121 < static char *resv_reason = NULL;
122 < static char *listener_address = NULL;
123 < static int not_atom = 0;
100 > #include "rsa.h"
101  
102 < struct CollectItem
126 < {
127 <  dlink_node node;
128 <  char *name;
129 <  char *user;
130 <  char *host;
131 <  char *passwd;
132 <  int  port;
133 <  int  flags;
134 < #ifdef HAVE_LIBCRYPTO
135 <  char *rsa_public_key_file;
136 <  RSA *rsa_public_key;
137 < #endif
138 < };
102 > int yylex(void);
103  
104 < static void
141 < free_collect_item(struct CollectItem *item)
104 > static struct
105   {
106 <  MyFree(item->name);
107 <  MyFree(item->user);
108 <  MyFree(item->host);
109 <  MyFree(item->passwd);
110 < #ifdef HAVE_LIBCRYPTO
111 <  MyFree(item->rsa_public_key_file);
112 < #endif
113 <  MyFree(item);
114 < }
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 < unhook_hub_leaf_confs(void)
155 > reset_block_state(void)
156   {
157 <  dlink_node *ptr;
157 <  dlink_node *next_ptr;
158 <  struct CollectItem *yy_hconf;
159 <  struct CollectItem *yy_lconf;
157 >  dlink_node *ptr = NULL, *ptr_next = NULL;
158  
159 <  DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
159 >  DLINK_FOREACH_SAFE(ptr, ptr_next, block_state.mask.list.head)
160    {
161 <    yy_hconf = ptr->data;
162 <    dlinkDelete(&yy_hconf->node, &hub_conf_list);
163 <    free_collect_item(yy_hconf);
161 >    MyFree(ptr->data);
162 >    dlinkDelete(ptr, &block_state.mask.list);
163 >    free_dlink_node(ptr);
164    }
165  
166 <  DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
166 >  DLINK_FOREACH_SAFE(ptr, ptr_next, block_state.leaf.list.head)
167    {
168 <    yy_lconf = ptr->data;
169 <    dlinkDelete(&yy_lconf->node, &leaf_conf_list);
170 <    free_collect_item(yy_lconf);
168 >    MyFree(ptr->data);
169 >    dlinkDelete(ptr, &block_state.leaf.list);
170 >    free_dlink_node(ptr);
171    }
174 }
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  
178 /* Line 189 of yacc.c  */
179 #line 180 "ircd_parser.c"
183  
184 < /* Enabling traces.  */
185 < #ifndef YYDEBUG
186 < # define YYDEBUG 0
187 < #endif
184 > #line 185 "conf_parser.c" /* yacc.c:339  */
185 >
186 > # ifndef YY_NULLPTR
187 > #  if defined __cplusplus && 201103L <= __cplusplus
188 > #   define YY_NULLPTR nullptr
189 > #  else
190 > #   define YY_NULLPTR 0
191 > #  endif
192 > # endif
193  
194   /* Enabling verbose error messages.  */
195   #ifdef YYERROR_VERBOSE
# Line 191 | Line 199 | unhook_hub_leaf_confs(void)
199   # define YYERROR_VERBOSE 0
200   #endif
201  
202 < /* Enabling the token table.  */
203 < #ifndef YYTOKEN_TABLE
204 < # define YYTOKEN_TABLE 0
202 > /* In a future release of Bison, this section will be replaced
203 >   by #include "y.tab.h".  */
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
210 > #if YYDEBUG
211 > extern int yydebug;
212   #endif
213  
214 <
200 < /* 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 <     ACTION = 259,
222 <     ADMIN = 260,
223 <     AFTYPE = 261,
224 <     T_ALLOW = 262,
225 <     ANTI_NICK_FLOOD = 263,
226 <     ANTI_SPAM_EXIT_MESSAGE_TIME = 264,
227 <     AUTOCONN = 265,
228 <     T_BLOCK = 266,
229 <     BURST_AWAY = 267,
230 <     BURST_TOPICWHO = 268,
231 <     BYTES = 269,
232 <     KBYTES = 270,
233 <     MBYTES = 271,
234 <     GBYTES = 272,
235 <     TBYTES = 273,
236 <     CALLER_ID_WAIT = 274,
237 <     CAN_FLOOD = 275,
238 <     CAN_IDLE = 276,
239 <     CHANNEL = 277,
240 <     CIDR_BITLEN_IPV4 = 278,
241 <     CIDR_BITLEN_IPV6 = 279,
242 <     CIPHER_PREFERENCE = 280,
243 <     CLASS = 281,
244 <     COMPRESSED = 282,
245 <     COMPRESSION_LEVEL = 283,
246 <     CONNECT = 284,
247 <     CONNECTFREQ = 285,
248 <     CRYPTLINK = 286,
249 <     DEFAULT_CIPHER_PREFERENCE = 287,
250 <     DEFAULT_FLOODCOUNT = 288,
251 <     DEFAULT_SPLIT_SERVER_COUNT = 289,
252 <     DEFAULT_SPLIT_USER_COUNT = 290,
253 <     DENY = 291,
254 <     DESCRIPTION = 292,
255 <     DIE = 293,
256 <     DISABLE_AUTH = 294,
257 <     DISABLE_FAKE_CHANNELS = 295,
258 <     DISABLE_HIDDEN = 296,
259 <     DISABLE_LOCAL_CHANNELS = 297,
260 <     DISABLE_REMOTE_COMMANDS = 298,
261 <     DOTS_IN_IDENT = 299,
262 <     DURATION = 300,
263 <     EGDPOOL_PATH = 301,
264 <     EMAIL = 302,
265 <     ENABLE = 303,
266 <     ENCRYPTED = 304,
267 <     EXCEED_LIMIT = 305,
268 <     EXEMPT = 306,
269 <     FAILED_OPER_NOTICE = 307,
270 <     IRCD_FLAGS = 308,
271 <     FLATTEN_LINKS = 309,
272 <     FFAILED_OPERLOG = 310,
273 <     FKILLLOG = 311,
274 <     FKLINELOG = 312,
275 <     FGLINELOG = 313,
276 <     FIOERRLOG = 314,
277 <     FOPERLOG = 315,
278 <     FOPERSPYLOG = 316,
279 <     FUSERLOG = 317,
280 <     GECOS = 318,
281 <     GENERAL = 319,
282 <     GLINE = 320,
283 <     GLINES = 321,
284 <     GLINE_EXEMPT = 322,
285 <     GLINE_LOG = 323,
286 <     GLINE_TIME = 324,
287 <     GLINE_MIN_CIDR = 325,
288 <     GLINE_MIN_CIDR6 = 326,
289 <     GLOBAL_KILL = 327,
290 <     IRCD_AUTH = 328,
291 <     NEED_IDENT = 329,
292 <     HAVENT_READ_CONF = 330,
293 <     HIDDEN = 331,
294 <     HIDDEN_ADMIN = 332,
295 <     HIDDEN_NAME = 333,
296 <     HIDDEN_OPER = 334,
297 <     HIDE_SERVER_IPS = 335,
298 <     HIDE_SERVERS = 336,
299 <     HIDE_SPOOF_IPS = 337,
300 <     HOST = 338,
301 <     HUB = 339,
302 <     HUB_MASK = 340,
303 <     IDLETIME = 341,
304 <     IGNORE_BOGUS_TS = 342,
305 <     INVISIBLE_ON_CONNECT = 343,
306 <     IP = 344,
307 <     KILL = 345,
308 <     KILL_CHASE_TIME_LIMIT = 346,
309 <     KLINE = 347,
310 <     KLINE_EXEMPT = 348,
311 <     KLINE_REASON = 349,
312 <     KLINE_WITH_REASON = 350,
313 <     KNOCK_DELAY = 351,
314 <     KNOCK_DELAY_CHANNEL = 352,
315 <     LEAF_MASK = 353,
316 <     LINKS_DELAY = 354,
317 <     LISTEN = 355,
318 <     T_LOG = 356,
319 <     LOGGING = 357,
320 <     LOG_LEVEL = 358,
321 <     MAX_ACCEPT = 359,
322 <     MAX_BANS = 360,
323 <     MAX_CHANS_PER_USER = 361,
324 <     MAX_GLOBAL = 362,
325 <     MAX_IDENT = 363,
326 <     MAX_LOCAL = 364,
327 <     MAX_NICK_CHANGES = 365,
328 <     MAX_NICK_TIME = 366,
329 <     MAX_NUMBER = 367,
330 <     MAX_TARGETS = 368,
331 <     MAX_WATCH = 369,
332 <     MESSAGE_LOCALE = 370,
333 <     MIN_NONWILDCARD = 371,
334 <     MIN_NONWILDCARD_SIMPLE = 372,
335 <     MODULE = 373,
336 <     MODULES = 374,
337 <     NAME = 375,
338 <     NEED_PASSWORD = 376,
339 <     NETWORK_DESC = 377,
340 <     NETWORK_NAME = 378,
341 <     NICK = 379,
342 <     NICK_CHANGES = 380,
343 <     NO_CREATE_ON_SPLIT = 381,
344 <     NO_JOIN_ON_SPLIT = 382,
345 <     NO_OPER_FLOOD = 383,
346 <     NO_TILDE = 384,
347 <     NOT = 385,
348 <     NUMBER = 386,
349 <     NUMBER_PER_IDENT = 387,
350 <     NUMBER_PER_CIDR = 388,
351 <     NUMBER_PER_IP = 389,
352 <     NUMBER_PER_IP_GLOBAL = 390,
353 <     OPERATOR = 391,
354 <     OPERS_BYPASS_CALLERID = 392,
355 <     OPER_LOG = 393,
356 <     OPER_ONLY_UMODES = 394,
357 <     OPER_PASS_RESV = 395,
358 <     OPER_SPY_T = 396,
359 <     OPER_UMODES = 397,
360 <     JOIN_FLOOD_COUNT = 398,
361 <     JOIN_FLOOD_TIME = 399,
362 <     PACE_WAIT = 400,
363 <     PACE_WAIT_SIMPLE = 401,
364 <     PASSWORD = 402,
365 <     PATH = 403,
366 <     PING_COOKIE = 404,
367 <     PING_TIME = 405,
368 <     PING_WARNING = 406,
369 <     PORT = 407,
370 <     QSTRING = 408,
371 <     QUIET_ON_BAN = 409,
372 <     REASON = 410,
373 <     REDIRPORT = 411,
374 <     REDIRSERV = 412,
375 <     REGEX_T = 413,
376 <     REHASH = 414,
377 <     TREJECT_HOLD_TIME = 415,
378 <     REMOTE = 416,
379 <     REMOTEBAN = 417,
380 <     RESTRICT_CHANNELS = 418,
381 <     RESTRICTED = 419,
382 <     RSA_PRIVATE_KEY_FILE = 420,
383 <     RSA_PUBLIC_KEY_FILE = 421,
384 <     SSL_CERTIFICATE_FILE = 422,
385 <     T_SSL_CONNECTION_METHOD = 423,
386 <     T_SSLV3 = 424,
387 <     T_TLSV1 = 425,
388 <     RESV = 426,
389 <     RESV_EXEMPT = 427,
390 <     SECONDS = 428,
391 <     MINUTES = 429,
392 <     HOURS = 430,
393 <     DAYS = 431,
394 <     WEEKS = 432,
395 <     SENDQ = 433,
396 <     SEND_PASSWORD = 434,
397 <     SERVERHIDE = 435,
398 <     SERVERINFO = 436,
399 <     SERVLINK_PATH = 437,
400 <     IRCD_SID = 438,
401 <     TKLINE_EXPIRE_NOTICES = 439,
402 <     T_SHARED = 440,
403 <     T_CLUSTER = 441,
404 <     TYPE = 442,
405 <     SHORT_MOTD = 443,
406 <     SILENT = 444,
407 <     SPOOF = 445,
408 <     SPOOF_NOTICE = 446,
409 <     STATS_E_DISABLED = 447,
410 <     STATS_I_OPER_ONLY = 448,
411 <     STATS_K_OPER_ONLY = 449,
412 <     STATS_O_OPER_ONLY = 450,
413 <     STATS_P_OPER_ONLY = 451,
414 <     TBOOL = 452,
415 <     TMASKED = 453,
416 <     T_REJECT = 454,
417 <     TS_MAX_DELTA = 455,
418 <     TS_WARN_DELTA = 456,
419 <     TWODOTS = 457,
420 <     T_ALL = 458,
421 <     T_BOTS = 459,
422 <     T_SOFTCALLERID = 460,
423 <     T_CALLERID = 461,
424 <     T_CCONN = 462,
425 <     T_CCONN_FULL = 463,
426 <     T_CLIENT_FLOOD = 464,
427 <     T_DEAF = 465,
428 <     T_DEBUG = 466,
429 <     T_DRONE = 467,
430 <     T_EXTERNAL = 468,
431 <     T_FULL = 469,
432 <     T_INVISIBLE = 470,
433 <     T_IPV4 = 471,
434 <     T_IPV6 = 472,
435 <     T_LOCOPS = 473,
436 <     T_LOGPATH = 474,
437 <     T_L_CRIT = 475,
438 <     T_L_DEBUG = 476,
439 <     T_L_ERROR = 477,
440 <     T_L_INFO = 478,
441 <     T_L_NOTICE = 479,
442 <     T_L_TRACE = 480,
443 <     T_L_WARN = 481,
444 <     T_MAX_CLIENTS = 482,
445 <     T_NCHANGE = 483,
446 <     T_OPERWALL = 484,
447 <     T_REJ = 485,
448 <     T_SERVER = 486,
435 <     T_SERVNOTICE = 487,
436 <     T_SKILL = 488,
437 <     T_SPY = 489,
438 <     T_SSL = 490,
439 <     T_UMODES = 491,
440 <     T_UNAUTH = 492,
441 <     T_UNRESV = 493,
442 <     T_UNXLINE = 494,
443 <     T_WALLOP = 495,
444 <     THROTTLE_TIME = 496,
445 <     TOPICBURST = 497,
446 <     TRUE_NO_OPER_FLOOD = 498,
447 <     TKLINE = 499,
448 <     TXLINE = 500,
449 <     TRESV = 501,
450 <     UNKLINE = 502,
451 <     USER = 503,
452 <     USE_EGD = 504,
453 <     USE_EXCEPT = 505,
454 <     USE_INVEX = 506,
455 <     USE_KNOCK = 507,
456 <     USE_LOGGING = 508,
457 <     USE_WHOIS_ACTUALLY = 509,
458 <     VHOST = 510,
459 <     VHOST6 = 511,
460 <     XLINE = 512,
461 <     WARN = 513,
462 <     WARN_NO_NLINE = 514
463 <   };
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
452 < #define ACTION 259
453 < #define ADMIN 260
454 < #define AFTYPE 261
455 < #define T_ALLOW 262
456 < #define ANTI_NICK_FLOOD 263
457 < #define ANTI_SPAM_EXIT_MESSAGE_TIME 264
458 < #define AUTOCONN 265
459 < #define T_BLOCK 266
460 < #define BURST_AWAY 267
461 < #define BURST_TOPICWHO 268
462 < #define BYTES 269
463 < #define KBYTES 270
464 < #define MBYTES 271
465 < #define GBYTES 272
466 < #define TBYTES 273
467 < #define CALLER_ID_WAIT 274
468 < #define CAN_FLOOD 275
469 < #define CAN_IDLE 276
470 < #define CHANNEL 277
471 < #define CIDR_BITLEN_IPV4 278
472 < #define CIDR_BITLEN_IPV6 279
473 < #define CIPHER_PREFERENCE 280
474 < #define CLASS 281
475 < #define COMPRESSED 282
476 < #define COMPRESSION_LEVEL 283
477 < #define CONNECT 284
478 < #define CONNECTFREQ 285
479 < #define CRYPTLINK 286
480 < #define DEFAULT_CIPHER_PREFERENCE 287
481 < #define DEFAULT_FLOODCOUNT 288
482 < #define DEFAULT_SPLIT_SERVER_COUNT 289
483 < #define DEFAULT_SPLIT_USER_COUNT 290
484 < #define DENY 291
485 < #define DESCRIPTION 292
486 < #define DIE 293
487 < #define DISABLE_AUTH 294
488 < #define DISABLE_FAKE_CHANNELS 295
489 < #define DISABLE_HIDDEN 296
490 < #define DISABLE_LOCAL_CHANNELS 297
491 < #define DISABLE_REMOTE_COMMANDS 298
492 < #define DOTS_IN_IDENT 299
493 < #define DURATION 300
494 < #define EGDPOOL_PATH 301
495 < #define EMAIL 302
496 < #define ENABLE 303
497 < #define ENCRYPTED 304
498 < #define EXCEED_LIMIT 305
499 < #define EXEMPT 306
500 < #define FAILED_OPER_NOTICE 307
501 < #define IRCD_FLAGS 308
502 < #define FLATTEN_LINKS 309
503 < #define FFAILED_OPERLOG 310
504 < #define FKILLLOG 311
505 < #define FKLINELOG 312
506 < #define FGLINELOG 313
507 < #define FIOERRLOG 314
508 < #define FOPERLOG 315
509 < #define FOPERSPYLOG 316
510 < #define FUSERLOG 317
511 < #define GECOS 318
512 < #define GENERAL 319
513 < #define GLINE 320
514 < #define GLINES 321
515 < #define GLINE_EXEMPT 322
516 < #define GLINE_LOG 323
517 < #define GLINE_TIME 324
518 < #define GLINE_MIN_CIDR 325
519 < #define GLINE_MIN_CIDR6 326
520 < #define GLOBAL_KILL 327
521 < #define IRCD_AUTH 328
522 < #define NEED_IDENT 329
523 < #define HAVENT_READ_CONF 330
524 < #define HIDDEN 331
525 < #define HIDDEN_ADMIN 332
526 < #define HIDDEN_NAME 333
527 < #define HIDDEN_OPER 334
528 < #define HIDE_SERVER_IPS 335
529 < #define HIDE_SERVERS 336
530 < #define HIDE_SPOOF_IPS 337
531 < #define HOST 338
532 < #define HUB 339
533 < #define HUB_MASK 340
534 < #define IDLETIME 341
535 < #define IGNORE_BOGUS_TS 342
536 < #define INVISIBLE_ON_CONNECT 343
537 < #define IP 344
538 < #define KILL 345
539 < #define KILL_CHASE_TIME_LIMIT 346
540 < #define KLINE 347
541 < #define KLINE_EXEMPT 348
542 < #define KLINE_REASON 349
543 < #define KLINE_WITH_REASON 350
544 < #define KNOCK_DELAY 351
545 < #define KNOCK_DELAY_CHANNEL 352
546 < #define LEAF_MASK 353
547 < #define LINKS_DELAY 354
548 < #define LISTEN 355
549 < #define T_LOG 356
550 < #define LOGGING 357
551 < #define LOG_LEVEL 358
552 < #define MAX_ACCEPT 359
553 < #define MAX_BANS 360
554 < #define MAX_CHANS_PER_USER 361
555 < #define MAX_GLOBAL 362
556 < #define MAX_IDENT 363
557 < #define MAX_LOCAL 364
558 < #define MAX_NICK_CHANGES 365
559 < #define MAX_NICK_TIME 366
560 < #define MAX_NUMBER 367
561 < #define MAX_TARGETS 368
562 < #define MAX_WATCH 369
563 < #define MESSAGE_LOCALE 370
564 < #define MIN_NONWILDCARD 371
565 < #define MIN_NONWILDCARD_SIMPLE 372
566 < #define MODULE 373
567 < #define MODULES 374
568 < #define NAME 375
569 < #define NEED_PASSWORD 376
570 < #define NETWORK_DESC 377
571 < #define NETWORK_NAME 378
572 < #define NICK 379
573 < #define NICK_CHANGES 380
574 < #define NO_CREATE_ON_SPLIT 381
575 < #define NO_JOIN_ON_SPLIT 382
576 < #define NO_OPER_FLOOD 383
577 < #define NO_TILDE 384
578 < #define NOT 385
579 < #define NUMBER 386
580 < #define NUMBER_PER_IDENT 387
581 < #define NUMBER_PER_CIDR 388
582 < #define NUMBER_PER_IP 389
583 < #define NUMBER_PER_IP_GLOBAL 390
584 < #define OPERATOR 391
585 < #define OPERS_BYPASS_CALLERID 392
586 < #define OPER_LOG 393
587 < #define OPER_ONLY_UMODES 394
588 < #define OPER_PASS_RESV 395
589 < #define OPER_SPY_T 396
590 < #define OPER_UMODES 397
591 < #define JOIN_FLOOD_COUNT 398
592 < #define JOIN_FLOOD_TIME 399
593 < #define PACE_WAIT 400
594 < #define PACE_WAIT_SIMPLE 401
595 < #define PASSWORD 402
596 < #define PATH 403
597 < #define PING_COOKIE 404
598 < #define PING_TIME 405
599 < #define PING_WARNING 406
600 < #define PORT 407
601 < #define QSTRING 408
602 < #define QUIET_ON_BAN 409
603 < #define REASON 410
604 < #define REDIRPORT 411
605 < #define REDIRSERV 412
606 < #define REGEX_T 413
607 < #define REHASH 414
608 < #define TREJECT_HOLD_TIME 415
609 < #define REMOTE 416
610 < #define REMOTEBAN 417
611 < #define RESTRICT_CHANNELS 418
612 < #define RESTRICTED 419
613 < #define RSA_PRIVATE_KEY_FILE 420
614 < #define RSA_PUBLIC_KEY_FILE 421
615 < #define SSL_CERTIFICATE_FILE 422
616 < #define T_SSL_CONNECTION_METHOD 423
617 < #define T_SSLV3 424
618 < #define T_TLSV1 425
619 < #define RESV 426
620 < #define RESV_EXEMPT 427
621 < #define SECONDS 428
622 < #define MINUTES 429
623 < #define HOURS 430
624 < #define DAYS 431
625 < #define WEEKS 432
626 < #define SENDQ 433
627 < #define SEND_PASSWORD 434
628 < #define SERVERHIDE 435
629 < #define SERVERINFO 436
630 < #define SERVLINK_PATH 437
631 < #define IRCD_SID 438
632 < #define TKLINE_EXPIRE_NOTICES 439
633 < #define T_SHARED 440
634 < #define T_CLUSTER 441
635 < #define TYPE 442
636 < #define SHORT_MOTD 443
637 < #define SILENT 444
638 < #define SPOOF 445
639 < #define SPOOF_NOTICE 446
640 < #define STATS_E_DISABLED 447
641 < #define STATS_I_OPER_ONLY 448
642 < #define STATS_K_OPER_ONLY 449
643 < #define STATS_O_OPER_ONLY 450
644 < #define STATS_P_OPER_ONLY 451
645 < #define TBOOL 452
646 < #define TMASKED 453
647 < #define T_REJECT 454
648 < #define TS_MAX_DELTA 455
649 < #define TS_WARN_DELTA 456
650 < #define TWODOTS 457
651 < #define T_ALL 458
652 < #define T_BOTS 459
653 < #define T_SOFTCALLERID 460
654 < #define T_CALLERID 461
655 < #define T_CCONN 462
656 < #define T_CCONN_FULL 463
657 < #define T_CLIENT_FLOOD 464
658 < #define T_DEAF 465
659 < #define T_DEBUG 466
660 < #define T_DRONE 467
661 < #define T_EXTERNAL 468
662 < #define T_FULL 469
663 < #define T_INVISIBLE 470
664 < #define T_IPV4 471
665 < #define T_IPV6 472
666 < #define T_LOCOPS 473
667 < #define T_LOGPATH 474
668 < #define T_L_CRIT 475
669 < #define T_L_DEBUG 476
670 < #define T_L_ERROR 477
671 < #define T_L_INFO 478
672 < #define T_L_NOTICE 479
673 < #define T_L_TRACE 480
674 < #define T_L_WARN 481
675 < #define T_MAX_CLIENTS 482
676 < #define T_NCHANGE 483
677 < #define T_OPERWALL 484
678 < #define T_REJ 485
679 < #define T_SERVER 486
695 < #define T_SERVNOTICE 487
696 < #define T_SKILL 488
697 < #define T_SPY 489
698 < #define T_SSL 490
699 < #define T_UMODES 491
700 < #define T_UNAUTH 492
701 < #define T_UNRESV 493
702 < #define T_UNXLINE 494
703 < #define T_WALLOP 495
704 < #define THROTTLE_TIME 496
705 < #define TOPICBURST 497
706 < #define TRUE_NO_OPER_FLOOD 498
707 < #define TKLINE 499
708 < #define TXLINE 500
709 < #define TRESV 501
710 < #define UNKLINE 502
711 < #define USER 503
712 < #define USE_EGD 504
713 < #define USE_EXCEPT 505
714 < #define USE_INVEX 506
715 < #define USE_KNOCK 507
716 < #define USE_LOGGING 508
717 < #define USE_WHOIS_ACTUALLY 509
718 < #define VHOST 510
719 < #define VHOST6 511
720 < #define XLINE 512
721 < #define WARN 513
722 < #define WARN_NO_NLINE 514
723 <
724 <
725 <
452 > #define ADMIN 259
453 > #define AFTYPE 260
454 > #define ANTI_NICK_FLOOD 261
455 > #define ANTI_SPAM_EXIT_MESSAGE_TIME 262
456 > #define AUTOCONN 263
457 > #define BYTES 264
458 > #define KBYTES 265
459 > #define MBYTES 266
460 > #define CALLER_ID_WAIT 267
461 > #define CAN_FLOOD 268
462 > #define CHANNEL 269
463 > #define CIDR_BITLEN_IPV4 270
464 > #define CIDR_BITLEN_IPV6 271
465 > #define CLASS 272
466 > #define CONNECT 273
467 > #define CONNECTFREQ 274
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
488 > #define GLINE 295
489 > #define GLINE_DURATION 296
490 > #define GLINE_ENABLE 297
491 > #define GLINE_EXEMPT 298
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 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_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_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 <
731 < /* Line 214 of yacc.c  */
732 < #line 132 "ircd_parser.y"
686 > #line 147 "conf_parser.y" /* yacc.c:355  */
687  
688    int number;
689    char *string;
690  
691 <
692 <
739 < /* Line 214 of yacc.c  */
740 < #line 741 "ircd_parser.c"
741 < } YYSTYPE;
691 > #line 692 "conf_parser.c" /* yacc.c:355  */
692 > };
693   # define YYSTYPE_IS_TRIVIAL 1
743 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
694   # define YYSTYPE_IS_DECLARED 1
695   #endif
696  
697  
698 < /* Copy the second part of user declarations.  */
698 > extern YYSTYPE yylval;
699  
700 + int yyparse (void);
701 +
702 + #endif /* !YY_YY_CONF_PARSER_H_INCLUDED  */
703 +
704 + /* Copy the second part of user declarations.  */
705  
706 < /* Line 264 of yacc.c  */
752 < #line 753 "ircd_parser.c"
706 > #line 707 "conf_parser.c" /* yacc.c:358  */
707  
708   #ifdef short
709   # undef short
# Line 763 | Line 717 | typedef unsigned char yytype_uint8;
717  
718   #ifdef YYTYPE_INT8
719   typedef YYTYPE_INT8 yytype_int8;
766 #elif (defined __STDC__ || defined __C99__FUNC__ \
767     || defined __cplusplus || defined _MSC_VER)
768 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 787 | 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__ \
791 <     || 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 802 | Line 752 | typedef short int yytype_int16;
752   # if defined YYENABLE_NLS && YYENABLE_NLS
753   #  if ENABLE_NLS
754   #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
755 < #   define YY_(msgid) dgettext ("bison-runtime", msgid)
755 > #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
756   #  endif
757   # endif
758   # ifndef YY_
759 < #  define YY_(msgid) msgid
759 > #  define YY_(Msgid) Msgid
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))
792 > # define YYUSE(E) ((void) (E))
793   #else
794 < # define YYUSE(e) /* empty */
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)
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 < #if (defined __STDC__ || defined __C99__FUNC__ \
825 <     || defined __cplusplus || defined _MSC_VER)
826 < static int
827 < YYID (int yyi)
828 < #else
829 < static int
830 < YYID (yyi)
831 <    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 852 | Line 831 | YYID (yyi)
831   #    define alloca _alloca
832   #   else
833   #    define YYSTACK_ALLOC alloca
834 < #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
856 <     || defined __cplusplus || defined _MSC_VER)
834 > #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
835   #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
836 < #     ifndef _STDLIB_H
837 < #      define _STDLIB_H 1
836 >      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
837 > #     ifndef EXIT_SUCCESS
838 > #      define EXIT_SUCCESS 0
839   #     endif
840   #    endif
841   #   endif
# Line 864 | 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 879 | Line 858 | YYID (yyi)
858   #  ifndef YYSTACK_ALLOC_MAXIMUM
859   #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
860   #  endif
861 < #  if (defined __cplusplus && ! defined _STDLIB_H \
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 _STDLIB_H
866 < #    define _STDLIB_H 1
865 > #   ifndef EXIT_SUCCESS
866 > #    define EXIT_SUCCESS 0
867   #   endif
868   #  endif
869   #  ifndef YYMALLOC
870   #   define YYMALLOC malloc
871 < #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
893 <     || 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 _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
900 <     || 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 907 | 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 925 | Line 902 | union yyalloc
902       ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
903        + YYSTACK_GAP_MAXIMUM)
904  
905 < /* Copy COUNT objects from FROM to TO.  The source and destination do
929 <   not overlap.  */
930 < # ifndef YYCOPY
931 < #  if defined __GNUC__ && 1 < __GNUC__
932 < #   define YYCOPY(To, From, Count) \
933 <      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
934 < #  else
935 < #   define YYCOPY(To, From, Count)              \
936 <      do                                        \
937 <        {                                       \
938 <          YYSIZE_T yyi;                         \
939 <          for (yyi = 0; yyi < (Count); yyi++)   \
940 <            (To)[yyi] = (From)[yyi];            \
941 <        }                                       \
942 <      while (YYID (0))
943 < #  endif
944 < # endif
905 > # define YYCOPY_NEEDED 1
906  
907   /* Relocate STACK from its old location to the new one.  The
908     local variables YYSIZE and YYSTACKSIZE give the old and new number of
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  
925 + #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
926 + /* Copy COUNT objects from SRC to DST.  The source and destination do
927 +   not overlap.  */
928 + # ifndef YYCOPY
929 + #  if defined __GNUC__ && 1 < __GNUC__
930 + #   define YYCOPY(Dst, Src, Count) \
931 +      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
932 + #  else
933 + #   define YYCOPY(Dst, Src, Count)              \
934 +      do                                        \
935 +        {                                       \
936 +          YYSIZE_T yyi;                         \
937 +          for (yyi = 0; yyi < (Count); yyi++)   \
938 +            (Dst)[yyi] = (Src)[yyi];            \
939 +        }                                       \
940 +      while (0)
941 + #  endif
942 + # endif
943 + #endif /* !YYCOPY_NEEDED */
944 +
945   /* YYFINAL -- State number of the termination state.  */
946   #define YYFINAL  2
947   /* YYLAST -- Last index in YYTABLE.  */
948 < #define YYLAST   1258
948 > #define YYLAST   1260
949  
950   /* YYNTOKENS -- Number of terminals.  */
951 < #define YYNTOKENS  265
951 > #define YYNTOKENS  238
952   /* YYNNTS -- Number of nonterminals.  */
953 < #define YYNNTS  318
953 > #define YYNNTS  296
954   /* YYNRULES -- Number of rules.  */
955 < #define YYNRULES  687
956 < /* YYNRULES -- Number of states.  */
957 < #define YYNSTATES  1354
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   514
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.  */
968 < static const yytype_uint16 yytranslate[] =
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,   264,     2,     2,     2,     2,     2,
976 <       2,     2,     2,     2,     2,     2,     2,     2,     2,   260,
977 <       2,   263,     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,   262,     2,   261,     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 1033 | Line 1016 | static const yytype_uint16 yytranslate[]
1016       195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
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,   232,   233,   234,
1037 <     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
1038 <     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
1039 <     255,   256,   257,   258,   259
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
1044 <   YYRHS.  */
1045 < static const yytype_uint16 yyprhs[] =
1046 < {
1047 <       0,     0,     3,     4,     7,     9,    11,    13,    15,    17,
1048 <      19,    21,    23,    25,    27,    29,    31,    33,    35,    37,
1049 <      39,    41,    43,    45,    47,    50,    53,    54,    56,    59,
1050 <      63,    67,    71,    75,    79,    80,    82,    85,    89,    93,
1051 <      97,   103,   106,   108,   110,   112,   115,   120,   125,   131,
1052 <     134,   136,   138,   140,   142,   144,   146,   148,   150,   152,
1053 <     154,   156,   158,   160,   163,   164,   170,   174,   176,   178,
1054 <     180,   185,   190,   195,   200,   205,   210,   215,   220,   225,
1055 <     230,   235,   241,   244,   246,   248,   250,   252,   255,   260,
1056 <     265,   270,   276,   279,   281,   283,   285,   287,   289,   291,
1057 <     293,   295,   297,   299,   301,   303,   305,   308,   313,   318,
1058 <     323,   328,   333,   338,   343,   348,   353,   358,   363,   368,
1059 <     373,   378,   383,   388,   393,   398,   399,   407,   408,   410,
1060 <     413,   415,   417,   419,   421,   423,   425,   427,   429,   431,
1061 <     434,   439,   441,   446,   451,   456,   461,   466,   467,   473,
1062 <     477,   479,   481,   483,   485,   487,   489,   491,   493,   495,
1063 <     497,   499,   501,   503,   505,   507,   509,   511,   513,   515,
1064 <     517,   518,   524,   528,   530,   531,   535,   536,   539,   541,
1065 <     543,   545,   547,   549,   551,   553,   555,   557,   559,   561,
1066 <     563,   565,   567,   569,   571,   572,   580,   581,   583,   586,
1067 <     588,   590,   592,   594,   596,   598,   600,   602,   604,   606,
1068 <     608,   610,   612,   614,   617,   622,   624,   629,   634,   639,
1069 <     644,   649,   654,   659,   664,   669,   674,   679,   684,   685,
1070 <     692,   693,   699,   703,   705,   707,   709,   711,   714,   716,
1071 <     718,   720,   722,   724,   727,   728,   734,   738,   740,   742,
1072 <     746,   751,   756,   757,   764,   767,   769,   771,   773,   775,
1073 <     777,   779,   781,   783,   785,   788,   793,   798,   803,   808,
1074 <     809,   815,   819,   821,   822,   826,   827,   830,   832,   834,
1075 <     836,   838,   840,   842,   844,   846,   848,   850,   855,   860,
1076 <     865,   866,   873,   876,   878,   880,   882,   884,   887,   892,
1077 <     897,   902,   903,   910,   913,   915,   917,   919,   921,   924,
1078 <     929,   934,   935,   941,   945,   947,   949,   951,   953,   955,
1079 <     957,   959,   961,   963,   965,   967,   969,   970,   977,   980,
1080 <     982,   984,   986,   989,   994,   995,  1001,  1005,  1007,  1009,
1081 <    1011,  1013,  1015,  1017,  1019,  1021,  1023,  1025,  1027,  1029,
1082 <    1030,  1038,  1039,  1041,  1044,  1046,  1048,  1050,  1052,  1054,
1083 <    1056,  1058,  1060,  1062,  1064,  1066,  1068,  1070,  1072,  1074,
1084 <    1077,  1082,  1084,  1089,  1094,  1099,  1104,  1109,  1114,  1119,
1085 <    1120,  1126,  1130,  1132,  1133,  1137,  1138,  1141,  1143,  1145,
1086 <    1147,  1149,  1151,  1156,  1161,  1166,  1171,  1176,  1181,  1182,
1087 <    1189,  1190,  1196,  1200,  1202,  1204,  1207,  1209,  1211,  1213,
1088 <    1215,  1217,  1222,  1227,  1228,  1235,  1238,  1240,  1242,  1244,
1089 <    1246,  1251,  1256,  1262,  1265,  1267,  1269,  1271,  1276,  1277,
1090 <    1284,  1285,  1291,  1295,  1297,  1299,  1302,  1304,  1306,  1308,
1091 <    1310,  1312,  1317,  1322,  1328,  1331,  1333,  1335,  1337,  1339,
1092 <    1341,  1343,  1345,  1347,  1349,  1351,  1353,  1355,  1357,  1359,
1093 <    1361,  1363,  1365,  1367,  1369,  1371,  1373,  1375,  1377,  1379,
1094 <    1381,  1383,  1385,  1387,  1389,  1391,  1393,  1395,  1397,  1399,
1095 <    1401,  1403,  1405,  1407,  1409,  1411,  1413,  1415,  1417,  1419,
1096 <    1421,  1423,  1425,  1427,  1429,  1431,  1433,  1435,  1437,  1439,
1097 <    1441,  1443,  1445,  1450,  1455,  1460,  1465,  1470,  1475,  1480,
1098 <    1485,  1490,  1495,  1500,  1505,  1510,  1515,  1520,  1525,  1530,
1099 <    1535,  1540,  1545,  1550,  1555,  1560,  1565,  1570,  1575,  1580,
1100 <    1585,  1590,  1595,  1600,  1605,  1610,  1615,  1620,  1625,  1630,
1101 <    1635,  1640,  1645,  1650,  1655,  1660,  1665,  1670,  1675,  1680,
1102 <    1685,  1690,  1695,  1700,  1701,  1707,  1711,  1713,  1715,  1717,
1103 <    1719,  1721,  1723,  1725,  1727,  1729,  1731,  1733,  1735,  1737,
1104 <    1739,  1741,  1743,  1745,  1747,  1749,  1751,  1752,  1758,  1762,
1105 <    1764,  1766,  1768,  1770,  1772,  1774,  1776,  1778,  1780,  1782,
1106 <    1784,  1786,  1788,  1790,  1792,  1794,  1796,  1798,  1800,  1802,
1107 <    1807,  1812,  1817,  1822,  1823,  1830,  1833,  1835,  1837,  1839,
1108 <    1841,  1843,  1845,  1847,  1849,  1854,  1859,  1860,  1866,  1870,
1109 <    1872,  1874,  1876,  1881,  1886,  1887,  1893,  1897,  1899,  1901,
1110 <    1903,  1909,  1912,  1914,  1916,  1918,  1920,  1922,  1924,  1926,
1111 <    1928,  1930,  1932,  1934,  1936,  1938,  1940,  1942,  1944,  1946,
1112 <    1948,  1950,  1952,  1957,  1962,  1967,  1972,  1977,  1982,  1987,
1113 <    1992,  1997,  2002,  2007,  2012,  2017,  2022,  2027,  2032,  2037,
1114 <    2042,  2048,  2051,  2053,  2055,  2057,  2059,  2061,  2063,  2065,
1115 <    2067,  2069,  2074,  2079,  2084,  2089,  2094,  2099
1116 < };
1117 <
1118 < /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
1119 < static const yytype_int16 yyrhs[] =
1120 < {
1121 <     266,     0,    -1,    -1,   266,   267,    -1,   295,    -1,   301,
1122 <      -1,   316,    -1,   552,    -1,   339,    -1,   358,    -1,   372,
1123 <      -1,   277,    -1,   573,    -1,   390,    -1,   397,    -1,   407,
1124 <      -1,   416,    -1,   442,    -1,   452,    -1,   458,    -1,   472,
1125 <      -1,   536,    -1,   462,    -1,   272,    -1,     1,   260,    -1,
1126 <       1,   261,    -1,    -1,   269,    -1,   131,   268,    -1,   131,
1127 <     173,   268,    -1,   131,   174,   268,    -1,   131,   175,   268,
1128 <      -1,   131,   176,   268,    -1,   131,   177,   268,    -1,    -1,
1129 <     271,    -1,   131,   270,    -1,   131,    14,   270,    -1,   131,
1130 <      15,   270,    -1,   131,    16,   270,    -1,   119,   262,   273,
1131 <     261,   260,    -1,   273,   274,    -1,   274,    -1,   275,    -1,
1132 <     276,    -1,     1,   260,    -1,   118,   263,   153,   260,    -1,
1133 <     148,   263,   153,   260,    -1,   181,   262,   278,   261,   260,
1134 <      -1,   278,   279,    -1,   279,    -1,   286,    -1,   291,    -1,
1135 <     294,    -1,   288,    -1,   289,    -1,   290,    -1,   293,    -1,
1136 <     285,    -1,   292,    -1,   287,    -1,   284,    -1,   280,    -1,
1137 <       1,   260,    -1,    -1,   168,   281,   263,   282,   260,    -1,
1138 <     282,   264,   283,    -1,   283,    -1,   169,    -1,   170,    -1,
1139 <     167,   263,   153,   260,    -1,   165,   263,   153,   260,    -1,
1140 <     120,   263,   153,   260,    -1,   183,   263,   153,   260,    -1,
1141 <      37,   263,   153,   260,    -1,   123,   263,   153,   260,    -1,
1142 <     122,   263,   153,   260,    -1,   255,   263,   153,   260,    -1,
1143 <     256,   263,   153,   260,    -1,   227,   263,   131,   260,    -1,
1144 <      84,   263,   197,   260,    -1,     5,   262,   296,   261,   260,
1145 <      -1,   296,   297,    -1,   297,    -1,   298,    -1,   300,    -1,
1146 <     299,    -1,     1,   260,    -1,   120,   263,   153,   260,    -1,
1147 <      47,   263,   153,   260,    -1,    37,   263,   153,   260,    -1,
1148 <     102,   262,   302,   261,   260,    -1,   302,   303,    -1,   303,
1149 <      -1,   304,    -1,   305,    -1,   314,    -1,   315,    -1,   306,
1150 <      -1,   308,    -1,   310,    -1,   311,    -1,   313,    -1,   309,
1151 <      -1,   312,    -1,   307,    -1,     1,   260,    -1,   219,   263,
1152 <     153,   260,    -1,   138,   263,   153,   260,    -1,    62,   263,
1153 <     153,   260,    -1,    55,   263,   153,   260,    -1,    60,   263,
1154 <     153,   260,    -1,    61,   263,   153,   260,    -1,    58,   263,
1155 <     153,   260,    -1,    57,   263,   153,   260,    -1,    59,   263,
1156 <     153,   260,    -1,    56,   263,   153,   260,    -1,   103,   263,
1157 <     220,   260,    -1,   103,   263,   222,   260,    -1,   103,   263,
1158 <     226,   260,    -1,   103,   263,   224,   260,    -1,   103,   263,
1159 <     225,   260,    -1,   103,   263,   223,   260,    -1,   103,   263,
1160 <     221,   260,    -1,   253,   263,   197,   260,    -1,    -1,   136,
1161 <     317,   318,   262,   319,   261,   260,    -1,    -1,   322,    -1,
1162 <     319,   320,    -1,   320,    -1,   321,    -1,   323,    -1,   324,
1163 <      -1,   328,    -1,   327,    -1,   325,    -1,   326,    -1,   332,
1164 <      -1,     1,   260,    -1,   120,   263,   153,   260,    -1,   153,
1165 <      -1,   248,   263,   153,   260,    -1,   147,   263,   153,   260,
1166 <      -1,    49,   263,   197,   260,    -1,   166,   263,   153,   260,
1167 <      -1,    26,   263,   153,   260,    -1,    -1,   236,   329,   263,
1168 <     330,   260,    -1,   330,   264,   331,    -1,   331,    -1,   204,
1169 <      -1,   207,    -1,   208,    -1,   210,    -1,   211,    -1,   214,
1170 <      -1,   233,    -1,   228,    -1,   230,    -1,   237,    -1,   234,
1171 <      -1,   213,    -1,   229,    -1,   232,    -1,   215,    -1,   240,
1172 <      -1,   205,    -1,   206,    -1,   218,    -1,    -1,    53,   333,
1173 <     263,   334,   260,    -1,   334,   264,   335,    -1,   335,    -1,
1174 <      -1,   130,   336,   338,    -1,    -1,   337,   338,    -1,    72,
1175 <      -1,   161,    -1,    92,    -1,   247,    -1,   257,    -1,    65,
1176 <      -1,    38,    -1,   159,    -1,     5,    -1,    77,    -1,   125,
1177 <      -1,   229,    -1,   141,    -1,    79,    -1,   162,    -1,    49,
1178 <      -1,    -1,    26,   340,   341,   262,   342,   261,   260,    -1,
1179 <      -1,   345,    -1,   342,   343,    -1,   343,    -1,   344,    -1,
1180 <     355,    -1,   356,    -1,   346,    -1,   347,    -1,   357,    -1,
1181 <     348,    -1,   349,    -1,   350,    -1,   351,    -1,   352,    -1,
1182 <     353,    -1,   354,    -1,     1,   260,    -1,   120,   263,   153,
1183 <     260,    -1,   153,    -1,   150,   263,   269,   260,    -1,   151,
1184 <     263,   269,   260,    -1,   134,   263,   131,   260,    -1,    30,
1185 <     263,   269,   260,    -1,   112,   263,   131,   260,    -1,   107,
1186 <     263,   131,   260,    -1,   109,   263,   131,   260,    -1,   108,
1187 <     263,   131,   260,    -1,   178,   263,   271,   260,    -1,    23,
1188 <     263,   131,   260,    -1,    24,   263,   131,   260,    -1,   133,
1189 <     263,   131,   260,    -1,    -1,   100,   359,   262,   364,   261,
1190 <     260,    -1,    -1,    53,   361,   263,   362,   260,    -1,   362,
1191 <     264,   363,    -1,   363,    -1,   235,    -1,    76,    -1,   231,
1192 <      -1,   364,   365,    -1,   365,    -1,   366,    -1,   360,    -1,
1193 <     370,    -1,   371,    -1,     1,   260,    -1,    -1,   152,   263,
1194 <     368,   367,   260,    -1,   368,   264,   369,    -1,   369,    -1,
1195 <     131,    -1,   131,   202,   131,    -1,    89,   263,   153,   260,
1196 <      -1,    83,   263,   153,   260,    -1,    -1,    73,   373,   262,
1197 <     374,   261,   260,    -1,   374,   375,    -1,   375,    -1,   376,
1198 <      -1,   377,    -1,   378,    -1,   380,    -1,   387,    -1,   388,
1199 <      -1,   389,    -1,   379,    -1,     1,   260,    -1,   248,   263,
1200 <     153,   260,    -1,   147,   263,   153,   260,    -1,    26,   263,
1201 <     153,   260,    -1,    49,   263,   197,   260,    -1,    -1,    53,
1202 <     381,   263,   382,   260,    -1,   382,   264,   383,    -1,   383,
1203 <      -1,    -1,   130,   384,   386,    -1,    -1,   385,   386,    -1,
1204 <     191,    -1,    50,    -1,    93,    -1,    74,    -1,    20,    -1,
1205 <      21,    -1,   129,    -1,    67,    -1,   172,    -1,   121,    -1,
1206 <     190,   263,   153,   260,    -1,   157,   263,   153,   260,    -1,
1207 <     156,   263,   131,   260,    -1,    -1,   171,   391,   262,   392,
1208 <     261,   260,    -1,   392,   393,    -1,   393,    -1,   394,    -1,
1209 <     395,    -1,   396,    -1,     1,   260,    -1,   155,   263,   153,
1210 <     260,    -1,    22,   263,   153,   260,    -1,   124,   263,   153,
1211 <     260,    -1,    -1,   185,   398,   262,   399,   261,   260,    -1,
1212 <     399,   400,    -1,   400,    -1,   401,    -1,   402,    -1,   403,
1213 <      -1,     1,   260,    -1,   120,   263,   153,   260,    -1,   248,
1214 <     263,   153,   260,    -1,    -1,   187,   404,   263,   405,   260,
1215 <      -1,   405,   264,   406,    -1,   406,    -1,    92,    -1,   244,
1216 <      -1,   247,    -1,   257,    -1,   245,    -1,   239,    -1,   171,
1217 <      -1,   246,    -1,   238,    -1,   218,    -1,   203,    -1,    -1,
1218 <     186,   408,   262,   409,   261,   260,    -1,   409,   410,    -1,
1219 <     410,    -1,   411,    -1,   412,    -1,     1,   260,    -1,   120,
1220 <     263,   153,   260,    -1,    -1,   187,   413,   263,   414,   260,
1221 <      -1,   414,   264,   415,    -1,   415,    -1,    92,    -1,   244,
1222 <      -1,   247,    -1,   257,    -1,   245,    -1,   239,    -1,   171,
1223 <      -1,   246,    -1,   238,    -1,   218,    -1,   203,    -1,    -1,
1224 <      29,   417,   418,   262,   419,   261,   260,    -1,    -1,   422,
1225 <      -1,   419,   420,    -1,   420,    -1,   421,    -1,   423,    -1,
1226 <     424,    -1,   425,    -1,   426,    -1,   428,    -1,   427,    -1,
1227 <     429,    -1,   438,    -1,   439,    -1,   440,    -1,   437,    -1,
1228 <     436,    -1,   441,    -1,     1,   260,    -1,   120,   263,   153,
1229 <     260,    -1,   153,    -1,    83,   263,   153,   260,    -1,   255,
1230 <     263,   153,   260,    -1,   179,   263,   153,   260,    -1,     3,
1231 <     263,   153,   260,    -1,   152,   263,   131,   260,    -1,     6,
1232 <     263,   216,   260,    -1,     6,   263,   217,   260,    -1,    -1,
1233 <      53,   430,   263,   431,   260,    -1,   431,   264,   432,    -1,
1234 <     432,    -1,    -1,   130,   433,   435,    -1,    -1,   434,   435,
1235 <      -1,    27,    -1,    31,    -1,    10,    -1,    12,    -1,   242,
1236 <      -1,   166,   263,   153,   260,    -1,    49,   263,   197,   260,
1237 <      -1,    85,   263,   153,   260,    -1,    98,   263,   153,   260,
1238 <      -1,    26,   263,   153,   260,    -1,    25,   263,   153,   260,
1239 <      -1,    -1,    90,   443,   262,   448,   261,   260,    -1,    -1,
1240 <     187,   445,   263,   446,   260,    -1,   446,   264,   447,    -1,
1241 <     447,    -1,   158,    -1,   448,   449,    -1,   449,    -1,   450,
1242 <      -1,   451,    -1,   444,    -1,     1,    -1,   248,   263,   153,
1243 <     260,    -1,   155,   263,   153,   260,    -1,    -1,    36,   453,
1244 <     262,   454,   261,   260,    -1,   454,   455,    -1,   455,    -1,
1245 <     456,    -1,   457,    -1,     1,    -1,    89,   263,   153,   260,
1246 <      -1,   155,   263,   153,   260,    -1,    51,   262,   459,   261,
1247 <     260,    -1,   459,   460,    -1,   460,    -1,   461,    -1,     1,
1248 <      -1,    89,   263,   153,   260,    -1,    -1,    63,   463,   262,
1249 <     468,   261,   260,    -1,    -1,   187,   465,   263,   466,   260,
1250 <      -1,   466,   264,   467,    -1,   467,    -1,   158,    -1,   468,
1251 <     469,    -1,   469,    -1,   470,    -1,   471,    -1,   464,    -1,
1252 <       1,    -1,   120,   263,   153,   260,    -1,   155,   263,   153,
1253 <     260,    -1,    64,   262,   473,   261,   260,    -1,   473,   474,
1254 <      -1,   474,    -1,   483,    -1,   484,    -1,   486,    -1,   487,
1255 <      -1,   488,    -1,   489,    -1,   490,    -1,   491,    -1,   492,
1256 <      -1,   493,    -1,   482,    -1,   495,    -1,   496,    -1,   497,
1257 <      -1,   498,    -1,   514,    -1,   500,    -1,   502,    -1,   504,
1258 <      -1,   503,    -1,   507,    -1,   501,    -1,   508,    -1,   509,
1259 <      -1,   510,    -1,   511,    -1,   513,    -1,   512,    -1,   528,
1260 <      -1,   515,    -1,   519,    -1,   520,    -1,   524,    -1,   505,
1261 <      -1,   506,    -1,   534,    -1,   532,    -1,   533,    -1,   516,
1262 <      -1,   485,    -1,   517,    -1,   518,    -1,   535,    -1,   523,
1263 <      -1,   494,    -1,   521,    -1,   522,    -1,   478,    -1,   481,
1264 <      -1,   476,    -1,   477,    -1,   479,    -1,   480,    -1,   499,
1265 <      -1,   475,    -1,     1,    -1,   114,   263,   131,   260,    -1,
1266 <      70,   263,   131,   260,    -1,    71,   263,   131,   260,    -1,
1267 <      12,   263,   197,   260,    -1,   254,   263,   197,   260,    -1,
1268 <     160,   263,   269,   260,    -1,   184,   263,   197,   260,    -1,
1269 <      91,   263,   269,   260,    -1,    82,   263,   197,   260,    -1,
1270 <      87,   263,   197,   260,    -1,    43,   263,   197,   260,    -1,
1271 <      52,   263,   197,   260,    -1,     8,   263,   197,   260,    -1,
1272 <     111,   263,   269,   260,    -1,   110,   263,   131,   260,    -1,
1273 <     104,   263,   131,   260,    -1,     9,   263,   269,   260,    -1,
1274 <     201,   263,   269,   260,    -1,   200,   263,   269,   260,    -1,
1275 <      75,   263,   131,   260,    -1,    95,   263,   197,   260,    -1,
1276 <      94,   263,   153,   260,    -1,    88,   263,   197,   260,    -1,
1277 <     259,   263,   197,   260,    -1,   192,   263,   197,   260,    -1,
1278 <     195,   263,   197,   260,    -1,   196,   263,   197,   260,    -1,
1279 <     194,   263,   197,   260,    -1,   194,   263,   198,   260,    -1,
1280 <     193,   263,   197,   260,    -1,   193,   263,   198,   260,    -1,
1281 <     145,   263,   269,   260,    -1,    19,   263,   269,   260,    -1,
1282 <     137,   263,   197,   260,    -1,   146,   263,   269,   260,    -1,
1283 <     188,   263,   197,   260,    -1,   128,   263,   197,   260,    -1,
1284 <     243,   263,   197,   260,    -1,   140,   263,   197,   260,    -1,
1285 <     115,   263,   153,   260,    -1,    86,   263,   269,   260,    -1,
1286 <      44,   263,   131,   260,    -1,   113,   263,   131,   260,    -1,
1287 <     182,   263,   153,   260,    -1,    32,   263,   153,   260,    -1,
1288 <      28,   263,   131,   260,    -1,   249,   263,   197,   260,    -1,
1289 <      46,   263,   153,   260,    -1,   149,   263,   197,   260,    -1,
1290 <      39,   263,   197,   260,    -1,   241,   263,   269,   260,    -1,
1291 <      -1,   142,   525,   263,   526,   260,    -1,   526,   264,   527,
1292 <      -1,   527,    -1,   204,    -1,   207,    -1,   208,    -1,   210,
1293 <      -1,   211,    -1,   214,    -1,   233,    -1,   228,    -1,   230,
1294 <      -1,   237,    -1,   234,    -1,   213,    -1,   229,    -1,   232,
1295 <      -1,   215,    -1,   240,    -1,   205,    -1,   206,    -1,   218,
1296 <      -1,    -1,   139,   529,   263,   530,   260,    -1,   530,   264,
1297 <     531,    -1,   531,    -1,   204,    -1,   207,    -1,   208,    -1,
1298 <     210,    -1,   211,    -1,   214,    -1,   233,    -1,   228,    -1,
1299 <     230,    -1,   237,    -1,   234,    -1,   213,    -1,   229,    -1,
1300 <     232,    -1,   215,    -1,   240,    -1,   205,    -1,   206,    -1,
1301 <     218,    -1,   116,   263,   131,   260,    -1,   117,   263,   131,
1302 <     260,    -1,    33,   263,   131,   260,    -1,   209,   263,   271,
1303 <     260,    -1,    -1,    66,   537,   262,   538,   261,   260,    -1,
1304 <     538,   539,    -1,   539,    -1,   540,    -1,   541,    -1,   542,
1305 <      -1,   546,    -1,   547,    -1,   548,    -1,     1,    -1,    48,
1306 <     263,   197,   260,    -1,    45,   263,   269,   260,    -1,    -1,
1307 <     102,   543,   263,   544,   260,    -1,   544,   264,   545,    -1,
1308 <     545,    -1,   199,    -1,    11,    -1,   248,   263,   153,   260,
1309 <      -1,   120,   263,   153,   260,    -1,    -1,     4,   549,   263,
1310 <     550,   260,    -1,   550,   264,   551,    -1,   551,    -1,   199,
1311 <      -1,    11,    -1,    22,   262,   553,   261,   260,    -1,   553,
1312 <     554,    -1,   554,    -1,   557,    -1,   558,    -1,   559,    -1,
1313 <     560,    -1,   565,    -1,   561,    -1,   562,    -1,   563,    -1,
1314 <     564,    -1,   566,    -1,   567,    -1,   568,    -1,   556,    -1,
1315 <     569,    -1,   570,    -1,   571,    -1,   572,    -1,   555,    -1,
1316 <       1,    -1,    40,   263,   197,   260,    -1,   163,   263,   197,
1317 <     260,    -1,    42,   263,   197,   260,    -1,   250,   263,   197,
1318 <     260,    -1,   251,   263,   197,   260,    -1,   252,   263,   197,
1319 <     260,    -1,    96,   263,   269,   260,    -1,    97,   263,   269,
1320 <     260,    -1,   106,   263,   131,   260,    -1,   154,   263,   197,
1321 <     260,    -1,   105,   263,   131,   260,    -1,    35,   263,   131,
1322 <     260,    -1,    34,   263,   131,   260,    -1,   126,   263,   197,
1323 <     260,    -1,   127,   263,   197,   260,    -1,    13,   263,   197,
1324 <     260,    -1,   143,   263,   131,   260,    -1,   144,   263,   269,
1325 <     260,    -1,   180,   262,   574,   261,   260,    -1,   574,   575,
1326 <      -1,   575,    -1,   576,    -1,   577,    -1,   579,    -1,   581,
1327 <      -1,   580,    -1,   578,    -1,   582,    -1,     1,    -1,    54,
1328 <     263,   197,   260,    -1,    81,   263,   197,   260,    -1,    78,
1329 <     263,   153,   260,    -1,    99,   263,   269,   260,    -1,    76,
1330 <     263,   197,   260,    -1,    41,   263,   197,   260,    -1,    80,
1331 <     263,   197,   260,    -1
1332 < };
1333 <
1334 < /* 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,   395,   395,   396,   399,   400,   401,   402,   403,   404,
1027 <     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
1028 <     415,   416,   417,   418,   419,   420,   424,   424,   425,   429,
1029 <     433,   437,   441,   445,   451,   451,   452,   453,   454,   455,
1030 <     462,   465,   465,   466,   466,   466,   468,   476,   485,   487,
1031 <     487,   488,   488,   489,   489,   490,   490,   491,   492,   492,
1032 <     493,   493,   494,   495,   499,   498,   517,   517,   518,   524,
1033 <     532,   566,   626,   641,   656,   665,   679,   688,   716,   746,
1034 <     769,   778,   780,   780,   781,   781,   782,   782,   784,   793,
1035 <     802,   815,   817,   818,   820,   820,   821,   822,   822,   823,
1036 <     823,   824,   824,   825,   825,   826,   827,   829,   833,   837,
1037 <     844,   851,   858,   865,   872,   879,   886,   893,   897,   901,
1038 <     905,   909,   913,   917,   923,   933,   932,  1026,  1026,  1027,
1039 <    1027,  1028,  1028,  1028,  1029,  1029,  1029,  1030,  1030,  1030,
1040 <    1032,  1044,  1056,  1090,  1102,  1113,  1155,  1165,  1164,  1170,
1041 <    1170,  1171,  1175,  1179,  1183,  1187,  1191,  1195,  1199,  1203,
1042 <    1207,  1211,  1215,  1219,  1223,  1227,  1231,  1235,  1239,  1243,
1043 <    1250,  1249,  1253,  1253,  1254,  1254,  1255,  1255,  1257,  1264,
1044 <    1271,  1278,  1285,  1292,  1299,  1306,  1313,  1320,  1327,  1334,
1045 <    1341,  1348,  1355,  1362,  1376,  1375,  1425,  1425,  1427,  1427,
1046 <    1428,  1429,  1429,  1430,  1431,  1432,  1433,  1434,  1435,  1436,
1047 <    1437,  1438,  1439,  1440,  1442,  1451,  1460,  1466,  1472,  1478,
1048 <    1484,  1490,  1496,  1502,  1508,  1514,  1520,  1526,  1536,  1535,
1049 <    1552,  1551,  1556,  1556,  1557,  1561,  1565,  1573,  1573,  1574,
1050 <    1574,  1574,  1574,  1574,  1576,  1576,  1578,  1578,  1580,  1594,
1051 <    1614,  1623,  1636,  1635,  1704,  1704,  1705,  1705,  1705,  1705,
1052 <    1706,  1706,  1706,  1707,  1707,  1709,  1746,  1759,  1768,  1780,
1053 <    1779,  1783,  1783,  1784,  1784,  1785,  1785,  1787,  1794,  1801,
1054 <    1808,  1815,  1822,  1829,  1836,  1843,  1850,  1860,  1879,  1889,
1055 <    1903,  1902,  1918,  1918,  1919,  1919,  1919,  1919,  1921,  1930,
1056 <    1945,  1959,  1958,  1974,  1974,  1975,  1975,  1975,  1975,  1977,
1057 <    1986,  2009,  2008,  2014,  2014,  2015,  2019,  2023,  2027,  2031,
1058 <    2035,  2039,  2043,  2047,  2051,  2055,  2065,  2064,  2081,  2081,
1059 <    2082,  2082,  2082,  2084,  2091,  2090,  2096,  2096,  2097,  2101,
1060 <    2105,  2109,  2113,  2117,  2121,  2125,  2129,  2133,  2137,  2147,
1061 <    2146,  2292,  2292,  2293,  2293,  2294,  2294,  2294,  2295,  2295,
1062 <    2296,  2296,  2297,  2297,  2297,  2298,  2298,  2299,  2299,  2300,
1063 <    2302,  2314,  2326,  2335,  2361,  2379,  2397,  2403,  2407,  2416,
1064 <    2415,  2419,  2419,  2420,  2420,  2421,  2421,  2423,  2434,  2441,
1065 <    2448,  2455,  2465,  2506,  2517,  2530,  2543,  2552,  2588,  2587,
1066 <    2651,  2650,  2654,  2654,  2655,  2661,  2661,  2662,  2662,  2662,
1067 <    2662,  2664,  2683,  2693,  2692,  2715,  2715,  2716,  2716,  2716,
1068 <    2718,  2724,  2733,  2735,  2735,  2736,  2736,  2738,  2757,  2756,
1069 <    2804,  2803,  2807,  2807,  2808,  2814,  2814,  2815,  2815,  2815,
1070 <    2815,  2817,  2823,  2832,  2835,  2835,  2836,  2836,  2837,  2837,
1071 <    2838,  2838,  2839,  2839,  2840,  2840,  2841,  2841,  2842,  2842,
1072 <    2843,  2843,  2844,  2844,  2845,  2845,  2846,  2846,  2847,  2847,
1073 <    2848,  2848,  2849,  2849,  2850,  2850,  2851,  2851,  2852,  2852,
1074 <    2853,  2853,  2854,  2854,  2855,  2855,  2856,  2857,  2857,  2858,
1075 <    2858,  2859,  2860,  2860,  2861,  2861,  2862,  2862,  2863,  2863,
1076 <    2864,  2865,  2868,  2873,  2878,  2883,  2888,  2893,  2898,  2903,
1077 <    2908,  2913,  2918,  2923,  2928,  2933,  2938,  2943,  2948,  2953,
1078 <    2958,  2964,  2975,  2980,  2989,  2994,  2999,  3004,  3009,  3014,
1079 <    3017,  3022,  3025,  3030,  3035,  3040,  3045,  3050,  3055,  3060,
1080 <    3065,  3070,  3081,  3086,  3091,  3096,  3105,  3137,  3155,  3160,
1081 <    3169,  3174,  3179,  3185,  3184,  3189,  3189,  3190,  3193,  3196,
1082 <    3199,  3202,  3205,  3208,  3211,  3214,  3217,  3220,  3223,  3226,
1083 <    3229,  3232,  3235,  3238,  3241,  3244,  3250,  3249,  3254,  3254,
1084 <    3255,  3258,  3261,  3264,  3267,  3270,  3273,  3276,  3279,  3282,
1085 <    3285,  3288,  3291,  3294,  3297,  3300,  3303,  3306,  3309,  3314,
1086 <    3319,  3324,  3329,  3339,  3338,  3362,  3362,  3363,  3364,  3365,
1087 <    3366,  3367,  3368,  3369,  3371,  3377,  3384,  3383,  3388,  3388,
1088 <    3389,  3393,  3399,  3433,  3443,  3442,  3492,  3492,  3493,  3497,
1089 <    3506,  3509,  3509,  3510,  3510,  3511,  3511,  3512,  3512,  3513,
1090 <    3513,  3514,  3514,  3515,  3516,  3516,  3517,  3517,  3518,  3518,
1091 <    3519,  3519,  3521,  3526,  3531,  3536,  3541,  3546,  3551,  3556,
1092 <    3561,  3566,  3571,  3576,  3581,  3586,  3591,  3596,  3601,  3606,
1404 <    3614,  3617,  3617,  3618,  3618,  3619,  3620,  3621,  3621,  3622,
1405 <    3623,  3625,  3631,  3637,  3646,  3660,  3666,  3672
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,  3101,  3107
1093   };
1094   #endif
1095  
1096 < #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
1096 > #if YYDEBUG || YYERROR_VERBOSE || 0
1097   /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1098     First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
1099   static const char *const yytname[] =
1100   {
1101 <  "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ACTION", "ADMIN",
1102 <  "AFTYPE", "T_ALLOW", "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME",
1103 <  "AUTOCONN", "T_BLOCK", "BURST_AWAY", "BURST_TOPICWHO", "BYTES", "KBYTES",
1104 <  "MBYTES", "GBYTES", "TBYTES", "CALLER_ID_WAIT", "CAN_FLOOD", "CAN_IDLE",
1105 <  "CHANNEL", "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CIPHER_PREFERENCE",
1419 <  "CLASS", "COMPRESSED", "COMPRESSION_LEVEL", "CONNECT", "CONNECTFREQ",
1420 <  "CRYPTLINK", "DEFAULT_CIPHER_PREFERENCE", "DEFAULT_FLOODCOUNT",
1101 >  "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ADMIN", "AFTYPE",
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", "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_HIDDEN", "DISABLE_LOCAL_CHANNELS", "DISABLE_REMOTE_COMMANDS",
1424 <  "DOTS_IN_IDENT", "DURATION", "EGDPOOL_PATH", "EMAIL", "ENABLE",
1108 >  "DISABLE_REMOTE_COMMANDS", "DOTS_IN_IDENT", "EGDPOOL_PATH", "EMAIL",
1109    "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT", "FAILED_OPER_NOTICE",
1110 <  "IRCD_FLAGS", "FLATTEN_LINKS", "FFAILED_OPERLOG", "FKILLLOG",
1111 <  "FKLINELOG", "FGLINELOG", "FIOERRLOG", "FOPERLOG", "FOPERSPYLOG",
1112 <  "FUSERLOG", "GECOS", "GENERAL", "GLINE", "GLINES", "GLINE_EXEMPT",
1113 <  "GLINE_LOG", "GLINE_TIME", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
1114 <  "GLOBAL_KILL", "IRCD_AUTH", "NEED_IDENT", "HAVENT_READ_CONF", "HIDDEN",
1115 <  "HIDDEN_ADMIN", "HIDDEN_NAME", "HIDDEN_OPER", "HIDE_SERVER_IPS",
1116 <  "HIDE_SERVERS", "HIDE_SPOOF_IPS", "HOST", "HUB", "HUB_MASK", "IDLETIME",
1117 <  "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT", "IP", "KILL",
1118 <  "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT", "KLINE_REASON",
1119 <  "KLINE_WITH_REASON", "KNOCK_DELAY", "KNOCK_DELAY_CHANNEL", "LEAF_MASK",
1120 <  "LINKS_DELAY", "LISTEN", "T_LOG", "LOGGING", "LOG_LEVEL", "MAX_ACCEPT",
1121 <  "MAX_BANS", "MAX_CHANS_PER_USER", "MAX_GLOBAL", "MAX_IDENT", "MAX_LOCAL",
1122 <  "MAX_NICK_CHANGES", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1123 <  "MAX_WATCH", "MESSAGE_LOCALE", "MIN_NONWILDCARD",
1124 <  "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "NAME", "NEED_PASSWORD",
1125 <  "NETWORK_DESC", "NETWORK_NAME", "NICK", "NICK_CHANGES",
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 >  "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 <  "NOT", "NUMBER", "NUMBER_PER_IDENT", "NUMBER_PER_CIDR", "NUMBER_PER_IP",
1128 <  "NUMBER_PER_IP_GLOBAL", "OPERATOR", "OPERS_BYPASS_CALLERID", "OPER_LOG",
1129 <  "OPER_ONLY_UMODES", "OPER_PASS_RESV", "OPER_SPY_T", "OPER_UMODES",
1130 <  "JOIN_FLOOD_COUNT", "JOIN_FLOOD_TIME", "PACE_WAIT", "PACE_WAIT_SIMPLE",
1131 <  "PASSWORD", "PATH", "PING_COOKIE", "PING_TIME", "PING_WARNING", "PORT",
1132 <  "QSTRING", "QUIET_ON_BAN", "REASON", "REDIRPORT", "REDIRSERV", "REGEX_T",
1133 <  "REHASH", "TREJECT_HOLD_TIME", "REMOTE", "REMOTEBAN",
1134 <  "RESTRICT_CHANNELS", "RESTRICTED", "RSA_PRIVATE_KEY_FILE",
1135 <  "RSA_PUBLIC_KEY_FILE", "SSL_CERTIFICATE_FILE", "T_SSL_CONNECTION_METHOD",
1136 <  "T_SSLV3", "T_TLSV1", "RESV", "RESV_EXEMPT", "SECONDS", "MINUTES",
1137 <  "HOURS", "DAYS", "WEEKS", "SENDQ", "SEND_PASSWORD", "SERVERHIDE",
1138 <  "SERVERINFO", "SERVLINK_PATH", "IRCD_SID", "TKLINE_EXPIRE_NOTICES",
1139 <  "T_SHARED", "T_CLUSTER", "TYPE", "SHORT_MOTD", "SILENT", "SPOOF",
1140 <  "SPOOF_NOTICE", "STATS_E_DISABLED", "STATS_I_OPER_ONLY",
1141 <  "STATS_K_OPER_ONLY", "STATS_O_OPER_ONLY", "STATS_P_OPER_ONLY", "TBOOL",
1142 <  "TMASKED", "T_REJECT", "TS_MAX_DELTA", "TS_WARN_DELTA", "TWODOTS",
1143 <  "T_ALL", "T_BOTS", "T_SOFTCALLERID", "T_CALLERID", "T_CCONN",
1144 <  "T_CCONN_FULL", "T_CLIENT_FLOOD", "T_DEAF", "T_DEBUG", "T_DRONE",
1145 <  "T_EXTERNAL", "T_FULL", "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS",
1146 <  "T_LOGPATH", "T_L_CRIT", "T_L_DEBUG", "T_L_ERROR", "T_L_INFO",
1147 <  "T_L_NOTICE", "T_L_TRACE", "T_L_WARN", "T_MAX_CLIENTS", "T_NCHANGE",
1148 <  "T_OPERWALL", "T_REJ", "T_SERVER", "T_SERVNOTICE", "T_SKILL", "T_SPY",
1149 <  "T_SSL", "T_UMODES", "T_UNAUTH", "T_UNRESV", "T_UNXLINE", "T_WALLOP",
1150 <  "THROTTLE_TIME", "TOPICBURST", "TRUE_NO_OPER_FLOOD", "TKLINE", "TXLINE",
1151 <  "TRESV", "UNKLINE", "USER", "USE_EGD", "USE_EXCEPT", "USE_INVEX",
1152 <  "USE_KNOCK", "USE_LOGGING", "USE_WHOIS_ACTUALLY", "VHOST", "VHOST6",
1153 <  "XLINE", "WARN", "WARN_NO_NLINE", "';'", "'}'", "'{'", "'='", "','",
1154 <  "$accept", "conf", "conf_item", "timespec_", "timespec", "sizespec_",
1155 <  "sizespec", "modules_entry", "modules_items", "modules_item",
1156 <  "modules_module", "modules_path", "serverinfo_entry", "serverinfo_items",
1157 <  "serverinfo_item", "serverinfo_ssl_connection_method", "$@1",
1158 <  "method_types", "method_type_item", "serverinfo_ssl_certificate_file",
1159 <  "serverinfo_rsa_private_key_file", "serverinfo_name", "serverinfo_sid",
1160 <  "serverinfo_description", "serverinfo_network_name",
1161 <  "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
1162 <  "serverinfo_max_clients", "serverinfo_hub", "admin_entry", "admin_items",
1163 <  "admin_item", "admin_name", "admin_email", "admin_description",
1164 <  "logging_entry", "logging_items", "logging_item", "logging_path",
1165 <  "logging_oper_log", "logging_fuserlog", "logging_ffailed_operlog",
1166 <  "logging_foperlog", "logging_foperspylog", "logging_fglinelog",
1167 <  "logging_fklinelog", "logging_ioerrlog", "logging_killlog",
1168 <  "logging_log_level", "logging_use_logging", "oper_entry", "$@2",
1169 <  "oper_name_b", "oper_items", "oper_item", "oper_name", "oper_name_t",
1170 <  "oper_user", "oper_password", "oper_encrypted",
1171 <  "oper_rsa_public_key_file", "oper_class", "oper_umodes", "$@3",
1172 <  "oper_umodes_items", "oper_umodes_item", "oper_flags", "$@4",
1173 <  "oper_flags_items", "oper_flags_item", "$@5", "$@6",
1174 <  "oper_flags_item_atom", "class_entry", "$@7", "class_name_b",
1175 <  "class_items", "class_item", "class_name", "class_name_t",
1176 <  "class_ping_time", "class_ping_warning", "class_number_per_ip",
1177 <  "class_connectfreq", "class_max_number", "class_max_global",
1178 <  "class_max_local", "class_max_ident", "class_sendq",
1179 <  "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1180 <  "class_number_per_cidr", "listen_entry", "$@8", "listen_flags", "$@9",
1181 <  "listen_flags_items", "listen_flags_item", "listen_items", "listen_item",
1182 <  "listen_port", "$@10", "port_items", "port_item", "listen_address",
1183 <  "listen_host", "auth_entry", "$@11", "auth_items", "auth_item",
1184 <  "auth_user", "auth_passwd", "auth_class", "auth_encrypted", "auth_flags",
1185 <  "$@12", "auth_flags_items", "auth_flags_item", "$@13", "$@14",
1186 <  "auth_flags_item_atom", "auth_spoof", "auth_redir_serv",
1187 <  "auth_redir_port", "resv_entry", "$@15", "resv_items", "resv_item",
1188 <  "resv_creason", "resv_channel", "resv_nick", "shared_entry", "$@16",
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", "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", "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_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",
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", "$@17", "shared_types", "shared_type_item",
1195 <  "cluster_entry", "$@18", "cluster_items", "cluster_item", "cluster_name",
1196 <  "cluster_type", "$@19", "cluster_types", "cluster_type_item",
1197 <  "connect_entry", "$@20", "connect_name_b", "connect_items",
1198 <  "connect_item", "connect_name", "connect_name_t", "connect_host",
1199 <  "connect_vhost", "connect_send_password", "connect_accept_password",
1200 <  "connect_port", "connect_aftype", "connect_flags", "$@21",
1201 <  "connect_flags_items", "connect_flags_item", "$@22", "$@23",
1202 <  "connect_flags_item_atom", "connect_rsa_public_key_file",
1203 <  "connect_encrypted", "connect_hub_mask", "connect_leaf_mask",
1204 <  "connect_class", "connect_cipher_preference", "kill_entry", "$@24",
1517 <  "kill_type", "$@25", "kill_type_items", "kill_type_item", "kill_items",
1518 <  "kill_item", "kill_user", "kill_reason", "deny_entry", "$@26",
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_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", "$@27",
1521 <  "gecos_flags", "$@28", "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_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_burst_away", "general_use_whois_actually",
1213 <  "general_reject_hold_time", "general_tkline_expire_notices",
1527 <  "general_kill_chase_time_limit", "general_hide_spoof_ips",
1528 <  "general_ignore_bogus_ts", "general_disable_remote_commands",
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_kline_with_reason",
1219 <  "general_kline_reason", "general_invisible_on_connect",
1535 <  "general_warn_no_nline", "general_stats_e_disabled",
1218 >  "general_havent_read_conf", "general_invisible_on_connect",
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_idletime", "general_dots_in_ident",
1227 <  "general_max_targets", "general_servlink_path",
1228 <  "general_default_cipher_preference", "general_compression_level",
1229 <  "general_use_egd", "general_egdpool_path", "general_ping_cookie",
1230 <  "general_disable_auth", "general_throttle_time", "general_oper_umodes",
1231 <  "$@29", "umode_oitems", "umode_oitem", "general_oper_only_umodes",
1548 <  "$@30", "umode_items", "umode_item", "general_min_nonwildcard",
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_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",
1550  "general_client_flood", "gline_entry", "$@31", "gline_items",
1551  "gline_item", "gline_enable", "gline_duration", "gline_logging", "$@32",
1552  "gline_logging_types", "gline_logging_type_item", "gline_user",
1553  "gline_server", "gline_action", "$@33", "gdeny_types", "gdeny_type_item",
1233    "channel_entry", "channel_items", "channel_item",
1234 <  "channel_disable_fake_channels", "channel_restrict_channels",
1235 <  "channel_disable_local_channels", "channel_use_except",
1236 <  "channel_use_invex", "channel_use_knock", "channel_knock_delay",
1237 <  "channel_knock_delay_channel", "channel_max_chans_per_user",
1559 <  "channel_quiet_on_ban", "channel_max_bans",
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_burst_topicwho", "channel_jflood_count", "channel_jflood_time",
1241 <  "serverhide_entry", "serverhide_items", "serverhide_item",
1242 <  "serverhide_flatten_links", "serverhide_hide_servers",
1243 <  "serverhide_hidden_name", "serverhide_links_delay", "serverhide_hidden",
1244 <  "serverhide_disable_hidden", "serverhide_hide_server_ips", 0
1240 >  "channel_jflood_count", "channel_jflood_time", "serverhide_entry",
1241 >  "serverhide_items", "serverhide_item", "serverhide_flatten_links",
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_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 1595 | Line 1274 | static const yytype_uint16 yytoknum[] =
1274       455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
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,   487,   488,   489,   490,   491,   492,   493,   494,
1599 <     495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
1600 <     505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
1601 <      59,   125,   123,    61,    44
1277 >     485,   486,    59,   125,   123,    61,    44,    58
1278   };
1279   # endif
1280  
1281 < /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1606 < static const yytype_uint16 yyr1[] =
1607 < {
1608 <       0,   265,   266,   266,   267,   267,   267,   267,   267,   267,
1609 <     267,   267,   267,   267,   267,   267,   267,   267,   267,   267,
1610 <     267,   267,   267,   267,   267,   267,   268,   268,   269,   269,
1611 <     269,   269,   269,   269,   270,   270,   271,   271,   271,   271,
1612 <     272,   273,   273,   274,   274,   274,   275,   276,   277,   278,
1613 <     278,   279,   279,   279,   279,   279,   279,   279,   279,   279,
1614 <     279,   279,   279,   279,   281,   280,   282,   282,   283,   283,
1615 <     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
1616 <     294,   295,   296,   296,   297,   297,   297,   297,   298,   299,
1617 <     300,   301,   302,   302,   303,   303,   303,   303,   303,   303,
1618 <     303,   303,   303,   303,   303,   303,   303,   304,   305,   306,
1619 <     307,   308,   309,   310,   311,   312,   313,   314,   314,   314,
1620 <     314,   314,   314,   314,   315,   317,   316,   318,   318,   319,
1621 <     319,   320,   320,   320,   320,   320,   320,   320,   320,   320,
1622 <     321,   322,   323,   324,   325,   326,   327,   329,   328,   330,
1623 <     330,   331,   331,   331,   331,   331,   331,   331,   331,   331,
1624 <     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
1625 <     333,   332,   334,   334,   336,   335,   337,   335,   338,   338,
1626 <     338,   338,   338,   338,   338,   338,   338,   338,   338,   338,
1627 <     338,   338,   338,   338,   340,   339,   341,   341,   342,   342,
1628 <     343,   343,   343,   343,   343,   343,   343,   343,   343,   343,
1629 <     343,   343,   343,   343,   344,   345,   346,   347,   348,   349,
1630 <     350,   351,   352,   353,   354,   355,   356,   357,   359,   358,
1631 <     361,   360,   362,   362,   363,   363,   363,   364,   364,   365,
1632 <     365,   365,   365,   365,   367,   366,   368,   368,   369,   369,
1633 <     370,   371,   373,   372,   374,   374,   375,   375,   375,   375,
1634 <     375,   375,   375,   375,   375,   376,   377,   378,   379,   381,
1635 <     380,   382,   382,   384,   383,   385,   383,   386,   386,   386,
1636 <     386,   386,   386,   386,   386,   386,   386,   387,   388,   389,
1637 <     391,   390,   392,   392,   393,   393,   393,   393,   394,   395,
1638 <     396,   398,   397,   399,   399,   400,   400,   400,   400,   401,
1639 <     402,   404,   403,   405,   405,   406,   406,   406,   406,   406,
1640 <     406,   406,   406,   406,   406,   406,   408,   407,   409,   409,
1641 <     410,   410,   410,   411,   413,   412,   414,   414,   415,   415,
1642 <     415,   415,   415,   415,   415,   415,   415,   415,   415,   417,
1643 <     416,   418,   418,   419,   419,   420,   420,   420,   420,   420,
1644 <     420,   420,   420,   420,   420,   420,   420,   420,   420,   420,
1645 <     421,   422,   423,   424,   425,   426,   427,   428,   428,   430,
1646 <     429,   431,   431,   433,   432,   434,   432,   435,   435,   435,
1647 <     435,   435,   436,   437,   438,   439,   440,   441,   443,   442,
1648 <     445,   444,   446,   446,   447,   448,   448,   449,   449,   449,
1649 <     449,   450,   451,   453,   452,   454,   454,   455,   455,   455,
1650 <     456,   457,   458,   459,   459,   460,   460,   461,   463,   462,
1651 <     465,   464,   466,   466,   467,   468,   468,   469,   469,   469,
1652 <     469,   470,   471,   472,   473,   473,   474,   474,   474,   474,
1653 <     474,   474,   474,   474,   474,   474,   474,   474,   474,   474,
1654 <     474,   474,   474,   474,   474,   474,   474,   474,   474,   474,
1655 <     474,   474,   474,   474,   474,   474,   474,   474,   474,   474,
1656 <     474,   474,   474,   474,   474,   474,   474,   474,   474,   474,
1657 <     474,   474,   474,   474,   474,   474,   474,   474,   474,   474,
1658 <     474,   474,   475,   476,   477,   478,   479,   480,   481,   482,
1659 <     483,   484,   485,   486,   487,   488,   489,   490,   491,   492,
1660 <     493,   494,   495,   496,   497,   498,   499,   500,   501,   502,
1661 <     502,   503,   503,   504,   505,   506,   507,   508,   509,   510,
1662 <     511,   512,   513,   514,   515,   516,   517,   518,   519,   520,
1663 <     521,   522,   523,   525,   524,   526,   526,   527,   527,   527,
1664 <     527,   527,   527,   527,   527,   527,   527,   527,   527,   527,
1665 <     527,   527,   527,   527,   527,   527,   529,   528,   530,   530,
1666 <     531,   531,   531,   531,   531,   531,   531,   531,   531,   531,
1667 <     531,   531,   531,   531,   531,   531,   531,   531,   531,   532,
1668 <     533,   534,   535,   537,   536,   538,   538,   539,   539,   539,
1669 <     539,   539,   539,   539,   540,   541,   543,   542,   544,   544,
1670 <     545,   545,   546,   547,   549,   548,   550,   550,   551,   551,
1671 <     552,   553,   553,   554,   554,   554,   554,   554,   554,   554,
1672 <     554,   554,   554,   554,   554,   554,   554,   554,   554,   554,
1673 <     554,   554,   555,   556,   557,   558,   559,   560,   561,   562,
1674 <     563,   564,   565,   566,   567,   568,   569,   570,   571,   572,
1675 <     573,   574,   574,   575,   575,   575,   575,   575,   575,   575,
1676 <     575,   576,   577,   578,   579,   580,   581,   582
1677 < };
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,     2,     0,     5,     3,     1,     1,     1,
1302 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1303 <       4,     5,     2,     1,     1,     1,     1,     2,     4,     4,
1304 <       4,     5,     2,     1,     1,     1,     1,     1,     1,     1,
1305 <       1,     1,     1,     1,     1,     1,     2,     4,     4,     4,
1306 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1307 <       4,     4,     4,     4,     4,     0,     7,     0,     1,     2,
1308 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
1309 <       4,     1,     4,     4,     4,     4,     4,     0,     5,     3,
1310 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1311 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1312 <       0,     5,     3,     1,     0,     3,     0,     2,     1,     1,
1313 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1314 <       1,     1,     1,     1,     0,     7,     0,     1,     2,     1,
1315 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1316 <       1,     1,     1,     2,     4,     1,     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,     0,     3,     0,     2,     1,     1,     1,
1323 <       1,     1,     1,     1,     1,     1,     1,     4,     4,     4,
1324 <       0,     6,     2,     1,     1,     1,     1,     2,     4,     4,
1325 <       4,     0,     6,     2,     1,     1,     1,     1,     2,     4,
1326 <       4,     0,     5,     3,     1,     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,     1,     0,
1330 <       7,     0,     1,     2,     1,     1,     1,     1,     1,     1,
1331 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
1332 <       4,     1,     4,     4,     4,     4,     4,     4,     4,     0,
1333 <       5,     3,     1,     0,     3,     0,     2,     1,     1,     1,
1334 <       1,     1,     4,     4,     4,     4,     4,     4,     0,     6,
1335 <       0,     5,     3,     1,     1,     2,     1,     1,     1,     1,
1336 <       1,     4,     4,     0,     6,     2,     1,     1,     1,     1,
1337 <       4,     4,     5,     2,     1,     1,     1,     4,     0,     6,
1338 <       0,     5,     3,     1,     1,     2,     1,     1,     1,     1,
1339 <       1,     4,     4,     5,     2,     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,     1,     1,     1,     1,     1,     1,     1,
1344 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1345 <       1,     1,     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,     4,
1348 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1349 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1350 <       4,     4,     4,     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,     0,     5,     3,     1,
1353 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1354 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     4,
1355 <       4,     4,     4,     0,     6,     2,     1,     1,     1,     1,
1356 <       1,     1,     1,     1,     4,     4,     0,     5,     3,     1,
1357 <       1,     1,     4,     4,     0,     5,     3,     1,     1,     1,
1358 <       5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1359 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1360 <       1,     1,     4,     4,     4,     4,     4,     4,     4,     4,
1361 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1362 <       5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1363 <       1,     4,     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 rule to reduce with in state
1430 <   STATE-NUM 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,   194,   349,   413,     0,
1435 <     428,     0,   603,   252,   398,   228,     0,     0,   125,   290,
1436 <       0,     0,   301,   326,     3,    23,    11,     4,     5,     6,
1437 <       8,     9,    10,    13,    14,    15,    16,    17,    18,    19,
1438 <      22,    20,    21,     7,    12,    24,    25,     0,     0,   196,
1763 <     351,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1764 <       0,   127,     0,     0,     0,     0,     0,     0,     0,     0,
1765 <       0,     0,    83,    84,    86,    85,   651,     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,
1767       0,     0,     0,     0,     0,     0,   632,   650,   645,   633,
1768     634,   635,   636,   638,   639,   640,   641,   637,   642,   643,
1769     644,   646,   647,   648,   649,   215,     0,   197,   371,     0,
1770     352,     0,   426,     0,     0,   424,   425,     0,   501,     0,
1440         0,     0,     0,     0,     0,     0,     0,     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,     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,
1774       0,   576,     0,   553,     0,     0,     0,     0,     0,     0,
1447         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1448 <       0,     0,     0,     0,     0,   445,   500,   495,   496,   493,
1777 <     497,   498,   494,   456,   446,   447,   485,   448,   449,   450,
1778 <     451,   452,   453,   454,   455,   490,   457,   458,   459,   460,
1779 <     499,   462,   467,   463,   465,   464,   479,   480,   466,   468,
1780 <     469,   470,   471,   473,   472,   461,   475,   484,   486,   487,
1781 <     476,   477,   491,   492,   489,   478,   474,   482,   483,   481,
1782 <     488,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1783 <       0,     0,     0,     0,     0,     0,     0,     0,     0,    93,
1784 <      94,    95,    98,   105,    99,   103,   100,   101,   104,   102,
1785 <      96,    97,     0,     0,     0,     0,    42,    43,    44,   141,
1786 <       0,   128,     0,   680,     0,     0,     0,     0,     0,     0,
1787 <       0,     0,   672,   673,   674,   678,   675,   677,   676,   679,
1788 <       0,     0,     0,     0,     0,     0,     0,     0,    64,     0,
1789 <       0,     0,     0,     0,    50,    62,    61,    58,    51,    60,
1790 <      54,    55,    56,    52,    59,    57,    53,     0,     0,    87,
1791 <       0,     0,     0,     0,    82,     0,     0,     0,     0,     0,
1448 >       0,     0,     0,     0,     0,     0,     0,   589,     0,   563,
1449         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1793       0,     0,     0,     0,   631,     0,     0,   419,     0,     0,
1794       0,   416,   417,   418,     0,     0,   423,   440,     0,     0,
1795     430,   439,     0,   436,   437,   438,     0,     0,     0,     0,
1450         0,     0,     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,
1801       0,     0,   444,   613,   624,     0,     0,   616,     0,     0,
1802       0,   606,   607,   608,   609,   610,   611,   612,     0,     0,
1803       0,   269,     0,     0,     0,     0,     0,     0,   255,   256,
1804     257,   258,   263,   259,   260,   261,   262,   410,     0,   400,
1805       0,   409,     0,   406,   407,   408,     0,   230,     0,     0,
1806       0,   240,     0,   238,   239,   241,   242,   106,     0,     0,
1479         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1480 <       0,    92,    45,     0,     0,     0,    41,     0,     0,     0,
1481 <       0,     0,     0,   293,   294,   295,   296,     0,     0,     0,
1482 <       0,     0,     0,     0,     0,   671,    63,     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 <      49,     0,     0,   311,     0,     0,   304,   305,   306,   307,
1492 <       0,     0,   334,     0,   329,   330,   331,     0,     0,     0,
1493 <      81,     0,     0,     0,     0,     0,    26,     0,     0,     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 <     630,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1499 <       0,     0,     0,     0,     0,     0,   199,   200,   203,   204,
1500 <     206,   207,   208,   209,   210,   211,   212,   201,   202,   205,
1819 <       0,     0,     0,     0,     0,     0,   379,     0,     0,     0,
1820 <       0,     0,     0,     0,     0,     0,   354,   355,   356,   357,
1821 <     358,   359,   361,   360,   362,   367,   366,   363,   364,   365,
1822 <     368,     0,     0,     0,   415,     0,   422,     0,     0,     0,
1823 <       0,   435,     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,
1828       0,     0,     0,    34,     0,     0,     0,     0,     0,     0,
1829     443,     0,     0,     0,     0,     0,     0,     0,   605,   264,
1830       0,     0,     0,     0,     0,     0,     0,     0,     0,   254,
1831       0,     0,     0,     0,   405,   243,     0,     0,     0,     0,
1832       0,   237,     0,     0,     0,     0,     0,     0,     0,     0,
1505         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1506 <      91,     0,     0,    40,     0,     0,     0,   170,     0,     0,
1507 <       0,   147,     0,     0,   130,   131,   132,   133,   136,   137,
1508 <     135,   134,   138,   297,     0,     0,     0,     0,   292,     0,
1509 <       0,     0,     0,     0,     0,     0,   670,     0,     0,     0,
1510 <       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
1511 <     308,     0,     0,     0,     0,   303,   332,     0,     0,     0,
1840 <     328,    90,    89,    88,   667,   664,   663,   652,   654,    26,
1841 <      26,    26,    26,    26,    28,    27,   658,   659,   662,   660,
1842 <     665,   666,   668,   669,   661,   653,   655,   656,   657,   213,
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,   198,   369,     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,   353,     0,     0,   414,   427,     0,     0,     0,   429,
1847 <     514,   518,   505,   534,   547,   546,   601,   551,   512,   543,
1848 <     549,   513,   503,   504,   521,   510,   542,   511,   524,   509,
1849 <     523,   522,   517,   516,   515,   544,   502,   541,   599,   600,
1850 <     538,   535,   580,   596,   597,   581,   582,   583,   584,   591,
1851 <     585,   594,   598,   587,   592,   588,   593,   586,   590,   589,
1852 <     595,     0,   579,   540,   557,   573,   574,   558,   559,   560,
1853 <     561,   568,   562,   571,   575,   564,   569,   565,   570,   563,
1854 <     567,   566,   572,     0,   556,   533,   536,   550,   507,   545,
1855 <     508,   537,   526,   531,   532,   529,   530,   527,   528,   520,
1856 <     519,    34,    34,    34,    36,    35,   602,   552,   539,   548,
1857 <     506,   525,     0,     0,     0,     0,     0,     0,   604,     0,
1858 <       0,   275,     0,     0,     0,     0,     0,   253,     0,     0,
1859 <       0,   399,     0,     0,     0,   248,   244,   247,   229,   110,
1860 <     116,   114,   113,   115,   111,   112,   109,   117,   123,   118,
1861 <     122,   120,   121,   119,   108,   107,   124,    46,    47,   139,
1862 <       0,     0,     0,     0,     0,     0,     0,     0,     0,   129,
1863 <       0,     0,     0,   291,   686,   681,   685,   683,   687,   682,
1864 <     684,    74,    80,    72,    76,    75,    71,    70,    68,    69,
1865 <       0,    67,    73,    79,    77,    78,     0,     0,     0,   302,
1866 <       0,     0,   327,    29,    30,    31,    32,    33,     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,   195,     0,     0,     0,     0,     0,     0,   385,     0,
1523 <       0,     0,     0,     0,     0,     0,     0,   350,   420,   421,
1524 <     441,   442,   434,     0,   433,   577,     0,   554,     0,    37,
1525 <      38,    39,   629,   628,     0,   627,   615,   614,   621,   620,
1526 <       0,   619,   623,   622,   267,   268,   273,     0,   272,     0,
1527 <     266,   289,   288,   287,   265,   412,   404,     0,   403,   411,
1528 <     235,   236,   234,     0,   233,   251,   250,     0,     0,     0,
1529 <       0,     0,   176,     0,     0,     0,     0,     0,   126,   299,
1530 <     300,   298,    65,     0,   309,   315,   321,   325,   324,   323,
1531 <     320,   316,   319,   322,   317,   318,     0,   314,   310,   333,
1532 <     338,   344,   348,   347,   346,   343,   339,   342,   345,   340,
1533 <     341,     0,   337,   225,   226,   219,   221,   223,   222,   220,
1534 <     214,   227,   218,   216,   217,   224,   375,   377,   378,   397,
1535 <     396,   393,   383,     0,   382,     0,   372,   394,   395,   370,
1536 <     376,   392,   374,   373,   431,     0,   578,   555,   625,     0,
1537 <     617,     0,     0,   270,   275,   281,   282,   278,   284,   280,
1538 <     279,   286,   283,   285,   277,   276,   401,     0,   231,     0,
1539 <     249,   246,   245,   146,   144,   174,     0,   173,     0,   140,
1540 <     143,   145,   151,   167,   168,   152,   153,   154,   155,   162,
1541 <     156,   165,   169,   158,   163,   159,   164,   157,   161,   160,
1542 <     166,     0,   150,   142,    66,   312,     0,   335,     0,     0,
1543 <     380,   385,   389,   390,   387,   388,   391,   386,   432,   626,
1544 <     618,   274,   271,   402,   232,     0,   171,   176,   186,   184,
1545 <     193,   183,   178,   187,   191,   180,   188,   190,   185,   179,
1546 <     192,   189,   181,   182,   177,   148,     0,   313,   336,   384,
1547 <     381,   175,   172,   149
1548 < };
1549 <
1550 < /* YYDEFGOTO[NTERM-NUM].  */
1551 < static const yytype_int16 yydefgoto[] =
1552 < {
1553 <      -1,     1,    24,   834,   835,   984,   985,    25,   275,   276,
1554 <     277,   278,    26,   313,   314,   315,   534,  1070,  1071,   316,
1555 <     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
1556 <      27,    71,    72,    73,    74,    75,    28,   258,   259,   260,
1557 <     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
1558 <     271,    29,    61,   280,   773,   774,   775,   281,   776,   777,
1559 <     778,   779,   780,   781,  1046,  1301,  1302,   782,  1042,  1276,
1560 <    1277,  1325,  1278,  1344,    30,    49,   116,   595,   596,   597,
1561 <     117,   598,   599,   600,   601,   602,   603,   604,   605,   606,
1562 <     607,   608,   609,    31,    58,   481,   736,  1163,  1164,   482,
1563 <     483,   484,  1169,  1016,  1017,   485,   486,    32,    56,   457,
1564 <     458,   459,   460,   461,   462,   463,   722,  1147,  1148,  1252,
1565 <    1149,  1265,   464,   465,   466,    33,    62,   512,   513,   514,
1912 <     515,   516,    34,    65,   545,   546,   547,   548,   549,   812,
1913 <    1196,  1197,    35,    66,   553,   554,   555,   556,   818,  1211,
1914 <    1212,    36,    50,   119,   625,   626,   627,   120,   628,   629,
1915 <     630,   631,   632,   633,   634,   871,  1233,  1234,  1309,  1235,
1916 <    1317,   635,   636,   637,   638,   639,   640,    37,    57,   471,
1917 <     731,  1157,  1158,   472,   473,   474,   475,    38,    51,   360,
1918 <     361,   362,   363,    39,   124,   125,   126,    40,    53,   371,
1919 <     649,  1123,  1124,   372,   373,   374,   375,    41,   184,   185,
1920 <     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
1921 <     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
1922 <     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
1923 <     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
1924 <     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
1925 <     410,   963,   964,   236,   408,   941,   942,   237,   238,   239,
1926 <     240,    42,    55,   440,   441,   442,   443,   444,   714,  1140,
1927 <    1141,   445,   446,   447,   711,  1134,  1135,    43,    95,    96,
1928 <      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
1929 <     107,   108,   109,   110,   111,   112,   113,   114,    44,   291,
1930 <     292,   293,   294,   295,   296,   297,   298,   299
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.  */
1935 < #define YYPACT_NINF -949
1936 < static const yytype_int16 yypact[] =
1568 >  /* YYPGOTO[NTERM-NUM].  */
1569 > static const yytype_int16 yypgoto[] =
1570   {
1571 <    -949,   670,  -949,  -256,  -248,  -245,  -949,  -949,  -949,  -212,
1572 <    -949,  -205,  -949,  -949,  -949,  -949,  -189,  -183,  -949,  -949,
1573 <    -154,  -152,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1574 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1575 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,    22,   642,  -127,
1576 <     -31,  -132,     5,  -125,   415,  -119,   -98,   -89,   -86,   578,
1577 <      14,    -8,   -75,   664,   313,   -74,   -61,   -45,   -46,   -37,
1578 <     -23,    31,  -949,  -949,  -949,  -949,  -949,   -22,    15,    30,
1579 <      33,    41,    42,    47,    48,    50,    61,    62,    70,    78,
1580 <      79,    80,    86,    90,    93,    94,  -949,  -949,  -949,  -949,
1581 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1582 <    -949,  -949,  -949,  -949,  -949,  -949,   -44,  -949,  -949,    89,
1583 <    -949,    20,  -949,    99,     2,  -949,  -949,   140,  -949,   100,
1584 <     104,   106,   111,   113,   115,   122,   123,   126,   127,   128,
1585 <     129,   131,   133,   135,   136,   137,   145,   147,   148,   151,
1586 <     155,   156,   157,   159,   163,   165,   167,   169,   174,   175,
1587 <     177,  -949,   178,  -949,   186,   187,   188,   193,   194,   197,
1588 <     199,   200,   205,   206,   209,   210,   211,   212,   213,   214,
1589 <     219,   220,   225,   228,    10,  -949,  -949,  -949,  -949,  -949,
1590 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1591 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1592 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1593 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1594 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1595 <    -949,   364,   308,    92,   318,    17,   229,   230,   231,   232,
1596 <     236,   237,   241,   242,   244,   245,   248,   250,   226,  -949,
1597 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1598 <    -949,  -949,    63,   251,   252,    60,  -949,  -949,  -949,  -949,
1599 <     182,  -949,    24,  -949,   253,   254,   255,   260,   270,   271,
1600 <     272,   192,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1968 <      72,   273,   274,   275,   276,   279,   281,   282,  -949,   285,
1969 <     286,   287,   288,   132,  -949,  -949,  -949,  -949,  -949,  -949,
1970 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,   183,   102,  -949,
1971 <     222,   293,   336,   299,  -949,   198,   431,   432,   368,   369,
1972 <     436,   436,   440,   441,   376,   379,   446,   436,   381,   390,
1973 <     391,   392,   393,   332,  -949,   726,   521,  -949,   330,   331,
1974 <      76,  -949,  -949,  -949,   442,   338,  -949,  -949,   333,   337,
1975 <    -949,  -949,    57,  -949,  -949,  -949,   404,   436,   408,   436,
1976 <     482,   461,   486,   423,   424,   491,   470,   429,   496,   497,
1977 <     498,   434,   436,   445,   447,   436,   493,   450,   517,   518,
1978 <     436,   522,   523,   499,   526,   528,   463,   464,   400,   469,
1979 <     405,   436,   436,   475,   436,   514,   488,   489,   492,  -131,
1980 <    -110,   494,   501,   436,   436,   548,   436,   504,   505,   506,
1981 <     510,   428,  -949,  -949,  -949,   420,   427,  -949,   430,   448,
1982 <     112,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   435,   454,
1983 <     457,  -949,   459,   462,   465,   466,   467,   118,  -949,  -949,
1984 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   468,  -949,
1985 <     472,  -949,    74,  -949,  -949,  -949,   449,  -949,   474,   483,
1986 <     490,  -949,    29,  -949,  -949,  -949,  -949,  -949,   555,   557,
1987 <     560,   571,   573,   579,   599,   601,   360,   602,   604,   561,
1988 <     502,  -949,  -949,   608,   611,   507,  -949,   305,   511,   503,
1989 <     512,   515,   152,  -949,  -949,  -949,  -949,   568,   577,   580,
1990 <     626,   583,   584,   436,   524,  -949,  -949,   634,   586,   637,
1991 <     638,   639,   640,   641,   532,   646,   672,   648,   651,   547,
1992 <    -949,   551,   549,  -949,   550,    69,  -949,  -949,  -949,  -949,
1993 <     558,   556,  -949,    75,  -949,  -949,  -949,   562,   563,   564,
1994 <    -949,   565,   566,   569,   572,   576,   207,   582,   587,   588,
1995 <     589,   592,   593,   594,   597,   598,   603,   607,   609,   610,
1996 <    -949,   615,   574,   581,   605,   616,   617,   618,   619,   620,
1997 <     622,   623,   624,   625,   628,   116,  -949,  -949,  -949,  -949,
1998 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1999 <     629,   632,   645,   649,   650,   652,  -949,   653,   654,   655,
2000 <     656,   660,   665,   667,   668,   160,  -949,  -949,  -949,  -949,
2001 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2002 <    -949,   675,   686,   678,  -949,   681,  -949,   687,   690,   682,
2003 <     688,  -949,   689,   691,   693,   694,   695,   696,   700,   704,
2004 <     705,   707,   708,   715,   718,   722,   723,   725,   727,   728,
2005 <     730,   731,   732,   733,   737,   741,   742,   744,   745,   747,
2006 <     748,   749,   750,   751,   692,   752,   729,   753,   754,   755,
2007 <     756,   757,   758,   759,   760,   761,   762,   763,   764,   765,
2008 <     767,   768,   769,    49,   770,   771,   772,   773,   774,   775,
2009 <    -949,   683,   436,   712,   776,   709,   711,   777,  -949,  -949,
2010 <     797,   714,   778,   799,   783,   833,   836,   873,   780,  -949,
2011 <     883,   779,   885,   784,  -949,  -949,   782,   890,   893,   796,
2012 <     787,  -949,   788,   789,   790,   791,   792,   793,   794,   795,
2013 <     798,   800,   801,   802,   803,   804,   805,   806,   807,   808,
2014 <    -949,   809,   810,  -949,   811,   812,   813,  -949,   814,   815,
2015 <     816,  -949,   817,   181,  -949,  -949,  -949,  -949,  -949,  -949,
2016 <    -949,  -949,  -949,  -949,   903,   904,   906,   821,  -949,   822,
2017 <     823,   824,   825,   826,   827,   828,  -949,   829,   830,   831,
2018 <     832,   834,   835,   837,   -80,   838,   839,   840,   841,  -949,
2019 <    -949,   919,   842,   920,   843,  -949,  -949,   921,   844,   846,
2020 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   436,
2021 <     436,   436,   436,   436,  -949,  -949,  -949,  -949,  -949,  -949,
2022 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2023 <     962,   965,   436,   971,   973,   977,   978,   957,   980,   981,
2024 <     436,   436,   548,   853,  -949,  -949,   961,  -117,   963,   964,
2025 <     918,   855,   966,   967,   968,   969,   992,   972,   974,   975,
2026 <     864,  -949,   866,   869,  -949,  -949,   870,   871,   662,  -949,
2027 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2028 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2029 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2030 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2031 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2032 <    -949,  -244,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2033 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2034 <    -949,  -949,  -949,  -236,  -949,  -949,  -949,  -949,  -949,  -949,
2035 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2036 <    -949,   548,   548,   548,  -949,  -949,  -949,  -949,  -949,  -949,
2037 <    -949,  -949,    -3,   872,   874,    -2,   875,   876,  -949,   877,
2038 <     878,  1003,   879,   880,   881,   882,   884,  -949,   886,   703,
2039 <     887,  -949,   -63,   888,   889,   676,   891,  -949,  -949,  -949,
2040 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2041 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2042 <     990,   948,   894,   997,   998,   999,   895,  1000,   896,  -949,
2043 <     899,   900,   901,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2044 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2045 <    -224,  -949,  -949,  -949,  -949,  -949,   902,   570,   905,  -949,
2046 <     907,   627,  -949,  -949,  -949,  -949,  -949,  -949,   908,   909,
2047 <     910,   911,   912,   913,   914,   915,   916,   917,   922,   923,
2048 <     924,  -949,   925,   926,   927,   928,   929,   930,  1024,   931,
2049 <     932,   933,   934,   935,   936,   937,   938,  -949,  -949,  -949,
2050 <    -949,  -949,  -949,  -219,  -949,  -949,   692,  -949,   729,  -949,
2051 <    -949,  -949,  -949,  -949,  -216,  -949,  -949,  -949,  -949,  -949,
2052 <    -213,  -949,  -949,  -949,  -949,  -949,  -949,  -158,  -949,   630,
2053 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -149,  -949,  -949,
2054 <    -949,  -949,  -949,  -129,  -949,  -949,  -949,  1032,   796,   939,
2055 <     940,   941,  1034,   942,   943,   944,   766,   945,  -949,  -949,
2056 <    -949,  -949,  -949,   -80,  -949,  -949,  -949,  -949,  -949,  -949,
2057 <    -949,  -949,  -949,  -949,  -949,  -949,  -106,  -949,  -949,  -949,
2058 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2059 <    -949,   -25,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2060 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2061 <    -949,  -949,  -949,    38,  -949,     0,  -949,  -949,  -949,  -949,
2062 <    -949,  -949,  -949,  -949,  -949,   662,  -949,  -949,  -949,    -3,
2063 <    -949,    -2,   630,  -949,  1003,  -949,  -949,  -949,  -949,  -949,
2064 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,   703,  -949,   -63,
2065 <    -949,  -949,  -949,  -949,  -949,  -949,    56,  -949,   553,  -949,
2066 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2067 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2068 <    -949,    88,  -949,  -949,  -949,  -949,   570,  -949,   627,     0,
2069 <    -949,  1024,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2070 <    -949,  -949,  -949,  -949,  -949,   553,  -949,  1034,  -949,  -949,
2071 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2072 <    -949,  -949,  -949,  -949,  -949,  -949,   766,  -949,  -949,  -949,
2073 <    -949,  -949,  -949,  -949
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 <    -949,  -949,  -949,  -427,  -340,  -948,  -423,  -949,  -949,   946,
1607 <    -949,  -949,  -949,  -949,   865,  -949,  -949,  -949,  -293,  -949,
1608 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1609 <    -949,  -949,  1095,  -949,  -949,  -949,  -949,  -949,   643,  -949,
1610 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1611 <    -949,  -949,  -949,  -949,  -949,   406,  -949,  -949,  -949,  -949,
1612 <    -949,  -949,  -949,  -949,  -949,  -949,  -166,  -949,  -949,  -949,
1613 <    -146,  -949,  -949,  -118,  -949,  -949,  -949,  -949,   613,  -949,
1614 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1615 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   -60,  -949,
1616 <     724,  -949,  -949,  -949,    43,  -949,  -949,  -949,  -949,  -949,
1617 <     781,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   -42,  -949,
1618 <    -949,   -39,  -949,  -949,  -949,  -949,  -949,  -949,   698,  -949,
1619 <    -949,  -949,  -949,  -949,  -949,   669,  -949,  -949,  -949,  -949,
1620 <    -949,   -91,  -949,  -949,  -949,   663,  -949,  -949,  -949,  -949,
1621 <     -90,  -949,  -949,  -949,  -949,   595,  -949,  -949,  -949,  -949,
1622 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,   -94,  -949,  -949,
1623 <     -87,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1624 <    -949,  -949,   -48,  -949,   785,  -949,  -949,  -949,  -949,  -949,
1625 <     863,  -949,  -949,  -949,  -949,  1100,  -949,  -949,  -949,  -949,
1626 <    -949,  -949,   -20,  -949,   854,  -949,  -949,  -949,  -949,  1043,
1627 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1628 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1629 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1630 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1631 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1632 <    -949,  -949,   101,  -949,  -949,  -949,   105,  -949,  -949,  -949,
1633 <    -949,  -949,  -949,  -949,   818,  -949,  -949,  -949,  -949,  -949,
1634 <     -21,  -949,  -949,  -949,  -949,  -949,   -17,  -949,  -949,  1133,
1635 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2109 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2110 <     949,  -949,  -949,  -949,  -949,  -949,  -949,  -949
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 zero, do what YYDEFACT says.
1641 <   If YYTABLE_NINF, syntax error.  */
2117 < #define YYTABLE_NINF -1
2118 < static const yytype_uint16 yytable[] =
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 <     567,   568,   704,   122,    45,    46,   122,   574,  1132,  1138,
1644 <    1312,   128,  1313,  1160,    47,   272,  1125,    48,   129,   130,
1645 <    1126,   357,   131,    67,  1127,   508,   115,  1314,  1128,   132,
1646 <     476,  1315,    67,  1129,  1130,  1131,  1182,   653,   133,   655,
1647 <    1183,  1244,   134,   135,  1248,  1245,   509,  1250,  1249,   136,
1648 <      52,  1251,   668,   137,   138,   671,   139,    54,   367,    68,
1649 <     676,   272,   140,   981,   982,   983,   695,   696,    68,    69,
1650 <     541,   687,   688,    59,   690,   467,   550,   357,    69,    60,
1651 <     141,   142,   477,   701,   702,   143,   705,   697,   698,  1068,
1652 <    1069,   123,   144,   467,   123,    76,   145,   146,   147,  1103,
1653 <    1104,   148,  1253,   550,   149,   150,  1254,    77,    63,   358,
1654 <      64,  1266,   478,   433,   151,  1267,   434,   581,   479,   448,
1655 <     152,   153,   118,   154,   155,   156,   157,   158,    78,    79,
1656 <     121,  1268,   273,   300,    80,  1269,    81,   127,   159,   582,
1657 <     583,   367,    70,   241,   449,   279,   584,   160,   510,   161,
1658 <     162,    70,   163,   508,  1305,   164,   165,   435,  1306,   166,
1659 <     436,   610,   274,   611,   242,   358,   612,   450,  1161,   301,
1660 <     167,   451,  1162,   243,   509,   359,   244,   368,   273,   511,
1661 <     703,   480,   764,   795,   541,   613,   614,   282,   327,   542,
1662 <      82,    83,   168,   283,   169,   551,  1133,  1139,   170,    84,
1663 <      85,   328,   171,   172,   173,   174,   175,   765,   274,   615,
1664 <     176,   177,   369,   616,   437,   329,   302,   330,   355,   178,
1665 <      86,    87,   551,   585,   586,   587,   331,   245,   588,   468,
1666 <     766,   359,   438,   284,   767,  1307,   589,    88,    89,  1308,
1667 <     332,   335,  1316,   617,   370,   618,   285,   468,    90,   590,
1668 <     591,   179,   303,   180,   304,   305,   543,    91,   619,   181,
1669 <     368,   469,   552,   365,   182,   452,   592,   593,   286,   183,
1670 <     287,   431,   288,   289,   453,   454,   510,   487,   336,   469,
1671 <     620,   246,   247,   248,   249,   250,   251,   252,   253,   552,
1672 <     740,   290,   333,   337,   594,   369,   338,   306,  1310,   307,
1673 <     308,   768,  1311,   542,   339,   340,   764,   511,   455,   448,
1674 <     341,   342,   621,   343,   300,   309,  1326,   544,   650,   476,
1675 <    1327,   505,   470,   502,   344,   345,   622,   370,   769,   254,
1676 <     814,   765,   526,   346,   449,   733,   819,   643,   566,   623,
1677 <     470,   347,   348,   349,    92,    93,    94,   770,  1345,   350,
1678 <     301,   356,  1346,   351,   766,   353,   352,   450,   767,   310,
1679 <     439,   451,   364,   376,   255,   433,   456,   377,   434,   378,
1680 <     543,   477,   993,   717,   379,   557,   380,   863,   381,   728,
1681 <     829,   830,   831,   832,   833,   382,   383,   311,   312,   384,
1682 <     385,   386,   387,   539,   388,   561,   389,   302,   390,   391,
1683 <     392,   478,  1083,  1084,  1085,  1086,  1087,   479,   393,   435,
1684 <     394,   395,   436,   787,   396,   624,   128,   771,   397,   398,
1685 <     399,   880,   400,   129,   130,   768,   401,   131,   402,   772,
1686 <     403,   544,   404,   303,   132,   304,   305,   405,   406,  1100,
1687 <     407,   409,  1048,   133,   507,   256,   558,   134,   135,   411,
1688 <     412,   413,   769,   524,   136,   452,   414,   415,   137,   138,
1689 <     416,   139,   417,   418,   453,   454,   437,   140,   419,   420,
1690 <     480,   770,   421,   422,   423,   424,   425,   426,   306,   257,
1691 <     307,   308,   427,   428,   438,   141,   142,   500,   429,   559,
1692 <     143,   430,   488,   489,   490,   491,   309,   144,   455,   492,
1693 <     493,   145,   146,   147,   494,   495,   148,   496,   497,   149,
1694 <     150,   498,  1090,   499,   503,   504,   517,   518,   519,   151,
1695 <    1098,  1099,   610,   520,   611,   152,   153,   612,   154,   155,
1696 <     156,   157,   158,   521,   522,   523,   527,   528,   529,   530,
1697 <     310,   771,   531,   159,   532,   533,   613,   614,   535,   536,
1698 <     537,   538,   160,   772,   161,   162,   456,   163,  1328,   560,
1699 <     164,   165,   562,   563,   166,   564,   565,   566,   311,   312,
1700 <     615,   569,   570,   571,   616,   167,   572,   573,   575,   245,
1701 <     750,   751,   752,   753,   754,   755,   756,   576,   577,   578,
1702 <     579,  1329,   580,   641,   642,   645,   647,   168,   646,   169,
1703 <     648,   652,  1330,   170,   617,   654,   618,   171,   172,   173,
1704 <     174,   175,   439,   656,   657,   176,   177,   658,  1331,   619,
1705 <     659,   660,   661,   662,   178,  1332,   663,   664,   665,   666,
1706 <    1333,   667,  1334,   246,   247,   248,   249,   250,   251,   252,
1707 <     253,   620,   669,    76,   670,  1335,   672,   673,   674,   675,
1708 <    1255,  1256,   679,   677,   678,    77,   179,   680,   180,   681,
1709 <     682,   683,  1185,   684,   181,   283,   685,   691,   686,   182,
1710 <       2,     3,   689,   621,   183,     4,    78,    79,  1336,   703,
1711 <    1257,   254,    80,   712,    81,   692,   693,   622,   710,   694,
1712 <     713,   699,     5,   715,  1337,   719,     6,  1258,   700,     7,
1713 <     623,   706,   707,   708,  1259,   284,     8,   709,   742,   735,
1714 <     743,   716,  1338,   744,  1339,  1340,   255,   720,   285,  1200,
1715 <     721,     9,   723,  1260,   745,   724,   746,   581,   725,   726,
1716 <     727,   730,   747,    10,    11,   732,    12,   737,    82,    83,
1717 <     286,  1186,   287,    13,   288,   289,   738,    84,    85,   582,
1718 <     583,  1261,   748,   739,   749,   757,   584,   758,   759,  1262,
1719 <      14,   761,   760,   290,   762,   789,   784,   763,    86,    87,
1720 <      15,   783,    16,  1187,   790,   785,   624,   791,   786,   792,
1721 <     793,   794,  1341,   798,   796,    88,    89,   797,  1188,    17,
1722 <     799,   800,   801,   802,   803,   804,    90,   256,  1201,   805,
1723 <    1342,   807,  1263,   806,   808,    91,    18,   809,  1189,  1190,
1724 <    1343,   810,   811,   813,  1191,  1192,  1193,  1194,   816,   817,
1725 <    1122,  1264,   821,   822,   823,   824,   825,  1195,   882,   826,
1726 <    1202,   257,   827,   585,   586,   587,   828,   850,   588,   883,
1727 <     886,    19,   836,   887,   851,  1203,   589,   837,   838,   839,
1728 <      20,    21,   840,   841,   842,    22,    23,   843,   844,   590,
1729 <     591,  1156,   996,   845,   997,  1204,  1205,   846,   852,   847,
1730 <     848,  1206,  1207,  1208,  1209,   849,   592,   593,  1167,   853,
1731 <     854,   855,   856,   857,  1210,   858,   859,   860,   861,   865,
1732 <    1304,   862,    92,    93,    94,   866,   922,   923,   924,   925,
1733 <     926,   501,   927,   928,   594,   929,   930,   931,   867,   994,
1734 <     932,  1000,   868,   869,  1003,   870,   872,   873,   874,   875,
1735 <     933,   934,   935,   876,   936,   937,   938,  1015,   877,   939,
1736 <     878,   879,   940,   944,   945,   946,   947,   948,   884,   949,
1737 <     950,   885,   951,   952,   953,   888,   992,   954,   889,   890,
1738 <     999,   891,  1002,   892,   893,   894,   895,   955,   956,   957,
1739 <     896,   958,   959,   960,   897,   898,   961,   899,   900,   962,
1740 <    1282,  1283,  1284,  1285,  1286,   901,  1287,  1288,   902,  1289,
1741 <    1290,  1291,   903,   904,  1292,   905,  1004,   906,   907,  1005,
1742 <     908,   909,   910,   911,  1293,  1294,  1295,   912,  1296,  1297,
1743 <    1298,   913,   914,  1299,   915,   916,  1300,   917,   918,   919,
1744 <     920,   921,   943,   965,   966,   967,   968,   969,   970,   971,
1745 <     972,   973,   974,   975,   976,   977,  1006,   978,   979,   980,
1746 <     986,   987,   988,   989,   990,   991,  1008,   998,  1010,   995,
1747 <    1007,  1001,  1009,  1013,  1011,  1012,  1014,  1018,  1019,  1020,
1748 <    1021,  1022,  1023,  1024,  1025,  1026,  1050,  1051,  1027,  1052,
1749 <    1028,  1029,  1030,  1031,  1032,  1033,  1034,  1035,  1036,  1037,
1750 <    1038,  1039,  1076,  1078,  1080,  1040,  1041,  1043,  1044,  1045,
1751 <    1047,  1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,  1061,
1752 <    1062,  1063,  1064,  1088,  1065,  1066,  1089,  1067,  1072,  1073,
1753 <    1074,  1075,  1091,  1079,  1092,  1077,  1082,  1081,  1093,  1094,
1754 <    1095,  1096,  1097,  1101,  1102,  1107,  1105,  1106,  1108,  1109,
1755 <    1110,  1111,  1112,  1113,  1117,  1114,  1118,  1115,  1116,  1119,
1756 <    1120,  1121,  1136,  1146,  1137,  1142,  1143,  1144,  1145,  1150,
1757 <    1151,  1152,  1153,  1170,  1154,  1171,  1155,  1159,  1165,  1166,
1758 <    1173,  1174,  1175,  1177,  1232,  1168,  1178,  1172,  1176,  1179,
1759 <    1180,  1181,  1184,  1270,  1275,  1198,   334,  1199,  1213,  1214,
1760 <    1215,  1216,  1217,  1218,  1219,  1220,  1221,  1222,   540,  1049,
1761 <    1353,  1352,  1223,  1224,  1225,  1226,  1227,  1228,  1229,  1230,
1762 <    1231,  1236,  1237,  1238,  1239,  1240,  1241,  1242,  1243,  1272,
1763 <    1273,  1274,  1279,  1280,  1281,  1303,   741,  1351,   864,  1324,
1764 <     788,  1271,  1322,  1321,   815,  1347,   820,  1350,  1348,  1323,
1765 <     881,   506,  1349,   644,   366,  1318,   651,   432,   354,  1247,
1766 <    1320,  1246,  1319,     0,     0,     0,     0,     0,   729,     0,
1767 <     525,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1768 <       0,     0,     0,     0,     0,     0,     0,   734,   718
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,
1768 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1769 >     592
1770   };
1771  
1772   static const yytype_int16 yycheck[] =
1773   {
1774 <     340,   341,   425,     1,   260,   261,     1,   347,    11,    11,
1775 <      10,     1,    12,    76,   262,     1,   260,   262,     8,     9,
1776 <     264,     1,    12,     1,   260,     1,   153,    27,   264,    19,
1777 <       1,    31,     1,   981,   982,   983,   260,   377,    28,   379,
1778 <     264,   260,    32,    33,   260,   264,    22,   260,   264,    39,
1779 <     262,   264,   392,    43,    44,   395,    46,   262,     1,    37,
1780 <     400,     1,    52,    14,    15,    16,   197,   198,    37,    47,
1781 <       1,   411,   412,   262,   414,     1,     1,     1,    47,   262,
1782 <      70,    71,    53,   423,   424,    75,   426,   197,   198,   169,
1783 <     170,    89,    82,     1,    89,     1,    86,    87,    88,   216,
1784 <     217,    91,   260,     1,    94,    95,   264,    13,   262,    89,
1785 <     262,   260,    83,     1,   104,   264,     4,     1,    89,     1,
1786 <     110,   111,   153,   113,   114,   115,   116,   117,    34,    35,
1787 <     262,   260,   118,     1,    40,   264,    42,   262,   128,    23,
1788 <      24,     1,   120,   262,    26,   153,    30,   137,   124,   139,
1789 <     140,   120,   142,     1,   260,   145,   146,    45,   264,   149,
1790 <      48,     1,   148,     3,   262,    89,     6,    49,   231,    37,
1791 <     160,    53,   235,   262,    22,   155,   262,   120,   118,   155,
1792 <     131,   152,     1,   523,     1,    25,    26,   262,   262,   120,
1793 <      96,    97,   182,     1,   184,   120,   199,   199,   188,   105,
1794 <     106,   262,   192,   193,   194,   195,   196,    26,   148,    49,
1795 <     200,   201,   155,    53,   102,   260,    84,   263,   262,   209,
1796 <     126,   127,   120,   107,   108,   109,   263,     1,   112,   155,
1797 <      49,   155,   120,    41,    53,   260,   120,   143,   144,   264,
1798 <     263,   263,   242,    83,   187,    85,    54,   155,   154,   133,
1799 <     134,   241,   120,   243,   122,   123,   187,   163,    98,   249,
1800 <     120,   187,   187,   261,   254,   147,   150,   151,    76,   259,
1801 <      78,   261,    80,    81,   156,   157,   124,   260,   263,   187,
1802 <     120,    55,    56,    57,    58,    59,    60,    61,    62,   187,
1803 <     261,    99,   261,   263,   178,   155,   263,   165,   260,   167,
1804 <     168,   120,   264,   120,   263,   263,     1,   155,   190,     1,
1805 <     263,   263,   152,   263,     1,   183,   260,   248,   261,     1,
1806 <     264,   261,   248,   260,   263,   263,   166,   187,   147,   103,
1807 <     261,    26,   260,   263,    26,   261,   261,   261,   131,   179,
1808 <     248,   263,   263,   263,   250,   251,   252,   166,   260,   263,
1809 <      37,   262,   264,   263,    49,   261,   263,    49,    53,   227,
1810 <     248,    53,   263,   263,   138,     1,   248,   263,     4,   263,
1811 <     187,    53,   712,   261,   263,   153,   263,   261,   263,   261,
1812 <     173,   174,   175,   176,   177,   263,   263,   255,   256,   263,
1813 <     263,   263,   263,   261,   263,   197,   263,    84,   263,   263,
1814 <     263,    83,   829,   830,   831,   832,   833,    89,   263,    45,
1815 <     263,   263,    48,   261,   263,   255,     1,   236,   263,   263,
1816 <     263,   261,   263,     8,     9,   120,   263,    12,   263,   248,
1817 <     263,   248,   263,   120,    19,   122,   123,   263,   263,   862,
1818 <     263,   263,   261,    28,   262,   219,   153,    32,    33,   263,
1819 <     263,   263,   147,   261,    39,   147,   263,   263,    43,    44,
1820 <     263,    46,   263,   263,   156,   157,   102,    52,   263,   263,
1821 <     152,   166,   263,   263,   263,   263,   263,   263,   165,   253,
1822 <     167,   168,   263,   263,   120,    70,    71,   261,   263,   153,
1823 <      75,   263,   263,   263,   263,   263,   183,    82,   190,   263,
1824 <     263,    86,    87,    88,   263,   263,    91,   263,   263,    94,
1825 <      95,   263,   852,   263,   263,   263,   263,   263,   263,   104,
1826 <     860,   861,     1,   263,     3,   110,   111,     6,   113,   114,
1827 <     115,   116,   117,   263,   263,   263,   263,   263,   263,   263,
1828 <     227,   236,   263,   128,   263,   263,    25,    26,   263,   263,
1829 <     263,   263,   137,   248,   139,   140,   248,   142,     5,   260,
1830 <     145,   146,   131,   131,   149,   197,   197,   131,   255,   256,
1831 <      49,   131,   131,   197,    53,   160,   197,   131,   197,     1,
1832 <     220,   221,   222,   223,   224,   225,   226,   197,   197,   197,
1833 <     197,    38,   260,   263,   263,   153,   263,   182,   260,   184,
1834 <     263,   197,    49,   188,    83,   197,    85,   192,   193,   194,
1835 <     195,   196,   248,   131,   153,   200,   201,   131,    65,    98,
1836 <     197,   197,   131,   153,   209,    72,   197,   131,   131,   131,
1837 <      77,   197,    79,    55,    56,    57,    58,    59,    60,    61,
1838 <      62,   120,   197,     1,   197,    92,   153,   197,   131,   131,
1839 <      20,    21,   153,   131,   131,    13,   241,   131,   243,   131,
1840 <     197,   197,    92,   263,   249,     1,   197,   153,   263,   254,
1841 <       0,     1,   197,   152,   259,     5,    34,    35,   125,   131,
1842 <      50,   103,    40,   263,    42,   197,   197,   166,   260,   197,
1843 <     263,   197,    22,   263,   141,   260,    26,    67,   197,    29,
1844 <     179,   197,   197,   197,    74,    41,    36,   197,   153,   260,
1845 <     153,   263,   159,   153,   161,   162,   138,   263,    54,    92,
1846 <     263,    51,   263,    93,   153,   263,   153,     1,   263,   263,
1847 <     263,   263,   153,    63,    64,   263,    66,   263,    96,    97,
1848 <      76,   171,    78,    73,    80,    81,   263,   105,   106,    23,
1849 <      24,   121,   153,   263,   153,   153,    30,   153,   197,   129,
1850 <      90,   153,   260,    99,   153,   197,   263,   260,   126,   127,
1851 <     100,   260,   102,   203,   197,   263,   255,   197,   263,   153,
1852 <     197,   197,   229,   197,   260,   143,   144,   153,   218,   119,
1853 <     153,   153,   153,   153,   153,   263,   154,   219,   171,   153,
1854 <     247,   153,   172,   131,   153,   163,   136,   260,   238,   239,
1855 <     257,   260,   263,   263,   244,   245,   246,   247,   260,   263,
1856 <     158,   191,   260,   260,   260,   260,   260,   257,   153,   260,
1857 <     203,   253,   260,   107,   108,   109,   260,   263,   112,   153,
1858 <     153,   171,   260,   153,   263,   218,   120,   260,   260,   260,
1859 <     180,   181,   260,   260,   260,   185,   186,   260,   260,   133,
1860 <     134,   158,   153,   260,   153,   238,   239,   260,   263,   260,
1861 <     260,   244,   245,   246,   247,   260,   150,   151,   202,   263,
1862 <     263,   263,   263,   263,   257,   263,   263,   263,   263,   260,
1863 <    1183,   263,   250,   251,   252,   263,   204,   205,   206,   207,
1864 <     208,   258,   210,   211,   178,   213,   214,   215,   263,   197,
1865 <     218,   197,   263,   263,   131,   263,   263,   263,   263,   263,
1866 <     228,   229,   230,   263,   232,   233,   234,   131,   263,   237,
1867 <     263,   263,   240,   204,   205,   206,   207,   208,   260,   210,
1868 <     211,   260,   213,   214,   215,   263,   263,   218,   260,   260,
1869 <     153,   260,   153,   260,   260,   260,   260,   228,   229,   230,
1870 <     260,   232,   233,   234,   260,   260,   237,   260,   260,   240,
1871 <     204,   205,   206,   207,   208,   260,   210,   211,   260,   213,
1872 <     214,   215,   260,   260,   218,   260,   153,   260,   260,   153,
1873 <     260,   260,   260,   260,   228,   229,   230,   260,   232,   233,
1874 <     234,   260,   260,   237,   260,   260,   240,   260,   260,   260,
1875 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1876 <     260,   260,   260,   260,   260,   260,   153,   260,   260,   260,
1877 <     260,   260,   260,   260,   260,   260,   153,   260,   153,   263,
1878 <     260,   263,   263,   153,   260,   263,   153,   260,   260,   260,
1879 <     260,   260,   260,   260,   260,   260,   153,   153,   260,   153,
1880 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1881 <     260,   260,   153,   153,   153,   263,   263,   263,   263,   263,
1882 <     263,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1883 <     260,   260,   260,   131,   260,   260,   131,   260,   260,   260,
1884 <     260,   260,   131,   260,   131,   263,   260,   263,   131,   131,
1885 <     153,   131,   131,   260,   153,   197,   153,   153,   263,   153,
1886 <     153,   153,   153,   131,   260,   153,   260,   153,   153,   260,
1887 <     260,   260,   260,   130,   260,   260,   260,   260,   260,   260,
1888 <     260,   260,   260,   153,   260,   197,   260,   260,   260,   260,
1889 <     153,   153,   153,   153,   130,   264,   260,   263,   263,   260,
1890 <     260,   260,   260,   131,   130,   260,    71,   260,   260,   260,
1891 <     260,   260,   260,   260,   260,   260,   260,   260,   313,   773,
1892 <    1346,  1327,   260,   260,   260,   260,   260,   260,   260,   260,
1893 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1894 <     260,   260,   260,   260,   260,   260,   482,  1325,   595,  1269,
1895 <     512,  1168,  1254,  1252,   545,  1306,   553,  1311,  1308,  1267,
1896 <     625,   275,  1309,   360,   124,  1245,   372,   184,    95,  1128,
1897 <    1251,  1126,  1249,    -1,    -1,    -1,    -1,    -1,   457,    -1,
1898 <     291,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1899 <      -1,    -1,    -1,    -1,    -1,    -1,    -1,   472,   440
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,
1899 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
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,   266,     0,     1,     5,    22,    26,    29,    36,    51,
1908 <      63,    64,    66,    73,    90,   100,   102,   119,   136,   171,
1909 <     180,   181,   185,   186,   267,   272,   277,   295,   301,   316,
1910 <     339,   358,   372,   390,   397,   407,   416,   442,   452,   458,
1911 <     462,   472,   536,   552,   573,   260,   261,   262,   262,   340,
1912 <     417,   453,   262,   463,   262,   537,   373,   443,   359,   262,
1913 <     262,   317,   391,   262,   262,   398,   408,     1,    37,    47,
1914 <     120,   296,   297,   298,   299,   300,     1,    13,    34,    35,
1915 <      40,    42,    96,    97,   105,   106,   126,   127,   143,   144,
1916 <     154,   163,   250,   251,   252,   553,   554,   555,   556,   557,
1917 <     558,   559,   560,   561,   562,   563,   564,   565,   566,   567,
1918 <     568,   569,   570,   571,   572,   153,   341,   345,   153,   418,
1919 <     422,   262,     1,    89,   459,   460,   461,   262,     1,     8,
1920 <       9,    12,    19,    28,    32,    33,    39,    43,    44,    46,
1921 <      52,    70,    71,    75,    82,    86,    87,    88,    91,    94,
1922 <      95,   104,   110,   111,   113,   114,   115,   116,   117,   128,
1923 <     137,   139,   140,   142,   145,   146,   149,   160,   182,   184,
1924 <     188,   192,   193,   194,   195,   196,   200,   201,   209,   241,
1925 <     243,   249,   254,   259,   473,   474,   475,   476,   477,   478,
1926 <     479,   480,   481,   482,   483,   484,   485,   486,   487,   488,
1927 <     489,   490,   491,   492,   493,   494,   495,   496,   497,   498,
1928 <     499,   500,   501,   502,   503,   504,   505,   506,   507,   508,
1929 <     509,   510,   511,   512,   513,   514,   515,   516,   517,   518,
1930 <     519,   520,   521,   522,   523,   524,   528,   532,   533,   534,
1931 <     535,   262,   262,   262,   262,     1,    55,    56,    57,    58,
1932 <      59,    60,    61,    62,   103,   138,   219,   253,   302,   303,
1933 <     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
1934 <     314,   315,     1,   118,   148,   273,   274,   275,   276,   153,
1935 <     318,   322,   262,     1,    41,    54,    76,    78,    80,    81,
1936 <      99,   574,   575,   576,   577,   578,   579,   580,   581,   582,
1937 <       1,    37,    84,   120,   122,   123,   165,   167,   168,   183,
1938 <     227,   255,   256,   278,   279,   280,   284,   285,   286,   287,
1939 <     288,   289,   290,   291,   292,   293,   294,   262,   262,   260,
1940 <     263,   263,   263,   261,   297,   263,   263,   263,   263,   263,
1941 <     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
1942 <     263,   263,   263,   261,   554,   262,   262,     1,    89,   155,
1943 <     454,   455,   456,   457,   263,   261,   460,     1,   120,   155,
1944 <     187,   464,   468,   469,   470,   471,   263,   263,   263,   263,
1945 <     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
1946 <     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
1947 <     263,   263,   263,   263,   263,   263,   263,   263,   529,   263,
1948 <     525,   263,   263,   263,   263,   263,   263,   263,   263,   263,
1949 <     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
1950 <     263,   261,   474,     1,     4,    45,    48,   102,   120,   248,
1951 <     538,   539,   540,   541,   542,   546,   547,   548,     1,    26,
1952 <      49,    53,   147,   156,   157,   190,   248,   374,   375,   376,
1953 <     377,   378,   379,   380,   387,   388,   389,     1,   155,   187,
1954 <     248,   444,   448,   449,   450,   451,     1,    53,    83,    89,
1955 <     152,   360,   364,   365,   366,   370,   371,   260,   263,   263,
1956 <     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
1957 <     261,   303,   260,   263,   263,   261,   274,   262,     1,    22,
1958 <     124,   155,   392,   393,   394,   395,   396,   263,   263,   263,
1959 <     263,   263,   263,   263,   261,   575,   260,   263,   263,   263,
1960 <     263,   263,   263,   263,   281,   263,   263,   263,   263,   261,
1961 <     279,     1,   120,   187,   248,   399,   400,   401,   402,   403,
1962 <       1,   120,   187,   409,   410,   411,   412,   153,   153,   153,
1963 <     260,   197,   131,   131,   197,   197,   131,   269,   269,   131,
1964 <     131,   197,   197,   131,   269,   197,   197,   197,   197,   197,
1965 <     260,     1,    23,    24,    30,   107,   108,   109,   112,   120,
1966 <     133,   134,   150,   151,   178,   342,   343,   344,   346,   347,
1967 <     348,   349,   350,   351,   352,   353,   354,   355,   356,   357,
1968 <       1,     3,     6,    25,    26,    49,    53,    83,    85,    98,
1969 <     120,   152,   166,   179,   255,   419,   420,   421,   423,   424,
1970 <     425,   426,   427,   428,   429,   436,   437,   438,   439,   440,
1971 <     441,   263,   263,   261,   455,   153,   260,   263,   263,   465,
1972 <     261,   469,   197,   269,   197,   269,   131,   153,   131,   197,
1973 <     197,   131,   153,   197,   131,   131,   131,   197,   269,   197,
1974 <     197,   269,   153,   197,   131,   131,   269,   131,   131,   153,
1975 <     131,   131,   197,   197,   263,   197,   263,   269,   269,   197,
1976 <     269,   153,   197,   197,   197,   197,   198,   197,   198,   197,
1977 <     197,   269,   269,   131,   271,   269,   197,   197,   197,   197,
1978 <     260,   549,   263,   263,   543,   263,   263,   261,   539,   260,
1979 <     263,   263,   381,   263,   263,   263,   263,   263,   261,   375,
1980 <     263,   445,   263,   261,   449,   260,   361,   263,   263,   263,
1981 <     261,   365,   153,   153,   153,   153,   153,   153,   153,   153,
1982 <     220,   221,   222,   223,   224,   225,   226,   153,   153,   197,
1983 <     260,   153,   153,   260,     1,    26,    49,    53,   120,   147,
1984 <     166,   236,   248,   319,   320,   321,   323,   324,   325,   326,
1985 <     327,   328,   332,   260,   263,   263,   263,   261,   393,   197,
1986 <     197,   197,   153,   197,   197,   269,   260,   153,   197,   153,
1987 <     153,   153,   153,   153,   263,   153,   131,   153,   153,   260,
1988 <     260,   263,   404,   263,   261,   400,   260,   263,   413,   261,
1989 <     410,   260,   260,   260,   260,   260,   260,   260,   260,   173,
1990 <     174,   175,   176,   177,   268,   269,   260,   260,   260,   260,
1991 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1992 <     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
1993 <     263,   263,   263,   261,   343,   260,   263,   263,   263,   263,
1994 <     263,   430,   263,   263,   263,   263,   263,   263,   263,   263,
1995 <     261,   420,   153,   153,   260,   260,   153,   153,   263,   260,
1996 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1997 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1998 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1999 <     260,   260,   204,   205,   206,   207,   208,   210,   211,   213,
2000 <     214,   215,   218,   228,   229,   230,   232,   233,   234,   237,
2001 <     240,   530,   531,   260,   204,   205,   206,   207,   208,   210,
2002 <     211,   213,   214,   215,   218,   228,   229,   230,   232,   233,
2003 <     234,   237,   240,   526,   527,   260,   260,   260,   260,   260,
2004 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
2005 <     260,    14,    15,    16,   270,   271,   260,   260,   260,   260,
2006 <     260,   260,   263,   269,   197,   263,   153,   153,   260,   153,
2007 <     197,   263,   153,   131,   153,   153,   153,   260,   153,   263,
2008 <     153,   260,   263,   153,   153,   131,   368,   369,   260,   260,
2009 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
2010 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
2011 <     263,   263,   333,   263,   263,   263,   329,   263,   261,   320,
2012 <     153,   153,   153,   260,   260,   260,   260,   260,   260,   260,
2013 <     260,   260,   260,   260,   260,   260,   260,   260,   169,   170,
2014 <     282,   283,   260,   260,   260,   260,   153,   263,   153,   260,
2015 <     153,   263,   260,   268,   268,   268,   268,   268,   131,   131,
2016 <     269,   131,   131,   131,   131,   153,   131,   131,   269,   269,
2017 <     271,   260,   153,   216,   217,   153,   153,   197,   263,   153,
2018 <     153,   153,   153,   131,   153,   153,   153,   260,   260,   260,
2019 <     260,   260,   158,   466,   467,   260,   264,   260,   264,   270,
2020 <     270,   270,    11,   199,   550,   551,   260,   260,    11,   199,
2021 <     544,   545,   260,   260,   260,   260,   130,   382,   383,   385,
2022 <     260,   260,   260,   260,   260,   260,   158,   446,   447,   260,
2023 <      76,   231,   235,   362,   363,   260,   260,   202,   264,   367,
2024 <     153,   197,   263,   153,   153,   153,   263,   153,   260,   260,
2025 <     260,   260,   260,   264,   260,    92,   171,   203,   218,   238,
2026 <     239,   244,   245,   246,   247,   257,   405,   406,   260,   260,
2027 <      92,   171,   203,   218,   238,   239,   244,   245,   246,   247,
2028 <     257,   414,   415,   260,   260,   260,   260,   260,   260,   260,
2029 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
2030 <     260,   260,   130,   431,   432,   434,   260,   260,   260,   260,
2031 <     260,   260,   260,   260,   260,   264,   531,   527,   260,   264,
2032 <     260,   264,   384,   260,   264,    20,    21,    50,    67,    74,
2033 <      93,   121,   129,   172,   191,   386,   260,   264,   260,   264,
2034 <     131,   369,   260,   260,   260,   130,   334,   335,   337,   260,
2035 <     260,   260,   204,   205,   206,   207,   208,   210,   211,   213,
2036 <     214,   215,   218,   228,   229,   230,   232,   233,   234,   237,
2037 <     240,   330,   331,   260,   283,   260,   264,   260,   264,   433,
2038 <     260,   264,    10,    12,    27,    31,   242,   435,   467,   551,
2514 <     545,   386,   383,   447,   363,   336,   260,   264,     5,    38,
2515 <      49,    65,    72,    77,    79,    92,   125,   141,   159,   161,
2516 <     162,   229,   247,   257,   338,   260,   264,   406,   415,   435,
2517 <     432,   338,   335,   331
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 < #define yyerrok         (yyerrstatus = 0)
2042 < #define yyclearin       (yychar = YYEMPTY)
2043 < #define YYEMPTY         (-2)
2044 < #define YYEOF           0
2045 <
2046 < #define YYACCEPT        goto yyacceptlab
2047 < #define YYABORT         goto yyabortlab
2048 < #define YYERROR         goto yyerrorlab
2049 <
2050 <
2051 < /* Like YYERROR except do call yyerror.  This remains here temporarily
2052 <   to ease the transition to the new meaning of YYERROR, for GCC.
2053 <   Once GCC version 2 has supplanted version 1, this can go.  However,
2054 <   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
2055 <   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
2056 <   discussed.  */
2057 <
2058 < #define YYFAIL          goto yyerrlab
2059 < #if defined YYFAIL
2060 <  /* This is here to suppress warnings from the GCC cpp's
2061 <     -Wunused-macros.  Normally we don't worry about that warning, but
2062 <     some users do, and we want to make it easy for users to remove
2063 <     YYFAIL uses, which will produce warnings from Bison 2.5.  */
2064 < #endif
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,   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 < #define YYRECOVERING()  (!!yyerrstatus)
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  
2547 #define YYBACKUP(Token, Value)                                  \
2548 do                                                              \
2549  if (yychar == YYEMPTY && yylen == 1)                          \
2550    {                                                           \
2551      yychar = (Token);                                         \
2552      yylval = (Value);                                         \
2553      yytoken = YYTRANSLATE (yychar);                           \
2554      YYPOPSTACK (1);                                           \
2555      goto yybackup;                                            \
2556    }                                                           \
2557  else                                                          \
2558    {                                                           \
2559      yyerror (YY_("syntax error: cannot back up")); \
2560      YYERROR;                                                  \
2561    }                                                           \
2562 while (YYID (0))
2563
2564
2565 #define YYTERROR        1
2566 #define YYERRCODE       256
2567
2568
2569 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2570   If N is 0, then set CURRENT to the empty location which ends
2571   the previous symbol: RHS[0] (always defined).  */
2572
2573 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2574 #ifndef YYLLOC_DEFAULT
2575 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
2576    do                                                                  \
2577      if (YYID (N))                                                    \
2578        {                                                               \
2579          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
2580          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
2581          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
2582          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
2583        }                                                               \
2584      else                                                              \
2585        {                                                               \
2586          (Current).first_line   = (Current).last_line   =              \
2587            YYRHSLOC (Rhs, 0).last_line;                                \
2588          (Current).first_column = (Current).last_column =              \
2589            YYRHSLOC (Rhs, 0).last_column;                              \
2590        }                                                               \
2591    while (YYID (0))
2592 #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  
2595 /* YY_LOCATION_PRINT -- Print the location on the stream.
2596   This macro was not mandated originally: define only if we know
2597   we won't break user code: when these are the locations we know.  */
2195  
2196 < #ifndef YY_LOCATION_PRINT
2600 < # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
2601 < #  define YY_LOCATION_PRINT(File, Loc)                  \
2602 <     fprintf (File, "%d.%d-%d.%d",                      \
2603 <              (Loc).first_line, (Loc).first_column,     \
2604 <              (Loc).last_line,  (Loc).last_column)
2605 < # else
2606 < #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2607 < # endif
2608 < #endif
2196 > #define YYRECOVERING()  (!!yyerrstatus)
2197  
2198 + #define YYBACKUP(Token, Value)                                  \
2199 + do                                                              \
2200 +  if (yychar == YYEMPTY)                                        \
2201 +    {                                                           \
2202 +      yychar = (Token);                                         \
2203 +      yylval = (Value);                                         \
2204 +      YYPOPSTACK (yylen);                                       \
2205 +      yystate = *yyssp;                                         \
2206 +      goto yybackup;                                            \
2207 +    }                                                           \
2208 +  else                                                          \
2209 +    {                                                           \
2210 +      yyerror (YY_("syntax error: cannot back up")); \
2211 +      YYERROR;                                                  \
2212 +    }                                                           \
2213 + while (0)
2214 +
2215 + /* Error token number */
2216 + #define YYTERROR        1
2217 + #define YYERRCODE       256
2218  
2611 /* YYLEX -- calling `yylex' with the right arguments.  */
2219  
2613 #ifdef YYLEX_PARAM
2614 # define YYLEX yylex (YYLEX_PARAM)
2615 #else
2616 # define YYLEX yylex ()
2617 #endif
2220  
2221   /* Enable debugging if requested.  */
2222   #if YYDEBUG
# Line 2624 | Line 2226 | while (YYID (0))
2226   #  define YYFPRINTF fprintf
2227   # endif
2228  
2229 < # define YYDPRINTF(Args)                        \
2230 < do {                                            \
2231 <  if (yydebug)                                  \
2232 <    YYFPRINTF Args;                             \
2233 < } while (YYID (0))
2632 <
2633 < # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
2634 < do {                                                                      \
2635 <  if (yydebug)                                                            \
2636 <    {                                                                     \
2637 <      YYFPRINTF (stderr, "%s ", Title);                                   \
2638 <      yy_symbol_print (stderr,                                            \
2639 <                  Type, Value); \
2640 <      YYFPRINTF (stderr, "\n");                                           \
2641 <    }                                                                     \
2642 < } while (YYID (0))
2229 > # define YYDPRINTF(Args)                        \
2230 > do {                                            \
2231 >  if (yydebug)                                  \
2232 >    YYFPRINTF Args;                             \
2233 > } while (0)
2234  
2235 + /* This macro is provided for backward compatibility. */
2236 + #ifndef YY_LOCATION_PRINT
2237 + # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2238 + #endif
2239  
2645 /*--------------------------------.
2646 | Print this symbol on YYOUTPUT.  |
2647 `--------------------------------*/
2240  
2241 < /*ARGSUSED*/
2242 < #if (defined __STDC__ || defined __C99__FUNC__ \
2243 <     || defined __cplusplus || defined _MSC_VER)
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's value on YYOUTPUT.  |
2255 > `----------------------------------------*/
2256 >
2257   static void
2258   yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2654 #else
2655 static void
2656 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
2657    FILE *yyoutput;
2658    int yytype;
2659    YYSTYPE const * const yyvaluep;
2660 #endif
2259   {
2260 +  FILE *yyo = yyoutput;
2261 +  YYUSE (yyo);
2262    if (!yyvaluep)
2263      return;
2264   # ifdef YYPRINT
2265    if (yytype < YYNTOKENS)
2266      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2667 # else
2668  YYUSE (yyoutput);
2267   # endif
2268 <  switch (yytype)
2671 <    {
2672 <      default:
2673 <        break;
2674 <    }
2268 >  YYUSE (yytype);
2269   }
2270  
2271  
# Line 2679 | Line 2273 | yy_symbol_value_print (yyoutput, yytype,
2273   | Print this symbol on YYOUTPUT.  |
2274   `--------------------------------*/
2275  
2682 #if (defined __STDC__ || defined __C99__FUNC__ \
2683     || defined __cplusplus || defined _MSC_VER)
2276   static void
2277   yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2686 #else
2687 static void
2688 yy_symbol_print (yyoutput, yytype, yyvaluep)
2689    FILE *yyoutput;
2690    int yytype;
2691    YYSTYPE const * const yyvaluep;
2692 #endif
2278   {
2279 <  if (yytype < YYNTOKENS)
2280 <    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2696 <  else
2697 <    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 2705 | Line 2288 | yy_symbol_print (yyoutput, yytype, yyval
2288   | TOP (included).                                                   |
2289   `------------------------------------------------------------------*/
2290  
2708 #if (defined __STDC__ || defined __C99__FUNC__ \
2709     || defined __cplusplus || defined _MSC_VER)
2291   static void
2292   yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2712 #else
2713 static void
2714 yy_stack_print (yybottom, yytop)
2715    yytype_int16 *yybottom;
2716    yytype_int16 *yytop;
2717 #endif
2293   {
2294    YYFPRINTF (stderr, "Stack now");
2295    for (; yybottom <= yytop; yybottom++)
# Line 2725 | 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  
2739 #if (defined __STDC__ || defined __C99__FUNC__ \
2740     || defined __cplusplus || defined _MSC_VER)
2314   static void
2315 < yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
2743 < #else
2744 < static void
2745 < yy_reduce_print (yyvsp, yyrule)
2746 <    YYSTYPE *yyvsp;
2747 <    int yyrule;
2748 < #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;
2752  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 2781 | 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 2796 | Line 2364 | int yydebug;
2364   # define YYMAXDEPTH 10000
2365   #endif
2366  
2799
2367  
2368   #if YYERROR_VERBOSE
2369  
# Line 2805 | Line 2372 | int yydebug;
2372   #   define yystrlen strlen
2373   #  else
2374   /* Return the length of YYSTR.  */
2808 #if (defined __STDC__ || defined __C99__FUNC__ \
2809     || defined __cplusplus || defined _MSC_VER)
2375   static YYSIZE_T
2376   yystrlen (const char *yystr)
2812 #else
2813 static YYSIZE_T
2814 yystrlen (yystr)
2815    const char *yystr;
2816 #endif
2377   {
2378    YYSIZE_T yylen;
2379    for (yylen = 0; yystr[yylen]; yylen++)
# Line 2829 | Line 2389 | yystrlen (yystr)
2389   #  else
2390   /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2391     YYDEST.  */
2832 #if (defined __STDC__ || defined __C99__FUNC__ \
2833     || defined __cplusplus || defined _MSC_VER)
2392   static char *
2393   yystpcpy (char *yydest, const char *yysrc)
2836 #else
2837 static char *
2838 yystpcpy (yydest, yysrc)
2839    char *yydest;
2840    const char *yysrc;
2841 #endif
2394   {
2395    char *yyd = yydest;
2396    const char *yys = yysrc;
# Line 2868 | 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 2899 | Line 2451 | yytnamerr (char *yyres, const char *yyst
2451   }
2452   # endif
2453  
2454 < /* Copy into YYRESULT an error message about the unexpected token
2455 <   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
2456 <   including the terminating null byte.  If YYRESULT is null, do not
2457 <   copy anything; just return the number of bytes that would be
2458 <   copied.  As a special case, return 0 if an ordinary "syntax error"
2459 <   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
2460 <   size calculation.  */
2461 < static YYSIZE_T
2462 < yysyntax_error (char *yyresult, int yystate, int yychar)
2454 > /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2455 >   about the unexpected token YYTOKEN for the state stack whose top is
2456 >   YYSSP.
2457 >
2458 >   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
2459 >   not large enough to hold the message.  In that case, also set
2460 >   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
2461 >   required number of bytes is too large to store.  */
2462 > static int
2463 > yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
2464 >                yytype_int16 *yyssp, int yytoken)
2465   {
2466 <  int yyn = yypact[yystate];
2466 >  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
2467 >  YYSIZE_T yysize = yysize0;
2468 >  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2469 >  /* Internationalized format string. */
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
2474 >     "expected"). */
2475 >  int yycount = 0;
2476 >
2477 >  /* There are many possibilities here to consider:
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
2481 >       tokens because there are none.
2482 >     - The only way there can be no lookahead present (in yychar) is if
2483 >       this state is a consistent state with a default action.  Thus,
2484 >       detecting the absence of a lookahead is sufficient to determine
2485 >       that there is no unexpected or expected token to report.  In that
2486 >       case, just report a simple "syntax error".
2487 >     - Don't assume there isn't a lookahead just because this state is a
2488 >       consistent state with a default action.  There might have been a
2489 >       previous inconsistent state, consistent state with a non-default
2490 >       action, or user semantic action that manipulated yychar.
2491 >     - Of course, the expected token list depends on states to have
2492 >       correct lookahead information, and it depends on the parser not
2493 >       to perform extra reductions after fetching a lookahead from the
2494 >       scanner and before detecting a syntax error.  Thus, state merging
2495 >       (from LALR or IELR) and default reductions corrupt the expected
2496 >       token list.  However, the list is correct for canonical LR with
2497 >       one exception: it will still contain any token that will not be
2498 >       accepted due to an error action in a later state.
2499 >  */
2500 >  if (yytoken != YYEMPTY)
2501 >    {
2502 >      int yyn = yypact[*yyssp];
2503 >      yyarg[yycount++] = yytname[yytoken];
2504 >      if (!yypact_value_is_default (yyn))
2505 >        {
2506 >          /* Start YYX at -YYN if negative to avoid negative indexes in
2507 >             YYCHECK.  In other words, skip the first -YYN actions for
2508 >             this state because they are default actions.  */
2509 >          int yyxbegin = yyn < 0 ? -yyn : 0;
2510 >          /* Stay within bounds of both yycheck and yytname.  */
2511 >          int yychecklim = YYLAST - yyn + 1;
2512 >          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2513 >          int yyx;
2514 >
2515 >          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2516 >            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2517 >                && !yytable_value_is_error (yytable[yyx + yyn]))
2518 >              {
2519 >                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2520 >                  {
2521 >                    yycount = 1;
2522 >                    yysize = yysize0;
2523 >                    break;
2524 >                  }
2525 >                yyarg[yycount++] = yytname[yyx];
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 >    }
2536  
2537 <  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
2915 <    return 0;
2916 <  else
2537 >  switch (yycount)
2538      {
2539 <      int yytype = YYTRANSLATE (yychar);
2540 <      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
2541 <      YYSIZE_T yysize = yysize0;
2542 <      YYSIZE_T yysize1;
2543 <      int yysize_overflow = 0;
2544 <      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2545 <      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2546 <      int yyx;
2547 <
2548 < # if 0
2549 <      /* This is so xgettext sees the translatable formats that are
2929 <         constructed on the fly.  */
2930 <      YY_("syntax error, unexpected %s");
2931 <      YY_("syntax error, unexpected %s, expecting %s");
2932 <      YY_("syntax error, unexpected %s, expecting %s or %s");
2933 <      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
2934 <      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
2935 < # endif
2936 <      char *yyfmt;
2937 <      char const *yyf;
2938 <      static char const yyunexpected[] = "syntax error, unexpected %s";
2939 <      static char const yyexpecting[] = ", expecting %s";
2940 <      static char const yyor[] = " or %s";
2941 <      char yyformat[sizeof yyunexpected
2942 <                    + sizeof yyexpecting - 1
2943 <                    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
2944 <                       * (sizeof yyor - 1))];
2945 <      char const *yyprefix = yyexpecting;
2946 <
2947 <      /* Start YYX at -YYN if negative to avoid negative indexes in
2948 <         YYCHECK.  */
2949 <      int yyxbegin = yyn < 0 ? -yyn : 0;
2950 <
2951 <      /* Stay within bounds of both yycheck and yytname.  */
2952 <      int yychecklim = YYLAST - yyn + 1;
2953 <      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2954 <      int yycount = 1;
2955 <
2956 <      yyarg[0] = yytname[yytype];
2957 <      yyfmt = yystpcpy (yyformat, yyunexpected);
2958 <
2959 <      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2960 <        if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2961 <          {
2962 <            if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2963 <              {
2964 <                yycount = 1;
2965 <                yysize = yysize0;
2966 <                yyformat[sizeof yyunexpected - 1] = '\0';
2967 <                break;
2968 <              }
2969 <            yyarg[yycount++] = yytname[yyx];
2970 <            yysize1 = yysize + yytnamerr (0, yytname[yyx]);
2971 <            yysize_overflow |= (yysize1 < yysize);
2972 <            yysize = yysize1;
2973 <            yyfmt = yystpcpy (yyfmt, yyprefix);
2974 <            yyprefix = yyor;
2975 <          }
2976 <
2977 <      yyf = YY_(yyformat);
2978 <      yysize1 = yysize + yystrlen (yyf);
2979 <      yysize_overflow |= (yysize1 < yysize);
2980 <      yysize = yysize1;
2981 <
2982 <      if (yysize_overflow)
2983 <        return YYSIZE_MAXIMUM;
2984 <
2985 <      if (yyresult)
2986 <        {
2987 <          /* Avoid sprintf, as that infringes on the user's name space.
2988 <             Don't have undefined behavior even if the translation
2989 <             produced a string with the wrong number of "%s"s.  */
2990 <          char *yyp = yyresult;
2991 <          int yyi = 0;
2992 <          while ((*yyp = *yyf) != '\0')
2993 <            {
2994 <              if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
2995 <                {
2996 <                  yyp += yytnamerr (yyp, yyarg[yyi++]);
2997 <                  yyf += 2;
2998 <                }
2999 <              else
3000 <                {
3001 <                  yyp++;
3002 <                  yyf++;
3003 <                }
3004 <            }
3005 <        }
3006 <      return yysize;
2539 > # define YYCASE_(N, S)                      \
2540 >      case N:                               \
2541 >        yyformat = S;                       \
2542 >      break
2543 >      YYCASE_(0, YY_("syntax error"));
2544 >      YYCASE_(1, YY_("syntax error, unexpected %s"));
2545 >      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2546 >      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2547 >      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2548 >      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2549 > # undef YYCASE_
2550      }
2551 +
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 +    {
2561 +      *yymsg_alloc = 2 * yysize;
2562 +      if (! (yysize <= *yymsg_alloc
2563 +             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2564 +        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2565 +      return 1;
2566 +    }
2567 +
2568 +  /* Avoid sprintf, as that infringes on the user's name space.
2569 +     Don't have undefined behavior even if the translation
2570 +     produced a string with the wrong number of "%s"s.  */
2571 +  {
2572 +    char *yyp = *yymsg;
2573 +    int yyi = 0;
2574 +    while ((*yyp = *yyformat) != '\0')
2575 +      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2576 +        {
2577 +          yyp += yytnamerr (yyp, yyarg[yyi++]);
2578 +          yyformat += 2;
2579 +        }
2580 +      else
2581 +        {
2582 +          yyp++;
2583 +          yyformat++;
2584 +        }
2585 +  }
2586 +  return 0;
2587   }
2588   #endif /* YYERROR_VERBOSE */
3010
2589  
2590   /*-----------------------------------------------.
2591   | Release the memory associated to this symbol.  |
2592   `-----------------------------------------------*/
2593  
3016 /*ARGSUSED*/
3017 #if (defined __STDC__ || defined __C99__FUNC__ \
3018     || defined __cplusplus || defined _MSC_VER)
2594   static void
2595   yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
3021 #else
3022 static void
3023 yydestruct (yymsg, yytype, yyvaluep)
3024    const char *yymsg;
3025    int yytype;
3026    YYSTYPE *yyvaluep;
3027 #endif
2596   {
2597    YYUSE (yyvaluep);
3030
2598    if (!yymsg)
2599      yymsg = "Deleting";
2600    YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2601  
2602 <  switch (yytype)
2603 <    {
2604 <
3038 <      default:
3039 <        break;
3040 <    }
2602 >  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2603 >  YYUSE (yytype);
2604 >  YY_IGNORE_MAYBE_UNINITIALIZED_END
2605   }
2606  
2607 < /* Prevent warnings from -Wmissing-prototypes.  */
3044 < #ifdef YYPARSE_PARAM
3045 < #if defined __STDC__ || defined __cplusplus
3046 < int yyparse (void *YYPARSE_PARAM);
3047 < #else
3048 < int yyparse ();
3049 < #endif
3050 < #else /* ! YYPARSE_PARAM */
3051 < #if defined __STDC__ || defined __cplusplus
3052 < int yyparse (void);
3053 < #else
3054 < int yyparse ();
3055 < #endif
3056 < #endif /* ! YYPARSE_PARAM */
2607 >
2608  
2609  
2610   /* The lookahead symbol.  */
# Line 3061 | Line 2612 | int yychar;
2612  
2613   /* The semantic value of the lookahead symbol.  */
2614   YYSTYPE yylval;
3064
2615   /* Number of syntax errors so far.  */
2616   int yynerrs;
2617  
2618  
2619 + /*----------.
2620 + | yyparse.  |
2621 + `----------*/
2622  
3070 /*-------------------------.
3071 | yyparse or yypush_parse.  |
3072 `-------------------------*/
3073
3074 #ifdef YYPARSE_PARAM
3075 #if (defined __STDC__ || defined __C99__FUNC__ \
3076     || defined __cplusplus || defined _MSC_VER)
3077 int
3078 yyparse (void *YYPARSE_PARAM)
3079 #else
3080 int
3081 yyparse (YYPARSE_PARAM)
3082    void *YYPARSE_PARAM;
3083 #endif
3084 #else /* ! YYPARSE_PARAM */
3085 #if (defined __STDC__ || defined __C99__FUNC__ \
3086     || defined __cplusplus || defined _MSC_VER)
2623   int
2624   yyparse (void)
3089 #else
3090 int
3091 yyparse ()
3092
3093 #endif
3094 #endif
2625   {
3096
3097
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 thru separate pointers, to allow yyoverflow
2634 >       Refer to the stacks through separate pointers, to allow yyoverflow
2635         to reallocate them elsewhere.  */
2636  
2637      /* The state stack.  */
# Line 3121 | Line 2649 | yyparse ()
2649    int yyn;
2650    int yyresult;
2651    /* Lookahead token as an internal (translated) token number.  */
2652 <  int yytoken;
2652 >  int yytoken = 0;
2653    /* The variables used to return semantic value and location from the
2654       action routines.  */
2655    YYSTYPE yyval;
# Line 3139 | Line 2667 | yyparse ()
2667       Keep to zero when no symbol should be popped.  */
2668    int yylen = 0;
2669  
2670 <  yytoken = 0;
2671 <  yyss = yyssa;
3144 <  yyvs = yyvsa;
2670 >  yyssp = yyss = yyssa;
2671 >  yyvsp = yyvs = yyvsa;
2672    yystacksize = YYINITDEPTH;
2673  
2674    YYDPRINTF ((stderr, "Starting parse\n"));
# Line 3150 | Line 2677 | yyparse ()
2677    yyerrstatus = 0;
2678    yynerrs = 0;
2679    yychar = YYEMPTY; /* Cause a token to be read.  */
3153
3154  /* Initialize stack pointers.
3155     Waste one element of value and location stack
3156     so that they stay on the same level as the state stack.
3157     The wasted elements are never initialized.  */
3158  yyssp = yyss;
3159  yyvsp = yyvs;
3160
2680    goto yysetstate;
2681  
2682   /*------------------------------------------------------------.
# Line 3178 | 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 3202 | 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 3226 | 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 3249 | Line 2768 | yybackup:
2768  
2769    /* First try to decide what to do without reference to lookahead token.  */
2770    yyn = yypact[yystate];
2771 <  if (yyn == YYPACT_NINF)
2771 >  if (yypact_value_is_default (yyn))
2772      goto yydefault;
2773  
2774    /* Not known => get a lookahead token if don't already have one.  */
# Line 3258 | 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 3280 | Line 2799 | yybackup:
2799    yyn = yytable[yyn];
2800    if (yyn <= 0)
2801      {
2802 <      if (yyn == 0 || yyn == YYTABLE_NINF)
2803 <        goto yyerrlab;
2802 >      if (yytable_value_is_error (yyn))
2803 >        goto yyerrlab;
2804        yyn = -yyn;
2805        goto yyreduce;
2806      }
# Line 3298 | Line 2817 | yybackup:
2817    yychar = YYEMPTY;
2818  
2819    yystate = yyn;
2820 +  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2821    *++yyvsp = yylval;
2822 +  YY_IGNORE_MAYBE_UNINITIALIZED_END
2823  
2824    goto yynewstate;
2825  
# Line 3321 | 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 3334 | Line 2855 | yyreduce:
2855    YY_REDUCE_PRINT (yyn);
2856    switch (yyn)
2857      {
2858 <        case 26:
2859 <
3339 < /* Line 1464 of yacc.c  */
3340 < #line 424 "ircd_parser.y"
2858 >        case 27:
2859 > #line 412 "conf_parser.y" /* yacc.c:1646  */
2860      { (yyval.number) = 0; }
2861 <    break;
3343 <
3344 <  case 28:
3345 <
3346 < /* Line 1464 of yacc.c  */
3347 < #line 426 "ircd_parser.y"
3348 <    {
3349 <                        (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
3350 <                }
2861 > #line 2862 "conf_parser.c" /* yacc.c:1646  */
2862      break;
2863  
2864    case 29:
2865 <
2866 < /* Line 1464 of yacc.c  */
2867 < #line 430 "ircd_parser.y"
3357 <    {
3358 <                        (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
3359 <                }
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 <
2872 < /* Line 1464 of yacc.c  */
2873 < #line 434 "ircd_parser.y"
3366 <    {
3367 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
3368 <                }
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 <
2878 < /* Line 1464 of yacc.c  */
2879 < #line 438 "ircd_parser.y"
3375 <    {
3376 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
3377 <                }
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 <
2884 < /* Line 1464 of yacc.c  */
2885 < #line 442 "ircd_parser.y"
3384 <    {
3385 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
3386 <                }
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 <
2890 < /* Line 1464 of yacc.c  */
2891 < #line 446 "ircd_parser.y"
3393 <    {
3394 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
3395 <                }
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 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 < /* Line 1464 of yacc.c  */
2901 < #line 451 "ircd_parser.y"
2902 <    { (yyval.number) = 0; }
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 <
2908 < /* Line 1464 of yacc.c  */
2909 < #line 452 "ircd_parser.y"
3409 <    { (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 <
2914 < /* Line 1464 of yacc.c  */
2915 < #line 453 "ircd_parser.y"
3416 <    { (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 38:
2919 <
2920 < /* Line 1464 of yacc.c  */
2921 < #line 454 "ircd_parser.y"
3423 <    { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 + (yyvsp[(3) - (3)].number); }
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 39:
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 < /* Line 1464 of yacc.c  */
2931 < #line 455 "ircd_parser.y"
2932 <    { (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 46:
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 < /* Line 1464 of yacc.c  */
2943 < #line 469 "ircd_parser.y"
2942 >  case 49:
2943 > #line 441 "conf_parser.y" /* yacc.c:1646  */
2944      {
3438 #ifndef STATIC_MODULES /* NOOP in the static case */
2945    if (conf_parser_ctx.pass == 2)
2946      add_conf_module(libio_basename(yylval.string));
3441 #endif
2947   }
2948 + #line 2949 "conf_parser.c" /* yacc.c:1646  */
2949      break;
2950  
2951 <  case 47:
2952 <
3447 < /* Line 1464 of yacc.c  */
3448 < #line 477 "ircd_parser.y"
2951 >  case 50:
2952 > #line 447 "conf_parser.y" /* yacc.c:1646  */
2953      {
3450 #ifndef STATIC_MODULES
2954    if (conf_parser_ctx.pass == 2)
2955      mod_add_path(yylval.string);
3453 #endif
2956   }
2957 + #line 2958 "conf_parser.c" /* yacc.c:1646  */
2958      break;
2959  
2960 <  case 64:
2961 <
3459 < /* Line 1464 of yacc.c  */
3460 < #line 499 "ircd_parser.y"
2960 >  case 77:
2961 > #line 482 "conf_parser.y" /* yacc.c:1646  */
2962      {
2963   #ifdef HAVE_LIBCRYPTO
2964 <  if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
2965 <    ServerInfo.tls_version = 0;
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 65:
2972 <
3471 < /* Line 1464 of yacc.c  */
3472 < #line 505 "ircd_parser.y"
2971 >  case 78:
2972 > #line 488 "conf_parser.y" /* yacc.c:1646  */
2973      {
2974   #ifdef HAVE_LIBCRYPTO
2975 <  if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
2976 <  {
3477 <    if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_SSLV3))
3478 <      SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
3479 <    if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_TLSV1))
3480 <      SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
3481 <  }
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 68:
2983 <
3488 < /* Line 1464 of yacc.c  */
3489 < #line 519 "ircd_parser.y"
2982 >  case 81:
2983 > #line 497 "conf_parser.y" /* yacc.c:1646  */
2984      {
2985   #ifdef HAVE_LIBCRYPTO
2986 <  if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
2987 <    ServerInfo.tls_version |= CONF_SERVER_INFO_TLS_VERSION_SSLV3;
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 69:
2994 <
3500 < /* Line 1464 of yacc.c  */
3501 < #line 525 "ircd_parser.y"
2993 >  case 82:
2994 > #line 503 "conf_parser.y" /* yacc.c:1646  */
2995      {
2996   #ifdef HAVE_LIBCRYPTO
2997 <  if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
2998 <    ServerInfo.tls_version |= CONF_SERVER_INFO_TLS_VERSION_TLSV1;
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 70:
3005 <
3512 < /* Line 1464 of yacc.c  */
3513 < #line 533 "ircd_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  
3016      if (SSL_CTX_use_certificate_file(ServerInfo.server_ctx, yylval.string,
3017 +                                     SSL_FILETYPE_PEM) <= 0 ||
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  
3026      if (SSL_CTX_use_PrivateKey_file(ServerInfo.server_ctx, ServerInfo.rsa_private_key_file,
3027 +                                    SSL_FILETYPE_PEM) <= 0 ||
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))
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 71:
3050 <
3550 < /* Line 1464 of yacc.c  */
3551 < #line 567 "ircd_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)
3053 >  BIO *file = NULL;
3054 >
3055 >  if (conf_parser_ctx.pass != 1)
3056 >    break;
3057 >
3058 >  if (ServerInfo.rsa_private_key)
3059 >  {
3060 >    RSA_free(ServerInfo.rsa_private_key);
3061 >    ServerInfo.rsa_private_key = NULL;
3062 >  }
3063 >
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 >  ServerInfo.rsa_private_key_file = xstrdup(yylval.string);
3071 >
3072 >  if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3073 >  {
3074 >    conf_error_report("File open failed, ignoring");
3075 >    break;
3076 >  }
3077 >
3078 >  ServerInfo.rsa_private_key = PEM_read_bio_RSAPrivateKey(file, NULL, 0, NULL);
3079 >
3080 >  BIO_set_close(file, BIO_CLOSE);
3081 >  BIO_free(file);
3082 >
3083 >  if (ServerInfo.rsa_private_key == NULL)
3084 >  {
3085 >    conf_error_report("Couldn't extract key, ignoring");
3086 >    break;
3087 >  }
3088 >
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 >    conf_error_report("Invalid key, ignoring");
3095 >    break;
3096 >  }
3097 >
3098 >  if (RSA_size(ServerInfo.rsa_private_key) < 128)
3099    {
3100 <    BIO *file;
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 <    if (ServerInfo.rsa_private_key)
3110 >  case 85:
3111 > #line 611 "conf_parser.y" /* yacc.c:1646  */
3112      {
3113 <      RSA_free(ServerInfo.rsa_private_key);
3114 <      ServerInfo.rsa_private_key = NULL;
3115 <    }
3113 > /* TBD - XXX: error reporting */
3114 > #ifdef HAVE_LIBCRYPTO
3115 >  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3116 >  {
3117 >    BIO *file = BIO_new_file(yylval.string, "r");
3118  
3119 <    if (ServerInfo.rsa_private_key_file)
3119 >    if (file)
3120      {
3121 <      MyFree(ServerInfo.rsa_private_key_file);
3567 <      ServerInfo.rsa_private_key_file = NULL;
3568 <    }
3121 >      DH *dh = PEM_read_bio_DHparams(file, NULL, NULL, NULL);
3122  
3123 <    DupString(ServerInfo.rsa_private_key_file, yylval.string);
3123 >      BIO_free(file);
3124  
3125 <    if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3126 <    {
3127 <      yyerror("File open failed, ignoring");
3128 <      break;
3125 >      if (dh)
3126 >      {
3127 >        if (DH_size(dh) < 128)
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 >
3132 >        DH_free(dh);
3133 >      }
3134      }
3135 +  }
3136 + #endif
3137 + }
3138 + #line 3139 "conf_parser.c" /* yacc.c:1646  */
3139 +    break;
3140  
3141 <    ServerInfo.rsa_private_key = (RSA *)PEM_read_bio_RSAPrivateKey(file, NULL,
3142 <      0, NULL);
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 <    BIO_set_close(file, BIO_CLOSE);
3153 <    BIO_free(file);
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 (ServerInfo.rsa_private_key == NULL)
3160 >  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3161 >  {
3162 >    if ((nid = OBJ_sn2nid(yylval.string)) == 0)
3163      {
3164 <      yyerror("Couldn't extract key, ignoring");
3165 <      break;
3164 >        conf_error_report("Ignoring serverinfo::serverinfo_ssl_dh_elliptic_curve -- unknown curve name");
3165 >        break;
3166      }
3167  
3168 <    if (!RSA_check_key(ServerInfo.rsa_private_key))
3168 >    if ((key = EC_KEY_new_by_curve_name(nid)) == NULL)
3169      {
3170 <      RSA_free(ServerInfo.rsa_private_key);
3593 <      ServerInfo.rsa_private_key = NULL;
3594 <
3595 <      yyerror("Invalid key, ignoring");
3170 >      conf_error_report("Ignoring serverinfo::serverinfo_ssl_dh_elliptic_curve -- could not create curve");
3171        break;
3172      }
3173  
3174 <    /* require 2048 bit (256 byte) key */
3175 <    if (RSA_size(ServerInfo.rsa_private_key) != 256)
3176 <    {
3177 <      RSA_free(ServerInfo.rsa_private_key);
3603 <      ServerInfo.rsa_private_key = NULL;
3604 <
3605 <      yyerror("Not a 2048 bit key, ignoring");
3606 <    }
3607 <  }
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 72:
3184 <
3614 < /* Line 1464 of yacc.c  */
3615 < #line 627 "ircd_parser.y"
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(L_ERROR, "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 73:
3202 <
3633 < /* Line 1464 of yacc.c  */
3634 < #line 642 "ircd_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(L_ERROR, "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 74:
3220 <
3652 < /* Line 1464 of yacc.c  */
3653 < #line 657 "ircd_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 75:
3232 <
3665 < /* Line 1464 of yacc.c  */
3666 < #line 666 "ircd_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 76:
3249 <
3683 < /* Line 1464 of yacc.c  */
3684 < #line 680 "ircd_parser.y"
3248 >  case 92:
3249 > #line 728 "conf_parser.y" /* yacc.c:1646  */
3250      {
3251 <  if (conf_parser_ctx.pass == 2)
3687 <  {
3688 <    MyFree(ServerInfo.network_desc);
3689 <    DupString(ServerInfo.network_desc, yylval.string);
3690 <  }
3691 < }
3251 >  if (conf_parser_ctx.pass != 2)
3252      break;
3253  
3254 <  case 77:
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 < /* Line 1464 of yacc.c  */
3261 < #line 689 "ircd_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 3706 | Line 3270 | yyreduce:
3270      hints.ai_socktype = SOCK_STREAM;
3271      hints.ai_flags    = AI_PASSIVE | AI_NUMERICHOST;
3272  
3273 <    if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
3274 <      ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
3273 >    if (getaddrinfo(yylval.string, NULL, &hints, &res))
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;
3281        ServerInfo.ip.ss_len = res->ai_addrlen;
3282 <      irc_freeaddrinfo(res);
3282 >      freeaddrinfo(res);
3283  
3284        ServerInfo.specific_ipv4_vhost = 1;
3285      }
3286    }
3287   }
3288 + #line 3289 "conf_parser.c" /* yacc.c:1646  */
3289      break;
3290  
3291 <  case 78:
3292 <
3728 < /* Line 1464 of yacc.c  */
3729 < #line 717 "ircd_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 3739 | Line 3302 | yyreduce:
3302      hints.ai_socktype = SOCK_STREAM;
3303      hints.ai_flags    = AI_PASSIVE | AI_NUMERICHOST;
3304  
3305 <    if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
3306 <      ilog(L_ERROR, "Invalid netmask for server vhost6(%s)", yylval.string);
3305 >    if (getaddrinfo(yylval.string, NULL, &hints, &res))
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;
3313        ServerInfo.ip6.ss_len = res->ai_addrlen;
3314 <      irc_freeaddrinfo(res);
3314 >      freeaddrinfo(res);
3315  
3316        ServerInfo.specific_ipv6_vhost = 1;
3317      }
3318    }
3319   #endif
3320   }
3321 + #line 3322 "conf_parser.c" /* yacc.c:1646  */
3322      break;
3323  
3324 <  case 79:
3325 <
3762 < /* Line 1464 of yacc.c  */
3763 < #line 747 "ircd_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);
3780 <    }
3781 <    else
3782 <      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 80:
3353 <
3789 < /* Line 1464 of yacc.c  */
3790 < #line 770 "ircd_parser.y"
3352 >  case 96:
3353 > #line 820 "conf_parser.y" /* yacc.c:1646  */
3354      {
3355 <  if (conf_parser_ctx.pass == 2)
3793 <    ServerInfo.hub = yylval.number;
3794 < }
3355 >  if (conf_parser_ctx.pass != 2)
3356      break;
3357  
3358 <  case 88:
3798 <
3799 < /* Line 1464 of yacc.c  */
3800 < #line 785 "ircd_parser.y"
3801 <    {
3802 <  if (conf_parser_ctx.pass == 2)
3358 >  if ((yyvsp[-1].number) < 9)
3359    {
3360 <    MyFree(AdminInfo.name);
3361 <    DupString(AdminInfo.name, yylval.string);
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 +    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 89:
3378 <
3812 < /* Line 1464 of yacc.c  */
3813 < #line 794 "ircd_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 <    MyFree(AdminInfo.email);
3386 <    DupString(AdminInfo.email, yylval.string);
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 >    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 90:
3403 <
3825 < /* Line 1464 of yacc.c  */
3826 < #line 803 "ircd_parser.y"
3402 >  case 98:
3403 > #line 864 "conf_parser.y" /* yacc.c:1646  */
3404      {
3405    if (conf_parser_ctx.pass == 2)
3406 <  {
3830 <    MyFree(AdminInfo.description);
3831 <    DupString(AdminInfo.description, yylval.string);
3832 <  }
3406 >    ServerInfo.hub = yylval.number;
3407   }
3408 + #line 3409 "conf_parser.c" /* yacc.c:1646  */
3409      break;
3410  
3411 <  case 107:
3411 >  case 106:
3412 > #line 881 "conf_parser.y" /* yacc.c:1646  */
3413 >    {
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 < /* Line 1464 of yacc.c  */
3424 < #line 830 "ircd_parser.y"
3423 >  case 107:
3424 > #line 890 "conf_parser.y" /* yacc.c:1646  */
3425      {
3426 <                        }
3426 >  if (conf_parser_ctx.pass != 2)
3427      break;
3428  
3429 <  case 108:
3429 >  MyFree(AdminInfo.email);
3430 >  AdminInfo.email = xstrdup(yylval.string);
3431 > }
3432 > #line 3433 "conf_parser.c" /* yacc.c:1646  */
3433 >    break;
3434  
3435 < /* Line 1464 of yacc.c  */
3436 < #line 834 "ircd_parser.y"
3435 >  case 108:
3436 > #line 899 "conf_parser.y" /* yacc.c:1646  */
3437      {
3438 <                        }
3438 >  if (conf_parser_ctx.pass != 2)
3439      break;
3440  
3441 <  case 109:
3441 >  MyFree(AdminInfo.description);
3442 >  AdminInfo.description = xstrdup(yylval.string);
3443 > }
3444 > #line 3445 "conf_parser.c" /* yacc.c:1646  */
3445 >    break;
3446  
3447 < /* Line 1464 of yacc.c  */
3448 < #line 838 "ircd_parser.y"
3447 >  case 109:
3448 > #line 911 "conf_parser.y" /* yacc.c:1646  */
3449      {
3450    if (conf_parser_ctx.pass == 2)
3451 <    strlcpy(ConfigLoggingEntry.userlog, yylval.string,
3859 <            sizeof(ConfigLoggingEntry.userlog));
3451 >    reset_block_state();
3452   }
3453 + #line 3454 "conf_parser.c" /* yacc.c:1646  */
3454      break;
3455  
3456    case 110:
3457 <
3865 < /* Line 1464 of yacc.c  */
3866 < #line 845 "ircd_parser.y"
3457 > #line 915 "conf_parser.y" /* yacc.c:1646  */
3458      {
3459 <  if (conf_parser_ctx.pass == 2)
3460 <    strlcpy(ConfigLoggingEntry.failed_operlog, yylval.string,
3461 <            sizeof(ConfigLoggingEntry.failed_operlog));
3871 < }
3459 >  dlink_node *ptr = NULL;
3460 >
3461 >  if (conf_parser_ctx.pass != 2)
3462      break;
3463  
3464 <  case 111:
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 < /* Line 1464 of yacc.c  */
3474 < #line 852 "ircd_parser.y"
3473 >  case 116:
3474 > #line 932 "conf_parser.y" /* yacc.c:1646  */
3475      {
3476    if (conf_parser_ctx.pass == 2)
3477 <    strlcpy(ConfigLoggingEntry.operlog, yylval.string,
3881 <            sizeof(ConfigLoggingEntry.operlog));
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 112:
3483 <
3887 < /* Line 1464 of yacc.c  */
3888 < #line 859 "ircd_parser.y"
3482 >  case 117:
3483 > #line 938 "conf_parser.y" /* yacc.c:1646  */
3484      {
3485    if (conf_parser_ctx.pass == 2)
3486 <    strlcpy(ConfigLoggingEntry.operspylog, yylval.string,
3892 <            sizeof(ConfigLoggingEntry.operspylog));
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 113:
3492 <
3898 < /* Line 1464 of yacc.c  */
3899 < #line 866 "ircd_parser.y"
3491 >  case 124:
3492 > #line 953 "conf_parser.y" /* yacc.c:1646  */
3493      {
3494    if (conf_parser_ctx.pass == 2)
3495 <    strlcpy(ConfigLoggingEntry.glinelog, yylval.string,
3903 <            sizeof(ConfigLoggingEntry.glinelog));
3495 >    ConfigLoggingEntry.use_logging = yylval.number;
3496   }
3497 + #line 3498 "conf_parser.c" /* yacc.c:1646  */
3498      break;
3499  
3500 <  case 114:
3501 <
3909 < /* Line 1464 of yacc.c  */
3910 < #line 873 "ircd_parser.y"
3500 >  case 125:
3501 > #line 959 "conf_parser.y" /* yacc.c:1646  */
3502      {
3503    if (conf_parser_ctx.pass == 2)
3504 <    strlcpy(ConfigLoggingEntry.klinelog, yylval.string,
3914 <            sizeof(ConfigLoggingEntry.klinelog));
3504 >    reset_block_state();
3505   }
3506 + #line 3507 "conf_parser.c" /* yacc.c:1646  */
3507      break;
3508  
3509 <  case 115:
3510 <
3920 < /* Line 1464 of yacc.c  */
3921 < #line 880 "ircd_parser.y"
3509 >  case 126:
3510 > #line 963 "conf_parser.y" /* yacc.c:1646  */
3511      {
3512 <  if (conf_parser_ctx.pass == 2)
3513 <    strlcpy(ConfigLoggingEntry.ioerrlog, yylval.string,
3514 <            sizeof(ConfigLoggingEntry.ioerrlog));
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 116:
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 < /* Line 1464 of yacc.c  */
3534 < #line 887 "ircd_parser.y"
3533 >  case 134:
3534 > #line 987 "conf_parser.y" /* yacc.c:1646  */
3535      {
3536 <  if (conf_parser_ctx.pass == 2)
3935 <    strlcpy(ConfigLoggingEntry.killlog, yylval.string,
3936 <            sizeof(ConfigLoggingEntry.killlog));
3536 >  block_state.size.value = (yyvsp[-1].number);
3537   }
3538 + #line 3539 "conf_parser.c" /* yacc.c:1646  */
3539      break;
3540  
3541 <  case 117:
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 < /* Line 1464 of yacc.c  */
3550 < #line 894 "ircd_parser.y"
3551 <    {
3549 >  case 136:
3550 > #line 995 "conf_parser.y" /* yacc.c:1646  */
3551 >    {
3552    if (conf_parser_ctx.pass == 2)
3553 <    set_log_level(L_CRIT);
3553 >    block_state.type.value = 0;
3554   }
3555 + #line 3556 "conf_parser.c" /* yacc.c:1646  */
3556      break;
3557  
3558 <  case 118:
3559 <
3952 < /* Line 1464 of yacc.c  */
3953 < #line 898 "ircd_parser.y"
3558 >  case 140:
3559 > #line 1002 "conf_parser.y" /* yacc.c:1646  */
3560      {
3561    if (conf_parser_ctx.pass == 2)
3562 <    set_log_level(L_ERROR);
3562 >    block_state.type.value = LOG_TYPE_USER;
3563   }
3564 + #line 3565 "conf_parser.c" /* yacc.c:1646  */
3565      break;
3566  
3567 <  case 119:
3568 <
3962 < /* Line 1464 of yacc.c  */
3963 < #line 902 "ircd_parser.y"
3567 >  case 141:
3568 > #line 1006 "conf_parser.y" /* yacc.c:1646  */
3569      {
3570    if (conf_parser_ctx.pass == 2)
3571 <    set_log_level(L_WARN);
3571 >    block_state.type.value = LOG_TYPE_OPER;
3572   }
3573 + #line 3574 "conf_parser.c" /* yacc.c:1646  */
3574      break;
3575  
3576 <  case 120:
3577 <
3972 < /* Line 1464 of yacc.c  */
3973 < #line 906 "ircd_parser.y"
3576 >  case 142:
3577 > #line 1010 "conf_parser.y" /* yacc.c:1646  */
3578      {
3579    if (conf_parser_ctx.pass == 2)
3580 <    set_log_level(L_NOTICE);
3580 >    block_state.type.value = LOG_TYPE_GLINE;
3581   }
3582 + #line 3583 "conf_parser.c" /* yacc.c:1646  */
3583      break;
3584  
3585 <  case 121:
3586 <
3982 < /* Line 1464 of yacc.c  */
3983 < #line 910 "ircd_parser.y"
3585 >  case 143:
3586 > #line 1014 "conf_parser.y" /* yacc.c:1646  */
3587      {
3588    if (conf_parser_ctx.pass == 2)
3589 <    set_log_level(L_TRACE);
3589 >    block_state.type.value = LOG_TYPE_XLINE;
3590   }
3591 + #line 3592 "conf_parser.c" /* yacc.c:1646  */
3592      break;
3593  
3594 <  case 122:
3595 <
3992 < /* Line 1464 of yacc.c  */
3993 < #line 914 "ircd_parser.y"
3594 >  case 144:
3595 > #line 1018 "conf_parser.y" /* yacc.c:1646  */
3596      {
3597    if (conf_parser_ctx.pass == 2)
3598 <    set_log_level(L_INFO);
3598 >    block_state.type.value = LOG_TYPE_RESV;
3599   }
3600 + #line 3601 "conf_parser.c" /* yacc.c:1646  */
3601      break;
3602  
3603 <  case 123:
3604 <
4002 < /* Line 1464 of yacc.c  */
4003 < #line 918 "ircd_parser.y"
3603 >  case 145:
3604 > #line 1022 "conf_parser.y" /* yacc.c:1646  */
3605      {
3606    if (conf_parser_ctx.pass == 2)
3607 <    set_log_level(L_DEBUG);
3607 >    block_state.type.value = LOG_TYPE_DLINE;
3608   }
3609 + #line 3610 "conf_parser.c" /* yacc.c:1646  */
3610      break;
3611  
3612 <  case 124:
3613 <
4012 < /* Line 1464 of yacc.c  */
4013 < #line 924 "ircd_parser.y"
3612 >  case 146:
3613 > #line 1026 "conf_parser.y" /* yacc.c:1646  */
3614      {
3615    if (conf_parser_ctx.pass == 2)
3616 <    ConfigLoggingEntry.use_logging = yylval.number;
3616 >    block_state.type.value = LOG_TYPE_KLINE;
3617   }
3618 + #line 3619 "conf_parser.c" /* yacc.c:1646  */
3619      break;
3620  
3621 <  case 125:
3622 <
4022 < /* Line 1464 of yacc.c  */
4023 < #line 933 "ircd_parser.y"
3621 >  case 147:
3622 > #line 1030 "conf_parser.y" /* yacc.c:1646  */
3623      {
3624    if (conf_parser_ctx.pass == 2)
3625 <  {
4027 <    yy_conf = make_conf_item(OPER_TYPE);
4028 <    yy_aconf = map_to_conf(yy_conf);
4029 <    SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
4030 <  }
4031 <  else
4032 <  {
4033 <    MyFree(class_name);
4034 <    class_name = NULL;
4035 <  }
3625 >    block_state.type.value = LOG_TYPE_KILL;
3626   }
3627 + #line 3628 "conf_parser.c" /* yacc.c:1646  */
3628      break;
3629  
3630 <  case 126:
3631 <
4041 < /* Line 1464 of yacc.c  */
4042 < #line 946 "ircd_parser.y"
3630 >  case 148:
3631 > #line 1034 "conf_parser.y" /* yacc.c:1646  */
3632      {
3633    if (conf_parser_ctx.pass == 2)
3634 <  {
3635 <    struct CollectItem *yy_tmp;
3636 <    dlink_node *ptr;
3637 <    dlink_node *next_ptr;
3634 >    block_state.type.value = LOG_TYPE_DEBUG;
3635 > }
3636 > #line 3637 "conf_parser.c" /* yacc.c:1646  */
3637 >    break;
3638  
3639 <    conf_add_class_to_conf(yy_conf, class_name);
3639 >  case 149:
3640 > #line 1044 "conf_parser.y" /* yacc.c:1646  */
3641 >    {
3642 >  if (conf_parser_ctx.pass != 2)
3643 >    break;
3644  
3645 <    /* Now, make sure there is a copy of the "base" given oper
3646 <     * block in each of the collected copies
3647 <     */
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 <    DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
3651 >  case 150:
3652 > #line 1051 "conf_parser.y" /* yacc.c:1646  */
3653      {
3654 <      struct AccessItem *new_aconf;
4059 <      struct ConfItem *new_conf;
4060 <      yy_tmp = ptr->data;
3654 >  dlink_node *ptr = NULL;
3655  
3656 <      new_conf = make_conf_item(OPER_TYPE);
3657 <      new_aconf = (struct AccessItem *)map_to_conf(new_conf);
3656 >  if (conf_parser_ctx.pass != 2)
3657 >    break;
3658  
3659 <      new_aconf->flags = yy_aconf->flags;
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 <      if (yy_conf->name != NULL)
3671 <        DupString(new_conf->name, yy_conf->name);
3672 <      if (yy_tmp->user != NULL)
3673 <        DupString(new_aconf->user, yy_tmp->user);
4071 <      else
4072 <        DupString(new_aconf->user, "*");
4073 <      if (yy_tmp->host != NULL)
4074 <        DupString(new_aconf->host, yy_tmp->host);
4075 <      else
4076 <        DupString(new_aconf->host, "*");
4077 <      conf_add_class_to_conf(new_conf, class_name);
4078 <      if (yy_aconf->passwd != NULL)
4079 <        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");
4091 <        new_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file,
4092 <                                                           NULL, 0, NULL);
4093 <        BIO_set_close(file, BIO_CLOSE);
4094 <        BIO_free(file);
4095 <      }
4096 < #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)
4107 <          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);
4112 <    }
4113 <
4114 <    yy_conf = NULL;
4115 <    yy_aconf = NULL;
4116 <
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 <    MyFree(class_name);
3718 <    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 140:
3728 <
4126 < /* Line 1464 of yacc.c  */
4127 < #line 1033 "ircd_parser.y"
3727 >  case 164:
3728 > #line 1137 "conf_parser.y" /* yacc.c:1646  */
3729      {
3730    if (conf_parser_ctx.pass == 2)
3731 <  {
4131 <    if (strlen(yylval.string) > OPERNICKLEN)
4132 <      yylval.string[OPERNICKLEN] = '\0';
4133 <
4134 <    MyFree(yy_conf->name);
4135 <    DupString(yy_conf->name, yylval.string);
4136 <  }
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 141:
3737 <
4142 < /* Line 1464 of yacc.c  */
4143 < #line 1045 "ircd_parser.y"
3736 >  case 165:
3737 > #line 1143 "conf_parser.y" /* yacc.c:1646  */
3738      {
3739    if (conf_parser_ctx.pass == 2)
3740 <  {
4147 <    if (strlen(yylval.string) > OPERNICKLEN)
4148 <      yylval.string[OPERNICKLEN] = '\0';
4149 <
4150 <    MyFree(yy_conf->name);
4151 <    DupString(yy_conf->name, yylval.string);
4152 <  }
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 <  case 142:
3746 <
4158 < /* Line 1464 of yacc.c  */
4159 < #line 1057 "ircd_parser.y"
3745 >  case 166:
3746 > #line 1149 "conf_parser.y" /* yacc.c:1646  */
3747      {
3748    if (conf_parser_ctx.pass == 2)
3749 <  {
3750 <    struct split_nuh_item nuh;
3751 <
3752 <    nuh.nuhmask  = yylval.string;
4166 <    nuh.nickptr  = NULL;
4167 <    nuh.userptr  = userbuf;
4168 <    nuh.hostptr  = hostbuf;
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 <    nuh.nicksize = 0;
3755 <    nuh.usersize = sizeof(userbuf);
3756 <    nuh.hostsize = sizeof(hostbuf);
3754 >  case 167:
3755 > #line 1155 "conf_parser.y" /* yacc.c:1646  */
3756 >    {
3757 >  if (conf_parser_ctx.pass != 2)
3758 >    break;
3759  
3760 <    split_nuh(&nuh);
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 <    if (yy_aconf->user == NULL)
3768 >  case 168:
3769 > #line 1166 "conf_parser.y" /* yacc.c:1646  */
3770      {
3771 <      DupString(yy_aconf->user, userbuf);
3772 <      DupString(yy_aconf->host, hostbuf);
3773 <    }
3774 <    else
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 169:
3778 > #line 1172 "conf_parser.y" /* yacc.c:1646  */
3779      {
3780 <      struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
3780 >  if (conf_parser_ctx.pass == 2)
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 <      DupString(yy_tmp->user, userbuf);
3787 <      DupString(yy_tmp->host, hostbuf);
3786 >  case 170:
3787 > #line 1178 "conf_parser.y" /* yacc.c:1646  */
3788 >    {
3789 >  if (conf_parser_ctx.pass != 2)
3790 >    break;
3791  
3792 <      dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
3793 <    }
3794 <  }
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 143:
3801 <
4196 < /* Line 1464 of yacc.c  */
4197 < #line 1091 "ircd_parser.y"
3800 >  case 171:
3801 > #line 1189 "conf_parser.y" /* yacc.c:1646  */
3802      {
3803    if (conf_parser_ctx.pass == 2)
3804 <  {
4201 <    if (yy_aconf->passwd != NULL)
4202 <      memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
4203 <
4204 <    MyFree(yy_aconf->passwd);
4205 <    DupString(yy_aconf->passwd, yylval.string);
4206 <  }
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 144:
3810 <
4212 < /* Line 1464 of yacc.c  */
4213 < #line 1103 "ircd_parser.y"
3809 >  case 172:
3810 > #line 1195 "conf_parser.y" /* yacc.c:1646  */
3811      {
3812    if (conf_parser_ctx.pass == 2)
3813 <  {
4217 <    if (yylval.number)
4218 <      SetConfEncrypted(yy_aconf);
4219 <    else
4220 <      ClearConfEncrypted(yy_aconf);
4221 <  }
3813 >    block_state.modes.value = 0;
3814   }
3815 + #line 3816 "conf_parser.c" /* yacc.c:1646  */
3816      break;
3817  
3818 <  case 145:
3819 <
4227 < /* Line 1464 of yacc.c  */
4228 < #line 1114 "ircd_parser.y"
3818 >  case 176:
3819 > #line 1202 "conf_parser.y" /* yacc.c:1646  */
3820      {
4230 #ifdef HAVE_LIBCRYPTO
3821    if (conf_parser_ctx.pass == 2)
3822 <  {
3823 <    BIO *file;
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 != NULL)
3827 >  case 177:
3828 > #line 1206 "conf_parser.y" /* yacc.c:1646  */
3829      {
3830 <      RSA_free(yy_aconf->rsa_public_key);
3831 <      yy_aconf->rsa_public_key = NULL;
3832 <    }
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 (yy_aconf->rsa_public_key_file != NULL)
3836 >  case 178:
3837 > #line 1210 "conf_parser.y" /* yacc.c:1646  */
3838      {
3839 <      MyFree(yy_aconf->rsa_public_key_file);
3840 <      yy_aconf->rsa_public_key_file = NULL;
3841 <    }
3842 <
3843 <    DupString(yy_aconf->rsa_public_key_file, yylval.string);
4248 <    file = BIO_new_file(yylval.string, "r");
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 (file == NULL)
3845 >  case 179:
3846 > #line 1214 "conf_parser.y" /* yacc.c:1646  */
3847      {
3848 <      yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
3849 <      break;
3850 <    }
3851 <
3852 <    yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
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 <    if (yy_aconf->rsa_public_key == NULL)
3854 >  case 180:
3855 > #line 1218 "conf_parser.y" /* yacc.c:1646  */
3856      {
3857 <      yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
3858 <      break;
4262 <    }
4263 <
4264 <    BIO_set_close(file, BIO_CLOSE);
4265 <    BIO_free(file);
4266 <  }
4267 < #endif /* HAVE_LIBCRYPTO */
3857 >  if (conf_parser_ctx.pass == 2)
3858 >    block_state.modes.value |= UMODE_FULL;
3859   }
3860 + #line 3861 "conf_parser.c" /* yacc.c:1646  */
3861      break;
3862  
3863 <  case 146:
3864 <
4273 < /* Line 1464 of yacc.c  */
4274 < #line 1156 "ircd_parser.y"
3863 >  case 181:
3864 > #line 1222 "conf_parser.y" /* yacc.c:1646  */
3865      {
3866    if (conf_parser_ctx.pass == 2)
3867 <  {
4278 <    MyFree(class_name);
4279 <    DupString(class_name, yylval.string);
4280 <  }
3867 >    block_state.modes.value |= UMODE_HIDDEN;
3868   }
3869 + #line 3870 "conf_parser.c" /* yacc.c:1646  */
3870      break;
3871  
3872 <  case 147:
3873 <
4286 < /* Line 1464 of yacc.c  */
4287 < #line 1165 "ircd_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 = 0;
3876 >    block_state.modes.value |= UMODE_HIDECHANS;
3877   }
3878 + #line 3879 "conf_parser.c" /* yacc.c:1646  */
3879      break;
3880  
3881 <  case 151:
3882 <
4296 < /* Line 1464 of yacc.c  */
4297 < #line 1172 "ircd_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_BOTS;
3885 >    block_state.modes.value |= UMODE_HIDEIDLE;
3886   }
3887 + #line 3888 "conf_parser.c" /* yacc.c:1646  */
3888      break;
3889  
3890 <  case 152:
3891 <
4306 < /* Line 1464 of yacc.c  */
4307 < #line 1176 "ircd_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;
3894 >    block_state.modes.value |= UMODE_SKILL;
3895   }
3896 + #line 3897 "conf_parser.c" /* yacc.c:1646  */
3897      break;
3898  
3899 <  case 153:
3900 <
4316 < /* Line 1464 of yacc.c  */
4317 < #line 1180 "ircd_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_CCONN_FULL;
3903 >    block_state.modes.value |= UMODE_NCHANGE;
3904   }
3905 + #line 3906 "conf_parser.c" /* yacc.c:1646  */
3906      break;
3907  
3908 <  case 154:
3909 <
4326 < /* Line 1464 of yacc.c  */
4327 < #line 1184 "ircd_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_DEAF;
3912 >    block_state.modes.value |= UMODE_REJ;
3913   }
3914 + #line 3915 "conf_parser.c" /* yacc.c:1646  */
3915      break;
3916  
3917 <  case 155:
3918 <
4336 < /* Line 1464 of yacc.c  */
4337 < #line 1188 "ircd_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_DEBUG;
3921 >    block_state.modes.value |= UMODE_UNAUTH;
3922   }
3923 + #line 3924 "conf_parser.c" /* yacc.c:1646  */
3924      break;
3925  
3926 <  case 156:
3927 <
4346 < /* Line 1464 of yacc.c  */
4347 < #line 1192 "ircd_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_FULL;
3930 >    block_state.modes.value |= UMODE_SPY;
3931   }
3932 + #line 3933 "conf_parser.c" /* yacc.c:1646  */
3933      break;
3934  
3935 <  case 157:
3936 <
4356 < /* Line 1464 of yacc.c  */
4357 < #line 1196 "ircd_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 158:
3945 <
4366 < /* Line 1464 of yacc.c  */
4367 < #line 1200 "ircd_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 159:
3954 <
4376 < /* Line 1464 of yacc.c  */
4377 < #line 1204 "ircd_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 160:
3963 <
4386 < /* Line 1464 of yacc.c  */
4387 < #line 1208 "ircd_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 161:
3972 <
4396 < /* Line 1464 of yacc.c  */
4397 < #line 1212 "ircd_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 162:
3981 <
4406 < /* Line 1464 of yacc.c  */
4407 < #line 1216 "ircd_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 163:
3990 <
4416 < /* Line 1464 of yacc.c  */
4417 < #line 1220 "ircd_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 164:
3999 <
4426 < /* Line 1464 of yacc.c  */
4427 < #line 1224 "ircd_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 165:
4008 <
4436 < /* Line 1464 of yacc.c  */
4437 < #line 1228 "ircd_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 166:
4017 <
4446 < /* Line 1464 of yacc.c  */
4447 < #line 1232 "ircd_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 167:
4026 <
4456 < /* Line 1464 of yacc.c  */
4457 < #line 1236 "ircd_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 168:
4035 <
4466 < /* Line 1464 of yacc.c  */
4467 < #line 1240 "ircd_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 169:
4044 <
4476 < /* Line 1464 of yacc.c  */
4477 < #line 1244 "ircd_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 170:
4053 <
4486 < /* Line 1464 of yacc.c  */
4487 < #line 1250 "ircd_parser.y"
4052 >  case 205:
4053 > #line 1311 "conf_parser.y" /* yacc.c:1646  */
4054      {
4055 +  if (conf_parser_ctx.pass == 2)
4056 +    block_state.port.value |= OPER_FLAG_CONNECT;
4057   }
4058 + #line 4059 "conf_parser.c" /* yacc.c:1646  */
4059      break;
4060  
4061 <  case 174:
4062 <
4063 < /* Line 1464 of yacc.c  */
4064 < #line 1254 "ircd_parser.y"
4065 <    { not_atom = 1; }
4061 >  case 206:
4062 > #line 1315 "conf_parser.y" /* yacc.c:1646  */
4063 >    {
4064 >  if (conf_parser_ctx.pass == 2)
4065 >    block_state.port.value |= OPER_FLAG_SQUIT_REMOTE;
4066 > }
4067 > #line 4068 "conf_parser.c" /* yacc.c:1646  */
4068      break;
4069  
4070 <  case 176:
4071 <
4072 < /* Line 1464 of yacc.c  */
4073 < #line 1255 "ircd_parser.y"
4074 <    { not_atom = 0; }
4070 >  case 207:
4071 > #line 1319 "conf_parser.y" /* yacc.c:1646  */
4072 >    {
4073 >  if (conf_parser_ctx.pass == 2)
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 <
4508 < /* Line 1464 of yacc.c  */
4509 < #line 1258 "ircd_parser.y"
4079 >  case 208:
4080 > #line 1323 "conf_parser.y" /* yacc.c:1646  */
4081      {
4082    if (conf_parser_ctx.pass == 2)
4083 <  {
4513 <    if (not_atom)yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
4514 <    else yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4515 <  }
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 <
4521 < /* Line 1464 of yacc.c  */
4522 < #line 1265 "ircd_parser.y"
4088 >  case 209:
4089 > #line 1327 "conf_parser.y" /* yacc.c:1646  */
4090      {
4091    if (conf_parser_ctx.pass == 2)
4092 <  {
4526 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTE;
4527 <    else yy_aconf->port |= OPER_FLAG_REMOTE;
4528 <  }
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 <
4534 < /* Line 1464 of yacc.c  */
4535 < #line 1272 "ircd_parser.y"
4097 >  case 210:
4098 > #line 1331 "conf_parser.y" /* yacc.c:1646  */
4099      {
4100    if (conf_parser_ctx.pass == 2)
4101 <  {
4539 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_K;
4540 <    else yy_aconf->port |= OPER_FLAG_K;
4541 <  }
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 <
4547 < /* Line 1464 of yacc.c  */
4548 < #line 1279 "ircd_parser.y"
4106 >  case 211:
4107 > #line 1335 "conf_parser.y" /* yacc.c:1646  */
4108      {
4109    if (conf_parser_ctx.pass == 2)
4110 <  {
4552 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_UNKLINE;
4553 <    else yy_aconf->port |= OPER_FLAG_UNKLINE;
4554 <  }
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 <
4560 < /* Line 1464 of yacc.c  */
4561 < #line 1286 "ircd_parser.y"
4115 >  case 212:
4116 > #line 1339 "conf_parser.y" /* yacc.c:1646  */
4117      {
4118    if (conf_parser_ctx.pass == 2)
4119 <  {
4565 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_X;
4566 <    else yy_aconf->port |= OPER_FLAG_X;
4567 <  }
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 <
4573 < /* Line 1464 of yacc.c  */
4574 < #line 1293 "ircd_parser.y"
4124 >  case 213:
4125 > #line 1343 "conf_parser.y" /* yacc.c:1646  */
4126      {
4127    if (conf_parser_ctx.pass == 2)
4128 <  {
4578 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_GLINE;
4579 <    else yy_aconf->port |= OPER_FLAG_GLINE;
4580 <  }
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 <
4586 < /* Line 1464 of yacc.c  */
4587 < #line 1300 "ircd_parser.y"
4133 >  case 214:
4134 > #line 1347 "conf_parser.y" /* yacc.c:1646  */
4135      {
4136    if (conf_parser_ctx.pass == 2)
4137 <  {
4591 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_DIE;
4592 <    else yy_aconf->port |= OPER_FLAG_DIE;
4593 <  }
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 <
4599 < /* Line 1464 of yacc.c  */
4600 < #line 1307 "ircd_parser.y"
4142 >  case 215:
4143 > #line 1351 "conf_parser.y" /* yacc.c:1646  */
4144      {
4145    if (conf_parser_ctx.pass == 2)
4146 <  {
4604 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_REHASH;
4605 <    else yy_aconf->port |= OPER_FLAG_REHASH;
4606 <  }
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 <
4612 < /* Line 1464 of yacc.c  */
4613 < #line 1314 "ircd_parser.y"
4151 >  case 216:
4152 > #line 1355 "conf_parser.y" /* yacc.c:1646  */
4153      {
4154    if (conf_parser_ctx.pass == 2)
4155 <  {
4617 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_ADMIN;
4618 <    else yy_aconf->port |= OPER_FLAG_ADMIN;
4619 <  }
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 <
4625 < /* Line 1464 of yacc.c  */
4626 < #line 1321 "ircd_parser.y"
4160 >  case 217:
4161 > #line 1359 "conf_parser.y" /* yacc.c:1646  */
4162      {
4163    if (conf_parser_ctx.pass == 2)
4164 <  {
4630 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
4631 <    else yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
4632 <  }
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 <
4638 < /* Line 1464 of yacc.c  */
4639 < #line 1328 "ircd_parser.y"
4169 >  case 218:
4170 > #line 1363 "conf_parser.y" /* yacc.c:1646  */
4171      {
4172    if (conf_parser_ctx.pass == 2)
4173 <  {
4643 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_N;
4644 <    else yy_aconf->port |= OPER_FLAG_N;
4645 <  }
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 <
4651 < /* Line 1464 of yacc.c  */
4652 < #line 1335 "ircd_parser.y"
4178 >  case 219:
4179 > #line 1367 "conf_parser.y" /* yacc.c:1646  */
4180      {
4181    if (conf_parser_ctx.pass == 2)
4182 <  {
4656 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPERWALL;
4657 <    else yy_aconf->port |= OPER_FLAG_OPERWALL;
4658 <  }
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 <
4664 < /* Line 1464 of yacc.c  */
4665 < #line 1342 "ircd_parser.y"
4187 >  case 220:
4188 > #line 1371 "conf_parser.y" /* yacc.c:1646  */
4189      {
4190    if (conf_parser_ctx.pass == 2)
4191 <  {
4669 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPER_SPY;
4670 <    else yy_aconf->port |= OPER_FLAG_OPER_SPY;
4671 <  }
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 <
4677 < /* Line 1464 of yacc.c  */
4678 < #line 1349 "ircd_parser.y"
4196 >  case 221:
4197 > #line 1375 "conf_parser.y" /* yacc.c:1646  */
4198      {
4199    if (conf_parser_ctx.pass == 2)
4200 <  {
4682 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
4683 <    else yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
4684 <  }
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 <
4690 < /* Line 1464 of yacc.c  */
4691 < #line 1356 "ircd_parser.y"
4205 >  case 222:
4206 > #line 1379 "conf_parser.y" /* yacc.c:1646  */
4207      {
4208    if (conf_parser_ctx.pass == 2)
4209 <  {
4695 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
4696 <    else yy_aconf->port |= OPER_FLAG_REMOTEBAN;
4697 <  }
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 <
4703 < /* Line 1464 of yacc.c  */
4704 < #line 1363 "ircd_parser.y"
4214 >  case 223:
4215 > #line 1383 "conf_parser.y" /* yacc.c:1646  */
4216      {
4217    if (conf_parser_ctx.pass == 2)
4218 <  {
4708 <    if (not_atom) ClearConfEncrypted(yy_aconf);
4709 <    else SetConfEncrypted(yy_aconf);
4710 <  }
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 <
4716 < /* Line 1464 of yacc.c  */
4717 < #line 1376 "ircd_parser.y"
4223 >  case 224:
4224 > #line 1387 "conf_parser.y" /* yacc.c:1646  */
4225      {
4226 <  if (conf_parser_ctx.pass == 1)
4227 <  {
4721 <    yy_conf = make_conf_item(CLASS_TYPE);
4722 <    yy_class = map_to_conf(yy_conf);
4723 <  }
4226 >  if (conf_parser_ctx.pass == 2)
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 <
4729 < /* Line 1464 of yacc.c  */
4730 < #line 1383 "ircd_parser.y"
4232 >  case 225:
4233 > #line 1397 "conf_parser.y" /* yacc.c:1646  */
4234      {
4235 <  if (conf_parser_ctx.pass == 1)
4236 <  {
4734 <    struct ConfItem *cconf = NULL;
4735 <    struct ClassItem *class = NULL;
4235 >  if (conf_parser_ctx.pass != 1)
4236 >    break;
4237  
4238 <    if (yy_class_name == NULL)
4738 <      delete_conf_item(yy_conf);
4739 <    else
4740 <    {
4741 <      cconf = find_exact_name_conf(CLASS_TYPE, yy_class_name, NULL, NULL);
4238 >  reset_block_state();
4239  
4240 <      if (cconf != NULL)                /* The class existed already */
4241 <      {
4242 <        int user_count = 0;
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 <        rebuild_cidr_class(cconf, yy_class);
4249 >  case 226:
4250 > #line 1409 "conf_parser.y" /* yacc.c:1646  */
4251 >    {
4252 >  struct ClassItem *class = NULL;
4253  
4254 <        class = map_to_conf(cconf);
4254 >  if (conf_parser_ctx.pass != 1)
4255 >    break;
4256  
4257 <        user_count = class->curr_user_count;
4258 <        memcpy(class, yy_class, sizeof(*class));
4753 <        class->curr_user_count = user_count;
4754 <        class->active = 1;
4257 >  if (!block_state.class.buf[0])
4258 >    break;
4259  
4260 <        delete_conf_item(yy_conf);
4260 >  if (!(class = class_find(block_state.class.buf, 0)))
4261 >    class = class_make();
4262  
4263 <        MyFree(cconf->name);            /* Allows case change of class name */
4264 <        cconf->name = yy_class_name;
4265 <      }
4266 <      else      /* Brand new class */
4267 <      {
4268 <        MyFree(yy_conf->name);          /* just in case it was allocated */
4269 <        yy_conf->name = yy_class_name;
4270 <        yy_class->active = 1;
4271 <      }
4272 <    }
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 <    yy_class_name = NULL;
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 +  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 +  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 +  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 <
4776 < /* Line 1464 of yacc.c  */
4777 < #line 1443 "ircd_parser.y"
4302 >  case 247:
4303 > #line 1478 "conf_parser.y" /* yacc.c:1646  */
4304      {
4305    if (conf_parser_ctx.pass == 1)
4306 <  {
4781 <    MyFree(yy_class_name);
4782 <    DupString(yy_class_name, yylval.string);
4783 <  }
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 <
4789 < /* Line 1464 of yacc.c  */
4790 < #line 1452 "ircd_parser.y"
4311 >  case 248:
4312 > #line 1484 "conf_parser.y" /* yacc.c:1646  */
4313      {
4314    if (conf_parser_ctx.pass == 1)
4315 <  {
4794 <    MyFree(yy_class_name);
4795 <    DupString(yy_class_name, yylval.string);
4796 <  }
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 <
4802 < /* Line 1464 of yacc.c  */
4803 < #line 1461 "ircd_parser.y"
4320 >  case 249:
4321 > #line 1490 "conf_parser.y" /* yacc.c:1646  */
4322      {
4323    if (conf_parser_ctx.pass == 1)
4324 <    PingFreq(yy_class) = (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 <
4812 < /* Line 1464 of yacc.c  */
4813 < #line 1467 "ircd_parser.y"
4329 >  case 250:
4330 > #line 1496 "conf_parser.y" /* yacc.c:1646  */
4331      {
4332    if (conf_parser_ctx.pass == 1)
4333 <    PingWarning(yy_class) = (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 <
4822 < /* Line 1464 of yacc.c  */
4823 < #line 1473 "ircd_parser.y"
4338 >  case 251:
4339 > #line 1502 "conf_parser.y" /* yacc.c:1646  */
4340      {
4341    if (conf_parser_ctx.pass == 1)
4342 <    MaxPerIp(yy_class) = (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 <
4832 < /* Line 1464 of yacc.c  */
4833 < #line 1479 "ircd_parser.y"
4347 >  case 252:
4348 > #line 1508 "conf_parser.y" /* yacc.c:1646  */
4349      {
4350    if (conf_parser_ctx.pass == 1)
4351 <    ConFreq(yy_class) = (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 <
4842 < /* Line 1464 of yacc.c  */
4843 < #line 1485 "ircd_parser.y"
4356 >  case 253:
4357 > #line 1514 "conf_parser.y" /* yacc.c:1646  */
4358      {
4359    if (conf_parser_ctx.pass == 1)
4360 <    MaxTotal(yy_class) = (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 <
4852 < /* Line 1464 of yacc.c  */
4853 < #line 1491 "ircd_parser.y"
4365 >  case 254:
4366 > #line 1520 "conf_parser.y" /* yacc.c:1646  */
4367      {
4368    if (conf_parser_ctx.pass == 1)
4369 <    MaxGlobal(yy_class) = (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 <
4862 < /* Line 1464 of yacc.c  */
4863 < #line 1497 "ircd_parser.y"
4374 >  case 255:
4375 > #line 1526 "conf_parser.y" /* yacc.c:1646  */
4376      {
4377    if (conf_parser_ctx.pass == 1)
4378 <    MaxLocal(yy_class) = (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 <
4872 < /* Line 1464 of yacc.c  */
4873 < #line 1503 "ircd_parser.y"
4383 >  case 256:
4384 > #line 1532 "conf_parser.y" /* yacc.c:1646  */
4385      {
4386    if (conf_parser_ctx.pass == 1)
4387 <    MaxIdent(yy_class) = (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 <
4882 < /* Line 1464 of yacc.c  */
4883 < #line 1509 "ircd_parser.y"
4392 >  case 257:
4393 > #line 1538 "conf_parser.y" /* yacc.c:1646  */
4394      {
4395    if (conf_parser_ctx.pass == 1)
4396 <    MaxSendq(yy_class) = (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 <
4892 < /* Line 1464 of yacc.c  */
4893 < #line 1515 "ircd_parser.y"
4402 >  case 258:
4403 > #line 1545 "conf_parser.y" /* yacc.c:1646  */
4404      {
4405    if (conf_parser_ctx.pass == 1)
4406 <    CidrBitlenIPV4(yy_class) = (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 <
4902 < /* Line 1464 of yacc.c  */
4903 < #line 1521 "ircd_parser.y"
4411 >  case 259:
4412 > #line 1551 "conf_parser.y" /* yacc.c:1646  */
4413      {
4414    if (conf_parser_ctx.pass == 1)
4415 <    CidrBitlenIPV6(yy_class) = (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 <
4912 < /* Line 1464 of yacc.c  */
4913 < #line 1527 "ircd_parser.y"
4420 >  case 260:
4421 > #line 1557 "conf_parser.y" /* yacc.c:1646  */
4422      {
4423    if (conf_parser_ctx.pass == 1)
4424 <    NumberPerCidr(yy_class) = (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 <
4922 < /* Line 1464 of yacc.c  */
4923 < #line 1536 "ircd_parser.y"
4429 >  case 261:
4430 > #line 1563 "conf_parser.y" /* yacc.c:1646  */
4431      {
4432 <  if (conf_parser_ctx.pass == 2)
4926 <  {
4927 <    listener_address = NULL;
4928 <    listener_flags = 0;
4929 <  }
4930 < }
4432 >  if (conf_parser_ctx.pass != 1)
4433      break;
4434  
4435 <  case 229:
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 < /* Line 1464 of yacc.c  */
4442 < #line 1543 "ircd_parser.y"
4441 >  case 262:
4442 > #line 1572 "conf_parser.y" /* yacc.c:1646  */
4443      {
4444 <  if (conf_parser_ctx.pass == 2)
4445 <  {
4446 <    MyFree(listener_address);
4447 <    listener_address = NULL;
4448 <  }
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 230:
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 < /* Line 1464 of yacc.c  */
4463 < #line 1552 "ircd_parser.y"
4462 >  case 267:
4463 > #line 1588 "conf_parser.y" /* yacc.c:1646  */
4464      {
4465 <  listener_flags = 0;
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 234:
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 < /* Line 1464 of yacc.c  */
4481 < #line 1558 "ircd_parser.y"
4480 >  case 269:
4481 > #line 1602 "conf_parser.y" /* yacc.c:1646  */
4482      {
4483    if (conf_parser_ctx.pass == 2)
4484 <    listener_flags |= LISTENER_SSL;
4484 >    reset_block_state();
4485   }
4486 + #line 4487 "conf_parser.c" /* yacc.c:1646  */
4487      break;
4488  
4489 <  case 235:
4489 >  case 271:
4490 > #line 1608 "conf_parser.y" /* yacc.c:1646  */
4491 >    {
4492 >  block_state.flags.value = 0;
4493 > }
4494 > #line 4495 "conf_parser.c" /* yacc.c:1646  */
4495 >    break;
4496  
4497 < /* Line 1464 of yacc.c  */
4498 < #line 1562 "ircd_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_HIDDEN;
4501 >    block_state.flags.value |= LISTENER_SSL;
4502   }
4503 + #line 4504 "conf_parser.c" /* yacc.c:1646  */
4504      break;
4505  
4506 <  case 236:
4507 <
4977 < /* Line 1464 of yacc.c  */
4978 < #line 1566 "ircd_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_SERVER;
4510 >    block_state.flags.value |= LISTENER_HIDDEN;
4511   }
4512 + #line 4513 "conf_parser.c" /* yacc.c:1646  */
4513      break;
4514  
4515 <  case 244:
4516 <
4517 < /* Line 1464 of yacc.c  */
4518 < #line 1576 "ircd_parser.y"
4519 <    { listener_flags = 0; }
4515 >  case 277:
4516 > #line 1622 "conf_parser.y" /* yacc.c:1646  */
4517 >    {
4518 >  if (conf_parser_ctx.pass == 2)
4519 >   block_state.flags.value |= LISTENER_SERVER;
4520 > }
4521 > #line 4522 "conf_parser.c" /* yacc.c:1646  */
4522      break;
4523  
4524 <  case 248:
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 < /* Line 1464 of yacc.c  */
4531 < #line 1581 "ircd_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 <
5014 < /* Line 1464 of yacc.c  */
5015 < #line 1595 "ircd_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;
5020 <
5021 <    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 <
5038 < /* Line 1464 of yacc.c  */
5039 < #line 1615 "ircd_parser.y"
4570 >  case 291:
4571 > #line 1667 "conf_parser.y" /* yacc.c:1646  */
4572      {
4573    if (conf_parser_ctx.pass == 2)
4574 <  {
5043 <    MyFree(listener_address);
5044 <    DupString(listener_address, yylval.string);
5045 <  }
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 <
5051 < /* Line 1464 of yacc.c  */
5052 < #line 1624 "ircd_parser.y"
4579 >  case 292:
4580 > #line 1673 "conf_parser.y" /* yacc.c:1646  */
4581      {
4582    if (conf_parser_ctx.pass == 2)
4583 <  {
5056 <    MyFree(listener_address);
5057 <    DupString(listener_address, yylval.string);
5058 <  }
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 <
5064 < /* Line 1464 of yacc.c  */
5065 < #line 1636 "ircd_parser.y"
4588 >  case 293:
4589 > #line 1682 "conf_parser.y" /* yacc.c:1646  */
4590      {
4591    if (conf_parser_ctx.pass == 2)
4592 <  {
5069 <    yy_conf = make_conf_item(CLIENT_TYPE);
5070 <    yy_aconf = map_to_conf(yy_conf);
5071 <  }
5072 <  else
5073 <  {
5074 <    MyFree(class_name);
5075 <    class_name = NULL;
5076 <  }
4592 >    reset_block_state();
4593   }
4594 + #line 4595 "conf_parser.c" /* yacc.c:1646  */
4595      break;
4596  
4597 <  case 253:
4598 <
5082 < /* Line 1464 of yacc.c  */
5083 < #line 1648 "ircd_parser.y"
4597 >  case 294:
4598 > #line 1686 "conf_parser.y" /* yacc.c:1646  */
4599      {
4600 <  if (conf_parser_ctx.pass == 2)
5086 <  {
5087 <    struct CollectItem *yy_tmp = NULL;
5088 <    dlink_node *ptr = NULL, *next_ptr = NULL;
5089 <
5090 <    if (yy_aconf->user && yy_aconf->host)
5091 <    {
5092 <      conf_add_class_to_conf(yy_conf, class_name);
5093 <      add_conf_by_address(CONF_CLIENT, yy_aconf);
5094 <    }
5095 <    else
5096 <      delete_conf_item(yy_conf);
5097 <
5098 <    /* copy over settings from first struct */
5099 <    DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
5100 <    {
5101 <      struct AccessItem *new_aconf;
5102 <      struct ConfItem *new_conf;
5103 <
5104 <      new_conf = make_conf_item(CLIENT_TYPE);
5105 <      new_aconf = map_to_conf(new_conf);
5106 <
5107 <      yy_tmp = ptr->data;
5108 <
5109 <      assert(yy_tmp->user && yy_tmp->host);
5110 <
5111 <      if (yy_aconf->passwd != NULL)
5112 <        DupString(new_aconf->passwd, yy_aconf->passwd);
5113 <      if (yy_conf->name != NULL)
5114 <        DupString(new_conf->name, yy_conf->name);
5115 <      if (yy_aconf->passwd != NULL)
5116 <        DupString(new_aconf->passwd, yy_aconf->passwd);
5117 <
5118 <      new_aconf->flags = yy_aconf->flags;
5119 <      new_aconf->port  = yy_aconf->port;
5120 <
5121 <      DupString(new_aconf->user, yy_tmp->user);
5122 <      collapse(new_aconf->user);
5123 <
5124 <      DupString(new_aconf->host, yy_tmp->host);
5125 <      collapse(new_aconf->host);
4600 >  dlink_node *ptr = NULL;
4601  
4602 <      conf_add_class_to_conf(new_conf, class_name);
5128 <      add_conf_by_address(CONF_CLIENT, new_aconf);
5129 <      dlinkDelete(&yy_tmp->node, &col_conf_list);
5130 <      free_collect_item(yy_tmp);
5131 <    }
5132 <
5133 <    MyFree(class_name);
5134 <    class_name = NULL;
5135 <    yy_conf = NULL;
5136 <    yy_aconf = NULL;
5137 <  }
5138 < }
4602 >  if (conf_parser_ctx.pass != 2)
4603      break;
4604  
4605 <  case 265:
5142 <
5143 < /* Line 1464 of yacc.c  */
5144 < #line 1710 "ircd_parser.y"
5145 <    {
5146 <  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;
5155 <
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);
5159 <
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);
5165 <      DupString(yy_aconf->host, hostbuf);
5166 <    }
5167 <    else
5168 <    {
5169 <      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 <
5182 < /* Line 1464 of yacc.c  */
5183 < #line 1747 "ircd_parser.y"
4638 >  case 306:
4639 > #line 1735 "conf_parser.y" /* yacc.c:1646  */
4640      {
4641    if (conf_parser_ctx.pass == 2)
4642 <  {
5187 <    /* be paranoid */
5188 <    if (yy_aconf->passwd != NULL)
5189 <      memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5190 <
5191 <    MyFree(yy_aconf->passwd);
5192 <    DupString(yy_aconf->passwd, yylval.string);
5193 <  }
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 <  case 267:
4648 <
5199 < /* Line 1464 of yacc.c  */
5200 < #line 1760 "ircd_parser.y"
4647 >  case 307:
4648 > #line 1741 "conf_parser.y" /* yacc.c:1646  */
4649      {
4650    if (conf_parser_ctx.pass == 2)
4651 <  {
5204 <    MyFree(class_name);
5205 <    DupString(class_name, yylval.string);
5206 <  }
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 268:
4656 >  case 308:
4657 > #line 1747 "conf_parser.y" /* yacc.c:1646  */
4658 >    {
4659 >  if (conf_parser_ctx.pass == 2)
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 < /* Line 1464 of yacc.c  */
4666 < #line 1769 "ircd_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 <
5227 < /* Line 1464 of yacc.c  */
5228 < #line 1780 "ircd_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 <
4690 < /* Line 1464 of yacc.c  */
4691 < #line 1784 "ircd_parser.y"
4692 <    { not_atom = 1; }
4693 <    break;
4694 <
5240 <  case 275:
5241 <
5242 < /* Line 1464 of yacc.c  */
5243 < #line 1785 "ircd_parser.y"
5244 <    { not_atom = 0; }
4688 >  case 314:
4689 > #line 1771 "conf_parser.y" /* yacc.c:1646  */
4690 >    {
4691 >  if (conf_parser_ctx.pass == 2)
4692 >    block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4693 > }
4694 > #line 4695 "conf_parser.c" /* yacc.c:1646  */
4695      break;
4696  
4697 <  case 277:
4698 <
5249 < /* Line 1464 of yacc.c  */
5250 < #line 1788 "ircd_parser.y"
4697 >  case 315:
4698 > #line 1775 "conf_parser.y" /* yacc.c:1646  */
4699      {
4700    if (conf_parser_ctx.pass == 2)
4701 <  {
5254 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
5255 <    else yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5256 <  }
4701 >    block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4702   }
4703 + #line 4704 "conf_parser.c" /* yacc.c:1646  */
4704      break;
4705  
4706 <  case 278:
4707 <
5262 < /* Line 1464 of yacc.c  */
5263 < #line 1795 "ircd_parser.y"
4706 >  case 316:
4707 > #line 1779 "conf_parser.y" /* yacc.c:1646  */
4708      {
4709    if (conf_parser_ctx.pass == 2)
4710 <  {
5267 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
5268 <    else yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5269 <  }
4710 >    block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4711   }
4712 + #line 4713 "conf_parser.c" /* yacc.c:1646  */
4713      break;
4714  
4715 <  case 279:
4716 <
5275 < /* Line 1464 of yacc.c  */
5276 < #line 1802 "ircd_parser.y"
4715 >  case 317:
4716 > #line 1783 "conf_parser.y" /* yacc.c:1646  */
4717      {
4718    if (conf_parser_ctx.pass == 2)
4719 <  {
5280 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
5281 <    else yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5282 <  }
4719 >    block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4720   }
4721 + #line 4722 "conf_parser.c" /* yacc.c:1646  */
4722      break;
4723  
4724 <  case 280:
4725 <
5288 < /* Line 1464 of yacc.c  */
5289 < #line 1809 "ircd_parser.y"
4724 >  case 318:
4725 > #line 1787 "conf_parser.y" /* yacc.c:1646  */
4726      {
4727    if (conf_parser_ctx.pass == 2)
4728 <  {
5293 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
5294 <    else yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5295 <  }
4728 >    block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4729   }
4730 + #line 4731 "conf_parser.c" /* yacc.c:1646  */
4731      break;
4732  
4733 <  case 281:
4734 <
5301 < /* Line 1464 of yacc.c  */
5302 < #line 1816 "ircd_parser.y"
4733 >  case 319:
4734 > #line 1791 "conf_parser.y" /* yacc.c:1646  */
4735      {
4736    if (conf_parser_ctx.pass == 2)
4737 <  {
5306 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
5307 <    else yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5308 <  }
4737 >    block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4738   }
4739 + #line 4740 "conf_parser.c" /* yacc.c:1646  */
4740      break;
4741  
4742 <  case 282:
4743 <
5314 < /* Line 1464 of yacc.c  */
5315 < #line 1823 "ircd_parser.y"
4742 >  case 320:
4743 > #line 1795 "conf_parser.y" /* yacc.c:1646  */
4744      {
4745    if (conf_parser_ctx.pass == 2)
4746 <  {
5319 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_IDLE_LINED;
5320 <    else yy_aconf->flags |= CONF_FLAGS_IDLE_LINED;
5321 <  }
4746 >    block_state.flags.value |= CONF_FLAGS_EXEMPTGLINE;
4747   }
4748 + #line 4749 "conf_parser.c" /* yacc.c:1646  */
4749      break;
4750  
4751 <  case 283:
4752 <
5327 < /* Line 1464 of yacc.c  */
5328 < #line 1830 "ircd_parser.y"
4751 >  case 321:
4752 > #line 1799 "conf_parser.y" /* yacc.c:1646  */
4753      {
4754    if (conf_parser_ctx.pass == 2)
4755 <  {
5332 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
5333 <    else yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5334 <  }
4755 >    block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4756   }
4757 + #line 4758 "conf_parser.c" /* yacc.c:1646  */
4758      break;
4759  
4760 <  case 284:
4761 <
5340 < /* Line 1464 of yacc.c  */
5341 < #line 1837 "ircd_parser.y"
4760 >  case 322:
4761 > #line 1803 "conf_parser.y" /* yacc.c:1646  */
4762      {
4763    if (conf_parser_ctx.pass == 2)
4764 <  {
5345 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
5346 <    else yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5347 <  }
4764 >    block_state.flags.value |= CONF_FLAGS_WEBIRC;
4765   }
4766 + #line 4767 "conf_parser.c" /* yacc.c:1646  */
4767      break;
4768  
4769 <  case 285:
4770 <
5353 < /* Line 1464 of yacc.c  */
5354 < #line 1844 "ircd_parser.y"
4769 >  case 323:
4770 > #line 1807 "conf_parser.y" /* yacc.c:1646  */
4771      {
4772    if (conf_parser_ctx.pass == 2)
4773 <  {
5358 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTRESV;
5359 <    else yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
5360 <  }
4773 >    block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4774   }
4775 + #line 4776 "conf_parser.c" /* yacc.c:1646  */
4776      break;
4777  
4778 <  case 286:
4779 <
5366 < /* Line 1464 of yacc.c  */
5367 < #line 1851 "ircd_parser.y"
4778 >  case 324:
4779 > #line 1813 "conf_parser.y" /* yacc.c:1646  */
4780      {
4781 <  if (conf_parser_ctx.pass == 2)
4781 >  if (conf_parser_ctx.pass != 2)
4782 >    break;
4783 >
4784 >  if (valid_hostname(yylval.string))
4785    {
4786 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
4787 <    else yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
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 287:
4796 <
5379 < /* Line 1464 of yacc.c  */
5380 < #line 1861 "ircd_parser.y"
4795 >  case 325:
4796 > #line 1827 "conf_parser.y" /* yacc.c:1646  */
4797      {
4798 <  if (conf_parser_ctx.pass == 2)
4799 <  {
5384 <    MyFree(yy_conf->name);
4798 >  if (conf_parser_ctx.pass != 2)
4799 >    break;
4800  
4801 <    if (strlen(yylval.string) < HOSTLEN)
4802 <    {    
5388 <      DupString(yy_conf->name, yylval.string);
5389 <      yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
5390 <    }
5391 <    else
5392 <    {
5393 <      ilog(L_ERROR, "Spoofs must be less than %d..ignoring it", HOSTLEN);
5394 <      yy_conf->name = NULL;
5395 <    }
5396 <  }
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 288:
4808 <
5402 < /* Line 1464 of yacc.c  */
5403 < #line 1880 "ircd_parser.y"
4807 >  case 326:
4808 > #line 1836 "conf_parser.y" /* yacc.c:1646  */
4809      {
4810 <  if (conf_parser_ctx.pass == 2)
5406 <  {
5407 <    yy_aconf->flags |= CONF_FLAGS_REDIR;
5408 <    MyFree(yy_conf->name);
5409 <    DupString(yy_conf->name, yylval.string);
5410 <  }
5411 < }
4810 >  if (conf_parser_ctx.pass != 2)
4811      break;
4812  
4813 <  case 289:
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 < /* Line 1464 of yacc.c  */
4820 < #line 1890 "ircd_parser.y"
4819 >  case 327:
4820 > #line 1849 "conf_parser.y" /* yacc.c:1646  */
4821      {
4822 <  if (conf_parser_ctx.pass == 2)
5420 <  {
5421 <    yy_aconf->flags |= CONF_FLAGS_REDIR;
5422 <    yy_aconf->port = (yyvsp[(3) - (4)].number);
5423 <  }
5424 < }
4822 >  if (conf_parser_ctx.pass != 2)
4823      break;
4824  
4825 <  case 290:
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 < /* Line 1464 of yacc.c  */
4832 < #line 1903 "ircd_parser.y"
4831 >  case 328:
4832 > #line 1856 "conf_parser.y" /* yacc.c:1646  */
4833      {
4834 <  if (conf_parser_ctx.pass == 2)
5433 <  {
5434 <    MyFree(resv_reason);
5435 <    resv_reason = NULL;
5436 <  }
5437 < }
4834 >  if (conf_parser_ctx.pass != 2)
4835      break;
4836  
4837 <  case 291:
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 < /* Line 1464 of yacc.c  */
4843 < #line 1910 "ircd_parser.y"
4842 >  case 335:
4843 > #line 1867 "conf_parser.y" /* yacc.c:1646  */
4844      {
4845    if (conf_parser_ctx.pass == 2)
4846 <  {
5447 <    MyFree(resv_reason);
5448 <    resv_reason = NULL;
5449 <  }
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 298:
4852 <
5455 < /* Line 1464 of yacc.c  */
5456 < #line 1922 "ircd_parser.y"
4851 >  case 336:
4852 > #line 1873 "conf_parser.y" /* yacc.c:1646  */
4853      {
4854    if (conf_parser_ctx.pass == 2)
4855 <  {
5460 <    MyFree(resv_reason);
5461 <    DupString(resv_reason, yylval.string);
5462 <  }
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 299:
4861 <
5468 < /* Line 1464 of yacc.c  */
5469 < #line 1931 "ircd_parser.y"
4860 >  case 337:
4861 > #line 1879 "conf_parser.y" /* yacc.c:1646  */
4862      {
4863    if (conf_parser_ctx.pass == 2)
4864 <  {
5473 <    if (IsChanPrefix(*yylval.string))
5474 <    {
5475 <      char def_reason[] = "No reason";
5476 <
5477 <      create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5478 <    }
5479 <  }
5480 <  /* ignore it for now.. but we really should make a warning if
5481 <   * its an erroneous name --fl_ */
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 300:
4870 <
5487 < /* Line 1464 of yacc.c  */
5488 < #line 1946 "ircd_parser.y"
4869 >  case 343:
4870 > #line 1894 "conf_parser.y" /* yacc.c:1646  */
4871      {
4872 <  if (conf_parser_ctx.pass == 2)
4873 <  {
5492 <    char def_reason[] = "No reason";
4872 >  if (conf_parser_ctx.pass != 2)
4873 >    break;
4874  
4875 <    create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
4875 >  if (valid_servname(yylval.string))
4876 >  {
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 301:
4885 <
5501 < /* Line 1464 of yacc.c  */
5502 < #line 1959 "ircd_parser.y"
4884 >  case 344:
4885 > #line 1909 "conf_parser.y" /* yacc.c:1646  */
4886      {
4887 <  if (conf_parser_ctx.pass == 2)
5505 <  {
5506 <    yy_conf = make_conf_item(ULINE_TYPE);
5507 <    yy_match_item = map_to_conf(yy_conf);
5508 <    yy_match_item->action = SHARED_ALL;
5509 <  }
5510 < }
4887 >  if (conf_parser_ctx.pass != 2)
4888      break;
4889  
4890 <  case 302:
4890 >  reset_block_state();
4891  
4892 < /* Line 1464 of yacc.c  */
4893 < #line 1967 "ircd_parser.y"
4894 <    {
4895 <  if (conf_parser_ctx.pass == 2)
5519 <  {
5520 <    yy_conf = NULL;
5521 <  }
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 309:
4900 >  case 345:
4901 > #line 1920 "conf_parser.y" /* yacc.c:1646  */
4902 >    {
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 < /* Line 1464 of yacc.c  */
4918 < #line 1978 "ircd_parser.y"
4917 >  case 352:
4918 > #line 1937 "conf_parser.y" /* yacc.c:1646  */
4919      {
4920    if (conf_parser_ctx.pass == 2)
4921 <  {
5532 <    MyFree(yy_conf->name);
5533 <    DupString(yy_conf->name, yylval.string);
5534 <  }
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 310:
4927 <
5540 < /* Line 1464 of yacc.c  */
5541 < #line 1987 "ircd_parser.y"
4926 >  case 353:
4927 > #line 1943 "conf_parser.y" /* yacc.c:1646  */
4928      {
4929    if (conf_parser_ctx.pass == 2)
4930    {
# Line 5546 | 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);
5557
5558    DupString(yy_match_item->user, userbuf);
5559    DupString(yy_match_item->host, hostbuf);
4943    }
4944   }
4945 + #line 4946 "conf_parser.c" /* yacc.c:1646  */
4946      break;
4947  
4948 <  case 311:
4949 <
5566 < /* Line 1464 of yacc.c  */
5567 < #line 2009 "ircd_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 315:
4958 <
5576 < /* Line 1464 of yacc.c  */
5577 < #line 2016 "ircd_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 316:
4967 <
5586 < /* Line 1464 of yacc.c  */
5587 < #line 2020 "ircd_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_TKLINE;
4970 >    block_state.flags.value |= SHARED_UNKLINE;
4971   }
4972 + #line 4973 "conf_parser.c" /* yacc.c:1646  */
4973      break;
4974  
4975 <  case 317:
4976 <
5596 < /* Line 1464 of yacc.c  */
5597 < #line 2024 "ircd_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_UNKLINE;
4979 >    block_state.flags.value |= SHARED_DLINE;
4980   }
4981 + #line 4982 "conf_parser.c" /* yacc.c:1646  */
4982      break;
4983  
4984 <  case 318:
4985 <
5606 < /* Line 1464 of yacc.c  */
5607 < #line 2028 "ircd_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_XLINE;
4988 >    block_state.flags.value |= SHARED_UNDLINE;
4989   }
4990 + #line 4991 "conf_parser.c" /* yacc.c:1646  */
4991      break;
4992  
4993 <  case 319:
4994 <
5616 < /* Line 1464 of yacc.c  */
5617 < #line 2032 "ircd_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_TXLINE;
4997 >    block_state.flags.value |= SHARED_XLINE;
4998   }
4999 + #line 5000 "conf_parser.c" /* yacc.c:1646  */
5000      break;
5001  
5002 <  case 320:
5003 <
5626 < /* Line 1464 of yacc.c  */
5627 < #line 2036 "ircd_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 321:
5012 <
5636 < /* Line 1464 of yacc.c  */
5637 < #line 2040 "ircd_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 322:
5021 <
5646 < /* Line 1464 of yacc.c  */
5647 < #line 2044 "ircd_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_TRESV;
5024 >    block_state.flags.value |= SHARED_UNRESV;
5025   }
5026 + #line 5027 "conf_parser.c" /* yacc.c:1646  */
5027      break;
5028  
5029 <  case 323:
5030 <
5656 < /* Line 1464 of yacc.c  */
5657 < #line 2048 "ircd_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_UNRESV;
5033 >    block_state.flags.value |= SHARED_LOCOPS;
5034   }
5035 + #line 5036 "conf_parser.c" /* yacc.c:1646  */
5036      break;
5037  
5038 <  case 324:
5039 <
5666 < /* Line 1464 of yacc.c  */
5667 < #line 2052 "ircd_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_LOCOPS;
5042 >    block_state.flags.value = SHARED_ALL;
5043   }
5044 + #line 5045 "conf_parser.c" /* yacc.c:1646  */
5045      break;
5046  
5047 <  case 325:
5048 <
5676 < /* Line 1464 of yacc.c  */
5677 < #line 2056 "ircd_parser.y"
5047 >  case 368:
5048 > #line 2014 "conf_parser.y" /* yacc.c:1646  */
5049      {
5050 <  if (conf_parser_ctx.pass == 2)
5680 <    yy_match_item->action = SHARED_ALL;
5681 < }
5050 >  if (conf_parser_ctx.pass != 2)
5051      break;
5052  
5053 <  case 326:
5053 >  reset_block_state();
5054  
5055 < /* Line 1464 of yacc.c  */
5056 < #line 2065 "ircd_parser.y"
5688 <    {
5689 <  if (conf_parser_ctx.pass == 2)
5690 <  {
5691 <    yy_conf = make_conf_item(CLUSTER_TYPE);
5692 <    yy_conf->flags = SHARED_ALL;
5693 <  }
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 <
5699 < /* Line 1464 of yacc.c  */
5700 < #line 2072 "ircd_parser.y"
5061 >  case 369:
5062 > #line 2023 "conf_parser.y" /* yacc.c:1646  */
5063      {
5064 <  if (conf_parser_ctx.pass == 2)
5703 <  {
5704 <    if (yy_conf->name == NULL)
5705 <      DupString(yy_conf->name, "*");
5706 <    yy_conf = NULL;
5707 <  }
5708 < }
5709 <    break;
5064 >  struct MaskItem *conf = NULL;
5065  
5066 <  case 333:
5712 <
5713 < /* Line 1464 of yacc.c  */
5714 < #line 2085 "ircd_parser.y"
5715 <    {
5716 <  if (conf_parser_ctx.pass == 2)
5717 <    DupString(yy_conf->name, yylval.string);
5718 < }
5066 >  if (conf_parser_ctx.pass != 2)
5067      break;
5068  
5069 <  case 334:
5070 <
5071 < /* Line 1464 of yacc.c  */
5724 < #line 2091 "ircd_parser.y"
5725 <    {
5726 <  if (conf_parser_ctx.pass == 2)
5727 <    yy_conf->flags = 0;
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 338:
5077 <
5733 < /* Line 1464 of yacc.c  */
5734 < #line 2098 "ircd_parser.y"
5076 >  case 375:
5077 > #line 2038 "conf_parser.y" /* yacc.c:1646  */
5078      {
5079    if (conf_parser_ctx.pass == 2)
5080 <    yy_conf->flags |= SHARED_KLINE;
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 339:
5086 <
5743 < /* Line 1464 of yacc.c  */
5744 < #line 2102 "ircd_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 |= SHARED_TKLINE;
5089 >    block_state.flags.value = 0;
5090   }
5091 + #line 5092 "conf_parser.c" /* yacc.c:1646  */
5092      break;
5093  
5094 <  case 340:
5095 <
5753 < /* Line 1464 of yacc.c  */
5754 < #line 2106 "ircd_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_UNKLINE;
5098 >    block_state.flags.value |= SHARED_KLINE;
5099   }
5100 + #line 5101 "conf_parser.c" /* yacc.c:1646  */
5101      break;
5102  
5103 <  case 341:
5104 <
5763 < /* Line 1464 of yacc.c  */
5764 < #line 2110 "ircd_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_XLINE;
5107 >    block_state.flags.value |= SHARED_UNKLINE;
5108   }
5109 + #line 5110 "conf_parser.c" /* yacc.c:1646  */
5110      break;
5111  
5112 <  case 342:
5113 <
5773 < /* Line 1464 of yacc.c  */
5774 < #line 2114 "ircd_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_TXLINE;
5116 >    block_state.flags.value |= SHARED_DLINE;
5117   }
5118 + #line 5119 "conf_parser.c" /* yacc.c:1646  */
5119      break;
5120  
5121 <  case 343:
5122 <
5783 < /* Line 1464 of yacc.c  */
5784 < #line 2118 "ircd_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_UNXLINE;
5125 >    block_state.flags.value |= SHARED_UNDLINE;
5126   }
5127 + #line 5128 "conf_parser.c" /* yacc.c:1646  */
5128      break;
5129  
5130 <  case 344:
5131 <
5793 < /* Line 1464 of yacc.c  */
5794 < #line 2122 "ircd_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_RESV;
5134 >    block_state.flags.value |= SHARED_XLINE;
5135   }
5136 + #line 5137 "conf_parser.c" /* yacc.c:1646  */
5137      break;
5138  
5139 <  case 345:
5140 <
5803 < /* Line 1464 of yacc.c  */
5804 < #line 2126 "ircd_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_TRESV;
5143 >    block_state.flags.value |= SHARED_UNXLINE;
5144   }
5145 + #line 5146 "conf_parser.c" /* yacc.c:1646  */
5146      break;
5147  
5148 <  case 346:
5149 <
5813 < /* Line 1464 of yacc.c  */
5814 < #line 2130 "ircd_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_UNRESV;
5152 >    block_state.flags.value |= SHARED_RESV;
5153   }
5154 + #line 5155 "conf_parser.c" /* yacc.c:1646  */
5155      break;
5156  
5157 <  case 347:
5158 <
5823 < /* Line 1464 of yacc.c  */
5824 < #line 2134 "ircd_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_LOCOPS;
5161 >    block_state.flags.value |= SHARED_UNRESV;
5162   }
5163 + #line 5164 "conf_parser.c" /* yacc.c:1646  */
5164      break;
5165  
5166 <  case 348:
5167 <
5833 < /* Line 1464 of yacc.c  */
5834 < #line 2138 "ircd_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_ALL;
5170 >    block_state.flags.value |= SHARED_LOCOPS;
5171   }
5172 + #line 5173 "conf_parser.c" /* yacc.c:1646  */
5173      break;
5174  
5175 <  case 349:
5176 <
5843 < /* Line 1464 of yacc.c  */
5844 < #line 2147 "ircd_parser.y"
5175 >  case 389:
5176 > #line 2087 "conf_parser.y" /* yacc.c:1646  */
5177      {
5178    if (conf_parser_ctx.pass == 2)
5179 <  {
5848 <    yy_conf = make_conf_item(SERVER_TYPE);
5849 <    yy_aconf = (struct AccessItem *)map_to_conf(yy_conf);
5850 <    yy_aconf->passwd = NULL;
5851 <    /* defaults */
5852 <    yy_aconf->port = PORTNUM;
5853 <
5854 <    if (ConfigFileEntry.burst_away)
5855 <      yy_aconf->flags = CONF_FLAGS_BURST_AWAY;
5856 <  }
5857 <  else
5858 <  {
5859 <    MyFree(class_name);
5860 <    class_name = NULL;
5861 <  }
5179 >    block_state.flags.value = SHARED_ALL;
5180   }
5181 + #line 5182 "conf_parser.c" /* yacc.c:1646  */
5182      break;
5183  
5184 <  case 350:
5185 <
5867 < /* Line 1464 of yacc.c  */
5868 < #line 2165 "ircd_parser.y"
5184 >  case 390:
5185 > #line 2096 "conf_parser.y" /* yacc.c:1646  */
5186      {
5870  if (conf_parser_ctx.pass == 2)
5871  {
5872    struct CollectItem *yy_hconf=NULL;
5873    struct CollectItem *yy_lconf=NULL;
5874    dlink_node *ptr;
5875    dlink_node *next_ptr;
5876 #ifdef HAVE_LIBCRYPTO
5877    if (yy_aconf->host &&
5878        ((yy_aconf->passwd && yy_aconf->spasswd) ||
5879         (yy_aconf->rsa_public_key && IsConfCryptLink(yy_aconf))))
5880 #else /* !HAVE_LIBCRYPTO */
5881      if (yy_aconf->host && !IsConfCryptLink(yy_aconf) &&
5882          yy_aconf->passwd && yy_aconf->spasswd)
5883 #endif /* !HAVE_LIBCRYPTO */
5884        {
5885          if (conf_add_server(yy_conf, class_name) == -1)
5886          {
5887            delete_conf_item(yy_conf);
5888            yy_conf = NULL;
5889            yy_aconf = NULL;
5890          }
5891        }
5892        else
5893        {
5894          /* Even if yy_conf ->name is NULL
5895           * should still unhook any hub/leaf confs still pending
5896           */
5897          unhook_hub_leaf_confs();
5898
5899          if (yy_conf->name != NULL)
5900          {
5901 #ifndef HAVE_LIBCRYPTO
5902            if (IsConfCryptLink(yy_aconf))
5903              yyerror("Ignoring connect block -- no OpenSSL support");
5904 #else
5905            if (IsConfCryptLink(yy_aconf) && !yy_aconf->rsa_public_key)
5906              yyerror("Ignoring connect block -- missing key");
5907 #endif
5908            if (yy_aconf->host == NULL)
5909              yyerror("Ignoring connect block -- missing host");
5910            else if (!IsConfCryptLink(yy_aconf) &&
5911                    (!yy_aconf->passwd || !yy_aconf->spasswd))
5912              yyerror("Ignoring connect block -- missing password");
5913          }
5914
5915
5916          /* XXX
5917           * This fixes a try_connections() core (caused by invalid class_ptr
5918           * pointers) reported by metalrock. That's an ugly fix, but there
5919           * is currently no better way. The entire config subsystem needs an
5920           * rewrite ASAP. make_conf_item() shouldn't really add things onto
5921           * a doubly linked list immediately without any sanity checks!  -Michael
5922           */
5923          delete_conf_item(yy_conf);
5924
5925          yy_aconf = NULL;
5926          yy_conf = NULL;
5927        }
5928
5929      /*
5930       * yy_conf is still pointing at the server that is having
5931       * a connect block built for it. This means, y_aconf->name
5932       * points to the actual irc name this server will be known as.
5933       * Now this new server has a set or even just one hub_mask (or leaf_mask)
5934       * given in the link list at yy_hconf. Fill in the HUB confs
5935       * from this link list now.
5936       */        
5937      DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
5938      {
5939        struct ConfItem *new_hub_conf;
5940        struct MatchItem *match_item;
5941
5942        yy_hconf = ptr->data;
5943
5944        /* yy_conf == NULL is a fatal error for this connect block! */
5945        if ((yy_conf != NULL) && (yy_conf->name != NULL))
5946        {
5947          new_hub_conf = make_conf_item(HUB_TYPE);
5948          match_item = (struct MatchItem *)map_to_conf(new_hub_conf);
5949          DupString(new_hub_conf->name, yy_conf->name);
5950          if (yy_hconf->user != NULL)
5951            DupString(match_item->user, yy_hconf->user);
5952          else
5953            DupString(match_item->user, "*");
5954          if (yy_hconf->host != NULL)
5955            DupString(match_item->host, yy_hconf->host);
5956          else
5957            DupString(match_item->host, "*");
5958        }
5959        dlinkDelete(&yy_hconf->node, &hub_conf_list);
5960        free_collect_item(yy_hconf);
5961      }
5962
5963      /* Ditto for the LEAF confs */
5964
5965      DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
5966      {
5967        struct ConfItem *new_leaf_conf;
5968        struct MatchItem *match_item;
5187  
5188 <        yy_lconf = ptr->data;
5188 >  if (conf_parser_ctx.pass != 2)
5189 >    break;
5190  
5191 <        if ((yy_conf != NULL) && (yy_conf->name != NULL))
5192 <        {
5193 <          new_leaf_conf = make_conf_item(LEAF_TYPE);
5975 <          match_item = (struct MatchItem *)map_to_conf(new_leaf_conf);
5976 <          DupString(new_leaf_conf->name, yy_conf->name);
5977 <          if (yy_lconf->user != NULL)
5978 <            DupString(match_item->user, yy_lconf->user);
5979 <          else
5980 <            DupString(match_item->user, "*");
5981 <          if (yy_lconf->host != NULL)
5982 <            DupString(match_item->host, yy_lconf->host);
5983 <          else
5984 <            DupString(match_item->host, "*");
5985 <        }
5986 <        dlinkDelete(&yy_lconf->node, &leaf_conf_list);
5987 <        free_collect_item(yy_lconf);
5988 <      }
5989 <      MyFree(class_name);
5990 <      class_name = NULL;
5991 <      yy_conf = NULL;
5992 <      yy_aconf = NULL;
5993 <  }
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 370:
5199 <
5999 < /* Line 1464 of yacc.c  */
6000 < #line 2303 "ircd_parser.y"
5198 >  case 391:
5199 > #line 2105 "conf_parser.y" /* yacc.c:1646  */
5200      {
5201 <  if (conf_parser_ctx.pass == 2)
5202 <  {
6004 <    if (yy_conf->name != NULL)
6005 <      yyerror("Multiple connect name entry");
5201 >  struct MaskItem *conf = NULL;
5202 >  struct addrinfo hints, *res;
5203  
5204 <    MyFree(yy_conf->name);
6008 <    DupString(yy_conf->name, yylval.string);
6009 <  }
6010 < }
5204 >  if (conf_parser_ctx.pass != 2)
5205      break;
5206  
5207 <  case 371:
5207 >  if (!block_state.name.buf[0] ||
5208 >      !block_state.host.buf[0])
5209 >    break;
5210  
5211 < /* Line 1464 of yacc.c  */
5212 < #line 2315 "ircd_parser.y"
5213 <    {
6018 <  if (conf_parser_ctx.pass == 2)
6019 <  {
6020 <    if (yy_conf->name != NULL)
6021 <      yyerror("Multiple connect name entry");
5211 >  if (!block_state.rpass.buf[0] ||
5212 >      !block_state.spass.buf[0])
5213 >    break;
5214  
5215 <    MyFree(yy_conf->name);
5216 <    DupString(yy_conf->name, yylval.string);
6025 <  }
6026 < }
5215 >  if (has_wildcards(block_state.name.buf) ||
5216 >      has_wildcards(block_state.host.buf))
5217      break;
5218  
5219 <  case 372:
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 < /* Line 1464 of yacc.c  */
5229 < #line 2327 "ircd_parser.y"
6033 <    {
6034 <  if (conf_parser_ctx.pass == 2)
6035 <  {
6036 <    MyFree(yy_aconf->host);
6037 <    DupString(yy_aconf->host, yylval.string);
6038 <  }
6039 < }
6040 <    break;
5228 >  if (block_state.cert.buf[0])
5229 >    conf->certfp = xstrdup(block_state.cert.buf);
5230  
5231 <  case 373:
5231 >  if (block_state.ciph.buf[0])
5232 >    conf->cipher_list = xstrdup(block_state.ciph.buf);
5233  
5234 < /* Line 1464 of yacc.c  */
5235 < #line 2336 "ircd_parser.y"
6046 <    {
6047 <  if (conf_parser_ctx.pass == 2)
6048 <  {
6049 <    struct addrinfo hints, *res;
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      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 (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
5246 <      ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
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 <      assert(res != NULL);
5249 >      assert(res);
5250  
5251 <      memcpy(&yy_aconf->my_ipnum, res->ai_addr, res->ai_addrlen);
5252 <      yy_aconf->my_ipnum.ss.ss_family = res->ai_family;
5253 <      yy_aconf->my_ipnum.ss_len = res->ai_addrlen;
5254 <      irc_freeaddrinfo(res);
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      }
5256    }
6069 }
6070    break;
6071
6072  case 374:
6073
6074 /* Line 1464 of yacc.c  */
6075 #line 2362 "ircd_parser.y"
6076    {
6077  if (conf_parser_ctx.pass == 2)
6078  {
6079    if ((yyvsp[(3) - (4)].string)[0] == ':')
6080      yyerror("Server passwords cannot begin with a colon");
6081    else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6082      yyerror("Server passwords cannot contain spaces");
6083    else {
6084      if (yy_aconf->spasswd != NULL)
6085        memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
5257  
5258 <      MyFree(yy_aconf->spasswd);
5259 <      DupString(yy_aconf->spasswd, yylval.string);
6089 <    }
6090 <  }
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 375:
5265 <
6096 < /* Line 1464 of yacc.c  */
6097 < #line 2380 "ircd_parser.y"
5264 >  case 409:
5265 > #line 2185 "conf_parser.y" /* yacc.c:1646  */
5266      {
5267    if (conf_parser_ctx.pass == 2)
5268 <  {
6101 <    if ((yyvsp[(3) - (4)].string)[0] == ':')
6102 <      yyerror("Server passwords cannot begin with a colon");
6103 <    else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6104 <      yyerror("Server passwords cannot contain spaces");
6105 <    else {
6106 <      if (yy_aconf->passwd != NULL)
6107 <        memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
6108 <
6109 <      MyFree(yy_aconf->passwd);
6110 <      DupString(yy_aconf->passwd, yylval.string);
6111 <    }
6112 <  }
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 376:
5274 <
6118 < /* Line 1464 of yacc.c  */
6119 < #line 2398 "ircd_parser.y"
5273 >  case 410:
5274 > #line 2191 "conf_parser.y" /* yacc.c:1646  */
5275      {
5276    if (conf_parser_ctx.pass == 2)
5277 <    yy_aconf->port = (yyvsp[(3) - (4)].number);
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 377:
5283 <
6128 < /* Line 1464 of yacc.c  */
6129 < #line 2404 "ircd_parser.y"
5282 >  case 411:
5283 > #line 2197 "conf_parser.y" /* yacc.c:1646  */
5284      {
5285    if (conf_parser_ctx.pass == 2)
5286 <    yy_aconf->aftype = AF_INET;
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 <  case 378:
5292 <
6138 < /* Line 1464 of yacc.c  */
6139 < #line 2408 "ircd_parser.y"
5291 >  case 412:
5292 > #line 2203 "conf_parser.y" /* yacc.c:1646  */
5293      {
5294 < #ifdef IPV6
6142 <  if (conf_parser_ctx.pass == 2)
6143 <    yy_aconf->aftype = AF_INET6;
6144 < #endif
6145 < }
5294 >  if (conf_parser_ctx.pass != 2)
5295      break;
5296  
5297 <  case 379:
5298 <
5299 < /* Line 1464 of yacc.c  */
5300 < #line 2416 "ircd_parser.y"
5301 <    {
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 383:
5308 <
5309 < /* Line 1464 of yacc.c  */
5310 < #line 2420 "ircd_parser.y"
6160 <    { not_atom = 1; }
5307 >  case 413:
5308 > #line 2216 "conf_parser.y" /* yacc.c:1646  */
5309 >    {
5310 >  if (conf_parser_ctx.pass != 2)
5311      break;
5312  
5313 <  case 385:
5314 <
5315 < /* Line 1464 of yacc.c  */
5316 < #line 2421 "ircd_parser.y"
5317 <    { not_atom = 0; }
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 387:
5324 <
6172 < /* Line 1464 of yacc.c  */
6173 < #line 2424 "ircd_parser.y"
5323 >  case 414:
5324 > #line 2229 "conf_parser.y" /* yacc.c:1646  */
5325      {
5326    if (conf_parser_ctx.pass == 2)
5327 < #ifndef HAVE_LIBZ
6177 <    yyerror("Ignoring flags = compressed; -- no zlib support");
6178 < #else
6179 < {
6180 <   if (not_atom)ClearConfCompressed(yy_aconf);
6181 <   else SetConfCompressed(yy_aconf);
6182 < }
6183 < #endif
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 388:
5333 <
6189 < /* Line 1464 of yacc.c  */
6190 < #line 2435 "ircd_parser.y"
5332 >  case 415:
5333 > #line 2235 "conf_parser.y" /* yacc.c:1646  */
5334      {
5335    if (conf_parser_ctx.pass == 2)
5336 <  {
6194 <    if (not_atom)ClearConfCryptLink(yy_aconf);
6195 <    else SetConfCryptLink(yy_aconf);
6196 <  }
5336 >    block_state.port.value = (yyvsp[-1].number);
5337   }
5338 + #line 5339 "conf_parser.c" /* yacc.c:1646  */
5339      break;
5340  
5341 <  case 389:
5342 <
6202 < /* Line 1464 of yacc.c  */
6203 < #line 2442 "ircd_parser.y"
5341 >  case 416:
5342 > #line 2241 "conf_parser.y" /* yacc.c:1646  */
5343      {
5344    if (conf_parser_ctx.pass == 2)
5345 <  {
6207 <    if (not_atom)ClearConfAllowAutoConn(yy_aconf);
6208 <    else SetConfAllowAutoConn(yy_aconf);
6209 <  }
5345 >    block_state.aftype.value = AF_INET;
5346   }
5347 + #line 5348 "conf_parser.c" /* yacc.c:1646  */
5348      break;
5349  
5350 <  case 390:
5351 <
6215 < /* Line 1464 of yacc.c  */
6216 < #line 2449 "ircd_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 <  {
5356 <    if (not_atom)ClearConfAwayBurst(yy_aconf);
6221 <    else SetConfAwayBurst(yy_aconf);
6222 <  }
5355 >    block_state.aftype.value = AF_INET6;
5356 > #endif
5357   }
5358 + #line 5359 "conf_parser.c" /* yacc.c:1646  */
5359      break;
5360  
5361 <  case 391:
5362 <
6228 < /* Line 1464 of yacc.c  */
6229 < #line 2456 "ircd_parser.y"
5361 >  case 418:
5362 > #line 2253 "conf_parser.y" /* yacc.c:1646  */
5363      {
5364 <  if (conf_parser_ctx.pass == 2)
6232 <  {
6233 <    if (not_atom)ClearConfTopicBurst(yy_aconf);
6234 <    else SetConfTopicBurst(yy_aconf);
6235 <  }
5364 >  block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5365   }
5366 + #line 5367 "conf_parser.c" /* yacc.c:1646  */
5367      break;
5368  
5369 <  case 392:
5370 <
6241 < /* Line 1464 of yacc.c  */
6242 < #line 2466 "ircd_parser.y"
5369 >  case 422:
5370 > #line 2259 "conf_parser.y" /* yacc.c:1646  */
5371      {
6244 #ifdef HAVE_LIBCRYPTO
5372    if (conf_parser_ctx.pass == 2)
5373 <  {
5374 <    BIO *file;
5375 <
5376 <    if (yy_aconf->rsa_public_key != NULL)
6250 <    {
6251 <      RSA_free(yy_aconf->rsa_public_key);
6252 <      yy_aconf->rsa_public_key = NULL;
6253 <    }
6254 <
6255 <    if (yy_aconf->rsa_public_key_file != NULL)
6256 <    {
6257 <      MyFree(yy_aconf->rsa_public_key_file);
6258 <      yy_aconf->rsa_public_key_file = NULL;
6259 <    }
6260 <
6261 <    DupString(yy_aconf->rsa_public_key_file, yylval.string);
6262 <
6263 <    if ((file = BIO_new_file(yylval.string, "r")) == NULL)
6264 <    {
6265 <      yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
6266 <      break;
6267 <    }
6268 <
6269 <    yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
5373 >    block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5374 > }
5375 > #line 5376 "conf_parser.c" /* yacc.c:1646  */
5376 >    break;
5377  
5378 <    if (yy_aconf->rsa_public_key == NULL)
5378 >  case 423:
5379 > #line 2263 "conf_parser.y" /* yacc.c:1646  */
5380      {
5381 <      yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
5382 <      break;
6275 <    }
6276 <      
6277 <    BIO_set_close(file, BIO_CLOSE);
6278 <    BIO_free(file);
6279 <  }
6280 < #endif /* HAVE_LIBCRYPTO */
5381 >  if (conf_parser_ctx.pass == 2)
5382 >    block_state.flags.value |= CONF_FLAGS_SSL;
5383   }
5384 + #line 5385 "conf_parser.c" /* yacc.c:1646  */
5385      break;
5386  
5387 <  case 393:
5388 <
6286 < /* Line 1464 of yacc.c  */
6287 < #line 2507 "ircd_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 394:
5402 <
6301 < /* Line 1464 of yacc.c  */
6302 < #line 2518 "ircd_parser.y"
5401 >  case 425:
5402 > #line 2280 "conf_parser.y" /* yacc.c:1646  */
5403      {
5404    if (conf_parser_ctx.pass == 2)
5405 <  {
6306 <    struct CollectItem *yy_tmp;
6307 <
6308 <    yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6309 <    DupString(yy_tmp->host, yylval.string);
6310 <    DupString(yy_tmp->user, "*");
6311 <    dlinkAdd(yy_tmp, &yy_tmp->node, &hub_conf_list);
6312 <  }
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 395:
5411 <
6318 < /* Line 1464 of yacc.c  */
6319 < #line 2531 "ircd_parser.y"
5410 >  case 426:
5411 > #line 2286 "conf_parser.y" /* yacc.c:1646  */
5412      {
5413    if (conf_parser_ctx.pass == 2)
5414 <  {
6323 <    struct CollectItem *yy_tmp;
6324 <
6325 <    yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6326 <    DupString(yy_tmp->host, yylval.string);
6327 <    DupString(yy_tmp->user, "*");
6328 <    dlinkAdd(yy_tmp, &yy_tmp->node, &leaf_conf_list);
6329 <  }
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 396:
5420 <
6335 < /* Line 1464 of yacc.c  */
6336 < #line 2544 "ircd_parser.y"
5419 >  case 427:
5420 > #line 2292 "conf_parser.y" /* yacc.c:1646  */
5421      {
5422    if (conf_parser_ctx.pass == 2)
5423 <  {
6340 <    MyFree(class_name);
6341 <    DupString(class_name, yylval.string);
6342 <  }
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 397:
5429 <
6348 < /* Line 1464 of yacc.c  */
6349 < #line 2553 "ircd_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 <  {
6354 <    struct EncCapability *ecap;
6355 <    const char *cipher_name;
6356 <    int found = 0;
6357 <
6358 <    yy_aconf->cipher_preference = NULL;
6359 <    cipher_name = yylval.string;
6360 <
6361 <    for (ecap = CipherTable; ecap->name; ecap++)
6362 <    {
6363 <      if ((irccmp(ecap->name, cipher_name) == 0) &&
6364 <          (ecap->cap & CAP_ENC_MASK))
6365 <      {
6366 <        yy_aconf->cipher_preference = ecap;
6367 <        found = 1;
6368 <        break;
6369 <      }
6370 <    }
6371 <
6372 <    if (!found)
6373 <      yyerror("Invalid cipher");
6374 <  }
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 cipher_preference -- 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 398:
5443 <
6384 < /* Line 1464 of yacc.c  */
6385 < #line 2588 "ircd_parser.y"
5442 >  case 429:
5443 > #line 2313 "conf_parser.y" /* yacc.c:1646  */
5444      {
5445    if (conf_parser_ctx.pass == 2)
5446 <  {
6389 <    userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
6390 <    regex_ban = 0;
6391 <  }
5446 >    reset_block_state();
5447   }
5448 + #line 5449 "conf_parser.c" /* yacc.c:1646  */
5449      break;
5450  
5451 <  case 399:
5452 <
6397 < /* Line 1464 of yacc.c  */
6398 < #line 2595 "ircd_parser.y"
6399 <    {
6400 <  if (conf_parser_ctx.pass == 2)
6401 <  {
6402 <    if (userbuf[0] && hostbuf[0])
5451 >  case 430:
5452 > #line 2317 "conf_parser.y" /* yacc.c:1646  */
5453      {
5454 <      if (regex_ban)
6405 <      {
6406 < #ifdef HAVE_LIBPCRE
6407 <        void *exp_user = NULL;
6408 <        void *exp_host = NULL;
6409 <        const char *errptr = NULL;
6410 <
6411 <        if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
6412 <            !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
6413 <        {
6414 <          ilog(L_ERROR, "Failed to add regular expression based K-Line: %s",
6415 <               errptr);
6416 <          break;
6417 <        }
6418 <
6419 <        yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
6420 <        yy_aconf->regexuser = exp_user;
6421 <        yy_aconf->regexhost = exp_host;
5454 >  struct MaskItem *conf = NULL;
5455  
5456 <        DupString(yy_aconf->user, userbuf);
6424 <        DupString(yy_aconf->host, hostbuf);
6425 <
6426 <        if (reasonbuf[0])
6427 <          DupString(yy_aconf->reason, reasonbuf);
6428 <        else
6429 <          DupString(yy_aconf->reason, "No reason");
6430 < #else
6431 <        ilog(L_ERROR, "Failed to add regular expression based K-Line: no PCRE support");
6432 <        break;
6433 < #endif
6434 <      }
6435 <      else
6436 <      {
6437 <        yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
6438 <
6439 <        DupString(yy_aconf->user, userbuf);
6440 <        DupString(yy_aconf->host, hostbuf);
6441 <
6442 <        if (reasonbuf[0])
6443 <          DupString(yy_aconf->reason, reasonbuf);
6444 <        else
6445 <          DupString(yy_aconf->reason, "No reason");
6446 <        add_conf_by_address(CONF_KILL, yy_aconf);
6447 <      }
6448 <    }
6449 <
6450 <    yy_aconf = NULL;
6451 <  }
6452 < }
5456 >  if (conf_parser_ctx.pass != 2)
5457      break;
5458  
5459 <  case 400:
5460 <
6457 < /* Line 1464 of yacc.c  */
6458 < #line 2651 "ircd_parser.y"
6459 <    {
6460 < }
5459 >  if (!block_state.user.buf[0] ||
5460 >      !block_state.host.buf[0])
5461      break;
5462  
5463 <  case 404:
5463 >  conf = conf_make(CONF_KLINE);
5464 >  conf->user = xstrdup(block_state.user.buf);
5465 >  conf->host = xstrdup(block_state.host.buf);
5466  
5467 < /* Line 1464 of yacc.c  */
5468 < #line 2656 "ircd_parser.y"
5469 <    {
5470 <  if (conf_parser_ctx.pass == 2)
5471 <    regex_ban = 1;
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 411:
5477 <
6475 < /* Line 1464 of yacc.c  */
6476 < #line 2665 "ircd_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 412:
5500 <
6498 < /* Line 1464 of yacc.c  */
6499 < #line 2684 "ircd_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 413:
5509 <
6508 < /* Line 1464 of yacc.c  */
6509 < #line 2693 "ircd_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 414:
5518 <
6518 < /* Line 1464 of yacc.c  */
6519 < #line 2697 "ircd_parser.y"
6520 <    {
6521 <  if (conf_parser_ctx.pass == 2)
6522 <  {
6523 <    if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
5517 >  case 439:
5518 > #line 2375 "conf_parser.y" /* yacc.c:1646  */
5519      {
5520 <      yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
6526 <      DupString(yy_aconf->host, hostbuf);
5520 >  struct MaskItem *conf = NULL;
5521  
5522 <      if (reasonbuf[0])
6529 <        DupString(yy_aconf->reason, reasonbuf);
6530 <      else
6531 <        DupString(yy_aconf->reason, "No reason");
6532 <      add_conf_by_address(CONF_DLINE, yy_aconf);
6533 <      yy_aconf = NULL;
6534 <    }
6535 <  }
6536 < }
5522 >  if (conf_parser_ctx.pass != 2)
5523      break;
5524  
5525 <  case 420:
6540 <
6541 < /* Line 1464 of yacc.c  */
6542 < #line 2719 "ircd_parser.y"
6543 <    {
6544 <  if (conf_parser_ctx.pass == 2)
6545 <    strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
6546 < }
5525 >  if (!block_state.addr.buf[0])
5526      break;
5527  
5528 <  case 421:
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 < /* Line 1464 of yacc.c  */
5534 < #line 2725 "ircd_parser.y"
5535 <    {
5536 <  if (conf_parser_ctx.pass == 2)
5537 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
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 427:
5544 <
6561 < /* Line 1464 of yacc.c  */
6562 < #line 2739 "ircd_parser.y"
5543 >  case 445:
5544 > #line 2401 "conf_parser.y" /* yacc.c:1646  */
5545      {
5546    if (conf_parser_ctx.pass == 2)
5547 <  {
6566 <    if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
6567 <    {
6568 <      yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
6569 <      DupString(yy_aconf->host, yylval.string);
6570 <
6571 <      add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
6572 <      yy_aconf = NULL;
6573 <    }
6574 <  }
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 428:
5553 <
6580 < /* Line 1464 of yacc.c  */
6581 < #line 2757 "ircd_parser.y"
5552 >  case 446:
5553 > #line 2407 "conf_parser.y" /* yacc.c:1646  */
5554      {
5555    if (conf_parser_ctx.pass == 2)
5556 <  {
6585 <    regex_ban = 0;
6586 <    reasonbuf[0] = gecos_name[0] = '\0';
6587 <  }
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 429:
5562 <
6593 < /* Line 1464 of yacc.c  */
6594 < #line 2764 "ircd_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 (gecos_name[0])
5566 >    if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5567      {
5568 <      if (regex_ban)
5569 <      {
6602 < #ifdef HAVE_LIBPCRE
6603 <        void *exp_p = NULL;
6604 <        const char *errptr = NULL;
6605 <
6606 <        if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
6607 <        {
6608 <          ilog(L_ERROR, "Failed to add regular expression based X-Line: %s",
6609 <               errptr);
6610 <          break;
6611 <        }
6612 <
6613 <        yy_conf = make_conf_item(RXLINE_TYPE);
6614 <        yy_conf->regexpname = exp_p;
6615 < #else
6616 <        ilog(L_ERROR, "Failed to add regular expression based X-Line: no PCRE support");
6617 <        break;
6618 < #endif
6619 <      }
6620 <      else
6621 <        yy_conf = make_conf_item(XLINE_TYPE);
6622 <
6623 <      yy_match_item = map_to_conf(yy_conf);
6624 <      DupString(yy_conf->name, gecos_name);
5568 >      struct MaskItem *conf = conf_make(CONF_EXEMPT);
5569 >      conf->host = xstrdup(yylval.string);
5570  
5571 <      if (reasonbuf[0])
6627 <        DupString(yy_match_item->reason, reasonbuf);
6628 <      else
6629 <        DupString(yy_match_item->reason, "No reason");
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 430:
5579 <
6637 < /* Line 1464 of yacc.c  */
6638 < #line 2804 "ircd_parser.y"
6639 <    {
6640 < }
6641 <    break;
6642 <
6643 <  case 434:
6644 <
6645 < /* Line 1464 of yacc.c  */
6646 < #line 2809 "ircd_parser.y"
6647 <    {
6648 <  if (conf_parser_ctx.pass == 2)
6649 <    regex_ban = 1;
6650 < }
6651 <    break;
6652 <
6653 <  case 441:
6654 <
6655 < /* Line 1464 of yacc.c  */
6656 < #line 2818 "ircd_parser.y"
6657 <    {
6658 <  if (conf_parser_ctx.pass == 2)
6659 <    strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
6660 < }
6661 <    break;
6662 <
6663 <  case 442:
6664 <
6665 < /* Line 1464 of yacc.c  */
6666 < #line 2824 "ircd_parser.y"
5578 >  case 453:
5579 > #line 2438 "conf_parser.y" /* yacc.c:1646  */
5580      {
5581    if (conf_parser_ctx.pass == 2)
5582 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6670 < }
6671 <    break;
6672 <
6673 <  case 502:
6674 <
6675 < /* Line 1464 of yacc.c  */
6676 < #line 2869 "ircd_parser.y"
6677 <    {
6678 <  ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
6679 < }
6680 <    break;
6681 <
6682 <  case 503:
6683 <
6684 < /* Line 1464 of yacc.c  */
6685 < #line 2874 "ircd_parser.y"
6686 <    {
6687 <  ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
6688 < }
6689 <    break;
6690 <
6691 <  case 504:
6692 <
6693 < /* Line 1464 of yacc.c  */
6694 < #line 2879 "ircd_parser.y"
6695 <    {
6696 <  ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
6697 < }
6698 <    break;
6699 <
6700 <  case 505:
6701 <
6702 < /* Line 1464 of yacc.c  */
6703 < #line 2884 "ircd_parser.y"
6704 <    {
6705 <  ConfigFileEntry.burst_away = yylval.number;
6706 < }
6707 <    break;
6708 <
6709 <  case 506:
6710 <
6711 < /* Line 1464 of yacc.c  */
6712 < #line 2889 "ircd_parser.y"
6713 <    {
6714 <  ConfigFileEntry.use_whois_actually = yylval.number;
5582 >    reset_block_state();
5583   }
5584 + #line 5585 "conf_parser.c" /* yacc.c:1646  */
5585      break;
5586  
5587 <  case 507:
5588 <
6720 < /* Line 1464 of yacc.c  */
6721 < #line 2894 "ircd_parser.y"
5587 >  case 454:
5588 > #line 2442 "conf_parser.y" /* yacc.c:1646  */
5589      {
5590 <  GlobalSetOptions.rejecttime = yylval.number;
6724 < }
6725 <    break;
6726 <
6727 <  case 508:
5590 >  struct MaskItem *conf = NULL;
5591  
5592 < /* Line 1464 of yacc.c  */
6730 < #line 2899 "ircd_parser.y"
6731 <    {
6732 <  ConfigFileEntry.tkline_expire_notices = yylval.number;
6733 < }
5592 >  if (conf_parser_ctx.pass != 2)
5593      break;
5594  
5595 <  case 509:
6737 <
6738 < /* Line 1464 of yacc.c  */
6739 < #line 2904 "ircd_parser.y"
6740 <    {
6741 <  ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
6742 < }
6743 <    break;
6744 <
6745 <  case 510:
6746 <
6747 < /* Line 1464 of yacc.c  */
6748 < #line 2909 "ircd_parser.y"
6749 <    {
6750 <  ConfigFileEntry.hide_spoof_ips = yylval.number;
6751 < }
6752 <    break;
6753 <
6754 <  case 511:
6755 <
6756 < /* Line 1464 of yacc.c  */
6757 < #line 2914 "ircd_parser.y"
6758 <    {
6759 <  ConfigFileEntry.ignore_bogus_ts = yylval.number;
6760 < }
6761 <    break;
6762 <
6763 <  case 512:
6764 <
6765 < /* Line 1464 of yacc.c  */
6766 < #line 2919 "ircd_parser.y"
6767 <    {
6768 <  ConfigFileEntry.disable_remote = yylval.number;
6769 < }
5595 >  if (!block_state.name.buf[0])
5596      break;
5597  
5598 <  case 513:
5598 >  conf = conf_make(CONF_XLINE);
5599 >  conf->name = xstrdup(block_state.name.buf);
5600  
5601 < /* Line 1464 of yacc.c  */
5602 < #line 2924 "ircd_parser.y"
5603 <    {
5604 <  ConfigFileEntry.failed_oper_notice = yylval.number;
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 514:
5610 <
6783 < /* Line 1464 of yacc.c  */
6784 < #line 2929 "ircd_parser.y"
5609 >  case 460:
5610 > #line 2464 "conf_parser.y" /* yacc.c:1646  */
5611      {
5612 <  ConfigFileEntry.anti_nick_flood = yylval.number;
5612 >  if (conf_parser_ctx.pass == 2)
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 515:
5619 <
6792 < /* Line 1464 of yacc.c  */
6793 < #line 2934 "ircd_parser.y"
5618 >  case 461:
5619 > #line 2470 "conf_parser.y" /* yacc.c:1646  */
5620      {
5621 <  ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
5621 >  if (conf_parser_ctx.pass == 2)
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 516:
5628 <
6801 < /* Line 1464 of yacc.c  */
6802 < #line 2939 "ircd_parser.y"
5628 > #line 2536 "conf_parser.y" /* yacc.c:1646  */
5629      {
5630 <  ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
5630 >  ConfigFileEntry.max_watch = (yyvsp[-1].number);
5631   }
5632 + #line 5633 "conf_parser.c" /* yacc.c:1646  */
5633      break;
5634  
5635    case 517:
5636 <
6810 < /* Line 1464 of yacc.c  */
6811 < #line 2944 "ircd_parser.y"
5636 > #line 2541 "conf_parser.y" /* yacc.c:1646  */
5637      {
5638 <  ConfigFileEntry.max_accept = (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 518:
5645 <
6819 < /* Line 1464 of yacc.c  */
6820 < #line 2949 "ircd_parser.y"
5645 > #line 2547 "conf_parser.y" /* yacc.c:1646  */
5646      {
5647 <  ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
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 519:
5654 <
6828 < /* Line 1464 of yacc.c  */
6829 < #line 2954 "ircd_parser.y"
5654 > #line 2553 "conf_parser.y" /* yacc.c:1646  */
5655      {
5656 <  ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
5656 >  if (conf_parser_ctx.pass == 2)
5657 >    ConfigFileEntry.gline_time = (yyvsp[-1].number);
5658   }
5659 + #line 5660 "conf_parser.c" /* yacc.c:1646  */
5660      break;
5661  
5662    case 520:
5663 <
6837 < /* Line 1464 of yacc.c  */
6838 < #line 2959 "ircd_parser.y"
5663 > #line 2559 "conf_parser.y" /* yacc.c:1646  */
5664      {
5665    if (conf_parser_ctx.pass == 2)
5666 <    ConfigFileEntry.ts_max_delta = (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 521:
5672 <
6847 < /* Line 1464 of yacc.c  */
6848 < #line 2965 "ircd_parser.y"
5672 > #line 2565 "conf_parser.y" /* yacc.c:1646  */
5673      {
5674 <  if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
6851 <  {
6852 <    ilog(L_CRIT, "You haven't read your config file properly.");
6853 <    ilog(L_CRIT, "There is a line in the example conf that will kill your server if not removed.");
6854 <    ilog(L_CRIT, "Consider actually reading/editing the conf file, and removing this line.");
6855 <    exit(0);
6856 <  }
5674 >  ConfigFileEntry.gline_min_cidr = (yyvsp[-1].number);
5675   }
5676 + #line 5677 "conf_parser.c" /* yacc.c:1646  */
5677      break;
5678  
5679    case 522:
5680 <
6862 < /* Line 1464 of yacc.c  */
6863 < #line 2976 "ircd_parser.y"
5680 > #line 2570 "conf_parser.y" /* yacc.c:1646  */
5681      {
5682 <  ConfigFileEntry.kline_with_reason = yylval.number;
5682 >  ConfigFileEntry.gline_min_cidr6 = (yyvsp[-1].number);
5683   }
5684 + #line 5685 "conf_parser.c" /* yacc.c:1646  */
5685      break;
5686  
5687    case 523:
5688 <
6871 < /* Line 1464 of yacc.c  */
6872 < #line 2981 "ircd_parser.y"
5688 > #line 2575 "conf_parser.y" /* yacc.c:1646  */
5689      {
5690 <  if (conf_parser_ctx.pass == 2)
6875 <  {
6876 <    MyFree(ConfigFileEntry.kline_reason);
6877 <    DupString(ConfigFileEntry.kline_reason, yylval.string);
6878 <  }
5690 >  ConfigFileEntry.tkline_expire_notices = yylval.number;
5691   }
5692 + #line 5693 "conf_parser.c" /* yacc.c:1646  */
5693      break;
5694  
5695    case 524:
5696 <
6884 < /* Line 1464 of yacc.c  */
6885 < #line 2990 "ircd_parser.y"
5696 > #line 2580 "conf_parser.y" /* yacc.c:1646  */
5697      {
5698 <  ConfigFileEntry.invisible_on_connect = yylval.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 525:
5704 <
6893 < /* Line 1464 of yacc.c  */
6894 < #line 2995 "ircd_parser.y"
5704 > #line 2585 "conf_parser.y" /* yacc.c:1646  */
5705      {
5706 <  ConfigFileEntry.warn_no_nline = yylval.number;
5706 >  ConfigFileEntry.hide_spoof_ips = yylval.number;
5707   }
5708 + #line 5709 "conf_parser.c" /* yacc.c:1646  */
5709      break;
5710  
5711    case 526:
5712 <
6902 < /* Line 1464 of yacc.c  */
6903 < #line 3000 "ircd_parser.y"
5712 > #line 2590 "conf_parser.y" /* yacc.c:1646  */
5713      {
5714 <  ConfigFileEntry.stats_e_disabled = yylval.number;
5714 >  ConfigFileEntry.ignore_bogus_ts = yylval.number;
5715   }
5716 + #line 5717 "conf_parser.c" /* yacc.c:1646  */
5717      break;
5718  
5719    case 527:
5720 <
6911 < /* Line 1464 of yacc.c  */
6912 < #line 3005 "ircd_parser.y"
5720 > #line 2595 "conf_parser.y" /* yacc.c:1646  */
5721      {
5722 <  ConfigFileEntry.stats_o_oper_only = yylval.number;
5722 >  ConfigFileEntry.failed_oper_notice = yylval.number;
5723   }
5724 + #line 5725 "conf_parser.c" /* yacc.c:1646  */
5725      break;
5726  
5727    case 528:
5728 <
6920 < /* Line 1464 of yacc.c  */
6921 < #line 3010 "ircd_parser.y"
5728 > #line 2600 "conf_parser.y" /* yacc.c:1646  */
5729      {
5730 <  ConfigFileEntry.stats_P_oper_only = yylval.number;
5730 >  ConfigFileEntry.anti_nick_flood = yylval.number;
5731   }
5732 + #line 5733 "conf_parser.c" /* yacc.c:1646  */
5733      break;
5734  
5735    case 529:
5736 <
6929 < /* Line 1464 of yacc.c  */
6930 < #line 3015 "ircd_parser.y"
5736 > #line 2605 "conf_parser.y" /* yacc.c:1646  */
5737      {
5738 <  ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
5738 >  ConfigFileEntry.max_nick_time = (yyvsp[-1].number);
5739   }
5740 + #line 5741 "conf_parser.c" /* yacc.c:1646  */
5741      break;
5742  
5743    case 530:
5744 <
6938 < /* Line 1464 of yacc.c  */
6939 < #line 3018 "ircd_parser.y"
5744 > #line 2610 "conf_parser.y" /* yacc.c:1646  */
5745      {
5746 <  ConfigFileEntry.stats_k_oper_only = 1;
5746 >  ConfigFileEntry.max_nick_changes = (yyvsp[-1].number);
5747   }
5748 + #line 5749 "conf_parser.c" /* yacc.c:1646  */
5749      break;
5750  
5751    case 531:
5752 <
6947 < /* Line 1464 of yacc.c  */
6948 < #line 3023 "ircd_parser.y"
5752 > #line 2615 "conf_parser.y" /* yacc.c:1646  */
5753      {
5754 <  ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
5754 >  ConfigFileEntry.max_accept = (yyvsp[-1].number);
5755   }
5756 + #line 5757 "conf_parser.c" /* yacc.c:1646  */
5757      break;
5758  
5759    case 532:
5760 <
6956 < /* Line 1464 of yacc.c  */
6957 < #line 3026 "ircd_parser.y"
5760 > #line 2620 "conf_parser.y" /* yacc.c:1646  */
5761      {
5762 <  ConfigFileEntry.stats_i_oper_only = 1;
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 533:
5768 <
6965 < /* Line 1464 of yacc.c  */
6966 < #line 3031 "ircd_parser.y"
5768 > #line 2625 "conf_parser.y" /* yacc.c:1646  */
5769      {
5770 <  ConfigFileEntry.pace_wait = (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 534:
5776 <
6974 < /* Line 1464 of yacc.c  */
6975 < #line 3036 "ircd_parser.y"
5776 > #line 2630 "conf_parser.y" /* yacc.c:1646  */
5777      {
5778 <  ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
5778 >  if (conf_parser_ctx.pass == 2)
5779 >    ConfigFileEntry.ts_max_delta = (yyvsp[-1].number);
5780   }
5781 + #line 5782 "conf_parser.c" /* yacc.c:1646  */
5782      break;
5783  
5784    case 535:
5785 <
6983 < /* Line 1464 of yacc.c  */
6984 < #line 3041 "ircd_parser.y"
5785 > #line 2636 "conf_parser.y" /* yacc.c:1646  */
5786      {
5787 <  ConfigFileEntry.opers_bypass_callerid = yylval.number;
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.");
5791 >    ilog(LOG_TYPE_IRCD, "Consider actually reading/editing the conf file, and removing this line.");
5792 >    exit(0);
5793 >  }
5794   }
5795 + #line 5796 "conf_parser.c" /* yacc.c:1646  */
5796      break;
5797  
5798    case 536:
5799 <
6992 < /* Line 1464 of yacc.c  */
6993 < #line 3046 "ircd_parser.y"
5799 > #line 2647 "conf_parser.y" /* yacc.c:1646  */
5800      {
5801 <  ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
5801 >  ConfigFileEntry.invisible_on_connect = yylval.number;
5802   }
5803 + #line 5804 "conf_parser.c" /* yacc.c:1646  */
5804      break;
5805  
5806    case 537:
5807 <
7001 < /* Line 1464 of yacc.c  */
7002 < #line 3051 "ircd_parser.y"
5807 > #line 2652 "conf_parser.y" /* yacc.c:1646  */
5808      {
5809 <  ConfigFileEntry.short_motd = 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 538:
5815 <
7010 < /* Line 1464 of yacc.c  */
7011 < #line 3056 "ircd_parser.y"
5815 > #line 2657 "conf_parser.y" /* yacc.c:1646  */
5816      {
5817 <  ConfigFileEntry.no_oper_flood = yylval.number;
5817 >  ConfigFileEntry.stats_e_disabled = yylval.number;
5818   }
5819 + #line 5820 "conf_parser.c" /* yacc.c:1646  */
5820      break;
5821  
5822    case 539:
5823 <
7019 < /* Line 1464 of yacc.c  */
7020 < #line 3061 "ircd_parser.y"
5823 > #line 2662 "conf_parser.y" /* yacc.c:1646  */
5824      {
5825 <  ConfigFileEntry.true_no_oper_flood = yylval.number;
5825 >  ConfigFileEntry.stats_o_oper_only = yylval.number;
5826   }
5827 + #line 5828 "conf_parser.c" /* yacc.c:1646  */
5828      break;
5829  
5830    case 540:
5831 <
7028 < /* Line 1464 of yacc.c  */
7029 < #line 3066 "ircd_parser.y"
5831 > #line 2667 "conf_parser.y" /* yacc.c:1646  */
5832      {
5833 <  ConfigFileEntry.oper_pass_resv = yylval.number;
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 <
7037 < /* Line 1464 of yacc.c  */
7038 < #line 3071 "ircd_parser.y"
5839 > #line 2672 "conf_parser.y" /* yacc.c:1646  */
5840      {
5841 <  if (conf_parser_ctx.pass == 2)
7041 <  {
7042 <    if (strlen(yylval.string) > LOCALE_LENGTH-2)
7043 <      yylval.string[LOCALE_LENGTH-1] = '\0';
7044 <
7045 <    set_locale(yylval.string);
7046 <  }
5841 >  ConfigFileEntry.stats_u_oper_only = yylval.number;
5842   }
5843 + #line 5844 "conf_parser.c" /* yacc.c:1646  */
5844      break;
5845  
5846    case 542:
5847 <
7052 < /* Line 1464 of yacc.c  */
7053 < #line 3082 "ircd_parser.y"
5847 > #line 2677 "conf_parser.y" /* yacc.c:1646  */
5848      {
5849 <  ConfigFileEntry.idletime = (yyvsp[(3) - (4)].number);
5849 >  ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
5850   }
5851 + #line 5852 "conf_parser.c" /* yacc.c:1646  */
5852      break;
5853  
5854    case 543:
5855 <
7061 < /* Line 1464 of yacc.c  */
7062 < #line 3087 "ircd_parser.y"
5855 > #line 2680 "conf_parser.y" /* yacc.c:1646  */
5856      {
5857 <  ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
5857 >  ConfigFileEntry.stats_k_oper_only = 1;
5858   }
5859 + #line 5860 "conf_parser.c" /* yacc.c:1646  */
5860      break;
5861  
5862    case 544:
5863 <
7070 < /* Line 1464 of yacc.c  */
7071 < #line 3092 "ircd_parser.y"
5863 > #line 2685 "conf_parser.y" /* yacc.c:1646  */
5864      {
5865 <  ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
5865 >  ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
5866   }
5867 + #line 5868 "conf_parser.c" /* yacc.c:1646  */
5868      break;
5869  
5870    case 545:
5871 <
7079 < /* Line 1464 of yacc.c  */
7080 < #line 3097 "ircd_parser.y"
5871 > #line 2688 "conf_parser.y" /* yacc.c:1646  */
5872      {
5873 <  if (conf_parser_ctx.pass == 2)
7083 <  {
7084 <    MyFree(ConfigFileEntry.servlink_path);
7085 <    DupString(ConfigFileEntry.servlink_path, yylval.string);
7086 <  }
5873 >  ConfigFileEntry.stats_i_oper_only = 1;
5874   }
5875 + #line 5876 "conf_parser.c" /* yacc.c:1646  */
5876      break;
5877  
5878    case 546:
5879 <
7092 < /* Line 1464 of yacc.c  */
7093 < #line 3106 "ircd_parser.y"
7094 <    {
7095 < #ifdef HAVE_LIBCRYPTO
7096 <  if (conf_parser_ctx.pass == 2)
7097 <  {
7098 <    struct EncCapability *ecap;
7099 <    const char *cipher_name;
7100 <    int found = 0;
7101 <
7102 <    ConfigFileEntry.default_cipher_preference = NULL;
7103 <    cipher_name = yylval.string;
7104 <
7105 <    for (ecap = CipherTable; ecap->name; ecap++)
5879 > #line 2693 "conf_parser.y" /* yacc.c:1646  */
5880      {
5881 <      if ((irccmp(ecap->name, cipher_name) == 0) &&
7108 <          (ecap->cap & CAP_ENC_MASK))
7109 <      {
7110 <        ConfigFileEntry.default_cipher_preference = ecap;
7111 <        found = 1;
7112 <        break;
7113 <      }
7114 <    }
7115 <
7116 <    if (!found)
7117 <      yyerror("Invalid cipher");
7118 <  }
7119 < #else
7120 <  if (conf_parser_ctx.pass == 2)
7121 <    yyerror("Ignoring default_cipher_preference -- no OpenSSL support");
7122 < #endif
5881 >  ConfigFileEntry.pace_wait = (yyvsp[-1].number);
5882   }
5883 + #line 5884 "conf_parser.c" /* yacc.c:1646  */
5884      break;
5885  
5886    case 547:
5887 <
7128 < /* Line 1464 of yacc.c  */
7129 < #line 3138 "ircd_parser.y"
5887 > #line 2698 "conf_parser.y" /* yacc.c:1646  */
5888      {
5889 <  if (conf_parser_ctx.pass == 2)
7132 <  {
7133 <    ConfigFileEntry.compression_level = (yyvsp[(3) - (4)].number);
7134 < #ifndef HAVE_LIBZ
7135 <    yyerror("Ignoring compression_level -- no zlib support");
7136 < #else
7137 <    if ((ConfigFileEntry.compression_level < 1) ||
7138 <        (ConfigFileEntry.compression_level > 9))
7139 <    {
7140 <      yyerror("Ignoring invalid compression_level, using default");
7141 <      ConfigFileEntry.compression_level = 0;
7142 <    }
7143 < #endif
7144 <  }
5889 >  ConfigFileEntry.caller_id_wait = (yyvsp[-1].number);
5890   }
5891 + #line 5892 "conf_parser.c" /* yacc.c:1646  */
5892      break;
5893  
5894    case 548:
5895 <
7150 < /* Line 1464 of yacc.c  */
7151 < #line 3156 "ircd_parser.y"
5895 > #line 2703 "conf_parser.y" /* yacc.c:1646  */
5896      {
5897 <  ConfigFileEntry.use_egd = yylval.number;
5897 >  ConfigFileEntry.opers_bypass_callerid = yylval.number;
5898   }
5899 + #line 5900 "conf_parser.c" /* yacc.c:1646  */
5900      break;
5901  
5902    case 549:
5903 <
7159 < /* Line 1464 of yacc.c  */
7160 < #line 3161 "ircd_parser.y"
5903 > #line 2708 "conf_parser.y" /* yacc.c:1646  */
5904      {
5905 <  if (conf_parser_ctx.pass == 2)
7163 <  {
7164 <    MyFree(ConfigFileEntry.egdpool_path);
7165 <    DupString(ConfigFileEntry.egdpool_path, yylval.string);
7166 <  }
5905 >  ConfigFileEntry.pace_wait_simple = (yyvsp[-1].number);
5906   }
5907 + #line 5908 "conf_parser.c" /* yacc.c:1646  */
5908      break;
5909  
5910    case 550:
5911 <
7172 < /* Line 1464 of yacc.c  */
7173 < #line 3170 "ircd_parser.y"
5911 > #line 2713 "conf_parser.y" /* yacc.c:1646  */
5912      {
5913 <  ConfigFileEntry.ping_cookie = yylval.number;
5913 >  ConfigFileEntry.short_motd = yylval.number;
5914   }
5915 + #line 5916 "conf_parser.c" /* yacc.c:1646  */
5916      break;
5917  
5918    case 551:
5919 <
7181 < /* Line 1464 of yacc.c  */
7182 < #line 3175 "ircd_parser.y"
5919 > #line 2718 "conf_parser.y" /* yacc.c:1646  */
5920      {
5921 <  ConfigFileEntry.disable_auth = yylval.number;
5921 >  ConfigFileEntry.no_oper_flood = yylval.number;
5922   }
5923 + #line 5924 "conf_parser.c" /* yacc.c:1646  */
5924      break;
5925  
5926    case 552:
5927 <
7190 < /* Line 1464 of yacc.c  */
7191 < #line 3180 "ircd_parser.y"
5927 > #line 2723 "conf_parser.y" /* yacc.c:1646  */
5928      {
5929 <  ConfigFileEntry.throttle_time = yylval.number;
5929 >  ConfigFileEntry.true_no_oper_flood = yylval.number;
5930   }
5931 + #line 5932 "conf_parser.c" /* yacc.c:1646  */
5932      break;
5933  
5934    case 553:
5935 <
7199 < /* Line 1464 of yacc.c  */
7200 < #line 3185 "ircd_parser.y"
5935 > #line 2728 "conf_parser.y" /* yacc.c:1646  */
5936      {
5937 <  ConfigFileEntry.oper_umodes = 0;
5937 >  ConfigFileEntry.oper_pass_resv = yylval.number;
5938   }
5939 + #line 5940 "conf_parser.c" /* yacc.c:1646  */
5940      break;
5941  
5942 <  case 557:
5943 <
7208 < /* Line 1464 of yacc.c  */
7209 < #line 3191 "ircd_parser.y"
5942 >  case 554:
5943 > #line 2733 "conf_parser.y" /* yacc.c:1646  */
5944      {
5945 <  ConfigFileEntry.oper_umodes |= UMODE_BOTS;
5945 >  ConfigFileEntry.dots_in_ident = (yyvsp[-1].number);
5946   }
5947 + #line 5948 "conf_parser.c" /* yacc.c:1646  */
5948      break;
5949  
5950 <  case 558:
5951 <
7217 < /* Line 1464 of yacc.c  */
7218 < #line 3194 "ircd_parser.y"
5950 >  case 555:
5951 > #line 2738 "conf_parser.y" /* yacc.c:1646  */
5952      {
5953 <  ConfigFileEntry.oper_umodes |= UMODE_CCONN;
5953 >  ConfigFileEntry.max_targets = (yyvsp[-1].number);
5954   }
5955 + #line 5956 "conf_parser.c" /* yacc.c:1646  */
5956      break;
5957  
5958 <  case 559:
5959 <
7226 < /* Line 1464 of yacc.c  */
7227 < #line 3197 "ircd_parser.y"
5958 >  case 556:
5959 > #line 2743 "conf_parser.y" /* yacc.c:1646  */
5960      {
5961 <  ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
5961 >  ConfigFileEntry.use_egd = yylval.number;
5962   }
5963 + #line 5964 "conf_parser.c" /* yacc.c:1646  */
5964      break;
5965  
5966 <  case 560:
5967 <
7235 < /* Line 1464 of yacc.c  */
7236 < #line 3200 "ircd_parser.y"
5966 >  case 557:
5967 > #line 2748 "conf_parser.y" /* yacc.c:1646  */
5968      {
5969 <  ConfigFileEntry.oper_umodes |= UMODE_DEAF;
5969 >  if (conf_parser_ctx.pass == 2)
5970 >  {
5971 >    MyFree(ConfigFileEntry.egdpool_path);
5972 >    ConfigFileEntry.egdpool_path = xstrdup(yylval.string);
5973 >  }
5974   }
5975 + #line 5976 "conf_parser.c" /* yacc.c:1646  */
5976      break;
5977  
5978 <  case 561:
5979 <
7244 < /* Line 1464 of yacc.c  */
7245 < #line 3203 "ircd_parser.y"
5978 >  case 558:
5979 > #line 2757 "conf_parser.y" /* yacc.c:1646  */
5980      {
5981 <  ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
5981 >  if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
5982 >  {
5983 >    MyFree(ConfigFileEntry.service_name);
5984 >    ConfigFileEntry.service_name = xstrdup(yylval.string);
5985 >  }
5986   }
5987 + #line 5988 "conf_parser.c" /* yacc.c:1646  */
5988      break;
5989  
5990 <  case 562:
5991 <
7253 < /* Line 1464 of yacc.c  */
7254 < #line 3206 "ircd_parser.y"
5990 >  case 559:
5991 > #line 2766 "conf_parser.y" /* yacc.c:1646  */
5992      {
5993 <  ConfigFileEntry.oper_umodes |= UMODE_FULL;
5993 >  ConfigFileEntry.ping_cookie = yylval.number;
5994   }
5995 + #line 5996 "conf_parser.c" /* yacc.c:1646  */
5996      break;
5997  
5998 <  case 563:
5999 <
7262 < /* Line 1464 of yacc.c  */
7263 < #line 3209 "ircd_parser.y"
5998 >  case 560:
5999 > #line 2771 "conf_parser.y" /* yacc.c:1646  */
6000      {
6001 <  ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6001 >  ConfigFileEntry.disable_auth = yylval.number;
6002   }
6003 + #line 6004 "conf_parser.c" /* yacc.c:1646  */
6004      break;
6005  
6006 <  case 564:
6007 <
7271 < /* Line 1464 of yacc.c  */
7272 < #line 3212 "ircd_parser.y"
6006 >  case 561:
6007 > #line 2776 "conf_parser.y" /* yacc.c:1646  */
6008      {
6009 <  ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6009 >  ConfigFileEntry.throttle_count = (yyvsp[-1].number);
6010   }
6011 + #line 6012 "conf_parser.c" /* yacc.c:1646  */
6012      break;
6013  
6014 <  case 565:
6015 <
7280 < /* Line 1464 of yacc.c  */
7281 < #line 3215 "ircd_parser.y"
6014 >  case 562:
6015 > #line 2781 "conf_parser.y" /* yacc.c:1646  */
6016      {
6017 <  ConfigFileEntry.oper_umodes |= UMODE_REJ;
6017 >  ConfigFileEntry.throttle_time = (yyvsp[-1].number);
6018   }
6019 + #line 6020 "conf_parser.c" /* yacc.c:1646  */
6020      break;
6021  
6022 <  case 566:
6023 <
7289 < /* Line 1464 of yacc.c  */
7290 < #line 3218 "ircd_parser.y"
6022 >  case 563:
6023 > #line 2786 "conf_parser.y" /* yacc.c:1646  */
6024      {
6025 <  ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6025 >  ConfigFileEntry.oper_umodes = 0;
6026   }
6027 + #line 6028 "conf_parser.c" /* yacc.c:1646  */
6028      break;
6029  
6030    case 567:
6031 <
7298 < /* Line 1464 of yacc.c  */
7299 < #line 3221 "ircd_parser.y"
6031 > #line 2792 "conf_parser.y" /* yacc.c:1646  */
6032      {
6033 <  ConfigFileEntry.oper_umodes |= UMODE_SPY;
6033 >  ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6034   }
6035 + #line 6036 "conf_parser.c" /* yacc.c:1646  */
6036      break;
6037  
6038    case 568:
6039 <
7307 < /* Line 1464 of yacc.c  */
7308 < #line 3224 "ircd_parser.y"
6039 > #line 2795 "conf_parser.y" /* yacc.c:1646  */
6040      {
6041 <  ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6041 >  ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6042   }
6043 + #line 6044 "conf_parser.c" /* yacc.c:1646  */
6044      break;
6045  
6046    case 569:
6047 <
7316 < /* Line 1464 of yacc.c  */
7317 < #line 3227 "ircd_parser.y"
6047 > #line 2798 "conf_parser.y" /* yacc.c:1646  */
6048      {
6049 <  ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
6049 >  ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6050   }
6051 + #line 6052 "conf_parser.c" /* yacc.c:1646  */
6052      break;
6053  
6054    case 570:
6055 <
7325 < /* Line 1464 of yacc.c  */
7326 < #line 3230 "ircd_parser.y"
6055 > #line 2801 "conf_parser.y" /* yacc.c:1646  */
6056      {
6057 <  ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6057 >  ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6058   }
6059 + #line 6060 "conf_parser.c" /* yacc.c:1646  */
6060      break;
6061  
6062    case 571:
6063 <
7334 < /* Line 1464 of yacc.c  */
7335 < #line 3233 "ircd_parser.y"
6063 > #line 2804 "conf_parser.y" /* yacc.c:1646  */
6064      {
6065 <  ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6065 >  ConfigFileEntry.oper_umodes |= UMODE_FULL;
6066   }
6067 + #line 6068 "conf_parser.c" /* yacc.c:1646  */
6068      break;
6069  
6070    case 572:
6071 <
7343 < /* Line 1464 of yacc.c  */
7344 < #line 3236 "ircd_parser.y"
6071 > #line 2807 "conf_parser.y" /* yacc.c:1646  */
6072      {
6073 <  ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6073 >  ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6074   }
6075 + #line 6076 "conf_parser.c" /* yacc.c:1646  */
6076      break;
6077  
6078    case 573:
6079 <
7352 < /* Line 1464 of yacc.c  */
7353 < #line 3239 "ircd_parser.y"
6079 > #line 2810 "conf_parser.y" /* yacc.c:1646  */
6080      {
6081 <  ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6081 >  ConfigFileEntry.oper_umodes |= UMODE_HIDECHANS;
6082   }
6083 + #line 6084 "conf_parser.c" /* yacc.c:1646  */
6084      break;
6085  
6086    case 574:
6087 <
7361 < /* Line 1464 of yacc.c  */
7362 < #line 3242 "ircd_parser.y"
6087 > #line 2813 "conf_parser.y" /* yacc.c:1646  */
6088      {
6089 <  ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6089 >  ConfigFileEntry.oper_umodes |= UMODE_HIDEIDLE;
6090   }
6091 + #line 6092 "conf_parser.c" /* yacc.c:1646  */
6092      break;
6093  
6094    case 575:
6095 <
7370 < /* Line 1464 of yacc.c  */
7371 < #line 3245 "ircd_parser.y"
6095 > #line 2816 "conf_parser.y" /* yacc.c:1646  */
6096      {
6097 <  ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6097 >  ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6098   }
6099 + #line 6100 "conf_parser.c" /* yacc.c:1646  */
6100      break;
6101  
6102    case 576:
6103 <
7379 < /* Line 1464 of yacc.c  */
7380 < #line 3250 "ircd_parser.y"
6103 > #line 2819 "conf_parser.y" /* yacc.c:1646  */
6104      {
6105 <  ConfigFileEntry.oper_only_umodes = 0;
6105 >  ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6106   }
6107 + #line 6108 "conf_parser.c" /* yacc.c:1646  */
6108      break;
6109  
6110 <  case 580:
6111 <
7388 < /* Line 1464 of yacc.c  */
7389 < #line 3256 "ircd_parser.y"
6110 >  case 577:
6111 > #line 2822 "conf_parser.y" /* yacc.c:1646  */
6112      {
6113 <  ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6113 >  ConfigFileEntry.oper_umodes |= UMODE_REJ;
6114   }
6115 + #line 6116 "conf_parser.c" /* yacc.c:1646  */
6116      break;
6117  
6118 <  case 581:
6119 <
7397 < /* Line 1464 of yacc.c  */
7398 < #line 3259 "ircd_parser.y"
6118 >  case 578:
6119 > #line 2825 "conf_parser.y" /* yacc.c:1646  */
6120      {
6121 <  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6121 >  ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6122   }
6123 + #line 6124 "conf_parser.c" /* yacc.c:1646  */
6124      break;
6125  
6126 <  case 582:
6127 <
7406 < /* Line 1464 of yacc.c  */
7407 < #line 3262 "ircd_parser.y"
6126 >  case 579:
6127 > #line 2828 "conf_parser.y" /* yacc.c:1646  */
6128      {
6129 <  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
6129 >  ConfigFileEntry.oper_umodes |= UMODE_SPY;
6130   }
6131 + #line 6132 "conf_parser.c" /* yacc.c:1646  */
6132      break;
6133  
6134 <  case 583:
6135 <
7415 < /* Line 1464 of yacc.c  */
7416 < #line 3265 "ircd_parser.y"
6134 >  case 580:
6135 > #line 2831 "conf_parser.y" /* yacc.c:1646  */
6136      {
6137 <  ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
6137 >  ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6138   }
6139 + #line 6140 "conf_parser.c" /* yacc.c:1646  */
6140      break;
6141  
6142 <  case 584:
6143 <
7424 < /* Line 1464 of yacc.c  */
7425 < #line 3268 "ircd_parser.y"
6142 >  case 581:
6143 > #line 2834 "conf_parser.y" /* yacc.c:1646  */
6144      {
6145 <  ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
6145 >  ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6146   }
6147 + #line 6148 "conf_parser.c" /* yacc.c:1646  */
6148      break;
6149  
6150 <  case 585:
6151 <
6152 < /* Line 1464 of yacc.c  */
6153 < #line 3271 "ircd_parser.y"
7435 <    {
7436 <  ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
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 586:
6159 <
7442 < /* Line 1464 of yacc.c  */
7443 < #line 3274 "ircd_parser.y"
6158 >  case 583:
6159 > #line 2840 "conf_parser.y" /* yacc.c:1646  */
6160      {
6161 <  ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
6161 >  ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6162   }
6163 + #line 6164 "conf_parser.c" /* yacc.c:1646  */
6164      break;
6165  
6166 <  case 587:
6167 <
7451 < /* Line 1464 of yacc.c  */
7452 < #line 3277 "ircd_parser.y"
6166 >  case 584:
6167 > #line 2843 "conf_parser.y" /* yacc.c:1646  */
6168      {
6169 <  ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
6169 >  ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6170   }
6171 + #line 6172 "conf_parser.c" /* yacc.c:1646  */
6172      break;
6173  
6174 <  case 588:
6175 <
7460 < /* Line 1464 of yacc.c  */
7461 < #line 3280 "ircd_parser.y"
6174 >  case 585:
6175 > #line 2846 "conf_parser.y" /* yacc.c:1646  */
6176      {
6177 <  ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
6177 >  ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6178   }
6179 + #line 6180 "conf_parser.c" /* yacc.c:1646  */
6180      break;
6181  
6182 <  case 589:
6183 <
7469 < /* Line 1464 of yacc.c  */
7470 < #line 3283 "ircd_parser.y"
6182 >  case 586:
6183 > #line 2849 "conf_parser.y" /* yacc.c:1646  */
6184      {
6185 <  ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
6185 >  ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6186   }
6187 + #line 6188 "conf_parser.c" /* yacc.c:1646  */
6188      break;
6189  
6190 <  case 590:
6191 <
7478 < /* Line 1464 of yacc.c  */
7479 < #line 3286 "ircd_parser.y"
6190 >  case 587:
6191 > #line 2852 "conf_parser.y" /* yacc.c:1646  */
6192      {
6193 <  ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
6193 >  ConfigFileEntry.oper_umodes |= UMODE_REGONLY;
6194   }
6195 + #line 6196 "conf_parser.c" /* yacc.c:1646  */
6196      break;
6197  
6198 <  case 591:
6199 <
7487 < /* Line 1464 of yacc.c  */
7488 < #line 3289 "ircd_parser.y"
6198 >  case 588:
6199 > #line 2855 "conf_parser.y" /* yacc.c:1646  */
6200      {
6201 <  ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
6201 >  ConfigFileEntry.oper_umodes |= UMODE_FARCONNECT;
6202   }
6203 + #line 6204 "conf_parser.c" /* yacc.c:1646  */
6204      break;
6205  
6206 <  case 592:
6207 <
7496 < /* Line 1464 of yacc.c  */
7497 < #line 3292 "ircd_parser.y"
6206 >  case 589:
6207 > #line 2860 "conf_parser.y" /* yacc.c:1646  */
6208      {
6209 <  ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
6209 >  ConfigFileEntry.oper_only_umodes = 0;
6210   }
6211 + #line 6212 "conf_parser.c" /* yacc.c:1646  */
6212      break;
6213  
6214    case 593:
6215 <
7505 < /* Line 1464 of yacc.c  */
7506 < #line 3295 "ircd_parser.y"
6215 > #line 2866 "conf_parser.y" /* yacc.c:1646  */
6216      {
6217 <  ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
6217 >  ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6218   }
6219 + #line 6220 "conf_parser.c" /* yacc.c:1646  */
6220      break;
6221  
6222    case 594:
6223 <
7514 < /* Line 1464 of yacc.c  */
7515 < #line 3298 "ircd_parser.y"
6223 > #line 2869 "conf_parser.y" /* yacc.c:1646  */
6224      {
6225 <  ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
6225 >  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6226   }
6227 + #line 6228 "conf_parser.c" /* yacc.c:1646  */
6228      break;
6229  
6230    case 595:
6231 <
7523 < /* Line 1464 of yacc.c  */
7524 < #line 3301 "ircd_parser.y"
6231 > #line 2872 "conf_parser.y" /* yacc.c:1646  */
6232      {
6233 <  ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
6233 >  ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
6234   }
6235 + #line 6236 "conf_parser.c" /* yacc.c:1646  */
6236      break;
6237  
6238    case 596:
6239 <
7532 < /* Line 1464 of yacc.c  */
7533 < #line 3304 "ircd_parser.y"
6239 > #line 2875 "conf_parser.y" /* yacc.c:1646  */
6240      {
6241 <  ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
6241 >  ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
6242   }
6243 + #line 6244 "conf_parser.c" /* yacc.c:1646  */
6244      break;
6245  
6246    case 597:
6247 <
7541 < /* Line 1464 of yacc.c  */
7542 < #line 3307 "ircd_parser.y"
6247 > #line 2878 "conf_parser.y" /* yacc.c:1646  */
6248      {
6249 <  ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
6249 >  ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
6250   }
6251 + #line 6252 "conf_parser.c" /* yacc.c:1646  */
6252      break;
6253  
6254    case 598:
6255 <
7550 < /* Line 1464 of yacc.c  */
7551 < #line 3310 "ircd_parser.y"
6255 > #line 2881 "conf_parser.y" /* yacc.c:1646  */
6256      {
6257 <  ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
6257 >  ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
6258   }
6259 + #line 6260 "conf_parser.c" /* yacc.c:1646  */
6260      break;
6261  
6262    case 599:
6263 <
7559 < /* Line 1464 of yacc.c  */
7560 < #line 3315 "ircd_parser.y"
6263 > #line 2884 "conf_parser.y" /* yacc.c:1646  */
6264      {
6265 <  ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
6265 >  ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
6266   }
6267 + #line 6268 "conf_parser.c" /* yacc.c:1646  */
6268      break;
6269  
6270    case 600:
6271 <
7568 < /* Line 1464 of yacc.c  */
7569 < #line 3320 "ircd_parser.y"
6271 > #line 2887 "conf_parser.y" /* yacc.c:1646  */
6272      {
6273 <  ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
6273 >  ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
6274   }
6275 + #line 6276 "conf_parser.c" /* yacc.c:1646  */
6276      break;
6277  
6278    case 601:
6279 <
7577 < /* Line 1464 of yacc.c  */
7578 < #line 3325 "ircd_parser.y"
6279 > #line 2890 "conf_parser.y" /* yacc.c:1646  */
6280      {
6281 <  ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
6281 >  ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
6282   }
6283 + #line 6284 "conf_parser.c" /* yacc.c:1646  */
6284      break;
6285  
6286    case 602:
6287 <
7586 < /* Line 1464 of yacc.c  */
7587 < #line 3330 "ircd_parser.y"
6287 > #line 2893 "conf_parser.y" /* yacc.c:1646  */
6288      {
6289 <  ConfigFileEntry.client_flood = (yyvsp[(3) - (4)].number);
6289 >  ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
6290   }
6291 + #line 6292 "conf_parser.c" /* yacc.c:1646  */
6292      break;
6293  
6294    case 603:
6295 <
7595 < /* Line 1464 of yacc.c  */
7596 < #line 3339 "ircd_parser.y"
6295 > #line 2896 "conf_parser.y" /* yacc.c:1646  */
6296      {
6297 <  if (conf_parser_ctx.pass == 2)
7599 <  {
7600 <    yy_conf = make_conf_item(GDENY_TYPE);
7601 <    yy_aconf = map_to_conf(yy_conf);
7602 <  }
6297 >  ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
6298   }
6299 + #line 6300 "conf_parser.c" /* yacc.c:1646  */
6300      break;
6301  
6302    case 604:
6303 <
7608 < /* Line 1464 of yacc.c  */
7609 < #line 3346 "ircd_parser.y"
7610 <    {
7611 <  if (conf_parser_ctx.pass == 2)
7612 <  {
7613 <    /*
7614 <     * since we re-allocate yy_conf/yy_aconf after the end of action=, at the
7615 <     * end we will have one extra, so we should free it.
7616 <     */
7617 <    if (yy_conf->name == NULL || yy_aconf->user == NULL)
6303 > #line 2899 "conf_parser.y" /* yacc.c:1646  */
6304      {
6305 <      delete_conf_item(yy_conf);
7620 <      yy_conf = NULL;
7621 <      yy_aconf = NULL;
7622 <    }
7623 <  }
6305 >  ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
6306   }
6307 + #line 6308 "conf_parser.c" /* yacc.c:1646  */
6308      break;
6309  
6310 <  case 614:
6311 <
7629 < /* Line 1464 of yacc.c  */
7630 < #line 3372 "ircd_parser.y"
6310 >  case 605:
6311 > #line 2902 "conf_parser.y" /* yacc.c:1646  */
6312      {
6313 <  if (conf_parser_ctx.pass == 2)
7633 <    ConfigFileEntry.glines = yylval.number;
6313 >  ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
6314   }
6315 + #line 6316 "conf_parser.c" /* yacc.c:1646  */
6316      break;
6317  
6318 <  case 615:
6319 <
7639 < /* Line 1464 of yacc.c  */
7640 < #line 3378 "ircd_parser.y"
6318 >  case 606:
6319 > #line 2905 "conf_parser.y" /* yacc.c:1646  */
6320      {
6321 <  if (conf_parser_ctx.pass == 2)
7643 <    ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
6321 >  ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
6322   }
6323 + #line 6324 "conf_parser.c" /* yacc.c:1646  */
6324      break;
6325  
6326 <  case 616:
6327 <
7649 < /* Line 1464 of yacc.c  */
7650 < #line 3384 "ircd_parser.y"
6326 >  case 607:
6327 > #line 2908 "conf_parser.y" /* yacc.c:1646  */
6328      {
6329 <  if (conf_parser_ctx.pass == 2)
7653 <    ConfigFileEntry.gline_logging = 0;
6329 >  ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
6330   }
6331 + #line 6332 "conf_parser.c" /* yacc.c:1646  */
6332      break;
6333  
6334 <  case 620:
6335 <
7659 < /* Line 1464 of yacc.c  */
7660 < #line 3390 "ircd_parser.y"
6334 >  case 608:
6335 > #line 2911 "conf_parser.y" /* yacc.c:1646  */
6336      {
6337 <  if (conf_parser_ctx.pass == 2)
7663 <    ConfigFileEntry.gline_logging |= GDENY_REJECT;
6337 >  ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
6338   }
6339 + #line 6340 "conf_parser.c" /* yacc.c:1646  */
6340      break;
6341  
6342 <  case 621:
6343 <
7669 < /* Line 1464 of yacc.c  */
7670 < #line 3394 "ircd_parser.y"
6342 >  case 609:
6343 > #line 2914 "conf_parser.y" /* yacc.c:1646  */
6344      {
6345 <  if (conf_parser_ctx.pass == 2)
7673 <    ConfigFileEntry.gline_logging |= GDENY_BLOCK;
6345 >  ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
6346   }
6347 + #line 6348 "conf_parser.c" /* yacc.c:1646  */
6348      break;
6349  
6350 <  case 622:
6351 <
7679 < /* Line 1464 of yacc.c  */
7680 < #line 3400 "ircd_parser.y"
7681 <    {
7682 <  if (conf_parser_ctx.pass == 2)
7683 <  {
7684 <    struct split_nuh_item nuh;
7685 <
7686 <    nuh.nuhmask  = yylval.string;
7687 <    nuh.nickptr  = NULL;
7688 <    nuh.userptr  = userbuf;
7689 <    nuh.hostptr  = hostbuf;
7690 <
7691 <    nuh.nicksize = 0;
7692 <    nuh.usersize = sizeof(userbuf);
7693 <    nuh.hostsize = sizeof(hostbuf);
7694 <
7695 <    split_nuh(&nuh);
7696 <
7697 <    if (yy_aconf->user == NULL)
7698 <    {
7699 <      DupString(yy_aconf->user, userbuf);
7700 <      DupString(yy_aconf->host, hostbuf);
7701 <    }
7702 <    else
6350 >  case 610:
6351 > #line 2917 "conf_parser.y" /* yacc.c:1646  */
6352      {
6353 <      struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
7705 <
7706 <      DupString(yy_tmp->user, userbuf);
7707 <      DupString(yy_tmp->host, hostbuf);
7708 <
7709 <      dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
7710 <    }
7711 <  }
6353 >  ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
6354   }
6355 + #line 6356 "conf_parser.c" /* yacc.c:1646  */
6356      break;
6357  
6358 <  case 623:
6359 <
7717 < /* Line 1464 of yacc.c  */
7718 < #line 3434 "ircd_parser.y"
6358 >  case 611:
6359 > #line 2920 "conf_parser.y" /* yacc.c:1646  */
6360      {
6361 <  if (conf_parser_ctx.pass == 2)  
7721 <  {
7722 <    MyFree(yy_conf->name);
7723 <    DupString(yy_conf->name, yylval.string);
7724 <  }
6361 >  ConfigFileEntry.oper_only_umodes |= UMODE_REGONLY;
6362   }
6363 + #line 6364 "conf_parser.c" /* yacc.c:1646  */
6364      break;
6365  
6366 <  case 624:
6367 <
7730 < /* Line 1464 of yacc.c  */
7731 < #line 3443 "ircd_parser.y"
6366 >  case 612:
6367 > #line 2923 "conf_parser.y" /* yacc.c:1646  */
6368      {
6369 <  if (conf_parser_ctx.pass == 2)
7734 <    yy_aconf->flags = 0;
6369 >  ConfigFileEntry.oper_only_umodes |= UMODE_FARCONNECT;
6370   }
6371 + #line 6372 "conf_parser.c" /* yacc.c:1646  */
6372      break;
6373  
6374 <  case 625:
6375 <
7740 < /* Line 1464 of yacc.c  */
7741 < #line 3447 "ircd_parser.y"
6374 >  case 613:
6375 > #line 2928 "conf_parser.y" /* yacc.c:1646  */
6376      {
6377 <  if (conf_parser_ctx.pass == 2)
7744 <  {
7745 <    struct CollectItem *yy_tmp = NULL;
7746 <    dlink_node *ptr, *next_ptr;
7747 <
7748 <    DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
7749 <    {
7750 <      struct AccessItem *new_aconf;
7751 <      struct ConfItem *new_conf;
7752 <
7753 <      yy_tmp = ptr->data;
7754 <      new_conf = make_conf_item(GDENY_TYPE);
7755 <      new_aconf = map_to_conf(new_conf);
7756 <
7757 <      new_aconf->flags = yy_aconf->flags;
7758 <
7759 <      if (yy_conf->name != NULL)
7760 <        DupString(new_conf->name, yy_conf->name);
7761 <      else
7762 <        DupString(new_conf->name, "*");
7763 <      if (yy_aconf->user != NULL)
7764 <         DupString(new_aconf->user, yy_tmp->user);
7765 <      else  
7766 <        DupString(new_aconf->user, "*");
7767 <      if (yy_aconf->host != NULL)
7768 <        DupString(new_aconf->host, yy_tmp->host);
7769 <      else
7770 <        DupString(new_aconf->host, "*");
7771 <
7772 <      dlinkDelete(&yy_tmp->node, &col_conf_list);
7773 <    }
7774 <
7775 <    /*
7776 <     * In case someone has fed us with more than one action= after user/name
7777 <     * which would leak memory  -Michael
7778 <     */
7779 <    if (yy_conf->name == NULL || yy_aconf->user == NULL)
7780 <      delete_conf_item(yy_conf);
7781 <
7782 <    yy_conf = make_conf_item(GDENY_TYPE);
7783 <    yy_aconf = map_to_conf(yy_conf);
7784 <  }
6377 >  ConfigFileEntry.min_nonwildcard = (yyvsp[-1].number);
6378   }
6379 + #line 6380 "conf_parser.c" /* yacc.c:1646  */
6380      break;
6381  
6382 <  case 628:
6383 <
7790 < /* Line 1464 of yacc.c  */
7791 < #line 3494 "ircd_parser.y"
6382 >  case 614:
6383 > #line 2933 "conf_parser.y" /* yacc.c:1646  */
6384      {
6385 <  if (conf_parser_ctx.pass == 2)
7794 <    yy_aconf->flags |= GDENY_REJECT;
6385 >  ConfigFileEntry.min_nonwildcard_simple = (yyvsp[-1].number);
6386   }
6387 + #line 6388 "conf_parser.c" /* yacc.c:1646  */
6388      break;
6389  
6390 <  case 629:
6391 <
7800 < /* Line 1464 of yacc.c  */
7801 < #line 3498 "ircd_parser.y"
6390 >  case 615:
6391 > #line 2938 "conf_parser.y" /* yacc.c:1646  */
6392      {
6393 <  if (conf_parser_ctx.pass == 2)
7804 <    yy_aconf->flags |= GDENY_BLOCK;
6393 >  ConfigFileEntry.default_floodcount = (yyvsp[-1].number);
6394   }
6395 + #line 6396 "conf_parser.c" /* yacc.c:1646  */
6396      break;
6397  
6398 <  case 652:
6399 <
7810 < /* Line 1464 of yacc.c  */
7811 < #line 3522 "ircd_parser.y"
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 653:
6407 <
7819 < /* Line 1464 of yacc.c  */
7820 < #line 3527 "ircd_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 654:
6415 <
7828 < /* Line 1464 of yacc.c  */
7829 < #line 3532 "ircd_parser.y"
6414 >  case 636:
6415 > #line 2977 "conf_parser.y" /* yacc.c:1646  */
6416      {
6417 <  ConfigChannel.disable_local_channels = yylval.number;
6417 >  ConfigChannel.invite_client_time = (yyvsp[-1].number);
6418   }
6419 + #line 6420 "conf_parser.c" /* yacc.c:1646  */
6420      break;
6421  
6422 <  case 655:
6423 <
7837 < /* Line 1464 of yacc.c  */
7838 < #line 3537 "ircd_parser.y"
6422 >  case 637:
6423 > #line 2982 "conf_parser.y" /* yacc.c:1646  */
6424      {
6425 <  ConfigChannel.use_except = yylval.number;
6425 >  ConfigChannel.knock_client_count = (yyvsp[-1].number);
6426   }
6427 + #line 6428 "conf_parser.c" /* yacc.c:1646  */
6428      break;
6429  
6430 <  case 656:
6431 <
7846 < /* Line 1464 of yacc.c  */
7847 < #line 3542 "ircd_parser.y"
6430 >  case 638:
6431 > #line 2987 "conf_parser.y" /* yacc.c:1646  */
6432      {
6433 <  ConfigChannel.use_invex = yylval.number;
6433 >  ConfigChannel.knock_client_time = (yyvsp[-1].number);
6434   }
6435 + #line 6436 "conf_parser.c" /* yacc.c:1646  */
6436      break;
6437  
6438 <  case 657:
6439 <
7855 < /* Line 1464 of yacc.c  */
7856 < #line 3547 "ircd_parser.y"
7857 <    {
7858 <  ConfigChannel.use_knock = yylval.number;
7859 < }
7860 <    break;
7861 <
7862 <  case 658:
7863 <
7864 < /* Line 1464 of yacc.c  */
7865 < #line 3552 "ircd_parser.y"
7866 <    {
7867 <  ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
7868 < }
7869 <    break;
7870 <
7871 <  case 659:
7872 <
7873 < /* Line 1464 of yacc.c  */
7874 < #line 3557 "ircd_parser.y"
7875 <    {
7876 <  ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
7877 < }
7878 <    break;
7879 <
7880 <  case 660:
7881 <
7882 < /* Line 1464 of yacc.c  */
7883 < #line 3562 "ircd_parser.y"
6438 >  case 639:
6439 > #line 2992 "conf_parser.y" /* yacc.c:1646  */
6440      {
6441 <  ConfigChannel.max_chans_per_user = (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 661:
6447 <
7891 < /* Line 1464 of yacc.c  */
7892 < #line 3567 "ircd_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 662:
6455 <
7900 < /* Line 1464 of yacc.c  */
7901 < #line 3572 "ircd_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 663:
6463 <
7909 < /* Line 1464 of yacc.c  */
7910 < #line 3577 "ircd_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 664:
6471 <
7918 < /* Line 1464 of yacc.c  */
7919 < #line 3582 "ircd_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 665:
6479 <
7927 < /* Line 1464 of yacc.c  */
7928 < #line 3587 "ircd_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 666:
6487 <
7936 < /* Line 1464 of yacc.c  */
7937 < #line 3592 "ircd_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 667:
6495 <
7945 < /* Line 1464 of yacc.c  */
7946 < #line 3597 "ircd_parser.y"
6494 >  case 646:
6495 > #line 3027 "conf_parser.y" /* yacc.c:1646  */
6496      {
6497 <  ConfigChannel.burst_topicwho = yylval.number;
6497 >  GlobalSetOptions.joinfloodcount = yylval.number;
6498   }
6499 + #line 6500 "conf_parser.c" /* yacc.c:1646  */
6500      break;
6501  
6502 <  case 668:
6503 <
7954 < /* Line 1464 of yacc.c  */
7955 < #line 3602 "ircd_parser.y"
6502 >  case 647:
6503 > #line 3032 "conf_parser.y" /* yacc.c:1646  */
6504      {
6505 <  GlobalSetOptions.joinfloodcount = yylval.number;
6505 >  GlobalSetOptions.joinfloodtime = (yyvsp[-1].number);
6506   }
6507 + #line 6508 "conf_parser.c" /* yacc.c:1646  */
6508      break;
6509  
6510 <  case 669:
6511 <
7963 < /* Line 1464 of yacc.c  */
7964 < #line 3607 "ircd_parser.y"
6510 >  case 660:
6511 > #line 3054 "conf_parser.y" /* yacc.c:1646  */
6512      {
6513 <  GlobalSetOptions.joinfloodtime = yylval.number;
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 681:
6520 <
7972 < /* Line 1464 of yacc.c  */
7973 < #line 3626 "ircd_parser.y"
6519 >  case 661:
6520 > #line 3060 "conf_parser.y" /* yacc.c:1646  */
6521      {
6522    if (conf_parser_ctx.pass == 2)
6523 <    ConfigServerHide.flatten_links = yylval.number;
6523 >    ConfigServerHide.disable_remote_commands = yylval.number;
6524   }
6525 + #line 6526 "conf_parser.c" /* yacc.c:1646  */
6526      break;
6527  
6528 <  case 682:
6529 <
7982 < /* Line 1464 of yacc.c  */
7983 < #line 3632 "ircd_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 683:
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 < /* Line 1464 of yacc.c  */
6547 < #line 3638 "ircd_parser.y"
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 684:
6559 <
8005 < /* Line 1464 of yacc.c  */
8006 < #line 3647 "ircd_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 >      event_write_links_file.when = (yyvsp[-1].number);
6566 >      event_addish(&event_write_links_file, NULL);
6567        ConfigServerHide.links_disabled = 0;
6568      }
6569  
6570 <    ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
6570 >    ConfigServerHide.links_delay = (yyvsp[-1].number);
6571    }
6572   }
6573 + #line 6574 "conf_parser.c" /* yacc.c:1646  */
6574      break;
6575  
6576 <  case 685:
6577 <
8023 < /* Line 1464 of yacc.c  */
8024 < #line 3661 "ircd_parser.y"
6576 >  case 666:
6577 > #line 3102 "conf_parser.y" /* yacc.c:1646  */
6578      {
6579    if (conf_parser_ctx.pass == 2)
6580      ConfigServerHide.hidden = yylval.number;
6581   }
6582 + #line 6583 "conf_parser.c" /* yacc.c:1646  */
6583      break;
6584  
6585 <  case 686:
6586 <
8033 < /* Line 1464 of yacc.c  */
8034 < #line 3667 "ircd_parser.y"
8035 <    {
8036 <  if (conf_parser_ctx.pass == 2)
8037 <    ConfigServerHide.disable_hidden = yylval.number;
8038 < }
8039 <    break;
8040 <
8041 <  case 687:
8042 <
8043 < /* Line 1464 of yacc.c  */
8044 < #line 3673 "ircd_parser.y"
6585 >  case 667:
6586 > #line 3108 "conf_parser.y" /* yacc.c:1646  */
6587      {
6588    if (conf_parser_ctx.pass == 2)
6589      ConfigServerHide.hide_server_ips = yylval.number;
6590   }
6591 + #line 6592 "conf_parser.c" /* yacc.c:1646  */
6592      break;
6593  
6594  
6595 <
8053 < /* Line 1464 of yacc.c  */
8054 < #line 8055 "ircd_parser.c"
6595 > #line 6596 "conf_parser.c" /* yacc.c:1646  */
6596        default: break;
6597      }
6598 +  /* User semantic actions sometimes alter yychar, and that requires
6599 +     that yytoken be updated with the new translation.  We take the
6600 +     approach of translating immediately before every use of yytoken.
6601 +     One alternative is translating here after every semantic action,
6602 +     but that translation would be missed if the semantic action invokes
6603 +     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6604 +     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
6605 +     incorrect destructor might then be invoked immediately.  In the
6606 +     case of YYERROR or YYBACKUP, subsequent parser actions might lead
6607 +     to an incorrect destructor call or verbose syntax error message
6608 +     before the lookahead is translated.  */
6609    YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6610  
6611    YYPOPSTACK (yylen);
# Line 8062 | Line 6614 | yyreduce:
6614  
6615    *++yyvsp = yyval;
6616  
6617 <  /* Now `shift' the result of the reduction.  Determine what state
6617 >  /* Now 'shift' the result of the reduction.  Determine what state
6618       that goes to, based on the state we popped back to and the rule
6619       number reduced by.  */
6620  
# Line 8077 | Line 6629 | yyreduce:
6629    goto yynewstate;
6630  
6631  
6632 < /*------------------------------------.
6633 < | yyerrlab -- here on detecting error |
6634 < `------------------------------------*/
6632 > /*--------------------------------------.
6633 > | yyerrlab -- here on detecting error.  |
6634 > `--------------------------------------*/
6635   yyerrlab:
6636 +  /* Make sure we have latest lookahead translation.  See comments at
6637 +     user semantic actions for why this is necessary.  */
6638 +  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6639 +
6640    /* If not already recovering from an error, report this error.  */
6641    if (!yyerrstatus)
6642      {
# Line 8088 | Line 6644 | yyerrlab:
6644   #if ! YYERROR_VERBOSE
6645        yyerror (YY_("syntax error"));
6646   #else
6647 + # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6648 +                                        yyssp, yytoken)
6649        {
6650 <        YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
6651 <        if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
6652 <          {
6653 <            YYSIZE_T yyalloc = 2 * yysize;
6654 <            if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
6655 <              yyalloc = YYSTACK_ALLOC_MAXIMUM;
6656 <            if (yymsg != yymsgbuf)
6657 <              YYSTACK_FREE (yymsg);
6658 <            yymsg = (char *) YYSTACK_ALLOC (yyalloc);
6659 <            if (yymsg)
6660 <              yymsg_alloc = yyalloc;
6661 <            else
6662 <              {
6663 <                yymsg = yymsgbuf;
6664 <                yymsg_alloc = sizeof yymsgbuf;
6665 <              }
6666 <          }
6667 <
6668 <        if (0 < yysize && yysize <= yymsg_alloc)
6669 <          {
6670 <            (void) yysyntax_error (yymsg, yystate, yychar);
6671 <            yyerror (yymsg);
6672 <          }
6673 <        else
6674 <          {
8117 <            yyerror (YY_("syntax error"));
8118 <            if (yysize != 0)
8119 <              goto yyexhaustedlab;
8120 <          }
6650 >        char const *yymsgp = YY_("syntax error");
6651 >        int yysyntax_error_status;
6652 >        yysyntax_error_status = YYSYNTAX_ERROR;
6653 >        if (yysyntax_error_status == 0)
6654 >          yymsgp = yymsg;
6655 >        else if (yysyntax_error_status == 1)
6656 >          {
6657 >            if (yymsg != yymsgbuf)
6658 >              YYSTACK_FREE (yymsg);
6659 >            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6660 >            if (!yymsg)
6661 >              {
6662 >                yymsg = yymsgbuf;
6663 >                yymsg_alloc = sizeof yymsgbuf;
6664 >                yysyntax_error_status = 2;
6665 >              }
6666 >            else
6667 >              {
6668 >                yysyntax_error_status = YYSYNTAX_ERROR;
6669 >                yymsgp = yymsg;
6670 >              }
6671 >          }
6672 >        yyerror (yymsgp);
6673 >        if (yysyntax_error_status == 2)
6674 >          goto yyexhaustedlab;
6675        }
6676 + # undef YYSYNTAX_ERROR
6677   #endif
6678      }
6679  
# Line 8127 | Line 6682 | yyerrlab:
6682    if (yyerrstatus == 3)
6683      {
6684        /* If just tried and failed to reuse lookahead token after an
6685 <         error, discard it.  */
6685 >         error, discard it.  */
6686  
6687        if (yychar <= YYEOF)
6688 <        {
6689 <          /* Return failure if at end of input.  */
6690 <          if (yychar == YYEOF)
6691 <            YYABORT;
6692 <        }
6688 >        {
6689 >          /* Return failure if at end of input.  */
6690 >          if (yychar == YYEOF)
6691 >            YYABORT;
6692 >        }
6693        else
6694 <        {
6695 <          yydestruct ("Error: discarding",
6696 <                      yytoken, &yylval);
6697 <          yychar = YYEMPTY;
6698 <        }
6694 >        {
6695 >          yydestruct ("Error: discarding",
6696 >                      yytoken, &yylval);
6697 >          yychar = YYEMPTY;
6698 >        }
6699      }
6700  
6701    /* Else will try to reuse lookahead token after shifting the error
# Line 8159 | Line 6714 | yyerrorlab:
6714    if (/*CONSTCOND*/ 0)
6715       goto yyerrorlab;
6716  
6717 <  /* Do not reclaim the symbols of the rule which action triggered
6717 >  /* Do not reclaim the symbols of the rule whose action triggered
6718       this YYERROR.  */
6719    YYPOPSTACK (yylen);
6720    yylen = 0;
# Line 8172 | Line 6727 | yyerrorlab:
6727   | yyerrlab1 -- common code for both syntax error and YYERROR.  |
6728   `-------------------------------------------------------------*/
6729   yyerrlab1:
6730 <  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
6730 >  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
6731  
6732    for (;;)
6733      {
6734        yyn = yypact[yystate];
6735 <      if (yyn != YYPACT_NINF)
6736 <        {
6737 <          yyn += YYTERROR;
6738 <          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6739 <            {
6740 <              yyn = yytable[yyn];
6741 <              if (0 < yyn)
6742 <                break;
6743 <            }
6744 <        }
6735 >      if (!yypact_value_is_default (yyn))
6736 >        {
6737 >          yyn += YYTERROR;
6738 >          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6739 >            {
6740 >              yyn = yytable[yyn];
6741 >              if (0 < yyn)
6742 >                break;
6743 >            }
6744 >        }
6745  
6746        /* Pop the current state because it cannot handle the error token.  */
6747        if (yyssp == yyss)
6748 <        YYABORT;
6748 >        YYABORT;
6749  
6750  
6751        yydestruct ("Error: popping",
6752 <                  yystos[yystate], yyvsp);
6752 >                  yystos[yystate], yyvsp);
6753        YYPOPSTACK (1);
6754        yystate = *yyssp;
6755        YY_STACK_PRINT (yyss, yyssp);
6756      }
6757  
6758 +  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6759    *++yyvsp = yylval;
6760 +  YY_IGNORE_MAYBE_UNINITIALIZED_END
6761  
6762  
6763    /* Shift the error token.  */
# Line 8224 | Line 6781 | yyabortlab:
6781    yyresult = 1;
6782    goto yyreturn;
6783  
6784 < #if !defined(yyoverflow) || YYERROR_VERBOSE
6784 > #if !defined yyoverflow || YYERROR_VERBOSE
6785   /*-------------------------------------------------.
6786   | yyexhaustedlab -- memory exhaustion comes here.  |
6787   `-------------------------------------------------*/
# Line 8236 | Line 6793 | yyexhaustedlab:
6793  
6794   yyreturn:
6795    if (yychar != YYEMPTY)
6796 <     yydestruct ("Cleanup: discarding lookahead",
6797 <                 yytoken, &yylval);
6798 <  /* Do not reclaim the symbols of the rule which action triggered
6796 >    {
6797 >      /* Make sure we have latest lookahead translation.  See comments at
6798 >         user semantic actions for why this is necessary.  */
6799 >      yytoken = YYTRANSLATE (yychar);
6800 >      yydestruct ("Cleanup: discarding lookahead",
6801 >                  yytoken, &yylval);
6802 >    }
6803 >  /* Do not reclaim the symbols of the rule whose action triggered
6804       this YYABORT or YYACCEPT.  */
6805    YYPOPSTACK (yylen);
6806    YY_STACK_PRINT (yyss, yyssp);
6807    while (yyssp != yyss)
6808      {
6809        yydestruct ("Cleanup: popping",
6810 <                  yystos[*yyssp], yyvsp);
6810 >                  yystos[*yyssp], yyvsp);
6811        YYPOPSTACK (1);
6812      }
6813   #ifndef yyoverflow
# Line 8256 | Line 6818 | yyreturn:
6818    if (yymsg != yymsgbuf)
6819      YYSTACK_FREE (yymsg);
6820   #endif
6821 <  /* Make sure YYID is used.  */
8260 <  return YYID (yyresult);
6821 >  return yyresult;
6822   }
8262
8263
8264

Comparing:
ircd-hybrid-7.3/src/ircd_parser.c (property svn:keywords), Revision 1119 by michael, Fri Jan 7 22:01:47 2011 UTC vs.
ircd-hybrid/trunk/src/conf_parser.c (property svn:keywords), Revision 4094 by michael, Sun Jun 29 11:48:50 2014 UTC

# Line 0 | Line 1
1 + Id Revision

Diff Legend

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