ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/branches/8.2.x/src/conf_parser.c
Revision: 7110
Committed: Sat Jan 23 20:20:23 2016 UTC (10 years, 6 months ago) by michael
Content type: text/x-csrc
File size: 218543 byte(s)
Log Message:
- Re-generate parser files

File Contents

# Content
1 /* A Bison parser, made by GNU Bison 3.0.4. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
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
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
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
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
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34 simplifying the original so-called "semantic" parser. */
35
36 /* All symbols defined below should begin with yy or YY, to avoid
37 infringing on user name space. This should be done even for local
38 variables, as they might otherwise be expanded by user macros.
39 There are some unavoidable exceptions within include files to
40 define necessary library symbols; they are noted "INFRINGES ON
41 USER NAME SPACE" below. */
42
43 /* Identify Bison output. */
44 #define YYBISON 1
45
46 /* Bison version. */
47 #define YYBISON_VERSION "3.0.4"
48
49 /* Skeleton name. */
50 #define YYSKELETON_NAME "yacc.c"
51
52 /* Pure parsers. */
53 #define YYPURE 0
54
55 /* Push parsers. */
56 #define YYPUSH 0
57
58 /* Pull parsers. */
59 #define YYPULL 1
60
61
62
63
64 /* Copy the first part of user declarations. */
65 #line 28 "conf_parser.y" /* yacc.c:339 */
66
67
68 #include <sys/types.h>
69 #include <string.h>
70
71 #include "config.h"
72 #include "stdinc.h"
73 #include "ircd.h"
74 #include "list.h"
75 #include "conf.h"
76 #include "conf_class.h"
77 #include "conf_pseudo.h"
78 #include "event.h"
79 #include "id.h"
80 #include "log.h"
81 #include "client.h" /* for UMODE_SERVNOTICE only */
82 #include "irc_string.h"
83 #include "memory.h"
84 #include "modules.h"
85 #include "server.h"
86 #include "hostmask.h"
87 #include "send.h"
88 #include "listener.h"
89 #include "resv.h"
90 #include "numeric.h"
91 #include "user.h"
92 #include "motd.h"
93
94 int yylex(void);
95
96 static struct
97 {
98 struct
99 {
100 dlink_list list;
101 } mask,
102 leaf,
103 hub;
104
105 struct
106 {
107 char buf[IRCD_BUFSIZE];
108 } name,
109 nick,
110 user,
111 host,
112 addr,
113 bind,
114 file,
115 ciph,
116 cert,
117 rpass,
118 spass,
119 whois,
120 class,
121 target,
122 prepend,
123 command;
124
125 struct
126 {
127 unsigned int value;
128 } flags,
129 modes,
130 size,
131 type,
132 port,
133 aftype,
134 ping_freq,
135 max_perip,
136 con_freq,
137 min_idle,
138 max_idle,
139 max_total,
140 max_global,
141 max_local,
142 max_ident,
143 max_sendq,
144 max_recvq,
145 max_channels,
146 cidr_bitlen_ipv4,
147 cidr_bitlen_ipv6,
148 number_per_cidr;
149 } block_state;
150
151 static void
152 reset_block_state(void)
153 {
154 dlink_node *node = NULL, *node_next = NULL;
155
156 DLINK_FOREACH_SAFE(node, node_next, block_state.mask.list.head)
157 {
158 xfree(node->data);
159 dlinkDelete(node, &block_state.mask.list);
160 free_dlink_node(node);
161 }
162
163 DLINK_FOREACH_SAFE(node, node_next, block_state.leaf.list.head)
164 {
165 xfree(node->data);
166 dlinkDelete(node, &block_state.leaf.list);
167 free_dlink_node(node);
168 }
169
170 DLINK_FOREACH_SAFE(node, node_next, block_state.hub.list.head)
171 {
172 xfree(node->data);
173 dlinkDelete(node, &block_state.hub.list);
174 free_dlink_node(node);
175 }
176
177 memset(&block_state, 0, sizeof(block_state));
178 }
179
180
181 #line 182 "conf_parser.c" /* yacc.c:339 */
182
183 # ifndef YY_NULLPTR
184 # if defined __cplusplus && 201103L <= __cplusplus
185 # define YY_NULLPTR nullptr
186 # else
187 # define YY_NULLPTR 0
188 # endif
189 # endif
190
191 /* Enabling verbose error messages. */
192 #ifdef YYERROR_VERBOSE
193 # undef YYERROR_VERBOSE
194 # define YYERROR_VERBOSE 1
195 #else
196 # define YYERROR_VERBOSE 0
197 #endif
198
199 /* In a future release of Bison, this section will be replaced
200 by #include "y.tab.h". */
201 #ifndef YY_YY_CONF_PARSER_H_INCLUDED
202 # define YY_YY_CONF_PARSER_H_INCLUDED
203 /* Debug traces. */
204 #ifndef YYDEBUG
205 # define YYDEBUG 0
206 #endif
207 #if YYDEBUG
208 extern int yydebug;
209 #endif
210
211 /* Token type. */
212 #ifndef YYTOKENTYPE
213 # define YYTOKENTYPE
214 enum yytokentype
215 {
216 ACCEPT_PASSWORD = 258,
217 ADMIN = 259,
218 AFTYPE = 260,
219 ANTI_NICK_FLOOD = 261,
220 ANTI_SPAM_EXIT_MESSAGE_TIME = 262,
221 AUTOCONN = 263,
222 AWAY_COUNT = 264,
223 AWAY_TIME = 265,
224 BYTES = 266,
225 KBYTES = 267,
226 MBYTES = 268,
227 CALLER_ID_WAIT = 269,
228 CAN_FLOOD = 270,
229 CHANNEL = 271,
230 CIDR_BITLEN_IPV4 = 272,
231 CIDR_BITLEN_IPV6 = 273,
232 CLASS = 274,
233 CLOSE = 275,
234 CONNECT = 276,
235 CONNECTFREQ = 277,
236 CYCLE_ON_HOST_CHANGE = 278,
237 DEFAULT_FLOODCOUNT = 279,
238 DEFAULT_JOIN_FLOOD_COUNT = 280,
239 DEFAULT_JOIN_FLOOD_TIME = 281,
240 DEFAULT_MAX_CLIENTS = 282,
241 DENY = 283,
242 DESCRIPTION = 284,
243 DIE = 285,
244 DISABLE_AUTH = 286,
245 DISABLE_FAKE_CHANNELS = 287,
246 DISABLE_REMOTE_COMMANDS = 288,
247 DLINE_MIN_CIDR = 289,
248 DLINE_MIN_CIDR6 = 290,
249 DOTS_IN_IDENT = 291,
250 EMAIL = 292,
251 ENCRYPTED = 293,
252 EXCEED_LIMIT = 294,
253 EXEMPT = 295,
254 FAILED_OPER_NOTICE = 296,
255 FLATTEN_LINKS = 297,
256 FLATTEN_LINKS_DELAY = 298,
257 FLATTEN_LINKS_FILE = 299,
258 GECOS = 300,
259 GENERAL = 301,
260 HIDDEN = 302,
261 HIDDEN_NAME = 303,
262 HIDE_CHANS = 304,
263 HIDE_IDLE = 305,
264 HIDE_IDLE_FROM_OPERS = 306,
265 HIDE_SERVER_IPS = 307,
266 HIDE_SERVERS = 308,
267 HIDE_SERVICES = 309,
268 HOST = 310,
269 HUB = 311,
270 HUB_MASK = 312,
271 IGNORE_BOGUS_TS = 313,
272 INVISIBLE_ON_CONNECT = 314,
273 INVITE_CLIENT_COUNT = 315,
274 INVITE_CLIENT_TIME = 316,
275 INVITE_DELAY_CHANNEL = 317,
276 IP = 318,
277 IRCD_AUTH = 319,
278 IRCD_FLAGS = 320,
279 IRCD_SID = 321,
280 JOIN = 322,
281 KILL = 323,
282 KILL_CHASE_TIME_LIMIT = 324,
283 KLINE = 325,
284 KLINE_EXEMPT = 326,
285 KLINE_MIN_CIDR = 327,
286 KLINE_MIN_CIDR6 = 328,
287 KNOCK_CLIENT_COUNT = 329,
288 KNOCK_CLIENT_TIME = 330,
289 KNOCK_DELAY_CHANNEL = 331,
290 LEAF_MASK = 332,
291 LISTEN = 333,
292 MASK = 334,
293 MAX_ACCEPT = 335,
294 MAX_BANS = 336,
295 MAX_CHANNELS = 337,
296 MAX_GLOBAL = 338,
297 MAX_IDENT = 339,
298 MAX_IDLE = 340,
299 MAX_LOCAL = 341,
300 MAX_NICK_CHANGES = 342,
301 MAX_NICK_LENGTH = 343,
302 MAX_NICK_TIME = 344,
303 MAX_NUMBER = 345,
304 MAX_TARGETS = 346,
305 MAX_TOPIC_LENGTH = 347,
306 MAX_WATCH = 348,
307 MIN_IDLE = 349,
308 MIN_NONWILDCARD = 350,
309 MIN_NONWILDCARD_SIMPLE = 351,
310 MODULE = 352,
311 MODULES = 353,
312 MOTD = 354,
313 NAME = 355,
314 NEED_IDENT = 356,
315 NEED_PASSWORD = 357,
316 NETWORK_DESC = 358,
317 NETWORK_NAME = 359,
318 NICK = 360,
319 NO_OPER_FLOOD = 361,
320 NO_TILDE = 362,
321 NUMBER = 363,
322 NUMBER_PER_CIDR = 364,
323 NUMBER_PER_IP = 365,
324 OPER_ONLY_UMODES = 366,
325 OPER_UMODES = 367,
326 OPERATOR = 368,
327 OPERS_BYPASS_CALLERID = 369,
328 PACE_WAIT = 370,
329 PACE_WAIT_SIMPLE = 371,
330 PASSWORD = 372,
331 PATH = 373,
332 PING_COOKIE = 374,
333 PING_TIME = 375,
334 PORT = 376,
335 QSTRING = 377,
336 RANDOM_IDLE = 378,
337 REASON = 379,
338 REDIRPORT = 380,
339 REDIRSERV = 381,
340 REHASH = 382,
341 REMOTE = 383,
342 REMOTEBAN = 384,
343 RESV = 385,
344 RESV_EXEMPT = 386,
345 RSA_PRIVATE_KEY_FILE = 387,
346 SECONDS = 388,
347 MINUTES = 389,
348 HOURS = 390,
349 DAYS = 391,
350 WEEKS = 392,
351 MONTHS = 393,
352 YEARS = 394,
353 SEND_PASSWORD = 395,
354 SENDQ = 396,
355 SERVERHIDE = 397,
356 SERVERINFO = 398,
357 SHORT_MOTD = 399,
358 SPOOF = 400,
359 SPOOF_NOTICE = 401,
360 SQUIT = 402,
361 SSL_CERTIFICATE_FILE = 403,
362 SSL_CERTIFICATE_FINGERPRINT = 404,
363 SSL_CONNECTION_REQUIRED = 405,
364 SSL_DH_ELLIPTIC_CURVE = 406,
365 SSL_DH_PARAM_FILE = 407,
366 SSL_MESSAGE_DIGEST_ALGORITHM = 408,
367 STATS_E_DISABLED = 409,
368 STATS_I_OPER_ONLY = 410,
369 STATS_K_OPER_ONLY = 411,
370 STATS_M_OPER_ONLY = 412,
371 STATS_O_OPER_ONLY = 413,
372 STATS_P_OPER_ONLY = 414,
373 STATS_U_OPER_ONLY = 415,
374 T_ALL = 416,
375 T_BOTS = 417,
376 T_CALLERID = 418,
377 T_CCONN = 419,
378 T_COMMAND = 420,
379 T_CLUSTER = 421,
380 T_DEAF = 422,
381 T_DEBUG = 423,
382 T_DLINE = 424,
383 T_EXTERNAL = 425,
384 T_FARCONNECT = 426,
385 T_FILE = 427,
386 T_FULL = 428,
387 T_GLOBOPS = 429,
388 T_INVISIBLE = 430,
389 T_IPV4 = 431,
390 T_IPV6 = 432,
391 T_LOCOPS = 433,
392 T_LOG = 434,
393 T_NCHANGE = 435,
394 T_NONONREG = 436,
395 T_OPME = 437,
396 T_PREPEND = 438,
397 T_PSEUDO = 439,
398 T_RECVQ = 440,
399 T_REJ = 441,
400 T_RESTART = 442,
401 T_SERVER = 443,
402 T_SERVICE = 444,
403 T_SERVNOTICE = 445,
404 T_SET = 446,
405 T_SHARED = 447,
406 T_SIZE = 448,
407 T_SKILL = 449,
408 T_SOFTCALLERID = 450,
409 T_SPY = 451,
410 T_SSL = 452,
411 T_SSL_CIPHER_LIST = 453,
412 T_TARGET = 454,
413 T_UMODES = 455,
414 T_UNAUTH = 456,
415 T_UNDLINE = 457,
416 T_UNLIMITED = 458,
417 T_UNRESV = 459,
418 T_UNXLINE = 460,
419 T_WALLOP = 461,
420 T_WALLOPS = 462,
421 T_WEBIRC = 463,
422 TBOOL = 464,
423 THROTTLE_COUNT = 465,
424 THROTTLE_TIME = 466,
425 TKLINE_EXPIRE_NOTICES = 467,
426 TMASKED = 468,
427 TS_MAX_DELTA = 469,
428 TS_WARN_DELTA = 470,
429 TWODOTS = 471,
430 TYPE = 472,
431 UNKLINE = 473,
432 USE_LOGGING = 474,
433 USER = 475,
434 VHOST = 476,
435 VHOST6 = 477,
436 WARN_NO_CONNECT_BLOCK = 478,
437 WHOIS = 479,
438 XLINE = 480,
439 XLINE_EXEMPT = 481
440 };
441 #endif
442 /* Tokens. */
443 #define ACCEPT_PASSWORD 258
444 #define ADMIN 259
445 #define AFTYPE 260
446 #define ANTI_NICK_FLOOD 261
447 #define ANTI_SPAM_EXIT_MESSAGE_TIME 262
448 #define AUTOCONN 263
449 #define AWAY_COUNT 264
450 #define AWAY_TIME 265
451 #define BYTES 266
452 #define KBYTES 267
453 #define MBYTES 268
454 #define CALLER_ID_WAIT 269
455 #define CAN_FLOOD 270
456 #define CHANNEL 271
457 #define CIDR_BITLEN_IPV4 272
458 #define CIDR_BITLEN_IPV6 273
459 #define CLASS 274
460 #define CLOSE 275
461 #define CONNECT 276
462 #define CONNECTFREQ 277
463 #define CYCLE_ON_HOST_CHANGE 278
464 #define DEFAULT_FLOODCOUNT 279
465 #define DEFAULT_JOIN_FLOOD_COUNT 280
466 #define DEFAULT_JOIN_FLOOD_TIME 281
467 #define DEFAULT_MAX_CLIENTS 282
468 #define DENY 283
469 #define DESCRIPTION 284
470 #define DIE 285
471 #define DISABLE_AUTH 286
472 #define DISABLE_FAKE_CHANNELS 287
473 #define DISABLE_REMOTE_COMMANDS 288
474 #define DLINE_MIN_CIDR 289
475 #define DLINE_MIN_CIDR6 290
476 #define DOTS_IN_IDENT 291
477 #define EMAIL 292
478 #define ENCRYPTED 293
479 #define EXCEED_LIMIT 294
480 #define EXEMPT 295
481 #define FAILED_OPER_NOTICE 296
482 #define FLATTEN_LINKS 297
483 #define FLATTEN_LINKS_DELAY 298
484 #define FLATTEN_LINKS_FILE 299
485 #define GECOS 300
486 #define GENERAL 301
487 #define HIDDEN 302
488 #define HIDDEN_NAME 303
489 #define HIDE_CHANS 304
490 #define HIDE_IDLE 305
491 #define HIDE_IDLE_FROM_OPERS 306
492 #define HIDE_SERVER_IPS 307
493 #define HIDE_SERVERS 308
494 #define HIDE_SERVICES 309
495 #define HOST 310
496 #define HUB 311
497 #define HUB_MASK 312
498 #define IGNORE_BOGUS_TS 313
499 #define INVISIBLE_ON_CONNECT 314
500 #define INVITE_CLIENT_COUNT 315
501 #define INVITE_CLIENT_TIME 316
502 #define INVITE_DELAY_CHANNEL 317
503 #define IP 318
504 #define IRCD_AUTH 319
505 #define IRCD_FLAGS 320
506 #define IRCD_SID 321
507 #define JOIN 322
508 #define KILL 323
509 #define KILL_CHASE_TIME_LIMIT 324
510 #define KLINE 325
511 #define KLINE_EXEMPT 326
512 #define KLINE_MIN_CIDR 327
513 #define KLINE_MIN_CIDR6 328
514 #define KNOCK_CLIENT_COUNT 329
515 #define KNOCK_CLIENT_TIME 330
516 #define KNOCK_DELAY_CHANNEL 331
517 #define LEAF_MASK 332
518 #define LISTEN 333
519 #define MASK 334
520 #define MAX_ACCEPT 335
521 #define MAX_BANS 336
522 #define MAX_CHANNELS 337
523 #define MAX_GLOBAL 338
524 #define MAX_IDENT 339
525 #define MAX_IDLE 340
526 #define MAX_LOCAL 341
527 #define MAX_NICK_CHANGES 342
528 #define MAX_NICK_LENGTH 343
529 #define MAX_NICK_TIME 344
530 #define MAX_NUMBER 345
531 #define MAX_TARGETS 346
532 #define MAX_TOPIC_LENGTH 347
533 #define MAX_WATCH 348
534 #define MIN_IDLE 349
535 #define MIN_NONWILDCARD 350
536 #define MIN_NONWILDCARD_SIMPLE 351
537 #define MODULE 352
538 #define MODULES 353
539 #define MOTD 354
540 #define NAME 355
541 #define NEED_IDENT 356
542 #define NEED_PASSWORD 357
543 #define NETWORK_DESC 358
544 #define NETWORK_NAME 359
545 #define NICK 360
546 #define NO_OPER_FLOOD 361
547 #define NO_TILDE 362
548 #define NUMBER 363
549 #define NUMBER_PER_CIDR 364
550 #define NUMBER_PER_IP 365
551 #define OPER_ONLY_UMODES 366
552 #define OPER_UMODES 367
553 #define OPERATOR 368
554 #define OPERS_BYPASS_CALLERID 369
555 #define PACE_WAIT 370
556 #define PACE_WAIT_SIMPLE 371
557 #define PASSWORD 372
558 #define PATH 373
559 #define PING_COOKIE 374
560 #define PING_TIME 375
561 #define PORT 376
562 #define QSTRING 377
563 #define RANDOM_IDLE 378
564 #define REASON 379
565 #define REDIRPORT 380
566 #define REDIRSERV 381
567 #define REHASH 382
568 #define REMOTE 383
569 #define REMOTEBAN 384
570 #define RESV 385
571 #define RESV_EXEMPT 386
572 #define RSA_PRIVATE_KEY_FILE 387
573 #define SECONDS 388
574 #define MINUTES 389
575 #define HOURS 390
576 #define DAYS 391
577 #define WEEKS 392
578 #define MONTHS 393
579 #define YEARS 394
580 #define SEND_PASSWORD 395
581 #define SENDQ 396
582 #define SERVERHIDE 397
583 #define SERVERINFO 398
584 #define SHORT_MOTD 399
585 #define SPOOF 400
586 #define SPOOF_NOTICE 401
587 #define SQUIT 402
588 #define SSL_CERTIFICATE_FILE 403
589 #define SSL_CERTIFICATE_FINGERPRINT 404
590 #define SSL_CONNECTION_REQUIRED 405
591 #define SSL_DH_ELLIPTIC_CURVE 406
592 #define SSL_DH_PARAM_FILE 407
593 #define SSL_MESSAGE_DIGEST_ALGORITHM 408
594 #define STATS_E_DISABLED 409
595 #define STATS_I_OPER_ONLY 410
596 #define STATS_K_OPER_ONLY 411
597 #define STATS_M_OPER_ONLY 412
598 #define STATS_O_OPER_ONLY 413
599 #define STATS_P_OPER_ONLY 414
600 #define STATS_U_OPER_ONLY 415
601 #define T_ALL 416
602 #define T_BOTS 417
603 #define T_CALLERID 418
604 #define T_CCONN 419
605 #define T_COMMAND 420
606 #define T_CLUSTER 421
607 #define T_DEAF 422
608 #define T_DEBUG 423
609 #define T_DLINE 424
610 #define T_EXTERNAL 425
611 #define T_FARCONNECT 426
612 #define T_FILE 427
613 #define T_FULL 428
614 #define T_GLOBOPS 429
615 #define T_INVISIBLE 430
616 #define T_IPV4 431
617 #define T_IPV6 432
618 #define T_LOCOPS 433
619 #define T_LOG 434
620 #define T_NCHANGE 435
621 #define T_NONONREG 436
622 #define T_OPME 437
623 #define T_PREPEND 438
624 #define T_PSEUDO 439
625 #define T_RECVQ 440
626 #define T_REJ 441
627 #define T_RESTART 442
628 #define T_SERVER 443
629 #define T_SERVICE 444
630 #define T_SERVNOTICE 445
631 #define T_SET 446
632 #define T_SHARED 447
633 #define T_SIZE 448
634 #define T_SKILL 449
635 #define T_SOFTCALLERID 450
636 #define T_SPY 451
637 #define T_SSL 452
638 #define T_SSL_CIPHER_LIST 453
639 #define T_TARGET 454
640 #define T_UMODES 455
641 #define T_UNAUTH 456
642 #define T_UNDLINE 457
643 #define T_UNLIMITED 458
644 #define T_UNRESV 459
645 #define T_UNXLINE 460
646 #define T_WALLOP 461
647 #define T_WALLOPS 462
648 #define T_WEBIRC 463
649 #define TBOOL 464
650 #define THROTTLE_COUNT 465
651 #define THROTTLE_TIME 466
652 #define TKLINE_EXPIRE_NOTICES 467
653 #define TMASKED 468
654 #define TS_MAX_DELTA 469
655 #define TS_WARN_DELTA 470
656 #define TWODOTS 471
657 #define TYPE 472
658 #define UNKLINE 473
659 #define USE_LOGGING 474
660 #define USER 475
661 #define VHOST 476
662 #define VHOST6 477
663 #define WARN_NO_CONNECT_BLOCK 478
664 #define WHOIS 479
665 #define XLINE 480
666 #define XLINE_EXEMPT 481
667
668 /* Value type. */
669 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
670
671 union YYSTYPE
672 {
673 #line 144 "conf_parser.y" /* yacc.c:355 */
674
675 int number;
676 char *string;
677
678 #line 679 "conf_parser.c" /* yacc.c:355 */
679 };
680
681 typedef union YYSTYPE YYSTYPE;
682 # define YYSTYPE_IS_TRIVIAL 1
683 # define YYSTYPE_IS_DECLARED 1
684 #endif
685
686
687 extern YYSTYPE yylval;
688
689 int yyparse (void);
690
691 #endif /* !YY_YY_CONF_PARSER_H_INCLUDED */
692
693 /* Copy the second part of user declarations. */
694
695 #line 696 "conf_parser.c" /* yacc.c:358 */
696
697 #ifdef short
698 # undef short
699 #endif
700
701 #ifdef YYTYPE_UINT8
702 typedef YYTYPE_UINT8 yytype_uint8;
703 #else
704 typedef unsigned char yytype_uint8;
705 #endif
706
707 #ifdef YYTYPE_INT8
708 typedef YYTYPE_INT8 yytype_int8;
709 #else
710 typedef signed char yytype_int8;
711 #endif
712
713 #ifdef YYTYPE_UINT16
714 typedef YYTYPE_UINT16 yytype_uint16;
715 #else
716 typedef unsigned short int yytype_uint16;
717 #endif
718
719 #ifdef YYTYPE_INT16
720 typedef YYTYPE_INT16 yytype_int16;
721 #else
722 typedef short int yytype_int16;
723 #endif
724
725 #ifndef YYSIZE_T
726 # ifdef __SIZE_TYPE__
727 # define YYSIZE_T __SIZE_TYPE__
728 # elif defined size_t
729 # define YYSIZE_T size_t
730 # elif ! defined YYSIZE_T
731 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
732 # define YYSIZE_T size_t
733 # else
734 # define YYSIZE_T unsigned int
735 # endif
736 #endif
737
738 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
739
740 #ifndef YY_
741 # if defined YYENABLE_NLS && YYENABLE_NLS
742 # if ENABLE_NLS
743 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
744 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
745 # endif
746 # endif
747 # ifndef YY_
748 # define YY_(Msgid) Msgid
749 # endif
750 #endif
751
752 #ifndef YY_ATTRIBUTE
753 # if (defined __GNUC__ \
754 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
755 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
756 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
757 # else
758 # define YY_ATTRIBUTE(Spec) /* empty */
759 # endif
760 #endif
761
762 #ifndef YY_ATTRIBUTE_PURE
763 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
764 #endif
765
766 #ifndef YY_ATTRIBUTE_UNUSED
767 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
768 #endif
769
770 #if !defined _Noreturn \
771 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
772 # if defined _MSC_VER && 1200 <= _MSC_VER
773 # define _Noreturn __declspec (noreturn)
774 # else
775 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
776 # endif
777 #endif
778
779 /* Suppress unused-variable warnings by "using" E. */
780 #if ! defined lint || defined __GNUC__
781 # define YYUSE(E) ((void) (E))
782 #else
783 # define YYUSE(E) /* empty */
784 #endif
785
786 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
787 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
788 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
789 _Pragma ("GCC diagnostic push") \
790 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
791 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
792 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
793 _Pragma ("GCC diagnostic pop")
794 #else
795 # define YY_INITIAL_VALUE(Value) Value
796 #endif
797 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
798 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
799 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
800 #endif
801 #ifndef YY_INITIAL_VALUE
802 # define YY_INITIAL_VALUE(Value) /* Nothing. */
803 #endif
804
805
806 #if ! defined yyoverflow || YYERROR_VERBOSE
807
808 /* The parser invokes alloca or malloc; define the necessary symbols. */
809
810 # ifdef YYSTACK_USE_ALLOCA
811 # if YYSTACK_USE_ALLOCA
812 # ifdef __GNUC__
813 # define YYSTACK_ALLOC __builtin_alloca
814 # elif defined __BUILTIN_VA_ARG_INCR
815 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
816 # elif defined _AIX
817 # define YYSTACK_ALLOC __alloca
818 # elif defined _MSC_VER
819 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
820 # define alloca _alloca
821 # else
822 # define YYSTACK_ALLOC alloca
823 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
824 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
825 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
826 # ifndef EXIT_SUCCESS
827 # define EXIT_SUCCESS 0
828 # endif
829 # endif
830 # endif
831 # endif
832 # endif
833
834 # ifdef YYSTACK_ALLOC
835 /* Pacify GCC's 'empty if-body' warning. */
836 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
837 # ifndef YYSTACK_ALLOC_MAXIMUM
838 /* The OS might guarantee only one guard page at the bottom of the stack,
839 and a page size can be as small as 4096 bytes. So we cannot safely
840 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
841 to allow for a few compiler-allocated temporary stack slots. */
842 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
843 # endif
844 # else
845 # define YYSTACK_ALLOC YYMALLOC
846 # define YYSTACK_FREE YYFREE
847 # ifndef YYSTACK_ALLOC_MAXIMUM
848 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
849 # endif
850 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
851 && ! ((defined YYMALLOC || defined malloc) \
852 && (defined YYFREE || defined free)))
853 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
854 # ifndef EXIT_SUCCESS
855 # define EXIT_SUCCESS 0
856 # endif
857 # endif
858 # ifndef YYMALLOC
859 # define YYMALLOC malloc
860 # if ! defined malloc && ! defined EXIT_SUCCESS
861 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
862 # endif
863 # endif
864 # ifndef YYFREE
865 # define YYFREE free
866 # if ! defined free && ! defined EXIT_SUCCESS
867 void free (void *); /* INFRINGES ON USER NAME SPACE */
868 # endif
869 # endif
870 # endif
871 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
872
873
874 #if (! defined yyoverflow \
875 && (! defined __cplusplus \
876 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
877
878 /* A type that is properly aligned for any stack member. */
879 union yyalloc
880 {
881 yytype_int16 yyss_alloc;
882 YYSTYPE yyvs_alloc;
883 };
884
885 /* The size of the maximum gap between one aligned stack and the next. */
886 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
887
888 /* The size of an array large to enough to hold all stacks, each with
889 N elements. */
890 # define YYSTACK_BYTES(N) \
891 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
892 + YYSTACK_GAP_MAXIMUM)
893
894 # define YYCOPY_NEEDED 1
895
896 /* Relocate STACK from its old location to the new one. The
897 local variables YYSIZE and YYSTACKSIZE give the old and new number of
898 elements in the stack, and YYPTR gives the new location of the
899 stack. Advance YYPTR to a properly aligned location for the next
900 stack. */
901 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
902 do \
903 { \
904 YYSIZE_T yynewbytes; \
905 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
906 Stack = &yyptr->Stack_alloc; \
907 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
908 yyptr += yynewbytes / sizeof (*yyptr); \
909 } \
910 while (0)
911
912 #endif
913
914 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
915 /* Copy COUNT objects from SRC to DST. The source and destination do
916 not overlap. */
917 # ifndef YYCOPY
918 # if defined __GNUC__ && 1 < __GNUC__
919 # define YYCOPY(Dst, Src, Count) \
920 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
921 # else
922 # define YYCOPY(Dst, Src, Count) \
923 do \
924 { \
925 YYSIZE_T yyi; \
926 for (yyi = 0; yyi < (Count); yyi++) \
927 (Dst)[yyi] = (Src)[yyi]; \
928 } \
929 while (0)
930 # endif
931 # endif
932 #endif /* !YYCOPY_NEEDED */
933
934 /* YYFINAL -- State number of the termination state. */
935 #define YYFINAL 2
936 /* YYLAST -- Last index in YYTABLE. */
937 #define YYLAST 1322
938
939 /* YYNTOKENS -- Number of terminals. */
940 #define YYNTOKENS 233
941 /* YYNNTS -- Number of nonterminals. */
942 #define YYNNTS 292
943 /* YYNRULES -- Number of rules. */
944 #define YYNRULES 662
945 /* YYNSTATES -- Number of states. */
946 #define YYNSTATES 1304
947
948 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
949 by yylex, with out-of-bounds checking. */
950 #define YYUNDEFTOK 2
951 #define YYMAXUTOK 481
952
953 #define YYTRANSLATE(YYX) \
954 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
955
956 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
957 as returned by yylex, without out-of-bounds checking. */
958 static const yytype_uint8 yytranslate[] =
959 {
960 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
961 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
962 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
963 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
964 2, 2, 2, 2, 231, 2, 2, 2, 2, 2,
965 2, 2, 2, 2, 2, 2, 2, 2, 232, 227,
966 2, 230, 2, 2, 2, 2, 2, 2, 2, 2,
967 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
968 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
969 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
970 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
971 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
972 2, 2, 2, 229, 2, 228, 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, 2, 2, 2, 2, 2, 2,
976 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
977 2, 2, 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, 2, 2, 2, 2, 2, 2, 2,
984 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
985 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
986 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
987 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
988 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
989 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
990 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
991 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
992 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
993 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
994 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
995 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
996 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
997 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
998 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
999 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1000 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1001 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1002 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
1003 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
1004 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1005 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
1006 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
1007 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1008 225, 226
1009 };
1010
1011 #if YYDEBUG
1012 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
1013 static const yytype_uint16 yyrline[] =
1014 {
1015 0, 374, 374, 375, 378, 379, 380, 381, 382, 383,
1016 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
1017 394, 395, 396, 397, 398, 399, 400, 401, 405, 405,
1018 406, 407, 408, 409, 410, 411, 412, 413, 416, 416,
1019 417, 418, 419, 420, 427, 429, 429, 430, 430, 430,
1020 432, 438, 448, 450, 450, 451, 452, 453, 454, 455,
1021 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
1022 466, 467, 468, 471, 488, 497, 506, 515, 524, 533,
1023 548, 563, 573, 587, 596, 624, 652, 677, 699, 721,
1024 731, 733, 733, 734, 735, 736, 737, 739, 748, 757,
1025 771, 770, 788, 788, 789, 789, 789, 791, 797, 808,
1026 807, 826, 826, 827, 827, 827, 827, 827, 829, 835,
1027 841, 847, 869, 870, 870, 872, 872, 873, 875, 882,
1028 882, 895, 896, 898, 898, 899, 899, 901, 909, 912,
1029 918, 917, 923, 923, 924, 928, 932, 936, 940, 944,
1030 948, 952, 963, 962, 1019, 1019, 1020, 1021, 1022, 1023,
1031 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1032, 1038, 1044,
1032 1050, 1056, 1067, 1073, 1084, 1091, 1090, 1096, 1096, 1097,
1033 1101, 1105, 1109, 1113, 1117, 1121, 1125, 1129, 1133, 1137,
1034 1141, 1145, 1149, 1153, 1157, 1161, 1165, 1169, 1173, 1177,
1035 1181, 1188, 1187, 1193, 1193, 1194, 1198, 1202, 1206, 1210,
1036 1214, 1218, 1222, 1226, 1230, 1234, 1238, 1242, 1246, 1250,
1037 1254, 1258, 1262, 1266, 1270, 1274, 1278, 1282, 1286, 1290,
1038 1294, 1298, 1302, 1306, 1317, 1316, 1373, 1373, 1374, 1375,
1039 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385,
1040 1386, 1386, 1387, 1388, 1389, 1390, 1392, 1398, 1404, 1410,
1041 1416, 1422, 1428, 1434, 1440, 1446, 1452, 1459, 1465, 1471,
1042 1477, 1486, 1496, 1495, 1501, 1501, 1502, 1506, 1517, 1516,
1043 1523, 1522, 1527, 1527, 1528, 1532, 1536, 1542, 1542, 1543,
1044 1543, 1543, 1543, 1543, 1545, 1545, 1547, 1547, 1549, 1562,
1045 1579, 1585, 1596, 1595, 1637, 1637, 1638, 1639, 1640, 1641,
1046 1642, 1643, 1644, 1645, 1646, 1648, 1654, 1660, 1666, 1678,
1047 1677, 1683, 1683, 1684, 1688, 1692, 1696, 1700, 1704, 1708,
1048 1712, 1716, 1720, 1726, 1740, 1749, 1763, 1762, 1777, 1777,
1049 1778, 1778, 1778, 1778, 1780, 1786, 1792, 1802, 1804, 1804,
1050 1805, 1805, 1807, 1824, 1823, 1848, 1848, 1849, 1849, 1849,
1051 1849, 1851, 1857, 1877, 1876, 1882, 1882, 1883, 1887, 1891,
1052 1895, 1899, 1903, 1907, 1911, 1915, 1919, 1930, 1929, 1950,
1053 1950, 1951, 1951, 1951, 1953, 1960, 1959, 1965, 1965, 1966,
1054 1970, 1974, 1978, 1982, 1986, 1990, 1994, 1998, 2002, 2013,
1055 2012, 2084, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091,
1056 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2101, 2107,
1057 2113, 2119, 2132, 2145, 2151, 2157, 2161, 2168, 2167, 2172,
1058 2172, 2173, 2177, 2183, 2194, 2200, 2206, 2212, 2228, 2227,
1059 2253, 2253, 2254, 2254, 2254, 2256, 2276, 2287, 2286, 2313,
1060 2313, 2314, 2314, 2314, 2316, 2322, 2332, 2334, 2334, 2335,
1061 2335, 2337, 2355, 2354, 2377, 2377, 2378, 2378, 2378, 2380,
1062 2386, 2396, 2398, 2398, 2399, 2400, 2401, 2402, 2403, 2404,
1063 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414,
1064 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424,
1065 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434,
1066 2435, 2436, 2437, 2438, 2439, 2440, 2441, 2442, 2443, 2444,
1067 2447, 2452, 2457, 2462, 2468, 2473, 2478, 2483, 2488, 2493,
1068 2498, 2503, 2508, 2513, 2518, 2523, 2528, 2533, 2538, 2544,
1069 2549, 2554, 2559, 2564, 2569, 2574, 2579, 2582, 2587, 2590,
1070 2595, 2600, 2605, 2610, 2615, 2620, 2625, 2630, 2635, 2640,
1071 2645, 2650, 2656, 2655, 2660, 2660, 2661, 2664, 2667, 2670,
1072 2673, 2676, 2679, 2682, 2685, 2688, 2691, 2694, 2697, 2700,
1073 2703, 2706, 2709, 2712, 2715, 2718, 2721, 2724, 2730, 2729,
1074 2734, 2734, 2735, 2738, 2741, 2744, 2747, 2750, 2753, 2756,
1075 2759, 2762, 2765, 2768, 2771, 2774, 2777, 2780, 2783, 2786,
1076 2789, 2792, 2797, 2802, 2807, 2816, 2818, 2818, 2819, 2820,
1077 2821, 2822, 2823, 2824, 2825, 2826, 2827, 2828, 2829, 2830,
1078 2832, 2837, 2842, 2847, 2852, 2857, 2862, 2867, 2872, 2877,
1079 2882, 2891, 2893, 2893, 2894, 2895, 2896, 2897, 2898, 2899,
1080 2900, 2901, 2902, 2903, 2905, 2911, 2927, 2936, 2942, 2948,
1081 2954, 2963, 2969
1082 };
1083 #endif
1084
1085 #if YYDEBUG || YYERROR_VERBOSE || 0
1086 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1087 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1088 static const char *const yytname[] =
1089 {
1090 "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ADMIN", "AFTYPE",
1091 "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME", "AUTOCONN",
1092 "AWAY_COUNT", "AWAY_TIME", "BYTES", "KBYTES", "MBYTES", "CALLER_ID_WAIT",
1093 "CAN_FLOOD", "CHANNEL", "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CLASS",
1094 "CLOSE", "CONNECT", "CONNECTFREQ", "CYCLE_ON_HOST_CHANGE",
1095 "DEFAULT_FLOODCOUNT", "DEFAULT_JOIN_FLOOD_COUNT",
1096 "DEFAULT_JOIN_FLOOD_TIME", "DEFAULT_MAX_CLIENTS", "DENY", "DESCRIPTION",
1097 "DIE", "DISABLE_AUTH", "DISABLE_FAKE_CHANNELS",
1098 "DISABLE_REMOTE_COMMANDS", "DLINE_MIN_CIDR", "DLINE_MIN_CIDR6",
1099 "DOTS_IN_IDENT", "EMAIL", "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT",
1100 "FAILED_OPER_NOTICE", "FLATTEN_LINKS", "FLATTEN_LINKS_DELAY",
1101 "FLATTEN_LINKS_FILE", "GECOS", "GENERAL", "HIDDEN", "HIDDEN_NAME",
1102 "HIDE_CHANS", "HIDE_IDLE", "HIDE_IDLE_FROM_OPERS", "HIDE_SERVER_IPS",
1103 "HIDE_SERVERS", "HIDE_SERVICES", "HOST", "HUB", "HUB_MASK",
1104 "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT", "INVITE_CLIENT_COUNT",
1105 "INVITE_CLIENT_TIME", "INVITE_DELAY_CHANNEL", "IP", "IRCD_AUTH",
1106 "IRCD_FLAGS", "IRCD_SID", "JOIN", "KILL", "KILL_CHASE_TIME_LIMIT",
1107 "KLINE", "KLINE_EXEMPT", "KLINE_MIN_CIDR", "KLINE_MIN_CIDR6",
1108 "KNOCK_CLIENT_COUNT", "KNOCK_CLIENT_TIME", "KNOCK_DELAY_CHANNEL",
1109 "LEAF_MASK", "LISTEN", "MASK", "MAX_ACCEPT", "MAX_BANS", "MAX_CHANNELS",
1110 "MAX_GLOBAL", "MAX_IDENT", "MAX_IDLE", "MAX_LOCAL", "MAX_NICK_CHANGES",
1111 "MAX_NICK_LENGTH", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1112 "MAX_TOPIC_LENGTH", "MAX_WATCH", "MIN_IDLE", "MIN_NONWILDCARD",
1113 "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "MOTD", "NAME",
1114 "NEED_IDENT", "NEED_PASSWORD", "NETWORK_DESC", "NETWORK_NAME", "NICK",
1115 "NO_OPER_FLOOD", "NO_TILDE", "NUMBER", "NUMBER_PER_CIDR",
1116 "NUMBER_PER_IP", "OPER_ONLY_UMODES", "OPER_UMODES", "OPERATOR",
1117 "OPERS_BYPASS_CALLERID", "PACE_WAIT", "PACE_WAIT_SIMPLE", "PASSWORD",
1118 "PATH", "PING_COOKIE", "PING_TIME", "PORT", "QSTRING", "RANDOM_IDLE",
1119 "REASON", "REDIRPORT", "REDIRSERV", "REHASH", "REMOTE", "REMOTEBAN",
1120 "RESV", "RESV_EXEMPT", "RSA_PRIVATE_KEY_FILE", "SECONDS", "MINUTES",
1121 "HOURS", "DAYS", "WEEKS", "MONTHS", "YEARS", "SEND_PASSWORD", "SENDQ",
1122 "SERVERHIDE", "SERVERINFO", "SHORT_MOTD", "SPOOF", "SPOOF_NOTICE",
1123 "SQUIT", "SSL_CERTIFICATE_FILE", "SSL_CERTIFICATE_FINGERPRINT",
1124 "SSL_CONNECTION_REQUIRED", "SSL_DH_ELLIPTIC_CURVE", "SSL_DH_PARAM_FILE",
1125 "SSL_MESSAGE_DIGEST_ALGORITHM", "STATS_E_DISABLED", "STATS_I_OPER_ONLY",
1126 "STATS_K_OPER_ONLY", "STATS_M_OPER_ONLY", "STATS_O_OPER_ONLY",
1127 "STATS_P_OPER_ONLY", "STATS_U_OPER_ONLY", "T_ALL", "T_BOTS",
1128 "T_CALLERID", "T_CCONN", "T_COMMAND", "T_CLUSTER", "T_DEAF", "T_DEBUG",
1129 "T_DLINE", "T_EXTERNAL", "T_FARCONNECT", "T_FILE", "T_FULL", "T_GLOBOPS",
1130 "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS", "T_LOG", "T_NCHANGE",
1131 "T_NONONREG", "T_OPME", "T_PREPEND", "T_PSEUDO", "T_RECVQ", "T_REJ",
1132 "T_RESTART", "T_SERVER", "T_SERVICE", "T_SERVNOTICE", "T_SET",
1133 "T_SHARED", "T_SIZE", "T_SKILL", "T_SOFTCALLERID", "T_SPY", "T_SSL",
1134 "T_SSL_CIPHER_LIST", "T_TARGET", "T_UMODES", "T_UNAUTH", "T_UNDLINE",
1135 "T_UNLIMITED", "T_UNRESV", "T_UNXLINE", "T_WALLOP", "T_WALLOPS",
1136 "T_WEBIRC", "TBOOL", "THROTTLE_COUNT", "THROTTLE_TIME",
1137 "TKLINE_EXPIRE_NOTICES", "TMASKED", "TS_MAX_DELTA", "TS_WARN_DELTA",
1138 "TWODOTS", "TYPE", "UNKLINE", "USE_LOGGING", "USER", "VHOST", "VHOST6",
1139 "WARN_NO_CONNECT_BLOCK", "WHOIS", "XLINE", "XLINE_EXEMPT", "';'", "'}'",
1140 "'{'", "'='", "','", "':'", "$accept", "conf", "conf_item", "timespec_",
1141 "timespec", "sizespec_", "sizespec", "modules_entry", "modules_items",
1142 "modules_item", "modules_module", "modules_path", "serverinfo_entry",
1143 "serverinfo_items", "serverinfo_item", "serverinfo_ssl_certificate_file",
1144 "serverinfo_rsa_private_key_file", "serverinfo_ssl_dh_param_file",
1145 "serverinfo_ssl_cipher_list", "serverinfo_ssl_message_digest_algorithm",
1146 "serverinfo_ssl_dh_elliptic_curve", "serverinfo_name", "serverinfo_sid",
1147 "serverinfo_description", "serverinfo_network_name",
1148 "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
1149 "serverinfo_default_max_clients", "serverinfo_max_nick_length",
1150 "serverinfo_max_topic_length", "serverinfo_hub", "admin_entry",
1151 "admin_items", "admin_item", "admin_name", "admin_email",
1152 "admin_description", "motd_entry", "$@1", "motd_items", "motd_item",
1153 "motd_mask", "motd_file", "pseudo_entry", "$@2", "pseudo_items",
1154 "pseudo_item", "pseudo_command", "pseudo_name", "pseudo_prepend",
1155 "pseudo_target", "logging_entry", "logging_items", "logging_item",
1156 "logging_use_logging", "logging_file_entry", "$@3", "logging_file_items",
1157 "logging_file_item", "logging_file_name", "logging_file_size",
1158 "logging_file_type", "$@4", "logging_file_type_items",
1159 "logging_file_type_item", "oper_entry", "$@5", "oper_items", "oper_item",
1160 "oper_name", "oper_user", "oper_password", "oper_whois",
1161 "oper_encrypted", "oper_ssl_certificate_fingerprint",
1162 "oper_ssl_connection_required", "oper_class", "oper_umodes", "$@6",
1163 "oper_umodes_items", "oper_umodes_item", "oper_flags", "$@7",
1164 "oper_flags_items", "oper_flags_item", "class_entry", "$@8",
1165 "class_items", "class_item", "class_name", "class_ping_time",
1166 "class_number_per_ip", "class_connectfreq", "class_max_channels",
1167 "class_max_number", "class_max_global", "class_max_local",
1168 "class_max_ident", "class_sendq", "class_recvq",
1169 "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1170 "class_number_per_cidr", "class_min_idle", "class_max_idle",
1171 "class_flags", "$@9", "class_flags_items", "class_flags_item",
1172 "listen_entry", "$@10", "listen_flags", "$@11", "listen_flags_items",
1173 "listen_flags_item", "listen_items", "listen_item", "listen_port",
1174 "$@12", "port_items", "port_item", "listen_address", "listen_host",
1175 "auth_entry", "$@13", "auth_items", "auth_item", "auth_user",
1176 "auth_passwd", "auth_class", "auth_encrypted", "auth_flags", "$@14",
1177 "auth_flags_items", "auth_flags_item", "auth_spoof", "auth_redir_serv",
1178 "auth_redir_port", "resv_entry", "$@15", "resv_items", "resv_item",
1179 "resv_mask", "resv_reason", "resv_exempt", "service_entry",
1180 "service_items", "service_item", "service_name", "shared_entry", "$@16",
1181 "shared_items", "shared_item", "shared_name", "shared_user",
1182 "shared_type", "$@17", "shared_types", "shared_type_item",
1183 "cluster_entry", "$@18", "cluster_items", "cluster_item", "cluster_name",
1184 "cluster_type", "$@19", "cluster_types", "cluster_type_item",
1185 "connect_entry", "$@20", "connect_items", "connect_item", "connect_name",
1186 "connect_host", "connect_vhost", "connect_send_password",
1187 "connect_accept_password", "connect_ssl_certificate_fingerprint",
1188 "connect_port", "connect_aftype", "connect_flags", "$@21",
1189 "connect_flags_items", "connect_flags_item", "connect_encrypted",
1190 "connect_hub_mask", "connect_leaf_mask", "connect_class",
1191 "connect_ssl_cipher_list", "kill_entry", "$@22", "kill_items",
1192 "kill_item", "kill_user", "kill_reason", "deny_entry", "$@23",
1193 "deny_items", "deny_item", "deny_ip", "deny_reason", "exempt_entry",
1194 "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@24",
1195 "gecos_items", "gecos_item", "gecos_name", "gecos_reason",
1196 "general_entry", "general_items", "general_item", "general_away_count",
1197 "general_away_time", "general_max_watch", "general_cycle_on_host_change",
1198 "general_dline_min_cidr", "general_dline_min_cidr6",
1199 "general_kline_min_cidr", "general_kline_min_cidr6",
1200 "general_tkline_expire_notices", "general_kill_chase_time_limit",
1201 "general_ignore_bogus_ts", "general_failed_oper_notice",
1202 "general_anti_nick_flood", "general_max_nick_time",
1203 "general_max_nick_changes", "general_max_accept",
1204 "general_anti_spam_exit_message_time", "general_ts_warn_delta",
1205 "general_ts_max_delta", "general_invisible_on_connect",
1206 "general_warn_no_connect_block", "general_stats_e_disabled",
1207 "general_stats_m_oper_only", "general_stats_o_oper_only",
1208 "general_stats_P_oper_only", "general_stats_u_oper_only",
1209 "general_stats_k_oper_only", "general_stats_i_oper_only",
1210 "general_pace_wait", "general_caller_id_wait",
1211 "general_opers_bypass_callerid", "general_pace_wait_simple",
1212 "general_short_motd", "general_no_oper_flood", "general_dots_in_ident",
1213 "general_max_targets", "general_ping_cookie", "general_disable_auth",
1214 "general_throttle_count", "general_throttle_time", "general_oper_umodes",
1215 "$@25", "umode_oitems", "umode_oitem", "general_oper_only_umodes",
1216 "$@26", "umode_items", "umode_item", "general_min_nonwildcard",
1217 "general_min_nonwildcard_simple", "general_default_floodcount",
1218 "channel_entry", "channel_items", "channel_item",
1219 "channel_disable_fake_channels", "channel_invite_client_count",
1220 "channel_invite_client_time", "channel_invite_delay_channel",
1221 "channel_knock_client_count", "channel_knock_client_time",
1222 "channel_knock_delay_channel", "channel_max_channels",
1223 "channel_max_bans", "channel_default_join_flood_count",
1224 "channel_default_join_flood_time", "serverhide_entry",
1225 "serverhide_items", "serverhide_item", "serverhide_flatten_links",
1226 "serverhide_flatten_links_delay", "serverhide_flatten_links_file",
1227 "serverhide_disable_remote_commands", "serverhide_hide_servers",
1228 "serverhide_hide_services", "serverhide_hidden_name",
1229 "serverhide_hidden", "serverhide_hide_server_ips", YY_NULLPTR
1230 };
1231 #endif
1232
1233 # ifdef YYPRINT
1234 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1235 (internal) symbol number NUM (which must be that of a token). */
1236 static const yytype_uint16 yytoknum[] =
1237 {
1238 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1239 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1240 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1241 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1242 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1243 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1244 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1245 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1246 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1247 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1248 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1249 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1250 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1251 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1252 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1253 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
1254 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
1255 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1256 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
1257 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
1258 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1259 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
1260 475, 476, 477, 478, 479, 480, 481, 59, 125, 123,
1261 61, 44, 58
1262 };
1263 # endif
1264
1265 #define YYPACT_NINF -887
1266
1267 #define yypact_value_is_default(Yystate) \
1268 (!!((Yystate) == (-887)))
1269
1270 #define YYTABLE_NINF -130
1271
1272 #define yytable_value_is_error(Yytable_value) \
1273 0
1274
1275 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1276 STATE-NUM. */
1277 static const yytype_int16 yypact[] =
1278 {
1279 -887, 721, -887, -174, -213, -208, -887, -887, -887, -197,
1280 -887, -181, -887, -887, -887, -170, -887, -887, -887, -160,
1281 -152, -887, -140, -887, -122, -887, -887, -887, -887, -887,
1282 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1283 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1284 -887, 23, 361, -119, -117, -97, 13, -91, 486, -84,
1285 -78, -68, 84, -55, -49, -45, 413, 624, -35, 14,
1286 -32, 49, -25, -185, -20, -10, -7, 9, -887, -887,
1287 -887, -887, -887, -6, 44, 45, 48, 63, 64, 66,
1288 79, 89, 90, 102, 166, -887, -887, -887, -887, -887,
1289 -887, -887, -887, -887, -887, -887, -887, 783, 614, 61,
1290 -887, 106, 32, -887, -887, 121, -887, 116, 118, 119,
1291 120, 122, 131, 134, 135, 136, 140, 143, 144, 145,
1292 146, 147, 148, 150, 153, 154, 158, 159, 162, 167,
1293 168, 169, -887, -887, 173, 174, 177, 180, 182, 183,
1294 185, 186, 188, 189, 194, 196, 197, 200, 201, 202,
1295 203, 204, 57, -887, -887, -887, -887, -887, -887, -887,
1296 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1297 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1298 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1299 -887, -887, -887, -887, -887, -887, -887, -887, -887, 352,
1300 12, 304, -22, 209, 210, 2, -887, -887, -887, 11,
1301 341, 85, -887, 214, 220, 223, 224, 229, 233, 234,
1302 240, 241, 291, -887, -887, -887, -887, -887, -887, -887,
1303 -887, -887, -887, 52, 243, 244, 245, 246, 250, 252,
1304 253, 254, 256, 258, 259, 268, 273, 274, 275, 276,
1305 282, 55, -887, -887, -887, -887, -887, -887, -887, -887,
1306 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1307 19, 87, 283, 3, -887, -887, -887, 115, 164, -887,
1308 284, 35, -887, -887, 165, -887, 289, 359, 393, 299,
1309 -887, 149, 410, 81, 420, 410, 410, 421, 410, 410,
1310 424, 438, 320, -887, 323, 322, 327, 330, -887, 332,
1311 334, 337, 340, 344, 346, 350, 353, 354, 355, 357,
1312 358, 360, 217, -887, -887, -887, -887, -887, -887, -887,
1313 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1314 -887, 326, 363, 364, 365, 366, 369, 373, -887, 374,
1315 376, 377, 379, 382, 383, 384, 251, -887, -887, -887,
1316 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1317 -887, -887, -887, 386, 388, 16, -887, -887, -887, 446,
1318 362, -887, -887, 390, 391, 33, -887, -887, -887, 82,
1319 410, 463, 410, 410, 414, 514, 415, 518, 519, 521,
1320 425, 426, 427, 410, 524, 529, 530, 531, 410, 540,
1321 546, 548, 549, 449, 430, 431, 453, 410, 410, 455,
1322 456, 457, -191, -186, 458, 461, 464, 465, 567, 410,
1323 467, 410, 410, 468, 451, -887, 454, 452, 459, -887,
1324 462, 472, 473, 474, 475, 303, -887, -887, -887, -887,
1325 -887, -887, -887, -887, -887, -887, 478, 480, 30, -887,
1326 -887, -887, 460, 483, 485, -887, 487, -887, 10, -887,
1327 -887, -887, -887, -887, 562, 571, 484, -887, 491, 489,
1328 490, 27, -887, -887, -887, 496, 499, 500, -887, 501,
1329 502, 503, 504, -887, 506, 509, 181, -887, -887, -887,
1330 -887, -887, -887, -887, -887, -887, -887, -887, 516, 511,
1331 515, 517, 38, -887, -887, -887, -887, 535, 539, 410,
1332 572, 541, 573, 542, 543, 544, 532, -887, -887, 618,
1333 635, 551, 636, 654, 656, 643, 646, 647, 648, 649,
1334 651, 652, 658, 661, 664, 665, 561, -887, 563, 564,
1335 -887, 34, -887, -887, -887, -887, 569, 565, -887, 568,
1336 566, 574, 580, 581, 583, 60, -887, -887, -887, -887,
1337 -887, 669, 576, -887, 587, 585, -887, 586, 95, -887,
1338 -887, -887, -887, 590, 591, 594, -887, 596, 400, 604,
1339 605, 606, 609, 610, 611, 612, 613, 615, 616, -887,
1340 -887, 688, 690, 410, 617, 699, 733, 736, 410, 741,
1341 742, 410, 730, 745, 747, 410, 750, 750, 632, -887,
1342 -887, 738, 1, 739, 653, 748, 749, 642, 752, 753,
1343 768, 756, 757, 758, 760, 657, -887, 763, 764, 662,
1344 -887, 663, -887, 766, 769, 668, -887, 670, 671, 672,
1345 674, 675, 677, 679, 680, 681, 682, 684, 685, 687,
1346 689, 691, 692, 693, 698, 701, 704, 706, 708, 709,
1347 711, 714, 847, 759, 715, 716, 717, 719, 720, 723,
1348 724, 725, 729, 731, 732, 734, 735, 737, 740, 746,
1349 754, 762, 765, 767, -887, -887, 774, 770, 718, 793,
1350 773, 795, 835, 841, 771, -887, 844, 850, 772, -887,
1351 -887, 854, 861, 761, 876, 777, -887, 778, 779, -887,
1352 -887, 864, 868, 780, -887, -887, 873, 787, 782, 878,
1353 894, 897, 812, 794, 901, 904, 802, -887, -887, 908,
1354 909, 910, 808, -887, 809, 811, 813, 817, 818, 819,
1355 820, 822, 823, -887, 824, 825, 827, 828, 829, 830,
1356 831, 832, 833, 834, 836, 837, 838, 839, 840, 842,
1357 843, -887, -887, 912, 845, 846, -887, 849, -887, 93,
1358 -887, 917, 940, 946, 949, 851, -887, 852, -887, -887,
1359 950, 853, 952, 855, -887, -887, -887, -887, -887, 410,
1360 410, 410, 410, 410, 410, 410, -887, -887, -887, -887,
1361 -887, -887, -887, -887, -887, -887, -887, -887, 857, 858,
1362 859, -26, 860, 862, 863, 865, 866, 867, 869, 870,
1363 871, 872, 874, 343, 875, 877, -887, 879, 880, 881,
1364 882, 883, 884, 885, -1, 886, 887, 888, 889, 890,
1365 891, 892, -887, 893, 895, -887, -887, 896, 898, -887,
1366 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1367 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1368 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1369 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1370 -887, -887, -887, -887, -887, -201, -887, -887, -887, -887,
1371 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1372 -887, -887, -887, -887, -887, -887, -887, -887, -887, -190,
1373 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1374 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1375 -887, 899, 900, 423, 902, 903, 905, 906, 907, -887,
1376 911, 913, -887, 914, 915, -18, 919, 916, -887, -887,
1377 -887, -887, 918, 921, -887, 922, 923, 481, 924, 925,
1378 926, 927, 807, 928, 929, -887, 930, 931, 932, -887,
1379 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1380 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1381 -887, -887, -887, -887, -887, -887, 933, 338, -887, -887,
1382 934, 935, 936, -887, 56, -887, -887, -887, -887, 937,
1383 941, 942, 943, -887, -887, 944, 577, 945, -887, -887,
1384 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1385 -887, -187, -887, -887, -887, -887, -887, -887, -887, -887,
1386 -887, -887, -887, -887, 750, 750, 750, -887, -887, -887,
1387 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1388 -184, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1389 -887, -887, -887, -887, 847, -887, 759, -887, -887, -887,
1390 -887, -887, -887, -887, -887, -887, -887, -887, -887, -182,
1391 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1392 -887, -887, -887, -176, -887, 969, 876, 947, -887, -887,
1393 -887, -887, -887, -887, 848, -887, 856, 948, -887, -887,
1394 951, 953, -887, -887, 954, -887, -887, -887, -887, -887,
1395 -887, -887, -887, -887, -887, -887, -887, -159, -887, -887,
1396 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1397 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1398 -887, -887, -887, -887, -887, -157, -887, -887, -887, -887,
1399 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1400 -887, -887, -887, -144, -887, -887, 959, -89, 957, 955,
1401 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1402 -887, -887, -887, -887, -887, -887, -126, -887, -887, -887,
1403 -26, -887, -887, -887, -887, -1, -887, -887, -887, 423,
1404 -887, -18, -887, -887, -887, 963, 965, 972, 973, 977,
1405 993, -887, 481, -887, 807, -887, 338, 961, 962, 964,
1406 227, -887, -887, 577, -887, -887, -887, -887, -887, -887,
1407 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1408 -887, -887, -887, -887, -887, -887, -887, -887, -123, -887,
1409 -887, -887, 227, -887
1410 };
1411
1412 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1413 Performed when YYTABLE does not specify something else to do. Zero
1414 means the default is an error. */
1415 static const yytype_uint16 yydefact[] =
1416 {
1417 2, 0, 1, 0, 0, 0, 234, 399, 447, 0,
1418 462, 0, 302, 438, 278, 0, 100, 152, 336, 0,
1419 0, 377, 0, 109, 0, 353, 3, 23, 11, 4,
1420 24, 25, 5, 6, 8, 9, 10, 13, 14, 15,
1421 16, 17, 18, 19, 20, 22, 21, 7, 12, 26,
1422 27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1424 0, 0, 0, 0, 0, 0, 0, 0, 92, 93,
1425 95, 94, 629, 0, 0, 0, 0, 0, 0, 0,
1426 0, 0, 0, 0, 0, 617, 628, 619, 620, 621,
1427 622, 623, 624, 625, 618, 626, 627, 0, 0, 0,
1428 460, 0, 0, 458, 459, 0, 519, 0, 0, 0,
1429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1430 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1431 0, 0, 588, 562, 0, 0, 0, 0, 0, 0,
1432 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1433 0, 0, 0, 473, 474, 475, 517, 518, 512, 513,
1434 514, 515, 511, 485, 476, 477, 478, 479, 480, 481,
1435 482, 483, 484, 486, 487, 516, 491, 492, 493, 494,
1436 490, 489, 495, 502, 503, 496, 497, 498, 488, 500,
1437 509, 510, 507, 508, 501, 499, 505, 506, 504, 0,
1438 0, 0, 0, 0, 0, 0, 46, 47, 48, 0,
1439 0, 0, 653, 0, 0, 0, 0, 0, 0, 0,
1440 0, 0, 0, 643, 644, 645, 646, 647, 648, 649,
1441 651, 650, 652, 0, 0, 0, 0, 0, 0, 0,
1442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1443 0, 0, 54, 69, 66, 64, 70, 71, 65, 55,
1444 68, 58, 59, 60, 56, 67, 61, 62, 63, 57,
1445 0, 0, 0, 0, 124, 125, 126, 0, 0, 351,
1446 0, 0, 349, 350, 0, 96, 0, 0, 0, 0,
1447 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1448 0, 0, 0, 616, 0, 0, 0, 0, 272, 0,
1449 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1450 0, 0, 0, 237, 238, 241, 243, 244, 245, 246,
1451 247, 248, 249, 250, 251, 239, 240, 242, 252, 253,
1452 254, 0, 0, 0, 0, 0, 0, 0, 427, 0,
1453 0, 0, 0, 0, 0, 0, 0, 402, 403, 404,
1454 405, 406, 407, 408, 410, 409, 412, 416, 413, 414,
1455 415, 411, 453, 0, 0, 0, 450, 451, 452, 0,
1456 0, 457, 468, 0, 0, 0, 465, 466, 467, 0,
1457 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1461 0, 0, 0, 0, 0, 472, 0, 0, 0, 319,
1462 0, 0, 0, 0, 0, 0, 305, 306, 307, 308,
1463 313, 309, 310, 311, 312, 444, 0, 0, 0, 441,
1464 442, 443, 0, 0, 0, 280, 0, 290, 0, 288,
1465 289, 291, 292, 49, 0, 0, 0, 45, 0, 0,
1466 0, 0, 103, 104, 105, 0, 0, 0, 201, 0,
1467 0, 0, 0, 175, 0, 0, 0, 155, 156, 157,
1468 158, 159, 162, 163, 164, 161, 160, 165, 0, 0,
1469 0, 0, 0, 339, 340, 341, 342, 0, 0, 0,
1470 0, 0, 0, 0, 0, 0, 0, 642, 72, 0,
1471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1472 0, 0, 0, 0, 0, 0, 0, 53, 0, 0,
1473 385, 0, 380, 381, 382, 127, 0, 0, 123, 0,
1474 0, 0, 0, 0, 0, 0, 112, 113, 115, 114,
1475 116, 0, 0, 348, 0, 0, 363, 0, 0, 356,
1476 357, 358, 359, 0, 0, 0, 90, 0, 28, 0,
1477 0, 0, 0, 0, 0, 0, 0, 0, 0, 615,
1478 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1479 0, 0, 0, 0, 0, 0, 0, 0, 0, 236,
1480 417, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1481 0, 0, 0, 0, 0, 0, 401, 0, 0, 0,
1482 449, 0, 456, 0, 0, 0, 464, 0, 0, 0,
1483 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1484 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1487 0, 0, 0, 0, 471, 314, 0, 0, 0, 0,
1488 0, 0, 0, 0, 0, 304, 0, 0, 0, 440,
1489 293, 0, 0, 0, 0, 0, 287, 0, 0, 44,
1490 106, 0, 0, 0, 102, 166, 0, 0, 0, 0,
1491 0, 0, 0, 0, 0, 0, 0, 154, 343, 0,
1492 0, 0, 0, 338, 0, 0, 0, 0, 0, 0,
1493 0, 0, 0, 641, 0, 0, 0, 0, 0, 0,
1494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1495 0, 52, 383, 0, 0, 0, 379, 0, 122, 0,
1496 117, 0, 0, 0, 0, 0, 111, 0, 347, 360,
1497 0, 0, 0, 0, 355, 99, 98, 97, 639, 28,
1498 28, 28, 28, 28, 28, 28, 30, 29, 640, 630,
1499 631, 632, 633, 634, 635, 636, 638, 637, 0, 0,
1500 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1501 0, 0, 0, 38, 0, 0, 235, 0, 0, 0,
1502 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1503 0, 0, 400, 0, 0, 448, 461, 0, 0, 463,
1504 532, 536, 520, 521, 551, 523, 614, 559, 524, 525,
1505 556, 531, 530, 539, 529, 526, 527, 535, 534, 533,
1506 557, 522, 612, 613, 555, 598, 592, 608, 593, 594,
1507 595, 603, 611, 596, 605, 609, 599, 610, 600, 604,
1508 597, 607, 602, 601, 606, 0, 591, 571, 572, 573,
1509 566, 584, 567, 568, 569, 579, 587, 570, 581, 585,
1510 575, 586, 576, 580, 574, 583, 578, 577, 582, 0,
1511 565, 552, 550, 553, 558, 554, 541, 548, 549, 546,
1512 547, 542, 543, 544, 545, 560, 561, 528, 538, 537,
1513 540, 0, 0, 0, 0, 0, 0, 0, 0, 303,
1514 0, 0, 439, 0, 0, 0, 298, 294, 297, 279,
1515 50, 51, 0, 0, 101, 0, 0, 0, 0, 0,
1516 0, 0, 0, 0, 0, 153, 0, 0, 0, 337,
1517 657, 654, 655, 656, 661, 660, 662, 658, 659, 86,
1518 81, 89, 80, 87, 88, 79, 83, 82, 74, 73,
1519 78, 75, 77, 76, 84, 85, 0, 0, 378, 128,
1520 0, 0, 0, 140, 0, 132, 133, 135, 134, 0,
1521 0, 0, 0, 110, 352, 0, 0, 0, 354, 31,
1522 32, 33, 34, 35, 36, 37, 267, 268, 259, 277,
1523 276, 0, 275, 260, 262, 264, 271, 263, 261, 270,
1524 256, 269, 258, 257, 38, 38, 38, 40, 39, 265,
1525 266, 422, 425, 426, 436, 433, 419, 434, 431, 432,
1526 0, 430, 435, 418, 424, 421, 423, 437, 420, 454,
1527 455, 469, 470, 589, 0, 563, 0, 317, 318, 328,
1528 324, 325, 327, 332, 329, 330, 323, 331, 326, 0,
1529 322, 316, 335, 334, 333, 315, 446, 445, 301, 300,
1530 285, 286, 284, 0, 283, 0, 0, 0, 107, 108,
1531 174, 171, 221, 233, 208, 217, 0, 206, 211, 227,
1532 0, 220, 225, 231, 210, 213, 222, 224, 228, 218,
1533 226, 214, 232, 216, 223, 212, 215, 0, 204, 167,
1534 169, 172, 173, 184, 185, 186, 179, 197, 180, 181,
1535 182, 192, 200, 183, 194, 198, 188, 199, 189, 193,
1536 187, 196, 191, 190, 195, 0, 178, 168, 170, 346,
1537 344, 345, 384, 389, 395, 398, 391, 397, 392, 396,
1538 394, 390, 393, 0, 388, 136, 0, 0, 0, 0,
1539 131, 119, 118, 120, 121, 361, 367, 373, 376, 369,
1540 375, 370, 374, 372, 368, 371, 0, 366, 362, 273,
1541 0, 41, 42, 43, 428, 0, 590, 564, 320, 0,
1542 281, 0, 299, 296, 295, 0, 0, 0, 0, 0,
1543 0, 202, 0, 176, 0, 386, 0, 0, 0, 0,
1544 0, 130, 364, 0, 274, 429, 321, 282, 207, 230,
1545 205, 229, 219, 209, 203, 177, 387, 137, 139, 138,
1546 150, 149, 145, 147, 151, 148, 144, 146, 0, 143,
1547 365, 141, 0, 142
1548 };
1549
1550 /* YYPGOTO[NTERM-NUM]. */
1551 static const yytype_int16 yypgoto[] =
1552 {
1553 -887, -887, -887, 15, -300, -886, -626, -887, -887, 958,
1554 -887, -887, -887, -887, 920, -887, -887, -887, -887, -887,
1555 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1556 -887, -887, -887, -887, 1047, -887, -887, -887, -887, -887,
1557 -887, 637, -887, -887, -887, -887, -887, 556, -887, -887,
1558 -887, -887, -887, -887, 938, -887, -887, -887, -887, 103,
1559 -887, -887, -887, -887, -887, -166, -887, -887, -887, 633,
1560 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1561 -887, -121, -887, -887, -887, -118, -887, -887, -887, 814,
1562 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1563 -887, -887, -887, -887, -887, -887, -887, -887, -887, -77,
1564 -887, -887, -887, -887, -887, -76, -887, 700, -887, -887,
1565 -887, 26, -887, -887, -887, -887, -887, 712, -887, -887,
1566 -887, -887, -887, -887, -887, -73, -887, -887, -887, -887,
1567 -887, -887, 655, -887, -887, -887, -887, -887, 939, -887,
1568 -887, -887, -887, 602, -887, -887, -887, -887, -887, -94,
1569 -887, -887, -887, 623, -887, -887, -887, -887, -74, -887,
1570 -887, -887, 956, -887, -887, -887, -887, -887, -887, -887,
1571 -887, -887, -887, -887, -52, -887, -887, -887, -887, -887,
1572 -887, -887, -887, 726, -887, -887, -887, -887, -887, 810,
1573 -887, -887, -887, -887, 1084, -887, -887, -887, -887, 803,
1574 -887, -887, -887, -887, 1035, -887, -887, -887, -887, -887,
1575 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1576 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1577 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1578 -887, -887, -887, -887, -887, -887, -887, -887, 94, -887,
1579 -887, -887, 97, -887, -887, -887, -887, -887, 1105, -887,
1580 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1581 -887, -887, 970, -887, -887, -887, -887, -887, -887, -887,
1582 -887, -887
1583 };
1584
1585 /* YYDEFGOTO[NTERM-NUM]. */
1586 static const yytype_int16 yydefgoto[] =
1587 {
1588 -1, 1, 26, 816, 817, 1077, 1078, 27, 215, 216,
1589 217, 218, 28, 261, 262, 263, 264, 265, 266, 267,
1590 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1591 278, 279, 29, 77, 78, 79, 80, 81, 30, 63,
1592 491, 492, 493, 494, 31, 70, 575, 576, 577, 578,
1593 579, 580, 32, 283, 284, 285, 286, 287, 1034, 1035,
1594 1036, 1037, 1038, 1218, 1298, 1299, 33, 64, 506, 507,
1595 508, 509, 510, 511, 512, 513, 514, 515, 516, 743,
1596 1195, 1196, 517, 738, 1167, 1168, 34, 53, 332, 333,
1597 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
1598 344, 345, 346, 347, 348, 349, 350, 614, 1061, 1062,
1599 35, 61, 477, 723, 1133, 1134, 478, 479, 480, 1137,
1600 977, 978, 481, 482, 36, 59, 455, 456, 457, 458,
1601 459, 460, 461, 708, 1119, 1120, 462, 463, 464, 37,
1602 65, 522, 523, 524, 525, 526, 38, 291, 292, 293,
1603 39, 72, 588, 589, 590, 591, 592, 801, 1236, 1237,
1604 40, 68, 561, 562, 563, 564, 784, 1213, 1214, 41,
1605 54, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1606 375, 376, 637, 1090, 1091, 377, 378, 379, 380, 381,
1607 42, 60, 468, 469, 470, 471, 43, 55, 385, 386,
1608 387, 388, 44, 112, 113, 114, 45, 57, 395, 396,
1609 397, 398, 46, 162, 163, 164, 165, 166, 167, 168,
1610 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
1611 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
1612 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
1613 199, 200, 201, 202, 203, 204, 425, 939, 940, 205,
1614 424, 915, 916, 206, 207, 208, 47, 94, 95, 96,
1615 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
1616 48, 232, 233, 234, 235, 236, 237, 238, 239, 240,
1617 241, 242
1618 };
1619
1620 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1621 positive, shift that token. If negative, reduce the rule whose
1622 number is the opposite. If YYTABLE_NINF, syntax error. */
1623 static const yytype_int16 yytable[] =
1624 {
1625 844, 845, 599, 212, 281, 602, 603, 1088, 605, 606,
1626 73, 472, 488, 465, 110, 281, 51, 382, 690, 843,
1627 558, 52, 691, 692, 73, 1059, 1103, 693, 488, 1130,
1628 1104, 465, 56, 110, 392, 558, 289, 1105, 74, 518,
1629 1239, 1106, 295, 1244, 1240, 1248, 75, 1245, 58, 1249,
1630 289, 1250, 74, 49, 50, 1251, 243, 1030, 116, 62,
1631 75, 570, 382, 117, 118, 473, 119, 120, 1261, 66,
1632 1263, 121, 1262, 474, 1264, 475, 111, 67, 519, 383,
1633 122, 123, 244, 1265, 245, 212, 518, 1266, 124, 69,
1634 489, 125, 126, 127, 1030, 111, 584, 1060, 128, 213,
1635 658, 1272, 660, 661, 1301, 1273, 489, 71, 1302, 76,
1636 107, 246, 108, 671, 1268, 129, 130, 520, 676, 559,
1637 214, 247, 392, 76, 383, 519, 131, 685, 686, 132,
1638 133, 476, 109, 393, 559, 290, 466, 134, 115, 699,
1639 384, 701, 702, 248, 135, 209, 136, 249, 137, 290,
1640 138, 210, 139, 140, 466, 250, 1031, 394, 251, 252,
1641 571, 211, 521, 141, 520, 570, 584, 82, 142, 143,
1642 1131, 144, 145, 146, 219, -129, 147, 848, 849, 1132,
1643 220, 213, 495, 490, 221, 384, -129, 253, 1241, 1242,
1644 1243, 83, 84, 1031, 280, 585, 1089, 288, 85, 490,
1645 496, 148, 214, 254, 294, 483, 255, 256, 257, 521,
1646 296, 149, 150, 151, 152, 153, 154, 155, 314, 497,
1647 297, 393, 282, 298, 301, 572, 86, 87, 88, 756,
1648 486, 567, 467, 282, 315, 316, 560, 299, 725, 317,
1649 89, 90, 91, 573, 649, 394, 498, 92, 93, 1032,
1650 467, 560, 351, 258, 352, 733, 353, 597, 718, 574,
1651 390, 655, 785, 582, 571, 585, 752, 156, 157, 158,
1652 354, 159, 160, 1033, 302, 303, 259, 260, 304, 538,
1653 161, 499, 318, 556, 1219, 444, 1032, 569, 795, 355,
1654 600, 657, 222, 305, 306, 1290, 307, 1291, 500, 319,
1655 320, 321, 322, 323, 446, 472, 356, 324, 357, 308,
1656 1033, 325, 586, 830, 565, 587, 358, 326, 835, 309,
1657 310, 838, 447, 803, 223, 842, 327, 328, 359, 572,
1658 501, 502, 311, 224, 225, 226, 389, 329, 227, 228,
1659 1292, 448, 495, 229, 230, 231, 399, 573, 400, 401,
1660 402, 360, 403, 446, 1074, 1075, 1076, 1293, 330, 473,
1661 496, 404, 82, 574, 405, 406, 407, 474, 449, 475,
1662 408, 447, 361, 409, 410, 411, 412, 413, 414, 497,
1663 415, 503, 586, 416, 417, 587, 83, 84, 418, 419,
1664 448, 362, 420, 85, 312, 1294, 1295, 421, 422, 423,
1665 363, 504, 331, 426, 427, 505, 498, 428, 1203, 746,
1666 429, 593, 430, 431, 222, 432, 433, 449, 434, 435,
1667 450, 86, 87, 88, 436, 476, 437, 438, 451, 452,
1668 439, 440, 441, 442, 443, 89, 90, 91, 1109, 484,
1669 485, 499, 92, 93, 527, 628, 223, 1296, 453, 364,
1670 528, 843, 1297, 529, 530, 224, 225, 226, 500, 531,
1671 227, 228, 1110, 532, 533, 229, 230, 231, 1204, 450,
1672 534, 535, 365, 539, 540, 541, 542, 451, 452, 645,
1673 543, 594, 544, 545, 546, 1142, 547, 116, 548, 549,
1674 501, 502, 117, 118, 1111, 119, 120, 453, 550, 1205,
1675 121, 1143, 1144, 551, 552, 553, 554, 1206, 598, 122,
1676 123, 1145, 555, 566, 581, 595, 1207, 124, 598, 536,
1677 125, 126, 127, 454, 1112, 1113, 596, 128, 601, 604,
1678 1114, 714, 607, 809, 810, 811, 812, 813, 814, 815,
1679 1208, 503, 1209, 1210, 129, 130, 608, 609, 1146, 1147,
1680 610, 1148, 611, 630, 1115, 131, 1211, 612, 132, 133,
1681 613, 504, 615, 1212, 616, 505, 134, 617, 651, 1116,
1682 618, 659, 454, 135, 619, 136, 620, 137, 1149, 138,
1683 621, 139, 140, 622, 623, 624, 1150, 625, 626, 652,
1684 627, 1269, 141, 631, 632, 633, 634, 142, 143, 635,
1685 144, 145, 146, 636, 638, 147, 639, 640, 1151, 641,
1686 1152, 1153, 642, 643, 644, 351, 647, 352, 648, 353,
1687 653, 654, 663, 662, 664, 243, 665, 666, 1154, 667,
1688 148, 1117, 672, 354, 668, 669, 670, 673, 674, 675,
1689 149, 150, 151, 152, 153, 154, 155, 1226, 677, 1118,
1690 1155, 244, 355, 245, 678, 1156, 679, 680, 681, 1157,
1691 682, 683, 684, 1158, 687, 688, 689, 694, 1159, 356,
1692 695, 357, 1160, 696, 697, 698, 700, 703, 704, 358,
1693 246, 705, 706, 1161, 727, 1162, 1163, 720, 1164, 707,
1694 247, 359, 709, 728, 757, 759, 156, 157, 158, 1165,
1695 159, 160, 710, 711, 712, 713, 1166, 1227, 716, 161,
1696 717, 729, 248, 721, 360, 722, 249, 724, 730, 731,
1697 732, 2, 3, 735, 250, 4, 764, 251, 252, 736,
1698 737, 739, 740, 741, 742, 361, 744, 5, 1228, 745,
1699 6, 749, 7, 748, 754, 750, 1229, 751, 755, 8,
1700 758, 760, 761, 762, 362, 1230, 253, 765, 767, 763,
1701 766, 9, 768, 363, 769, 770, 10, 11, 771, 772,
1702 773, 774, 254, 775, 776, 255, 256, 257, 787, 1231,
1703 777, 1232, 1233, 778, 314, 12, 779, 780, 781, 13,
1704 782, 797, 788, 790, 783, 1234, 828, 789, 829, 14,
1705 315, 316, 1235, 798, 791, 317, 917, 832, 918, 919,
1706 792, 793, 364, 794, 799, 800, 802, 805, 806, 15,
1707 16, 807, 258, 808, 1049, 1050, 1051, 1052, 1053, 1054,
1708 1055, 818, 819, 820, 17, 365, 821, 822, 823, 824,
1709 825, 833, 826, 827, 834, 259, 260, 831, 318, 836,
1710 837, 18, 839, 840, 1173, 841, 1174, 1175, 843, 846,
1711 847, 850, 851, 19, 20, 319, 320, 321, 322, 323,
1712 852, 853, 854, 324, 855, 856, 857, 325, 858, 859,
1713 860, 965, 861, 326, 862, 863, 864, 21, 867, 865,
1714 866, 868, 327, 328, 895, 869, 961, 870, 871, 872,
1715 22, 873, 874, 329, 875, 23, 876, 877, 878, 879,
1716 24, 880, 881, 25, 882, 964, 883, 966, 884, 885,
1717 886, 920, 921, 922, 330, 887, 923, 924, 888, 925,
1718 926, 889, 927, 890, 928, 891, 892, 929, 893, 930,
1719 931, 894, 941, 942, 943, 932, 944, 945, 963, 933,
1720 946, 947, 948, 934, 935, 936, 949, 967, 950, 951,
1721 937, 952, 953, 968, 954, 938, 970, 955, 331, 1176,
1722 1177, 1178, 971, 956, 1179, 1180, 973, 1181, 1182, 962,
1723 1183, 957, 1184, 974, 976, 1185, 982, 1186, 1187, 958,
1724 983, 975, 959, 1188, 960, 985, 986, 1189, 969, 972,
1725 988, 1190, 1191, 1192, 979, 980, 981, 984, 1193, 896,
1726 897, 898, 987, 1194, 899, 900, 989, 901, 902, 990,
1727 903, 991, 904, 993, 992, 905, 994, 906, 907, 995,
1728 996, 997, 998, 908, 1026, 999, 1000, 909, 1001, 1039,
1729 1002, 910, 911, 912, 1003, 1004, 1005, 1006, 913, 1007,
1730 1008, 1009, 1010, 914, 1011, 1012, 1013, 1014, 1015, 1016,
1731 1017, 1018, 1040, 1019, 1020, 1021, 1022, 1023, 1041, 1024,
1732 1025, 1042, 1045, 1028, 1047, 1027, 1029, 1252, 1043, 1044,
1733 1255, 1267, 1048, 1046, 1056, 1057, 1058, 1063, 1256, 1064,
1734 1065, 1278, 1066, 1067, 1068, 1279, 1069, 1070, 1071, 1072,
1735 1280, 1073, 1079, 1281, 1080, 1282, 1081, 1082, 1083, 1084,
1736 1085, 1086, 1087, 1092, 1093, 1094, 1095, 1096, 1097, 1098,
1737 1099, 1283, 1100, 1101, 300, 1102, 1107, 1108, 734, 1121,
1738 1122, 796, 1123, 1124, 1125, 1135, 1303, 1220, 1126, 747,
1739 1127, 1128, 1129, 1285, 1284, 1138, 629, 1136, 1139, 1140,
1740 1141, 1169, 1170, 1171, 1172, 1197, 1198, 1199, 1200, 1201,
1741 1202, 1215, 1253, 1274, 1221, 1216, 1217, 715, 1222, 1223,
1742 1224, 1225, 1238, 487, 1254, 1277, 1276, 753, 726, 1300,
1743 1257, 557, 1271, 1258, 786, 1259, 1260, 1270, 1287, 1288,
1744 804, 1289, 1286, 1275, 719, 650, 391, 445, 656, 313,
1745 1247, 1246, 537, 0, 0, 0, 0, 0, 0, 0,
1746 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1747 0, 568, 0, 0, 0, 0, 0, 0, 0, 0,
1748 583, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1750 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1753 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1754 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1755 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1756 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1757 0, 0, 646
1758 };
1759
1760 static const yytype_int16 yycheck[] =
1761 {
1762 626, 627, 302, 1, 1, 305, 306, 8, 308, 309,
1763 1, 1, 1, 1, 1, 1, 229, 1, 209, 108,
1764 1, 229, 213, 209, 1, 51, 227, 213, 1, 47,
1765 231, 1, 229, 1, 1, 1, 1, 227, 29, 1,
1766 227, 231, 227, 227, 231, 227, 37, 231, 229, 231,
1767 1, 227, 29, 227, 228, 231, 1, 1, 1, 229,
1768 37, 1, 1, 6, 7, 55, 9, 10, 227, 229,
1769 227, 14, 231, 63, 231, 65, 63, 229, 40, 63,
1770 23, 24, 27, 227, 29, 1, 1, 231, 31, 229,
1771 79, 34, 35, 36, 1, 63, 1, 123, 41, 97,
1772 400, 227, 402, 403, 227, 231, 79, 229, 231, 100,
1773 229, 56, 229, 413, 203, 58, 59, 79, 418, 100,
1774 118, 66, 1, 100, 63, 40, 69, 427, 428, 72,
1775 73, 121, 229, 100, 100, 100, 124, 80, 229, 439,
1776 124, 441, 442, 88, 87, 229, 89, 92, 91, 100,
1777 93, 229, 95, 96, 124, 100, 100, 124, 103, 104,
1778 100, 229, 124, 106, 79, 1, 1, 1, 111, 112,
1779 188, 114, 115, 116, 229, 172, 119, 176, 177, 197,
1780 229, 97, 1, 172, 229, 124, 172, 132, 1074, 1075,
1781 1076, 25, 26, 100, 229, 100, 197, 229, 32, 172,
1782 19, 144, 118, 148, 229, 227, 151, 152, 153, 124,
1783 230, 154, 155, 156, 157, 158, 159, 160, 1, 38,
1784 230, 100, 219, 230, 230, 165, 60, 61, 62, 529,
1785 228, 228, 220, 219, 17, 18, 217, 228, 228, 22,
1786 74, 75, 76, 183, 228, 124, 65, 81, 82, 193,
1787 220, 217, 1, 198, 3, 228, 5, 108, 228, 199,
1788 228, 228, 228, 228, 100, 100, 228, 210, 211, 212,
1789 19, 214, 215, 217, 230, 230, 221, 222, 230, 227,
1790 223, 100, 65, 228, 228, 228, 193, 172, 228, 38,
1791 209, 209, 1, 230, 230, 68, 230, 70, 117, 82,
1792 83, 84, 85, 86, 1, 1, 55, 90, 57, 230,
1793 217, 94, 217, 613, 227, 220, 65, 100, 618, 230,
1794 230, 621, 19, 228, 33, 625, 109, 110, 77, 165,
1795 149, 150, 230, 42, 43, 44, 230, 120, 47, 48,
1796 113, 38, 1, 52, 53, 54, 230, 183, 230, 230,
1797 230, 100, 230, 1, 11, 12, 13, 130, 141, 55,
1798 19, 230, 1, 199, 230, 230, 230, 63, 65, 65,
1799 230, 19, 121, 230, 230, 230, 230, 230, 230, 38,
1800 230, 200, 217, 230, 230, 220, 25, 26, 230, 230,
1801 38, 140, 230, 32, 228, 168, 169, 230, 230, 230,
1802 149, 220, 185, 230, 230, 224, 65, 230, 70, 228,
1803 230, 122, 230, 230, 1, 230, 230, 65, 230, 230,
1804 117, 60, 61, 62, 230, 121, 230, 230, 125, 126,
1805 230, 230, 230, 230, 230, 74, 75, 76, 15, 230,
1806 230, 100, 81, 82, 230, 228, 33, 220, 145, 198,
1807 230, 108, 225, 230, 230, 42, 43, 44, 117, 230,
1808 47, 48, 39, 230, 230, 52, 53, 54, 130, 117,
1809 230, 230, 221, 230, 230, 230, 230, 125, 126, 228,
1810 230, 122, 230, 230, 230, 4, 230, 1, 230, 230,
1811 149, 150, 6, 7, 71, 9, 10, 145, 230, 161,
1812 14, 20, 21, 230, 230, 230, 230, 169, 108, 23,
1813 24, 30, 230, 230, 230, 122, 178, 31, 108, 228,
1814 34, 35, 36, 220, 101, 102, 227, 41, 108, 108,
1815 107, 228, 108, 133, 134, 135, 136, 137, 138, 139,
1816 202, 200, 204, 205, 58, 59, 108, 227, 67, 68,
1817 227, 70, 230, 227, 131, 69, 218, 230, 72, 73,
1818 230, 220, 230, 225, 230, 224, 80, 230, 122, 146,
1819 230, 108, 220, 87, 230, 89, 230, 91, 97, 93,
1820 230, 95, 96, 230, 230, 230, 105, 230, 230, 227,
1821 230, 1217, 106, 230, 230, 230, 230, 111, 112, 230,
1822 114, 115, 116, 230, 230, 119, 230, 230, 127, 230,
1823 129, 130, 230, 230, 230, 1, 230, 3, 230, 5,
1824 230, 230, 108, 209, 209, 1, 108, 108, 147, 108,
1825 144, 208, 108, 19, 209, 209, 209, 108, 108, 108,
1826 154, 155, 156, 157, 158, 159, 160, 70, 108, 226,
1827 169, 27, 38, 29, 108, 174, 108, 108, 209, 178,
1828 230, 230, 209, 182, 209, 209, 209, 209, 187, 55,
1829 209, 57, 191, 209, 209, 108, 209, 209, 227, 65,
1830 56, 227, 230, 202, 122, 204, 205, 227, 207, 230,
1831 66, 77, 230, 122, 122, 122, 210, 211, 212, 218,
1832 214, 215, 230, 230, 230, 230, 225, 130, 230, 223,
1833 230, 227, 88, 230, 100, 230, 92, 230, 227, 230,
1834 230, 0, 1, 227, 100, 4, 108, 103, 104, 230,
1835 230, 230, 230, 230, 230, 121, 230, 16, 161, 230,
1836 19, 230, 21, 227, 209, 230, 169, 230, 209, 28,
1837 209, 209, 209, 209, 140, 178, 132, 122, 122, 227,
1838 209, 40, 108, 149, 108, 122, 45, 46, 122, 122,
1839 122, 122, 148, 122, 122, 151, 152, 153, 209, 202,
1840 122, 204, 205, 122, 1, 64, 122, 122, 227, 68,
1841 227, 122, 227, 227, 230, 218, 108, 229, 108, 78,
1842 17, 18, 225, 227, 230, 22, 47, 108, 49, 50,
1843 230, 230, 198, 230, 227, 230, 230, 227, 227, 98,
1844 99, 227, 198, 227, 809, 810, 811, 812, 813, 814,
1845 815, 227, 227, 227, 113, 221, 227, 227, 227, 227,
1846 227, 108, 227, 227, 108, 221, 222, 230, 65, 108,
1847 108, 130, 122, 108, 47, 108, 49, 50, 108, 227,
1848 122, 122, 209, 142, 143, 82, 83, 84, 85, 86,
1849 122, 122, 230, 90, 122, 122, 108, 94, 122, 122,
1850 122, 108, 122, 100, 227, 122, 122, 166, 122, 227,
1851 227, 122, 109, 110, 47, 227, 122, 227, 227, 227,
1852 179, 227, 227, 120, 227, 184, 227, 227, 227, 227,
1853 189, 227, 227, 192, 227, 122, 227, 122, 227, 227,
1854 227, 162, 163, 164, 141, 227, 167, 168, 227, 170,
1855 171, 227, 173, 227, 175, 227, 227, 178, 227, 180,
1856 181, 227, 227, 227, 227, 186, 227, 227, 230, 190,
1857 227, 227, 227, 194, 195, 196, 227, 122, 227, 227,
1858 201, 227, 227, 122, 227, 206, 122, 227, 185, 162,
1859 163, 164, 122, 227, 167, 168, 122, 170, 171, 209,
1860 173, 227, 175, 122, 108, 178, 122, 180, 181, 227,
1861 122, 230, 227, 186, 227, 122, 209, 190, 227, 227,
1862 122, 194, 195, 196, 227, 227, 227, 227, 201, 162,
1863 163, 164, 230, 206, 167, 168, 122, 170, 171, 122,
1864 173, 209, 175, 122, 230, 178, 122, 180, 181, 227,
1865 122, 122, 122, 186, 122, 227, 227, 190, 227, 122,
1866 227, 194, 195, 196, 227, 227, 227, 227, 201, 227,
1867 227, 227, 227, 206, 227, 227, 227, 227, 227, 227,
1868 227, 227, 122, 227, 227, 227, 227, 227, 122, 227,
1869 227, 122, 122, 227, 122, 230, 227, 108, 227, 227,
1870 232, 122, 227, 230, 227, 227, 227, 227, 232, 227,
1871 227, 128, 227, 227, 227, 130, 227, 227, 227, 227,
1872 128, 227, 227, 130, 227, 128, 227, 227, 227, 227,
1873 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1874 227, 128, 227, 227, 77, 227, 227, 227, 491, 227,
1875 227, 575, 227, 227, 227, 216, 1302, 1034, 227, 506,
1876 227, 227, 227, 1264, 1262, 227, 332, 231, 227, 227,
1877 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1878 227, 227, 1136, 1240, 227, 230, 230, 455, 227, 227,
1879 227, 227, 227, 215, 227, 1251, 1249, 522, 478, 1273,
1880 232, 261, 227, 232, 561, 232, 232, 230, 227, 227,
1881 588, 227, 1266, 1245, 468, 385, 112, 162, 395, 94,
1882 1106, 1104, 232, -1, -1, -1, -1, -1, -1, -1,
1883 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1884 -1, 283, -1, -1, -1, -1, -1, -1, -1, -1,
1885 291, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1886 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1887 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1888 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1889 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1890 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1891 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1892 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1893 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1894 -1, -1, 366
1895 };
1896
1897 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1898 symbol of state STATE-NUM. */
1899 static const yytype_uint16 yystos[] =
1900 {
1901 0, 234, 0, 1, 4, 16, 19, 21, 28, 40,
1902 45, 46, 64, 68, 78, 98, 99, 113, 130, 142,
1903 143, 166, 179, 184, 189, 192, 235, 240, 245, 265,
1904 271, 277, 285, 299, 319, 343, 357, 372, 379, 383,
1905 393, 402, 423, 429, 435, 439, 445, 499, 513, 227,
1906 228, 229, 229, 320, 403, 430, 229, 440, 229, 358,
1907 424, 344, 229, 272, 300, 373, 229, 229, 394, 229,
1908 278, 229, 384, 1, 29, 37, 100, 266, 267, 268,
1909 269, 270, 1, 25, 26, 32, 60, 61, 62, 74,
1910 75, 76, 81, 82, 500, 501, 502, 503, 504, 505,
1911 506, 507, 508, 509, 510, 511, 512, 229, 229, 229,
1912 1, 63, 436, 437, 438, 229, 1, 6, 7, 9,
1913 10, 14, 23, 24, 31, 34, 35, 36, 41, 58,
1914 59, 69, 72, 73, 80, 87, 89, 91, 93, 95,
1915 96, 106, 111, 112, 114, 115, 116, 119, 144, 154,
1916 155, 156, 157, 158, 159, 160, 210, 211, 212, 214,
1917 215, 223, 446, 447, 448, 449, 450, 451, 452, 453,
1918 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
1919 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
1920 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
1921 484, 485, 486, 487, 488, 492, 496, 497, 498, 229,
1922 229, 229, 1, 97, 118, 241, 242, 243, 244, 229,
1923 229, 229, 1, 33, 42, 43, 44, 47, 48, 52,
1924 53, 54, 514, 515, 516, 517, 518, 519, 520, 521,
1925 522, 523, 524, 1, 27, 29, 56, 66, 88, 92,
1926 100, 103, 104, 132, 148, 151, 152, 153, 198, 221,
1927 222, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1928 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1929 229, 1, 219, 286, 287, 288, 289, 290, 229, 1,
1930 100, 380, 381, 382, 229, 227, 230, 230, 230, 228,
1931 267, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1932 230, 230, 228, 501, 1, 17, 18, 22, 65, 82,
1933 83, 84, 85, 86, 90, 94, 100, 109, 110, 120,
1934 141, 185, 321, 322, 323, 324, 325, 326, 327, 328,
1935 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
1936 339, 1, 3, 5, 19, 38, 55, 57, 65, 77,
1937 100, 121, 140, 149, 198, 221, 404, 405, 406, 407,
1938 408, 409, 410, 411, 412, 413, 414, 418, 419, 420,
1939 421, 422, 1, 63, 124, 431, 432, 433, 434, 230,
1940 228, 437, 1, 100, 124, 441, 442, 443, 444, 230,
1941 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1942 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1943 230, 230, 230, 230, 493, 489, 230, 230, 230, 230,
1944 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1945 230, 230, 230, 230, 228, 447, 1, 19, 38, 65,
1946 117, 125, 126, 145, 220, 359, 360, 361, 362, 363,
1947 364, 365, 369, 370, 371, 1, 124, 220, 425, 426,
1948 427, 428, 1, 55, 63, 65, 121, 345, 349, 350,
1949 351, 355, 356, 227, 230, 230, 228, 242, 1, 79,
1950 172, 273, 274, 275, 276, 1, 19, 38, 65, 100,
1951 117, 149, 150, 200, 220, 224, 301, 302, 303, 304,
1952 305, 306, 307, 308, 309, 310, 311, 315, 1, 40,
1953 79, 124, 374, 375, 376, 377, 378, 230, 230, 230,
1954 230, 230, 230, 230, 230, 230, 228, 515, 227, 230,
1955 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1956 230, 230, 230, 230, 230, 230, 228, 247, 1, 100,
1957 217, 395, 396, 397, 398, 227, 230, 228, 287, 172,
1958 1, 100, 165, 183, 199, 279, 280, 281, 282, 283,
1959 284, 230, 228, 381, 1, 100, 217, 220, 385, 386,
1960 387, 388, 389, 122, 122, 122, 227, 108, 108, 237,
1961 209, 108, 237, 237, 108, 237, 237, 108, 108, 227,
1962 227, 230, 230, 230, 340, 230, 230, 230, 230, 230,
1963 230, 230, 230, 230, 230, 230, 230, 230, 228, 322,
1964 227, 230, 230, 230, 230, 230, 230, 415, 230, 230,
1965 230, 230, 230, 230, 230, 228, 405, 230, 230, 228,
1966 432, 122, 227, 230, 230, 228, 442, 209, 237, 108,
1967 237, 237, 209, 108, 209, 108, 108, 108, 209, 209,
1968 209, 237, 108, 108, 108, 108, 237, 108, 108, 108,
1969 108, 209, 230, 230, 209, 237, 237, 209, 209, 209,
1970 209, 213, 209, 213, 209, 209, 209, 209, 108, 237,
1971 209, 237, 237, 209, 227, 227, 230, 230, 366, 230,
1972 230, 230, 230, 230, 228, 360, 230, 230, 228, 426,
1973 227, 230, 230, 346, 230, 228, 350, 122, 122, 227,
1974 227, 230, 230, 228, 274, 227, 230, 230, 316, 230,
1975 230, 230, 230, 312, 230, 230, 228, 302, 227, 230,
1976 230, 230, 228, 375, 209, 209, 237, 122, 209, 122,
1977 209, 209, 209, 227, 108, 122, 209, 122, 108, 108,
1978 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
1979 122, 227, 227, 230, 399, 228, 396, 209, 227, 229,
1980 227, 230, 230, 230, 230, 228, 280, 122, 227, 227,
1981 230, 390, 230, 228, 386, 227, 227, 227, 227, 133,
1982 134, 135, 136, 137, 138, 139, 236, 237, 227, 227,
1983 227, 227, 227, 227, 227, 227, 227, 227, 108, 108,
1984 237, 230, 108, 108, 108, 237, 108, 108, 237, 122,
1985 108, 108, 237, 108, 239, 239, 227, 122, 176, 177,
1986 122, 209, 122, 122, 230, 122, 122, 108, 122, 122,
1987 122, 122, 227, 122, 122, 227, 227, 122, 122, 227,
1988 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1989 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1990 227, 227, 227, 227, 227, 47, 162, 163, 164, 167,
1991 168, 170, 171, 173, 175, 178, 180, 181, 186, 190,
1992 194, 195, 196, 201, 206, 494, 495, 47, 49, 50,
1993 162, 163, 164, 167, 168, 170, 171, 173, 175, 178,
1994 180, 181, 186, 190, 194, 195, 196, 201, 206, 490,
1995 491, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1996 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1997 227, 122, 209, 230, 122, 108, 122, 122, 122, 227,
1998 122, 122, 227, 122, 122, 230, 108, 353, 354, 227,
1999 227, 227, 122, 122, 227, 122, 209, 230, 122, 122,
2000 122, 209, 230, 122, 122, 227, 122, 122, 122, 227,
2001 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
2002 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
2003 227, 227, 227, 227, 227, 227, 122, 230, 227, 227,
2004 1, 100, 193, 217, 291, 292, 293, 294, 295, 122,
2005 122, 122, 122, 227, 227, 122, 230, 122, 227, 236,
2006 236, 236, 236, 236, 236, 236, 227, 227, 227, 51,
2007 123, 341, 342, 227, 227, 227, 227, 227, 227, 227,
2008 227, 227, 227, 227, 11, 12, 13, 238, 239, 227,
2009 227, 227, 227, 227, 227, 227, 227, 227, 8, 197,
2010 416, 417, 227, 227, 227, 227, 227, 227, 227, 227,
2011 227, 227, 227, 227, 231, 227, 231, 227, 227, 15,
2012 39, 71, 101, 102, 107, 131, 146, 208, 226, 367,
2013 368, 227, 227, 227, 227, 227, 227, 227, 227, 227,
2014 47, 188, 197, 347, 348, 216, 231, 352, 227, 227,
2015 227, 227, 4, 20, 21, 30, 67, 68, 70, 97,
2016 105, 127, 129, 130, 147, 169, 174, 178, 182, 187,
2017 191, 202, 204, 205, 207, 218, 225, 317, 318, 227,
2018 227, 227, 227, 47, 49, 50, 162, 163, 164, 167,
2019 168, 170, 171, 173, 175, 178, 180, 181, 186, 190,
2020 194, 195, 196, 201, 206, 313, 314, 227, 227, 227,
2021 227, 227, 227, 70, 130, 161, 169, 178, 202, 204,
2022 205, 218, 225, 400, 401, 227, 230, 230, 296, 228,
2023 292, 227, 227, 227, 227, 227, 70, 130, 161, 169,
2024 178, 202, 204, 205, 218, 225, 391, 392, 227, 227,
2025 231, 238, 238, 238, 227, 231, 495, 491, 227, 231,
2026 227, 231, 108, 354, 227, 232, 232, 232, 232, 232,
2027 232, 227, 231, 227, 231, 227, 231, 122, 203, 239,
2028 230, 227, 227, 231, 342, 417, 368, 348, 128, 130,
2029 128, 130, 128, 128, 318, 314, 401, 227, 227, 227,
2030 68, 70, 113, 130, 168, 169, 220, 225, 297, 298,
2031 392, 227, 231, 298
2032 };
2033
2034 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
2035 static const yytype_uint16 yyr1[] =
2036 {
2037 0, 233, 234, 234, 235, 235, 235, 235, 235, 235,
2038 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
2039 235, 235, 235, 235, 235, 235, 235, 235, 236, 236,
2040 237, 237, 237, 237, 237, 237, 237, 237, 238, 238,
2041 239, 239, 239, 239, 240, 241, 241, 242, 242, 242,
2042 243, 244, 245, 246, 246, 247, 247, 247, 247, 247,
2043 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
2044 247, 247, 247, 248, 249, 250, 251, 252, 253, 254,
2045 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
2046 265, 266, 266, 267, 267, 267, 267, 268, 269, 270,
2047 272, 271, 273, 273, 274, 274, 274, 275, 276, 278,
2048 277, 279, 279, 280, 280, 280, 280, 280, 281, 282,
2049 283, 284, 285, 286, 286, 287, 287, 287, 288, 290,
2050 289, 291, 291, 292, 292, 292, 292, 293, 294, 294,
2051 296, 295, 297, 297, 298, 298, 298, 298, 298, 298,
2052 298, 298, 300, 299, 301, 301, 302, 302, 302, 302,
2053 302, 302, 302, 302, 302, 302, 302, 303, 304, 305,
2054 306, 307, 308, 309, 310, 312, 311, 313, 313, 314,
2055 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
2056 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
2057 314, 316, 315, 317, 317, 318, 318, 318, 318, 318,
2058 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
2059 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
2060 318, 318, 318, 318, 320, 319, 321, 321, 322, 322,
2061 322, 322, 322, 322, 322, 322, 322, 322, 322, 322,
2062 322, 322, 322, 322, 322, 322, 323, 324, 325, 326,
2063 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
2064 337, 338, 340, 339, 341, 341, 342, 342, 344, 343,
2065 346, 345, 347, 347, 348, 348, 348, 349, 349, 350,
2066 350, 350, 350, 350, 352, 351, 353, 353, 354, 354,
2067 355, 356, 358, 357, 359, 359, 360, 360, 360, 360,
2068 360, 360, 360, 360, 360, 361, 362, 363, 364, 366,
2069 365, 367, 367, 368, 368, 368, 368, 368, 368, 368,
2070 368, 368, 368, 369, 370, 371, 373, 372, 374, 374,
2071 375, 375, 375, 375, 376, 377, 378, 379, 380, 380,
2072 381, 381, 382, 384, 383, 385, 385, 386, 386, 386,
2073 386, 387, 388, 390, 389, 391, 391, 392, 392, 392,
2074 392, 392, 392, 392, 392, 392, 392, 394, 393, 395,
2075 395, 396, 396, 396, 397, 399, 398, 400, 400, 401,
2076 401, 401, 401, 401, 401, 401, 401, 401, 401, 403,
2077 402, 404, 404, 405, 405, 405, 405, 405, 405, 405,
2078 405, 405, 405, 405, 405, 405, 405, 405, 406, 407,
2079 408, 409, 410, 411, 412, 413, 413, 415, 414, 416,
2080 416, 417, 417, 418, 419, 420, 421, 422, 424, 423,
2081 425, 425, 426, 426, 426, 427, 428, 430, 429, 431,
2082 431, 432, 432, 432, 433, 434, 435, 436, 436, 437,
2083 437, 438, 440, 439, 441, 441, 442, 442, 442, 443,
2084 444, 445, 446, 446, 447, 447, 447, 447, 447, 447,
2085 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2086 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2087 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2088 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2089 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
2090 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
2091 468, 469, 470, 471, 472, 473, 474, 474, 475, 475,
2092 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
2093 486, 487, 489, 488, 490, 490, 491, 491, 491, 491,
2094 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
2095 491, 491, 491, 491, 491, 491, 491, 491, 493, 492,
2096 494, 494, 495, 495, 495, 495, 495, 495, 495, 495,
2097 495, 495, 495, 495, 495, 495, 495, 495, 495, 495,
2098 495, 495, 496, 497, 498, 499, 500, 500, 501, 501,
2099 501, 501, 501, 501, 501, 501, 501, 501, 501, 501,
2100 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
2101 512, 513, 514, 514, 515, 515, 515, 515, 515, 515,
2102 515, 515, 515, 515, 516, 517, 518, 519, 520, 521,
2103 522, 523, 524
2104 };
2105
2106 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
2107 static const yytype_uint8 yyr2[] =
2108 {
2109 0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
2110 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2111 1, 1, 1, 1, 1, 1, 2, 2, 0, 1,
2112 2, 3, 3, 3, 3, 3, 3, 3, 0, 1,
2113 2, 3, 3, 3, 5, 2, 1, 1, 1, 2,
2114 4, 4, 5, 2, 1, 1, 1, 1, 1, 1,
2115 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2116 1, 1, 2, 4, 4, 4, 4, 4, 4, 4,
2117 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2118 5, 2, 1, 1, 1, 1, 2, 4, 4, 4,
2119 0, 6, 2, 1, 1, 1, 2, 4, 4, 0,
2120 6, 2, 1, 1, 1, 1, 1, 2, 4, 4,
2121 4, 4, 5, 2, 1, 1, 1, 2, 4, 0,
2122 6, 2, 1, 1, 1, 1, 2, 4, 4, 4,
2123 0, 5, 3, 1, 1, 1, 1, 1, 1, 1,
2124 1, 1, 0, 6, 2, 1, 1, 1, 1, 1,
2125 1, 1, 1, 1, 1, 1, 2, 4, 4, 4,
2126 4, 4, 4, 4, 4, 0, 5, 3, 1, 1,
2127 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2128 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2129 1, 0, 5, 3, 1, 3, 1, 3, 1, 3,
2130 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
2131 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
2132 3, 1, 1, 1, 0, 6, 2, 1, 1, 1,
2133 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2134 1, 1, 1, 1, 1, 2, 4, 4, 4, 4,
2135 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2136 4, 4, 0, 5, 3, 1, 1, 1, 0, 6,
2137 0, 5, 3, 1, 1, 1, 1, 2, 1, 1,
2138 1, 1, 1, 2, 0, 5, 3, 1, 1, 3,
2139 4, 4, 0, 6, 2, 1, 1, 1, 1, 1,
2140 1, 1, 1, 1, 2, 4, 4, 4, 4, 0,
2141 5, 3, 1, 1, 1, 1, 1, 1, 1, 1,
2142 1, 1, 1, 4, 4, 4, 0, 6, 2, 1,
2143 1, 1, 1, 2, 4, 4, 4, 5, 2, 1,
2144 1, 1, 4, 0, 6, 2, 1, 1, 1, 1,
2145 2, 4, 4, 0, 5, 3, 1, 1, 1, 1,
2146 1, 1, 1, 1, 1, 1, 1, 0, 6, 2,
2147 1, 1, 1, 2, 4, 0, 5, 3, 1, 1,
2148 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
2149 6, 2, 1, 1, 1, 1, 1, 1, 1, 1,
2150 1, 1, 1, 1, 1, 1, 1, 2, 4, 4,
2151 4, 4, 4, 4, 4, 4, 4, 0, 5, 3,
2152 1, 1, 1, 4, 4, 4, 4, 4, 0, 6,
2153 2, 1, 1, 1, 1, 4, 4, 0, 6, 2,
2154 1, 1, 1, 1, 4, 4, 5, 2, 1, 1,
2155 1, 4, 0, 6, 2, 1, 1, 1, 1, 4,
2156 4, 5, 2, 1, 1, 1, 1, 1, 1, 1,
2157 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2158 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2159 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2160 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2161 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2162 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2163 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2164 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2165 4, 4, 0, 5, 3, 1, 1, 1, 1, 1,
2166 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2167 1, 1, 1, 1, 1, 1, 1, 1, 0, 5,
2168 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2169 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2170 1, 1, 4, 4, 4, 5, 2, 1, 1, 1,
2171 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2172 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2173 4, 5, 2, 1, 1, 1, 1, 1, 1, 1,
2174 1, 1, 1, 1, 4, 4, 4, 4, 4, 4,
2175 4, 4, 4
2176 };
2177
2178
2179 #define yyerrok (yyerrstatus = 0)
2180 #define yyclearin (yychar = YYEMPTY)
2181 #define YYEMPTY (-2)
2182 #define YYEOF 0
2183
2184 #define YYACCEPT goto yyacceptlab
2185 #define YYABORT goto yyabortlab
2186 #define YYERROR goto yyerrorlab
2187
2188
2189 #define YYRECOVERING() (!!yyerrstatus)
2190
2191 #define YYBACKUP(Token, Value) \
2192 do \
2193 if (yychar == YYEMPTY) \
2194 { \
2195 yychar = (Token); \
2196 yylval = (Value); \
2197 YYPOPSTACK (yylen); \
2198 yystate = *yyssp; \
2199 goto yybackup; \
2200 } \
2201 else \
2202 { \
2203 yyerror (YY_("syntax error: cannot back up")); \
2204 YYERROR; \
2205 } \
2206 while (0)
2207
2208 /* Error token number */
2209 #define YYTERROR 1
2210 #define YYERRCODE 256
2211
2212
2213
2214 /* Enable debugging if requested. */
2215 #if YYDEBUG
2216
2217 # ifndef YYFPRINTF
2218 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2219 # define YYFPRINTF fprintf
2220 # endif
2221
2222 # define YYDPRINTF(Args) \
2223 do { \
2224 if (yydebug) \
2225 YYFPRINTF Args; \
2226 } while (0)
2227
2228 /* This macro is provided for backward compatibility. */
2229 #ifndef YY_LOCATION_PRINT
2230 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2231 #endif
2232
2233
2234 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2235 do { \
2236 if (yydebug) \
2237 { \
2238 YYFPRINTF (stderr, "%s ", Title); \
2239 yy_symbol_print (stderr, \
2240 Type, Value); \
2241 YYFPRINTF (stderr, "\n"); \
2242 } \
2243 } while (0)
2244
2245
2246 /*----------------------------------------.
2247 | Print this symbol's value on YYOUTPUT. |
2248 `----------------------------------------*/
2249
2250 static void
2251 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2252 {
2253 FILE *yyo = yyoutput;
2254 YYUSE (yyo);
2255 if (!yyvaluep)
2256 return;
2257 # ifdef YYPRINT
2258 if (yytype < YYNTOKENS)
2259 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2260 # endif
2261 YYUSE (yytype);
2262 }
2263
2264
2265 /*--------------------------------.
2266 | Print this symbol on YYOUTPUT. |
2267 `--------------------------------*/
2268
2269 static void
2270 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2271 {
2272 YYFPRINTF (yyoutput, "%s %s (",
2273 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
2274
2275 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2276 YYFPRINTF (yyoutput, ")");
2277 }
2278
2279 /*------------------------------------------------------------------.
2280 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2281 | TOP (included). |
2282 `------------------------------------------------------------------*/
2283
2284 static void
2285 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2286 {
2287 YYFPRINTF (stderr, "Stack now");
2288 for (; yybottom <= yytop; yybottom++)
2289 {
2290 int yybot = *yybottom;
2291 YYFPRINTF (stderr, " %d", yybot);
2292 }
2293 YYFPRINTF (stderr, "\n");
2294 }
2295
2296 # define YY_STACK_PRINT(Bottom, Top) \
2297 do { \
2298 if (yydebug) \
2299 yy_stack_print ((Bottom), (Top)); \
2300 } while (0)
2301
2302
2303 /*------------------------------------------------.
2304 | Report that the YYRULE is going to be reduced. |
2305 `------------------------------------------------*/
2306
2307 static void
2308 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
2309 {
2310 unsigned long int yylno = yyrline[yyrule];
2311 int yynrhs = yyr2[yyrule];
2312 int yyi;
2313 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2314 yyrule - 1, yylno);
2315 /* The symbols being reduced. */
2316 for (yyi = 0; yyi < yynrhs; yyi++)
2317 {
2318 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2319 yy_symbol_print (stderr,
2320 yystos[yyssp[yyi + 1 - yynrhs]],
2321 &(yyvsp[(yyi + 1) - (yynrhs)])
2322 );
2323 YYFPRINTF (stderr, "\n");
2324 }
2325 }
2326
2327 # define YY_REDUCE_PRINT(Rule) \
2328 do { \
2329 if (yydebug) \
2330 yy_reduce_print (yyssp, yyvsp, Rule); \
2331 } while (0)
2332
2333 /* Nonzero means print parse trace. It is left uninitialized so that
2334 multiple parsers can coexist. */
2335 int yydebug;
2336 #else /* !YYDEBUG */
2337 # define YYDPRINTF(Args)
2338 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2339 # define YY_STACK_PRINT(Bottom, Top)
2340 # define YY_REDUCE_PRINT(Rule)
2341 #endif /* !YYDEBUG */
2342
2343
2344 /* YYINITDEPTH -- initial size of the parser's stacks. */
2345 #ifndef YYINITDEPTH
2346 # define YYINITDEPTH 200
2347 #endif
2348
2349 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2350 if the built-in stack extension method is used).
2351
2352 Do not make this value too large; the results are undefined if
2353 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2354 evaluated with infinite-precision integer arithmetic. */
2355
2356 #ifndef YYMAXDEPTH
2357 # define YYMAXDEPTH 10000
2358 #endif
2359
2360
2361 #if YYERROR_VERBOSE
2362
2363 # ifndef yystrlen
2364 # if defined __GLIBC__ && defined _STRING_H
2365 # define yystrlen strlen
2366 # else
2367 /* Return the length of YYSTR. */
2368 static YYSIZE_T
2369 yystrlen (const char *yystr)
2370 {
2371 YYSIZE_T yylen;
2372 for (yylen = 0; yystr[yylen]; yylen++)
2373 continue;
2374 return yylen;
2375 }
2376 # endif
2377 # endif
2378
2379 # ifndef yystpcpy
2380 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2381 # define yystpcpy stpcpy
2382 # else
2383 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2384 YYDEST. */
2385 static char *
2386 yystpcpy (char *yydest, const char *yysrc)
2387 {
2388 char *yyd = yydest;
2389 const char *yys = yysrc;
2390
2391 while ((*yyd++ = *yys++) != '\0')
2392 continue;
2393
2394 return yyd - 1;
2395 }
2396 # endif
2397 # endif
2398
2399 # ifndef yytnamerr
2400 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2401 quotes and backslashes, so that it's suitable for yyerror. The
2402 heuristic is that double-quoting is unnecessary unless the string
2403 contains an apostrophe, a comma, or backslash (other than
2404 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2405 null, do not copy; instead, return the length of what the result
2406 would have been. */
2407 static YYSIZE_T
2408 yytnamerr (char *yyres, const char *yystr)
2409 {
2410 if (*yystr == '"')
2411 {
2412 YYSIZE_T yyn = 0;
2413 char const *yyp = yystr;
2414
2415 for (;;)
2416 switch (*++yyp)
2417 {
2418 case '\'':
2419 case ',':
2420 goto do_not_strip_quotes;
2421
2422 case '\\':
2423 if (*++yyp != '\\')
2424 goto do_not_strip_quotes;
2425 /* Fall through. */
2426 default:
2427 if (yyres)
2428 yyres[yyn] = *yyp;
2429 yyn++;
2430 break;
2431
2432 case '"':
2433 if (yyres)
2434 yyres[yyn] = '\0';
2435 return yyn;
2436 }
2437 do_not_strip_quotes: ;
2438 }
2439
2440 if (! yyres)
2441 return yystrlen (yystr);
2442
2443 return yystpcpy (yyres, yystr) - yyres;
2444 }
2445 # endif
2446
2447 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2448 about the unexpected token YYTOKEN for the state stack whose top is
2449 YYSSP.
2450
2451 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
2452 not large enough to hold the message. In that case, also set
2453 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
2454 required number of bytes is too large to store. */
2455 static int
2456 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
2457 yytype_int16 *yyssp, int yytoken)
2458 {
2459 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
2460 YYSIZE_T yysize = yysize0;
2461 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2462 /* Internationalized format string. */
2463 const char *yyformat = YY_NULLPTR;
2464 /* Arguments of yyformat. */
2465 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2466 /* Number of reported tokens (one for the "unexpected", one per
2467 "expected"). */
2468 int yycount = 0;
2469
2470 /* There are many possibilities here to consider:
2471 - If this state is a consistent state with a default action, then
2472 the only way this function was invoked is if the default action
2473 is an error action. In that case, don't check for expected
2474 tokens because there are none.
2475 - The only way there can be no lookahead present (in yychar) is if
2476 this state is a consistent state with a default action. Thus,
2477 detecting the absence of a lookahead is sufficient to determine
2478 that there is no unexpected or expected token to report. In that
2479 case, just report a simple "syntax error".
2480 - Don't assume there isn't a lookahead just because this state is a
2481 consistent state with a default action. There might have been a
2482 previous inconsistent state, consistent state with a non-default
2483 action, or user semantic action that manipulated yychar.
2484 - Of course, the expected token list depends on states to have
2485 correct lookahead information, and it depends on the parser not
2486 to perform extra reductions after fetching a lookahead from the
2487 scanner and before detecting a syntax error. Thus, state merging
2488 (from LALR or IELR) and default reductions corrupt the expected
2489 token list. However, the list is correct for canonical LR with
2490 one exception: it will still contain any token that will not be
2491 accepted due to an error action in a later state.
2492 */
2493 if (yytoken != YYEMPTY)
2494 {
2495 int yyn = yypact[*yyssp];
2496 yyarg[yycount++] = yytname[yytoken];
2497 if (!yypact_value_is_default (yyn))
2498 {
2499 /* Start YYX at -YYN if negative to avoid negative indexes in
2500 YYCHECK. In other words, skip the first -YYN actions for
2501 this state because they are default actions. */
2502 int yyxbegin = yyn < 0 ? -yyn : 0;
2503 /* Stay within bounds of both yycheck and yytname. */
2504 int yychecklim = YYLAST - yyn + 1;
2505 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2506 int yyx;
2507
2508 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2509 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2510 && !yytable_value_is_error (yytable[yyx + yyn]))
2511 {
2512 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2513 {
2514 yycount = 1;
2515 yysize = yysize0;
2516 break;
2517 }
2518 yyarg[yycount++] = yytname[yyx];
2519 {
2520 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
2521 if (! (yysize <= yysize1
2522 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2523 return 2;
2524 yysize = yysize1;
2525 }
2526 }
2527 }
2528 }
2529
2530 switch (yycount)
2531 {
2532 # define YYCASE_(N, S) \
2533 case N: \
2534 yyformat = S; \
2535 break
2536 YYCASE_(0, YY_("syntax error"));
2537 YYCASE_(1, YY_("syntax error, unexpected %s"));
2538 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2539 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2540 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2541 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2542 # undef YYCASE_
2543 }
2544
2545 {
2546 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
2547 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2548 return 2;
2549 yysize = yysize1;
2550 }
2551
2552 if (*yymsg_alloc < yysize)
2553 {
2554 *yymsg_alloc = 2 * yysize;
2555 if (! (yysize <= *yymsg_alloc
2556 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2557 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2558 return 1;
2559 }
2560
2561 /* Avoid sprintf, as that infringes on the user's name space.
2562 Don't have undefined behavior even if the translation
2563 produced a string with the wrong number of "%s"s. */
2564 {
2565 char *yyp = *yymsg;
2566 int yyi = 0;
2567 while ((*yyp = *yyformat) != '\0')
2568 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2569 {
2570 yyp += yytnamerr (yyp, yyarg[yyi++]);
2571 yyformat += 2;
2572 }
2573 else
2574 {
2575 yyp++;
2576 yyformat++;
2577 }
2578 }
2579 return 0;
2580 }
2581 #endif /* YYERROR_VERBOSE */
2582
2583 /*-----------------------------------------------.
2584 | Release the memory associated to this symbol. |
2585 `-----------------------------------------------*/
2586
2587 static void
2588 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2589 {
2590 YYUSE (yyvaluep);
2591 if (!yymsg)
2592 yymsg = "Deleting";
2593 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2594
2595 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2596 YYUSE (yytype);
2597 YY_IGNORE_MAYBE_UNINITIALIZED_END
2598 }
2599
2600
2601
2602
2603 /* The lookahead symbol. */
2604 int yychar;
2605
2606 /* The semantic value of the lookahead symbol. */
2607 YYSTYPE yylval;
2608 /* Number of syntax errors so far. */
2609 int yynerrs;
2610
2611
2612 /*----------.
2613 | yyparse. |
2614 `----------*/
2615
2616 int
2617 yyparse (void)
2618 {
2619 int yystate;
2620 /* Number of tokens to shift before error messages enabled. */
2621 int yyerrstatus;
2622
2623 /* The stacks and their tools:
2624 'yyss': related to states.
2625 'yyvs': related to semantic values.
2626
2627 Refer to the stacks through separate pointers, to allow yyoverflow
2628 to reallocate them elsewhere. */
2629
2630 /* The state stack. */
2631 yytype_int16 yyssa[YYINITDEPTH];
2632 yytype_int16 *yyss;
2633 yytype_int16 *yyssp;
2634
2635 /* The semantic value stack. */
2636 YYSTYPE yyvsa[YYINITDEPTH];
2637 YYSTYPE *yyvs;
2638 YYSTYPE *yyvsp;
2639
2640 YYSIZE_T yystacksize;
2641
2642 int yyn;
2643 int yyresult;
2644 /* Lookahead token as an internal (translated) token number. */
2645 int yytoken = 0;
2646 /* The variables used to return semantic value and location from the
2647 action routines. */
2648 YYSTYPE yyval;
2649
2650 #if YYERROR_VERBOSE
2651 /* Buffer for error messages, and its allocated size. */
2652 char yymsgbuf[128];
2653 char *yymsg = yymsgbuf;
2654 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2655 #endif
2656
2657 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
2658
2659 /* The number of symbols on the RHS of the reduced rule.
2660 Keep to zero when no symbol should be popped. */
2661 int yylen = 0;
2662
2663 yyssp = yyss = yyssa;
2664 yyvsp = yyvs = yyvsa;
2665 yystacksize = YYINITDEPTH;
2666
2667 YYDPRINTF ((stderr, "Starting parse\n"));
2668
2669 yystate = 0;
2670 yyerrstatus = 0;
2671 yynerrs = 0;
2672 yychar = YYEMPTY; /* Cause a token to be read. */
2673 goto yysetstate;
2674
2675 /*------------------------------------------------------------.
2676 | yynewstate -- Push a new state, which is found in yystate. |
2677 `------------------------------------------------------------*/
2678 yynewstate:
2679 /* In all cases, when you get here, the value and location stacks
2680 have just been pushed. So pushing a state here evens the stacks. */
2681 yyssp++;
2682
2683 yysetstate:
2684 *yyssp = yystate;
2685
2686 if (yyss + yystacksize - 1 <= yyssp)
2687 {
2688 /* Get the current used size of the three stacks, in elements. */
2689 YYSIZE_T yysize = yyssp - yyss + 1;
2690
2691 #ifdef yyoverflow
2692 {
2693 /* Give user a chance to reallocate the stack. Use copies of
2694 these so that the &'s don't force the real ones into
2695 memory. */
2696 YYSTYPE *yyvs1 = yyvs;
2697 yytype_int16 *yyss1 = yyss;
2698
2699 /* Each stack pointer address is followed by the size of the
2700 data in use in that stack, in bytes. This used to be a
2701 conditional around just the two extra args, but that might
2702 be undefined if yyoverflow is a macro. */
2703 yyoverflow (YY_("memory exhausted"),
2704 &yyss1, yysize * sizeof (*yyssp),
2705 &yyvs1, yysize * sizeof (*yyvsp),
2706 &yystacksize);
2707
2708 yyss = yyss1;
2709 yyvs = yyvs1;
2710 }
2711 #else /* no yyoverflow */
2712 # ifndef YYSTACK_RELOCATE
2713 goto yyexhaustedlab;
2714 # else
2715 /* Extend the stack our own way. */
2716 if (YYMAXDEPTH <= yystacksize)
2717 goto yyexhaustedlab;
2718 yystacksize *= 2;
2719 if (YYMAXDEPTH < yystacksize)
2720 yystacksize = YYMAXDEPTH;
2721
2722 {
2723 yytype_int16 *yyss1 = yyss;
2724 union yyalloc *yyptr =
2725 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2726 if (! yyptr)
2727 goto yyexhaustedlab;
2728 YYSTACK_RELOCATE (yyss_alloc, yyss);
2729 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2730 # undef YYSTACK_RELOCATE
2731 if (yyss1 != yyssa)
2732 YYSTACK_FREE (yyss1);
2733 }
2734 # endif
2735 #endif /* no yyoverflow */
2736
2737 yyssp = yyss + yysize - 1;
2738 yyvsp = yyvs + yysize - 1;
2739
2740 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2741 (unsigned long int) yystacksize));
2742
2743 if (yyss + yystacksize - 1 <= yyssp)
2744 YYABORT;
2745 }
2746
2747 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2748
2749 if (yystate == YYFINAL)
2750 YYACCEPT;
2751
2752 goto yybackup;
2753
2754 /*-----------.
2755 | yybackup. |
2756 `-----------*/
2757 yybackup:
2758
2759 /* Do appropriate processing given the current state. Read a
2760 lookahead token if we need one and don't already have one. */
2761
2762 /* First try to decide what to do without reference to lookahead token. */
2763 yyn = yypact[yystate];
2764 if (yypact_value_is_default (yyn))
2765 goto yydefault;
2766
2767 /* Not known => get a lookahead token if don't already have one. */
2768
2769 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
2770 if (yychar == YYEMPTY)
2771 {
2772 YYDPRINTF ((stderr, "Reading a token: "));
2773 yychar = yylex ();
2774 }
2775
2776 if (yychar <= YYEOF)
2777 {
2778 yychar = yytoken = YYEOF;
2779 YYDPRINTF ((stderr, "Now at end of input.\n"));
2780 }
2781 else
2782 {
2783 yytoken = YYTRANSLATE (yychar);
2784 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2785 }
2786
2787 /* If the proper action on seeing token YYTOKEN is to reduce or to
2788 detect an error, take that action. */
2789 yyn += yytoken;
2790 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2791 goto yydefault;
2792 yyn = yytable[yyn];
2793 if (yyn <= 0)
2794 {
2795 if (yytable_value_is_error (yyn))
2796 goto yyerrlab;
2797 yyn = -yyn;
2798 goto yyreduce;
2799 }
2800
2801 /* Count tokens shifted since error; after three, turn off error
2802 status. */
2803 if (yyerrstatus)
2804 yyerrstatus--;
2805
2806 /* Shift the lookahead token. */
2807 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2808
2809 /* Discard the shifted token. */
2810 yychar = YYEMPTY;
2811
2812 yystate = yyn;
2813 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2814 *++yyvsp = yylval;
2815 YY_IGNORE_MAYBE_UNINITIALIZED_END
2816
2817 goto yynewstate;
2818
2819
2820 /*-----------------------------------------------------------.
2821 | yydefault -- do the default action for the current state. |
2822 `-----------------------------------------------------------*/
2823 yydefault:
2824 yyn = yydefact[yystate];
2825 if (yyn == 0)
2826 goto yyerrlab;
2827 goto yyreduce;
2828
2829
2830 /*-----------------------------.
2831 | yyreduce -- Do a reduction. |
2832 `-----------------------------*/
2833 yyreduce:
2834 /* yyn is the number of a rule to reduce with. */
2835 yylen = yyr2[yyn];
2836
2837 /* If YYLEN is nonzero, implement the default value of the action:
2838 '$$ = $1'.
2839
2840 Otherwise, the following line sets YYVAL to garbage.
2841 This behavior is undocumented and Bison
2842 users should not rely upon it. Assigning to YYVAL
2843 unconditionally makes the parser a bit smaller, and it avoids a
2844 GCC warning that YYVAL may be used uninitialized. */
2845 yyval = yyvsp[1-yylen];
2846
2847
2848 YY_REDUCE_PRINT (yyn);
2849 switch (yyn)
2850 {
2851 case 28:
2852 #line 405 "conf_parser.y" /* yacc.c:1646 */
2853 { (yyval.number) = 0; }
2854 #line 2855 "conf_parser.c" /* yacc.c:1646 */
2855 break;
2856
2857 case 30:
2858 #line 406 "conf_parser.y" /* yacc.c:1646 */
2859 { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2860 #line 2861 "conf_parser.c" /* yacc.c:1646 */
2861 break;
2862
2863 case 31:
2864 #line 407 "conf_parser.y" /* yacc.c:1646 */
2865 { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2866 #line 2867 "conf_parser.c" /* yacc.c:1646 */
2867 break;
2868
2869 case 32:
2870 #line 408 "conf_parser.y" /* yacc.c:1646 */
2871 { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
2872 #line 2873 "conf_parser.c" /* yacc.c:1646 */
2873 break;
2874
2875 case 33:
2876 #line 409 "conf_parser.y" /* yacc.c:1646 */
2877 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
2878 #line 2879 "conf_parser.c" /* yacc.c:1646 */
2879 break;
2880
2881 case 34:
2882 #line 410 "conf_parser.y" /* yacc.c:1646 */
2883 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
2884 #line 2885 "conf_parser.c" /* yacc.c:1646 */
2885 break;
2886
2887 case 35:
2888 #line 411 "conf_parser.y" /* yacc.c:1646 */
2889 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
2890 #line 2891 "conf_parser.c" /* yacc.c:1646 */
2891 break;
2892
2893 case 36:
2894 #line 412 "conf_parser.y" /* yacc.c:1646 */
2895 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
2896 #line 2897 "conf_parser.c" /* yacc.c:1646 */
2897 break;
2898
2899 case 37:
2900 #line 413 "conf_parser.y" /* yacc.c:1646 */
2901 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
2902 #line 2903 "conf_parser.c" /* yacc.c:1646 */
2903 break;
2904
2905 case 38:
2906 #line 416 "conf_parser.y" /* yacc.c:1646 */
2907 { (yyval.number) = 0; }
2908 #line 2909 "conf_parser.c" /* yacc.c:1646 */
2909 break;
2910
2911 case 40:
2912 #line 417 "conf_parser.y" /* yacc.c:1646 */
2913 { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2914 #line 2915 "conf_parser.c" /* yacc.c:1646 */
2915 break;
2916
2917 case 41:
2918 #line 418 "conf_parser.y" /* yacc.c:1646 */
2919 { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2920 #line 2921 "conf_parser.c" /* yacc.c:1646 */
2921 break;
2922
2923 case 42:
2924 #line 419 "conf_parser.y" /* yacc.c:1646 */
2925 { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
2926 #line 2927 "conf_parser.c" /* yacc.c:1646 */
2927 break;
2928
2929 case 43:
2930 #line 420 "conf_parser.y" /* yacc.c:1646 */
2931 { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
2932 #line 2933 "conf_parser.c" /* yacc.c:1646 */
2933 break;
2934
2935 case 50:
2936 #line 433 "conf_parser.y" /* yacc.c:1646 */
2937 {
2938 if (conf_parser_ctx.pass == 2)
2939 add_conf_module(libio_basename(yylval.string));
2940 }
2941 #line 2942 "conf_parser.c" /* yacc.c:1646 */
2942 break;
2943
2944 case 51:
2945 #line 439 "conf_parser.y" /* yacc.c:1646 */
2946 {
2947 if (conf_parser_ctx.pass == 2)
2948 mod_add_path(yylval.string);
2949 }
2950 #line 2951 "conf_parser.c" /* yacc.c:1646 */
2951 break;
2952
2953 case 73:
2954 #line 472 "conf_parser.y" /* yacc.c:1646 */
2955 {
2956 if (conf_parser_ctx.pass == 2)
2957 {
2958 if (!ConfigServerInfo.rsa_private_key_file)
2959 {
2960 conf_error_report("No rsa_private_key_file specified, SSL disabled");
2961 break;
2962 }
2963
2964 if (ConfigServerInfo.ssl_certificate_file)
2965 xfree(ConfigServerInfo.ssl_certificate_file);
2966
2967 ConfigServerInfo.ssl_certificate_file = xstrdup(yylval.string);
2968 }
2969 }
2970 #line 2971 "conf_parser.c" /* yacc.c:1646 */
2971 break;
2972
2973 case 74:
2974 #line 489 "conf_parser.y" /* yacc.c:1646 */
2975 {
2976 if (conf_parser_ctx.pass != 1)
2977 break;
2978
2979 xfree(ConfigServerInfo.rsa_private_key_file);
2980 ConfigServerInfo.rsa_private_key_file = xstrdup(yylval.string);
2981 }
2982 #line 2983 "conf_parser.c" /* yacc.c:1646 */
2983 break;
2984
2985 case 75:
2986 #line 498 "conf_parser.y" /* yacc.c:1646 */
2987 {
2988 if (conf_parser_ctx.pass == 2)
2989 {
2990 xfree(ConfigServerInfo.ssl_dh_param_file);
2991 ConfigServerInfo.ssl_dh_param_file = xstrdup(yylval.string);
2992 }
2993 }
2994 #line 2995 "conf_parser.c" /* yacc.c:1646 */
2995 break;
2996
2997 case 76:
2998 #line 507 "conf_parser.y" /* yacc.c:1646 */
2999 {
3000 if (conf_parser_ctx.pass == 2)
3001 {
3002 xfree(ConfigServerInfo.ssl_cipher_list);
3003 ConfigServerInfo.ssl_cipher_list = xstrdup(yylval.string);
3004 }
3005 }
3006 #line 3007 "conf_parser.c" /* yacc.c:1646 */
3007 break;
3008
3009 case 77:
3010 #line 516 "conf_parser.y" /* yacc.c:1646 */
3011 {
3012 if (conf_parser_ctx.pass == 2)
3013 {
3014 xfree(ConfigServerInfo.ssl_message_digest_algorithm);
3015 ConfigServerInfo.ssl_message_digest_algorithm = xstrdup(yylval.string);
3016 }
3017 }
3018 #line 3019 "conf_parser.c" /* yacc.c:1646 */
3019 break;
3020
3021 case 78:
3022 #line 525 "conf_parser.y" /* yacc.c:1646 */
3023 {
3024 if (conf_parser_ctx.pass == 2)
3025 {
3026 xfree(ConfigServerInfo.ssl_dh_elliptic_curve);
3027 ConfigServerInfo.ssl_dh_elliptic_curve = xstrdup(yylval.string);
3028 }
3029 }
3030 #line 3031 "conf_parser.c" /* yacc.c:1646 */
3031 break;
3032
3033 case 79:
3034 #line 534 "conf_parser.y" /* yacc.c:1646 */
3035 {
3036 /* This isn't rehashable */
3037 if (conf_parser_ctx.pass == 2 && !ConfigServerInfo.name)
3038 {
3039 if (valid_servname(yylval.string))
3040 ConfigServerInfo.name = xstrdup(yylval.string);
3041 else
3042 {
3043 conf_error_report("Ignoring serverinfo::name -- invalid name. Aborting.");
3044 exit(EXIT_FAILURE);
3045 }
3046 }
3047 }
3048 #line 3049 "conf_parser.c" /* yacc.c:1646 */
3049 break;
3050
3051 case 80:
3052 #line 549 "conf_parser.y" /* yacc.c:1646 */
3053 {
3054 /* This isn't rehashable */
3055 if (conf_parser_ctx.pass == 2 && !ConfigServerInfo.sid)
3056 {
3057 if (valid_sid(yylval.string))
3058 ConfigServerInfo.sid = xstrdup(yylval.string);
3059 else
3060 {
3061 conf_error_report("Ignoring serverinfo::sid -- invalid SID. Aborting.");
3062 exit(EXIT_FAILURE);
3063 }
3064 }
3065 }
3066 #line 3067 "conf_parser.c" /* yacc.c:1646 */
3067 break;
3068
3069 case 81:
3070 #line 564 "conf_parser.y" /* yacc.c:1646 */
3071 {
3072 if (conf_parser_ctx.pass == 2)
3073 {
3074 xfree(ConfigServerInfo.description);
3075 ConfigServerInfo.description = xstrdup(yylval.string);
3076 strlcpy(me.info, ConfigServerInfo.description, sizeof(me.info));
3077 }
3078 }
3079 #line 3080 "conf_parser.c" /* yacc.c:1646 */
3080 break;
3081
3082 case 82:
3083 #line 574 "conf_parser.y" /* yacc.c:1646 */
3084 {
3085 if (conf_parser_ctx.pass == 2)
3086 {
3087 char *p;
3088
3089 if ((p = strchr(yylval.string, ' ')))
3090 *p = '\0';
3091
3092 xfree(ConfigServerInfo.network_name);
3093 ConfigServerInfo.network_name = xstrdup(yylval.string);
3094 }
3095 }
3096 #line 3097 "conf_parser.c" /* yacc.c:1646 */
3097 break;
3098
3099 case 83:
3100 #line 588 "conf_parser.y" /* yacc.c:1646 */
3101 {
3102 if (conf_parser_ctx.pass != 2)
3103 break;
3104
3105 xfree(ConfigServerInfo.network_desc);
3106 ConfigServerInfo.network_desc = xstrdup(yylval.string);
3107 }
3108 #line 3109 "conf_parser.c" /* yacc.c:1646 */
3109 break;
3110
3111 case 84:
3112 #line 597 "conf_parser.y" /* yacc.c:1646 */
3113 {
3114 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3115 {
3116 struct addrinfo hints, *res;
3117
3118 memset(&hints, 0, sizeof(hints));
3119
3120 hints.ai_family = AF_UNSPEC;
3121 hints.ai_socktype = SOCK_STREAM;
3122 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3123
3124 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3125 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
3126 else
3127 {
3128 assert(res);
3129
3130 memcpy(&ConfigServerInfo.ip, res->ai_addr, res->ai_addrlen);
3131 ConfigServerInfo.ip.ss.ss_family = res->ai_family;
3132 ConfigServerInfo.ip.ss_len = res->ai_addrlen;
3133 freeaddrinfo(res);
3134
3135 ConfigServerInfo.specific_ipv4_vhost = 1;
3136 }
3137 }
3138 }
3139 #line 3140 "conf_parser.c" /* yacc.c:1646 */
3140 break;
3141
3142 case 85:
3143 #line 625 "conf_parser.y" /* yacc.c:1646 */
3144 {
3145 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3146 {
3147 struct addrinfo hints, *res;
3148
3149 memset(&hints, 0, sizeof(hints));
3150
3151 hints.ai_family = AF_UNSPEC;
3152 hints.ai_socktype = SOCK_STREAM;
3153 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3154
3155 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3156 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
3157 else
3158 {
3159 assert(res);
3160
3161 memcpy(&ConfigServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3162 ConfigServerInfo.ip6.ss.ss_family = res->ai_family;
3163 ConfigServerInfo.ip6.ss_len = res->ai_addrlen;
3164 freeaddrinfo(res);
3165
3166 ConfigServerInfo.specific_ipv6_vhost = 1;
3167 }
3168 }
3169 }
3170 #line 3171 "conf_parser.c" /* yacc.c:1646 */
3171 break;
3172
3173 case 86:
3174 #line 653 "conf_parser.y" /* yacc.c:1646 */
3175 {
3176 if (conf_parser_ctx.pass != 2)
3177 break;
3178
3179 if ((yyvsp[-1].number) < MAXCLIENTS_MIN)
3180 {
3181 char buf[IRCD_BUFSIZE] = "";
3182
3183 snprintf(buf, sizeof(buf), "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3184 conf_error_report(buf);
3185 ConfigServerInfo.default_max_clients = MAXCLIENTS_MIN;
3186 }
3187 else if ((yyvsp[-1].number) > MAXCLIENTS_MAX)
3188 {
3189 char buf[IRCD_BUFSIZE] = "";
3190
3191 snprintf(buf, sizeof(buf), "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3192 conf_error_report(buf);
3193 ConfigServerInfo.default_max_clients = MAXCLIENTS_MAX;
3194 }
3195 else
3196 ConfigServerInfo.default_max_clients = (yyvsp[-1].number);
3197 }
3198 #line 3199 "conf_parser.c" /* yacc.c:1646 */
3199 break;
3200
3201 case 87:
3202 #line 678 "conf_parser.y" /* yacc.c:1646 */
3203 {
3204 if (conf_parser_ctx.pass != 2)
3205 break;
3206
3207 if ((yyvsp[-1].number) < 9)
3208 {
3209 conf_error_report("max_nick_length too low, setting to 9");
3210 ConfigServerInfo.max_nick_length = 9;
3211 }
3212 else if ((yyvsp[-1].number) > NICKLEN)
3213 {
3214 char buf[IRCD_BUFSIZE] = "";
3215
3216 snprintf(buf, sizeof(buf), "max_nick_length too high, setting to %d", NICKLEN);
3217 conf_error_report(buf);
3218 ConfigServerInfo.max_nick_length = NICKLEN;
3219 }
3220 else
3221 ConfigServerInfo.max_nick_length = (yyvsp[-1].number);
3222 }
3223 #line 3224 "conf_parser.c" /* yacc.c:1646 */
3224 break;
3225
3226 case 88:
3227 #line 700 "conf_parser.y" /* yacc.c:1646 */
3228 {
3229 if (conf_parser_ctx.pass != 2)
3230 break;
3231
3232 if ((yyvsp[-1].number) < 80)
3233 {
3234 conf_error_report("max_topic_length too low, setting to 80");
3235 ConfigServerInfo.max_topic_length = 80;
3236 }
3237 else if ((yyvsp[-1].number) > TOPICLEN)
3238 {
3239 char buf[IRCD_BUFSIZE] = "";
3240
3241 snprintf(buf, sizeof(buf), "max_topic_length too high, setting to %d", TOPICLEN);
3242 conf_error_report(buf);
3243 ConfigServerInfo.max_topic_length = TOPICLEN;
3244 }
3245 else
3246 ConfigServerInfo.max_topic_length = (yyvsp[-1].number);
3247 }
3248 #line 3249 "conf_parser.c" /* yacc.c:1646 */
3249 break;
3250
3251 case 89:
3252 #line 722 "conf_parser.y" /* yacc.c:1646 */
3253 {
3254 if (conf_parser_ctx.pass == 2)
3255 ConfigServerInfo.hub = yylval.number;
3256 }
3257 #line 3258 "conf_parser.c" /* yacc.c:1646 */
3258 break;
3259
3260 case 97:
3261 #line 740 "conf_parser.y" /* yacc.c:1646 */
3262 {
3263 if (conf_parser_ctx.pass != 2)
3264 break;
3265
3266 xfree(ConfigAdminInfo.name);
3267 ConfigAdminInfo.name = xstrdup(yylval.string);
3268 }
3269 #line 3270 "conf_parser.c" /* yacc.c:1646 */
3270 break;
3271
3272 case 98:
3273 #line 749 "conf_parser.y" /* yacc.c:1646 */
3274 {
3275 if (conf_parser_ctx.pass != 2)
3276 break;
3277
3278 xfree(ConfigAdminInfo.email);
3279 ConfigAdminInfo.email = xstrdup(yylval.string);
3280 }
3281 #line 3282 "conf_parser.c" /* yacc.c:1646 */
3282 break;
3283
3284 case 99:
3285 #line 758 "conf_parser.y" /* yacc.c:1646 */
3286 {
3287 if (conf_parser_ctx.pass != 2)
3288 break;
3289
3290 xfree(ConfigAdminInfo.description);
3291 ConfigAdminInfo.description = xstrdup(yylval.string);
3292 }
3293 #line 3294 "conf_parser.c" /* yacc.c:1646 */
3294 break;
3295
3296 case 100:
3297 #line 771 "conf_parser.y" /* yacc.c:1646 */
3298 {
3299 if (conf_parser_ctx.pass == 2)
3300 reset_block_state();
3301 }
3302 #line 3303 "conf_parser.c" /* yacc.c:1646 */
3303 break;
3304
3305 case 101:
3306 #line 775 "conf_parser.y" /* yacc.c:1646 */
3307 {
3308 dlink_node *node = NULL;
3309
3310 if (conf_parser_ctx.pass != 2)
3311 break;
3312
3313 if (!block_state.file.buf[0])
3314 break;
3315
3316 DLINK_FOREACH(node, block_state.mask.list.head)
3317 motd_add(node->data, block_state.file.buf);
3318 }
3319 #line 3320 "conf_parser.c" /* yacc.c:1646 */
3320 break;
3321
3322 case 107:
3323 #line 792 "conf_parser.y" /* yacc.c:1646 */
3324 {
3325 if (conf_parser_ctx.pass == 2)
3326 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3327 }
3328 #line 3329 "conf_parser.c" /* yacc.c:1646 */
3329 break;
3330
3331 case 108:
3332 #line 798 "conf_parser.y" /* yacc.c:1646 */
3333 {
3334 if (conf_parser_ctx.pass == 2)
3335 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3336 }
3337 #line 3338 "conf_parser.c" /* yacc.c:1646 */
3338 break;
3339
3340 case 109:
3341 #line 808 "conf_parser.y" /* yacc.c:1646 */
3342 {
3343 if (conf_parser_ctx.pass == 2)
3344 reset_block_state();
3345 }
3346 #line 3347 "conf_parser.c" /* yacc.c:1646 */
3347 break;
3348
3349 case 110:
3350 #line 812 "conf_parser.y" /* yacc.c:1646 */
3351 {
3352 if (conf_parser_ctx.pass != 2)
3353 break;
3354
3355 if (!block_state.command.buf[0] ||
3356 !block_state.name.buf[0] ||
3357 !block_state.nick.buf[0] ||
3358 !block_state.host.buf[0])
3359 break;
3360
3361 pseudo_register(block_state.name.buf, block_state.nick.buf, block_state.host.buf,
3362 block_state.prepend.buf, block_state.command.buf);
3363 }
3364 #line 3365 "conf_parser.c" /* yacc.c:1646 */
3365 break;
3366
3367 case 118:
3368 #line 830 "conf_parser.y" /* yacc.c:1646 */
3369 {
3370 if (conf_parser_ctx.pass == 2)
3371 strlcpy(block_state.command.buf, yylval.string, sizeof(block_state.command.buf));
3372 }
3373 #line 3374 "conf_parser.c" /* yacc.c:1646 */
3374 break;
3375
3376 case 119:
3377 #line 836 "conf_parser.y" /* yacc.c:1646 */
3378 {
3379 if (conf_parser_ctx.pass == 2)
3380 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3381 }
3382 #line 3383 "conf_parser.c" /* yacc.c:1646 */
3383 break;
3384
3385 case 120:
3386 #line 842 "conf_parser.y" /* yacc.c:1646 */
3387 {
3388 if (conf_parser_ctx.pass == 2)
3389 strlcpy(block_state.prepend.buf, yylval.string, sizeof(block_state.prepend.buf));
3390 }
3391 #line 3392 "conf_parser.c" /* yacc.c:1646 */
3392 break;
3393
3394 case 121:
3395 #line 848 "conf_parser.y" /* yacc.c:1646 */
3396 {
3397 if (conf_parser_ctx.pass == 2)
3398 {
3399 struct split_nuh_item nuh;
3400
3401 nuh.nuhmask = yylval.string;
3402 nuh.nickptr = NULL;
3403 nuh.userptr = block_state.nick.buf;
3404 nuh.hostptr = block_state.host.buf;
3405 nuh.nicksize = 0;
3406 nuh.usersize = sizeof(block_state.nick.buf);
3407 nuh.hostsize = sizeof(block_state.host.buf);
3408
3409 split_nuh(&nuh);
3410 }
3411 }
3412 #line 3413 "conf_parser.c" /* yacc.c:1646 */
3413 break;
3414
3415 case 128:
3416 #line 876 "conf_parser.y" /* yacc.c:1646 */
3417 {
3418 if (conf_parser_ctx.pass == 2)
3419 ConfigLog.use_logging = yylval.number;
3420 }
3421 #line 3422 "conf_parser.c" /* yacc.c:1646 */
3422 break;
3423
3424 case 129:
3425 #line 882 "conf_parser.y" /* yacc.c:1646 */
3426 {
3427 if (conf_parser_ctx.pass == 2)
3428 reset_block_state();
3429 }
3430 #line 3431 "conf_parser.c" /* yacc.c:1646 */
3431 break;
3432
3433 case 130:
3434 #line 886 "conf_parser.y" /* yacc.c:1646 */
3435 {
3436 if (conf_parser_ctx.pass != 2)
3437 break;
3438
3439 if (block_state.type.value && block_state.file.buf[0])
3440 log_set_file(block_state.type.value, block_state.size.value,
3441 block_state.file.buf);
3442 }
3443 #line 3444 "conf_parser.c" /* yacc.c:1646 */
3444 break;
3445
3446 case 137:
3447 #line 902 "conf_parser.y" /* yacc.c:1646 */
3448 {
3449 if (conf_parser_ctx.pass != 2)
3450 break;
3451
3452 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3453 }
3454 #line 3455 "conf_parser.c" /* yacc.c:1646 */
3455 break;
3456
3457 case 138:
3458 #line 910 "conf_parser.y" /* yacc.c:1646 */
3459 {
3460 block_state.size.value = (yyvsp[-1].number);
3461 }
3462 #line 3463 "conf_parser.c" /* yacc.c:1646 */
3463 break;
3464
3465 case 139:
3466 #line 913 "conf_parser.y" /* yacc.c:1646 */
3467 {
3468 block_state.size.value = 0;
3469 }
3470 #line 3471 "conf_parser.c" /* yacc.c:1646 */
3471 break;
3472
3473 case 140:
3474 #line 918 "conf_parser.y" /* yacc.c:1646 */
3475 {
3476 if (conf_parser_ctx.pass == 2)
3477 block_state.type.value = 0;
3478 }
3479 #line 3480 "conf_parser.c" /* yacc.c:1646 */
3480 break;
3481
3482 case 144:
3483 #line 925 "conf_parser.y" /* yacc.c:1646 */
3484 {
3485 if (conf_parser_ctx.pass == 2)
3486 block_state.type.value = LOG_TYPE_USER;
3487 }
3488 #line 3489 "conf_parser.c" /* yacc.c:1646 */
3489 break;
3490
3491 case 145:
3492 #line 929 "conf_parser.y" /* yacc.c:1646 */
3493 {
3494 if (conf_parser_ctx.pass == 2)
3495 block_state.type.value = LOG_TYPE_OPER;
3496 }
3497 #line 3498 "conf_parser.c" /* yacc.c:1646 */
3498 break;
3499
3500 case 146:
3501 #line 933 "conf_parser.y" /* yacc.c:1646 */
3502 {
3503 if (conf_parser_ctx.pass == 2)
3504 block_state.type.value = LOG_TYPE_XLINE;
3505 }
3506 #line 3507 "conf_parser.c" /* yacc.c:1646 */
3507 break;
3508
3509 case 147:
3510 #line 937 "conf_parser.y" /* yacc.c:1646 */
3511 {
3512 if (conf_parser_ctx.pass == 2)
3513 block_state.type.value = LOG_TYPE_RESV;
3514 }
3515 #line 3516 "conf_parser.c" /* yacc.c:1646 */
3516 break;
3517
3518 case 148:
3519 #line 941 "conf_parser.y" /* yacc.c:1646 */
3520 {
3521 if (conf_parser_ctx.pass == 2)
3522 block_state.type.value = LOG_TYPE_DLINE;
3523 }
3524 #line 3525 "conf_parser.c" /* yacc.c:1646 */
3525 break;
3526
3527 case 149:
3528 #line 945 "conf_parser.y" /* yacc.c:1646 */
3529 {
3530 if (conf_parser_ctx.pass == 2)
3531 block_state.type.value = LOG_TYPE_KLINE;
3532 }
3533 #line 3534 "conf_parser.c" /* yacc.c:1646 */
3534 break;
3535
3536 case 150:
3537 #line 949 "conf_parser.y" /* yacc.c:1646 */
3538 {
3539 if (conf_parser_ctx.pass == 2)
3540 block_state.type.value = LOG_TYPE_KILL;
3541 }
3542 #line 3543 "conf_parser.c" /* yacc.c:1646 */
3543 break;
3544
3545 case 151:
3546 #line 953 "conf_parser.y" /* yacc.c:1646 */
3547 {
3548 if (conf_parser_ctx.pass == 2)
3549 block_state.type.value = LOG_TYPE_DEBUG;
3550 }
3551 #line 3552 "conf_parser.c" /* yacc.c:1646 */
3552 break;
3553
3554 case 152:
3555 #line 963 "conf_parser.y" /* yacc.c:1646 */
3556 {
3557 if (conf_parser_ctx.pass != 2)
3558 break;
3559
3560 reset_block_state();
3561 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3562 }
3563 #line 3564 "conf_parser.c" /* yacc.c:1646 */
3564 break;
3565
3566 case 153:
3567 #line 970 "conf_parser.y" /* yacc.c:1646 */
3568 {
3569 dlink_node *node = NULL;
3570
3571 if (conf_parser_ctx.pass != 2)
3572 break;
3573
3574 if (!block_state.name.buf[0])
3575 break;
3576
3577 if (!block_state.rpass.buf[0])
3578 break;
3579
3580 DLINK_FOREACH(node, block_state.mask.list.head)
3581 {
3582 struct MaskItem *conf = NULL;
3583 struct split_nuh_item nuh;
3584
3585 nuh.nuhmask = node->data;
3586 nuh.nickptr = NULL;
3587 nuh.userptr = block_state.user.buf;
3588 nuh.hostptr = block_state.host.buf;
3589 nuh.nicksize = 0;
3590 nuh.usersize = sizeof(block_state.user.buf);
3591 nuh.hostsize = sizeof(block_state.host.buf);
3592 split_nuh(&nuh);
3593
3594 conf = conf_make(CONF_OPER);
3595 conf->name = xstrdup(block_state.name.buf);
3596 conf->user = xstrdup(block_state.user.buf);
3597 conf->host = xstrdup(block_state.host.buf);
3598
3599 if (block_state.cert.buf[0])
3600 conf->certfp = xstrdup(block_state.cert.buf);
3601
3602 if (block_state.rpass.buf[0])
3603 conf->passwd = xstrdup(block_state.rpass.buf);
3604
3605 if (block_state.whois.buf[0])
3606 conf->whois = xstrdup(block_state.whois.buf);
3607
3608 conf->flags = block_state.flags.value;
3609 conf->modes = block_state.modes.value;
3610 conf->port = block_state.port.value;
3611 conf->htype = parse_netmask(conf->host, &conf->addr, &conf->bits);
3612
3613 conf_add_class_to_conf(conf, block_state.class.buf);
3614 }
3615 }
3616 #line 3617 "conf_parser.c" /* yacc.c:1646 */
3617 break;
3618
3619 case 167:
3620 #line 1033 "conf_parser.y" /* yacc.c:1646 */
3621 {
3622 if (conf_parser_ctx.pass == 2)
3623 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3624 }
3625 #line 3626 "conf_parser.c" /* yacc.c:1646 */
3626 break;
3627
3628 case 168:
3629 #line 1039 "conf_parser.y" /* yacc.c:1646 */
3630 {
3631 if (conf_parser_ctx.pass == 2)
3632 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3633 }
3634 #line 3635 "conf_parser.c" /* yacc.c:1646 */
3635 break;
3636
3637 case 169:
3638 #line 1045 "conf_parser.y" /* yacc.c:1646 */
3639 {
3640 if (conf_parser_ctx.pass == 2)
3641 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
3642 }
3643 #line 3644 "conf_parser.c" /* yacc.c:1646 */
3644 break;
3645
3646 case 170:
3647 #line 1051 "conf_parser.y" /* yacc.c:1646 */
3648 {
3649 if (conf_parser_ctx.pass == 2)
3650 strlcpy(block_state.whois.buf, yylval.string, sizeof(block_state.whois.buf));
3651 }
3652 #line 3653 "conf_parser.c" /* yacc.c:1646 */
3653 break;
3654
3655 case 171:
3656 #line 1057 "conf_parser.y" /* yacc.c:1646 */
3657 {
3658 if (conf_parser_ctx.pass != 2)
3659 break;
3660
3661 if (yylval.number)
3662 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3663 else
3664 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
3665 }
3666 #line 3667 "conf_parser.c" /* yacc.c:1646 */
3667 break;
3668
3669 case 172:
3670 #line 1068 "conf_parser.y" /* yacc.c:1646 */
3671 {
3672 if (conf_parser_ctx.pass == 2)
3673 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
3674 }
3675 #line 3676 "conf_parser.c" /* yacc.c:1646 */
3676 break;
3677
3678 case 173:
3679 #line 1074 "conf_parser.y" /* yacc.c:1646 */
3680 {
3681 if (conf_parser_ctx.pass != 2)
3682 break;
3683
3684 if (yylval.number)
3685 block_state.flags.value |= CONF_FLAGS_SSL;
3686 else
3687 block_state.flags.value &= ~CONF_FLAGS_SSL;
3688 }
3689 #line 3690 "conf_parser.c" /* yacc.c:1646 */
3690 break;
3691
3692 case 174:
3693 #line 1085 "conf_parser.y" /* yacc.c:1646 */
3694 {
3695 if (conf_parser_ctx.pass == 2)
3696 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
3697 }
3698 #line 3699 "conf_parser.c" /* yacc.c:1646 */
3699 break;
3700
3701 case 175:
3702 #line 1091 "conf_parser.y" /* yacc.c:1646 */
3703 {
3704 if (conf_parser_ctx.pass == 2)
3705 block_state.modes.value = 0;
3706 }
3707 #line 3708 "conf_parser.c" /* yacc.c:1646 */
3708 break;
3709
3710 case 179:
3711 #line 1098 "conf_parser.y" /* yacc.c:1646 */
3712 {
3713 if (conf_parser_ctx.pass == 2)
3714 block_state.modes.value |= UMODE_BOTS;
3715 }
3716 #line 3717 "conf_parser.c" /* yacc.c:1646 */
3717 break;
3718
3719 case 180:
3720 #line 1102 "conf_parser.y" /* yacc.c:1646 */
3721 {
3722 if (conf_parser_ctx.pass == 2)
3723 block_state.modes.value |= UMODE_CCONN;
3724 }
3725 #line 3726 "conf_parser.c" /* yacc.c:1646 */
3726 break;
3727
3728 case 181:
3729 #line 1106 "conf_parser.y" /* yacc.c:1646 */
3730 {
3731 if (conf_parser_ctx.pass == 2)
3732 block_state.modes.value |= UMODE_DEAF;
3733 }
3734 #line 3735 "conf_parser.c" /* yacc.c:1646 */
3735 break;
3736
3737 case 182:
3738 #line 1110 "conf_parser.y" /* yacc.c:1646 */
3739 {
3740 if (conf_parser_ctx.pass == 2)
3741 block_state.modes.value |= UMODE_DEBUG;
3742 }
3743 #line 3744 "conf_parser.c" /* yacc.c:1646 */
3744 break;
3745
3746 case 183:
3747 #line 1114 "conf_parser.y" /* yacc.c:1646 */
3748 {
3749 if (conf_parser_ctx.pass == 2)
3750 block_state.modes.value |= UMODE_FULL;
3751 }
3752 #line 3753 "conf_parser.c" /* yacc.c:1646 */
3753 break;
3754
3755 case 184:
3756 #line 1118 "conf_parser.y" /* yacc.c:1646 */
3757 {
3758 if (conf_parser_ctx.pass == 2)
3759 block_state.modes.value |= UMODE_HIDDEN;
3760 }
3761 #line 3762 "conf_parser.c" /* yacc.c:1646 */
3762 break;
3763
3764 case 185:
3765 #line 1122 "conf_parser.y" /* yacc.c:1646 */
3766 {
3767 if (conf_parser_ctx.pass == 2)
3768 block_state.modes.value |= UMODE_HIDECHANS;
3769 }
3770 #line 3771 "conf_parser.c" /* yacc.c:1646 */
3771 break;
3772
3773 case 186:
3774 #line 1126 "conf_parser.y" /* yacc.c:1646 */
3775 {
3776 if (conf_parser_ctx.pass == 2)
3777 block_state.modes.value |= UMODE_HIDEIDLE;
3778 }
3779 #line 3780 "conf_parser.c" /* yacc.c:1646 */
3780 break;
3781
3782 case 187:
3783 #line 1130 "conf_parser.y" /* yacc.c:1646 */
3784 {
3785 if (conf_parser_ctx.pass == 2)
3786 block_state.modes.value |= UMODE_SKILL;
3787 }
3788 #line 3789 "conf_parser.c" /* yacc.c:1646 */
3789 break;
3790
3791 case 188:
3792 #line 1134 "conf_parser.y" /* yacc.c:1646 */
3793 {
3794 if (conf_parser_ctx.pass == 2)
3795 block_state.modes.value |= UMODE_NCHANGE;
3796 }
3797 #line 3798 "conf_parser.c" /* yacc.c:1646 */
3798 break;
3799
3800 case 189:
3801 #line 1138 "conf_parser.y" /* yacc.c:1646 */
3802 {
3803 if (conf_parser_ctx.pass == 2)
3804 block_state.modes.value |= UMODE_REJ;
3805 }
3806 #line 3807 "conf_parser.c" /* yacc.c:1646 */
3807 break;
3808
3809 case 190:
3810 #line 1142 "conf_parser.y" /* yacc.c:1646 */
3811 {
3812 if (conf_parser_ctx.pass == 2)
3813 block_state.modes.value |= UMODE_UNAUTH;
3814 }
3815 #line 3816 "conf_parser.c" /* yacc.c:1646 */
3816 break;
3817
3818 case 191:
3819 #line 1146 "conf_parser.y" /* yacc.c:1646 */
3820 {
3821 if (conf_parser_ctx.pass == 2)
3822 block_state.modes.value |= UMODE_SPY;
3823 }
3824 #line 3825 "conf_parser.c" /* yacc.c:1646 */
3825 break;
3826
3827 case 192:
3828 #line 1150 "conf_parser.y" /* yacc.c:1646 */
3829 {
3830 if (conf_parser_ctx.pass == 2)
3831 block_state.modes.value |= UMODE_EXTERNAL;
3832 }
3833 #line 3834 "conf_parser.c" /* yacc.c:1646 */
3834 break;
3835
3836 case 193:
3837 #line 1154 "conf_parser.y" /* yacc.c:1646 */
3838 {
3839 if (conf_parser_ctx.pass == 2)
3840 block_state.modes.value |= UMODE_SERVNOTICE;
3841 }
3842 #line 3843 "conf_parser.c" /* yacc.c:1646 */
3843 break;
3844
3845 case 194:
3846 #line 1158 "conf_parser.y" /* yacc.c:1646 */
3847 {
3848 if (conf_parser_ctx.pass == 2)
3849 block_state.modes.value |= UMODE_INVISIBLE;
3850 }
3851 #line 3852 "conf_parser.c" /* yacc.c:1646 */
3852 break;
3853
3854 case 195:
3855 #line 1162 "conf_parser.y" /* yacc.c:1646 */
3856 {
3857 if (conf_parser_ctx.pass == 2)
3858 block_state.modes.value |= UMODE_WALLOP;
3859 }
3860 #line 3861 "conf_parser.c" /* yacc.c:1646 */
3861 break;
3862
3863 case 196:
3864 #line 1166 "conf_parser.y" /* yacc.c:1646 */
3865 {
3866 if (conf_parser_ctx.pass == 2)
3867 block_state.modes.value |= UMODE_SOFTCALLERID;
3868 }
3869 #line 3870 "conf_parser.c" /* yacc.c:1646 */
3870 break;
3871
3872 case 197:
3873 #line 1170 "conf_parser.y" /* yacc.c:1646 */
3874 {
3875 if (conf_parser_ctx.pass == 2)
3876 block_state.modes.value |= UMODE_CALLERID;
3877 }
3878 #line 3879 "conf_parser.c" /* yacc.c:1646 */
3879 break;
3880
3881 case 198:
3882 #line 1174 "conf_parser.y" /* yacc.c:1646 */
3883 {
3884 if (conf_parser_ctx.pass == 2)
3885 block_state.modes.value |= UMODE_LOCOPS;
3886 }
3887 #line 3888 "conf_parser.c" /* yacc.c:1646 */
3888 break;
3889
3890 case 199:
3891 #line 1178 "conf_parser.y" /* yacc.c:1646 */
3892 {
3893 if (conf_parser_ctx.pass == 2)
3894 block_state.modes.value |= UMODE_REGONLY;
3895 }
3896 #line 3897 "conf_parser.c" /* yacc.c:1646 */
3897 break;
3898
3899 case 200:
3900 #line 1182 "conf_parser.y" /* yacc.c:1646 */
3901 {
3902 if (conf_parser_ctx.pass == 2)
3903 block_state.modes.value |= UMODE_FARCONNECT;
3904 }
3905 #line 3906 "conf_parser.c" /* yacc.c:1646 */
3906 break;
3907
3908 case 201:
3909 #line 1188 "conf_parser.y" /* yacc.c:1646 */
3910 {
3911 if (conf_parser_ctx.pass == 2)
3912 block_state.port.value = 0;
3913 }
3914 #line 3915 "conf_parser.c" /* yacc.c:1646 */
3915 break;
3916
3917 case 205:
3918 #line 1195 "conf_parser.y" /* yacc.c:1646 */
3919 {
3920 if (conf_parser_ctx.pass == 2)
3921 block_state.port.value |= OPER_FLAG_KILL_REMOTE;
3922 }
3923 #line 3924 "conf_parser.c" /* yacc.c:1646 */
3924 break;
3925
3926 case 206:
3927 #line 1199 "conf_parser.y" /* yacc.c:1646 */
3928 {
3929 if (conf_parser_ctx.pass == 2)
3930 block_state.port.value |= OPER_FLAG_KILL;
3931 }
3932 #line 3933 "conf_parser.c" /* yacc.c:1646 */
3933 break;
3934
3935 case 207:
3936 #line 1203 "conf_parser.y" /* yacc.c:1646 */
3937 {
3938 if (conf_parser_ctx.pass == 2)
3939 block_state.port.value |= OPER_FLAG_CONNECT_REMOTE;
3940 }
3941 #line 3942 "conf_parser.c" /* yacc.c:1646 */
3942 break;
3943
3944 case 208:
3945 #line 1207 "conf_parser.y" /* yacc.c:1646 */
3946 {
3947 if (conf_parser_ctx.pass == 2)
3948 block_state.port.value |= OPER_FLAG_CONNECT;
3949 }
3950 #line 3951 "conf_parser.c" /* yacc.c:1646 */
3951 break;
3952
3953 case 209:
3954 #line 1211 "conf_parser.y" /* yacc.c:1646 */
3955 {
3956 if (conf_parser_ctx.pass == 2)
3957 block_state.port.value |= OPER_FLAG_SQUIT_REMOTE;
3958 }
3959 #line 3960 "conf_parser.c" /* yacc.c:1646 */
3960 break;
3961
3962 case 210:
3963 #line 1215 "conf_parser.y" /* yacc.c:1646 */
3964 {
3965 if (conf_parser_ctx.pass == 2)
3966 block_state.port.value |= OPER_FLAG_SQUIT;
3967 }
3968 #line 3969 "conf_parser.c" /* yacc.c:1646 */
3969 break;
3970
3971 case 211:
3972 #line 1219 "conf_parser.y" /* yacc.c:1646 */
3973 {
3974 if (conf_parser_ctx.pass == 2)
3975 block_state.port.value |= OPER_FLAG_KLINE;
3976 }
3977 #line 3978 "conf_parser.c" /* yacc.c:1646 */
3978 break;
3979
3980 case 212:
3981 #line 1223 "conf_parser.y" /* yacc.c:1646 */
3982 {
3983 if (conf_parser_ctx.pass == 2)
3984 block_state.port.value |= OPER_FLAG_UNKLINE;
3985 }
3986 #line 3987 "conf_parser.c" /* yacc.c:1646 */
3987 break;
3988
3989 case 213:
3990 #line 1227 "conf_parser.y" /* yacc.c:1646 */
3991 {
3992 if (conf_parser_ctx.pass == 2)
3993 block_state.port.value |= OPER_FLAG_DLINE;
3994 }
3995 #line 3996 "conf_parser.c" /* yacc.c:1646 */
3996 break;
3997
3998 case 214:
3999 #line 1231 "conf_parser.y" /* yacc.c:1646 */
4000 {
4001 if (conf_parser_ctx.pass == 2)
4002 block_state.port.value |= OPER_FLAG_UNDLINE;
4003 }
4004 #line 4005 "conf_parser.c" /* yacc.c:1646 */
4005 break;
4006
4007 case 215:
4008 #line 1235 "conf_parser.y" /* yacc.c:1646 */
4009 {
4010 if (conf_parser_ctx.pass == 2)
4011 block_state.port.value |= OPER_FLAG_XLINE;
4012 }
4013 #line 4014 "conf_parser.c" /* yacc.c:1646 */
4014 break;
4015
4016 case 216:
4017 #line 1239 "conf_parser.y" /* yacc.c:1646 */
4018 {
4019 if (conf_parser_ctx.pass == 2)
4020 block_state.port.value |= OPER_FLAG_UNXLINE;
4021 }
4022 #line 4023 "conf_parser.c" /* yacc.c:1646 */
4023 break;
4024
4025 case 217:
4026 #line 1243 "conf_parser.y" /* yacc.c:1646 */
4027 {
4028 if (conf_parser_ctx.pass == 2)
4029 block_state.port.value |= OPER_FLAG_DIE;
4030 }
4031 #line 4032 "conf_parser.c" /* yacc.c:1646 */
4032 break;
4033
4034 case 218:
4035 #line 1247 "conf_parser.y" /* yacc.c:1646 */
4036 {
4037 if (conf_parser_ctx.pass == 2)
4038 block_state.port.value |= OPER_FLAG_RESTART;
4039 }
4040 #line 4041 "conf_parser.c" /* yacc.c:1646 */
4041 break;
4042
4043 case 219:
4044 #line 1251 "conf_parser.y" /* yacc.c:1646 */
4045 {
4046 if (conf_parser_ctx.pass == 2)
4047 block_state.port.value |= OPER_FLAG_REHASH_REMOTE;
4048 }
4049 #line 4050 "conf_parser.c" /* yacc.c:1646 */
4050 break;
4051
4052 case 220:
4053 #line 1255 "conf_parser.y" /* yacc.c:1646 */
4054 {
4055 if (conf_parser_ctx.pass == 2)
4056 block_state.port.value |= OPER_FLAG_REHASH;
4057 }
4058 #line 4059 "conf_parser.c" /* yacc.c:1646 */
4059 break;
4060
4061 case 221:
4062 #line 1259 "conf_parser.y" /* yacc.c:1646 */
4063 {
4064 if (conf_parser_ctx.pass == 2)
4065 block_state.port.value |= OPER_FLAG_ADMIN;
4066 }
4067 #line 4068 "conf_parser.c" /* yacc.c:1646 */
4068 break;
4069
4070 case 222:
4071 #line 1263 "conf_parser.y" /* yacc.c:1646 */
4072 {
4073 if (conf_parser_ctx.pass == 2)
4074 block_state.port.value |= OPER_FLAG_GLOBOPS;
4075 }
4076 #line 4077 "conf_parser.c" /* yacc.c:1646 */
4077 break;
4078
4079 case 223:
4080 #line 1267 "conf_parser.y" /* yacc.c:1646 */
4081 {
4082 if (conf_parser_ctx.pass == 2)
4083 block_state.port.value |= OPER_FLAG_WALLOPS;
4084 }
4085 #line 4086 "conf_parser.c" /* yacc.c:1646 */
4086 break;
4087
4088 case 224:
4089 #line 1271 "conf_parser.y" /* yacc.c:1646 */
4090 {
4091 if (conf_parser_ctx.pass == 2)
4092 block_state.port.value |= OPER_FLAG_LOCOPS;
4093 }
4094 #line 4095 "conf_parser.c" /* yacc.c:1646 */
4095 break;
4096
4097 case 225:
4098 #line 1275 "conf_parser.y" /* yacc.c:1646 */
4099 {
4100 if (conf_parser_ctx.pass == 2)
4101 block_state.port.value |= OPER_FLAG_REMOTEBAN;
4102 }
4103 #line 4104 "conf_parser.c" /* yacc.c:1646 */
4104 break;
4105
4106 case 226:
4107 #line 1279 "conf_parser.y" /* yacc.c:1646 */
4108 {
4109 if (conf_parser_ctx.pass == 2)
4110 block_state.port.value |= OPER_FLAG_SET;
4111 }
4112 #line 4113 "conf_parser.c" /* yacc.c:1646 */
4113 break;
4114
4115 case 227:
4116 #line 1283 "conf_parser.y" /* yacc.c:1646 */
4117 {
4118 if (conf_parser_ctx.pass == 2)
4119 block_state.port.value |= OPER_FLAG_MODULE;
4120 }
4121 #line 4122 "conf_parser.c" /* yacc.c:1646 */
4122 break;
4123
4124 case 228:
4125 #line 1287 "conf_parser.y" /* yacc.c:1646 */
4126 {
4127 if (conf_parser_ctx.pass == 2)
4128 block_state.port.value |= OPER_FLAG_OPME;
4129 }
4130 #line 4131 "conf_parser.c" /* yacc.c:1646 */
4131 break;
4132
4133 case 229:
4134 #line 1291 "conf_parser.y" /* yacc.c:1646 */
4135 {
4136 if (conf_parser_ctx.pass == 2)
4137 block_state.port.value |= OPER_FLAG_NICK_RESV;
4138 }
4139 #line 4140 "conf_parser.c" /* yacc.c:1646 */
4140 break;
4141
4142 case 230:
4143 #line 1295 "conf_parser.y" /* yacc.c:1646 */
4144 {
4145 if (conf_parser_ctx.pass == 2)
4146 block_state.port.value |= OPER_FLAG_JOIN_RESV;
4147 }
4148 #line 4149 "conf_parser.c" /* yacc.c:1646 */
4149 break;
4150
4151 case 231:
4152 #line 1299 "conf_parser.y" /* yacc.c:1646 */
4153 {
4154 if (conf_parser_ctx.pass == 2)
4155 block_state.port.value |= OPER_FLAG_RESV;
4156 }
4157 #line 4158 "conf_parser.c" /* yacc.c:1646 */
4158 break;
4159
4160 case 232:
4161 #line 1303 "conf_parser.y" /* yacc.c:1646 */
4162 {
4163 if (conf_parser_ctx.pass == 2)
4164 block_state.port.value |= OPER_FLAG_UNRESV;
4165 }
4166 #line 4167 "conf_parser.c" /* yacc.c:1646 */
4167 break;
4168
4169 case 233:
4170 #line 1307 "conf_parser.y" /* yacc.c:1646 */
4171 {
4172 if (conf_parser_ctx.pass == 2)
4173 block_state.port.value |= OPER_FLAG_CLOSE;
4174 }
4175 #line 4176 "conf_parser.c" /* yacc.c:1646 */
4176 break;
4177
4178 case 234:
4179 #line 1317 "conf_parser.y" /* yacc.c:1646 */
4180 {
4181 if (conf_parser_ctx.pass != 1)
4182 break;
4183
4184 reset_block_state();
4185
4186 block_state.ping_freq.value = DEFAULT_PINGFREQUENCY;
4187 block_state.con_freq.value = DEFAULT_CONNECTFREQUENCY;
4188 block_state.max_total.value = MAXIMUM_LINKS_DEFAULT;
4189 block_state.max_sendq.value = DEFAULT_SENDQ;
4190 block_state.max_recvq.value = DEFAULT_RECVQ;
4191 }
4192 #line 4193 "conf_parser.c" /* yacc.c:1646 */
4193 break;
4194
4195 case 235:
4196 #line 1329 "conf_parser.y" /* yacc.c:1646 */
4197 {
4198 struct ClassItem *class = NULL;
4199
4200 if (conf_parser_ctx.pass != 1)
4201 break;
4202
4203 if (!block_state.class.buf[0])
4204 break;
4205
4206 if (!(class = class_find(block_state.class.buf, 0)))
4207 class = class_make();
4208
4209 class->active = 1;
4210 xfree(class->name);
4211 class->name = xstrdup(block_state.class.buf);
4212 class->ping_freq = block_state.ping_freq.value;
4213 class->max_perip = block_state.max_perip.value;
4214 class->con_freq = block_state.con_freq.value;
4215 class->max_total = block_state.max_total.value;
4216 class->max_global = block_state.max_global.value;
4217 class->max_local = block_state.max_local.value;
4218 class->max_ident = block_state.max_ident.value;
4219 class->max_sendq = block_state.max_sendq.value;
4220 class->max_recvq = block_state.max_recvq.value;
4221 class->max_channels = block_state.max_channels.value;
4222
4223 if (block_state.min_idle.value > block_state.max_idle.value)
4224 {
4225 block_state.min_idle.value = 0;
4226 block_state.max_idle.value = 0;
4227 block_state.flags.value &= ~CLASS_FLAGS_FAKE_IDLE;
4228 }
4229
4230 class->flags = block_state.flags.value;
4231 class->min_idle = block_state.min_idle.value;
4232 class->max_idle = block_state.max_idle.value;
4233
4234 rebuild_cidr_list(class);
4235
4236 class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4237 class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4238 class->number_per_cidr = block_state.number_per_cidr.value;
4239 }
4240 #line 4241 "conf_parser.c" /* yacc.c:1646 */
4241 break;
4242
4243 case 256:
4244 #line 1393 "conf_parser.y" /* yacc.c:1646 */
4245 {
4246 if (conf_parser_ctx.pass == 1)
4247 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4248 }
4249 #line 4250 "conf_parser.c" /* yacc.c:1646 */
4250 break;
4251
4252 case 257:
4253 #line 1399 "conf_parser.y" /* yacc.c:1646 */
4254 {
4255 if (conf_parser_ctx.pass == 1)
4256 block_state.ping_freq.value = (yyvsp[-1].number);
4257 }
4258 #line 4259 "conf_parser.c" /* yacc.c:1646 */
4259 break;
4260
4261 case 258:
4262 #line 1405 "conf_parser.y" /* yacc.c:1646 */
4263 {
4264 if (conf_parser_ctx.pass == 1)
4265 block_state.max_perip.value = (yyvsp[-1].number);
4266 }
4267 #line 4268 "conf_parser.c" /* yacc.c:1646 */
4268 break;
4269
4270 case 259:
4271 #line 1411 "conf_parser.y" /* yacc.c:1646 */
4272 {
4273 if (conf_parser_ctx.pass == 1)
4274 block_state.con_freq.value = (yyvsp[-1].number);
4275 }
4276 #line 4277 "conf_parser.c" /* yacc.c:1646 */
4277 break;
4278
4279 case 260:
4280 #line 1417 "conf_parser.y" /* yacc.c:1646 */
4281 {
4282 if (conf_parser_ctx.pass == 1)
4283 block_state.max_channels.value = (yyvsp[-1].number);
4284 }
4285 #line 4286 "conf_parser.c" /* yacc.c:1646 */
4286 break;
4287
4288 case 261:
4289 #line 1423 "conf_parser.y" /* yacc.c:1646 */
4290 {
4291 if (conf_parser_ctx.pass == 1)
4292 block_state.max_total.value = (yyvsp[-1].number);
4293 }
4294 #line 4295 "conf_parser.c" /* yacc.c:1646 */
4295 break;
4296
4297 case 262:
4298 #line 1429 "conf_parser.y" /* yacc.c:1646 */
4299 {
4300 if (conf_parser_ctx.pass == 1)
4301 block_state.max_global.value = (yyvsp[-1].number);
4302 }
4303 #line 4304 "conf_parser.c" /* yacc.c:1646 */
4304 break;
4305
4306 case 263:
4307 #line 1435 "conf_parser.y" /* yacc.c:1646 */
4308 {
4309 if (conf_parser_ctx.pass == 1)
4310 block_state.max_local.value = (yyvsp[-1].number);
4311 }
4312 #line 4313 "conf_parser.c" /* yacc.c:1646 */
4313 break;
4314
4315 case 264:
4316 #line 1441 "conf_parser.y" /* yacc.c:1646 */
4317 {
4318 if (conf_parser_ctx.pass == 1)
4319 block_state.max_ident.value = (yyvsp[-1].number);
4320 }
4321 #line 4322 "conf_parser.c" /* yacc.c:1646 */
4322 break;
4323
4324 case 265:
4325 #line 1447 "conf_parser.y" /* yacc.c:1646 */
4326 {
4327 if (conf_parser_ctx.pass == 1)
4328 block_state.max_sendq.value = (yyvsp[-1].number);
4329 }
4330 #line 4331 "conf_parser.c" /* yacc.c:1646 */
4331 break;
4332
4333 case 266:
4334 #line 1453 "conf_parser.y" /* yacc.c:1646 */
4335 {
4336 if (conf_parser_ctx.pass == 1)
4337 if ((yyvsp[-1].number) >= CLIENT_FLOOD_MIN && (yyvsp[-1].number) <= CLIENT_FLOOD_MAX)
4338 block_state.max_recvq.value = (yyvsp[-1].number);
4339 }
4340 #line 4341 "conf_parser.c" /* yacc.c:1646 */
4341 break;
4342
4343 case 267:
4344 #line 1460 "conf_parser.y" /* yacc.c:1646 */
4345 {
4346 if (conf_parser_ctx.pass == 1)
4347 block_state.cidr_bitlen_ipv4.value = (yyvsp[-1].number) > 32 ? 32 : (yyvsp[-1].number);
4348 }
4349 #line 4350 "conf_parser.c" /* yacc.c:1646 */
4350 break;
4351
4352 case 268:
4353 #line 1466 "conf_parser.y" /* yacc.c:1646 */
4354 {
4355 if (conf_parser_ctx.pass == 1)
4356 block_state.cidr_bitlen_ipv6.value = (yyvsp[-1].number) > 128 ? 128 : (yyvsp[-1].number);
4357 }
4358 #line 4359 "conf_parser.c" /* yacc.c:1646 */
4359 break;
4360
4361 case 269:
4362 #line 1472 "conf_parser.y" /* yacc.c:1646 */
4363 {
4364 if (conf_parser_ctx.pass == 1)
4365 block_state.number_per_cidr.value = (yyvsp[-1].number);
4366 }
4367 #line 4368 "conf_parser.c" /* yacc.c:1646 */
4368 break;
4369
4370 case 270:
4371 #line 1478 "conf_parser.y" /* yacc.c:1646 */
4372 {
4373 if (conf_parser_ctx.pass != 1)
4374 break;
4375
4376 block_state.min_idle.value = (yyvsp[-1].number);
4377 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4378 }
4379 #line 4380 "conf_parser.c" /* yacc.c:1646 */
4380 break;
4381
4382 case 271:
4383 #line 1487 "conf_parser.y" /* yacc.c:1646 */
4384 {
4385 if (conf_parser_ctx.pass != 1)
4386 break;
4387
4388 block_state.max_idle.value = (yyvsp[-1].number);
4389 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4390 }
4391 #line 4392 "conf_parser.c" /* yacc.c:1646 */
4392 break;
4393
4394 case 272:
4395 #line 1496 "conf_parser.y" /* yacc.c:1646 */
4396 {
4397 if (conf_parser_ctx.pass == 1)
4398 block_state.flags.value &= CLASS_FLAGS_FAKE_IDLE;
4399 }
4400 #line 4401 "conf_parser.c" /* yacc.c:1646 */
4401 break;
4402
4403 case 276:
4404 #line 1503 "conf_parser.y" /* yacc.c:1646 */
4405 {
4406 if (conf_parser_ctx.pass == 1)
4407 block_state.flags.value |= CLASS_FLAGS_RANDOM_IDLE;
4408 }
4409 #line 4410 "conf_parser.c" /* yacc.c:1646 */
4410 break;
4411
4412 case 277:
4413 #line 1507 "conf_parser.y" /* yacc.c:1646 */
4414 {
4415 if (conf_parser_ctx.pass == 1)
4416 block_state.flags.value |= CLASS_FLAGS_HIDE_IDLE_FROM_OPERS;
4417 }
4418 #line 4419 "conf_parser.c" /* yacc.c:1646 */
4419 break;
4420
4421 case 278:
4422 #line 1517 "conf_parser.y" /* yacc.c:1646 */
4423 {
4424 if (conf_parser_ctx.pass == 2)
4425 reset_block_state();
4426 }
4427 #line 4428 "conf_parser.c" /* yacc.c:1646 */
4428 break;
4429
4430 case 280:
4431 #line 1523 "conf_parser.y" /* yacc.c:1646 */
4432 {
4433 block_state.flags.value = 0;
4434 }
4435 #line 4436 "conf_parser.c" /* yacc.c:1646 */
4436 break;
4437
4438 case 284:
4439 #line 1529 "conf_parser.y" /* yacc.c:1646 */
4440 {
4441 if (conf_parser_ctx.pass == 2)
4442 block_state.flags.value |= LISTENER_SSL;
4443 }
4444 #line 4445 "conf_parser.c" /* yacc.c:1646 */
4445 break;
4446
4447 case 285:
4448 #line 1533 "conf_parser.y" /* yacc.c:1646 */
4449 {
4450 if (conf_parser_ctx.pass == 2)
4451 block_state.flags.value |= LISTENER_HIDDEN;
4452 }
4453 #line 4454 "conf_parser.c" /* yacc.c:1646 */
4454 break;
4455
4456 case 286:
4457 #line 1537 "conf_parser.y" /* yacc.c:1646 */
4458 {
4459 if (conf_parser_ctx.pass == 2)
4460 block_state.flags.value |= LISTENER_SERVER;
4461 }
4462 #line 4463 "conf_parser.c" /* yacc.c:1646 */
4463 break;
4464
4465 case 294:
4466 #line 1545 "conf_parser.y" /* yacc.c:1646 */
4467 { block_state.flags.value = 0; }
4468 #line 4469 "conf_parser.c" /* yacc.c:1646 */
4469 break;
4470
4471 case 298:
4472 #line 1550 "conf_parser.y" /* yacc.c:1646 */
4473 {
4474 if (conf_parser_ctx.pass == 2)
4475 {
4476 #ifndef HAVE_TLS
4477 if (block_state.flags.value & LISTENER_SSL)
4478 {
4479 conf_error_report("TLS not available - port closed");
4480 break;
4481 }
4482 #endif
4483 listener_add((yyvsp[0].number), block_state.addr.buf, block_state.flags.value);
4484 }
4485 }
4486 #line 4487 "conf_parser.c" /* yacc.c:1646 */
4487 break;
4488
4489 case 299:
4490 #line 1563 "conf_parser.y" /* yacc.c:1646 */
4491 {
4492 if (conf_parser_ctx.pass == 2)
4493 {
4494 #ifndef HAVE_TLS
4495 if (block_state.flags.value & LISTENER_SSL)
4496 {
4497 conf_error_report("TLS not available - port closed");
4498 break;
4499 }
4500 #endif
4501
4502 for (int i = (yyvsp[-2].number); i <= (yyvsp[0].number); ++i)
4503 listener_add(i, block_state.addr.buf, block_state.flags.value);
4504 }
4505 }
4506 #line 4507 "conf_parser.c" /* yacc.c:1646 */
4507 break;
4508
4509 case 300:
4510 #line 1580 "conf_parser.y" /* yacc.c:1646 */
4511 {
4512 if (conf_parser_ctx.pass == 2)
4513 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4514 }
4515 #line 4516 "conf_parser.c" /* yacc.c:1646 */
4516 break;
4517
4518 case 301:
4519 #line 1586 "conf_parser.y" /* yacc.c:1646 */
4520 {
4521 if (conf_parser_ctx.pass == 2)
4522 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4523 }
4524 #line 4525 "conf_parser.c" /* yacc.c:1646 */
4525 break;
4526
4527 case 302:
4528 #line 1596 "conf_parser.y" /* yacc.c:1646 */
4529 {
4530 if (conf_parser_ctx.pass == 2)
4531 reset_block_state();
4532 }
4533 #line 4534 "conf_parser.c" /* yacc.c:1646 */
4534 break;
4535
4536 case 303:
4537 #line 1600 "conf_parser.y" /* yacc.c:1646 */
4538 {
4539 dlink_node *node = NULL;
4540
4541 if (conf_parser_ctx.pass != 2)
4542 break;
4543
4544 DLINK_FOREACH(node, block_state.mask.list.head)
4545 {
4546 struct MaskItem *conf = NULL;
4547 struct split_nuh_item nuh;
4548
4549 nuh.nuhmask = node->data;
4550 nuh.nickptr = NULL;
4551 nuh.userptr = block_state.user.buf;
4552 nuh.hostptr = block_state.host.buf;
4553 nuh.nicksize = 0;
4554 nuh.usersize = sizeof(block_state.user.buf);
4555 nuh.hostsize = sizeof(block_state.host.buf);
4556 split_nuh(&nuh);
4557
4558 conf = conf_make(CONF_CLIENT);
4559 conf->user = xstrdup(block_state.user.buf);
4560 conf->host = xstrdup(block_state.host.buf);
4561
4562 if (block_state.rpass.buf[0])
4563 conf->passwd = xstrdup(block_state.rpass.buf);
4564 if (block_state.name.buf[0])
4565 conf->name = xstrdup(block_state.name.buf);
4566
4567 conf->flags = block_state.flags.value;
4568 conf->port = block_state.port.value;
4569
4570 conf_add_class_to_conf(conf, block_state.class.buf);
4571 add_conf_by_address(CONF_CLIENT, conf);
4572 }
4573 }
4574 #line 4575 "conf_parser.c" /* yacc.c:1646 */
4575 break;
4576
4577 case 315:
4578 #line 1649 "conf_parser.y" /* yacc.c:1646 */
4579 {
4580 if (conf_parser_ctx.pass == 2)
4581 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4582 }
4583 #line 4584 "conf_parser.c" /* yacc.c:1646 */
4584 break;
4585
4586 case 316:
4587 #line 1655 "conf_parser.y" /* yacc.c:1646 */
4588 {
4589 if (conf_parser_ctx.pass == 2)
4590 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4591 }
4592 #line 4593 "conf_parser.c" /* yacc.c:1646 */
4593 break;
4594
4595 case 317:
4596 #line 1661 "conf_parser.y" /* yacc.c:1646 */
4597 {
4598 if (conf_parser_ctx.pass == 2)
4599 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4600 }
4601 #line 4602 "conf_parser.c" /* yacc.c:1646 */
4602 break;
4603
4604 case 318:
4605 #line 1667 "conf_parser.y" /* yacc.c:1646 */
4606 {
4607 if (conf_parser_ctx.pass == 2)
4608 {
4609 if (yylval.number)
4610 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4611 else
4612 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4613 }
4614 }
4615 #line 4616 "conf_parser.c" /* yacc.c:1646 */
4616 break;
4617
4618 case 319:
4619 #line 1678 "conf_parser.y" /* yacc.c:1646 */
4620 {
4621 if (conf_parser_ctx.pass == 2)
4622 block_state.flags.value &= (CONF_FLAGS_ENCRYPTED | CONF_FLAGS_SPOOF_IP);
4623 }
4624 #line 4625 "conf_parser.c" /* yacc.c:1646 */
4625 break;
4626
4627 case 323:
4628 #line 1685 "conf_parser.y" /* yacc.c:1646 */
4629 {
4630 if (conf_parser_ctx.pass == 2)
4631 block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4632 }
4633 #line 4634 "conf_parser.c" /* yacc.c:1646 */
4634 break;
4635
4636 case 324:
4637 #line 1689 "conf_parser.y" /* yacc.c:1646 */
4638 {
4639 if (conf_parser_ctx.pass == 2)
4640 block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4641 }
4642 #line 4643 "conf_parser.c" /* yacc.c:1646 */
4643 break;
4644
4645 case 325:
4646 #line 1693 "conf_parser.y" /* yacc.c:1646 */
4647 {
4648 if (conf_parser_ctx.pass == 2)
4649 block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4650 }
4651 #line 4652 "conf_parser.c" /* yacc.c:1646 */
4652 break;
4653
4654 case 326:
4655 #line 1697 "conf_parser.y" /* yacc.c:1646 */
4656 {
4657 if (conf_parser_ctx.pass == 2)
4658 block_state.flags.value |= CONF_FLAGS_EXEMPTXLINE;
4659 }
4660 #line 4661 "conf_parser.c" /* yacc.c:1646 */
4661 break;
4662
4663 case 327:
4664 #line 1701 "conf_parser.y" /* yacc.c:1646 */
4665 {
4666 if (conf_parser_ctx.pass == 2)
4667 block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4668 }
4669 #line 4670 "conf_parser.c" /* yacc.c:1646 */
4670 break;
4671
4672 case 328:
4673 #line 1705 "conf_parser.y" /* yacc.c:1646 */
4674 {
4675 if (conf_parser_ctx.pass == 2)
4676 block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4677 }
4678 #line 4679 "conf_parser.c" /* yacc.c:1646 */
4679 break;
4680
4681 case 329:
4682 #line 1709 "conf_parser.y" /* yacc.c:1646 */
4683 {
4684 if (conf_parser_ctx.pass == 2)
4685 block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4686 }
4687 #line 4688 "conf_parser.c" /* yacc.c:1646 */
4688 break;
4689
4690 case 330:
4691 #line 1713 "conf_parser.y" /* yacc.c:1646 */
4692 {
4693 if (conf_parser_ctx.pass == 2)
4694 block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4695 }
4696 #line 4697 "conf_parser.c" /* yacc.c:1646 */
4697 break;
4698
4699 case 331:
4700 #line 1717 "conf_parser.y" /* yacc.c:1646 */
4701 {
4702 if (conf_parser_ctx.pass == 2)
4703 block_state.flags.value |= CONF_FLAGS_WEBIRC;
4704 }
4705 #line 4706 "conf_parser.c" /* yacc.c:1646 */
4706 break;
4707
4708 case 332:
4709 #line 1721 "conf_parser.y" /* yacc.c:1646 */
4710 {
4711 if (conf_parser_ctx.pass == 2)
4712 block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4713 }
4714 #line 4715 "conf_parser.c" /* yacc.c:1646 */
4715 break;
4716
4717 case 333:
4718 #line 1727 "conf_parser.y" /* yacc.c:1646 */
4719 {
4720 if (conf_parser_ctx.pass != 2)
4721 break;
4722
4723 if (valid_hostname(yylval.string))
4724 {
4725 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4726 block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
4727 }
4728 else
4729 ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4730 }
4731 #line 4732 "conf_parser.c" /* yacc.c:1646 */
4732 break;
4733
4734 case 334:
4735 #line 1741 "conf_parser.y" /* yacc.c:1646 */
4736 {
4737 if (conf_parser_ctx.pass != 2)
4738 break;
4739
4740 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4741 block_state.flags.value |= CONF_FLAGS_REDIR;
4742 }
4743 #line 4744 "conf_parser.c" /* yacc.c:1646 */
4744 break;
4745
4746 case 335:
4747 #line 1750 "conf_parser.y" /* yacc.c:1646 */
4748 {
4749 if (conf_parser_ctx.pass != 2)
4750 break;
4751
4752 block_state.flags.value |= CONF_FLAGS_REDIR;
4753 block_state.port.value = (yyvsp[-1].number);
4754 }
4755 #line 4756 "conf_parser.c" /* yacc.c:1646 */
4756 break;
4757
4758 case 336:
4759 #line 1763 "conf_parser.y" /* yacc.c:1646 */
4760 {
4761 if (conf_parser_ctx.pass != 2)
4762 break;
4763
4764 reset_block_state();
4765 strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4766 }
4767 #line 4768 "conf_parser.c" /* yacc.c:1646 */
4768 break;
4769
4770 case 337:
4771 #line 1770 "conf_parser.y" /* yacc.c:1646 */
4772 {
4773 if (conf_parser_ctx.pass != 2)
4774 break;
4775
4776 create_resv(block_state.name.buf, block_state.rpass.buf, &block_state.mask.list);
4777 }
4778 #line 4779 "conf_parser.c" /* yacc.c:1646 */
4779 break;
4780
4781 case 344:
4782 #line 1781 "conf_parser.y" /* yacc.c:1646 */
4783 {
4784 if (conf_parser_ctx.pass == 2)
4785 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4786 }
4787 #line 4788 "conf_parser.c" /* yacc.c:1646 */
4788 break;
4789
4790 case 345:
4791 #line 1787 "conf_parser.y" /* yacc.c:1646 */
4792 {
4793 if (conf_parser_ctx.pass == 2)
4794 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4795 }
4796 #line 4797 "conf_parser.c" /* yacc.c:1646 */
4797 break;
4798
4799 case 346:
4800 #line 1793 "conf_parser.y" /* yacc.c:1646 */
4801 {
4802 if (conf_parser_ctx.pass == 2)
4803 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4804 }
4805 #line 4806 "conf_parser.c" /* yacc.c:1646 */
4806 break;
4807
4808 case 352:
4809 #line 1808 "conf_parser.y" /* yacc.c:1646 */
4810 {
4811 if (conf_parser_ctx.pass != 2)
4812 break;
4813
4814 if (valid_servname(yylval.string))
4815 {
4816 struct MaskItem *conf = conf_make(CONF_SERVICE);
4817 conf->name = xstrdup(yylval.string);
4818 }
4819 }
4820 #line 4821 "conf_parser.c" /* yacc.c:1646 */
4821 break;
4822
4823 case 353:
4824 #line 1824 "conf_parser.y" /* yacc.c:1646 */
4825 {
4826 if (conf_parser_ctx.pass != 2)
4827 break;
4828
4829 reset_block_state();
4830
4831 strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4832 strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4833 strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4834 block_state.flags.value = SHARED_ALL;
4835 }
4836 #line 4837 "conf_parser.c" /* yacc.c:1646 */
4837 break;
4838
4839 case 354:
4840 #line 1835 "conf_parser.y" /* yacc.c:1646 */
4841 {
4842 struct MaskItem *conf = NULL;
4843
4844 if (conf_parser_ctx.pass != 2)
4845 break;
4846
4847 conf = conf_make(CONF_SHARED);
4848 conf->flags = block_state.flags.value;
4849 conf->name = xstrdup(block_state.name.buf);
4850 conf->user = xstrdup(block_state.user.buf);
4851 conf->host = xstrdup(block_state.host.buf);
4852 }
4853 #line 4854 "conf_parser.c" /* yacc.c:1646 */
4854 break;
4855
4856 case 361:
4857 #line 1852 "conf_parser.y" /* yacc.c:1646 */
4858 {
4859 if (conf_parser_ctx.pass == 2)
4860 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4861 }
4862 #line 4863 "conf_parser.c" /* yacc.c:1646 */
4863 break;
4864
4865 case 362:
4866 #line 1858 "conf_parser.y" /* yacc.c:1646 */
4867 {
4868 if (conf_parser_ctx.pass == 2)
4869 {
4870 struct split_nuh_item nuh;
4871
4872 nuh.nuhmask = yylval.string;
4873 nuh.nickptr = NULL;
4874 nuh.userptr = block_state.user.buf;
4875 nuh.hostptr = block_state.host.buf;
4876
4877 nuh.nicksize = 0;
4878 nuh.usersize = sizeof(block_state.user.buf);
4879 nuh.hostsize = sizeof(block_state.host.buf);
4880
4881 split_nuh(&nuh);
4882 }
4883 }
4884 #line 4885 "conf_parser.c" /* yacc.c:1646 */
4885 break;
4886
4887 case 363:
4888 #line 1877 "conf_parser.y" /* yacc.c:1646 */
4889 {
4890 if (conf_parser_ctx.pass == 2)
4891 block_state.flags.value = 0;
4892 }
4893 #line 4894 "conf_parser.c" /* yacc.c:1646 */
4894 break;
4895
4896 case 367:
4897 #line 1884 "conf_parser.y" /* yacc.c:1646 */
4898 {
4899 if (conf_parser_ctx.pass == 2)
4900 block_state.flags.value |= SHARED_KLINE;
4901 }
4902 #line 4903 "conf_parser.c" /* yacc.c:1646 */
4903 break;
4904
4905 case 368:
4906 #line 1888 "conf_parser.y" /* yacc.c:1646 */
4907 {
4908 if (conf_parser_ctx.pass == 2)
4909 block_state.flags.value |= SHARED_UNKLINE;
4910 }
4911 #line 4912 "conf_parser.c" /* yacc.c:1646 */
4912 break;
4913
4914 case 369:
4915 #line 1892 "conf_parser.y" /* yacc.c:1646 */
4916 {
4917 if (conf_parser_ctx.pass == 2)
4918 block_state.flags.value |= SHARED_DLINE;
4919 }
4920 #line 4921 "conf_parser.c" /* yacc.c:1646 */
4921 break;
4922
4923 case 370:
4924 #line 1896 "conf_parser.y" /* yacc.c:1646 */
4925 {
4926 if (conf_parser_ctx.pass == 2)
4927 block_state.flags.value |= SHARED_UNDLINE;
4928 }
4929 #line 4930 "conf_parser.c" /* yacc.c:1646 */
4930 break;
4931
4932 case 371:
4933 #line 1900 "conf_parser.y" /* yacc.c:1646 */
4934 {
4935 if (conf_parser_ctx.pass == 2)
4936 block_state.flags.value |= SHARED_XLINE;
4937 }
4938 #line 4939 "conf_parser.c" /* yacc.c:1646 */
4939 break;
4940
4941 case 372:
4942 #line 1904 "conf_parser.y" /* yacc.c:1646 */
4943 {
4944 if (conf_parser_ctx.pass == 2)
4945 block_state.flags.value |= SHARED_UNXLINE;
4946 }
4947 #line 4948 "conf_parser.c" /* yacc.c:1646 */
4948 break;
4949
4950 case 373:
4951 #line 1908 "conf_parser.y" /* yacc.c:1646 */
4952 {
4953 if (conf_parser_ctx.pass == 2)
4954 block_state.flags.value |= SHARED_RESV;
4955 }
4956 #line 4957 "conf_parser.c" /* yacc.c:1646 */
4957 break;
4958
4959 case 374:
4960 #line 1912 "conf_parser.y" /* yacc.c:1646 */
4961 {
4962 if (conf_parser_ctx.pass == 2)
4963 block_state.flags.value |= SHARED_UNRESV;
4964 }
4965 #line 4966 "conf_parser.c" /* yacc.c:1646 */
4966 break;
4967
4968 case 375:
4969 #line 1916 "conf_parser.y" /* yacc.c:1646 */
4970 {
4971 if (conf_parser_ctx.pass == 2)
4972 block_state.flags.value |= SHARED_LOCOPS;
4973 }
4974 #line 4975 "conf_parser.c" /* yacc.c:1646 */
4975 break;
4976
4977 case 376:
4978 #line 1920 "conf_parser.y" /* yacc.c:1646 */
4979 {
4980 if (conf_parser_ctx.pass == 2)
4981 block_state.flags.value = SHARED_ALL;
4982 }
4983 #line 4984 "conf_parser.c" /* yacc.c:1646 */
4984 break;
4985
4986 case 377:
4987 #line 1930 "conf_parser.y" /* yacc.c:1646 */
4988 {
4989 if (conf_parser_ctx.pass != 2)
4990 break;
4991
4992 reset_block_state();
4993
4994 strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4995 block_state.flags.value = SHARED_ALL;
4996 }
4997 #line 4998 "conf_parser.c" /* yacc.c:1646 */
4998 break;
4999
5000 case 378:
5001 #line 1939 "conf_parser.y" /* yacc.c:1646 */
5002 {
5003 struct MaskItem *conf = NULL;
5004
5005 if (conf_parser_ctx.pass != 2)
5006 break;
5007
5008 conf = conf_make(CONF_CLUSTER);
5009 conf->flags = block_state.flags.value;
5010 conf->name = xstrdup(block_state.name.buf);
5011 }
5012 #line 5013 "conf_parser.c" /* yacc.c:1646 */
5013 break;
5014
5015 case 384:
5016 #line 1954 "conf_parser.y" /* yacc.c:1646 */
5017 {
5018 if (conf_parser_ctx.pass == 2)
5019 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5020 }
5021 #line 5022 "conf_parser.c" /* yacc.c:1646 */
5022 break;
5023
5024 case 385:
5025 #line 1960 "conf_parser.y" /* yacc.c:1646 */
5026 {
5027 if (conf_parser_ctx.pass == 2)
5028 block_state.flags.value = 0;
5029 }
5030 #line 5031 "conf_parser.c" /* yacc.c:1646 */
5031 break;
5032
5033 case 389:
5034 #line 1967 "conf_parser.y" /* yacc.c:1646 */
5035 {
5036 if (conf_parser_ctx.pass == 2)
5037 block_state.flags.value |= SHARED_KLINE;
5038 }
5039 #line 5040 "conf_parser.c" /* yacc.c:1646 */
5040 break;
5041
5042 case 390:
5043 #line 1971 "conf_parser.y" /* yacc.c:1646 */
5044 {
5045 if (conf_parser_ctx.pass == 2)
5046 block_state.flags.value |= SHARED_UNKLINE;
5047 }
5048 #line 5049 "conf_parser.c" /* yacc.c:1646 */
5049 break;
5050
5051 case 391:
5052 #line 1975 "conf_parser.y" /* yacc.c:1646 */
5053 {
5054 if (conf_parser_ctx.pass == 2)
5055 block_state.flags.value |= SHARED_DLINE;
5056 }
5057 #line 5058 "conf_parser.c" /* yacc.c:1646 */
5058 break;
5059
5060 case 392:
5061 #line 1979 "conf_parser.y" /* yacc.c:1646 */
5062 {
5063 if (conf_parser_ctx.pass == 2)
5064 block_state.flags.value |= SHARED_UNDLINE;
5065 }
5066 #line 5067 "conf_parser.c" /* yacc.c:1646 */
5067 break;
5068
5069 case 393:
5070 #line 1983 "conf_parser.y" /* yacc.c:1646 */
5071 {
5072 if (conf_parser_ctx.pass == 2)
5073 block_state.flags.value |= SHARED_XLINE;
5074 }
5075 #line 5076 "conf_parser.c" /* yacc.c:1646 */
5076 break;
5077
5078 case 394:
5079 #line 1987 "conf_parser.y" /* yacc.c:1646 */
5080 {
5081 if (conf_parser_ctx.pass == 2)
5082 block_state.flags.value |= SHARED_UNXLINE;
5083 }
5084 #line 5085 "conf_parser.c" /* yacc.c:1646 */
5085 break;
5086
5087 case 395:
5088 #line 1991 "conf_parser.y" /* yacc.c:1646 */
5089 {
5090 if (conf_parser_ctx.pass == 2)
5091 block_state.flags.value |= SHARED_RESV;
5092 }
5093 #line 5094 "conf_parser.c" /* yacc.c:1646 */
5094 break;
5095
5096 case 396:
5097 #line 1995 "conf_parser.y" /* yacc.c:1646 */
5098 {
5099 if (conf_parser_ctx.pass == 2)
5100 block_state.flags.value |= SHARED_UNRESV;
5101 }
5102 #line 5103 "conf_parser.c" /* yacc.c:1646 */
5103 break;
5104
5105 case 397:
5106 #line 1999 "conf_parser.y" /* yacc.c:1646 */
5107 {
5108 if (conf_parser_ctx.pass == 2)
5109 block_state.flags.value |= SHARED_LOCOPS;
5110 }
5111 #line 5112 "conf_parser.c" /* yacc.c:1646 */
5112 break;
5113
5114 case 398:
5115 #line 2003 "conf_parser.y" /* yacc.c:1646 */
5116 {
5117 if (conf_parser_ctx.pass == 2)
5118 block_state.flags.value = SHARED_ALL;
5119 }
5120 #line 5121 "conf_parser.c" /* yacc.c:1646 */
5121 break;
5122
5123 case 399:
5124 #line 2013 "conf_parser.y" /* yacc.c:1646 */
5125 {
5126
5127 if (conf_parser_ctx.pass != 2)
5128 break;
5129
5130 reset_block_state();
5131 block_state.aftype.value = AF_INET;
5132 block_state.port.value = PORTNUM;
5133 }
5134 #line 5135 "conf_parser.c" /* yacc.c:1646 */
5135 break;
5136
5137 case 400:
5138 #line 2022 "conf_parser.y" /* yacc.c:1646 */
5139 {
5140 struct MaskItem *conf = NULL;
5141 struct addrinfo hints, *res;
5142
5143 if (conf_parser_ctx.pass != 2)
5144 break;
5145
5146 if (!block_state.name.buf[0] ||
5147 !block_state.host.buf[0])
5148 break;
5149
5150 if (!block_state.rpass.buf[0] ||
5151 !block_state.spass.buf[0])
5152 break;
5153
5154 if (has_wildcards(block_state.name.buf) ||
5155 has_wildcards(block_state.host.buf))
5156 break;
5157
5158 conf = conf_make(CONF_SERVER);
5159 conf->port = block_state.port.value;
5160 conf->flags = block_state.flags.value;
5161 conf->aftype = block_state.aftype.value;
5162 conf->host = xstrdup(block_state.host.buf);
5163 conf->name = xstrdup(block_state.name.buf);
5164 conf->passwd = xstrdup(block_state.rpass.buf);
5165 conf->spasswd = xstrdup(block_state.spass.buf);
5166
5167 if (block_state.cert.buf[0])
5168 conf->certfp = xstrdup(block_state.cert.buf);
5169
5170 if (block_state.ciph.buf[0])
5171 conf->cipher_list = xstrdup(block_state.ciph.buf);
5172
5173 dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5174 dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5175
5176 if (block_state.bind.buf[0])
5177 {
5178 memset(&hints, 0, sizeof(hints));
5179
5180 hints.ai_family = AF_UNSPEC;
5181 hints.ai_socktype = SOCK_STREAM;
5182 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5183
5184 if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5185 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", block_state.bind.buf);
5186 else
5187 {
5188 assert(res);
5189
5190 memcpy(&conf->bind, res->ai_addr, res->ai_addrlen);
5191 conf->bind.ss.ss_family = res->ai_family;
5192 conf->bind.ss_len = res->ai_addrlen;
5193 freeaddrinfo(res);
5194 }
5195 }
5196
5197 conf_add_class_to_conf(conf, block_state.class.buf);
5198 lookup_confhost(conf);
5199 }
5200 #line 5201 "conf_parser.c" /* yacc.c:1646 */
5201 break;
5202
5203 case 418:
5204 #line 2102 "conf_parser.y" /* yacc.c:1646 */
5205 {
5206 if (conf_parser_ctx.pass == 2)
5207 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5208 }
5209 #line 5210 "conf_parser.c" /* yacc.c:1646 */
5210 break;
5211
5212 case 419:
5213 #line 2108 "conf_parser.y" /* yacc.c:1646 */
5214 {
5215 if (conf_parser_ctx.pass == 2)
5216 strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5217 }
5218 #line 5219 "conf_parser.c" /* yacc.c:1646 */
5219 break;
5220
5221 case 420:
5222 #line 2114 "conf_parser.y" /* yacc.c:1646 */
5223 {
5224 if (conf_parser_ctx.pass == 2)
5225 strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5226 }
5227 #line 5228 "conf_parser.c" /* yacc.c:1646 */
5228 break;
5229
5230 case 421:
5231 #line 2120 "conf_parser.y" /* yacc.c:1646 */
5232 {
5233 if (conf_parser_ctx.pass != 2)
5234 break;
5235
5236 if ((yyvsp[-1].string)[0] == ':')
5237 conf_error_report("Server passwords cannot begin with a colon");
5238 else if (strchr((yyvsp[-1].string), ' '))
5239 conf_error_report("Server passwords cannot contain spaces");
5240 else
5241 strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5242 }
5243 #line 5244 "conf_parser.c" /* yacc.c:1646 */
5244 break;
5245
5246 case 422:
5247 #line 2133 "conf_parser.y" /* yacc.c:1646 */
5248 {
5249 if (conf_parser_ctx.pass != 2)
5250 break;
5251
5252 if ((yyvsp[-1].string)[0] == ':')
5253 conf_error_report("Server passwords cannot begin with a colon");
5254 else if (strchr((yyvsp[-1].string), ' '))
5255 conf_error_report("Server passwords cannot contain spaces");
5256 else
5257 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5258 }
5259 #line 5260 "conf_parser.c" /* yacc.c:1646 */
5260 break;
5261
5262 case 423:
5263 #line 2146 "conf_parser.y" /* yacc.c:1646 */
5264 {
5265 if (conf_parser_ctx.pass == 2)
5266 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
5267 }
5268 #line 5269 "conf_parser.c" /* yacc.c:1646 */
5269 break;
5270
5271 case 424:
5272 #line 2152 "conf_parser.y" /* yacc.c:1646 */
5273 {
5274 if (conf_parser_ctx.pass == 2)
5275 block_state.port.value = (yyvsp[-1].number);
5276 }
5277 #line 5278 "conf_parser.c" /* yacc.c:1646 */
5278 break;
5279
5280 case 425:
5281 #line 2158 "conf_parser.y" /* yacc.c:1646 */
5282 {
5283 if (conf_parser_ctx.pass == 2)
5284 block_state.aftype.value = AF_INET;
5285 }
5286 #line 5287 "conf_parser.c" /* yacc.c:1646 */
5287 break;
5288
5289 case 426:
5290 #line 2162 "conf_parser.y" /* yacc.c:1646 */
5291 {
5292 if (conf_parser_ctx.pass == 2)
5293 block_state.aftype.value = AF_INET6;
5294 }
5295 #line 5296 "conf_parser.c" /* yacc.c:1646 */
5296 break;
5297
5298 case 427:
5299 #line 2168 "conf_parser.y" /* yacc.c:1646 */
5300 {
5301 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5302 }
5303 #line 5304 "conf_parser.c" /* yacc.c:1646 */
5304 break;
5305
5306 case 431:
5307 #line 2174 "conf_parser.y" /* yacc.c:1646 */
5308 {
5309 if (conf_parser_ctx.pass == 2)
5310 block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5311 }
5312 #line 5313 "conf_parser.c" /* yacc.c:1646 */
5313 break;
5314
5315 case 432:
5316 #line 2178 "conf_parser.y" /* yacc.c:1646 */
5317 {
5318 if (conf_parser_ctx.pass == 2)
5319 block_state.flags.value |= CONF_FLAGS_SSL;
5320 }
5321 #line 5322 "conf_parser.c" /* yacc.c:1646 */
5322 break;
5323
5324 case 433:
5325 #line 2184 "conf_parser.y" /* yacc.c:1646 */
5326 {
5327 if (conf_parser_ctx.pass == 2)
5328 {
5329 if (yylval.number)
5330 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5331 else
5332 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5333 }
5334 }
5335 #line 5336 "conf_parser.c" /* yacc.c:1646 */
5336 break;
5337
5338 case 434:
5339 #line 2195 "conf_parser.y" /* yacc.c:1646 */
5340 {
5341 if (conf_parser_ctx.pass == 2)
5342 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5343 }
5344 #line 5345 "conf_parser.c" /* yacc.c:1646 */
5345 break;
5346
5347 case 435:
5348 #line 2201 "conf_parser.y" /* yacc.c:1646 */
5349 {
5350 if (conf_parser_ctx.pass == 2)
5351 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5352 }
5353 #line 5354 "conf_parser.c" /* yacc.c:1646 */
5354 break;
5355
5356 case 436:
5357 #line 2207 "conf_parser.y" /* yacc.c:1646 */
5358 {
5359 if (conf_parser_ctx.pass == 2)
5360 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5361 }
5362 #line 5363 "conf_parser.c" /* yacc.c:1646 */
5363 break;
5364
5365 case 437:
5366 #line 2213 "conf_parser.y" /* yacc.c:1646 */
5367 {
5368 #ifdef HAVE_TLS
5369 if (conf_parser_ctx.pass == 2)
5370 strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5371 #else
5372 if (conf_parser_ctx.pass == 2)
5373 conf_error_report("Ignoring connect::ciphers -- no TLS support");
5374 #endif
5375 }
5376 #line 5377 "conf_parser.c" /* yacc.c:1646 */
5377 break;
5378
5379 case 438:
5380 #line 2228 "conf_parser.y" /* yacc.c:1646 */
5381 {
5382 if (conf_parser_ctx.pass == 2)
5383 reset_block_state();
5384 }
5385 #line 5386 "conf_parser.c" /* yacc.c:1646 */
5386 break;
5387
5388 case 439:
5389 #line 2232 "conf_parser.y" /* yacc.c:1646 */
5390 {
5391 struct MaskItem *conf = NULL;
5392
5393 if (conf_parser_ctx.pass != 2)
5394 break;
5395
5396 if (!block_state.user.buf[0] ||
5397 !block_state.host.buf[0])
5398 break;
5399
5400 conf = conf_make(CONF_KLINE);
5401 conf->user = xstrdup(block_state.user.buf);
5402 conf->host = xstrdup(block_state.host.buf);
5403
5404 if (block_state.rpass.buf[0])
5405 conf->reason = xstrdup(block_state.rpass.buf);
5406 else
5407 conf->reason = xstrdup(CONF_NOREASON);
5408 add_conf_by_address(CONF_KLINE, conf);
5409 }
5410 #line 5411 "conf_parser.c" /* yacc.c:1646 */
5411 break;
5412
5413 case 445:
5414 #line 2257 "conf_parser.y" /* yacc.c:1646 */
5415 {
5416
5417 if (conf_parser_ctx.pass == 2)
5418 {
5419 struct split_nuh_item nuh;
5420
5421 nuh.nuhmask = yylval.string;
5422 nuh.nickptr = NULL;
5423 nuh.userptr = block_state.user.buf;
5424 nuh.hostptr = block_state.host.buf;
5425
5426 nuh.nicksize = 0;
5427 nuh.usersize = sizeof(block_state.user.buf);
5428 nuh.hostsize = sizeof(block_state.host.buf);
5429
5430 split_nuh(&nuh);
5431 }
5432 }
5433 #line 5434 "conf_parser.c" /* yacc.c:1646 */
5434 break;
5435
5436 case 446:
5437 #line 2277 "conf_parser.y" /* yacc.c:1646 */
5438 {
5439 if (conf_parser_ctx.pass == 2)
5440 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5441 }
5442 #line 5443 "conf_parser.c" /* yacc.c:1646 */
5443 break;
5444
5445 case 447:
5446 #line 2287 "conf_parser.y" /* yacc.c:1646 */
5447 {
5448 if (conf_parser_ctx.pass == 2)
5449 reset_block_state();
5450 }
5451 #line 5452 "conf_parser.c" /* yacc.c:1646 */
5452 break;
5453
5454 case 448:
5455 #line 2291 "conf_parser.y" /* yacc.c:1646 */
5456 {
5457 struct MaskItem *conf = NULL;
5458
5459 if (conf_parser_ctx.pass != 2)
5460 break;
5461
5462 if (!block_state.addr.buf[0])
5463 break;
5464
5465 if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5466 {
5467 conf = conf_make(CONF_DLINE);
5468 conf->host = xstrdup(block_state.addr.buf);
5469
5470 if (block_state.rpass.buf[0])
5471 conf->reason = xstrdup(block_state.rpass.buf);
5472 else
5473 conf->reason = xstrdup(CONF_NOREASON);
5474 add_conf_by_address(CONF_DLINE, conf);
5475 }
5476 }
5477 #line 5478 "conf_parser.c" /* yacc.c:1646 */
5478 break;
5479
5480 case 454:
5481 #line 2317 "conf_parser.y" /* yacc.c:1646 */
5482 {
5483 if (conf_parser_ctx.pass == 2)
5484 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5485 }
5486 #line 5487 "conf_parser.c" /* yacc.c:1646 */
5487 break;
5488
5489 case 455:
5490 #line 2323 "conf_parser.y" /* yacc.c:1646 */
5491 {
5492 if (conf_parser_ctx.pass == 2)
5493 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5494 }
5495 #line 5496 "conf_parser.c" /* yacc.c:1646 */
5496 break;
5497
5498 case 461:
5499 #line 2338 "conf_parser.y" /* yacc.c:1646 */
5500 {
5501 if (conf_parser_ctx.pass == 2)
5502 {
5503 if (*yylval.string && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5504 {
5505 struct MaskItem *conf = conf_make(CONF_EXEMPT);
5506 conf->host = xstrdup(yylval.string);
5507
5508 add_conf_by_address(CONF_EXEMPT, conf);
5509 }
5510 }
5511 }
5512 #line 5513 "conf_parser.c" /* yacc.c:1646 */
5513 break;
5514
5515 case 462:
5516 #line 2355 "conf_parser.y" /* yacc.c:1646 */
5517 {
5518 if (conf_parser_ctx.pass == 2)
5519 reset_block_state();
5520 }
5521 #line 5522 "conf_parser.c" /* yacc.c:1646 */
5522 break;
5523
5524 case 463:
5525 #line 2359 "conf_parser.y" /* yacc.c:1646 */
5526 {
5527 struct MaskItem *conf = NULL;
5528
5529 if (conf_parser_ctx.pass != 2)
5530 break;
5531
5532 if (!block_state.name.buf[0])
5533 break;
5534
5535 conf = conf_make(CONF_XLINE);
5536 conf->name = xstrdup(block_state.name.buf);
5537
5538 if (block_state.rpass.buf[0])
5539 conf->reason = xstrdup(block_state.rpass.buf);
5540 else
5541 conf->reason = xstrdup(CONF_NOREASON);
5542 }
5543 #line 5544 "conf_parser.c" /* yacc.c:1646 */
5544 break;
5545
5546 case 469:
5547 #line 2381 "conf_parser.y" /* yacc.c:1646 */
5548 {
5549 if (conf_parser_ctx.pass == 2)
5550 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5551 }
5552 #line 5553 "conf_parser.c" /* yacc.c:1646 */
5553 break;
5554
5555 case 470:
5556 #line 2387 "conf_parser.y" /* yacc.c:1646 */
5557 {
5558 if (conf_parser_ctx.pass == 2)
5559 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5560 }
5561 #line 5562 "conf_parser.c" /* yacc.c:1646 */
5562 break;
5563
5564 case 520:
5565 #line 2448 "conf_parser.y" /* yacc.c:1646 */
5566 {
5567 ConfigGeneral.away_count = (yyvsp[-1].number);
5568 }
5569 #line 5570 "conf_parser.c" /* yacc.c:1646 */
5570 break;
5571
5572 case 521:
5573 #line 2453 "conf_parser.y" /* yacc.c:1646 */
5574 {
5575 ConfigGeneral.away_time = (yyvsp[-1].number);
5576 }
5577 #line 5578 "conf_parser.c" /* yacc.c:1646 */
5578 break;
5579
5580 case 522:
5581 #line 2458 "conf_parser.y" /* yacc.c:1646 */
5582 {
5583 ConfigGeneral.max_watch = (yyvsp[-1].number);
5584 }
5585 #line 5586 "conf_parser.c" /* yacc.c:1646 */
5586 break;
5587
5588 case 523:
5589 #line 2463 "conf_parser.y" /* yacc.c:1646 */
5590 {
5591 if (conf_parser_ctx.pass == 2)
5592 ConfigGeneral.cycle_on_host_change = yylval.number;
5593 }
5594 #line 5595 "conf_parser.c" /* yacc.c:1646 */
5595 break;
5596
5597 case 524:
5598 #line 2469 "conf_parser.y" /* yacc.c:1646 */
5599 {
5600 ConfigGeneral.dline_min_cidr = (yyvsp[-1].number);
5601 }
5602 #line 5603 "conf_parser.c" /* yacc.c:1646 */
5603 break;
5604
5605 case 525:
5606 #line 2474 "conf_parser.y" /* yacc.c:1646 */
5607 {
5608 ConfigGeneral.dline_min_cidr6 = (yyvsp[-1].number);
5609 }
5610 #line 5611 "conf_parser.c" /* yacc.c:1646 */
5611 break;
5612
5613 case 526:
5614 #line 2479 "conf_parser.y" /* yacc.c:1646 */
5615 {
5616 ConfigGeneral.kline_min_cidr = (yyvsp[-1].number);
5617 }
5618 #line 5619 "conf_parser.c" /* yacc.c:1646 */
5619 break;
5620
5621 case 527:
5622 #line 2484 "conf_parser.y" /* yacc.c:1646 */
5623 {
5624 ConfigGeneral.kline_min_cidr6 = (yyvsp[-1].number);
5625 }
5626 #line 5627 "conf_parser.c" /* yacc.c:1646 */
5627 break;
5628
5629 case 528:
5630 #line 2489 "conf_parser.y" /* yacc.c:1646 */
5631 {
5632 ConfigGeneral.tkline_expire_notices = yylval.number;
5633 }
5634 #line 5635 "conf_parser.c" /* yacc.c:1646 */
5635 break;
5636
5637 case 529:
5638 #line 2494 "conf_parser.y" /* yacc.c:1646 */
5639 {
5640 ConfigGeneral.kill_chase_time_limit = (yyvsp[-1].number);
5641 }
5642 #line 5643 "conf_parser.c" /* yacc.c:1646 */
5643 break;
5644
5645 case 530:
5646 #line 2499 "conf_parser.y" /* yacc.c:1646 */
5647 {
5648 ConfigGeneral.ignore_bogus_ts = yylval.number;
5649 }
5650 #line 5651 "conf_parser.c" /* yacc.c:1646 */
5651 break;
5652
5653 case 531:
5654 #line 2504 "conf_parser.y" /* yacc.c:1646 */
5655 {
5656 ConfigGeneral.failed_oper_notice = yylval.number;
5657 }
5658 #line 5659 "conf_parser.c" /* yacc.c:1646 */
5659 break;
5660
5661 case 532:
5662 #line 2509 "conf_parser.y" /* yacc.c:1646 */
5663 {
5664 ConfigGeneral.anti_nick_flood = yylval.number;
5665 }
5666 #line 5667 "conf_parser.c" /* yacc.c:1646 */
5667 break;
5668
5669 case 533:
5670 #line 2514 "conf_parser.y" /* yacc.c:1646 */
5671 {
5672 ConfigGeneral.max_nick_time = (yyvsp[-1].number);
5673 }
5674 #line 5675 "conf_parser.c" /* yacc.c:1646 */
5675 break;
5676
5677 case 534:
5678 #line 2519 "conf_parser.y" /* yacc.c:1646 */
5679 {
5680 ConfigGeneral.max_nick_changes = (yyvsp[-1].number);
5681 }
5682 #line 5683 "conf_parser.c" /* yacc.c:1646 */
5683 break;
5684
5685 case 535:
5686 #line 2524 "conf_parser.y" /* yacc.c:1646 */
5687 {
5688 ConfigGeneral.max_accept = (yyvsp[-1].number);
5689 }
5690 #line 5691 "conf_parser.c" /* yacc.c:1646 */
5691 break;
5692
5693 case 536:
5694 #line 2529 "conf_parser.y" /* yacc.c:1646 */
5695 {
5696 ConfigGeneral.anti_spam_exit_message_time = (yyvsp[-1].number);
5697 }
5698 #line 5699 "conf_parser.c" /* yacc.c:1646 */
5699 break;
5700
5701 case 537:
5702 #line 2534 "conf_parser.y" /* yacc.c:1646 */
5703 {
5704 ConfigGeneral.ts_warn_delta = (yyvsp[-1].number);
5705 }
5706 #line 5707 "conf_parser.c" /* yacc.c:1646 */
5707 break;
5708
5709 case 538:
5710 #line 2539 "conf_parser.y" /* yacc.c:1646 */
5711 {
5712 if (conf_parser_ctx.pass == 2)
5713 ConfigGeneral.ts_max_delta = (yyvsp[-1].number);
5714 }
5715 #line 5716 "conf_parser.c" /* yacc.c:1646 */
5716 break;
5717
5718 case 539:
5719 #line 2545 "conf_parser.y" /* yacc.c:1646 */
5720 {
5721 ConfigGeneral.invisible_on_connect = yylval.number;
5722 }
5723 #line 5724 "conf_parser.c" /* yacc.c:1646 */
5724 break;
5725
5726 case 540:
5727 #line 2550 "conf_parser.y" /* yacc.c:1646 */
5728 {
5729 ConfigGeneral.warn_no_connect_block = yylval.number;
5730 }
5731 #line 5732 "conf_parser.c" /* yacc.c:1646 */
5732 break;
5733
5734 case 541:
5735 #line 2555 "conf_parser.y" /* yacc.c:1646 */
5736 {
5737 ConfigGeneral.stats_e_disabled = yylval.number;
5738 }
5739 #line 5740 "conf_parser.c" /* yacc.c:1646 */
5740 break;
5741
5742 case 542:
5743 #line 2560 "conf_parser.y" /* yacc.c:1646 */
5744 {
5745 ConfigGeneral.stats_m_oper_only = yylval.number;
5746 }
5747 #line 5748 "conf_parser.c" /* yacc.c:1646 */
5748 break;
5749
5750 case 543:
5751 #line 2565 "conf_parser.y" /* yacc.c:1646 */
5752 {
5753 ConfigGeneral.stats_o_oper_only = yylval.number;
5754 }
5755 #line 5756 "conf_parser.c" /* yacc.c:1646 */
5756 break;
5757
5758 case 544:
5759 #line 2570 "conf_parser.y" /* yacc.c:1646 */
5760 {
5761 ConfigGeneral.stats_P_oper_only = yylval.number;
5762 }
5763 #line 5764 "conf_parser.c" /* yacc.c:1646 */
5764 break;
5765
5766 case 545:
5767 #line 2575 "conf_parser.y" /* yacc.c:1646 */
5768 {
5769 ConfigGeneral.stats_u_oper_only = yylval.number;
5770 }
5771 #line 5772 "conf_parser.c" /* yacc.c:1646 */
5772 break;
5773
5774 case 546:
5775 #line 2580 "conf_parser.y" /* yacc.c:1646 */
5776 {
5777 ConfigGeneral.stats_k_oper_only = 2 * yylval.number;
5778 }
5779 #line 5780 "conf_parser.c" /* yacc.c:1646 */
5780 break;
5781
5782 case 547:
5783 #line 2583 "conf_parser.y" /* yacc.c:1646 */
5784 {
5785 ConfigGeneral.stats_k_oper_only = 1;
5786 }
5787 #line 5788 "conf_parser.c" /* yacc.c:1646 */
5788 break;
5789
5790 case 548:
5791 #line 2588 "conf_parser.y" /* yacc.c:1646 */
5792 {
5793 ConfigGeneral.stats_i_oper_only = 2 * yylval.number;
5794 }
5795 #line 5796 "conf_parser.c" /* yacc.c:1646 */
5796 break;
5797
5798 case 549:
5799 #line 2591 "conf_parser.y" /* yacc.c:1646 */
5800 {
5801 ConfigGeneral.stats_i_oper_only = 1;
5802 }
5803 #line 5804 "conf_parser.c" /* yacc.c:1646 */
5804 break;
5805
5806 case 550:
5807 #line 2596 "conf_parser.y" /* yacc.c:1646 */
5808 {
5809 ConfigGeneral.pace_wait = (yyvsp[-1].number);
5810 }
5811 #line 5812 "conf_parser.c" /* yacc.c:1646 */
5812 break;
5813
5814 case 551:
5815 #line 2601 "conf_parser.y" /* yacc.c:1646 */
5816 {
5817 ConfigGeneral.caller_id_wait = (yyvsp[-1].number);
5818 }
5819 #line 5820 "conf_parser.c" /* yacc.c:1646 */
5820 break;
5821
5822 case 552:
5823 #line 2606 "conf_parser.y" /* yacc.c:1646 */
5824 {
5825 ConfigGeneral.opers_bypass_callerid = yylval.number;
5826 }
5827 #line 5828 "conf_parser.c" /* yacc.c:1646 */
5828 break;
5829
5830 case 553:
5831 #line 2611 "conf_parser.y" /* yacc.c:1646 */
5832 {
5833 ConfigGeneral.pace_wait_simple = (yyvsp[-1].number);
5834 }
5835 #line 5836 "conf_parser.c" /* yacc.c:1646 */
5836 break;
5837
5838 case 554:
5839 #line 2616 "conf_parser.y" /* yacc.c:1646 */
5840 {
5841 ConfigGeneral.short_motd = yylval.number;
5842 }
5843 #line 5844 "conf_parser.c" /* yacc.c:1646 */
5844 break;
5845
5846 case 555:
5847 #line 2621 "conf_parser.y" /* yacc.c:1646 */
5848 {
5849 ConfigGeneral.no_oper_flood = yylval.number;
5850 }
5851 #line 5852 "conf_parser.c" /* yacc.c:1646 */
5852 break;
5853
5854 case 556:
5855 #line 2626 "conf_parser.y" /* yacc.c:1646 */
5856 {
5857 ConfigGeneral.dots_in_ident = (yyvsp[-1].number);
5858 }
5859 #line 5860 "conf_parser.c" /* yacc.c:1646 */
5860 break;
5861
5862 case 557:
5863 #line 2631 "conf_parser.y" /* yacc.c:1646 */
5864 {
5865 ConfigGeneral.max_targets = (yyvsp[-1].number);
5866 }
5867 #line 5868 "conf_parser.c" /* yacc.c:1646 */
5868 break;
5869
5870 case 558:
5871 #line 2636 "conf_parser.y" /* yacc.c:1646 */
5872 {
5873 ConfigGeneral.ping_cookie = yylval.number;
5874 }
5875 #line 5876 "conf_parser.c" /* yacc.c:1646 */
5876 break;
5877
5878 case 559:
5879 #line 2641 "conf_parser.y" /* yacc.c:1646 */
5880 {
5881 ConfigGeneral.disable_auth = yylval.number;
5882 }
5883 #line 5884 "conf_parser.c" /* yacc.c:1646 */
5884 break;
5885
5886 case 560:
5887 #line 2646 "conf_parser.y" /* yacc.c:1646 */
5888 {
5889 ConfigGeneral.throttle_count = (yyvsp[-1].number);
5890 }
5891 #line 5892 "conf_parser.c" /* yacc.c:1646 */
5892 break;
5893
5894 case 561:
5895 #line 2651 "conf_parser.y" /* yacc.c:1646 */
5896 {
5897 ConfigGeneral.throttle_time = (yyvsp[-1].number);
5898 }
5899 #line 5900 "conf_parser.c" /* yacc.c:1646 */
5900 break;
5901
5902 case 562:
5903 #line 2656 "conf_parser.y" /* yacc.c:1646 */
5904 {
5905 ConfigGeneral.oper_umodes = 0;
5906 }
5907 #line 5908 "conf_parser.c" /* yacc.c:1646 */
5908 break;
5909
5910 case 566:
5911 #line 2662 "conf_parser.y" /* yacc.c:1646 */
5912 {
5913 ConfigGeneral.oper_umodes |= UMODE_BOTS;
5914 }
5915 #line 5916 "conf_parser.c" /* yacc.c:1646 */
5916 break;
5917
5918 case 567:
5919 #line 2665 "conf_parser.y" /* yacc.c:1646 */
5920 {
5921 ConfigGeneral.oper_umodes |= UMODE_CCONN;
5922 }
5923 #line 5924 "conf_parser.c" /* yacc.c:1646 */
5924 break;
5925
5926 case 568:
5927 #line 2668 "conf_parser.y" /* yacc.c:1646 */
5928 {
5929 ConfigGeneral.oper_umodes |= UMODE_DEAF;
5930 }
5931 #line 5932 "conf_parser.c" /* yacc.c:1646 */
5932 break;
5933
5934 case 569:
5935 #line 2671 "conf_parser.y" /* yacc.c:1646 */
5936 {
5937 ConfigGeneral.oper_umodes |= UMODE_DEBUG;
5938 }
5939 #line 5940 "conf_parser.c" /* yacc.c:1646 */
5940 break;
5941
5942 case 570:
5943 #line 2674 "conf_parser.y" /* yacc.c:1646 */
5944 {
5945 ConfigGeneral.oper_umodes |= UMODE_FULL;
5946 }
5947 #line 5948 "conf_parser.c" /* yacc.c:1646 */
5948 break;
5949
5950 case 571:
5951 #line 2677 "conf_parser.y" /* yacc.c:1646 */
5952 {
5953 ConfigGeneral.oper_umodes |= UMODE_HIDDEN;
5954 }
5955 #line 5956 "conf_parser.c" /* yacc.c:1646 */
5956 break;
5957
5958 case 572:
5959 #line 2680 "conf_parser.y" /* yacc.c:1646 */
5960 {
5961 ConfigGeneral.oper_umodes |= UMODE_HIDECHANS;
5962 }
5963 #line 5964 "conf_parser.c" /* yacc.c:1646 */
5964 break;
5965
5966 case 573:
5967 #line 2683 "conf_parser.y" /* yacc.c:1646 */
5968 {
5969 ConfigGeneral.oper_umodes |= UMODE_HIDEIDLE;
5970 }
5971 #line 5972 "conf_parser.c" /* yacc.c:1646 */
5972 break;
5973
5974 case 574:
5975 #line 2686 "conf_parser.y" /* yacc.c:1646 */
5976 {
5977 ConfigGeneral.oper_umodes |= UMODE_SKILL;
5978 }
5979 #line 5980 "conf_parser.c" /* yacc.c:1646 */
5980 break;
5981
5982 case 575:
5983 #line 2689 "conf_parser.y" /* yacc.c:1646 */
5984 {
5985 ConfigGeneral.oper_umodes |= UMODE_NCHANGE;
5986 }
5987 #line 5988 "conf_parser.c" /* yacc.c:1646 */
5988 break;
5989
5990 case 576:
5991 #line 2692 "conf_parser.y" /* yacc.c:1646 */
5992 {
5993 ConfigGeneral.oper_umodes |= UMODE_REJ;
5994 }
5995 #line 5996 "conf_parser.c" /* yacc.c:1646 */
5996 break;
5997
5998 case 577:
5999 #line 2695 "conf_parser.y" /* yacc.c:1646 */
6000 {
6001 ConfigGeneral.oper_umodes |= UMODE_UNAUTH;
6002 }
6003 #line 6004 "conf_parser.c" /* yacc.c:1646 */
6004 break;
6005
6006 case 578:
6007 #line 2698 "conf_parser.y" /* yacc.c:1646 */
6008 {
6009 ConfigGeneral.oper_umodes |= UMODE_SPY;
6010 }
6011 #line 6012 "conf_parser.c" /* yacc.c:1646 */
6012 break;
6013
6014 case 579:
6015 #line 2701 "conf_parser.y" /* yacc.c:1646 */
6016 {
6017 ConfigGeneral.oper_umodes |= UMODE_EXTERNAL;
6018 }
6019 #line 6020 "conf_parser.c" /* yacc.c:1646 */
6020 break;
6021
6022 case 580:
6023 #line 2704 "conf_parser.y" /* yacc.c:1646 */
6024 {
6025 ConfigGeneral.oper_umodes |= UMODE_SERVNOTICE;
6026 }
6027 #line 6028 "conf_parser.c" /* yacc.c:1646 */
6028 break;
6029
6030 case 581:
6031 #line 2707 "conf_parser.y" /* yacc.c:1646 */
6032 {
6033 ConfigGeneral.oper_umodes |= UMODE_INVISIBLE;
6034 }
6035 #line 6036 "conf_parser.c" /* yacc.c:1646 */
6036 break;
6037
6038 case 582:
6039 #line 2710 "conf_parser.y" /* yacc.c:1646 */
6040 {
6041 ConfigGeneral.oper_umodes |= UMODE_WALLOP;
6042 }
6043 #line 6044 "conf_parser.c" /* yacc.c:1646 */
6044 break;
6045
6046 case 583:
6047 #line 2713 "conf_parser.y" /* yacc.c:1646 */
6048 {
6049 ConfigGeneral.oper_umodes |= UMODE_SOFTCALLERID;
6050 }
6051 #line 6052 "conf_parser.c" /* yacc.c:1646 */
6052 break;
6053
6054 case 584:
6055 #line 2716 "conf_parser.y" /* yacc.c:1646 */
6056 {
6057 ConfigGeneral.oper_umodes |= UMODE_CALLERID;
6058 }
6059 #line 6060 "conf_parser.c" /* yacc.c:1646 */
6060 break;
6061
6062 case 585:
6063 #line 2719 "conf_parser.y" /* yacc.c:1646 */
6064 {
6065 ConfigGeneral.oper_umodes |= UMODE_LOCOPS;
6066 }
6067 #line 6068 "conf_parser.c" /* yacc.c:1646 */
6068 break;
6069
6070 case 586:
6071 #line 2722 "conf_parser.y" /* yacc.c:1646 */
6072 {
6073 ConfigGeneral.oper_umodes |= UMODE_REGONLY;
6074 }
6075 #line 6076 "conf_parser.c" /* yacc.c:1646 */
6076 break;
6077
6078 case 587:
6079 #line 2725 "conf_parser.y" /* yacc.c:1646 */
6080 {
6081 ConfigGeneral.oper_umodes |= UMODE_FARCONNECT;
6082 }
6083 #line 6084 "conf_parser.c" /* yacc.c:1646 */
6084 break;
6085
6086 case 588:
6087 #line 2730 "conf_parser.y" /* yacc.c:1646 */
6088 {
6089 ConfigGeneral.oper_only_umodes = 0;
6090 }
6091 #line 6092 "conf_parser.c" /* yacc.c:1646 */
6092 break;
6093
6094 case 592:
6095 #line 2736 "conf_parser.y" /* yacc.c:1646 */
6096 {
6097 ConfigGeneral.oper_only_umodes |= UMODE_BOTS;
6098 }
6099 #line 6100 "conf_parser.c" /* yacc.c:1646 */
6100 break;
6101
6102 case 593:
6103 #line 2739 "conf_parser.y" /* yacc.c:1646 */
6104 {
6105 ConfigGeneral.oper_only_umodes |= UMODE_CCONN;
6106 }
6107 #line 6108 "conf_parser.c" /* yacc.c:1646 */
6108 break;
6109
6110 case 594:
6111 #line 2742 "conf_parser.y" /* yacc.c:1646 */
6112 {
6113 ConfigGeneral.oper_only_umodes |= UMODE_DEAF;
6114 }
6115 #line 6116 "conf_parser.c" /* yacc.c:1646 */
6116 break;
6117
6118 case 595:
6119 #line 2745 "conf_parser.y" /* yacc.c:1646 */
6120 {
6121 ConfigGeneral.oper_only_umodes |= UMODE_DEBUG;
6122 }
6123 #line 6124 "conf_parser.c" /* yacc.c:1646 */
6124 break;
6125
6126 case 596:
6127 #line 2748 "conf_parser.y" /* yacc.c:1646 */
6128 {
6129 ConfigGeneral.oper_only_umodes |= UMODE_FULL;
6130 }
6131 #line 6132 "conf_parser.c" /* yacc.c:1646 */
6132 break;
6133
6134 case 597:
6135 #line 2751 "conf_parser.y" /* yacc.c:1646 */
6136 {
6137 ConfigGeneral.oper_only_umodes |= UMODE_SKILL;
6138 }
6139 #line 6140 "conf_parser.c" /* yacc.c:1646 */
6140 break;
6141
6142 case 598:
6143 #line 2754 "conf_parser.y" /* yacc.c:1646 */
6144 {
6145 ConfigGeneral.oper_only_umodes |= UMODE_HIDDEN;
6146 }
6147 #line 6148 "conf_parser.c" /* yacc.c:1646 */
6148 break;
6149
6150 case 599:
6151 #line 2757 "conf_parser.y" /* yacc.c:1646 */
6152 {
6153 ConfigGeneral.oper_only_umodes |= UMODE_NCHANGE;
6154 }
6155 #line 6156 "conf_parser.c" /* yacc.c:1646 */
6156 break;
6157
6158 case 600:
6159 #line 2760 "conf_parser.y" /* yacc.c:1646 */
6160 {
6161 ConfigGeneral.oper_only_umodes |= UMODE_REJ;
6162 }
6163 #line 6164 "conf_parser.c" /* yacc.c:1646 */
6164 break;
6165
6166 case 601:
6167 #line 2763 "conf_parser.y" /* yacc.c:1646 */
6168 {
6169 ConfigGeneral.oper_only_umodes |= UMODE_UNAUTH;
6170 }
6171 #line 6172 "conf_parser.c" /* yacc.c:1646 */
6172 break;
6173
6174 case 602:
6175 #line 2766 "conf_parser.y" /* yacc.c:1646 */
6176 {
6177 ConfigGeneral.oper_only_umodes |= UMODE_SPY;
6178 }
6179 #line 6180 "conf_parser.c" /* yacc.c:1646 */
6180 break;
6181
6182 case 603:
6183 #line 2769 "conf_parser.y" /* yacc.c:1646 */
6184 {
6185 ConfigGeneral.oper_only_umodes |= UMODE_EXTERNAL;
6186 }
6187 #line 6188 "conf_parser.c" /* yacc.c:1646 */
6188 break;
6189
6190 case 604:
6191 #line 2772 "conf_parser.y" /* yacc.c:1646 */
6192 {
6193 ConfigGeneral.oper_only_umodes |= UMODE_SERVNOTICE;
6194 }
6195 #line 6196 "conf_parser.c" /* yacc.c:1646 */
6196 break;
6197
6198 case 605:
6199 #line 2775 "conf_parser.y" /* yacc.c:1646 */
6200 {
6201 ConfigGeneral.oper_only_umodes |= UMODE_INVISIBLE;
6202 }
6203 #line 6204 "conf_parser.c" /* yacc.c:1646 */
6204 break;
6205
6206 case 606:
6207 #line 2778 "conf_parser.y" /* yacc.c:1646 */
6208 {
6209 ConfigGeneral.oper_only_umodes |= UMODE_WALLOP;
6210 }
6211 #line 6212 "conf_parser.c" /* yacc.c:1646 */
6212 break;
6213
6214 case 607:
6215 #line 2781 "conf_parser.y" /* yacc.c:1646 */
6216 {
6217 ConfigGeneral.oper_only_umodes |= UMODE_SOFTCALLERID;
6218 }
6219 #line 6220 "conf_parser.c" /* yacc.c:1646 */
6220 break;
6221
6222 case 608:
6223 #line 2784 "conf_parser.y" /* yacc.c:1646 */
6224 {
6225 ConfigGeneral.oper_only_umodes |= UMODE_CALLERID;
6226 }
6227 #line 6228 "conf_parser.c" /* yacc.c:1646 */
6228 break;
6229
6230 case 609:
6231 #line 2787 "conf_parser.y" /* yacc.c:1646 */
6232 {
6233 ConfigGeneral.oper_only_umodes |= UMODE_LOCOPS;
6234 }
6235 #line 6236 "conf_parser.c" /* yacc.c:1646 */
6236 break;
6237
6238 case 610:
6239 #line 2790 "conf_parser.y" /* yacc.c:1646 */
6240 {
6241 ConfigGeneral.oper_only_umodes |= UMODE_REGONLY;
6242 }
6243 #line 6244 "conf_parser.c" /* yacc.c:1646 */
6244 break;
6245
6246 case 611:
6247 #line 2793 "conf_parser.y" /* yacc.c:1646 */
6248 {
6249 ConfigGeneral.oper_only_umodes |= UMODE_FARCONNECT;
6250 }
6251 #line 6252 "conf_parser.c" /* yacc.c:1646 */
6252 break;
6253
6254 case 612:
6255 #line 2798 "conf_parser.y" /* yacc.c:1646 */
6256 {
6257 ConfigGeneral.min_nonwildcard = (yyvsp[-1].number);
6258 }
6259 #line 6260 "conf_parser.c" /* yacc.c:1646 */
6260 break;
6261
6262 case 613:
6263 #line 2803 "conf_parser.y" /* yacc.c:1646 */
6264 {
6265 ConfigGeneral.min_nonwildcard_simple = (yyvsp[-1].number);
6266 }
6267 #line 6268 "conf_parser.c" /* yacc.c:1646 */
6268 break;
6269
6270 case 614:
6271 #line 2808 "conf_parser.y" /* yacc.c:1646 */
6272 {
6273 ConfigGeneral.default_floodcount = (yyvsp[-1].number);
6274 }
6275 #line 6276 "conf_parser.c" /* yacc.c:1646 */
6276 break;
6277
6278 case 630:
6279 #line 2833 "conf_parser.y" /* yacc.c:1646 */
6280 {
6281 ConfigChannel.disable_fake_channels = yylval.number;
6282 }
6283 #line 6284 "conf_parser.c" /* yacc.c:1646 */
6284 break;
6285
6286 case 631:
6287 #line 2838 "conf_parser.y" /* yacc.c:1646 */
6288 {
6289 ConfigChannel.invite_client_count = (yyvsp[-1].number);
6290 }
6291 #line 6292 "conf_parser.c" /* yacc.c:1646 */
6292 break;
6293
6294 case 632:
6295 #line 2843 "conf_parser.y" /* yacc.c:1646 */
6296 {
6297 ConfigChannel.invite_client_time = (yyvsp[-1].number);
6298 }
6299 #line 6300 "conf_parser.c" /* yacc.c:1646 */
6300 break;
6301
6302 case 633:
6303 #line 2848 "conf_parser.y" /* yacc.c:1646 */
6304 {
6305 ConfigChannel.invite_delay_channel = (yyvsp[-1].number);
6306 }
6307 #line 6308 "conf_parser.c" /* yacc.c:1646 */
6308 break;
6309
6310 case 634:
6311 #line 2853 "conf_parser.y" /* yacc.c:1646 */
6312 {
6313 ConfigChannel.knock_client_count = (yyvsp[-1].number);
6314 }
6315 #line 6316 "conf_parser.c" /* yacc.c:1646 */
6316 break;
6317
6318 case 635:
6319 #line 2858 "conf_parser.y" /* yacc.c:1646 */
6320 {
6321 ConfigChannel.knock_client_time = (yyvsp[-1].number);
6322 }
6323 #line 6324 "conf_parser.c" /* yacc.c:1646 */
6324 break;
6325
6326 case 636:
6327 #line 2863 "conf_parser.y" /* yacc.c:1646 */
6328 {
6329 ConfigChannel.knock_delay_channel = (yyvsp[-1].number);
6330 }
6331 #line 6332 "conf_parser.c" /* yacc.c:1646 */
6332 break;
6333
6334 case 637:
6335 #line 2868 "conf_parser.y" /* yacc.c:1646 */
6336 {
6337 ConfigChannel.max_channels = (yyvsp[-1].number);
6338 }
6339 #line 6340 "conf_parser.c" /* yacc.c:1646 */
6340 break;
6341
6342 case 638:
6343 #line 2873 "conf_parser.y" /* yacc.c:1646 */
6344 {
6345 ConfigChannel.max_bans = (yyvsp[-1].number);
6346 }
6347 #line 6348 "conf_parser.c" /* yacc.c:1646 */
6348 break;
6349
6350 case 639:
6351 #line 2878 "conf_parser.y" /* yacc.c:1646 */
6352 {
6353 ConfigChannel.default_join_flood_count = yylval.number;
6354 }
6355 #line 6356 "conf_parser.c" /* yacc.c:1646 */
6356 break;
6357
6358 case 640:
6359 #line 2883 "conf_parser.y" /* yacc.c:1646 */
6360 {
6361 ConfigChannel.default_join_flood_time = (yyvsp[-1].number);
6362 }
6363 #line 6364 "conf_parser.c" /* yacc.c:1646 */
6364 break;
6365
6366 case 654:
6367 #line 2906 "conf_parser.y" /* yacc.c:1646 */
6368 {
6369 if (conf_parser_ctx.pass == 2)
6370 ConfigServerHide.flatten_links = yylval.number;
6371 }
6372 #line 6373 "conf_parser.c" /* yacc.c:1646 */
6373 break;
6374
6375 case 655:
6376 #line 2912 "conf_parser.y" /* yacc.c:1646 */
6377 {
6378 if (conf_parser_ctx.pass == 2)
6379 {
6380 if ((yyvsp[-1].number) > 0)
6381 {
6382 event_write_links_file.when = (yyvsp[-1].number);
6383 event_add(&event_write_links_file, NULL);
6384 }
6385 else
6386 event_delete(&event_write_links_file);
6387
6388 ConfigServerHide.flatten_links_delay = (yyvsp[-1].number);
6389 }
6390 }
6391 #line 6392 "conf_parser.c" /* yacc.c:1646 */
6392 break;
6393
6394 case 656:
6395 #line 2928 "conf_parser.y" /* yacc.c:1646 */
6396 {
6397 if (conf_parser_ctx.pass == 2)
6398 {
6399 xfree(ConfigServerHide.flatten_links_file);
6400 ConfigServerHide.flatten_links_file = xstrdup(yylval.string);
6401 }
6402 }
6403 #line 6404 "conf_parser.c" /* yacc.c:1646 */
6404 break;
6405
6406 case 657:
6407 #line 2937 "conf_parser.y" /* yacc.c:1646 */
6408 {
6409 if (conf_parser_ctx.pass == 2)
6410 ConfigServerHide.disable_remote_commands = yylval.number;
6411 }
6412 #line 6413 "conf_parser.c" /* yacc.c:1646 */
6413 break;
6414
6415 case 658:
6416 #line 2943 "conf_parser.y" /* yacc.c:1646 */
6417 {
6418 if (conf_parser_ctx.pass == 2)
6419 ConfigServerHide.hide_servers = yylval.number;
6420 }
6421 #line 6422 "conf_parser.c" /* yacc.c:1646 */
6422 break;
6423
6424 case 659:
6425 #line 2949 "conf_parser.y" /* yacc.c:1646 */
6426 {
6427 if (conf_parser_ctx.pass == 2)
6428 ConfigServerHide.hide_services = yylval.number;
6429 }
6430 #line 6431 "conf_parser.c" /* yacc.c:1646 */
6431 break;
6432
6433 case 660:
6434 #line 2955 "conf_parser.y" /* yacc.c:1646 */
6435 {
6436 if (conf_parser_ctx.pass == 2)
6437 {
6438 xfree(ConfigServerHide.hidden_name);
6439 ConfigServerHide.hidden_name = xstrdup(yylval.string);
6440 }
6441 }
6442 #line 6443 "conf_parser.c" /* yacc.c:1646 */
6443 break;
6444
6445 case 661:
6446 #line 2964 "conf_parser.y" /* yacc.c:1646 */
6447 {
6448 if (conf_parser_ctx.pass == 2)
6449 ConfigServerHide.hidden = yylval.number;
6450 }
6451 #line 6452 "conf_parser.c" /* yacc.c:1646 */
6452 break;
6453
6454 case 662:
6455 #line 2970 "conf_parser.y" /* yacc.c:1646 */
6456 {
6457 if (conf_parser_ctx.pass == 2)
6458 ConfigServerHide.hide_server_ips = yylval.number;
6459 }
6460 #line 6461 "conf_parser.c" /* yacc.c:1646 */
6461 break;
6462
6463
6464 #line 6465 "conf_parser.c" /* yacc.c:1646 */
6465 default: break;
6466 }
6467 /* User semantic actions sometimes alter yychar, and that requires
6468 that yytoken be updated with the new translation. We take the
6469 approach of translating immediately before every use of yytoken.
6470 One alternative is translating here after every semantic action,
6471 but that translation would be missed if the semantic action invokes
6472 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6473 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6474 incorrect destructor might then be invoked immediately. In the
6475 case of YYERROR or YYBACKUP, subsequent parser actions might lead
6476 to an incorrect destructor call or verbose syntax error message
6477 before the lookahead is translated. */
6478 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6479
6480 YYPOPSTACK (yylen);
6481 yylen = 0;
6482 YY_STACK_PRINT (yyss, yyssp);
6483
6484 *++yyvsp = yyval;
6485
6486 /* Now 'shift' the result of the reduction. Determine what state
6487 that goes to, based on the state we popped back to and the rule
6488 number reduced by. */
6489
6490 yyn = yyr1[yyn];
6491
6492 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
6493 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
6494 yystate = yytable[yystate];
6495 else
6496 yystate = yydefgoto[yyn - YYNTOKENS];
6497
6498 goto yynewstate;
6499
6500
6501 /*--------------------------------------.
6502 | yyerrlab -- here on detecting error. |
6503 `--------------------------------------*/
6504 yyerrlab:
6505 /* Make sure we have latest lookahead translation. See comments at
6506 user semantic actions for why this is necessary. */
6507 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6508
6509 /* If not already recovering from an error, report this error. */
6510 if (!yyerrstatus)
6511 {
6512 ++yynerrs;
6513 #if ! YYERROR_VERBOSE
6514 yyerror (YY_("syntax error"));
6515 #else
6516 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6517 yyssp, yytoken)
6518 {
6519 char const *yymsgp = YY_("syntax error");
6520 int yysyntax_error_status;
6521 yysyntax_error_status = YYSYNTAX_ERROR;
6522 if (yysyntax_error_status == 0)
6523 yymsgp = yymsg;
6524 else if (yysyntax_error_status == 1)
6525 {
6526 if (yymsg != yymsgbuf)
6527 YYSTACK_FREE (yymsg);
6528 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6529 if (!yymsg)
6530 {
6531 yymsg = yymsgbuf;
6532 yymsg_alloc = sizeof yymsgbuf;
6533 yysyntax_error_status = 2;
6534 }
6535 else
6536 {
6537 yysyntax_error_status = YYSYNTAX_ERROR;
6538 yymsgp = yymsg;
6539 }
6540 }
6541 yyerror (yymsgp);
6542 if (yysyntax_error_status == 2)
6543 goto yyexhaustedlab;
6544 }
6545 # undef YYSYNTAX_ERROR
6546 #endif
6547 }
6548
6549
6550
6551 if (yyerrstatus == 3)
6552 {
6553 /* If just tried and failed to reuse lookahead token after an
6554 error, discard it. */
6555
6556 if (yychar <= YYEOF)
6557 {
6558 /* Return failure if at end of input. */
6559 if (yychar == YYEOF)
6560 YYABORT;
6561 }
6562 else
6563 {
6564 yydestruct ("Error: discarding",
6565 yytoken, &yylval);
6566 yychar = YYEMPTY;
6567 }
6568 }
6569
6570 /* Else will try to reuse lookahead token after shifting the error
6571 token. */
6572 goto yyerrlab1;
6573
6574
6575 /*---------------------------------------------------.
6576 | yyerrorlab -- error raised explicitly by YYERROR. |
6577 `---------------------------------------------------*/
6578 yyerrorlab:
6579
6580 /* Pacify compilers like GCC when the user code never invokes
6581 YYERROR and the label yyerrorlab therefore never appears in user
6582 code. */
6583 if (/*CONSTCOND*/ 0)
6584 goto yyerrorlab;
6585
6586 /* Do not reclaim the symbols of the rule whose action triggered
6587 this YYERROR. */
6588 YYPOPSTACK (yylen);
6589 yylen = 0;
6590 YY_STACK_PRINT (yyss, yyssp);
6591 yystate = *yyssp;
6592 goto yyerrlab1;
6593
6594
6595 /*-------------------------------------------------------------.
6596 | yyerrlab1 -- common code for both syntax error and YYERROR. |
6597 `-------------------------------------------------------------*/
6598 yyerrlab1:
6599 yyerrstatus = 3; /* Each real token shifted decrements this. */
6600
6601 for (;;)
6602 {
6603 yyn = yypact[yystate];
6604 if (!yypact_value_is_default (yyn))
6605 {
6606 yyn += YYTERROR;
6607 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6608 {
6609 yyn = yytable[yyn];
6610 if (0 < yyn)
6611 break;
6612 }
6613 }
6614
6615 /* Pop the current state because it cannot handle the error token. */
6616 if (yyssp == yyss)
6617 YYABORT;
6618
6619
6620 yydestruct ("Error: popping",
6621 yystos[yystate], yyvsp);
6622 YYPOPSTACK (1);
6623 yystate = *yyssp;
6624 YY_STACK_PRINT (yyss, yyssp);
6625 }
6626
6627 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6628 *++yyvsp = yylval;
6629 YY_IGNORE_MAYBE_UNINITIALIZED_END
6630
6631
6632 /* Shift the error token. */
6633 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
6634
6635 yystate = yyn;
6636 goto yynewstate;
6637
6638
6639 /*-------------------------------------.
6640 | yyacceptlab -- YYACCEPT comes here. |
6641 `-------------------------------------*/
6642 yyacceptlab:
6643 yyresult = 0;
6644 goto yyreturn;
6645
6646 /*-----------------------------------.
6647 | yyabortlab -- YYABORT comes here. |
6648 `-----------------------------------*/
6649 yyabortlab:
6650 yyresult = 1;
6651 goto yyreturn;
6652
6653 #if !defined yyoverflow || YYERROR_VERBOSE
6654 /*-------------------------------------------------.
6655 | yyexhaustedlab -- memory exhaustion comes here. |
6656 `-------------------------------------------------*/
6657 yyexhaustedlab:
6658 yyerror (YY_("memory exhausted"));
6659 yyresult = 2;
6660 /* Fall through. */
6661 #endif
6662
6663 yyreturn:
6664 if (yychar != YYEMPTY)
6665 {
6666 /* Make sure we have latest lookahead translation. See comments at
6667 user semantic actions for why this is necessary. */
6668 yytoken = YYTRANSLATE (yychar);
6669 yydestruct ("Cleanup: discarding lookahead",
6670 yytoken, &yylval);
6671 }
6672 /* Do not reclaim the symbols of the rule whose action triggered
6673 this YYABORT or YYACCEPT. */
6674 YYPOPSTACK (yylen);
6675 YY_STACK_PRINT (yyss, yyssp);
6676 while (yyssp != yyss)
6677 {
6678 yydestruct ("Cleanup: popping",
6679 yystos[*yyssp], yyvsp);
6680 YYPOPSTACK (1);
6681 }
6682 #ifndef yyoverflow
6683 if (yyss != yyssa)
6684 YYSTACK_FREE (yyss);
6685 #endif
6686 #if YYERROR_VERBOSE
6687 if (yymsg != yymsgbuf)
6688 YYSTACK_FREE (yymsg);
6689 #endif
6690 return yyresult;
6691 }

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision