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.2/src/ircd_parser.c (file contents), Revision 1024 by michael, Sun Nov 1 23:14:25 2009 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 3.0.2.  */
2  
3 < /* A Bison parser, made by GNU Bison 2.4.1.  */
3 > /* Bison implementation for Yacc-like parsers in C
4 >
5 >   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
6  
4 /* Skeleton implementation for Bison's Yacc-like parsers in C
5  
6      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
7   Free Software Foundation, Inc.
8  
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 28 | 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 46 | Line 44
44   #define YYBISON 1
45  
46   /* Bison version.  */
47 < #define YYBISON_VERSION "2.4.1"
47 > #define YYBISON_VERSION "3.0.2"
48  
49   /* Skeleton name.  */
50   #define YYSKELETON_NAME "yacc.c"
# Line 60 | Line 58
58   /* Pull parsers.  */
59   #define YYPULL 1
60  
63 /* Using locations.  */
64 #define YYLSP_NEEDED 0
61  
62  
63  
64   /* Copy the first part of user declarations.  */
65 <
70 < /* Line 189 of yacc.c  */
71 < #line 25 "ircd_parser.y"
65 > #line 28 "conf_parser.y" /* yacc.c:339  */
66  
67  
68   #define YY_NO_UNPUT
# Line 79 | 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"
87 #include "irc_getaddrinfo.h"
88 #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;
106 < static struct ConfItem *yy_conf = NULL;
107 < static struct AccessItem *yy_aconf = NULL;
108 < static struct MatchItem *yy_match_item = NULL;
109 < static struct ClassItem *yy_class = NULL;
110 < static char *yy_class_name = NULL;
111 <
112 < static dlink_list col_conf_list  = { NULL, NULL, 0 };
113 < static dlink_list hub_conf_list  = { NULL, NULL, 0 };
114 < static dlink_list leaf_conf_list = { NULL, NULL, 0 };
115 < static unsigned int listener_flags = 0;
116 < static unsigned int regex_ban = 0;
117 < static char userbuf[IRCD_BUFSIZE];
118 < static char hostbuf[IRCD_BUFSIZE];
119 < static char reasonbuf[REASONLEN + 1];
120 < static char gecos_name[REALLEN * 4];
121 <
122 < static char *resv_reason = NULL;
123 < static char *listener_address = NULL;
124 < static int not_atom = 0;
100 > #include "rsa.h"
101  
102 < struct CollectItem
127 < {
128 <  dlink_node node;
129 <  char *name;
130 <  char *user;
131 <  char *host;
132 <  char *passwd;
133 <  int  port;
134 <  int  flags;
135 < #ifdef HAVE_LIBCRYPTO
136 <  char *rsa_public_key_file;
137 <  RSA *rsa_public_key;
138 < #endif
139 < };
102 > int yylex(void);
103  
104 < static void
142 < 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;
158 <  dlink_node *next_ptr;
159 <  struct CollectItem *yy_hconf;
160 <  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    }
175 }
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  
179 /* Line 189 of yacc.c  */
180 #line 181 "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 192 | 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 <
201 < /* 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 <     DOT_IN_IP6_ADDR = 299,
262 <     DOTS_IN_IDENT = 300,
263 <     DURATION = 301,
264 <     EGDPOOL_PATH = 302,
265 <     EMAIL = 303,
266 <     ENABLE = 304,
267 <     ENCRYPTED = 305,
268 <     EXCEED_LIMIT = 306,
269 <     EXEMPT = 307,
270 <     FAILED_OPER_NOTICE = 308,
271 <     FAKENAME = 309,
272 <     IRCD_FLAGS = 310,
273 <     FLATTEN_LINKS = 311,
274 <     FFAILED_OPERLOG = 312,
275 <     FKILLLOG = 313,
276 <     FKLINELOG = 314,
277 <     FGLINELOG = 315,
278 <     FIOERRLOG = 316,
279 <     FOPERLOG = 317,
280 <     FOPERSPYLOG = 318,
281 <     FUSERLOG = 319,
282 <     GECOS = 320,
283 <     GENERAL = 321,
284 <     GLINE = 322,
285 <     GLINES = 323,
286 <     GLINE_EXEMPT = 324,
287 <     GLINE_LOG = 325,
288 <     GLINE_TIME = 326,
289 <     GLINE_MIN_CIDR = 327,
290 <     GLINE_MIN_CIDR6 = 328,
291 <     GLOBAL_KILL = 329,
292 <     IRCD_AUTH = 330,
293 <     NEED_IDENT = 331,
294 <     HAVENT_READ_CONF = 332,
295 <     HIDDEN = 333,
296 <     HIDDEN_ADMIN = 334,
297 <     HIDDEN_NAME = 335,
298 <     HIDDEN_OPER = 336,
299 <     HIDE_SERVER_IPS = 337,
300 <     HIDE_SERVERS = 338,
301 <     HIDE_SPOOF_IPS = 339,
302 <     HOST = 340,
303 <     HUB = 341,
304 <     HUB_MASK = 342,
305 <     IDLETIME = 343,
306 <     IGNORE_BOGUS_TS = 344,
307 <     INVISIBLE_ON_CONNECT = 345,
308 <     IP = 346,
309 <     KILL = 347,
310 <     KILL_CHASE_TIME_LIMIT = 348,
311 <     KLINE = 349,
312 <     KLINE_EXEMPT = 350,
313 <     KLINE_REASON = 351,
314 <     KLINE_WITH_REASON = 352,
315 <     KNOCK_DELAY = 353,
316 <     KNOCK_DELAY_CHANNEL = 354,
317 <     LEAF_MASK = 355,
318 <     LINKS_DELAY = 356,
319 <     LISTEN = 357,
320 <     T_LOG = 358,
321 <     LOGGING = 359,
322 <     LOG_LEVEL = 360,
323 <     MAX_ACCEPT = 361,
324 <     MAX_BANS = 362,
325 <     MAX_CHANS_PER_USER = 363,
326 <     MAX_GLOBAL = 364,
327 <     MAX_IDENT = 365,
328 <     MAX_LOCAL = 366,
329 <     MAX_NICK_CHANGES = 367,
330 <     MAX_NICK_TIME = 368,
331 <     MAX_NUMBER = 369,
332 <     MAX_TARGETS = 370,
333 <     MAX_WATCH = 371,
334 <     MESSAGE_LOCALE = 372,
335 <     MIN_NONWILDCARD = 373,
336 <     MIN_NONWILDCARD_SIMPLE = 374,
337 <     MODULE = 375,
338 <     MODULES = 376,
339 <     NAME = 377,
340 <     NEED_PASSWORD = 378,
341 <     NETWORK_DESC = 379,
342 <     NETWORK_NAME = 380,
343 <     NICK = 381,
344 <     NICK_CHANGES = 382,
345 <     NO_CREATE_ON_SPLIT = 383,
346 <     NO_JOIN_ON_SPLIT = 384,
347 <     NO_OPER_FLOOD = 385,
348 <     NO_TILDE = 386,
349 <     NOT = 387,
350 <     NUMBER = 388,
351 <     NUMBER_PER_IDENT = 389,
352 <     NUMBER_PER_CIDR = 390,
353 <     NUMBER_PER_IP = 391,
354 <     NUMBER_PER_IP_GLOBAL = 392,
355 <     OPERATOR = 393,
356 <     OPERS_BYPASS_CALLERID = 394,
357 <     OPER_LOG = 395,
358 <     OPER_ONLY_UMODES = 396,
359 <     OPER_PASS_RESV = 397,
360 <     OPER_SPY_T = 398,
361 <     OPER_UMODES = 399,
362 <     JOIN_FLOOD_COUNT = 400,
363 <     JOIN_FLOOD_TIME = 401,
364 <     PACE_WAIT = 402,
365 <     PACE_WAIT_SIMPLE = 403,
366 <     PASSWORD = 404,
367 <     PATH = 405,
368 <     PING_COOKIE = 406,
369 <     PING_TIME = 407,
370 <     PING_WARNING = 408,
371 <     PORT = 409,
372 <     QSTRING = 410,
373 <     QUIET_ON_BAN = 411,
374 <     REASON = 412,
375 <     REDIRPORT = 413,
376 <     REDIRSERV = 414,
377 <     REGEX_T = 415,
378 <     REHASH = 416,
379 <     TREJECT_HOLD_TIME = 417,
380 <     REMOTE = 418,
381 <     REMOTEBAN = 419,
382 <     RESTRICT_CHANNELS = 420,
383 <     RESTRICTED = 421,
384 <     RSA_PRIVATE_KEY_FILE = 422,
385 <     RSA_PUBLIC_KEY_FILE = 423,
386 <     SSL_CERTIFICATE_FILE = 424,
387 <     T_SSL_CONNECTION_METHOD = 425,
388 <     T_SSLV3 = 426,
389 <     T_TLSV1 = 427,
390 <     RESV = 428,
391 <     RESV_EXEMPT = 429,
392 <     SECONDS = 430,
393 <     MINUTES = 431,
394 <     HOURS = 432,
395 <     DAYS = 433,
396 <     WEEKS = 434,
397 <     SENDQ = 435,
398 <     SEND_PASSWORD = 436,
399 <     SERVERHIDE = 437,
400 <     SERVERINFO = 438,
401 <     SERVLINK_PATH = 439,
402 <     IRCD_SID = 440,
403 <     TKLINE_EXPIRE_NOTICES = 441,
404 <     T_SHARED = 442,
405 <     T_CLUSTER = 443,
406 <     TYPE = 444,
407 <     SHORT_MOTD = 445,
408 <     SILENT = 446,
409 <     SPOOF = 447,
410 <     SPOOF_NOTICE = 448,
411 <     STATS_E_DISABLED = 449,
412 <     STATS_I_OPER_ONLY = 450,
413 <     STATS_K_OPER_ONLY = 451,
414 <     STATS_O_OPER_ONLY = 452,
415 <     STATS_P_OPER_ONLY = 453,
416 <     TBOOL = 454,
417 <     TMASKED = 455,
418 <     T_REJECT = 456,
419 <     TS_MAX_DELTA = 457,
420 <     TS_WARN_DELTA = 458,
421 <     TWODOTS = 459,
422 <     T_ALL = 460,
423 <     T_BOTS = 461,
424 <     T_SOFTCALLERID = 462,
425 <     T_CALLERID = 463,
426 <     T_CCONN = 464,
427 <     T_CCONN_FULL = 465,
428 <     T_CLIENT_FLOOD = 466,
429 <     T_DEAF = 467,
430 <     T_DEBUG = 468,
431 <     T_DRONE = 469,
432 <     T_EXTERNAL = 470,
433 <     T_FULL = 471,
434 <     T_INVISIBLE = 472,
435 <     T_IPV4 = 473,
436 <     T_IPV6 = 474,
437 <     T_LOCOPS = 475,
438 <     T_LOGPATH = 476,
439 <     T_L_CRIT = 477,
440 <     T_L_DEBUG = 478,
441 <     T_L_ERROR = 479,
442 <     T_L_INFO = 480,
443 <     T_L_NOTICE = 481,
444 <     T_L_TRACE = 482,
445 <     T_L_WARN = 483,
446 <     T_MAX_CLIENTS = 484,
447 <     T_NCHANGE = 485,
448 <     T_OPERWALL = 486,
436 <     T_REJ = 487,
437 <     T_SERVER = 488,
438 <     T_SERVNOTICE = 489,
439 <     T_SKILL = 490,
440 <     T_SPY = 491,
441 <     T_SSL = 492,
442 <     T_UMODES = 493,
443 <     T_UNAUTH = 494,
444 <     T_UNRESV = 495,
445 <     T_UNXLINE = 496,
446 <     T_WALLOP = 497,
447 <     THROTTLE_TIME = 498,
448 <     TOPICBURST = 499,
449 <     TRUE_NO_OPER_FLOOD = 500,
450 <     TKLINE = 501,
451 <     TXLINE = 502,
452 <     TRESV = 503,
453 <     UNKLINE = 504,
454 <     USER = 505,
455 <     USE_EGD = 506,
456 <     USE_EXCEPT = 507,
457 <     USE_INVEX = 508,
458 <     USE_KNOCK = 509,
459 <     USE_LOGGING = 510,
460 <     USE_WHOIS_ACTUALLY = 511,
461 <     VHOST = 512,
462 <     VHOST6 = 513,
463 <     XLINE = 514,
464 <     WARN = 515,
465 <     WARN_NO_NLINE = 516
466 <   };
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 DOT_IN_IP6_ADDR 299
493 < #define DOTS_IN_IDENT 300
494 < #define DURATION 301
495 < #define EGDPOOL_PATH 302
496 < #define EMAIL 303
497 < #define ENABLE 304
498 < #define ENCRYPTED 305
499 < #define EXCEED_LIMIT 306
500 < #define EXEMPT 307
501 < #define FAILED_OPER_NOTICE 308
502 < #define FAKENAME 309
503 < #define IRCD_FLAGS 310
504 < #define FLATTEN_LINKS 311
505 < #define FFAILED_OPERLOG 312
506 < #define FKILLLOG 313
507 < #define FKLINELOG 314
508 < #define FGLINELOG 315
509 < #define FIOERRLOG 316
510 < #define FOPERLOG 317
511 < #define FOPERSPYLOG 318
512 < #define FUSERLOG 319
513 < #define GECOS 320
514 < #define GENERAL 321
515 < #define GLINE 322
516 < #define GLINES 323
517 < #define GLINE_EXEMPT 324
518 < #define GLINE_LOG 325
519 < #define GLINE_TIME 326
520 < #define GLINE_MIN_CIDR 327
521 < #define GLINE_MIN_CIDR6 328
522 < #define GLOBAL_KILL 329
523 < #define IRCD_AUTH 330
524 < #define NEED_IDENT 331
525 < #define HAVENT_READ_CONF 332
526 < #define HIDDEN 333
527 < #define HIDDEN_ADMIN 334
528 < #define HIDDEN_NAME 335
529 < #define HIDDEN_OPER 336
530 < #define HIDE_SERVER_IPS 337
531 < #define HIDE_SERVERS 338
532 < #define HIDE_SPOOF_IPS 339
533 < #define HOST 340
534 < #define HUB 341
535 < #define HUB_MASK 342
536 < #define IDLETIME 343
537 < #define IGNORE_BOGUS_TS 344
538 < #define INVISIBLE_ON_CONNECT 345
539 < #define IP 346
540 < #define KILL 347
541 < #define KILL_CHASE_TIME_LIMIT 348
542 < #define KLINE 349
543 < #define KLINE_EXEMPT 350
544 < #define KLINE_REASON 351
545 < #define KLINE_WITH_REASON 352
546 < #define KNOCK_DELAY 353
547 < #define KNOCK_DELAY_CHANNEL 354
548 < #define LEAF_MASK 355
549 < #define LINKS_DELAY 356
550 < #define LISTEN 357
551 < #define T_LOG 358
552 < #define LOGGING 359
553 < #define LOG_LEVEL 360
554 < #define MAX_ACCEPT 361
555 < #define MAX_BANS 362
556 < #define MAX_CHANS_PER_USER 363
557 < #define MAX_GLOBAL 364
558 < #define MAX_IDENT 365
559 < #define MAX_LOCAL 366
560 < #define MAX_NICK_CHANGES 367
561 < #define MAX_NICK_TIME 368
562 < #define MAX_NUMBER 369
563 < #define MAX_TARGETS 370
564 < #define MAX_WATCH 371
565 < #define MESSAGE_LOCALE 372
566 < #define MIN_NONWILDCARD 373
567 < #define MIN_NONWILDCARD_SIMPLE 374
568 < #define MODULE 375
569 < #define MODULES 376
570 < #define NAME 377
571 < #define NEED_PASSWORD 378
572 < #define NETWORK_DESC 379
573 < #define NETWORK_NAME 380
574 < #define NICK 381
575 < #define NICK_CHANGES 382
576 < #define NO_CREATE_ON_SPLIT 383
577 < #define NO_JOIN_ON_SPLIT 384
578 < #define NO_OPER_FLOOD 385
579 < #define NO_TILDE 386
580 < #define NOT 387
581 < #define NUMBER 388
582 < #define NUMBER_PER_IDENT 389
583 < #define NUMBER_PER_CIDR 390
584 < #define NUMBER_PER_IP 391
585 < #define NUMBER_PER_IP_GLOBAL 392
586 < #define OPERATOR 393
587 < #define OPERS_BYPASS_CALLERID 394
588 < #define OPER_LOG 395
589 < #define OPER_ONLY_UMODES 396
590 < #define OPER_PASS_RESV 397
591 < #define OPER_SPY_T 398
592 < #define OPER_UMODES 399
593 < #define JOIN_FLOOD_COUNT 400
594 < #define JOIN_FLOOD_TIME 401
595 < #define PACE_WAIT 402
596 < #define PACE_WAIT_SIMPLE 403
597 < #define PASSWORD 404
598 < #define PATH 405
599 < #define PING_COOKIE 406
600 < #define PING_TIME 407
601 < #define PING_WARNING 408
602 < #define PORT 409
603 < #define QSTRING 410
604 < #define QUIET_ON_BAN 411
605 < #define REASON 412
606 < #define REDIRPORT 413
607 < #define REDIRSERV 414
608 < #define REGEX_T 415
609 < #define REHASH 416
610 < #define TREJECT_HOLD_TIME 417
611 < #define REMOTE 418
612 < #define REMOTEBAN 419
613 < #define RESTRICT_CHANNELS 420
614 < #define RESTRICTED 421
615 < #define RSA_PRIVATE_KEY_FILE 422
616 < #define RSA_PUBLIC_KEY_FILE 423
617 < #define SSL_CERTIFICATE_FILE 424
618 < #define T_SSL_CONNECTION_METHOD 425
619 < #define T_SSLV3 426
620 < #define T_TLSV1 427
621 < #define RESV 428
622 < #define RESV_EXEMPT 429
623 < #define SECONDS 430
624 < #define MINUTES 431
625 < #define HOURS 432
626 < #define DAYS 433
627 < #define WEEKS 434
628 < #define SENDQ 435
629 < #define SEND_PASSWORD 436
630 < #define SERVERHIDE 437
631 < #define SERVERINFO 438
632 < #define SERVLINK_PATH 439
633 < #define IRCD_SID 440
634 < #define TKLINE_EXPIRE_NOTICES 441
635 < #define T_SHARED 442
636 < #define T_CLUSTER 443
637 < #define TYPE 444
638 < #define SHORT_MOTD 445
639 < #define SILENT 446
640 < #define SPOOF 447
641 < #define SPOOF_NOTICE 448
642 < #define STATS_E_DISABLED 449
643 < #define STATS_I_OPER_ONLY 450
644 < #define STATS_K_OPER_ONLY 451
645 < #define STATS_O_OPER_ONLY 452
646 < #define STATS_P_OPER_ONLY 453
647 < #define TBOOL 454
648 < #define TMASKED 455
649 < #define T_REJECT 456
650 < #define TS_MAX_DELTA 457
651 < #define TS_WARN_DELTA 458
652 < #define TWODOTS 459
653 < #define T_ALL 460
654 < #define T_BOTS 461
655 < #define T_SOFTCALLERID 462
656 < #define T_CALLERID 463
657 < #define T_CCONN 464
658 < #define T_CCONN_FULL 465
659 < #define T_CLIENT_FLOOD 466
660 < #define T_DEAF 467
661 < #define T_DEBUG 468
662 < #define T_DRONE 469
663 < #define T_EXTERNAL 470
664 < #define T_FULL 471
665 < #define T_INVISIBLE 472
666 < #define T_IPV4 473
667 < #define T_IPV6 474
668 < #define T_LOCOPS 475
669 < #define T_LOGPATH 476
670 < #define T_L_CRIT 477
671 < #define T_L_DEBUG 478
672 < #define T_L_ERROR 479
673 < #define T_L_INFO 480
674 < #define T_L_NOTICE 481
675 < #define T_L_TRACE 482
676 < #define T_L_WARN 483
677 < #define T_MAX_CLIENTS 484
678 < #define T_NCHANGE 485
679 < #define T_OPERWALL 486
698 < #define T_REJ 487
699 < #define T_SERVER 488
700 < #define T_SERVNOTICE 489
701 < #define T_SKILL 490
702 < #define T_SPY 491
703 < #define T_SSL 492
704 < #define T_UMODES 493
705 < #define T_UNAUTH 494
706 < #define T_UNRESV 495
707 < #define T_UNXLINE 496
708 < #define T_WALLOP 497
709 < #define THROTTLE_TIME 498
710 < #define TOPICBURST 499
711 < #define TRUE_NO_OPER_FLOOD 500
712 < #define TKLINE 501
713 < #define TXLINE 502
714 < #define TRESV 503
715 < #define UNKLINE 504
716 < #define USER 505
717 < #define USE_EGD 506
718 < #define USE_EXCEPT 507
719 < #define USE_INVEX 508
720 < #define USE_KNOCK 509
721 < #define USE_LOGGING 510
722 < #define USE_WHOIS_ACTUALLY 511
723 < #define VHOST 512
724 < #define VHOST6 513
725 < #define XLINE 514
726 < #define WARN 515
727 < #define WARN_NO_NLINE 516
728 <
729 <
730 <
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 <
736 < /* Line 214 of yacc.c  */
737 < #line 132 "ircd_parser.y"
686 > #line 147 "conf_parser.y" /* yacc.c:355  */
687  
688    int number;
689    char *string;
690  
691 <
692 <
744 < /* Line 214 of yacc.c  */
745 < #line 746 "ircd_parser.c"
746 < } YYSTYPE;
691 > #line 692 "conf_parser.c" /* yacc.c:355  */
692 > };
693   # define YYSTYPE_IS_TRIVIAL 1
748 # 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 < /* Line 264 of yacc.c  */
705 < #line 758 "ircd_parser.c"
704 > /* Copy the second part of user declarations.  */
705 >
706 > #line 707 "conf_parser.c" /* yacc.c:358  */
707  
708   #ifdef short
709   # undef short
# Line 768 | Line 717 | typedef unsigned char yytype_uint8;
717  
718   #ifdef YYTYPE_INT8
719   typedef YYTYPE_INT8 yytype_int8;
771 #elif (defined __STDC__ || defined __C99__FUNC__ \
772     || defined __cplusplus || defined _MSC_VER)
773 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 792 | 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__ \
796 <     || 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 804 | Line 749 | typedef short int yytype_int16;
749   #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
750  
751   #ifndef YY_
752 < # if YYENABLE_NLS
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__ \
830 <     || defined __cplusplus || defined _MSC_VER)
831 < static int
832 < YYID (int yyi)
833 < #else
834 < static int
835 < YYID (yyi)
836 <    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  
# Line 857 | 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__ \
861 <     || 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 869 | 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 884 | 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__ \
898 <     || 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__ \
905 <     || 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 912 | 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 930 | 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
934 <   not overlap.  */
935 < # ifndef YYCOPY
936 < #  if defined __GNUC__ && 1 < __GNUC__
937 < #   define YYCOPY(To, From, Count) \
938 <      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
939 < #  else
940 < #   define YYCOPY(To, From, Count)              \
941 <      do                                        \
942 <        {                                       \
943 <          YYSIZE_T yyi;                         \
944 <          for (yyi = 0; yyi < (Count); yyi++)   \
945 <            (To)[yyi] = (From)[yyi];            \
946 <        }                                       \
947 <      while (YYID (0))
948 < #  endif
949 < # 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   1413
948 > #define YYLAST   1260
949  
950   /* YYNTOKENS -- Number of terminals.  */
951 < #define YYNTOKENS  267
951 > #define YYNTOKENS  238
952   /* YYNNTS -- Number of nonterminals.  */
953 < #define YYNNTS  346
953 > #define YYNNTS  296
954   /* YYNRULES -- Number of rules.  */
955 < #define YYNRULES  743
956 < /* YYNRULES -- Number of states.  */
957 < #define YYNSTATES  1494
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   516
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,   266,     2,     2,     2,     2,     2,
976 <       2,     2,     2,     2,     2,     2,     2,     2,     2,   262,
977 <       2,   265,     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,   264,     2,   263,     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 1038 | 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,
1042 <     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
1043 <     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
1044 <     255,   256,   257,   258,   259,   260,   261
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
1049 <   YYRHS.  */
1050 < static const yytype_uint16 yyprhs[] =
1051 < {
1052 <       0,     0,     3,     4,     7,     9,    11,    13,    15,    17,
1053 <      19,    21,    23,    25,    27,    29,    31,    33,    35,    37,
1054 <      39,    41,    43,    45,    47,    50,    53,    54,    56,    59,
1055 <      63,    67,    71,    75,    79,    80,    82,    85,    89,    93,
1056 <      97,   103,   106,   108,   110,   112,   115,   120,   125,   131,
1057 <     134,   136,   138,   140,   142,   144,   146,   148,   150,   152,
1058 <     154,   156,   158,   160,   163,   164,   170,   174,   176,   178,
1059 <     180,   185,   190,   195,   200,   205,   210,   215,   220,   225,
1060 <     230,   235,   241,   244,   246,   248,   250,   252,   255,   260,
1061 <     265,   270,   276,   279,   281,   283,   285,   287,   289,   291,
1062 <     293,   295,   297,   299,   301,   303,   305,   308,   313,   318,
1063 <     323,   328,   333,   338,   343,   348,   353,   358,   363,   368,
1064 <     373,   378,   383,   388,   393,   398,   399,   407,   408,   410,
1065 <     413,   415,   417,   419,   421,   423,   425,   427,   429,   431,
1066 <     433,   435,   437,   439,   441,   443,   445,   447,   449,   451,
1067 <     453,   455,   457,   459,   462,   467,   469,   474,   479,   484,
1068 <     489,   494,   495,   501,   505,   507,   509,   511,   513,   515,
1069 <     517,   519,   521,   523,   525,   527,   529,   531,   533,   535,
1070 <     537,   539,   541,   543,   545,   550,   555,   560,   565,   570,
1071 <     575,   580,   585,   590,   595,   600,   605,   610,   615,   616,
1072 <     622,   626,   628,   629,   633,   634,   637,   639,   641,   643,
1073 <     645,   647,   649,   651,   653,   655,   657,   659,   661,   663,
1074 <     665,   667,   669,   670,   678,   679,   681,   684,   686,   688,
1075 <     690,   692,   694,   696,   698,   700,   702,   704,   706,   708,
1076 <     710,   712,   715,   720,   722,   727,   732,   737,   742,   747,
1077 <     752,   757,   762,   767,   772,   777,   782,   783,   790,   791,
1078 <     797,   801,   803,   805,   807,   809,   812,   814,   816,   818,
1079 <     820,   822,   825,   826,   832,   836,   838,   840,   844,   849,
1080 <     854,   855,   862,   865,   867,   869,   871,   873,   875,   877,
1081 <     879,   881,   883,   885,   887,   889,   891,   893,   895,   897,
1082 <     899,   902,   907,   912,   917,   922,   927,   928,   934,   938,
1083 <     940,   941,   945,   946,   949,   951,   953,   955,   957,   959,
1084 <     961,   963,   965,   967,   969,   974,   979,   984,   989,   994,
1085 <     999,  1004,  1009,  1014,  1019,  1020,  1027,  1030,  1032,  1034,
1086 <    1036,  1038,  1041,  1046,  1051,  1056,  1057,  1064,  1067,  1069,
1087 <    1071,  1073,  1075,  1078,  1083,  1088,  1089,  1095,  1099,  1101,
1088 <    1103,  1105,  1107,  1109,  1111,  1113,  1115,  1117,  1119,  1121,
1089 <    1123,  1124,  1131,  1134,  1136,  1138,  1140,  1143,  1148,  1149,
1090 <    1155,  1159,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,
1091 <    1177,  1179,  1181,  1183,  1184,  1192,  1193,  1195,  1198,  1200,
1092 <    1202,  1204,  1206,  1208,  1210,  1212,  1214,  1216,  1218,  1220,
1093 <    1222,  1224,  1226,  1228,  1230,  1232,  1234,  1236,  1238,  1241,
1094 <    1246,  1248,  1253,  1258,  1263,  1268,  1273,  1278,  1283,  1288,
1095 <    1289,  1295,  1299,  1301,  1302,  1306,  1307,  1310,  1312,  1314,
1096 <    1316,  1318,  1320,  1325,  1330,  1335,  1340,  1345,  1350,  1355,
1097 <    1360,  1365,  1370,  1371,  1378,  1379,  1385,  1389,  1391,  1393,
1098 <    1396,  1398,  1400,  1402,  1404,  1406,  1411,  1416,  1417,  1424,
1099 <    1427,  1429,  1431,  1433,  1435,  1440,  1445,  1451,  1454,  1456,
1100 <    1458,  1460,  1465,  1466,  1473,  1474,  1480,  1484,  1486,  1488,
1101 <    1491,  1493,  1495,  1497,  1499,  1501,  1506,  1511,  1517,  1520,
1102 <    1522,  1524,  1526,  1528,  1530,  1532,  1534,  1536,  1538,  1540,
1103 <    1542,  1544,  1546,  1548,  1550,  1552,  1554,  1556,  1558,  1560,
1104 <    1562,  1564,  1566,  1568,  1570,  1572,  1574,  1576,  1578,  1580,
1105 <    1582,  1584,  1586,  1588,  1590,  1592,  1594,  1596,  1598,  1600,
1106 <    1602,  1604,  1606,  1608,  1610,  1612,  1614,  1616,  1618,  1620,
1107 <    1622,  1624,  1626,  1628,  1630,  1632,  1634,  1636,  1641,  1646,
1108 <    1651,  1656,  1661,  1666,  1671,  1676,  1681,  1686,  1691,  1696,
1109 <    1701,  1706,  1711,  1716,  1721,  1726,  1731,  1736,  1741,  1746,
1110 <    1751,  1756,  1761,  1766,  1771,  1776,  1781,  1786,  1791,  1796,
1111 <    1801,  1806,  1811,  1816,  1821,  1826,  1831,  1836,  1841,  1846,
1112 <    1851,  1856,  1861,  1866,  1871,  1876,  1881,  1886,  1891,  1892,
1113 <    1898,  1902,  1904,  1906,  1908,  1910,  1912,  1914,  1916,  1918,
1114 <    1920,  1922,  1924,  1926,  1928,  1930,  1932,  1934,  1936,  1938,
1115 <    1940,  1942,  1943,  1949,  1953,  1955,  1957,  1959,  1961,  1963,
1116 <    1965,  1967,  1969,  1971,  1973,  1975,  1977,  1979,  1981,  1983,
1117 <    1985,  1987,  1989,  1991,  1993,  1998,  2003,  2008,  2013,  2018,
1118 <    2019,  2026,  2029,  2031,  2033,  2035,  2037,  2039,  2041,  2043,
1119 <    2045,  2050,  2055,  2056,  2062,  2066,  2068,  2070,  2072,  2077,
1120 <    2082,  2083,  2089,  2093,  2095,  2097,  2099,  2105,  2108,  2110,
1121 <    2112,  2114,  2116,  2118,  2120,  2122,  2124,  2126,  2128,  2130,
1122 <    2132,  2134,  2136,  2138,  2140,  2142,  2144,  2146,  2148,  2153,
1123 <    2158,  2163,  2168,  2173,  2178,  2183,  2188,  2193,  2198,  2203,
1124 <    2208,  2213,  2218,  2223,  2228,  2233,  2238,  2244,  2247,  2249,
1125 <    2251,  2253,  2255,  2257,  2259,  2261,  2263,  2265,  2270,  2275,
1126 <    2280,  2285,  2290,  2295
1127 < };
1128 <
1129 < /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
1130 < static const yytype_int16 yyrhs[] =
1131 < {
1132 <     268,     0,    -1,    -1,   268,   269,    -1,   297,    -1,   303,
1133 <      -1,   318,    -1,   582,    -1,   355,    -1,   374,    -1,   388,
1134 <      -1,   279,    -1,   603,    -1,   414,    -1,   421,    -1,   431,
1135 <      -1,   440,    -1,   471,    -1,   481,    -1,   487,    -1,   501,
1136 <      -1,   566,    -1,   491,    -1,   274,    -1,     1,   262,    -1,
1137 <       1,   263,    -1,    -1,   271,    -1,   133,   270,    -1,   133,
1138 <     175,   270,    -1,   133,   176,   270,    -1,   133,   177,   270,
1139 <      -1,   133,   178,   270,    -1,   133,   179,   270,    -1,    -1,
1140 <     273,    -1,   133,   272,    -1,   133,    14,   272,    -1,   133,
1141 <      15,   272,    -1,   133,    16,   272,    -1,   121,   264,   275,
1142 <     263,   262,    -1,   275,   276,    -1,   276,    -1,   277,    -1,
1143 <     278,    -1,     1,   262,    -1,   120,   265,   155,   262,    -1,
1144 <     150,   265,   155,   262,    -1,   183,   264,   280,   263,   262,
1145 <      -1,   280,   281,    -1,   281,    -1,   288,    -1,   293,    -1,
1146 <     296,    -1,   290,    -1,   291,    -1,   292,    -1,   295,    -1,
1147 <     287,    -1,   294,    -1,   289,    -1,   286,    -1,   282,    -1,
1148 <       1,   262,    -1,    -1,   170,   283,   265,   284,   262,    -1,
1149 <     284,   266,   285,    -1,   285,    -1,   171,    -1,   172,    -1,
1150 <     169,   265,   155,   262,    -1,   167,   265,   155,   262,    -1,
1151 <     122,   265,   155,   262,    -1,   185,   265,   155,   262,    -1,
1152 <      37,   265,   155,   262,    -1,   125,   265,   155,   262,    -1,
1153 <     124,   265,   155,   262,    -1,   257,   265,   155,   262,    -1,
1154 <     258,   265,   155,   262,    -1,   229,   265,   133,   262,    -1,
1155 <      86,   265,   199,   262,    -1,     5,   264,   298,   263,   262,
1156 <      -1,   298,   299,    -1,   299,    -1,   300,    -1,   302,    -1,
1157 <     301,    -1,     1,   262,    -1,   122,   265,   155,   262,    -1,
1158 <      48,   265,   155,   262,    -1,    37,   265,   155,   262,    -1,
1159 <     104,   264,   304,   263,   262,    -1,   304,   305,    -1,   305,
1160 <      -1,   306,    -1,   307,    -1,   316,    -1,   317,    -1,   308,
1161 <      -1,   310,    -1,   312,    -1,   313,    -1,   315,    -1,   311,
1162 <      -1,   314,    -1,   309,    -1,     1,   262,    -1,   221,   265,
1163 <     155,   262,    -1,   140,   265,   155,   262,    -1,    64,   265,
1164 <     155,   262,    -1,    57,   265,   155,   262,    -1,    62,   265,
1165 <     155,   262,    -1,    63,   265,   155,   262,    -1,    60,   265,
1166 <     155,   262,    -1,    59,   265,   155,   262,    -1,    61,   265,
1167 <     155,   262,    -1,    58,   265,   155,   262,    -1,   105,   265,
1168 <     222,   262,    -1,   105,   265,   224,   262,    -1,   105,   265,
1169 <     228,   262,    -1,   105,   265,   226,   262,    -1,   105,   265,
1170 <     227,   262,    -1,   105,   265,   225,   262,    -1,   105,   265,
1171 <     223,   262,    -1,   255,   265,   199,   262,    -1,    -1,   138,
1172 <     319,   320,   264,   321,   263,   262,    -1,    -1,   324,    -1,
1173 <     321,   322,    -1,   322,    -1,   323,    -1,   325,    -1,   326,
1174 <      -1,   345,    -1,   346,    -1,   330,    -1,   329,    -1,   334,
1175 <      -1,   335,    -1,   337,    -1,   338,    -1,   339,    -1,   340,
1176 <      -1,   341,    -1,   336,    -1,   342,    -1,   343,    -1,   344,
1177 <      -1,   347,    -1,   327,    -1,   328,    -1,   348,    -1,     1,
1178 <     262,    -1,   122,   265,   155,   262,    -1,   155,    -1,   250,
1179 <     265,   155,   262,    -1,   149,   265,   155,   262,    -1,    50,
1180 <     265,   199,   262,    -1,   168,   265,   155,   262,    -1,    26,
1181 <     265,   155,   262,    -1,    -1,   238,   331,   265,   332,   262,
1182 <      -1,   332,   266,   333,    -1,   333,    -1,   206,    -1,   209,
1183 <      -1,   210,    -1,   212,    -1,   213,    -1,   216,    -1,   235,
1184 <      -1,   230,    -1,   232,    -1,   239,    -1,   236,    -1,   215,
1185 <      -1,   231,    -1,   234,    -1,   217,    -1,   242,    -1,   207,
1186 <      -1,   208,    -1,   220,    -1,    74,   265,   199,   262,    -1,
1187 <     163,   265,   199,   262,    -1,   164,   265,   199,   262,    -1,
1188 <      94,   265,   199,   262,    -1,   259,   265,   199,   262,    -1,
1189 <     249,   265,   199,   262,    -1,    67,   265,   199,   262,    -1,
1190 <     127,   265,   199,   262,    -1,    38,   265,   199,   262,    -1,
1191 <     161,   265,   199,   262,    -1,     5,   265,   199,   262,    -1,
1192 <      79,   265,   199,   262,    -1,    81,   265,   199,   262,    -1,
1193 <     231,   265,   199,   262,    -1,    -1,    55,   349,   265,   350,
1194 <     262,    -1,   350,   266,   351,    -1,   351,    -1,    -1,   132,
1195 <     352,   354,    -1,    -1,   353,   354,    -1,    74,    -1,   163,
1196 <      -1,    94,    -1,   249,    -1,   259,    -1,    67,    -1,    38,
1197 <      -1,   161,    -1,     5,    -1,    79,    -1,   127,    -1,   231,
1198 <      -1,   143,    -1,    81,    -1,   164,    -1,    50,    -1,    -1,
1199 <      26,   356,   357,   264,   358,   263,   262,    -1,    -1,   361,
1200 <      -1,   358,   359,    -1,   359,    -1,   360,    -1,   371,    -1,
1201 <     372,    -1,   362,    -1,   363,    -1,   373,    -1,   364,    -1,
1202 <     365,    -1,   366,    -1,   367,    -1,   368,    -1,   369,    -1,
1203 <     370,    -1,     1,   262,    -1,   122,   265,   155,   262,    -1,
1204 <     155,    -1,   152,   265,   271,   262,    -1,   153,   265,   271,
1205 <     262,    -1,   136,   265,   133,   262,    -1,    30,   265,   271,
1206 <     262,    -1,   114,   265,   133,   262,    -1,   109,   265,   133,
1207 <     262,    -1,   111,   265,   133,   262,    -1,   110,   265,   133,
1208 <     262,    -1,   180,   265,   273,   262,    -1,    23,   265,   133,
1209 <     262,    -1,    24,   265,   133,   262,    -1,   135,   265,   133,
1210 <     262,    -1,    -1,   102,   375,   264,   380,   263,   262,    -1,
1211 <      -1,    55,   377,   265,   378,   262,    -1,   378,   266,   379,
1212 <      -1,   379,    -1,   237,    -1,    78,    -1,   233,    -1,   380,
1213 <     381,    -1,   381,    -1,   382,    -1,   376,    -1,   386,    -1,
1214 <     387,    -1,     1,   262,    -1,    -1,   154,   265,   384,   383,
1215 <     262,    -1,   384,   266,   385,    -1,   385,    -1,   133,    -1,
1216 <     133,   204,   133,    -1,    91,   265,   155,   262,    -1,    85,
1217 <     265,   155,   262,    -1,    -1,    75,   389,   264,   390,   263,
1218 <     262,    -1,   390,   391,    -1,   391,    -1,   392,    -1,   393,
1219 <      -1,   395,    -1,   397,    -1,   404,    -1,   405,    -1,   406,
1220 <      -1,   408,    -1,   409,    -1,   410,    -1,   394,    -1,   411,
1221 <      -1,   412,    -1,   407,    -1,   413,    -1,   396,    -1,     1,
1222 <     262,    -1,   250,   265,   155,   262,    -1,   149,   265,   155,
1223 <     262,    -1,   193,   265,   199,   262,    -1,    26,   265,   155,
1224 <     262,    -1,    50,   265,   199,   262,    -1,    -1,    55,   398,
1225 <     265,   399,   262,    -1,   399,   266,   400,    -1,   400,    -1,
1226 <      -1,   132,   401,   403,    -1,    -1,   402,   403,    -1,   193,
1227 <      -1,    51,    -1,    95,    -1,    76,    -1,    20,    -1,    21,
1228 <      -1,   131,    -1,    69,    -1,   174,    -1,   123,    -1,    95,
1229 <     265,   199,   262,    -1,    76,   265,   199,   262,    -1,    51,
1230 <     265,   199,   262,    -1,    20,   265,   199,   262,    -1,   131,
1231 <     265,   199,   262,    -1,    69,   265,   199,   262,    -1,   192,
1232 <     265,   155,   262,    -1,   159,   265,   155,   262,    -1,   158,
1233 <     265,   133,   262,    -1,   123,   265,   199,   262,    -1,    -1,
1234 <     173,   415,   264,   416,   263,   262,    -1,   416,   417,    -1,
1235 <     417,    -1,   418,    -1,   419,    -1,   420,    -1,     1,   262,
1236 <      -1,   157,   265,   155,   262,    -1,    22,   265,   155,   262,
1237 <      -1,   126,   265,   155,   262,    -1,    -1,   187,   422,   264,
1238 <     423,   263,   262,    -1,   423,   424,    -1,   424,    -1,   425,
1239 <      -1,   426,    -1,   427,    -1,     1,   262,    -1,   122,   265,
1240 <     155,   262,    -1,   250,   265,   155,   262,    -1,    -1,   189,
1241 <     428,   265,   429,   262,    -1,   429,   266,   430,    -1,   430,
1242 <      -1,    94,    -1,   246,    -1,   249,    -1,   259,    -1,   247,
1243 <      -1,   241,    -1,   173,    -1,   248,    -1,   240,    -1,   220,
1244 <      -1,   205,    -1,    -1,   188,   432,   264,   433,   263,   262,
1245 <      -1,   433,   434,    -1,   434,    -1,   435,    -1,   436,    -1,
1246 <       1,   262,    -1,   122,   265,   155,   262,    -1,    -1,   189,
1247 <     437,   265,   438,   262,    -1,   438,   266,   439,    -1,   439,
1248 <      -1,    94,    -1,   246,    -1,   249,    -1,   259,    -1,   247,
1249 <      -1,   241,    -1,   173,    -1,   248,    -1,   240,    -1,   220,
1250 <      -1,   205,    -1,    -1,    29,   441,   442,   264,   443,   263,
1251 <     262,    -1,    -1,   446,    -1,   443,   444,    -1,   444,    -1,
1252 <     445,    -1,   447,    -1,   448,    -1,   449,    -1,   450,    -1,
1253 <     452,    -1,   451,    -1,   453,    -1,   454,    -1,   467,    -1,
1254 <     468,    -1,   469,    -1,   465,    -1,   462,    -1,   464,    -1,
1255 <     463,    -1,   461,    -1,   470,    -1,   466,    -1,     1,   262,
1256 <      -1,   122,   265,   155,   262,    -1,   155,    -1,    85,   265,
1257 <     155,   262,    -1,   257,   265,   155,   262,    -1,   181,   265,
1258 <     155,   262,    -1,     3,   265,   155,   262,    -1,   154,   265,
1259 <     133,   262,    -1,     6,   265,   218,   262,    -1,     6,   265,
1260 <     219,   262,    -1,    54,   265,   155,   262,    -1,    -1,    55,
1261 <     455,   265,   456,   262,    -1,   456,   266,   457,    -1,   457,
1262 <      -1,    -1,   132,   458,   460,    -1,    -1,   459,   460,    -1,
1263 <      27,    -1,    31,    -1,    10,    -1,    12,    -1,   244,    -1,
1264 <     168,   265,   155,   262,    -1,    50,   265,   199,   262,    -1,
1265 <      31,   265,   199,   262,    -1,    27,   265,   199,   262,    -1,
1266 <      10,   265,   199,   262,    -1,   244,   265,   199,   262,    -1,
1267 <      87,   265,   155,   262,    -1,   100,   265,   155,   262,    -1,
1268 <      26,   265,   155,   262,    -1,    25,   265,   155,   262,    -1,
1269 <      -1,    92,   472,   264,   477,   263,   262,    -1,    -1,   189,
1270 <     474,   265,   475,   262,    -1,   475,   266,   476,    -1,   476,
1271 <      -1,   160,    -1,   477,   478,    -1,   478,    -1,   479,    -1,
1272 <     480,    -1,   473,    -1,     1,    -1,   250,   265,   155,   262,
1273 <      -1,   157,   265,   155,   262,    -1,    -1,    36,   482,   264,
1274 <     483,   263,   262,    -1,   483,   484,    -1,   484,    -1,   485,
1275 <      -1,   486,    -1,     1,    -1,    91,   265,   155,   262,    -1,
1276 <     157,   265,   155,   262,    -1,    52,   264,   488,   263,   262,
1277 <      -1,   488,   489,    -1,   489,    -1,   490,    -1,     1,    -1,
1278 <      91,   265,   155,   262,    -1,    -1,    65,   492,   264,   497,
1279 <     263,   262,    -1,    -1,   189,   494,   265,   495,   262,    -1,
1280 <     495,   266,   496,    -1,   496,    -1,   160,    -1,   497,   498,
1281 <      -1,   498,    -1,   499,    -1,   500,    -1,   493,    -1,     1,
1282 <      -1,   122,   265,   155,   262,    -1,   157,   265,   155,   262,
1283 <      -1,    66,   264,   502,   263,   262,    -1,   502,   503,    -1,
1284 <     503,    -1,   512,    -1,   513,    -1,   515,    -1,   516,    -1,
1285 <     517,    -1,   518,    -1,   519,    -1,   520,    -1,   521,    -1,
1286 <     522,    -1,   511,    -1,   524,    -1,   525,    -1,   526,    -1,
1287 <     527,    -1,   543,    -1,   529,    -1,   531,    -1,   533,    -1,
1288 <     532,    -1,   536,    -1,   530,    -1,   537,    -1,   538,    -1,
1289 <     539,    -1,   540,    -1,   542,    -1,   541,    -1,   557,    -1,
1290 <     544,    -1,   548,    -1,   549,    -1,   553,    -1,   534,    -1,
1291 <     535,    -1,   563,    -1,   561,    -1,   562,    -1,   545,    -1,
1292 <     514,    -1,   546,    -1,   547,    -1,   564,    -1,   552,    -1,
1293 <     523,    -1,   565,    -1,   550,    -1,   551,    -1,   507,    -1,
1294 <     510,    -1,   505,    -1,   506,    -1,   508,    -1,   509,    -1,
1295 <     528,    -1,   504,    -1,     1,    -1,   116,   265,   133,   262,
1296 <      -1,    72,   265,   133,   262,    -1,    73,   265,   133,   262,
1297 <      -1,    12,   265,   199,   262,    -1,   256,   265,   199,   262,
1298 <      -1,   162,   265,   271,   262,    -1,   186,   265,   199,   262,
1299 <      -1,    93,   265,   133,   262,    -1,    84,   265,   199,   262,
1300 <      -1,    89,   265,   199,   262,    -1,    43,   265,   199,   262,
1301 <      -1,    53,   265,   199,   262,    -1,     8,   265,   199,   262,
1302 <      -1,   113,   265,   271,   262,    -1,   112,   265,   133,   262,
1303 <      -1,   106,   265,   133,   262,    -1,     9,   265,   271,   262,
1304 <      -1,   203,   265,   271,   262,    -1,   202,   265,   271,   262,
1305 <      -1,    77,   265,   133,   262,    -1,    97,   265,   199,   262,
1306 <      -1,    96,   265,   155,   262,    -1,    90,   265,   199,   262,
1307 <      -1,   261,   265,   199,   262,    -1,   194,   265,   199,   262,
1308 <      -1,   197,   265,   199,   262,    -1,   198,   265,   199,   262,
1309 <      -1,   196,   265,   199,   262,    -1,   196,   265,   200,   262,
1310 <      -1,   195,   265,   199,   262,    -1,   195,   265,   200,   262,
1311 <      -1,   147,   265,   271,   262,    -1,    19,   265,   271,   262,
1312 <      -1,   139,   265,   199,   262,    -1,   148,   265,   271,   262,
1313 <      -1,   190,   265,   199,   262,    -1,   130,   265,   199,   262,
1314 <      -1,   245,   265,   199,   262,    -1,   142,   265,   199,   262,
1315 <      -1,   117,   265,   155,   262,    -1,    88,   265,   271,   262,
1316 <      -1,    45,   265,   133,   262,    -1,   115,   265,   133,   262,
1317 <      -1,   184,   265,   155,   262,    -1,    32,   265,   155,   262,
1318 <      -1,    28,   265,   133,   262,    -1,   251,   265,   199,   262,
1319 <      -1,    47,   265,   155,   262,    -1,   151,   265,   199,   262,
1320 <      -1,    39,   265,   199,   262,    -1,   243,   265,   271,   262,
1321 <      -1,    -1,   144,   554,   265,   555,   262,    -1,   555,   266,
1322 <     556,    -1,   556,    -1,   206,    -1,   209,    -1,   210,    -1,
1323 <     212,    -1,   213,    -1,   216,    -1,   235,    -1,   230,    -1,
1324 <     232,    -1,   239,    -1,   236,    -1,   215,    -1,   231,    -1,
1325 <     234,    -1,   217,    -1,   242,    -1,   207,    -1,   208,    -1,
1326 <     220,    -1,    -1,   141,   558,   265,   559,   262,    -1,   559,
1327 <     266,   560,    -1,   560,    -1,   206,    -1,   209,    -1,   210,
1328 <      -1,   212,    -1,   213,    -1,   216,    -1,   235,    -1,   230,
1329 <      -1,   232,    -1,   239,    -1,   236,    -1,   215,    -1,   231,
1330 <      -1,   234,    -1,   217,    -1,   242,    -1,   207,    -1,   208,
1331 <      -1,   220,    -1,   118,   265,   133,   262,    -1,   119,   265,
1332 <     133,   262,    -1,    33,   265,   133,   262,    -1,   211,   265,
1333 <     273,   262,    -1,    44,   265,   199,   262,    -1,    -1,    68,
1334 <     567,   264,   568,   263,   262,    -1,   568,   569,    -1,   569,
1335 <      -1,   570,    -1,   571,    -1,   572,    -1,   576,    -1,   577,
1336 <      -1,   578,    -1,     1,    -1,    49,   265,   199,   262,    -1,
1337 <      46,   265,   271,   262,    -1,    -1,   104,   573,   265,   574,
1338 <     262,    -1,   574,   266,   575,    -1,   575,    -1,   201,    -1,
1339 <      11,    -1,   250,   265,   155,   262,    -1,   122,   265,   155,
1340 <     262,    -1,    -1,     4,   579,   265,   580,   262,    -1,   580,
1341 <     266,   581,    -1,   581,    -1,   201,    -1,    11,    -1,    22,
1342 <     264,   583,   263,   262,    -1,   583,   584,    -1,   584,    -1,
1343 <     587,    -1,   588,    -1,   589,    -1,   590,    -1,   595,    -1,
1344 <     591,    -1,   592,    -1,   593,    -1,   594,    -1,   596,    -1,
1345 <     597,    -1,   598,    -1,   586,    -1,   599,    -1,   600,    -1,
1346 <     601,    -1,   602,    -1,   585,    -1,     1,    -1,    40,   265,
1347 <     199,   262,    -1,   165,   265,   199,   262,    -1,    42,   265,
1348 <     199,   262,    -1,   252,   265,   199,   262,    -1,   253,   265,
1349 <     199,   262,    -1,   254,   265,   199,   262,    -1,    98,   265,
1350 <     271,   262,    -1,    99,   265,   271,   262,    -1,   108,   265,
1351 <     133,   262,    -1,   156,   265,   199,   262,    -1,   107,   265,
1352 <     133,   262,    -1,    35,   265,   133,   262,    -1,    34,   265,
1353 <     133,   262,    -1,   128,   265,   199,   262,    -1,   129,   265,
1354 <     199,   262,    -1,    13,   265,   199,   262,    -1,   145,   265,
1355 <     133,   262,    -1,   146,   265,   271,   262,    -1,   182,   264,
1356 <     604,   263,   262,    -1,   604,   605,    -1,   605,    -1,   606,
1357 <      -1,   607,    -1,   609,    -1,   611,    -1,   610,    -1,   608,
1358 <      -1,   612,    -1,     1,    -1,    56,   265,   199,   262,    -1,
1359 <      83,   265,   199,   262,    -1,    80,   265,   155,   262,    -1,
1360 <     101,   265,   271,   262,    -1,    78,   265,   199,   262,    -1,
1361 <      41,   265,   199,   262,    -1,    82,   265,   199,   262,    -1
1362 < };
1363 <
1364 < /* 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,   397,   397,   398,   401,   402,   403,   404,   405,   406,
1027 <     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
1028 <     417,   418,   419,   420,   421,   422,   426,   426,   427,   431,
1029 <     435,   439,   443,   447,   453,   453,   454,   455,   456,   457,
1030 <     464,   467,   467,   468,   468,   468,   470,   478,   487,   489,
1031 <     489,   490,   490,   491,   491,   492,   492,   493,   494,   494,
1032 <     495,   495,   496,   497,   501,   500,   519,   519,   520,   526,
1033 <     534,   568,   628,   642,   657,   666,   680,   689,   717,   747,
1034 <     770,   792,   794,   794,   795,   795,   796,   796,   798,   807,
1035 <     816,   829,   831,   832,   834,   834,   835,   836,   836,   837,
1036 <     837,   838,   838,   839,   839,   840,   841,   843,   847,   851,
1037 <     858,   865,   872,   879,   886,   893,   900,   907,   911,   915,
1038 <     919,   923,   927,   931,   937,   947,   946,  1040,  1040,  1041,
1039 <    1041,  1042,  1042,  1042,  1042,  1043,  1043,  1044,  1044,  1044,
1040 <    1045,  1045,  1045,  1046,  1046,  1046,  1047,  1047,  1047,  1047,
1041 <    1048,  1048,  1049,  1049,  1051,  1063,  1075,  1109,  1121,  1132,
1042 <    1174,  1184,  1183,  1189,  1189,  1190,  1194,  1198,  1202,  1206,
1043 <    1210,  1214,  1218,  1222,  1226,  1230,  1234,  1238,  1242,  1246,
1044 <    1250,  1254,  1258,  1262,  1268,  1279,  1290,  1301,  1312,  1323,
1045 <    1334,  1345,  1356,  1367,  1378,  1389,  1400,  1411,  1423,  1422,
1046 <    1426,  1426,  1427,  1427,  1428,  1428,  1430,  1437,  1444,  1451,
1047 <    1458,  1465,  1472,  1479,  1486,  1493,  1500,  1507,  1514,  1521,
1048 <    1528,  1535,  1549,  1548,  1598,  1598,  1600,  1600,  1601,  1602,
1049 <    1602,  1603,  1604,  1605,  1606,  1607,  1608,  1609,  1610,  1611,
1050 <    1612,  1613,  1615,  1624,  1633,  1639,  1645,  1651,  1657,  1663,
1051 <    1669,  1675,  1681,  1687,  1693,  1699,  1709,  1708,  1725,  1724,
1052 <    1729,  1729,  1730,  1734,  1738,  1746,  1746,  1747,  1747,  1747,
1053 <    1747,  1747,  1749,  1749,  1751,  1751,  1753,  1767,  1787,  1796,
1054 <    1809,  1808,  1877,  1877,  1878,  1878,  1878,  1878,  1879,  1879,
1055 <    1880,  1880,  1880,  1881,  1881,  1882,  1882,  1882,  1883,  1883,
1056 <    1883,  1885,  1922,  1935,  1946,  1955,  1967,  1966,  1970,  1970,
1057 <    1971,  1971,  1972,  1972,  1974,  1982,  1989,  1996,  2003,  2010,
1058 <    2017,  2024,  2031,  2038,  2047,  2058,  2069,  2080,  2091,  2102,
1059 <    2114,  2133,  2143,  2152,  2168,  2167,  2183,  2183,  2184,  2184,
1060 <    2184,  2184,  2186,  2195,  2210,  2224,  2223,  2239,  2239,  2240,
1061 <    2240,  2240,  2240,  2242,  2251,  2274,  2273,  2279,  2279,  2280,
1062 <    2284,  2288,  2292,  2296,  2300,  2304,  2308,  2312,  2316,  2320,
1063 <    2330,  2329,  2346,  2346,  2347,  2347,  2347,  2349,  2356,  2355,
1064 <    2361,  2361,  2362,  2366,  2370,  2374,  2378,  2382,  2386,  2390,
1065 <    2394,  2398,  2402,  2412,  2411,  2557,  2557,  2558,  2558,  2559,
1066 <    2559,  2559,  2560,  2560,  2561,  2561,  2562,  2562,  2562,  2563,
1067 <    2563,  2563,  2564,  2564,  2564,  2565,  2565,  2566,  2566,  2568,
1068 <    2580,  2592,  2601,  2627,  2645,  2663,  2669,  2673,  2681,  2691,
1069 <    2690,  2694,  2694,  2695,  2695,  2696,  2696,  2698,  2709,  2716,
1070 <    2723,  2730,  2740,  2781,  2792,  2803,  2818,  2829,  2840,  2853,
1071 <    2866,  2875,  2911,  2910,  2974,  2973,  2977,  2977,  2978,  2984,
1072 <    2984,  2985,  2985,  2985,  2985,  2987,  3006,  3016,  3015,  3038,
1073 <    3038,  3039,  3039,  3039,  3041,  3047,  3056,  3058,  3058,  3059,
1074 <    3059,  3061,  3080,  3079,  3127,  3126,  3130,  3130,  3131,  3137,
1075 <    3137,  3138,  3138,  3138,  3138,  3140,  3146,  3155,  3158,  3158,
1076 <    3159,  3159,  3160,  3160,  3161,  3161,  3162,  3162,  3163,  3163,
1077 <    3164,  3164,  3165,  3165,  3166,  3166,  3167,  3167,  3168,  3168,
1078 <    3169,  3169,  3170,  3170,  3171,  3171,  3172,  3172,  3173,  3173,
1079 <    3174,  3174,  3175,  3175,  3176,  3176,  3177,  3177,  3178,  3178,
1080 <    3179,  3180,  3180,  3181,  3181,  3182,  3182,  3183,  3183,  3184,
1081 <    3184,  3185,  3185,  3186,  3186,  3187,  3188,  3191,  3196,  3201,
1082 <    3206,  3211,  3216,  3221,  3226,  3231,  3236,  3241,  3246,  3251,
1083 <    3256,  3261,  3266,  3271,  3276,  3281,  3287,  3298,  3303,  3312,
1084 <    3317,  3322,  3327,  3332,  3337,  3340,  3345,  3348,  3353,  3358,
1085 <    3363,  3368,  3373,  3378,  3383,  3388,  3393,  3404,  3409,  3414,
1086 <    3419,  3428,  3460,  3478,  3483,  3492,  3497,  3502,  3508,  3507,
1087 <    3512,  3512,  3513,  3516,  3519,  3522,  3525,  3528,  3531,  3534,
1088 <    3537,  3540,  3543,  3546,  3549,  3552,  3555,  3558,  3561,  3564,
1089 <    3567,  3573,  3572,  3577,  3577,  3578,  3581,  3584,  3587,  3590,
1090 <    3593,  3596,  3599,  3602,  3605,  3608,  3611,  3614,  3617,  3620,
1091 <    3623,  3626,  3629,  3632,  3637,  3642,  3647,  3652,  3657,  3666,
1092 <    3665,  3689,  3689,  3690,  3691,  3692,  3693,  3694,  3695,  3696,
1434 <    3698,  3704,  3711,  3710,  3715,  3715,  3716,  3720,  3726,  3760,
1435 <    3770,  3769,  3819,  3819,  3820,  3824,  3833,  3836,  3836,  3837,
1436 <    3837,  3838,  3838,  3839,  3839,  3840,  3840,  3841,  3841,  3842,
1437 <    3843,  3843,  3844,  3844,  3845,  3845,  3846,  3846,  3848,  3853,
1438 <    3858,  3863,  3868,  3873,  3878,  3883,  3888,  3893,  3898,  3903,
1439 <    3908,  3913,  3918,  3923,  3928,  3933,  3941,  3944,  3944,  3945,
1440 <    3945,  3946,  3947,  3948,  3948,  3949,  3950,  3952,  3958,  3964,
1441 <    3973,  3987,  3993,  3999
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",
1455 <  "CLASS", "COMPRESSED", "COMPRESSION_LEVEL", "CONNECT", "CONNECTFREQ",
1456 <  "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",
1109 <  "DOT_IN_IP6_ADDR", "DOTS_IN_IDENT", "DURATION", "EGDPOOL_PATH", "EMAIL",
1110 <  "ENABLE", "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT", "FAILED_OPER_NOTICE",
1111 <  "FAKENAME", "IRCD_FLAGS", "FLATTEN_LINKS", "FFAILED_OPERLOG", "FKILLLOG",
1112 <  "FKLINELOG", "FGLINELOG", "FIOERRLOG", "FOPERLOG", "FOPERSPYLOG",
1113 <  "FUSERLOG", "GECOS", "GENERAL", "GLINE", "GLINES", "GLINE_EXEMPT",
1114 <  "GLINE_LOG", "GLINE_TIME", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
1115 <  "GLOBAL_KILL", "IRCD_AUTH", "NEED_IDENT", "HAVENT_READ_CONF", "HIDDEN",
1116 <  "HIDDEN_ADMIN", "HIDDEN_NAME", "HIDDEN_OPER", "HIDE_SERVER_IPS",
1117 <  "HIDE_SERVERS", "HIDE_SPOOF_IPS", "HOST", "HUB", "HUB_MASK", "IDLETIME",
1118 <  "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT", "IP", "KILL",
1119 <  "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT", "KLINE_REASON",
1120 <  "KLINE_WITH_REASON", "KNOCK_DELAY", "KNOCK_DELAY_CHANNEL", "LEAF_MASK",
1121 <  "LINKS_DELAY", "LISTEN", "T_LOG", "LOGGING", "LOG_LEVEL", "MAX_ACCEPT",
1122 <  "MAX_BANS", "MAX_CHANS_PER_USER", "MAX_GLOBAL", "MAX_IDENT", "MAX_LOCAL",
1123 <  "MAX_NICK_CHANGES", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1124 <  "MAX_WATCH", "MESSAGE_LOCALE", "MIN_NONWILDCARD",
1125 <  "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "NAME", "NEED_PASSWORD",
1477 <  "NETWORK_DESC", "NETWORK_NAME", "NICK", "NICK_CHANGES",
1108 >  "DISABLE_REMOTE_COMMANDS", "DOTS_IN_IDENT", "EGDPOOL_PATH", "EMAIL",
1109 >  "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT", "FAILED_OPER_NOTICE",
1110 >  "FLATTEN_LINKS", "GECOS", "GENERAL", "GLINE", "GLINE_DURATION",
1111 >  "GLINE_ENABLE", "GLINE_EXEMPT", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
1112 >  "GLINE_REQUEST_DURATION", "GLOBAL_KILL", "HAVENT_READ_CONF", "HIDDEN",
1113 >  "HIDDEN_NAME", "HIDE_CHANS", "HIDE_IDLE", "HIDE_IDLE_FROM_OPERS",
1114 >  "HIDE_SERVER_IPS", "HIDE_SERVERS", "HIDE_SERVICES", "HIDE_SPOOF_IPS",
1115 >  "HOST", "HUB", "HUB_MASK", "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT",
1116 >  "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_global_kill",
1173 <  "oper_remote", "oper_remoteban", "oper_kline", "oper_xline",
1174 <  "oper_unkline", "oper_gline", "oper_nick_changes", "oper_die",
1175 <  "oper_rehash", "oper_admin", "oper_hidden_admin", "oper_hidden_oper",
1176 <  "oper_operwall", "oper_flags", "$@4", "oper_flags_items",
1177 <  "oper_flags_item", "$@5", "$@6", "oper_flags_item_atom", "class_entry",
1178 <  "$@7", "class_name_b", "class_items", "class_item", "class_name",
1179 <  "class_name_t", "class_ping_time", "class_ping_warning",
1532 <  "class_number_per_ip", "class_connectfreq", "class_max_number",
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_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1182 <  "class_number_per_cidr", "listen_entry", "$@8", "listen_flags", "$@9",
1183 <  "listen_flags_items", "listen_flags_item", "listen_items", "listen_item",
1184 <  "listen_port", "$@10", "port_items", "port_item", "listen_address",
1185 <  "listen_host", "auth_entry", "$@11", "auth_items", "auth_item",
1186 <  "auth_user", "auth_passwd", "auth_spoof_notice", "auth_class",
1187 <  "auth_encrypted", "auth_flags", "$@12", "auth_flags_items",
1188 <  "auth_flags_item", "$@13", "$@14", "auth_flags_item_atom",
1189 <  "auth_kline_exempt", "auth_need_ident", "auth_exceed_limit",
1190 <  "auth_can_flood", "auth_no_tilde", "auth_gline_exempt", "auth_spoof",
1191 <  "auth_redir_serv", "auth_redir_port", "auth_need_password", "resv_entry",
1192 <  "$@15", "resv_items", "resv_item", "resv_creason", "resv_channel",
1193 <  "resv_nick", "shared_entry", "$@16", "shared_items", "shared_item",
1194 <  "shared_name", "shared_user", "shared_type", "$@17", "shared_types",
1195 <  "shared_type_item", "cluster_entry", "$@18", "cluster_items",
1196 <  "cluster_item", "cluster_name", "cluster_type", "$@19", "cluster_types",
1197 <  "cluster_type_item", "connect_entry", "$@20", "connect_name_b",
1551 <  "connect_items", "connect_item", "connect_name", "connect_name_t",
1181 >  "class_recvq", "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1182 >  "class_number_per_cidr", "class_min_idle", "class_max_idle",
1183 >  "class_flags", "$@8", "class_flags_items", "class_flags_item",
1184 >  "listen_entry", "$@9", "listen_flags", "$@10", "listen_flags_items",
1185 >  "listen_flags_item", "listen_items", "listen_item", "listen_port",
1186 >  "$@11", "port_items", "port_item", "listen_address", "listen_host",
1187 >  "auth_entry", "$@12", "auth_items", "auth_item", "auth_user",
1188 >  "auth_passwd", "auth_class", "auth_encrypted", "auth_flags", "$@13",
1189 >  "auth_flags_items", "auth_flags_item", "auth_spoof", "auth_redir_serv",
1190 >  "auth_redir_port", "resv_entry", "$@14", "resv_items", "resv_item",
1191 >  "resv_mask", "resv_reason", "resv_exempt", "service_entry",
1192 >  "service_items", "service_item", "service_name", "shared_entry", "$@15",
1193 >  "shared_items", "shared_item", "shared_name", "shared_user",
1194 >  "shared_type", "$@16", "shared_types", "shared_type_item",
1195 >  "cluster_entry", "$@17", "cluster_items", "cluster_item", "cluster_name",
1196 >  "cluster_type", "$@18", "cluster_types", "cluster_type_item",
1197 >  "connect_entry", "$@19", "connect_items", "connect_item", "connect_name",
1198    "connect_host", "connect_vhost", "connect_send_password",
1199 <  "connect_accept_password", "connect_port", "connect_aftype",
1200 <  "connect_fakename", "connect_flags", "$@21", "connect_flags_items",
1201 <  "connect_flags_item", "$@22", "$@23", "connect_flags_item_atom",
1556 <  "connect_rsa_public_key_file", "connect_encrypted", "connect_cryptlink",
1557 <  "connect_compressed", "connect_auto", "connect_topicburst",
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_cipher_preference", "kill_entry", "$@24", "kill_type", "$@25",
1204 <  "kill_type_items", "kill_type_item", "kill_items", "kill_item",
1205 <  "kill_user", "kill_reason", "deny_entry", "$@26", "deny_items",
1206 <  "deny_item", "deny_ip", "deny_reason", "exempt_entry", "exempt_items",
1207 <  "exempt_item", "exempt_ip", "gecos_entry", "$@27", "gecos_flags", "$@28",
1208 <  "gecos_flags_items", "gecos_flags_item", "gecos_items", "gecos_item",
1209 <  "gecos_name", "gecos_reason", "general_entry", "general_items",
1210 <  "general_item", "general_max_watch", "general_gline_min_cidr",
1211 <  "general_gline_min_cidr6", "general_burst_away",
1568 <  "general_use_whois_actually", "general_reject_hold_time",
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", "$@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_tkline_expire_notices", "general_kill_chase_time_limit",
1213    "general_hide_spoof_ips", "general_ignore_bogus_ts",
1214 <  "general_disable_remote_commands", "general_failed_oper_notice",
1215 <  "general_anti_nick_flood", "general_max_nick_time",
1216 <  "general_max_nick_changes", "general_max_accept",
1217 <  "general_anti_spam_exit_message_time", "general_ts_warn_delta",
1218 <  "general_ts_max_delta", "general_havent_read_conf",
1219 <  "general_kline_with_reason", "general_kline_reason",
1220 <  "general_invisible_on_connect", "general_warn_no_nline",
1221 <  "general_stats_e_disabled", "general_stats_o_oper_only",
1579 <  "general_stats_P_oper_only", "general_stats_k_oper_only",
1214 >  "general_failed_oper_notice", "general_anti_nick_flood",
1215 >  "general_max_nick_time", "general_max_nick_changes",
1216 >  "general_max_accept", "general_anti_spam_exit_message_time",
1217 >  "general_ts_warn_delta", "general_ts_max_delta",
1218 >  "general_havent_read_conf", "general_invisible_on_connect",
1219 >  "general_warn_no_connect_block", "general_stats_e_disabled",
1220 >  "general_stats_o_oper_only", "general_stats_P_oper_only",
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_message_locale", "general_idletime",
1227 <  "general_dots_in_ident", "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",
1590 <  "$@30", "umode_items", "umode_item", "general_min_nonwildcard",
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",
1233 <  "general_client_flood", "general_dot_in_ip6_addr", "gline_entry", "$@31",
1234 <  "gline_items", "gline_item", "gline_enable", "gline_duration",
1235 <  "gline_logging", "$@32", "gline_logging_types",
1236 <  "gline_logging_type_item", "gline_user", "gline_server", "gline_action",
1237 <  "$@33", "gdeny_types", "gdeny_type_item", "channel_entry",
1597 <  "channel_items", "channel_item", "channel_disable_fake_channels",
1598 <  "channel_restrict_channels", "channel_disable_local_channels",
1599 <  "channel_use_except", "channel_use_invex", "channel_use_knock",
1600 <  "channel_knock_delay", "channel_knock_delay_channel",
1601 <  "channel_max_chans_per_user", "channel_quiet_on_ban", "channel_max_bans",
1233 >  "channel_entry", "channel_items", "channel_item",
1234 >  "channel_disable_fake_channels", "channel_invite_client_count",
1235 >  "channel_invite_client_time", "channel_knock_client_count",
1236 >  "channel_knock_client_time", "channel_knock_delay_channel",
1237 >  "channel_max_channels", "channel_max_bans",
1238    "channel_default_split_user_count", "channel_default_split_server_count",
1239    "channel_no_create_on_split", "channel_no_join_on_split",
1240 <  "channel_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 1637 | 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,
1641 <     495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
1642 <     505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
1643 <     515,   516,    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.  */
1648 < static const yytype_uint16 yyr1[] =
1649 < {
1650 <       0,   267,   268,   268,   269,   269,   269,   269,   269,   269,
1651 <     269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
1652 <     269,   269,   269,   269,   269,   269,   270,   270,   271,   271,
1653 <     271,   271,   271,   271,   272,   272,   273,   273,   273,   273,
1654 <     274,   275,   275,   276,   276,   276,   277,   278,   279,   280,
1655 <     280,   281,   281,   281,   281,   281,   281,   281,   281,   281,
1656 <     281,   281,   281,   281,   283,   282,   284,   284,   285,   285,
1657 <     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
1658 <     296,   297,   298,   298,   299,   299,   299,   299,   300,   301,
1659 <     302,   303,   304,   304,   305,   305,   305,   305,   305,   305,
1660 <     305,   305,   305,   305,   305,   305,   305,   306,   307,   308,
1661 <     309,   310,   311,   312,   313,   314,   315,   316,   316,   316,
1662 <     316,   316,   316,   316,   317,   319,   318,   320,   320,   321,
1663 <     321,   322,   322,   322,   322,   322,   322,   322,   322,   322,
1664 <     322,   322,   322,   322,   322,   322,   322,   322,   322,   322,
1665 <     322,   322,   322,   322,   323,   324,   325,   326,   327,   328,
1666 <     329,   331,   330,   332,   332,   333,   333,   333,   333,   333,
1667 <     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
1668 <     333,   333,   333,   333,   334,   335,   336,   337,   338,   339,
1669 <     340,   341,   342,   343,   344,   345,   346,   347,   349,   348,
1670 <     350,   350,   352,   351,   353,   351,   354,   354,   354,   354,
1671 <     354,   354,   354,   354,   354,   354,   354,   354,   354,   354,
1672 <     354,   354,   356,   355,   357,   357,   358,   358,   359,   359,
1673 <     359,   359,   359,   359,   359,   359,   359,   359,   359,   359,
1674 <     359,   359,   360,   361,   362,   363,   364,   365,   366,   367,
1675 <     368,   369,   370,   371,   372,   373,   375,   374,   377,   376,
1676 <     378,   378,   379,   379,   379,   380,   380,   381,   381,   381,
1677 <     381,   381,   383,   382,   384,   384,   385,   385,   386,   387,
1678 <     389,   388,   390,   390,   391,   391,   391,   391,   391,   391,
1679 <     391,   391,   391,   391,   391,   391,   391,   391,   391,   391,
1680 <     391,   392,   393,   394,   395,   396,   398,   397,   399,   399,
1681 <     401,   400,   402,   400,   403,   403,   403,   403,   403,   403,
1682 <     403,   403,   403,   403,   404,   405,   406,   407,   408,   409,
1683 <     410,   411,   412,   413,   415,   414,   416,   416,   417,   417,
1684 <     417,   417,   418,   419,   420,   422,   421,   423,   423,   424,
1685 <     424,   424,   424,   425,   426,   428,   427,   429,   429,   430,
1686 <     430,   430,   430,   430,   430,   430,   430,   430,   430,   430,
1687 <     432,   431,   433,   433,   434,   434,   434,   435,   437,   436,
1688 <     438,   438,   439,   439,   439,   439,   439,   439,   439,   439,
1689 <     439,   439,   439,   441,   440,   442,   442,   443,   443,   444,
1690 <     444,   444,   444,   444,   444,   444,   444,   444,   444,   444,
1691 <     444,   444,   444,   444,   444,   444,   444,   444,   444,   445,
1692 <     446,   447,   448,   449,   450,   451,   452,   452,   453,   455,
1693 <     454,   456,   456,   458,   457,   459,   457,   460,   460,   460,
1694 <     460,   460,   461,   462,   463,   464,   465,   466,   467,   468,
1695 <     469,   470,   472,   471,   474,   473,   475,   475,   476,   477,
1696 <     477,   478,   478,   478,   478,   479,   480,   482,   481,   483,
1697 <     483,   484,   484,   484,   485,   486,   487,   488,   488,   489,
1698 <     489,   490,   492,   491,   494,   493,   495,   495,   496,   497,
1699 <     497,   498,   498,   498,   498,   499,   500,   501,   502,   502,
1700 <     503,   503,   503,   503,   503,   503,   503,   503,   503,   503,
1701 <     503,   503,   503,   503,   503,   503,   503,   503,   503,   503,
1702 <     503,   503,   503,   503,   503,   503,   503,   503,   503,   503,
1703 <     503,   503,   503,   503,   503,   503,   503,   503,   503,   503,
1704 <     503,   503,   503,   503,   503,   503,   503,   503,   503,   503,
1705 <     503,   503,   503,   503,   503,   503,   503,   504,   505,   506,
1706 <     507,   508,   509,   510,   511,   512,   513,   514,   515,   516,
1707 <     517,   518,   519,   520,   521,   522,   523,   524,   525,   526,
1708 <     527,   528,   529,   530,   531,   531,   532,   532,   533,   534,
1709 <     535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
1710 <     545,   546,   547,   548,   549,   550,   551,   552,   554,   553,
1711 <     555,   555,   556,   556,   556,   556,   556,   556,   556,   556,
1712 <     556,   556,   556,   556,   556,   556,   556,   556,   556,   556,
1713 <     556,   558,   557,   559,   559,   560,   560,   560,   560,   560,
1714 <     560,   560,   560,   560,   560,   560,   560,   560,   560,   560,
1715 <     560,   560,   560,   560,   561,   562,   563,   564,   565,   567,
1716 <     566,   568,   568,   569,   569,   569,   569,   569,   569,   569,
1717 <     570,   571,   573,   572,   574,   574,   575,   575,   576,   577,
1718 <     579,   578,   580,   580,   581,   581,   582,   583,   583,   584,
1719 <     584,   584,   584,   584,   584,   584,   584,   584,   584,   584,
1720 <     584,   584,   584,   584,   584,   584,   584,   584,   585,   586,
1721 <     587,   588,   589,   590,   591,   592,   593,   594,   595,   596,
1722 <     597,   598,   599,   600,   601,   602,   603,   604,   604,   605,
1723 <     605,   605,   605,   605,   605,   605,   605,   606,   607,   608,
1724 <     609,   610,   611,   612
1725 < };
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,     1,
1309 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1310 <       1,     1,     1,     2,     4,     1,     4,     4,     4,     4,
1311 <       4,     0,     5,     3,     1,     1,     1,     1,     1,     1,
1312 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1313 <       1,     1,     1,     1,     4,     4,     4,     4,     4,     4,
1314 <       4,     4,     4,     4,     4,     4,     4,     4,     0,     5,
1315 <       3,     1,     0,     3,     0,     2,     1,     1,     1,     1,
1316 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1317 <       1,     1,     0,     7,     0,     1,     2,     1,     1,     1,
1318 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1319 <       1,     2,     4,     1,     4,     4,     4,     4,     4,     4,
1320 <       4,     4,     4,     4,     4,     4,     0,     6,     0,     5,
1321 <       3,     1,     1,     1,     1,     2,     1,     1,     1,     1,
1322 <       1,     2,     0,     5,     3,     1,     1,     3,     4,     4,
1323 <       0,     6,     2,     1,     1,     1,     1,     1,     1,     1,
1324 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1325 <       2,     4,     4,     4,     4,     4,     0,     5,     3,     1,
1326 <       0,     3,     0,     2,     1,     1,     1,     1,     1,     1,
1327 <       1,     1,     1,     1,     4,     4,     4,     4,     4,     4,
1328 <       4,     4,     4,     4,     0,     6,     2,     1,     1,     1,
1329 <       1,     2,     4,     4,     4,     0,     6,     2,     1,     1,
1330 <       1,     1,     2,     4,     4,     0,     5,     3,     1,     1,
1331 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1332 <       0,     6,     2,     1,     1,     1,     2,     4,     0,     5,
1333 <       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1334 <       1,     1,     1,     0,     7,     0,     1,     2,     1,     1,
1335 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1336 <       1,     1,     1,     1,     1,     1,     1,     1,     2,     4,
1337 <       1,     4,     4,     4,     4,     4,     4,     4,     4,     0,
1338 <       5,     3,     1,     0,     3,     0,     2,     1,     1,     1,
1339 <       1,     1,     4,     4,     4,     4,     4,     4,     4,     4,
1340 <       4,     4,     0,     6,     0,     5,     3,     1,     1,     2,
1341 <       1,     1,     1,     1,     1,     4,     4,     0,     6,     2,
1342 <       1,     1,     1,     1,     4,     4,     5,     2,     1,     1,
1343 <       1,     4,     0,     6,     0,     5,     3,     1,     1,     2,
1344 <       1,     1,     1,     1,     1,     4,     4,     5,     2,     1,
1345 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1346 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1347 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1348 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1349 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1350 <       1,     1,     1,     1,     1,     1,     1,     4,     4,     4,
1351 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1352 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1353 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1354 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1355 <       4,     4,     4,     4,     4,     4,     4,     4,     0,     5,
1356 <       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1357 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1358 <       1,     0,     5,     3,     1,     1,     1,     1,     1,     1,
1359 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1360 <       1,     1,     1,     1,     4,     4,     4,     4,     4,     0,
1361 <       6,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1362 <       4,     4,     0,     5,     3,     1,     1,     1,     4,     4,
1363 <       0,     5,     3,     1,     1,     1,     5,     2,     1,     1,
1364 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1365 <       1,     1,     1,     1,     1,     1,     1,     1,     4,     4,
1366 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1367 <       4,     4,     4,     4,     4,     4,     5,     2,     1,     1,
1368 <       1,     1,     1,     1,     1,     1,     1,     4,     4,     4,
1369 <       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,   222,   393,   467,     0,
1435 <     482,     0,   659,   280,   452,   256,     0,     0,   125,   334,
1436 <       0,     0,   345,   370,     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,   224,
1817 <     395,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1818 <       0,   127,     0,     0,     0,     0,     0,     0,     0,     0,
1819 <       0,     0,    83,    84,    86,    85,   707,     0,     0,     0,
1820 <       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1821 <       0,     0,     0,     0,     0,     0,   688,   706,   701,   689,
1822 <     690,   691,   692,   694,   695,   696,   697,   693,   698,   699,
1823 <     700,   702,   703,   704,   705,   243,     0,   225,   420,     0,
1824 <     396,     0,   480,     0,     0,   478,   479,     0,   556,     0,
1825 <       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1826 <       0,     0,     0,     0,     0,     0,     0,     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,
1828       0,     0,   631,     0,   608,     0,     0,     0,     0,     0,
1440         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1441 <       0,     0,     0,     0,     0,     0,   499,   555,   550,   551,
1831 <     548,   552,   553,   549,   510,   500,   501,   539,   502,   503,
1832 <     504,   505,   506,   507,   508,   509,   544,   511,   512,   513,
1833 <     514,   554,   516,   521,   517,   519,   518,   533,   534,   520,
1834 <     522,   523,   524,   525,   527,   526,   515,   529,   538,   540,
1835 <     541,   530,   531,   546,   547,   543,   532,   528,   536,   537,
1836 <     535,   542,   545,     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,    93,    94,    95,    98,   105,    99,   103,   100,   101,
1444 <     104,   102,    96,    97,     0,     0,     0,     0,    42,    43,
1445 <      44,   155,     0,   128,     0,   736,     0,     0,     0,     0,
1841 <       0,     0,     0,     0,   728,   729,   730,   734,   731,   733,
1842 <     732,   735,     0,     0,     0,     0,     0,     0,     0,     0,
1843 <      64,     0,     0,     0,     0,     0,    50,    62,    61,    58,
1844 <      51,    60,    54,    55,    56,    52,    59,    57,    53,     0,
1845 <       0,    87,     0,     0,     0,     0,    82,     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,
1847       0,     0,     0,     0,     0,     0,   687,     0,     0,   473,
1848       0,     0,     0,   470,   471,   472,     0,     0,   477,   494,
1849       0,     0,   484,   493,     0,   490,   491,   492,     0,     0,
1447         0,     0,     0,     0,     0,     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,
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,
1855       0,     0,     0,     0,     0,   498,   669,   680,     0,     0,
1856     672,     0,     0,     0,   662,   663,   664,   665,   666,   667,
1857     668,     0,     0,     0,     0,     0,   306,     0,     0,     0,
1858       0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
1859     284,   285,   294,   286,   299,   287,   288,   289,   290,   297,
1860     291,   292,   293,   295,   296,   298,   464,     0,   454,     0,
1861     463,     0,   460,   461,   462,     0,   258,     0,     0,     0,
1862     268,     0,   266,   267,   269,   270,   106,     0,     0,     0,
1477         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1864      92,    45,     0,     0,     0,    41,     0,     0,     0,     0,
1865       0,     0,   337,   338,   339,   340,     0,     0,     0,     0,
1866       0,     0,     0,     0,   727,    63,     0,     0,     0,     0,
1867       0,     0,     0,     0,     0,     0,     0,     0,     0,    49,
1868       0,     0,   355,     0,     0,   348,   349,   350,   351,     0,
1869       0,   378,     0,   373,   374,   375,     0,     0,     0,    81,
1870       0,     0,     0,     0,     0,    26,     0,     0,     0,     0,
1871       0,     0,     0,     0,     0,     0,     0,     0,     0,   686,
1478         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1873       0,     0,     0,     0,     0,   227,   228,   231,   232,   234,
1874     235,   236,   237,   238,   239,   240,   229,   230,   233,     0,
1875       0,     0,     0,     0,     0,     0,     0,     0,     0,   429,
1479         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1480 <     398,   399,   400,   401,   402,   403,   405,   404,   406,   407,
1481 <     415,   412,   414,   413,   411,   417,   408,   409,   410,   416,
1482 <       0,     0,     0,   469,     0,   476,     0,     0,     0,     0,
1483 <     489,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1480 >       0,     0,     0,     0,     0,   463,     0,     0,     0,   310,
1481 >       0,     0,     0,     0,     0,     0,   296,   297,   298,   299,
1482 >     304,   300,   301,   302,   303,   435,     0,     0,     0,   432,
1483 >     433,   434,     0,     0,     0,   271,     0,   281,     0,   279,
1484 >     280,   282,   283,    48,     0,     0,     0,    44,     0,     0,
1485 >       0,     0,   112,   113,   114,     0,     0,     0,   198,     0,
1486 >       0,     0,     0,     0,   172,     0,     0,   152,   153,   154,
1487 >     155,   158,   159,   160,   161,   157,   156,   162,     0,     0,
1488 >       0,     0,     0,   330,   331,   332,   333,     0,     0,     0,
1489 >       0,     0,     0,     0,     0,     0,   649,    72,     0,     0,
1490         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1491 +       0,     0,     0,     0,     0,     0,     0,    52,     0,     0,
1492 +     376,     0,   371,   372,   373,   123,     0,     0,   119,     0,
1493 +       0,     0,   339,     0,     0,   354,     0,     0,   347,   348,
1494 +     349,   350,     0,     0,     0,    99,     0,     0,     0,     0,
1495 +      27,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1496 +       0,   616,   246,     0,     0,     0,     0,     0,     0,     0,
1497         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1498 +       0,   227,   408,     0,     0,     0,     0,     0,     0,     0,
1499 +       0,     0,     0,     0,     0,     0,     0,     0,   392,     0,
1500 +       0,     0,   440,     0,   447,     0,     0,     0,   455,     0,
1501         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1502         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1885       0,     0,     0,    34,     0,     0,     0,     0,     0,     0,
1886     497,     0,     0,     0,     0,     0,     0,     0,   661,   300,
1503         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1888       0,     0,     0,     0,     0,     0,     0,   282,     0,     0,
1889       0,     0,   459,   271,     0,     0,     0,     0,     0,   265,
1504         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1891       0,     0,     0,     0,     0,     0,     0,     0,    91,     0,
1892       0,    40,     0,     0,     0,     0,     0,   198,     0,     0,
1505         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1506 <       0,   161,     0,     0,     0,     0,   130,   131,   132,   133,
1507 <     150,   151,   137,   136,   138,   139,   145,   140,   141,   142,
1508 <     143,   144,   146,   147,   148,   134,   135,   149,   152,   341,
1509 <       0,     0,     0,     0,   336,     0,     0,     0,     0,     0,
1510 <       0,     0,   726,     0,     0,     0,     0,     0,     0,     0,
1511 <       0,     0,     0,     0,     0,    48,   352,     0,     0,     0,
1900 <       0,   347,   376,     0,     0,     0,   372,    90,    89,    88,
1901 <     723,   720,   719,   708,   710,    26,    26,    26,    26,    26,
1902 <      28,    27,   714,   715,   718,   716,   721,   722,   724,   725,
1903 <     717,   709,   711,   712,   713,   241,     0,     0,     0,     0,
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 <     226,   418,     0,     0,     0,     0,     0,     0,     0,     0,
1513 >       0,     0,     0,     0,    77,    78,     0,    76,    81,    82,
1514 >       0,    80,     0,     0,    51,   374,     0,     0,     0,   370,
1515 >       0,   118,     0,     0,   338,   351,     0,     0,     0,     0,
1516 >     346,   108,   107,   106,   643,   642,   634,   635,    27,    27,
1517 >      27,    27,    27,    27,    27,    29,    28,   636,   646,   647,
1518 >     637,   638,   639,   641,   640,   644,   645,     0,     0,     0,
1519         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1520 <       0,     0,   397,     0,     0,   468,   481,     0,     0,     0,
1908 <     483,   569,   573,   560,   589,   602,   601,   656,   606,   567,
1909 <     658,   598,   604,   568,   558,   559,   576,   565,   597,   566,
1910 <     579,   564,   578,   577,   572,   571,   570,   599,   557,   596,
1911 <     654,   655,   593,   590,   635,   651,   652,   636,   637,   638,
1912 <     639,   646,   640,   649,   653,   642,   647,   643,   648,   641,
1913 <     645,   644,   650,     0,   634,   595,   612,   628,   629,   613,
1914 <     614,   615,   616,   623,   617,   626,   630,   619,   624,   620,
1915 <     625,   618,   622,   621,   627,     0,   611,   588,   591,   605,
1916 <     562,   600,   563,   592,   581,   586,   587,   584,   585,   582,
1917 <     583,   575,   574,    34,    34,    34,    36,    35,   657,   607,
1918 <     594,   603,   561,   580,     0,     0,     0,     0,     0,     0,
1919 <     660,     0,     0,     0,     0,   312,     0,     0,     0,     0,
1920 <       0,     0,     0,     0,     0,     0,     0,   281,     0,     0,
1921 <       0,   453,     0,     0,     0,   276,   272,   275,   257,   110,
1922 <     116,   114,   113,   115,   111,   112,   109,   117,   123,   118,
1923 <     122,   120,   121,   119,   108,   107,   124,    46,    47,   153,
1520 >       0,     0,    37,     0,     0,   226,     0,     0,     0,     0,
1521         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1522 <       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1523 <       0,     0,     0,   129,     0,     0,     0,   335,   742,   737,
1524 <     741,   739,   743,   738,   740,    74,    80,    72,    76,    75,
1525 <      71,    70,    68,    69,     0,    67,    73,    79,    77,    78,
1526 <       0,     0,     0,   346,     0,     0,   371,    29,    30,    31,
1527 <      32,    33,     0,     0,     0,     0,     0,     0,     0,     0,
1528 <       0,     0,     0,     0,     0,   223,     0,     0,     0,     0,
1529 <       0,     0,     0,     0,     0,     0,   435,     0,     0,     0,
1530 <       0,     0,     0,     0,     0,     0,   394,   474,   475,   495,
1531 <     496,   488,     0,   487,   632,     0,   609,     0,    37,    38,
1532 <      39,   685,   684,     0,   683,   671,   670,   677,   676,     0,
1533 <     675,   679,   678,   327,   304,   305,   326,   310,     0,   309,
1534 <       0,   329,   325,   324,   333,   328,   302,   332,   331,   330,
1535 <     303,   301,   466,   458,     0,   457,   465,   263,   264,   262,
1536 <       0,   261,   279,   278,     0,     0,     0,     0,     0,     0,
1537 <       0,   204,     0,     0,     0,     0,     0,     0,     0,     0,
1538 <       0,     0,     0,     0,     0,     0,     0,     0,     0,   126,
1539 <     343,   344,   342,    65,     0,   353,   359,   365,   369,   368,
1540 <     367,   364,   360,   363,   366,   361,   362,     0,   358,   354,
1541 <     377,   382,   388,   392,   391,   390,   387,   383,   386,   389,
1542 <     384,   385,     0,   381,   253,   254,   247,   249,   251,   250,
1543 <     248,   242,   255,   246,   244,   245,   252,   424,   426,   427,
1544 <     446,   451,   450,   445,   444,   443,   428,   433,     0,   432,
1545 <       0,   421,   448,   449,   419,   425,   442,   423,   447,   422,
1546 <     485,     0,   633,   610,   681,     0,   673,     0,     0,   307,
1547 <     312,   318,   319,   315,   321,   317,   316,   323,   320,   322,
1548 <     314,   313,   455,     0,   259,     0,   277,   274,   273,   194,
1549 <     160,   192,   158,   202,     0,   201,     0,   190,   184,   195,
1550 <     196,   187,   154,   191,   157,   193,   185,   186,   159,   197,
1551 <     165,   181,   182,   166,   167,   168,   169,   176,   170,   179,
1552 <     183,   172,   177,   173,   178,   171,   175,   174,   180,     0,
1553 <     164,   189,   156,   188,    66,   356,     0,   379,     0,     0,
1554 <     430,   435,   439,   440,   437,   438,   441,   436,   486,   682,
1555 <     674,   311,   308,   456,   260,     0,   199,   204,   214,   212,
1556 <     221,   211,   206,   215,   219,   208,   216,   218,   213,   207,
1557 <     220,   217,   209,   210,   205,   162,     0,   357,   380,   434,
1558 <     431,   203,   200,   163
1559 < };
1560 <
1561 < /* YYDEFGOTO[NTERM-NUM].  */
1562 < static const yytype_int16 yydefgoto[] =
1563 < {
1564 <      -1,     1,    24,   900,   901,  1056,  1057,    25,   277,   278,
1565 <     279,   280,    26,   315,   316,   317,   553,  1164,  1165,   318,
1969 <     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
1970 <      27,    71,    72,    73,    74,    75,    28,   260,   261,   262,
1971 <     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
1972 <     273,    29,    61,   282,   825,   826,   827,   283,   828,   829,
1973 <     830,   831,   832,   833,  1138,  1439,  1440,   834,   835,   836,
1974 <     837,   838,   839,   840,   841,   842,   843,   844,   845,   846,
1975 <     847,   848,  1124,  1404,  1405,  1465,  1406,  1484,    30,    49,
1976 <     116,   614,   615,   616,   117,   617,   618,   619,   620,   621,
1977 <     622,   623,   624,   625,   626,   627,   628,    31,    58,   500,
1978 <     774,  1270,  1271,   501,   502,   503,  1276,  1096,  1097,   504,
1979 <     505,    32,    56,   468,   469,   470,   471,   472,   473,   474,
1980 <     475,   754,  1248,  1249,  1378,  1250,  1391,   476,   477,   478,
1981 <     479,   480,   481,   482,   483,   484,   485,    33,    62,   531,
1982 <     532,   533,   534,   535,    34,    65,   564,   565,   566,   567,
1983 <     568,   878,  1317,  1318,    35,    66,   572,   573,   574,   575,
1984 <     884,  1332,  1333,    36,    50,   119,   649,   650,   651,   120,
1985 <     652,   653,   654,   655,   656,   657,   658,   659,   941,  1358,
1986 <    1359,  1449,  1360,  1457,   660,   661,   662,   663,   664,   665,
1987 <     666,   667,   668,   669,    37,    57,   490,   769,  1264,  1265,
1988 <     491,   492,   493,   494,    38,    51,   362,   363,   364,   365,
1989 <      39,   124,   125,   126,    40,    53,   373,   678,  1222,  1223,
1990 <     374,   375,   376,   377,    41,   185,   186,   187,   188,   189,
1991 <     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
1992 <     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
1993 <     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
1994 <     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
1995 <     230,   231,   232,   233,   234,   235,   236,   413,  1035,  1036,
1996 <     237,   411,  1013,  1014,   238,   239,   240,   241,   242,    42,
1997 <      55,   443,   444,   445,   446,   447,   744,  1239,  1240,   448,
1998 <     449,   450,   741,  1233,  1234,    43,    95,    96,    97,    98,
1999 <      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
2000 <     109,   110,   111,   112,   113,   114,    44,   293,   294,   295,
2001 <     296,   297,   298,   299,   300,   301
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.  */
2006 < #define YYPACT_NINF -952
2007 < static const yytype_int16 yypact[] =
1568 >  /* YYPGOTO[NTERM-NUM].  */
1569 > static const yytype_int16 yypgoto[] =
1570   {
1571 <    -952,   888,  -952,  -233,  -260,  -258,  -952,  -952,  -952,  -255,
1572 <    -952,  -253,  -952,  -952,  -952,  -952,  -250,  -237,  -952,  -952,
1573 <    -228,  -226,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1574 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1575 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,   302,   766,  -136,
1576 <    -112,  -199,    17,  -193,   475,  -190,  -187,  -173,  -167,   702,
1577 <       2,   -46,  -149,   361,   520,  -140,  -134,  -130,  -121,  -102,
1578 <     -84,     4,  -952,  -952,  -952,  -952,  -952,   -82,   -77,   -62,
1579 <     -57,   -51,   -33,   -30,   -25,   -16,    -5,    -4,    20,    24,
1580 <      37,    40,    46,    49,    59,   286,  -952,  -952,  -952,  -952,
1581 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1582 <    -952,  -952,  -952,  -952,  -952,  -952,    36,  -952,  -952,    63,
1583 <    -952,    19,  -952,    70,     7,  -952,  -952,   159,  -952,    71,
1584 <      76,    79,    84,    91,    98,   104,   105,   107,   108,   109,
1585 <     112,   113,   114,   116,   117,   118,   121,   125,   126,   130,
1586 <     132,   136,   140,   142,   144,   146,   148,   153,   155,   157,
1587 <     161,   164,  -952,   165,  -952,   169,   170,   171,   172,   173,
1588 <     181,   184,   185,   194,   196,   198,   199,   200,   201,   204,
1589 <     206,   209,   210,   212,   213,    23,  -952,  -952,  -952,  -952,
1590 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1591 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1592 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1593 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1594 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1595 <    -952,  -952,  -952,   552,   784,    93,    88,   217,   215,   216,
1596 <     220,   224,   225,   226,   227,   231,   232,   234,   235,   239,
1597 <     133,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1598 <    -952,  -952,  -952,  -952,   243,   241,   245,    27,  -952,  -952,
1599 <    -952,  -952,   247,  -952,    25,  -952,   248,   250,   252,   259,
1600 <     260,   261,   266,    45,  -952,  -952,  -952,  -952,  -952,  -952,
2039 <    -952,  -952,   271,   269,   270,   272,   276,   278,   279,   280,
2040 <    -952,   281,   285,   289,   290,   303,  -952,  -952,  -952,  -952,
2041 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,    56,
2042 <      62,  -952,   357,   381,   396,   296,  -952,   363,   434,   436,
2043 <     374,   375,   444,   444,   449,   450,   387,   390,   462,   444,
2044 <     397,   400,   403,   404,   405,   318,  -952,   634,   703,  -952,
2045 <     342,   343,    15,  -952,  -952,  -952,   454,   348,  -952,  -952,
2046 <     346,   353,  -952,  -952,   158,  -952,  -952,  -952,   414,   444,
2047 <     421,   444,   494,   476,   497,   433,   435,   437,   500,   483,
2048 <     440,   510,   513,   514,   451,   444,   452,   453,   516,   499,
2049 <     461,   529,   530,   444,   533,   542,   512,   543,   546,   481,
2050 <     482,   417,   484,   419,   444,   444,   486,   444,   536,   489,
2051 <     493,   495,  -150,  -141,   496,   498,   444,   444,   560,   444,
2052 <     501,   503,   509,   511,   455,  -952,  -952,  -952,   446,   456,
2053 <    -952,   457,   459,    44,  -952,  -952,  -952,  -952,  -952,  -952,
2054 <    -952,   463,   467,   468,   485,   487,  -952,   490,   506,   507,
2055 <     508,   519,   524,   526,   527,   531,   532,   544,   160,  -952,
2056 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2057 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,   548,  -952,   550,
2058 <    -952,    12,  -952,  -952,  -952,   465,  -952,   551,   553,   554,
2059 <    -952,    14,  -952,  -952,  -952,  -952,  -952,   557,   559,   561,
2060 <     564,   585,   586,   591,   592,   230,   596,   613,   577,   537,
2061 <    -952,  -952,   640,   643,   549,  -952,   574,   555,   556,   562,
2062 <     563,    32,  -952,  -952,  -952,  -952,   623,   630,   631,   665,
2063 <     632,   633,   444,   575,  -952,  -952,   681,   639,   685,   688,
2064 <     689,   690,   691,   582,   693,   565,   694,   695,   589,  -952,
2065 <     590,   593,  -952,   594,     9,  -952,  -952,  -952,  -952,   601,
2066 <     607,  -952,    33,  -952,  -952,  -952,   604,   614,   615,  -952,
2067 <     616,   619,   620,   624,   625,   189,   628,   629,   635,   636,
2068 <     637,   638,   641,   642,   644,   646,   647,   651,   654,  -952,
2069 <     656,   610,   618,   627,   655,   660,   661,   662,   663,   664,
2070 <     667,   669,   670,   671,   223,  -952,  -952,  -952,  -952,  -952,
2071 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,   657,
2072 <     672,   673,   674,   676,   679,   680,   683,   684,   686,  -952,
2073 <     687,   696,   697,   699,   700,   701,   704,   705,   706,   238,
2074 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2075 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2076 <     730,   741,   659,  -952,   668,  -952,   746,   747,   707,   711,
2077 <    -952,   712,   713,   716,   717,   719,   720,   721,   722,   723,
2078 <     724,   725,   726,   727,   729,   731,   732,   733,   734,   735,
2079 <     736,   737,   738,   739,   740,   742,   743,   744,   745,   748,
2080 <     749,   750,   751,   752,   815,   753,   871,   754,   755,   767,
2081 <     771,   774,   775,   776,   777,   778,   779,   780,   781,   782,
2082 <     786,   790,   791,   315,   793,   794,   796,   797,   798,   800,
2083 <    -952,   799,   444,   756,   801,   795,   803,   805,  -952,  -952,
2084 <     760,   812,   769,   804,   807,   809,   864,   866,   869,   870,
2085 <     918,   566,   919,   927,   886,   934,   828,  -952,   937,   829,
2086 <     938,   833,  -952,  -952,   831,   942,   943,   772,   837,  -952,
2087 <     838,   842,   846,   847,   849,   850,   857,   860,   865,   867,
2088 <     868,   872,   873,   874,   875,   879,   883,   884,  -952,   887,
2089 <     889,  -952,   890,   861,   891,   892,   893,  -952,   894,   895,
2090 <     896,   897,   898,   899,   900,   901,   902,   903,   904,   905,
2091 <     906,  -952,   907,   909,   910,   149,  -952,  -952,  -952,  -952,
2092 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2093 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2094 <     976,   977,   978,   911,  -952,   914,   915,   916,   917,   920,
2095 <     921,   922,  -952,   923,   924,   925,   926,   928,   929,   930,
2096 <     -15,   931,   932,   933,   935,  -952,  -952,   993,   936,   998,
2097 <     940,  -952,  -952,   999,   939,   941,  -952,  -952,  -952,  -952,
2098 <    -952,  -952,  -952,  -952,  -952,   444,   444,   444,   444,   444,
2099 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2100 <    -952,  -952,  -952,  -952,  -952,  -952,   813,  1022,   444,  1047,
2101 <    1048,  1056,  1063,  1043,  1066,  1067,   444,   444,   560,   944,
2102 <    -952,  -952,  1050,   -13,  1008,  1053,  1054,  1011,  1012,  1013,
2103 <    1058,   949,  1060,  1061,  1062,  1064,  1085,  1065,  1068,  1023,
2104 <    1069,   959,  -952,   963,   964,  -952,  -952,   965,   966,  1070,
2105 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2106 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2107 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2108 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2109 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2110 <    -952,  -952,  -952,  -245,  -952,  -952,  -952,  -952,  -952,  -952,
2111 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2112 <    -952,  -952,  -952,  -952,  -952,  -202,  -952,  -952,  -952,  -952,
2113 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2114 <    -952,  -952,  -952,   560,   560,   560,  -952,  -952,  -952,  -952,
2115 <    -952,  -952,  -952,  -952,     1,   967,   969,    11,   970,   971,
2116 <    -952,   972,   973,   974,   975,  1106,   979,   980,   981,   982,
2117 <     983,   984,   985,   986,   987,   988,   989,  -952,   990,  1079,
2118 <     991,  -952,     0,   992,   994,   650,   995,  -952,  -952,  -952,
2119 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2120 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2121 <    1041,  1100,  1059,  1071,   997,  1072,  1073,  1074,  1075,  1076,
2122 <    1102,  1077,  1104,  1078,  1080,  1081,  1105,  1082,  1000,  1083,
2123 <    1108,  1084,  1002,  -952,  1004,  1005,  1006,  -952,  -952,  -952,
2124 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2125 <    -952,  -952,  -952,  -952,  -174,  -952,  -952,  -952,  -952,  -952,
2126 <    1007,   534,  1016,  -952,  1024,   621,  -952,  -952,  -952,  -952,
2127 <    -952,  -952,  1025,  1026,  1027,  1028,  1029,  1030,  1031,  1032,
2128 <    1033,  1034,  1035,  1036,  1037,  -952,  1038,  1039,  1040,  1042,
2129 <    1044,  1045,  1046,  1049,  1051,  1052,  1152,  1055,  1057,  1086,
2130 <    1087,  1088,  1089,  1090,  1091,  1092,  -952,  -952,  -952,  -952,
2131 <    -952,  -952,  -148,  -952,  -952,   815,  -952,   871,  -952,  -952,
2132 <    -952,  -952,  -952,  -145,  -952,  -952,  -952,  -952,  -952,  -129,
2133 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -117,  -952,
2134 <     447,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2135 <    -952,  -952,  -952,  -952,   -35,  -952,  -952,  -952,  -952,  -952,
2136 <     -10,  -952,  -952,  -952,  1170,   772,  1093,  1094,  1095,  1096,
2137 <    1097,  1153,  1098,  1099,  1101,  1103,  1107,  1109,  1110,  1111,
2138 <    1112,  1113,  1114,  1115,  1116,   908,  1117,  1118,  1119,  -952,
2139 <    -952,  -952,  -952,  -952,   -15,  -952,  -952,  -952,  -952,  -952,
2140 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,    -8,  -952,  -952,
2141 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2142 <    -952,  -952,    35,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2143 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2144 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,    80,  -952,
2145 <      13,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2146 <    -952,  1070,  -952,  -952,  -952,     1,  -952,    11,   447,  -952,
2147 <    1106,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2148 <    -952,  -952,  -952,  1079,  -952,     0,  -952,  -952,  -952,  -952,
2149 <    -952,  -952,  -952,  -952,    89,  -952,   366,  -952,  -952,  -952,
2150 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2151 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2152 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,    95,
2153 <    -952,  -952,  -952,  -952,  -952,  -952,   534,  -952,   621,    13,
2154 <    -952,  1152,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2155 <    -952,  -952,  -952,  -952,  -952,   366,  -952,  1153,  -952,  -952,
2156 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2157 <    -952,  -952,  -952,  -952,  -952,  -952,   908,  -952,  -952,  -952,
2158 <    -952,  -952,  -952,  -952
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 <    -952,  -952,  -952,  -816,  -342,  -951,  -426,  -952,  -952,   578,
1607 <    -952,  -952,  -952,  -952,   541,  -952,  -952,  -952,     5,  -952,
1608 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1609 <    -952,  -952,  1234,  -952,  -952,  -952,  -952,  -952,  1122,  -952,
1610 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1611 <    -952,  -952,  -952,  -952,  -952,   491,  -952,  -952,  -952,  -952,
1612 <    -952,  -952,  -952,  -952,  -952,  -952,  -176,  -952,  -952,  -952,
1613 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1614 <    -952,  -952,  -952,  -952,  -155,  -952,  -952,  -147,  -952,  -952,
1615 <    -952,  -952,   708,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1616 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1617 <    -952,  -952,   -80,  -952,   819,  -952,  -952,  -952,    48,  -952,
1618 <    -952,  -952,  -952,  -952,   853,  -952,  -952,  -952,  -952,  -952,
1619 <    -952,  -952,  -952,   -56,  -952,  -952,   -53,  -952,  -952,  -952,
1620 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1621 <     802,  -952,  -952,  -952,  -952,  -952,  -952,   762,  -952,  -952,
1622 <    -952,  -952,  -952,  -119,  -952,  -952,  -952,   757,  -952,  -952,
1623 <    -952,  -952,  -120,  -952,  -952,  -952,  -952,   682,  -952,  -952,
1624 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1625 <    -116,  -952,  -952,  -115,  -952,  -952,  -952,  -952,  -952,  -952,
1626 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,   -63,
1627 <    -952,   841,  -952,  -952,  -952,  -952,  -952,  1021,  -952,  -952,
1628 <    -952,  -952,  1212,  -952,  -952,  -952,  -952,  -952,  -952,   -34,
1629 <    -952,   968,  -952,  -952,  -952,  -952,  1154,  -952,  -952,  -952,
1630 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1631 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1632 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1633 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
1634 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,   111,
1635 <    -952,  -952,  -952,   115,  -952,  -952,  -952,  -952,  -952,  -952,
2194 <    -952,  -952,   945,  -952,  -952,  -952,  -952,  -952,   -36,  -952,
2195 <    -952,  -952,  -952,  -952,   -32,  -952,  -952,  1249,  -952,  -952,
2196 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,
2197 <    -952,  -952,  -952,  -952,  -952,  -952,  -952,  -952,  1120,  -952,
2198 <    -952,  -952,  -952,  -952,  -952,  -952
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.  */
2205 < #define YYTABLE_NINF -1
2206 < 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 <     586,   587,   734,   274,    47,    67,    48,   593,   122,    52,
1644 <     560,    54,  1231,   486,    59,   495,   359,  1224,   122,   115,
1645 <     359,  1225,  1237,  1452,   128,  1453,   527,    60,   274,    45,
1646 <      46,   129,   130,   527,   569,   131,    63,   682,    64,   684,
1647 <    1454,    68,   132,   118,  1455,   436,   285,   528,   437,   725,
1648 <     726,   133,    69,   698,   528,   134,   135,   560,   727,   728,
1649 <    1226,   706,   136,   569,  1227,   121,   137,   138,   139,   496,
1650 <     140,   127,   717,   718,   243,   720,   141,   244,  1267,  1177,
1651 <    1178,  1179,  1180,  1181,   731,   732,   286,   735,  1303,   495,
1652 <     438,   245,  1304,   439,   486,   142,   143,   246,   123,   497,
1653 <     144,   287,  1228,  1229,  1230,   498,   360,   145,   123,   281,
1654 <     360,   146,   147,   148,  1370,   284,   149,  1374,  1371,   150,
1655 <     151,  1375,   275,   288,   329,   289,    70,   290,   291,   152,
1656 <     330,   561,   331,  1376,   247,   153,   154,  1377,   155,   156,
1657 <     157,   158,   159,   496,   332,  1379,   292,   275,   440,  1380,
1658 <     802,   529,   276,   160,   803,   570,  1162,  1163,   529,   369,
1659 <     369,   451,   161,   333,   162,   163,   441,   164,   499,   487,
1660 <     165,   166,   361,   497,   167,   804,   361,   276,   561,   498,
1661 <     452,   334,   530,   337,   570,   168,   453,   805,   338,   530,
1662 <     248,   249,   250,   251,   252,   253,   254,   255,   562,   806,
1663 <     861,   488,  1232,   339,   807,  1197,  1198,   169,   340,   170,
1664 <     454,   455,  1238,   171,   341,   456,   808,   172,   173,   174,
1665 <     175,   176,   571,   809,   600,   177,   178,  1392,   810,   457,
1666 <     811,  1393,   342,  1268,   179,   343,   458,  1269,   256,   629,
1667 <     344,   630,   499,   812,   631,   562,   601,   602,   632,   345,
1668 <     487,   571,  1394,   603,  1445,   459,  1395,  1456,  1446,   563,
1669 <     346,   347,   489,   633,   634,   635,   180,   335,   181,   636,
1670 <     367,   813,   880,   257,   182,   771,   814,   778,   672,   183,
1671 <     370,   370,   488,   460,   184,   348,   434,    76,   637,   349,
1672 <     524,   461,   638,   639,   442,   853,   885,  1447,   815,    77,
1673 <     357,  1448,   350,    67,   302,   351,   563,   747,   543,   462,
1674 <     816,   352,   817,   818,   353,   371,   371,   819,   463,   464,
1675 <      78,    79,   585,   640,   354,   641,    80,   358,    81,  1053,
1676 <    1054,  1055,   604,   605,   606,   366,   378,   607,   642,    68,
1677 <     303,   379,  1450,   489,   380,   608,  1451,   372,   372,   381,
1678 <      69,  1466,   465,   466,   258,  1467,   382,  1485,   609,   610,
1679 <     643,  1486,   285,   383,   895,   896,   897,   898,   899,   384,
1680 <     385,  1468,   386,   387,   388,   611,   612,   389,   390,   391,
1681 <     820,   392,   393,   394,    82,    83,   395,   821,   259,   304,
1682 <     396,   397,   644,    84,    85,   398,   519,   399,   822,   823,
1683 <    1065,   400,   286,   613,  1469,   401,   645,   402,   824,   403,
1684 <     467,   404,  1142,   405,    86,    87,  1470,   287,   406,   646,
1685 <     407,   679,   408,   766,    70,   305,   409,   306,   307,   410,
1686 <     412,    88,    89,  1471,   414,   415,   416,   417,   418,   288,
1687 <    1472,   289,    90,   290,   291,  1473,   419,  1474,   733,   420,
1688 <     421,    91,   788,   789,   790,   791,   792,   793,   794,   422,
1689 <    1475,   423,   292,   424,   425,   426,   427,  1381,  1382,   428,
1690 <     308,   429,   309,   310,   430,   431,   128,   432,   433,   506,
1691 <     507,   508,   647,   129,   130,   509,   929,   131,   311,   510,
1692 <     511,   512,   513,  1476,   132,   648,   514,   515,  1383,   516,
1693 <     517,   951,  1194,   133,   518,   521,   522,   134,   135,  1477,
1694 <     523,   526,   576,   536,   136,   537,  1384,   538,   137,   138,
1695 <     139,   302,   140,  1385,   539,   540,   541,  1478,   141,  1479,
1696 <    1480,   542,   312,   545,   546,   547,   577,   548,    92,    93,
1697 <      94,   549,  1386,   550,   551,   552,   554,   142,   143,   355,
1698 <     555,   578,   144,   436,   556,   557,   437,   303,   579,   145,
1699 <     313,   314,   580,   146,   147,   148,   558,   581,   149,   582,
1700 <    1387,   150,   151,   583,   584,   802,  1184,   585,  1388,   803,
1701 <     599,   152,   588,   589,  1192,  1193,   590,   153,   154,   591,
1702 <     155,   156,   157,   158,   159,   592,   594,  1481,   438,   595,
1703 <     804,   439,   596,   597,   598,   160,   304,   670,   671,   674,
1704 <     675,   676,   805,   681,   161,  1482,   162,   163,   677,   164,
1705 <     683,  1389,   165,   166,   806,  1483,   167,   685,  1306,   807,
1706 <     687,   686,   688,   691,   689,   600,   690,   168,   692,   693,
1707 <    1390,   808,   305,   694,   306,   307,   695,   696,   809,   701,
1708 <     697,   699,   700,   810,   702,   811,   440,   601,   602,   169,
1709 <     703,   170,   704,   705,   603,   171,   707,   709,   812,   172,
1710 <     173,   174,   175,   176,   441,   708,   710,   177,   178,   711,
1711 <     712,   713,   714,   715,   716,   719,   179,   308,   722,   309,
1712 <     310,   721,   723,   733,   724,   729,   813,   730,   872,  1082,
1713 <     736,   814,   737,   247,   629,   311,   630,  1307,   738,   631,
1714 <     739,   742,   780,   632,   781,  1321,   782,   740,   180,   783,
1715 <     181,   743,   745,   815,   746,   749,   182,   773,   633,   634,
1716 <     635,   183,   750,   751,   636,   816,   184,   817,   818,  1308,
1717 <     784,   785,   819,   604,   605,   606,   786,   787,   607,   312,
1718 <     752,   795,   753,   637,  1309,   755,   608,   638,   639,   248,
1719 <     249,   250,   251,   252,   253,   254,   255,    76,   796,   609,
1720 <     610,   756,   757,   758,  1310,  1311,   797,   313,   314,    77,
1721 <    1312,  1313,  1314,  1315,   759,   451,   611,   612,   640,   760,
1722 <     641,   761,   762,  1316,  1322,   799,   763,   764,   800,   798,
1723 <      78,    79,   442,   642,   452,   820,    80,   256,    81,   765,
1724 <     453,   801,   821,   768,   613,   770,   775,   849,   776,   777,
1725 <     858,   850,   855,   822,   823,   643,  1323,   851,   852,   856,
1726 <     857,   859,   860,   824,   454,   455,   863,   862,   864,   456,
1727 <     865,  1324,   257,   866,   867,   868,   869,   870,   871,   873,
1728 <     874,   875,   876,   457,  1274,   525,   559,   644,   877,   879,
1729 <     458,  1325,  1326,   882,    82,    83,   887,  1327,  1328,  1329,
1730 <    1330,   645,   883,    84,    85,   916,   888,   889,   890,   459,
1731 <    1331,   891,   892,   917,   646,   953,   893,   894,     2,     3,
1732 <     902,   903,   918,     4,    86,    87,   954,   904,   905,   906,
1733 <     907,   957,   958,   908,   909,  1095,   910,   460,   911,   912,
1734 <       5,    88,    89,   913,     6,   461,   914,     7,   915,   931,
1735 <     919,   955,    90,   258,     8,   920,   921,   922,   923,   924,
1736 <     956,    91,   925,   462,   926,   927,   928,   932,   933,   934,
1737 <       9,   935,   463,   464,   936,   937,  1182,   647,   938,   939,
1738 <    1068,   940,   942,    10,    11,  1066,    12,   259,  1069,  1071,
1739 <     648,   943,   944,    13,   945,   946,   947,  1072,  1073,   948,
1740 <     949,   950,   959,   960,   961,   962,   465,   466,   963,   964,
1741 <      14,   965,   966,   967,   968,   969,   970,   971,   972,   973,
1742 <      15,   974,    16,   975,   976,   977,   978,   979,   980,   981,
1743 <     982,   983,   984,  1074,   985,   986,   987,   988,  1076,    17,
1744 <     989,   990,   991,   992,   993,  1015,  1037,  1038,    92,    93,
1745 <      94,   994,   995,   996,   997,   998,    18,   999,  1000,  1039,
1746 <    1001,  1002,  1003,  1040,   467,  1004,  1041,  1042,  1043,  1044,
1747 <    1045,  1046,  1047,  1048,  1049,  1005,  1006,  1007,  1050,  1008,
1748 <    1009,  1010,  1051,  1052,  1011,  1058,  1059,  1012,  1060,  1061,
1749 <    1062,    19,  1063,  1077,  1064,  1078,  1067,  1070,  1079,  1080,
1750 <      20,    21,  1075,  1081,  1083,    22,    23,  1016,  1017,  1018,
1751 <    1019,  1020,  1084,  1021,  1022,  1085,  1023,  1024,  1025,  1086,
1752 <    1087,  1026,  1088,  1090,  1089,  1091,  1092,  1093,  1094,  1098,
1753 <    1099,  1027,  1028,  1029,  1100,  1030,  1031,  1032,  1101,  1102,
1754 <    1033,  1103,  1104,  1034,  1420,  1421,  1422,  1423,  1424,  1105,
1755 <    1425,  1426,  1106,  1427,  1428,  1429,  1120,  1107,  1430,  1108,
1756 <    1109,  1144,  1145,  1146,  1110,  1111,  1112,  1113,  1431,  1432,
1757 <    1433,  1114,  1434,  1435,  1436,  1115,  1116,  1437,  1170,  1117,
1758 <    1438,  1118,  1119,  1172,  1174,  1183,  1121,  1122,  1123,  1125,
1759 <    1126,  1127,  1128,  1129,  1130,  1131,  1132,  1133,  1134,  1135,
1760 <    1136,  1137,  1139,  1147,  1140,  1141,  1148,  1149,  1150,  1151,
1761 <    1185,  1186,  1152,  1153,  1154,  1155,  1156,  1157,  1158,  1187,
1762 <    1159,  1160,  1161,  1166,  1167,  1168,  1188,  1169,  1189,  1190,
1763 <    1191,  1171,  1173,  1176,  1175,  1196,  1195,  1199,  1200,  1201,
1764 <    1202,  1203,  1204,  1205,  1206,  1207,  1208,  1209,  1211,  1210,
1765 <    1212,  1216,  1214,  1213,  1215,  1217,  1218,  1219,  1220,  1235,
2331 <    1221,  1236,  1241,  1242,  1243,  1244,  1245,  1246,  1247,  1263,
2332 <    1277,  1251,  1252,  1253,  1254,  1255,  1256,  1257,  1258,  1259,
2333 <    1260,  1261,  1262,  1266,  1272,  1278,  1273,  1287,  1279,  1289,
2334 <    1293,  1275,  1281,  1297,  1299,  1295,  1300,  1301,  1302,  1305,
2335 <    1280,  1282,  1283,  1284,  1285,  1286,  1288,  1290,  1319,  1291,
2336 <    1292,  1294,  1296,  1298,  1357,  1403,  1320,  1334,  1335,  1336,
2337 <    1337,  1338,  1339,  1340,  1341,  1342,  1343,  1344,  1345,  1346,
2338 <    1347,  1348,  1349,  1396,  1350,   336,  1351,  1352,  1353,  1444,
2339 <    1493,  1354,  1492,  1355,  1356,  1464,  1143,  1361,  1491,  1362,
2340 <     779,   767,   930,  1397,  1462,  1461,   881,  1487,  1488,   886,
2341 <    1463,   952,   772,   854,  1489,  1490,   368,  1458,  1373,   435,
2342 <    1372,  1460,   680,  1459,   356,     0,     0,     0,  1363,  1364,
2343 <    1365,  1366,  1367,  1368,  1369,  1398,  1399,  1400,  1401,  1402,
2344 <    1407,  1408,     0,  1409,     0,  1410,     0,     0,     0,  1411,
2345 <       0,  1412,  1413,  1414,  1415,  1416,  1417,  1418,  1419,  1441,
2346 <    1442,  1443,   520,   673,     0,     0,     0,     0,   748,     0,
1643 >     863,   864,   611,    79,   613,   235,   615,   616,   862,  1109,
1644 >     508,  1151,   485,    70,  1056,   225,   397,   705,   707,   508,
1645 >    1080,   706,   708,   301,    80,    81,    70,   407,   593,   113,
1646 >      82,   578,   492,   236,   407,   578,   538,    71,   294,   485,
1647 >     301,   237,  1046,  1298,    72,  1048,  1047,   593,  1124,  1049,
1648 >      71,   225,  1125,   238,   239,    47,    48,    72,   240,   241,
1649 >     242,   397,   119,   794,   795,    83,    84,   120,   121,    49,
1650 >     539,    85,    86,   122,  1299,    50,  1300,    87,    88,    89,
1651 >     398,   123,   124,   243,    54,    90,    91,    56,   125,   493,
1652 >     509,   126,   127,   114,  1056,  1081,   494,   128,   495,   509,
1653 >     670,   671,   129,   130,  1279,   131,   132,   133,   678,   134,
1654 >      92,    93,   682,   226,    73,  1057,   540,   687,   135,   294,
1655 >     690,  1301,   136,   137,   302,   398,   113,    73,   408,   594,
1656 >     700,   701,   579,   138,   538,   408,   579,   227,  1302,   254,
1657 >     486,   302,   714,   139,   399,   717,   718,    60,   594,   226,
1658 >     140,  1152,   141,    64,   142,   409,   143,   496,   144,   145,
1659 >      65,  1153,   409,   255,   541,  1126,  1253,   486,   539,  1127,
1660 >    1254,   146,    67,   227,  1303,  1304,   147,   148,   149,    68,
1661 >     150,   151,   152,   466,   510,   153,  1095,  1096,  1097,   399,
1662 >     114,   110,  1258,   510,   308,  1057,  1259,   256,  1262,   467,
1663 >    1110,  1264,  1263,  1272,   111,  1265,   257,  1273,  1058,  1274,
1664 >     112,   154,  -125,  1275,   540,   468,  1255,  1256,  1257,   118,
1665 >     155,   156,   157,   158,   159,   160,   222,  1276,   258,   307,
1666 >    1305,  1277,   259,   492,  1306,   327,  1059,   555,   487,   778,
1667 >     260,   329,   515,   261,   262,   311,  1237,   506,   661,   469,
1668 >     595,   750,   161,   580,   596,   330,   331,   580,   516,   332,
1669 >     819,   405,   541,   295,   742,   487,   667,   808,   769,   595,
1670 >     587,   735,   591,   596,   517,   263,   162,   163,   164,  1283,
1671 >     165,   166,   167,  1284,  1221,   223,   168,   224,  1058,   862,
1672 >     493,   169,   264,  -125,   464,   265,   266,   494,   366,   495,
1673 >     367,  1310,   368,   309,   470,  1311,   232,   333,   518,   233,
1674 >     849,   234,   471,   472,   369,   854,  1059,   293,   857,   798,
1675 >     799,   267,   861,   306,   334,   335,   336,   337,   338,   310,
1676 >     370,   313,   339,   473,   867,   868,   340,   314,   268,   269,
1677 >     270,   315,   341,   519,   295,   316,  1222,   317,   318,   319,
1678 >     320,   503,   321,   342,   343,   371,   322,   372,   496,   323,
1679 >     557,   324,   325,   520,   373,   344,   271,   272,   585,   326,
1680 >     404,   576,   414,   605,   466,   374,  1223,   415,   416,   521,
1681 >     417,   418,   419,  1224,   420,   421,   422,   345,   423,   424,
1682 >     467,   425,  1225,   426,   427,   428,   522,   523,   429,   375,
1683 >     430,   431,   432,   433,   434,   435,   468,   436,   437,   474,
1684 >     438,   439,   602,   440,   442,   731,   444,   603,  1226,   119,
1685 >    1227,  1228,   445,   376,   120,   121,   346,   446,   447,   448,
1686 >     122,   449,   450,   451,   452,  1229,   453,   454,   123,   124,
1687 >     469,   455,  1230,   377,   456,   125,   524,   457,   126,   127,
1688 >     458,   515,   378,   459,   128,   460,   461,   462,   463,   129,
1689 >     130,   504,   131,   132,   133,   254,   134,   516,   525,   505,
1690 >     547,   548,   549,   640,   763,   135,   589,   550,   551,   136,
1691 >     137,   552,   553,   517,   554,   558,   559,   560,   561,   255,
1692 >     138,   562,   563,   564,   565,   470,   566,   379,   567,   568,
1693 >     139,   569,   570,   471,   472,   571,   572,   140,   573,   141,
1694 >     574,   142,   575,   143,   586,   144,   145,   518,   590,   604,
1695 >     606,   607,   608,   256,   473,   380,   609,   610,   146,  1163,
1696 >     657,   612,   257,   147,   148,   149,   614,   150,   151,   152,
1697 >     617,   618,   153,  1164,  1070,  1071,  1072,  1073,  1074,  1075,
1698 >    1076,  1165,   519,   619,   258,   620,   621,   622,   259,   642,
1699 >     663,   623,  1130,   624,   625,  1166,   260,   627,   154,   261,
1700 >     262,   628,   520,   629,   664,   630,   669,   155,   156,   157,
1701 >     158,   159,   160,  1131,   631,   632,   633,   634,   521,   635,
1702 >     636,   637,  1132,   638,   639,   643,  1167,  1280,  1168,   644,
1703 >     474,   263,   645,   646,   647,   522,   523,   648,   672,   161,
1704 >     650,   651,   652,   366,   653,   367,   654,   368,   264,   655,
1705 >     656,   265,   266,  1133,  1169,   659,   660,   673,   665,   369,
1706 >     666,   674,   675,   162,   163,   164,   676,   165,   166,   167,
1707 >     677,   679,   680,   168,   681,   370,   683,   267,   169,   684,
1708 >     685,   686,  1134,  1135,   688,   524,   689,  1170,   691,  1171,
1709 >    1136,   695,   692,   693,   268,   269,   270,   694,   329,   696,
1710 >     371,   697,   372,   698,   699,   702,   703,   525,  1172,   373,
1711 >     704,   709,   330,   331,   710,  1137,   332,   711,   712,   713,
1712 >     374,   715,   271,   272,   716,   719,   720,  1173,   723,   744,
1713 >     721,  1138,  1174,   722,   724,   745,  1175,     2,     3,   726,
1714 >    1240,     4,   771,  1176,   375,   737,   772,   773,  1177,   727,
1715 >     728,     5,   729,   730,     6,     7,   733,   734,   738,   739,
1716 >     741,     8,  1178,   746,   333,  1179,   747,  1180,   376,   752,
1717 >     748,   749,     9,   753,   774,    10,    11,   754,   756,  1181,
1718 >     765,   334,   335,   336,   337,   338,  1182,   757,   377,   339,
1719 >     779,   758,  1139,   340,   759,   780,   610,   378,   760,   341,
1720 >     762,   766,  1241,    12,   767,   768,   775,   776,    13,   777,
1721 >     342,   343,   781,   782,   783,   784,   939,    14,   940,   941,
1722 >     785,   786,   344,   828,   829,   830,   831,   832,   833,   834,
1723 >     792,   787,  1242,   788,   789,   790,   791,    15,    16,  1243,
1724 >     793,   802,   379,   803,   345,   804,   805,   806,  1244,   810,
1725 >    1190,   811,  1191,  1192,   235,    17,   812,   813,   814,   815,
1726 >     816,   821,   822,   818,   823,   824,   825,   847,   826,   827,
1727 >     380,   837,    18,   838,  1245,   839,  1246,  1247,   840,   850,
1728 >     841,   842,   236,   346,   916,    19,    20,   843,   844,   845,
1729 >     237,  1248,   846,   848,   851,   852,   853,   855,  1249,   856,
1730 >     858,   859,   238,   239,   860,   862,    21,   240,   241,   242,
1731 >     865,   873,   870,   866,   876,   869,   987,   871,   872,    22,
1732 >     881,   874,   875,   877,   878,   879,   880,    23,   884,  1269,
1733 >     882,    24,   243,   942,   943,   944,   883,   945,   946,   886,
1734 >     947,   948,   885,   949,   887,   950,   986,   888,   951,   889,
1735 >     989,   952,   953,   890,   954,   891,   892,   893,   894,   955,
1736 >     895,   896,   999,   956,   957,   958,   897,  1193,  1194,  1195,
1737 >     898,  1196,  1197,   959,  1198,  1199,   899,  1200,   960,  1201,
1738 >     900,   901,  1202,   902,   903,  1203,  1204,   985,  1205,   904,
1739 >     905,   906,   907,  1206,   908,   909,    79,  1207,  1208,  1209,
1740 >     910,   917,   918,   919,   911,   920,   921,  1210,   922,   923,
1741 >     912,   924,  1211,   925,   988,   990,   926,    80,    81,   927,
1742 >     928,   991,   929,    82,   992,   994,   995,   930,   997,   998,
1743 >    1000,   931,   932,   933,  1006,  1007,   913,   914,   915,   938,
1744 >     963,   934,   964,   965,  1009,   966,   935,   967,   968,  1011,
1745 >     969,   970,   971,   972,   973,   974,   975,   976,    83,    84,
1746 >     977,   978,   979,   980,    85,    86,   981,  1012,   982,   983,
1747 >      87,    88,    89,   984,   993,   996,  1003,  1004,    90,    91,
1748 >    1005,  1008,  1010,  1013,  1014,  1015,  1016,  1017,  1018,  1019,
1749 >    1020,  1021,  1022,  1023,  1024,  1025,  1026,  1027,  1028,  1029,
1750 >    1052,  1030,  1031,    92,    93,  1032,  1033,  1034,  1035,  1036,
1751 >    1037,  1038,  1039,  1040,  1041,  1042,  1043,  1044,  1045,  1066,
1752 >    1068,  1050,  1051,  1266,  1054,  1055,  1053,  1065,  1278,  1289,
1753 >    1290,  1067,  1069,  1291,  1218,  1077,  1078,  1079,  1084,   312,
1754 >    1312,  1085,  1086,  1087,  1088,  1089,  1090,  1091,  1092,  1219,
1755 >     588,  1093,  1094,  1100,  1101,  1102,  1103,  1104,  1105,  1106,
1756 >    1107,  1108,  1113,  1114,  1115,  1116,  1117,  1118,  1119,  1120,
1757 >    1121,  1122,   751,  1123,  1128,  1129,  1142,  1143,  1144,  1145,
1758 >    1146,  1147,  1148,  1149,  1150,  1238,  1159,  1160,  1156,  1157,
1759 >     764,  1161,  1162,  1293,  1185,  1292,  1285,   641,  1288,  1186,
1760 >    1187,  1188,  1189,  1214,  1215,   770,  1216,  1217,  1220,  1233,
1761 >     743,  1267,  1239,  1234,  1235,  1252,  1268,   732,  1270,  1271,
1762 >    1281,  1282,  1295,  1296,  1287,  1309,  1297,   507,   820,  1294,
1763 >    1286,   809,   658,   736,   406,  1261,   668,   465,   328,   662,
1764 >    1260,     0,   556,     0,     0,     0,     0,     0,     0,     0,
1765 >       0,     0,     0,     0,     0,     0,     0,     0,     0,   577,
1766         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1767         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1768 <       0,     0,     0,   544
1768 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1769 >     592
1770   };
1771  
1772   static const yytype_int16 yycheck[] =
1773   {
1774 <     342,   343,   428,     1,   264,     1,   264,   349,     1,   264,
1775 <       1,   264,    11,     1,   264,     1,     1,   262,     1,   155,
1776 <       1,   266,    11,    10,     1,    12,     1,   264,     1,   262,
1777 <     263,     8,     9,     1,     1,    12,   264,   379,   264,   381,
1778 <      27,    37,    19,   155,    31,     1,     1,    22,     4,   199,
1779 <     200,    28,    48,   395,    22,    32,    33,     1,   199,   200,
1780 <     262,   403,    39,     1,   266,   264,    43,    44,    45,    55,
1781 <      47,   264,   414,   415,   264,   417,    53,   264,    78,   895,
1782 <     896,   897,   898,   899,   426,   427,    41,   429,   262,     1,
1783 <      46,   264,   266,    49,     1,    72,    73,   264,    91,    85,
1784 <      77,    56,  1053,  1054,  1055,    91,    91,    84,    91,   155,
1785 <      91,    88,    89,    90,   262,   264,    93,   262,   266,    96,
1786 <      97,   266,   120,    78,   264,    80,   122,    82,    83,   106,
1787 <     264,   122,   262,   262,     1,   112,   113,   266,   115,   116,
1788 <     117,   118,   119,    55,   265,   262,   101,   120,   104,   266,
1789 <       1,   126,   150,   130,     5,   122,   171,   172,   126,     1,
1790 <       1,     1,   139,   265,   141,   142,   122,   144,   154,   157,
1791 <     147,   148,   157,    85,   151,    26,   157,   150,   122,    91,
1792 <      20,   265,   157,   265,   122,   162,    26,    38,   265,   157,
1793 <      57,    58,    59,    60,    61,    62,    63,    64,   189,    50,
1794 <     542,   189,   201,   265,    55,   218,   219,   184,   265,   186,
1795 <      50,    51,   201,   190,   265,    55,    67,   194,   195,   196,
1796 <     197,   198,   189,    74,     1,   202,   203,   262,    79,    69,
1797 <      81,   266,   265,   233,   211,   265,    76,   237,   105,     1,
1798 <     265,     3,   154,    94,     6,   189,    23,    24,    10,   265,
1799 <     157,   189,   262,    30,   262,    95,   266,   244,   266,   250,
1800 <     265,   265,   250,    25,    26,    27,   243,   263,   245,    31,
1801 <     263,   122,   263,   140,   251,   263,   127,   263,   263,   256,
1802 <     122,   122,   189,   123,   261,   265,   263,     1,    50,   265,
1803 <     263,   131,    54,    55,   250,   263,   263,   262,   149,    13,
1804 <     264,   266,   265,     1,     1,   265,   250,   263,   263,   149,
1805 <     161,   265,   163,   164,   265,   157,   157,   168,   158,   159,
1806 <      34,    35,   133,    85,   265,    87,    40,   264,    42,    14,
1807 <      15,    16,   109,   110,   111,   265,   265,   114,   100,    37,
1808 <      37,   265,   262,   250,   265,   122,   266,   189,   189,   265,
1809 <      48,   262,   192,   193,   221,   266,   265,   262,   135,   136,
1810 <     122,   266,     1,   265,   175,   176,   177,   178,   179,   265,
1811 <     265,     5,   265,   265,   265,   152,   153,   265,   265,   265,
1812 <     231,   265,   265,   265,    98,    99,   265,   238,   255,    86,
1813 <     265,   265,   154,   107,   108,   265,   263,   265,   249,   250,
1814 <     742,   265,    41,   180,    38,   265,   168,   265,   259,   265,
1815 <     250,   265,   263,   265,   128,   129,    50,    56,   265,   181,
1816 <     265,   263,   265,   263,   122,   122,   265,   124,   125,   265,
1817 <     265,   145,   146,    67,   265,   265,   265,   265,   265,    78,
1818 <      74,    80,   156,    82,    83,    79,   265,    81,   133,   265,
1819 <     265,   165,   222,   223,   224,   225,   226,   227,   228,   265,
1820 <      94,   265,   101,   265,   265,   265,   265,    20,    21,   265,
1821 <     167,   265,   169,   170,   265,   265,     1,   265,   265,   262,
1822 <     265,   265,   244,     8,     9,   265,   263,    12,   185,   265,
1823 <     265,   265,   265,   127,    19,   257,   265,   265,    51,   265,
1824 <     265,   263,   928,    28,   265,   262,   265,    32,    33,   143,
1825 <     265,   264,   155,   265,    39,   265,    69,   265,    43,    44,
1826 <      45,     1,    47,    76,   265,   265,   265,   161,    53,   163,
1827 <     164,   265,   229,   262,   265,   265,   155,   265,   252,   253,
1828 <     254,   265,    95,   265,   265,   265,   265,    72,    73,   263,
1829 <     265,   155,    77,     1,   265,   265,     4,    37,   262,    84,
1830 <     257,   258,   199,    88,    89,    90,   263,   133,    93,   133,
1831 <     123,    96,    97,   199,   199,     1,   918,   133,   131,     5,
1832 <     262,   106,   133,   133,   926,   927,   199,   112,   113,   199,
1833 <     115,   116,   117,   118,   119,   133,   199,   231,    46,   199,
1834 <      26,    49,   199,   199,   199,   130,    86,   265,   265,   155,
1835 <     262,   265,    38,   199,   139,   249,   141,   142,   265,   144,
1836 <     199,   174,   147,   148,    50,   259,   151,   133,    94,    55,
1837 <     133,   155,   199,   133,   199,     1,   199,   162,   155,   199,
1838 <     193,    67,   122,   133,   124,   125,   133,   133,    74,   133,
1839 <     199,   199,   199,    79,   155,    81,   104,    23,    24,   184,
1840 <     199,   186,   133,   133,    30,   190,   133,   155,    94,   194,
1841 <     195,   196,   197,   198,   122,   133,   133,   202,   203,   133,
1842 <     199,   199,   265,   199,   265,   199,   211,   167,   199,   169,
1843 <     170,   155,   199,   133,   199,   199,   122,   199,   133,   133,
1844 <     199,   127,   199,     1,     1,   185,     3,   173,   199,     6,
1845 <     199,   265,   155,    10,   155,    94,   155,   262,   243,   155,
1846 <     245,   265,   265,   149,   265,   262,   251,   262,    25,    26,
1847 <      27,   256,   265,   265,    31,   161,   261,   163,   164,   205,
1848 <     155,   155,   168,   109,   110,   111,   155,   155,   114,   229,
1849 <     265,   155,   265,    50,   220,   265,   122,    54,    55,    57,
1850 <      58,    59,    60,    61,    62,    63,    64,     1,   155,   135,
1851 <     136,   265,   265,   265,   240,   241,   199,   257,   258,    13,
1852 <     246,   247,   248,   249,   265,     1,   152,   153,    85,   265,
1853 <      87,   265,   265,   259,   173,   155,   265,   265,   155,   262,
1854 <      34,    35,   250,   100,    20,   231,    40,   105,    42,   265,
1855 <      26,   262,   238,   265,   180,   265,   265,   262,   265,   265,
1856 <     155,   265,   199,   249,   250,   122,   205,   265,   265,   199,
1857 <     199,   199,   199,   259,    50,    51,   155,   262,   199,    55,
1858 <     155,   220,   140,   155,   155,   155,   155,   265,   155,   155,
1859 <     155,   262,   262,    69,   204,   277,   315,   154,   265,   265,
1860 <      76,   240,   241,   262,    98,    99,   262,   246,   247,   248,
1861 <     249,   168,   265,   107,   108,   265,   262,   262,   262,    95,
1862 <     259,   262,   262,   265,   181,   155,   262,   262,     0,     1,
1863 <     262,   262,   265,     5,   128,   129,   155,   262,   262,   262,
1864 <     262,   155,   155,   262,   262,   133,   262,   123,   262,   262,
1865 <      22,   145,   146,   262,    26,   131,   262,    29,   262,   262,
1866 <     265,   262,   156,   221,    36,   265,   265,   265,   265,   265,
1867 <     262,   165,   265,   149,   265,   265,   265,   265,   265,   265,
1868 <      52,   265,   158,   159,   265,   265,   133,   244,   265,   265,
1869 <     155,   265,   265,    65,    66,   199,    68,   255,   155,   199,
1870 <     257,   265,   265,    75,   265,   265,   265,   155,   199,   265,
1871 <     265,   265,   265,   262,   262,   262,   192,   193,   262,   262,
1872 <      92,   262,   262,   262,   262,   262,   262,   262,   262,   262,
1873 <     102,   262,   104,   262,   262,   262,   262,   262,   262,   262,
1874 <     262,   262,   262,   199,   262,   262,   262,   262,   199,   121,
1875 <     262,   262,   262,   262,   262,   262,   262,   262,   252,   253,
1876 <     254,   206,   207,   208,   209,   210,   138,   212,   213,   262,
1877 <     215,   216,   217,   262,   250,   220,   262,   262,   262,   262,
1878 <     262,   262,   262,   262,   262,   230,   231,   232,   262,   234,
1879 <     235,   236,   262,   262,   239,   262,   262,   242,   262,   262,
1880 <     262,   173,   262,   199,   265,   199,   265,   262,   199,   199,
1881 <     182,   183,   265,   155,   155,   187,   188,   206,   207,   208,
1882 <     209,   210,   155,   212,   213,   199,   215,   216,   217,   155,
1883 <     262,   220,   155,   155,   265,   262,   265,   155,   155,   262,
1884 <     262,   230,   231,   232,   262,   234,   235,   236,   262,   262,
1885 <     239,   262,   262,   242,   206,   207,   208,   209,   210,   262,
1886 <     212,   213,   262,   215,   216,   217,   265,   262,   220,   262,
1887 <     262,   155,   155,   155,   262,   262,   262,   262,   230,   231,
1888 <     232,   262,   234,   235,   236,   262,   262,   239,   155,   262,
1889 <     242,   262,   262,   155,   155,   133,   265,   265,   265,   265,
1890 <     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
1891 <     265,   265,   265,   262,   265,   265,   262,   262,   262,   262,
1892 <     133,   133,   262,   262,   262,   262,   262,   262,   262,   133,
1893 <     262,   262,   262,   262,   262,   262,   133,   262,   155,   133,
1894 <     133,   265,   262,   262,   265,   155,   262,   199,   155,   155,
1895 <     199,   199,   199,   155,   265,   155,   155,   155,   133,   155,
1896 <     155,   262,   199,   155,   155,   262,   262,   262,   262,   262,
1897 <     160,   262,   262,   262,   262,   262,   262,   262,   132,   160,
2478 <     199,   262,   262,   262,   262,   262,   262,   262,   262,   262,
2479 <     262,   262,   262,   262,   262,   155,   262,   155,   199,   155,
2480 <     155,   266,   265,   155,   262,   265,   262,   262,   262,   262,
2481 <     199,   199,   199,   199,   199,   199,   199,   199,   262,   199,
2482 <     199,   199,   199,   199,   132,   132,   262,   262,   262,   262,
2483 <     262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
2484 <     262,   262,   262,   133,   262,    71,   262,   262,   262,  1304,
2485 <    1486,   262,  1467,   262,   262,  1395,   825,   262,  1465,   262,
2486 <     501,   468,   614,  1275,  1380,  1378,   564,  1446,  1448,   572,
2487 <    1393,   649,   491,   531,  1449,  1451,   124,  1371,  1227,   185,
2488 <    1225,  1377,   374,  1375,    95,    -1,    -1,    -1,   262,   262,
2489 <     262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
2490 <     262,   262,    -1,   262,    -1,   262,    -1,    -1,    -1,   262,
2491 <      -1,   262,   262,   262,   262,   262,   262,   262,   262,   262,
2492 <     262,   262,   260,   362,    -1,    -1,    -1,    -1,   443,    -1,
1774 >     638,   639,   317,     1,   319,     1,   321,   322,   112,     8,
1775 >       1,    49,     1,     1,     1,     1,     1,   214,   214,     1,
1776 >      53,   218,   218,     1,    22,    23,     1,     1,     1,     1,
1777 >      28,     1,     1,    29,     1,     1,     1,    25,     1,     1,
1778 >       1,    37,   232,    40,    32,   232,   236,     1,   232,   236,
1779 >      25,     1,   236,    49,    50,   232,   233,    32,    54,    55,
1780 >      56,     1,     1,   203,   204,    63,    64,     6,     7,   234,
1781 >      35,    69,    70,    12,    71,   234,    73,    75,    76,    77,
1782 >      65,    20,    21,    79,   234,    83,    84,   234,    27,    58,
1783 >      81,    30,    31,    65,     1,   128,    65,    36,    67,    81,
1784 >     415,   416,    41,    42,   208,    44,    45,    46,   423,    48,
1785 >     108,   109,   427,    99,   102,   102,    81,   432,    57,     1,
1786 >     435,   118,    61,    62,   102,    65,     1,   102,   102,   102,
1787 >     445,   446,   102,    72,     1,   102,   102,   123,   135,     1,
1788 >     129,   102,   457,    82,   129,   460,   461,   234,   102,    99,
1789 >      89,   189,    91,   234,    93,   129,    95,   126,    97,    98,
1790 >     234,   199,   129,    25,   129,   232,   232,   129,    35,   236,
1791 >     236,   110,   234,   123,   171,   172,   115,   116,   117,   234,
1792 >     119,   120,   121,     1,   175,   124,     9,    10,    11,   129,
1793 >      65,   234,   232,   175,   235,   102,   236,    59,   232,    17,
1794 >     199,   232,   236,   232,   234,   236,    68,   236,   195,   232,
1795 >     234,   150,   175,   236,    81,    33,  1095,  1096,  1097,   234,
1796 >     159,   160,   161,   162,   163,   164,   234,   232,    90,   232,
1797 >     227,   236,    94,     1,   231,   233,   223,   233,   227,   554,
1798 >     102,     1,     1,   105,   106,   233,   233,   233,   233,    67,
1799 >     223,   233,   191,   223,   227,    15,    16,   223,    17,    19,
1800 >     233,   233,   129,   226,   233,   227,   233,   233,   233,   223,
1801 >     233,   233,   233,   227,    33,   137,   215,   216,   217,   232,
1802 >     219,   220,   221,   236,    73,   234,   225,   234,   195,   112,
1803 >      58,   230,   154,   175,   233,   157,   158,    65,     1,    67,
1804 >       3,   232,     5,   235,   122,   236,   234,    67,    67,   234,
1805 >     625,   234,   130,   131,    17,   630,   223,   234,   633,   203,
1806 >     204,   183,   637,   234,    84,    85,    86,    87,    88,   235,
1807 >      33,   235,    92,   151,   179,   180,    96,   235,   200,   201,
1808 >     202,   235,   102,   102,   226,   235,   135,   235,   235,   235,
1809 >     235,   232,   235,   113,   114,    58,   235,    60,   126,   235,
1810 >     232,   235,   235,   122,    67,   125,   228,   229,   232,   235,
1811 >     235,   233,   235,   232,     1,    78,   165,   235,   235,   138,
1812 >     235,   235,   235,   172,   235,   235,   235,   147,   235,   235,
1813 >      17,   235,   181,   235,   235,   235,   155,   156,   235,   102,
1814 >     235,   235,   235,   235,   235,   235,    33,   235,   235,   227,
1815 >     235,   235,   127,   235,   235,   233,   235,   127,   207,     1,
1816 >     209,   210,   235,   126,     6,     7,   186,   235,   235,   235,
1817 >      12,   235,   235,   235,   235,   224,   235,   235,    20,    21,
1818 >      67,   235,   231,   146,   235,    27,   205,   235,    30,    31,
1819 >     235,     1,   155,   235,    36,   235,   235,   235,   235,    41,
1820 >      42,   235,    44,    45,    46,     1,    48,    17,   227,   235,
1821 >     235,   235,   235,   233,   233,    57,   175,   235,   235,    61,
1822 >      62,   235,   235,    33,   235,   235,   235,   235,   235,    25,
1823 >      72,   235,   235,   235,   235,   122,   235,   200,   235,   235,
1824 >      82,   235,   235,   130,   131,   235,   235,    89,   235,    91,
1825 >     235,    93,   235,    95,   235,    97,    98,    67,   235,   127,
1826 >     112,   112,   214,    59,   151,   228,   112,   112,   110,     4,
1827 >     233,   112,    68,   115,   116,   117,   112,   119,   120,   121,
1828 >     112,   112,   124,    18,   828,   829,   830,   831,   832,   833,
1829 >     834,    26,   102,   214,    90,   214,   232,   232,    94,   232,
1830 >     127,   235,    13,   235,   235,    40,   102,   235,   150,   105,
1831 >     106,   235,   122,   235,   232,   235,   214,   159,   160,   161,
1832 >     162,   163,   164,    34,   235,   235,   235,   235,   138,   235,
1833 >     235,   235,    43,   235,   235,   235,    71,  1235,    73,   235,
1834 >     227,   137,   235,   235,   235,   155,   156,   235,   214,   191,
1835 >     235,   235,   235,     1,   235,     3,   235,     5,   154,   235,
1836 >     235,   157,   158,    74,    99,   235,   235,   112,   235,    17,
1837 >     235,   214,   112,   215,   216,   217,   127,   219,   220,   221,
1838 >     214,   214,   112,   225,   112,    33,   112,   183,   230,   214,
1839 >     214,   214,   103,   104,   112,   205,   112,   132,   112,   134,
1840 >     111,   214,   112,   112,   200,   201,   202,   112,     1,   235,
1841 >      58,   214,    60,   235,   214,   214,   214,   227,   153,    67,
1842 >     214,   214,    15,    16,   214,   136,    19,   214,   127,   112,
1843 >      78,   214,   228,   229,   214,   214,   214,   172,   235,   127,
1844 >     232,   152,   177,   232,   235,   127,   181,     0,     1,   235,
1845 >      73,     4,   214,   188,   102,   232,   214,   214,   193,   235,
1846 >     235,    14,   235,   235,    17,    18,   235,   235,   235,   235,
1847 >     235,    24,   207,   232,    67,   210,   232,   212,   126,   232,
1848 >     235,   235,    35,   235,   127,    38,    39,   235,   235,   224,
1849 >     232,    84,    85,    86,    87,    88,   231,   235,   146,    92,
1850 >     232,   235,   213,    96,   235,   127,   112,   155,   235,   102,
1851 >     235,   235,   135,    66,   235,   235,   214,   214,    71,   214,
1852 >     113,   114,   214,   127,   112,   112,    49,    80,    51,    52,
1853 >     127,   127,   125,   139,   140,   141,   142,   143,   144,   145,
1854 >     112,   127,   165,   127,   127,   127,   127,   100,   101,   172,
1855 >     127,   127,   200,   127,   147,   232,   232,   235,   181,   214,
1856 >      49,   232,    51,    52,     1,   118,   234,   127,   232,   232,
1857 >     235,   232,   232,   235,   232,   232,   232,   112,   232,   232,
1858 >     228,   232,   135,   232,   207,   232,   209,   210,   232,   235,
1859 >     232,   232,    29,   186,    49,   148,   149,   232,   232,   232,
1860 >      37,   224,   232,   112,   112,   112,   112,   112,   231,   112,
1861 >     127,   112,    49,    50,   112,   112,   169,    54,    55,    56,
1862 >     232,   235,   214,   127,   112,   127,   235,   127,   127,   182,
1863 >     232,   127,   127,   127,   127,   127,   127,   190,   232,   237,
1864 >     127,   194,    79,   166,   167,   168,   127,   170,   171,   127,
1865 >     173,   174,   232,   176,   127,   178,   214,   232,   181,   232,
1866 >     112,   184,   185,   232,   187,   232,   232,   232,   232,   192,
1867 >     232,   232,   235,   196,   197,   198,   232,   166,   167,   168,
1868 >     232,   170,   171,   206,   173,   174,   232,   176,   211,   178,
1869 >     232,   232,   181,   232,   232,   184,   185,   127,   187,   232,
1870 >     232,   232,   232,   192,   232,   232,     1,   196,   197,   198,
1871 >     232,   166,   167,   168,   232,   170,   171,   206,   173,   174,
1872 >     232,   176,   211,   178,   127,   127,   181,    22,    23,   184,
1873 >     185,   127,   187,    28,   127,   127,   127,   192,   127,   127,
1874 >     112,   196,   197,   198,   127,   127,   232,   232,   232,   232,
1875 >     232,   206,   232,   232,   127,   232,   211,   232,   232,   235,
1876 >     232,   232,   232,   232,   232,   232,   232,   232,    63,    64,
1877 >     232,   232,   232,   232,    69,    70,   232,   127,   232,   232,
1878 >      75,    76,    77,   232,   232,   232,   232,   232,    83,    84,
1879 >     232,   232,   214,   127,   127,   127,   214,   235,   127,   232,
1880 >     127,   127,   127,   232,   232,   232,   232,   232,   232,   232,
1881 >     127,   232,   232,   108,   109,   232,   232,   232,   232,   232,
1882 >     232,   232,   232,   232,   232,   232,   232,   232,   232,   127,
1883 >     127,   232,   232,   112,   232,   232,   235,   232,   127,   133,
1884 >     133,   235,   232,   133,  1047,   232,   232,   232,   232,    74,
1885 >    1311,   232,   232,   232,   232,   232,   232,   232,   232,  1049,
1886 >     296,   232,   232,   232,   232,   232,   232,   232,   232,   232,
1887 >     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
1888 >     232,   232,   511,   232,   232,   232,   232,   232,   232,   232,
1889 >     232,   232,   232,   232,   232,  1060,   232,   232,   222,   236,
1890 >     526,   232,   232,  1275,   232,  1273,  1254,   347,  1265,   232,
1891 >     232,   232,   232,   232,   232,   542,   232,   232,   232,   232,
1892 >     498,  1157,   232,   235,   235,   232,   232,   475,   237,   237,
1893 >     235,   232,   232,   232,  1263,  1284,   232,   228,   597,  1277,
1894 >    1259,   581,   381,   488,   115,  1127,   410,   170,    94,   400,
1895 >    1125,    -1,   244,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1896 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   273,
1897 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1898        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1899        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1900 <      -1,    -1,    -1,   293
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,   268,     0,     1,     5,    22,    26,    29,    36,    52,
1908 <      65,    66,    68,    75,    92,   102,   104,   121,   138,   173,
1909 <     182,   183,   187,   188,   269,   274,   279,   297,   303,   318,
1910 <     355,   374,   388,   414,   421,   431,   440,   471,   481,   487,
1911 <     491,   501,   566,   582,   603,   262,   263,   264,   264,   356,
1912 <     441,   482,   264,   492,   264,   567,   389,   472,   375,   264,
1913 <     264,   319,   415,   264,   264,   422,   432,     1,    37,    48,
1914 <     122,   298,   299,   300,   301,   302,     1,    13,    34,    35,
1915 <      40,    42,    98,    99,   107,   108,   128,   129,   145,   146,
1916 <     156,   165,   252,   253,   254,   583,   584,   585,   586,   587,
1917 <     588,   589,   590,   591,   592,   593,   594,   595,   596,   597,
1918 <     598,   599,   600,   601,   602,   155,   357,   361,   155,   442,
1919 <     446,   264,     1,    91,   488,   489,   490,   264,     1,     8,
1920 <       9,    12,    19,    28,    32,    33,    39,    43,    44,    45,
1921 <      47,    53,    72,    73,    77,    84,    88,    89,    90,    93,
1922 <      96,    97,   106,   112,   113,   115,   116,   117,   118,   119,
1923 <     130,   139,   141,   142,   144,   147,   148,   151,   162,   184,
1924 <     186,   190,   194,   195,   196,   197,   198,   202,   203,   211,
1925 <     243,   245,   251,   256,   261,   502,   503,   504,   505,   506,
1926 <     507,   508,   509,   510,   511,   512,   513,   514,   515,   516,
1927 <     517,   518,   519,   520,   521,   522,   523,   524,   525,   526,
1928 <     527,   528,   529,   530,   531,   532,   533,   534,   535,   536,
1929 <     537,   538,   539,   540,   541,   542,   543,   544,   545,   546,
1930 <     547,   548,   549,   550,   551,   552,   553,   557,   561,   562,
1931 <     563,   564,   565,   264,   264,   264,   264,     1,    57,    58,
1932 <      59,    60,    61,    62,    63,    64,   105,   140,   221,   255,
1933 <     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
1934 <     314,   315,   316,   317,     1,   120,   150,   275,   276,   277,
1935 <     278,   155,   320,   324,   264,     1,    41,    56,    78,    80,
1936 <      82,    83,   101,   604,   605,   606,   607,   608,   609,   610,
1937 <     611,   612,     1,    37,    86,   122,   124,   125,   167,   169,
1938 <     170,   185,   229,   257,   258,   280,   281,   282,   286,   287,
1939 <     288,   289,   290,   291,   292,   293,   294,   295,   296,   264,
1940 <     264,   262,   265,   265,   265,   263,   299,   265,   265,   265,
1941 <     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
1942 <     265,   265,   265,   265,   265,   263,   584,   264,   264,     1,
1943 <      91,   157,   483,   484,   485,   486,   265,   263,   489,     1,
1944 <     122,   157,   189,   493,   497,   498,   499,   500,   265,   265,
1945 <     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
1946 <     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
1947 <     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
1948 <     265,   558,   265,   554,   265,   265,   265,   265,   265,   265,
1949 <     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
1950 <     265,   265,   265,   265,   263,   503,     1,     4,    46,    49,
1951 <     104,   122,   250,   568,   569,   570,   571,   572,   576,   577,
1952 <     578,     1,    20,    26,    50,    51,    55,    69,    76,    95,
1953 <     123,   131,   149,   158,   159,   192,   193,   250,   390,   391,
1954 <     392,   393,   394,   395,   396,   397,   404,   405,   406,   407,
1955 <     408,   409,   410,   411,   412,   413,     1,   157,   189,   250,
1956 <     473,   477,   478,   479,   480,     1,    55,    85,    91,   154,
1957 <     376,   380,   381,   382,   386,   387,   262,   265,   265,   265,
1958 <     265,   265,   265,   265,   265,   265,   265,   265,   265,   263,
1959 <     305,   262,   265,   265,   263,   276,   264,     1,    22,   126,
1960 <     157,   416,   417,   418,   419,   420,   265,   265,   265,   265,
1961 <     265,   265,   265,   263,   605,   262,   265,   265,   265,   265,
1962 <     265,   265,   265,   283,   265,   265,   265,   265,   263,   281,
1963 <       1,   122,   189,   250,   423,   424,   425,   426,   427,     1,
1964 <     122,   189,   433,   434,   435,   436,   155,   155,   155,   262,
1965 <     199,   133,   133,   199,   199,   133,   271,   271,   133,   133,
1966 <     199,   199,   133,   271,   199,   199,   199,   199,   199,   262,
1967 <       1,    23,    24,    30,   109,   110,   111,   114,   122,   135,
1968 <     136,   152,   153,   180,   358,   359,   360,   362,   363,   364,
1969 <     365,   366,   367,   368,   369,   370,   371,   372,   373,     1,
1970 <       3,     6,    10,    25,    26,    27,    31,    50,    54,    55,
1971 <      85,    87,   100,   122,   154,   168,   181,   244,   257,   443,
1972 <     444,   445,   447,   448,   449,   450,   451,   452,   453,   454,
1973 <     461,   462,   463,   464,   465,   466,   467,   468,   469,   470,
1974 <     265,   265,   263,   484,   155,   262,   265,   265,   494,   263,
1975 <     498,   199,   271,   199,   271,   133,   155,   133,   199,   199,
1976 <     199,   133,   155,   199,   133,   133,   133,   199,   271,   199,
1977 <     199,   133,   155,   199,   133,   133,   271,   133,   133,   155,
1978 <     133,   133,   199,   199,   265,   199,   265,   271,   271,   199,
1979 <     271,   155,   199,   199,   199,   199,   200,   199,   200,   199,
1980 <     199,   271,   271,   133,   273,   271,   199,   199,   199,   199,
1981 <     262,   579,   265,   265,   573,   265,   265,   263,   569,   262,
1982 <     265,   265,   265,   265,   398,   265,   265,   265,   265,   265,
1983 <     265,   265,   265,   265,   265,   265,   263,   391,   265,   474,
1984 <     265,   263,   478,   262,   377,   265,   265,   265,   263,   381,
1985 <     155,   155,   155,   155,   155,   155,   155,   155,   222,   223,
1986 <     224,   225,   226,   227,   228,   155,   155,   199,   262,   155,
1987 <     155,   262,     1,     5,    26,    38,    50,    55,    67,    74,
1988 <      79,    81,    94,   122,   127,   149,   161,   163,   164,   168,
1989 <     231,   238,   249,   250,   259,   321,   322,   323,   325,   326,
1990 <     327,   328,   329,   330,   334,   335,   336,   337,   338,   339,
1991 <     340,   341,   342,   343,   344,   345,   346,   347,   348,   262,
1992 <     265,   265,   265,   263,   417,   199,   199,   199,   155,   199,
1993 <     199,   271,   262,   155,   199,   155,   155,   155,   155,   155,
1994 <     265,   155,   133,   155,   155,   262,   262,   265,   428,   265,
1995 <     263,   424,   262,   265,   437,   263,   434,   262,   262,   262,
1996 <     262,   262,   262,   262,   262,   175,   176,   177,   178,   179,
1997 <     270,   271,   262,   262,   262,   262,   262,   262,   262,   262,
1998 <     262,   262,   262,   262,   262,   262,   265,   265,   265,   265,
1999 <     265,   265,   265,   265,   265,   265,   265,   265,   265,   263,
2000 <     359,   262,   265,   265,   265,   265,   265,   265,   265,   265,
2001 <     265,   455,   265,   265,   265,   265,   265,   265,   265,   265,
2002 <     265,   263,   444,   155,   155,   262,   262,   155,   155,   265,
2003 <     262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
2004 <     262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
2005 <     262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
2006 <     262,   262,   262,   262,   206,   207,   208,   209,   210,   212,
2007 <     213,   215,   216,   217,   220,   230,   231,   232,   234,   235,
2008 <     236,   239,   242,   559,   560,   262,   206,   207,   208,   209,
2009 <     210,   212,   213,   215,   216,   217,   220,   230,   231,   232,
2010 <     234,   235,   236,   239,   242,   555,   556,   262,   262,   262,
2011 <     262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
2012 <     262,   262,   262,    14,    15,    16,   272,   273,   262,   262,
2013 <     262,   262,   262,   262,   265,   271,   199,   265,   155,   155,
2014 <     262,   199,   155,   199,   199,   265,   199,   199,   199,   199,
2015 <     199,   155,   133,   155,   155,   199,   155,   262,   155,   265,
2016 <     155,   262,   265,   155,   155,   133,   384,   385,   262,   262,
2017 <     262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
2018 <     262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
2019 <     265,   265,   265,   265,   349,   265,   265,   265,   265,   265,
2020 <     265,   265,   265,   265,   265,   265,   265,   265,   331,   265,
2021 <     265,   265,   263,   322,   155,   155,   155,   262,   262,   262,
2022 <     262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
2023 <     262,   262,   171,   172,   284,   285,   262,   262,   262,   262,
2024 <     155,   265,   155,   262,   155,   265,   262,   270,   270,   270,
2025 <     270,   270,   133,   133,   271,   133,   133,   133,   133,   155,
2026 <     133,   133,   271,   271,   273,   262,   155,   218,   219,   199,
2027 <     155,   155,   199,   199,   199,   155,   265,   155,   155,   155,
2028 <     155,   133,   155,   155,   199,   155,   262,   262,   262,   262,
2029 <     262,   160,   495,   496,   262,   266,   262,   266,   272,   272,
2030 <     272,    11,   201,   580,   581,   262,   262,    11,   201,   574,
2031 <     575,   262,   262,   262,   262,   262,   262,   132,   399,   400,
2032 <     402,   262,   262,   262,   262,   262,   262,   262,   262,   262,
2033 <     262,   262,   262,   160,   475,   476,   262,    78,   233,   237,
2034 <     378,   379,   262,   262,   204,   266,   383,   199,   155,   199,
2035 <     199,   265,   199,   199,   199,   199,   199,   155,   199,   155,
2036 <     199,   199,   199,   155,   199,   265,   199,   155,   199,   262,
2037 <     262,   262,   262,   262,   266,   262,    94,   173,   205,   220,
2038 <     240,   241,   246,   247,   248,   249,   259,   429,   430,   262,
2634 <     262,    94,   173,   205,   220,   240,   241,   246,   247,   248,
2635 <     249,   259,   438,   439,   262,   262,   262,   262,   262,   262,
2636 <     262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
2637 <     262,   262,   262,   262,   262,   262,   262,   132,   456,   457,
2638 <     459,   262,   262,   262,   262,   262,   262,   262,   262,   262,
2639 <     262,   266,   560,   556,   262,   266,   262,   266,   401,   262,
2640 <     266,    20,    21,    51,    69,    76,    95,   123,   131,   174,
2641 <     193,   403,   262,   266,   262,   266,   133,   385,   262,   262,
2642 <     262,   262,   262,   132,   350,   351,   353,   262,   262,   262,
2643 <     262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
2644 <     206,   207,   208,   209,   210,   212,   213,   215,   216,   217,
2645 <     220,   230,   231,   232,   234,   235,   236,   239,   242,   332,
2646 <     333,   262,   262,   262,   285,   262,   266,   262,   266,   458,
2647 <     262,   266,    10,    12,    27,    31,   244,   460,   496,   581,
2648 <     575,   403,   400,   476,   379,   352,   262,   266,     5,    38,
2649 <      50,    67,    74,    79,    81,    94,   127,   143,   161,   163,
2650 <     164,   231,   249,   259,   354,   262,   266,   430,   439,   460,
2651 <     457,   354,   351,   333
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
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 YYACCEPT        goto yyacceptlab
2114 < #define YYABORT         goto yyabortlab
2115 < #define YYERROR         goto yyerrorlab
2113 >  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
2114 > static const yytype_uint8 yyr2[] =
2115 > {
2116 >       0,     2,     0,     2,     1,     1,     1,     1,     1,     1,
2117 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2118 >       1,     1,     1,     1,     1,     2,     2,     0,     1,     2,
2119 >       3,     3,     3,     3,     3,     3,     3,     0,     1,     2,
2120 >       3,     3,     3,     5,     2,     1,     1,     1,     2,     4,
2121 >       4,     5,     2,     1,     1,     1,     1,     1,     1,     1,
2122 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2123 >       1,     1,     2,     4,     4,     3,     1,     1,     1,     3,
2124 >       1,     1,     1,     4,     4,     4,     4,     4,     4,     4,
2125 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     5,
2126 >       2,     1,     1,     1,     1,     2,     4,     4,     4,     0,
2127 >       6,     2,     1,     1,     1,     2,     4,     4,     5,     2,
2128 >       1,     1,     1,     2,     4,     0,     6,     2,     1,     1,
2129 >       1,     1,     2,     4,     4,     4,     0,     5,     3,     1,
2130 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
2131 >       6,     2,     1,     1,     1,     1,     1,     1,     1,     1,
2132 >       1,     1,     1,     2,     4,     4,     4,     4,     4,     4,
2133 >       4,     4,     0,     5,     3,     1,     1,     1,     1,     1,
2134 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2135 >       1,     1,     1,     1,     1,     1,     1,     1,     0,     5,
2136 >       3,     1,     3,     1,     3,     1,     3,     1,     1,     1,
2137 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2138 >       1,     1,     1,     1,     1,     0,     6,     2,     1,     1,
2139 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2140 >       1,     1,     1,     1,     1,     1,     2,     4,     4,     4,
2141 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2142 >       4,     4,     4,     0,     5,     3,     1,     1,     1,     0,
2143 >       6,     0,     5,     3,     1,     1,     1,     1,     2,     1,
2144 >       1,     1,     1,     1,     2,     0,     5,     3,     1,     1,
2145 >       3,     4,     4,     0,     6,     2,     1,     1,     1,     1,
2146 >       1,     1,     1,     1,     1,     2,     4,     4,     4,     4,
2147 >       0,     5,     3,     1,     1,     1,     1,     1,     1,     1,
2148 >       1,     1,     1,     1,     4,     4,     4,     0,     6,     2,
2149 >       1,     1,     1,     1,     2,     4,     4,     4,     5,     2,
2150 >       1,     1,     1,     4,     0,     6,     2,     1,     1,     1,
2151 >       1,     2,     4,     4,     0,     5,     3,     1,     1,     1,
2152 >       1,     1,     1,     1,     1,     1,     1,     1,     0,     6,
2153 >       2,     1,     1,     1,     2,     4,     0,     5,     3,     1,
2154 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2155 >       0,     6,     2,     1,     1,     1,     1,     1,     1,     1,
2156 >       1,     1,     1,     1,     1,     1,     1,     1,     2,     4,
2157 >       4,     4,     4,     4,     4,     4,     4,     4,     0,     5,
2158 >       3,     1,     1,     1,     4,     4,     4,     4,     4,     0,
2159 >       6,     2,     1,     1,     1,     1,     4,     4,     0,     6,
2160 >       2,     1,     1,     1,     1,     4,     4,     5,     2,     1,
2161 >       1,     1,     4,     0,     6,     2,     1,     1,     1,     1,
2162 >       4,     4,     5,     2,     1,     1,     1,     1,     1,     1,
2163 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2164 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2165 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2166 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2167 >       1,     1,     1,     1,     1,     1,     4,     4,     4,     4,
2168 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2169 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2170 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2171 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2172 >       4,     4,     4,     0,     5,     3,     1,     1,     1,     1,
2173 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2174 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
2175 >       5,     3,     1,     1,     1,     1,     1,     1,     1,     1,
2176 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2177 >       1,     1,     1,     4,     4,     4,     5,     2,     1,     1,
2178 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2179 >       1,     1,     1,     1,     4,     4,     4,     4,     4,     4,
2180 >       4,     4,     4,     4,     4,     4,     4,     4,     5,     2,
2181 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2182 >       4,     4,     4,     4,     4,     4,     4,     4
2183 > };
2184  
2185  
2186 < /* Like YYERROR except do call yyerror.  This remains here temporarily
2187 <   to ease the transition to the new meaning of YYERROR, for GCC.
2188 <   Once GCC version 2 has supplanted version 1, this can go.  */
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  
2668 #define YYFAIL          goto yyerrlab
2195  
2196   #define YYRECOVERING()  (!!yyerrstatus)
2197  
2198 < #define YYBACKUP(Token, Value)                                  \
2199 < do                                                              \
2200 <  if (yychar == YYEMPTY && yylen == 1)                          \
2201 <    {                                                           \
2202 <      yychar = (Token);                                         \
2203 <      yylval = (Value);                                         \
2204 <      yytoken = YYTRANSLATE (yychar);                           \
2205 <      YYPOPSTACK (1);                                           \
2206 <      goto yybackup;                                            \
2207 <    }                                                           \
2208 <  else                                                          \
2209 <    {                                                           \
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 (YYID (0))
2214 <
2215 <
2216 < #define YYTERROR        1
2217 < #define YYERRCODE       256
2692 <
2693 <
2694 < /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2695 <   If N is 0, then set CURRENT to the empty location which ends
2696 <   the previous symbol: RHS[0] (always defined).  */
2697 <
2698 < #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2699 < #ifndef YYLLOC_DEFAULT
2700 < # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
2701 <    do                                                                  \
2702 <      if (YYID (N))                                                    \
2703 <        {                                                               \
2704 <          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
2705 <          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
2706 <          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
2707 <          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
2708 <        }                                                               \
2709 <      else                                                              \
2710 <        {                                                               \
2711 <          (Current).first_line   = (Current).last_line   =              \
2712 <            YYRHSLOC (Rhs, 0).last_line;                                \
2713 <          (Current).first_column = (Current).last_column =              \
2714 <            YYRHSLOC (Rhs, 0).last_column;                              \
2715 <        }                                                               \
2716 <    while (YYID (0))
2717 < #endif
2718 <
2719 <
2720 < /* YY_LOCATION_PRINT -- Print the location on the stream.
2721 <   This macro was not mandated originally: define only if we know
2722 <   we won't break user code: when these are the locations we know.  */
2723 <
2724 < #ifndef YY_LOCATION_PRINT
2725 < # if YYLTYPE_IS_TRIVIAL
2726 < #  define YY_LOCATION_PRINT(File, Loc)                  \
2727 <     fprintf (File, "%d.%d-%d.%d",                      \
2728 <              (Loc).first_line, (Loc).first_column,     \
2729 <              (Loc).last_line,  (Loc).last_column)
2730 < # else
2731 < #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2732 < # endif
2733 < #endif
2211 >      YYERROR;                                                  \
2212 >    }                                                           \
2213 > while (0)
2214 >
2215 > /* Error token number */
2216 > #define YYTERROR        1
2217 > #define YYERRCODE       256
2218  
2219  
2736 /* YYLEX -- calling `yylex' with the right arguments.  */
2737
2738 #ifdef YYLEX_PARAM
2739 # define YYLEX yylex (YYLEX_PARAM)
2740 #else
2741 # define YYLEX yylex ()
2742 #endif
2220  
2221   /* Enable debugging if requested.  */
2222   #if YYDEBUG
# Line 2749 | 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))
2234 <
2235 < # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
2236 < do {                                                                      \
2237 <  if (yydebug)                                                            \
2238 <    {                                                                     \
2762 <      YYFPRINTF (stderr, "%s ", Title);                                   \
2763 <      yy_symbol_print (stderr,                                            \
2764 <                  Type, Value); \
2765 <      YYFPRINTF (stderr, "\n");                                           \
2766 <    }                                                                     \
2767 < } 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  
2240  
2241 < /*--------------------------------.
2242 < | Print this symbol on YYOUTPUT.  |
2243 < `--------------------------------*/
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  
2774 /*ARGSUSED*/
2775 #if (defined __STDC__ || defined __C99__FUNC__ \
2776     || defined __cplusplus || defined _MSC_VER)
2257   static void
2258   yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2779 #else
2780 static void
2781 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
2782    FILE *yyoutput;
2783    int yytype;
2784    YYSTYPE const * const yyvaluep;
2785 #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);
2792 # else
2793  YYUSE (yyoutput);
2267   # endif
2268 <  switch (yytype)
2796 <    {
2797 <      default:
2798 <        break;
2799 <    }
2268 >  YYUSE (yytype);
2269   }
2270  
2271  
# Line 2804 | Line 2273 | yy_symbol_value_print (yyoutput, yytype,
2273   | Print this symbol on YYOUTPUT.  |
2274   `--------------------------------*/
2275  
2807 #if (defined __STDC__ || defined __C99__FUNC__ \
2808     || defined __cplusplus || defined _MSC_VER)
2276   static void
2277   yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2811 #else
2812 static void
2813 yy_symbol_print (yyoutput, yytype, yyvaluep)
2814    FILE *yyoutput;
2815    int yytype;
2816    YYSTYPE const * const yyvaluep;
2817 #endif
2278   {
2279 <  if (yytype < YYNTOKENS)
2280 <    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2821 <  else
2822 <    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 2830 | Line 2288 | yy_symbol_print (yyoutput, yytype, yyval
2288   | TOP (included).                                                   |
2289   `------------------------------------------------------------------*/
2290  
2833 #if (defined __STDC__ || defined __C99__FUNC__ \
2834     || defined __cplusplus || defined _MSC_VER)
2291   static void
2292   yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2837 #else
2838 static void
2839 yy_stack_print (yybottom, yytop)
2840    yytype_int16 *yybottom;
2841    yytype_int16 *yytop;
2842 #endif
2293   {
2294    YYFPRINTF (stderr, "Stack now");
2295    for (; yybottom <= yytop; yybottom++)
# Line 2850 | 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  
2864 #if (defined __STDC__ || defined __C99__FUNC__ \
2865     || defined __cplusplus || defined _MSC_VER)
2866 static void
2867 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
2868 #else
2314   static void
2315 < yy_reduce_print (yyvsp, yyrule)
2871 <    YYSTYPE *yyvsp;
2872 <    int yyrule;
2873 < #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;
2877  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 2906 | 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 2921 | Line 2364 | int yydebug;
2364   # define YYMAXDEPTH 10000
2365   #endif
2366  
2924
2367  
2368   #if YYERROR_VERBOSE
2369  
# Line 2930 | Line 2372 | int yydebug;
2372   #   define yystrlen strlen
2373   #  else
2374   /* Return the length of YYSTR.  */
2933 #if (defined __STDC__ || defined __C99__FUNC__ \
2934     || defined __cplusplus || defined _MSC_VER)
2375   static YYSIZE_T
2376   yystrlen (const char *yystr)
2937 #else
2938 static YYSIZE_T
2939 yystrlen (yystr)
2940    const char *yystr;
2941 #endif
2377   {
2378    YYSIZE_T yylen;
2379    for (yylen = 0; yystr[yylen]; yylen++)
# Line 2954 | Line 2389 | yystrlen (yystr)
2389   #  else
2390   /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2391     YYDEST.  */
2957 #if (defined __STDC__ || defined __C99__FUNC__ \
2958     || defined __cplusplus || defined _MSC_VER)
2392   static char *
2393   yystpcpy (char *yydest, const char *yysrc)
2961 #else
2962 static char *
2963 yystpcpy (yydest, yysrc)
2964    char *yydest;
2965    const char *yysrc;
2966 #endif
2394   {
2395    char *yyd = yydest;
2396    const char *yys = yysrc;
# Line 2993 | 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 3024 | 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))
3040 <    return 0;
3041 <  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
2550 <         constructed on the fly.  */
2551 <      YY_("syntax error, unexpected %s");
2552 <      YY_("syntax error, unexpected %s, expecting %s");
2553 <      YY_("syntax error, unexpected %s, expecting %s or %s");
2554 <      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
2555 <      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
2556 < # endif
2557 <      char *yyfmt;
2558 <      char const *yyf;
2559 <      static char const yyunexpected[] = "syntax error, unexpected %s";
2560 <      static char const yyexpecting[] = ", expecting %s";
2561 <      static char const yyor[] = " or %s";
2562 <      char yyformat[sizeof yyunexpected
2563 <                    + sizeof yyexpecting - 1
2564 <                    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
2565 <                       * (sizeof yyor - 1))];
3070 <      char const *yyprefix = yyexpecting;
3071 <
3072 <      /* Start YYX at -YYN if negative to avoid negative indexes in
3073 <         YYCHECK.  */
3074 <      int yyxbegin = yyn < 0 ? -yyn : 0;
3075 <
3076 <      /* Stay within bounds of both yycheck and yytname.  */
3077 <      int yychecklim = YYLAST - yyn + 1;
3078 <      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
3079 <      int yycount = 1;
3080 <
3081 <      yyarg[0] = yytname[yytype];
3082 <      yyfmt = yystpcpy (yyformat, yyunexpected);
3083 <
3084 <      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
3085 <        if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
3086 <          {
3087 <            if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
3088 <              {
3089 <                yycount = 1;
3090 <                yysize = yysize0;
3091 <                yyformat[sizeof yyunexpected - 1] = '\0';
3092 <                break;
3093 <              }
3094 <            yyarg[yycount++] = yytname[yyx];
3095 <            yysize1 = yysize + yytnamerr (0, yytname[yyx]);
3096 <            yysize_overflow |= (yysize1 < yysize);
3097 <            yysize = yysize1;
3098 <            yyfmt = yystpcpy (yyfmt, yyprefix);
3099 <            yyprefix = yyor;
3100 <          }
3101 <
3102 <      yyf = YY_(yyformat);
3103 <      yysize1 = yysize + yystrlen (yyf);
3104 <      yysize_overflow |= (yysize1 < yysize);
3105 <      yysize = yysize1;
3106 <
3107 <      if (yysize_overflow)
3108 <        return YYSIZE_MAXIMUM;
3109 <
3110 <      if (yyresult)
3111 <        {
3112 <          /* Avoid sprintf, as that infringes on the user's name space.
3113 <             Don't have undefined behavior even if the translation
3114 <             produced a string with the wrong number of "%s"s.  */
3115 <          char *yyp = yyresult;
3116 <          int yyi = 0;
3117 <          while ((*yyp = *yyf) != '\0')
3118 <            {
3119 <              if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
3120 <                {
3121 <                  yyp += yytnamerr (yyp, yyarg[yyi++]);
3122 <                  yyf += 2;
3123 <                }
3124 <              else
3125 <                {
3126 <                  yyp++;
3127 <                  yyf++;
3128 <                }
3129 <            }
3130 <        }
3131 <      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 */
3135
2589  
2590   /*-----------------------------------------------.
2591   | Release the memory associated to this symbol.  |
2592   `-----------------------------------------------*/
2593  
3141 /*ARGSUSED*/
3142 #if (defined __STDC__ || defined __C99__FUNC__ \
3143     || defined __cplusplus || defined _MSC_VER)
2594   static void
2595   yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
3146 #else
3147 static void
3148 yydestruct (yymsg, yytype, yyvaluep)
3149    const char *yymsg;
3150    int yytype;
3151    YYSTYPE *yyvaluep;
3152 #endif
2596   {
2597    YYUSE (yyvaluep);
3155
2598    if (!yymsg)
2599      yymsg = "Deleting";
2600    YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2601  
2602 <  switch (yytype)
2603 <    {
2604 <
3163 <      default:
3164 <        break;
3165 <    }
2602 >  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2603 >  YYUSE (yytype);
2604 >  YY_IGNORE_MAYBE_UNINITIALIZED_END
2605   }
2606  
2607 < /* Prevent warnings from -Wmissing-prototypes.  */
3169 < #ifdef YYPARSE_PARAM
3170 < #if defined __STDC__ || defined __cplusplus
3171 < int yyparse (void *YYPARSE_PARAM);
3172 < #else
3173 < int yyparse ();
3174 < #endif
3175 < #else /* ! YYPARSE_PARAM */
3176 < #if defined __STDC__ || defined __cplusplus
3177 < int yyparse (void);
3178 < #else
3179 < int yyparse ();
3180 < #endif
3181 < #endif /* ! YYPARSE_PARAM */
2607 >
2608  
2609  
2610   /* The lookahead symbol.  */
# Line 3186 | Line 2612 | int yychar;
2612  
2613   /* The semantic value of the lookahead symbol.  */
2614   YYSTYPE yylval;
3189
2615   /* Number of syntax errors so far.  */
2616   int yynerrs;
2617  
2618  
2619 + /*----------.
2620 + | yyparse.  |
2621 + `----------*/
2622  
3195 /*-------------------------.
3196 | yyparse or yypush_parse.  |
3197 `-------------------------*/
3198
3199 #ifdef YYPARSE_PARAM
3200 #if (defined __STDC__ || defined __C99__FUNC__ \
3201     || defined __cplusplus || defined _MSC_VER)
3202 int
3203 yyparse (void *YYPARSE_PARAM)
3204 #else
3205 int
3206 yyparse (YYPARSE_PARAM)
3207    void *YYPARSE_PARAM;
3208 #endif
3209 #else /* ! YYPARSE_PARAM */
3210 #if (defined __STDC__ || defined __C99__FUNC__ \
3211     || defined __cplusplus || defined _MSC_VER)
2623   int
2624   yyparse (void)
3214 #else
3215 int
3216 yyparse ()
3217
3218 #endif
3219 #endif
2625   {
3221
3222
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 3246 | 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 3264 | Line 2667 | yyparse ()
2667       Keep to zero when no symbol should be popped.  */
2668    int yylen = 0;
2669  
2670 <  yytoken = 0;
2671 <  yyss = yyssa;
3269 <  yyvs = yyvsa;
2670 >  yyssp = yyss = yyssa;
2671 >  yyvsp = yyvs = yyvsa;
2672    yystacksize = YYINITDEPTH;
2673  
2674    YYDPRINTF ((stderr, "Starting parse\n"));
# Line 3275 | Line 2677 | yyparse ()
2677    yyerrstatus = 0;
2678    yynerrs = 0;
2679    yychar = YYEMPTY; /* Cause a token to be read.  */
3278
3279  /* Initialize stack pointers.
3280     Waste one element of value and location stack
3281     so that they stay on the same level as the state stack.
3282     The wasted elements are never initialized.  */
3283  yyssp = yyss;
3284  yyvsp = yyvs;
3285
2680    goto yysetstate;
2681  
2682   /*------------------------------------------------------------.
# Line 3303 | 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 3327 | 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 3351 | 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 3374 | 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 3383 | 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 3405 | 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 3423 | 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 3446 | 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 3459 | Line 2855 | yyreduce:
2855    YY_REDUCE_PRINT (yyn);
2856    switch (yyn)
2857      {
2858 <        case 26:
2859 <
3464 < /* Line 1455 of yacc.c  */
3465 < #line 426 "ircd_parser.y"
2858 >        case 27:
2859 > #line 412 "conf_parser.y" /* yacc.c:1646  */
2860      { (yyval.number) = 0; }
2861 <    break;
3468 <
3469 <  case 28:
3470 <
3471 < /* Line 1455 of yacc.c  */
3472 < #line 428 "ircd_parser.y"
3473 <    {
3474 <                        (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
3475 <                }
2861 > #line 2862 "conf_parser.c" /* yacc.c:1646  */
2862      break;
2863  
2864    case 29:
2865 <
2866 < /* Line 1455 of yacc.c  */
2867 < #line 432 "ircd_parser.y"
3482 <    {
3483 <                        (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
3484 <                }
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 1455 of yacc.c  */
2873 < #line 436 "ircd_parser.y"
3491 <    {
3492 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
3493 <                }
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 1455 of yacc.c  */
2879 < #line 440 "ircd_parser.y"
3500 <    {
3501 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
3502 <                }
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 1455 of yacc.c  */
2885 < #line 444 "ircd_parser.y"
3509 <    {
3510 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
3511 <                }
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 1455 of yacc.c  */
2891 < #line 448 "ircd_parser.y"
3518 <    {
3519 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
3520 <                }
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 1455 of yacc.c  */
2901 < #line 453 "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 1455 of yacc.c  */
2909 < #line 454 "ircd_parser.y"
3534 <    { (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 1455 of yacc.c  */
2915 < #line 455 "ircd_parser.y"
3541 <    { (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 1455 of yacc.c  */
2921 < #line 456 "ircd_parser.y"
3548 <    { (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 1455 of yacc.c  */
2931 < #line 457 "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 1455 of yacc.c  */
2943 < #line 471 "ircd_parser.y"
2942 >  case 49:
2943 > #line 441 "conf_parser.y" /* yacc.c:1646  */
2944      {
3563 #ifndef STATIC_MODULES /* NOOP in the static case */
2945    if (conf_parser_ctx.pass == 2)
2946      add_conf_module(libio_basename(yylval.string));
3566 #endif
2947   }
2948 + #line 2949 "conf_parser.c" /* yacc.c:1646  */
2949      break;
2950  
2951 <  case 47:
2952 <
3572 < /* Line 1455 of yacc.c  */
3573 < #line 479 "ircd_parser.y"
2951 >  case 50:
2952 > #line 447 "conf_parser.y" /* yacc.c:1646  */
2953      {
3575 #ifndef STATIC_MODULES
2954    if (conf_parser_ctx.pass == 2)
2955      mod_add_path(yylval.string);
3578 #endif
2956   }
2957 + #line 2958 "conf_parser.c" /* yacc.c:1646  */
2958      break;
2959  
2960 <  case 64:
2961 <
3584 < /* Line 1455 of yacc.c  */
3585 < #line 501 "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 <
3596 < /* Line 1455 of yacc.c  */
3597 < #line 507 "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 <  {
3602 <    if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_SSLV3))
3603 <      SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
3604 <    if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_TLSV1))
3605 <      SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
3606 <  }
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 <
3613 < /* Line 1455 of yacc.c  */
3614 < #line 521 "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 <
3625 < /* Line 1455 of yacc.c  */
3626 < #line 527 "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 <
3637 < /* Line 1455 of yacc.c  */
3638 < #line 535 "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 <
3675 < /* Line 1455 of yacc.c  */
3676 < #line 569 "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 <    if (ServerInfo.rsa_private_key)
3103 >    conf_error_report("Ignoring serverinfo::rsa_private_key_file -- need at least a 1024 bit key size");
3104 >  }
3105 > #endif
3106 > }
3107 > #line 3108 "conf_parser.c" /* yacc.c:1646  */
3108 >    break;
3109 >
3110 >  case 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);
3692 <      ServerInfo.rsa_private_key_file = NULL;
3693 <    }
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);
3718 <      ServerInfo.rsa_private_key = NULL;
3719 <
3720 <      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);
3728 <      ServerInfo.rsa_private_key = NULL;
3729 <
3730 <      yyerror("Not a 2048 bit key, ignoring");
3731 <    }
3732 <  }
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 <
3739 < /* Line 1455 of yacc.c  */
3740 < #line 629 "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)
3187 >  if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
3188    {
3189 <    if (ServerInfo.name == NULL)
3189 >    if (valid_servname(yylval.string))
3190 >      ServerInfo.name = xstrdup(yylval.string);
3191 >    else
3192      {
3193 <      /* the ircd will exit() in main() if we dont set one */
3194 <      if (strlen(yylval.string) <= HOSTLEN)
3749 <        DupString(ServerInfo.name, yylval.string);
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 <
3757 < /* Line 1455 of yacc.c  */
3758 < #line 643 "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 config file entry 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 <
3776 < /* Line 1455 of yacc.c  */
3777 < #line 658 "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 <
3789 < /* Line 1455 of yacc.c  */
3790 < #line 667 "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 <
3807 < /* Line 1455 of yacc.c  */
3808 < #line 681 "ircd_parser.y"
3248 >  case 92:
3249 > #line 728 "conf_parser.y" /* yacc.c:1646  */
3250      {
3251 <  if (conf_parser_ctx.pass == 2)
3811 <  {
3812 <    MyFree(ServerInfo.network_desc);
3813 <    DupString(ServerInfo.network_desc, yylval.string);
3814 <  }
3815 < }
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 1455 of yacc.c  */
3261 < #line 690 "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 3830 | 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 <
3852 < /* Line 1455 of yacc.c  */
3853 < #line 718 "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 3863 | 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 <
3886 < /* Line 1455 of yacc.c  */
3887 < #line 748 "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];
3896 <      ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3897 <      yyerror(buf);
3898 <    }
3899 <    else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3900 <    {
3901 <      char buf[IRCD_BUFSIZE];
3902 <      ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3903 <      yyerror(buf);
3904 <    }
3905 <    else
3906 <      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 <
3913 < /* Line 1455 of yacc.c  */
3914 < #line 771 "ircd_parser.y"
3352 >  case 96:
3353 > #line 820 "conf_parser.y" /* yacc.c:1646  */
3354      {
3355 <  if (conf_parser_ctx.pass == 2)
3355 >  if (conf_parser_ctx.pass != 2)
3356 >    break;
3357 >
3358 >  if ((yyvsp[-1].number) < 9)
3359    {
3360 <    if (yylval.number)
3361 <    {
3362 <      ServerInfo.hub = 1;
3363 <      delete_capability("HUB");
3364 <      add_capability("HUB", CAP_HUB, 1);
3365 <    }
3924 <    else if (ServerInfo.hub)
3925 <    {
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 <      ServerInfo.hub = 0;
3368 <      delete_capability("HUB");
3369 <    }
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 88:
3378 <
3936 < /* Line 1455 of yacc.c  */
3937 < #line 799 "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.name);
3386 <    DupString(AdminInfo.name, 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 89:
3403 <
3949 < /* Line 1455 of yacc.c  */
3950 < #line 808 "ircd_parser.y"
3402 >  case 98:
3403 > #line 864 "conf_parser.y" /* yacc.c:1646  */
3404      {
3405    if (conf_parser_ctx.pass == 2)
3406 <  {
3954 <    MyFree(AdminInfo.email);
3955 <    DupString(AdminInfo.email, yylval.string);
3956 <  }
3406 >    ServerInfo.hub = yylval.number;
3407   }
3408 + #line 3409 "conf_parser.c" /* yacc.c:1646  */
3409      break;
3410  
3411 <  case 90:
3412 <
3962 < /* Line 1455 of yacc.c  */
3963 < #line 817 "ircd_parser.y"
3411 >  case 106:
3412 > #line 881 "conf_parser.y" /* yacc.c:1646  */
3413      {
3414 <  if (conf_parser_ctx.pass == 2)
3415 <  {
3416 <    MyFree(AdminInfo.description);
3417 <    DupString(AdminInfo.description, yylval.string);
3418 <  }
3414 >  if (conf_parser_ctx.pass != 2)
3415 >    break;
3416 >
3417 >  MyFree(AdminInfo.name);
3418 >  AdminInfo.name = xstrdup(yylval.string);
3419   }
3420 + #line 3421 "conf_parser.c" /* yacc.c:1646  */
3421      break;
3422  
3423    case 107:
3424 <
3975 < /* Line 1455 of yacc.c  */
3976 < #line 844 "ircd_parser.y"
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 1455 of yacc.c  */
3436 < #line 848 "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 1455 of yacc.c  */
3448 < #line 852 "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,
3996 <            sizeof(ConfigLoggingEntry.userlog));
3451 >    reset_block_state();
3452   }
3453 + #line 3454 "conf_parser.c" /* yacc.c:1646  */
3454      break;
3455  
3456    case 110:
3457 <
4002 < /* Line 1455 of yacc.c  */
4003 < #line 859 "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));
4008 < }
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 < /* Line 1455 of yacc.c  */
3468 < #line 866 "ircd_parser.y"
4015 <    {
4016 <  if (conf_parser_ctx.pass == 2)
4017 <    strlcpy(ConfigLoggingEntry.operlog, yylval.string,
4018 <            sizeof(ConfigLoggingEntry.operlog));
3467 >  DLINK_FOREACH(ptr, block_state.mask.list.head)
3468 >    motd_add(ptr->data, block_state.file.buf);
3469   }
3470 + #line 3471 "conf_parser.c" /* yacc.c:1646  */
3471      break;
3472  
3473 <  case 112:
3474 <
4024 < /* Line 1455 of yacc.c  */
4025 < #line 873 "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.operspylog, yylval.string,
4029 <            sizeof(ConfigLoggingEntry.operspylog));
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 113:
3483 <
4035 < /* Line 1455 of yacc.c  */
4036 < #line 880 "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.glinelog, yylval.string,
4040 <            sizeof(ConfigLoggingEntry.glinelog));
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 114:
3492 <
4046 < /* Line 1455 of yacc.c  */
4047 < #line 887 "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.klinelog, yylval.string,
4051 <            sizeof(ConfigLoggingEntry.klinelog));
3495 >    ConfigLoggingEntry.use_logging = yylval.number;
3496   }
3497 + #line 3498 "conf_parser.c" /* yacc.c:1646  */
3498      break;
3499  
3500 <  case 115:
3501 <
4057 < /* Line 1455 of yacc.c  */
4058 < #line 894 "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.ioerrlog, yylval.string,
4062 <            sizeof(ConfigLoggingEntry.ioerrlog));
3504 >    reset_block_state();
3505   }
3506 + #line 3507 "conf_parser.c" /* yacc.c:1646  */
3507      break;
3508  
3509 <  case 116:
3510 <
4068 < /* Line 1455 of yacc.c  */
4069 < #line 901 "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.killlog, yylval.string,
3514 <            sizeof(ConfigLoggingEntry.killlog));
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 117:
3522 >  case 133:
3523 > #line 979 "conf_parser.y" /* yacc.c:1646  */
3524 >    {
3525 >  if (conf_parser_ctx.pass != 2)
3526 >    break;
3527  
3528 < /* Line 1455 of yacc.c  */
4080 < #line 908 "ircd_parser.y"
4081 <    {
4082 <  if (conf_parser_ctx.pass == 2)
4083 <    set_log_level(L_CRIT);
3528 >  strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3529   }
3530 + #line 3531 "conf_parser.c" /* yacc.c:1646  */
3531      break;
3532  
3533 <  case 118:
3534 <
4089 < /* Line 1455 of yacc.c  */
4090 < #line 912 "ircd_parser.y"
3533 >  case 134:
3534 > #line 987 "conf_parser.y" /* yacc.c:1646  */
3535      {
3536 <  if (conf_parser_ctx.pass == 2)
4093 <    set_log_level(L_ERROR);
3536 >  block_state.size.value = (yyvsp[-1].number);
3537   }
3538 + #line 3539 "conf_parser.c" /* yacc.c:1646  */
3539      break;
3540  
3541 <  case 119:
3542 <
4099 < /* Line 1455 of yacc.c  */
4100 < #line 916 "ircd_parser.y"
3541 >  case 135:
3542 > #line 990 "conf_parser.y" /* yacc.c:1646  */
3543      {
3544 <  if (conf_parser_ctx.pass == 2)
4103 <    set_log_level(L_WARN);
3544 >  block_state.size.value = 0;
3545   }
3546 + #line 3547 "conf_parser.c" /* yacc.c:1646  */
3547      break;
3548  
3549 <  case 120:
3550 <
4109 < /* Line 1455 of yacc.c  */
4110 < #line 920 "ircd_parser.y"
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_NOTICE);
3553 >    block_state.type.value = 0;
3554   }
3555 + #line 3556 "conf_parser.c" /* yacc.c:1646  */
3556      break;
3557  
3558 <  case 121:
3559 <
4119 < /* Line 1455 of yacc.c  */
4120 < #line 924 "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_TRACE);
3562 >    block_state.type.value = LOG_TYPE_USER;
3563   }
3564 + #line 3565 "conf_parser.c" /* yacc.c:1646  */
3565      break;
3566  
3567 <  case 122:
3568 <
4129 < /* Line 1455 of yacc.c  */
4130 < #line 928 "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_INFO);
3571 >    block_state.type.value = LOG_TYPE_OPER;
3572   }
3573 + #line 3574 "conf_parser.c" /* yacc.c:1646  */
3574      break;
3575  
3576 <  case 123:
3577 <
4139 < /* Line 1455 of yacc.c  */
4140 < #line 932 "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_DEBUG);
3580 >    block_state.type.value = LOG_TYPE_GLINE;
3581   }
3582 + #line 3583 "conf_parser.c" /* yacc.c:1646  */
3583      break;
3584  
3585 <  case 124:
3586 <
4149 < /* Line 1455 of yacc.c  */
4150 < #line 938 "ircd_parser.y"
3585 >  case 143:
3586 > #line 1014 "conf_parser.y" /* yacc.c:1646  */
3587      {
3588    if (conf_parser_ctx.pass == 2)
3589 <    ConfigLoggingEntry.use_logging = yylval.number;
3589 >    block_state.type.value = LOG_TYPE_XLINE;
3590   }
3591 + #line 3592 "conf_parser.c" /* yacc.c:1646  */
3592      break;
3593  
3594 <  case 125:
3595 <
4159 < /* Line 1455 of yacc.c  */
4160 < #line 947 "ircd_parser.y"
3594 >  case 144:
3595 > #line 1018 "conf_parser.y" /* yacc.c:1646  */
3596      {
3597    if (conf_parser_ctx.pass == 2)
3598 <  {
4164 <    yy_conf = make_conf_item(OPER_TYPE);
4165 <    yy_aconf = map_to_conf(yy_conf);
4166 <    SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
4167 <  }
4168 <  else
4169 <  {
4170 <    MyFree(class_name);
4171 <    class_name = NULL;
4172 <  }
3598 >    block_state.type.value = LOG_TYPE_RESV;
3599   }
3600 + #line 3601 "conf_parser.c" /* yacc.c:1646  */
3601      break;
3602  
3603 <  case 126:
3604 <
4178 < /* Line 1455 of yacc.c  */
4179 < #line 960 "ircd_parser.y"
3603 >  case 145:
3604 > #line 1022 "conf_parser.y" /* yacc.c:1646  */
3605      {
3606    if (conf_parser_ctx.pass == 2)
3607 <  {
4183 <    struct CollectItem *yy_tmp;
4184 <    dlink_node *ptr;
4185 <    dlink_node *next_ptr;
4186 <
4187 <    conf_add_class_to_conf(yy_conf, class_name);
4188 <
4189 <    /* Now, make sure there is a copy of the "base" given oper
4190 <     * block in each of the collected copies
4191 <     */
4192 <
4193 <    DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
4194 <    {
4195 <      struct AccessItem *new_aconf;
4196 <      struct ConfItem *new_conf;
4197 <      yy_tmp = ptr->data;
4198 <
4199 <      new_conf = make_conf_item(OPER_TYPE);
4200 <      new_aconf = (struct AccessItem *)map_to_conf(new_conf);
4201 <
4202 <      new_aconf->flags = yy_aconf->flags;
4203 <
4204 <      if (yy_conf->name != NULL)
4205 <        DupString(new_conf->name, yy_conf->name);
4206 <      if (yy_tmp->user != NULL)
4207 <        DupString(new_aconf->user, yy_tmp->user);
4208 <      else
4209 <        DupString(new_aconf->user, "*");
4210 <      if (yy_tmp->host != NULL)
4211 <        DupString(new_aconf->host, yy_tmp->host);
4212 <      else
4213 <        DupString(new_aconf->host, "*");
4214 <      conf_add_class_to_conf(new_conf, class_name);
4215 <      if (yy_aconf->passwd != NULL)
4216 <        DupString(new_aconf->passwd, yy_aconf->passwd);
4217 <
4218 <      new_aconf->port = yy_aconf->port;
4219 < #ifdef HAVE_LIBCRYPTO
4220 <      if (yy_aconf->rsa_public_key_file != NULL)
4221 <      {
4222 <        BIO *file;
4223 <
4224 <        DupString(new_aconf->rsa_public_key_file,
4225 <                  yy_aconf->rsa_public_key_file);
4226 <
4227 <        file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
4228 <        new_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file,
4229 <                                                           NULL, 0, NULL);
4230 <        BIO_set_close(file, BIO_CLOSE);
4231 <        BIO_free(file);
4232 <      }
4233 < #endif
4234 <
4235 < #ifdef HAVE_LIBCRYPTO
4236 <      if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
4237 <          && yy_tmp->host)
4238 < #else
4239 <      if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
4240 < #endif
4241 <      {
4242 <        conf_add_class_to_conf(new_conf, class_name);
4243 <        if (yy_tmp->name != NULL)
4244 <          DupString(new_conf->name, yy_tmp->name);
4245 <      }
4246 <
4247 <      dlinkDelete(&yy_tmp->node, &col_conf_list);
4248 <      free_collect_item(yy_tmp);
4249 <    }
4250 <
4251 <    yy_conf = NULL;
4252 <    yy_aconf = NULL;
4253 <
4254 <
4255 <    MyFree(class_name);
4256 <    class_name = NULL;
4257 <  }
3607 >    block_state.type.value = LOG_TYPE_DLINE;
3608   }
3609 + #line 3610 "conf_parser.c" /* yacc.c:1646  */
3610      break;
3611  
3612 <  case 154:
3613 <
4263 < /* Line 1455 of yacc.c  */
4264 < #line 1052 "ircd_parser.y"
3612 >  case 146:
3613 > #line 1026 "conf_parser.y" /* yacc.c:1646  */
3614      {
3615    if (conf_parser_ctx.pass == 2)
3616 <  {
4268 <    if (strlen(yylval.string) > OPERNICKLEN)
4269 <      yylval.string[OPERNICKLEN] = '\0';
4270 <
4271 <    MyFree(yy_conf->name);
4272 <    DupString(yy_conf->name, yylval.string);
4273 <  }
3616 >    block_state.type.value = LOG_TYPE_KLINE;
3617   }
3618 + #line 3619 "conf_parser.c" /* yacc.c:1646  */
3619      break;
3620  
3621 <  case 155:
3622 <
4279 < /* Line 1455 of yacc.c  */
4280 < #line 1064 "ircd_parser.y"
3621 >  case 147:
3622 > #line 1030 "conf_parser.y" /* yacc.c:1646  */
3623      {
3624    if (conf_parser_ctx.pass == 2)
3625 <  {
4284 <    if (strlen(yylval.string) > OPERNICKLEN)
4285 <      yylval.string[OPERNICKLEN] = '\0';
4286 <
4287 <    MyFree(yy_conf->name);
4288 <    DupString(yy_conf->name, yylval.string);
4289 <  }
3625 >    block_state.type.value = LOG_TYPE_KILL;
3626   }
3627 + #line 3628 "conf_parser.c" /* yacc.c:1646  */
3628      break;
3629  
3630 <  case 156:
3631 <
4295 < /* Line 1455 of yacc.c  */
4296 < #line 1076 "ircd_parser.y"
3630 >  case 148:
3631 > #line 1034 "conf_parser.y" /* yacc.c:1646  */
3632      {
3633    if (conf_parser_ctx.pass == 2)
3634 <  {
4300 <    struct split_nuh_item nuh;
4301 <
4302 <    nuh.nuhmask  = yylval.string;
4303 <    nuh.nickptr  = NULL;
4304 <    nuh.userptr  = userbuf;
4305 <    nuh.hostptr  = hostbuf;
4306 <
4307 <    nuh.nicksize = 0;
4308 <    nuh.usersize = sizeof(userbuf);
4309 <    nuh.hostsize = sizeof(hostbuf);
4310 <
4311 <    split_nuh(&nuh);
4312 <
4313 <    if (yy_aconf->user == NULL)
4314 <    {
4315 <      DupString(yy_aconf->user, userbuf);
4316 <      DupString(yy_aconf->host, hostbuf);
4317 <    }
4318 <    else
4319 <    {
4320 <      struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
4321 <
4322 <      DupString(yy_tmp->user, userbuf);
4323 <      DupString(yy_tmp->host, hostbuf);
4324 <
4325 <      dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4326 <    }
4327 <  }
3634 >    block_state.type.value = LOG_TYPE_DEBUG;
3635   }
3636 + #line 3637 "conf_parser.c" /* yacc.c:1646  */
3637      break;
3638  
3639 <  case 157:
3640 <
4333 < /* Line 1455 of yacc.c  */
4334 < #line 1110 "ircd_parser.y"
3639 >  case 149:
3640 > #line 1044 "conf_parser.y" /* yacc.c:1646  */
3641      {
3642 <  if (conf_parser_ctx.pass == 2)
3643 <  {
4338 <    if (yy_aconf->passwd != NULL)
4339 <      memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
3642 >  if (conf_parser_ctx.pass != 2)
3643 >    break;
3644  
3645 <    MyFree(yy_aconf->passwd);
3646 <    DupString(yy_aconf->passwd, yylval.string);
4343 <  }
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 <  case 158:
3652 <
4349 < /* Line 1455 of yacc.c  */
4350 < #line 1122 "ircd_parser.y"
3651 >  case 150:
3652 > #line 1051 "conf_parser.y" /* yacc.c:1646  */
3653      {
3654 <  if (conf_parser_ctx.pass == 2)
4353 <  {
4354 <    if (yylval.number)
4355 <      SetConfEncrypted(yy_aconf);
4356 <    else
4357 <      ClearConfEncrypted(yy_aconf);
4358 <  }
4359 < }
4360 <    break;
3654 >  dlink_node *ptr = NULL;
3655  
3656 <  case 159:
3656 >  if (conf_parser_ctx.pass != 2)
3657 >    break;
3658  
3659 < /* Line 1455 of yacc.c  */
3660 < #line 1133 "ircd_parser.y"
4366 <    {
3659 >  if (!block_state.name.buf[0])
3660 >    break;
3661   #ifdef HAVE_LIBCRYPTO
3662 <  if (conf_parser_ctx.pass == 2)
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 >  DLINK_FOREACH(ptr, block_state.mask.list.head)
3671    {
3672 <    BIO *file;
3672 >    struct MaskItem *conf = NULL;
3673 >    struct split_nuh_item nuh;
3674  
3675 <    if (yy_aconf->rsa_public_key != NULL)
3676 <    {
3677 <      RSA_free(yy_aconf->rsa_public_key);
3678 <      yy_aconf->rsa_public_key = NULL;
3679 <    }
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 <    if (yy_aconf->rsa_public_key_file != NULL)
3685 <    {
3686 <      MyFree(yy_aconf->rsa_public_key_file);
3687 <      yy_aconf->rsa_public_key_file = NULL;
3688 <    }
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 <    DupString(yy_aconf->rsa_public_key_file, yylval.string);
4385 <    file = BIO_new_file(yylval.string, "r");
3700 >    conf_add_class_to_conf(conf, block_state.class.buf);
3701  
3702 <    if (file == NULL)
3702 > #ifdef HAVE_LIBCRYPTO
3703 >    if (block_state.file.buf[0])
3704      {
3705 <      yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
3706 <      break;
4391 <    }
3705 >      BIO *file = NULL;
3706 >      RSA *pkey = NULL;
3707  
3708 <    yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
3708 >      if ((file = BIO_new_file(block_state.file.buf, "r")) == NULL)
3709 >      {
3710 >        conf_error_report("Ignoring rsa_public_key_file -- file doesn't exist");
3711 >        break;
3712 >      }
3713  
3714 <    if (yy_aconf->rsa_public_key == NULL)
3715 <    {
4397 <      yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
4398 <      break;
4399 <    }
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 <    BIO_set_close(file, BIO_CLOSE);
3718 <    BIO_free(file);
3719 <  }
3717 >      conf->rsa_public_key = pkey;
3718 >      BIO_set_close(file, BIO_CLOSE);
3719 >      BIO_free(file);
3720 >    }
3721   #endif /* HAVE_LIBCRYPTO */
4405 }
4406    break;
4407
4408  case 160:
4409
4410 /* Line 1455 of yacc.c  */
4411 #line 1175 "ircd_parser.y"
4412    {
4413  if (conf_parser_ctx.pass == 2)
4414  {
4415    MyFree(class_name);
4416    DupString(class_name, yylval.string);
3722    }
3723   }
3724 + #line 3725 "conf_parser.c" /* yacc.c:1646  */
3725      break;
3726  
3727 <  case 161:
3728 <
4423 < /* Line 1455 of yacc.c  */
4424 < #line 1184 "ircd_parser.y"
3727 >  case 164:
3728 > #line 1137 "conf_parser.y" /* yacc.c:1646  */
3729      {
3730    if (conf_parser_ctx.pass == 2)
3731 <    yy_aconf->modes = 0;
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 165:
3737 <
4433 < /* Line 1455 of yacc.c  */
4434 < #line 1191 "ircd_parser.y"
3737 > #line 1143 "conf_parser.y" /* yacc.c:1646  */
3738      {
3739    if (conf_parser_ctx.pass == 2)
3740 <    yy_aconf->modes |= UMODE_BOTS;
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 166:
3746 <
4443 < /* Line 1455 of yacc.c  */
4444 < #line 1195 "ircd_parser.y"
3746 > #line 1149 "conf_parser.y" /* yacc.c:1646  */
3747      {
3748    if (conf_parser_ctx.pass == 2)
3749 <    yy_aconf->modes |= UMODE_CCONN;
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    case 167:
3755 <
4453 < /* Line 1455 of yacc.c  */
4454 < #line 1199 "ircd_parser.y"
3755 > #line 1155 "conf_parser.y" /* yacc.c:1646  */
3756      {
3757 <  if (conf_parser_ctx.pass == 2)
3758 <    yy_aconf->modes |= UMODE_CCONN_FULL;
3757 >  if (conf_parser_ctx.pass != 2)
3758 >    break;
3759 >
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    case 168:
3769 <
4463 < /* Line 1455 of yacc.c  */
4464 < #line 1203 "ircd_parser.y"
3769 > #line 1166 "conf_parser.y" /* yacc.c:1646  */
3770      {
3771    if (conf_parser_ctx.pass == 2)
3772 <    yy_aconf->modes |= UMODE_DEAF;
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 <
4473 < /* Line 1455 of yacc.c  */
4474 < #line 1207 "ircd_parser.y"
3778 > #line 1172 "conf_parser.y" /* yacc.c:1646  */
3779      {
3780    if (conf_parser_ctx.pass == 2)
3781 <    yy_aconf->modes |= UMODE_DEBUG;
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    case 170:
3787 <
4483 < /* Line 1455 of yacc.c  */
4484 < #line 1211 "ircd_parser.y"
4485 <    {
4486 <  if (conf_parser_ctx.pass == 2)
4487 <    yy_aconf->modes |= UMODE_FULL;
4488 < }
4489 <    break;
4490 <
4491 <  case 171:
4492 <
4493 < /* Line 1455 of yacc.c  */
4494 < #line 1215 "ircd_parser.y"
4495 <    {
4496 <  if (conf_parser_ctx.pass == 2)
4497 <    yy_aconf->modes |= UMODE_SKILL;
4498 < }
4499 <    break;
4500 <
4501 <  case 172:
4502 <
4503 < /* Line 1455 of yacc.c  */
4504 < #line 1219 "ircd_parser.y"
3787 > #line 1178 "conf_parser.y" /* yacc.c:1646  */
3788      {
3789 <  if (conf_parser_ctx.pass == 2)
4507 <    yy_aconf->modes |= UMODE_NCHANGE;
4508 < }
3789 >  if (conf_parser_ctx.pass != 2)
3790      break;
3791  
3792 <  case 173:
3793 <
3794 < /* Line 1455 of yacc.c  */
3795 < #line 1223 "ircd_parser.y"
4515 <    {
4516 <  if (conf_parser_ctx.pass == 2)
4517 <    yy_aconf->modes |= UMODE_REJ;
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 174:
3801 <
4523 < /* Line 1455 of yacc.c  */
4524 < #line 1227 "ircd_parser.y"
3800 >  case 171:
3801 > #line 1189 "conf_parser.y" /* yacc.c:1646  */
3802      {
3803    if (conf_parser_ctx.pass == 2)
3804 <    yy_aconf->modes |= UMODE_UNAUTH;
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 175:
3810 <
4533 < /* Line 1455 of yacc.c  */
4534 < #line 1231 "ircd_parser.y"
3809 >  case 172:
3810 > #line 1195 "conf_parser.y" /* yacc.c:1646  */
3811      {
3812    if (conf_parser_ctx.pass == 2)
3813 <    yy_aconf->modes |= UMODE_SPY;
3813 >    block_state.modes.value = 0;
3814   }
3815 + #line 3816 "conf_parser.c" /* yacc.c:1646  */
3816      break;
3817  
3818    case 176:
3819 <
4543 < /* Line 1455 of yacc.c  */
4544 < #line 1235 "ircd_parser.y"
3819 > #line 1202 "conf_parser.y" /* yacc.c:1646  */
3820      {
3821    if (conf_parser_ctx.pass == 2)
3822 <    yy_aconf->modes |= UMODE_EXTERNAL;
3822 >    block_state.modes.value |= UMODE_BOTS;
3823   }
3824 + #line 3825 "conf_parser.c" /* yacc.c:1646  */
3825      break;
3826  
3827    case 177:
3828 <
4553 < /* Line 1455 of yacc.c  */
4554 < #line 1239 "ircd_parser.y"
3828 > #line 1206 "conf_parser.y" /* yacc.c:1646  */
3829      {
3830    if (conf_parser_ctx.pass == 2)
3831 <    yy_aconf->modes |= UMODE_OPERWALL;
3831 >    block_state.modes.value |= UMODE_CCONN;
3832   }
3833 + #line 3834 "conf_parser.c" /* yacc.c:1646  */
3834      break;
3835  
3836    case 178:
3837 <
4563 < /* Line 1455 of yacc.c  */
4564 < #line 1243 "ircd_parser.y"
3837 > #line 1210 "conf_parser.y" /* yacc.c:1646  */
3838      {
3839    if (conf_parser_ctx.pass == 2)
3840 <    yy_aconf->modes |= UMODE_SERVNOTICE;
3840 >    block_state.modes.value |= UMODE_DEAF;
3841   }
3842 + #line 3843 "conf_parser.c" /* yacc.c:1646  */
3843      break;
3844  
3845    case 179:
3846 <
4573 < /* Line 1455 of yacc.c  */
4574 < #line 1247 "ircd_parser.y"
3846 > #line 1214 "conf_parser.y" /* yacc.c:1646  */
3847      {
3848    if (conf_parser_ctx.pass == 2)
3849 <    yy_aconf->modes |= UMODE_INVISIBLE;
3849 >    block_state.modes.value |= UMODE_DEBUG;
3850   }
3851 + #line 3852 "conf_parser.c" /* yacc.c:1646  */
3852      break;
3853  
3854    case 180:
3855 <
4583 < /* Line 1455 of yacc.c  */
4584 < #line 1251 "ircd_parser.y"
3855 > #line 1218 "conf_parser.y" /* yacc.c:1646  */
3856      {
3857    if (conf_parser_ctx.pass == 2)
3858 <    yy_aconf->modes |= UMODE_WALLOP;
3858 >    block_state.modes.value |= UMODE_FULL;
3859   }
3860 + #line 3861 "conf_parser.c" /* yacc.c:1646  */
3861      break;
3862  
3863    case 181:
3864 <
4593 < /* Line 1455 of yacc.c  */
4594 < #line 1255 "ircd_parser.y"
3864 > #line 1222 "conf_parser.y" /* yacc.c:1646  */
3865      {
3866    if (conf_parser_ctx.pass == 2)
3867 <    yy_aconf->modes |= UMODE_SOFTCALLERID;
3867 >    block_state.modes.value |= UMODE_HIDDEN;
3868   }
3869 + #line 3870 "conf_parser.c" /* yacc.c:1646  */
3870      break;
3871  
3872    case 182:
3873 <
4603 < /* Line 1455 of yacc.c  */
4604 < #line 1259 "ircd_parser.y"
3873 > #line 1226 "conf_parser.y" /* yacc.c:1646  */
3874      {
3875    if (conf_parser_ctx.pass == 2)
3876 <    yy_aconf->modes |= UMODE_CALLERID;
3876 >    block_state.modes.value |= UMODE_HIDECHANS;
3877   }
3878 + #line 3879 "conf_parser.c" /* yacc.c:1646  */
3879      break;
3880  
3881    case 183:
3882 <
4613 < /* Line 1455 of yacc.c  */
4614 < #line 1263 "ircd_parser.y"
3882 > #line 1230 "conf_parser.y" /* yacc.c:1646  */
3883      {
3884    if (conf_parser_ctx.pass == 2)
3885 <    yy_aconf->modes |= UMODE_LOCOPS;
3885 >    block_state.modes.value |= UMODE_HIDEIDLE;
3886   }
3887 + #line 3888 "conf_parser.c" /* yacc.c:1646  */
3888      break;
3889  
3890    case 184:
3891 <
4623 < /* Line 1455 of yacc.c  */
4624 < #line 1269 "ircd_parser.y"
3891 > #line 1234 "conf_parser.y" /* yacc.c:1646  */
3892      {
3893    if (conf_parser_ctx.pass == 2)
3894 <  {
4628 <    if (yylval.number)
4629 <      yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4630 <    else
4631 <      yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
4632 <  }
3894 >    block_state.modes.value |= UMODE_SKILL;
3895   }
3896 + #line 3897 "conf_parser.c" /* yacc.c:1646  */
3897      break;
3898  
3899    case 185:
3900 <
4638 < /* Line 1455 of yacc.c  */
4639 < #line 1280 "ircd_parser.y"
3900 > #line 1238 "conf_parser.y" /* yacc.c:1646  */
3901      {
3902    if (conf_parser_ctx.pass == 2)
3903 <  {
4643 <    if (yylval.number)
4644 <      yy_aconf->port |= OPER_FLAG_REMOTE;
4645 <    else
4646 <      yy_aconf->port &= ~OPER_FLAG_REMOTE;
4647 <  }
3903 >    block_state.modes.value |= UMODE_NCHANGE;
3904   }
3905 + #line 3906 "conf_parser.c" /* yacc.c:1646  */
3906      break;
3907  
3908    case 186:
3909 <
4653 < /* Line 1455 of yacc.c  */
4654 < #line 1291 "ircd_parser.y"
3909 > #line 1242 "conf_parser.y" /* yacc.c:1646  */
3910      {
3911    if (conf_parser_ctx.pass == 2)
3912 <  {
4658 <    if (yylval.number)
4659 <      yy_aconf->port |= OPER_FLAG_REMOTEBAN;
4660 <    else
4661 <      yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
4662 <  }
3912 >    block_state.modes.value |= UMODE_REJ;
3913   }
3914 + #line 3915 "conf_parser.c" /* yacc.c:1646  */
3915      break;
3916  
3917    case 187:
3918 <
4668 < /* Line 1455 of yacc.c  */
4669 < #line 1302 "ircd_parser.y"
3918 > #line 1246 "conf_parser.y" /* yacc.c:1646  */
3919      {
3920    if (conf_parser_ctx.pass == 2)
3921 <  {
4673 <    if (yylval.number)
4674 <      yy_aconf->port |= OPER_FLAG_K;
4675 <    else
4676 <      yy_aconf->port &= ~OPER_FLAG_K;
4677 <  }
3921 >    block_state.modes.value |= UMODE_UNAUTH;
3922   }
3923 + #line 3924 "conf_parser.c" /* yacc.c:1646  */
3924      break;
3925  
3926    case 188:
3927 <
4683 < /* Line 1455 of yacc.c  */
4684 < #line 1313 "ircd_parser.y"
3927 > #line 1250 "conf_parser.y" /* yacc.c:1646  */
3928      {
3929    if (conf_parser_ctx.pass == 2)
3930 <  {
4688 <    if (yylval.number)
4689 <      yy_aconf->port |= OPER_FLAG_X;
4690 <    else
4691 <      yy_aconf->port &= ~OPER_FLAG_X;
4692 <  }
3930 >    block_state.modes.value |= UMODE_SPY;
3931   }
3932 + #line 3933 "conf_parser.c" /* yacc.c:1646  */
3933      break;
3934  
3935    case 189:
3936 <
4698 < /* Line 1455 of yacc.c  */
4699 < #line 1324 "ircd_parser.y"
3936 > #line 1254 "conf_parser.y" /* yacc.c:1646  */
3937      {
3938    if (conf_parser_ctx.pass == 2)
3939 <  {
4703 <    if (yylval.number)
4704 <      yy_aconf->port |= OPER_FLAG_UNKLINE;
4705 <    else
4706 <      yy_aconf->port &= ~OPER_FLAG_UNKLINE;
4707 <  }
3939 >    block_state.modes.value |= UMODE_EXTERNAL;
3940   }
3941 + #line 3942 "conf_parser.c" /* yacc.c:1646  */
3942      break;
3943  
3944    case 190:
3945 <
4713 < /* Line 1455 of yacc.c  */
4714 < #line 1335 "ircd_parser.y"
3945 > #line 1258 "conf_parser.y" /* yacc.c:1646  */
3946      {
3947    if (conf_parser_ctx.pass == 2)
3948 <  {
4718 <    if (yylval.number)
4719 <      yy_aconf->port |= OPER_FLAG_GLINE;
4720 <    else
4721 <      yy_aconf->port &= ~OPER_FLAG_GLINE;
4722 <  }
3948 >    block_state.modes.value |= UMODE_SERVNOTICE;
3949   }
3950 + #line 3951 "conf_parser.c" /* yacc.c:1646  */
3951      break;
3952  
3953    case 191:
3954 <
4728 < /* Line 1455 of yacc.c  */
4729 < #line 1346 "ircd_parser.y"
3954 > #line 1262 "conf_parser.y" /* yacc.c:1646  */
3955      {
3956    if (conf_parser_ctx.pass == 2)
3957 <  {
4733 <    if (yylval.number)
4734 <      yy_aconf->port |= OPER_FLAG_N;
4735 <    else
4736 <      yy_aconf->port &= ~OPER_FLAG_N;
4737 <  }
3957 >    block_state.modes.value |= UMODE_INVISIBLE;
3958   }
3959 + #line 3960 "conf_parser.c" /* yacc.c:1646  */
3960      break;
3961  
3962    case 192:
3963 <
4743 < /* Line 1455 of yacc.c  */
4744 < #line 1357 "ircd_parser.y"
3963 > #line 1266 "conf_parser.y" /* yacc.c:1646  */
3964      {
3965    if (conf_parser_ctx.pass == 2)
3966 <  {
4748 <    if (yylval.number)
4749 <      yy_aconf->port |= OPER_FLAG_DIE;
4750 <    else
4751 <      yy_aconf->port &= ~OPER_FLAG_DIE;
4752 <  }
3966 >    block_state.modes.value |= UMODE_WALLOP;
3967   }
3968 + #line 3969 "conf_parser.c" /* yacc.c:1646  */
3969      break;
3970  
3971    case 193:
3972 <
4758 < /* Line 1455 of yacc.c  */
4759 < #line 1368 "ircd_parser.y"
3972 > #line 1270 "conf_parser.y" /* yacc.c:1646  */
3973      {
3974    if (conf_parser_ctx.pass == 2)
3975 <  {
4763 <    if (yylval.number)
4764 <      yy_aconf->port |= OPER_FLAG_REHASH;
4765 <    else
4766 <      yy_aconf->port &= ~OPER_FLAG_REHASH;
4767 <  }
3975 >    block_state.modes.value |= UMODE_SOFTCALLERID;
3976   }
3977 + #line 3978 "conf_parser.c" /* yacc.c:1646  */
3978      break;
3979  
3980    case 194:
3981 <
4773 < /* Line 1455 of yacc.c  */
4774 < #line 1379 "ircd_parser.y"
3981 > #line 1274 "conf_parser.y" /* yacc.c:1646  */
3982      {
3983    if (conf_parser_ctx.pass == 2)
3984 <  {
4778 <    if (yylval.number)
4779 <      yy_aconf->port |= OPER_FLAG_ADMIN;
4780 <    else
4781 <      yy_aconf->port &= ~OPER_FLAG_ADMIN;
4782 <  }
3984 >    block_state.modes.value |= UMODE_CALLERID;
3985   }
3986 + #line 3987 "conf_parser.c" /* yacc.c:1646  */
3987      break;
3988  
3989    case 195:
3990 <
4788 < /* Line 1455 of yacc.c  */
4789 < #line 1390 "ircd_parser.y"
3990 > #line 1278 "conf_parser.y" /* yacc.c:1646  */
3991      {
3992    if (conf_parser_ctx.pass == 2)
3993 <  {
4793 <    if (yylval.number)
4794 <      yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
4795 <    else
4796 <      yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
4797 <  }
3993 >    block_state.modes.value |= UMODE_LOCOPS;
3994   }
3995 + #line 3996 "conf_parser.c" /* yacc.c:1646  */
3996      break;
3997  
3998    case 196:
3999 <
4803 < /* Line 1455 of yacc.c  */
4804 < #line 1401 "ircd_parser.y"
3999 > #line 1282 "conf_parser.y" /* yacc.c:1646  */
4000      {
4001    if (conf_parser_ctx.pass == 2)
4002 <  {
4808 <    if (yylval.number)
4809 <      yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
4810 <    else
4811 <      yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
4812 <  }
4002 >    block_state.modes.value |= UMODE_REGONLY;
4003   }
4004 + #line 4005 "conf_parser.c" /* yacc.c:1646  */
4005      break;
4006  
4007    case 197:
4008 <
4818 < /* Line 1455 of yacc.c  */
4819 < #line 1412 "ircd_parser.y"
4008 > #line 1286 "conf_parser.y" /* yacc.c:1646  */
4009      {
4010    if (conf_parser_ctx.pass == 2)
4011 <  {
4823 <    if (yylval.number)
4824 <      yy_aconf->port |= OPER_FLAG_OPERWALL;
4825 <    else
4826 <      yy_aconf->port &= ~OPER_FLAG_OPERWALL;
4827 <  }
4011 >    block_state.modes.value |= UMODE_FARCONNECT;
4012   }
4013 + #line 4014 "conf_parser.c" /* yacc.c:1646  */
4014      break;
4015  
4016    case 198:
4017 <
4833 < /* Line 1455 of yacc.c  */
4834 < #line 1423 "ircd_parser.y"
4017 > #line 1292 "conf_parser.y" /* yacc.c:1646  */
4018      {
4019 +  if (conf_parser_ctx.pass == 2)
4020 +    block_state.port.value = 0;
4021   }
4022 + #line 4023 "conf_parser.c" /* yacc.c:1646  */
4023      break;
4024  
4025    case 202:
4026 + #line 1299 "conf_parser.y" /* yacc.c:1646  */
4027 +    {
4028 +  if (conf_parser_ctx.pass == 2)
4029 +    block_state.port.value |= OPER_FLAG_KILL_REMOTE;
4030 + }
4031 + #line 4032 "conf_parser.c" /* yacc.c:1646  */
4032 +    break;
4033  
4034 < /* Line 1455 of yacc.c  */
4035 < #line 1427 "ircd_parser.y"
4036 <    { not_atom = 1; }
4034 >  case 203:
4035 > #line 1303 "conf_parser.y" /* yacc.c:1646  */
4036 >    {
4037 >  if (conf_parser_ctx.pass == 2)
4038 >    block_state.port.value |= OPER_FLAG_KILL;
4039 > }
4040 > #line 4041 "conf_parser.c" /* yacc.c:1646  */
4041      break;
4042  
4043    case 204:
4044 + #line 1307 "conf_parser.y" /* yacc.c:1646  */
4045 +    {
4046 +  if (conf_parser_ctx.pass == 2)
4047 +    block_state.port.value |= OPER_FLAG_CONNECT_REMOTE;
4048 + }
4049 + #line 4050 "conf_parser.c" /* yacc.c:1646  */
4050 +    break;
4051  
4052 < /* Line 1455 of yacc.c  */
4053 < #line 1428 "ircd_parser.y"
4054 <    { not_atom = 0; }
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 206:
4062 <
4855 < /* Line 1455 of yacc.c  */
4856 < #line 1431 "ircd_parser.y"
4062 > #line 1315 "conf_parser.y" /* yacc.c:1646  */
4063      {
4064    if (conf_parser_ctx.pass == 2)
4065 <  {
4860 <    if (not_atom)yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
4861 <    else yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4862 <  }
4065 >    block_state.port.value |= OPER_FLAG_SQUIT_REMOTE;
4066   }
4067 + #line 4068 "conf_parser.c" /* yacc.c:1646  */
4068      break;
4069  
4070    case 207:
4071 <
4868 < /* Line 1455 of yacc.c  */
4869 < #line 1438 "ircd_parser.y"
4071 > #line 1319 "conf_parser.y" /* yacc.c:1646  */
4072      {
4073    if (conf_parser_ctx.pass == 2)
4074 <  {
4873 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTE;
4874 <    else yy_aconf->port |= OPER_FLAG_REMOTE;
4875 <  }
4074 >    block_state.port.value |= OPER_FLAG_SQUIT;
4075   }
4076 + #line 4077 "conf_parser.c" /* yacc.c:1646  */
4077      break;
4078  
4079    case 208:
4080 <
4881 < /* Line 1455 of yacc.c  */
4882 < #line 1445 "ircd_parser.y"
4080 > #line 1323 "conf_parser.y" /* yacc.c:1646  */
4081      {
4082    if (conf_parser_ctx.pass == 2)
4083 <  {
4886 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_K;
4887 <    else yy_aconf->port |= OPER_FLAG_K;
4888 <  }
4083 >    block_state.port.value |= OPER_FLAG_KLINE;
4084   }
4085 + #line 4086 "conf_parser.c" /* yacc.c:1646  */
4086      break;
4087  
4088    case 209:
4089 <
4894 < /* Line 1455 of yacc.c  */
4895 < #line 1452 "ircd_parser.y"
4089 > #line 1327 "conf_parser.y" /* yacc.c:1646  */
4090      {
4091    if (conf_parser_ctx.pass == 2)
4092 <  {
4899 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_UNKLINE;
4900 <    else yy_aconf->port |= OPER_FLAG_UNKLINE;
4901 <  }
4092 >    block_state.port.value |= OPER_FLAG_UNKLINE;
4093   }
4094 + #line 4095 "conf_parser.c" /* yacc.c:1646  */
4095      break;
4096  
4097    case 210:
4098 <
4907 < /* Line 1455 of yacc.c  */
4908 < #line 1459 "ircd_parser.y"
4098 > #line 1331 "conf_parser.y" /* yacc.c:1646  */
4099      {
4100    if (conf_parser_ctx.pass == 2)
4101 <  {
4912 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_X;
4913 <    else yy_aconf->port |= OPER_FLAG_X;
4914 <  }
4101 >    block_state.port.value |= OPER_FLAG_DLINE;
4102   }
4103 + #line 4104 "conf_parser.c" /* yacc.c:1646  */
4104      break;
4105  
4106    case 211:
4107 <
4920 < /* Line 1455 of yacc.c  */
4921 < #line 1466 "ircd_parser.y"
4107 > #line 1335 "conf_parser.y" /* yacc.c:1646  */
4108      {
4109    if (conf_parser_ctx.pass == 2)
4110 <  {
4925 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_GLINE;
4926 <    else yy_aconf->port |= OPER_FLAG_GLINE;
4927 <  }
4110 >    block_state.port.value |= OPER_FLAG_UNDLINE;
4111   }
4112 + #line 4113 "conf_parser.c" /* yacc.c:1646  */
4113      break;
4114  
4115    case 212:
4116 <
4933 < /* Line 1455 of yacc.c  */
4934 < #line 1473 "ircd_parser.y"
4116 > #line 1339 "conf_parser.y" /* yacc.c:1646  */
4117      {
4118    if (conf_parser_ctx.pass == 2)
4119 <  {
4938 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_DIE;
4939 <    else yy_aconf->port |= OPER_FLAG_DIE;
4940 <  }
4119 >    block_state.port.value |= OPER_FLAG_XLINE;
4120   }
4121 + #line 4122 "conf_parser.c" /* yacc.c:1646  */
4122      break;
4123  
4124    case 213:
4125 <
4946 < /* Line 1455 of yacc.c  */
4947 < #line 1480 "ircd_parser.y"
4125 > #line 1343 "conf_parser.y" /* yacc.c:1646  */
4126      {
4127    if (conf_parser_ctx.pass == 2)
4128 <  {
4951 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_REHASH;
4952 <    else yy_aconf->port |= OPER_FLAG_REHASH;
4953 <  }
4128 >    block_state.port.value |= OPER_FLAG_UNXLINE;
4129   }
4130 + #line 4131 "conf_parser.c" /* yacc.c:1646  */
4131      break;
4132  
4133    case 214:
4134 <
4959 < /* Line 1455 of yacc.c  */
4960 < #line 1487 "ircd_parser.y"
4134 > #line 1347 "conf_parser.y" /* yacc.c:1646  */
4135      {
4136    if (conf_parser_ctx.pass == 2)
4137 <  {
4964 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_ADMIN;
4965 <    else yy_aconf->port |= OPER_FLAG_ADMIN;
4966 <  }
4137 >    block_state.port.value |= OPER_FLAG_GLINE;
4138   }
4139 + #line 4140 "conf_parser.c" /* yacc.c:1646  */
4140      break;
4141  
4142    case 215:
4143 <
4972 < /* Line 1455 of yacc.c  */
4973 < #line 1494 "ircd_parser.y"
4143 > #line 1351 "conf_parser.y" /* yacc.c:1646  */
4144      {
4145    if (conf_parser_ctx.pass == 2)
4146 <  {
4977 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
4978 <    else yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
4979 <  }
4146 >    block_state.port.value |= OPER_FLAG_DIE;
4147   }
4148 + #line 4149 "conf_parser.c" /* yacc.c:1646  */
4149      break;
4150  
4151    case 216:
4152 <
4985 < /* Line 1455 of yacc.c  */
4986 < #line 1501 "ircd_parser.y"
4152 > #line 1355 "conf_parser.y" /* yacc.c:1646  */
4153      {
4154    if (conf_parser_ctx.pass == 2)
4155 <  {
4990 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_N;
4991 <    else yy_aconf->port |= OPER_FLAG_N;
4992 <  }
4155 >    block_state.port.value |= OPER_FLAG_RESTART;
4156   }
4157 + #line 4158 "conf_parser.c" /* yacc.c:1646  */
4158      break;
4159  
4160    case 217:
4161 <
4998 < /* Line 1455 of yacc.c  */
4999 < #line 1508 "ircd_parser.y"
4161 > #line 1359 "conf_parser.y" /* yacc.c:1646  */
4162      {
4163    if (conf_parser_ctx.pass == 2)
4164 <  {
5003 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPERWALL;
5004 <    else yy_aconf->port |= OPER_FLAG_OPERWALL;
5005 <  }
4164 >    block_state.port.value |= OPER_FLAG_REHASH;
4165   }
4166 + #line 4167 "conf_parser.c" /* yacc.c:1646  */
4167      break;
4168  
4169    case 218:
4170 <
5011 < /* Line 1455 of yacc.c  */
5012 < #line 1515 "ircd_parser.y"
4170 > #line 1363 "conf_parser.y" /* yacc.c:1646  */
4171      {
4172    if (conf_parser_ctx.pass == 2)
4173 <  {
5016 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPER_SPY;
5017 <    else yy_aconf->port |= OPER_FLAG_OPER_SPY;
5018 <  }
4173 >    block_state.port.value |= OPER_FLAG_ADMIN;
4174   }
4175 + #line 4176 "conf_parser.c" /* yacc.c:1646  */
4176      break;
4177  
4178    case 219:
4179 <
5024 < /* Line 1455 of yacc.c  */
5025 < #line 1522 "ircd_parser.y"
4179 > #line 1367 "conf_parser.y" /* yacc.c:1646  */
4180      {
4181    if (conf_parser_ctx.pass == 2)
4182 <  {
5029 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
5030 <    else yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
5031 <  }
4182 >    block_state.port.value |= OPER_FLAG_GLOBOPS;
4183   }
4184 + #line 4185 "conf_parser.c" /* yacc.c:1646  */
4185      break;
4186  
4187    case 220:
4188 <
5037 < /* Line 1455 of yacc.c  */
5038 < #line 1529 "ircd_parser.y"
4188 > #line 1371 "conf_parser.y" /* yacc.c:1646  */
4189      {
4190    if (conf_parser_ctx.pass == 2)
4191 <  {
5042 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
5043 <    else yy_aconf->port |= OPER_FLAG_REMOTEBAN;
5044 <  }
4191 >    block_state.port.value |= OPER_FLAG_WALLOPS;
4192   }
4193 + #line 4194 "conf_parser.c" /* yacc.c:1646  */
4194      break;
4195  
4196    case 221:
4197 <
5050 < /* Line 1455 of yacc.c  */
5051 < #line 1536 "ircd_parser.y"
4197 > #line 1375 "conf_parser.y" /* yacc.c:1646  */
4198      {
4199    if (conf_parser_ctx.pass == 2)
4200 <  {
5055 <    if (not_atom) ClearConfEncrypted(yy_aconf);
5056 <    else SetConfEncrypted(yy_aconf);
5057 <  }
4200 >    block_state.port.value |= OPER_FLAG_LOCOPS;
4201   }
4202 + #line 4203 "conf_parser.c" /* yacc.c:1646  */
4203      break;
4204  
4205    case 222:
4206 <
5063 < /* Line 1455 of yacc.c  */
5064 < #line 1549 "ircd_parser.y"
4206 > #line 1379 "conf_parser.y" /* yacc.c:1646  */
4207      {
4208 <  if (conf_parser_ctx.pass == 1)
4209 <  {
5068 <    yy_conf = make_conf_item(CLASS_TYPE);
5069 <    yy_class = map_to_conf(yy_conf);
5070 <  }
4208 >  if (conf_parser_ctx.pass == 2)
4209 >    block_state.port.value |= OPER_FLAG_REMOTEBAN;
4210   }
4211 + #line 4212 "conf_parser.c" /* yacc.c:1646  */
4212      break;
4213  
4214    case 223:
4215 + #line 1383 "conf_parser.y" /* yacc.c:1646  */
4216 +    {
4217 +  if (conf_parser_ctx.pass == 2)
4218 +    block_state.port.value |= OPER_FLAG_SET;
4219 + }
4220 + #line 4221 "conf_parser.c" /* yacc.c:1646  */
4221 +    break;
4222  
4223 < /* Line 1455 of yacc.c  */
4224 < #line 1556 "ircd_parser.y"
4223 >  case 224:
4224 > #line 1387 "conf_parser.y" /* yacc.c:1646  */
4225      {
4226 <  if (conf_parser_ctx.pass == 1)
4227 <  {
4228 <    struct ConfItem *cconf = NULL;
4229 <    struct ClassItem *class = NULL;
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 <    if (yy_class_name == NULL)
4233 <      delete_conf_item(yy_conf);
5086 <    else
4232 >  case 225:
4233 > #line 1397 "conf_parser.y" /* yacc.c:1646  */
4234      {
4235 <      cconf = find_exact_name_conf(CLASS_TYPE, yy_class_name, NULL, NULL);
4235 >  if (conf_parser_ctx.pass != 1)
4236 >    break;
4237  
4238 <      if (cconf != NULL)                /* The class existed already */
5091 <      {
5092 <        int user_count = 0;
4238 >  reset_block_state();
4239  
4240 <        rebuild_cidr_class(cconf, yy_class);
4240 >  block_state.ping_freq.value = DEFAULT_PINGFREQUENCY;
4241 >  block_state.con_freq.value  = DEFAULT_CONNECTFREQUENCY;
4242 >  block_state.max_total.value = MAXIMUM_LINKS_DEFAULT;
4243 >  block_state.max_sendq.value = DEFAULT_SENDQ;
4244 >  block_state.max_recvq.value = DEFAULT_RECVQ;
4245 > }
4246 > #line 4247 "conf_parser.c" /* yacc.c:1646  */
4247 >    break;
4248 >
4249 >  case 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));
5100 <        class->curr_user_count = user_count;
5101 <        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 242:
4303 <
5123 < /* Line 1455 of yacc.c  */
5124 < #line 1616 "ircd_parser.y"
4302 >  case 247:
4303 > #line 1478 "conf_parser.y" /* yacc.c:1646  */
4304      {
4305    if (conf_parser_ctx.pass == 1)
4306 <  {
5128 <    MyFree(yy_class_name);
5129 <    DupString(yy_class_name, yylval.string);
5130 <  }
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 243:
4312 <
5136 < /* Line 1455 of yacc.c  */
5137 < #line 1625 "ircd_parser.y"
4311 >  case 248:
4312 > #line 1484 "conf_parser.y" /* yacc.c:1646  */
4313      {
4314    if (conf_parser_ctx.pass == 1)
4315 <  {
5141 <    MyFree(yy_class_name);
5142 <    DupString(yy_class_name, yylval.string);
5143 <  }
4315 >    block_state.ping_freq.value = (yyvsp[-1].number);
4316   }
4317 + #line 4318 "conf_parser.c" /* yacc.c:1646  */
4318      break;
4319  
4320 <  case 244:
4321 <
5149 < /* Line 1455 of yacc.c  */
5150 < #line 1634 "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 245:
4330 <
5159 < /* Line 1455 of yacc.c  */
5160 < #line 1640 "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 246:
4339 <
5169 < /* Line 1455 of yacc.c  */
5170 < #line 1646 "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 247:
4348 <
5179 < /* Line 1455 of yacc.c  */
5180 < #line 1652 "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 248:
4357 <
5189 < /* Line 1455 of yacc.c  */
5190 < #line 1658 "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 249:
4366 <
5199 < /* Line 1455 of yacc.c  */
5200 < #line 1664 "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 250:
4375 <
5209 < /* Line 1455 of yacc.c  */
5210 < #line 1670 "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 251:
4384 <
5219 < /* Line 1455 of yacc.c  */
5220 < #line 1676 "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 252:
4393 <
5229 < /* Line 1455 of yacc.c  */
5230 < #line 1682 "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 253:
4403 <
5239 < /* Line 1455 of yacc.c  */
5240 < #line 1688 "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 254:
4412 <
5249 < /* Line 1455 of yacc.c  */
5250 < #line 1694 "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 255:
4421 <
5259 < /* Line 1455 of yacc.c  */
5260 < #line 1700 "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 256:
4430 <
5269 < /* Line 1455 of yacc.c  */
5270 < #line 1709 "ircd_parser.y"
4429 >  case 261:
4430 > #line 1563 "conf_parser.y" /* yacc.c:1646  */
4431      {
4432 <  if (conf_parser_ctx.pass == 2)
5273 <  {
5274 <    listener_address = NULL;
5275 <    listener_flags = 0;
5276 <  }
5277 < }
4432 >  if (conf_parser_ctx.pass != 1)
4433      break;
4434  
4435 <  case 257:
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 1455 of yacc.c  */
4442 < #line 1716 "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 258:
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 1455 of yacc.c  */
4463 < #line 1725 "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 262:
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 1455 of yacc.c  */
4481 < #line 1731 "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 263:
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 1455 of yacc.c  */
4498 < #line 1735 "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 264:
4507 <
5324 < /* Line 1455 of yacc.c  */
5325 < #line 1739 "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 272:
4516 <
4517 < /* Line 1455 of yacc.c  */
4518 < #line 1749 "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 276:
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 1455 of yacc.c  */
4531 < #line 1754 "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 277:
4550 <
5361 < /* Line 1455 of yacc.c  */
5362 < #line 1768 "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;
5367 <
5368 <    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 278:
4571 <
5385 < /* Line 1455 of yacc.c  */
5386 < #line 1788 "ircd_parser.y"
4570 >  case 291:
4571 > #line 1667 "conf_parser.y" /* yacc.c:1646  */
4572      {
4573    if (conf_parser_ctx.pass == 2)
4574 <  {
5390 <    MyFree(listener_address);
5391 <    DupString(listener_address, yylval.string);
5392 <  }
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 279:
4580 <
5398 < /* Line 1455 of yacc.c  */
5399 < #line 1797 "ircd_parser.y"
4579 >  case 292:
4580 > #line 1673 "conf_parser.y" /* yacc.c:1646  */
4581      {
4582    if (conf_parser_ctx.pass == 2)
4583 <  {
5403 <    MyFree(listener_address);
5404 <    DupString(listener_address, yylval.string);
5405 <  }
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 280:
4589 <
5411 < /* Line 1455 of yacc.c  */
5412 < #line 1809 "ircd_parser.y"
4588 >  case 293:
4589 > #line 1682 "conf_parser.y" /* yacc.c:1646  */
4590      {
4591    if (conf_parser_ctx.pass == 2)
4592 <  {
5416 <    yy_conf = make_conf_item(CLIENT_TYPE);
5417 <    yy_aconf = map_to_conf(yy_conf);
5418 <  }
5419 <  else
5420 <  {
5421 <    MyFree(class_name);
5422 <    class_name = NULL;
5423 <  }
4592 >    reset_block_state();
4593   }
4594 + #line 4595 "conf_parser.c" /* yacc.c:1646  */
4595      break;
4596  
4597 <  case 281:
4598 <
5429 < /* Line 1455 of yacc.c  */
5430 < #line 1821 "ircd_parser.y"
4597 >  case 294:
4598 > #line 1686 "conf_parser.y" /* yacc.c:1646  */
4599      {
4600 <  if (conf_parser_ctx.pass == 2)
5433 <  {
5434 <    struct CollectItem *yy_tmp = NULL;
5435 <    dlink_node *ptr = NULL, *next_ptr = NULL;
5436 <
5437 <    if (yy_aconf->user && yy_aconf->host)
5438 <    {
5439 <      conf_add_class_to_conf(yy_conf, class_name);
5440 <      add_conf_by_address(CONF_CLIENT, yy_aconf);
5441 <    }
5442 <    else
5443 <      delete_conf_item(yy_conf);
5444 <
5445 <    /* copy over settings from first struct */
5446 <    DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
5447 <    {
5448 <      struct AccessItem *new_aconf;
5449 <      struct ConfItem *new_conf;
5450 <
5451 <      new_conf = make_conf_item(CLIENT_TYPE);
5452 <      new_aconf = map_to_conf(new_conf);
5453 <
5454 <      yy_tmp = ptr->data;
5455 <
5456 <      assert(yy_tmp->user && yy_tmp->host);
5457 <
5458 <      if (yy_aconf->passwd != NULL)
5459 <        DupString(new_aconf->passwd, yy_aconf->passwd);
5460 <      if (yy_conf->name != NULL)
5461 <        DupString(new_conf->name, yy_conf->name);
5462 <      if (yy_aconf->passwd != NULL)
5463 <        DupString(new_aconf->passwd, yy_aconf->passwd);
5464 <
5465 <      new_aconf->flags = yy_aconf->flags;
5466 <      new_aconf->port  = yy_aconf->port;
5467 <
5468 <      DupString(new_aconf->user, yy_tmp->user);
5469 <      collapse(new_aconf->user);
5470 <
5471 <      DupString(new_aconf->host, yy_tmp->host);
5472 <      collapse(new_aconf->host);
4600 >  dlink_node *ptr = NULL;
4601  
4602 <      conf_add_class_to_conf(new_conf, class_name);
5475 <      add_conf_by_address(CONF_CLIENT, new_aconf);
5476 <      dlinkDelete(&yy_tmp->node, &col_conf_list);
5477 <      free_collect_item(yy_tmp);
5478 <    }
5479 <
5480 <    MyFree(class_name);
5481 <    class_name = NULL;
5482 <    yy_conf = NULL;
5483 <    yy_aconf = NULL;
5484 <  }
5485 < }
4602 >  if (conf_parser_ctx.pass != 2)
4603      break;
4604  
4605 <  case 301:
5489 <
5490 < /* Line 1455 of yacc.c  */
5491 < #line 1886 "ircd_parser.y"
5492 <    {
5493 <  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;
5502 <
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);
5506 <
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);
5512 <      DupString(yy_aconf->host, hostbuf);
5513 <    }
5514 <    else
5515 <    {
5516 <      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 302:
4639 <
5529 < /* Line 1455 of yacc.c  */
5530 < #line 1923 "ircd_parser.y"
4638 >  case 306:
4639 > #line 1735 "conf_parser.y" /* yacc.c:1646  */
4640      {
4641    if (conf_parser_ctx.pass == 2)
4642 <  {
5534 <    /* be paranoid */
5535 <    if (yy_aconf->passwd != NULL)
5536 <      memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5537 <
5538 <    MyFree(yy_aconf->passwd);
5539 <    DupString(yy_aconf->passwd, yylval.string);
5540 <  }
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 303:
4648 <
5546 < /* Line 1455 of yacc.c  */
5547 < #line 1936 "ircd_parser.y"
4647 >  case 307:
4648 > #line 1741 "conf_parser.y" /* yacc.c:1646  */
4649      {
4650    if (conf_parser_ctx.pass == 2)
4651 <  {
5551 <    if (yylval.number)
5552 <      yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5553 <    else
5554 <      yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
5555 <  }
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 304:
4657 <
5561 < /* Line 1455 of yacc.c  */
5562 < #line 1947 "ircd_parser.y"
4656 >  case 308:
4657 > #line 1747 "conf_parser.y" /* yacc.c:1646  */
4658      {
4659    if (conf_parser_ctx.pass == 2)
4660 <  {
5566 <    MyFree(class_name);
5567 <    DupString(class_name, yylval.string);
5568 <  }
4660 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4661   }
4662 + #line 4663 "conf_parser.c" /* yacc.c:1646  */
4663      break;
4664  
4665 <  case 305:
4666 <
5574 < /* Line 1455 of yacc.c  */
5575 < #line 1956 "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 306:
4680 <
5589 < /* Line 1455 of yacc.c  */
5590 < #line 1967 "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 <    break;
5594 <
5595 <  case 310:
5596 <
5597 < /* Line 1455 of yacc.c  */
5598 < #line 1971 "ircd_parser.y"
5599 <    { not_atom = 1; }
5600 <    break;
5601 <
5602 <  case 312:
5603 <
5604 < /* Line 1455 of yacc.c  */
5605 < #line 1972 "ircd_parser.y"
5606 <    { not_atom = 0; }
4685 > #line 4686 "conf_parser.c" /* yacc.c:1646  */
4686      break;
4687  
4688    case 314:
4689 <
5611 < /* Line 1455 of yacc.c  */
5612 < #line 1975 "ircd_parser.y"
4689 > #line 1771 "conf_parser.y" /* yacc.c:1646  */
4690      {
4691    if (conf_parser_ctx.pass == 2)
4692 <  {
5616 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
5617 <    else yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5618 <  }
5619 <
4692 >    block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4693   }
4694 + #line 4695 "conf_parser.c" /* yacc.c:1646  */
4695      break;
4696  
4697    case 315:
4698 <
5625 < /* Line 1455 of yacc.c  */
5626 < #line 1983 "ircd_parser.y"
4698 > #line 1775 "conf_parser.y" /* yacc.c:1646  */
4699      {
4700    if (conf_parser_ctx.pass == 2)
4701 <  {
5630 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
5631 <    else yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5632 <  }
4701 >    block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4702   }
4703 + #line 4704 "conf_parser.c" /* yacc.c:1646  */
4704      break;
4705  
4706    case 316:
4707 <
5638 < /* Line 1455 of yacc.c  */
5639 < #line 1990 "ircd_parser.y"
4707 > #line 1779 "conf_parser.y" /* yacc.c:1646  */
4708      {
4709    if (conf_parser_ctx.pass == 2)
4710 <  {
5643 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
5644 <    else yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5645 <  }
4710 >    block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4711   }
4712 + #line 4713 "conf_parser.c" /* yacc.c:1646  */
4713      break;
4714  
4715    case 317:
4716 <
5651 < /* Line 1455 of yacc.c  */
5652 < #line 1997 "ircd_parser.y"
4716 > #line 1783 "conf_parser.y" /* yacc.c:1646  */
4717      {
4718    if (conf_parser_ctx.pass == 2)
4719 <  {
5656 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
5657 <    else yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5658 <  }
4719 >    block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4720   }
4721 + #line 4722 "conf_parser.c" /* yacc.c:1646  */
4722      break;
4723  
4724    case 318:
4725 <
5664 < /* Line 1455 of yacc.c  */
5665 < #line 2004 "ircd_parser.y"
4725 > #line 1787 "conf_parser.y" /* yacc.c:1646  */
4726      {
4727    if (conf_parser_ctx.pass == 2)
4728 <  {
5669 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
5670 <    else yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5671 <  }
4728 >    block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4729   }
4730 + #line 4731 "conf_parser.c" /* yacc.c:1646  */
4731      break;
4732  
4733    case 319:
4734 <
5677 < /* Line 1455 of yacc.c  */
5678 < #line 2011 "ircd_parser.y"
4734 > #line 1791 "conf_parser.y" /* yacc.c:1646  */
4735      {
4736    if (conf_parser_ctx.pass == 2)
4737 <  {
5682 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_IDLE_LINED;
5683 <    else yy_aconf->flags |= CONF_FLAGS_IDLE_LINED;
5684 <  }
4737 >    block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4738   }
4739 + #line 4740 "conf_parser.c" /* yacc.c:1646  */
4740      break;
4741  
4742    case 320:
4743 <
5690 < /* Line 1455 of yacc.c  */
5691 < #line 2018 "ircd_parser.y"
4743 > #line 1795 "conf_parser.y" /* yacc.c:1646  */
4744      {
4745    if (conf_parser_ctx.pass == 2)
4746 <  {
5695 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
5696 <    else yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5697 <  }
4746 >    block_state.flags.value |= CONF_FLAGS_EXEMPTGLINE;
4747   }
4748 + #line 4749 "conf_parser.c" /* yacc.c:1646  */
4749      break;
4750  
4751    case 321:
4752 <
5703 < /* Line 1455 of yacc.c  */
5704 < #line 2025 "ircd_parser.y"
4752 > #line 1799 "conf_parser.y" /* yacc.c:1646  */
4753      {
4754    if (conf_parser_ctx.pass == 2)
4755 <  {
5708 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
5709 <    else yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5710 <  }
4755 >    block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4756   }
4757 + #line 4758 "conf_parser.c" /* yacc.c:1646  */
4758      break;
4759  
4760    case 322:
4761 <
5716 < /* Line 1455 of yacc.c  */
5717 < #line 2032 "ircd_parser.y"
4761 > #line 1803 "conf_parser.y" /* yacc.c:1646  */
4762      {
4763    if (conf_parser_ctx.pass == 2)
4764 <  {
5721 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTRESV;
5722 <    else yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
5723 <  }
4764 >    block_state.flags.value |= CONF_FLAGS_WEBIRC;
4765   }
4766 + #line 4767 "conf_parser.c" /* yacc.c:1646  */
4767      break;
4768  
4769    case 323:
4770 <
5729 < /* Line 1455 of yacc.c  */
5730 < #line 2039 "ircd_parser.y"
4770 > #line 1807 "conf_parser.y" /* yacc.c:1646  */
4771      {
4772    if (conf_parser_ctx.pass == 2)
4773 <  {
5734 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
5735 <    else yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5736 <  }
4773 >    block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4774   }
4775 + #line 4776 "conf_parser.c" /* yacc.c:1646  */
4776      break;
4777  
4778    case 324:
4779 <
5742 < /* Line 1455 of yacc.c  */
5743 < #line 2048 "ircd_parser.y"
4779 > #line 1813 "conf_parser.y" /* yacc.c:1646  */
4780      {
4781 <  if (conf_parser_ctx.pass == 2)
5746 <  {
5747 <    if (yylval.number)
5748 <      yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5749 <    else
5750 <      yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
5751 <  }
5752 < }
4781 >  if (conf_parser_ctx.pass != 2)
4782      break;
4783  
4784 <  case 325:
5756 <
5757 < /* Line 1455 of yacc.c  */
5758 < #line 2059 "ircd_parser.y"
5759 <    {
5760 <  if (conf_parser_ctx.pass == 2)
4784 >  if (valid_hostname(yylval.string))
4785    {
4786 <    if (yylval.number)
4787 <      yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5764 <    else
5765 <      yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
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 326:
4796 <
5772 < /* Line 1455 of yacc.c  */
5773 < #line 2070 "ircd_parser.y"
4795 >  case 325:
4796 > #line 1827 "conf_parser.y" /* yacc.c:1646  */
4797      {
4798 <  if (conf_parser_ctx.pass == 2)
5776 <  {
5777 <    if (yylval.number)
5778 <      yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5779 <    else
5780 <      yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
5781 <  }
5782 < }
4798 >  if (conf_parser_ctx.pass != 2)
4799      break;
4800  
4801 <  case 327:
4802 <
5787 < /* Line 1455 of yacc.c  */
5788 < #line 2081 "ircd_parser.y"
5789 <    {
5790 <  if (conf_parser_ctx.pass == 2)
5791 <  {
5792 <    if (yylval.number)
5793 <      yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5794 <    else
5795 <      yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
5796 <  }
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 328:
4808 <
5802 < /* Line 1455 of yacc.c  */
5803 < #line 2092 "ircd_parser.y"
4807 >  case 326:
4808 > #line 1836 "conf_parser.y" /* yacc.c:1646  */
4809      {
4810 <  if (conf_parser_ctx.pass == 2)
5806 <  {
5807 <    if (yylval.number)
5808 <      yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5809 <    else
5810 <      yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
5811 <  }
5812 < }
4810 >  if (conf_parser_ctx.pass != 2)
4811      break;
4812  
4813 <  case 329:
4814 <
5817 < /* Line 1455 of yacc.c  */
5818 < #line 2103 "ircd_parser.y"
5819 <    {
5820 <  if (conf_parser_ctx.pass == 2)
5821 <  {
5822 <    if (yylval.number)
5823 <      yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5824 <    else
5825 <      yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
5826 <  }
4813 >  block_state.flags.value |= CONF_FLAGS_REDIR;
4814 >  block_state.port.value = (yyvsp[-1].number);
4815   }
4816 + #line 4817 "conf_parser.c" /* yacc.c:1646  */
4817      break;
4818  
4819 <  case 330:
4820 <
5832 < /* Line 1455 of yacc.c  */
5833 < #line 2115 "ircd_parser.y"
5834 <    {
5835 <  if (conf_parser_ctx.pass == 2)
5836 <  {
5837 <    MyFree(yy_conf->name);
5838 <
5839 <    if (strlen(yylval.string) < HOSTLEN)
5840 <    {    
5841 <      DupString(yy_conf->name, yylval.string);
5842 <      yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
5843 <    }
5844 <    else
4819 >  case 327:
4820 > #line 1849 "conf_parser.y" /* yacc.c:1646  */
4821      {
4822 <      ilog(L_ERROR, "Spoofs must be less than %d..ignoring it", HOSTLEN);
5847 <      yy_conf->name = NULL;
5848 <    }
5849 <  }
5850 < }
4822 >  if (conf_parser_ctx.pass != 2)
4823      break;
4824  
4825 <  case 331:
4826 <
5855 < /* Line 1455 of yacc.c  */
5856 < #line 2134 "ircd_parser.y"
5857 <    {
5858 <  if (conf_parser_ctx.pass == 2)
5859 <  {
5860 <    yy_aconf->flags |= CONF_FLAGS_REDIR;
5861 <    MyFree(yy_conf->name);
5862 <    DupString(yy_conf->name, yylval.string);
5863 <  }
4825 >  reset_block_state();
4826 >  strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4827   }
4828 + #line 4829 "conf_parser.c" /* yacc.c:1646  */
4829      break;
4830  
4831 <  case 332:
4832 <
5869 < /* Line 1455 of yacc.c  */
5870 < #line 2144 "ircd_parser.y"
4831 >  case 328:
4832 > #line 1856 "conf_parser.y" /* yacc.c:1646  */
4833      {
4834 <  if (conf_parser_ctx.pass == 2)
5873 <  {
5874 <    yy_aconf->flags |= CONF_FLAGS_REDIR;
5875 <    yy_aconf->port = (yyvsp[(3) - (4)].number);
5876 <  }
5877 < }
4834 >  if (conf_parser_ctx.pass != 2)
4835      break;
4836  
4837 <  case 333:
5881 <
5882 < /* Line 1455 of yacc.c  */
5883 < #line 2153 "ircd_parser.y"
5884 <    {
5885 <  if (conf_parser_ctx.pass == 2)
5886 <  {
5887 <    if (yylval.number)
5888 <      yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5889 <    else
5890 <      yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
5891 <  }
4837 >  create_resv(block_state.name.buf, block_state.rpass.buf, &block_state.mask.list);
4838   }
4839 + #line 4840 "conf_parser.c" /* yacc.c:1646  */
4840      break;
4841  
4842 <  case 334:
4843 <
5897 < /* Line 1455 of yacc.c  */
5898 < #line 2168 "ircd_parser.y"
4842 >  case 335:
4843 > #line 1867 "conf_parser.y" /* yacc.c:1646  */
4844      {
4845    if (conf_parser_ctx.pass == 2)
4846 <  {
5902 <    MyFree(resv_reason);
5903 <    resv_reason = NULL;
5904 <  }
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 335:
4852 <
5910 < /* Line 1455 of yacc.c  */
5911 < #line 2175 "ircd_parser.y"
4851 >  case 336:
4852 > #line 1873 "conf_parser.y" /* yacc.c:1646  */
4853      {
4854    if (conf_parser_ctx.pass == 2)
4855 <  {
5915 <    MyFree(resv_reason);
5916 <    resv_reason = NULL;
5917 <  }
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 342:
4861 <
5923 < /* Line 1455 of yacc.c  */
5924 < #line 2187 "ircd_parser.y"
4860 >  case 337:
4861 > #line 1879 "conf_parser.y" /* yacc.c:1646  */
4862      {
4863    if (conf_parser_ctx.pass == 2)
4864 <  {
5928 <    MyFree(resv_reason);
5929 <    DupString(resv_reason, yylval.string);
5930 <  }
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 343:
4870 <
5936 < /* Line 1455 of yacc.c  */
5937 < #line 2196 "ircd_parser.y"
5938 <    {
5939 <  if (conf_parser_ctx.pass == 2)
5940 <  {
5941 <    if (IsChanPrefix(*yylval.string))
4870 > #line 1894 "conf_parser.y" /* yacc.c:1646  */
4871      {
4872 <      char def_reason[] = "No reason";
4872 >  if (conf_parser_ctx.pass != 2)
4873 >    break;
4874  
4875 <      create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
4876 <    }
4875 >  if (valid_servname(yylval.string))
4876 >  {
4877 >    struct MaskItem *conf = conf_make(CONF_SERVICE);
4878 >    conf->name = xstrdup(yylval.string);
4879    }
5948  /* ignore it for now.. but we really should make a warning if
5949   * its an erroneous name --fl_ */
4880   }
4881 + #line 4882 "conf_parser.c" /* yacc.c:1646  */
4882      break;
4883  
4884    case 344:
4885 <
5955 < /* Line 1455 of yacc.c  */
5956 < #line 2211 "ircd_parser.y"
4885 > #line 1909 "conf_parser.y" /* yacc.c:1646  */
4886      {
4887 <  if (conf_parser_ctx.pass == 2)
4888 <  {
5960 <    char def_reason[] = "No reason";
4887 >  if (conf_parser_ctx.pass != 2)
4888 >    break;
4889  
4890 <    create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
4891 <  }
4890 >  reset_block_state();
4891 >
4892 >  strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4893 >  strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4894 >  strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4895 >  block_state.flags.value = SHARED_ALL;
4896   }
4897 + #line 4898 "conf_parser.c" /* yacc.c:1646  */
4898      break;
4899  
4900    case 345:
4901 <
5969 < /* Line 1455 of yacc.c  */
5970 < #line 2224 "ircd_parser.y"
4901 > #line 1920 "conf_parser.y" /* yacc.c:1646  */
4902      {
4903 <  if (conf_parser_ctx.pass == 2)
5973 <  {
5974 <    yy_conf = make_conf_item(ULINE_TYPE);
5975 <    yy_match_item = map_to_conf(yy_conf);
5976 <    yy_match_item->action = SHARED_ALL;
5977 <  }
5978 < }
5979 <    break;
4903 >  struct MaskItem *conf = NULL;
4904  
4905 <  case 346:
4905 >  if (conf_parser_ctx.pass != 2)
4906 >    break;
4907  
4908 < /* Line 1455 of yacc.c  */
4909 < #line 2232 "ircd_parser.y"
4910 <    {
4911 <  if (conf_parser_ctx.pass == 2)
4912 <  {
5988 <    yy_conf = NULL;
5989 <  }
4908 >  conf = conf_make(CONF_ULINE);
4909 >  conf->flags = block_state.flags.value;
4910 >  conf->name = xstrdup(block_state.name.buf);
4911 >  conf->user = xstrdup(block_state.user.buf);
4912 >  conf->host = xstrdup(block_state.host.buf);
4913   }
4914 + #line 4915 "conf_parser.c" /* yacc.c:1646  */
4915      break;
4916  
4917 <  case 353:
4918 <
5995 < /* Line 1455 of yacc.c  */
5996 < #line 2243 "ircd_parser.y"
4917 >  case 352:
4918 > #line 1937 "conf_parser.y" /* yacc.c:1646  */
4919      {
4920    if (conf_parser_ctx.pass == 2)
4921 <  {
6000 <    MyFree(yy_conf->name);
6001 <    DupString(yy_conf->name, yylval.string);
6002 <  }
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 354:
4927 <
6008 < /* Line 1455 of yacc.c  */
6009 < #line 2252 "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 6014 | 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);
6025
6026    DupString(yy_match_item->user, userbuf);
6027    DupString(yy_match_item->host, hostbuf);
4943    }
4944   }
4945 + #line 4946 "conf_parser.c" /* yacc.c:1646  */
4946      break;
4947  
4948 <  case 355:
4948 >  case 354:
4949 > #line 1962 "conf_parser.y" /* yacc.c:1646  */
4950 >    {
4951 >  if (conf_parser_ctx.pass == 2)
4952 >    block_state.flags.value = 0;
4953 > }
4954 > #line 4955 "conf_parser.c" /* yacc.c:1646  */
4955 >    break;
4956  
4957 < /* Line 1455 of yacc.c  */
4958 < #line 2274 "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 = 0;
4961 >    block_state.flags.value |= SHARED_KLINE;
4962   }
4963 + #line 4964 "conf_parser.c" /* yacc.c:1646  */
4964      break;
4965  
4966    case 359:
4967 <
6044 < /* Line 1455 of yacc.c  */
6045 < #line 2281 "ircd_parser.y"
4967 > #line 1973 "conf_parser.y" /* yacc.c:1646  */
4968      {
4969    if (conf_parser_ctx.pass == 2)
4970 <    yy_match_item->action |= SHARED_KLINE;
4970 >    block_state.flags.value |= SHARED_UNKLINE;
4971   }
4972 + #line 4973 "conf_parser.c" /* yacc.c:1646  */
4973      break;
4974  
4975    case 360:
4976 <
6054 < /* Line 1455 of yacc.c  */
6055 < #line 2285 "ircd_parser.y"
4976 > #line 1977 "conf_parser.y" /* yacc.c:1646  */
4977      {
4978    if (conf_parser_ctx.pass == 2)
4979 <    yy_match_item->action |= SHARED_TKLINE;
4979 >    block_state.flags.value |= SHARED_DLINE;
4980   }
4981 + #line 4982 "conf_parser.c" /* yacc.c:1646  */
4982      break;
4983  
4984    case 361:
4985 <
6064 < /* Line 1455 of yacc.c  */
6065 < #line 2289 "ircd_parser.y"
4985 > #line 1981 "conf_parser.y" /* yacc.c:1646  */
4986      {
4987    if (conf_parser_ctx.pass == 2)
4988 <    yy_match_item->action |= SHARED_UNKLINE;
4988 >    block_state.flags.value |= SHARED_UNDLINE;
4989   }
4990 + #line 4991 "conf_parser.c" /* yacc.c:1646  */
4991      break;
4992  
4993    case 362:
4994 <
6074 < /* Line 1455 of yacc.c  */
6075 < #line 2293 "ircd_parser.y"
4994 > #line 1985 "conf_parser.y" /* yacc.c:1646  */
4995      {
4996    if (conf_parser_ctx.pass == 2)
4997 <    yy_match_item->action |= SHARED_XLINE;
4997 >    block_state.flags.value |= SHARED_XLINE;
4998   }
4999 + #line 5000 "conf_parser.c" /* yacc.c:1646  */
5000      break;
5001  
5002    case 363:
5003 <
6084 < /* Line 1455 of yacc.c  */
6085 < #line 2297 "ircd_parser.y"
5003 > #line 1989 "conf_parser.y" /* yacc.c:1646  */
5004      {
5005    if (conf_parser_ctx.pass == 2)
5006 <    yy_match_item->action |= SHARED_TXLINE;
5006 >    block_state.flags.value |= SHARED_UNXLINE;
5007   }
5008 + #line 5009 "conf_parser.c" /* yacc.c:1646  */
5009      break;
5010  
5011    case 364:
5012 <
6094 < /* Line 1455 of yacc.c  */
6095 < #line 2301 "ircd_parser.y"
5012 > #line 1993 "conf_parser.y" /* yacc.c:1646  */
5013      {
5014    if (conf_parser_ctx.pass == 2)
5015 <    yy_match_item->action |= SHARED_UNXLINE;
5015 >    block_state.flags.value |= SHARED_RESV;
5016   }
5017 + #line 5018 "conf_parser.c" /* yacc.c:1646  */
5018      break;
5019  
5020    case 365:
5021 <
6104 < /* Line 1455 of yacc.c  */
6105 < #line 2305 "ircd_parser.y"
5021 > #line 1997 "conf_parser.y" /* yacc.c:1646  */
5022      {
5023    if (conf_parser_ctx.pass == 2)
5024 <    yy_match_item->action |= SHARED_RESV;
5024 >    block_state.flags.value |= SHARED_UNRESV;
5025   }
5026 + #line 5027 "conf_parser.c" /* yacc.c:1646  */
5027      break;
5028  
5029    case 366:
5030 <
6114 < /* Line 1455 of yacc.c  */
6115 < #line 2309 "ircd_parser.y"
5030 > #line 2001 "conf_parser.y" /* yacc.c:1646  */
5031      {
5032    if (conf_parser_ctx.pass == 2)
5033 <    yy_match_item->action |= SHARED_TRESV;
5033 >    block_state.flags.value |= SHARED_LOCOPS;
5034   }
5035 + #line 5036 "conf_parser.c" /* yacc.c:1646  */
5036      break;
5037  
5038    case 367:
5039 <
6124 < /* Line 1455 of yacc.c  */
6125 < #line 2313 "ircd_parser.y"
5039 > #line 2005 "conf_parser.y" /* yacc.c:1646  */
5040      {
5041    if (conf_parser_ctx.pass == 2)
5042 <    yy_match_item->action |= SHARED_UNRESV;
5042 >    block_state.flags.value = SHARED_ALL;
5043   }
5044 + #line 5045 "conf_parser.c" /* yacc.c:1646  */
5045      break;
5046  
5047    case 368:
5048 <
6134 < /* Line 1455 of yacc.c  */
6135 < #line 2317 "ircd_parser.y"
5048 > #line 2014 "conf_parser.y" /* yacc.c:1646  */
5049      {
5050 <  if (conf_parser_ctx.pass == 2)
5051 <    yy_match_item->action |= SHARED_LOCOPS;
5050 >  if (conf_parser_ctx.pass != 2)
5051 >    break;
5052 >
5053 >  reset_block_state();
5054 >
5055 >  strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
5056 >  block_state.flags.value = SHARED_ALL;
5057   }
5058 + #line 5059 "conf_parser.c" /* yacc.c:1646  */
5059      break;
5060  
5061    case 369:
5062 <
6144 < /* Line 1455 of yacc.c  */
6145 < #line 2321 "ircd_parser.y"
5062 > #line 2023 "conf_parser.y" /* yacc.c:1646  */
5063      {
5064 <  if (conf_parser_ctx.pass == 2)
5065 <    yy_match_item->action = SHARED_ALL;
5066 < }
5064 >  struct MaskItem *conf = NULL;
5065 >
5066 >  if (conf_parser_ctx.pass != 2)
5067      break;
5068  
5069 <  case 370:
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 < /* Line 1455 of yacc.c  */
5077 < #line 2330 "ircd_parser.y"
5076 >  case 375:
5077 > #line 2038 "conf_parser.y" /* yacc.c:1646  */
5078      {
5079    if (conf_parser_ctx.pass == 2)
5080 <  {
6159 <    yy_conf = make_conf_item(CLUSTER_TYPE);
6160 <    yy_conf->flags = SHARED_ALL;
6161 <  }
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 371:
5086 <
6167 < /* Line 1455 of yacc.c  */
6168 < #line 2337 "ircd_parser.y"
5085 >  case 376:
5086 > #line 2044 "conf_parser.y" /* yacc.c:1646  */
5087      {
5088    if (conf_parser_ctx.pass == 2)
5089 <  {
6172 <    if (yy_conf->name == NULL)
6173 <      DupString(yy_conf->name, "*");
6174 <    yy_conf = NULL;
6175 <  }
5089 >    block_state.flags.value = 0;
5090   }
5091 + #line 5092 "conf_parser.c" /* yacc.c:1646  */
5092      break;
5093  
5094 <  case 377:
5095 <
6181 < /* Line 1455 of yacc.c  */
6182 < #line 2350 "ircd_parser.y"
5094 >  case 380:
5095 > #line 2051 "conf_parser.y" /* yacc.c:1646  */
5096      {
5097    if (conf_parser_ctx.pass == 2)
5098 <    DupString(yy_conf->name, yylval.string);
5098 >    block_state.flags.value |= SHARED_KLINE;
5099   }
5100 + #line 5101 "conf_parser.c" /* yacc.c:1646  */
5101      break;
5102  
5103 <  case 378:
5104 <
6191 < /* Line 1455 of yacc.c  */
6192 < #line 2356 "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 = 0;
5107 >    block_state.flags.value |= SHARED_UNKLINE;
5108   }
5109 + #line 5110 "conf_parser.c" /* yacc.c:1646  */
5110      break;
5111  
5112    case 382:
5113 <
6201 < /* Line 1455 of yacc.c  */
6202 < #line 2363 "ircd_parser.y"
5113 > #line 2059 "conf_parser.y" /* yacc.c:1646  */
5114      {
5115    if (conf_parser_ctx.pass == 2)
5116 <    yy_conf->flags |= SHARED_KLINE;
5116 >    block_state.flags.value |= SHARED_DLINE;
5117   }
5118 + #line 5119 "conf_parser.c" /* yacc.c:1646  */
5119      break;
5120  
5121    case 383:
5122 <
6211 < /* Line 1455 of yacc.c  */
6212 < #line 2367 "ircd_parser.y"
5122 > #line 2063 "conf_parser.y" /* yacc.c:1646  */
5123      {
5124    if (conf_parser_ctx.pass == 2)
5125 <    yy_conf->flags |= SHARED_TKLINE;
5125 >    block_state.flags.value |= SHARED_UNDLINE;
5126   }
5127 + #line 5128 "conf_parser.c" /* yacc.c:1646  */
5128      break;
5129  
5130    case 384:
5131 <
6221 < /* Line 1455 of yacc.c  */
6222 < #line 2371 "ircd_parser.y"
5131 > #line 2067 "conf_parser.y" /* yacc.c:1646  */
5132      {
5133    if (conf_parser_ctx.pass == 2)
5134 <    yy_conf->flags |= SHARED_UNKLINE;
5134 >    block_state.flags.value |= SHARED_XLINE;
5135   }
5136 + #line 5137 "conf_parser.c" /* yacc.c:1646  */
5137      break;
5138  
5139    case 385:
5140 <
6231 < /* Line 1455 of yacc.c  */
6232 < #line 2375 "ircd_parser.y"
5140 > #line 2071 "conf_parser.y" /* yacc.c:1646  */
5141      {
5142    if (conf_parser_ctx.pass == 2)
5143 <    yy_conf->flags |= SHARED_XLINE;
5143 >    block_state.flags.value |= SHARED_UNXLINE;
5144   }
5145 + #line 5146 "conf_parser.c" /* yacc.c:1646  */
5146      break;
5147  
5148    case 386:
5149 <
6241 < /* Line 1455 of yacc.c  */
6242 < #line 2379 "ircd_parser.y"
5149 > #line 2075 "conf_parser.y" /* yacc.c:1646  */
5150      {
5151    if (conf_parser_ctx.pass == 2)
5152 <    yy_conf->flags |= SHARED_TXLINE;
5152 >    block_state.flags.value |= SHARED_RESV;
5153   }
5154 + #line 5155 "conf_parser.c" /* yacc.c:1646  */
5155      break;
5156  
5157    case 387:
5158 <
6251 < /* Line 1455 of yacc.c  */
6252 < #line 2383 "ircd_parser.y"
5158 > #line 2079 "conf_parser.y" /* yacc.c:1646  */
5159      {
5160    if (conf_parser_ctx.pass == 2)
5161 <    yy_conf->flags |= SHARED_UNXLINE;
5161 >    block_state.flags.value |= SHARED_UNRESV;
5162   }
5163 + #line 5164 "conf_parser.c" /* yacc.c:1646  */
5164      break;
5165  
5166    case 388:
5167 <
6261 < /* Line 1455 of yacc.c  */
6262 < #line 2387 "ircd_parser.y"
5167 > #line 2083 "conf_parser.y" /* yacc.c:1646  */
5168      {
5169    if (conf_parser_ctx.pass == 2)
5170 <    yy_conf->flags |= SHARED_RESV;
5170 >    block_state.flags.value |= SHARED_LOCOPS;
5171   }
5172 + #line 5173 "conf_parser.c" /* yacc.c:1646  */
5173      break;
5174  
5175    case 389:
5176 <
6271 < /* Line 1455 of yacc.c  */
6272 < #line 2391 "ircd_parser.y"
5176 > #line 2087 "conf_parser.y" /* yacc.c:1646  */
5177      {
5178    if (conf_parser_ctx.pass == 2)
5179 <    yy_conf->flags |= SHARED_TRESV;
5179 >    block_state.flags.value = SHARED_ALL;
5180   }
5181 + #line 5182 "conf_parser.c" /* yacc.c:1646  */
5182      break;
5183  
5184    case 390:
5185 <
6281 < /* Line 1455 of yacc.c  */
6282 < #line 2395 "ircd_parser.y"
5185 > #line 2096 "conf_parser.y" /* yacc.c:1646  */
5186      {
6284  if (conf_parser_ctx.pass == 2)
6285    yy_conf->flags |= SHARED_UNRESV;
6286 }
6287    break;
5187  
5188 <  case 391:
6290 <
6291 < /* Line 1455 of yacc.c  */
6292 < #line 2399 "ircd_parser.y"
6293 <    {
6294 <  if (conf_parser_ctx.pass == 2)
6295 <    yy_conf->flags |= SHARED_LOCOPS;
6296 < }
5188 >  if (conf_parser_ctx.pass != 2)
5189      break;
5190  
5191 <  case 392:
5192 <
5193 < /* Line 1455 of yacc.c  */
6302 < #line 2403 "ircd_parser.y"
6303 <    {
6304 <  if (conf_parser_ctx.pass == 2)
6305 <    yy_conf->flags = SHARED_ALL;
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 393:
5199 <
6311 < /* Line 1455 of yacc.c  */
6312 < #line 2412 "ircd_parser.y"
5198 >  case 391:
5199 > #line 2105 "conf_parser.y" /* yacc.c:1646  */
5200      {
5201 <  if (conf_parser_ctx.pass == 2)
5202 <  {
6316 <    yy_conf = make_conf_item(SERVER_TYPE);
6317 <    yy_aconf = (struct AccessItem *)map_to_conf(yy_conf);
6318 <    yy_aconf->passwd = NULL;
6319 <    /* defaults */
6320 <    yy_aconf->port = PORTNUM;
5201 >  struct MaskItem *conf = NULL;
5202 >  struct addrinfo hints, *res;
5203  
5204 <    if (ConfigFileEntry.burst_away)
6323 <      yy_aconf->flags = CONF_FLAGS_BURST_AWAY;
6324 <  }
6325 <  else
6326 <  {
6327 <    MyFree(class_name);
6328 <    class_name = NULL;
6329 <  }
6330 < }
5204 >  if (conf_parser_ctx.pass != 2)
5205      break;
5206  
5207 <  case 394:
5208 <
6335 < /* Line 1455 of yacc.c  */
6336 < #line 2430 "ircd_parser.y"
6337 <    {
6338 <  if (conf_parser_ctx.pass == 2)
6339 <  {
6340 <    struct CollectItem *yy_hconf=NULL;
6341 <    struct CollectItem *yy_lconf=NULL;
6342 <    dlink_node *ptr;
6343 <    dlink_node *next_ptr;
6344 < #ifdef HAVE_LIBCRYPTO
6345 <    if (yy_aconf->host &&
6346 <        ((yy_aconf->passwd && yy_aconf->spasswd) ||
6347 <         (yy_aconf->rsa_public_key && IsConfCryptLink(yy_aconf))))
6348 < #else /* !HAVE_LIBCRYPTO */
6349 <      if (yy_aconf->host && !IsConfCryptLink(yy_aconf) &&
6350 <          yy_aconf->passwd && yy_aconf->spasswd)
6351 < #endif /* !HAVE_LIBCRYPTO */
6352 <        {
6353 <          if (conf_add_server(yy_conf, class_name) == -1)
6354 <          {
6355 <            delete_conf_item(yy_conf);
6356 <            yy_conf = NULL;
6357 <            yy_aconf = NULL;
6358 <          }
6359 <        }
6360 <        else
6361 <        {
6362 <          /* Even if yy_conf ->name is NULL
6363 <           * should still unhook any hub/leaf confs still pending
6364 <           */
6365 <          unhook_hub_leaf_confs();
6366 <
6367 <          if (yy_conf->name != NULL)
6368 <          {
6369 < #ifndef HAVE_LIBCRYPTO
6370 <            if (IsConfCryptLink(yy_aconf))
6371 <              yyerror("Ignoring connect block -- no OpenSSL support");
6372 < #else
6373 <            if (IsConfCryptLink(yy_aconf) && !yy_aconf->rsa_public_key)
6374 <              yyerror("Ignoring connect block -- missing key");
6375 < #endif
6376 <            if (yy_aconf->host == NULL)
6377 <              yyerror("Ignoring connect block -- missing host");
6378 <            else if (!IsConfCryptLink(yy_aconf) &&
6379 <                    (!yy_aconf->passwd || !yy_aconf->spasswd))
6380 <              yyerror("Ignoring connect block -- missing password");
6381 <          }
6382 <
6383 <
6384 <          /* XXX
6385 <           * This fixes a try_connections() core (caused by invalid class_ptr
6386 <           * pointers) reported by metalrock. That's an ugly fix, but there
6387 <           * is currently no better way. The entire config subsystem needs an
6388 <           * rewrite ASAP. make_conf_item() shouldn't really add things onto
6389 <           * a doubly linked list immediately without any sanity checks!  -Michael
6390 <           */
6391 <          delete_conf_item(yy_conf);
6392 <
6393 <          yy_aconf = NULL;
6394 <          yy_conf = NULL;
6395 <        }
6396 <
6397 <      /*
6398 <       * yy_conf is still pointing at the server that is having
6399 <       * a connect block built for it. This means, y_aconf->name
6400 <       * points to the actual irc name this server will be known as.
6401 <       * Now this new server has a set or even just one hub_mask (or leaf_mask)
6402 <       * given in the link list at yy_hconf. Fill in the HUB confs
6403 <       * from this link list now.
6404 <       */        
6405 <      DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
6406 <      {
6407 <        struct ConfItem *new_hub_conf;
6408 <        struct MatchItem *match_item;
6409 <
6410 <        yy_hconf = ptr->data;
6411 <
6412 <        /* yy_conf == NULL is a fatal error for this connect block! */
6413 <        if ((yy_conf != NULL) && (yy_conf->name != NULL))
6414 <        {
6415 <          new_hub_conf = make_conf_item(HUB_TYPE);
6416 <          match_item = (struct MatchItem *)map_to_conf(new_hub_conf);
6417 <          DupString(new_hub_conf->name, yy_conf->name);
6418 <          if (yy_hconf->user != NULL)
6419 <            DupString(match_item->user, yy_hconf->user);
6420 <          else
6421 <            DupString(match_item->user, "*");
6422 <          if (yy_hconf->host != NULL)
6423 <            DupString(match_item->host, yy_hconf->host);
6424 <          else
6425 <            DupString(match_item->host, "*");
6426 <        }
6427 <        dlinkDelete(&yy_hconf->node, &hub_conf_list);
6428 <        free_collect_item(yy_hconf);
6429 <      }
6430 <
6431 <      /* Ditto for the LEAF confs */
6432 <
6433 <      DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
6434 <      {
6435 <        struct ConfItem *new_leaf_conf;
6436 <        struct MatchItem *match_item;
6437 <
6438 <        yy_lconf = ptr->data;
6439 <
6440 <        if ((yy_conf != NULL) && (yy_conf->name != NULL))
6441 <        {
6442 <          new_leaf_conf = make_conf_item(LEAF_TYPE);
6443 <          match_item = (struct MatchItem *)map_to_conf(new_leaf_conf);
6444 <          DupString(new_leaf_conf->name, yy_conf->name);
6445 <          if (yy_lconf->user != NULL)
6446 <            DupString(match_item->user, yy_lconf->user);
6447 <          else
6448 <            DupString(match_item->user, "*");
6449 <          if (yy_lconf->host != NULL)
6450 <            DupString(match_item->host, yy_lconf->host);
6451 <          else
6452 <            DupString(match_item->host, "*");
6453 <        }
6454 <        dlinkDelete(&yy_lconf->node, &leaf_conf_list);
6455 <        free_collect_item(yy_lconf);
6456 <      }
6457 <      MyFree(class_name);
6458 <      class_name = NULL;
6459 <      yy_conf = NULL;
6460 <      yy_aconf = NULL;
6461 <  }
6462 < }
5207 >  if (!block_state.name.buf[0] ||
5208 >      !block_state.host.buf[0])
5209      break;
5210  
5211 <  case 419:
5212 <
6467 < /* Line 1455 of yacc.c  */
6468 < #line 2569 "ircd_parser.y"
6469 <    {
6470 <  if (conf_parser_ctx.pass == 2)
6471 <  {
6472 <    if (yy_conf->name != NULL)
6473 <      yyerror("Multiple connect name entry");
6474 <
6475 <    MyFree(yy_conf->name);
6476 <    DupString(yy_conf->name, yylval.string);
6477 <  }
6478 < }
5211 >  if (!block_state.rpass.buf[0] ||
5212 >      !block_state.spass.buf[0])
5213      break;
5214  
5215 <  case 420:
5216 <
6483 < /* Line 1455 of yacc.c  */
6484 < #line 2581 "ircd_parser.y"
6485 <    {
6486 <  if (conf_parser_ctx.pass == 2)
6487 <  {
6488 <    if (yy_conf->name != NULL)
6489 <      yyerror("Multiple connect name entry");
6490 <
6491 <    MyFree(yy_conf->name);
6492 <    DupString(yy_conf->name, yylval.string);
6493 <  }
6494 < }
5215 >  if (has_wildcards(block_state.name.buf) ||
5216 >      has_wildcards(block_state.host.buf))
5217      break;
5218  
5219 <  case 421:
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 1455 of yacc.c  */
5229 < #line 2593 "ircd_parser.y"
6501 <    {
6502 <  if (conf_parser_ctx.pass == 2)
6503 <  {
6504 <    MyFree(yy_aconf->host);
6505 <    DupString(yy_aconf->host, yylval.string);
6506 <  }
6507 < }
6508 <    break;
5228 >  if (block_state.cert.buf[0])
5229 >    conf->certfp = xstrdup(block_state.cert.buf);
5230  
5231 <  case 422:
5231 >  if (block_state.ciph.buf[0])
5232 >    conf->cipher_list = xstrdup(block_state.ciph.buf);
5233  
5234 < /* Line 1455 of yacc.c  */
5235 < #line 2602 "ircd_parser.y"
6514 <    {
6515 <  if (conf_parser_ctx.pass == 2)
6516 <  {
6517 <    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    }
6537 }
6538    break;
5257  
5258 <  case 423:
5259 <
6542 < /* Line 1455 of yacc.c  */
6543 < #line 2628 "ircd_parser.y"
6544 <    {
6545 <  if (conf_parser_ctx.pass == 2)
6546 <  {
6547 <    if ((yyvsp[(3) - (4)].string)[0] == ':')
6548 <      yyerror("Server passwords cannot begin with a colon");
6549 <    else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6550 <      yyerror("Server passwords cannot contain spaces");
6551 <    else {
6552 <      if (yy_aconf->spasswd != NULL)
6553 <        memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
6554 <
6555 <      MyFree(yy_aconf->spasswd);
6556 <      DupString(yy_aconf->spasswd, yylval.string);
6557 <    }
6558 <  }
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 424:
5265 <
6564 < /* Line 1455 of yacc.c  */
6565 < #line 2646 "ircd_parser.y"
5264 >  case 409:
5265 > #line 2185 "conf_parser.y" /* yacc.c:1646  */
5266      {
5267    if (conf_parser_ctx.pass == 2)
5268 <  {
6569 <    if ((yyvsp[(3) - (4)].string)[0] == ':')
6570 <      yyerror("Server passwords cannot begin with a colon");
6571 <    else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6572 <      yyerror("Server passwords cannot contain spaces");
6573 <    else {
6574 <      if (yy_aconf->passwd != NULL)
6575 <        memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
6576 <
6577 <      MyFree(yy_aconf->passwd);
6578 <      DupString(yy_aconf->passwd, yylval.string);
6579 <    }
6580 <  }
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 425:
5274 <
6586 < /* Line 1455 of yacc.c  */
6587 < #line 2664 "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 426:
5283 <
6596 < /* Line 1455 of yacc.c  */
6597 < #line 2670 "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 427:
5292 <
6606 < /* Line 1455 of yacc.c  */
6607 < #line 2674 "ircd_parser.y"
5291 >  case 412:
5292 > #line 2203 "conf_parser.y" /* yacc.c:1646  */
5293      {
5294 < #ifdef IPV6
6610 <  if (conf_parser_ctx.pass == 2)
6611 <    yy_aconf->aftype = AF_INET6;
6612 < #endif
6613 < }
5294 >  if (conf_parser_ctx.pass != 2)
5295      break;
5296  
5297 <  case 428:
5298 <
5299 < /* Line 1455 of yacc.c  */
5300 < #line 2682 "ircd_parser.y"
5301 <    {
5302 <  if (conf_parser_ctx.pass == 2)
6622 <  {
6623 <    MyFree(yy_aconf->fakename);
6624 <    DupString(yy_aconf->fakename, yylval.string);
6625 <  }
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 429:
5308 <
6631 < /* Line 1455 of yacc.c  */
6632 < #line 2691 "ircd_parser.y"
5307 >  case 413:
5308 > #line 2216 "conf_parser.y" /* yacc.c:1646  */
5309      {
5310 < }
5310 >  if (conf_parser_ctx.pass != 2)
5311      break;
5312  
5313 <  case 433:
5314 <
5315 < /* Line 1455 of yacc.c  */
5316 < #line 2695 "ircd_parser.y"
5317 <    { not_atom = 1; }
5318 <    break;
6643 <
6644 <  case 435:
6645 <
6646 < /* Line 1455 of yacc.c  */
6647 < #line 2696 "ircd_parser.y"
6648 <    { not_atom = 0; }
6649 <    break;
6650 <
6651 <  case 437:
6652 <
6653 < /* Line 1455 of yacc.c  */
6654 < #line 2699 "ircd_parser.y"
6655 <    {
6656 <  if (conf_parser_ctx.pass == 2)
6657 < #ifndef HAVE_LIBZ
6658 <    yyerror("Ignoring flags = compressed; -- no zlib support");
6659 < #else
6660 < {
6661 <   if (not_atom)ClearConfCompressed(yy_aconf);
6662 <   else SetConfCompressed(yy_aconf);
6663 < }
6664 < #endif
6665 < }
6666 <    break;
6667 <
6668 <  case 438:
6669 <
6670 < /* Line 1455 of yacc.c  */
6671 < #line 2710 "ircd_parser.y"
6672 <    {
6673 <  if (conf_parser_ctx.pass == 2)
6674 <  {
6675 <    if (not_atom)ClearConfCryptLink(yy_aconf);
6676 <    else SetConfCryptLink(yy_aconf);
6677 <  }
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 439:
5324 <
6683 < /* Line 1455 of yacc.c  */
6684 < #line 2717 "ircd_parser.y"
5323 >  case 414:
5324 > #line 2229 "conf_parser.y" /* yacc.c:1646  */
5325      {
5326    if (conf_parser_ctx.pass == 2)
5327 <  {
6688 <    if (not_atom)ClearConfAllowAutoConn(yy_aconf);
6689 <    else SetConfAllowAutoConn(yy_aconf);
6690 <  }
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 440:
5333 <
6696 < /* Line 1455 of yacc.c  */
6697 < #line 2724 "ircd_parser.y"
5332 >  case 415:
5333 > #line 2235 "conf_parser.y" /* yacc.c:1646  */
5334      {
5335    if (conf_parser_ctx.pass == 2)
5336 <  {
6701 <    if (not_atom)ClearConfAwayBurst(yy_aconf);
6702 <    else SetConfAwayBurst(yy_aconf);
6703 <  }
5336 >    block_state.port.value = (yyvsp[-1].number);
5337   }
5338 + #line 5339 "conf_parser.c" /* yacc.c:1646  */
5339      break;
5340  
5341 <  case 441:
5342 <
6709 < /* Line 1455 of yacc.c  */
6710 < #line 2731 "ircd_parser.y"
5341 >  case 416:
5342 > #line 2241 "conf_parser.y" /* yacc.c:1646  */
5343      {
5344    if (conf_parser_ctx.pass == 2)
5345 <  {
6714 <    if (not_atom)ClearConfTopicBurst(yy_aconf);
6715 <    else SetConfTopicBurst(yy_aconf);
6716 <  }
5345 >    block_state.aftype.value = AF_INET;
5346   }
5347 + #line 5348 "conf_parser.c" /* yacc.c:1646  */
5348      break;
5349  
5350 <  case 442:
5351 <
6722 < /* Line 1455 of yacc.c  */
6723 < #line 2741 "ircd_parser.y"
5350 >  case 417:
5351 > #line 2245 "conf_parser.y" /* yacc.c:1646  */
5352      {
5353 < #ifdef HAVE_LIBCRYPTO
5353 > #ifdef IPV6
5354    if (conf_parser_ctx.pass == 2)
5355 <  {
5356 <    BIO *file;
6729 <
6730 <    if (yy_aconf->rsa_public_key != NULL)
6731 <    {
6732 <      RSA_free(yy_aconf->rsa_public_key);
6733 <      yy_aconf->rsa_public_key = NULL;
6734 <    }
6735 <
6736 <    if (yy_aconf->rsa_public_key_file != NULL)
6737 <    {
6738 <      MyFree(yy_aconf->rsa_public_key_file);
6739 <      yy_aconf->rsa_public_key_file = NULL;
6740 <    }
6741 <
6742 <    DupString(yy_aconf->rsa_public_key_file, yylval.string);
6743 <
6744 <    if ((file = BIO_new_file(yylval.string, "r")) == NULL)
6745 <    {
6746 <      yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
6747 <      break;
6748 <    }
6749 <
6750 <    yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
6751 <
6752 <    if (yy_aconf->rsa_public_key == NULL)
6753 <    {
6754 <      yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
6755 <      break;
6756 <    }
6757 <      
6758 <    BIO_set_close(file, BIO_CLOSE);
6759 <    BIO_free(file);
6760 <  }
6761 < #endif /* HAVE_LIBCRYPTO */
5355 >    block_state.aftype.value = AF_INET6;
5356 > #endif
5357   }
5358 + #line 5359 "conf_parser.c" /* yacc.c:1646  */
5359      break;
5360  
5361 <  case 443:
5362 <
6767 < /* Line 1455 of yacc.c  */
6768 < #line 2782 "ircd_parser.y"
5361 >  case 418:
5362 > #line 2253 "conf_parser.y" /* yacc.c:1646  */
5363      {
5364 <  if (conf_parser_ctx.pass == 2)
6771 <  {
6772 <    if (yylval.number)
6773 <      yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
6774 <    else
6775 <      yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
6776 <  }
5364 >  block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5365   }
5366 + #line 5367 "conf_parser.c" /* yacc.c:1646  */
5367      break;
5368  
5369 <  case 444:
5370 <
6782 < /* Line 1455 of yacc.c  */
6783 < #line 2793 "ircd_parser.y"
5369 >  case 422:
5370 > #line 2259 "conf_parser.y" /* yacc.c:1646  */
5371      {
5372    if (conf_parser_ctx.pass == 2)
5373 <  {
6787 <    if (yylval.number)
6788 <      yy_aconf->flags |= CONF_FLAGS_CRYPTLINK;
6789 <    else
6790 <      yy_aconf->flags &= ~CONF_FLAGS_CRYPTLINK;
6791 <  }
5373 >    block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5374   }
5375 + #line 5376 "conf_parser.c" /* yacc.c:1646  */
5376      break;
5377  
5378 <  case 445:
5379 <
6797 < /* Line 1455 of yacc.c  */
6798 < #line 2804 "ircd_parser.y"
5378 >  case 423:
5379 > #line 2263 "conf_parser.y" /* yacc.c:1646  */
5380      {
5381    if (conf_parser_ctx.pass == 2)
5382 <  {
6802 <    if (yylval.number)
6803 < #ifndef HAVE_LIBZ
6804 <      yyerror("Ignoring compressed=yes; -- no zlib support");
6805 < #else
6806 <      yy_aconf->flags |= CONF_FLAGS_COMPRESSED;
6807 < #endif
6808 <    else
6809 <      yy_aconf->flags &= ~CONF_FLAGS_COMPRESSED;
6810 <  }
5382 >    block_state.flags.value |= CONF_FLAGS_SSL;
5383   }
5384 + #line 5385 "conf_parser.c" /* yacc.c:1646  */
5385      break;
5386  
5387 <  case 446:
5388 <
6816 < /* Line 1455 of yacc.c  */
6817 < #line 2819 "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_ALLOW_AUTO_CONN;
5393 >      block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5394      else
5395 <      yy_aconf->flags &= ~CONF_FLAGS_ALLOW_AUTO_CONN;
5395 >      block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5396    }
5397   }
5398 + #line 5399 "conf_parser.c" /* yacc.c:1646  */
5399      break;
5400  
5401 <  case 447:
5402 <
6831 < /* Line 1455 of yacc.c  */
6832 < #line 2830 "ircd_parser.y"
5401 >  case 425:
5402 > #line 2280 "conf_parser.y" /* yacc.c:1646  */
5403      {
5404    if (conf_parser_ctx.pass == 2)
5405 <  {
6836 <    if (yylval.number)
6837 <      SetConfTopicBurst(yy_aconf);
6838 <    else
6839 <      ClearConfTopicBurst(yy_aconf);
6840 <  }
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 448:
5411 <
6846 < /* Line 1455 of yacc.c  */
6847 < #line 2841 "ircd_parser.y"
5410 >  case 426:
5411 > #line 2286 "conf_parser.y" /* yacc.c:1646  */
5412      {
5413    if (conf_parser_ctx.pass == 2)
5414 <  {
6851 <    struct CollectItem *yy_tmp;
6852 <
6853 <    yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6854 <    DupString(yy_tmp->host, yylval.string);
6855 <    DupString(yy_tmp->user, "*");
6856 <    dlinkAdd(yy_tmp, &yy_tmp->node, &hub_conf_list);
6857 <  }
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 449:
5420 <
6863 < /* Line 1455 of yacc.c  */
6864 < #line 2854 "ircd_parser.y"
6865 <    {
6866 <  if (conf_parser_ctx.pass == 2)
6867 <  {
6868 <    struct CollectItem *yy_tmp;
6869 <
6870 <    yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6871 <    DupString(yy_tmp->host, yylval.string);
6872 <    DupString(yy_tmp->user, "*");
6873 <    dlinkAdd(yy_tmp, &yy_tmp->node, &leaf_conf_list);
6874 <  }
6875 < }
6876 <    break;
6877 <
6878 <  case 450:
6879 <
6880 < /* Line 1455 of yacc.c  */
6881 < #line 2867 "ircd_parser.y"
5419 >  case 427:
5420 > #line 2292 "conf_parser.y" /* yacc.c:1646  */
5421      {
5422    if (conf_parser_ctx.pass == 2)
5423 <  {
6885 <    MyFree(class_name);
6886 <    DupString(class_name, yylval.string);
6887 <  }
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 451:
5429 <
6893 < /* Line 1455 of yacc.c  */
6894 < #line 2876 "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 <  {
6899 <    struct EncCapability *ecap;
6900 <    const char *cipher_name;
6901 <    int found = 0;
6902 <
6903 <    yy_aconf->cipher_preference = NULL;
6904 <    cipher_name = yylval.string;
6905 <
6906 <    for (ecap = CipherTable; ecap->name; ecap++)
6907 <    {
6908 <      if ((irccmp(ecap->name, cipher_name) == 0) &&
6909 <          (ecap->cap & CAP_ENC_MASK))
6910 <      {
6911 <        yy_aconf->cipher_preference = ecap;
6912 <        found = 1;
6913 <        break;
6914 <      }
6915 <    }
6916 <
6917 <    if (!found)
6918 <      yyerror("Invalid cipher");
6919 <  }
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 452:
5443 <
6929 < /* Line 1455 of yacc.c  */
6930 < #line 2911 "ircd_parser.y"
5442 >  case 429:
5443 > #line 2313 "conf_parser.y" /* yacc.c:1646  */
5444      {
5445    if (conf_parser_ctx.pass == 2)
5446 <  {
6934 <    userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
6935 <    regex_ban = 0;
6936 <  }
5446 >    reset_block_state();
5447   }
5448 + #line 5449 "conf_parser.c" /* yacc.c:1646  */
5449      break;
5450  
5451 <  case 453:
5452 <
6942 < /* Line 1455 of yacc.c  */
6943 < #line 2918 "ircd_parser.y"
5451 >  case 430:
5452 > #line 2317 "conf_parser.y" /* yacc.c:1646  */
5453      {
5454 <  if (conf_parser_ctx.pass == 2)
6946 <  {
6947 <    if (userbuf[0] && hostbuf[0])
6948 <    {
6949 <      if (regex_ban)
6950 <      {
6951 < #ifdef HAVE_LIBPCRE
6952 <        void *exp_user = NULL;
6953 <        void *exp_host = NULL;
6954 <        const char *errptr = NULL;
5454 >  struct MaskItem *conf = NULL;
5455  
5456 <        if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
6957 <            !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
6958 <        {
6959 <          ilog(L_ERROR, "Failed to add regular expression based K-Line: %s",
6960 <               errptr);
6961 <          break;
6962 <        }
6963 <
6964 <        yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
6965 <        yy_aconf->regexuser = exp_user;
6966 <        yy_aconf->regexhost = exp_host;
6967 <
6968 <        DupString(yy_aconf->user, userbuf);
6969 <        DupString(yy_aconf->host, hostbuf);
6970 <
6971 <        if (reasonbuf[0])
6972 <          DupString(yy_aconf->reason, reasonbuf);
6973 <        else
6974 <          DupString(yy_aconf->reason, "No reason");
6975 < #else
6976 <        ilog(L_ERROR, "Failed to add regular expression based K-Line: no PCRE support");
6977 <        break;
6978 < #endif
6979 <      }
6980 <      else
6981 <      {
6982 <        yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
6983 <
6984 <        DupString(yy_aconf->user, userbuf);
6985 <        DupString(yy_aconf->host, hostbuf);
6986 <
6987 <        if (reasonbuf[0])
6988 <          DupString(yy_aconf->reason, reasonbuf);
6989 <        else
6990 <          DupString(yy_aconf->reason, "No reason");
6991 <        add_conf_by_address(CONF_KILL, yy_aconf);
6992 <      }
6993 <    }
6994 <
6995 <    yy_aconf = NULL;
6996 <  }
6997 < }
5456 >  if (conf_parser_ctx.pass != 2)
5457      break;
5458  
5459 <  case 454:
5460 <
7002 < /* Line 1455 of yacc.c  */
7003 < #line 2974 "ircd_parser.y"
7004 <    {
7005 < }
5459 >  if (!block_state.user.buf[0] ||
5460 >      !block_state.host.buf[0])
5461      break;
5462  
5463 <  case 458:
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 1455 of yacc.c  */
5468 < #line 2979 "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 465:
5477 <
7020 < /* Line 1455 of yacc.c  */
7021 < #line 2988 "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 466:
5500 <
7043 < /* Line 1455 of yacc.c  */
7044 < #line 3007 "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 467:
5509 <
7053 < /* Line 1455 of yacc.c  */
7054 < #line 3016 "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 468:
5518 <
7063 < /* Line 1455 of yacc.c  */
7064 < #line 3020 "ircd_parser.y"
5517 >  case 439:
5518 > #line 2375 "conf_parser.y" /* yacc.c:1646  */
5519      {
5520 <  if (conf_parser_ctx.pass == 2)
5520 >  struct MaskItem *conf = NULL;
5521 >
5522 >  if (conf_parser_ctx.pass != 2)
5523 >    break;
5524 >
5525 >  if (!block_state.addr.buf[0])
5526 >    break;
5527 >
5528 >  if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5529    {
5530 <    if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
5531 <    {
7070 <      yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
7071 <      DupString(yy_aconf->host, hostbuf);
5530 >    conf = conf_make(CONF_DLINE);
5531 >    conf->host = xstrdup(block_state.addr.buf);
5532  
5533 <      if (reasonbuf[0])
5534 <        DupString(yy_aconf->reason, reasonbuf);
5535 <      else
5536 <        DupString(yy_aconf->reason, "No reason");
5537 <      add_conf_by_address(CONF_DLINE, yy_aconf);
7078 <      yy_aconf = NULL;
7079 <    }
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 474:
5544 <
7086 < /* Line 1455 of yacc.c  */
7087 < #line 3042 "ircd_parser.y"
5543 >  case 445:
5544 > #line 2401 "conf_parser.y" /* yacc.c:1646  */
5545      {
5546    if (conf_parser_ctx.pass == 2)
5547 <    strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
5547 >    strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5548   }
5549 + #line 5550 "conf_parser.c" /* yacc.c:1646  */
5550      break;
5551  
5552 <  case 475:
5553 <
7096 < /* Line 1455 of yacc.c  */
7097 < #line 3048 "ircd_parser.y"
5552 >  case 446:
5553 > #line 2407 "conf_parser.y" /* yacc.c:1646  */
5554      {
5555    if (conf_parser_ctx.pass == 2)
5556 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5556 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5557   }
5558 + #line 5559 "conf_parser.c" /* yacc.c:1646  */
5559      break;
5560  
5561 <  case 481:
5562 <
7106 < /* Line 1455 of yacc.c  */
7107 < #line 3062 "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 (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5567      {
5568 <      yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
5569 <      DupString(yy_aconf->host, yylval.string);
5568 >      struct MaskItem *conf = conf_make(CONF_EXEMPT);
5569 >      conf->host = xstrdup(yylval.string);
5570  
5571 <      add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
7117 <      yy_aconf = NULL;
5571 >      add_conf_by_address(CONF_EXEMPT, conf);
5572      }
5573    }
5574   }
5575 + #line 5576 "conf_parser.c" /* yacc.c:1646  */
5576      break;
5577  
5578 <  case 482:
5579 <
7125 < /* Line 1455 of yacc.c  */
7126 < #line 3080 "ircd_parser.y"
5578 >  case 453:
5579 > #line 2438 "conf_parser.y" /* yacc.c:1646  */
5580      {
5581    if (conf_parser_ctx.pass == 2)
5582 <  {
7130 <    regex_ban = 0;
7131 <    reasonbuf[0] = gecos_name[0] = '\0';
7132 <  }
5582 >    reset_block_state();
5583   }
5584 + #line 5585 "conf_parser.c" /* yacc.c:1646  */
5585      break;
5586  
5587 <  case 483:
5588 <
7138 < /* Line 1455 of yacc.c  */
7139 < #line 3087 "ircd_parser.y"
7140 <    {
7141 <  if (conf_parser_ctx.pass == 2)
7142 <  {
7143 <    if (gecos_name[0])
5587 >  case 454:
5588 > #line 2442 "conf_parser.y" /* yacc.c:1646  */
5589      {
5590 <      if (regex_ban)
7146 <      {
7147 < #ifdef HAVE_LIBPCRE
7148 <        void *exp_p = NULL;
7149 <        const char *errptr = NULL;
5590 >  struct MaskItem *conf = NULL;
5591  
5592 <        if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
5593 <        {
7153 <          ilog(L_ERROR, "Failed to add regular expression based X-Line: %s",
7154 <               errptr);
7155 <          break;
7156 <        }
7157 <
7158 <        yy_conf = make_conf_item(RXLINE_TYPE);
7159 <        yy_conf->regexpname = exp_p;
7160 < #else
7161 <        ilog(L_ERROR, "Failed to add regular expression based X-Line: no PCRE support");
7162 <        break;
7163 < #endif
7164 <      }
7165 <      else
7166 <        yy_conf = make_conf_item(XLINE_TYPE);
7167 <
7168 <      yy_match_item = map_to_conf(yy_conf);
7169 <      DupString(yy_conf->name, gecos_name);
5592 >  if (conf_parser_ctx.pass != 2)
5593 >    break;
5594  
5595 <      if (reasonbuf[0])
7172 <        DupString(yy_match_item->reason, reasonbuf);
7173 <      else
7174 <        DupString(yy_match_item->reason, "No reason");
7175 <    }
7176 <  }
7177 < }
5595 >  if (!block_state.name.buf[0])
5596      break;
5597  
5598 <  case 484:
5598 >  conf = conf_make(CONF_XLINE);
5599 >  conf->name = xstrdup(block_state.name.buf);
5600  
5601 < /* Line 1455 of yacc.c  */
5602 < #line 3127 "ircd_parser.y"
5603 <    {
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 488:
5610 <
7190 < /* Line 1455 of yacc.c  */
7191 < #line 3132 "ircd_parser.y"
5609 >  case 460:
5610 > #line 2464 "conf_parser.y" /* yacc.c:1646  */
5611      {
5612    if (conf_parser_ctx.pass == 2)
5613 <    regex_ban = 1;
5613 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5614   }
5615 + #line 5616 "conf_parser.c" /* yacc.c:1646  */
5616      break;
5617  
5618 <  case 495:
5619 <
7200 < /* Line 1455 of yacc.c  */
7201 < #line 3141 "ircd_parser.y"
5618 >  case 461:
5619 > #line 2470 "conf_parser.y" /* yacc.c:1646  */
5620      {
5621    if (conf_parser_ctx.pass == 2)
5622 <    strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
5622 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5623   }
5624 + #line 5625 "conf_parser.c" /* yacc.c:1646  */
5625      break;
5626  
5627 <  case 496:
5628 <
7210 < /* Line 1455 of yacc.c  */
7211 < #line 3147 "ircd_parser.y"
5627 >  case 516:
5628 > #line 2536 "conf_parser.y" /* yacc.c:1646  */
5629      {
5630 <  if (conf_parser_ctx.pass == 2)
7214 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5630 >  ConfigFileEntry.max_watch = (yyvsp[-1].number);
5631   }
5632 + #line 5633 "conf_parser.c" /* yacc.c:1646  */
5633      break;
5634  
5635 <  case 557:
5636 <
7220 < /* Line 1455 of yacc.c  */
7221 < #line 3192 "ircd_parser.y"
5635 >  case 517:
5636 > #line 2541 "conf_parser.y" /* yacc.c:1646  */
5637      {
5638 <  ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
5638 >  if (conf_parser_ctx.pass == 2)
5639 >    ConfigFileEntry.cycle_on_host_change = yylval.number;
5640   }
5641 + #line 5642 "conf_parser.c" /* yacc.c:1646  */
5642      break;
5643  
5644 <  case 558:
5645 <
7229 < /* Line 1455 of yacc.c  */
7230 < #line 3197 "ircd_parser.y"
5644 >  case 518:
5645 > #line 2547 "conf_parser.y" /* yacc.c:1646  */
5646      {
5647 <  ConfigFileEntry.gline_min_cidr = (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 559:
5654 <
7238 < /* Line 1455 of yacc.c  */
7239 < #line 3202 "ircd_parser.y"
5653 >  case 519:
5654 > #line 2553 "conf_parser.y" /* yacc.c:1646  */
5655      {
5656 <  ConfigFileEntry.gline_min_cidr6 = (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 560:
5663 <
7247 < /* Line 1455 of yacc.c  */
7248 < #line 3207 "ircd_parser.y"
5662 >  case 520:
5663 > #line 2559 "conf_parser.y" /* yacc.c:1646  */
5664      {
5665 <  ConfigFileEntry.burst_away = yylval.number;
5665 >  if (conf_parser_ctx.pass == 2)
5666 >    ConfigFileEntry.gline_request_time = (yyvsp[-1].number);
5667   }
5668 + #line 5669 "conf_parser.c" /* yacc.c:1646  */
5669      break;
5670  
5671 <  case 561:
5672 <
7256 < /* Line 1455 of yacc.c  */
7257 < #line 3212 "ircd_parser.y"
5671 >  case 521:
5672 > #line 2565 "conf_parser.y" /* yacc.c:1646  */
5673      {
5674 <  ConfigFileEntry.use_whois_actually = yylval.number;
5674 >  ConfigFileEntry.gline_min_cidr = (yyvsp[-1].number);
5675   }
5676 + #line 5677 "conf_parser.c" /* yacc.c:1646  */
5677      break;
5678  
5679 <  case 562:
5680 <
7265 < /* Line 1455 of yacc.c  */
7266 < #line 3217 "ircd_parser.y"
5679 >  case 522:
5680 > #line 2570 "conf_parser.y" /* yacc.c:1646  */
5681      {
5682 <  GlobalSetOptions.rejecttime = 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 563:
5688 <
7274 < /* Line 1455 of yacc.c  */
7275 < #line 3222 "ircd_parser.y"
5687 >  case 523:
5688 > #line 2575 "conf_parser.y" /* yacc.c:1646  */
5689      {
5690    ConfigFileEntry.tkline_expire_notices = yylval.number;
5691   }
5692 + #line 5693 "conf_parser.c" /* yacc.c:1646  */
5693      break;
5694  
5695 <  case 564:
5696 <
7283 < /* Line 1455 of yacc.c  */
7284 < #line 3227 "ircd_parser.y"
5695 >  case 524:
5696 > #line 2580 "conf_parser.y" /* yacc.c:1646  */
5697      {
5698 <  ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
5698 >  ConfigFileEntry.kill_chase_time_limit = (yyvsp[-1].number);
5699   }
5700 + #line 5701 "conf_parser.c" /* yacc.c:1646  */
5701      break;
5702  
5703 <  case 565:
5704 <
7292 < /* Line 1455 of yacc.c  */
7293 < #line 3232 "ircd_parser.y"
5703 >  case 525:
5704 > #line 2585 "conf_parser.y" /* yacc.c:1646  */
5705      {
5706    ConfigFileEntry.hide_spoof_ips = yylval.number;
5707   }
5708 + #line 5709 "conf_parser.c" /* yacc.c:1646  */
5709      break;
5710  
5711 <  case 566:
5712 <
7301 < /* Line 1455 of yacc.c  */
7302 < #line 3237 "ircd_parser.y"
5711 >  case 526:
5712 > #line 2590 "conf_parser.y" /* yacc.c:1646  */
5713      {
5714    ConfigFileEntry.ignore_bogus_ts = yylval.number;
5715   }
5716 + #line 5717 "conf_parser.c" /* yacc.c:1646  */
5717      break;
5718  
5719 <  case 567:
5720 <
7310 < /* Line 1455 of yacc.c  */
7311 < #line 3242 "ircd_parser.y"
7312 <    {
7313 <  ConfigFileEntry.disable_remote = yylval.number;
7314 < }
7315 <    break;
7316 <
7317 <  case 568:
7318 <
7319 < /* Line 1455 of yacc.c  */
7320 < #line 3247 "ircd_parser.y"
5719 >  case 527:
5720 > #line 2595 "conf_parser.y" /* yacc.c:1646  */
5721      {
5722    ConfigFileEntry.failed_oper_notice = yylval.number;
5723   }
5724 + #line 5725 "conf_parser.c" /* yacc.c:1646  */
5725      break;
5726  
5727 <  case 569:
5728 <
7328 < /* Line 1455 of yacc.c  */
7329 < #line 3252 "ircd_parser.y"
5727 >  case 528:
5728 > #line 2600 "conf_parser.y" /* yacc.c:1646  */
5729      {
5730    ConfigFileEntry.anti_nick_flood = yylval.number;
5731   }
5732 + #line 5733 "conf_parser.c" /* yacc.c:1646  */
5733      break;
5734  
5735 <  case 570:
5736 <
7337 < /* Line 1455 of yacc.c  */
7338 < #line 3257 "ircd_parser.y"
5735 >  case 529:
5736 > #line 2605 "conf_parser.y" /* yacc.c:1646  */
5737      {
5738 <  ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
5738 >  ConfigFileEntry.max_nick_time = (yyvsp[-1].number);
5739   }
5740 + #line 5741 "conf_parser.c" /* yacc.c:1646  */
5741      break;
5742  
5743 <  case 571:
5744 <
7346 < /* Line 1455 of yacc.c  */
7347 < #line 3262 "ircd_parser.y"
5743 >  case 530:
5744 > #line 2610 "conf_parser.y" /* yacc.c:1646  */
5745      {
5746 <  ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
5746 >  ConfigFileEntry.max_nick_changes = (yyvsp[-1].number);
5747   }
5748 + #line 5749 "conf_parser.c" /* yacc.c:1646  */
5749      break;
5750  
5751 <  case 572:
5752 <
7355 < /* Line 1455 of yacc.c  */
7356 < #line 3267 "ircd_parser.y"
5751 >  case 531:
5752 > #line 2615 "conf_parser.y" /* yacc.c:1646  */
5753      {
5754 <  ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
5754 >  ConfigFileEntry.max_accept = (yyvsp[-1].number);
5755   }
5756 + #line 5757 "conf_parser.c" /* yacc.c:1646  */
5757      break;
5758  
5759 <  case 573:
5760 <
7364 < /* Line 1455 of yacc.c  */
7365 < #line 3272 "ircd_parser.y"
5759 >  case 532:
5760 > #line 2620 "conf_parser.y" /* yacc.c:1646  */
5761      {
5762 <  ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
5762 >  ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[-1].number);
5763   }
5764 + #line 5765 "conf_parser.c" /* yacc.c:1646  */
5765      break;
5766  
5767 <  case 574:
5768 <
7373 < /* Line 1455 of yacc.c  */
7374 < #line 3277 "ircd_parser.y"
5767 >  case 533:
5768 > #line 2625 "conf_parser.y" /* yacc.c:1646  */
5769      {
5770 <  ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
5770 >  ConfigFileEntry.ts_warn_delta = (yyvsp[-1].number);
5771   }
5772 + #line 5773 "conf_parser.c" /* yacc.c:1646  */
5773      break;
5774  
5775 <  case 575:
5776 <
7382 < /* Line 1455 of yacc.c  */
7383 < #line 3282 "ircd_parser.y"
5775 >  case 534:
5776 > #line 2630 "conf_parser.y" /* yacc.c:1646  */
5777      {
5778    if (conf_parser_ctx.pass == 2)
5779 <    ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
5779 >    ConfigFileEntry.ts_max_delta = (yyvsp[-1].number);
5780   }
5781 + #line 5782 "conf_parser.c" /* yacc.c:1646  */
5782      break;
5783  
5784 <  case 576:
5785 <
7392 < /* Line 1455 of yacc.c  */
7393 < #line 3288 "ircd_parser.y"
5784 >  case 535:
5785 > #line 2636 "conf_parser.y" /* yacc.c:1646  */
5786      {
5787 <  if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
5787 >  if (((yyvsp[-1].number) > 0) && conf_parser_ctx.pass == 1)
5788    {
5789 <    ilog(L_CRIT, "You haven't read your config file properly.");
5790 <    ilog(L_CRIT, "There is a line in the example conf that will kill your server if not removed.");
5791 <    ilog(L_CRIT, "Consider actually reading/editing the conf file, and removing this line.");
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 577:
5799 <
7407 < /* Line 1455 of yacc.c  */
7408 < #line 3299 "ircd_parser.y"
7409 <    {
7410 <  ConfigFileEntry.kline_with_reason = yylval.number;
7411 < }
7412 <    break;
7413 <
7414 <  case 578:
7415 <
7416 < /* Line 1455 of yacc.c  */
7417 < #line 3304 "ircd_parser.y"
7418 <    {
7419 <  if (conf_parser_ctx.pass == 2)
7420 <  {
7421 <    MyFree(ConfigFileEntry.kline_reason);
7422 <    DupString(ConfigFileEntry.kline_reason, yylval.string);
7423 <  }
7424 < }
7425 <    break;
7426 <
7427 <  case 579:
7428 <
7429 < /* Line 1455 of yacc.c  */
7430 < #line 3313 "ircd_parser.y"
5798 >  case 536:
5799 > #line 2647 "conf_parser.y" /* yacc.c:1646  */
5800      {
5801    ConfigFileEntry.invisible_on_connect = yylval.number;
5802   }
5803 + #line 5804 "conf_parser.c" /* yacc.c:1646  */
5804      break;
5805  
5806 <  case 580:
5807 <
7438 < /* Line 1455 of yacc.c  */
7439 < #line 3318 "ircd_parser.y"
5806 >  case 537:
5807 > #line 2652 "conf_parser.y" /* yacc.c:1646  */
5808      {
5809 <  ConfigFileEntry.warn_no_nline = yylval.number;
5809 >  ConfigFileEntry.warn_no_connect_block = yylval.number;
5810   }
5811 + #line 5812 "conf_parser.c" /* yacc.c:1646  */
5812      break;
5813  
5814 <  case 581:
5815 <
7447 < /* Line 1455 of yacc.c  */
7448 < #line 3323 "ircd_parser.y"
5814 >  case 538:
5815 > #line 2657 "conf_parser.y" /* yacc.c:1646  */
5816      {
5817    ConfigFileEntry.stats_e_disabled = yylval.number;
5818   }
5819 + #line 5820 "conf_parser.c" /* yacc.c:1646  */
5820      break;
5821  
5822 <  case 582:
5823 <
7456 < /* Line 1455 of yacc.c  */
7457 < #line 3328 "ircd_parser.y"
5822 >  case 539:
5823 > #line 2662 "conf_parser.y" /* yacc.c:1646  */
5824      {
5825    ConfigFileEntry.stats_o_oper_only = yylval.number;
5826   }
5827 + #line 5828 "conf_parser.c" /* yacc.c:1646  */
5828      break;
5829  
5830 <  case 583:
5831 <
7465 < /* Line 1455 of yacc.c  */
7466 < #line 3333 "ircd_parser.y"
5830 >  case 540:
5831 > #line 2667 "conf_parser.y" /* yacc.c:1646  */
5832      {
5833    ConfigFileEntry.stats_P_oper_only = yylval.number;
5834   }
5835 + #line 5836 "conf_parser.c" /* yacc.c:1646  */
5836      break;
5837  
5838 <  case 584:
5838 >  case 541:
5839 > #line 2672 "conf_parser.y" /* yacc.c:1646  */
5840 >    {
5841 >  ConfigFileEntry.stats_u_oper_only = yylval.number;
5842 > }
5843 > #line 5844 "conf_parser.c" /* yacc.c:1646  */
5844 >    break;
5845  
5846 < /* Line 1455 of yacc.c  */
5847 < #line 3338 "ircd_parser.y"
5846 >  case 542:
5847 > #line 2677 "conf_parser.y" /* yacc.c:1646  */
5848      {
5849    ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
5850   }
5851 + #line 5852 "conf_parser.c" /* yacc.c:1646  */
5852      break;
5853  
5854 <  case 585:
5855 <
7483 < /* Line 1455 of yacc.c  */
7484 < #line 3341 "ircd_parser.y"
5854 >  case 543:
5855 > #line 2680 "conf_parser.y" /* yacc.c:1646  */
5856      {
5857    ConfigFileEntry.stats_k_oper_only = 1;
5858   }
5859 + #line 5860 "conf_parser.c" /* yacc.c:1646  */
5860      break;
5861  
5862 <  case 586:
5863 <
7492 < /* Line 1455 of yacc.c  */
7493 < #line 3346 "ircd_parser.y"
5862 >  case 544:
5863 > #line 2685 "conf_parser.y" /* yacc.c:1646  */
5864      {
5865    ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
5866   }
5867 + #line 5868 "conf_parser.c" /* yacc.c:1646  */
5868      break;
5869  
5870 <  case 587:
5871 <
7501 < /* Line 1455 of yacc.c  */
7502 < #line 3349 "ircd_parser.y"
5870 >  case 545:
5871 > #line 2688 "conf_parser.y" /* yacc.c:1646  */
5872      {
5873    ConfigFileEntry.stats_i_oper_only = 1;
5874   }
5875 + #line 5876 "conf_parser.c" /* yacc.c:1646  */
5876      break;
5877  
5878 <  case 588:
5879 <
7510 < /* Line 1455 of yacc.c  */
7511 < #line 3354 "ircd_parser.y"
5878 >  case 546:
5879 > #line 2693 "conf_parser.y" /* yacc.c:1646  */
5880      {
5881 <  ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
5881 >  ConfigFileEntry.pace_wait = (yyvsp[-1].number);
5882   }
5883 + #line 5884 "conf_parser.c" /* yacc.c:1646  */
5884      break;
5885  
5886 <  case 589:
5887 <
7519 < /* Line 1455 of yacc.c  */
7520 < #line 3359 "ircd_parser.y"
5886 >  case 547:
5887 > #line 2698 "conf_parser.y" /* yacc.c:1646  */
5888      {
5889 <  ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
5889 >  ConfigFileEntry.caller_id_wait = (yyvsp[-1].number);
5890   }
5891 + #line 5892 "conf_parser.c" /* yacc.c:1646  */
5892      break;
5893  
5894 <  case 590:
5895 <
7528 < /* Line 1455 of yacc.c  */
7529 < #line 3364 "ircd_parser.y"
5894 >  case 548:
5895 > #line 2703 "conf_parser.y" /* yacc.c:1646  */
5896      {
5897    ConfigFileEntry.opers_bypass_callerid = yylval.number;
5898   }
5899 + #line 5900 "conf_parser.c" /* yacc.c:1646  */
5900      break;
5901  
5902 <  case 591:
5903 <
7537 < /* Line 1455 of yacc.c  */
7538 < #line 3369 "ircd_parser.y"
5902 >  case 549:
5903 > #line 2708 "conf_parser.y" /* yacc.c:1646  */
5904      {
5905 <  ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
5905 >  ConfigFileEntry.pace_wait_simple = (yyvsp[-1].number);
5906   }
5907 + #line 5908 "conf_parser.c" /* yacc.c:1646  */
5908      break;
5909  
5910 <  case 592:
5911 <
7546 < /* Line 1455 of yacc.c  */
7547 < #line 3374 "ircd_parser.y"
5910 >  case 550:
5911 > #line 2713 "conf_parser.y" /* yacc.c:1646  */
5912      {
5913    ConfigFileEntry.short_motd = yylval.number;
5914   }
5915 + #line 5916 "conf_parser.c" /* yacc.c:1646  */
5916      break;
5917  
5918 <  case 593:
5919 <
7555 < /* Line 1455 of yacc.c  */
7556 < #line 3379 "ircd_parser.y"
5918 >  case 551:
5919 > #line 2718 "conf_parser.y" /* yacc.c:1646  */
5920      {
5921    ConfigFileEntry.no_oper_flood = yylval.number;
5922   }
5923 + #line 5924 "conf_parser.c" /* yacc.c:1646  */
5924      break;
5925  
5926 <  case 594:
5927 <
7564 < /* Line 1455 of yacc.c  */
7565 < #line 3384 "ircd_parser.y"
5926 >  case 552:
5927 > #line 2723 "conf_parser.y" /* yacc.c:1646  */
5928      {
5929    ConfigFileEntry.true_no_oper_flood = yylval.number;
5930   }
5931 + #line 5932 "conf_parser.c" /* yacc.c:1646  */
5932      break;
5933  
5934 <  case 595:
5935 <
7573 < /* Line 1455 of yacc.c  */
7574 < #line 3389 "ircd_parser.y"
5934 >  case 553:
5935 > #line 2728 "conf_parser.y" /* yacc.c:1646  */
5936      {
5937    ConfigFileEntry.oper_pass_resv = yylval.number;
5938   }
5939 + #line 5940 "conf_parser.c" /* yacc.c:1646  */
5940      break;
5941  
5942 <  case 596:
5943 <
7582 < /* Line 1455 of yacc.c  */
7583 < #line 3394 "ircd_parser.y"
5942 >  case 554:
5943 > #line 2733 "conf_parser.y" /* yacc.c:1646  */
5944      {
5945 <  if (conf_parser_ctx.pass == 2)
7586 <  {
7587 <    if (strlen(yylval.string) > LOCALE_LENGTH-2)
7588 <      yylval.string[LOCALE_LENGTH-1] = '\0';
7589 <
7590 <    set_locale(yylval.string);
7591 <  }
5945 >  ConfigFileEntry.dots_in_ident = (yyvsp[-1].number);
5946   }
5947 + #line 5948 "conf_parser.c" /* yacc.c:1646  */
5948      break;
5949  
5950 <  case 597:
5951 <
7597 < /* Line 1455 of yacc.c  */
7598 < #line 3405 "ircd_parser.y"
5950 >  case 555:
5951 > #line 2738 "conf_parser.y" /* yacc.c:1646  */
5952      {
5953 <  ConfigFileEntry.idletime = (yyvsp[(3) - (4)].number);
5953 >  ConfigFileEntry.max_targets = (yyvsp[-1].number);
5954   }
5955 + #line 5956 "conf_parser.c" /* yacc.c:1646  */
5956      break;
5957  
5958 <  case 598:
5959 <
7606 < /* Line 1455 of yacc.c  */
7607 < #line 3410 "ircd_parser.y"
7608 <    {
7609 <  ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
7610 < }
7611 <    break;
7612 <
7613 <  case 599:
7614 <
7615 < /* Line 1455 of yacc.c  */
7616 < #line 3415 "ircd_parser.y"
5958 >  case 556:
5959 > #line 2743 "conf_parser.y" /* yacc.c:1646  */
5960      {
5961 <  ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
5961 >  ConfigFileEntry.use_egd = yylval.number;
5962   }
5963 + #line 5964 "conf_parser.c" /* yacc.c:1646  */
5964      break;
5965  
5966 <  case 600:
5967 <
7624 < /* Line 1455 of yacc.c  */
7625 < #line 3420 "ircd_parser.y"
5966 >  case 557:
5967 > #line 2748 "conf_parser.y" /* yacc.c:1646  */
5968      {
5969    if (conf_parser_ctx.pass == 2)
5970    {
5971 <    MyFree(ConfigFileEntry.servlink_path);
5972 <    DupString(ConfigFileEntry.servlink_path, yylval.string);
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 601:
5979 <
7637 < /* Line 1455 of yacc.c  */
7638 < #line 3429 "ircd_parser.y"
5978 >  case 558:
5979 > #line 2757 "conf_parser.y" /* yacc.c:1646  */
5980      {
5981 < #ifdef HAVE_LIBCRYPTO
7641 <  if (conf_parser_ctx.pass == 2)
5981 >  if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
5982    {
5983 <    struct EncCapability *ecap;
5984 <    const char *cipher_name;
7645 <    int found = 0;
7646 <
7647 <    ConfigFileEntry.default_cipher_preference = NULL;
7648 <    cipher_name = yylval.string;
7649 <
7650 <    for (ecap = CipherTable; ecap->name; ecap++)
7651 <    {
7652 <      if ((irccmp(ecap->name, cipher_name) == 0) &&
7653 <          (ecap->cap & CAP_ENC_MASK))
7654 <      {
7655 <        ConfigFileEntry.default_cipher_preference = ecap;
7656 <        found = 1;
7657 <        break;
7658 <      }
7659 <    }
7660 <
7661 <    if (!found)
7662 <      yyerror("Invalid cipher");
5983 >    MyFree(ConfigFileEntry.service_name);
5984 >    ConfigFileEntry.service_name = xstrdup(yylval.string);
5985    }
7664 #else
7665  if (conf_parser_ctx.pass == 2)
7666    yyerror("Ignoring default_cipher_preference -- no OpenSSL support");
7667 #endif
5986   }
5987 + #line 5988 "conf_parser.c" /* yacc.c:1646  */
5988      break;
5989  
5990 <  case 602:
5991 <
7673 < /* Line 1455 of yacc.c  */
7674 < #line 3461 "ircd_parser.y"
7675 <    {
7676 <  if (conf_parser_ctx.pass == 2)
7677 <  {
7678 <    ConfigFileEntry.compression_level = (yyvsp[(3) - (4)].number);
7679 < #ifndef HAVE_LIBZ
7680 <    yyerror("Ignoring compression_level -- no zlib support");
7681 < #else
7682 <    if ((ConfigFileEntry.compression_level < 1) ||
7683 <        (ConfigFileEntry.compression_level > 9))
5990 >  case 559:
5991 > #line 2766 "conf_parser.y" /* yacc.c:1646  */
5992      {
5993 <      yyerror("Ignoring invalid compression_level, using default");
7686 <      ConfigFileEntry.compression_level = 0;
7687 <    }
7688 < #endif
7689 <  }
5993 >  ConfigFileEntry.ping_cookie = yylval.number;
5994   }
5995 + #line 5996 "conf_parser.c" /* yacc.c:1646  */
5996      break;
5997  
5998 <  case 603:
5999 <
7695 < /* Line 1455 of yacc.c  */
7696 < #line 3479 "ircd_parser.y"
5998 >  case 560:
5999 > #line 2771 "conf_parser.y" /* yacc.c:1646  */
6000      {
6001 <  ConfigFileEntry.use_egd = yylval.number;
6001 >  ConfigFileEntry.disable_auth = yylval.number;
6002   }
6003 + #line 6004 "conf_parser.c" /* yacc.c:1646  */
6004      break;
6005  
6006 <  case 604:
6007 <
7704 < /* Line 1455 of yacc.c  */
7705 < #line 3484 "ircd_parser.y"
6006 >  case 561:
6007 > #line 2776 "conf_parser.y" /* yacc.c:1646  */
6008      {
6009 <  if (conf_parser_ctx.pass == 2)
7708 <  {
7709 <    MyFree(ConfigFileEntry.egdpool_path);
7710 <    DupString(ConfigFileEntry.egdpool_path, yylval.string);
7711 <  }
6009 >  ConfigFileEntry.throttle_count = (yyvsp[-1].number);
6010   }
6011 + #line 6012 "conf_parser.c" /* yacc.c:1646  */
6012      break;
6013  
6014 <  case 605:
6015 <
7717 < /* Line 1455 of yacc.c  */
7718 < #line 3493 "ircd_parser.y"
6014 >  case 562:
6015 > #line 2781 "conf_parser.y" /* yacc.c:1646  */
6016      {
6017 <  ConfigFileEntry.ping_cookie = yylval.number;
6017 >  ConfigFileEntry.throttle_time = (yyvsp[-1].number);
6018   }
6019 + #line 6020 "conf_parser.c" /* yacc.c:1646  */
6020      break;
6021  
6022 <  case 606:
6023 <
7726 < /* Line 1455 of yacc.c  */
7727 < #line 3498 "ircd_parser.y"
6022 >  case 563:
6023 > #line 2786 "conf_parser.y" /* yacc.c:1646  */
6024      {
6025 <  ConfigFileEntry.disable_auth = yylval.number;
6025 >  ConfigFileEntry.oper_umodes = 0;
6026   }
6027 + #line 6028 "conf_parser.c" /* yacc.c:1646  */
6028      break;
6029  
6030 <  case 607:
6031 <
7735 < /* Line 1455 of yacc.c  */
7736 < #line 3503 "ircd_parser.y"
6030 >  case 567:
6031 > #line 2792 "conf_parser.y" /* yacc.c:1646  */
6032      {
6033 <  ConfigFileEntry.throttle_time = yylval.number;
6033 >  ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6034   }
6035 + #line 6036 "conf_parser.c" /* yacc.c:1646  */
6036      break;
6037  
6038 <  case 608:
6039 <
7744 < /* Line 1455 of yacc.c  */
7745 < #line 3508 "ircd_parser.y"
6038 >  case 568:
6039 > #line 2795 "conf_parser.y" /* yacc.c:1646  */
6040      {
6041 <  ConfigFileEntry.oper_umodes = 0;
6041 >  ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6042   }
6043 + #line 6044 "conf_parser.c" /* yacc.c:1646  */
6044      break;
6045  
6046 <  case 612:
6047 <
7753 < /* Line 1455 of yacc.c  */
7754 < #line 3514 "ircd_parser.y"
6046 >  case 569:
6047 > #line 2798 "conf_parser.y" /* yacc.c:1646  */
6048      {
6049 <  ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6049 >  ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6050   }
6051 + #line 6052 "conf_parser.c" /* yacc.c:1646  */
6052      break;
6053  
6054 <  case 613:
6055 <
7762 < /* Line 1455 of yacc.c  */
7763 < #line 3517 "ircd_parser.y"
6054 >  case 570:
6055 > #line 2801 "conf_parser.y" /* yacc.c:1646  */
6056      {
6057 <  ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6057 >  ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6058   }
6059 + #line 6060 "conf_parser.c" /* yacc.c:1646  */
6060      break;
6061  
6062 <  case 614:
6063 <
7771 < /* Line 1455 of yacc.c  */
7772 < #line 3520 "ircd_parser.y"
6062 >  case 571:
6063 > #line 2804 "conf_parser.y" /* yacc.c:1646  */
6064      {
6065 <  ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
6065 >  ConfigFileEntry.oper_umodes |= UMODE_FULL;
6066   }
6067 + #line 6068 "conf_parser.c" /* yacc.c:1646  */
6068      break;
6069  
6070 <  case 615:
6071 <
7780 < /* Line 1455 of yacc.c  */
7781 < #line 3523 "ircd_parser.y"
6070 >  case 572:
6071 > #line 2807 "conf_parser.y" /* yacc.c:1646  */
6072      {
6073 <  ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6073 >  ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6074   }
6075 + #line 6076 "conf_parser.c" /* yacc.c:1646  */
6076      break;
6077  
6078 <  case 616:
6079 <
7789 < /* Line 1455 of yacc.c  */
7790 < #line 3526 "ircd_parser.y"
6078 >  case 573:
6079 > #line 2810 "conf_parser.y" /* yacc.c:1646  */
6080      {
6081 <  ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6081 >  ConfigFileEntry.oper_umodes |= UMODE_HIDECHANS;
6082   }
6083 + #line 6084 "conf_parser.c" /* yacc.c:1646  */
6084      break;
6085  
6086 <  case 617:
6087 <
7798 < /* Line 1455 of yacc.c  */
7799 < #line 3529 "ircd_parser.y"
6086 >  case 574:
6087 > #line 2813 "conf_parser.y" /* yacc.c:1646  */
6088      {
6089 <  ConfigFileEntry.oper_umodes |= UMODE_FULL;
6089 >  ConfigFileEntry.oper_umodes |= UMODE_HIDEIDLE;
6090   }
6091 + #line 6092 "conf_parser.c" /* yacc.c:1646  */
6092      break;
6093  
6094 <  case 618:
6095 <
7807 < /* Line 1455 of yacc.c  */
7808 < #line 3532 "ircd_parser.y"
6094 >  case 575:
6095 > #line 2816 "conf_parser.y" /* yacc.c:1646  */
6096      {
6097    ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6098   }
6099 + #line 6100 "conf_parser.c" /* yacc.c:1646  */
6100      break;
6101  
6102 <  case 619:
6103 <
7816 < /* Line 1455 of yacc.c  */
7817 < #line 3535 "ircd_parser.y"
6102 >  case 576:
6103 > #line 2819 "conf_parser.y" /* yacc.c:1646  */
6104      {
6105    ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6106   }
6107 + #line 6108 "conf_parser.c" /* yacc.c:1646  */
6108      break;
6109  
6110 <  case 620:
6111 <
7825 < /* Line 1455 of yacc.c  */
7826 < #line 3538 "ircd_parser.y"
6110 >  case 577:
6111 > #line 2822 "conf_parser.y" /* yacc.c:1646  */
6112      {
6113    ConfigFileEntry.oper_umodes |= UMODE_REJ;
6114   }
6115 + #line 6116 "conf_parser.c" /* yacc.c:1646  */
6116      break;
6117  
6118 <  case 621:
6119 <
7834 < /* Line 1455 of yacc.c  */
7835 < #line 3541 "ircd_parser.y"
6118 >  case 578:
6119 > #line 2825 "conf_parser.y" /* yacc.c:1646  */
6120      {
6121    ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6122   }
6123 + #line 6124 "conf_parser.c" /* yacc.c:1646  */
6124      break;
6125  
6126 <  case 622:
6127 <
7843 < /* Line 1455 of yacc.c  */
7844 < #line 3544 "ircd_parser.y"
6126 >  case 579:
6127 > #line 2828 "conf_parser.y" /* yacc.c:1646  */
6128      {
6129    ConfigFileEntry.oper_umodes |= UMODE_SPY;
6130   }
6131 + #line 6132 "conf_parser.c" /* yacc.c:1646  */
6132      break;
6133  
6134 <  case 623:
6135 <
7852 < /* Line 1455 of yacc.c  */
7853 < #line 3547 "ircd_parser.y"
6134 >  case 580:
6135 > #line 2831 "conf_parser.y" /* yacc.c:1646  */
6136      {
6137    ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6138   }
6139 + #line 6140 "conf_parser.c" /* yacc.c:1646  */
6140      break;
6141  
6142 <  case 624:
6143 <
7861 < /* Line 1455 of yacc.c  */
7862 < #line 3550 "ircd_parser.y"
7863 <    {
7864 <  ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
7865 < }
7866 <    break;
7867 <
7868 <  case 625:
7869 <
7870 < /* Line 1455 of yacc.c  */
7871 < #line 3553 "ircd_parser.y"
6142 >  case 581:
6143 > #line 2834 "conf_parser.y" /* yacc.c:1646  */
6144      {
6145    ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6146   }
6147 + #line 6148 "conf_parser.c" /* yacc.c:1646  */
6148      break;
6149  
6150 <  case 626:
6151 <
7879 < /* Line 1455 of yacc.c  */
7880 < #line 3556 "ircd_parser.y"
6150 >  case 582:
6151 > #line 2837 "conf_parser.y" /* yacc.c:1646  */
6152      {
6153    ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6154   }
6155 + #line 6156 "conf_parser.c" /* yacc.c:1646  */
6156      break;
6157  
6158 <  case 627:
6159 <
7888 < /* Line 1455 of yacc.c  */
7889 < #line 3559 "ircd_parser.y"
6158 >  case 583:
6159 > #line 2840 "conf_parser.y" /* yacc.c:1646  */
6160      {
6161    ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6162   }
6163 + #line 6164 "conf_parser.c" /* yacc.c:1646  */
6164      break;
6165  
6166 <  case 628:
6167 <
7897 < /* Line 1455 of yacc.c  */
7898 < #line 3562 "ircd_parser.y"
6166 >  case 584:
6167 > #line 2843 "conf_parser.y" /* yacc.c:1646  */
6168      {
6169    ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6170   }
6171 + #line 6172 "conf_parser.c" /* yacc.c:1646  */
6172      break;
6173  
6174 <  case 629:
6175 <
7906 < /* Line 1455 of yacc.c  */
7907 < #line 3565 "ircd_parser.y"
6174 >  case 585:
6175 > #line 2846 "conf_parser.y" /* yacc.c:1646  */
6176      {
6177    ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6178   }
6179 + #line 6180 "conf_parser.c" /* yacc.c:1646  */
6180      break;
6181  
6182 <  case 630:
6183 <
7915 < /* Line 1455 of yacc.c  */
7916 < #line 3568 "ircd_parser.y"
6182 >  case 586:
6183 > #line 2849 "conf_parser.y" /* yacc.c:1646  */
6184      {
6185    ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6186   }
6187 + #line 6188 "conf_parser.c" /* yacc.c:1646  */
6188      break;
6189  
6190 <  case 631:
6191 <
7924 < /* Line 1455 of yacc.c  */
7925 < #line 3573 "ircd_parser.y"
6190 >  case 587:
6191 > #line 2852 "conf_parser.y" /* yacc.c:1646  */
6192      {
6193 <  ConfigFileEntry.oper_only_umodes = 0;
6193 >  ConfigFileEntry.oper_umodes |= UMODE_REGONLY;
6194   }
6195 + #line 6196 "conf_parser.c" /* yacc.c:1646  */
6196      break;
6197  
6198 <  case 635:
6199 <
7933 < /* Line 1455 of yacc.c  */
7934 < #line 3579 "ircd_parser.y"
6198 >  case 588:
6199 > #line 2855 "conf_parser.y" /* yacc.c:1646  */
6200      {
6201 <  ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6201 >  ConfigFileEntry.oper_umodes |= UMODE_FARCONNECT;
6202   }
6203 + #line 6204 "conf_parser.c" /* yacc.c:1646  */
6204      break;
6205  
6206 <  case 636:
6207 <
7942 < /* Line 1455 of yacc.c  */
7943 < #line 3582 "ircd_parser.y"
6206 >  case 589:
6207 > #line 2860 "conf_parser.y" /* yacc.c:1646  */
6208      {
6209 <  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6209 >  ConfigFileEntry.oper_only_umodes = 0;
6210   }
6211 + #line 6212 "conf_parser.c" /* yacc.c:1646  */
6212      break;
6213  
6214 <  case 637:
6215 <
7951 < /* Line 1455 of yacc.c  */
7952 < #line 3585 "ircd_parser.y"
6214 >  case 593:
6215 > #line 2866 "conf_parser.y" /* yacc.c:1646  */
6216      {
6217 <  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
6217 >  ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6218   }
6219 + #line 6220 "conf_parser.c" /* yacc.c:1646  */
6220      break;
6221  
6222 <  case 638:
6222 >  case 594:
6223 > #line 2869 "conf_parser.y" /* yacc.c:1646  */
6224 >    {
6225 >  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6226 > }
6227 > #line 6228 "conf_parser.c" /* yacc.c:1646  */
6228 >    break;
6229  
6230 < /* Line 1455 of yacc.c  */
6231 < #line 3588 "ircd_parser.y"
6230 >  case 595:
6231 > #line 2872 "conf_parser.y" /* yacc.c:1646  */
6232      {
6233    ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
6234   }
6235 + #line 6236 "conf_parser.c" /* yacc.c:1646  */
6236      break;
6237  
6238 <  case 639:
6239 <
7969 < /* Line 1455 of yacc.c  */
7970 < #line 3591 "ircd_parser.y"
6238 >  case 596:
6239 > #line 2875 "conf_parser.y" /* yacc.c:1646  */
6240      {
6241    ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
6242   }
6243 + #line 6244 "conf_parser.c" /* yacc.c:1646  */
6244      break;
6245  
6246 <  case 640:
6247 <
6248 < /* Line 1455 of yacc.c  */
7979 < #line 3594 "ircd_parser.y"
7980 <    {
6246 >  case 597:
6247 > #line 2878 "conf_parser.y" /* yacc.c:1646  */
6248 >    {
6249    ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
6250   }
6251 + #line 6252 "conf_parser.c" /* yacc.c:1646  */
6252      break;
6253  
6254 <  case 641:
6255 <
7987 < /* Line 1455 of yacc.c  */
7988 < #line 3597 "ircd_parser.y"
6254 >  case 598:
6255 > #line 2881 "conf_parser.y" /* yacc.c:1646  */
6256      {
6257    ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
6258   }
6259 + #line 6260 "conf_parser.c" /* yacc.c:1646  */
6260      break;
6261  
6262 <  case 642:
6262 >  case 599:
6263 > #line 2884 "conf_parser.y" /* yacc.c:1646  */
6264 >    {
6265 >  ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
6266 > }
6267 > #line 6268 "conf_parser.c" /* yacc.c:1646  */
6268 >    break;
6269  
6270 < /* Line 1455 of yacc.c  */
6271 < #line 3600 "ircd_parser.y"
6270 >  case 600:
6271 > #line 2887 "conf_parser.y" /* yacc.c:1646  */
6272      {
6273    ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
6274   }
6275 + #line 6276 "conf_parser.c" /* yacc.c:1646  */
6276      break;
6277  
6278 <  case 643:
6279 <
8005 < /* Line 1455 of yacc.c  */
8006 < #line 3603 "ircd_parser.y"
6278 >  case 601:
6279 > #line 2890 "conf_parser.y" /* yacc.c:1646  */
6280      {
6281    ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
6282   }
6283 + #line 6284 "conf_parser.c" /* yacc.c:1646  */
6284      break;
6285  
6286 <  case 644:
6287 <
8014 < /* Line 1455 of yacc.c  */
8015 < #line 3606 "ircd_parser.y"
6286 >  case 602:
6287 > #line 2893 "conf_parser.y" /* yacc.c:1646  */
6288      {
6289    ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
6290   }
6291 + #line 6292 "conf_parser.c" /* yacc.c:1646  */
6292      break;
6293  
6294 <  case 645:
6295 <
8023 < /* Line 1455 of yacc.c  */
8024 < #line 3609 "ircd_parser.y"
6294 >  case 603:
6295 > #line 2896 "conf_parser.y" /* yacc.c:1646  */
6296      {
6297    ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
6298   }
6299 + #line 6300 "conf_parser.c" /* yacc.c:1646  */
6300      break;
6301  
6302 <  case 646:
6303 <
8032 < /* Line 1455 of yacc.c  */
8033 < #line 3612 "ircd_parser.y"
6302 >  case 604:
6303 > #line 2899 "conf_parser.y" /* yacc.c:1646  */
6304      {
6305    ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
6306   }
6307 + #line 6308 "conf_parser.c" /* yacc.c:1646  */
6308      break;
6309  
6310 <  case 647:
6311 <
8041 < /* Line 1455 of yacc.c  */
8042 < #line 3615 "ircd_parser.y"
8043 <    {
8044 <  ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
8045 < }
8046 <    break;
8047 <
8048 <  case 648:
8049 <
8050 < /* Line 1455 of yacc.c  */
8051 < #line 3618 "ircd_parser.y"
6310 >  case 605:
6311 > #line 2902 "conf_parser.y" /* yacc.c:1646  */
6312      {
6313    ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
6314   }
6315 + #line 6316 "conf_parser.c" /* yacc.c:1646  */
6316      break;
6317  
6318 <  case 649:
6319 <
8059 < /* Line 1455 of yacc.c  */
8060 < #line 3621 "ircd_parser.y"
6318 >  case 606:
6319 > #line 2905 "conf_parser.y" /* yacc.c:1646  */
6320      {
6321    ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
6322   }
6323 + #line 6324 "conf_parser.c" /* yacc.c:1646  */
6324      break;
6325  
6326 <  case 650:
6327 <
8068 < /* Line 1455 of yacc.c  */
8069 < #line 3624 "ircd_parser.y"
6326 >  case 607:
6327 > #line 2908 "conf_parser.y" /* yacc.c:1646  */
6328      {
6329    ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
6330   }
6331 + #line 6332 "conf_parser.c" /* yacc.c:1646  */
6332      break;
6333  
6334 <  case 651:
6335 <
8077 < /* Line 1455 of yacc.c  */
8078 < #line 3627 "ircd_parser.y"
6334 >  case 608:
6335 > #line 2911 "conf_parser.y" /* yacc.c:1646  */
6336      {
6337    ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
6338   }
6339 + #line 6340 "conf_parser.c" /* yacc.c:1646  */
6340      break;
6341  
6342 <  case 652:
6343 <
8086 < /* Line 1455 of yacc.c  */
8087 < #line 3630 "ircd_parser.y"
6342 >  case 609:
6343 > #line 2914 "conf_parser.y" /* yacc.c:1646  */
6344      {
6345    ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
6346   }
6347 + #line 6348 "conf_parser.c" /* yacc.c:1646  */
6348      break;
6349  
6350 <  case 653:
6351 <
8095 < /* Line 1455 of yacc.c  */
8096 < #line 3633 "ircd_parser.y"
6350 >  case 610:
6351 > #line 2917 "conf_parser.y" /* yacc.c:1646  */
6352      {
6353    ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
6354   }
6355 + #line 6356 "conf_parser.c" /* yacc.c:1646  */
6356      break;
6357  
6358 <  case 654:
6359 <
8104 < /* Line 1455 of yacc.c  */
8105 < #line 3638 "ircd_parser.y"
8106 <    {
8107 <  ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
8108 < }
8109 <    break;
8110 <
8111 <  case 655:
8112 <
8113 < /* Line 1455 of yacc.c  */
8114 < #line 3643 "ircd_parser.y"
8115 <    {
8116 <  ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
8117 < }
8118 <    break;
8119 <
8120 <  case 656:
8121 <
8122 < /* Line 1455 of yacc.c  */
8123 < #line 3648 "ircd_parser.y"
8124 <    {
8125 <  ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
8126 < }
8127 <    break;
8128 <
8129 <  case 657:
8130 <
8131 < /* Line 1455 of yacc.c  */
8132 < #line 3653 "ircd_parser.y"
8133 <    {
8134 <  ConfigFileEntry.client_flood = (yyvsp[(3) - (4)].number);
8135 < }
8136 <    break;
8137 <
8138 <  case 658:
8139 <
8140 < /* Line 1455 of yacc.c  */
8141 < #line 3658 "ircd_parser.y"
8142 <    {
8143 <  ConfigFileEntry.dot_in_ip6_addr = yylval.number;
8144 < }
8145 <    break;
8146 <
8147 <  case 659:
8148 <
8149 < /* Line 1455 of yacc.c  */
8150 < #line 3666 "ircd_parser.y"
6358 >  case 611:
6359 > #line 2920 "conf_parser.y" /* yacc.c:1646  */
6360      {
6361 <  if (conf_parser_ctx.pass == 2)
8153 <  {
8154 <    yy_conf = make_conf_item(GDENY_TYPE);
8155 <    yy_aconf = map_to_conf(yy_conf);
8156 <  }
6361 >  ConfigFileEntry.oper_only_umodes |= UMODE_REGONLY;
6362   }
6363 + #line 6364 "conf_parser.c" /* yacc.c:1646  */
6364      break;
6365  
6366 <  case 660:
6367 <
8162 < /* Line 1455 of yacc.c  */
8163 < #line 3673 "ircd_parser.y"
8164 <    {
8165 <  if (conf_parser_ctx.pass == 2)
8166 <  {
8167 <    /*
8168 <     * since we re-allocate yy_conf/yy_aconf after the end of action=, at the
8169 <     * end we will have one extra, so we should free it.
8170 <     */
8171 <    if (yy_conf->name == NULL || yy_aconf->user == NULL)
8172 <    {
8173 <      delete_conf_item(yy_conf);
8174 <      yy_conf = NULL;
8175 <      yy_aconf = NULL;
8176 <    }
8177 <  }
8178 < }
8179 <    break;
8180 <
8181 <  case 670:
8182 <
8183 < /* Line 1455 of yacc.c  */
8184 < #line 3699 "ircd_parser.y"
8185 <    {
8186 <  if (conf_parser_ctx.pass == 2)
8187 <    ConfigFileEntry.glines = yylval.number;
8188 < }
8189 <    break;
8190 <
8191 <  case 671:
8192 <
8193 < /* Line 1455 of yacc.c  */
8194 < #line 3705 "ircd_parser.y"
8195 <    {
8196 <  if (conf_parser_ctx.pass == 2)
8197 <    ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
8198 < }
8199 <    break;
8200 <
8201 <  case 672:
8202 <
8203 < /* Line 1455 of yacc.c  */
8204 < #line 3711 "ircd_parser.y"
8205 <    {
8206 <  if (conf_parser_ctx.pass == 2)
8207 <    ConfigFileEntry.gline_logging = 0;
8208 < }
8209 <    break;
8210 <
8211 <  case 676:
8212 <
8213 < /* Line 1455 of yacc.c  */
8214 < #line 3717 "ircd_parser.y"
8215 <    {
8216 <  if (conf_parser_ctx.pass == 2)
8217 <    ConfigFileEntry.gline_logging |= GDENY_REJECT;
8218 < }
8219 <    break;
8220 <
8221 <  case 677:
8222 <
8223 < /* Line 1455 of yacc.c  */
8224 < #line 3721 "ircd_parser.y"
8225 <    {
8226 <  if (conf_parser_ctx.pass == 2)
8227 <    ConfigFileEntry.gline_logging |= GDENY_BLOCK;
8228 < }
8229 <    break;
8230 <
8231 <  case 678:
8232 <
8233 < /* Line 1455 of yacc.c  */
8234 < #line 3727 "ircd_parser.y"
8235 <    {
8236 <  if (conf_parser_ctx.pass == 2)
8237 <  {
8238 <    struct split_nuh_item nuh;
8239 <
8240 <    nuh.nuhmask  = yylval.string;
8241 <    nuh.nickptr  = NULL;
8242 <    nuh.userptr  = userbuf;
8243 <    nuh.hostptr  = hostbuf;
8244 <
8245 <    nuh.nicksize = 0;
8246 <    nuh.usersize = sizeof(userbuf);
8247 <    nuh.hostsize = sizeof(hostbuf);
8248 <
8249 <    split_nuh(&nuh);
8250 <
8251 <    if (yy_aconf->user == NULL)
8252 <    {
8253 <      DupString(yy_aconf->user, userbuf);
8254 <      DupString(yy_aconf->host, hostbuf);
8255 <    }
8256 <    else
8257 <    {
8258 <      struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
8259 <
8260 <      DupString(yy_tmp->user, userbuf);
8261 <      DupString(yy_tmp->host, hostbuf);
8262 <
8263 <      dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
8264 <    }
8265 <  }
8266 < }
8267 <    break;
8268 <
8269 <  case 679:
8270 <
8271 < /* Line 1455 of yacc.c  */
8272 < #line 3761 "ircd_parser.y"
6366 >  case 612:
6367 > #line 2923 "conf_parser.y" /* yacc.c:1646  */
6368      {
6369 <  if (conf_parser_ctx.pass == 2)  
8275 <  {
8276 <    MyFree(yy_conf->name);
8277 <    DupString(yy_conf->name, yylval.string);
8278 <  }
6369 >  ConfigFileEntry.oper_only_umodes |= UMODE_FARCONNECT;
6370   }
6371 + #line 6372 "conf_parser.c" /* yacc.c:1646  */
6372      break;
6373  
6374 <  case 680:
6375 <
8284 < /* Line 1455 of yacc.c  */
8285 < #line 3770 "ircd_parser.y"
6374 >  case 613:
6375 > #line 2928 "conf_parser.y" /* yacc.c:1646  */
6376      {
6377 <  if (conf_parser_ctx.pass == 2)
8288 <    yy_aconf->flags = 0;
6377 >  ConfigFileEntry.min_nonwildcard = (yyvsp[-1].number);
6378   }
6379 + #line 6380 "conf_parser.c" /* yacc.c:1646  */
6380      break;
6381  
6382 <  case 681:
6383 <
8294 < /* Line 1455 of yacc.c  */
8295 < #line 3774 "ircd_parser.y"
8296 <    {
8297 <  if (conf_parser_ctx.pass == 2)
8298 <  {
8299 <    struct CollectItem *yy_tmp = NULL;
8300 <    dlink_node *ptr, *next_ptr;
8301 <
8302 <    DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
8303 <    {
8304 <      struct AccessItem *new_aconf;
8305 <      struct ConfItem *new_conf;
8306 <
8307 <      yy_tmp = ptr->data;
8308 <      new_conf = make_conf_item(GDENY_TYPE);
8309 <      new_aconf = map_to_conf(new_conf);
8310 <
8311 <      new_aconf->flags = yy_aconf->flags;
8312 <
8313 <      if (yy_conf->name != NULL)
8314 <        DupString(new_conf->name, yy_conf->name);
8315 <      else
8316 <        DupString(new_conf->name, "*");
8317 <      if (yy_aconf->user != NULL)
8318 <         DupString(new_aconf->user, yy_tmp->user);
8319 <      else  
8320 <        DupString(new_aconf->user, "*");
8321 <      if (yy_aconf->host != NULL)
8322 <        DupString(new_aconf->host, yy_tmp->host);
8323 <      else
8324 <        DupString(new_aconf->host, "*");
8325 <
8326 <      dlinkDelete(&yy_tmp->node, &col_conf_list);
8327 <    }
8328 <
8329 <    /*
8330 <     * In case someone has fed us with more than one action= after user/name
8331 <     * which would leak memory  -Michael
8332 <     */
8333 <    if (yy_conf->name == NULL || yy_aconf->user == NULL)
8334 <      delete_conf_item(yy_conf);
8335 <
8336 <    yy_conf = make_conf_item(GDENY_TYPE);
8337 <    yy_aconf = map_to_conf(yy_conf);
8338 <  }
8339 < }
8340 <    break;
8341 <
8342 <  case 684:
8343 <
8344 < /* Line 1455 of yacc.c  */
8345 < #line 3821 "ircd_parser.y"
6382 >  case 614:
6383 > #line 2933 "conf_parser.y" /* yacc.c:1646  */
6384      {
6385 <  if (conf_parser_ctx.pass == 2)
8348 <    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 685:
6391 <
8354 < /* Line 1455 of yacc.c  */
8355 < #line 3825 "ircd_parser.y"
6390 >  case 615:
6391 > #line 2938 "conf_parser.y" /* yacc.c:1646  */
6392      {
6393 <  if (conf_parser_ctx.pass == 2)
8358 <    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 708:
6399 <
8364 < /* Line 1455 of yacc.c  */
8365 < #line 3849 "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 709:
6407 <
8373 < /* Line 1455 of yacc.c  */
8374 < #line 3854 "ircd_parser.y"
8375 <    {
8376 <  ConfigChannel.restrict_channels = yylval.number;
8377 < }
8378 <    break;
8379 <
8380 <  case 710:
8381 <
8382 < /* Line 1455 of yacc.c  */
8383 < #line 3859 "ircd_parser.y"
8384 <    {
8385 <  ConfigChannel.disable_local_channels = yylval.number;
8386 < }
8387 <    break;
8388 <
8389 <  case 711:
8390 <
8391 < /* Line 1455 of yacc.c  */
8392 < #line 3864 "ircd_parser.y"
8393 <    {
8394 <  ConfigChannel.use_except = yylval.number;
8395 < }
8396 <    break;
8397 <
8398 <  case 712:
8399 <
8400 < /* Line 1455 of yacc.c  */
8401 < #line 3869 "ircd_parser.y"
6406 >  case 635:
6407 > #line 2972 "conf_parser.y" /* yacc.c:1646  */
6408      {
6409 <  ConfigChannel.use_invex = 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 713:
6415 <
8409 < /* Line 1455 of yacc.c  */
8410 < #line 3874 "ircd_parser.y"
6414 >  case 636:
6415 > #line 2977 "conf_parser.y" /* yacc.c:1646  */
6416      {
6417 <  ConfigChannel.use_knock = 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 714:
6423 <
8418 < /* Line 1455 of yacc.c  */
8419 < #line 3879 "ircd_parser.y"
6422 >  case 637:
6423 > #line 2982 "conf_parser.y" /* yacc.c:1646  */
6424      {
6425 <  ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
6425 >  ConfigChannel.knock_client_count = (yyvsp[-1].number);
6426   }
6427 + #line 6428 "conf_parser.c" /* yacc.c:1646  */
6428      break;
6429  
6430 <  case 715:
6431 <
8427 < /* Line 1455 of yacc.c  */
8428 < #line 3884 "ircd_parser.y"
6430 >  case 638:
6431 > #line 2987 "conf_parser.y" /* yacc.c:1646  */
6432      {
6433 <  ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
6433 >  ConfigChannel.knock_client_time = (yyvsp[-1].number);
6434   }
6435 + #line 6436 "conf_parser.c" /* yacc.c:1646  */
6436      break;
6437  
6438 <  case 716:
6439 <
8436 < /* Line 1455 of yacc.c  */
8437 < #line 3889 "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 717:
6447 <
8445 < /* Line 1455 of yacc.c  */
8446 < #line 3894 "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 718:
6455 <
8454 < /* Line 1455 of yacc.c  */
8455 < #line 3899 "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 719:
6463 <
8463 < /* Line 1455 of yacc.c  */
8464 < #line 3904 "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 720:
6471 <
8472 < /* Line 1455 of yacc.c  */
8473 < #line 3909 "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 721:
6479 <
8481 < /* Line 1455 of yacc.c  */
8482 < #line 3914 "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 722:
6487 <
8490 < /* Line 1455 of yacc.c  */
8491 < #line 3919 "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 723:
6495 <
8499 < /* Line 1455 of yacc.c  */
8500 < #line 3924 "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 724:
6503 <
8508 < /* Line 1455 of yacc.c  */
8509 < #line 3929 "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 725:
6511 <
8517 < /* Line 1455 of yacc.c  */
8518 < #line 3934 "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 737:
6520 <
8526 < /* Line 1455 of yacc.c  */
8527 < #line 3953 "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 738:
6529 <
8536 < /* Line 1455 of yacc.c  */
8537 < #line 3959 "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 739:
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 1455 of yacc.c  */
6547 < #line 3965 "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 740:
6559 <
8559 < /* Line 1455 of yacc.c  */
8560 < #line 3974 "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 741:
6577 <
8577 < /* Line 1455 of yacc.c  */
8578 < #line 3988 "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 742:
6586 <
8587 < /* Line 1455 of yacc.c  */
8588 < #line 3994 "ircd_parser.y"
8589 <    {
8590 <  if (conf_parser_ctx.pass == 2)
8591 <    ConfigServerHide.disable_hidden = yylval.number;
8592 < }
8593 <    break;
8594 <
8595 <  case 743:
8596 <
8597 < /* Line 1455 of yacc.c  */
8598 < #line 4000 "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 <
8607 < /* Line 1455 of yacc.c  */
8608 < #line 8609 "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 8616 | 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 8631 | 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 8642 | 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 <          {
8671 <            yyerror (YY_("syntax error"));
8672 <            if (yysize != 0)
8673 <              goto yyexhaustedlab;
8674 <          }
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 8681 | 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 8713 | 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 8726 | 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 8778 | 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 8790 | 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 8810 | Line 6818 | yyreturn:
6818    if (yymsg != yymsgbuf)
6819      YYSTACK_FREE (yymsg);
6820   #endif
6821 <  /* Make sure YYID is used.  */
8814 <  return YYID (yyresult);
6821 >  return yyresult;
6822   }
8816
8817
8818

Comparing:
ircd-hybrid-7.2/src/ircd_parser.c (property svn:keywords), Revision 1024 by michael, Sun Nov 1 23:14:25 2009 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)