xref: /freebsd/contrib/ntp/ntpd/ntp_parser.c (revision c36e54bb328697af1e6113812caecbd3bac89fe0)
1 /* A Bison parser, made by GNU Bison 3.0.2.  */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5    Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
6 
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.2"
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 14 "ntp_parser.y" /* yacc.c:339  */
66 
67   #ifdef HAVE_CONFIG_H
68   # include <config.h>
69   #endif
70 
71   #include "ntp.h"
72   #include "ntpd.h"
73   #include "ntp_machine.h"
74   #include "ntp_stdlib.h"
75   #include "ntp_filegen.h"
76   #include "ntp_scanner.h"
77   #include "ntp_config.h"
78   #include "ntp_crypto.h"
79 
80   #include "ntpsim.h"		/* HMS: Do we really want this all the time? */
81 				/* SK: It might be a good idea to always
82 				   include the simulator code. That way
83 				   someone can use the same configuration file
84 				   for both the simulator and the daemon
85 				*/
86 
87   #define YYMALLOC	emalloc
88   #define YYFREE	free
89   #define YYERROR_VERBOSE
90   #define YYMAXDEPTH	1000	/* stop the madness sooner */
91   void yyerror(struct FILE_INFO *ip_file, const char *msg);
92 
93   #ifdef SIM
94   #  define ONLY_SIM(a)	(a)
95   #else
96   #  define ONLY_SIM(a)	NULL
97   #endif
98 
99 #line 100 "ntp_parser.c" /* yacc.c:339  */
100 
101 # ifndef YY_NULLPTR
102 #  if defined __cplusplus && 201103L <= __cplusplus
103 #   define YY_NULLPTR nullptr
104 #  else
105 #   define YY_NULLPTR 0
106 #  endif
107 # endif
108 
109 /* Enabling verbose error messages.  */
110 #ifdef YYERROR_VERBOSE
111 # undef YYERROR_VERBOSE
112 # define YYERROR_VERBOSE 1
113 #else
114 # define YYERROR_VERBOSE 0
115 #endif
116 
117 /* In a future release of Bison, this section will be replaced
118    by #include "y.tab.h".  */
119 #ifndef YY_YY_Y_TAB_H_INCLUDED
120 # define YY_YY_Y_TAB_H_INCLUDED
121 /* Debug traces.  */
122 #ifndef YYDEBUG
123 # define YYDEBUG 1
124 #endif
125 #if YYDEBUG
126 extern int yydebug;
127 #endif
128 
129 /* Token type.  */
130 #ifndef YYTOKENTYPE
131 # define YYTOKENTYPE
132   enum yytokentype
133   {
134     T_Abbrev = 258,
135     T_Age = 259,
136     T_All = 260,
137     T_Allan = 261,
138     T_Allpeers = 262,
139     T_Auth = 263,
140     T_Autokey = 264,
141     T_Automax = 265,
142     T_Average = 266,
143     T_Bclient = 267,
144     T_Beacon = 268,
145     T_Broadcast = 269,
146     T_Broadcastclient = 270,
147     T_Broadcastdelay = 271,
148     T_Burst = 272,
149     T_Calibrate = 273,
150     T_Ceiling = 274,
151     T_Clockstats = 275,
152     T_Cohort = 276,
153     T_ControlKey = 277,
154     T_Crypto = 278,
155     T_Cryptostats = 279,
156     T_Ctl = 280,
157     T_Day = 281,
158     T_Default = 282,
159     T_Digest = 283,
160     T_Disable = 284,
161     T_Discard = 285,
162     T_Dispersion = 286,
163     T_Double = 287,
164     T_Driftfile = 288,
165     T_Drop = 289,
166     T_Ellipsis = 290,
167     T_Enable = 291,
168     T_End = 292,
169     T_False = 293,
170     T_File = 294,
171     T_Filegen = 295,
172     T_Filenum = 296,
173     T_Flag1 = 297,
174     T_Flag2 = 298,
175     T_Flag3 = 299,
176     T_Flag4 = 300,
177     T_Flake = 301,
178     T_Floor = 302,
179     T_Freq = 303,
180     T_Fudge = 304,
181     T_Host = 305,
182     T_Huffpuff = 306,
183     T_Iburst = 307,
184     T_Ident = 308,
185     T_Ignore = 309,
186     T_Incalloc = 310,
187     T_Incmem = 311,
188     T_Initalloc = 312,
189     T_Initmem = 313,
190     T_Includefile = 314,
191     T_Integer = 315,
192     T_Interface = 316,
193     T_Intrange = 317,
194     T_Io = 318,
195     T_Ipv4 = 319,
196     T_Ipv4_flag = 320,
197     T_Ipv6 = 321,
198     T_Ipv6_flag = 322,
199     T_Kernel = 323,
200     T_Key = 324,
201     T_Keys = 325,
202     T_Keysdir = 326,
203     T_Kod = 327,
204     T_Mssntp = 328,
205     T_Leapfile = 329,
206     T_Limited = 330,
207     T_Link = 331,
208     T_Listen = 332,
209     T_Logconfig = 333,
210     T_Logfile = 334,
211     T_Loopstats = 335,
212     T_Lowpriotrap = 336,
213     T_Manycastclient = 337,
214     T_Manycastserver = 338,
215     T_Mask = 339,
216     T_Maxage = 340,
217     T_Maxclock = 341,
218     T_Maxdepth = 342,
219     T_Maxdist = 343,
220     T_Maxmem = 344,
221     T_Maxpoll = 345,
222     T_Mdnstries = 346,
223     T_Mem = 347,
224     T_Memlock = 348,
225     T_Minclock = 349,
226     T_Mindepth = 350,
227     T_Mindist = 351,
228     T_Minimum = 352,
229     T_Minpoll = 353,
230     T_Minsane = 354,
231     T_Mode = 355,
232     T_Mode7 = 356,
233     T_Monitor = 357,
234     T_Month = 358,
235     T_Mru = 359,
236     T_Multicastclient = 360,
237     T_Nic = 361,
238     T_Nolink = 362,
239     T_Nomodify = 363,
240     T_Nomrulist = 364,
241     T_None = 365,
242     T_Nonvolatile = 366,
243     T_Nopeer = 367,
244     T_Noquery = 368,
245     T_Noselect = 369,
246     T_Noserve = 370,
247     T_Notrap = 371,
248     T_Notrust = 372,
249     T_Ntp = 373,
250     T_Ntpport = 374,
251     T_NtpSignDsocket = 375,
252     T_Orphan = 376,
253     T_Orphanwait = 377,
254     T_Panic = 378,
255     T_Peer = 379,
256     T_Peerstats = 380,
257     T_Phone = 381,
258     T_Pid = 382,
259     T_Pidfile = 383,
260     T_Pool = 384,
261     T_Port = 385,
262     T_Preempt = 386,
263     T_Prefer = 387,
264     T_Protostats = 388,
265     T_Pw = 389,
266     T_Randfile = 390,
267     T_Rawstats = 391,
268     T_Refid = 392,
269     T_Requestkey = 393,
270     T_Reset = 394,
271     T_Restrict = 395,
272     T_Revoke = 396,
273     T_Rlimit = 397,
274     T_Saveconfigdir = 398,
275     T_Server = 399,
276     T_Setvar = 400,
277     T_Source = 401,
278     T_Stacksize = 402,
279     T_Statistics = 403,
280     T_Stats = 404,
281     T_Statsdir = 405,
282     T_Step = 406,
283     T_Stepback = 407,
284     T_Stepfwd = 408,
285     T_Stepout = 409,
286     T_Stratum = 410,
287     T_String = 411,
288     T_Sys = 412,
289     T_Sysstats = 413,
290     T_Tick = 414,
291     T_Time1 = 415,
292     T_Time2 = 416,
293     T_Timer = 417,
294     T_Timingstats = 418,
295     T_Tinker = 419,
296     T_Tos = 420,
297     T_Trap = 421,
298     T_True = 422,
299     T_Trustedkey = 423,
300     T_Ttl = 424,
301     T_Type = 425,
302     T_U_int = 426,
303     T_Unconfig = 427,
304     T_Unpeer = 428,
305     T_Version = 429,
306     T_WanderThreshold = 430,
307     T_Week = 431,
308     T_Wildcard = 432,
309     T_Xleave = 433,
310     T_Year = 434,
311     T_Flag = 435,
312     T_EOC = 436,
313     T_Simulate = 437,
314     T_Beep_Delay = 438,
315     T_Sim_Duration = 439,
316     T_Server_Offset = 440,
317     T_Duration = 441,
318     T_Freq_Offset = 442,
319     T_Wander = 443,
320     T_Jitter = 444,
321     T_Prop_Delay = 445,
322     T_Proc_Delay = 446
323   };
324 #endif
325 /* Tokens.  */
326 #define T_Abbrev 258
327 #define T_Age 259
328 #define T_All 260
329 #define T_Allan 261
330 #define T_Allpeers 262
331 #define T_Auth 263
332 #define T_Autokey 264
333 #define T_Automax 265
334 #define T_Average 266
335 #define T_Bclient 267
336 #define T_Beacon 268
337 #define T_Broadcast 269
338 #define T_Broadcastclient 270
339 #define T_Broadcastdelay 271
340 #define T_Burst 272
341 #define T_Calibrate 273
342 #define T_Ceiling 274
343 #define T_Clockstats 275
344 #define T_Cohort 276
345 #define T_ControlKey 277
346 #define T_Crypto 278
347 #define T_Cryptostats 279
348 #define T_Ctl 280
349 #define T_Day 281
350 #define T_Default 282
351 #define T_Digest 283
352 #define T_Disable 284
353 #define T_Discard 285
354 #define T_Dispersion 286
355 #define T_Double 287
356 #define T_Driftfile 288
357 #define T_Drop 289
358 #define T_Ellipsis 290
359 #define T_Enable 291
360 #define T_End 292
361 #define T_False 293
362 #define T_File 294
363 #define T_Filegen 295
364 #define T_Filenum 296
365 #define T_Flag1 297
366 #define T_Flag2 298
367 #define T_Flag3 299
368 #define T_Flag4 300
369 #define T_Flake 301
370 #define T_Floor 302
371 #define T_Freq 303
372 #define T_Fudge 304
373 #define T_Host 305
374 #define T_Huffpuff 306
375 #define T_Iburst 307
376 #define T_Ident 308
377 #define T_Ignore 309
378 #define T_Incalloc 310
379 #define T_Incmem 311
380 #define T_Initalloc 312
381 #define T_Initmem 313
382 #define T_Includefile 314
383 #define T_Integer 315
384 #define T_Interface 316
385 #define T_Intrange 317
386 #define T_Io 318
387 #define T_Ipv4 319
388 #define T_Ipv4_flag 320
389 #define T_Ipv6 321
390 #define T_Ipv6_flag 322
391 #define T_Kernel 323
392 #define T_Key 324
393 #define T_Keys 325
394 #define T_Keysdir 326
395 #define T_Kod 327
396 #define T_Mssntp 328
397 #define T_Leapfile 329
398 #define T_Limited 330
399 #define T_Link 331
400 #define T_Listen 332
401 #define T_Logconfig 333
402 #define T_Logfile 334
403 #define T_Loopstats 335
404 #define T_Lowpriotrap 336
405 #define T_Manycastclient 337
406 #define T_Manycastserver 338
407 #define T_Mask 339
408 #define T_Maxage 340
409 #define T_Maxclock 341
410 #define T_Maxdepth 342
411 #define T_Maxdist 343
412 #define T_Maxmem 344
413 #define T_Maxpoll 345
414 #define T_Mdnstries 346
415 #define T_Mem 347
416 #define T_Memlock 348
417 #define T_Minclock 349
418 #define T_Mindepth 350
419 #define T_Mindist 351
420 #define T_Minimum 352
421 #define T_Minpoll 353
422 #define T_Minsane 354
423 #define T_Mode 355
424 #define T_Mode7 356
425 #define T_Monitor 357
426 #define T_Month 358
427 #define T_Mru 359
428 #define T_Multicastclient 360
429 #define T_Nic 361
430 #define T_Nolink 362
431 #define T_Nomodify 363
432 #define T_Nomrulist 364
433 #define T_None 365
434 #define T_Nonvolatile 366
435 #define T_Nopeer 367
436 #define T_Noquery 368
437 #define T_Noselect 369
438 #define T_Noserve 370
439 #define T_Notrap 371
440 #define T_Notrust 372
441 #define T_Ntp 373
442 #define T_Ntpport 374
443 #define T_NtpSignDsocket 375
444 #define T_Orphan 376
445 #define T_Orphanwait 377
446 #define T_Panic 378
447 #define T_Peer 379
448 #define T_Peerstats 380
449 #define T_Phone 381
450 #define T_Pid 382
451 #define T_Pidfile 383
452 #define T_Pool 384
453 #define T_Port 385
454 #define T_Preempt 386
455 #define T_Prefer 387
456 #define T_Protostats 388
457 #define T_Pw 389
458 #define T_Randfile 390
459 #define T_Rawstats 391
460 #define T_Refid 392
461 #define T_Requestkey 393
462 #define T_Reset 394
463 #define T_Restrict 395
464 #define T_Revoke 396
465 #define T_Rlimit 397
466 #define T_Saveconfigdir 398
467 #define T_Server 399
468 #define T_Setvar 400
469 #define T_Source 401
470 #define T_Stacksize 402
471 #define T_Statistics 403
472 #define T_Stats 404
473 #define T_Statsdir 405
474 #define T_Step 406
475 #define T_Stepback 407
476 #define T_Stepfwd 408
477 #define T_Stepout 409
478 #define T_Stratum 410
479 #define T_String 411
480 #define T_Sys 412
481 #define T_Sysstats 413
482 #define T_Tick 414
483 #define T_Time1 415
484 #define T_Time2 416
485 #define T_Timer 417
486 #define T_Timingstats 418
487 #define T_Tinker 419
488 #define T_Tos 420
489 #define T_Trap 421
490 #define T_True 422
491 #define T_Trustedkey 423
492 #define T_Ttl 424
493 #define T_Type 425
494 #define T_U_int 426
495 #define T_Unconfig 427
496 #define T_Unpeer 428
497 #define T_Version 429
498 #define T_WanderThreshold 430
499 #define T_Week 431
500 #define T_Wildcard 432
501 #define T_Xleave 433
502 #define T_Year 434
503 #define T_Flag 435
504 #define T_EOC 436
505 #define T_Simulate 437
506 #define T_Beep_Delay 438
507 #define T_Sim_Duration 439
508 #define T_Server_Offset 440
509 #define T_Duration 441
510 #define T_Freq_Offset 442
511 #define T_Wander 443
512 #define T_Jitter 444
513 #define T_Prop_Delay 445
514 #define T_Proc_Delay 446
515 
516 /* Value type.  */
517 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
518 typedef union YYSTYPE YYSTYPE;
519 union YYSTYPE
520 {
521 #line 54 "ntp_parser.y" /* yacc.c:355  */
522 
523 	char *			String;
524 	double			Double;
525 	int			Integer;
526 	unsigned		U_int;
527 	gen_fifo *		Generic_fifo;
528 	attr_val *		Attr_val;
529 	attr_val_fifo *		Attr_val_fifo;
530 	int_fifo *		Int_fifo;
531 	string_fifo *		String_fifo;
532 	address_node *		Address_node;
533 	address_fifo *		Address_fifo;
534 	setvar_node *		Set_var;
535 	server_info *		Sim_server;
536 	server_info_fifo *	Sim_server_fifo;
537 	script_info *		Sim_script;
538 	script_info_fifo *	Sim_script_fifo;
539 
540 #line 541 "ntp_parser.c" /* yacc.c:355  */
541 };
542 # define YYSTYPE_IS_TRIVIAL 1
543 # define YYSTYPE_IS_DECLARED 1
544 #endif
545 
546 
547 extern YYSTYPE yylval;
548 
549 int yyparse (struct FILE_INFO *ip_file);
550 
551 #endif /* !YY_YY_Y_TAB_H_INCLUDED  */
552 
553 /* Copy the second part of user declarations.  */
554 
555 #line 556 "ntp_parser.c" /* yacc.c:358  */
556 
557 #ifdef short
558 # undef short
559 #endif
560 
561 #ifdef YYTYPE_UINT8
562 typedef YYTYPE_UINT8 yytype_uint8;
563 #else
564 typedef unsigned char yytype_uint8;
565 #endif
566 
567 #ifdef YYTYPE_INT8
568 typedef YYTYPE_INT8 yytype_int8;
569 #else
570 typedef signed char yytype_int8;
571 #endif
572 
573 #ifdef YYTYPE_UINT16
574 typedef YYTYPE_UINT16 yytype_uint16;
575 #else
576 typedef unsigned short int yytype_uint16;
577 #endif
578 
579 #ifdef YYTYPE_INT16
580 typedef YYTYPE_INT16 yytype_int16;
581 #else
582 typedef short int yytype_int16;
583 #endif
584 
585 #ifndef YYSIZE_T
586 # ifdef __SIZE_TYPE__
587 #  define YYSIZE_T __SIZE_TYPE__
588 # elif defined size_t
589 #  define YYSIZE_T size_t
590 # elif ! defined YYSIZE_T
591 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
592 #  define YYSIZE_T size_t
593 # else
594 #  define YYSIZE_T unsigned int
595 # endif
596 #endif
597 
598 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
599 
600 #ifndef YY_
601 # if defined YYENABLE_NLS && YYENABLE_NLS
602 #  if ENABLE_NLS
603 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
604 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
605 #  endif
606 # endif
607 # ifndef YY_
608 #  define YY_(Msgid) Msgid
609 # endif
610 #endif
611 
612 #ifndef YY_ATTRIBUTE
613 # if (defined __GNUC__                                               \
614       && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
615      || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
616 #  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
617 # else
618 #  define YY_ATTRIBUTE(Spec) /* empty */
619 # endif
620 #endif
621 
622 #ifndef YY_ATTRIBUTE_PURE
623 # define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
624 #endif
625 
626 #ifndef YY_ATTRIBUTE_UNUSED
627 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
628 #endif
629 
630 #if !defined _Noreturn \
631      && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
632 # if defined _MSC_VER && 1200 <= _MSC_VER
633 #  define _Noreturn __declspec (noreturn)
634 # else
635 #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
636 # endif
637 #endif
638 
639 /* Suppress unused-variable warnings by "using" E.  */
640 #if ! defined lint || defined __GNUC__
641 # define YYUSE(E) ((void) (E))
642 #else
643 # define YYUSE(E) /* empty */
644 #endif
645 
646 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
647 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
648 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
649     _Pragma ("GCC diagnostic push") \
650     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
651     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
652 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
653     _Pragma ("GCC diagnostic pop")
654 #else
655 # define YY_INITIAL_VALUE(Value) Value
656 #endif
657 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
658 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
659 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
660 #endif
661 #ifndef YY_INITIAL_VALUE
662 # define YY_INITIAL_VALUE(Value) /* Nothing. */
663 #endif
664 
665 
666 #if ! defined yyoverflow || YYERROR_VERBOSE
667 
668 /* The parser invokes alloca or malloc; define the necessary symbols.  */
669 
670 # ifdef YYSTACK_USE_ALLOCA
671 #  if YYSTACK_USE_ALLOCA
672 #   ifdef __GNUC__
673 #    define YYSTACK_ALLOC __builtin_alloca
674 #   elif defined __BUILTIN_VA_ARG_INCR
675 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
676 #   elif defined _AIX
677 #    define YYSTACK_ALLOC __alloca
678 #   elif defined _MSC_VER
679 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
680 #    define alloca _alloca
681 #   else
682 #    define YYSTACK_ALLOC alloca
683 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
684 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
685       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
686 #     ifndef EXIT_SUCCESS
687 #      define EXIT_SUCCESS 0
688 #     endif
689 #    endif
690 #   endif
691 #  endif
692 # endif
693 
694 # ifdef YYSTACK_ALLOC
695    /* Pacify GCC's 'empty if-body' warning.  */
696 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
697 #  ifndef YYSTACK_ALLOC_MAXIMUM
698     /* The OS might guarantee only one guard page at the bottom of the stack,
699        and a page size can be as small as 4096 bytes.  So we cannot safely
700        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
701        to allow for a few compiler-allocated temporary stack slots.  */
702 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
703 #  endif
704 # else
705 #  define YYSTACK_ALLOC YYMALLOC
706 #  define YYSTACK_FREE YYFREE
707 #  ifndef YYSTACK_ALLOC_MAXIMUM
708 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
709 #  endif
710 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
711        && ! ((defined YYMALLOC || defined malloc) \
712              && (defined YYFREE || defined free)))
713 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
714 #   ifndef EXIT_SUCCESS
715 #    define EXIT_SUCCESS 0
716 #   endif
717 #  endif
718 #  ifndef YYMALLOC
719 #   define YYMALLOC malloc
720 #   if ! defined malloc && ! defined EXIT_SUCCESS
721 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
722 #   endif
723 #  endif
724 #  ifndef YYFREE
725 #   define YYFREE free
726 #   if ! defined free && ! defined EXIT_SUCCESS
727 void free (void *); /* INFRINGES ON USER NAME SPACE */
728 #   endif
729 #  endif
730 # endif
731 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
732 
733 
734 #if (! defined yyoverflow \
735      && (! defined __cplusplus \
736          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
737 
738 /* A type that is properly aligned for any stack member.  */
739 union yyalloc
740 {
741   yytype_int16 yyss_alloc;
742   YYSTYPE yyvs_alloc;
743 };
744 
745 /* The size of the maximum gap between one aligned stack and the next.  */
746 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
747 
748 /* The size of an array large to enough to hold all stacks, each with
749    N elements.  */
750 # define YYSTACK_BYTES(N) \
751      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
752       + YYSTACK_GAP_MAXIMUM)
753 
754 # define YYCOPY_NEEDED 1
755 
756 /* Relocate STACK from its old location to the new one.  The
757    local variables YYSIZE and YYSTACKSIZE give the old and new number of
758    elements in the stack, and YYPTR gives the new location of the
759    stack.  Advance YYPTR to a properly aligned location for the next
760    stack.  */
761 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
762     do                                                                  \
763       {                                                                 \
764         YYSIZE_T yynewbytes;                                            \
765         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
766         Stack = &yyptr->Stack_alloc;                                    \
767         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
768         yyptr += yynewbytes / sizeof (*yyptr);                          \
769       }                                                                 \
770     while (0)
771 
772 #endif
773 
774 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
775 /* Copy COUNT objects from SRC to DST.  The source and destination do
776    not overlap.  */
777 # ifndef YYCOPY
778 #  if defined __GNUC__ && 1 < __GNUC__
779 #   define YYCOPY(Dst, Src, Count) \
780       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
781 #  else
782 #   define YYCOPY(Dst, Src, Count)              \
783       do                                        \
784         {                                       \
785           YYSIZE_T yyi;                         \
786           for (yyi = 0; yyi < (Count); yyi++)   \
787             (Dst)[yyi] = (Src)[yyi];            \
788         }                                       \
789       while (0)
790 #  endif
791 # endif
792 #endif /* !YYCOPY_NEEDED */
793 
794 /* YYFINAL -- State number of the termination state.  */
795 #define YYFINAL  207
796 /* YYLAST -- Last index in YYTABLE.  */
797 #define YYLAST   622
798 
799 /* YYNTOKENS -- Number of terminals.  */
800 #define YYNTOKENS  197
801 /* YYNNTS -- Number of nonterminals.  */
802 #define YYNNTS  104
803 /* YYNRULES -- Number of rules.  */
804 #define YYNRULES  310
805 /* YYNSTATES -- Number of states.  */
806 #define YYNSTATES  415
807 
808 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
809    by yylex, with out-of-bounds checking.  */
810 #define YYUNDEFTOK  2
811 #define YYMAXUTOK   446
812 
813 #define YYTRANSLATE(YYX)                                                \
814   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
815 
816 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
817    as returned by yylex, without out-of-bounds checking.  */
818 static const yytype_uint8 yytranslate[] =
819 {
820        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
821        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
822        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
823        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
824      193,   194,     2,     2,     2,     2,     2,     2,     2,     2,
825        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
826        2,   192,     2,     2,     2,     2,     2,     2,     2,     2,
827        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
828        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
829        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
830        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
831        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
832        2,     2,     2,   195,     2,   196,     2,     2,     2,     2,
833        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
834        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
835        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
836        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
837        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
838        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
839        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
840        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
841        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
842        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
843        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
844        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
845        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
846        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
847       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
848       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
849       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
850       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
851       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
852       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
853       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
854       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
855       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
856      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
857      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
858      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
859      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
860      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
861      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
862      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
863      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
864      185,   186,   187,   188,   189,   190,   191
865 };
866 
867 #if YYDEBUG
868   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
869 static const yytype_uint16 yyrline[] =
870 {
871        0,   366,   366,   370,   371,   372,   386,   387,   388,   389,
872      390,   391,   392,   393,   394,   395,   396,   397,   398,   399,
873      407,   417,   418,   419,   420,   421,   425,   426,   431,   436,
874      438,   444,   445,   453,   454,   455,   459,   464,   465,   466,
875      467,   468,   469,   470,   471,   475,   477,   482,   483,   484,
876      485,   486,   487,   491,   496,   505,   515,   516,   526,   528,
877      530,   532,   543,   550,   552,   557,   559,   561,   563,   565,
878      574,   580,   581,   589,   591,   603,   604,   605,   606,   607,
879      616,   621,   626,   634,   636,   638,   643,   644,   645,   646,
880      647,   648,   652,   653,   654,   655,   664,   666,   675,   685,
881      690,   698,   699,   700,   701,   702,   703,   704,   705,   710,
882      711,   719,   729,   738,   753,   758,   759,   763,   764,   768,
883      769,   770,   771,   772,   773,   774,   783,   787,   791,   799,
884      807,   815,   830,   845,   858,   859,   867,   868,   869,   870,
885      871,   872,   873,   874,   875,   876,   877,   878,   879,   880,
886      881,   885,   890,   898,   903,   904,   905,   909,   914,   922,
887      927,   928,   929,   930,   931,   932,   933,   934,   942,   952,
888      957,   965,   967,   969,   971,   973,   978,   979,   983,   984,
889      985,   986,   994,   999,  1004,  1012,  1017,  1018,  1019,  1028,
890     1030,  1035,  1040,  1048,  1050,  1067,  1068,  1069,  1070,  1071,
891     1072,  1076,  1077,  1085,  1090,  1095,  1103,  1108,  1109,  1110,
892     1111,  1112,  1113,  1114,  1115,  1116,  1117,  1126,  1127,  1128,
893     1135,  1142,  1158,  1177,  1182,  1184,  1186,  1188,  1190,  1197,
894     1202,  1203,  1204,  1208,  1209,  1210,  1214,  1215,  1219,  1226,
895     1236,  1245,  1250,  1252,  1257,  1258,  1266,  1268,  1276,  1281,
896     1289,  1314,  1321,  1331,  1332,  1336,  1337,  1338,  1339,  1343,
897     1344,  1345,  1349,  1354,  1359,  1367,  1368,  1369,  1370,  1371,
898     1372,  1373,  1383,  1388,  1396,  1401,  1409,  1411,  1415,  1420,
899     1425,  1433,  1438,  1446,  1455,  1456,  1460,  1461,  1470,  1488,
900     1492,  1497,  1505,  1510,  1511,  1515,  1520,  1528,  1533,  1538,
901     1543,  1548,  1556,  1561,  1566,  1574,  1579,  1580,  1581,  1582,
902     1583
903 };
904 #endif
905 
906 #if YYDEBUG || YYERROR_VERBOSE || 1
907 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
908    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
909 static const char *const yytname[] =
910 {
911   "$end", "error", "$undefined", "T_Abbrev", "T_Age", "T_All", "T_Allan",
912   "T_Allpeers", "T_Auth", "T_Autokey", "T_Automax", "T_Average",
913   "T_Bclient", "T_Beacon", "T_Broadcast", "T_Broadcastclient",
914   "T_Broadcastdelay", "T_Burst", "T_Calibrate", "T_Ceiling",
915   "T_Clockstats", "T_Cohort", "T_ControlKey", "T_Crypto", "T_Cryptostats",
916   "T_Ctl", "T_Day", "T_Default", "T_Digest", "T_Disable", "T_Discard",
917   "T_Dispersion", "T_Double", "T_Driftfile", "T_Drop", "T_Ellipsis",
918   "T_Enable", "T_End", "T_False", "T_File", "T_Filegen", "T_Filenum",
919   "T_Flag1", "T_Flag2", "T_Flag3", "T_Flag4", "T_Flake", "T_Floor",
920   "T_Freq", "T_Fudge", "T_Host", "T_Huffpuff", "T_Iburst", "T_Ident",
921   "T_Ignore", "T_Incalloc", "T_Incmem", "T_Initalloc", "T_Initmem",
922   "T_Includefile", "T_Integer", "T_Interface", "T_Intrange", "T_Io",
923   "T_Ipv4", "T_Ipv4_flag", "T_Ipv6", "T_Ipv6_flag", "T_Kernel", "T_Key",
924   "T_Keys", "T_Keysdir", "T_Kod", "T_Mssntp", "T_Leapfile", "T_Limited",
925   "T_Link", "T_Listen", "T_Logconfig", "T_Logfile", "T_Loopstats",
926   "T_Lowpriotrap", "T_Manycastclient", "T_Manycastserver", "T_Mask",
927   "T_Maxage", "T_Maxclock", "T_Maxdepth", "T_Maxdist", "T_Maxmem",
928   "T_Maxpoll", "T_Mdnstries", "T_Mem", "T_Memlock", "T_Minclock",
929   "T_Mindepth", "T_Mindist", "T_Minimum", "T_Minpoll", "T_Minsane",
930   "T_Mode", "T_Mode7", "T_Monitor", "T_Month", "T_Mru",
931   "T_Multicastclient", "T_Nic", "T_Nolink", "T_Nomodify", "T_Nomrulist",
932   "T_None", "T_Nonvolatile", "T_Nopeer", "T_Noquery", "T_Noselect",
933   "T_Noserve", "T_Notrap", "T_Notrust", "T_Ntp", "T_Ntpport",
934   "T_NtpSignDsocket", "T_Orphan", "T_Orphanwait", "T_Panic", "T_Peer",
935   "T_Peerstats", "T_Phone", "T_Pid", "T_Pidfile", "T_Pool", "T_Port",
936   "T_Preempt", "T_Prefer", "T_Protostats", "T_Pw", "T_Randfile",
937   "T_Rawstats", "T_Refid", "T_Requestkey", "T_Reset", "T_Restrict",
938   "T_Revoke", "T_Rlimit", "T_Saveconfigdir", "T_Server", "T_Setvar",
939   "T_Source", "T_Stacksize", "T_Statistics", "T_Stats", "T_Statsdir",
940   "T_Step", "T_Stepback", "T_Stepfwd", "T_Stepout", "T_Stratum",
941   "T_String", "T_Sys", "T_Sysstats", "T_Tick", "T_Time1", "T_Time2",
942   "T_Timer", "T_Timingstats", "T_Tinker", "T_Tos", "T_Trap", "T_True",
943   "T_Trustedkey", "T_Ttl", "T_Type", "T_U_int", "T_Unconfig", "T_Unpeer",
944   "T_Version", "T_WanderThreshold", "T_Week", "T_Wildcard", "T_Xleave",
945   "T_Year", "T_Flag", "T_EOC", "T_Simulate", "T_Beep_Delay",
946   "T_Sim_Duration", "T_Server_Offset", "T_Duration", "T_Freq_Offset",
947   "T_Wander", "T_Jitter", "T_Prop_Delay", "T_Proc_Delay", "'='", "'('",
948   "')'", "'{'", "'}'", "$accept", "configuration", "command_list",
949   "command", "server_command", "client_type", "address", "ip_address",
950   "address_fam", "option_list", "option", "option_flag",
951   "option_flag_keyword", "option_int", "option_int_keyword", "option_str",
952   "option_str_keyword", "unpeer_command", "unpeer_keyword",
953   "other_mode_command", "authentication_command", "crypto_command_list",
954   "crypto_command", "crypto_str_keyword", "orphan_mode_command",
955   "tos_option_list", "tos_option", "tos_option_int_keyword",
956   "tos_option_dbl_keyword", "monitoring_command", "stats_list", "stat",
957   "filegen_option_list", "filegen_option", "link_nolink", "enable_disable",
958   "filegen_type", "access_control_command", "ac_flag_list",
959   "access_control_flag", "discard_option_list", "discard_option",
960   "discard_option_keyword", "mru_option_list", "mru_option",
961   "mru_option_keyword", "fudge_command", "fudge_factor_list",
962   "fudge_factor", "fudge_factor_dbl_keyword", "fudge_factor_bool_keyword",
963   "rlimit_command", "rlimit_option_list", "rlimit_option",
964   "rlimit_option_keyword", "system_option_command", "system_option_list",
965   "system_option", "system_option_flag_keyword",
966   "system_option_local_flag_keyword", "tinker_command",
967   "tinker_option_list", "tinker_option", "tinker_option_keyword",
968   "miscellaneous_command", "misc_cmd_dbl_keyword", "misc_cmd_str_keyword",
969   "misc_cmd_str_lcl_keyword", "drift_parm", "variable_assign",
970   "t_default_or_zero", "trap_option_list", "trap_option",
971   "log_config_list", "log_config_command", "interface_command",
972   "interface_nic", "nic_rule_class", "nic_rule_action", "reset_command",
973   "counter_set_list", "counter_set_keyword", "integer_list",
974   "integer_list_range", "integer_list_range_elt", "integer_range",
975   "string_list", "address_list", "boolean", "number", "simulate_command",
976   "sim_conf_start", "sim_init_statement_list", "sim_init_statement",
977   "sim_init_keyword", "sim_server_list", "sim_server", "sim_server_offset",
978   "sim_server_name", "sim_act_list", "sim_act", "sim_act_stmt_list",
979   "sim_act_stmt", "sim_act_keyword", YY_NULLPTR
980 };
981 #endif
982 
983 # ifdef YYPRINT
984 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
985    (internal) symbol number NUM (which must be that of a token).  */
986 static const yytype_uint16 yytoknum[] =
987 {
988        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
989      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
990      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
991      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
992      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
993      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
994      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
995      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
996      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
997      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
998      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
999      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
1000      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
1001      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
1002      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
1003      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
1004      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
1005      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
1006      435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
1007      445,   446,    61,    40,    41,   123,   125
1008 };
1009 # endif
1010 
1011 #define YYPACT_NINF -182
1012 
1013 #define yypact_value_is_default(Yystate) \
1014   (!!((Yystate) == (-182)))
1015 
1016 #define YYTABLE_NINF -7
1017 
1018 #define yytable_value_is_error(Yytable_value) \
1019   0
1020 
1021   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1022      STATE-NUM.  */
1023 static const yytype_int16 yypact[] =
1024 {
1025       18,  -161,   -18,  -182,  -182,  -182,   -10,  -182,   189,    11,
1026     -103,   189,  -182,     7,   -49,  -182,  -100,  -182,   -97,   -90,
1027     -182,   -84,  -182,  -182,   -49,    13,   365,   -49,  -182,  -182,
1028      -81,  -182,   -80,  -182,  -182,    20,    86,   104,    21,   -33,
1029     -182,  -182,   -73,     7,   -72,  -182,    51,   500,   -71,   -54,
1030       26,  -182,  -182,  -182,    90,   205,   -83,  -182,   -49,  -182,
1031      -49,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,
1032     -182,    -8,   -65,   -51,  -182,    -9,  -182,  -182,   -91,  -182,
1033     -182,  -182,   -15,  -182,  -182,  -182,  -182,  -182,  -182,  -182,
1034     -182,   189,  -182,  -182,  -182,  -182,  -182,  -182,    11,  -182,
1035       46,    85,  -182,   189,  -182,  -182,  -182,  -182,  -182,  -182,
1036     -182,  -182,  -182,  -182,  -182,  -182,    92,  -182,   -35,   366,
1037     -182,  -182,  -182,   -84,  -182,  -182,   -49,  -182,  -182,  -182,
1038     -182,  -182,  -182,  -182,  -182,  -182,   365,  -182,    68,   -49,
1039     -182,  -182,   -23,  -182,  -182,  -182,  -182,  -182,  -182,  -182,
1040     -182,    86,  -182,  -182,   114,   121,  -182,  -182,    67,  -182,
1041     -182,  -182,  -182,   -33,  -182,    93,   -28,  -182,     7,  -182,
1042     -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,
1043     -182,    51,  -182,    -8,  -182,  -182,   -17,  -182,  -182,  -182,
1044     -182,  -182,  -182,  -182,  -182,   500,  -182,   107,    -8,  -182,
1045     -182,   112,   -54,  -182,  -182,  -182,   113,  -182,     8,  -182,
1046     -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,
1047       -2,  -147,  -182,  -182,  -182,  -182,  -182,   128,  -182,    25,
1048     -182,  -182,  -182,  -182,   116,    37,  -182,  -182,  -182,  -182,
1049       38,   135,  -182,  -182,    92,  -182,    -8,   -17,  -182,  -182,
1050     -182,  -182,  -182,  -182,  -182,  -182,   445,  -182,  -182,   445,
1051      445,   -71,  -182,  -182,    40,  -182,  -182,  -182,  -182,  -182,
1052     -182,  -182,  -182,  -182,  -182,   -52,   163,  -182,  -182,  -182,
1053      261,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -114,
1054       27,    14,  -182,  -182,  -182,  -182,    55,  -182,  -182,     0,
1055     -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,
1056     -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,
1057     -182,  -182,  -182,  -182,  -182,   445,   445,  -182,   185,   -71,
1058      153,  -182,   156,  -182,  -182,  -182,  -182,  -182,  -182,  -182,
1059     -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,
1060     -182,  -182,   -53,  -182,    61,    30,    43,  -133,  -182,    23,
1061     -182,    -8,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,
1062     -182,   445,  -182,  -182,  -182,  -182,    32,  -182,  -182,  -182,
1063      -49,  -182,  -182,  -182,    45,  -182,  -182,  -182,    41,    50,
1064       -8,    47,  -157,  -182,    56,    -8,  -182,  -182,  -182,    49,
1065      130,  -182,  -182,  -182,  -182,  -182,   110,    59,    54,  -182,
1066       70,  -182,    -8,  -182,  -182
1067 };
1068 
1069   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1070      Performed when YYTABLE does not specify something else to do.  Zero
1071      means the default is an error.  */
1072 static const yytype_uint16 yydefact[] =
1073 {
1074        0,     0,     0,    24,    58,   230,     0,    71,     0,     0,
1075      240,     0,   223,     0,     0,   233,     0,   253,     0,     0,
1076      234,     0,   236,    25,     0,     0,     0,     0,   254,   231,
1077        0,    23,     0,   235,    22,     0,     0,     0,     0,     0,
1078      237,    21,     0,     0,     0,   232,     0,     0,     0,     0,
1079        0,    56,    57,   289,     0,     2,     0,     7,     0,     8,
1080        0,     9,    10,    13,    11,    12,    14,    15,    16,    17,
1081       18,     0,     0,     0,   217,     0,   218,    19,     0,     5,
1082       62,    63,    64,   195,   196,   197,   198,   201,   199,   200,
1083      202,   190,   192,   193,   194,   154,   155,   156,   126,   152,
1084        0,   238,   224,   189,   101,   102,   103,   104,   108,   105,
1085      106,   107,   109,    29,    30,    28,     0,    26,     0,     6,
1086       65,    66,   250,   225,   249,   282,    59,    61,   160,   161,
1087      162,   163,   164,   165,   166,   167,   127,   158,     0,    60,
1088       70,   280,   226,    67,   265,   266,   267,   268,   269,   270,
1089      271,   262,   264,   134,    29,    30,   134,   134,    26,    68,
1090      188,   186,   187,   182,   184,     0,     0,   227,    96,   100,
1091       97,   207,   208,   209,   210,   211,   212,   213,   214,   215,
1092      216,   203,   205,     0,    91,    86,     0,    87,    95,    93,
1093       94,    92,    90,    88,    89,    80,    82,     0,     0,   244,
1094      276,     0,    69,   275,   277,   273,   229,     1,     0,     4,
1095       31,    55,   287,   286,   219,   220,   221,   261,   260,   259,
1096        0,     0,    79,    75,    76,    77,    78,     0,    72,     0,
1097      191,   151,   153,   239,    98,     0,   178,   179,   180,   181,
1098        0,     0,   176,   177,   168,   170,     0,     0,    27,   222,
1099      248,   281,   157,   159,   279,   263,   130,   134,   134,   133,
1100      128,     0,   183,   185,     0,    99,   204,   206,   285,   283,
1101      284,    85,    81,    83,    84,   228,     0,   274,   272,     3,
1102       20,   255,   256,   257,   252,   258,   251,   293,   294,     0,
1103        0,     0,    74,    73,   118,   117,     0,   115,   116,     0,
1104      110,   113,   114,   174,   175,   173,   169,   171,   172,   136,
1105      137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
1106      147,   148,   149,   150,   135,   131,   132,   134,   243,     0,
1107        0,   245,     0,    37,    38,    39,    54,    47,    49,    48,
1108       51,    40,    41,    42,    43,    50,    52,    44,    32,    33,
1109       36,    34,     0,    35,     0,     0,     0,     0,   296,     0,
1110      291,     0,   111,   125,   121,   123,   119,   120,   122,   124,
1111      112,   129,   242,   241,   247,   246,     0,    45,    46,    53,
1112        0,   290,   288,   295,     0,   292,   278,   299,     0,     0,
1113        0,     0,     0,   301,     0,     0,   297,   300,   298,     0,
1114        0,   306,   307,   308,   309,   310,     0,     0,     0,   302,
1115        0,   304,     0,   303,   305
1116 };
1117 
1118   /* YYPGOTO[NTERM-NUM].  */
1119 static const yytype_int16 yypgoto[] =
1120 {
1121     -182,  -182,  -182,   -45,  -182,  -182,   -14,   -36,  -182,  -182,
1122     -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,
1123     -182,  -182,  -182,  -182,  -182,  -182,    60,  -182,  -182,  -182,
1124     -182,   -38,  -182,  -182,  -182,  -182,  -182,  -182,  -142,  -182,
1125     -182,   134,  -182,  -182,   120,  -182,  -182,  -182,     5,  -182,
1126     -182,  -182,  -182,    96,  -182,  -182,   250,   -42,  -182,  -182,
1127     -182,  -182,    81,  -182,  -182,  -182,  -182,  -182,  -182,  -182,
1128     -182,  -182,  -182,  -182,   140,  -182,  -182,  -182,  -182,  -182,
1129     -182,   117,  -182,  -182,    63,  -182,  -182,   240,    22,  -181,
1130     -182,  -182,  -182,   -16,  -182,  -182,   -86,  -182,  -182,  -182,
1131     -120,  -182,  -132,  -182
1132 };
1133 
1134   /* YYDEFGOTO[NTERM-NUM].  */
1135 static const yytype_int16 yydefgoto[] =
1136 {
1137       -1,    54,    55,    56,    57,    58,   125,   117,   118,   280,
1138      348,   349,   350,   351,   352,   353,   354,    59,    60,    61,
1139       62,    82,   228,   229,    63,   195,   196,   197,   198,    64,
1140      168,   112,   234,   300,   301,   302,   370,    65,   256,   324,
1141       98,    99,   100,   136,   137,   138,    66,   244,   245,   246,
1142      247,    67,   163,   164,   165,    68,    91,    92,    93,    94,
1143       69,   181,   182,   183,    70,    71,    72,    73,   102,   167,
1144      373,   275,   331,   123,   124,    74,    75,   286,   220,    76,
1145      151,   152,   206,   202,   203,   204,   142,   126,   271,   214,
1146       77,    78,   289,   290,   291,   357,   358,   389,   359,   392,
1147      393,   406,   407,   408
1148 };
1149 
1150   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
1151      positive, shift that token.  If negative, reduce the rule whose
1152      number is the opposite.  If YYTABLE_NINF, syntax error.  */
1153 static const yytype_int16 yytable[] =
1154 {
1155      116,   158,   267,   281,   363,   169,   200,   377,   160,   329,
1156      208,   355,   199,   222,   259,   260,   113,   274,   114,     1,
1157       79,   268,    95,   157,   212,   217,   364,   104,     2,   391,
1158      355,   105,     3,     4,     5,   223,   287,   288,   224,   396,
1159        6,     7,    80,   269,   210,   218,   211,     8,     9,   230,
1160       81,    10,   213,   101,    11,    12,   119,   171,    13,   120,
1161      161,   230,   282,   382,   283,   307,   121,    14,   219,   287,
1162      288,    15,   122,   127,   249,   140,   141,    16,   330,    17,
1163      143,   159,   172,   166,   170,   115,   205,   106,    18,    19,
1164      207,   215,    20,   144,   145,   235,    21,    22,   209,   173,
1165       23,    24,   174,   365,   221,   216,   232,   115,    96,    25,
1166      366,   146,   251,    97,   162,   325,   326,   233,   378,   225,
1167      226,   248,    26,    27,    28,   251,   227,   367,   253,    29,
1168      265,   153,   107,   254,   236,   237,   238,   239,    30,   201,
1169      108,   257,    31,   109,    32,   294,    33,    34,   258,   147,
1170      270,   261,   295,   263,   284,   296,    35,    36,    37,    38,
1171       39,    40,    41,    42,   264,   110,    43,   273,    44,   154,
1172      111,   155,   276,   278,   175,   285,   368,    45,   148,   369,
1173      385,   293,    46,    47,    48,   371,    49,    50,   292,   279,
1174       51,    52,   297,   303,   304,   305,   328,    83,   332,    -6,
1175       53,    84,   176,   177,   178,   179,   361,    85,   360,   394,
1176      180,   362,   372,   375,   399,     2,   376,   379,   384,     3,
1177        4,     5,   380,   298,   381,   327,   386,     6,     7,   240,
1178      388,   414,   231,   390,     8,     9,   391,   398,    10,   395,
1179      411,    11,    12,   149,   400,    13,   412,   241,   150,   306,
1180      156,   413,   242,   243,    14,   272,   252,    86,    15,   262,
1181      115,   103,   266,   250,    16,   277,    17,   139,   255,   308,
1182      333,   383,   397,   356,   410,    18,    19,     0,   334,    20,
1183        0,     0,     0,    21,    22,     0,   299,    23,    24,     0,
1184       87,    88,     0,   374,     0,     0,    25,   401,   402,   403,
1185      404,   405,     0,     0,     0,     0,   409,    89,     0,    26,
1186       27,    28,     0,   335,   336,     0,    29,   401,   402,   403,
1187      404,   405,     0,     0,     0,    30,     0,     0,     0,    31,
1188      337,    32,     0,    33,    34,     0,     0,     0,    90,     0,
1189        0,     0,     0,    35,    36,    37,    38,    39,    40,    41,
1190       42,   338,     0,    43,     0,    44,     0,     0,     0,   339,
1191        0,   340,     0,     0,    45,     0,   387,     0,     0,    46,
1192       47,    48,     0,    49,    50,   341,     2,    51,    52,     0,
1193        3,     4,     5,     0,     0,     0,    -6,    53,     6,     7,
1194        0,     0,   342,   343,     0,     8,     9,     0,     0,    10,
1195        0,     0,    11,    12,     0,     0,    13,     0,     0,     0,
1196        0,     0,     0,     0,     0,    14,     0,     0,     0,    15,
1197      128,   129,   130,   131,     0,    16,     0,    17,   344,     0,
1198      345,     0,     0,     0,     0,   346,    18,    19,     0,   347,
1199       20,     0,     0,     0,    21,    22,     0,     0,    23,    24,
1200      132,     0,   133,     0,   134,     0,     0,    25,     0,     0,
1201      135,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1202       26,    27,    28,     0,     0,     0,     0,    29,     0,     0,
1203        0,     0,     0,     0,     0,     0,    30,     0,     0,     0,
1204       31,   309,    32,     0,    33,    34,     0,     0,     0,   310,
1205        0,     0,     0,     0,    35,    36,    37,    38,    39,    40,
1206       41,    42,     0,   184,    43,     0,    44,   311,   312,   185,
1207      313,   186,     0,     0,     0,    45,   314,     0,     0,     0,
1208       46,    47,    48,     0,    49,    50,     0,     0,    51,    52,
1209        0,     0,     0,     0,     0,     0,     0,   187,    53,     0,
1210        0,     0,     0,   315,   316,     0,     0,   317,   318,     0,
1211      319,   320,   321,     0,   322,     0,     0,     0,     0,     0,
1212        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1213        0,     0,     0,     0,     0,     0,   188,     0,   189,     0,
1214        0,     0,     0,     0,   190,     0,   191,     0,     0,   192,
1215        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1216        0,     0,     0,     0,     0,     0,     0,     0,     0,   323,
1217        0,   193,   194
1218 };
1219 
1220 static const yytype_int16 yycheck[] =
1221 {
1222       14,    37,   183,     5,     4,    43,    60,    60,    41,    61,
1223       55,   144,    48,    28,   156,   157,    65,   198,    67,     1,
1224      181,    38,    11,    37,    32,    34,    26,    20,    10,   186,
1225      144,    24,    14,    15,    16,    50,   183,   184,    53,   196,
1226       22,    23,    60,    60,    58,    54,    60,    29,    30,    91,
1227       60,    33,    60,   156,    36,    37,   156,     6,    40,   156,
1228       93,   103,    64,   196,    66,   246,   156,    49,    77,   183,
1229      184,    53,   156,    60,   119,   156,   156,    59,   130,    61,
1230       60,    60,    31,   156,   156,   156,    60,    80,    70,    71,
1231        0,   156,    74,     7,     8,     3,    78,    79,   181,    48,
1232       82,    83,    51,   103,   195,   156,    60,   156,    97,    91,
1233      110,    25,   126,   102,   147,   257,   258,    32,   171,   134,
1234      135,   156,   104,   105,   106,   139,   141,   127,    60,   111,
1235      168,    27,   125,   156,    42,    43,    44,    45,   120,   193,
1236      133,    27,   124,   136,   126,    29,   128,   129,    27,    63,
1237      167,    84,    36,    60,   156,    39,   138,   139,   140,   141,
1238      142,   143,   144,   145,   192,   158,   148,    60,   150,    65,
1239      163,    67,    60,    60,   123,   177,   176,   159,    92,   179,
1240      361,   156,   164,   165,   166,   327,   168,   169,    60,   181,
1241      172,   173,    76,   156,   156,    60,   156,     8,    35,   181,
1242      182,    12,   151,   152,   153,   154,   192,    18,   181,   390,
1243      159,   156,    27,    60,   395,    10,    60,   156,   195,    14,
1244       15,    16,   192,   107,   181,   261,   194,    22,    23,   137,
1245      185,   412,    98,   192,    29,    30,   186,   181,    33,   192,
1246      181,    36,    37,   157,   195,    40,   192,   155,   162,   244,
1247      146,   181,   160,   161,    49,   195,   136,    68,    53,   163,
1248      156,    11,   181,   123,    59,   202,    61,    27,   151,   247,
1249        9,   357,   392,   289,   406,    70,    71,    -1,    17,    74,
1250       -1,    -1,    -1,    78,    79,    -1,   170,    82,    83,    -1,
1251      101,   102,    -1,   329,    -1,    -1,    91,   187,   188,   189,
1252      190,   191,    -1,    -1,    -1,    -1,   196,   118,    -1,   104,
1253      105,   106,    -1,    52,    53,    -1,   111,   187,   188,   189,
1254      190,   191,    -1,    -1,    -1,   120,    -1,    -1,    -1,   124,
1255       69,   126,    -1,   128,   129,    -1,    -1,    -1,   149,    -1,
1256       -1,    -1,    -1,   138,   139,   140,   141,   142,   143,   144,
1257      145,    90,    -1,   148,    -1,   150,    -1,    -1,    -1,    98,
1258       -1,   100,    -1,    -1,   159,    -1,   380,    -1,    -1,   164,
1259      165,   166,    -1,   168,   169,   114,    10,   172,   173,    -1,
1260       14,    15,    16,    -1,    -1,    -1,   181,   182,    22,    23,
1261       -1,    -1,   131,   132,    -1,    29,    30,    -1,    -1,    33,
1262       -1,    -1,    36,    37,    -1,    -1,    40,    -1,    -1,    -1,
1263       -1,    -1,    -1,    -1,    -1,    49,    -1,    -1,    -1,    53,
1264       55,    56,    57,    58,    -1,    59,    -1,    61,   167,    -1,
1265      169,    -1,    -1,    -1,    -1,   174,    70,    71,    -1,   178,
1266       74,    -1,    -1,    -1,    78,    79,    -1,    -1,    82,    83,
1267       85,    -1,    87,    -1,    89,    -1,    -1,    91,    -1,    -1,
1268       95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1269      104,   105,   106,    -1,    -1,    -1,    -1,   111,    -1,    -1,
1270       -1,    -1,    -1,    -1,    -1,    -1,   120,    -1,    -1,    -1,
1271      124,    46,   126,    -1,   128,   129,    -1,    -1,    -1,    54,
1272       -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,   143,
1273      144,   145,    -1,    13,   148,    -1,   150,    72,    73,    19,
1274       75,    21,    -1,    -1,    -1,   159,    81,    -1,    -1,    -1,
1275      164,   165,   166,    -1,   168,   169,    -1,    -1,   172,   173,
1276       -1,    -1,    -1,    -1,    -1,    -1,    -1,    47,   182,    -1,
1277       -1,    -1,    -1,   108,   109,    -1,    -1,   112,   113,    -1,
1278      115,   116,   117,    -1,   119,    -1,    -1,    -1,    -1,    -1,
1279       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1280       -1,    -1,    -1,    -1,    -1,    -1,    86,    -1,    88,    -1,
1281       -1,    -1,    -1,    -1,    94,    -1,    96,    -1,    -1,    99,
1282       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1283       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   174,
1284       -1,   121,   122
1285 };
1286 
1287   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1288      symbol of state STATE-NUM.  */
1289 static const yytype_uint16 yystos[] =
1290 {
1291        0,     1,    10,    14,    15,    16,    22,    23,    29,    30,
1292       33,    36,    37,    40,    49,    53,    59,    61,    70,    71,
1293       74,    78,    79,    82,    83,    91,   104,   105,   106,   111,
1294      120,   124,   126,   128,   129,   138,   139,   140,   141,   142,
1295      143,   144,   145,   148,   150,   159,   164,   165,   166,   168,
1296      169,   172,   173,   182,   198,   199,   200,   201,   202,   214,
1297      215,   216,   217,   221,   226,   234,   243,   248,   252,   257,
1298      261,   262,   263,   264,   272,   273,   276,   287,   288,   181,
1299       60,    60,   218,     8,    12,    18,    68,   101,   102,   118,
1300      149,   253,   254,   255,   256,    11,    97,   102,   237,   238,
1301      239,   156,   265,   253,    20,    24,    80,   125,   133,   136,
1302      158,   163,   228,    65,    67,   156,   203,   204,   205,   156,
1303      156,   156,   156,   270,   271,   203,   284,    60,    55,    56,
1304       57,    58,    85,    87,    89,    95,   240,   241,   242,   284,
1305      156,   156,   283,    60,     7,     8,    25,    63,    92,   157,
1306      162,   277,   278,    27,    65,    67,   146,   203,   204,    60,
1307       41,    93,   147,   249,   250,   251,   156,   266,   227,   228,
1308      156,     6,    31,    48,    51,   123,   151,   152,   153,   154,
1309      159,   258,   259,   260,    13,    19,    21,    47,    86,    88,
1310       94,    96,    99,   121,   122,   222,   223,   224,   225,   204,
1311       60,   193,   280,   281,   282,    60,   279,     0,   200,   181,
1312      203,   203,    32,    60,   286,   156,   156,    34,    54,    77,
1313      275,   195,    28,    50,    53,   134,   135,   141,   219,   220,
1314      254,   238,    60,    32,   229,     3,    42,    43,    44,    45,
1315      137,   155,   160,   161,   244,   245,   246,   247,   156,   200,
1316      271,   203,   241,    60,   156,   278,   235,    27,    27,   235,
1317      235,    84,   250,    60,   192,   228,   259,   286,    38,    60,
1318      167,   285,   223,    60,   286,   268,    60,   281,    60,   181,
1319      206,     5,    64,    66,   156,   177,   274,   183,   184,   289,
1320      290,   291,    60,   156,    29,    36,    39,    76,   107,   170,
1321      230,   231,   232,   156,   156,    60,   245,   286,   285,    46,
1322       54,    72,    73,    75,    81,   108,   109,   112,   113,   115,
1323      116,   117,   119,   174,   236,   235,   235,   204,   156,    61,
1324      130,   269,    35,     9,    17,    52,    53,    69,    90,    98,
1325      100,   114,   131,   132,   167,   169,   174,   178,   207,   208,
1326      209,   210,   211,   212,   213,   144,   290,   292,   293,   295,
1327      181,   192,   156,     4,    26,   103,   110,   127,   176,   179,
1328      233,   235,    27,   267,   204,    60,    60,    60,   171,   156,
1329      192,   181,   196,   293,   195,   286,   194,   203,   185,   294,
1330      192,   186,   296,   297,   286,   192,   196,   297,   181,   286,
1331      195,   187,   188,   189,   190,   191,   298,   299,   300,   196,
1332      299,   181,   192,   181,   286
1333 };
1334 
1335   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1336 static const yytype_uint16 yyr1[] =
1337 {
1338        0,   197,   198,   199,   199,   199,   200,   200,   200,   200,
1339      200,   200,   200,   200,   200,   200,   200,   200,   200,   200,
1340      201,   202,   202,   202,   202,   202,   203,   203,   204,   205,
1341      205,   206,   206,   207,   207,   207,   208,   209,   209,   209,
1342      209,   209,   209,   209,   209,   210,   210,   211,   211,   211,
1343      211,   211,   211,   212,   213,   214,   215,   215,   216,   216,
1344      216,   216,   217,   217,   217,   217,   217,   217,   217,   217,
1345      217,   218,   218,   219,   219,   220,   220,   220,   220,   220,
1346      221,   222,   222,   223,   223,   223,   224,   224,   224,   224,
1347      224,   224,   225,   225,   225,   225,   226,   226,   226,   227,
1348      227,   228,   228,   228,   228,   228,   228,   228,   228,   229,
1349      229,   230,   230,   230,   230,   231,   231,   232,   232,   233,
1350      233,   233,   233,   233,   233,   233,   234,   234,   234,   234,
1351      234,   234,   234,   234,   235,   235,   236,   236,   236,   236,
1352      236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
1353      236,   237,   237,   238,   239,   239,   239,   240,   240,   241,
1354      242,   242,   242,   242,   242,   242,   242,   242,   243,   244,
1355      244,   245,   245,   245,   245,   245,   246,   246,   247,   247,
1356      247,   247,   248,   249,   249,   250,   251,   251,   251,   252,
1357      252,   253,   253,   254,   254,   255,   255,   255,   255,   255,
1358      255,   256,   256,   257,   258,   258,   259,   260,   260,   260,
1359      260,   260,   260,   260,   260,   260,   260,   261,   261,   261,
1360      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
1361      262,   262,   262,   263,   263,   263,   264,   264,   265,   265,
1362      265,   266,   267,   267,   268,   268,   269,   269,   270,   270,
1363      271,   272,   272,   273,   273,   274,   274,   274,   274,   275,
1364      275,   275,   276,   277,   277,   278,   278,   278,   278,   278,
1365      278,   278,   279,   279,   280,   280,   281,   281,   282,   283,
1366      283,   284,   284,   285,   285,   285,   286,   286,   287,   288,
1367      289,   289,   290,   291,   291,   292,   292,   293,   294,   295,
1368      296,   296,   297,   298,   298,   299,   300,   300,   300,   300,
1369      300
1370 };
1371 
1372   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
1373 static const yytype_uint8 yyr2[] =
1374 {
1375        0,     2,     1,     3,     2,     2,     0,     1,     1,     1,
1376        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1377        3,     1,     1,     1,     1,     1,     1,     2,     1,     1,
1378        1,     0,     2,     1,     1,     1,     1,     1,     1,     1,
1379        1,     1,     1,     1,     1,     2,     2,     1,     1,     1,
1380        1,     1,     1,     2,     1,     2,     1,     1,     1,     2,
1381        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1382        2,     0,     2,     2,     2,     1,     1,     1,     1,     1,
1383        2,     2,     1,     2,     2,     2,     1,     1,     1,     1,
1384        1,     1,     1,     1,     1,     1,     2,     2,     3,     2,
1385        1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
1386        2,     2,     2,     1,     1,     1,     1,     1,     1,     1,
1387        1,     1,     1,     1,     1,     1,     2,     2,     3,     5,
1388        3,     4,     4,     3,     0,     2,     1,     1,     1,     1,
1389        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1390        1,     2,     1,     2,     1,     1,     1,     2,     1,     2,
1391        1,     1,     1,     1,     1,     1,     1,     1,     3,     2,
1392        1,     2,     2,     2,     2,     2,     1,     1,     1,     1,
1393        1,     1,     2,     2,     1,     2,     1,     1,     1,     2,
1394        2,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1395        1,     1,     1,     2,     2,     1,     2,     1,     1,     1,
1396        1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
1397        2,     2,     3,     1,     2,     2,     2,     2,     3,     2,
1398        1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
1399        0,     4,     1,     0,     0,     2,     2,     2,     2,     1,
1400        1,     3,     3,     1,     1,     1,     1,     1,     1,     1,
1401        1,     1,     2,     2,     1,     1,     1,     1,     1,     1,
1402        1,     1,     2,     1,     2,     1,     1,     1,     5,     2,
1403        1,     2,     1,     1,     1,     1,     1,     1,     5,     1,
1404        3,     2,     3,     1,     1,     2,     1,     5,     4,     3,
1405        2,     1,     6,     3,     2,     3,     1,     1,     1,     1,
1406        1
1407 };
1408 
1409 
1410 #define yyerrok         (yyerrstatus = 0)
1411 #define yyclearin       (yychar = YYEMPTY)
1412 #define YYEMPTY         (-2)
1413 #define YYEOF           0
1414 
1415 #define YYACCEPT        goto yyacceptlab
1416 #define YYABORT         goto yyabortlab
1417 #define YYERROR         goto yyerrorlab
1418 
1419 
1420 #define YYRECOVERING()  (!!yyerrstatus)
1421 
1422 #define YYBACKUP(Token, Value)                                  \
1423 do                                                              \
1424   if (yychar == YYEMPTY)                                        \
1425     {                                                           \
1426       yychar = (Token);                                         \
1427       yylval = (Value);                                         \
1428       YYPOPSTACK (yylen);                                       \
1429       yystate = *yyssp;                                         \
1430       goto yybackup;                                            \
1431     }                                                           \
1432   else                                                          \
1433     {                                                           \
1434       yyerror (ip_file, YY_("syntax error: cannot back up")); \
1435       YYERROR;                                                  \
1436     }                                                           \
1437 while (0)
1438 
1439 /* Error token number */
1440 #define YYTERROR        1
1441 #define YYERRCODE       256
1442 
1443 
1444 
1445 /* Enable debugging if requested.  */
1446 #if YYDEBUG
1447 
1448 # ifndef YYFPRINTF
1449 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1450 #  define YYFPRINTF fprintf
1451 # endif
1452 
1453 # define YYDPRINTF(Args)                        \
1454 do {                                            \
1455   if (yydebug)                                  \
1456     YYFPRINTF Args;                             \
1457 } while (0)
1458 
1459 /* This macro is provided for backward compatibility. */
1460 #ifndef YY_LOCATION_PRINT
1461 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1462 #endif
1463 
1464 
1465 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
1466 do {                                                                      \
1467   if (yydebug)                                                            \
1468     {                                                                     \
1469       YYFPRINTF (stderr, "%s ", Title);                                   \
1470       yy_symbol_print (stderr,                                            \
1471                   Type, Value, ip_file); \
1472       YYFPRINTF (stderr, "\n");                                           \
1473     }                                                                     \
1474 } while (0)
1475 
1476 
1477 /*----------------------------------------.
1478 | Print this symbol's value on YYOUTPUT.  |
1479 `----------------------------------------*/
1480 
1481 static void
1482 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct FILE_INFO *ip_file)
1483 {
1484   FILE *yyo = yyoutput;
1485   YYUSE (yyo);
1486   YYUSE (ip_file);
1487   if (!yyvaluep)
1488     return;
1489 # ifdef YYPRINT
1490   if (yytype < YYNTOKENS)
1491     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1492 # endif
1493   YYUSE (yytype);
1494 }
1495 
1496 
1497 /*--------------------------------.
1498 | Print this symbol on YYOUTPUT.  |
1499 `--------------------------------*/
1500 
1501 static void
1502 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct FILE_INFO *ip_file)
1503 {
1504   YYFPRINTF (yyoutput, "%s %s (",
1505              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
1506 
1507   yy_symbol_value_print (yyoutput, yytype, yyvaluep, ip_file);
1508   YYFPRINTF (yyoutput, ")");
1509 }
1510 
1511 /*------------------------------------------------------------------.
1512 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1513 | TOP (included).                                                   |
1514 `------------------------------------------------------------------*/
1515 
1516 static void
1517 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1518 {
1519   YYFPRINTF (stderr, "Stack now");
1520   for (; yybottom <= yytop; yybottom++)
1521     {
1522       int yybot = *yybottom;
1523       YYFPRINTF (stderr, " %d", yybot);
1524     }
1525   YYFPRINTF (stderr, "\n");
1526 }
1527 
1528 # define YY_STACK_PRINT(Bottom, Top)                            \
1529 do {                                                            \
1530   if (yydebug)                                                  \
1531     yy_stack_print ((Bottom), (Top));                           \
1532 } while (0)
1533 
1534 
1535 /*------------------------------------------------.
1536 | Report that the YYRULE is going to be reduced.  |
1537 `------------------------------------------------*/
1538 
1539 static void
1540 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, struct FILE_INFO *ip_file)
1541 {
1542   unsigned long int yylno = yyrline[yyrule];
1543   int yynrhs = yyr2[yyrule];
1544   int yyi;
1545   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1546              yyrule - 1, yylno);
1547   /* The symbols being reduced.  */
1548   for (yyi = 0; yyi < yynrhs; yyi++)
1549     {
1550       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
1551       yy_symbol_print (stderr,
1552                        yystos[yyssp[yyi + 1 - yynrhs]],
1553                        &(yyvsp[(yyi + 1) - (yynrhs)])
1554                                               , ip_file);
1555       YYFPRINTF (stderr, "\n");
1556     }
1557 }
1558 
1559 # define YY_REDUCE_PRINT(Rule)          \
1560 do {                                    \
1561   if (yydebug)                          \
1562     yy_reduce_print (yyssp, yyvsp, Rule, ip_file); \
1563 } while (0)
1564 
1565 /* Nonzero means print parse trace.  It is left uninitialized so that
1566    multiple parsers can coexist.  */
1567 int yydebug;
1568 #else /* !YYDEBUG */
1569 # define YYDPRINTF(Args)
1570 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1571 # define YY_STACK_PRINT(Bottom, Top)
1572 # define YY_REDUCE_PRINT(Rule)
1573 #endif /* !YYDEBUG */
1574 
1575 
1576 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1577 #ifndef YYINITDEPTH
1578 # define YYINITDEPTH 200
1579 #endif
1580 
1581 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1582    if the built-in stack extension method is used).
1583 
1584    Do not make this value too large; the results are undefined if
1585    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1586    evaluated with infinite-precision integer arithmetic.  */
1587 
1588 #ifndef YYMAXDEPTH
1589 # define YYMAXDEPTH 10000
1590 #endif
1591 
1592 
1593 #if YYERROR_VERBOSE
1594 
1595 # ifndef yystrlen
1596 #  if defined __GLIBC__ && defined _STRING_H
1597 #   define yystrlen strlen
1598 #  else
1599 /* Return the length of YYSTR.  */
1600 static YYSIZE_T
1601 yystrlen (const char *yystr)
1602 {
1603   YYSIZE_T yylen;
1604   for (yylen = 0; yystr[yylen]; yylen++)
1605     continue;
1606   return yylen;
1607 }
1608 #  endif
1609 # endif
1610 
1611 # ifndef yystpcpy
1612 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1613 #   define yystpcpy stpcpy
1614 #  else
1615 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1616    YYDEST.  */
1617 static char *
1618 yystpcpy (char *yydest, const char *yysrc)
1619 {
1620   char *yyd = yydest;
1621   const char *yys = yysrc;
1622 
1623   while ((*yyd++ = *yys++) != '\0')
1624     continue;
1625 
1626   return yyd - 1;
1627 }
1628 #  endif
1629 # endif
1630 
1631 # ifndef yytnamerr
1632 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1633    quotes and backslashes, so that it's suitable for yyerror.  The
1634    heuristic is that double-quoting is unnecessary unless the string
1635    contains an apostrophe, a comma, or backslash (other than
1636    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1637    null, do not copy; instead, return the length of what the result
1638    would have been.  */
1639 static YYSIZE_T
1640 yytnamerr (char *yyres, const char *yystr)
1641 {
1642   if (*yystr == '"')
1643     {
1644       YYSIZE_T yyn = 0;
1645       char const *yyp = yystr;
1646 
1647       for (;;)
1648         switch (*++yyp)
1649           {
1650           case '\'':
1651           case ',':
1652             goto do_not_strip_quotes;
1653 
1654           case '\\':
1655             if (*++yyp != '\\')
1656               goto do_not_strip_quotes;
1657             /* Fall through.  */
1658           default:
1659             if (yyres)
1660               yyres[yyn] = *yyp;
1661             yyn++;
1662             break;
1663 
1664           case '"':
1665             if (yyres)
1666               yyres[yyn] = '\0';
1667             return yyn;
1668           }
1669     do_not_strip_quotes: ;
1670     }
1671 
1672   if (! yyres)
1673     return yystrlen (yystr);
1674 
1675   return yystpcpy (yyres, yystr) - yyres;
1676 }
1677 # endif
1678 
1679 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1680    about the unexpected token YYTOKEN for the state stack whose top is
1681    YYSSP.
1682 
1683    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
1684    not large enough to hold the message.  In that case, also set
1685    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
1686    required number of bytes is too large to store.  */
1687 static int
1688 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1689                 yytype_int16 *yyssp, int yytoken)
1690 {
1691   YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1692   YYSIZE_T yysize = yysize0;
1693   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1694   /* Internationalized format string. */
1695   const char *yyformat = YY_NULLPTR;
1696   /* Arguments of yyformat. */
1697   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1698   /* Number of reported tokens (one for the "unexpected", one per
1699      "expected"). */
1700   int yycount = 0;
1701 
1702   /* There are many possibilities here to consider:
1703      - If this state is a consistent state with a default action, then
1704        the only way this function was invoked is if the default action
1705        is an error action.  In that case, don't check for expected
1706        tokens because there are none.
1707      - The only way there can be no lookahead present (in yychar) is if
1708        this state is a consistent state with a default action.  Thus,
1709        detecting the absence of a lookahead is sufficient to determine
1710        that there is no unexpected or expected token to report.  In that
1711        case, just report a simple "syntax error".
1712      - Don't assume there isn't a lookahead just because this state is a
1713        consistent state with a default action.  There might have been a
1714        previous inconsistent state, consistent state with a non-default
1715        action, or user semantic action that manipulated yychar.
1716      - Of course, the expected token list depends on states to have
1717        correct lookahead information, and it depends on the parser not
1718        to perform extra reductions after fetching a lookahead from the
1719        scanner and before detecting a syntax error.  Thus, state merging
1720        (from LALR or IELR) and default reductions corrupt the expected
1721        token list.  However, the list is correct for canonical LR with
1722        one exception: it will still contain any token that will not be
1723        accepted due to an error action in a later state.
1724   */
1725   if (yytoken != YYEMPTY)
1726     {
1727       int yyn = yypact[*yyssp];
1728       yyarg[yycount++] = yytname[yytoken];
1729       if (!yypact_value_is_default (yyn))
1730         {
1731           /* Start YYX at -YYN if negative to avoid negative indexes in
1732              YYCHECK.  In other words, skip the first -YYN actions for
1733              this state because they are default actions.  */
1734           int yyxbegin = yyn < 0 ? -yyn : 0;
1735           /* Stay within bounds of both yycheck and yytname.  */
1736           int yychecklim = YYLAST - yyn + 1;
1737           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1738           int yyx;
1739 
1740           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1741             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1742                 && !yytable_value_is_error (yytable[yyx + yyn]))
1743               {
1744                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1745                   {
1746                     yycount = 1;
1747                     yysize = yysize0;
1748                     break;
1749                   }
1750                 yyarg[yycount++] = yytname[yyx];
1751                 {
1752                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1753                   if (! (yysize <= yysize1
1754                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1755                     return 2;
1756                   yysize = yysize1;
1757                 }
1758               }
1759         }
1760     }
1761 
1762   switch (yycount)
1763     {
1764 # define YYCASE_(N, S)                      \
1765       case N:                               \
1766         yyformat = S;                       \
1767       break
1768       YYCASE_(0, YY_("syntax error"));
1769       YYCASE_(1, YY_("syntax error, unexpected %s"));
1770       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1771       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1772       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1773       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1774 # undef YYCASE_
1775     }
1776 
1777   {
1778     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1779     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1780       return 2;
1781     yysize = yysize1;
1782   }
1783 
1784   if (*yymsg_alloc < yysize)
1785     {
1786       *yymsg_alloc = 2 * yysize;
1787       if (! (yysize <= *yymsg_alloc
1788              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1789         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1790       return 1;
1791     }
1792 
1793   /* Avoid sprintf, as that infringes on the user's name space.
1794      Don't have undefined behavior even if the translation
1795      produced a string with the wrong number of "%s"s.  */
1796   {
1797     char *yyp = *yymsg;
1798     int yyi = 0;
1799     while ((*yyp = *yyformat) != '\0')
1800       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1801         {
1802           yyp += yytnamerr (yyp, yyarg[yyi++]);
1803           yyformat += 2;
1804         }
1805       else
1806         {
1807           yyp++;
1808           yyformat++;
1809         }
1810   }
1811   return 0;
1812 }
1813 #endif /* YYERROR_VERBOSE */
1814 
1815 /*-----------------------------------------------.
1816 | Release the memory associated to this symbol.  |
1817 `-----------------------------------------------*/
1818 
1819 static void
1820 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct FILE_INFO *ip_file)
1821 {
1822   YYUSE (yyvaluep);
1823   YYUSE (ip_file);
1824   if (!yymsg)
1825     yymsg = "Deleting";
1826   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1827 
1828   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1829   YYUSE (yytype);
1830   YY_IGNORE_MAYBE_UNINITIALIZED_END
1831 }
1832 
1833 
1834 
1835 
1836 /* The lookahead symbol.  */
1837 int yychar;
1838 
1839 /* The semantic value of the lookahead symbol.  */
1840 YYSTYPE yylval;
1841 /* Number of syntax errors so far.  */
1842 int yynerrs;
1843 
1844 
1845 /*----------.
1846 | yyparse.  |
1847 `----------*/
1848 
1849 int
1850 yyparse (struct FILE_INFO *ip_file)
1851 {
1852     int yystate;
1853     /* Number of tokens to shift before error messages enabled.  */
1854     int yyerrstatus;
1855 
1856     /* The stacks and their tools:
1857        'yyss': related to states.
1858        'yyvs': related to semantic values.
1859 
1860        Refer to the stacks through separate pointers, to allow yyoverflow
1861        to reallocate them elsewhere.  */
1862 
1863     /* The state stack.  */
1864     yytype_int16 yyssa[YYINITDEPTH];
1865     yytype_int16 *yyss;
1866     yytype_int16 *yyssp;
1867 
1868     /* The semantic value stack.  */
1869     YYSTYPE yyvsa[YYINITDEPTH];
1870     YYSTYPE *yyvs;
1871     YYSTYPE *yyvsp;
1872 
1873     YYSIZE_T yystacksize;
1874 
1875   int yyn;
1876   int yyresult;
1877   /* Lookahead token as an internal (translated) token number.  */
1878   int yytoken = 0;
1879   /* The variables used to return semantic value and location from the
1880      action routines.  */
1881   YYSTYPE yyval;
1882 
1883 #if YYERROR_VERBOSE
1884   /* Buffer for error messages, and its allocated size.  */
1885   char yymsgbuf[128];
1886   char *yymsg = yymsgbuf;
1887   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1888 #endif
1889 
1890 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1891 
1892   /* The number of symbols on the RHS of the reduced rule.
1893      Keep to zero when no symbol should be popped.  */
1894   int yylen = 0;
1895 
1896   yyssp = yyss = yyssa;
1897   yyvsp = yyvs = yyvsa;
1898   yystacksize = YYINITDEPTH;
1899 
1900   YYDPRINTF ((stderr, "Starting parse\n"));
1901 
1902   yystate = 0;
1903   yyerrstatus = 0;
1904   yynerrs = 0;
1905   yychar = YYEMPTY; /* Cause a token to be read.  */
1906   goto yysetstate;
1907 
1908 /*------------------------------------------------------------.
1909 | yynewstate -- Push a new state, which is found in yystate.  |
1910 `------------------------------------------------------------*/
1911  yynewstate:
1912   /* In all cases, when you get here, the value and location stacks
1913      have just been pushed.  So pushing a state here evens the stacks.  */
1914   yyssp++;
1915 
1916  yysetstate:
1917   *yyssp = yystate;
1918 
1919   if (yyss + yystacksize - 1 <= yyssp)
1920     {
1921       /* Get the current used size of the three stacks, in elements.  */
1922       YYSIZE_T yysize = yyssp - yyss + 1;
1923 
1924 #ifdef yyoverflow
1925       {
1926         /* Give user a chance to reallocate the stack.  Use copies of
1927            these so that the &'s don't force the real ones into
1928            memory.  */
1929         YYSTYPE *yyvs1 = yyvs;
1930         yytype_int16 *yyss1 = yyss;
1931 
1932         /* Each stack pointer address is followed by the size of the
1933            data in use in that stack, in bytes.  This used to be a
1934            conditional around just the two extra args, but that might
1935            be undefined if yyoverflow is a macro.  */
1936         yyoverflow (YY_("memory exhausted"),
1937                     &yyss1, yysize * sizeof (*yyssp),
1938                     &yyvs1, yysize * sizeof (*yyvsp),
1939                     &yystacksize);
1940 
1941         yyss = yyss1;
1942         yyvs = yyvs1;
1943       }
1944 #else /* no yyoverflow */
1945 # ifndef YYSTACK_RELOCATE
1946       goto yyexhaustedlab;
1947 # else
1948       /* Extend the stack our own way.  */
1949       if (YYMAXDEPTH <= yystacksize)
1950         goto yyexhaustedlab;
1951       yystacksize *= 2;
1952       if (YYMAXDEPTH < yystacksize)
1953         yystacksize = YYMAXDEPTH;
1954 
1955       {
1956         yytype_int16 *yyss1 = yyss;
1957         union yyalloc *yyptr =
1958           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1959         if (! yyptr)
1960           goto yyexhaustedlab;
1961         YYSTACK_RELOCATE (yyss_alloc, yyss);
1962         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1963 #  undef YYSTACK_RELOCATE
1964         if (yyss1 != yyssa)
1965           YYSTACK_FREE (yyss1);
1966       }
1967 # endif
1968 #endif /* no yyoverflow */
1969 
1970       yyssp = yyss + yysize - 1;
1971       yyvsp = yyvs + yysize - 1;
1972 
1973       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1974                   (unsigned long int) yystacksize));
1975 
1976       if (yyss + yystacksize - 1 <= yyssp)
1977         YYABORT;
1978     }
1979 
1980   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1981 
1982   if (yystate == YYFINAL)
1983     YYACCEPT;
1984 
1985   goto yybackup;
1986 
1987 /*-----------.
1988 | yybackup.  |
1989 `-----------*/
1990 yybackup:
1991 
1992   /* Do appropriate processing given the current state.  Read a
1993      lookahead token if we need one and don't already have one.  */
1994 
1995   /* First try to decide what to do without reference to lookahead token.  */
1996   yyn = yypact[yystate];
1997   if (yypact_value_is_default (yyn))
1998     goto yydefault;
1999 
2000   /* Not known => get a lookahead token if don't already have one.  */
2001 
2002   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
2003   if (yychar == YYEMPTY)
2004     {
2005       YYDPRINTF ((stderr, "Reading a token: "));
2006       yychar = yylex (ip_file);
2007     }
2008 
2009   if (yychar <= YYEOF)
2010     {
2011       yychar = yytoken = YYEOF;
2012       YYDPRINTF ((stderr, "Now at end of input.\n"));
2013     }
2014   else
2015     {
2016       yytoken = YYTRANSLATE (yychar);
2017       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2018     }
2019 
2020   /* If the proper action on seeing token YYTOKEN is to reduce or to
2021      detect an error, take that action.  */
2022   yyn += yytoken;
2023   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2024     goto yydefault;
2025   yyn = yytable[yyn];
2026   if (yyn <= 0)
2027     {
2028       if (yytable_value_is_error (yyn))
2029         goto yyerrlab;
2030       yyn = -yyn;
2031       goto yyreduce;
2032     }
2033 
2034   /* Count tokens shifted since error; after three, turn off error
2035      status.  */
2036   if (yyerrstatus)
2037     yyerrstatus--;
2038 
2039   /* Shift the lookahead token.  */
2040   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2041 
2042   /* Discard the shifted token.  */
2043   yychar = YYEMPTY;
2044 
2045   yystate = yyn;
2046   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2047   *++yyvsp = yylval;
2048   YY_IGNORE_MAYBE_UNINITIALIZED_END
2049 
2050   goto yynewstate;
2051 
2052 
2053 /*-----------------------------------------------------------.
2054 | yydefault -- do the default action for the current state.  |
2055 `-----------------------------------------------------------*/
2056 yydefault:
2057   yyn = yydefact[yystate];
2058   if (yyn == 0)
2059     goto yyerrlab;
2060   goto yyreduce;
2061 
2062 
2063 /*-----------------------------.
2064 | yyreduce -- Do a reduction.  |
2065 `-----------------------------*/
2066 yyreduce:
2067   /* yyn is the number of a rule to reduce with.  */
2068   yylen = yyr2[yyn];
2069 
2070   /* If YYLEN is nonzero, implement the default value of the action:
2071      '$$ = $1'.
2072 
2073      Otherwise, the following line sets YYVAL to garbage.
2074      This behavior is undocumented and Bison
2075      users should not rely upon it.  Assigning to YYVAL
2076      unconditionally makes the parser a bit smaller, and it avoids a
2077      GCC warning that YYVAL may be used uninitialized.  */
2078   yyval = yyvsp[1-yylen];
2079 
2080 
2081   YY_REDUCE_PRINT (yyn);
2082   switch (yyn)
2083     {
2084         case 5:
2085 #line 373 "ntp_parser.y" /* yacc.c:1646  */
2086     {
2087 			/* I will need to incorporate much more fine grained
2088 			 * error messages. The following should suffice for
2089 			 * the time being.
2090 			 */
2091 			msyslog(LOG_ERR,
2092 				"syntax error in %s line %d, column %d",
2093 				ip_file->fname,
2094 				ip_file->err_line_no,
2095 				ip_file->err_col_no);
2096 		}
2097 #line 2098 "ntp_parser.c" /* yacc.c:1646  */
2098     break;
2099 
2100   case 20:
2101 #line 408 "ntp_parser.y" /* yacc.c:1646  */
2102     {
2103 			peer_node *my_node;
2104 
2105 			my_node = create_peer_node((yyvsp[-2].Integer), (yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
2106 			APPEND_G_FIFO(cfgt.peers, my_node);
2107 		}
2108 #line 2109 "ntp_parser.c" /* yacc.c:1646  */
2109     break;
2110 
2111   case 27:
2112 #line 427 "ntp_parser.y" /* yacc.c:1646  */
2113     { (yyval.Address_node) = create_address_node((yyvsp[0].String), (yyvsp[-1].Integer)); }
2114 #line 2115 "ntp_parser.c" /* yacc.c:1646  */
2115     break;
2116 
2117   case 28:
2118 #line 432 "ntp_parser.y" /* yacc.c:1646  */
2119     { (yyval.Address_node) = create_address_node((yyvsp[0].String), AF_UNSPEC); }
2120 #line 2121 "ntp_parser.c" /* yacc.c:1646  */
2121     break;
2122 
2123   case 29:
2124 #line 437 "ntp_parser.y" /* yacc.c:1646  */
2125     { (yyval.Integer) = AF_INET; }
2126 #line 2127 "ntp_parser.c" /* yacc.c:1646  */
2127     break;
2128 
2129   case 30:
2130 #line 439 "ntp_parser.y" /* yacc.c:1646  */
2131     { (yyval.Integer) = AF_INET6; }
2132 #line 2133 "ntp_parser.c" /* yacc.c:1646  */
2133     break;
2134 
2135   case 31:
2136 #line 444 "ntp_parser.y" /* yacc.c:1646  */
2137     { (yyval.Attr_val_fifo) = NULL; }
2138 #line 2139 "ntp_parser.c" /* yacc.c:1646  */
2139     break;
2140 
2141   case 32:
2142 #line 446 "ntp_parser.y" /* yacc.c:1646  */
2143     {
2144 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2145 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2146 		}
2147 #line 2148 "ntp_parser.c" /* yacc.c:1646  */
2148     break;
2149 
2150   case 36:
2151 #line 460 "ntp_parser.y" /* yacc.c:1646  */
2152     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
2153 #line 2154 "ntp_parser.c" /* yacc.c:1646  */
2154     break;
2155 
2156   case 45:
2157 #line 476 "ntp_parser.y" /* yacc.c:1646  */
2158     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2159 #line 2160 "ntp_parser.c" /* yacc.c:1646  */
2160     break;
2161 
2162   case 46:
2163 #line 478 "ntp_parser.y" /* yacc.c:1646  */
2164     { (yyval.Attr_val) = create_attr_uval((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2165 #line 2166 "ntp_parser.c" /* yacc.c:1646  */
2166     break;
2167 
2168   case 53:
2169 #line 492 "ntp_parser.y" /* yacc.c:1646  */
2170     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2171 #line 2172 "ntp_parser.c" /* yacc.c:1646  */
2172     break;
2173 
2174   case 55:
2175 #line 506 "ntp_parser.y" /* yacc.c:1646  */
2176     {
2177 			unpeer_node *my_node;
2178 
2179 			my_node = create_unpeer_node((yyvsp[0].Address_node));
2180 			if (my_node)
2181 				APPEND_G_FIFO(cfgt.unpeers, my_node);
2182 		}
2183 #line 2184 "ntp_parser.c" /* yacc.c:1646  */
2184     break;
2185 
2186   case 58:
2187 #line 527 "ntp_parser.y" /* yacc.c:1646  */
2188     { cfgt.broadcastclient = 1; }
2189 #line 2190 "ntp_parser.c" /* yacc.c:1646  */
2190     break;
2191 
2192   case 59:
2193 #line 529 "ntp_parser.y" /* yacc.c:1646  */
2194     { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[0].Address_fifo)); }
2195 #line 2196 "ntp_parser.c" /* yacc.c:1646  */
2196     break;
2197 
2198   case 60:
2199 #line 531 "ntp_parser.y" /* yacc.c:1646  */
2200     { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[0].Address_fifo)); }
2201 #line 2202 "ntp_parser.c" /* yacc.c:1646  */
2202     break;
2203 
2204   case 61:
2205 #line 533 "ntp_parser.y" /* yacc.c:1646  */
2206     { cfgt.mdnstries = (yyvsp[0].Integer); }
2207 #line 2208 "ntp_parser.c" /* yacc.c:1646  */
2208     break;
2209 
2210   case 62:
2211 #line 544 "ntp_parser.y" /* yacc.c:1646  */
2212     {
2213 			attr_val *atrv;
2214 
2215 			atrv = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
2216 			APPEND_G_FIFO(cfgt.vars, atrv);
2217 		}
2218 #line 2219 "ntp_parser.c" /* yacc.c:1646  */
2219     break;
2220 
2221   case 63:
2222 #line 551 "ntp_parser.y" /* yacc.c:1646  */
2223     { cfgt.auth.control_key = (yyvsp[0].Integer); }
2224 #line 2225 "ntp_parser.c" /* yacc.c:1646  */
2225     break;
2226 
2227   case 64:
2228 #line 553 "ntp_parser.y" /* yacc.c:1646  */
2229     {
2230 			cfgt.auth.cryptosw++;
2231 			CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[0].Attr_val_fifo));
2232 		}
2233 #line 2234 "ntp_parser.c" /* yacc.c:1646  */
2234     break;
2235 
2236   case 65:
2237 #line 558 "ntp_parser.y" /* yacc.c:1646  */
2238     { cfgt.auth.keys = (yyvsp[0].String); }
2239 #line 2240 "ntp_parser.c" /* yacc.c:1646  */
2240     break;
2241 
2242   case 66:
2243 #line 560 "ntp_parser.y" /* yacc.c:1646  */
2244     { cfgt.auth.keysdir = (yyvsp[0].String); }
2245 #line 2246 "ntp_parser.c" /* yacc.c:1646  */
2246     break;
2247 
2248   case 67:
2249 #line 562 "ntp_parser.y" /* yacc.c:1646  */
2250     { cfgt.auth.request_key = (yyvsp[0].Integer); }
2251 #line 2252 "ntp_parser.c" /* yacc.c:1646  */
2252     break;
2253 
2254   case 68:
2255 #line 564 "ntp_parser.y" /* yacc.c:1646  */
2256     { cfgt.auth.revoke = (yyvsp[0].Integer); }
2257 #line 2258 "ntp_parser.c" /* yacc.c:1646  */
2258     break;
2259 
2260   case 69:
2261 #line 566 "ntp_parser.y" /* yacc.c:1646  */
2262     {
2263 			cfgt.auth.trusted_key_list = (yyvsp[0].Attr_val_fifo);
2264 
2265 			// if (!cfgt.auth.trusted_key_list)
2266 			// 	cfgt.auth.trusted_key_list = $2;
2267 			// else
2268 			// 	LINK_SLIST(cfgt.auth.trusted_key_list, $2, link);
2269 		}
2270 #line 2271 "ntp_parser.c" /* yacc.c:1646  */
2271     break;
2272 
2273   case 70:
2274 #line 575 "ntp_parser.y" /* yacc.c:1646  */
2275     { cfgt.auth.ntp_signd_socket = (yyvsp[0].String); }
2276 #line 2277 "ntp_parser.c" /* yacc.c:1646  */
2277     break;
2278 
2279   case 71:
2280 #line 580 "ntp_parser.y" /* yacc.c:1646  */
2281     { (yyval.Attr_val_fifo) = NULL; }
2282 #line 2283 "ntp_parser.c" /* yacc.c:1646  */
2283     break;
2284 
2285   case 72:
2286 #line 582 "ntp_parser.y" /* yacc.c:1646  */
2287     {
2288 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2289 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2290 		}
2291 #line 2292 "ntp_parser.c" /* yacc.c:1646  */
2292     break;
2293 
2294   case 73:
2295 #line 590 "ntp_parser.y" /* yacc.c:1646  */
2296     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2297 #line 2298 "ntp_parser.c" /* yacc.c:1646  */
2298     break;
2299 
2300   case 74:
2301 #line 592 "ntp_parser.y" /* yacc.c:1646  */
2302     {
2303 			(yyval.Attr_val) = NULL;
2304 			cfgt.auth.revoke = (yyvsp[0].Integer);
2305 			msyslog(LOG_WARNING,
2306 				"'crypto revoke %d' is deprecated, "
2307 				"please use 'revoke %d' instead.",
2308 				cfgt.auth.revoke, cfgt.auth.revoke);
2309 		}
2310 #line 2311 "ntp_parser.c" /* yacc.c:1646  */
2311     break;
2312 
2313   case 80:
2314 #line 617 "ntp_parser.y" /* yacc.c:1646  */
2315     { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[0].Attr_val_fifo)); }
2316 #line 2317 "ntp_parser.c" /* yacc.c:1646  */
2317     break;
2318 
2319   case 81:
2320 #line 622 "ntp_parser.y" /* yacc.c:1646  */
2321     {
2322 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2323 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2324 		}
2325 #line 2326 "ntp_parser.c" /* yacc.c:1646  */
2326     break;
2327 
2328   case 82:
2329 #line 627 "ntp_parser.y" /* yacc.c:1646  */
2330     {
2331 			(yyval.Attr_val_fifo) = NULL;
2332 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2333 		}
2334 #line 2335 "ntp_parser.c" /* yacc.c:1646  */
2335     break;
2336 
2337   case 83:
2338 #line 635 "ntp_parser.y" /* yacc.c:1646  */
2339     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
2340 #line 2341 "ntp_parser.c" /* yacc.c:1646  */
2341     break;
2342 
2343   case 84:
2344 #line 637 "ntp_parser.y" /* yacc.c:1646  */
2345     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
2346 #line 2347 "ntp_parser.c" /* yacc.c:1646  */
2347     break;
2348 
2349   case 85:
2350 #line 639 "ntp_parser.y" /* yacc.c:1646  */
2351     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
2352 #line 2353 "ntp_parser.c" /* yacc.c:1646  */
2353     break;
2354 
2355   case 96:
2356 #line 665 "ntp_parser.y" /* yacc.c:1646  */
2357     { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[0].Int_fifo)); }
2358 #line 2359 "ntp_parser.c" /* yacc.c:1646  */
2359     break;
2360 
2361   case 97:
2362 #line 667 "ntp_parser.y" /* yacc.c:1646  */
2363     {
2364 			if (input_from_file) {
2365 				cfgt.stats_dir = (yyvsp[0].String);
2366 			} else {
2367 				YYFREE((yyvsp[0].String));
2368 				yyerror(ip_file, "statsdir remote configuration ignored");
2369 			}
2370 		}
2371 #line 2372 "ntp_parser.c" /* yacc.c:1646  */
2372     break;
2373 
2374   case 98:
2375 #line 676 "ntp_parser.y" /* yacc.c:1646  */
2376     {
2377 			filegen_node *fgn;
2378 
2379 			fgn = create_filegen_node((yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo));
2380 			APPEND_G_FIFO(cfgt.filegen_opts, fgn);
2381 		}
2382 #line 2383 "ntp_parser.c" /* yacc.c:1646  */
2383     break;
2384 
2385   case 99:
2386 #line 686 "ntp_parser.y" /* yacc.c:1646  */
2387     {
2388 			(yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
2389 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
2390 		}
2391 #line 2392 "ntp_parser.c" /* yacc.c:1646  */
2392     break;
2393 
2394   case 100:
2395 #line 691 "ntp_parser.y" /* yacc.c:1646  */
2396     {
2397 			(yyval.Int_fifo) = NULL;
2398 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
2399 		}
2400 #line 2401 "ntp_parser.c" /* yacc.c:1646  */
2401     break;
2402 
2403   case 109:
2404 #line 710 "ntp_parser.y" /* yacc.c:1646  */
2405     { (yyval.Attr_val_fifo) = NULL; }
2406 #line 2407 "ntp_parser.c" /* yacc.c:1646  */
2407     break;
2408 
2409   case 110:
2410 #line 712 "ntp_parser.y" /* yacc.c:1646  */
2411     {
2412 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2413 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2414 		}
2415 #line 2416 "ntp_parser.c" /* yacc.c:1646  */
2416     break;
2417 
2418   case 111:
2419 #line 720 "ntp_parser.y" /* yacc.c:1646  */
2420     {
2421 			if (input_from_file) {
2422 				(yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
2423 			} else {
2424 				(yyval.Attr_val) = NULL;
2425 				YYFREE((yyvsp[0].String));
2426 				yyerror(ip_file, "filegen file remote config ignored");
2427 			}
2428 		}
2429 #line 2430 "ntp_parser.c" /* yacc.c:1646  */
2430     break;
2431 
2432   case 112:
2433 #line 730 "ntp_parser.y" /* yacc.c:1646  */
2434     {
2435 			if (input_from_file) {
2436 				(yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
2437 			} else {
2438 				(yyval.Attr_val) = NULL;
2439 				yyerror(ip_file, "filegen type remote config ignored");
2440 			}
2441 		}
2442 #line 2443 "ntp_parser.c" /* yacc.c:1646  */
2443     break;
2444 
2445   case 113:
2446 #line 739 "ntp_parser.y" /* yacc.c:1646  */
2447     {
2448 			const char *err;
2449 
2450 			if (input_from_file) {
2451 				(yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer));
2452 			} else {
2453 				(yyval.Attr_val) = NULL;
2454 				if (T_Link == (yyvsp[0].Integer))
2455 					err = "filegen link remote config ignored";
2456 				else
2457 					err = "filegen nolink remote config ignored";
2458 				yyerror(ip_file, err);
2459 			}
2460 		}
2461 #line 2462 "ntp_parser.c" /* yacc.c:1646  */
2462     break;
2463 
2464   case 114:
2465 #line 754 "ntp_parser.y" /* yacc.c:1646  */
2466     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
2467 #line 2468 "ntp_parser.c" /* yacc.c:1646  */
2468     break;
2469 
2470   case 126:
2471 #line 784 "ntp_parser.y" /* yacc.c:1646  */
2472     {
2473 			CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[0].Attr_val_fifo));
2474 		}
2475 #line 2476 "ntp_parser.c" /* yacc.c:1646  */
2476     break;
2477 
2478   case 127:
2479 #line 788 "ntp_parser.y" /* yacc.c:1646  */
2480     {
2481 			CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[0].Attr_val_fifo));
2482 		}
2483 #line 2484 "ntp_parser.c" /* yacc.c:1646  */
2484     break;
2485 
2486   case 128:
2487 #line 792 "ntp_parser.y" /* yacc.c:1646  */
2488     {
2489 			restrict_node *rn;
2490 
2491 			rn = create_restrict_node((yyvsp[-1].Address_node), NULL, (yyvsp[0].Int_fifo),
2492 						  ip_file->line_no);
2493 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2494 		}
2495 #line 2496 "ntp_parser.c" /* yacc.c:1646  */
2496     break;
2497 
2498   case 129:
2499 #line 800 "ntp_parser.y" /* yacc.c:1646  */
2500     {
2501 			restrict_node *rn;
2502 
2503 			rn = create_restrict_node((yyvsp[-3].Address_node), (yyvsp[-1].Address_node), (yyvsp[0].Int_fifo),
2504 						  ip_file->line_no);
2505 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2506 		}
2507 #line 2508 "ntp_parser.c" /* yacc.c:1646  */
2508     break;
2509 
2510   case 130:
2511 #line 808 "ntp_parser.y" /* yacc.c:1646  */
2512     {
2513 			restrict_node *rn;
2514 
2515 			rn = create_restrict_node(NULL, NULL, (yyvsp[0].Int_fifo),
2516 						  ip_file->line_no);
2517 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2518 		}
2519 #line 2520 "ntp_parser.c" /* yacc.c:1646  */
2520     break;
2521 
2522   case 131:
2523 #line 816 "ntp_parser.y" /* yacc.c:1646  */
2524     {
2525 			restrict_node *rn;
2526 
2527 			rn = create_restrict_node(
2528 				create_address_node(
2529 					estrdup("0.0.0.0"),
2530 					AF_INET),
2531 				create_address_node(
2532 					estrdup("0.0.0.0"),
2533 					AF_INET),
2534 				(yyvsp[0].Int_fifo),
2535 				ip_file->line_no);
2536 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2537 		}
2538 #line 2539 "ntp_parser.c" /* yacc.c:1646  */
2539     break;
2540 
2541   case 132:
2542 #line 831 "ntp_parser.y" /* yacc.c:1646  */
2543     {
2544 			restrict_node *rn;
2545 
2546 			rn = create_restrict_node(
2547 				create_address_node(
2548 					estrdup("::"),
2549 					AF_INET6),
2550 				create_address_node(
2551 					estrdup("::"),
2552 					AF_INET6),
2553 				(yyvsp[0].Int_fifo),
2554 				ip_file->line_no);
2555 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2556 		}
2557 #line 2558 "ntp_parser.c" /* yacc.c:1646  */
2558     break;
2559 
2560   case 133:
2561 #line 846 "ntp_parser.y" /* yacc.c:1646  */
2562     {
2563 			restrict_node *	rn;
2564 
2565 			APPEND_G_FIFO((yyvsp[0].Int_fifo), create_int_node((yyvsp[-1].Integer)));
2566 			rn = create_restrict_node(
2567 				NULL, NULL, (yyvsp[0].Int_fifo), ip_file->line_no);
2568 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2569 		}
2570 #line 2571 "ntp_parser.c" /* yacc.c:1646  */
2571     break;
2572 
2573   case 134:
2574 #line 858 "ntp_parser.y" /* yacc.c:1646  */
2575     { (yyval.Int_fifo) = NULL; }
2576 #line 2577 "ntp_parser.c" /* yacc.c:1646  */
2577     break;
2578 
2579   case 135:
2580 #line 860 "ntp_parser.y" /* yacc.c:1646  */
2581     {
2582 			(yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
2583 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
2584 		}
2585 #line 2586 "ntp_parser.c" /* yacc.c:1646  */
2586     break;
2587 
2588   case 151:
2589 #line 886 "ntp_parser.y" /* yacc.c:1646  */
2590     {
2591 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2592 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2593 		}
2594 #line 2595 "ntp_parser.c" /* yacc.c:1646  */
2595     break;
2596 
2597   case 152:
2598 #line 891 "ntp_parser.y" /* yacc.c:1646  */
2599     {
2600 			(yyval.Attr_val_fifo) = NULL;
2601 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2602 		}
2603 #line 2604 "ntp_parser.c" /* yacc.c:1646  */
2604     break;
2605 
2606   case 153:
2607 #line 899 "ntp_parser.y" /* yacc.c:1646  */
2608     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2609 #line 2610 "ntp_parser.c" /* yacc.c:1646  */
2610     break;
2611 
2612   case 157:
2613 #line 910 "ntp_parser.y" /* yacc.c:1646  */
2614     {
2615 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2616 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2617 		}
2618 #line 2619 "ntp_parser.c" /* yacc.c:1646  */
2619     break;
2620 
2621   case 158:
2622 #line 915 "ntp_parser.y" /* yacc.c:1646  */
2623     {
2624 			(yyval.Attr_val_fifo) = NULL;
2625 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2626 		}
2627 #line 2628 "ntp_parser.c" /* yacc.c:1646  */
2628     break;
2629 
2630   case 159:
2631 #line 923 "ntp_parser.y" /* yacc.c:1646  */
2632     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2633 #line 2634 "ntp_parser.c" /* yacc.c:1646  */
2634     break;
2635 
2636   case 168:
2637 #line 943 "ntp_parser.y" /* yacc.c:1646  */
2638     {
2639 			addr_opts_node *aon;
2640 
2641 			aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
2642 			APPEND_G_FIFO(cfgt.fudge, aon);
2643 		}
2644 #line 2645 "ntp_parser.c" /* yacc.c:1646  */
2645     break;
2646 
2647   case 169:
2648 #line 953 "ntp_parser.y" /* yacc.c:1646  */
2649     {
2650 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2651 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2652 		}
2653 #line 2654 "ntp_parser.c" /* yacc.c:1646  */
2654     break;
2655 
2656   case 170:
2657 #line 958 "ntp_parser.y" /* yacc.c:1646  */
2658     {
2659 			(yyval.Attr_val_fifo) = NULL;
2660 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2661 		}
2662 #line 2663 "ntp_parser.c" /* yacc.c:1646  */
2663     break;
2664 
2665   case 171:
2666 #line 966 "ntp_parser.y" /* yacc.c:1646  */
2667     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
2668 #line 2669 "ntp_parser.c" /* yacc.c:1646  */
2669     break;
2670 
2671   case 172:
2672 #line 968 "ntp_parser.y" /* yacc.c:1646  */
2673     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2674 #line 2675 "ntp_parser.c" /* yacc.c:1646  */
2675     break;
2676 
2677   case 173:
2678 #line 970 "ntp_parser.y" /* yacc.c:1646  */
2679     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2680 #line 2681 "ntp_parser.c" /* yacc.c:1646  */
2681     break;
2682 
2683   case 174:
2684 #line 972 "ntp_parser.y" /* yacc.c:1646  */
2685     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2686 #line 2687 "ntp_parser.c" /* yacc.c:1646  */
2687     break;
2688 
2689   case 175:
2690 #line 974 "ntp_parser.y" /* yacc.c:1646  */
2691     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2692 #line 2693 "ntp_parser.c" /* yacc.c:1646  */
2693     break;
2694 
2695   case 182:
2696 #line 995 "ntp_parser.y" /* yacc.c:1646  */
2697     { CONCAT_G_FIFOS(cfgt.rlimit, (yyvsp[0].Attr_val_fifo)); }
2698 #line 2699 "ntp_parser.c" /* yacc.c:1646  */
2699     break;
2700 
2701   case 183:
2702 #line 1000 "ntp_parser.y" /* yacc.c:1646  */
2703     {
2704 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2705 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2706 		}
2707 #line 2708 "ntp_parser.c" /* yacc.c:1646  */
2708     break;
2709 
2710   case 184:
2711 #line 1005 "ntp_parser.y" /* yacc.c:1646  */
2712     {
2713 			(yyval.Attr_val_fifo) = NULL;
2714 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2715 		}
2716 #line 2717 "ntp_parser.c" /* yacc.c:1646  */
2717     break;
2718 
2719   case 185:
2720 #line 1013 "ntp_parser.y" /* yacc.c:1646  */
2721     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2722 #line 2723 "ntp_parser.c" /* yacc.c:1646  */
2723     break;
2724 
2725   case 189:
2726 #line 1029 "ntp_parser.y" /* yacc.c:1646  */
2727     { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[0].Attr_val_fifo)); }
2728 #line 2729 "ntp_parser.c" /* yacc.c:1646  */
2729     break;
2730 
2731   case 190:
2732 #line 1031 "ntp_parser.y" /* yacc.c:1646  */
2733     { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[0].Attr_val_fifo)); }
2734 #line 2735 "ntp_parser.c" /* yacc.c:1646  */
2735     break;
2736 
2737   case 191:
2738 #line 1036 "ntp_parser.y" /* yacc.c:1646  */
2739     {
2740 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2741 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2742 		}
2743 #line 2744 "ntp_parser.c" /* yacc.c:1646  */
2744     break;
2745 
2746   case 192:
2747 #line 1041 "ntp_parser.y" /* yacc.c:1646  */
2748     {
2749 			(yyval.Attr_val_fifo) = NULL;
2750 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2751 		}
2752 #line 2753 "ntp_parser.c" /* yacc.c:1646  */
2753     break;
2754 
2755   case 193:
2756 #line 1049 "ntp_parser.y" /* yacc.c:1646  */
2757     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
2758 #line 2759 "ntp_parser.c" /* yacc.c:1646  */
2759     break;
2760 
2761   case 194:
2762 #line 1051 "ntp_parser.y" /* yacc.c:1646  */
2763     {
2764 			if (input_from_file) {
2765 				(yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer));
2766 			} else {
2767 				char err_str[128];
2768 
2769 				(yyval.Attr_val) = NULL;
2770 				snprintf(err_str, sizeof(err_str),
2771 					 "enable/disable %s remote configuration ignored",
2772 					 keyword((yyvsp[0].Integer)));
2773 				yyerror(ip_file, err_str);
2774 			}
2775 		}
2776 #line 2777 "ntp_parser.c" /* yacc.c:1646  */
2777     break;
2778 
2779   case 203:
2780 #line 1086 "ntp_parser.y" /* yacc.c:1646  */
2781     { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[0].Attr_val_fifo)); }
2782 #line 2783 "ntp_parser.c" /* yacc.c:1646  */
2783     break;
2784 
2785   case 204:
2786 #line 1091 "ntp_parser.y" /* yacc.c:1646  */
2787     {
2788 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2789 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2790 		}
2791 #line 2792 "ntp_parser.c" /* yacc.c:1646  */
2792     break;
2793 
2794   case 205:
2795 #line 1096 "ntp_parser.y" /* yacc.c:1646  */
2796     {
2797 			(yyval.Attr_val_fifo) = NULL;
2798 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2799 		}
2800 #line 2801 "ntp_parser.c" /* yacc.c:1646  */
2801     break;
2802 
2803   case 206:
2804 #line 1104 "ntp_parser.y" /* yacc.c:1646  */
2805     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
2806 #line 2807 "ntp_parser.c" /* yacc.c:1646  */
2807     break;
2808 
2809   case 219:
2810 #line 1129 "ntp_parser.y" /* yacc.c:1646  */
2811     {
2812 			attr_val *av;
2813 
2814 			av = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double));
2815 			APPEND_G_FIFO(cfgt.vars, av);
2816 		}
2817 #line 2818 "ntp_parser.c" /* yacc.c:1646  */
2818     break;
2819 
2820   case 220:
2821 #line 1136 "ntp_parser.y" /* yacc.c:1646  */
2822     {
2823 			attr_val *av;
2824 
2825 			av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
2826 			APPEND_G_FIFO(cfgt.vars, av);
2827 		}
2828 #line 2829 "ntp_parser.c" /* yacc.c:1646  */
2829     break;
2830 
2831   case 221:
2832 #line 1143 "ntp_parser.y" /* yacc.c:1646  */
2833     {
2834 			char error_text[64];
2835 			attr_val *av;
2836 
2837 			if (input_from_file) {
2838 				av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
2839 				APPEND_G_FIFO(cfgt.vars, av);
2840 			} else {
2841 				YYFREE((yyvsp[0].String));
2842 				snprintf(error_text, sizeof(error_text),
2843 					 "%s remote config ignored",
2844 					 keyword((yyvsp[-1].Integer)));
2845 				yyerror(ip_file, error_text);
2846 			}
2847 		}
2848 #line 2849 "ntp_parser.c" /* yacc.c:1646  */
2849     break;
2850 
2851   case 222:
2852 #line 1159 "ntp_parser.y" /* yacc.c:1646  */
2853     {
2854 			if (!input_from_file) {
2855 				yyerror(ip_file, "remote includefile ignored");
2856 				break;
2857 			}
2858 			if (curr_include_level >= MAXINCLUDELEVEL) {
2859 				fprintf(stderr, "getconfig: Maximum include file level exceeded.\n");
2860 				msyslog(LOG_ERR, "getconfig: Maximum include file level exceeded.");
2861 			} else {
2862 				fp[curr_include_level + 1] = F_OPEN(FindConfig((yyvsp[-1].String)), "r");
2863 				if (fp[curr_include_level + 1] == NULL) {
2864 					fprintf(stderr, "getconfig: Couldn't open <%s>\n", FindConfig((yyvsp[-1].String)));
2865 					msyslog(LOG_ERR, "getconfig: Couldn't open <%s>", FindConfig((yyvsp[-1].String)));
2866 				} else {
2867 					ip_file = fp[++curr_include_level];
2868 				}
2869 			}
2870 		}
2871 #line 2872 "ntp_parser.c" /* yacc.c:1646  */
2872     break;
2873 
2874   case 223:
2875 #line 1178 "ntp_parser.y" /* yacc.c:1646  */
2876     {
2877 			while (curr_include_level != -1)
2878 				FCLOSE(fp[curr_include_level--]);
2879 		}
2880 #line 2881 "ntp_parser.c" /* yacc.c:1646  */
2881     break;
2882 
2883   case 224:
2884 #line 1183 "ntp_parser.y" /* yacc.c:1646  */
2885     { /* see drift_parm below for actions */ }
2886 #line 2887 "ntp_parser.c" /* yacc.c:1646  */
2887     break;
2888 
2889   case 225:
2890 #line 1185 "ntp_parser.y" /* yacc.c:1646  */
2891     { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[0].Attr_val_fifo)); }
2892 #line 2893 "ntp_parser.c" /* yacc.c:1646  */
2893     break;
2894 
2895   case 226:
2896 #line 1187 "ntp_parser.y" /* yacc.c:1646  */
2897     { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[0].String_fifo)); }
2898 #line 2899 "ntp_parser.c" /* yacc.c:1646  */
2899     break;
2900 
2901   case 227:
2902 #line 1189 "ntp_parser.y" /* yacc.c:1646  */
2903     { APPEND_G_FIFO(cfgt.setvar, (yyvsp[0].Set_var)); }
2904 #line 2905 "ntp_parser.c" /* yacc.c:1646  */
2905     break;
2906 
2907   case 228:
2908 #line 1191 "ntp_parser.y" /* yacc.c:1646  */
2909     {
2910 			addr_opts_node *aon;
2911 
2912 			aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
2913 			APPEND_G_FIFO(cfgt.trap, aon);
2914 		}
2915 #line 2916 "ntp_parser.c" /* yacc.c:1646  */
2916     break;
2917 
2918   case 229:
2919 #line 1198 "ntp_parser.y" /* yacc.c:1646  */
2920     { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[0].Attr_val_fifo)); }
2921 #line 2922 "ntp_parser.c" /* yacc.c:1646  */
2922     break;
2923 
2924   case 238:
2925 #line 1220 "ntp_parser.y" /* yacc.c:1646  */
2926     {
2927 			attr_val *av;
2928 
2929 			av = create_attr_sval(T_Driftfile, (yyvsp[0].String));
2930 			APPEND_G_FIFO(cfgt.vars, av);
2931 		}
2932 #line 2933 "ntp_parser.c" /* yacc.c:1646  */
2933     break;
2934 
2935   case 239:
2936 #line 1227 "ntp_parser.y" /* yacc.c:1646  */
2937     {
2938 			attr_val *av;
2939 
2940 			av = create_attr_sval(T_Driftfile, (yyvsp[-1].String));
2941 			APPEND_G_FIFO(cfgt.vars, av);
2942 			av = create_attr_dval(T_WanderThreshold, (yyvsp[0].Double));
2943 			APPEND_G_FIFO(cfgt.vars, av);
2944 		}
2945 #line 2946 "ntp_parser.c" /* yacc.c:1646  */
2946     break;
2947 
2948   case 240:
2949 #line 1236 "ntp_parser.y" /* yacc.c:1646  */
2950     {
2951 			attr_val *av;
2952 
2953 			av = create_attr_sval(T_Driftfile, "");
2954 			APPEND_G_FIFO(cfgt.vars, av);
2955 		}
2956 #line 2957 "ntp_parser.c" /* yacc.c:1646  */
2957     break;
2958 
2959   case 241:
2960 #line 1246 "ntp_parser.y" /* yacc.c:1646  */
2961     { (yyval.Set_var) = create_setvar_node((yyvsp[-3].String), (yyvsp[-1].String), (yyvsp[0].Integer)); }
2962 #line 2963 "ntp_parser.c" /* yacc.c:1646  */
2963     break;
2964 
2965   case 243:
2966 #line 1252 "ntp_parser.y" /* yacc.c:1646  */
2967     { (yyval.Integer) = 0; }
2968 #line 2969 "ntp_parser.c" /* yacc.c:1646  */
2969     break;
2970 
2971   case 244:
2972 #line 1257 "ntp_parser.y" /* yacc.c:1646  */
2973     { (yyval.Attr_val_fifo) = NULL; }
2974 #line 2975 "ntp_parser.c" /* yacc.c:1646  */
2975     break;
2976 
2977   case 245:
2978 #line 1259 "ntp_parser.y" /* yacc.c:1646  */
2979     {
2980 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2981 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2982 		}
2983 #line 2984 "ntp_parser.c" /* yacc.c:1646  */
2984     break;
2985 
2986   case 246:
2987 #line 1267 "ntp_parser.y" /* yacc.c:1646  */
2988     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2989 #line 2990 "ntp_parser.c" /* yacc.c:1646  */
2990     break;
2991 
2992   case 247:
2993 #line 1269 "ntp_parser.y" /* yacc.c:1646  */
2994     {
2995 			(yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), estrdup((yyvsp[0].Address_node)->address));
2996 			destroy_address_node((yyvsp[0].Address_node));
2997 		}
2998 #line 2999 "ntp_parser.c" /* yacc.c:1646  */
2999     break;
3000 
3001   case 248:
3002 #line 1277 "ntp_parser.y" /* yacc.c:1646  */
3003     {
3004 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
3005 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3006 		}
3007 #line 3008 "ntp_parser.c" /* yacc.c:1646  */
3008     break;
3009 
3010   case 249:
3011 #line 1282 "ntp_parser.y" /* yacc.c:1646  */
3012     {
3013 			(yyval.Attr_val_fifo) = NULL;
3014 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3015 		}
3016 #line 3017 "ntp_parser.c" /* yacc.c:1646  */
3017     break;
3018 
3019   case 250:
3020 #line 1290 "ntp_parser.y" /* yacc.c:1646  */
3021     {
3022 			char	prefix;
3023 			char *	type;
3024 
3025 			switch ((yyvsp[0].String)[0]) {
3026 
3027 			case '+':
3028 			case '-':
3029 			case '=':
3030 				prefix = (yyvsp[0].String)[0];
3031 				type = (yyvsp[0].String) + 1;
3032 				break;
3033 
3034 			default:
3035 				prefix = '=';
3036 				type = (yyvsp[0].String);
3037 			}
3038 
3039 			(yyval.Attr_val) = create_attr_sval(prefix, estrdup(type));
3040 			YYFREE((yyvsp[0].String));
3041 		}
3042 #line 3043 "ntp_parser.c" /* yacc.c:1646  */
3043     break;
3044 
3045   case 251:
3046 #line 1315 "ntp_parser.y" /* yacc.c:1646  */
3047     {
3048 			nic_rule_node *nrn;
3049 
3050 			nrn = create_nic_rule_node((yyvsp[0].Integer), NULL, (yyvsp[-1].Integer));
3051 			APPEND_G_FIFO(cfgt.nic_rules, nrn);
3052 		}
3053 #line 3054 "ntp_parser.c" /* yacc.c:1646  */
3054     break;
3055 
3056   case 252:
3057 #line 1322 "ntp_parser.y" /* yacc.c:1646  */
3058     {
3059 			nic_rule_node *nrn;
3060 
3061 			nrn = create_nic_rule_node(0, (yyvsp[0].String), (yyvsp[-1].Integer));
3062 			APPEND_G_FIFO(cfgt.nic_rules, nrn);
3063 		}
3064 #line 3065 "ntp_parser.c" /* yacc.c:1646  */
3065     break;
3066 
3067   case 262:
3068 #line 1350 "ntp_parser.y" /* yacc.c:1646  */
3069     { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[0].Int_fifo)); }
3070 #line 3071 "ntp_parser.c" /* yacc.c:1646  */
3071     break;
3072 
3073   case 263:
3074 #line 1355 "ntp_parser.y" /* yacc.c:1646  */
3075     {
3076 			(yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
3077 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
3078 		}
3079 #line 3080 "ntp_parser.c" /* yacc.c:1646  */
3080     break;
3081 
3082   case 264:
3083 #line 1360 "ntp_parser.y" /* yacc.c:1646  */
3084     {
3085 			(yyval.Int_fifo) = NULL;
3086 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
3087 		}
3088 #line 3089 "ntp_parser.c" /* yacc.c:1646  */
3089     break;
3090 
3091   case 272:
3092 #line 1384 "ntp_parser.y" /* yacc.c:1646  */
3093     {
3094 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
3095 			APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
3096 		}
3097 #line 3098 "ntp_parser.c" /* yacc.c:1646  */
3098     break;
3099 
3100   case 273:
3101 #line 1389 "ntp_parser.y" /* yacc.c:1646  */
3102     {
3103 			(yyval.Attr_val_fifo) = NULL;
3104 			APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
3105 		}
3106 #line 3107 "ntp_parser.c" /* yacc.c:1646  */
3107     break;
3108 
3109   case 274:
3110 #line 1397 "ntp_parser.y" /* yacc.c:1646  */
3111     {
3112 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
3113 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3114 		}
3115 #line 3116 "ntp_parser.c" /* yacc.c:1646  */
3116     break;
3117 
3118   case 275:
3119 #line 1402 "ntp_parser.y" /* yacc.c:1646  */
3120     {
3121 			(yyval.Attr_val_fifo) = NULL;
3122 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3123 		}
3124 #line 3125 "ntp_parser.c" /* yacc.c:1646  */
3125     break;
3126 
3127   case 276:
3128 #line 1410 "ntp_parser.y" /* yacc.c:1646  */
3129     { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[0].Integer)); }
3130 #line 3131 "ntp_parser.c" /* yacc.c:1646  */
3131     break;
3132 
3133   case 278:
3134 #line 1416 "ntp_parser.y" /* yacc.c:1646  */
3135     { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[-3].Integer), (yyvsp[-1].Integer)); }
3136 #line 3137 "ntp_parser.c" /* yacc.c:1646  */
3137     break;
3138 
3139   case 279:
3140 #line 1421 "ntp_parser.y" /* yacc.c:1646  */
3141     {
3142 			(yyval.String_fifo) = (yyvsp[-1].String_fifo);
3143 			APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
3144 		}
3145 #line 3146 "ntp_parser.c" /* yacc.c:1646  */
3146     break;
3147 
3148   case 280:
3149 #line 1426 "ntp_parser.y" /* yacc.c:1646  */
3150     {
3151 			(yyval.String_fifo) = NULL;
3152 			APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
3153 		}
3154 #line 3155 "ntp_parser.c" /* yacc.c:1646  */
3155     break;
3156 
3157   case 281:
3158 #line 1434 "ntp_parser.y" /* yacc.c:1646  */
3159     {
3160 			(yyval.Address_fifo) = (yyvsp[-1].Address_fifo);
3161 			APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
3162 		}
3163 #line 3164 "ntp_parser.c" /* yacc.c:1646  */
3164     break;
3165 
3166   case 282:
3167 #line 1439 "ntp_parser.y" /* yacc.c:1646  */
3168     {
3169 			(yyval.Address_fifo) = NULL;
3170 			APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
3171 		}
3172 #line 3173 "ntp_parser.c" /* yacc.c:1646  */
3173     break;
3174 
3175   case 283:
3176 #line 1447 "ntp_parser.y" /* yacc.c:1646  */
3177     {
3178 			if ((yyvsp[0].Integer) != 0 && (yyvsp[0].Integer) != 1) {
3179 				yyerror(ip_file, "Integer value is not boolean (0 or 1). Assuming 1");
3180 				(yyval.Integer) = 1;
3181 			} else {
3182 				(yyval.Integer) = (yyvsp[0].Integer);
3183 			}
3184 		}
3185 #line 3186 "ntp_parser.c" /* yacc.c:1646  */
3186     break;
3187 
3188   case 284:
3189 #line 1455 "ntp_parser.y" /* yacc.c:1646  */
3190     { (yyval.Integer) = 1; }
3191 #line 3192 "ntp_parser.c" /* yacc.c:1646  */
3192     break;
3193 
3194   case 285:
3195 #line 1456 "ntp_parser.y" /* yacc.c:1646  */
3196     { (yyval.Integer) = 0; }
3197 #line 3198 "ntp_parser.c" /* yacc.c:1646  */
3198     break;
3199 
3200   case 286:
3201 #line 1460 "ntp_parser.y" /* yacc.c:1646  */
3202     { (yyval.Double) = (double)(yyvsp[0].Integer); }
3203 #line 3204 "ntp_parser.c" /* yacc.c:1646  */
3204     break;
3205 
3206   case 288:
3207 #line 1471 "ntp_parser.y" /* yacc.c:1646  */
3208     {
3209 			sim_node *sn;
3210 
3211 			sn =  create_sim_node((yyvsp[-2].Attr_val_fifo), (yyvsp[-1].Sim_server_fifo));
3212 			APPEND_G_FIFO(cfgt.sim_details, sn);
3213 
3214 			/* Revert from ; to \n for end-of-command */
3215 			old_config_style = 1;
3216 		}
3217 #line 3218 "ntp_parser.c" /* yacc.c:1646  */
3218     break;
3219 
3220   case 289:
3221 #line 1488 "ntp_parser.y" /* yacc.c:1646  */
3222     { old_config_style = 0; }
3223 #line 3224 "ntp_parser.c" /* yacc.c:1646  */
3224     break;
3225 
3226   case 290:
3227 #line 1493 "ntp_parser.y" /* yacc.c:1646  */
3228     {
3229 			(yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
3230 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3231 		}
3232 #line 3233 "ntp_parser.c" /* yacc.c:1646  */
3233     break;
3234 
3235   case 291:
3236 #line 1498 "ntp_parser.y" /* yacc.c:1646  */
3237     {
3238 			(yyval.Attr_val_fifo) = NULL;
3239 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3240 		}
3241 #line 3242 "ntp_parser.c" /* yacc.c:1646  */
3242     break;
3243 
3244   case 292:
3245 #line 1506 "ntp_parser.y" /* yacc.c:1646  */
3246     { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
3247 #line 3248 "ntp_parser.c" /* yacc.c:1646  */
3248     break;
3249 
3250   case 295:
3251 #line 1516 "ntp_parser.y" /* yacc.c:1646  */
3252     {
3253 			(yyval.Sim_server_fifo) = (yyvsp[-1].Sim_server_fifo);
3254 			APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
3255 		}
3256 #line 3257 "ntp_parser.c" /* yacc.c:1646  */
3257     break;
3258 
3259   case 296:
3260 #line 1521 "ntp_parser.y" /* yacc.c:1646  */
3261     {
3262 			(yyval.Sim_server_fifo) = NULL;
3263 			APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
3264 		}
3265 #line 3266 "ntp_parser.c" /* yacc.c:1646  */
3266     break;
3267 
3268   case 297:
3269 #line 1529 "ntp_parser.y" /* yacc.c:1646  */
3270     { (yyval.Sim_server) = ONLY_SIM(create_sim_server((yyvsp[-4].Address_node), (yyvsp[-2].Double), (yyvsp[-1].Sim_script_fifo))); }
3271 #line 3272 "ntp_parser.c" /* yacc.c:1646  */
3272     break;
3273 
3274   case 298:
3275 #line 1534 "ntp_parser.y" /* yacc.c:1646  */
3276     { (yyval.Double) = (yyvsp[-1].Double); }
3277 #line 3278 "ntp_parser.c" /* yacc.c:1646  */
3278     break;
3279 
3280   case 299:
3281 #line 1539 "ntp_parser.y" /* yacc.c:1646  */
3282     { (yyval.Address_node) = (yyvsp[0].Address_node); }
3283 #line 3284 "ntp_parser.c" /* yacc.c:1646  */
3284     break;
3285 
3286   case 300:
3287 #line 1544 "ntp_parser.y" /* yacc.c:1646  */
3288     {
3289 			(yyval.Sim_script_fifo) = (yyvsp[-1].Sim_script_fifo);
3290 			APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
3291 		}
3292 #line 3293 "ntp_parser.c" /* yacc.c:1646  */
3293     break;
3294 
3295   case 301:
3296 #line 1549 "ntp_parser.y" /* yacc.c:1646  */
3297     {
3298 			(yyval.Sim_script_fifo) = NULL;
3299 			APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
3300 		}
3301 #line 3302 "ntp_parser.c" /* yacc.c:1646  */
3302     break;
3303 
3304   case 302:
3305 #line 1557 "ntp_parser.y" /* yacc.c:1646  */
3306     { (yyval.Sim_script) = ONLY_SIM(create_sim_script_info((yyvsp[-3].Double), (yyvsp[-1].Attr_val_fifo))); }
3307 #line 3308 "ntp_parser.c" /* yacc.c:1646  */
3308     break;
3309 
3310   case 303:
3311 #line 1562 "ntp_parser.y" /* yacc.c:1646  */
3312     {
3313 			(yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
3314 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3315 		}
3316 #line 3317 "ntp_parser.c" /* yacc.c:1646  */
3317     break;
3318 
3319   case 304:
3320 #line 1567 "ntp_parser.y" /* yacc.c:1646  */
3321     {
3322 			(yyval.Attr_val_fifo) = NULL;
3323 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3324 		}
3325 #line 3326 "ntp_parser.c" /* yacc.c:1646  */
3326     break;
3327 
3328   case 305:
3329 #line 1575 "ntp_parser.y" /* yacc.c:1646  */
3330     { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
3331 #line 3332 "ntp_parser.c" /* yacc.c:1646  */
3332     break;
3333 
3334 
3335 #line 3336 "ntp_parser.c" /* yacc.c:1646  */
3336       default: break;
3337     }
3338   /* User semantic actions sometimes alter yychar, and that requires
3339      that yytoken be updated with the new translation.  We take the
3340      approach of translating immediately before every use of yytoken.
3341      One alternative is translating here after every semantic action,
3342      but that translation would be missed if the semantic action invokes
3343      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3344      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
3345      incorrect destructor might then be invoked immediately.  In the
3346      case of YYERROR or YYBACKUP, subsequent parser actions might lead
3347      to an incorrect destructor call or verbose syntax error message
3348      before the lookahead is translated.  */
3349   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
3350 
3351   YYPOPSTACK (yylen);
3352   yylen = 0;
3353   YY_STACK_PRINT (yyss, yyssp);
3354 
3355   *++yyvsp = yyval;
3356 
3357   /* Now 'shift' the result of the reduction.  Determine what state
3358      that goes to, based on the state we popped back to and the rule
3359      number reduced by.  */
3360 
3361   yyn = yyr1[yyn];
3362 
3363   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3364   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3365     yystate = yytable[yystate];
3366   else
3367     yystate = yydefgoto[yyn - YYNTOKENS];
3368 
3369   goto yynewstate;
3370 
3371 
3372 /*--------------------------------------.
3373 | yyerrlab -- here on detecting error.  |
3374 `--------------------------------------*/
3375 yyerrlab:
3376   /* Make sure we have latest lookahead translation.  See comments at
3377      user semantic actions for why this is necessary.  */
3378   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
3379 
3380   /* If not already recovering from an error, report this error.  */
3381   if (!yyerrstatus)
3382     {
3383       ++yynerrs;
3384 #if ! YYERROR_VERBOSE
3385       yyerror (ip_file, YY_("syntax error"));
3386 #else
3387 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
3388                                         yyssp, yytoken)
3389       {
3390         char const *yymsgp = YY_("syntax error");
3391         int yysyntax_error_status;
3392         yysyntax_error_status = YYSYNTAX_ERROR;
3393         if (yysyntax_error_status == 0)
3394           yymsgp = yymsg;
3395         else if (yysyntax_error_status == 1)
3396           {
3397             if (yymsg != yymsgbuf)
3398               YYSTACK_FREE (yymsg);
3399             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
3400             if (!yymsg)
3401               {
3402                 yymsg = yymsgbuf;
3403                 yymsg_alloc = sizeof yymsgbuf;
3404                 yysyntax_error_status = 2;
3405               }
3406             else
3407               {
3408                 yysyntax_error_status = YYSYNTAX_ERROR;
3409                 yymsgp = yymsg;
3410               }
3411           }
3412         yyerror (ip_file, yymsgp);
3413         if (yysyntax_error_status == 2)
3414           goto yyexhaustedlab;
3415       }
3416 # undef YYSYNTAX_ERROR
3417 #endif
3418     }
3419 
3420 
3421 
3422   if (yyerrstatus == 3)
3423     {
3424       /* If just tried and failed to reuse lookahead token after an
3425          error, discard it.  */
3426 
3427       if (yychar <= YYEOF)
3428         {
3429           /* Return failure if at end of input.  */
3430           if (yychar == YYEOF)
3431             YYABORT;
3432         }
3433       else
3434         {
3435           yydestruct ("Error: discarding",
3436                       yytoken, &yylval, ip_file);
3437           yychar = YYEMPTY;
3438         }
3439     }
3440 
3441   /* Else will try to reuse lookahead token after shifting the error
3442      token.  */
3443   goto yyerrlab1;
3444 
3445 
3446 /*---------------------------------------------------.
3447 | yyerrorlab -- error raised explicitly by YYERROR.  |
3448 `---------------------------------------------------*/
3449 yyerrorlab:
3450 
3451   /* Pacify compilers like GCC when the user code never invokes
3452      YYERROR and the label yyerrorlab therefore never appears in user
3453      code.  */
3454   if (/*CONSTCOND*/ 0)
3455      goto yyerrorlab;
3456 
3457   /* Do not reclaim the symbols of the rule whose action triggered
3458      this YYERROR.  */
3459   YYPOPSTACK (yylen);
3460   yylen = 0;
3461   YY_STACK_PRINT (yyss, yyssp);
3462   yystate = *yyssp;
3463   goto yyerrlab1;
3464 
3465 
3466 /*-------------------------------------------------------------.
3467 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
3468 `-------------------------------------------------------------*/
3469 yyerrlab1:
3470   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
3471 
3472   for (;;)
3473     {
3474       yyn = yypact[yystate];
3475       if (!yypact_value_is_default (yyn))
3476         {
3477           yyn += YYTERROR;
3478           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3479             {
3480               yyn = yytable[yyn];
3481               if (0 < yyn)
3482                 break;
3483             }
3484         }
3485 
3486       /* Pop the current state because it cannot handle the error token.  */
3487       if (yyssp == yyss)
3488         YYABORT;
3489 
3490 
3491       yydestruct ("Error: popping",
3492                   yystos[yystate], yyvsp, ip_file);
3493       YYPOPSTACK (1);
3494       yystate = *yyssp;
3495       YY_STACK_PRINT (yyss, yyssp);
3496     }
3497 
3498   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3499   *++yyvsp = yylval;
3500   YY_IGNORE_MAYBE_UNINITIALIZED_END
3501 
3502 
3503   /* Shift the error token.  */
3504   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3505 
3506   yystate = yyn;
3507   goto yynewstate;
3508 
3509 
3510 /*-------------------------------------.
3511 | yyacceptlab -- YYACCEPT comes here.  |
3512 `-------------------------------------*/
3513 yyacceptlab:
3514   yyresult = 0;
3515   goto yyreturn;
3516 
3517 /*-----------------------------------.
3518 | yyabortlab -- YYABORT comes here.  |
3519 `-----------------------------------*/
3520 yyabortlab:
3521   yyresult = 1;
3522   goto yyreturn;
3523 
3524 #if !defined yyoverflow || YYERROR_VERBOSE
3525 /*-------------------------------------------------.
3526 | yyexhaustedlab -- memory exhaustion comes here.  |
3527 `-------------------------------------------------*/
3528 yyexhaustedlab:
3529   yyerror (ip_file, YY_("memory exhausted"));
3530   yyresult = 2;
3531   /* Fall through.  */
3532 #endif
3533 
3534 yyreturn:
3535   if (yychar != YYEMPTY)
3536     {
3537       /* Make sure we have latest lookahead translation.  See comments at
3538          user semantic actions for why this is necessary.  */
3539       yytoken = YYTRANSLATE (yychar);
3540       yydestruct ("Cleanup: discarding lookahead",
3541                   yytoken, &yylval, ip_file);
3542     }
3543   /* Do not reclaim the symbols of the rule whose action triggered
3544      this YYABORT or YYACCEPT.  */
3545   YYPOPSTACK (yylen);
3546   YY_STACK_PRINT (yyss, yyssp);
3547   while (yyssp != yyss)
3548     {
3549       yydestruct ("Cleanup: popping",
3550                   yystos[*yyssp], yyvsp, ip_file);
3551       YYPOPSTACK (1);
3552     }
3553 #ifndef yyoverflow
3554   if (yyss != yyssa)
3555     YYSTACK_FREE (yyss);
3556 #endif
3557 #if YYERROR_VERBOSE
3558   if (yymsg != yymsgbuf)
3559     YYSTACK_FREE (yymsg);
3560 #endif
3561   return yyresult;
3562 }
3563 #line 1586 "ntp_parser.y" /* yacc.c:1906  */
3564 
3565 
3566 void
3567 yyerror(
3568 	struct FILE_INFO *ip_file,
3569 	const char *msg
3570 	)
3571 {
3572 	int retval;
3573 
3574 	ip_file->err_line_no = ip_file->prev_token_line_no;
3575 	ip_file->err_col_no = ip_file->prev_token_col_no;
3576 
3577 	msyslog(LOG_ERR,
3578 		"line %d column %d %s",
3579 		ip_file->err_line_no,
3580 		ip_file->err_col_no,
3581 		msg);
3582 	if (!input_from_file) {
3583 		/* Save the error message in the correct buffer */
3584 		retval = snprintf(remote_config.err_msg + remote_config.err_pos,
3585 				  MAXLINE - remote_config.err_pos,
3586 				  "column %d %s",
3587 				  ip_file->err_col_no, msg);
3588 
3589 		/* Increment the value of err_pos */
3590 		if (retval > 0)
3591 			remote_config.err_pos += retval;
3592 
3593 		/* Increment the number of errors */
3594 		++remote_config.no_errors;
3595 	}
3596 }
3597 
3598 
3599 /*
3600  * token_name - convert T_ token integers to text
3601  *		example: token_name(T_Server) returns "T_Server"
3602  */
3603 const char *
3604 token_name(
3605 	int token
3606 	)
3607 {
3608 	return yytname[YYTRANSLATE(token)];
3609 }
3610 
3611 
3612 /* Initial Testing function -- ignore */
3613 #if 0
3614 int main(int argc, char *argv[])
3615 {
3616 	ip_file = FOPEN(argv[1], "r");
3617 	if (!ip_file)
3618 		fprintf(stderr, "ERROR!! Could not open file: %s\n", argv[1]);
3619 	yyparse();
3620 	return 0;
3621 }
3622 #endif
3623 
3624