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

Properties

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