1 /* A Bison parser, made by GNU Bison 3.8.2.  */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5    Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6    Inc.
7 
8    This program is free software: you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation, either version 3 of the License, or
11    (at your option) any later version.
12 
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17 
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
20 
21 /* As a special exception, you may create a larger work that contains
22    part or all of the Bison parser skeleton and distribute that work
23    under terms of your choice, so long as that work isn't itself a
24    parser generator using the skeleton or a modified version thereof
25    as a parser skeleton.  Alternatively, if you modify or redistribute
26    the parser skeleton itself, you may (at your option) remove this
27    special exception, which will cause the skeleton and the resulting
28    Bison output files to be licensed under the GNU General Public
29    License without this special exception.
30 
31    This special exception was added by the Free Software Foundation in
32    version 2.2 of Bison.  */
33 
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35    simplifying the original so-called "semantic" parser.  */
36 
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38    especially those whose name start with YY_ or yy_.  They are
39    private implementation details that can be changed or removed.  */
40 
41 /* All symbols defined below should begin with yy or YY, to avoid
42    infringing on user name space.  This should be done even for local
43    variables, as they might otherwise be expanded by user macros.
44    There are some unavoidable exceptions within include files to
45    define necessary library symbols; they are noted "INFRINGES ON
46    USER NAME SPACE" below.  */
47 
48 /* Identify Bison output, and Bison version.  */
49 #define YYBISON 30802
50 
51 /* Bison version string.  */
52 #define YYBISON_VERSION "3.8.2"
53 
54 /* Skeleton name.  */
55 #define YYSKELETON_NAME "yacc.c"
56 
57 /* Pure parsers.  */
58 #define YYPURE 1
59 
60 /* Push parsers.  */
61 #define YYPUSH 0
62 
63 /* Pull parsers.  */
64 #define YYPULL 1
65 
66 /* Substitute the type names.  */
67 #define YYSTYPE         FILTER_EXPR_STYPE
68 #define YYLTYPE         FILTER_EXPR_LTYPE
69 /* Substitute the variable and function names.  */
70 #define yyparse         filter_expr_parse
71 #define yylex           filter_expr_lex
72 #define yyerror         filter_expr_error
73 #define yydebug         filter_expr_debug
74 #define yynerrs         filter_expr_nerrs
75 
76 
77 # ifndef YY_CAST
78 #  ifdef __cplusplus
79 #   define YY_CAST(Type, Val) static_cast<Type> (Val)
80 #   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
81 #  else
82 #   define YY_CAST(Type, Val) ((Type) (Val))
83 #   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
84 #  endif
85 # endif
86 # ifndef YY_NULLPTR
87 #  if defined __cplusplus
88 #   if 201103L <= __cplusplus
89 #    define YY_NULLPTR nullptr
90 #   else
91 #    define YY_NULLPTR 0
92 #   endif
93 #  else
94 #   define YY_NULLPTR ((void*)0)
95 #  endif
96 # endif
97 
98 /* Use api.header.include to #include this header
99    instead of duplicating it here.  */
100 #ifndef YY_FILTER_EXPR_LIB_FILTER_FILTER_EXPR_GRAMMAR_H_INCLUDED
101 # define YY_FILTER_EXPR_LIB_FILTER_FILTER_EXPR_GRAMMAR_H_INCLUDED
102 /* Debug traces.  */
103 #ifndef FILTER_EXPR_DEBUG
104 # if defined YYDEBUG
105 #if YYDEBUG
106 #   define FILTER_EXPR_DEBUG 1
107 #  else
108 #   define FILTER_EXPR_DEBUG 0
109 #  endif
110 # else /* ! defined YYDEBUG */
111 #  define FILTER_EXPR_DEBUG 0
112 # endif /* ! defined YYDEBUG */
113 #endif  /* ! defined FILTER_EXPR_DEBUG */
114 #if FILTER_EXPR_DEBUG
115 extern int filter_expr_debug;
116 #endif
117 /* "%code requires" blocks.  */
118 #line 25 "lib/filter/filter-expr-grammar.y"
119 
120 
121 #include "filter/filter-expr-parser.h"
122 
123 
124 #line 125 "lib/filter/filter-expr-grammar.c"
125 
126 /* Token kinds.  */
127 #ifndef FILTER_EXPR_TOKENTYPE
128 # define FILTER_EXPR_TOKENTYPE
129   enum filter_expr_tokentype
130   {
131     FILTER_EXPR_EMPTY = -2,
132     FILTER_EXPR_EOF = 0,           /* "end of file"  */
133     FILTER_EXPR_error = 256,       /* error  */
134     FILTER_EXPR_UNDEF = 10514,     /* "invalid token"  */
135     LL_CONTEXT_ROOT = 1,           /* LL_CONTEXT_ROOT  */
136     LL_CONTEXT_DESTINATION = 2,    /* LL_CONTEXT_DESTINATION  */
137     LL_CONTEXT_SOURCE = 3,         /* LL_CONTEXT_SOURCE  */
138     LL_CONTEXT_PARSER = 4,         /* LL_CONTEXT_PARSER  */
139     LL_CONTEXT_REWRITE = 5,        /* LL_CONTEXT_REWRITE  */
140     LL_CONTEXT_FILTER = 6,         /* LL_CONTEXT_FILTER  */
141     LL_CONTEXT_LOG = 7,            /* LL_CONTEXT_LOG  */
142     LL_CONTEXT_BLOCK_DEF = 8,      /* LL_CONTEXT_BLOCK_DEF  */
143     LL_CONTEXT_BLOCK_REF = 9,      /* LL_CONTEXT_BLOCK_REF  */
144     LL_CONTEXT_BLOCK_CONTENT = 10, /* LL_CONTEXT_BLOCK_CONTENT  */
145     LL_CONTEXT_BLOCK_ARG = 11,     /* LL_CONTEXT_BLOCK_ARG  */
146     LL_CONTEXT_PRAGMA = 12,        /* LL_CONTEXT_PRAGMA  */
147     LL_CONTEXT_FORMAT = 13,        /* LL_CONTEXT_FORMAT  */
148     LL_CONTEXT_TEMPLATE_FUNC = 14, /* LL_CONTEXT_TEMPLATE_FUNC  */
149     LL_CONTEXT_INNER_DEST = 15,    /* LL_CONTEXT_INNER_DEST  */
150     LL_CONTEXT_INNER_SRC = 16,     /* LL_CONTEXT_INNER_SRC  */
151     LL_CONTEXT_CLIENT_PROTO = 17,  /* LL_CONTEXT_CLIENT_PROTO  */
152     LL_CONTEXT_SERVER_PROTO = 18,  /* LL_CONTEXT_SERVER_PROTO  */
153     LL_CONTEXT_OPTIONS = 19,       /* LL_CONTEXT_OPTIONS  */
154     LL_CONTEXT_CONFIG = 20,        /* LL_CONTEXT_CONFIG  */
155     LL_CONTEXT_MAX = 21,           /* LL_CONTEXT_MAX  */
156     KW_SOURCE = 10000,             /* KW_SOURCE  */
157     KW_FILTER = 10001,             /* KW_FILTER  */
158     KW_PARSER = 10002,             /* KW_PARSER  */
159     KW_DESTINATION = 10003,        /* KW_DESTINATION  */
160     KW_LOG = 10004,                /* KW_LOG  */
161     KW_OPTIONS = 10005,            /* KW_OPTIONS  */
162     KW_INCLUDE = 10006,            /* KW_INCLUDE  */
163     KW_BLOCK = 10007,              /* KW_BLOCK  */
164     KW_JUNCTION = 10008,           /* KW_JUNCTION  */
165     KW_CHANNEL = 10009,            /* KW_CHANNEL  */
166     KW_IF = 10010,                 /* KW_IF  */
167     KW_ELSE = 10011,               /* KW_ELSE  */
168     KW_ELIF = 10012,               /* KW_ELIF  */
169     KW_INTERNAL = 10020,           /* KW_INTERNAL  */
170     KW_SYSLOG = 10060,             /* KW_SYSLOG  */
171     KW_MARK_FREQ = 10071,          /* KW_MARK_FREQ  */
172     KW_STATS_FREQ = 10072,         /* KW_STATS_FREQ  */
173     KW_STATS_LEVEL = 10073,        /* KW_STATS_LEVEL  */
174     KW_STATS_LIFETIME = 10074,     /* KW_STATS_LIFETIME  */
175     KW_FLUSH_LINES = 10075,        /* KW_FLUSH_LINES  */
176     KW_SUPPRESS = 10076,           /* KW_SUPPRESS  */
177     KW_FLUSH_TIMEOUT = 10077,      /* KW_FLUSH_TIMEOUT  */
178     KW_LOG_MSG_SIZE = 10078,       /* KW_LOG_MSG_SIZE  */
179     KW_FILE_TEMPLATE = 10079,      /* KW_FILE_TEMPLATE  */
180     KW_PROTO_TEMPLATE = 10080,     /* KW_PROTO_TEMPLATE  */
181     KW_MARK_MODE = 10081,          /* KW_MARK_MODE  */
182     KW_ENCODING = 10082,           /* KW_ENCODING  */
183     KW_TYPE = 10083,               /* KW_TYPE  */
184     KW_STATS_MAX_DYNAMIC = 10084,  /* KW_STATS_MAX_DYNAMIC  */
185     KW_MIN_IW_SIZE_PER_READER = 10085, /* KW_MIN_IW_SIZE_PER_READER  */
186     KW_WORKERS = 10086,            /* KW_WORKERS  */
187     KW_BATCH_LINES = 10087,        /* KW_BATCH_LINES  */
188     KW_BATCH_TIMEOUT = 10088,      /* KW_BATCH_TIMEOUT  */
189     KW_TRIM_LARGE_MESSAGES = 10089, /* KW_TRIM_LARGE_MESSAGES  */
190     KW_CHAIN_HOSTNAMES = 10090,    /* KW_CHAIN_HOSTNAMES  */
191     KW_NORMALIZE_HOSTNAMES = 10091, /* KW_NORMALIZE_HOSTNAMES  */
192     KW_KEEP_HOSTNAME = 10092,      /* KW_KEEP_HOSTNAME  */
193     KW_CHECK_HOSTNAME = 10093,     /* KW_CHECK_HOSTNAME  */
194     KW_BAD_HOSTNAME = 10094,       /* KW_BAD_HOSTNAME  */
195     KW_KEEP_TIMESTAMP = 10100,     /* KW_KEEP_TIMESTAMP  */
196     KW_USE_DNS = 10110,            /* KW_USE_DNS  */
197     KW_USE_FQDN = 10111,           /* KW_USE_FQDN  */
198     KW_CUSTOM_DOMAIN = 10112,      /* KW_CUSTOM_DOMAIN  */
199     KW_DNS_CACHE = 10120,          /* KW_DNS_CACHE  */
200     KW_DNS_CACHE_SIZE = 10121,     /* KW_DNS_CACHE_SIZE  */
201     KW_DNS_CACHE_EXPIRE = 10130,   /* KW_DNS_CACHE_EXPIRE  */
202     KW_DNS_CACHE_EXPIRE_FAILED = 10131, /* KW_DNS_CACHE_EXPIRE_FAILED  */
203     KW_DNS_CACHE_HOSTS = 10132,    /* KW_DNS_CACHE_HOSTS  */
204     KW_PERSIST_ONLY = 10140,       /* KW_PERSIST_ONLY  */
205     KW_USE_RCPTID = 10141,         /* KW_USE_RCPTID  */
206     KW_USE_UNIQID = 10142,         /* KW_USE_UNIQID  */
207     KW_TZ_CONVERT = 10150,         /* KW_TZ_CONVERT  */
208     KW_TS_FORMAT = 10151,          /* KW_TS_FORMAT  */
209     KW_FRAC_DIGITS = 10152,        /* KW_FRAC_DIGITS  */
210     KW_LOG_FIFO_SIZE = 10160,      /* KW_LOG_FIFO_SIZE  */
211     KW_LOG_FETCH_LIMIT = 10162,    /* KW_LOG_FETCH_LIMIT  */
212     KW_LOG_IW_SIZE = 10163,        /* KW_LOG_IW_SIZE  */
213     KW_LOG_PREFIX = 10164,         /* KW_LOG_PREFIX  */
214     KW_PROGRAM_OVERRIDE = 10165,   /* KW_PROGRAM_OVERRIDE  */
215     KW_HOST_OVERRIDE = 10166,      /* KW_HOST_OVERRIDE  */
216     KW_THROTTLE = 10170,           /* KW_THROTTLE  */
217     KW_THREADED = 10171,           /* KW_THREADED  */
218     KW_PASS_UNIX_CREDENTIALS = 10231, /* KW_PASS_UNIX_CREDENTIALS  */
219     KW_PERSIST_NAME = 10302,       /* KW_PERSIST_NAME  */
220     KW_READ_OLD_RECORDS = 10304,   /* KW_READ_OLD_RECORDS  */
221     KW_USE_SYSLOGNG_PID = 10305,   /* KW_USE_SYSLOGNG_PID  */
222     KW_FLAGS = 10190,              /* KW_FLAGS  */
223     KW_PAD_SIZE = 10200,           /* KW_PAD_SIZE  */
224     KW_TIME_ZONE = 10201,          /* KW_TIME_ZONE  */
225     KW_RECV_TIME_ZONE = 10202,     /* KW_RECV_TIME_ZONE  */
226     KW_SEND_TIME_ZONE = 10203,     /* KW_SEND_TIME_ZONE  */
227     KW_LOCAL_TIME_ZONE = 10204,    /* KW_LOCAL_TIME_ZONE  */
228     KW_FORMAT = 10205,             /* KW_FORMAT  */
229     KW_TRUNCATE_SIZE = 10206,      /* KW_TRUNCATE_SIZE  */
230     KW_TIME_REOPEN = 10210,        /* KW_TIME_REOPEN  */
231     KW_TIME_REAP = 10211,          /* KW_TIME_REAP  */
232     KW_TIME_SLEEP = 10212,         /* KW_TIME_SLEEP  */
233     KW_TMPL_ESCAPE = 10220,        /* KW_TMPL_ESCAPE  */
234     KW_OPTIONAL = 10230,           /* KW_OPTIONAL  */
235     KW_CREATE_DIRS = 10240,        /* KW_CREATE_DIRS  */
236     KW_OWNER = 10250,              /* KW_OWNER  */
237     KW_GROUP = 10251,              /* KW_GROUP  */
238     KW_PERM = 10252,               /* KW_PERM  */
239     KW_DIR_OWNER = 10260,          /* KW_DIR_OWNER  */
240     KW_DIR_GROUP = 10261,          /* KW_DIR_GROUP  */
241     KW_DIR_PERM = 10262,           /* KW_DIR_PERM  */
242     KW_TEMPLATE = 10270,           /* KW_TEMPLATE  */
243     KW_TEMPLATE_ESCAPE = 10271,    /* KW_TEMPLATE_ESCAPE  */
244     KW_TEMPLATE_FUNCTION = 10272,  /* KW_TEMPLATE_FUNCTION  */
245     KW_DEFAULT_FACILITY = 10300,   /* KW_DEFAULT_FACILITY  */
246     KW_DEFAULT_SEVERITY = 10301,   /* KW_DEFAULT_SEVERITY  */
247     KW_PORT = 10323,               /* KW_PORT  */
248     KW_USE_TIME_RECVD = 10340,     /* KW_USE_TIME_RECVD  */
249     KW_FACILITY = 10350,           /* KW_FACILITY  */
250     KW_SEVERITY = 10351,           /* KW_SEVERITY  */
251     KW_HOST = 10352,               /* KW_HOST  */
252     KW_MATCH = 10353,              /* KW_MATCH  */
253     KW_MESSAGE = 10354,            /* KW_MESSAGE  */
254     KW_NETMASK = 10355,            /* KW_NETMASK  */
255     KW_TAGS = 10356,               /* KW_TAGS  */
256     KW_NETMASK6 = 10357,           /* KW_NETMASK6  */
257     KW_REWRITE = 10370,            /* KW_REWRITE  */
258     KW_CONDITION = 10371,          /* KW_CONDITION  */
259     KW_VALUE = 10372,              /* KW_VALUE  */
260     KW_YES = 10380,                /* KW_YES  */
261     KW_NO = 10381,                 /* KW_NO  */
262     KW_IFDEF = 10410,              /* KW_IFDEF  */
263     KW_ENDIF = 10411,              /* KW_ENDIF  */
264     LL_DOTDOT = 10420,             /* LL_DOTDOT  */
265     LL_DOTDOTDOT = 10421,          /* LL_DOTDOTDOT  */
266     LL_PRAGMA = 10422,             /* LL_PRAGMA  */
267     LL_EOL = 10423,                /* LL_EOL  */
268     LL_ERROR = 10424,              /* LL_ERROR  */
269     LL_ARROW = 10425,              /* LL_ARROW  */
270     LL_IDENTIFIER = 10430,         /* LL_IDENTIFIER  */
271     LL_NUMBER = 10431,             /* LL_NUMBER  */
272     LL_FLOAT = 10432,              /* LL_FLOAT  */
273     LL_STRING = 10433,             /* LL_STRING  */
274     LL_TOKEN = 10434,              /* LL_TOKEN  */
275     LL_BLOCK = 10435,              /* LL_BLOCK  */
276     KW_VALUE_PAIRS = 10500,        /* KW_VALUE_PAIRS  */
277     KW_EXCLUDE = 10502,            /* KW_EXCLUDE  */
278     KW_PAIR = 10503,               /* KW_PAIR  */
279     KW_KEY = 10504,                /* KW_KEY  */
280     KW_SCOPE = 10505,              /* KW_SCOPE  */
281     KW_SHIFT = 10506,              /* KW_SHIFT  */
282     KW_SHIFT_LEVELS = 10507,       /* KW_SHIFT_LEVELS  */
283     KW_REKEY = 10508,              /* KW_REKEY  */
284     KW_ADD_PREFIX = 10509,         /* KW_ADD_PREFIX  */
285     KW_REPLACE_PREFIX = 10510,     /* KW_REPLACE_PREFIX  */
286     KW_ON_ERROR = 10511,           /* KW_ON_ERROR  */
287     KW_RETRIES = 10512,            /* KW_RETRIES  */
288     KW_FETCH_NO_DATA_DELAY = 10513, /* KW_FETCH_NO_DATA_DELAY  */
289     KW_PROGRAM = 10515,            /* KW_PROGRAM  */
290     KW_IN_LIST = 10516,            /* KW_IN_LIST  */
291     KW_RATE = 10517,               /* KW_RATE  */
292     KW_OR = 10518,                 /* KW_OR  */
293     KW_AND = 10519,                /* KW_AND  */
294     KW_NOT = 10520,                /* KW_NOT  */
295     KW_LT = 10521,                 /* KW_LT  */
296     KW_LE = 10522,                 /* KW_LE  */
297     KW_EQ = 10523,                 /* KW_EQ  */
298     KW_NE = 10524,                 /* KW_NE  */
299     KW_GE = 10525,                 /* KW_GE  */
300     KW_GT = 10526,                 /* KW_GT  */
301     KW_NUM_LT = 10527,             /* KW_NUM_LT  */
302     KW_NUM_LE = 10528,             /* KW_NUM_LE  */
303     KW_NUM_EQ = 10529,             /* KW_NUM_EQ  */
304     KW_NUM_NE = 10530,             /* KW_NUM_NE  */
305     KW_NUM_GE = 10531,             /* KW_NUM_GE  */
306     KW_NUM_GT = 10532              /* KW_NUM_GT  */
307   };
308   typedef enum filter_expr_tokentype filter_expr_token_kind_t;
309 #endif
310 /* Token kinds.  */
311 #define FILTER_EXPR_EMPTY -2
312 #define FILTER_EXPR_EOF 0
313 #define FILTER_EXPR_error 256
314 #define FILTER_EXPR_UNDEF 10514
315 #define LL_CONTEXT_ROOT 1
316 #define LL_CONTEXT_DESTINATION 2
317 #define LL_CONTEXT_SOURCE 3
318 #define LL_CONTEXT_PARSER 4
319 #define LL_CONTEXT_REWRITE 5
320 #define LL_CONTEXT_FILTER 6
321 #define LL_CONTEXT_LOG 7
322 #define LL_CONTEXT_BLOCK_DEF 8
323 #define LL_CONTEXT_BLOCK_REF 9
324 #define LL_CONTEXT_BLOCK_CONTENT 10
325 #define LL_CONTEXT_BLOCK_ARG 11
326 #define LL_CONTEXT_PRAGMA 12
327 #define LL_CONTEXT_FORMAT 13
328 #define LL_CONTEXT_TEMPLATE_FUNC 14
329 #define LL_CONTEXT_INNER_DEST 15
330 #define LL_CONTEXT_INNER_SRC 16
331 #define LL_CONTEXT_CLIENT_PROTO 17
332 #define LL_CONTEXT_SERVER_PROTO 18
333 #define LL_CONTEXT_OPTIONS 19
334 #define LL_CONTEXT_CONFIG 20
335 #define LL_CONTEXT_MAX 21
336 #define KW_SOURCE 10000
337 #define KW_FILTER 10001
338 #define KW_PARSER 10002
339 #define KW_DESTINATION 10003
340 #define KW_LOG 10004
341 #define KW_OPTIONS 10005
342 #define KW_INCLUDE 10006
343 #define KW_BLOCK 10007
344 #define KW_JUNCTION 10008
345 #define KW_CHANNEL 10009
346 #define KW_IF 10010
347 #define KW_ELSE 10011
348 #define KW_ELIF 10012
349 #define KW_INTERNAL 10020
350 #define KW_SYSLOG 10060
351 #define KW_MARK_FREQ 10071
352 #define KW_STATS_FREQ 10072
353 #define KW_STATS_LEVEL 10073
354 #define KW_STATS_LIFETIME 10074
355 #define KW_FLUSH_LINES 10075
356 #define KW_SUPPRESS 10076
357 #define KW_FLUSH_TIMEOUT 10077
358 #define KW_LOG_MSG_SIZE 10078
359 #define KW_FILE_TEMPLATE 10079
360 #define KW_PROTO_TEMPLATE 10080
361 #define KW_MARK_MODE 10081
362 #define KW_ENCODING 10082
363 #define KW_TYPE 10083
364 #define KW_STATS_MAX_DYNAMIC 10084
365 #define KW_MIN_IW_SIZE_PER_READER 10085
366 #define KW_WORKERS 10086
367 #define KW_BATCH_LINES 10087
368 #define KW_BATCH_TIMEOUT 10088
369 #define KW_TRIM_LARGE_MESSAGES 10089
370 #define KW_CHAIN_HOSTNAMES 10090
371 #define KW_NORMALIZE_HOSTNAMES 10091
372 #define KW_KEEP_HOSTNAME 10092
373 #define KW_CHECK_HOSTNAME 10093
374 #define KW_BAD_HOSTNAME 10094
375 #define KW_KEEP_TIMESTAMP 10100
376 #define KW_USE_DNS 10110
377 #define KW_USE_FQDN 10111
378 #define KW_CUSTOM_DOMAIN 10112
379 #define KW_DNS_CACHE 10120
380 #define KW_DNS_CACHE_SIZE 10121
381 #define KW_DNS_CACHE_EXPIRE 10130
382 #define KW_DNS_CACHE_EXPIRE_FAILED 10131
383 #define KW_DNS_CACHE_HOSTS 10132
384 #define KW_PERSIST_ONLY 10140
385 #define KW_USE_RCPTID 10141
386 #define KW_USE_UNIQID 10142
387 #define KW_TZ_CONVERT 10150
388 #define KW_TS_FORMAT 10151
389 #define KW_FRAC_DIGITS 10152
390 #define KW_LOG_FIFO_SIZE 10160
391 #define KW_LOG_FETCH_LIMIT 10162
392 #define KW_LOG_IW_SIZE 10163
393 #define KW_LOG_PREFIX 10164
394 #define KW_PROGRAM_OVERRIDE 10165
395 #define KW_HOST_OVERRIDE 10166
396 #define KW_THROTTLE 10170
397 #define KW_THREADED 10171
398 #define KW_PASS_UNIX_CREDENTIALS 10231
399 #define KW_PERSIST_NAME 10302
400 #define KW_READ_OLD_RECORDS 10304
401 #define KW_USE_SYSLOGNG_PID 10305
402 #define KW_FLAGS 10190
403 #define KW_PAD_SIZE 10200
404 #define KW_TIME_ZONE 10201
405 #define KW_RECV_TIME_ZONE 10202
406 #define KW_SEND_TIME_ZONE 10203
407 #define KW_LOCAL_TIME_ZONE 10204
408 #define KW_FORMAT 10205
409 #define KW_TRUNCATE_SIZE 10206
410 #define KW_TIME_REOPEN 10210
411 #define KW_TIME_REAP 10211
412 #define KW_TIME_SLEEP 10212
413 #define KW_TMPL_ESCAPE 10220
414 #define KW_OPTIONAL 10230
415 #define KW_CREATE_DIRS 10240
416 #define KW_OWNER 10250
417 #define KW_GROUP 10251
418 #define KW_PERM 10252
419 #define KW_DIR_OWNER 10260
420 #define KW_DIR_GROUP 10261
421 #define KW_DIR_PERM 10262
422 #define KW_TEMPLATE 10270
423 #define KW_TEMPLATE_ESCAPE 10271
424 #define KW_TEMPLATE_FUNCTION 10272
425 #define KW_DEFAULT_FACILITY 10300
426 #define KW_DEFAULT_SEVERITY 10301
427 #define KW_PORT 10323
428 #define KW_USE_TIME_RECVD 10340
429 #define KW_FACILITY 10350
430 #define KW_SEVERITY 10351
431 #define KW_HOST 10352
432 #define KW_MATCH 10353
433 #define KW_MESSAGE 10354
434 #define KW_NETMASK 10355
435 #define KW_TAGS 10356
436 #define KW_NETMASK6 10357
437 #define KW_REWRITE 10370
438 #define KW_CONDITION 10371
439 #define KW_VALUE 10372
440 #define KW_YES 10380
441 #define KW_NO 10381
442 #define KW_IFDEF 10410
443 #define KW_ENDIF 10411
444 #define LL_DOTDOT 10420
445 #define LL_DOTDOTDOT 10421
446 #define LL_PRAGMA 10422
447 #define LL_EOL 10423
448 #define LL_ERROR 10424
449 #define LL_ARROW 10425
450 #define LL_IDENTIFIER 10430
451 #define LL_NUMBER 10431
452 #define LL_FLOAT 10432
453 #define LL_STRING 10433
454 #define LL_TOKEN 10434
455 #define LL_BLOCK 10435
456 #define KW_VALUE_PAIRS 10500
457 #define KW_EXCLUDE 10502
458 #define KW_PAIR 10503
459 #define KW_KEY 10504
460 #define KW_SCOPE 10505
461 #define KW_SHIFT 10506
462 #define KW_SHIFT_LEVELS 10507
463 #define KW_REKEY 10508
464 #define KW_ADD_PREFIX 10509
465 #define KW_REPLACE_PREFIX 10510
466 #define KW_ON_ERROR 10511
467 #define KW_RETRIES 10512
468 #define KW_FETCH_NO_DATA_DELAY 10513
469 #define KW_PROGRAM 10515
470 #define KW_IN_LIST 10516
471 #define KW_RATE 10517
472 #define KW_OR 10518
473 #define KW_AND 10519
474 #define KW_NOT 10520
475 #define KW_LT 10521
476 #define KW_LE 10522
477 #define KW_EQ 10523
478 #define KW_NE 10524
479 #define KW_GE 10525
480 #define KW_GT 10526
481 #define KW_NUM_LT 10527
482 #define KW_NUM_LE 10528
483 #define KW_NUM_EQ 10529
484 #define KW_NUM_NE 10530
485 #define KW_NUM_GE 10531
486 #define KW_NUM_GT 10532
487 
488 /* Value type.  */
489 #if ! defined FILTER_EXPR_STYPE && ! defined FILTER_EXPR_STYPE_IS_DECLARED
490 typedef CFG_STYPE FILTER_EXPR_STYPE;
491 # define FILTER_EXPR_STYPE_IS_TRIVIAL 1
492 # define FILTER_EXPR_STYPE_IS_DECLARED 1
493 #endif
494 
495 /* Location type.  */
496 typedef CFG_LTYPE FILTER_EXPR_LTYPE;
497 
498 
499 
500 
501 int filter_expr_parse (CfgLexer *lexer, FilterExprNode **result, gpointer arg);
502 
503 
504 #endif /* !YY_FILTER_EXPR_LIB_FILTER_FILTER_EXPR_GRAMMAR_H_INCLUDED  */
505 /* Symbol kind.  */
506 enum yysymbol_kind_t
507 {
508   YYSYMBOL_YYEMPTY = -2,
509   YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
510   YYSYMBOL_YYerror = 1,                    /* error  */
511   YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
512   YYSYMBOL_LL_CONTEXT_ROOT = 3,            /* LL_CONTEXT_ROOT  */
513   YYSYMBOL_LL_CONTEXT_DESTINATION = 4,     /* LL_CONTEXT_DESTINATION  */
514   YYSYMBOL_LL_CONTEXT_SOURCE = 5,          /* LL_CONTEXT_SOURCE  */
515   YYSYMBOL_LL_CONTEXT_PARSER = 6,          /* LL_CONTEXT_PARSER  */
516   YYSYMBOL_LL_CONTEXT_REWRITE = 7,         /* LL_CONTEXT_REWRITE  */
517   YYSYMBOL_LL_CONTEXT_FILTER = 8,          /* LL_CONTEXT_FILTER  */
518   YYSYMBOL_LL_CONTEXT_LOG = 9,             /* LL_CONTEXT_LOG  */
519   YYSYMBOL_LL_CONTEXT_BLOCK_DEF = 10,      /* LL_CONTEXT_BLOCK_DEF  */
520   YYSYMBOL_LL_CONTEXT_BLOCK_REF = 11,      /* LL_CONTEXT_BLOCK_REF  */
521   YYSYMBOL_LL_CONTEXT_BLOCK_CONTENT = 12,  /* LL_CONTEXT_BLOCK_CONTENT  */
522   YYSYMBOL_LL_CONTEXT_BLOCK_ARG = 13,      /* LL_CONTEXT_BLOCK_ARG  */
523   YYSYMBOL_LL_CONTEXT_PRAGMA = 14,         /* LL_CONTEXT_PRAGMA  */
524   YYSYMBOL_LL_CONTEXT_FORMAT = 15,         /* LL_CONTEXT_FORMAT  */
525   YYSYMBOL_LL_CONTEXT_TEMPLATE_FUNC = 16,  /* LL_CONTEXT_TEMPLATE_FUNC  */
526   YYSYMBOL_LL_CONTEXT_INNER_DEST = 17,     /* LL_CONTEXT_INNER_DEST  */
527   YYSYMBOL_LL_CONTEXT_INNER_SRC = 18,      /* LL_CONTEXT_INNER_SRC  */
528   YYSYMBOL_LL_CONTEXT_CLIENT_PROTO = 19,   /* LL_CONTEXT_CLIENT_PROTO  */
529   YYSYMBOL_LL_CONTEXT_SERVER_PROTO = 20,   /* LL_CONTEXT_SERVER_PROTO  */
530   YYSYMBOL_LL_CONTEXT_OPTIONS = 21,        /* LL_CONTEXT_OPTIONS  */
531   YYSYMBOL_LL_CONTEXT_CONFIG = 22,         /* LL_CONTEXT_CONFIG  */
532   YYSYMBOL_LL_CONTEXT_MAX = 23,            /* LL_CONTEXT_MAX  */
533   YYSYMBOL_KW_SOURCE = 24,                 /* KW_SOURCE  */
534   YYSYMBOL_KW_FILTER = 25,                 /* KW_FILTER  */
535   YYSYMBOL_KW_PARSER = 26,                 /* KW_PARSER  */
536   YYSYMBOL_KW_DESTINATION = 27,            /* KW_DESTINATION  */
537   YYSYMBOL_KW_LOG = 28,                    /* KW_LOG  */
538   YYSYMBOL_KW_OPTIONS = 29,                /* KW_OPTIONS  */
539   YYSYMBOL_KW_INCLUDE = 30,                /* KW_INCLUDE  */
540   YYSYMBOL_KW_BLOCK = 31,                  /* KW_BLOCK  */
541   YYSYMBOL_KW_JUNCTION = 32,               /* KW_JUNCTION  */
542   YYSYMBOL_KW_CHANNEL = 33,                /* KW_CHANNEL  */
543   YYSYMBOL_KW_IF = 34,                     /* KW_IF  */
544   YYSYMBOL_KW_ELSE = 35,                   /* KW_ELSE  */
545   YYSYMBOL_KW_ELIF = 36,                   /* KW_ELIF  */
546   YYSYMBOL_KW_INTERNAL = 37,               /* KW_INTERNAL  */
547   YYSYMBOL_KW_SYSLOG = 38,                 /* KW_SYSLOG  */
548   YYSYMBOL_KW_MARK_FREQ = 39,              /* KW_MARK_FREQ  */
549   YYSYMBOL_KW_STATS_FREQ = 40,             /* KW_STATS_FREQ  */
550   YYSYMBOL_KW_STATS_LEVEL = 41,            /* KW_STATS_LEVEL  */
551   YYSYMBOL_KW_STATS_LIFETIME = 42,         /* KW_STATS_LIFETIME  */
552   YYSYMBOL_KW_FLUSH_LINES = 43,            /* KW_FLUSH_LINES  */
553   YYSYMBOL_KW_SUPPRESS = 44,               /* KW_SUPPRESS  */
554   YYSYMBOL_KW_FLUSH_TIMEOUT = 45,          /* KW_FLUSH_TIMEOUT  */
555   YYSYMBOL_KW_LOG_MSG_SIZE = 46,           /* KW_LOG_MSG_SIZE  */
556   YYSYMBOL_KW_FILE_TEMPLATE = 47,          /* KW_FILE_TEMPLATE  */
557   YYSYMBOL_KW_PROTO_TEMPLATE = 48,         /* KW_PROTO_TEMPLATE  */
558   YYSYMBOL_KW_MARK_MODE = 49,              /* KW_MARK_MODE  */
559   YYSYMBOL_KW_ENCODING = 50,               /* KW_ENCODING  */
560   YYSYMBOL_KW_TYPE = 51,                   /* KW_TYPE  */
561   YYSYMBOL_KW_STATS_MAX_DYNAMIC = 52,      /* KW_STATS_MAX_DYNAMIC  */
562   YYSYMBOL_KW_MIN_IW_SIZE_PER_READER = 53, /* KW_MIN_IW_SIZE_PER_READER  */
563   YYSYMBOL_KW_WORKERS = 54,                /* KW_WORKERS  */
564   YYSYMBOL_KW_BATCH_LINES = 55,            /* KW_BATCH_LINES  */
565   YYSYMBOL_KW_BATCH_TIMEOUT = 56,          /* KW_BATCH_TIMEOUT  */
566   YYSYMBOL_KW_TRIM_LARGE_MESSAGES = 57,    /* KW_TRIM_LARGE_MESSAGES  */
567   YYSYMBOL_KW_CHAIN_HOSTNAMES = 58,        /* KW_CHAIN_HOSTNAMES  */
568   YYSYMBOL_KW_NORMALIZE_HOSTNAMES = 59,    /* KW_NORMALIZE_HOSTNAMES  */
569   YYSYMBOL_KW_KEEP_HOSTNAME = 60,          /* KW_KEEP_HOSTNAME  */
570   YYSYMBOL_KW_CHECK_HOSTNAME = 61,         /* KW_CHECK_HOSTNAME  */
571   YYSYMBOL_KW_BAD_HOSTNAME = 62,           /* KW_BAD_HOSTNAME  */
572   YYSYMBOL_KW_KEEP_TIMESTAMP = 63,         /* KW_KEEP_TIMESTAMP  */
573   YYSYMBOL_KW_USE_DNS = 64,                /* KW_USE_DNS  */
574   YYSYMBOL_KW_USE_FQDN = 65,               /* KW_USE_FQDN  */
575   YYSYMBOL_KW_CUSTOM_DOMAIN = 66,          /* KW_CUSTOM_DOMAIN  */
576   YYSYMBOL_KW_DNS_CACHE = 67,              /* KW_DNS_CACHE  */
577   YYSYMBOL_KW_DNS_CACHE_SIZE = 68,         /* KW_DNS_CACHE_SIZE  */
578   YYSYMBOL_KW_DNS_CACHE_EXPIRE = 69,       /* KW_DNS_CACHE_EXPIRE  */
579   YYSYMBOL_KW_DNS_CACHE_EXPIRE_FAILED = 70, /* KW_DNS_CACHE_EXPIRE_FAILED  */
580   YYSYMBOL_KW_DNS_CACHE_HOSTS = 71,        /* KW_DNS_CACHE_HOSTS  */
581   YYSYMBOL_KW_PERSIST_ONLY = 72,           /* KW_PERSIST_ONLY  */
582   YYSYMBOL_KW_USE_RCPTID = 73,             /* KW_USE_RCPTID  */
583   YYSYMBOL_KW_USE_UNIQID = 74,             /* KW_USE_UNIQID  */
584   YYSYMBOL_KW_TZ_CONVERT = 75,             /* KW_TZ_CONVERT  */
585   YYSYMBOL_KW_TS_FORMAT = 76,              /* KW_TS_FORMAT  */
586   YYSYMBOL_KW_FRAC_DIGITS = 77,            /* KW_FRAC_DIGITS  */
587   YYSYMBOL_KW_LOG_FIFO_SIZE = 78,          /* KW_LOG_FIFO_SIZE  */
588   YYSYMBOL_KW_LOG_FETCH_LIMIT = 79,        /* KW_LOG_FETCH_LIMIT  */
589   YYSYMBOL_KW_LOG_IW_SIZE = 80,            /* KW_LOG_IW_SIZE  */
590   YYSYMBOL_KW_LOG_PREFIX = 81,             /* KW_LOG_PREFIX  */
591   YYSYMBOL_KW_PROGRAM_OVERRIDE = 82,       /* KW_PROGRAM_OVERRIDE  */
592   YYSYMBOL_KW_HOST_OVERRIDE = 83,          /* KW_HOST_OVERRIDE  */
593   YYSYMBOL_KW_THROTTLE = 84,               /* KW_THROTTLE  */
594   YYSYMBOL_KW_THREADED = 85,               /* KW_THREADED  */
595   YYSYMBOL_KW_PASS_UNIX_CREDENTIALS = 86,  /* KW_PASS_UNIX_CREDENTIALS  */
596   YYSYMBOL_KW_PERSIST_NAME = 87,           /* KW_PERSIST_NAME  */
597   YYSYMBOL_KW_READ_OLD_RECORDS = 88,       /* KW_READ_OLD_RECORDS  */
598   YYSYMBOL_KW_USE_SYSLOGNG_PID = 89,       /* KW_USE_SYSLOGNG_PID  */
599   YYSYMBOL_KW_FLAGS = 90,                  /* KW_FLAGS  */
600   YYSYMBOL_KW_PAD_SIZE = 91,               /* KW_PAD_SIZE  */
601   YYSYMBOL_KW_TIME_ZONE = 92,              /* KW_TIME_ZONE  */
602   YYSYMBOL_KW_RECV_TIME_ZONE = 93,         /* KW_RECV_TIME_ZONE  */
603   YYSYMBOL_KW_SEND_TIME_ZONE = 94,         /* KW_SEND_TIME_ZONE  */
604   YYSYMBOL_KW_LOCAL_TIME_ZONE = 95,        /* KW_LOCAL_TIME_ZONE  */
605   YYSYMBOL_KW_FORMAT = 96,                 /* KW_FORMAT  */
606   YYSYMBOL_KW_TRUNCATE_SIZE = 97,          /* KW_TRUNCATE_SIZE  */
607   YYSYMBOL_KW_TIME_REOPEN = 98,            /* KW_TIME_REOPEN  */
608   YYSYMBOL_KW_TIME_REAP = 99,              /* KW_TIME_REAP  */
609   YYSYMBOL_KW_TIME_SLEEP = 100,            /* KW_TIME_SLEEP  */
610   YYSYMBOL_KW_TMPL_ESCAPE = 101,           /* KW_TMPL_ESCAPE  */
611   YYSYMBOL_KW_OPTIONAL = 102,              /* KW_OPTIONAL  */
612   YYSYMBOL_KW_CREATE_DIRS = 103,           /* KW_CREATE_DIRS  */
613   YYSYMBOL_KW_OWNER = 104,                 /* KW_OWNER  */
614   YYSYMBOL_KW_GROUP = 105,                 /* KW_GROUP  */
615   YYSYMBOL_KW_PERM = 106,                  /* KW_PERM  */
616   YYSYMBOL_KW_DIR_OWNER = 107,             /* KW_DIR_OWNER  */
617   YYSYMBOL_KW_DIR_GROUP = 108,             /* KW_DIR_GROUP  */
618   YYSYMBOL_KW_DIR_PERM = 109,              /* KW_DIR_PERM  */
619   YYSYMBOL_KW_TEMPLATE = 110,              /* KW_TEMPLATE  */
620   YYSYMBOL_KW_TEMPLATE_ESCAPE = 111,       /* KW_TEMPLATE_ESCAPE  */
621   YYSYMBOL_KW_TEMPLATE_FUNCTION = 112,     /* KW_TEMPLATE_FUNCTION  */
622   YYSYMBOL_KW_DEFAULT_FACILITY = 113,      /* KW_DEFAULT_FACILITY  */
623   YYSYMBOL_KW_DEFAULT_SEVERITY = 114,      /* KW_DEFAULT_SEVERITY  */
624   YYSYMBOL_KW_PORT = 115,                  /* KW_PORT  */
625   YYSYMBOL_KW_USE_TIME_RECVD = 116,        /* KW_USE_TIME_RECVD  */
626   YYSYMBOL_KW_FACILITY = 117,              /* KW_FACILITY  */
627   YYSYMBOL_KW_SEVERITY = 118,              /* KW_SEVERITY  */
628   YYSYMBOL_KW_HOST = 119,                  /* KW_HOST  */
629   YYSYMBOL_KW_MATCH = 120,                 /* KW_MATCH  */
630   YYSYMBOL_KW_MESSAGE = 121,               /* KW_MESSAGE  */
631   YYSYMBOL_KW_NETMASK = 122,               /* KW_NETMASK  */
632   YYSYMBOL_KW_TAGS = 123,                  /* KW_TAGS  */
633   YYSYMBOL_KW_NETMASK6 = 124,              /* KW_NETMASK6  */
634   YYSYMBOL_KW_REWRITE = 125,               /* KW_REWRITE  */
635   YYSYMBOL_KW_CONDITION = 126,             /* KW_CONDITION  */
636   YYSYMBOL_KW_VALUE = 127,                 /* KW_VALUE  */
637   YYSYMBOL_KW_YES = 128,                   /* KW_YES  */
638   YYSYMBOL_KW_NO = 129,                    /* KW_NO  */
639   YYSYMBOL_KW_IFDEF = 130,                 /* KW_IFDEF  */
640   YYSYMBOL_KW_ENDIF = 131,                 /* KW_ENDIF  */
641   YYSYMBOL_LL_DOTDOT = 132,                /* LL_DOTDOT  */
642   YYSYMBOL_LL_DOTDOTDOT = 133,             /* LL_DOTDOTDOT  */
643   YYSYMBOL_LL_PRAGMA = 134,                /* LL_PRAGMA  */
644   YYSYMBOL_LL_EOL = 135,                   /* LL_EOL  */
645   YYSYMBOL_LL_ERROR = 136,                 /* LL_ERROR  */
646   YYSYMBOL_LL_ARROW = 137,                 /* LL_ARROW  */
647   YYSYMBOL_LL_IDENTIFIER = 138,            /* LL_IDENTIFIER  */
648   YYSYMBOL_LL_NUMBER = 139,                /* LL_NUMBER  */
649   YYSYMBOL_LL_FLOAT = 140,                 /* LL_FLOAT  */
650   YYSYMBOL_LL_STRING = 141,                /* LL_STRING  */
651   YYSYMBOL_LL_TOKEN = 142,                 /* LL_TOKEN  */
652   YYSYMBOL_LL_BLOCK = 143,                 /* LL_BLOCK  */
653   YYSYMBOL_KW_VALUE_PAIRS = 144,           /* KW_VALUE_PAIRS  */
654   YYSYMBOL_KW_EXCLUDE = 145,               /* KW_EXCLUDE  */
655   YYSYMBOL_KW_PAIR = 146,                  /* KW_PAIR  */
656   YYSYMBOL_KW_KEY = 147,                   /* KW_KEY  */
657   YYSYMBOL_KW_SCOPE = 148,                 /* KW_SCOPE  */
658   YYSYMBOL_KW_SHIFT = 149,                 /* KW_SHIFT  */
659   YYSYMBOL_KW_SHIFT_LEVELS = 150,          /* KW_SHIFT_LEVELS  */
660   YYSYMBOL_KW_REKEY = 151,                 /* KW_REKEY  */
661   YYSYMBOL_KW_ADD_PREFIX = 152,            /* KW_ADD_PREFIX  */
662   YYSYMBOL_KW_REPLACE_PREFIX = 153,        /* KW_REPLACE_PREFIX  */
663   YYSYMBOL_KW_ON_ERROR = 154,              /* KW_ON_ERROR  */
664   YYSYMBOL_KW_RETRIES = 155,               /* KW_RETRIES  */
665   YYSYMBOL_KW_FETCH_NO_DATA_DELAY = 156,   /* KW_FETCH_NO_DATA_DELAY  */
666   YYSYMBOL_KW_PROGRAM = 157,               /* KW_PROGRAM  */
667   YYSYMBOL_KW_IN_LIST = 158,               /* KW_IN_LIST  */
668   YYSYMBOL_KW_RATE = 159,                  /* KW_RATE  */
669   YYSYMBOL_160_ = 160,                     /* ';'  */
670   YYSYMBOL_KW_OR = 161,                    /* KW_OR  */
671   YYSYMBOL_KW_AND = 162,                   /* KW_AND  */
672   YYSYMBOL_KW_NOT = 163,                   /* KW_NOT  */
673   YYSYMBOL_KW_LT = 164,                    /* KW_LT  */
674   YYSYMBOL_KW_LE = 165,                    /* KW_LE  */
675   YYSYMBOL_KW_EQ = 166,                    /* KW_EQ  */
676   YYSYMBOL_KW_NE = 167,                    /* KW_NE  */
677   YYSYMBOL_KW_GE = 168,                    /* KW_GE  */
678   YYSYMBOL_KW_GT = 169,                    /* KW_GT  */
679   YYSYMBOL_KW_NUM_LT = 170,                /* KW_NUM_LT  */
680   YYSYMBOL_KW_NUM_LE = 171,                /* KW_NUM_LE  */
681   YYSYMBOL_KW_NUM_EQ = 172,                /* KW_NUM_EQ  */
682   YYSYMBOL_KW_NUM_NE = 173,                /* KW_NUM_NE  */
683   YYSYMBOL_KW_NUM_GE = 174,                /* KW_NUM_GE  */
684   YYSYMBOL_KW_NUM_GT = 175,                /* KW_NUM_GT  */
685   YYSYMBOL_176_ = 176,                     /* '('  */
686   YYSYMBOL_177_ = 177,                     /* ')'  */
687   YYSYMBOL_178_ = 178,                     /* '{'  */
688   YYSYMBOL_179_ = 179,                     /* '}'  */
689   YYSYMBOL_180_ = 180,                     /* ':'  */
690   YYSYMBOL_YYACCEPT = 181,                 /* $accept  */
691   YYSYMBOL_start = 182,                    /* start  */
692   YYSYMBOL_filter_expr = 183,              /* filter_expr  */
693   YYSYMBOL_filter_simple_expr = 184,       /* filter_simple_expr  */
694   YYSYMBOL_filter_plugin = 185,            /* filter_plugin  */
695   YYSYMBOL_filter_comparison = 186,        /* filter_comparison  */
696   YYSYMBOL_operator = 187,                 /* operator  */
697   YYSYMBOL_filter_re = 188,                /* filter_re  */
698   YYSYMBOL_189_1 = 189,                    /* $@1  */
699   YYSYMBOL_190_2 = 190,                    /* $@2  */
700   YYSYMBOL_191_3 = 191,                    /* $@3  */
701   YYSYMBOL_192_4 = 192,                    /* $@4  */
702   YYSYMBOL_193_5 = 193,                    /* $@5  */
703   YYSYMBOL_filter_re_params = 194,         /* filter_re_params  */
704   YYSYMBOL_filter_re_opts = 195,           /* filter_re_opts  */
705   YYSYMBOL_filter_re_opt = 196,            /* filter_re_opt  */
706   YYSYMBOL_197_6 = 197,                    /* $@6  */
707   YYSYMBOL_filter_match_params = 198,      /* filter_match_params  */
708   YYSYMBOL_filter_match_opts = 199,        /* filter_match_opts  */
709   YYSYMBOL_filter_match_opt = 200,         /* filter_match_opt  */
710   YYSYMBOL_filter_fac_list = 201,          /* filter_fac_list  */
711   YYSYMBOL_filter_fac = 202,               /* filter_fac  */
712   YYSYMBOL_filter_severity_list = 203,     /* filter_severity_list  */
713   YYSYMBOL_filter_severity = 204,          /* filter_severity  */
714   YYSYMBOL_filter_throttle_arg = 205,      /* filter_throttle_arg  */
715   YYSYMBOL_filter_throttle_args = 206,     /* filter_throttle_args  */
716   YYSYMBOL_filter_throttle = 207,          /* filter_throttle  */
717   YYSYMBOL_208_7 = 208,                    /* $@7  */
718   YYSYMBOL_template_content_inner = 209,   /* template_content_inner  */
719   YYSYMBOL_template_content = 210,         /* template_content  */
720   YYSYMBOL_211_13 = 211,                   /* $@13  */
721   YYSYMBOL_string = 212,                   /* string  */
722   YYSYMBOL_positive_integer64 = 213,       /* positive_integer64  */
723   YYSYMBOL_positive_integer = 214,         /* positive_integer  */
724   YYSYMBOL_string_list = 215,              /* string_list  */
725   YYSYMBOL_string_list_build = 216,        /* string_list_build  */
726   YYSYMBOL_severity_string = 217,          /* severity_string  */
727   YYSYMBOL_facility_string = 218,          /* facility_string  */
728   YYSYMBOL_matcher_option = 219,           /* matcher_option  */
729   YYSYMBOL_matcher_flags = 220             /* matcher_flags  */
730 };
731 typedef enum yysymbol_kind_t yysymbol_kind_t;
732 
733 
734 
735 /* Unqualified %code blocks.  */
736 #line 31 "lib/filter/filter-expr-grammar.y"
737 
738 
739 #include "filter/filter-netmask.h"
740 #include "filter/filter-netmask6.h"
741 #include "filter/filter-op.h"
742 #include "filter/filter-cmp.h"
743 #include "filter/filter-in-list.h"
744 #include "filter/filter-tags.h"
745 #include "filter/filter-call.h"
746 #include "filter/filter-re.h"
747 #include "filter/filter-pri.h"
748 #include "filter/filter-throttle.h"
749 #include "messages.h"
750 #include "template/templates.h"
751 #include "syslog-names.h"
752 #include "plugin.h"
753 #include "cfg-grammar-internal.h"
754 
755 FilterExprNode *last_filter_expr;
756 
757 #line 67 "lib/filter/filter-expr-grammar.y"
758 
759 
760 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
761   do {                                                                  \
762     if (N)                                                              \
763       {                                                                 \
764         (Current).level = YYRHSLOC(Rhs, 1).level;                       \
765         (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;          \
766         (Current).first_column = YYRHSLOC (Rhs, 1).first_column;        \
767         (Current).last_line    = YYRHSLOC (Rhs, N).last_line;           \
768         (Current).last_column  = YYRHSLOC (Rhs, N).last_column;         \
769       }                                                                 \
770     else                                                                \
771       {                                                                 \
772         (Current).level = YYRHSLOC(Rhs, 0).level;                       \
773         (Current).first_line   = (Current).last_line   =                \
774           YYRHSLOC (Rhs, 0).last_line;                                  \
775         (Current).first_column = (Current).last_column =                \
776           YYRHSLOC (Rhs, 0).last_column;                                \
777       }                                                                 \
778   } while (0)
779 
780 #define CHECK_ERROR_WITHOUT_MESSAGE(val, token) do {                    \
781     if (!(val))                                                         \
782       {                                                                 \
783         YYERROR;                                                        \
784       }                                                                 \
785   } while (0)
786 
787 #define CHECK_ERROR(val, token, errorfmt, ...) do {                     \
788     if (!(val))                                                         \
789       {                                                                 \
790         if (errorfmt)                                                   \
791           {                                                             \
792             gchar __buf[256];                                           \
793             g_snprintf(__buf, sizeof(__buf), errorfmt, ## __VA_ARGS__); \
794             yyerror(& (token), lexer, NULL, NULL, __buf);               \
795           }                                                             \
796         YYERROR;                                                        \
797       }                                                                 \
798   } while (0)
799 
800 #define CHECK_ERROR_GERROR(val, token, error, errorfmt, ...) do {       \
801     if (!(val))                                                         \
802       {                                                                 \
803         if (errorfmt)                                                   \
804           {                                                             \
805             gchar __buf[256];                                           \
806             g_snprintf(__buf, sizeof(__buf), errorfmt ", error=%s", ## __VA_ARGS__, error->message); \
807             yyerror(& (token), lexer, NULL, NULL, __buf);               \
808           }                                                             \
809         g_clear_error(&error);						\
810         YYERROR;                                                        \
811       }                                                                 \
812   } while (0)
813 
814 #define YYMAXDEPTH 20000
815 
816 
817 
818 #line 819 "lib/filter/filter-expr-grammar.c"
819 
820 #ifdef short
821 # undef short
822 #endif
823 
824 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
825    <limits.h> and (if available) <stdint.h> are included
826    so that the code can choose integer types of a good width.  */
827 
828 #ifndef __PTRDIFF_MAX__
829 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
830 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
831 #  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
832 #  define YY_STDINT_H
833 # endif
834 #endif
835 
836 /* Narrow types that promote to a signed type and that can represent a
837    signed or unsigned integer of at least N bits.  In tables they can
838    save space and decrease cache pressure.  Promoting to a signed type
839    helps avoid bugs in integer arithmetic.  */
840 
841 #ifdef __INT_LEAST8_MAX__
842 typedef __INT_LEAST8_TYPE__ yytype_int8;
843 #elif defined YY_STDINT_H
844 typedef int_least8_t yytype_int8;
845 #else
846 typedef signed char yytype_int8;
847 #endif
848 
849 #ifdef __INT_LEAST16_MAX__
850 typedef __INT_LEAST16_TYPE__ yytype_int16;
851 #elif defined YY_STDINT_H
852 typedef int_least16_t yytype_int16;
853 #else
854 typedef short yytype_int16;
855 #endif
856 
857 /* Work around bug in HP-UX 11.23, which defines these macros
858    incorrectly for preprocessor constants.  This workaround can likely
859    be removed in 2023, as HPE has promised support for HP-UX 11.23
860    (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
861    <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
862 #ifdef __hpux
863 # undef UINT_LEAST8_MAX
864 # undef UINT_LEAST16_MAX
865 # define UINT_LEAST8_MAX 255
866 # define UINT_LEAST16_MAX 65535
867 #endif
868 
869 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
870 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
871 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
872        && UINT_LEAST8_MAX <= INT_MAX)
873 typedef uint_least8_t yytype_uint8;
874 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
875 typedef unsigned char yytype_uint8;
876 #else
877 typedef short yytype_uint8;
878 #endif
879 
880 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
881 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
882 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
883        && UINT_LEAST16_MAX <= INT_MAX)
884 typedef uint_least16_t yytype_uint16;
885 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
886 typedef unsigned short yytype_uint16;
887 #else
888 typedef int yytype_uint16;
889 #endif
890 
891 #ifndef YYPTRDIFF_T
892 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
893 #  define YYPTRDIFF_T __PTRDIFF_TYPE__
894 #  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
895 # elif defined PTRDIFF_MAX
896 #  ifndef ptrdiff_t
897 #   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
898 #  endif
899 #  define YYPTRDIFF_T ptrdiff_t
900 #  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
901 # else
902 #  define YYPTRDIFF_T long
903 #  define YYPTRDIFF_MAXIMUM LONG_MAX
904 # endif
905 #endif
906 
907 #ifndef YYSIZE_T
908 # ifdef __SIZE_TYPE__
909 #  define YYSIZE_T __SIZE_TYPE__
910 # elif defined size_t
911 #  define YYSIZE_T size_t
912 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
913 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
914 #  define YYSIZE_T size_t
915 # else
916 #  define YYSIZE_T unsigned
917 # endif
918 #endif
919 
920 #define YYSIZE_MAXIMUM                                  \
921   YY_CAST (YYPTRDIFF_T,                                 \
922            (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
923             ? YYPTRDIFF_MAXIMUM                         \
924             : YY_CAST (YYSIZE_T, -1)))
925 
926 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
927 
928 
929 /* Stored state numbers (used for stacks). */
930 typedef yytype_uint8 yy_state_t;
931 
932 /* State numbers in computations.  */
933 typedef int yy_state_fast_t;
934 
935 #ifndef YY_
936 # if defined YYENABLE_NLS && YYENABLE_NLS
937 #  if ENABLE_NLS
938 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
939 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
940 #  endif
941 # endif
942 # ifndef YY_
943 #  define YY_(Msgid) Msgid
944 # endif
945 #endif
946 
947 
948 #ifndef YY_ATTRIBUTE_PURE
949 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
950 #  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
951 # else
952 #  define YY_ATTRIBUTE_PURE
953 # endif
954 #endif
955 
956 #ifndef YY_ATTRIBUTE_UNUSED
957 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
958 #  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
959 # else
960 #  define YY_ATTRIBUTE_UNUSED
961 # endif
962 #endif
963 
964 /* Suppress unused-variable warnings by "using" E.  */
965 #if ! defined lint || defined __GNUC__
966 # define YY_USE(E) ((void) (E))
967 #else
968 # define YY_USE(E) /* empty */
969 #endif
970 
971 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
972 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
973 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
974 #  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
975     _Pragma ("GCC diagnostic push")                                     \
976     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
977 # else
978 #  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
979     _Pragma ("GCC diagnostic push")                                     \
980     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
981     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
982 # endif
983 # define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
984     _Pragma ("GCC diagnostic pop")
985 #else
986 # define YY_INITIAL_VALUE(Value) Value
987 #endif
988 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
989 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
990 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
991 #endif
992 #ifndef YY_INITIAL_VALUE
993 # define YY_INITIAL_VALUE(Value) /* Nothing. */
994 #endif
995 
996 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
997 # define YY_IGNORE_USELESS_CAST_BEGIN                          \
998     _Pragma ("GCC diagnostic push")                            \
999     _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1000 # define YY_IGNORE_USELESS_CAST_END            \
1001     _Pragma ("GCC diagnostic pop")
1002 #endif
1003 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
1004 # define YY_IGNORE_USELESS_CAST_BEGIN
1005 # define YY_IGNORE_USELESS_CAST_END
1006 #endif
1007 
1008 
1009 #define YY_ASSERT(E) ((void) (0 && (E)))
1010 
1011 #if 1
1012 
1013 /* The parser invokes alloca or malloc; define the necessary symbols.  */
1014 
1015 # ifdef YYSTACK_USE_ALLOCA
1016 #  if YYSTACK_USE_ALLOCA
1017 #   ifdef __GNUC__
1018 #    define YYSTACK_ALLOC __builtin_alloca
1019 #   elif defined __BUILTIN_VA_ARG_INCR
1020 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
1021 #   elif defined _AIX
1022 #    define YYSTACK_ALLOC __alloca
1023 #   elif defined _MSC_VER
1024 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
1025 #    define alloca _alloca
1026 #   else
1027 #    define YYSTACK_ALLOC alloca
1028 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1029 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1030       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
1031 #     ifndef EXIT_SUCCESS
1032 #      define EXIT_SUCCESS 0
1033 #     endif
1034 #    endif
1035 #   endif
1036 #  endif
1037 # endif
1038 
1039 # ifdef YYSTACK_ALLOC
1040    /* Pacify GCC's 'empty if-body' warning.  */
1041 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
1042 #  ifndef YYSTACK_ALLOC_MAXIMUM
1043     /* The OS might guarantee only one guard page at the bottom of the stack,
1044        and a page size can be as small as 4096 bytes.  So we cannot safely
1045        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
1046        to allow for a few compiler-allocated temporary stack slots.  */
1047 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
1048 #  endif
1049 # else
1050 #  define YYSTACK_ALLOC YYMALLOC
1051 #  define YYSTACK_FREE YYFREE
1052 #  ifndef YYSTACK_ALLOC_MAXIMUM
1053 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1054 #  endif
1055 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
1056        && ! ((defined YYMALLOC || defined malloc) \
1057              && (defined YYFREE || defined free)))
1058 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1059 #   ifndef EXIT_SUCCESS
1060 #    define EXIT_SUCCESS 0
1061 #   endif
1062 #  endif
1063 #  ifndef YYMALLOC
1064 #   define YYMALLOC malloc
1065 #   if ! defined malloc && ! defined EXIT_SUCCESS
1066 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1067 #   endif
1068 #  endif
1069 #  ifndef YYFREE
1070 #   define YYFREE free
1071 #   if ! defined free && ! defined EXIT_SUCCESS
1072 void free (void *); /* INFRINGES ON USER NAME SPACE */
1073 #   endif
1074 #  endif
1075 # endif
1076 #endif /* 1 */
1077 
1078 #if (! defined yyoverflow \
1079      && (! defined __cplusplus \
1080          || (defined FILTER_EXPR_LTYPE_IS_TRIVIAL && FILTER_EXPR_LTYPE_IS_TRIVIAL \
1081              && defined FILTER_EXPR_STYPE_IS_TRIVIAL && FILTER_EXPR_STYPE_IS_TRIVIAL)))
1082 
1083 /* A type that is properly aligned for any stack member.  */
1084 union yyalloc
1085 {
1086   yy_state_t yyss_alloc;
1087   YYSTYPE yyvs_alloc;
1088   YYLTYPE yyls_alloc;
1089 };
1090 
1091 /* The size of the maximum gap between one aligned stack and the next.  */
1092 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1093 
1094 /* The size of an array large to enough to hold all stacks, each with
1095    N elements.  */
1096 # define YYSTACK_BYTES(N) \
1097      ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
1098              + YYSIZEOF (YYLTYPE)) \
1099       + 2 * YYSTACK_GAP_MAXIMUM)
1100 
1101 # define YYCOPY_NEEDED 1
1102 
1103 /* Relocate STACK from its old location to the new one.  The
1104    local variables YYSIZE and YYSTACKSIZE give the old and new number of
1105    elements in the stack, and YYPTR gives the new location of the
1106    stack.  Advance YYPTR to a properly aligned location for the next
1107    stack.  */
1108 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
1109     do                                                                  \
1110       {                                                                 \
1111         YYPTRDIFF_T yynewbytes;                                         \
1112         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
1113         Stack = &yyptr->Stack_alloc;                                    \
1114         yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1115         yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
1116       }                                                                 \
1117     while (0)
1118 
1119 #endif
1120 
1121 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1122 /* Copy COUNT objects from SRC to DST.  The source and destination do
1123    not overlap.  */
1124 # ifndef YYCOPY
1125 #  if defined __GNUC__ && 1 < __GNUC__
1126 #   define YYCOPY(Dst, Src, Count) \
1127       __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1128 #  else
1129 #   define YYCOPY(Dst, Src, Count)              \
1130       do                                        \
1131         {                                       \
1132           YYPTRDIFF_T yyi;                      \
1133           for (yyi = 0; yyi < (Count); yyi++)   \
1134             (Dst)[yyi] = (Src)[yyi];            \
1135         }                                       \
1136       while (0)
1137 #  endif
1138 # endif
1139 #endif /* !YYCOPY_NEEDED */
1140 
1141 /* YYFINAL -- State number of the termination state.  */
1142 #define YYFINAL  53
1143 /* YYLAST -- Last index in YYTABLE.  */
1144 #define YYLAST   152
1145 
1146 /* YYNTOKENS -- Number of terminals.  */
1147 #define YYNTOKENS  181
1148 /* YYNNTS -- Number of nonterminals.  */
1149 #define YYNNTS  40
1150 /* YYNRULES -- Number of rules.  */
1151 #define YYNRULES  89
1152 /* YYNSTATES -- Number of states.  */
1153 #define YYNSTATES  162
1154 
1155 /* YYMAXUTOK -- Last valid token kind.  */
1156 #define YYMAXUTOK   10532
1157 
1158 
1159 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
1160    as returned by yylex, with out-of-bounds checking.  */
1161 #define YYTRANSLATE(YYX)                                \
1162   (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
1163    ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
1164    : YYSYMBOL_YYUNDEF)
1165 
1166 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1167    as returned by yylex.  */
1168 static const yytype_uint8 yytranslate[] =
1169 {
1170        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
1171       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
1172       22,    23,     2,     2,     2,     2,     2,     2,     2,     2,
1173        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1174      176,   177,     2,     2,     2,     2,     2,     2,     2,     2,
1175        2,     2,     2,     2,     2,     2,     2,     2,   180,   160,
1176        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1177        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1178        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1179        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1180        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1181        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1182        2,     2,     2,   178,     2,   179,     2,     2,     2,     2,
1183        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1184        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1185        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1186        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1187        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1188        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1189        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1190        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1191        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1192        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1193        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1194        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1195        2,     2,     2,     2,     2,     2,     1,     2,     2,     2,
1196        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1197        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1198        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1199        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1200        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1201        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1202        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1203        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1204        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1205        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1206        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1207        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1208        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1209        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1210        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1211        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1212        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1213        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1214        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1215        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1216        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1217        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1218        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1219        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1220        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1221        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1222        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1223        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1224        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1225        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1226        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1227        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1228        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1229        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1230        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1231        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1232        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1233        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1234        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1235        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1236        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1237        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1238        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1239        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1240        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1241        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1242        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1243        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1244        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1245        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1246        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1247        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1248        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1249        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1250        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1251        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1252        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1253        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1254        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1255        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1256        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1257        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1258        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1259        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1260        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1261        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1262        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1263        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1264        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1265        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1266        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1267        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1268        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1269        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1270        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1271        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1272        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1273        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1274        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1275        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1276        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1277        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1278        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1279        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1280        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1281        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1282        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1283        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1284        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1285        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1286        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1287        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1288        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1289        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1290        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1291        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1292        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1293        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1294        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1295        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1296        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1297        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1298        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1299        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1300        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1301        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1302        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1303        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1304        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1305        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1306        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1307        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1308        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1309        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1310        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1311        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1312        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1313        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1314        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1315        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1316        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1317        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1318        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1319        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1320        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1321        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1322        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1323        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1324        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1325        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1326        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1327        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1328        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1329        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1330        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1331        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1332        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1333        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1334        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1335        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1336        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1337        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1338        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1339        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1340        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1341        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1342        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1343        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1344        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1345        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1346        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1347        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1348        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1349        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1350        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1351        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1352        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1353        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1354        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1355        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1356        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1357        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1358        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1359        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1360        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1361        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1362        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1363        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1364        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1365        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1366        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1367        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1368        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1369        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1370        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1371        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1372        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1373        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1374        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1375        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1376        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1377        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1378        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1379        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1380        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1381        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1382        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1383        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1384        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1385        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1386        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1387        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1388        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1389        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1390        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1391        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1392        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1393        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1394        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1395        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1396        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1397        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1398        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1399        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1400        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1401        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1402        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1403        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1404        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1405        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1406        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1407        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1408        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1409        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1410        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1411        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1412        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1413        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1414        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1415        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1416        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1417        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1418        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1419        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1420        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1421        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1422        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1423        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1424        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1425        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1426        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1427        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1428        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1429        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1430        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1431        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1432        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1433        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1434        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1435        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1436        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1437        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1438        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1439        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1440        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1441        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1442        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1443        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1444        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1445        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1446        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1447        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1448        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1449        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1450        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1451        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1452        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1453        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1454        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1455        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1456        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1457        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1458        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1459        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1460        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1461        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1462        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1463        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1464        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1465        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1466        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1467        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1468        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1469        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1470        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1471        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1472        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1473        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1474        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1475        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1476        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1477        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1478        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1479        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1480        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1481        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1482        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1483        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1484        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1485        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1486        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1487        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1488        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1489        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1490        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1491        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1492        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1493        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1494        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1495        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1496        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1497        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1498        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1499        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1500        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1501        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1502        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1503        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1504        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1505        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1506        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1507        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1508        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1509        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1510        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1511        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1512        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1513        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1514        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1515        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1516        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1517        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1518        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1519        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1520        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1521        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1522        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1523        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1524        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1525        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1526        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1527        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1528        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1529        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1530        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1531        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1532        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1533        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1534        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1535        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1536        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1537        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1538        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1539        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1540        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1541        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1542        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1543        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1544        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1545        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1546        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1547        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1548        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1549        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1550        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1551        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1552        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1553        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1554        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1555        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1556        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1557        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1558        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1559        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1560        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1561        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1562        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1563        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1564        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1565        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1566        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1567        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1568        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1569        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1570        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1571        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1572        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1573        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1574        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1575        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1576        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1577        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1578        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1579        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1580        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1581        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1582        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1583        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1584        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1585        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1586        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1587        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1588        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1589        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1590        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1591        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1592        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1593        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1594        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1595        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1596        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1597        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1598        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1599        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1600        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1601        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1602        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1603        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1604        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1605        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1606        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1607        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1608        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1609        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1610        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1611        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1612        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1613        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1614        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1615        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1616        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1617        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1618        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1619        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1620        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1621        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1622        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1623        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1624        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1625        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1626        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1627        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1628        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1629        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1630        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1631        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1632        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1633        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1634        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1635        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1636        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1637        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1638        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1639        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1640        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1641        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1642        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1643        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1644        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1645        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1646        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1647        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1648        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1649        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1650        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1651        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1652        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1653        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1654        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1655        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1656        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1657        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1658        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1659        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1660        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1661        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1662        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1663        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1664        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1665        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1666        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1667        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1668        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1669        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1670        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1671        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1672        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1673        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1674        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1675        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1676        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1677        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1678        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1679        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1680        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1681        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1682        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1683        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1684        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1685        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1686        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1687        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1688        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1689        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1690        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1691        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1692        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1693        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1694        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1695        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1696        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1697        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1698        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1699        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1700        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1701        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1702        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1703        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1704        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1705        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1706        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1707        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1708        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1709        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1710        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1711        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1712        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1713        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1714        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1715        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1716        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1717        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1718        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1719        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1720        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1721        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1722        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1723        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1724        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1725        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1726        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1727        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1728        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1729        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1730        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1731        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1732        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1733        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1734        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1735        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1736        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1737        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1738        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1739        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1740        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1741        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1742        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1743        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1744        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1745        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1746        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1747        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1748        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1749        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1750        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1751        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1752        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1753        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1754        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1755        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1756        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1757        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1758        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1759        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1760        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1761        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1762        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1763        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1764        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1765        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1766        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1767        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1768        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1769        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1770        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1771        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1772        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1773        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1774        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1775        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1776        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1777        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1778        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1779        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1780        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1781        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1782        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1783        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1784        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1785        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1786        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1787        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1788        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1789        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1790        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1791        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1792        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1793        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1794        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1795        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1796        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1797        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1798        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1799        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1800        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1801        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1802        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1803        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1804        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1805        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1806        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1807        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1808        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1809        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1810        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1811        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1812        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1813        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1814        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1815        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1816        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1817        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1818        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1819        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1820        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1821        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1822        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1823        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1824        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1825        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1826        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1827        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1828        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1829        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1830        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1831        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1832        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1833        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1834        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1835        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1836        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1837        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1838        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1839        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1840        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1841        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1842        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1843        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1844        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1845        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1846        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1847        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1848        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1849        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1850        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1851        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1852        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1853        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1854        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1855        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1856        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1857        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1858        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1859        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1860        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1861        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1862        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1863        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1864        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1865        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1866        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1867        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1868        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1869        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1870        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1871        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1872        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1873        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1874        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1875        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1876        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1877        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1878        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1879        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1880        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1881        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1882        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1883        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1884        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1885        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1886        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1887        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1888        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1889        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1890        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1891        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1892        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1893        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1894        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1895        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1896        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1897        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1898        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1899        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1900        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1901        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1902        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1903        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1904        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1905        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1906        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1907        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1908        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1909        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1910        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1911        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1912        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1913        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1914        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1915        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1916        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1917        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1918        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1919        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1920        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1921        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1922        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1923        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1924        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1925        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1926        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1927        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1928        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1929        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1930        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1931        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1932        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1933        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1934        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1935        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1936        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1937        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1938        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1939        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1940        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1941        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1942        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1943        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1944        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1945        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1946        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1947        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1948        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1949        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1950        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1951        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1952        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1953        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1954        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1955        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1956        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1957        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1958        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1959        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1960        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1961        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1962        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1963        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1964        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1965        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1966        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1967        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1968        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1969        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1970        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1971        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1972        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1973        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1974        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1975        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1976        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1977        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1978        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1979        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1980        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1981        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1982        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1983        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1984        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1985        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1986        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1987        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1988        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1989        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1990        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1991        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1992        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1993        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1994        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1995        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1996        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1997        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1998        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1999        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2000        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2001        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2002        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2003        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2004        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2005        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2006        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2007        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2008        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2009        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2010        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2011        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2012        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2013        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2014        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2015        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2016        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2017        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2018        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2019        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2020        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2021        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2022        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2023        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2024        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2025        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2026        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2027        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2028        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2029        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2030        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2031        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2032        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2033        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2034        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2035        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2036        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2037        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2038        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2039        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2040        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2041        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2042        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2043        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2044        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2045        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2046        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2047        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2048        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2049        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2050        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2051        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2052        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2053        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2054        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2055        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2056        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2057        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2058        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2059        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2060        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2061        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2062        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2063        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2064        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2065        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2066        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2067        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2068        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2069        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2070        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2071        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2072        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2073        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2074        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2075        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2076        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2077        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2078        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2079        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2080        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2081        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2082        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2083        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2084        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2085        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2086        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2087        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2088        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2089        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2090        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2091        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2092        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2093        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2094        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2095        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2096        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2097        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2098        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2099        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2100        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2101        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2102        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2103        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2104        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2105        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2106        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2107        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2108        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2109        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2110        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2111        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2112        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2113        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2114        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2115        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2116        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2117        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2118        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2119        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2120        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2121        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2122        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2123        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2124        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2125        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2126        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2127        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2128        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2129        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2130        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2131        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2132        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2133        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2134        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2135        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2136        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2137        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2138        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2139        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2140        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2141        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2142        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2143        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2144        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2145        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2146        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2147        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2148        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2149        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2150        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2151        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2152        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2153        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2154        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2155        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2156        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2157        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2158        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2159        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2160        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2161        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2162        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2163        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2164        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2165        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2166        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2167        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2168        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2169        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2170       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
2171       34,    35,    36,     2,     2,     2,     2,     2,     2,     2,
2172       37,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2173        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2174        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2175        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2176       38,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2177        2,    39,    40,    41,    42,    43,    44,    45,    46,    47,
2178       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
2179       58,    59,    60,    61,    62,     2,     2,     2,     2,     2,
2180       63,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2181       64,    65,    66,     2,     2,     2,     2,     2,     2,     2,
2182       67,    68,     2,     2,     2,     2,     2,     2,     2,     2,
2183       69,    70,    71,     2,     2,     2,     2,     2,     2,     2,
2184       72,    73,    74,     2,     2,     2,     2,     2,     2,     2,
2185       75,    76,    77,     2,     2,     2,     2,     2,     2,     2,
2186       78,     2,    79,    80,    81,    82,    83,     2,     2,     2,
2187       84,    85,     2,     2,     2,     2,     2,     2,     2,     2,
2188        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2189       90,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2190       91,    92,    93,    94,    95,    96,    97,     2,     2,     2,
2191       98,    99,   100,     2,     2,     2,     2,     2,     2,     2,
2192      101,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2193      102,    86,     2,     2,     2,     2,     2,     2,     2,     2,
2194      103,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2195      104,   105,   106,     2,     2,     2,     2,     2,     2,     2,
2196      107,   108,   109,     2,     2,     2,     2,     2,     2,     2,
2197      110,   111,   112,     2,     2,     2,     2,     2,     2,     2,
2198        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2199        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2200      113,   114,    87,     2,    88,    89,     2,     2,     2,     2,
2201        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2202        2,     2,     2,   115,     2,     2,     2,     2,     2,     2,
2203        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2204      116,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2205      117,   118,   119,   120,   121,   122,   123,   124,     2,     2,
2206        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2207      125,   126,   127,     2,     2,     2,     2,     2,     2,     2,
2208      128,   129,     2,     2,     2,     2,     2,     2,     2,     2,
2209        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2210        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2211      130,   131,     2,     2,     2,     2,     2,     2,     2,     2,
2212      132,   133,   134,   135,   136,   137,     2,     2,     2,     2,
2213      138,   139,   140,   141,   142,   143,     2,     2,     2,     2,
2214        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2215        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2216        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2217        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2218        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2219        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2220      144,     2,   145,   146,   147,   148,   149,   150,   151,   152,
2221      153,   154,   155,   156,     2,   157,   158,   159,   161,   162,
2222      163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
2223      173,   174,   175
2224 };
2225 
2226 #if FILTER_EXPR_DEBUG
2227 /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
2228 static const yytype_int16 yyrline[] =
2229 {
2230        0,   433,   433,   437,   438,   439,   440,   441,   442,   443,
2231      447,   448,   449,   450,   451,   452,   460,   461,   475,   489,
2232      490,   491,   492,   497,   517,   534,   535,   536,   537,   538,
2233      539,   540,   541,   542,   543,   544,   545,   549,   549,   550,
2234      550,   551,   551,   552,   552,   553,   553,   557,   567,   568,
2235      572,   572,   577,   595,   596,   600,   601,   622,   629,   630,
2236      634,   638,   642,   643,   647,   651,   658,   663,   670,   671,
2237      675,   675,   911,   918,   931,   931,   942,   943,   972,   979,
2238     1040,  1044,  1045,  1054,  1065,  1073,  1343,  1344,  1348,  1349
2239 };
2240 #endif
2241 
2242 /** Accessing symbol of state STATE.  */
2243 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2244 
2245 #if 1
2246 /* The user-facing name of the symbol whose (internal) number is
2247    YYSYMBOL.  No bounds checking.  */
2248 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2249 
2250 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2251    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
2252 static const char *const yytname[] =
2253 {
2254   "\"end of file\"", "error", "\"invalid token\"", "LL_CONTEXT_ROOT",
2255   "LL_CONTEXT_DESTINATION", "LL_CONTEXT_SOURCE", "LL_CONTEXT_PARSER",
2256   "LL_CONTEXT_REWRITE", "LL_CONTEXT_FILTER", "LL_CONTEXT_LOG",
2257   "LL_CONTEXT_BLOCK_DEF", "LL_CONTEXT_BLOCK_REF",
2258   "LL_CONTEXT_BLOCK_CONTENT", "LL_CONTEXT_BLOCK_ARG", "LL_CONTEXT_PRAGMA",
2259   "LL_CONTEXT_FORMAT", "LL_CONTEXT_TEMPLATE_FUNC", "LL_CONTEXT_INNER_DEST",
2260   "LL_CONTEXT_INNER_SRC", "LL_CONTEXT_CLIENT_PROTO",
2261   "LL_CONTEXT_SERVER_PROTO", "LL_CONTEXT_OPTIONS", "LL_CONTEXT_CONFIG",
2262   "LL_CONTEXT_MAX", "KW_SOURCE", "KW_FILTER", "KW_PARSER",
2263   "KW_DESTINATION", "KW_LOG", "KW_OPTIONS", "KW_INCLUDE", "KW_BLOCK",
2264   "KW_JUNCTION", "KW_CHANNEL", "KW_IF", "KW_ELSE", "KW_ELIF",
2265   "KW_INTERNAL", "KW_SYSLOG", "KW_MARK_FREQ", "KW_STATS_FREQ",
2266   "KW_STATS_LEVEL", "KW_STATS_LIFETIME", "KW_FLUSH_LINES", "KW_SUPPRESS",
2267   "KW_FLUSH_TIMEOUT", "KW_LOG_MSG_SIZE", "KW_FILE_TEMPLATE",
2268   "KW_PROTO_TEMPLATE", "KW_MARK_MODE", "KW_ENCODING", "KW_TYPE",
2269   "KW_STATS_MAX_DYNAMIC", "KW_MIN_IW_SIZE_PER_READER", "KW_WORKERS",
2270   "KW_BATCH_LINES", "KW_BATCH_TIMEOUT", "KW_TRIM_LARGE_MESSAGES",
2271   "KW_CHAIN_HOSTNAMES", "KW_NORMALIZE_HOSTNAMES", "KW_KEEP_HOSTNAME",
2272   "KW_CHECK_HOSTNAME", "KW_BAD_HOSTNAME", "KW_KEEP_TIMESTAMP",
2273   "KW_USE_DNS", "KW_USE_FQDN", "KW_CUSTOM_DOMAIN", "KW_DNS_CACHE",
2274   "KW_DNS_CACHE_SIZE", "KW_DNS_CACHE_EXPIRE", "KW_DNS_CACHE_EXPIRE_FAILED",
2275   "KW_DNS_CACHE_HOSTS", "KW_PERSIST_ONLY", "KW_USE_RCPTID",
2276   "KW_USE_UNIQID", "KW_TZ_CONVERT", "KW_TS_FORMAT", "KW_FRAC_DIGITS",
2277   "KW_LOG_FIFO_SIZE", "KW_LOG_FETCH_LIMIT", "KW_LOG_IW_SIZE",
2278   "KW_LOG_PREFIX", "KW_PROGRAM_OVERRIDE", "KW_HOST_OVERRIDE",
2279   "KW_THROTTLE", "KW_THREADED", "KW_PASS_UNIX_CREDENTIALS",
2280   "KW_PERSIST_NAME", "KW_READ_OLD_RECORDS", "KW_USE_SYSLOGNG_PID",
2281   "KW_FLAGS", "KW_PAD_SIZE", "KW_TIME_ZONE", "KW_RECV_TIME_ZONE",
2282   "KW_SEND_TIME_ZONE", "KW_LOCAL_TIME_ZONE", "KW_FORMAT",
2283   "KW_TRUNCATE_SIZE", "KW_TIME_REOPEN", "KW_TIME_REAP", "KW_TIME_SLEEP",
2284   "KW_TMPL_ESCAPE", "KW_OPTIONAL", "KW_CREATE_DIRS", "KW_OWNER",
2285   "KW_GROUP", "KW_PERM", "KW_DIR_OWNER", "KW_DIR_GROUP", "KW_DIR_PERM",
2286   "KW_TEMPLATE", "KW_TEMPLATE_ESCAPE", "KW_TEMPLATE_FUNCTION",
2287   "KW_DEFAULT_FACILITY", "KW_DEFAULT_SEVERITY", "KW_PORT",
2288   "KW_USE_TIME_RECVD", "KW_FACILITY", "KW_SEVERITY", "KW_HOST", "KW_MATCH",
2289   "KW_MESSAGE", "KW_NETMASK", "KW_TAGS", "KW_NETMASK6", "KW_REWRITE",
2290   "KW_CONDITION", "KW_VALUE", "KW_YES", "KW_NO", "KW_IFDEF", "KW_ENDIF",
2291   "LL_DOTDOT", "LL_DOTDOTDOT", "LL_PRAGMA", "LL_EOL", "LL_ERROR",
2292   "LL_ARROW", "LL_IDENTIFIER", "LL_NUMBER", "LL_FLOAT", "LL_STRING",
2293   "LL_TOKEN", "LL_BLOCK", "KW_VALUE_PAIRS", "KW_EXCLUDE", "KW_PAIR",
2294   "KW_KEY", "KW_SCOPE", "KW_SHIFT", "KW_SHIFT_LEVELS", "KW_REKEY",
2295   "KW_ADD_PREFIX", "KW_REPLACE_PREFIX", "KW_ON_ERROR", "KW_RETRIES",
2296   "KW_FETCH_NO_DATA_DELAY", "KW_PROGRAM", "KW_IN_LIST", "KW_RATE", "';'",
2297   "KW_OR", "KW_AND", "KW_NOT", "KW_LT", "KW_LE", "KW_EQ", "KW_NE", "KW_GE",
2298   "KW_GT", "KW_NUM_LT", "KW_NUM_LE", "KW_NUM_EQ", "KW_NUM_NE", "KW_NUM_GE",
2299   "KW_NUM_GT", "'('", "')'", "'{'", "'}'", "':'", "$accept", "start",
2300   "filter_expr", "filter_simple_expr", "filter_plugin",
2301   "filter_comparison", "operator", "filter_re", "$@1", "$@2", "$@3", "$@4",
2302   "$@5", "filter_re_params", "filter_re_opts", "filter_re_opt", "$@6",
2303   "filter_match_params", "filter_match_opts", "filter_match_opt",
2304   "filter_fac_list", "filter_fac", "filter_severity_list",
2305   "filter_severity", "filter_throttle_arg", "filter_throttle_args",
2306   "filter_throttle", "$@7", "template_content_inner", "template_content",
2307   "$@13", "string", "positive_integer64", "positive_integer",
2308   "string_list", "string_list_build", "severity_string", "facility_string",
2309   "matcher_option", "matcher_flags", YY_NULLPTR
2310 };
2311 
2312 static const char *
yysymbol_name(yysymbol_kind_t yysymbol)2313 yysymbol_name (yysymbol_kind_t yysymbol)
2314 {
2315   return yytname[yysymbol];
2316 }
2317 #endif
2318 
2319 #define YYPACT_NINF (-170)
2320 
2321 #define yypact_value_is_default(Yyn) \
2322   ((Yyn) == YYPACT_NINF)
2323 
2324 #define YYTABLE_NINF (-55)
2325 
2326 #define yytable_value_is_error(Yyn) \
2327   0
2328 
2329 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
2330    STATE-NUM.  */
2331 static const yytype_int16 yypact[] =
2332 {
2333      -24,  -170,  -169,  -170,  -165,  -160,  -170,  -170,  -170,  -158,
2334     -153,  -132,  -170,   -83,  -170,  -131,   -24,   -24,    46,  -129,
2335     -170,  -170,  -170,  -170,  -170,  -128,  -113,  -126,   -35,  -113,
2336     -128,  -125,  -128,  -113,  -113,  -113,  -170,  -170,  -170,  -170,
2337     -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,   -94,  -128,
2338     -113,  -170,  -140,  -170,   -24,   -24,   -24,  -113,  -170,  -170,
2339     -170,  -123,  -104,  -170,  -119,  -118,   -29,  -170,   -80,  -116,
2340     -113,  -170,   -76,  -170,  -113,  -170,  -170,  -115,  -113,  -110,
2341     -170,  -109,  -170,  -170,  -103,  -170,  -121,   -91,  -170,  -107,
2342     -170,  -102,  -101,  -104,  -105,  -170,  -170,  -170,   -29,  -170,
2343     -170,  -113,  -108,  -170,  -170,  -170,  -170,  -100,   -98,   -72,
2344     -107,   -47,  -170,   -66,  -170,  -170,  -170,  -170,   -75,   -69,
2345     -170,   -64,  -108,  -113,  -170,  -170,  -170,   -68,   -65,  -170,
2346      -61,   -99,  -170,  -170,   -59,  -170,  -113,  -170,  -170,   -56,
2347     -113,  -113,  -170,   -54,  -170,  -170,  -170,   -53,   -52,   -51,
2348      -50,  -113,   -49,  -113,  -170,  -170,  -170,  -170,  -170,  -170,
2349      -48,  -170
2350 };
2351 
2352 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
2353    Performed when YYTABLE does not specify something else to do.  Zero
2354    means the default is an error.  */
2355 static const yytype_int8 yydefact[] =
2356 {
2357        0,    43,     0,    70,     0,     0,    39,    45,    41,     0,
2358        0,     0,    23,     0,    37,     0,     0,     0,     0,     2,
2359        3,    20,    21,    19,    22,     0,     0,     0,     0,     0,
2360        0,     0,     0,     0,    82,     0,    31,    32,    33,    34,
2361       35,    36,    25,    26,    27,    28,    29,    30,     0,     0,
2362        0,     4,     0,     1,     8,     0,     0,     0,    44,    76,
2363       77,     0,    69,    85,     0,     0,    59,    84,    61,     0,
2364       63,    83,    65,    40,     0,    46,    42,     0,    82,     0,
2365       80,     0,    24,    38,     0,     9,     7,     5,     6,    50,
2366       13,     0,     0,    69,     0,    11,    10,    58,     0,    12,
2367       62,     0,    50,    14,    81,    16,    15,     0,     0,     0,
2368       50,     0,    74,     0,    68,    71,    60,    64,     0,     0,
2369       55,     0,    50,     0,    17,    47,    48,     0,     0,    51,
2370        0,     0,    78,    79,     0,    74,     0,    52,    53,     0,
2371        0,    89,    66,    76,    75,    72,    67,     0,     0,     0,
2372        0,    89,     0,     0,    57,    56,    18,    86,    88,    87,
2373        0,    73
2374 };
2375 
2376 /* YYPGOTO[NTERM-NUM].  */
2377 static const yytype_int16 yypgoto[] =
2378 {
2379     -170,  -170,    10,  -170,  -170,  -170,  -170,  -170,  -170,  -170,
2380     -170,  -170,  -170,   -15,   -33,   -92,  -170,  -170,   -44,  -170,
2381       57,  -170,    61,  -170,  -170,    42,  -170,  -170,  -170,     1,
2382     -170,   -21,  -170,  -170,  -170,    59,    37,    43,  -170,   -11
2383 };
2384 
2385 /* YYDEFGOTO[NTERM-NUM].  */
2386 static const yytype_uint8 yydefgoto[] =
2387 {
2388        0,    18,    19,    20,    21,    22,    48,    23,    49,    30,
2389       32,    25,    31,    58,   109,   110,   111,    75,   121,   122,
2390       65,    66,    69,    70,    93,    94,    24,    27,   144,   130,
2391      131,    67,   133,   134,    79,    80,    72,    68,   129,   152
2392 };
2393 
2394 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
2395    positive, shift that token.  If negative, reduce the rule whose
2396    number is the opposite.  If YYTABLE_NINF, syntax error.  */
2397 static const yytype_int16 yytable[] =
2398 {
2399        1,     2,   118,    63,   127,    61,    91,    26,    71,    63,
2400      120,    28,    77,    78,    81,    73,    29,    76,    33,   119,
2401       54,    55,    56,    34,   107,    59,    51,    52,    60,    84,
2402      120,    54,    55,    56,    83,    59,    89,    85,    60,   143,
2403       55,    56,    60,   128,    35,    50,    53,    82,    57,    71,
2404       62,    74,    98,   102,    90,    92,   101,    78,    95,    96,
2405        3,    99,   103,   108,    86,    87,    88,   105,   106,   -54,
2406      -49,    56,   115,   132,   112,   113,   123,   126,   138,   124,
2407       71,    36,    37,    38,    39,    40,    41,    42,    43,    44,
2408       45,    46,    47,     4,     5,     6,     7,     8,     9,    10,
2409       11,   135,   139,    59,    64,   125,    60,   136,   140,    59,
2410      145,   141,    60,   137,    12,   148,   142,    13,   146,   150,
2411      151,   149,   153,    97,   154,   155,   156,   157,   159,   161,
2412      151,   100,   160,    14,    15,   114,   147,   104,   117,    16,
2413      158,   116,     0,     0,     0,     0,     0,     0,     0,     0,
2414        0,     0,    17
2415 };
2416 
2417 static const yytype_int16 yycheck[] =
2418 {
2419       24,    25,   110,    38,    51,    26,   110,   176,    29,    38,
2420      102,   176,    33,    34,    35,    30,   176,    32,   176,   127,
2421      160,   161,   162,   176,   127,   138,    16,    17,   141,    50,
2422      122,   160,   161,   162,    49,   138,    57,   177,   141,   138,
2423      161,   162,   141,    90,   176,   176,     0,   141,   176,    70,
2424      176,   176,   132,    74,   177,   159,   132,    78,   177,   177,
2425       84,   177,   177,    84,    54,    55,    56,   177,   177,   177,
2426      177,   162,   177,   139,   176,   176,   176,   110,   122,   177,
2427      101,   164,   165,   166,   167,   168,   169,   170,   171,   172,
2428      173,   174,   175,   117,   118,   119,   120,   121,   122,   123,
2429      124,   176,   123,   138,   139,   177,   141,   176,   176,   138,
2430      131,   176,   141,   177,   138,   136,   177,   141,   177,   140,
2431      141,   177,   176,    66,   177,   177,   177,   177,   177,   177,
2432      151,    70,   153,   157,   158,    93,   135,    78,   101,   163,
2433      151,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2434       -1,    -1,   176
2435 };
2436 
2437 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
2438    state STATE-NUM.  */
2439 static const yytype_uint8 yystos[] =
2440 {
2441        0,    24,    25,    84,   117,   118,   119,   120,   121,   122,
2442      123,   124,   138,   141,   157,   158,   163,   176,   182,   183,
2443      184,   185,   186,   188,   207,   192,   176,   208,   176,   176,
2444      190,   193,   191,   176,   176,   176,   164,   165,   166,   167,
2445      168,   169,   170,   171,   172,   173,   174,   175,   187,   189,
2446      176,   183,   183,     0,   160,   161,   162,   176,   194,   138,
2447      141,   212,   176,    38,   139,   201,   202,   212,   218,   203,
2448      204,   212,   217,   194,   176,   198,   194,   212,   212,   215,
2449      216,   212,   141,   194,   212,   177,   183,   183,   183,   212,
2450      177,   110,   159,   205,   206,   177,   177,   201,   132,   177,
2451      203,   132,   212,   177,   216,   177,   177,   127,   212,   195,
2452      196,   197,   176,   176,   206,   177,   218,   217,   110,   127,
2453      196,   199,   200,   176,   177,   177,   195,    51,    90,   219,
2454      210,   211,   139,   213,   214,   176,   176,   177,   199,   212,
2455      176,   176,   177,   138,   209,   212,   177,   210,   212,   177,
2456      212,   212,   220,   176,   177,   177,   177,   177,   220,   177,
2457      212,   177
2458 };
2459 
2460 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
2461 static const yytype_uint8 yyr1[] =
2462 {
2463        0,   181,   182,   183,   183,   183,   183,   183,   183,   183,
2464      184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
2465      184,   184,   184,   185,   186,   187,   187,   187,   187,   187,
2466      187,   187,   187,   187,   187,   187,   187,   189,   188,   190,
2467      188,   191,   188,   192,   188,   193,   188,   194,   195,   195,
2468      197,   196,   198,   199,   199,   200,   200,   200,   201,   201,
2469      202,   202,   203,   203,   204,   204,   205,   205,   206,   206,
2470      208,   207,   209,   209,   211,   210,   212,   212,   213,   214,
2471      215,   216,   216,   217,   218,   218,   219,   219,   220,   220
2472 };
2473 
2474 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
2475 static const yytype_int8 yyr2[] =
2476 {
2477        0,     2,     1,     1,     2,     3,     3,     3,     2,     3,
2478        4,     4,     4,     4,     4,     4,     4,     5,     8,     1,
2479        1,     1,     1,     1,     3,     1,     1,     1,     1,     1,
2480        1,     1,     1,     1,     1,     1,     1,     0,     3,     0,
2481        3,     0,     3,     0,     3,     0,     3,     4,     2,     0,
2482        0,     2,     4,     2,     0,     1,     4,     4,     2,     1,
2483        3,     1,     2,     1,     3,     1,     4,     4,     2,     0,
2484        0,     5,     1,     4,     0,     2,     1,     1,     1,     1,
2485        1,     2,     0,     1,     1,     1,     4,     4,     2,     0
2486 };
2487 
2488 
2489 enum { YYENOMEM = -2 };
2490 
2491 #define yyerrok         (yyerrstatus = 0)
2492 #define yyclearin       (yychar = FILTER_EXPR_EMPTY)
2493 
2494 #define YYACCEPT        goto yyacceptlab
2495 #define YYABORT         goto yyabortlab
2496 #define YYERROR         goto yyerrorlab
2497 #define YYNOMEM         goto yyexhaustedlab
2498 
2499 
2500 #define YYRECOVERING()  (!!yyerrstatus)
2501 
2502 #define YYBACKUP(Token, Value)                                    \
2503   do                                                              \
2504     if (yychar == FILTER_EXPR_EMPTY)                                        \
2505       {                                                           \
2506         yychar = (Token);                                         \
2507         yylval = (Value);                                         \
2508         YYPOPSTACK (yylen);                                       \
2509         yystate = *yyssp;                                         \
2510         goto yybackup;                                            \
2511       }                                                           \
2512     else                                                          \
2513       {                                                           \
2514         yyerror (&yylloc, lexer, result, arg, YY_("syntax error: cannot back up")); \
2515         YYERROR;                                                  \
2516       }                                                           \
2517   while (0)
2518 
2519 /* Backward compatibility with an undocumented macro.
2520    Use FILTER_EXPR_error or FILTER_EXPR_UNDEF. */
2521 #define YYERRCODE FILTER_EXPR_UNDEF
2522 
2523 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2524    If N is 0, then set CURRENT to the empty location which ends
2525    the previous symbol: RHS[0] (always defined).  */
2526 
2527 #ifndef YYLLOC_DEFAULT
2528 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
2529     do                                                                  \
2530       if (N)                                                            \
2531         {                                                               \
2532           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
2533           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
2534           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
2535           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
2536         }                                                               \
2537       else                                                              \
2538         {                                                               \
2539           (Current).first_line   = (Current).last_line   =              \
2540             YYRHSLOC (Rhs, 0).last_line;                                \
2541           (Current).first_column = (Current).last_column =              \
2542             YYRHSLOC (Rhs, 0).last_column;                              \
2543         }                                                               \
2544     while (0)
2545 #endif
2546 
2547 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2548 
2549 
2550 /* Enable debugging if requested.  */
2551 #if FILTER_EXPR_DEBUG
2552 
2553 # ifndef YYFPRINTF
2554 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2555 #  define YYFPRINTF fprintf
2556 # endif
2557 
2558 # define YYDPRINTF(Args)                        \
2559 do {                                            \
2560   if (yydebug)                                  \
2561     YYFPRINTF Args;                             \
2562 } while (0)
2563 
2564 
2565 /* YYLOCATION_PRINT -- Print the location on the stream.
2566    This macro was not mandated originally: define only if we know
2567    we won't break user code: when these are the locations we know.  */
2568 
2569 # ifndef YYLOCATION_PRINT
2570 
2571 #  if defined YY_LOCATION_PRINT
2572 
2573    /* Temporary convenience wrapper in case some people defined the
2574       undocumented and private YY_LOCATION_PRINT macros.  */
2575 #   define YYLOCATION_PRINT(File, Loc)  YY_LOCATION_PRINT(File, *(Loc))
2576 
2577 #  elif defined FILTER_EXPR_LTYPE_IS_TRIVIAL && FILTER_EXPR_LTYPE_IS_TRIVIAL
2578 
2579 /* Print *YYLOCP on YYO.  Private, do not rely on its existence. */
2580 
2581 YY_ATTRIBUTE_UNUSED
2582 static int
yy_location_print_(FILE * yyo,YYLTYPE const * const yylocp)2583 yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
2584 {
2585   int res = 0;
2586   int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
2587   if (0 <= yylocp->first_line)
2588     {
2589       res += YYFPRINTF (yyo, "%d", yylocp->first_line);
2590       if (0 <= yylocp->first_column)
2591         res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
2592     }
2593   if (0 <= yylocp->last_line)
2594     {
2595       if (yylocp->first_line < yylocp->last_line)
2596         {
2597           res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
2598           if (0 <= end_col)
2599             res += YYFPRINTF (yyo, ".%d", end_col);
2600         }
2601       else if (0 <= end_col && yylocp->first_column < end_col)
2602         res += YYFPRINTF (yyo, "-%d", end_col);
2603     }
2604   return res;
2605 }
2606 
2607 #   define YYLOCATION_PRINT  yy_location_print_
2608 
2609     /* Temporary convenience wrapper in case some people defined the
2610        undocumented and private YY_LOCATION_PRINT macros.  */
2611 #   define YY_LOCATION_PRINT(File, Loc)  YYLOCATION_PRINT(File, &(Loc))
2612 
2613 #  else
2614 
2615 #   define YYLOCATION_PRINT(File, Loc) ((void) 0)
2616     /* Temporary convenience wrapper in case some people defined the
2617        undocumented and private YY_LOCATION_PRINT macros.  */
2618 #   define YY_LOCATION_PRINT  YYLOCATION_PRINT
2619 
2620 #  endif
2621 # endif /* !defined YYLOCATION_PRINT */
2622 
2623 
2624 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
2625 do {                                                                      \
2626   if (yydebug)                                                            \
2627     {                                                                     \
2628       YYFPRINTF (stderr, "%s ", Title);                                   \
2629       yy_symbol_print (stderr,                                            \
2630                   Kind, Value, Location, lexer, result, arg); \
2631       YYFPRINTF (stderr, "\n");                                           \
2632     }                                                                     \
2633 } while (0)
2634 
2635 
2636 /*-----------------------------------.
2637 | Print this symbol's value on YYO.  |
2638 `-----------------------------------*/
2639 
2640 static void
yy_symbol_value_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep,YYLTYPE const * const yylocationp,CfgLexer * lexer,FilterExprNode ** result,gpointer arg)2641 yy_symbol_value_print (FILE *yyo,
2642                        yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, CfgLexer *lexer, FilterExprNode **result, gpointer arg)
2643 {
2644   FILE *yyoutput = yyo;
2645   YY_USE (yyoutput);
2646   YY_USE (yylocationp);
2647   YY_USE (lexer);
2648   YY_USE (result);
2649   YY_USE (arg);
2650   if (!yyvaluep)
2651     return;
2652   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2653   YY_USE (yykind);
2654   YY_IGNORE_MAYBE_UNINITIALIZED_END
2655 }
2656 
2657 
2658 /*---------------------------.
2659 | Print this symbol on YYO.  |
2660 `---------------------------*/
2661 
2662 static void
yy_symbol_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep,YYLTYPE const * const yylocationp,CfgLexer * lexer,FilterExprNode ** result,gpointer arg)2663 yy_symbol_print (FILE *yyo,
2664                  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, CfgLexer *lexer, FilterExprNode **result, gpointer arg)
2665 {
2666   YYFPRINTF (yyo, "%s %s (",
2667              yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2668 
2669   YYLOCATION_PRINT (yyo, yylocationp);
2670   YYFPRINTF (yyo, ": ");
2671   yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, lexer, result, arg);
2672   YYFPRINTF (yyo, ")");
2673 }
2674 
2675 /*------------------------------------------------------------------.
2676 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2677 | TOP (included).                                                   |
2678 `------------------------------------------------------------------*/
2679 
2680 static void
yy_stack_print(yy_state_t * yybottom,yy_state_t * yytop)2681 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
2682 {
2683   YYFPRINTF (stderr, "Stack now");
2684   for (; yybottom <= yytop; yybottom++)
2685     {
2686       int yybot = *yybottom;
2687       YYFPRINTF (stderr, " %d", yybot);
2688     }
2689   YYFPRINTF (stderr, "\n");
2690 }
2691 
2692 # define YY_STACK_PRINT(Bottom, Top)                            \
2693 do {                                                            \
2694   if (yydebug)                                                  \
2695     yy_stack_print ((Bottom), (Top));                           \
2696 } while (0)
2697 
2698 
2699 /*------------------------------------------------.
2700 | Report that the YYRULE is going to be reduced.  |
2701 `------------------------------------------------*/
2702 
2703 static void
yy_reduce_print(yy_state_t * yyssp,YYSTYPE * yyvsp,YYLTYPE * yylsp,int yyrule,CfgLexer * lexer,FilterExprNode ** result,gpointer arg)2704 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp,
2705                  int yyrule, CfgLexer *lexer, FilterExprNode **result, gpointer arg)
2706 {
2707   int yylno = yyrline[yyrule];
2708   int yynrhs = yyr2[yyrule];
2709   int yyi;
2710   YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
2711              yyrule - 1, yylno);
2712   /* The symbols being reduced.  */
2713   for (yyi = 0; yyi < yynrhs; yyi++)
2714     {
2715       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
2716       yy_symbol_print (stderr,
2717                        YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
2718                        &yyvsp[(yyi + 1) - (yynrhs)],
2719                        &(yylsp[(yyi + 1) - (yynrhs)]), lexer, result, arg);
2720       YYFPRINTF (stderr, "\n");
2721     }
2722 }
2723 
2724 # define YY_REDUCE_PRINT(Rule)          \
2725 do {                                    \
2726   if (yydebug)                          \
2727     yy_reduce_print (yyssp, yyvsp, yylsp, Rule, lexer, result, arg); \
2728 } while (0)
2729 
2730 /* Nonzero means print parse trace.  It is left uninitialized so that
2731    multiple parsers can coexist.  */
2732 int yydebug;
2733 #else /* !FILTER_EXPR_DEBUG */
2734 # define YYDPRINTF(Args) ((void) 0)
2735 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2736 # define YY_STACK_PRINT(Bottom, Top)
2737 # define YY_REDUCE_PRINT(Rule)
2738 #endif /* !FILTER_EXPR_DEBUG */
2739 
2740 
2741 /* YYINITDEPTH -- initial size of the parser's stacks.  */
2742 #ifndef YYINITDEPTH
2743 # define YYINITDEPTH 200
2744 #endif
2745 
2746 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2747    if the built-in stack extension method is used).
2748 
2749    Do not make this value too large; the results are undefined if
2750    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2751    evaluated with infinite-precision integer arithmetic.  */
2752 
2753 #ifndef YYMAXDEPTH
2754 # define YYMAXDEPTH 10000
2755 #endif
2756 
2757 
2758 /* Context of a parse error.  */
2759 typedef struct
2760 {
2761   yy_state_t *yyssp;
2762   yysymbol_kind_t yytoken;
2763   YYLTYPE *yylloc;
2764 } yypcontext_t;
2765 
2766 /* Put in YYARG at most YYARGN of the expected tokens given the
2767    current YYCTX, and return the number of tokens stored in YYARG.  If
2768    YYARG is null, return the number of expected tokens (guaranteed to
2769    be less than YYNTOKENS).  Return YYENOMEM on memory exhaustion.
2770    Return 0 if there are more than YYARGN expected tokens, yet fill
2771    YYARG up to YYARGN. */
2772 static int
yypcontext_expected_tokens(const yypcontext_t * yyctx,yysymbol_kind_t yyarg[],int yyargn)2773 yypcontext_expected_tokens (const yypcontext_t *yyctx,
2774                             yysymbol_kind_t yyarg[], int yyargn)
2775 {
2776   /* Actual size of YYARG. */
2777   int yycount = 0;
2778   int yyn = yypact[+*yyctx->yyssp];
2779   if (!yypact_value_is_default (yyn))
2780     {
2781       /* Start YYX at -YYN if negative to avoid negative indexes in
2782          YYCHECK.  In other words, skip the first -YYN actions for
2783          this state because they are default actions.  */
2784       int yyxbegin = yyn < 0 ? -yyn : 0;
2785       /* Stay within bounds of both yycheck and yytname.  */
2786       int yychecklim = YYLAST - yyn + 1;
2787       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2788       int yyx;
2789       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2790         if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
2791             && !yytable_value_is_error (yytable[yyx + yyn]))
2792           {
2793             if (!yyarg)
2794               ++yycount;
2795             else if (yycount == yyargn)
2796               return 0;
2797             else
2798               yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
2799           }
2800     }
2801   if (yyarg && yycount == 0 && 0 < yyargn)
2802     yyarg[0] = YYSYMBOL_YYEMPTY;
2803   return yycount;
2804 }
2805 
2806 
2807 
2808 
2809 #ifndef yystrlen
2810 # if defined __GLIBC__ && defined _STRING_H
2811 #  define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2812 # else
2813 /* Return the length of YYSTR.  */
2814 static YYPTRDIFF_T
yystrlen(const char * yystr)2815 yystrlen (const char *yystr)
2816 {
2817   YYPTRDIFF_T yylen;
2818   for (yylen = 0; yystr[yylen]; yylen++)
2819     continue;
2820   return yylen;
2821 }
2822 # endif
2823 #endif
2824 
2825 #ifndef yystpcpy
2826 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2827 #  define yystpcpy stpcpy
2828 # else
2829 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2830    YYDEST.  */
2831 static char *
yystpcpy(char * yydest,const char * yysrc)2832 yystpcpy (char *yydest, const char *yysrc)
2833 {
2834   char *yyd = yydest;
2835   const char *yys = yysrc;
2836 
2837   while ((*yyd++ = *yys++) != '\0')
2838     continue;
2839 
2840   return yyd - 1;
2841 }
2842 # endif
2843 #endif
2844 
2845 #ifndef yytnamerr
2846 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2847    quotes and backslashes, so that it's suitable for yyerror.  The
2848    heuristic is that double-quoting is unnecessary unless the string
2849    contains an apostrophe, a comma, or backslash (other than
2850    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
2851    null, do not copy; instead, return the length of what the result
2852    would have been.  */
2853 static YYPTRDIFF_T
yytnamerr(char * yyres,const char * yystr)2854 yytnamerr (char *yyres, const char *yystr)
2855 {
2856   if (*yystr == '"')
2857     {
2858       YYPTRDIFF_T yyn = 0;
2859       char const *yyp = yystr;
2860       for (;;)
2861         switch (*++yyp)
2862           {
2863           case '\'':
2864           case ',':
2865             goto do_not_strip_quotes;
2866 
2867           case '\\':
2868             if (*++yyp != '\\')
2869               goto do_not_strip_quotes;
2870             else
2871               goto append;
2872 
2873           append:
2874           default:
2875             if (yyres)
2876               yyres[yyn] = *yyp;
2877             yyn++;
2878             break;
2879 
2880           case '"':
2881             if (yyres)
2882               yyres[yyn] = '\0';
2883             return yyn;
2884           }
2885     do_not_strip_quotes: ;
2886     }
2887 
2888   if (yyres)
2889     return yystpcpy (yyres, yystr) - yyres;
2890   else
2891     return yystrlen (yystr);
2892 }
2893 #endif
2894 
2895 
2896 static int
yy_syntax_error_arguments(const yypcontext_t * yyctx,yysymbol_kind_t yyarg[],int yyargn)2897 yy_syntax_error_arguments (const yypcontext_t *yyctx,
2898                            yysymbol_kind_t yyarg[], int yyargn)
2899 {
2900   /* Actual size of YYARG. */
2901   int yycount = 0;
2902   /* There are many possibilities here to consider:
2903      - If this state is a consistent state with a default action, then
2904        the only way this function was invoked is if the default action
2905        is an error action.  In that case, don't check for expected
2906        tokens because there are none.
2907      - The only way there can be no lookahead present (in yychar) is if
2908        this state is a consistent state with a default action.  Thus,
2909        detecting the absence of a lookahead is sufficient to determine
2910        that there is no unexpected or expected token to report.  In that
2911        case, just report a simple "syntax error".
2912      - Don't assume there isn't a lookahead just because this state is a
2913        consistent state with a default action.  There might have been a
2914        previous inconsistent state, consistent state with a non-default
2915        action, or user semantic action that manipulated yychar.
2916      - Of course, the expected token list depends on states to have
2917        correct lookahead information, and it depends on the parser not
2918        to perform extra reductions after fetching a lookahead from the
2919        scanner and before detecting a syntax error.  Thus, state merging
2920        (from LALR or IELR) and default reductions corrupt the expected
2921        token list.  However, the list is correct for canonical LR with
2922        one exception: it will still contain any token that will not be
2923        accepted due to an error action in a later state.
2924   */
2925   if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
2926     {
2927       int yyn;
2928       if (yyarg)
2929         yyarg[yycount] = yyctx->yytoken;
2930       ++yycount;
2931       yyn = yypcontext_expected_tokens (yyctx,
2932                                         yyarg ? yyarg + 1 : yyarg, yyargn - 1);
2933       if (yyn == YYENOMEM)
2934         return YYENOMEM;
2935       else
2936         yycount += yyn;
2937     }
2938   return yycount;
2939 }
2940 
2941 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2942    about the unexpected token YYTOKEN for the state stack whose top is
2943    YYSSP.
2944 
2945    Return 0 if *YYMSG was successfully written.  Return -1 if *YYMSG is
2946    not large enough to hold the message.  In that case, also set
2947    *YYMSG_ALLOC to the required number of bytes.  Return YYENOMEM if the
2948    required number of bytes is too large to store.  */
2949 static int
yysyntax_error(YYPTRDIFF_T * yymsg_alloc,char ** yymsg,const yypcontext_t * yyctx)2950 yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
2951                 const yypcontext_t *yyctx)
2952 {
2953   enum { YYARGS_MAX = 5 };
2954   /* Internationalized format string. */
2955   const char *yyformat = YY_NULLPTR;
2956   /* Arguments of yyformat: reported tokens (one for the "unexpected",
2957      one per "expected"). */
2958   yysymbol_kind_t yyarg[YYARGS_MAX];
2959   /* Cumulated lengths of YYARG.  */
2960   YYPTRDIFF_T yysize = 0;
2961 
2962   /* Actual size of YYARG. */
2963   int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
2964   if (yycount == YYENOMEM)
2965     return YYENOMEM;
2966 
2967   switch (yycount)
2968     {
2969 #define YYCASE_(N, S)                       \
2970       case N:                               \
2971         yyformat = S;                       \
2972         break
2973     default: /* Avoid compiler warnings. */
2974       YYCASE_(0, YY_("syntax error"));
2975       YYCASE_(1, YY_("syntax error, unexpected %s"));
2976       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2977       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2978       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2979       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2980 #undef YYCASE_
2981     }
2982 
2983   /* Compute error message size.  Don't count the "%s"s, but reserve
2984      room for the terminator.  */
2985   yysize = yystrlen (yyformat) - 2 * yycount + 1;
2986   {
2987     int yyi;
2988     for (yyi = 0; yyi < yycount; ++yyi)
2989       {
2990         YYPTRDIFF_T yysize1
2991           = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
2992         if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
2993           yysize = yysize1;
2994         else
2995           return YYENOMEM;
2996       }
2997   }
2998 
2999   if (*yymsg_alloc < yysize)
3000     {
3001       *yymsg_alloc = 2 * yysize;
3002       if (! (yysize <= *yymsg_alloc
3003              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
3004         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
3005       return -1;
3006     }
3007 
3008   /* Avoid sprintf, as that infringes on the user's name space.
3009      Don't have undefined behavior even if the translation
3010      produced a string with the wrong number of "%s"s.  */
3011   {
3012     char *yyp = *yymsg;
3013     int yyi = 0;
3014     while ((*yyp = *yyformat) != '\0')
3015       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
3016         {
3017           yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
3018           yyformat += 2;
3019         }
3020       else
3021         {
3022           ++yyp;
3023           ++yyformat;
3024         }
3025   }
3026   return 0;
3027 }
3028 
3029 
3030 /*-----------------------------------------------.
3031 | Release the memory associated to this symbol.  |
3032 `-----------------------------------------------*/
3033 
3034 static void
yydestruct(const char * yymsg,yysymbol_kind_t yykind,YYSTYPE * yyvaluep,YYLTYPE * yylocationp,CfgLexer * lexer,FilterExprNode ** result,gpointer arg)3035 yydestruct (const char *yymsg,
3036             yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, CfgLexer *lexer, FilterExprNode **result, gpointer arg)
3037 {
3038   YY_USE (yyvaluep);
3039   YY_USE (yylocationp);
3040   YY_USE (lexer);
3041   YY_USE (result);
3042   YY_USE (arg);
3043   if (!yymsg)
3044     yymsg = "Deleting";
3045   YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
3046 
3047   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3048   switch (yykind)
3049     {
3050     case YYSYMBOL_LL_IDENTIFIER: /* LL_IDENTIFIER  */
3051 #line 325 "lib/filter/filter-expr-grammar.y"
3052             { free(((*yyvaluep).cptr)); }
3053 #line 3054 "lib/filter/filter-expr-grammar.c"
3054         break;
3055 
3056     case YYSYMBOL_LL_STRING: /* LL_STRING  */
3057 #line 325 "lib/filter/filter-expr-grammar.y"
3058             { free(((*yyvaluep).cptr)); }
3059 #line 3060 "lib/filter/filter-expr-grammar.c"
3060         break;
3061 
3062     case YYSYMBOL_LL_BLOCK: /* LL_BLOCK  */
3063 #line 325 "lib/filter/filter-expr-grammar.y"
3064             { free(((*yyvaluep).cptr)); }
3065 #line 3066 "lib/filter/filter-expr-grammar.c"
3066         break;
3067 
3068     case YYSYMBOL_string: /* string  */
3069 #line 325 "lib/filter/filter-expr-grammar.y"
3070             { free(((*yyvaluep).cptr)); }
3071 #line 3072 "lib/filter/filter-expr-grammar.c"
3072         break;
3073 
3074       default:
3075         break;
3076     }
3077   YY_IGNORE_MAYBE_UNINITIALIZED_END
3078 }
3079 
3080 
3081 
3082 
3083 
3084 
3085 /*----------.
3086 | yyparse.  |
3087 `----------*/
3088 
3089 int
yyparse(CfgLexer * lexer,FilterExprNode ** result,gpointer arg)3090 yyparse (CfgLexer *lexer, FilterExprNode **result, gpointer arg)
3091 {
3092 /* Lookahead token kind.  */
3093 int yychar;
3094 
3095 
3096 /* The semantic value of the lookahead symbol.  */
3097 /* Default value used for initialization, for pacifying older GCCs
3098    or non-GCC compilers.  */
3099 YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
3100 YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
3101 
3102 /* Location data for the lookahead symbol.  */
3103 static YYLTYPE yyloc_default
3104 # if defined FILTER_EXPR_LTYPE_IS_TRIVIAL && FILTER_EXPR_LTYPE_IS_TRIVIAL
3105   = { 1, 1, 1, 1 }
3106 # endif
3107 ;
3108 YYLTYPE yylloc = yyloc_default;
3109 
3110     /* Number of syntax errors so far.  */
3111     int yynerrs = 0;
3112 
3113     yy_state_fast_t yystate = 0;
3114     /* Number of tokens to shift before error messages enabled.  */
3115     int yyerrstatus = 0;
3116 
3117     /* Refer to the stacks through separate pointers, to allow yyoverflow
3118        to reallocate them elsewhere.  */
3119 
3120     /* Their size.  */
3121     YYPTRDIFF_T yystacksize = YYINITDEPTH;
3122 
3123     /* The state stack: array, bottom, top.  */
3124     yy_state_t yyssa[YYINITDEPTH];
3125     yy_state_t *yyss = yyssa;
3126     yy_state_t *yyssp = yyss;
3127 
3128     /* The semantic value stack: array, bottom, top.  */
3129     YYSTYPE yyvsa[YYINITDEPTH];
3130     YYSTYPE *yyvs = yyvsa;
3131     YYSTYPE *yyvsp = yyvs;
3132 
3133     /* The location stack: array, bottom, top.  */
3134     YYLTYPE yylsa[YYINITDEPTH];
3135     YYLTYPE *yyls = yylsa;
3136     YYLTYPE *yylsp = yyls;
3137 
3138   int yyn;
3139   /* The return value of yyparse.  */
3140   int yyresult;
3141   /* Lookahead symbol kind.  */
3142   yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
3143   /* The variables used to return semantic value and location from the
3144      action routines.  */
3145   YYSTYPE yyval;
3146   YYLTYPE yyloc;
3147 
3148   /* The locations where the error started and ended.  */
3149   YYLTYPE yyerror_range[3];
3150 
3151   /* Buffer for error messages, and its allocated size.  */
3152   char yymsgbuf[128];
3153   char *yymsg = yymsgbuf;
3154   YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
3155 
3156 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
3157 
3158   /* The number of symbols on the RHS of the reduced rule.
3159      Keep to zero when no symbol should be popped.  */
3160   int yylen = 0;
3161 
3162   YYDPRINTF ((stderr, "Starting parse\n"));
3163 
3164   yychar = FILTER_EXPR_EMPTY; /* Cause a token to be read.  */
3165 
3166   yylsp[0] = yylloc;
3167   goto yysetstate;
3168 
3169 
3170 /*------------------------------------------------------------.
3171 | yynewstate -- push a new state, which is found in yystate.  |
3172 `------------------------------------------------------------*/
3173 yynewstate:
3174   /* In all cases, when you get here, the value and location stacks
3175      have just been pushed.  So pushing a state here evens the stacks.  */
3176   yyssp++;
3177 
3178 
3179 /*--------------------------------------------------------------------.
3180 | yysetstate -- set current state (the top of the stack) to yystate.  |
3181 `--------------------------------------------------------------------*/
3182 yysetstate:
3183   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3184   YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
3185   YY_IGNORE_USELESS_CAST_BEGIN
3186   *yyssp = YY_CAST (yy_state_t, yystate);
3187   YY_IGNORE_USELESS_CAST_END
3188   YY_STACK_PRINT (yyss, yyssp);
3189 
3190   if (yyss + yystacksize - 1 <= yyssp)
3191 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
3192     YYNOMEM;
3193 #else
3194     {
3195       /* Get the current used size of the three stacks, in elements.  */
3196       YYPTRDIFF_T yysize = yyssp - yyss + 1;
3197 
3198 # if defined yyoverflow
3199       {
3200         /* Give user a chance to reallocate the stack.  Use copies of
3201            these so that the &'s don't force the real ones into
3202            memory.  */
3203         yy_state_t *yyss1 = yyss;
3204         YYSTYPE *yyvs1 = yyvs;
3205         YYLTYPE *yyls1 = yyls;
3206 
3207         /* Each stack pointer address is followed by the size of the
3208            data in use in that stack, in bytes.  This used to be a
3209            conditional around just the two extra args, but that might
3210            be undefined if yyoverflow is a macro.  */
3211         yyoverflow (YY_("memory exhausted"),
3212                     &yyss1, yysize * YYSIZEOF (*yyssp),
3213                     &yyvs1, yysize * YYSIZEOF (*yyvsp),
3214                     &yyls1, yysize * YYSIZEOF (*yylsp),
3215                     &yystacksize);
3216         yyss = yyss1;
3217         yyvs = yyvs1;
3218         yyls = yyls1;
3219       }
3220 # else /* defined YYSTACK_RELOCATE */
3221       /* Extend the stack our own way.  */
3222       if (YYMAXDEPTH <= yystacksize)
3223         YYNOMEM;
3224       yystacksize *= 2;
3225       if (YYMAXDEPTH < yystacksize)
3226         yystacksize = YYMAXDEPTH;
3227 
3228       {
3229         yy_state_t *yyss1 = yyss;
3230         union yyalloc *yyptr =
3231           YY_CAST (union yyalloc *,
3232                    YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
3233         if (! yyptr)
3234           YYNOMEM;
3235         YYSTACK_RELOCATE (yyss_alloc, yyss);
3236         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
3237         YYSTACK_RELOCATE (yyls_alloc, yyls);
3238 #  undef YYSTACK_RELOCATE
3239         if (yyss1 != yyssa)
3240           YYSTACK_FREE (yyss1);
3241       }
3242 # endif
3243 
3244       yyssp = yyss + yysize - 1;
3245       yyvsp = yyvs + yysize - 1;
3246       yylsp = yyls + yysize - 1;
3247 
3248       YY_IGNORE_USELESS_CAST_BEGIN
3249       YYDPRINTF ((stderr, "Stack size increased to %ld\n",
3250                   YY_CAST (long, yystacksize)));
3251       YY_IGNORE_USELESS_CAST_END
3252 
3253       if (yyss + yystacksize - 1 <= yyssp)
3254         YYABORT;
3255     }
3256 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
3257 
3258 
3259   if (yystate == YYFINAL)
3260     YYACCEPT;
3261 
3262   goto yybackup;
3263 
3264 
3265 /*-----------.
3266 | yybackup.  |
3267 `-----------*/
3268 yybackup:
3269   /* Do appropriate processing given the current state.  Read a
3270      lookahead token if we need one and don't already have one.  */
3271 
3272   /* First try to decide what to do without reference to lookahead token.  */
3273   yyn = yypact[yystate];
3274   if (yypact_value_is_default (yyn))
3275     goto yydefault;
3276 
3277   /* Not known => get a lookahead token if don't already have one.  */
3278 
3279   /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
3280   if (yychar == FILTER_EXPR_EMPTY)
3281     {
3282       YYDPRINTF ((stderr, "Reading a token\n"));
3283       yychar = yylex (&yylval, &yylloc, lexer);
3284     }
3285 
3286   if (yychar <= FILTER_EXPR_EOF)
3287     {
3288       yychar = FILTER_EXPR_EOF;
3289       yytoken = YYSYMBOL_YYEOF;
3290       YYDPRINTF ((stderr, "Now at end of input.\n"));
3291     }
3292   else if (yychar == FILTER_EXPR_error)
3293     {
3294       /* The scanner already issued an error message, process directly
3295          to error recovery.  But do not keep the error token as
3296          lookahead, it is too special and may lead us to an endless
3297          loop in error recovery. */
3298       yychar = FILTER_EXPR_UNDEF;
3299       yytoken = YYSYMBOL_YYerror;
3300       yyerror_range[1] = yylloc;
3301       goto yyerrlab1;
3302     }
3303   else
3304     {
3305       yytoken = YYTRANSLATE (yychar);
3306       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3307     }
3308 
3309   /* If the proper action on seeing token YYTOKEN is to reduce or to
3310      detect an error, take that action.  */
3311   yyn += yytoken;
3312   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3313     goto yydefault;
3314   yyn = yytable[yyn];
3315   if (yyn <= 0)
3316     {
3317       if (yytable_value_is_error (yyn))
3318         goto yyerrlab;
3319       yyn = -yyn;
3320       goto yyreduce;
3321     }
3322 
3323   /* Count tokens shifted since error; after three, turn off error
3324      status.  */
3325   if (yyerrstatus)
3326     yyerrstatus--;
3327 
3328   /* Shift the lookahead token.  */
3329   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3330   yystate = yyn;
3331   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3332   *++yyvsp = yylval;
3333   YY_IGNORE_MAYBE_UNINITIALIZED_END
3334   *++yylsp = yylloc;
3335 
3336   /* Discard the shifted token.  */
3337   yychar = FILTER_EXPR_EMPTY;
3338   goto yynewstate;
3339 
3340 
3341 /*-----------------------------------------------------------.
3342 | yydefault -- do the default action for the current state.  |
3343 `-----------------------------------------------------------*/
3344 yydefault:
3345   yyn = yydefact[yystate];
3346   if (yyn == 0)
3347     goto yyerrlab;
3348   goto yyreduce;
3349 
3350 
3351 /*-----------------------------.
3352 | yyreduce -- do a reduction.  |
3353 `-----------------------------*/
3354 yyreduce:
3355   /* yyn is the number of a rule to reduce with.  */
3356   yylen = yyr2[yyn];
3357 
3358   /* If YYLEN is nonzero, implement the default value of the action:
3359      '$$ = $1'.
3360 
3361      Otherwise, the following line sets YYVAL to garbage.
3362      This behavior is undocumented and Bison
3363      users should not rely upon it.  Assigning to YYVAL
3364      unconditionally makes the parser a bit smaller, and it avoids a
3365      GCC warning that YYVAL may be used uninitialized.  */
3366   yyval = yyvsp[1-yylen];
3367 
3368   /* Default location. */
3369   YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
3370   yyerror_range[1] = yyloc;
3371   YY_REDUCE_PRINT (yyn);
3372   switch (yyn)
3373     {
3374   case 2: /* start: filter_expr  */
3375 #line 433 "lib/filter/filter-expr-grammar.y"
3376                                                 { *result = (yyvsp[0].node); if (yychar != FILTER_EXPR_EMPTY) { cfg_lexer_unput_token(lexer, &yylval); } YYACCEPT; }
3377 #line 3378 "lib/filter/filter-expr-grammar.c"
3378     break;
3379 
3380   case 3: /* filter_expr: filter_simple_expr  */
3381 #line 437 "lib/filter/filter-expr-grammar.y"
3382                                                 { (yyval.node) = (yyvsp[0].node); if (!(yyvsp[0].node)) YYERROR; }
3383 #line 3384 "lib/filter/filter-expr-grammar.c"
3384     break;
3385 
3386   case 4: /* filter_expr: KW_NOT filter_expr  */
3387 #line 438 "lib/filter/filter-expr-grammar.y"
3388                                                 { ((FilterExprNode *) (yyvsp[0].node))->comp = !(((FilterExprNode *) (yyvsp[0].node))->comp); (yyval.node) = (yyvsp[0].node); }
3389 #line 3390 "lib/filter/filter-expr-grammar.c"
3390     break;
3391 
3392   case 5: /* filter_expr: filter_expr KW_OR filter_expr  */
3393 #line 439 "lib/filter/filter-expr-grammar.y"
3394                                                 { (yyval.node) = fop_or_new((yyvsp[-2].node), (yyvsp[0].node)); }
3395 #line 3396 "lib/filter/filter-expr-grammar.c"
3396     break;
3397 
3398   case 6: /* filter_expr: filter_expr KW_AND filter_expr  */
3399 #line 440 "lib/filter/filter-expr-grammar.y"
3400                                                 { (yyval.node) = fop_and_new((yyvsp[-2].node), (yyvsp[0].node)); }
3401 #line 3402 "lib/filter/filter-expr-grammar.c"
3402     break;
3403 
3404   case 7: /* filter_expr: filter_expr ';' filter_expr  */
3405 #line 441 "lib/filter/filter-expr-grammar.y"
3406                                                 { (yyval.node) = fop_and_new((yyvsp[-2].node), (yyvsp[0].node)); }
3407 #line 3408 "lib/filter/filter-expr-grammar.c"
3408     break;
3409 
3410   case 8: /* filter_expr: filter_expr ';'  */
3411 #line 442 "lib/filter/filter-expr-grammar.y"
3412                                                 { (yyval.node) = (yyvsp[-1].node); }
3413 #line 3414 "lib/filter/filter-expr-grammar.c"
3414     break;
3415 
3416   case 9: /* filter_expr: '(' filter_expr ')'  */
3417 #line 443 "lib/filter/filter-expr-grammar.y"
3418                                                 { (yyval.node) = (yyvsp[-1].node); }
3419 #line 3420 "lib/filter/filter-expr-grammar.c"
3420     break;
3421 
3422   case 10: /* filter_simple_expr: KW_FACILITY '(' filter_fac_list ')'  */
3423 #line 447 "lib/filter/filter-expr-grammar.y"
3424                                                 { (yyval.node) = filter_facility_new((yyvsp[-1].num));  }
3425 #line 3426 "lib/filter/filter-expr-grammar.c"
3426     break;
3427 
3428   case 11: /* filter_simple_expr: KW_FACILITY '(' LL_NUMBER ')'  */
3429 #line 448 "lib/filter/filter-expr-grammar.y"
3430                                                 { (yyval.node) = filter_facility_new(0x80000000 | (yyvsp[-1].num)); }
3431 #line 3432 "lib/filter/filter-expr-grammar.c"
3432     break;
3433 
3434   case 12: /* filter_simple_expr: KW_SEVERITY '(' filter_severity_list ')'  */
3435 #line 449 "lib/filter/filter-expr-grammar.y"
3436                                                    { (yyval.node) = filter_severity_new((yyvsp[-1].num)); }
3437 #line 3438 "lib/filter/filter-expr-grammar.c"
3438     break;
3439 
3440   case 13: /* filter_simple_expr: KW_FILTER '(' string ')'  */
3441 #line 450 "lib/filter/filter-expr-grammar.y"
3442                                                 { (yyval.node) = filter_call_new((yyvsp[-1].cptr), configuration); free((yyvsp[-1].cptr)); }
3443 #line 3444 "lib/filter/filter-expr-grammar.c"
3444     break;
3445 
3446   case 14: /* filter_simple_expr: KW_NETMASK '(' string ')'  */
3447 #line 451 "lib/filter/filter-expr-grammar.y"
3448                                        { (yyval.node) = filter_netmask_new((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3449 #line 3450 "lib/filter/filter-expr-grammar.c"
3450     break;
3451 
3452   case 15: /* filter_simple_expr: KW_NETMASK6 '(' string ')'  */
3453 #line 452 "lib/filter/filter-expr-grammar.y"
3454                                  {
3455   #if SYSLOG_NG_ENABLE_IPV6
3456                                     (yyval.node) = filter_netmask6_new((yyvsp[-1].cptr));
3457   #else
3458                                     YYERROR;
3459   #endif
3460                                     free((yyvsp[-1].cptr));
3461                                   }
3462 #line 3463 "lib/filter/filter-expr-grammar.c"
3463     break;
3464 
3465   case 16: /* filter_simple_expr: KW_TAGS '(' string_list ')'  */
3466 #line 460 "lib/filter/filter-expr-grammar.y"
3467                                                 { (yyval.node) = filter_tags_new((yyvsp[-1].ptr)); }
3468 #line 3469 "lib/filter/filter-expr-grammar.c"
3469     break;
3470 
3471   case 17: /* filter_simple_expr: KW_IN_LIST '(' string string ')'  */
3472 #line 462 "lib/filter/filter-expr-grammar.y"
3473           {
3474             const gchar *p = (yyvsp[-1].cptr);
3475             if (p[0] == '$')
3476               {
3477                 msg_warning("Value references in filters should not use the '$' prefix, those are only needed in templates",
3478                             evt_tag_str("value", (yyvsp[-1].cptr)),
3479                             cfg_lexer_format_location_tag(lexer, &(yylsp[-1])));
3480                 p++;
3481               }
3482             (yyval.node) = filter_in_list_new((yyvsp[-2].cptr), p);
3483             free((yyvsp[-2].cptr));
3484             free((yyvsp[-1].cptr));
3485           }
3486 #line 3487 "lib/filter/filter-expr-grammar.c"
3487     break;
3488 
3489   case 18: /* filter_simple_expr: KW_IN_LIST '(' string KW_VALUE '(' string ')' ')'  */
3490 #line 476 "lib/filter/filter-expr-grammar.y"
3491           {
3492             const gchar *p = (yyvsp[-2].cptr);
3493             if (p[0] == '$')
3494               {
3495                 msg_warning("Value references in filters should not use the '$' prefix, those are only needed in templates",
3496                             evt_tag_str("value", (yyvsp[-2].cptr)),
3497                             cfg_lexer_format_location_tag(lexer, &(yylsp[-2])));
3498                 p++;
3499               }
3500             (yyval.node) = filter_in_list_new((yyvsp[-5].cptr), p);
3501             free((yyvsp[-5].cptr));
3502             free((yyvsp[-2].cptr));
3503           }
3504 #line 3505 "lib/filter/filter-expr-grammar.c"
3505     break;
3506 
3507   case 19: /* filter_simple_expr: filter_re  */
3508 #line 489 "lib/filter/filter-expr-grammar.y"
3509                                                         { (yyval.node) = last_filter_expr; }
3510 #line 3511 "lib/filter/filter-expr-grammar.c"
3511     break;
3512 
3513   case 22: /* filter_simple_expr: filter_throttle  */
3514 #line 492 "lib/filter/filter-expr-grammar.y"
3515                             { (yyval.node) = last_filter_expr; }
3516 #line 3517 "lib/filter/filter-expr-grammar.c"
3517     break;
3518 
3519   case 23: /* filter_plugin: LL_IDENTIFIER  */
3520 #line 498 "lib/filter/filter-expr-grammar.y"
3521           {
3522             Plugin *p;
3523             gint context = LL_CONTEXT_FILTER;
3524             FilterExprNode *node;
3525 
3526             p = cfg_find_plugin(configuration, context, (yyvsp[0].cptr));
3527             CHECK_ERROR(p, (yylsp[0]), "%s plugin %s not found OR you may not used double quotes in your filter expression", cfg_lexer_lookup_context_name_by_type(context), (yyvsp[0].cptr));
3528 
3529             node = (FilterExprNode *) cfg_parse_plugin(configuration, p, &(yylsp[0]), NULL);
3530             free((yyvsp[0].cptr));
3531             if (!node)
3532               {
3533                 YYERROR;
3534               }
3535             (yyval.node) = node;
3536           }
3537 #line 3538 "lib/filter/filter-expr-grammar.c"
3538     break;
3539 
3540   case 24: /* filter_comparison: LL_STRING operator LL_STRING  */
3541 #line 518 "lib/filter/filter-expr-grammar.y"
3542           {
3543             LogTemplate *left, *right;
3544             GError *error = NULL;
3545 
3546             left = log_template_new(configuration, NULL);
3547             right = log_template_new(configuration, NULL);
3548             CHECK_ERROR_GERROR(log_template_compile(left, (yyvsp[-2].cptr), &error), (yylsp[-2]), error, "compiling the left-hand-side template failed");
3549             CHECK_ERROR_GERROR(log_template_compile(right, (yyvsp[0].cptr), &error), (yylsp[0]), error, "compiling the right-hand-side template failed");
3550 
3551             free((yyvsp[-2].cptr));
3552             free((yyvsp[0].cptr));
3553             (yyval.node) = fop_cmp_new(left, right, (yyvsp[-1].token));
3554           }
3555 #line 3556 "lib/filter/filter-expr-grammar.c"
3556     break;
3557 
3558   case 25: /* operator: KW_NUM_LT  */
3559 #line 534 "lib/filter/filter-expr-grammar.y"
3560                         { (yyval.token) = yylval.token; }
3561 #line 3562 "lib/filter/filter-expr-grammar.c"
3562     break;
3563 
3564   case 26: /* operator: KW_NUM_LE  */
3565 #line 535 "lib/filter/filter-expr-grammar.y"
3566                         { (yyval.token) = yylval.token; }
3567 #line 3568 "lib/filter/filter-expr-grammar.c"
3568     break;
3569 
3570   case 27: /* operator: KW_NUM_EQ  */
3571 #line 536 "lib/filter/filter-expr-grammar.y"
3572                         { (yyval.token) = yylval.token; }
3573 #line 3574 "lib/filter/filter-expr-grammar.c"
3574     break;
3575 
3576   case 28: /* operator: KW_NUM_NE  */
3577 #line 537 "lib/filter/filter-expr-grammar.y"
3578                         { (yyval.token) = yylval.token; }
3579 #line 3580 "lib/filter/filter-expr-grammar.c"
3580     break;
3581 
3582   case 29: /* operator: KW_NUM_GE  */
3583 #line 538 "lib/filter/filter-expr-grammar.y"
3584                         { (yyval.token) = yylval.token; }
3585 #line 3586 "lib/filter/filter-expr-grammar.c"
3586     break;
3587 
3588   case 30: /* operator: KW_NUM_GT  */
3589 #line 539 "lib/filter/filter-expr-grammar.y"
3590                         { (yyval.token) = yylval.token; }
3591 #line 3592 "lib/filter/filter-expr-grammar.c"
3592     break;
3593 
3594   case 31: /* operator: KW_LT  */
3595 #line 540 "lib/filter/filter-expr-grammar.y"
3596                         { (yyval.token) = yylval.token; }
3597 #line 3598 "lib/filter/filter-expr-grammar.c"
3598     break;
3599 
3600   case 32: /* operator: KW_LE  */
3601 #line 541 "lib/filter/filter-expr-grammar.y"
3602                         { (yyval.token) = yylval.token; }
3603 #line 3604 "lib/filter/filter-expr-grammar.c"
3604     break;
3605 
3606   case 33: /* operator: KW_EQ  */
3607 #line 542 "lib/filter/filter-expr-grammar.y"
3608                         { (yyval.token) = yylval.token; }
3609 #line 3610 "lib/filter/filter-expr-grammar.c"
3610     break;
3611 
3612   case 34: /* operator: KW_NE  */
3613 #line 543 "lib/filter/filter-expr-grammar.y"
3614                         { (yyval.token) = yylval.token; }
3615 #line 3616 "lib/filter/filter-expr-grammar.c"
3616     break;
3617 
3618   case 35: /* operator: KW_GE  */
3619 #line 544 "lib/filter/filter-expr-grammar.y"
3620                         { (yyval.token) = yylval.token; }
3621 #line 3622 "lib/filter/filter-expr-grammar.c"
3622     break;
3623 
3624   case 36: /* operator: KW_GT  */
3625 #line 545 "lib/filter/filter-expr-grammar.y"
3626                         { (yyval.token) = yylval.token; }
3627 #line 3628 "lib/filter/filter-expr-grammar.c"
3628     break;
3629 
3630   case 37: /* $@1: %empty  */
3631 #line 549 "lib/filter/filter-expr-grammar.y"
3632                      { last_filter_expr = filter_re_new(LM_V_PROGRAM); }
3633 #line 3634 "lib/filter/filter-expr-grammar.c"
3634     break;
3635 
3636   case 39: /* $@2: %empty  */
3637 #line 550 "lib/filter/filter-expr-grammar.y"
3638                      { last_filter_expr = filter_re_new(LM_V_HOST); }
3639 #line 3640 "lib/filter/filter-expr-grammar.c"
3640     break;
3641 
3642   case 41: /* $@3: %empty  */
3643 #line 551 "lib/filter/filter-expr-grammar.y"
3644                      { last_filter_expr = filter_re_new(LM_V_MESSAGE); }
3645 #line 3646 "lib/filter/filter-expr-grammar.c"
3646     break;
3647 
3648   case 43: /* $@4: %empty  */
3649 #line 552 "lib/filter/filter-expr-grammar.y"
3650                      { last_filter_expr = filter_source_new();  }
3651 #line 3652 "lib/filter/filter-expr-grammar.c"
3652     break;
3653 
3654   case 45: /* $@5: %empty  */
3655 #line 553 "lib/filter/filter-expr-grammar.y"
3656                      { last_filter_expr = filter_match_new(); }
3657 #line 3658 "lib/filter/filter-expr-grammar.c"
3658     break;
3659 
3660   case 47: /* filter_re_params: '(' string filter_re_opts ')'  */
3661 #line 558 "lib/filter/filter-expr-grammar.y"
3662           {
3663             GError *error = NULL;
3664 
3665             CHECK_ERROR_GERROR(filter_re_compile_pattern(last_filter_expr, (yyvsp[-2].cptr), &error), (yylsp[-2]), error, "compiling the regexp failed");
3666             free((yyvsp[-2].cptr));
3667           }
3668 #line 3669 "lib/filter/filter-expr-grammar.c"
3669     break;
3670 
3671   case 50: /* $@6: %empty  */
3672 #line 572 "lib/filter/filter-expr-grammar.y"
3673           { last_matcher_options = filter_re_get_matcher_options(last_filter_expr); }
3674 #line 3675 "lib/filter/filter-expr-grammar.c"
3675     break;
3676 
3677   case 52: /* filter_match_params: '(' string filter_match_opts ')'  */
3678 #line 578 "lib/filter/filter-expr-grammar.y"
3679           {
3680             GError *error = NULL;
3681 
3682             CHECK_ERROR_GERROR(filter_re_compile_pattern(last_filter_expr, (yyvsp[-2].cptr), &error), (yylsp[-2]), error, "compiling the regexp failed");
3683             free((yyvsp[-2].cptr));
3684 
3685             if (filter_match_is_usage_obsolete(last_filter_expr))
3686               {
3687                 msg_warning_once("WARNING: the match() filter without the use of the value() "
3688                                  "option is deprecated and hinders performance, please use a "
3689                                  "more specific filter like message() and/or program() instead",
3690                                  cfg_lexer_format_location_tag(lexer, &(yylsp[-4])));
3691               }
3692 
3693           }
3694 #line 3695 "lib/filter/filter-expr-grammar.c"
3695     break;
3696 
3697   case 56: /* filter_match_opt: KW_VALUE '(' string ')'  */
3698 #line 602 "lib/filter/filter-expr-grammar.y"
3699           {
3700             const gchar *p = (yyvsp[-1].cptr);
3701             if (p[0] == '$')
3702               {
3703                 msg_warning("WARNING: value references in filters should not use the '$' prefix, those are only needed in templates, removing automatically",
3704                             evt_tag_str("value", (yyvsp[-1].cptr)),
3705                             cfg_lexer_format_location_tag(lexer, &(yylsp[-1])));
3706                 p++;
3707               }
3708             if (p[0] == '(' || strchr(p, '$') != NULL)
3709               {
3710                 msg_error("value() reference for the match() filter cannot contain a full template string, use the template() option or stick to a single value",
3711                           evt_tag_str("value", (yyvsp[-1].cptr)),
3712                           cfg_lexer_format_location_tag(lexer, &(yylsp[-1])));
3713                 free((yyvsp[-1].cptr));
3714                 YYERROR;
3715               }
3716             filter_match_set_value_handle(last_filter_expr, log_msg_get_value_handle(p));
3717             free((yyvsp[-1].cptr));
3718           }
3719 #line 3720 "lib/filter/filter-expr-grammar.c"
3720     break;
3721 
3722   case 57: /* filter_match_opt: KW_TEMPLATE '(' template_content ')'  */
3723 #line 623 "lib/filter/filter-expr-grammar.y"
3724           {
3725             filter_match_set_template_ref(last_filter_expr, (yyvsp[-1].ptr));
3726           }
3727 #line 3728 "lib/filter/filter-expr-grammar.c"
3728     break;
3729 
3730   case 58: /* filter_fac_list: filter_fac filter_fac_list  */
3731 #line 629 "lib/filter/filter-expr-grammar.y"
3732                                                 { (yyval.num) = (yyvsp[-1].num) | (yyvsp[0].num); }
3733 #line 3734 "lib/filter/filter-expr-grammar.c"
3734     break;
3735 
3736   case 59: /* filter_fac_list: filter_fac  */
3737 #line 630 "lib/filter/filter-expr-grammar.y"
3738                                                 { (yyval.num) = (yyvsp[0].num); }
3739 #line 3740 "lib/filter/filter-expr-grammar.c"
3740     break;
3741 
3742   case 60: /* filter_fac: facility_string LL_DOTDOT facility_string  */
3743 #line 635 "lib/filter/filter-expr-grammar.y"
3744           {
3745 	    (yyval.num) = syslog_make_range((yyvsp[-2].num) >> 3, (yyvsp[0].num) >> 3);
3746 	  }
3747 #line 3748 "lib/filter/filter-expr-grammar.c"
3748     break;
3749 
3750   case 61: /* filter_fac: facility_string  */
3751 #line 638 "lib/filter/filter-expr-grammar.y"
3752                                                 { (yyval.num) = 1 << ((yyvsp[0].num) >> 3); }
3753 #line 3754 "lib/filter/filter-expr-grammar.c"
3754     break;
3755 
3756   case 62: /* filter_severity_list: filter_severity filter_severity_list  */
3757 #line 642 "lib/filter/filter-expr-grammar.y"
3758                                                 { (yyval.num) = (yyvsp[-1].num) | (yyvsp[0].num); }
3759 #line 3760 "lib/filter/filter-expr-grammar.c"
3760     break;
3761 
3762   case 63: /* filter_severity_list: filter_severity  */
3763 #line 643 "lib/filter/filter-expr-grammar.y"
3764                                                         { (yyval.num) = (yyvsp[0].num); }
3765 #line 3766 "lib/filter/filter-expr-grammar.c"
3766     break;
3767 
3768   case 64: /* filter_severity: severity_string LL_DOTDOT severity_string  */
3769 #line 648 "lib/filter/filter-expr-grammar.y"
3770           {
3771 	    (yyval.num) = syslog_make_range((yyvsp[-2].num), (yyvsp[0].num));
3772 	  }
3773 #line 3774 "lib/filter/filter-expr-grammar.c"
3774     break;
3775 
3776   case 65: /* filter_severity: severity_string  */
3777 #line 652 "lib/filter/filter-expr-grammar.y"
3778           {
3779 	    (yyval.num) = 1 << (yyvsp[0].num);
3780 	  }
3781 #line 3782 "lib/filter/filter-expr-grammar.c"
3782     break;
3783 
3784   case 66: /* filter_throttle_arg: KW_TEMPLATE '(' template_content ')'  */
3785 #line 659 "lib/filter/filter-expr-grammar.y"
3786           {
3787             filter_throttle_set_key_template(last_filter_expr, (yyvsp[-1].ptr));
3788             log_template_unref((yyvsp[-1].ptr));
3789           }
3790 #line 3791 "lib/filter/filter-expr-grammar.c"
3791     break;
3792 
3793   case 67: /* filter_throttle_arg: KW_RATE '(' positive_integer ')'  */
3794 #line 664 "lib/filter/filter-expr-grammar.y"
3795           {
3796             filter_throttle_set_rate(last_filter_expr, (yyvsp[-1].num));
3797           }
3798 #line 3799 "lib/filter/filter-expr-grammar.c"
3799     break;
3800 
3801   case 70: /* $@7: %empty  */
3802 #line 675 "lib/filter/filter-expr-grammar.y"
3803                 { last_filter_expr = filter_throttle_new(); }
3804 #line 3805 "lib/filter/filter-expr-grammar.c"
3805     break;
3806 
3807   case 72: /* template_content_inner: string  */
3808 #line 912 "lib/filter/filter-expr-grammar.y"
3809         {
3810           GError *error = NULL;
3811 
3812           CHECK_ERROR_GERROR(log_template_compile(last_template, (yyvsp[0].cptr), &error), (yylsp[0]), error, "Error compiling template");
3813           free((yyvsp[0].cptr));
3814         }
3815 #line 3816 "lib/filter/filter-expr-grammar.c"
3816     break;
3817 
3818   case 73: /* template_content_inner: LL_IDENTIFIER '(' string ')'  */
3819 #line 919 "lib/filter/filter-expr-grammar.y"
3820         {
3821           GError *error = NULL;
3822 
3823           CHECK_ERROR_GERROR(log_template_compile(last_template, (yyvsp[-1].cptr), &error), (yylsp[-1]), error, "Error compiling template");
3824           free((yyvsp[-1].cptr));
3825 
3826           CHECK_ERROR_GERROR(log_template_set_type_hint(last_template, (yyvsp[-3].cptr), &error), (yylsp[-3]), error, "Error setting the template type-hint \"%s\"", (yyvsp[-3].cptr));
3827           free((yyvsp[-3].cptr));
3828         }
3829 #line 3830 "lib/filter/filter-expr-grammar.c"
3830     break;
3831 
3832   case 74: /* $@13: %empty  */
3833 #line 931 "lib/filter/filter-expr-grammar.y"
3834           { last_template = log_template_new(configuration, NULL); }
3835 #line 3836 "lib/filter/filter-expr-grammar.c"
3836     break;
3837 
3838   case 75: /* template_content: $@13 template_content_inner  */
3839 #line 931 "lib/filter/filter-expr-grammar.y"
3840                                                                                                 { (yyval.ptr) = last_template; }
3841 #line 3842 "lib/filter/filter-expr-grammar.c"
3842     break;
3843 
3844   case 78: /* positive_integer64: LL_NUMBER  */
3845 #line 973 "lib/filter/filter-expr-grammar.y"
3846           {
3847             CHECK_ERROR(((yyvsp[0].num) > 0), (yylsp[0]), "Must be positive");
3848           }
3849 #line 3850 "lib/filter/filter-expr-grammar.c"
3850     break;
3851 
3852   case 79: /* positive_integer: positive_integer64  */
3853 #line 980 "lib/filter/filter-expr-grammar.y"
3854           {
3855             CHECK_ERROR(((yyvsp[0].num) <= G_MAXINT32), (yylsp[0]), "Must be smaller than 2^31");
3856           }
3857 #line 3858 "lib/filter/filter-expr-grammar.c"
3858     break;
3859 
3860   case 80: /* string_list: string_list_build  */
3861 #line 1040 "lib/filter/filter-expr-grammar.y"
3862                                                 { (yyval.ptr) = (yyvsp[0].ptr); }
3863 #line 3864 "lib/filter/filter-expr-grammar.c"
3864     break;
3865 
3866   case 81: /* string_list_build: string string_list_build  */
3867 #line 1044 "lib/filter/filter-expr-grammar.y"
3868                                                 { (yyval.ptr) = g_list_prepend((yyvsp[0].ptr), g_strdup((yyvsp[-1].cptr))); free((yyvsp[-1].cptr)); }
3869 #line 3870 "lib/filter/filter-expr-grammar.c"
3870     break;
3871 
3872   case 82: /* string_list_build: %empty  */
3873 #line 1045 "lib/filter/filter-expr-grammar.y"
3874                                                 { (yyval.ptr) = NULL; }
3875 #line 3876 "lib/filter/filter-expr-grammar.c"
3876     break;
3877 
3878   case 83: /* severity_string: string  */
3879 #line 1055 "lib/filter/filter-expr-grammar.y"
3880           {
3881 	    /* return the numeric value of the "level" */
3882 	    int n = syslog_name_lookup_severity_by_name((yyvsp[0].cptr));
3883 	    CHECK_ERROR((n != -1), (yylsp[0]), "Unknown priority level\"%s\"", (yyvsp[0].cptr));
3884 	    free((yyvsp[0].cptr));
3885             (yyval.num) = n;
3886 	  }
3887 #line 3888 "lib/filter/filter-expr-grammar.c"
3888     break;
3889 
3890   case 84: /* facility_string: string  */
3891 #line 1066 "lib/filter/filter-expr-grammar.y"
3892           {
3893             /* return the numeric value of facility */
3894 	    int n = syslog_name_lookup_facility_by_name((yyvsp[0].cptr));
3895 	    CHECK_ERROR((n != -1), (yylsp[0]), "Unknown facility \"%s\"", (yyvsp[0].cptr));
3896 	    free((yyvsp[0].cptr));
3897 	    (yyval.num) = n;
3898 	  }
3899 #line 3900 "lib/filter/filter-expr-grammar.c"
3900     break;
3901 
3902   case 85: /* facility_string: KW_SYSLOG  */
3903 #line 1073 "lib/filter/filter-expr-grammar.y"
3904                                                 { (yyval.num) = LOG_SYSLOG; }
3905 #line 3906 "lib/filter/filter-expr-grammar.c"
3906     break;
3907 
3908   case 86: /* matcher_option: KW_TYPE '(' string ')'  */
3909 #line 1343 "lib/filter/filter-expr-grammar.y"
3910                                                 { CHECK_ERROR(log_matcher_options_set_type(last_matcher_options, (yyvsp[-1].cptr)), (yylsp[-1]), "unknown matcher type \"%s\"", (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3911 #line 3912 "lib/filter/filter-expr-grammar.c"
3912     break;
3913 
3914   case 88: /* matcher_flags: string matcher_flags  */
3915 #line 1348 "lib/filter/filter-expr-grammar.y"
3916                                                 { CHECK_ERROR(log_matcher_options_process_flag(last_matcher_options, (yyvsp[-1].cptr)), (yylsp[-1]), "unknown matcher flag \"%s\"", (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3917 #line 3918 "lib/filter/filter-expr-grammar.c"
3918     break;
3919 
3920 
3921 #line 3922 "lib/filter/filter-expr-grammar.c"
3922 
3923       default: break;
3924     }
3925   /* User semantic actions sometimes alter yychar, and that requires
3926      that yytoken be updated with the new translation.  We take the
3927      approach of translating immediately before every use of yytoken.
3928      One alternative is translating here after every semantic action,
3929      but that translation would be missed if the semantic action invokes
3930      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3931      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
3932      incorrect destructor might then be invoked immediately.  In the
3933      case of YYERROR or YYBACKUP, subsequent parser actions might lead
3934      to an incorrect destructor call or verbose syntax error message
3935      before the lookahead is translated.  */
3936   YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
3937 
3938   YYPOPSTACK (yylen);
3939   yylen = 0;
3940 
3941   *++yyvsp = yyval;
3942   *++yylsp = yyloc;
3943 
3944   /* Now 'shift' the result of the reduction.  Determine what state
3945      that goes to, based on the state we popped back to and the rule
3946      number reduced by.  */
3947   {
3948     const int yylhs = yyr1[yyn] - YYNTOKENS;
3949     const int yyi = yypgoto[yylhs] + *yyssp;
3950     yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
3951                ? yytable[yyi]
3952                : yydefgoto[yylhs]);
3953   }
3954 
3955   goto yynewstate;
3956 
3957 
3958 /*--------------------------------------.
3959 | yyerrlab -- here on detecting error.  |
3960 `--------------------------------------*/
3961 yyerrlab:
3962   /* Make sure we have latest lookahead translation.  See comments at
3963      user semantic actions for why this is necessary.  */
3964   yytoken = yychar == FILTER_EXPR_EMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
3965   /* If not already recovering from an error, report this error.  */
3966   if (!yyerrstatus)
3967     {
3968       ++yynerrs;
3969       {
3970         yypcontext_t yyctx
3971           = {yyssp, yytoken, &yylloc};
3972         char const *yymsgp = YY_("syntax error");
3973         int yysyntax_error_status;
3974         yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
3975         if (yysyntax_error_status == 0)
3976           yymsgp = yymsg;
3977         else if (yysyntax_error_status == -1)
3978           {
3979             if (yymsg != yymsgbuf)
3980               YYSTACK_FREE (yymsg);
3981             yymsg = YY_CAST (char *,
3982                              YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
3983             if (yymsg)
3984               {
3985                 yysyntax_error_status
3986                   = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
3987                 yymsgp = yymsg;
3988               }
3989             else
3990               {
3991                 yymsg = yymsgbuf;
3992                 yymsg_alloc = sizeof yymsgbuf;
3993                 yysyntax_error_status = YYENOMEM;
3994               }
3995           }
3996         yyerror (&yylloc, lexer, result, arg, yymsgp);
3997         if (yysyntax_error_status == YYENOMEM)
3998           YYNOMEM;
3999       }
4000     }
4001 
4002   yyerror_range[1] = yylloc;
4003   if (yyerrstatus == 3)
4004     {
4005       /* If just tried and failed to reuse lookahead token after an
4006          error, discard it.  */
4007 
4008       if (yychar <= FILTER_EXPR_EOF)
4009         {
4010           /* Return failure if at end of input.  */
4011           if (yychar == FILTER_EXPR_EOF)
4012             YYABORT;
4013         }
4014       else
4015         {
4016           yydestruct ("Error: discarding",
4017                       yytoken, &yylval, &yylloc, lexer, result, arg);
4018           yychar = FILTER_EXPR_EMPTY;
4019         }
4020     }
4021 
4022   /* Else will try to reuse lookahead token after shifting the error
4023      token.  */
4024   goto yyerrlab1;
4025 
4026 
4027 /*---------------------------------------------------.
4028 | yyerrorlab -- error raised explicitly by YYERROR.  |
4029 `---------------------------------------------------*/
4030 yyerrorlab:
4031   /* Pacify compilers when the user code never invokes YYERROR and the
4032      label yyerrorlab therefore never appears in user code.  */
4033   if (0)
4034     YYERROR;
4035   ++yynerrs;
4036 
4037   /* Do not reclaim the symbols of the rule whose action triggered
4038      this YYERROR.  */
4039   YYPOPSTACK (yylen);
4040   yylen = 0;
4041   YY_STACK_PRINT (yyss, yyssp);
4042   yystate = *yyssp;
4043   goto yyerrlab1;
4044 
4045 
4046 /*-------------------------------------------------------------.
4047 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
4048 `-------------------------------------------------------------*/
4049 yyerrlab1:
4050   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
4051 
4052   /* Pop stack until we find a state that shifts the error token.  */
4053   for (;;)
4054     {
4055       yyn = yypact[yystate];
4056       if (!yypact_value_is_default (yyn))
4057         {
4058           yyn += YYSYMBOL_YYerror;
4059           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
4060             {
4061               yyn = yytable[yyn];
4062               if (0 < yyn)
4063                 break;
4064             }
4065         }
4066 
4067       /* Pop the current state because it cannot handle the error token.  */
4068       if (yyssp == yyss)
4069         YYABORT;
4070 
4071       yyerror_range[1] = *yylsp;
4072       yydestruct ("Error: popping",
4073                   YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, lexer, result, arg);
4074       YYPOPSTACK (1);
4075       yystate = *yyssp;
4076       YY_STACK_PRINT (yyss, yyssp);
4077     }
4078 
4079   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
4080   *++yyvsp = yylval;
4081   YY_IGNORE_MAYBE_UNINITIALIZED_END
4082 
4083   yyerror_range[2] = yylloc;
4084   ++yylsp;
4085   YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
4086 
4087   /* Shift the error token.  */
4088   YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
4089 
4090   yystate = yyn;
4091   goto yynewstate;
4092 
4093 
4094 /*-------------------------------------.
4095 | yyacceptlab -- YYACCEPT comes here.  |
4096 `-------------------------------------*/
4097 yyacceptlab:
4098   yyresult = 0;
4099   goto yyreturnlab;
4100 
4101 
4102 /*-----------------------------------.
4103 | yyabortlab -- YYABORT comes here.  |
4104 `-----------------------------------*/
4105 yyabortlab:
4106   yyresult = 1;
4107   goto yyreturnlab;
4108 
4109 
4110 /*-----------------------------------------------------------.
4111 | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here.  |
4112 `-----------------------------------------------------------*/
4113 yyexhaustedlab:
4114   yyerror (&yylloc, lexer, result, arg, YY_("memory exhausted"));
4115   yyresult = 2;
4116   goto yyreturnlab;
4117 
4118 
4119 /*----------------------------------------------------------.
4120 | yyreturnlab -- parsing is finished, clean up and return.  |
4121 `----------------------------------------------------------*/
4122 yyreturnlab:
4123   if (yychar != FILTER_EXPR_EMPTY)
4124     {
4125       /* Make sure we have latest lookahead translation.  See comments at
4126          user semantic actions for why this is necessary.  */
4127       yytoken = YYTRANSLATE (yychar);
4128       yydestruct ("Cleanup: discarding lookahead",
4129                   yytoken, &yylval, &yylloc, lexer, result, arg);
4130     }
4131   /* Do not reclaim the symbols of the rule whose action triggered
4132      this YYABORT or YYACCEPT.  */
4133   YYPOPSTACK (yylen);
4134   YY_STACK_PRINT (yyss, yyssp);
4135   while (yyssp != yyss)
4136     {
4137       yydestruct ("Cleanup: popping",
4138                   YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, lexer, result, arg);
4139       YYPOPSTACK (1);
4140     }
4141 #ifndef yyoverflow
4142   if (yyss != yyssa)
4143     YYSTACK_FREE (yyss);
4144 #endif
4145   if (yymsg != yymsgbuf)
4146     YYSTACK_FREE (yymsg);
4147   return yyresult;
4148 }
4149 
4150 #line 1443 "lib/filter/filter-expr-grammar.y"
4151 
4152