#include #ifndef lint #if 0 static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; #else __IDSTRING(yyrcsid, "$NetBSD: skeleton.c,v 1.14 1997/10/20 03:41:16 lukem Exp $"); #endif #endif #include #define YYBYACC 1 #define YYMAJOR 1 #define YYMINOR 9 #define YYLEX yylex() #define YYEMPTY -1 #define yyclearin (yychar=(YYEMPTY)) #define yyerrok (yyerrflag=0) #define YYRECOVERING (yyerrflag!=0) #define YYPREFIX "yy" #line 76 "cfg.y" #include #include #include #include #include #include #include #include #include #include #include "route_struct.h" #include "globals.h" #include "route.h" #include "dprint.h" #include "sr_module.h" #include "modparam.h" #include "ip_addr.h" #include "resolve.h" #include "socket_info.h" #include "name_alias.h" #include "ut.h" #include "dset.h" #include "items.h" #include "blacklists.h" #include "config.h" #ifdef USE_TLS #include "tls/tls_config.h" #include "tls/tls_domain.h" #endif #ifdef DEBUG_DMALLOC #include #endif /* hack to avoid alloca usage in the generated C file (needed for compiler with no built in alloca, like icc*/ #undef _ALLOCA_H extern int yylex(); static void yyerror(char* s); static char* tmp; static int i_tmp; static void* cmd_tmp; static struct socket_id* lst_tmp; static int rt; /* Type of route block for find_export */ static str* str_tmp; static str s_tmp; static struct ip_addr* ip_tmp; static xl_spec_t *spec; static struct bl_rule *bl_head = 0; static struct bl_rule *bl_tail = 0; action_elem_t elems[MAX_ACTION_ELEMS]; #if !defined(USE_TLS) || !defined(USE_TCP) || !defined(TIMING_INFO) \ || !defined(USE_MCAST) static void warn(char* s); #endif static struct socket_id* mk_listen_id(char*, int, int); static char *mpath=NULL; static char mpath_buf[256]; static int mpath_len = 0; extern int line; #define mk_action0(_res, _type, _p1_type, _p2_type, _p1, _p2) \ do { \ _res = mk_action(_type, 0, 0, line); \ } while(0) #define mk_action1(_res, _type, _p1_type, _p2_type, _p1, _p2) \ do { \ elems[0].type = _p1_type; \ elems[0].u.data = _p1; \ _res = mk_action(_type, 1, elems, line); \ } while(0) #define mk_action2(_res, _type, _p1_type, _p2_type, _p1, _p2) \ do { \ elems[0].type = _p1_type; \ elems[0].u.data = _p1; \ elems[1].type = _p2_type; \ elems[1].u.data = _p2; \ _res = mk_action(_type, 2, elems, line); \ } while(0) #define mk_action3(_res, _type, _p1_type, _p2_type, _p3_type, _p1, _p2, _p3) \ do { \ elems[0].type = _p1_type; \ elems[0].u.data = _p1; \ elems[1].type = _p2_type; \ elems[1].u.data = _p2; \ elems[2].type = _p3_type; \ elems[2].u.data = _p3; \ _res = mk_action(_type, 3, elems, line); \ } while(0) #line 177 "cfg.y" typedef union { long intval; unsigned long uval; char* strval; struct expr* expr; struct action* action; struct net* ipnet; struct ip_addr* ipaddr; struct socket_id* sockid; struct _xl_spec *specval; } YYSTYPE; #line 132 "cfg.tab.c" #define FORWARD 257 #define SEND 258 #define DROP 259 #define EXIT 260 #define RETURN 261 #define LOG_TOK 262 #define ERROR 263 #define ROUTE 264 #define ROUTE_FAILURE 265 #define ROUTE_ONREPLY 266 #define ROUTE_BRANCH 267 #define ROUTE_ERROR 268 #define SET_HOST 269 #define SET_HOSTPORT 270 #define PREFIX 271 #define SET_TIME_STAMP 272 #define RESET_TIME_STAMP 273 #define DIFF_TIME_STAMP 274 #define STRIP 275 #define STRIP_TAIL 276 #define APPEND_BRANCH 277 #define SET_USER 278 #define SET_USERPASS 279 #define SET_PORT 280 #define SET_URI 281 #define REVERT_URI 282 #define SET_DSTURI 283 #define RESET_DSTURI 284 #define ISDSTURISET 285 #define FORCE_RPORT 286 #define FORCE_LOCAL_RPORT 287 #define FORCE_TCP_ALIAS 288 #define IF 289 #define ELSE 290 #define SWITCH 291 #define CASE 292 #define DEFAULT 293 #define SBREAK 294 #define SET_ADV_ADDRESS 295 #define SET_ADV_PORT 296 #define FORCE_SEND_SOCKET 297 #define SERIALIZE_BRANCHES 298 #define NEXT_BRANCHES 299 #define USE_BLACKLIST 300 #define MAX_LEN 301 #define SETFLAG 302 #define RESETFLAG 303 #define ISFLAGSET 304 #define SETBFLAG 305 #define RESETBFLAG 306 #define ISBFLAGSET 307 #define SETSFLAG 308 #define RESETSFLAG 309 #define ISSFLAGSET 310 #define METHOD 311 #define URI 312 #define FROM_URI 313 #define TO_URI 314 #define SRCIP 315 #define SRCPORT 316 #define DSTIP 317 #define DSTPORT 318 #define PROTO 319 #define AF 320 #define MYSELF 321 #define MSGLEN 322 #define UDP 323 #define TCP 324 #define TLS 325 #define NULLV 326 #define DEBUG 327 #define FORK 328 #define LOGSTDERROR 329 #define LOGFACILITY 330 #define LOGNAME 331 #define AVP_ALIASES 332 #define LISTEN 333 #define ALIAS 334 #define AUTO_ALIASES 335 #define DNS 336 #define REV_DNS 337 #define DNS_TRY_IPV6 338 #define DNS_RETR_TIME 339 #define DNS_RETR_NO 340 #define DNS_SERVERS_NO 341 #define DNS_USE_SEARCH 342 #define PORT 343 #define CHILDREN 344 #define CHECK_VIA 345 #define MEMLOG 346 #define SIP_WARNING 347 #define SOCK_MODE 348 #define SOCK_USER 349 #define SOCK_GROUP 350 #define UNIX_SOCK 351 #define UNIX_SOCK_CHILDREN 352 #define UNIX_TX_TIMEOUT 353 #define SERVER_SIGNATURE 354 #define SERVER_HEADER 355 #define USER_AGENT_HEADER 356 #define REPLY_TO_VIA 357 #define LOADMODULE 358 #define MPATH 359 #define MODPARAM 360 #define MAXBUFFER 361 #define USER 362 #define GROUP 363 #define CHROOT 364 #define WDIR 365 #define MHOMED 366 #define DISABLE_TCP 367 #define TCP_ACCEPT_ALIASES 368 #define TCP_CHILDREN 369 #define TCP_CONNECT_TIMEOUT 370 #define TCP_SEND_TIMEOUT 371 #define TCP_CON_LIFETIME 372 #define TCP_POLL_METHOD 373 #define TCP_MAX_CONNECTIONS 374 #define DISABLE_TLS 375 #define TLSLOG 376 #define TLS_PORT_NO 377 #define TLS_METHOD 378 #define TLS_HANDSHAKE_TIMEOUT 379 #define TLS_SEND_TIMEOUT 380 #define TLS_SERVER_DOMAIN 381 #define TLS_CLIENT_DOMAIN 382 #define TLS_CLIENT_DOMAIN_AVP 383 #define SSLv23 384 #define SSLv2 385 #define SSLv3 386 #define TLSv1 387 #define TLS_VERIFY_CLIENT 388 #define TLS_VERIFY_SERVER 389 #define TLS_REQUIRE_CLIENT_CERTIFICATE 390 #define TLS_CERTIFICATE 391 #define TLS_PRIVATE_KEY 392 #define TLS_CA_LIST 393 #define TLS_CIPHERS_LIST 394 #define ADVERTISED_ADDRESS 395 #define ADVERTISED_PORT 396 #define DISABLE_CORE 397 #define OPEN_FD_LIMIT 398 #define MCAST_LOOPBACK 399 #define MCAST_TTL 400 #define TOS 401 #define DISABLE_DNS_FAILOVER 402 #define DISABLE_DNS_BLACKLIST 403 #define DST_BLACKLIST 404 #define EQUAL 405 #define EQUAL_T 406 #define GT 407 #define LT 408 #define GTE 409 #define LTE 410 #define DIFF 411 #define MATCH 412 #define NOTMATCH 413 #define PLUSEQ 414 #define MINUSEQ 415 #define SLASHEQ 416 #define MULTEQ 417 #define MODULOEQ 418 #define BANDEQ 419 #define BOREQ 420 #define BXOREQ 421 #define OR 422 #define AND 423 #define BOR 424 #define BAND 425 #define BXOR 426 #define PLUS 427 #define MINUS 428 #define SLASH 429 #define MULT 430 #define MODULO 431 #define NOT 432 #define BNOT 433 #define NUMBER 434 #define ID 435 #define STRING 436 #define SCRIPTVAR 437 #define IPV6ADDR 438 #define COMMA 439 #define SEMICOLON 440 #define RPAREN 441 #define LPAREN 442 #define LBRACE 443 #define RBRACE 444 #define LBRACK 445 #define RBRACK 446 #define DOT 447 #define CR 448 #define COLON 449 #define ANY 450 #define SCRIPTVARERR 451 #define YYERRCODE 256 short yylhs[] = { -1, 0, 38, 38, 38, 39, 39, 43, 39, 45, 39, 47, 39, 49, 39, 51, 39, 39, 24, 24, 24, 27, 27, 27, 27, 28, 28, 37, 37, 37, 26, 26, 26, 26, 26, 25, 25, 52, 52, 53, 53, 53, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, 20, 20, 17, 19, 18, 18, 56, 54, 58, 55, 60, 55, 57, 57, 59, 59, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 42, 42, 42, 44, 44, 46, 46, 46, 48, 48, 50, 50, 1, 1, 1, 1, 1, 1, 31, 31, 32, 32, 32, 32, 33, 33, 35, 35, 34, 34, 34, 30, 30, 30, 22, 22, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 21, 21, 21, 21, 29, 29, 23, 23, 23, 36, 36, 36, 36, 36, 36, 36, 36, 36, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 11, 11, 10, 10, 10, 10, 10, 9, 9, 9, 6, 6, 6, 5, 5, 5, 5, 5, 5, 8, 8, 12, 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, }; short yylen[] = { 2, 1, 2, 1, 2, 1, 1, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 3, 3, 5, 3, 1, 2, 9, 10, 3, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 2, 2, 7, 2, 2, 8, 8, 2, 1, 1, 7, 1, 1, 3, 0, 10, 0, 10, 0, 8, 1, 2, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 7, 2, 7, 2, 4, 7, 2, 7, 2, 4, 2, 3, 3, 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3, 3, 2, 3, 3, 1, 3, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 1, 1, 1, 3, 2, 1, 3, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 3, 5, 7, 2, 1, 2, 1, 6, 5, 4, 3, 6, 5, 4, 3, 3, 2, 4, 3, 2, 4, 4, 2, 4, 3, 1, 3, 1, 4, 3, 1, 4, 6, 2, 4, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 6, 4, 2, 6, 4, 2, 6, 4, 2, 6, 2, 4, 4, 2, 4, 4, 2, 4, 4, 2, 4, 4, 2, 4, 4, 2, 4, 4, 2, 4, 3, 6, 2, 4, 2, 4, 6, 4, 3, 1, 4, 2, 4, 4, 2, 4, 4, 2, 4, 4, 2, 4, 4, 2, 4, 3, 1, 4, 2, 4, 3, 1, 3, 1, 3, 1, 3, 1, 4, 3, 1, 4, 4, 4, 2, 4, 4, 2, 4, 4, 2, 4, 4, 2, 3, 4, 2, 4, 4, 2, 3, 4, 6, 4, }; short yydefred[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 3, 5, 6, 0, 0, 0, 0, 0, 156, 157, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 61, 0, 63, 0, 65, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 195, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, 0, 192, 0, 0, 0, 2, 0, 8, 0, 10, 0, 12, 0, 14, 0, 16, 43, 42, 45, 44, 47, 46, 49, 48, 51, 50, 53, 52, 167, 21, 22, 23, 0, 342, 19, 203, 0, 24, 200, 201, 204, 18, 0, 0, 166, 0, 0, 169, 168, 171, 170, 55, 54, 57, 56, 58, 60, 62, 64, 66, 71, 68, 73, 72, 75, 74, 77, 76, 79, 78, 81, 80, 84, 83, 82, 87, 86, 85, 89, 88, 91, 90, 93, 92, 159, 158, 161, 160, 163, 162, 165, 164, 188, 187, 0, 70, 69, 96, 95, 94, 99, 98, 97, 102, 101, 100, 105, 104, 103, 107, 106, 109, 108, 111, 110, 113, 112, 115, 114, 117, 116, 119, 118, 122, 120, 121, 124, 123, 126, 125, 128, 127, 130, 129, 135, 131, 132, 133, 134, 151, 150, 153, 152, 0, 0, 0, 155, 154, 137, 136, 139, 138, 141, 140, 143, 142, 145, 144, 147, 146, 149, 148, 173, 172, 175, 174, 177, 176, 179, 178, 181, 180, 183, 182, 186, 184, 185, 189, 191, 0, 250, 0, 0, 252, 0, 255, 0, 0, 257, 0, 259, 0, 0, 0, 341, 0, 0, 0, 36, 0, 0, 0, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 282, 387, 283, 381, 0, 0, 384, 0, 385, 0, 0, 0, 0, 0, 0, 0, 0, 205, 344, 343, 34, 25, 26, 31, 0, 0, 0, 0, 0, 0, 408, 0, 411, 0, 0, 0, 0, 422, 0, 446, 0, 449, 0, 452, 0, 477, 0, 455, 0, 464, 0, 470, 0, 468, 0, 461, 0, 458, 0, 0, 483, 0, 486, 0, 480, 0, 489, 0, 0, 494, 0, 0, 0, 0, 0, 0, 0, 279, 280, 281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 265, 284, 372, 373, 285, 374, 0, 0, 286, 0, 510, 0, 513, 0, 516, 0, 519, 0, 522, 0, 525, 0, 425, 0, 427, 0, 429, 0, 438, 0, 441, 0, 444, 0, 431, 0, 433, 0, 435, 0, 0, 382, 248, 380, 388, 383, 386, 0, 346, 347, 348, 349, 350, 351, 352, 353, 0, 0, 0, 253, 0, 0, 258, 0, 0, 0, 206, 0, 208, 0, 0, 40, 0, 0, 0, 407, 0, 0, 413, 415, 418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 466, 0, 0, 0, 0, 0, 0, 0, 474, 0, 0, 0, 0, 0, 0, 0, 0, 491, 0, 0, 496, 498, 500, 502, 0, 0, 505, 296, 266, 268, 269, 270, 271, 267, 272, 273, 276, 277, 278, 0, 326, 0, 0, 309, 274, 275, 0, 330, 0, 0, 312, 0, 315, 0, 318, 0, 335, 0, 322, 0, 28, 29, 262, 0, 376, 0, 0, 0, 0, 0, 355, 0, 358, 0, 359, 0, 0, 354, 0, 0, 0, 377, 0, 0, 0, 0, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 526, 371, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, 0, 0, 0, 41, 0, 194, 409, 406, 412, 410, 417, 423, 420, 0, 447, 0, 450, 448, 453, 451, 478, 476, 456, 454, 465, 463, 471, 469, 0, 462, 460, 459, 457, 0, 473, 484, 482, 487, 485, 481, 479, 490, 488, 495, 493, 507, 504, 295, 294, 293, 324, 0, 291, 325, 323, 0, 308, 307, 328, 289, 329, 327, 0, 311, 310, 314, 313, 317, 316, 334, 332, 333, 331, 321, 320, 319, 263, 375, 0, 0, 0, 0, 368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 264, 0, 261, 260, 379, 0, 0, 301, 302, 299, 298, 297, 300, 304, 305, 303, 0, 0, 509, 508, 512, 511, 515, 514, 518, 517, 521, 524, 523, 424, 426, 428, 0, 437, 0, 440, 0, 443, 430, 432, 434, 529, 0, 527, 0, 0, 0, 0, 0, 197, 198, 0, 0, 0, 0, 0, 0, 0, 211, 215, 0, 0, 0, 39, 0, 0, 0, 0, 0, 369, 0, 0, 0, 360, 361, 363, 362, 364, 378, 390, 0, 0, 0, 0, 0, 249, 251, 254, 256, 202, 0, 0, 0, 0, 0, 0, 0, 0, 212, 237, 233, 234, 235, 236, 247, 246, 239, 238, 241, 240, 243, 242, 245, 244, 0, 0, 0, 421, 445, 467, 472, 339, 0, 336, 0, 0, 0, 395, 436, 439, 442, 528, 0, 0, 0, 0, 0, 0, 0, 207, 213, 209, 0, 0, 0, 0, 391, 0, 394, 392, 220, 216, 217, 218, 219, 230, 229, 232, 231, 222, 221, 224, 223, 226, 225, 228, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 397, 0, 0, 37, 400, 396, 38, }; short yydgoto[] = { 77, 515, 516, 686, 687, 423, 424, 425, 426, 696, 520, 427, 428, 965, 966, 967, 989, 207, 208, 209, 210, 800, 429, 211, 212, 213, 214, 215, 443, 365, 690, 658, 651, 652, 699, 700, 572, 691, 78, 79, 80, 81, 176, 82, 178, 83, 180, 84, 182, 85, 184, 86, 587, 588, 87, 88, 739, 937, 748, 746, 447, 938, 747, }; short yysindex[] = { 5569, -357, -344, -335, -293, -265, -261, -241, 1, 15, 54, 57, 73, -240, -234, -230, -224, -222, 105, 115, 121, 127, 128, 188, 240, 338, 341, 342, 344, 345, 355, 375, 383, -145, 402, -232, 403, 404, 405, 520, 523, 527, 530, 546, 548, 552, 553, 616, 617, 618, 619, 659, 663, 665, 669, 672, 51, 92, 678, 679, 684, 685, 690, 700, 705, 708, 766, 767, 768, 769, 789, 792, 809, -215, -138, 810, 0, 0, 5718, 0, 0, 0, -92, 275, 340, 359, 339, 0, 0, 0, 4, 151, 152, 12, -143, -119, -242, -236, 153, 154, 156, 0, 120, 0, 334, 0, 335, 0, 473, 0, 497, 157, 160, 162, 165, 171, 174, -166, -164, -86, 175, 176, 177, -78, -69, 178, 0, 0, -61, 0, 337, 179, -82, -76, -74, -72, 180, 181, 201, 202, 204, 207, 212, -70, 213, 214, 215, 216, 132, 217, 218, 48, 762, 219, 220, 221, 228, -8, -7, 25, 58, -198, 286, 287, 288, 289, 307, -11, 0, 608, 0, 662, 677, -357, 0, -217, 0, -226, 0, -191, 0, -223, 0, -237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 745, 0, 0, 0, 761, 0, 0, 0, 0, 0, -324, 782, 0, 631, 783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 784, 771, 808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 814, 0, 5585, 800, 0, 887, 0, 5585, 888, 0, 889, 0, 5585, 890, 772, 0, 1086, 908, -227, 0, 514, 909, -407, 0, -407, 901, -187, -185, 904, 914, 915, -181, -180, -179, -178, -177, -176, -162, -160, -159, -158, -157, 916, -156, -155, -154, -148, 917, -147, 939, 941, 942, 950, 969, 3331, 970, -132, -129, -122, -111, -110, -109, -108, -107, -105, -104, -103, -102, -100, -99, -98, 971, 0, 0, 0, 0, 2119, -209, 0, 974, 0, 1185, 990, 992, 2315, 993, 994, 2370, 1000, 0, 0, 0, 0, 0, 0, 0, 1017, 1028, 1022, 1026, 1045, -317, 0, -134, 0, 91, 1052, 1053, 97, 0, -79, 0, 100, 0, 308, 0, 116, 0, 117, 0, 126, 0, 129, 0, -183, 0, 361, 0, 362, 0, 363, -273, 0, 130, 0, 131, 0, 133, 0, 134, 1054, 0, 135, 1061, 1071, 1082, 1083, -89, 502, 0, 0, 0, 533, 149, 650, 223, 489, 510, 233, 638, 1093, 1095, 3331, 0, 3331, 5044, 3526, 4990, 0, 0, 0, 0, 0, 0, 1138, 691, 0, -282, 0, -192, 0, 364, 0, -218, 0, 365, 0, -136, 0, 136, 0, 1096, 0, 1099, 0, 1101, 0, 1144, 0, 1145, 0, 1148, 0, 1150, 0, 1151, 0, 1157, -90, 0, 0, 0, 0, 0, 0, 1254, 0, 0, 0, 0, 0, 0, 0, 0, 3526, 1152, 1153, 0, 1164, 1166, 0, 1159, -407, 652, 0, 1147, 0, 1192, -288, 0, -188, 1194, 1196, 0, 1198, 1199, 0, 0, 0, 1202, 1204, 1205, 1149, 1207, 1155, 1208, 1209, 1210, 1221, 1222, 1223, 1224, 1246, 1248, 1249, 1250, 0, 1257, 1278, 1277, 1279, 1301, 1303, -387, 0, 1304, 1305, 1312, 1331, 1332, 1333, 1334, 1356, 0, 1358, 1359, 0, 0, 0, 0, 1360, 1367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 96, -65, 0, 0, 0, 366, 0, 101, -59, 0, 367, 0, -239, 0, 368, 0, 794, 0, 155, 0, 0, 0, -280, 0, 2425, 533, 650, 3526, 971, 0, 3526, 0, 799, 0, 1154, 691, 0, 3331, 3331, 5098, 0, 1343, 166, 0, 72, 94, 0, 1398, -52, 1377, 1388, 1389, 1390, 1392, 1394, 1395, 1400, 1401, 1403, 0, 1404, 1405, 1406, 1408, 1409, 42, 326, 433, 1410, 1411, 1412, 1413, 434, 0, 0, 1191, 5585, 5585, 5585, 5585, 1414, 0, 1415, 1416, 1396, 1450, 1453, 1454, 1455, 1457, 1458, 370, 0, 1421, -288, 1426, 0, -317, 0, 0, 0, 0, 0, 0, 0, 0, 1430, 0, 1431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1432, 0, 0, 0, 0, 1433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1441, 0, 0, 0, -324, 0, 0, 0, 0, 0, 0, -324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1550, 137, 1551, 138, 0, 813, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 0, 139, 0, 0, 0, 2621, 5293, 0, 0, 0, 0, 0, 0, 0, 0, 0, -324, 1442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1439, 0, 1456, 0, 1460, 0, 0, 0, 0, 0, 1448, 0, 2676, 2731, 2927, 2982, 1462, 0, 0, 1220, 163, 369, 140, 141, 142, 143, 0, 0, 1147, 1447, 48, 0, 1459, 1461, 1463, 1464, -233, 0, 821, 821, 821, 0, 0, 0, 0, 0, 0, 0, 1596, 1465, 1466, 1467, 1468, 0, 0, 0, 0, 0, 1486, 1492, 1494, 1496, 1505, 1506, 1508, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 817, 48, 1473, 0, 0, 0, 0, 0, 745, 0, 819, 1470, 210, 0, 0, 0, 0, 0, 707, 371, 372, 144, 145, 146, 147, 0, 0, 0, 1476, -407, 1469, 1471, 0, 1472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -407, 1477, 5347, 5401, 5585, 1478, 1483, 1482, 3037, 1484, 3222, 3277, 1487, 1485, 0, 1488, 0, 1499, 1500, 0, 0, 0, 0, }; short yyrindex[] = { 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, 488, 0, 937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 1146, 1201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1397, 0, 0, 0, 0, 1452, 0, 1507, 1703, 1758, 1813, 2009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4438, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, 0, 0, 0, 0, 0, 0, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3778, 0, 0, 0, 0, 0, 3832, 0, 0, 0, 0, 0, 0, 2064, 78, 785, 0, 0, 0, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4189, 0, 0, 0, 4687, 0, 0, 0, 0, 0, 0, 4741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4795, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3886, 4081, 4135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4384, 0, 0, 0, 1501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 483, 1502, 0, 0, 0, 486, 0, 490, 1510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; short yygindex[] = { 0, -419, 0, -377, -509, -420, -353, -384, -374, 1081, 0, -371, 0, 0, 0, 977, 0, 0, 0, 1735, -151, -652, -393, -553, -153, -55, 1418, -106, -367, 0, -381, -456, -448, 0, -451, 755, 0, -396, 0, 1873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1200, 0, 0, 0, 0, 0, 0, 1055, 0, 1019, -733, }; #define YYTABLESIZE 6166 short yytable[] = { 312, 314, 432, 446, 559, 448, 524, 435, 332, 522, 807, 1, 559, 899, 197, 559, 101, 813, 518, 359, 216, 523, 103, 961, 129, 517, 105, 441, 519, 440, 352, 521, 107, 357, 109, 198, 199, 200, 709, 349, 650, 168, 217, 442, 655, 653, 662, 560, 89, 656, 671, 663, 781, 659, 782, 659, 659, 659, 331, 659, 597, 90, 600, 730, 705, 354, 697, 702, 751, 450, 91, 452, 703, 613, 698, 457, 459, 461, 463, 465, 467, 198, 199, 200, 198, 199, 200, 198, 199, 200, 241, 676, 244, 677, 469, 695, 471, 473, 475, 477, 480, 482, 484, 803, 363, 198, 199, 200, 486, 489, 810, 126, 92, 193, 524, 585, 524, 522, 170, 522, 713, 689, 589, 364, 526, 586, 518, 528, 518, 523, 688, 523, 704, 517, 530, 517, 519, 195, 519, 521, 93, 521, 692, 693, 94, 532, 534, 536, 538, 540, 856, 542, 544, 546, 548, 420, 550, 552, 554, 367, 679, 824, 206, 621, 95, 102, 726, 638, 622, 422, 247, 104, 175, 830, 266, 106, 831, 598, 255, 689, 269, 108, 272, 110, 275, 738, 292, 257, 688, 795, 169, 801, 201, 202, 203, 261, 204, 808, 201, 202, 203, 962, 204, 205, 854, 204, 360, 441, 206, 205, 130, 206, 205, 736, 206, 444, 201, 202, 203, 353, 204, 899, 358, 442, 826, 828, 350, 205, 351, 827, 829, 561, 206, 697, 702, 276, 201, 202, 203, 841, 204, 698, 201, 202, 203, 343, 204, 205, 323, 325, 956, 752, 355, 205, 356, 451, 753, 453, 614, 559, 185, 458, 460, 462, 464, 466, 468, 171, 191, 242, 243, 245, 246, 842, 843, 7, 9, 11, 13, 15, 470, 327, 472, 474, 476, 478, 481, 483, 485, 689, 820, 127, 689, 194, 487, 490, 524, 524, 688, 522, 522, 688, 590, 982, 852, 714, 851, 591, 518, 518, 527, 523, 523, 529, 329, 517, 517, 196, 519, 519, 531, 521, 521, 910, 911, 912, 913, 914, 915, 916, 917, 533, 535, 537, 539, 541, 20, 543, 545, 547, 549, 845, 551, 553, 555, 639, 727, 592, 508, 509, 248, 728, 640, 267, 268, 511, 601, 599, 256, 270, 271, 273, 274, 276, 277, 293, 294, 258, 796, 797, 202, 802, 605, 607, 706, 262, 202, 809, 884, 885, 886, 887, 609, 202, 855, 611, 623, 625, 303, 627, 629, 632, 715, 801, 808, 854, 946, 948, 950, 952, 999, 1001, 1003, 1005, 276, 657, 96, 187, 189, 218, 220, 821, 222, 229, 276, 276, 231, 798, 233, 939, 97, 235, 806, 344, 345, 559, 695, 237, 324, 326, 239, 249, 251, 253, 259, 264, 278, 280, 186, 689, 689, 689, 689, 689, 689, 689, 689, 192, 688, 688, 688, 688, 688, 688, 688, 688, 822, 282, 284, 98, 286, 328, 99, 288, 559, 559, 559, 559, 290, 295, 297, 299, 301, 308, 310, 315, 317, 319, 100, 664, 750, 872, 201, 873, 321, 930, 204, 847, 30, 670, 403, 403, 848, 205, 330, 931, 151, 932, 933, 934, 935, 936, 964, 987, 799, 274, 274, 849, 850, 420, 111, 799, 274, 276, 276, 276, 304, 305, 306, 307, 112, 508, 509, 422, 508, 509, 113, 593, 511, 276, 201, 511, 114, 115, 204, 201, 602, 152, 596, 204, 177, 205, 333, 335, 337, 339, 205, 940, 941, 942, 943, 979, 606, 608, 224, 642, 643, 644, 645, 646, 647, 814, 610, 341, 603, 612, 624, 626, 985, 628, 630, 633, 716, 802, 809, 855, 947, 949, 951, 953, 1000, 1002, 1004, 1006, 276, 188, 190, 219, 221, 823, 223, 230, 20, 116, 232, 559, 234, 559, 559, 236, 20, 20, 20, 20, 20, 238, 179, 183, 240, 250, 252, 254, 260, 265, 279, 281, 1008, 615, 617, 619, 707, 711, 804, 811, 815, 944, 181, 995, 997, 642, 643, 644, 645, 646, 647, 283, 285, 32, 287, 642, 1012, 289, 403, 901, 647, 117, 291, 296, 298, 300, 302, 309, 311, 316, 318, 320, 1015, 1017, 1018, 20, 20, 20, 322, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 334, 336, 338, 340, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 342, 604, 118, 30, 666, 119, 120, 740, 121, 122, 799, 30, 30, 30, 30, 30, 963, 641, 741, 123, 742, 743, 744, 745, 874, 668, 875, 225, 226, 20, 20, 20, 263, 20, 399, 399, 20, 402, 402, 124, 20, 398, 398, 20, 20, 20, 4, 125, 654, 7, 9, 11, 13, 15, 616, 618, 620, 708, 712, 805, 812, 816, 945, 799, 996, 998, 128, 131, 132, 133, 30, 30, 30, 898, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 876, 882, 877, 883, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 32, 672, 642, 643, 644, 645, 646, 647, 32, 32, 32, 32, 32, 661, 227, 642, 643, 644, 645, 646, 647, 648, 649, 642, 643, 644, 645, 646, 647, 30, 30, 30, 134, 30, 399, 135, 30, 402, 228, 136, 30, 398, 137, 30, 35, 30, 642, 643, 644, 645, 646, 647, 648, 649, 701, 201, 202, 203, 138, 204, 139, 198, 199, 200, 140, 141, 205, 32, 32, 32, 990, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 142, 143, 144, 145, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 346, 4, 642, 643, 644, 645, 646, 647, 817, 4, 4, 4, 4, 4, 642, 643, 644, 645, 646, 647, 648, 649, 146, 201, 202, 203, 147, 204, 148, 32, 32, 32, 149, 32, 205, 150, 32, 508, 509, 206, 32, 153, 154, 32, 511, 32, 737, 155, 156, 991, 992, 993, 994, 157, 347, 642, 643, 644, 645, 646, 647, 648, 649, 158, 497, 498, 499, 818, 159, 819, 348, 160, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 161, 162, 163, 164, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 361, 35, 165, 740, 201, 166, 313, 204, 204, 35, 35, 35, 35, 35, 741, 205, 742, 743, 744, 745, 275, 275, 167, 172, 369, 371, 437, 275, 277, 277, 277, 832, 833, 834, 835, 836, 837, 838, 839, 366, 368, 370, 430, 4, 277, 832, 833, 834, 835, 836, 837, 838, 839, 840, 508, 509, 835, 836, 837, 838, 839, 511, 909, 984, 660, 372, 665, 667, 669, 981, 673, 373, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 431, 433, 434, 436, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 438, 439, 449, 445, 454, 414, 414, 414, 414, 414, 414, 414, 414, 414, 455, 456, 479, 488, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 491, 414, 492, 493, 35, 414, 414, 414, 414, 414, 414, 494, 414, 414, 414, 414, 414, 414, 414, 414, 414, 416, 416, 416, 416, 416, 416, 416, 416, 416, 495, 525, 556, 562, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 573, 416, 574, 576, 577, 416, 416, 416, 416, 416, 416, 579, 416, 416, 416, 416, 416, 416, 416, 416, 416, 419, 419, 419, 419, 419, 419, 419, 419, 419, 580, 581, 582, 583, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 584, 419, 594, 595, 631, 419, 419, 419, 419, 419, 419, 634, 419, 419, 419, 419, 419, 419, 419, 419, 419, 635, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 636, 637, 740, 414, 674, 414, 675, 717, 414, 414, 718, 414, 719, 741, 414, 742, 743, 744, 745, 414, 563, 642, 643, 644, 645, 646, 647, 648, 649, 564, 565, 566, 567, 568, 569, 570, 571, 642, 643, 644, 645, 646, 647, 648, 649, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 720, 721, 729, 416, 722, 416, 723, 724, 416, 416, 761, 416, 563, 725, 416, 735, 763, 731, 732, 416, 930, 564, 565, 566, 567, 568, 569, 570, 571, 733, 931, 734, 932, 933, 934, 935, 936, 832, 833, 834, 835, 836, 837, 838, 839, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 846, 749, 754, 419, 755, 419, 756, 757, 419, 419, 758, 419, 759, 760, 419, 762, 764, 765, 766, 419, 475, 475, 475, 475, 475, 475, 475, 475, 475, 767, 768, 769, 770, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 771, 475, 772, 773, 774, 475, 475, 475, 475, 475, 475, 775, 475, 475, 475, 475, 475, 475, 475, 475, 475, 492, 492, 492, 492, 492, 492, 492, 492, 492, 776, 777, 853, 778, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 779, 492, 780, 783, 784, 492, 492, 492, 492, 492, 492, 785, 492, 492, 492, 492, 492, 492, 492, 492, 492, 497, 497, 497, 497, 497, 497, 497, 497, 497, 786, 787, 788, 789, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 790, 497, 791, 792, 793, 497, 497, 497, 497, 497, 497, 794, 497, 497, 497, 497, 497, 497, 497, 497, 497, 857, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 858, 859, 860, 475, 861, 475, 862, 863, 475, 475, 891, 475, 864, 865, 475, 866, 867, 868, 869, 475, 870, 871, 878, 879, 880, 881, 892, 889, 890, 893, 894, 895, 888, 896, 897, 900, 902, 904, 905, 906, 907, 908, 798, 806, 921, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 924, 920, 955, 492, 964, 492, 922, 972, 492, 492, 923, 492, 929, 973, 492, 974, 957, 975, 958, 492, 959, 960, 968, 969, 970, 971, 976, 977, 983, 978, 986, 1007, 1013, 1019, 1009, 1020, 1010, 1011, 1021, 1025, 1023, 340, 1026, 919, 1027, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 1028, 362, 1029, 497, 988, 497, 393, 405, 497, 497, 710, 497, 174, 903, 497, 404, 954, 980, 0, 497, 499, 499, 499, 499, 499, 499, 499, 499, 499, 0, 0, 0, 0, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 0, 499, 0, 0, 0, 499, 499, 499, 499, 499, 499, 0, 499, 499, 499, 499, 499, 499, 499, 499, 499, 501, 501, 501, 501, 501, 501, 501, 501, 501, 0, 0, 0, 0, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 0, 501, 0, 0, 0, 501, 501, 501, 501, 501, 501, 0, 501, 501, 501, 501, 501, 501, 501, 501, 501, 503, 503, 503, 503, 503, 503, 503, 503, 503, 0, 0, 0, 0, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 0, 503, 0, 0, 0, 503, 503, 503, 503, 503, 503, 0, 503, 503, 503, 503, 503, 503, 503, 503, 503, 0, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 0, 0, 0, 499, 0, 499, 0, 0, 499, 499, 0, 499, 0, 0, 499, 0, 0, 0, 0, 499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 0, 0, 0, 501, 0, 501, 0, 0, 501, 501, 0, 501, 0, 0, 501, 0, 0, 0, 0, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 0, 0, 0, 503, 0, 503, 0, 0, 503, 503, 0, 503, 0, 0, 503, 0, 0, 0, 0, 503, 506, 506, 506, 506, 506, 506, 506, 506, 506, 0, 0, 0, 0, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 0, 506, 0, 0, 0, 506, 506, 506, 506, 506, 506, 0, 506, 506, 506, 506, 506, 506, 506, 506, 506, 389, 389, 389, 389, 389, 389, 389, 389, 389, 0, 0, 0, 0, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 0, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 0, 389, 389, 389, 389, 389, 389, 389, 389, 389, 557, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 0, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 0, 0, 0, 506, 0, 506, 0, 0, 506, 506, 0, 506, 0, 0, 506, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 389, 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 389, 0, 389, 0, 0, 389, 389, 0, 389, 389, 0, 0, 0, 0, 0, 0, 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 0, 558, 0, 0, 0, 0, 0, 0, 422, 557, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 557, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 557, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 0, 575, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 0, 578, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 0, 825, 0, 0, 0, 0, 0, 0, 422, 557, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 557, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 557, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 0, 918, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 0, 925, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 0, 926, 0, 0, 0, 0, 0, 0, 422, 557, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 557, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 557, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 1022, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 0, 927, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 0, 928, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 557, 374, 375, 376, 377, 378, 379, 380, 381, 0, 422, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 1024, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 557, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 0, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 510, 0, 511, 419, 0, 420, 0, 0, 0, 0, 512, 513, 0, 514, 0, 0, 0, 0, 0, 422, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 0, 0, 0, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 496, 497, 498, 499, 680, 501, 681, 503, 504, 505, 506, 507, 345, 345, 345, 345, 345, 345, 345, 345, 0, 0, 0, 0, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 0, 0, 0, 0, 0, 0, 345, 345, 345, 345, 345, 345, 0, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 682, 511, 683, 684, 420, 0, 0, 0, 0, 685, 0, 0, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 345, 345, 0, 0, 0, 0, 345, 345, 345, 345, 345, 0, 0, 0, 0, 345, 356, 356, 356, 356, 356, 356, 356, 356, 345, 0, 0, 0, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 0, 356, 0, 0, 0, 356, 356, 356, 356, 356, 356, 0, 356, 356, 356, 356, 356, 356, 356, 356, 356, 357, 357, 357, 357, 357, 357, 357, 357, 0, 0, 0, 0, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 0, 357, 0, 0, 0, 357, 357, 357, 357, 357, 357, 0, 357, 357, 357, 357, 357, 357, 357, 357, 357, 366, 366, 366, 366, 366, 366, 366, 366, 0, 0, 0, 0, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 0, 366, 0, 0, 0, 366, 366, 366, 366, 366, 366, 0, 366, 366, 366, 366, 366, 366, 366, 366, 366, 0, 0, 0, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 0, 0, 0, 356, 0, 356, 0, 0, 356, 356, 0, 356, 0, 0, 356, 0, 0, 0, 0, 356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 0, 0, 0, 357, 0, 357, 0, 0, 357, 357, 0, 357, 0, 0, 357, 0, 0, 0, 0, 357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 366, 366, 366, 366, 366, 0, 0, 0, 0, 0, 0, 0, 0, 366, 0, 366, 0, 0, 366, 366, 0, 366, 0, 0, 366, 0, 0, 0, 0, 366, 365, 365, 365, 365, 365, 365, 365, 365, 0, 0, 0, 0, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 0, 365, 0, 0, 0, 365, 365, 365, 365, 365, 365, 0, 365, 365, 365, 365, 365, 365, 365, 365, 365, 367, 367, 367, 367, 367, 367, 367, 367, 0, 0, 0, 0, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 0, 367, 0, 0, 0, 367, 367, 367, 367, 367, 367, 0, 367, 367, 367, 367, 367, 367, 367, 367, 367, 338, 338, 338, 338, 338, 338, 338, 338, 0, 0, 0, 0, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 0, 338, 0, 0, 0, 338, 338, 338, 338, 338, 338, 0, 338, 338, 338, 338, 338, 338, 338, 338, 338, 0, 0, 0, 365, 365, 365, 365, 365, 0, 0, 0, 0, 0, 0, 0, 0, 365, 0, 365, 0, 0, 365, 365, 0, 365, 0, 0, 365, 0, 0, 0, 0, 365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 367, 367, 367, 367, 0, 0, 0, 0, 0, 0, 0, 0, 367, 0, 367, 0, 0, 367, 367, 0, 367, 0, 0, 367, 0, 0, 0, 0, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 338, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 338, 0, 338, 0, 338, 338, 338, 0, 338, 0, 0, 0, 0, 0, 0, 0, 338, 337, 337, 337, 337, 337, 337, 337, 337, 0, 0, 0, 0, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 0, 337, 0, 0, 0, 337, 337, 337, 337, 337, 337, 0, 337, 337, 337, 337, 337, 337, 337, 337, 337, 287, 287, 287, 287, 287, 287, 287, 287, 0, 0, 0, 0, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 0, 287, 0, 0, 0, 287, 287, 287, 287, 287, 287, 0, 287, 287, 287, 287, 287, 287, 287, 287, 287, 370, 370, 370, 370, 370, 370, 370, 370, 0, 0, 0, 0, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 0, 370, 0, 0, 0, 370, 370, 370, 370, 370, 370, 0, 370, 370, 370, 370, 370, 370, 370, 370, 370, 0, 0, 0, 337, 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, 0, 337, 0, 337, 337, 337, 0, 337, 0, 0, 0, 0, 0, 0, 0, 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 287, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, 287, 0, 0, 287, 287, 0, 287, 0, 0, 0, 0, 0, 0, 0, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 370, 370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 370, 0, 370, 0, 0, 370, 370, 0, 370, 0, 0, 0, 0, 0, 0, 0, 370, 292, 292, 292, 292, 292, 292, 292, 292, 0, 0, 0, 0, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 0, 292, 0, 0, 0, 292, 292, 292, 292, 292, 292, 0, 292, 292, 292, 292, 292, 292, 292, 292, 292, 290, 290, 290, 290, 290, 290, 290, 290, 0, 0, 0, 0, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 0, 290, 0, 0, 0, 290, 290, 290, 290, 290, 290, 0, 290, 290, 290, 290, 290, 290, 290, 290, 290, 288, 288, 288, 288, 288, 288, 288, 288, 0, 0, 0, 0, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 0, 288, 0, 0, 0, 288, 288, 288, 288, 288, 288, 0, 288, 288, 288, 288, 288, 288, 288, 288, 288, 0, 0, 0, 292, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 292, 0, 292, 0, 0, 292, 292, 0, 292, 0, 0, 0, 0, 0, 0, 0, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 290, 0, 0, 290, 290, 0, 290, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 288, 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 288, 0, 288, 0, 0, 288, 288, 0, 288, 0, 0, 0, 0, 0, 0, 0, 288, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 0, 0, 0, 692, 693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 694, 0, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 0, 678, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 0, 844, 0, 0, 0, 0, 0, 0, 422, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 1014, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 0, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 1016, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 694, 0, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 420, 0, 0, 421, 374, 375, 376, 377, 378, 379, 380, 381, 0, 0, 422, 0, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 0, 403, 0, 0, 0, 404, 405, 406, 407, 408, 409, 0, 410, 411, 412, 413, 414, 415, 416, 417, 418, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 0, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 419, 0, 420, 0, 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 0, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, }; short yycheck[] = { 151, 152, 355, 370, 424, 372, 402, 360, 161, 402, 662, 0, 432, 746, 256, 435, 256, 256, 402, 256, 256, 402, 256, 256, 256, 402, 256, 434, 402, 256, 256, 402, 256, 256, 256, 323, 324, 325, 256, 256, 496, 256, 97, 450, 500, 496, 502, 256, 405, 500, 506, 502, 439, 501, 441, 503, 504, 505, 256, 507, 456, 405, 458, 572, 256, 256, 522, 523, 256, 256, 405, 256, 523, 256, 522, 256, 256, 256, 256, 256, 256, 323, 324, 325, 323, 324, 325, 323, 324, 325, 256, 510, 256, 512, 256, 515, 256, 256, 256, 256, 256, 256, 256, 656, 428, 323, 324, 325, 256, 256, 663, 256, 405, 256, 510, 432, 512, 510, 256, 512, 256, 514, 256, 447, 256, 442, 510, 256, 512, 510, 514, 512, 525, 510, 256, 512, 510, 256, 512, 510, 405, 512, 422, 423, 405, 256, 256, 256, 256, 256, 703, 256, 256, 256, 256, 437, 256, 256, 256, 214, 513, 441, 450, 436, 405, 405, 256, 256, 441, 451, 256, 405, 264, 682, 256, 405, 685, 256, 256, 572, 256, 405, 256, 405, 256, 581, 256, 256, 572, 256, 405, 256, 434, 435, 436, 256, 438, 256, 434, 435, 436, 434, 438, 445, 256, 438, 443, 434, 450, 445, 442, 450, 445, 580, 450, 368, 434, 435, 436, 445, 438, 954, 445, 450, 680, 681, 443, 445, 445, 680, 681, 440, 450, 689, 690, 256, 434, 435, 436, 690, 438, 689, 434, 435, 436, 256, 438, 445, 256, 256, 902, 439, 443, 445, 445, 442, 444, 442, 441, 679, 256, 442, 442, 442, 442, 442, 442, 405, 256, 435, 436, 435, 436, 692, 693, 264, 265, 266, 267, 268, 442, 256, 442, 442, 442, 442, 442, 442, 442, 682, 671, 436, 685, 436, 442, 442, 692, 693, 682, 692, 693, 685, 436, 955, 700, 441, 699, 441, 692, 693, 442, 692, 693, 442, 256, 692, 693, 436, 692, 693, 442, 692, 693, 832, 833, 834, 835, 836, 837, 838, 839, 442, 442, 442, 442, 442, 0, 442, 442, 442, 442, 694, 442, 442, 442, 434, 436, 256, 427, 428, 436, 441, 441, 435, 436, 434, 256, 436, 436, 435, 436, 435, 436, 435, 436, 435, 436, 436, 435, 436, 435, 436, 256, 256, 527, 436, 435, 436, 731, 732, 733, 734, 256, 435, 436, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 405, 256, 256, 256, 256, 256, 256, 256, 435, 436, 256, 321, 256, 256, 405, 256, 321, 434, 435, 845, 846, 256, 436, 436, 256, 256, 256, 256, 256, 256, 256, 256, 434, 832, 833, 834, 835, 836, 837, 838, 839, 435, 832, 833, 834, 835, 836, 837, 838, 839, 301, 256, 256, 405, 256, 436, 405, 256, 884, 885, 886, 887, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 405, 256, 586, 439, 434, 441, 256, 378, 438, 321, 0, 256, 292, 293, 326, 445, 436, 388, 445, 390, 391, 392, 393, 394, 292, 293, 655, 427, 428, 435, 436, 437, 405, 662, 434, 435, 436, 437, 384, 385, 386, 387, 405, 427, 428, 451, 427, 428, 405, 436, 434, 451, 434, 434, 405, 405, 438, 434, 436, 445, 441, 438, 265, 445, 256, 256, 256, 256, 445, 384, 385, 386, 387, 444, 436, 436, 434, 406, 407, 408, 409, 410, 411, 667, 436, 256, 256, 436, 436, 436, 964, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 434, 434, 434, 434, 434, 434, 434, 256, 405, 434, 1015, 434, 1017, 1018, 434, 264, 265, 266, 267, 268, 434, 266, 268, 434, 434, 434, 434, 434, 434, 434, 434, 983, 256, 256, 256, 256, 256, 256, 256, 256, 256, 267, 256, 256, 406, 407, 408, 409, 410, 411, 434, 434, 0, 434, 406, 1007, 434, 444, 749, 411, 405, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 1009, 1010, 1011, 323, 324, 325, 434, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 434, 434, 434, 434, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 434, 434, 405, 256, 256, 405, 405, 378, 405, 405, 902, 264, 265, 266, 267, 268, 908, 256, 389, 405, 391, 392, 393, 394, 439, 256, 441, 434, 434, 434, 435, 436, 436, 438, 292, 293, 441, 292, 293, 405, 445, 292, 293, 448, 449, 450, 0, 405, 256, 264, 265, 266, 267, 268, 434, 434, 434, 434, 434, 434, 434, 434, 434, 955, 434, 434, 405, 405, 405, 405, 323, 324, 325, 444, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 439, 439, 441, 441, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 256, 256, 406, 407, 408, 409, 410, 411, 264, 265, 266, 267, 268, 256, 434, 406, 407, 408, 409, 410, 411, 412, 413, 406, 407, 408, 409, 410, 411, 434, 435, 436, 405, 438, 444, 405, 441, 444, 434, 405, 445, 444, 405, 448, 0, 450, 406, 407, 408, 409, 410, 411, 412, 413, 256, 434, 435, 436, 405, 438, 405, 323, 324, 325, 405, 405, 445, 323, 324, 325, 256, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 405, 405, 405, 405, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 434, 256, 406, 407, 408, 409, 410, 411, 256, 264, 265, 266, 267, 268, 406, 407, 408, 409, 410, 411, 412, 413, 405, 434, 435, 436, 405, 438, 405, 434, 435, 436, 405, 438, 445, 405, 441, 427, 428, 450, 445, 405, 405, 448, 434, 450, 436, 405, 405, 384, 385, 386, 387, 405, 434, 406, 407, 408, 409, 410, 411, 412, 413, 405, 312, 313, 314, 315, 405, 317, 435, 405, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 405, 405, 405, 405, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 447, 256, 405, 378, 434, 405, 436, 438, 438, 264, 265, 266, 267, 268, 389, 445, 391, 392, 393, 394, 427, 428, 405, 405, 439, 446, 446, 434, 435, 436, 437, 424, 425, 426, 427, 428, 429, 430, 431, 449, 449, 449, 434, 448, 451, 424, 425, 426, 427, 428, 429, 430, 431, 446, 427, 428, 427, 428, 429, 430, 431, 434, 441, 436, 501, 449, 503, 504, 505, 444, 507, 449, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 434, 434, 434, 434, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 256, 435, 443, 436, 442, 256, 257, 258, 259, 260, 261, 262, 263, 264, 442, 442, 442, 442, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 442, 291, 442, 442, 448, 295, 296, 297, 298, 299, 300, 442, 302, 303, 304, 305, 306, 307, 308, 309, 310, 256, 257, 258, 259, 260, 261, 262, 263, 264, 442, 442, 442, 440, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 446, 291, 446, 446, 446, 295, 296, 297, 298, 299, 300, 447, 302, 303, 304, 305, 306, 307, 308, 309, 310, 256, 257, 258, 259, 260, 261, 262, 263, 264, 449, 439, 446, 443, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 446, 291, 441, 441, 441, 295, 296, 297, 298, 299, 300, 441, 302, 303, 304, 305, 306, 307, 308, 309, 310, 441, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 441, 441, 378, 435, 434, 437, 434, 434, 440, 441, 434, 443, 434, 389, 446, 391, 392, 393, 394, 451, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 406, 407, 408, 409, 410, 411, 412, 413, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 434, 434, 326, 435, 434, 437, 434, 434, 440, 441, 439, 443, 405, 434, 446, 434, 439, 443, 443, 451, 378, 414, 415, 416, 417, 418, 419, 420, 421, 443, 388, 443, 390, 391, 392, 393, 394, 424, 425, 426, 427, 428, 429, 430, 431, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 290, 442, 441, 435, 441, 437, 441, 441, 440, 441, 441, 443, 441, 441, 446, 441, 441, 441, 441, 451, 256, 257, 258, 259, 260, 261, 262, 263, 264, 441, 441, 441, 441, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 441, 291, 441, 441, 441, 295, 296, 297, 298, 299, 300, 441, 302, 303, 304, 305, 306, 307, 308, 309, 310, 256, 257, 258, 259, 260, 261, 262, 263, 264, 439, 441, 321, 441, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 441, 291, 441, 441, 441, 295, 296, 297, 298, 299, 300, 441, 302, 303, 304, 305, 306, 307, 308, 309, 310, 256, 257, 258, 259, 260, 261, 262, 263, 264, 441, 441, 441, 441, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 441, 291, 441, 441, 441, 295, 296, 297, 298, 299, 300, 441, 302, 303, 304, 305, 306, 307, 308, 309, 310, 441, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 441, 441, 441, 435, 441, 437, 441, 441, 440, 441, 443, 443, 441, 441, 446, 441, 441, 441, 441, 451, 441, 441, 441, 441, 441, 441, 405, 441, 441, 405, 405, 405, 447, 405, 405, 443, 439, 436, 436, 436, 436, 429, 321, 321, 434, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 436, 443, 439, 435, 292, 437, 434, 405, 440, 441, 434, 443, 434, 405, 446, 405, 441, 405, 441, 451, 441, 441, 441, 441, 441, 441, 405, 405, 439, 405, 444, 439, 439, 439, 449, 436, 449, 449, 440, 436, 440, 435, 441, 846, 440, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 440, 205, 441, 435, 966, 437, 444, 444, 440, 441, 531, 443, 78, 752, 446, 444, 900, 937, -1, 451, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, -1, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, -1, -1, -1, 435, -1, 437, -1, -1, 440, 441, -1, 443, -1, -1, 446, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, -1, -1, -1, 435, -1, 437, -1, -1, 440, 441, -1, 443, -1, -1, 446, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, -1, -1, -1, 435, -1, 437, -1, -1, 440, 441, -1, 443, -1, -1, 446, -1, -1, -1, -1, 451, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, -1, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, -1, -1, -1, 435, -1, 437, -1, -1, 440, 441, -1, 443, -1, -1, 446, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, 441, -1, 443, 444, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, -1, 444, -1, -1, -1, -1, -1, -1, 451, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, -1, 444, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, -1, 444, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, -1, 444, -1, -1, -1, -1, -1, -1, 451, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, -1, 444, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, -1, 444, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, -1, 444, -1, -1, -1, -1, -1, -1, 451, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, -1, 444, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, -1, 444, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 451, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, -1, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 427, 428, -1, -1, -1, 432, -1, 434, 435, -1, 437, -1, -1, -1, -1, 442, 443, -1, 445, -1, -1, -1, -1, -1, 451, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, -1, -1, -1, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, -1, -1, -1, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 427, 428, -1, -1, -1, -1, 433, 434, 435, 436, 437, -1, -1, -1, -1, 442, -1, -1, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 427, 428, -1, -1, -1, -1, 433, 434, 435, 436, 437, -1, -1, -1, -1, 442, 257, 258, 259, 260, 261, 262, 263, 264, 451, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, -1, -1, -1, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, -1, -1, -1, 435, -1, 437, -1, -1, 440, 441, -1, 443, -1, -1, 446, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, -1, -1, -1, 435, -1, 437, -1, -1, 440, 441, -1, 443, -1, -1, 446, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 422, 423, 424, 425, 426, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, 441, -1, 443, -1, -1, 446, -1, -1, -1, -1, 451, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, -1, -1, -1, 422, 423, 424, 425, 426, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, 441, -1, 443, -1, -1, 446, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 422, 423, 424, 425, 426, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, 441, -1, 443, -1, -1, 446, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, 439, 440, 441, -1, 443, -1, -1, -1, -1, -1, -1, -1, 451, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, -1, -1, -1, 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, 439, 440, 441, -1, 443, -1, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, 441, -1, 443, -1, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, 441, -1, 443, -1, -1, -1, -1, -1, -1, -1, 451, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, -1, -1, -1, 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, 441, -1, 443, -1, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, 441, -1, 443, -1, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, 441, -1, 443, -1, -1, -1, -1, -1, -1, -1, 451, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, -1, -1, -1, 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, 443, -1, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, -1, 444, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, -1, 444, -1, -1, -1, -1, -1, -1, 451, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, 443, -1, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, 437, -1, -1, 440, 257, 258, 259, 260, 261, 262, 263, 264, -1, -1, 451, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, 291, -1, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, -1, -1, -1, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 448, -1, -1, 435, -1, 437, -1, -1, 440, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, -1, -1, -1, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 448, }; #define YYFINAL 77 #ifndef YYDEBUG #define YYDEBUG 0 #endif #define YYMAXTOKEN 451 #if YYDEBUG char *yyname[] = { "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"FORWARD","SEND","DROP","EXIT", "RETURN","LOG_TOK","ERROR","ROUTE","ROUTE_FAILURE","ROUTE_ONREPLY", "ROUTE_BRANCH","ROUTE_ERROR","SET_HOST","SET_HOSTPORT","PREFIX", "SET_TIME_STAMP","RESET_TIME_STAMP","DIFF_TIME_STAMP","STRIP","STRIP_TAIL", "APPEND_BRANCH","SET_USER","SET_USERPASS","SET_PORT","SET_URI","REVERT_URI", "SET_DSTURI","RESET_DSTURI","ISDSTURISET","FORCE_RPORT","FORCE_LOCAL_RPORT", "FORCE_TCP_ALIAS","IF","ELSE","SWITCH","CASE","DEFAULT","SBREAK", "SET_ADV_ADDRESS","SET_ADV_PORT","FORCE_SEND_SOCKET","SERIALIZE_BRANCHES", "NEXT_BRANCHES","USE_BLACKLIST","MAX_LEN","SETFLAG","RESETFLAG","ISFLAGSET", "SETBFLAG","RESETBFLAG","ISBFLAGSET","SETSFLAG","RESETSFLAG","ISSFLAGSET", "METHOD","URI","FROM_URI","TO_URI","SRCIP","SRCPORT","DSTIP","DSTPORT","PROTO", "AF","MYSELF","MSGLEN","UDP","TCP","TLS","NULLV","DEBUG","FORK","LOGSTDERROR", "LOGFACILITY","LOGNAME","AVP_ALIASES","LISTEN","ALIAS","AUTO_ALIASES","DNS", "REV_DNS","DNS_TRY_IPV6","DNS_RETR_TIME","DNS_RETR_NO","DNS_SERVERS_NO", "DNS_USE_SEARCH","PORT","CHILDREN","CHECK_VIA","MEMLOG","SIP_WARNING", "SOCK_MODE","SOCK_USER","SOCK_GROUP","UNIX_SOCK","UNIX_SOCK_CHILDREN", "UNIX_TX_TIMEOUT","SERVER_SIGNATURE","SERVER_HEADER","USER_AGENT_HEADER", "REPLY_TO_VIA","LOADMODULE","MPATH","MODPARAM","MAXBUFFER","USER","GROUP", "CHROOT","WDIR","MHOMED","DISABLE_TCP","TCP_ACCEPT_ALIASES","TCP_CHILDREN", "TCP_CONNECT_TIMEOUT","TCP_SEND_TIMEOUT","TCP_CON_LIFETIME","TCP_POLL_METHOD", "TCP_MAX_CONNECTIONS","DISABLE_TLS","TLSLOG","TLS_PORT_NO","TLS_METHOD", "TLS_HANDSHAKE_TIMEOUT","TLS_SEND_TIMEOUT","TLS_SERVER_DOMAIN", "TLS_CLIENT_DOMAIN","TLS_CLIENT_DOMAIN_AVP","SSLv23","SSLv2","SSLv3","TLSv1", "TLS_VERIFY_CLIENT","TLS_VERIFY_SERVER","TLS_REQUIRE_CLIENT_CERTIFICATE", "TLS_CERTIFICATE","TLS_PRIVATE_KEY","TLS_CA_LIST","TLS_CIPHERS_LIST", "ADVERTISED_ADDRESS","ADVERTISED_PORT","DISABLE_CORE","OPEN_FD_LIMIT", "MCAST_LOOPBACK","MCAST_TTL","TOS","DISABLE_DNS_FAILOVER", "DISABLE_DNS_BLACKLIST","DST_BLACKLIST","EQUAL","EQUAL_T","GT","LT","GTE","LTE", "DIFF","MATCH","NOTMATCH","PLUSEQ","MINUSEQ","SLASHEQ","MULTEQ","MODULOEQ", "BANDEQ","BOREQ","BXOREQ","OR","AND","BOR","BAND","BXOR","PLUS","MINUS","SLASH", "MULT","MODULO","NOT","BNOT","NUMBER","ID","STRING","SCRIPTVAR","IPV6ADDR", "COMMA","SEMICOLON","RPAREN","LPAREN","LBRACE","RBRACE","LBRACK","RBRACK","DOT", "CR","COLON","ANY","SCRIPTVARERR", }; char *yyrule[] = { "$accept : cfg", "cfg : statements", "statements : statements statement", "statements : statement", "statements : statements error", "statement : assign_stm", "statement : module_stm", "$$1 :", "statement : $$1 route_stm", "$$2 :", "statement : $$2 failure_route_stm", "$$3 :", "statement : $$3 onreply_route_stm", "$$4 :", "statement : $$4 branch_route_stm", "$$5 :", "statement : $$5 error_route_stm", "statement : CR", "listen_id : ip", "listen_id : STRING", "listen_id : host", "proto : UDP", "proto : TCP", "proto : TLS", "proto : ANY", "port : NUMBER", "port : ANY", "snumber : NUMBER", "snumber : PLUS NUMBER", "snumber : MINUS NUMBER", "phostport : listen_id", "phostport : listen_id COLON port", "phostport : proto COLON listen_id", "phostport : proto COLON listen_id COLON port", "phostport : listen_id COLON error", "id_lst : phostport", "id_lst : phostport id_lst", "blst_elem : LPAREN proto COMMA ipnet COMMA port COMMA STRING RPAREN", "blst_elem : NOT LPAREN proto COMMA ipnet COMMA port COMMA STRING RPAREN", "blst_elem_list : blst_elem_list COMMA blst_elem", "blst_elem_list : blst_elem", "blst_elem_list : blst_elem_list error", "assign_stm : DEBUG EQUAL NUMBER", "assign_stm : DEBUG EQUAL error", "assign_stm : FORK EQUAL NUMBER", "assign_stm : FORK EQUAL error", "assign_stm : LOGSTDERROR EQUAL NUMBER", "assign_stm : LOGSTDERROR EQUAL error", "assign_stm : LOGFACILITY EQUAL ID", "assign_stm : LOGFACILITY EQUAL error", "assign_stm : LOGNAME EQUAL STRING", "assign_stm : LOGNAME EQUAL error", "assign_stm : AVP_ALIASES EQUAL STRING", "assign_stm : AVP_ALIASES EQUAL error", "assign_stm : DNS EQUAL NUMBER", "assign_stm : DNS EQUAL error", "assign_stm : REV_DNS EQUAL NUMBER", "assign_stm : REV_DNS EQUAL error", "assign_stm : DNS_TRY_IPV6 EQUAL NUMBER", "assign_stm : DNS_TRY_IPV6 error", "assign_stm : DNS_RETR_TIME EQUAL NUMBER", "assign_stm : DNS_RETR_TIME error", "assign_stm : DNS_RETR_NO EQUAL NUMBER", "assign_stm : DNS_RETR_NO error", "assign_stm : DNS_SERVERS_NO EQUAL NUMBER", "assign_stm : DNS_SERVERS_NO error", "assign_stm : DNS_USE_SEARCH EQUAL NUMBER", "assign_stm : DNS_USE_SEARCH error", "assign_stm : PORT EQUAL NUMBER", "assign_stm : MAXBUFFER EQUAL NUMBER", "assign_stm : MAXBUFFER EQUAL error", "assign_stm : PORT EQUAL error", "assign_stm : CHILDREN EQUAL NUMBER", "assign_stm : CHILDREN EQUAL error", "assign_stm : CHECK_VIA EQUAL NUMBER", "assign_stm : CHECK_VIA EQUAL error", "assign_stm : MEMLOG EQUAL NUMBER", "assign_stm : MEMLOG EQUAL error", "assign_stm : SIP_WARNING EQUAL NUMBER", "assign_stm : SIP_WARNING EQUAL error", "assign_stm : SOCK_MODE EQUAL NUMBER", "assign_stm : SOCK_MODE EQUAL error", "assign_stm : SOCK_USER EQUAL STRING", "assign_stm : SOCK_USER EQUAL ID", "assign_stm : SOCK_USER EQUAL error", "assign_stm : SOCK_GROUP EQUAL STRING", "assign_stm : SOCK_GROUP EQUAL ID", "assign_stm : SOCK_GROUP EQUAL error", "assign_stm : UNIX_SOCK EQUAL STRING", "assign_stm : UNIX_SOCK EQUAL error", "assign_stm : UNIX_SOCK_CHILDREN EQUAL NUMBER", "assign_stm : UNIX_SOCK_CHILDREN EQUAL error", "assign_stm : UNIX_TX_TIMEOUT EQUAL NUMBER", "assign_stm : UNIX_TX_TIMEOUT EQUAL error", "assign_stm : USER EQUAL STRING", "assign_stm : USER EQUAL ID", "assign_stm : USER EQUAL error", "assign_stm : GROUP EQUAL STRING", "assign_stm : GROUP EQUAL ID", "assign_stm : GROUP EQUAL error", "assign_stm : CHROOT EQUAL STRING", "assign_stm : CHROOT EQUAL ID", "assign_stm : CHROOT EQUAL error", "assign_stm : WDIR EQUAL STRING", "assign_stm : WDIR EQUAL ID", "assign_stm : WDIR EQUAL error", "assign_stm : MHOMED EQUAL NUMBER", "assign_stm : MHOMED EQUAL error", "assign_stm : DISABLE_TCP EQUAL NUMBER", "assign_stm : DISABLE_TCP EQUAL error", "assign_stm : TCP_ACCEPT_ALIASES EQUAL NUMBER", "assign_stm : TCP_ACCEPT_ALIASES EQUAL error", "assign_stm : TCP_CHILDREN EQUAL NUMBER", "assign_stm : TCP_CHILDREN EQUAL error", "assign_stm : TCP_CONNECT_TIMEOUT EQUAL NUMBER", "assign_stm : TCP_CONNECT_TIMEOUT EQUAL error", "assign_stm : TCP_SEND_TIMEOUT EQUAL NUMBER", "assign_stm : TCP_SEND_TIMEOUT EQUAL error", "assign_stm : TCP_CON_LIFETIME EQUAL NUMBER", "assign_stm : TCP_CON_LIFETIME EQUAL error", "assign_stm : TCP_POLL_METHOD EQUAL ID", "assign_stm : TCP_POLL_METHOD EQUAL STRING", "assign_stm : TCP_POLL_METHOD EQUAL error", "assign_stm : TCP_MAX_CONNECTIONS EQUAL NUMBER", "assign_stm : TCP_MAX_CONNECTIONS EQUAL error", "assign_stm : DISABLE_TLS EQUAL NUMBER", "assign_stm : DISABLE_TLS EQUAL error", "assign_stm : TLSLOG EQUAL NUMBER", "assign_stm : TLSLOG EQUAL error", "assign_stm : TLS_PORT_NO EQUAL NUMBER", "assign_stm : TLS_PORT_NO EQUAL error", "assign_stm : TLS_METHOD EQUAL SSLv23", "assign_stm : TLS_METHOD EQUAL SSLv2", "assign_stm : TLS_METHOD EQUAL SSLv3", "assign_stm : TLS_METHOD EQUAL TLSv1", "assign_stm : TLS_METHOD EQUAL error", "assign_stm : TLS_VERIFY_CLIENT EQUAL NUMBER", "assign_stm : TLS_VERIFY_CLIENT EQUAL error", "assign_stm : TLS_VERIFY_SERVER EQUAL NUMBER", "assign_stm : TLS_VERIFY_SERVER EQUAL error", "assign_stm : TLS_REQUIRE_CLIENT_CERTIFICATE EQUAL NUMBER", "assign_stm : TLS_REQUIRE_CLIENT_CERTIFICATE EQUAL error", "assign_stm : TLS_CERTIFICATE EQUAL STRING", "assign_stm : TLS_CERTIFICATE EQUAL error", "assign_stm : TLS_PRIVATE_KEY EQUAL STRING", "assign_stm : TLS_PRIVATE_KEY EQUAL error", "assign_stm : TLS_CA_LIST EQUAL STRING", "assign_stm : TLS_CA_LIST EQUAL error", "assign_stm : TLS_CIPHERS_LIST EQUAL STRING", "assign_stm : TLS_CIPHERS_LIST EQUAL error", "assign_stm : TLS_HANDSHAKE_TIMEOUT EQUAL NUMBER", "assign_stm : TLS_HANDSHAKE_TIMEOUT EQUAL error", "assign_stm : TLS_SEND_TIMEOUT EQUAL NUMBER", "assign_stm : TLS_SEND_TIMEOUT EQUAL error", "assign_stm : TLS_CLIENT_DOMAIN_AVP EQUAL NUMBER", "assign_stm : TLS_CLIENT_DOMAIN_AVP EQUAL error", "assign_stm : tls_server_domain_stm", "assign_stm : tls_client_domain_stm", "assign_stm : SERVER_SIGNATURE EQUAL NUMBER", "assign_stm : SERVER_SIGNATURE EQUAL error", "assign_stm : SERVER_HEADER EQUAL STRING", "assign_stm : SERVER_HEADER EQUAL error", "assign_stm : USER_AGENT_HEADER EQUAL STRING", "assign_stm : USER_AGENT_HEADER EQUAL error", "assign_stm : REPLY_TO_VIA EQUAL NUMBER", "assign_stm : REPLY_TO_VIA EQUAL error", "assign_stm : LISTEN EQUAL id_lst", "assign_stm : LISTEN EQUAL error", "assign_stm : ALIAS EQUAL id_lst", "assign_stm : ALIAS EQUAL error", "assign_stm : AUTO_ALIASES EQUAL NUMBER", "assign_stm : AUTO_ALIASES EQUAL error", "assign_stm : ADVERTISED_ADDRESS EQUAL listen_id", "assign_stm : ADVERTISED_ADDRESS EQUAL error", "assign_stm : ADVERTISED_PORT EQUAL NUMBER", "assign_stm : ADVERTISED_PORT EQUAL error", "assign_stm : DISABLE_CORE EQUAL NUMBER", "assign_stm : DISABLE_CORE EQUAL error", "assign_stm : OPEN_FD_LIMIT EQUAL NUMBER", "assign_stm : OPEN_FD_LIMIT EQUAL error", "assign_stm : MCAST_LOOPBACK EQUAL NUMBER", "assign_stm : MCAST_LOOPBACK EQUAL error", "assign_stm : MCAST_TTL EQUAL NUMBER", "assign_stm : MCAST_TTL EQUAL error", "assign_stm : TOS EQUAL NUMBER", "assign_stm : TOS EQUAL ID", "assign_stm : TOS EQUAL error", "assign_stm : MPATH EQUAL STRING", "assign_stm : MPATH EQUAL error", "assign_stm : DISABLE_DNS_FAILOVER EQUAL NUMBER", "assign_stm : DISABLE_DNS_FAILOVER error", "assign_stm : DISABLE_DNS_BLACKLIST EQUAL NUMBER", "assign_stm : DISABLE_DNS_BLACKLIST error", "assign_stm : error EQUAL", "assign_stm : DST_BLACKLIST EQUAL ID COLON LBRACE blst_elem_list RBRACE", "module_stm : LOADMODULE STRING", "module_stm : LOADMODULE error", "module_stm : MODPARAM LPAREN STRING COMMA STRING COMMA STRING RPAREN", "module_stm : MODPARAM LPAREN STRING COMMA STRING COMMA snumber RPAREN", "module_stm : MODPARAM error", "ip : ipv4", "ip : ipv6", "ipv4 : NUMBER DOT NUMBER DOT NUMBER DOT NUMBER", "ipv6addr : IPV6ADDR", "ipv6 : ipv6addr", "ipv6 : LBRACK ipv6addr RBRACK", "$$6 :", "tls_server_domain_stm : TLS_SERVER_DOMAIN LBRACK ip COLON port RBRACK $$6 LBRACE tls_server_decls RBRACE", "$$7 :", "tls_client_domain_stm : TLS_CLIENT_DOMAIN LBRACK ip COLON port RBRACK $$7 LBRACE tls_client_decls RBRACE", "$$8 :", "tls_client_domain_stm : TLS_CLIENT_DOMAIN LBRACK STRING RBRACK $$8 LBRACE tls_client_decls RBRACE", "tls_server_decls : tls_server_var", "tls_server_decls : tls_server_decls tls_server_var", "tls_client_decls : tls_client_var", "tls_client_decls : tls_client_decls tls_client_var", "tls_server_var : TLS_METHOD EQUAL SSLv23", "tls_server_var : TLS_METHOD EQUAL SSLv2", "tls_server_var : TLS_METHOD EQUAL SSLv3", "tls_server_var : TLS_METHOD EQUAL TLSv1", "tls_server_var : TLS_METHOD EQUAL error", "tls_server_var : TLS_CERTIFICATE EQUAL STRING", "tls_server_var : TLS_CERTIFICATE EQUAL error", "tls_server_var : TLS_PRIVATE_KEY EQUAL STRING", "tls_server_var : TLS_PRIVATE_KEY EQUAL error", "tls_server_var : TLS_CA_LIST EQUAL STRING", "tls_server_var : TLS_CA_LIST EQUAL error", "tls_server_var : TLS_CIPHERS_LIST EQUAL STRING", "tls_server_var : TLS_CIPHERS_LIST EQUAL error", "tls_server_var : TLS_VERIFY_CLIENT EQUAL NUMBER", "tls_server_var : TLS_VERIFY_CLIENT EQUAL error", "tls_server_var : TLS_REQUIRE_CLIENT_CERTIFICATE EQUAL NUMBER", "tls_server_var : TLS_REQUIRE_CLIENT_CERTIFICATE EQUAL error", "tls_client_var : TLS_METHOD EQUAL SSLv23", "tls_client_var : TLS_METHOD EQUAL SSLv2", "tls_client_var : TLS_METHOD EQUAL SSLv3", "tls_client_var : TLS_METHOD EQUAL TLSv1", "tls_client_var : TLS_METHOD EQUAL error", "tls_client_var : TLS_CERTIFICATE EQUAL STRING", "tls_client_var : TLS_CERTIFICATE EQUAL error", "tls_client_var : TLS_PRIVATE_KEY EQUAL STRING", "tls_client_var : TLS_PRIVATE_KEY EQUAL error", "tls_client_var : TLS_CA_LIST EQUAL STRING", "tls_client_var : TLS_CA_LIST EQUAL error", "tls_client_var : TLS_CIPHERS_LIST EQUAL STRING", "tls_client_var : TLS_CIPHERS_LIST EQUAL error", "tls_client_var : TLS_VERIFY_SERVER EQUAL NUMBER", "tls_client_var : TLS_VERIFY_SERVER EQUAL error", "route_stm : ROUTE LBRACE actions RBRACE", "route_stm : ROUTE LBRACK NUMBER RBRACK LBRACE actions RBRACE", "route_stm : ROUTE error", "failure_route_stm : ROUTE_FAILURE LBRACK NUMBER RBRACK LBRACE actions RBRACE", "failure_route_stm : ROUTE_FAILURE error", "onreply_route_stm : ROUTE_ONREPLY LBRACE actions RBRACE", "onreply_route_stm : ROUTE_ONREPLY LBRACK NUMBER RBRACK LBRACE actions RBRACE", "onreply_route_stm : ROUTE_ONREPLY error", "branch_route_stm : ROUTE_BRANCH LBRACK NUMBER RBRACK LBRACE actions RBRACE", "branch_route_stm : ROUTE_BRANCH error", "error_route_stm : ROUTE_ERROR LBRACE actions RBRACE", "error_route_stm : ROUTE_ERROR error", "exp : exp AND exp", "exp : exp OR exp", "exp : NOT exp", "exp : LPAREN exp RPAREN", "exp : LBRACK assignexp RBRACK", "exp : exp_elem", "equalop : EQUAL_T", "equalop : DIFF", "compop : GT", "compop : LT", "compop : GTE", "compop : LTE", "matchop : MATCH", "matchop : NOTMATCH", "intop : equalop", "intop : compop", "strop : equalop", "strop : compop", "strop : matchop", "uri_type : URI", "uri_type : FROM_URI", "uri_type : TO_URI", "script_var : SCRIPTVAR", "script_var : SCRIPTVARERR", "exp_elem : exp_cond", "exp_elem : exp_stm", "exp_elem : snumber", "exp_elem : script_var", "exp_elem : uri_type strop host", "exp_elem : DSTIP equalop ipnet", "exp_elem : DSTIP strop host", "exp_elem : SRCIP equalop ipnet", "exp_elem : SRCIP strop host", "exp_cond : METHOD strop STRING", "exp_cond : METHOD strop ID", "exp_cond : METHOD strop error", "exp_cond : METHOD error", "exp_cond : script_var strop script_var", "exp_cond : script_var strop STRING", "exp_cond : script_var strop ID", "exp_cond : script_var intop snumber", "exp_cond : script_var equalop MYSELF", "exp_cond : script_var equalop NULLV", "exp_cond : uri_type strop STRING", "exp_cond : uri_type equalop MYSELF", "exp_cond : uri_type strop error", "exp_cond : uri_type error", "exp_cond : SRCPORT intop NUMBER", "exp_cond : SRCPORT intop error", "exp_cond : SRCPORT error", "exp_cond : DSTPORT intop NUMBER", "exp_cond : DSTPORT intop error", "exp_cond : DSTPORT error", "exp_cond : PROTO intop proto", "exp_cond : PROTO intop error", "exp_cond : PROTO error", "exp_cond : AF intop NUMBER", "exp_cond : AF intop error", "exp_cond : AF error", "exp_cond : MSGLEN intop NUMBER", "exp_cond : MSGLEN intop MAX_LEN", "exp_cond : MSGLEN intop error", "exp_cond : MSGLEN error", "exp_cond : SRCIP strop STRING", "exp_cond : SRCIP equalop MYSELF", "exp_cond : SRCIP strop error", "exp_cond : SRCIP error", "exp_cond : DSTIP strop STRING", "exp_cond : DSTIP equalop MYSELF", "exp_cond : DSTIP strop error", "exp_cond : DSTIP error", "exp_cond : MYSELF equalop uri_type", "exp_cond : MYSELF equalop SRCIP", "exp_cond : MYSELF equalop DSTIP", "exp_cond : MYSELF equalop error", "exp_cond : MYSELF error", "ipnet : ip SLASH ip", "ipnet : ip SLASH NUMBER", "ipnet : ip", "ipnet : ip SLASH error", "host_sep : DOT", "host_sep : MINUS", "host : ID", "host : host host_sep ID", "host : host DOT error", "assignop : EQUAL", "assignop : PLUSEQ", "assignop : MINUSEQ", "assignop : SLASHEQ", "assignop : MULTEQ", "assignop : MODULOEQ", "assignop : BANDEQ", "assignop : BOREQ", "assignop : BXOREQ", "assignexp : snumber", "assignexp : STRING", "assignexp : ID", "assignexp : script_var", "assignexp : exp_cond", "assignexp : cmd", "assignexp : assignexp PLUS assignexp", "assignexp : assignexp MINUS assignexp", "assignexp : assignexp MULT assignexp", "assignexp : assignexp SLASH assignexp", "assignexp : assignexp MODULO assignexp", "assignexp : assignexp BAND assignexp", "assignexp : assignexp BOR assignexp", "assignexp : assignexp BXOR assignexp", "assignexp : BNOT assignexp", "assignexp : LPAREN assignexp RPAREN", "assign_cmd : script_var assignop assignexp", "assign_cmd : script_var EQUAL NULLV", "exp_stm : cmd", "exp_stm : if_cmd", "exp_stm : assign_cmd", "exp_stm : LBRACE actions RBRACE", "exp_stm : LBRACE RBRACE", "stm : action", "stm : LBRACE actions RBRACE", "stm : LBRACE RBRACE", "actions : actions action", "actions : action", "actions : actions error", "action : cmd SEMICOLON", "action : if_cmd", "action : switch_cmd", "action : assign_cmd SEMICOLON", "action : SEMICOLON", "action : cmd error", "if_cmd : IF exp stm", "if_cmd : IF exp stm ELSE stm", "switch_cmd : SWITCH LPAREN script_var RPAREN LBRACE switch_stm RBRACE", "switch_stm : case_stms default_stm", "switch_stm : case_stms", "case_stms : case_stms case_stm", "case_stms : case_stm", "case_stm : CASE snumber COLON actions SBREAK SEMICOLON", "case_stm : CASE snumber COLON SBREAK SEMICOLON", "case_stm : CASE snumber COLON actions", "case_stm : CASE snumber COLON", "case_stm : CASE STRING COLON actions SBREAK SEMICOLON", "case_stm : CASE STRING COLON SBREAK SEMICOLON", "case_stm : CASE STRING COLON actions", "case_stm : CASE STRING COLON", "default_stm : DEFAULT COLON actions", "default_stm : DEFAULT COLON", "cmd : FORWARD LPAREN STRING RPAREN", "cmd : FORWARD LPAREN RPAREN", "cmd : FORWARD error", "cmd : FORWARD LPAREN error RPAREN", "cmd : SEND LPAREN STRING RPAREN", "cmd : SEND error", "cmd : SEND LPAREN error RPAREN", "cmd : DROP LPAREN RPAREN", "cmd : DROP", "cmd : EXIT LPAREN RPAREN", "cmd : EXIT", "cmd : RETURN LPAREN snumber RPAREN", "cmd : RETURN LPAREN RPAREN", "cmd : RETURN", "cmd : LOG_TOK LPAREN STRING RPAREN", "cmd : LOG_TOK LPAREN snumber COMMA STRING RPAREN", "cmd : LOG_TOK error", "cmd : LOG_TOK LPAREN error RPAREN", "cmd : SETFLAG LPAREN NUMBER RPAREN", "cmd : SETFLAG error", "cmd : RESETFLAG LPAREN NUMBER RPAREN", "cmd : RESETFLAG error", "cmd : ISFLAGSET LPAREN NUMBER RPAREN", "cmd : ISFLAGSET error", "cmd : SETSFLAG LPAREN NUMBER RPAREN", "cmd : SETSFLAG error", "cmd : RESETSFLAG LPAREN NUMBER RPAREN", "cmd : RESETSFLAG error", "cmd : ISSFLAGSET LPAREN NUMBER RPAREN", "cmd : ISSFLAGSET error", "cmd : SETBFLAG LPAREN NUMBER COMMA NUMBER RPAREN", "cmd : SETBFLAG LPAREN NUMBER RPAREN", "cmd : SETBFLAG error", "cmd : RESETBFLAG LPAREN NUMBER COMMA NUMBER RPAREN", "cmd : RESETBFLAG LPAREN NUMBER RPAREN", "cmd : RESETBFLAG error", "cmd : ISBFLAGSET LPAREN NUMBER COMMA NUMBER RPAREN", "cmd : ISBFLAGSET LPAREN NUMBER RPAREN", "cmd : ISBFLAGSET error", "cmd : ERROR LPAREN STRING COMMA STRING RPAREN", "cmd : ERROR error", "cmd : ERROR LPAREN error RPAREN", "cmd : ROUTE LPAREN NUMBER RPAREN", "cmd : ROUTE error", "cmd : ROUTE LPAREN error RPAREN", "cmd : SET_HOST LPAREN STRING RPAREN", "cmd : SET_HOST error", "cmd : SET_HOST LPAREN error RPAREN", "cmd : PREFIX LPAREN STRING RPAREN", "cmd : PREFIX error", "cmd : PREFIX LPAREN error RPAREN", "cmd : STRIP_TAIL LPAREN NUMBER RPAREN", "cmd : STRIP_TAIL error", "cmd : STRIP_TAIL LPAREN error RPAREN", "cmd : STRIP LPAREN NUMBER RPAREN", "cmd : STRIP error", "cmd : STRIP LPAREN error RPAREN", "cmd : SET_TIME_STAMP LPAREN STRING RPAREN", "cmd : SET_TIME_STAMP error", "cmd : SET_TIME_STAMP LPAREN error RPAREN", "cmd : RESET_TIME_STAMP LPAREN RPAREN", "cmd : DIFF_TIME_STAMP LPAREN NUMBER COMMA STRING RPAREN", "cmd : DIFF_TIME_STAMP error", "cmd : DIFF_TIME_STAMP LPAREN error RPAREN", "cmd : RESET_TIME_STAMP error", "cmd : RESET_TIME_STAMP LPAREN error RPAREN", "cmd : APPEND_BRANCH LPAREN STRING COMMA STRING RPAREN", "cmd : APPEND_BRANCH LPAREN STRING RPAREN", "cmd : APPEND_BRANCH LPAREN RPAREN", "cmd : APPEND_BRANCH", "cmd : SET_HOSTPORT LPAREN STRING RPAREN", "cmd : SET_HOSTPORT error", "cmd : SET_HOSTPORT LPAREN error RPAREN", "cmd : SET_PORT LPAREN STRING RPAREN", "cmd : SET_PORT error", "cmd : SET_PORT LPAREN error RPAREN", "cmd : SET_USER LPAREN STRING RPAREN", "cmd : SET_USER error", "cmd : SET_USER LPAREN error RPAREN", "cmd : SET_USERPASS LPAREN STRING RPAREN", "cmd : SET_USERPASS error", "cmd : SET_USERPASS LPAREN error RPAREN", "cmd : SET_URI LPAREN STRING RPAREN", "cmd : SET_URI error", "cmd : SET_URI LPAREN error RPAREN", "cmd : REVERT_URI LPAREN RPAREN", "cmd : REVERT_URI", "cmd : SET_DSTURI LPAREN STRING RPAREN", "cmd : SET_DSTURI error", "cmd : SET_DSTURI LPAREN error RPAREN", "cmd : RESET_DSTURI LPAREN RPAREN", "cmd : RESET_DSTURI", "cmd : ISDSTURISET LPAREN RPAREN", "cmd : ISDSTURISET", "cmd : FORCE_RPORT LPAREN RPAREN", "cmd : FORCE_RPORT", "cmd : FORCE_LOCAL_RPORT LPAREN RPAREN", "cmd : FORCE_LOCAL_RPORT", "cmd : FORCE_TCP_ALIAS LPAREN NUMBER RPAREN", "cmd : FORCE_TCP_ALIAS LPAREN RPAREN", "cmd : FORCE_TCP_ALIAS", "cmd : FORCE_TCP_ALIAS LPAREN error RPAREN", "cmd : SET_ADV_ADDRESS LPAREN listen_id RPAREN", "cmd : SET_ADV_ADDRESS LPAREN error RPAREN", "cmd : SET_ADV_ADDRESS error", "cmd : SET_ADV_PORT LPAREN NUMBER RPAREN", "cmd : SET_ADV_PORT LPAREN error RPAREN", "cmd : SET_ADV_PORT error", "cmd : FORCE_SEND_SOCKET LPAREN phostport RPAREN", "cmd : FORCE_SEND_SOCKET LPAREN error RPAREN", "cmd : FORCE_SEND_SOCKET error", "cmd : SERIALIZE_BRANCHES LPAREN NUMBER RPAREN", "cmd : SERIALIZE_BRANCHES LPAREN error RPAREN", "cmd : SERIALIZE_BRANCHES error", "cmd : NEXT_BRANCHES LPAREN RPAREN", "cmd : NEXT_BRANCHES LPAREN error RPAREN", "cmd : NEXT_BRANCHES error", "cmd : USE_BLACKLIST LPAREN STRING RPAREN", "cmd : USE_BLACKLIST LPAREN error RPAREN", "cmd : USE_BLACKLIST error", "cmd : ID LPAREN RPAREN", "cmd : ID LPAREN STRING RPAREN", "cmd : ID LPAREN STRING COMMA STRING RPAREN", "cmd : ID LPAREN error RPAREN", }; #endif #ifdef YYSTACKSIZE #undef YYMAXDEPTH #define YYMAXDEPTH YYSTACKSIZE #else #ifdef YYMAXDEPTH #define YYSTACKSIZE YYMAXDEPTH #else #define YYSTACKSIZE 10000 #define YYMAXDEPTH 10000 #endif #endif #define YYINITSTACKSIZE 200 int yydebug; int yynerrs; int yyerrflag; int yychar; short *yyssp; YYSTYPE *yyvsp; YYSTYPE yyval; YYSTYPE yylval; short *yyss; short *yysslim; YYSTYPE *yyvs; int yystacksize; #line 2234 "cfg.y" extern int line; extern int column; extern int startcolumn; #if !defined(USE_TLS) || !defined(USE_TCP) || !defined(TIMING_INFO) \ || !defined(USE_MCAST) static void warn(char* s) { LOG(L_WARN, "cfg. warning: (%d,%d-%d): %s\n", line, startcolumn, column, s); cfg_errors++; } #endif static void yyerror(char* s) { LOG(L_CRIT, "parse error (%d,%d-%d): %s\n", line, startcolumn, column, s); cfg_errors++; } static struct socket_id* mk_listen_id(char* host, int proto, int port) { struct socket_id* l; l=pkg_malloc(sizeof(struct socket_id)); if (l==0){ LOG(L_CRIT,"ERROR: cfg. parser: out of memory.\n"); }else{ l->name=host; l->port=port; l->proto=proto; l->next=0; } return l; } #line 2653 "cfg.tab.c" /* allocate initial stack or double stack size, up to YYMAXDEPTH */ int yyparse __P((void)); static int yygrowstack __P((void)); static int yygrowstack() { int newsize, i; short *newss; YYSTYPE *newvs; if ((newsize = yystacksize) == 0) newsize = YYINITSTACKSIZE; else if (newsize >= YYMAXDEPTH) return -1; else if ((newsize *= 2) > YYMAXDEPTH) newsize = YYMAXDEPTH; i = yyssp - yyss; if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL) return -1; yyss = newss; yyssp = newss + i; if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL) return -1; yyvs = newvs; yyvsp = newvs + i; yystacksize = newsize; yysslim = yyss + newsize - 1; return 0; } #define YYABORT goto yyabort #define YYREJECT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab int yyparse() { int yym, yyn, yystate; #if YYDEBUG char *yys; if ((yys = getenv("YYDEBUG")) != NULL) { yyn = *yys; if (yyn >= '0' && yyn <= '9') yydebug = yyn - '0'; } #endif yynerrs = 0; yyerrflag = 0; yychar = (-1); if (yyss == NULL && yygrowstack()) goto yyoverflow; yyssp = yyss; yyvsp = yyvs; *yyssp = yystate = 0; yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif if (yyssp >= yysslim && yygrowstack()) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; yychar = (-1); if (yyerrflag > 0) --yyerrflag; goto yyloop; } if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { yyn = yytable[yyn]; goto yyreduce; } if (yyerrflag) goto yyinrecovery; goto yynewerror; yynewerror: yyerror("syntax error"); goto yyerrlab; yyerrlab: ++yynerrs; yyinrecovery: if (yyerrflag < 3) { yyerrflag = 3; for (;;) { if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); #endif if (yyssp >= yysslim && yygrowstack()) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; goto yyloop; } else { #if YYDEBUG if (yydebug) printf("%sdebug: error recovery discarding state %d\n", YYPREFIX, *yyssp); #endif if (yyssp <= yyss) goto yyabort; --yyssp; --yyvsp; } } } else { if (yychar == 0) goto yyabort; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif yychar = (-1); goto yyloop; } yyreduce: #if YYDEBUG if (yydebug) printf("%sdebug: state %d, reducing by rule %d (%s)\n", YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; yyval = yyvsp[1-yym]; switch (yyn) { case 2: #line 421 "cfg.y" {} break; case 3: #line 422 "cfg.y" {} break; case 4: #line 423 "cfg.y" { yyerror(""); YYABORT;} break; case 7: #line 428 "cfg.y" {rt=REQUEST_ROUTE;} break; case 9: #line 429 "cfg.y" {rt=FAILURE_ROUTE;} break; case 11: #line 430 "cfg.y" {rt=ONREPLY_ROUTE;} break; case 13: #line 431 "cfg.y" {rt=BRANCH_ROUTE;} break; case 15: #line 432 "cfg.y" {rt=ERROR_ROUTE;} break; case 18: #line 437 "cfg.y" { tmp=ip_addr2a(yyvsp[0].ipaddr); if(tmp==0){ LOG(L_CRIT, "ERROR: cfg. parser: bad ip " "address.\n"); yyval.strval=0; }else{ yyval.strval=pkg_malloc(strlen(tmp)+1); if (yyval.strval==0){ LOG(L_CRIT, "ERROR: cfg. parser: out of " "memory.\n"); }else{ strncpy(yyval.strval, tmp, strlen(tmp)+1); } } } break; case 19: #line 452 "cfg.y" { yyval.strval=pkg_malloc(strlen(yyvsp[0].strval)+1); if (yyval.strval==0){ LOG(L_CRIT, "ERROR: cfg. parser: out of " "memory.\n"); }else{ strncpy(yyval.strval, yyvsp[0].strval, strlen(yyvsp[0].strval)+1); } } break; case 20: #line 460 "cfg.y" { if (yyvsp[0].strval==0) { yyval.strval = 0; } else { yyval.strval=pkg_malloc(strlen(yyvsp[0].strval)+1); if (yyval.strval==0){ LOG(L_CRIT, "ERROR: cfg. parser: out of " "memory.\n"); }else{ strncpy(yyval.strval, yyvsp[0].strval, strlen(yyvsp[0].strval)+1); } } } break; case 21: #line 474 "cfg.y" { yyval.intval=PROTO_UDP; } break; case 22: #line 475 "cfg.y" { yyval.intval=PROTO_TCP; } break; case 23: #line 476 "cfg.y" { #ifdef USE_TLS yyval.intval=PROTO_TLS; #else yyval.intval=PROTO_TCP; warn("tls support not compiled in"); #endif } break; case 24: #line 484 "cfg.y" { yyval.intval=0; } break; case 25: #line 487 "cfg.y" { yyval.intval=yyvsp[0].intval; } break; case 26: #line 488 "cfg.y" { yyval.intval=0; } break; case 27: #line 491 "cfg.y" { yyval.intval=yyvsp[0].intval; } break; case 28: #line 492 "cfg.y" { yyval.intval=yyvsp[0].intval; } break; case 29: #line 493 "cfg.y" { yyval.intval=-yyvsp[0].intval; } break; case 30: #line 497 "cfg.y" { yyval.sockid=mk_listen_id(yyvsp[0].strval, 0, 0); } break; case 31: #line 498 "cfg.y" { yyval.sockid=mk_listen_id(yyvsp[-2].strval, 0, yyvsp[0].intval); } break; case 32: #line 499 "cfg.y" { yyval.sockid=mk_listen_id(yyvsp[0].strval, yyvsp[-2].intval, 0); } break; case 33: #line 500 "cfg.y" { yyval.sockid=mk_listen_id(yyvsp[-2].strval, yyvsp[-4].intval, yyvsp[0].intval);} break; case 34: #line 501 "cfg.y" { yyval.sockid=0; yyerror(" port number expected"); } break; case 35: #line 504 "cfg.y" { yyval.sockid=yyvsp[0].sockid ; } break; case 36: #line 505 "cfg.y" { yyval.sockid=yyvsp[-1].sockid; yyval.sockid->next=yyvsp[0].sockid; } break; case 37: #line 509 "cfg.y" { s_tmp.s=yyvsp[-1].strval; s_tmp.len=strlen(yyvsp[-1].strval); if (add_rule_to_list(&bl_head,&bl_tail,yyvsp[-5].ipnet,&s_tmp,yyvsp[-3].intval,yyvsp[-7].intval,0)) { yyerror("failed to add backlist element\n");YYABORT; } } break; case 38: #line 516 "cfg.y" { s_tmp.s=yyvsp[-1].strval; s_tmp.len=strlen(yyvsp[-1].strval); if (add_rule_to_list(&bl_head,&bl_tail,yyvsp[-5].ipnet,&s_tmp, yyvsp[-3].intval,yyvsp[-7].intval,BLR_APPLY_CONTRARY)) { yyerror("failed to add backlist element\n");YYABORT; } } break; case 39: #line 526 "cfg.y" {} break; case 40: #line 527 "cfg.y" {} break; case 41: #line 528 "cfg.y" { yyerror("bad black list element");} break; case 42: #line 532 "cfg.y" { debug=yyvsp[0].intval; } break; case 43: #line 533 "cfg.y" { yyerror("number expected"); } break; case 44: #line 534 "cfg.y" { dont_fork= ! yyvsp[0].intval; } break; case 45: #line 535 "cfg.y" { yyerror("boolean value expected"); } break; case 46: #line 536 "cfg.y" { if (!config_check) log_stderr=yyvsp[0].intval; } break; case 47: #line 537 "cfg.y" { yyerror("boolean value expected"); } break; case 48: #line 538 "cfg.y" { if ( (i_tmp=str2facility(yyvsp[0].strval))==-1) yyerror("bad facility (see syslog(3) man page)"); if (!config_check) log_facility=i_tmp; } break; case 49: #line 544 "cfg.y" { yyerror("ID expected"); } break; case 50: #line 545 "cfg.y" { log_name=yyvsp[0].strval; } break; case 51: #line 546 "cfg.y" { yyerror("string value expected"); } break; case 52: #line 547 "cfg.y" { if (yyvsp[0].strval!=0 && yyvsp[0].strval[0]!=0) if ( add_avp_galias_str(yyvsp[0].strval)!=0 ) yyerror("invalid AVP aliases");; } break; case 53: #line 552 "cfg.y" { yyerror("string value expected"); } break; case 54: #line 553 "cfg.y" { received_dns|= (yyvsp[0].intval)?DO_DNS:0; } break; case 55: #line 554 "cfg.y" { yyerror("boolean value expected"); } break; case 56: #line 555 "cfg.y" { received_dns|= (yyvsp[0].intval)?DO_REV_DNS:0; } break; case 57: #line 556 "cfg.y" { yyerror("boolean value expected"); } break; case 58: #line 557 "cfg.y" { dns_try_ipv6=yyvsp[0].intval; } break; case 59: #line 558 "cfg.y" { yyerror("boolean value expected"); } break; case 60: #line 559 "cfg.y" { dns_retr_time=yyvsp[0].intval; } break; case 61: #line 560 "cfg.y" { yyerror("number expected"); } break; case 62: #line 561 "cfg.y" { dns_retr_no=yyvsp[0].intval; } break; case 63: #line 562 "cfg.y" { yyerror("number expected"); } break; case 64: #line 563 "cfg.y" { dns_servers_no=yyvsp[0].intval; } break; case 65: #line 564 "cfg.y" { yyerror("number expected"); } break; case 66: #line 565 "cfg.y" { dns_search_list=yyvsp[0].intval; } break; case 67: #line 566 "cfg.y" { yyerror("boolean value expected"); } break; case 68: #line 567 "cfg.y" { port_no=yyvsp[0].intval; } break; case 69: #line 568 "cfg.y" { maxbuffer=yyvsp[0].intval; } break; case 70: #line 569 "cfg.y" { yyerror("number expected"); } break; case 71: #line 570 "cfg.y" { yyerror("number expected"); } break; case 72: #line 571 "cfg.y" { children_no=yyvsp[0].intval; } break; case 73: #line 572 "cfg.y" { yyerror("number expected"); } break; case 74: #line 573 "cfg.y" { check_via=yyvsp[0].intval; } break; case 75: #line 574 "cfg.y" { yyerror("boolean value expected"); } break; case 76: #line 575 "cfg.y" { memlog=yyvsp[0].intval; } break; case 77: #line 576 "cfg.y" { yyerror("int value expected"); } break; case 78: #line 577 "cfg.y" { sip_warning=yyvsp[0].intval; } break; case 79: #line 578 "cfg.y" { yyerror("boolean value expected"); } break; case 80: #line 579 "cfg.y" { sock_mode=yyvsp[0].intval; } break; case 81: #line 580 "cfg.y" { yyerror("int value expected"); } break; case 82: #line 581 "cfg.y" { sock_user=yyvsp[0].strval; } break; case 83: #line 582 "cfg.y" { sock_user=yyvsp[0].strval; } break; case 84: #line 583 "cfg.y" { yyerror("string value expected"); } break; case 85: #line 584 "cfg.y" { sock_group=yyvsp[0].strval; } break; case 86: #line 585 "cfg.y" { sock_group=yyvsp[0].strval; } break; case 87: #line 586 "cfg.y" { yyerror("string value expected"); } break; case 88: #line 587 "cfg.y" { unixsock_name=yyvsp[0].strval; } break; case 89: #line 588 "cfg.y" { yyerror("string value expected"); } break; case 90: #line 589 "cfg.y" { unixsock_children=yyvsp[0].intval; } break; case 91: #line 590 "cfg.y" { yyerror("int value expected\n"); } break; case 92: #line 591 "cfg.y" { unixsock_tx_timeout=yyvsp[0].intval; } break; case 93: #line 592 "cfg.y" { yyerror("int value expected\n"); } break; case 94: #line 593 "cfg.y" { user=yyvsp[0].strval; } break; case 95: #line 594 "cfg.y" { user=yyvsp[0].strval; } break; case 96: #line 595 "cfg.y" { yyerror("string value expected"); } break; case 97: #line 596 "cfg.y" { group=yyvsp[0].strval; } break; case 98: #line 597 "cfg.y" { group=yyvsp[0].strval; } break; case 99: #line 598 "cfg.y" { yyerror("string value expected"); } break; case 100: #line 599 "cfg.y" { chroot_dir=yyvsp[0].strval; } break; case 101: #line 600 "cfg.y" { chroot_dir=yyvsp[0].strval; } break; case 102: #line 601 "cfg.y" { yyerror("string value expected"); } break; case 103: #line 602 "cfg.y" { working_dir=yyvsp[0].strval; } break; case 104: #line 603 "cfg.y" { working_dir=yyvsp[0].strval; } break; case 105: #line 604 "cfg.y" { yyerror("string value expected"); } break; case 106: #line 605 "cfg.y" { mhomed=yyvsp[0].intval; } break; case 107: #line 606 "cfg.y" { yyerror("boolean value expected"); } break; case 108: #line 607 "cfg.y" { #ifdef USE_TCP tcp_disable=yyvsp[0].intval; #else warn("tcp support not compiled in"); #endif } break; case 109: #line 614 "cfg.y" { yyerror("boolean value expected"); } break; case 110: #line 615 "cfg.y" { #ifdef USE_TCP tcp_accept_aliases=yyvsp[0].intval; #else warn("tcp support not compiled in"); #endif } break; case 111: #line 622 "cfg.y" { yyerror("boolean value expected"); } break; case 112: #line 623 "cfg.y" { #ifdef USE_TCP tcp_children_no=yyvsp[0].intval; #else warn("tcp support not compiled in"); #endif } break; case 113: #line 630 "cfg.y" { yyerror("number expected"); } break; case 114: #line 631 "cfg.y" { #ifdef USE_TCP tcp_connect_timeout=yyvsp[0].intval; #else warn("tcp support not compiled in"); #endif } break; case 115: #line 638 "cfg.y" { yyerror("number expected"); } break; case 116: #line 639 "cfg.y" { #ifdef USE_TCP tcp_send_timeout=yyvsp[0].intval; #else warn("tcp support not compiled in"); #endif } break; case 117: #line 646 "cfg.y" { yyerror("number expected"); } break; case 118: #line 647 "cfg.y" { #ifdef USE_TCP tcp_con_lifetime=yyvsp[0].intval; #else warn("tcp support not compiled in"); #endif } break; case 119: #line 654 "cfg.y" { yyerror("number expected"); } break; case 120: #line 655 "cfg.y" { #ifdef USE_TCP tcp_poll_method=get_poll_type(yyvsp[0].strval); if (tcp_poll_method==POLL_NONE){ LOG(L_CRIT, "bad poll method name:" " %s\n, try one of %s.\n", yyvsp[0].strval, poll_support); yyerror("bad tcp_poll_method " "value"); } #else warn("tcp support not compiled in"); #endif } break; case 121: #line 669 "cfg.y" { #ifdef USE_TCP tcp_poll_method=get_poll_type(yyvsp[0].strval); if (tcp_poll_method==POLL_NONE){ LOG(L_CRIT, "bad poll method name:" " %s\n, try one of %s.\n", yyvsp[0].strval, poll_support); yyerror("bad tcp_poll_method " "value"); } #else warn("tcp support not compiled in"); #endif } break; case 122: #line 683 "cfg.y" { yyerror("poll method name expected"); } break; case 123: #line 684 "cfg.y" { #ifdef USE_TCP tcp_max_connections=yyvsp[0].intval; #else warn("tcp support not compiled in"); #endif } break; case 124: #line 691 "cfg.y" { yyerror("number expected"); } break; case 125: #line 692 "cfg.y" { #ifdef USE_TLS tls_disable=yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 126: #line 699 "cfg.y" { yyerror("boolean value expected"); } break; case 127: #line 700 "cfg.y" { #ifdef USE_TLS tls_log=yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 128: #line 707 "cfg.y" { yyerror("int value expected"); } break; case 129: #line 708 "cfg.y" { #ifdef USE_TLS tls_port_no=yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 130: #line 715 "cfg.y" { yyerror("number expected"); } break; case 131: #line 716 "cfg.y" { #ifdef USE_TLS tls_default_server_domain->method = TLS_USE_SSLv23; tls_default_client_domain->method = TLS_USE_SSLv23; #else warn("tls support not compiled in"); #endif } break; case 132: #line 726 "cfg.y" { #ifdef USE_TLS tls_default_server_domain->method = TLS_USE_SSLv2; tls_default_client_domain->method = TLS_USE_SSLv2; #else warn("tls support not compiled in"); #endif } break; case 133: #line 736 "cfg.y" { #ifdef USE_TLS tls_default_server_domain->method = TLS_USE_SSLv3; tls_default_client_domain->method = TLS_USE_SSLv3; #else warn("tls support not compiled in"); #endif } break; case 134: #line 746 "cfg.y" { #ifdef USE_TLS tls_default_server_domain->method = TLS_USE_TLSv1; tls_default_client_domain->method = TLS_USE_TLSv1; #else warn("tls support not compiled in"); #endif } break; case 135: #line 756 "cfg.y" { #ifdef USE_TLS yyerror("SSLv23, SSLv2, SSLv3 or TLSv1" " expected"); #else warn("tls support not compiled in"); #endif } break; case 136: #line 765 "cfg.y" { #ifdef USE_TLS tls_default_server_domain->verify_cert = yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 137: #line 773 "cfg.y" { yyerror("boolean value expected"); } break; case 138: #line 774 "cfg.y" { #ifdef USE_TLS tls_default_client_domain->verify_cert =yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 139: #line 782 "cfg.y" { yyerror("boolean value expected"); } break; case 140: #line 783 "cfg.y" { #ifdef USE_TLS tls_default_server_domain->require_client_cert=yyvsp[0].intval; #else warn( "tls support not compiled in"); #endif } break; case 141: #line 790 "cfg.y" { yyerror("boolean value expected"); } break; case 142: #line 791 "cfg.y" { #ifdef USE_TLS tls_default_server_domain->cert_file= yyvsp[0].strval; tls_default_client_domain->cert_file= yyvsp[0].strval; #else warn("tls support not compiled in"); #endif } break; case 143: #line 801 "cfg.y" { yyerror("string value expected"); } break; case 144: #line 802 "cfg.y" { #ifdef USE_TLS tls_default_server_domain->pkey_file= yyvsp[0].strval; tls_default_client_domain->pkey_file= yyvsp[0].strval; #else warn("tls support not compiled in"); #endif } break; case 145: #line 812 "cfg.y" { yyerror("string value expected"); } break; case 146: #line 813 "cfg.y" { #ifdef USE_TLS tls_default_server_domain->ca_file = yyvsp[0].strval; tls_default_client_domain->ca_file = yyvsp[0].strval; #else warn("tls support not compiled in"); #endif } break; case 147: #line 823 "cfg.y" { yyerror("string value expected"); } break; case 148: #line 824 "cfg.y" { #ifdef USE_TLS tls_default_server_domain->ciphers_list = yyvsp[0].strval; tls_default_client_domain->ciphers_list = yyvsp[0].strval; #else warn("tls support not compiled in"); #endif } break; case 149: #line 834 "cfg.y" { yyerror("string value expected"); } break; case 150: #line 835 "cfg.y" { #ifdef USE_TLS tls_handshake_timeout=yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 151: #line 842 "cfg.y" { yyerror("number expected"); } break; case 152: #line 843 "cfg.y" { #ifdef USE_TLS tls_send_timeout=yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 153: #line 850 "cfg.y" { yyerror("number expected"); } break; case 154: #line 851 "cfg.y" { #ifdef USE_TLS tls_client_domain_avp=yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 155: #line 858 "cfg.y" { yyerror("number expected"); } break; case 158: #line 861 "cfg.y" { server_signature=yyvsp[0].intval; } break; case 159: #line 862 "cfg.y" { yyerror("boolean value expected"); } break; case 160: #line 863 "cfg.y" { server_header.s=yyvsp[0].strval; server_header.len=strlen(yyvsp[0].strval); } break; case 161: #line 866 "cfg.y" { yyerror("string value expected"); } break; case 162: #line 867 "cfg.y" { user_agent_header.s=yyvsp[0].strval; user_agent_header.len=strlen(yyvsp[0].strval); } break; case 163: #line 870 "cfg.y" { yyerror("string value expected"); } break; case 164: #line 871 "cfg.y" { reply_to_via=yyvsp[0].intval; } break; case 165: #line 872 "cfg.y" { yyerror("boolean value expected"); } break; case 166: #line 873 "cfg.y" { for(lst_tmp=yyvsp[0].sockid; lst_tmp; lst_tmp=lst_tmp->next){ if (add_listen_iface( lst_tmp->name, lst_tmp->port, lst_tmp->proto, 0 )!=0){ LOG(L_CRIT, "ERROR: cfg. parser: failed" " to add listen address\n"); break; } } } break; case 167: #line 886 "cfg.y" { yyerror("ip address or hostname " "expected"); } break; case 168: #line 888 "cfg.y" { for(lst_tmp=yyvsp[0].sockid; lst_tmp; lst_tmp=lst_tmp->next) add_alias(lst_tmp->name, strlen(lst_tmp->name), lst_tmp->port, lst_tmp->proto); } break; case 169: #line 893 "cfg.y" { yyerror(" hostname expected"); } break; case 170: #line 894 "cfg.y" { auto_aliases=yyvsp[0].intval; } break; case 171: #line 895 "cfg.y" { yyerror("number expected"); } break; case 172: #line 896 "cfg.y" { if (yyvsp[0].strval) { default_global_address.s=yyvsp[0].strval; default_global_address.len=strlen(yyvsp[0].strval); } } break; case 173: #line 902 "cfg.y" {yyerror("ip address or hostname " "expected"); } break; case 174: #line 904 "cfg.y" { tmp=int2str(yyvsp[0].intval, &i_tmp); if ((default_global_port.s=pkg_malloc(i_tmp)) ==0){ LOG(L_CRIT, "ERROR: cfg. parser:" " out of memory.\n"); default_global_port.len=0; }else{ default_global_port.len=i_tmp; memcpy(default_global_port.s, tmp, default_global_port.len); }; } break; case 175: #line 917 "cfg.y" {yyerror("ip address or hostname " "expected"); } break; case 176: #line 919 "cfg.y" { disable_core_dump=yyvsp[0].intval; } break; case 177: #line 922 "cfg.y" { yyerror("boolean value expected"); } break; case 178: #line 923 "cfg.y" { open_files_limit=yyvsp[0].intval; } break; case 179: #line 926 "cfg.y" { yyerror("number expected"); } break; case 180: #line 927 "cfg.y" { #ifdef USE_MCAST mcast_loopback=yyvsp[0].intval; #else warn("no multicast support compiled in"); #endif } break; case 181: #line 934 "cfg.y" { yyerror("boolean value expected"); } break; case 182: #line 935 "cfg.y" { #ifdef USE_MCAST mcast_ttl=yyvsp[0].intval; #else warn("no multicast support compiled in"); #endif } break; case 183: #line 942 "cfg.y" { yyerror("number expected as tos"); } break; case 184: #line 943 "cfg.y" { tos = yyvsp[0].intval; if (tos<=0) yyerror("invalid tos value"); } break; case 185: #line 947 "cfg.y" { if (strcasecmp(yyvsp[0].strval,"IPTOS_LOWDELAY")) { tos=IPTOS_LOWDELAY; } else if (strcasecmp(yyvsp[0].strval,"IPTOS_THROUGHPUT")) { tos=IPTOS_THROUGHPUT; } else if (strcasecmp(yyvsp[0].strval,"IPTOS_RELIABILITY")) { tos=IPTOS_RELIABILITY; #if defined(IPTOS_MINCOST) } else if (strcasecmp(yyvsp[0].strval,"IPTOS_MINCOST")) { tos=IPTOS_MINCOST; #endif #if defined(IPTOS_LOWCOST) } else if (strcasecmp(yyvsp[0].strval,"IPTOS_LOWCOST")) { tos=IPTOS_LOWCOST; #endif } else { yyerror("invalid tos value - allowed: " "IPTOS_LOWDELAY,IPTOS_THROUGHPUT," "IPTOS_RELIABILITY" #if defined(IPTOS_LOWCOST) ",IPTOS_LOWCOST" #endif #if !defined(IPTOS_MINCOST) ",IPTOS_MINCOST" #endif "\n"); } } break; case 186: #line 974 "cfg.y" { yyerror("number expected"); } break; case 187: #line 975 "cfg.y" { mpath=yyvsp[0].strval; strcpy(mpath_buf, yyvsp[0].strval); mpath_len=strlen(yyvsp[0].strval); if(mpath_buf[mpath_len-1]!='/') { mpath_buf[mpath_len]='/'; mpath_len++; mpath_buf[mpath_len]='\0'; } } break; case 188: #line 983 "cfg.y" { yyerror("string value expected"); } break; case 189: #line 984 "cfg.y" { disable_dns_failover=yyvsp[0].intval; } break; case 190: #line 987 "cfg.y" { yyerror("boolean value expected"); } break; case 191: #line 988 "cfg.y" { disable_dns_blacklist=yyvsp[0].intval; } break; case 192: #line 991 "cfg.y" { yyerror("boolean value expected"); } break; case 193: #line 992 "cfg.y" { yyerror("unknown config variable"); } break; case 194: #line 993 "cfg.y" { s_tmp.s = yyvsp[-4].strval; s_tmp.len = strlen(yyvsp[-4].strval); if ( create_bl_head( BL_CORE_ID, BL_READONLY_LIST, bl_head, bl_tail, &s_tmp)==0) { yyerror("failed to create blacklist\n"); YYABORT; } bl_head = bl_tail = 0; } break; case 195: #line 1005 "cfg.y" { if(*yyvsp[0].strval!='/' && mpath!=NULL && strlen(yyvsp[0].strval)+mpath_len<255) { strcpy(mpath_buf+mpath_len, yyvsp[0].strval); DBG("loading module %s\n", mpath_buf); if (sr_load_module(mpath_buf)!=0){ yyerror("failed to load module"); } mpath_buf[mpath_len]='\0'; } else { DBG("loading module %s\n", yyvsp[0].strval); if (sr_load_module(yyvsp[0].strval)!=0){ yyerror("failed to load module"); } } } break; case 196: #line 1021 "cfg.y" { yyerror("string expected"); } break; case 197: #line 1022 "cfg.y" { if (set_mod_param_regex(yyvsp[-5].strval, yyvsp[-3].strval, STR_PARAM, yyvsp[-1].strval) != 0) { yyerror("Can't set module parameter"); } } break; case 198: #line 1027 "cfg.y" { if (set_mod_param_regex(yyvsp[-5].strval, yyvsp[-3].strval, INT_PARAM, (void*)yyvsp[-1].intval) != 0) { yyerror("Can't set module parameter"); } } break; case 199: #line 1032 "cfg.y" { yyerror("Invalid arguments"); } break; case 200: #line 1036 "cfg.y" { yyval.ipaddr=yyvsp[0].ipaddr; } break; case 201: #line 1037 "cfg.y" { yyval.ipaddr=yyvsp[0].ipaddr; } break; case 202: #line 1040 "cfg.y" { yyval.ipaddr=pkg_malloc( sizeof(struct ip_addr)); if (yyval.ipaddr==0){ LOG(L_CRIT, "ERROR: cfg. " "parser: out of memory.\n" ); }else{ memset(yyval.ipaddr, 0, sizeof(struct ip_addr)); yyval.ipaddr->af=AF_INET; yyval.ipaddr->len=4; if ((yyvsp[-6].intval>255) || (yyvsp[-6].intval<0) || (yyvsp[-4].intval>255) || (yyvsp[-4].intval<0) || (yyvsp[-2].intval>255) || (yyvsp[-2].intval<0) || (yyvsp[0].intval>255) || (yyvsp[0].intval<0)){ yyerror("invalid ipv4" "address"); yyval.ipaddr->u.addr32[0]=0; /* $$=0; */ }else{ yyval.ipaddr->u.addr[0]=yyvsp[-6].intval; yyval.ipaddr->u.addr[1]=yyvsp[-4].intval; yyval.ipaddr->u.addr[2]=yyvsp[-2].intval; yyval.ipaddr->u.addr[3]=yyvsp[0].intval; /* $$=htonl( ($1<<24)| ($3<<16)| ($5<<8)|$7 ); */ } } } break; case 203: #line 1074 "cfg.y" { yyval.ipaddr=pkg_malloc(sizeof(struct ip_addr)); if (yyval.ipaddr==0){ LOG(L_CRIT, "ERROR: cfg. parser: out of memory.\n"); }else{ memset(yyval.ipaddr, 0, sizeof(struct ip_addr)); yyval.ipaddr->af=AF_INET6; yyval.ipaddr->len=16; #ifdef USE_IPV6 if (inet_pton(AF_INET6, yyvsp[0].strval, yyval.ipaddr->u.addr)<=0){ yyerror("bad ipv6 address"); } #else yyerror("ipv6 address & no ipv6 support compiled in"); YYABORT; #endif } } break; case 204: #line 1094 "cfg.y" { yyval.ipaddr=yyvsp[0].ipaddr; } break; case 205: #line 1095 "cfg.y" {yyval.ipaddr=yyvsp[-1].ipaddr; } break; case 206: #line 1098 "cfg.y" { #ifdef USE_TLS if (tls_new_server_domain(yyvsp[-3].ipaddr, yyvsp[-1].intval)) yyerror("tls_new_server_domain failed"); #else warn("tls support not compiled in"); #endif } break; case 208: #line 1109 "cfg.y" { #ifdef USE_TLS if (tls_new_client_domain(yyvsp[-3].ipaddr, yyvsp[-1].intval)) yyerror("tls_new_client_domain failed"); #else warn("tls support not compiled in"); #endif } break; case 210: #line 1120 "cfg.y" { #ifdef USE_TLS if (tls_new_client_domain_name(yyvsp[-1].strval, strlen(yyvsp[-1].strval))) yyerror("tls_new_client_domain_name failed"); #else warn("tls support not compiled in"); #endif } break; case 216: #line 1139 "cfg.y" { #ifdef USE_TLS tls_server_domains->method=TLS_USE_SSLv23; #else warn("tls support not compiled in"); #endif } break; case 217: #line 1146 "cfg.y" { #ifdef USE_TLS tls_server_domains->method=TLS_USE_SSLv2; #else warn("tls support not compiled in"); #endif } break; case 218: #line 1153 "cfg.y" { #ifdef USE_TLS tls_server_domains->method=TLS_USE_SSLv3; #else warn("tls support not compiled in"); #endif } break; case 219: #line 1160 "cfg.y" { #ifdef USE_TLS tls_server_domains->method=TLS_USE_TLSv1; #else warn("tls support not compiled in"); #endif } break; case 220: #line 1167 "cfg.y" { yyerror("SSLv23, SSLv2, SSLv3 or TLSv1 expected"); } break; case 221: #line 1168 "cfg.y" { #ifdef USE_TLS tls_server_domains->cert_file=yyvsp[0].strval; #else warn("tls support not compiled in"); #endif } break; case 222: #line 1175 "cfg.y" { yyerror("string value expected"); } break; case 223: #line 1177 "cfg.y" { #ifdef USE_TLS tls_server_domains->pkey_file=yyvsp[0].strval; #else warn("tls support not compiled in"); #endif } break; case 224: #line 1184 "cfg.y" { yyerror("string value expected"); } break; case 225: #line 1186 "cfg.y" { #ifdef USE_TLS tls_server_domains->ca_file=yyvsp[0].strval; #else warn("tls support not compiled in"); #endif } break; case 226: #line 1193 "cfg.y" { yyerror("string value expected"); } break; case 227: #line 1194 "cfg.y" { #ifdef USE_TLS tls_server_domains->ciphers_list=yyvsp[0].strval; #else warn("tls support not compiled in"); #endif } break; case 228: #line 1201 "cfg.y" { yyerror("string value expected"); } break; case 229: #line 1202 "cfg.y" { #ifdef USE_TLS tls_server_domains->verify_cert=yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 230: #line 1209 "cfg.y" { yyerror("boolean value expected"); } break; case 231: #line 1210 "cfg.y" { #ifdef USE_TLS tls_server_domains->require_client_cert=yyvsp[0].intval; #else warn( "tls support not compiled in"); #endif } break; case 232: #line 1217 "cfg.y" { yyerror("boolean value expected"); } break; case 233: #line 1221 "cfg.y" { #ifdef USE_TLS tls_client_domains->method=TLS_USE_SSLv23; #else warn("tls support not compiled in"); #endif } break; case 234: #line 1228 "cfg.y" { #ifdef USE_TLS tls_client_domains->method=TLS_USE_SSLv2; #else warn("tls support not compiled in"); #endif } break; case 235: #line 1235 "cfg.y" { #ifdef USE_TLS tls_client_domains->method=TLS_USE_SSLv3; #else warn("tls support not compiled in"); #endif } break; case 236: #line 1242 "cfg.y" { #ifdef USE_TLS tls_client_domains->method=TLS_USE_TLSv1; #else warn("tls support not compiled in"); #endif } break; case 237: #line 1249 "cfg.y" { yyerror("SSLv23, SSLv2, SSLv3 or TLSv1 expected"); } break; case 238: #line 1251 "cfg.y" { #ifdef USE_TLS tls_client_domains->cert_file=yyvsp[0].strval; #else warn("tls support not compiled in"); #endif } break; case 239: #line 1258 "cfg.y" { yyerror("string value expected"); } break; case 240: #line 1260 "cfg.y" { #ifdef USE_TLS tls_client_domains->pkey_file=yyvsp[0].strval; #else warn("tls support not compiled in"); #endif } break; case 241: #line 1267 "cfg.y" { yyerror("string value expected"); } break; case 242: #line 1269 "cfg.y" { #ifdef USE_TLS tls_client_domains->ca_file=yyvsp[0].strval; #else warn("tls support not compiled in"); #endif } break; case 243: #line 1276 "cfg.y" { yyerror("string value expected"); } break; case 244: #line 1277 "cfg.y" { #ifdef USE_TLS tls_client_domains->ciphers_list=yyvsp[0].strval; #else warn("tls support not compiled in"); #endif } break; case 245: #line 1284 "cfg.y" { yyerror("string value expected"); } break; case 246: #line 1285 "cfg.y" { #ifdef USE_TLS tls_client_domains->verify_cert=yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 247: #line 1292 "cfg.y" { yyerror("boolean value expected"); } break; case 248: #line 1295 "cfg.y" { if (rlist[DEFAULT_RT]!=0) { yyerror("overwritting default " "request routing table"); YYABORT; } push(yyvsp[-1].action, &rlist[DEFAULT_RT]); } break; case 249: #line 1303 "cfg.y" { if ((yyvsp[-4].intval=0)){ if (rlist[yyvsp[-4].intval]!=0) { yyerror("overwritting request " "routing table"); YYABORT; } push(yyvsp[-1].action, &rlist[yyvsp[-4].intval]); }else{ yyerror("invalid routing " "table number"); YYABORT; } } break; case 250: #line 1316 "cfg.y" { yyerror("invalid route statement"); } break; case 251: #line 1319 "cfg.y" { if ((yyvsp[-4].intval=1)){ if (failure_rlist[yyvsp[-4].intval]!=0) { yyerror("overwritting failure " "routing table"); YYABORT; } push(yyvsp[-1].action, &failure_rlist[yyvsp[-4].intval]); } else { yyerror("invalid reply routing " "table number"); YYABORT; } } break; case 252: #line 1332 "cfg.y" { yyerror("invalid failure_route statement"); } break; case 253: #line 1335 "cfg.y" { if (onreply_rlist[DEFAULT_RT]!=0) { yyerror("overwritting default " "onreply routing table"); YYABORT; } push(yyvsp[-1].action, &onreply_rlist[DEFAULT_RT]); } break; case 254: #line 1343 "cfg.y" { if ((yyvsp[-4].intval=1)){ if (onreply_rlist[yyvsp[-4].intval]!=0) { yyerror("overwritting onreply " "routing table"); YYABORT; } push(yyvsp[-1].action, &onreply_rlist[yyvsp[-4].intval]); } else { yyerror("invalid reply routing " "table number"); YYABORT; } } break; case 255: #line 1356 "cfg.y" { yyerror("invalid onreply_route statement"); } break; case 256: #line 1359 "cfg.y" { if ((yyvsp[-4].intval=1)){ if (branch_rlist[yyvsp[-4].intval]!=0) { yyerror("overwritting branch " "routing table"); YYABORT; } push(yyvsp[-1].action, &branch_rlist[yyvsp[-4].intval]); } else { yyerror("invalid branch routing " "table number"); YYABORT; } } break; case 257: #line 1372 "cfg.y" { yyerror("invalid branch_route statement"); } break; case 258: #line 1375 "cfg.y" { if (error_rlist!=0) { yyerror("overwritting default " "error routing table"); YYABORT; } push(yyvsp[-1].action, &error_rlist); } break; case 259: #line 1383 "cfg.y" { yyerror("invalid error_route statement"); } break; case 260: #line 1386 "cfg.y" { yyval.expr=mk_exp(AND_OP, yyvsp[-2].expr, yyvsp[0].expr); } break; case 261: #line 1387 "cfg.y" { yyval.expr=mk_exp(OR_OP, yyvsp[-2].expr, yyvsp[0].expr); } break; case 262: #line 1388 "cfg.y" { yyval.expr=mk_exp(NOT_OP, yyvsp[0].expr, 0); } break; case 263: #line 1389 "cfg.y" { yyval.expr=mk_exp(EVAL_OP, yyvsp[-1].expr, 0); } break; case 264: #line 1390 "cfg.y" { yyval.expr=yyvsp[-1].expr; } break; case 265: #line 1391 "cfg.y" { yyval.expr=yyvsp[0].expr; } break; case 266: #line 1394 "cfg.y" {yyval.intval=EQUAL_OP; } break; case 267: #line 1395 "cfg.y" {yyval.intval=DIFF_OP; } break; case 268: #line 1398 "cfg.y" {yyval.intval=GT_OP; } break; case 269: #line 1399 "cfg.y" {yyval.intval=LT_OP; } break; case 270: #line 1400 "cfg.y" {yyval.intval=GTE_OP; } break; case 271: #line 1401 "cfg.y" {yyval.intval=LTE_OP; } break; case 272: #line 1403 "cfg.y" {yyval.intval=MATCH_OP; } break; case 273: #line 1404 "cfg.y" {yyval.intval=NOTMATCH_OP; } break; case 274: #line 1407 "cfg.y" {yyval.intval=yyvsp[0].intval; } break; case 275: #line 1408 "cfg.y" {yyval.intval=yyvsp[0].intval; } break; case 276: #line 1411 "cfg.y" {yyval.intval=yyvsp[0].intval; } break; case 277: #line 1412 "cfg.y" {yyval.intval=yyvsp[0].intval; } break; case 278: #line 1413 "cfg.y" {yyval.intval=yyvsp[0].intval; } break; case 279: #line 1416 "cfg.y" {yyval.intval=URI_O;} break; case 280: #line 1417 "cfg.y" {yyval.intval=FROM_URI_O;} break; case 281: #line 1418 "cfg.y" {yyval.intval=TO_URI_O;} break; case 282: #line 1421 "cfg.y" { /* printf("\n+++ scriptvar <%s>\n", $1); */ spec = (xl_spec_t*)pkg_malloc(sizeof(xl_spec_t)); memset(spec, 0, sizeof(xl_spec_t)); if(xl_parse_spec(yyvsp[0].strval, spec, 0)==NULL) { yyerror("unknown script variable"); } yyval.specval = spec; } break; case 283: #line 1431 "cfg.y" { yyval.specval=0; yyerror("invalid script variable name"); } break; case 284: #line 1436 "cfg.y" {yyval.expr=yyvsp[0].expr; } break; case 285: #line 1437 "cfg.y" {yyval.expr=mk_elem( NO_OP, ACTION_O, 0, ACTIONS_ST, yyvsp[0].action ); } break; case 286: #line 1438 "cfg.y" {yyval.expr=mk_elem( NO_OP, NUMBER_O, 0, NUMBER_ST, (void*)yyvsp[0].intval ); } break; case 287: #line 1440 "cfg.y" { yyval.expr=mk_elem(NO_OP, SCRIPTVAR_O,0,SCRIPTVAR_ST,(void*)yyvsp[0].specval); } break; case 288: #line 1443 "cfg.y" {yyval.expr = mk_elem(yyvsp[-1].intval, yyvsp[-2].intval, 0, STRING_ST, yyvsp[0].strval); } break; case 289: #line 1445 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, NET_ST, yyvsp[0].ipnet); } break; case 290: #line 1447 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, STRING_ST, yyvsp[0].strval); } break; case 291: #line 1449 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, NET_ST, yyvsp[0].ipnet); } break; case 292: #line 1451 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, STRING_ST, yyvsp[0].strval); } break; case 293: #line 1455 "cfg.y" {yyval.expr= mk_elem(yyvsp[-1].intval, METHOD_O, 0, STRING_ST, yyvsp[0].strval); } break; case 294: #line 1457 "cfg.y" {yyval.expr = mk_elem(yyvsp[-1].intval, METHOD_O, 0, STRING_ST, yyvsp[0].strval); } break; case 295: #line 1459 "cfg.y" { yyval.expr=0; yyerror("string expected"); } break; case 296: #line 1460 "cfg.y" { yyval.expr=0; yyerror("invalid operator," "== , !=, or =~ expected"); } break; case 297: #line 1463 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval,SCRIPTVAR_ST,(void*)yyvsp[0].specval); } break; case 298: #line 1466 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval,STRING_ST,yyvsp[0].strval); } break; case 299: #line 1469 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval,STRING_ST,yyvsp[0].strval); } break; case 300: #line 1472 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval,NUMBER_ST,(void *)yyvsp[0].intval); } break; case 301: #line 1475 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval, MYSELF_ST, 0); } break; case 302: #line 1478 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval, NULLV_ST, 0); } break; case 303: #line 1481 "cfg.y" {yyval.expr = mk_elem(yyvsp[-1].intval, yyvsp[-2].intval, 0, STRING_ST, yyvsp[0].strval); } break; case 304: #line 1483 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, yyvsp[-2].intval, 0, MYSELF_ST, 0); } break; case 305: #line 1485 "cfg.y" { yyval.expr=0; yyerror("string or MYSELF expected"); } break; case 306: #line 1486 "cfg.y" { yyval.expr=0; yyerror("invalid operator," " == , != or =~ expected"); } break; case 307: #line 1489 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, SRCPORT_O, 0, NUMBER_ST, (void *) yyvsp[0].intval ); } break; case 308: #line 1491 "cfg.y" { yyval.expr=0; yyerror("number expected"); } break; case 309: #line 1492 "cfg.y" { yyval.expr=0; yyerror("==, !=, <,>, >= or <= expected"); } break; case 310: #line 1493 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, DSTPORT_O, 0, NUMBER_ST, (void *) yyvsp[0].intval ); } break; case 311: #line 1495 "cfg.y" { yyval.expr=0; yyerror("number expected"); } break; case 312: #line 1496 "cfg.y" { yyval.expr=0; yyerror("==, !=, <,>, >= or <= expected"); } break; case 313: #line 1497 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, PROTO_O, 0, NUMBER_ST, (void *) yyvsp[0].intval ); } break; case 314: #line 1499 "cfg.y" { yyval.expr=0; yyerror("protocol expected (udp, tcp or tls)"); } break; case 315: #line 1502 "cfg.y" { yyval.expr=0; yyerror("equal/!= operator expected"); } break; case 316: #line 1503 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, AF_O, 0, NUMBER_ST, (void *) yyvsp[0].intval ); } break; case 317: #line 1505 "cfg.y" { yyval.expr=0; yyerror("number expected"); } break; case 318: #line 1506 "cfg.y" { yyval.expr=0; yyerror("equal/!= operator expected"); } break; case 319: #line 1507 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, MSGLEN_O, 0, NUMBER_ST, (void *) yyvsp[0].intval ); } break; case 320: #line 1509 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, MSGLEN_O, 0, NUMBER_ST, (void *) BUF_SIZE); } break; case 321: #line 1511 "cfg.y" { yyval.expr=0; yyerror("number expected"); } break; case 322: #line 1512 "cfg.y" { yyval.expr=0; yyerror("equal/!= operator expected"); } break; case 323: #line 1513 "cfg.y" { s_tmp.s=yyvsp[0].strval; s_tmp.len=strlen(yyvsp[0].strval); ip_tmp=str2ip(&s_tmp); if (ip_tmp==0) ip_tmp=str2ip6(&s_tmp); if (ip_tmp){ yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, NET_ST, mk_net_bitlen(ip_tmp, ip_tmp->len*8) ); }else{ yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, STRING_ST, yyvsp[0].strval); } } break; case 324: #line 1527 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, MYSELF_ST, 0); } break; case 325: #line 1529 "cfg.y" { yyval.expr=0; yyerror( "ip address or hostname" "expected" ); } break; case 326: #line 1531 "cfg.y" { yyval.expr=0; yyerror("invalid operator, ==, != or =~ expected");} break; case 327: #line 1533 "cfg.y" { s_tmp.s=yyvsp[0].strval; s_tmp.len=strlen(yyvsp[0].strval); ip_tmp=str2ip(&s_tmp); if (ip_tmp==0) ip_tmp=str2ip6(&s_tmp); if (ip_tmp){ yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, NET_ST, mk_net_bitlen(ip_tmp, ip_tmp->len*8) ); }else{ yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, STRING_ST, yyvsp[0].strval); } } break; case 328: #line 1547 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, MYSELF_ST, 0); } break; case 329: #line 1549 "cfg.y" { yyval.expr=0; yyerror( "ip address or hostname" "expected" ); } break; case 330: #line 1551 "cfg.y" { yyval.expr=0; yyerror("invalid operator, ==, != or =~ expected");} break; case 331: #line 1553 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, yyvsp[0].intval, 0, MYSELF_ST, 0); } break; case 332: #line 1555 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, MYSELF_ST, 0); } break; case 333: #line 1557 "cfg.y" { yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, MYSELF_ST, 0); } break; case 334: #line 1559 "cfg.y" { yyval.expr=0; yyerror(" URI, SRCIP or DSTIP expected"); } break; case 335: #line 1561 "cfg.y" { yyval.expr=0; yyerror ("invalid operator, == or != expected"); } break; case 336: #line 1566 "cfg.y" { yyval.ipnet=mk_net(yyvsp[-2].ipaddr, yyvsp[0].ipaddr); } break; case 337: #line 1567 "cfg.y" { if ((yyvsp[0].intval<0) || (yyvsp[0].intval>(long)yyvsp[-2].ipaddr->len*8)){ yyerror("invalid bit number in netmask"); yyval.ipnet=0; }else{ yyval.ipnet=mk_net_bitlen(yyvsp[-2].ipaddr, yyvsp[0].intval); /* $$=mk_net($1, htonl( ($3)?~( (1<<(32-$3))-1 ):0 ) ); */ } } break; case 338: #line 1578 "cfg.y" { yyval.ipnet=mk_net_bitlen(yyvsp[0].ipaddr, yyvsp[0].ipaddr->len*8); } break; case 339: #line 1579 "cfg.y" { yyval.ipnet=0; yyerror("netmask (eg:255.0.0.0 or 8) expected"); } break; case 340: #line 1586 "cfg.y" {yyval.strval=".";} break; case 341: #line 1587 "cfg.y" {yyval.strval="-"; } break; case 342: #line 1590 "cfg.y" { yyval.strval=yyvsp[0].strval; } break; case 343: #line 1591 "cfg.y" { yyval.strval=(char*)pkg_malloc(strlen(yyvsp[-2].strval)+1+strlen(yyvsp[0].strval)+1); if (yyval.strval==0){ LOG(L_CRIT, "ERROR: cfg. parser: memory allocation" " failure while parsing host\n"); }else{ memcpy(yyval.strval, yyvsp[-2].strval, strlen(yyvsp[-2].strval)); yyval.strval[strlen(yyvsp[-2].strval)]=*yyvsp[-1].strval; memcpy(yyval.strval+strlen(yyvsp[-2].strval)+1, yyvsp[0].strval, strlen(yyvsp[0].strval)); yyval.strval[strlen(yyvsp[-2].strval)+1+strlen(yyvsp[0].strval)]=0; } pkg_free(yyvsp[-2].strval); pkg_free(yyvsp[0].strval); } break; case 344: #line 1603 "cfg.y" { yyval.strval=0; pkg_free(yyvsp[-2].strval); yyerror("invalid hostname"); } break; case 345: #line 1607 "cfg.y" { yyval.intval = EQ_T; } break; case 346: #line 1608 "cfg.y" { yyval.intval = PLUSEQ_T; } break; case 347: #line 1609 "cfg.y" { yyval.intval = MINUSEQ_T;} break; case 348: #line 1610 "cfg.y" { yyval.intval = DIVEQ_T; } break; case 349: #line 1611 "cfg.y" { yyval.intval = MULTEQ_T; } break; case 350: #line 1612 "cfg.y" { yyval.intval = MODULOEQ_T; } break; case 351: #line 1613 "cfg.y" { yyval.intval = BANDEQ_T; } break; case 352: #line 1614 "cfg.y" { yyval.intval = BOREQ_T; } break; case 353: #line 1615 "cfg.y" { yyval.intval = BXOREQ_T; } break; case 354: #line 1619 "cfg.y" { yyval.expr = mk_elem(VALUE_OP, NUMBERV_O, (void*)yyvsp[0].intval, 0, 0); } break; case 355: #line 1620 "cfg.y" { yyval.expr = mk_elem(VALUE_OP, STRINGV_O, yyvsp[0].strval, 0, 0); } break; case 356: #line 1621 "cfg.y" { yyval.expr = mk_elem(VALUE_OP, STRINGV_O, yyvsp[0].strval, 0, 0); } break; case 357: #line 1622 "cfg.y" { yyval.expr = mk_elem(VALUE_OP, SCRIPTVAR_O, yyvsp[0].specval, 0, 0); } break; case 358: #line 1623 "cfg.y" { yyval.expr= yyvsp[0].expr; } break; case 359: #line 1624 "cfg.y" { yyval.expr=mk_elem( NO_OP, ACTION_O, 0, ACTIONS_ST, yyvsp[0].action ); } break; case 360: #line 1625 "cfg.y" { yyval.expr = mk_elem(PLUS_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr); } break; case 361: #line 1628 "cfg.y" { yyval.expr = mk_elem(MINUS_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr); } break; case 362: #line 1631 "cfg.y" { yyval.expr = mk_elem(MULT_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr); } break; case 363: #line 1634 "cfg.y" { yyval.expr = mk_elem(DIV_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr); } break; case 364: #line 1637 "cfg.y" { yyval.expr = mk_elem(MODULO_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr); } break; case 365: #line 1640 "cfg.y" { yyval.expr = mk_elem(BAND_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr); } break; case 366: #line 1643 "cfg.y" { yyval.expr = mk_elem(BOR_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr); } break; case 367: #line 1646 "cfg.y" { yyval.expr = mk_elem(BXOR_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr); } break; case 368: #line 1649 "cfg.y" { yyval.expr = mk_elem(BNOT_OP, EXPR_O, yyvsp[0].expr, 0, 0); } break; case 369: #line 1652 "cfg.y" { yyval.expr = yyvsp[-1].expr; } break; case 370: #line 1655 "cfg.y" { switch(yyvsp[-2].specval->type) { case XL_AVP: case XL_SCRIPTVAR: case XL_RURI: case XL_RURI_USERNAME: case XL_RURI_DOMAIN: case XL_DSTURI: break; default: yyerror("invalid left operand in assignment"); } if(yyvsp[-2].specval->trans!=0) yyerror( "transformations not accepted in right side of assignment"); mk_action2( yyval.action, yyvsp[-1].intval, SCRIPTVAR_ST, EXPR_ST, yyvsp[-2].specval, yyvsp[0].expr); } break; case 371: #line 1677 "cfg.y" { switch(yyvsp[-2].specval->type) { case XL_AVP: case XL_SCRIPTVAR: case XL_DSTURI: case XL_RURI_USERNAME: break; default: yyerror("invalid left operand in NULL assignment"); } if(yyvsp[-2].specval->trans!=0) yyerror( "transformations not accepted in right side of assignment"); mk_action2( yyval.action, EQ_T, SCRIPTVAR_ST, NULLV_ST, yyvsp[-2].specval, 0); } break; case 372: #line 1699 "cfg.y" { yyval.action=yyvsp[0].action; } break; case 373: #line 1700 "cfg.y" { yyval.action=yyvsp[0].action; } break; case 374: #line 1701 "cfg.y" { yyval.action=yyvsp[0].action; } break; case 375: #line 1702 "cfg.y" { yyval.action=yyvsp[-1].action; } break; case 376: #line 1703 "cfg.y" { yyval.action=0; } break; case 377: #line 1706 "cfg.y" { yyval.action=yyvsp[0].action; } break; case 378: #line 1707 "cfg.y" { yyval.action=yyvsp[-1].action; } break; case 379: #line 1708 "cfg.y" { yyval.action=0; } break; case 380: #line 1711 "cfg.y" {yyval.action=append_action(yyvsp[-1].action, yyvsp[0].action); } break; case 381: #line 1712 "cfg.y" {yyval.action=yyvsp[0].action;} break; case 382: #line 1713 "cfg.y" { yyval.action=0; yyerror("bad command!)"); } break; case 383: #line 1716 "cfg.y" {yyval.action=yyvsp[-1].action;} break; case 384: #line 1717 "cfg.y" {yyval.action=yyvsp[0].action;} break; case 385: #line 1718 "cfg.y" {yyval.action=yyvsp[0].action;} break; case 386: #line 1719 "cfg.y" {yyval.action=yyvsp[-1].action;} break; case 387: #line 1720 "cfg.y" {yyval.action=0;} break; case 388: #line 1721 "cfg.y" { yyval.action=0; yyerror("bad command: missing ';'?"); } break; case 389: #line 1724 "cfg.y" { mk_action3( yyval.action, IF_T, EXPR_ST, ACTIONS_ST, NOSUBTYPE, yyvsp[-1].expr, yyvsp[0].action, 0); } break; case 390: #line 1732 "cfg.y" { mk_action3( yyval.action, IF_T, EXPR_ST, ACTIONS_ST, ACTIONS_ST, yyvsp[-3].expr, yyvsp[-2].action, yyvsp[0].action); } break; case 391: #line 1743 "cfg.y" { mk_action2( yyval.action, SWITCH_T, SCRIPTVAR_ST, ACTIONS_ST, yyvsp[-4].specval, yyvsp[-1].action); } break; case 392: #line 1752 "cfg.y" { yyval.action=append_action(yyvsp[-1].action, yyvsp[0].action); } break; case 393: #line 1753 "cfg.y" { yyval.action=yyvsp[0].action; } break; case 394: #line 1755 "cfg.y" {yyval.action=append_action(yyvsp[-1].action, yyvsp[0].action); } break; case 395: #line 1756 "cfg.y" {yyval.action=yyvsp[0].action;} break; case 396: #line 1760 "cfg.y" { mk_action3( yyval.action, CASE_T, NUMBER_ST, ACTIONS_ST, NUMBER_ST, (void*)yyvsp[-4].intval, yyvsp[-2].action, (void*)1); } break; case 397: #line 1769 "cfg.y" { mk_action3( yyval.action, CASE_T, NUMBER_ST, ACTIONS_ST, NUMBER_ST, (void*)yyvsp[-3].intval, 0, (void*)1); } break; case 398: #line 1777 "cfg.y" { mk_action3( yyval.action, CASE_T, NUMBER_ST, ACTIONS_ST, NUMBER_ST, (void*)yyvsp[-2].intval, yyvsp[0].action, (void*)0); } break; case 399: #line 1785 "cfg.y" { mk_action3( yyval.action, CASE_T, NUMBER_ST, ACTIONS_ST, NUMBER_ST, (void*)yyvsp[-1].intval, 0, (void*)0); } break; case 400: #line 1794 "cfg.y" { mk_action3( yyval.action, CASE_T, STRING_ST, ACTIONS_ST, NUMBER_ST, (void*)yyvsp[-4].strval, yyvsp[-2].action, (void*)1); } break; case 401: #line 1803 "cfg.y" { mk_action3( yyval.action, CASE_T, STRING_ST, ACTIONS_ST, NUMBER_ST, (void*)yyvsp[-3].strval, 0, (void*)1); } break; case 402: #line 1811 "cfg.y" { mk_action3( yyval.action, CASE_T, STRING_ST, ACTIONS_ST, NUMBER_ST, (void*)yyvsp[-2].strval, yyvsp[0].action, (void*)0); } break; case 403: #line 1819 "cfg.y" { mk_action3( yyval.action, CASE_T, STRING_ST, ACTIONS_ST, NUMBER_ST, (void*)yyvsp[-1].strval, 0, (void*)0); } break; case 404: #line 1830 "cfg.y" { mk_action2( yyval.action, DEFAULT_T, ACTIONS_ST, 0, yyvsp[0].action, 0); } break; case 405: #line 1836 "cfg.y" { mk_action2( yyval.action, DEFAULT_T, ACTIONS_ST, 0, 0, 0); } break; case 406: #line 1844 "cfg.y" { mk_action2( yyval.action, FORWARD_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 407: #line 1850 "cfg.y" { mk_action2( yyval.action, FORWARD_T, 0, 0, 0, 0); } break; case 408: #line 1857 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 409: #line 1858 "cfg.y" { yyval.action=0; yyerror("bad forward" "argument"); } break; case 410: #line 1861 "cfg.y" { mk_action2( yyval.action, SEND_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 411: #line 1867 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 412: #line 1868 "cfg.y" { yyval.action=0; yyerror("bad send" "argument"); } break; case 413: #line 1870 "cfg.y" {mk_action2( yyval.action, DROP_T,0, 0, 0, 0); } break; case 414: #line 1871 "cfg.y" {mk_action2( yyval.action, DROP_T,0, 0, 0, 0); } break; case 415: #line 1872 "cfg.y" {mk_action2( yyval.action, EXIT_T,0, 0, 0, 0); } break; case 416: #line 1873 "cfg.y" {mk_action2( yyval.action, EXIT_T,0, 0, 0, 0); } break; case 417: #line 1874 "cfg.y" {mk_action2( yyval.action, RETURN_T, NUMBER_ST, 0, (void*)yyvsp[-1].intval, 0); } break; case 418: #line 1880 "cfg.y" {mk_action2( yyval.action, RETURN_T, NUMBER_ST, 0, (void*)1, 0); } break; case 419: #line 1886 "cfg.y" {mk_action2( yyval.action, RETURN_T, NUMBER_ST, 0, (void*)1, 0); } break; case 420: #line 1892 "cfg.y" {mk_action2( yyval.action, LOG_T, NUMBER_ST, STRING_ST,(void*)4,yyvsp[-1].strval); } break; case 421: #line 1895 "cfg.y" {mk_action2( yyval.action, LOG_T, NUMBER_ST, STRING_ST, (void*)yyvsp[-3].intval, yyvsp[-1].strval); } break; case 422: #line 1901 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 423: #line 1902 "cfg.y" { yyval.action=0; yyerror("bad log" "argument"); } break; case 424: #line 1904 "cfg.y" {mk_action2( yyval.action, SETFLAG_T, NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); } break; case 425: #line 1906 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')'?"); } break; case 426: #line 1907 "cfg.y" {mk_action2( yyval.action, RESETFLAG_T, NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); } break; case 427: #line 1909 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')'?"); } break; case 428: #line 1910 "cfg.y" {mk_action2( yyval.action, ISFLAGSET_T, NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); } break; case 429: #line 1912 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')'?"); } break; case 430: #line 1913 "cfg.y" {mk_action2( yyval.action, SETSFLAG_T, NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); } break; case 431: #line 1915 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')'?"); } break; case 432: #line 1916 "cfg.y" {mk_action2( yyval.action, RESETSFLAG_T, NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); } break; case 433: #line 1918 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')'?"); } break; case 434: #line 1919 "cfg.y" {mk_action2( yyval.action, ISSFLAGSET_T, NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); } break; case 435: #line 1921 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')'?"); } break; case 436: #line 1922 "cfg.y" {mk_action2( yyval.action, SETBFLAG_T, NUMBER_ST, NUMBER_ST, (void *)yyvsp[-3].intval, (void *)yyvsp[-1].intval ); } break; case 437: #line 1926 "cfg.y" {mk_action2( yyval.action, SETBFLAG_T, NUMBER_ST, NUMBER_ST, 0, (void *)yyvsp[-1].intval ); } break; case 438: #line 1929 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')'?"); } break; case 439: #line 1930 "cfg.y" {mk_action2( yyval.action, RESETBFLAG_T, NUMBER_ST, NUMBER_ST, (void *)yyvsp[-3].intval, (void *)yyvsp[-1].intval ); } break; case 440: #line 1934 "cfg.y" {mk_action2( yyval.action, RESETBFLAG_T, NUMBER_ST, NUMBER_ST, 0, (void *)yyvsp[-1].intval ); } break; case 441: #line 1938 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')'?"); } break; case 442: #line 1939 "cfg.y" {mk_action2( yyval.action, ISBFLAGSET_T, NUMBER_ST, NUMBER_ST, (void *)yyvsp[-3].intval, (void *)yyvsp[-1].intval ); } break; case 443: #line 1943 "cfg.y" {mk_action2( yyval.action, ISBFLAGSET_T, NUMBER_ST, NUMBER_ST, 0, (void *)yyvsp[-1].intval ); } break; case 444: #line 1947 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')'?"); } break; case 445: #line 1948 "cfg.y" {mk_action2( yyval.action, ERROR_T, STRING_ST, STRING_ST, yyvsp[-3].strval, yyvsp[-1].strval); } break; case 446: #line 1954 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 447: #line 1955 "cfg.y" { yyval.action=0; yyerror("bad error" "argument"); } break; case 448: #line 1957 "cfg.y" { mk_action2( yyval.action, ROUTE_T, NUMBER_ST, 0, (void*)yyvsp[-1].intval, 0); } break; case 449: #line 1960 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 450: #line 1961 "cfg.y" { yyval.action=0; yyerror("bad route" "argument"); } break; case 451: #line 1963 "cfg.y" { mk_action2( yyval.action, SET_HOST_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 452: #line 1965 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 453: #line 1966 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 454: #line 1969 "cfg.y" { mk_action2( yyval.action, PREFIX_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 455: #line 1971 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 456: #line 1972 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 457: #line 1974 "cfg.y" { mk_action2( yyval.action, STRIP_TAIL_T, NUMBER_ST, 0, (void *) yyvsp[-1].intval, 0); } break; case 458: #line 1976 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 459: #line 1977 "cfg.y" { yyval.action=0; yyerror("bad argument, " "number expected"); } break; case 460: #line 1980 "cfg.y" { mk_action2( yyval.action, STRIP_T, NUMBER_ST, 0, (void *) yyvsp[-1].intval, 0); } break; case 461: #line 1982 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 462: #line 1983 "cfg.y" { yyval.action=0; yyerror("bad argument, " "number expected"); } break; case 463: #line 1985 "cfg.y" { #ifdef TIMING_INFO mk_action2( yyval.action, SET_TIME_STAMP_T, STRING_ST, 0, (void *) yyvsp[-1].strval, 0); #else warn("timing infor support not compiled in"); #endif } break; case 464: #line 1993 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 465: #line 1994 "cfg.y" { yyval.action=0; yyerror("bad argument, " "number expected"); } break; case 466: #line 1996 "cfg.y" { #ifdef TIMING_INFO mk_action2( yyval.action, RESET_TIME_STAMP_T, 0, 0, 0, 0); #else warn("timing infor support not compiled in"); #endif } break; case 467: #line 2003 "cfg.y" { #ifdef TIMING_INFO mk_action2( yyval.action, DIFF_TIME_STAMP_T, NUMBER_ST, STRING_ST, (void *) yyvsp[-3].intval, (void *) yyvsp[-1].strval); #else warn("timing infor support not compiled in"); #endif } break; case 468: #line 2011 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 469: #line 2012 "cfg.y" { yyval.action=0; yyerror("bad argument, " "number expected"); } break; case 470: #line 2014 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 471: #line 2015 "cfg.y" { yyval.action=0; yyerror("bad argument, " "number expected"); } break; case 472: #line 2017 "cfg.y" { { qvalue_t q; if (str2q(&q, yyvsp[-1].strval, strlen(yyvsp[-1].strval)) < 0) { yyerror("bad argument, q value expected"); } mk_action2( yyval.action, APPEND_BRANCH_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval, (void *)(long)q); } } break; case 473: #line 2025 "cfg.y" { mk_action2( yyval.action, APPEND_BRANCH_T, STRING_ST, NUMBER_ST, yyvsp[-1].strval, (void *)Q_UNSPECIFIED) ; } break; case 474: #line 2027 "cfg.y" { mk_action2( yyval.action, APPEND_BRANCH_T, STRING_ST, NUMBER_ST, 0, (void *)Q_UNSPECIFIED) ; } break; case 475: #line 2029 "cfg.y" { mk_action2( yyval.action, APPEND_BRANCH_T, STRING_ST, NUMBER_ST, 0, (void *)Q_UNSPECIFIED ) ; } break; case 476: #line 2032 "cfg.y" { mk_action2( yyval.action, SET_HOSTPORT_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 477: #line 2034 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 478: #line 2035 "cfg.y" { yyval.action=0; yyerror("bad argument," " string expected"); } break; case 479: #line 2037 "cfg.y" { mk_action2( yyval.action, SET_PORT_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 480: #line 2039 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 481: #line 2040 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 482: #line 2042 "cfg.y" { mk_action2( yyval.action, SET_USER_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 483: #line 2045 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 484: #line 2046 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 485: #line 2048 "cfg.y" { mk_action2( yyval.action, SET_USERPASS_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 486: #line 2050 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 487: #line 2051 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 488: #line 2053 "cfg.y" { mk_action2( yyval.action, SET_URI_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 489: #line 2055 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 490: #line 2056 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 491: #line 2058 "cfg.y" { mk_action2( yyval.action, REVERT_URI_T, 0,0,0,0); } break; case 492: #line 2059 "cfg.y" { mk_action2( yyval.action, REVERT_URI_T, 0,0,0,0); } break; case 493: #line 2060 "cfg.y" { mk_action2( yyval.action, SET_DSTURI_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 494: #line 2062 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 495: #line 2063 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 496: #line 2065 "cfg.y" { mk_action2( yyval.action, RESET_DSTURI_T, 0,0,0,0); } break; case 497: #line 2067 "cfg.y" { mk_action2( yyval.action, RESET_DSTURI_T, 0,0,0,0); } break; case 498: #line 2068 "cfg.y" { mk_action2( yyval.action, ISDSTURISET_T, 0,0,0,0); } break; case 499: #line 2069 "cfg.y" { mk_action2( yyval.action, ISDSTURISET_T, 0,0,0,0); } break; case 500: #line 2070 "cfg.y" { mk_action2( yyval.action, FORCE_RPORT_T, 0, 0, 0, 0); } break; case 501: #line 2072 "cfg.y" { mk_action2( yyval.action, FORCE_RPORT_T,0, 0, 0, 0); } break; case 502: #line 2073 "cfg.y" { mk_action2( yyval.action, FORCE_LOCAL_RPORT_T,0, 0, 0, 0); } break; case 503: #line 2075 "cfg.y" { mk_action2( yyval.action, FORCE_LOCAL_RPORT_T,0, 0, 0, 0); } break; case 504: #line 2077 "cfg.y" { #ifdef USE_TCP mk_action2( yyval.action, FORCE_TCP_ALIAS_T,NUMBER_ST, 0, (void*)yyvsp[-1].intval, 0); #else yyerror("tcp support not compiled in"); #endif } break; case 505: #line 2085 "cfg.y" { #ifdef USE_TCP mk_action2( yyval.action, FORCE_TCP_ALIAS_T,0, 0, 0, 0); #else yyerror("tcp support not compiled in"); #endif } break; case 506: #line 2092 "cfg.y" { #ifdef USE_TCP mk_action2( yyval.action, FORCE_TCP_ALIAS_T,0, 0, 0, 0); #else yyerror("tcp support not compiled in"); #endif } break; case 507: #line 2099 "cfg.y" {yyval.action=0; yyerror("bad argument, number expected"); } break; case 508: #line 2102 "cfg.y" { yyval.action=0; if ((str_tmp=pkg_malloc(sizeof(str)))==0){ LOG(L_CRIT, "ERROR: cfg. parser:" " out of memory.\n"); }else if (yyvsp[-1].strval!=0){ str_tmp->s=yyvsp[-1].strval; str_tmp->len=strlen(yyvsp[-1].strval); mk_action2( yyval.action, SET_ADV_ADDR_T, STR_ST, 0, str_tmp, 0); } } break; case 509: #line 2114 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 510: #line 2116 "cfg.y" {yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 511: #line 2117 "cfg.y" { yyval.action=0; tmp=int2str(yyvsp[-1].intval, &i_tmp); if ((str_tmp=pkg_malloc(sizeof(str)))==0){ LOG(L_CRIT, "ERROR: cfg. parser:" " out of memory.\n"); }else{ if ((str_tmp->s=pkg_malloc(i_tmp))==0){ LOG(L_CRIT, "ERROR: cfg. parser:" " out of memory.\n"); }else{ memcpy(str_tmp->s, tmp, i_tmp); str_tmp->len=i_tmp; mk_action2( yyval.action, SET_ADV_PORT_T, STR_ST, 0, str_tmp, 0); } } } break; case 512: #line 2135 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 513: #line 2137 "cfg.y" {yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 514: #line 2138 "cfg.y" { mk_action2( yyval.action, FORCE_SEND_SOCKET_T, SOCKID_ST, 0, yyvsp[-1].sockid, 0); } break; case 515: #line 2142 "cfg.y" { yyval.action=0; yyerror("bad argument," " [proto:]host[:port] expected"); } break; case 516: #line 2145 "cfg.y" {yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 517: #line 2146 "cfg.y" { mk_action2( yyval.action, SERIALIZE_BRANCHES_T, NUMBER_ST, 0, (void*)(long)yyvsp[-1].intval, 0); } break; case 518: #line 2150 "cfg.y" {yyval.action=0; yyerror("bad argument," " number expected"); } break; case 519: #line 2153 "cfg.y" {yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 520: #line 2154 "cfg.y" { mk_action2( yyval.action, NEXT_BRANCHES_T, 0, 0, 0, 0); } break; case 521: #line 2157 "cfg.y" {yyval.action=0; yyerror("no argument is" " expected"); } break; case 522: #line 2160 "cfg.y" {yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 523: #line 2161 "cfg.y" { mk_action2( yyval.action, USE_BLACKLIST_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 524: #line 2165 "cfg.y" {yyval.action=0; yyerror("bad argument," " string expected"); } break; case 525: #line 2168 "cfg.y" {yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 526: #line 2169 "cfg.y" { cmd_tmp=(void*)find_cmd_export_t(yyvsp[-2].strval, 0, rt); if (cmd_tmp==0){ if (find_cmd_export_t(yyvsp[-2].strval, 0, 0)) { yyerror("Command cannot be " "used in the block\n"); } else { yyerror("unknown command, " "missing loadmodule?\n"); } yyval.action=0; }else{ mk_action2( yyval.action, MODULE_T, CMD_ST, 0, cmd_tmp, 0 ); } } break; case 527: #line 2188 "cfg.y" { cmd_tmp=(void*)find_cmd_export_t(yyvsp[-3].strval,1,rt); if (cmd_tmp==0){ if (find_cmd_export_t(yyvsp[-3].strval, 1, 0)) { yyerror("Command cannot be used " "in the block\n"); } else { yyerror("unknown command, missing" " loadmodule?\n"); } yyval.action=0; }else{ mk_action2( yyval.action, MODULE_T, CMD_ST, STRING_ST, cmd_tmp, yyvsp[-1].strval ); } } break; case 528: #line 2208 "cfg.y" { cmd_tmp=(void*)find_cmd_export_t(yyvsp[-5].strval,2,rt); if (cmd_tmp==0){ if (find_cmd_export_t(yyvsp[-5].strval, 2, 0)) { yyerror("Command cannot be used " "in the block\n"); } else { yyerror("unknown command, missing" " loadmodule?\n"); } yyval.action=0; }else{ mk_action3( yyval.action, MODULE_T, CMD_ST, STRING_ST, STRING_ST, cmd_tmp, yyvsp[-3].strval, yyvsp[-1].strval ); } } break; case 529: #line 2229 "cfg.y" { yyval.action=0; yyerror("bad arguments"); } break; #line 6018 "cfg.tab.c" } yyssp -= yym; yystate = *yyssp; yyvsp -= yym; yym = yylhs[yyn]; if (yystate == 0 && yym == 0) { #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state 0 to\ state %d\n", YYPREFIX, YYFINAL); #endif yystate = YYFINAL; *++yyssp = YYFINAL; *++yyvsp = yyval; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } #endif } if (yychar == 0) goto yyaccept; goto yyloop; } if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yyssp, yystate); #endif if (yyssp >= yysslim && yygrowstack()) { goto yyoverflow; } *++yyssp = yystate; *++yyvsp = yyval; goto yyloop; yyoverflow: yyerror("yacc stack overflow"); yyabort: return (1); yyaccept: return (0); }