From 8599e5eb72a9a2cbed518ceee79eb6b9bc9a8666 Mon Sep 17 00:00:00 2001 From: Felipe Zimmerle Date: Wed, 14 Jun 2017 14:58:10 -0300 Subject: [PATCH] Draft for SecBinaryRules --- others/Makefile.am | 5 + others/mbedtls/aes.c | 1577 ++++++ others/mbedtls/aes.h | 460 ++ others/mbedtls/aesni.c | 470 ++ others/mbedtls/aesni.h | 112 + others/mbedtls/padlock.h | 108 + others/mbedtls/platform_util.c | 67 + others/mbedtls/platform_util.h | 62 + src/parser/location.hh | 141 +- src/parser/position.hh | 184 +- src/parser/seclang-parser.cc | 2309 ++++----- src/parser/seclang-parser.hh | 5040 ++++++++++--------- src/parser/seclang-scanner.cc | 8594 ++++++++++++++++---------------- src/parser/seclang-scanner.ll | 40 + src/parser/stack.hh | 163 +- 15 files changed, 11197 insertions(+), 8135 deletions(-) create mode 100644 others/mbedtls/aes.c create mode 100644 others/mbedtls/aes.h create mode 100644 others/mbedtls/aesni.c create mode 100644 others/mbedtls/aesni.h create mode 100644 others/mbedtls/padlock.h create mode 100644 others/mbedtls/platform_util.c create mode 100644 others/mbedtls/platform_util.h diff --git a/others/Makefile.am b/others/Makefile.am index 7501d558..022ec1f0 100644 --- a/others/Makefile.am +++ b/others/Makefile.am @@ -16,11 +16,16 @@ noinst_HEADERS = \ mbedtls/mbed-tls-config.h \ mbedtls/md5.h \ mbedtls/platform.h \ + mbedtls/platform_util.h \ + mbedtls/aes.h \ mbedtls/sha1.h libmbedtls_la_SOURCES = \ mbedtls/base64.c \ mbedtls/md5.c \ + mbedtls/aes.c \ + mbedtls/aesni.c \ + mbedtls/platform_util.c \ mbedtls/sha1.c libmbedtls_la_CFLAGS = -D MBEDTLS_CONFIG_FILE=\"mbed-tls-config.h\" -Iothers diff --git a/others/mbedtls/aes.c b/others/mbedtls/aes.c new file mode 100644 index 00000000..fea9b538 --- /dev/null +++ b/others/mbedtls/aes.c @@ -0,0 +1,1577 @@ +/* + * FIPS-197 compliant AES implementation + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +/* + * The AES block cipher was designed by Vincent Rijmen and Joan Daemen. + * + * http://csrc.nist.gov/encryption/aes/rijndael/Rijndael.pdf + * http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf + */ + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_AES_C) + +#include + +#include "mbedtls/aes.h" +#include "mbedtls/platform_util.h" +#if defined(MBEDTLS_PADLOCK_C) +#include "mbedtls/padlock.h" +#endif +#if defined(MBEDTLS_AESNI_C) +#include "mbedtls/aesni.h" +#endif + +#if defined(MBEDTLS_SELF_TEST) +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#include +#define mbedtls_printf printf +#endif /* MBEDTLS_PLATFORM_C */ +#endif /* MBEDTLS_SELF_TEST */ + +#if !defined(MBEDTLS_AES_ALT) + +/* + * 32-bit integer manipulation macros (little endian) + */ +#ifndef GET_UINT32_LE +#define GET_UINT32_LE(n,b,i) \ +{ \ + (n) = ( (uint32_t) (b)[(i) ] ) \ + | ( (uint32_t) (b)[(i) + 1] << 8 ) \ + | ( (uint32_t) (b)[(i) + 2] << 16 ) \ + | ( (uint32_t) (b)[(i) + 3] << 24 ); \ +} +#endif + +#ifndef PUT_UINT32_LE +#define PUT_UINT32_LE(n,b,i) \ +{ \ + (b)[(i) ] = (unsigned char) ( ( (n) ) & 0xFF ); \ + (b)[(i) + 1] = (unsigned char) ( ( (n) >> 8 ) & 0xFF ); \ + (b)[(i) + 2] = (unsigned char) ( ( (n) >> 16 ) & 0xFF ); \ + (b)[(i) + 3] = (unsigned char) ( ( (n) >> 24 ) & 0xFF ); \ +} +#endif + +#if defined(MBEDTLS_PADLOCK_C) && \ + ( defined(MBEDTLS_HAVE_X86) || defined(MBEDTLS_PADLOCK_ALIGN16) ) +static int aes_padlock_ace = -1; +#endif + +#if defined(MBEDTLS_AES_ROM_TABLES) +/* + * Forward S-box + */ +static const unsigned char FSb[256] = +{ + 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, + 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, + 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, + 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, + 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, + 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, + 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, + 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75, + 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, + 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, + 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, + 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, + 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, + 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, + 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, + 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, + 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, + 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, + 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, + 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB, + 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, + 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, + 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, + 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, + 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, + 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, + 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, + 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, + 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, + 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, + 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, + 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16 +}; + +/* + * Forward tables + */ +#define FT \ +\ + V(A5,63,63,C6), V(84,7C,7C,F8), V(99,77,77,EE), V(8D,7B,7B,F6), \ + V(0D,F2,F2,FF), V(BD,6B,6B,D6), V(B1,6F,6F,DE), V(54,C5,C5,91), \ + V(50,30,30,60), V(03,01,01,02), V(A9,67,67,CE), V(7D,2B,2B,56), \ + V(19,FE,FE,E7), V(62,D7,D7,B5), V(E6,AB,AB,4D), V(9A,76,76,EC), \ + V(45,CA,CA,8F), V(9D,82,82,1F), V(40,C9,C9,89), V(87,7D,7D,FA), \ + V(15,FA,FA,EF), V(EB,59,59,B2), V(C9,47,47,8E), V(0B,F0,F0,FB), \ + V(EC,AD,AD,41), V(67,D4,D4,B3), V(FD,A2,A2,5F), V(EA,AF,AF,45), \ + V(BF,9C,9C,23), V(F7,A4,A4,53), V(96,72,72,E4), V(5B,C0,C0,9B), \ + V(C2,B7,B7,75), V(1C,FD,FD,E1), V(AE,93,93,3D), V(6A,26,26,4C), \ + V(5A,36,36,6C), V(41,3F,3F,7E), V(02,F7,F7,F5), V(4F,CC,CC,83), \ + V(5C,34,34,68), V(F4,A5,A5,51), V(34,E5,E5,D1), V(08,F1,F1,F9), \ + V(93,71,71,E2), V(73,D8,D8,AB), V(53,31,31,62), V(3F,15,15,2A), \ + V(0C,04,04,08), V(52,C7,C7,95), V(65,23,23,46), V(5E,C3,C3,9D), \ + V(28,18,18,30), V(A1,96,96,37), V(0F,05,05,0A), V(B5,9A,9A,2F), \ + V(09,07,07,0E), V(36,12,12,24), V(9B,80,80,1B), V(3D,E2,E2,DF), \ + V(26,EB,EB,CD), V(69,27,27,4E), V(CD,B2,B2,7F), V(9F,75,75,EA), \ + V(1B,09,09,12), V(9E,83,83,1D), V(74,2C,2C,58), V(2E,1A,1A,34), \ + V(2D,1B,1B,36), V(B2,6E,6E,DC), V(EE,5A,5A,B4), V(FB,A0,A0,5B), \ + V(F6,52,52,A4), V(4D,3B,3B,76), V(61,D6,D6,B7), V(CE,B3,B3,7D), \ + V(7B,29,29,52), V(3E,E3,E3,DD), V(71,2F,2F,5E), V(97,84,84,13), \ + V(F5,53,53,A6), V(68,D1,D1,B9), V(00,00,00,00), V(2C,ED,ED,C1), \ + V(60,20,20,40), V(1F,FC,FC,E3), V(C8,B1,B1,79), V(ED,5B,5B,B6), \ + V(BE,6A,6A,D4), V(46,CB,CB,8D), V(D9,BE,BE,67), V(4B,39,39,72), \ + V(DE,4A,4A,94), V(D4,4C,4C,98), V(E8,58,58,B0), V(4A,CF,CF,85), \ + V(6B,D0,D0,BB), V(2A,EF,EF,C5), V(E5,AA,AA,4F), V(16,FB,FB,ED), \ + V(C5,43,43,86), V(D7,4D,4D,9A), V(55,33,33,66), V(94,85,85,11), \ + V(CF,45,45,8A), V(10,F9,F9,E9), V(06,02,02,04), V(81,7F,7F,FE), \ + V(F0,50,50,A0), V(44,3C,3C,78), V(BA,9F,9F,25), V(E3,A8,A8,4B), \ + V(F3,51,51,A2), V(FE,A3,A3,5D), V(C0,40,40,80), V(8A,8F,8F,05), \ + V(AD,92,92,3F), V(BC,9D,9D,21), V(48,38,38,70), V(04,F5,F5,F1), \ + V(DF,BC,BC,63), V(C1,B6,B6,77), V(75,DA,DA,AF), V(63,21,21,42), \ + V(30,10,10,20), V(1A,FF,FF,E5), V(0E,F3,F3,FD), V(6D,D2,D2,BF), \ + V(4C,CD,CD,81), V(14,0C,0C,18), V(35,13,13,26), V(2F,EC,EC,C3), \ + V(E1,5F,5F,BE), V(A2,97,97,35), V(CC,44,44,88), V(39,17,17,2E), \ + V(57,C4,C4,93), V(F2,A7,A7,55), V(82,7E,7E,FC), V(47,3D,3D,7A), \ + V(AC,64,64,C8), V(E7,5D,5D,BA), V(2B,19,19,32), V(95,73,73,E6), \ + V(A0,60,60,C0), V(98,81,81,19), V(D1,4F,4F,9E), V(7F,DC,DC,A3), \ + V(66,22,22,44), V(7E,2A,2A,54), V(AB,90,90,3B), V(83,88,88,0B), \ + V(CA,46,46,8C), V(29,EE,EE,C7), V(D3,B8,B8,6B), V(3C,14,14,28), \ + V(79,DE,DE,A7), V(E2,5E,5E,BC), V(1D,0B,0B,16), V(76,DB,DB,AD), \ + V(3B,E0,E0,DB), V(56,32,32,64), V(4E,3A,3A,74), V(1E,0A,0A,14), \ + V(DB,49,49,92), V(0A,06,06,0C), V(6C,24,24,48), V(E4,5C,5C,B8), \ + V(5D,C2,C2,9F), V(6E,D3,D3,BD), V(EF,AC,AC,43), V(A6,62,62,C4), \ + V(A8,91,91,39), V(A4,95,95,31), V(37,E4,E4,D3), V(8B,79,79,F2), \ + V(32,E7,E7,D5), V(43,C8,C8,8B), V(59,37,37,6E), V(B7,6D,6D,DA), \ + V(8C,8D,8D,01), V(64,D5,D5,B1), V(D2,4E,4E,9C), V(E0,A9,A9,49), \ + V(B4,6C,6C,D8), V(FA,56,56,AC), V(07,F4,F4,F3), V(25,EA,EA,CF), \ + V(AF,65,65,CA), V(8E,7A,7A,F4), V(E9,AE,AE,47), V(18,08,08,10), \ + V(D5,BA,BA,6F), V(88,78,78,F0), V(6F,25,25,4A), V(72,2E,2E,5C), \ + V(24,1C,1C,38), V(F1,A6,A6,57), V(C7,B4,B4,73), V(51,C6,C6,97), \ + V(23,E8,E8,CB), V(7C,DD,DD,A1), V(9C,74,74,E8), V(21,1F,1F,3E), \ + V(DD,4B,4B,96), V(DC,BD,BD,61), V(86,8B,8B,0D), V(85,8A,8A,0F), \ + V(90,70,70,E0), V(42,3E,3E,7C), V(C4,B5,B5,71), V(AA,66,66,CC), \ + V(D8,48,48,90), V(05,03,03,06), V(01,F6,F6,F7), V(12,0E,0E,1C), \ + V(A3,61,61,C2), V(5F,35,35,6A), V(F9,57,57,AE), V(D0,B9,B9,69), \ + V(91,86,86,17), V(58,C1,C1,99), V(27,1D,1D,3A), V(B9,9E,9E,27), \ + V(38,E1,E1,D9), V(13,F8,F8,EB), V(B3,98,98,2B), V(33,11,11,22), \ + V(BB,69,69,D2), V(70,D9,D9,A9), V(89,8E,8E,07), V(A7,94,94,33), \ + V(B6,9B,9B,2D), V(22,1E,1E,3C), V(92,87,87,15), V(20,E9,E9,C9), \ + V(49,CE,CE,87), V(FF,55,55,AA), V(78,28,28,50), V(7A,DF,DF,A5), \ + V(8F,8C,8C,03), V(F8,A1,A1,59), V(80,89,89,09), V(17,0D,0D,1A), \ + V(DA,BF,BF,65), V(31,E6,E6,D7), V(C6,42,42,84), V(B8,68,68,D0), \ + V(C3,41,41,82), V(B0,99,99,29), V(77,2D,2D,5A), V(11,0F,0F,1E), \ + V(CB,B0,B0,7B), V(FC,54,54,A8), V(D6,BB,BB,6D), V(3A,16,16,2C) + +#define V(a,b,c,d) 0x##a##b##c##d +static const uint32_t FT0[256] = { FT }; +#undef V + +#if !defined(MBEDTLS_AES_FEWER_TABLES) + +#define V(a,b,c,d) 0x##b##c##d##a +static const uint32_t FT1[256] = { FT }; +#undef V + +#define V(a,b,c,d) 0x##c##d##a##b +static const uint32_t FT2[256] = { FT }; +#undef V + +#define V(a,b,c,d) 0x##d##a##b##c +static const uint32_t FT3[256] = { FT }; +#undef V + +#endif /* !MBEDTLS_AES_FEWER_TABLES */ + +#undef FT + +/* + * Reverse S-box + */ +static const unsigned char RSb[256] = +{ + 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, + 0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB, + 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, + 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, + 0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, 0x3D, + 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, + 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, + 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25, + 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, + 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, + 0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, + 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, + 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, + 0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06, + 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, + 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, + 0x3A, 0x91, 0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, + 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, + 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, + 0xE2, 0xF9, 0x37, 0xE8, 0x1C, 0x75, 0xDF, 0x6E, + 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, + 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, + 0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, 0x79, 0x20, + 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, + 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, + 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F, + 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, + 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, + 0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, + 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, + 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D +}; + +/* + * Reverse tables + */ +#define RT \ +\ + V(50,A7,F4,51), V(53,65,41,7E), V(C3,A4,17,1A), V(96,5E,27,3A), \ + V(CB,6B,AB,3B), V(F1,45,9D,1F), V(AB,58,FA,AC), V(93,03,E3,4B), \ + V(55,FA,30,20), V(F6,6D,76,AD), V(91,76,CC,88), V(25,4C,02,F5), \ + V(FC,D7,E5,4F), V(D7,CB,2A,C5), V(80,44,35,26), V(8F,A3,62,B5), \ + V(49,5A,B1,DE), V(67,1B,BA,25), V(98,0E,EA,45), V(E1,C0,FE,5D), \ + V(02,75,2F,C3), V(12,F0,4C,81), V(A3,97,46,8D), V(C6,F9,D3,6B), \ + V(E7,5F,8F,03), V(95,9C,92,15), V(EB,7A,6D,BF), V(DA,59,52,95), \ + V(2D,83,BE,D4), V(D3,21,74,58), V(29,69,E0,49), V(44,C8,C9,8E), \ + V(6A,89,C2,75), V(78,79,8E,F4), V(6B,3E,58,99), V(DD,71,B9,27), \ + V(B6,4F,E1,BE), V(17,AD,88,F0), V(66,AC,20,C9), V(B4,3A,CE,7D), \ + V(18,4A,DF,63), V(82,31,1A,E5), V(60,33,51,97), V(45,7F,53,62), \ + V(E0,77,64,B1), V(84,AE,6B,BB), V(1C,A0,81,FE), V(94,2B,08,F9), \ + V(58,68,48,70), V(19,FD,45,8F), V(87,6C,DE,94), V(B7,F8,7B,52), \ + V(23,D3,73,AB), V(E2,02,4B,72), V(57,8F,1F,E3), V(2A,AB,55,66), \ + V(07,28,EB,B2), V(03,C2,B5,2F), V(9A,7B,C5,86), V(A5,08,37,D3), \ + V(F2,87,28,30), V(B2,A5,BF,23), V(BA,6A,03,02), V(5C,82,16,ED), \ + V(2B,1C,CF,8A), V(92,B4,79,A7), V(F0,F2,07,F3), V(A1,E2,69,4E), \ + V(CD,F4,DA,65), V(D5,BE,05,06), V(1F,62,34,D1), V(8A,FE,A6,C4), \ + V(9D,53,2E,34), V(A0,55,F3,A2), V(32,E1,8A,05), V(75,EB,F6,A4), \ + V(39,EC,83,0B), V(AA,EF,60,40), V(06,9F,71,5E), V(51,10,6E,BD), \ + V(F9,8A,21,3E), V(3D,06,DD,96), V(AE,05,3E,DD), V(46,BD,E6,4D), \ + V(B5,8D,54,91), V(05,5D,C4,71), V(6F,D4,06,04), V(FF,15,50,60), \ + V(24,FB,98,19), V(97,E9,BD,D6), V(CC,43,40,89), V(77,9E,D9,67), \ + V(BD,42,E8,B0), V(88,8B,89,07), V(38,5B,19,E7), V(DB,EE,C8,79), \ + V(47,0A,7C,A1), V(E9,0F,42,7C), V(C9,1E,84,F8), V(00,00,00,00), \ + V(83,86,80,09), V(48,ED,2B,32), V(AC,70,11,1E), V(4E,72,5A,6C), \ + V(FB,FF,0E,FD), V(56,38,85,0F), V(1E,D5,AE,3D), V(27,39,2D,36), \ + V(64,D9,0F,0A), V(21,A6,5C,68), V(D1,54,5B,9B), V(3A,2E,36,24), \ + V(B1,67,0A,0C), V(0F,E7,57,93), V(D2,96,EE,B4), V(9E,91,9B,1B), \ + V(4F,C5,C0,80), V(A2,20,DC,61), V(69,4B,77,5A), V(16,1A,12,1C), \ + V(0A,BA,93,E2), V(E5,2A,A0,C0), V(43,E0,22,3C), V(1D,17,1B,12), \ + V(0B,0D,09,0E), V(AD,C7,8B,F2), V(B9,A8,B6,2D), V(C8,A9,1E,14), \ + V(85,19,F1,57), V(4C,07,75,AF), V(BB,DD,99,EE), V(FD,60,7F,A3), \ + V(9F,26,01,F7), V(BC,F5,72,5C), V(C5,3B,66,44), V(34,7E,FB,5B), \ + V(76,29,43,8B), V(DC,C6,23,CB), V(68,FC,ED,B6), V(63,F1,E4,B8), \ + V(CA,DC,31,D7), V(10,85,63,42), V(40,22,97,13), V(20,11,C6,84), \ + V(7D,24,4A,85), V(F8,3D,BB,D2), V(11,32,F9,AE), V(6D,A1,29,C7), \ + V(4B,2F,9E,1D), V(F3,30,B2,DC), V(EC,52,86,0D), V(D0,E3,C1,77), \ + V(6C,16,B3,2B), V(99,B9,70,A9), V(FA,48,94,11), V(22,64,E9,47), \ + V(C4,8C,FC,A8), V(1A,3F,F0,A0), V(D8,2C,7D,56), V(EF,90,33,22), \ + V(C7,4E,49,87), V(C1,D1,38,D9), V(FE,A2,CA,8C), V(36,0B,D4,98), \ + V(CF,81,F5,A6), V(28,DE,7A,A5), V(26,8E,B7,DA), V(A4,BF,AD,3F), \ + V(E4,9D,3A,2C), V(0D,92,78,50), V(9B,CC,5F,6A), V(62,46,7E,54), \ + V(C2,13,8D,F6), V(E8,B8,D8,90), V(5E,F7,39,2E), V(F5,AF,C3,82), \ + V(BE,80,5D,9F), V(7C,93,D0,69), V(A9,2D,D5,6F), V(B3,12,25,CF), \ + V(3B,99,AC,C8), V(A7,7D,18,10), V(6E,63,9C,E8), V(7B,BB,3B,DB), \ + V(09,78,26,CD), V(F4,18,59,6E), V(01,B7,9A,EC), V(A8,9A,4F,83), \ + V(65,6E,95,E6), V(7E,E6,FF,AA), V(08,CF,BC,21), V(E6,E8,15,EF), \ + V(D9,9B,E7,BA), V(CE,36,6F,4A), V(D4,09,9F,EA), V(D6,7C,B0,29), \ + V(AF,B2,A4,31), V(31,23,3F,2A), V(30,94,A5,C6), V(C0,66,A2,35), \ + V(37,BC,4E,74), V(A6,CA,82,FC), V(B0,D0,90,E0), V(15,D8,A7,33), \ + V(4A,98,04,F1), V(F7,DA,EC,41), V(0E,50,CD,7F), V(2F,F6,91,17), \ + V(8D,D6,4D,76), V(4D,B0,EF,43), V(54,4D,AA,CC), V(DF,04,96,E4), \ + V(E3,B5,D1,9E), V(1B,88,6A,4C), V(B8,1F,2C,C1), V(7F,51,65,46), \ + V(04,EA,5E,9D), V(5D,35,8C,01), V(73,74,87,FA), V(2E,41,0B,FB), \ + V(5A,1D,67,B3), V(52,D2,DB,92), V(33,56,10,E9), V(13,47,D6,6D), \ + V(8C,61,D7,9A), V(7A,0C,A1,37), V(8E,14,F8,59), V(89,3C,13,EB), \ + V(EE,27,A9,CE), V(35,C9,61,B7), V(ED,E5,1C,E1), V(3C,B1,47,7A), \ + V(59,DF,D2,9C), V(3F,73,F2,55), V(79,CE,14,18), V(BF,37,C7,73), \ + V(EA,CD,F7,53), V(5B,AA,FD,5F), V(14,6F,3D,DF), V(86,DB,44,78), \ + V(81,F3,AF,CA), V(3E,C4,68,B9), V(2C,34,24,38), V(5F,40,A3,C2), \ + V(72,C3,1D,16), V(0C,25,E2,BC), V(8B,49,3C,28), V(41,95,0D,FF), \ + V(71,01,A8,39), V(DE,B3,0C,08), V(9C,E4,B4,D8), V(90,C1,56,64), \ + V(61,84,CB,7B), V(70,B6,32,D5), V(74,5C,6C,48), V(42,57,B8,D0) + +#define V(a,b,c,d) 0x##a##b##c##d +static const uint32_t RT0[256] = { RT }; +#undef V + +#if !defined(MBEDTLS_AES_FEWER_TABLES) + +#define V(a,b,c,d) 0x##b##c##d##a +static const uint32_t RT1[256] = { RT }; +#undef V + +#define V(a,b,c,d) 0x##c##d##a##b +static const uint32_t RT2[256] = { RT }; +#undef V + +#define V(a,b,c,d) 0x##d##a##b##c +static const uint32_t RT3[256] = { RT }; +#undef V + +#endif /* !MBEDTLS_AES_FEWER_TABLES */ + +#undef RT + +/* + * Round constants + */ +static const uint32_t RCON[10] = +{ + 0x00000001, 0x00000002, 0x00000004, 0x00000008, + 0x00000010, 0x00000020, 0x00000040, 0x00000080, + 0x0000001B, 0x00000036 +}; + +#else /* MBEDTLS_AES_ROM_TABLES */ + +/* + * Forward S-box & tables + */ +static unsigned char FSb[256]; +static uint32_t FT0[256]; +#if !defined(MBEDTLS_AES_FEWER_TABLES) +static uint32_t FT1[256]; +static uint32_t FT2[256]; +static uint32_t FT3[256]; +#endif /* !MBEDTLS_AES_FEWER_TABLES */ + +/* + * Reverse S-box & tables + */ +static unsigned char RSb[256]; +static uint32_t RT0[256]; +#if !defined(MBEDTLS_AES_FEWER_TABLES) +static uint32_t RT1[256]; +static uint32_t RT2[256]; +static uint32_t RT3[256]; +#endif /* !MBEDTLS_AES_FEWER_TABLES */ + +/* + * Round constants + */ +static uint32_t RCON[10]; + +/* + * Tables generation code + */ +#define ROTL8(x) ( ( x << 8 ) & 0xFFFFFFFF ) | ( x >> 24 ) +#define XTIME(x) ( ( x << 1 ) ^ ( ( x & 0x80 ) ? 0x1B : 0x00 ) ) +#define MUL(x,y) ( ( x && y ) ? pow[(log[x]+log[y]) % 255] : 0 ) + +static int aes_init_done = 0; + +static void aes_gen_tables( void ) +{ + int i, x, y, z; + int pow[256]; + int log[256]; + + /* + * compute pow and log tables over GF(2^8) + */ + for( i = 0, x = 1; i < 256; i++ ) + { + pow[i] = x; + log[x] = i; + x = ( x ^ XTIME( x ) ) & 0xFF; + } + + /* + * calculate the round constants + */ + for( i = 0, x = 1; i < 10; i++ ) + { + RCON[i] = (uint32_t) x; + x = XTIME( x ) & 0xFF; + } + + /* + * generate the forward and reverse S-boxes + */ + FSb[0x00] = 0x63; + RSb[0x63] = 0x00; + + for( i = 1; i < 256; i++ ) + { + x = pow[255 - log[i]]; + + y = x; y = ( ( y << 1 ) | ( y >> 7 ) ) & 0xFF; + x ^= y; y = ( ( y << 1 ) | ( y >> 7 ) ) & 0xFF; + x ^= y; y = ( ( y << 1 ) | ( y >> 7 ) ) & 0xFF; + x ^= y; y = ( ( y << 1 ) | ( y >> 7 ) ) & 0xFF; + x ^= y ^ 0x63; + + FSb[i] = (unsigned char) x; + RSb[x] = (unsigned char) i; + } + + /* + * generate the forward and reverse tables + */ + for( i = 0; i < 256; i++ ) + { + x = FSb[i]; + y = XTIME( x ) & 0xFF; + z = ( y ^ x ) & 0xFF; + + FT0[i] = ( (uint32_t) y ) ^ + ( (uint32_t) x << 8 ) ^ + ( (uint32_t) x << 16 ) ^ + ( (uint32_t) z << 24 ); + +#if !defined(MBEDTLS_AES_FEWER_TABLES) + FT1[i] = ROTL8( FT0[i] ); + FT2[i] = ROTL8( FT1[i] ); + FT3[i] = ROTL8( FT2[i] ); +#endif /* !MBEDTLS_AES_FEWER_TABLES */ + + x = RSb[i]; + + RT0[i] = ( (uint32_t) MUL( 0x0E, x ) ) ^ + ( (uint32_t) MUL( 0x09, x ) << 8 ) ^ + ( (uint32_t) MUL( 0x0D, x ) << 16 ) ^ + ( (uint32_t) MUL( 0x0B, x ) << 24 ); + +#if !defined(MBEDTLS_AES_FEWER_TABLES) + RT1[i] = ROTL8( RT0[i] ); + RT2[i] = ROTL8( RT1[i] ); + RT3[i] = ROTL8( RT2[i] ); +#endif /* !MBEDTLS_AES_FEWER_TABLES */ + } +} + +#undef ROTL8 + +#endif /* MBEDTLS_AES_ROM_TABLES */ + +#if defined(MBEDTLS_AES_FEWER_TABLES) + +#define ROTL8(x) ( (uint32_t)( ( x ) << 8 ) + (uint32_t)( ( x ) >> 24 ) ) +#define ROTL16(x) ( (uint32_t)( ( x ) << 16 ) + (uint32_t)( ( x ) >> 16 ) ) +#define ROTL24(x) ( (uint32_t)( ( x ) << 24 ) + (uint32_t)( ( x ) >> 8 ) ) + +#define AES_RT0(idx) RT0[idx] +#define AES_RT1(idx) ROTL8( RT0[idx] ) +#define AES_RT2(idx) ROTL16( RT0[idx] ) +#define AES_RT3(idx) ROTL24( RT0[idx] ) + +#define AES_FT0(idx) FT0[idx] +#define AES_FT1(idx) ROTL8( FT0[idx] ) +#define AES_FT2(idx) ROTL16( FT0[idx] ) +#define AES_FT3(idx) ROTL24( FT0[idx] ) + +#else /* MBEDTLS_AES_FEWER_TABLES */ + +#define AES_RT0(idx) RT0[idx] +#define AES_RT1(idx) RT1[idx] +#define AES_RT2(idx) RT2[idx] +#define AES_RT3(idx) RT3[idx] + +#define AES_FT0(idx) FT0[idx] +#define AES_FT1(idx) FT1[idx] +#define AES_FT2(idx) FT2[idx] +#define AES_FT3(idx) FT3[idx] + +#endif /* MBEDTLS_AES_FEWER_TABLES */ + +void mbedtls_aes_init( mbedtls_aes_context *ctx ) +{ + memset( ctx, 0, sizeof( mbedtls_aes_context ) ); +} + +void mbedtls_aes_free( mbedtls_aes_context *ctx ) +{ + if( ctx == NULL ) + return; + + mbedtls_platform_zeroize( ctx, sizeof( mbedtls_aes_context ) ); +} + +/* + * AES key schedule (encryption) + */ +#if !defined(MBEDTLS_AES_SETKEY_ENC_ALT) +int mbedtls_aes_setkey_enc( mbedtls_aes_context *ctx, const unsigned char *key, + unsigned int keybits ) +{ + unsigned int i; + uint32_t *RK; + +#if !defined(MBEDTLS_AES_ROM_TABLES) + if( aes_init_done == 0 ) + { + aes_gen_tables(); + aes_init_done = 1; + + } +#endif + + switch( keybits ) + { + case 128: ctx->nr = 10; break; + case 192: ctx->nr = 12; break; + case 256: ctx->nr = 14; break; + default : return( MBEDTLS_ERR_AES_INVALID_KEY_LENGTH ); + } + +#if defined(MBEDTLS_PADLOCK_C) && defined(MBEDTLS_PADLOCK_ALIGN16) + if( aes_padlock_ace == -1 ) + aes_padlock_ace = mbedtls_padlock_has_support( MBEDTLS_PADLOCK_ACE ); + + if( aes_padlock_ace ) + ctx->rk = RK = MBEDTLS_PADLOCK_ALIGN16( ctx->buf ); + else +#endif + ctx->rk = RK = ctx->buf; + +#if defined(MBEDTLS_AESNI_C) && defined(MBEDTLS_HAVE_X86_64) + if( mbedtls_aesni_has_support( MBEDTLS_AESNI_AES ) ) + return( mbedtls_aesni_setkey_enc( (unsigned char *) ctx->rk, key, keybits ) ); +#endif + + for( i = 0; i < ( keybits >> 5 ); i++ ) + { + GET_UINT32_LE( RK[i], key, i << 2 ); + } + + switch( ctx->nr ) + { + case 10: + + for( i = 0; i < 10; i++, RK += 4 ) + { + RK[4] = RK[0] ^ RCON[i] ^ + ( (uint32_t) FSb[ ( RK[3] >> 8 ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( RK[3] >> 16 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( RK[3] >> 24 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( RK[3] ) & 0xFF ] << 24 ); + + RK[5] = RK[1] ^ RK[4]; + RK[6] = RK[2] ^ RK[5]; + RK[7] = RK[3] ^ RK[6]; + } + break; + + case 12: + + for( i = 0; i < 8; i++, RK += 6 ) + { + RK[6] = RK[0] ^ RCON[i] ^ + ( (uint32_t) FSb[ ( RK[5] >> 8 ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( RK[5] >> 16 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( RK[5] >> 24 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( RK[5] ) & 0xFF ] << 24 ); + + RK[7] = RK[1] ^ RK[6]; + RK[8] = RK[2] ^ RK[7]; + RK[9] = RK[3] ^ RK[8]; + RK[10] = RK[4] ^ RK[9]; + RK[11] = RK[5] ^ RK[10]; + } + break; + + case 14: + + for( i = 0; i < 7; i++, RK += 8 ) + { + RK[8] = RK[0] ^ RCON[i] ^ + ( (uint32_t) FSb[ ( RK[7] >> 8 ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( RK[7] >> 16 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( RK[7] >> 24 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( RK[7] ) & 0xFF ] << 24 ); + + RK[9] = RK[1] ^ RK[8]; + RK[10] = RK[2] ^ RK[9]; + RK[11] = RK[3] ^ RK[10]; + + RK[12] = RK[4] ^ + ( (uint32_t) FSb[ ( RK[11] ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( RK[11] >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( RK[11] >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( RK[11] >> 24 ) & 0xFF ] << 24 ); + + RK[13] = RK[5] ^ RK[12]; + RK[14] = RK[6] ^ RK[13]; + RK[15] = RK[7] ^ RK[14]; + } + break; + } + + return( 0 ); +} +#endif /* !MBEDTLS_AES_SETKEY_ENC_ALT */ + +/* + * AES key schedule (decryption) + */ +#if !defined(MBEDTLS_AES_SETKEY_DEC_ALT) +int mbedtls_aes_setkey_dec( mbedtls_aes_context *ctx, const unsigned char *key, + unsigned int keybits ) +{ + int i, j, ret; + mbedtls_aes_context cty; + uint32_t *RK; + uint32_t *SK; + + mbedtls_aes_init( &cty ); + +#if defined(MBEDTLS_PADLOCK_C) && defined(MBEDTLS_PADLOCK_ALIGN16) + if( aes_padlock_ace == -1 ) + aes_padlock_ace = mbedtls_padlock_has_support( MBEDTLS_PADLOCK_ACE ); + + if( aes_padlock_ace ) + ctx->rk = RK = MBEDTLS_PADLOCK_ALIGN16( ctx->buf ); + else +#endif + ctx->rk = RK = ctx->buf; + + /* Also checks keybits */ + if( ( ret = mbedtls_aes_setkey_enc( &cty, key, keybits ) ) != 0 ) + goto exit; + + ctx->nr = cty.nr; + +#if defined(MBEDTLS_AESNI_C) && defined(MBEDTLS_HAVE_X86_64) + if( mbedtls_aesni_has_support( MBEDTLS_AESNI_AES ) ) + { + mbedtls_aesni_inverse_key( (unsigned char *) ctx->rk, + (const unsigned char *) cty.rk, ctx->nr ); + goto exit; + } +#endif + + SK = cty.rk + cty.nr * 4; + + *RK++ = *SK++; + *RK++ = *SK++; + *RK++ = *SK++; + *RK++ = *SK++; + + for( i = ctx->nr - 1, SK -= 8; i > 0; i--, SK -= 8 ) + { + for( j = 0; j < 4; j++, SK++ ) + { + *RK++ = AES_RT0( FSb[ ( *SK ) & 0xFF ] ) ^ + AES_RT1( FSb[ ( *SK >> 8 ) & 0xFF ] ) ^ + AES_RT2( FSb[ ( *SK >> 16 ) & 0xFF ] ) ^ + AES_RT3( FSb[ ( *SK >> 24 ) & 0xFF ] ); + } + } + + *RK++ = *SK++; + *RK++ = *SK++; + *RK++ = *SK++; + *RK++ = *SK++; + +exit: + mbedtls_aes_free( &cty ); + + return( ret ); +} +#endif /* !MBEDTLS_AES_SETKEY_DEC_ALT */ + +#define AES_FROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \ +{ \ + X0 = *RK++ ^ AES_FT0( ( Y0 ) & 0xFF ) ^ \ + AES_FT1( ( Y1 >> 8 ) & 0xFF ) ^ \ + AES_FT2( ( Y2 >> 16 ) & 0xFF ) ^ \ + AES_FT3( ( Y3 >> 24 ) & 0xFF ); \ + \ + X1 = *RK++ ^ AES_FT0( ( Y1 ) & 0xFF ) ^ \ + AES_FT1( ( Y2 >> 8 ) & 0xFF ) ^ \ + AES_FT2( ( Y3 >> 16 ) & 0xFF ) ^ \ + AES_FT3( ( Y0 >> 24 ) & 0xFF ); \ + \ + X2 = *RK++ ^ AES_FT0( ( Y2 ) & 0xFF ) ^ \ + AES_FT1( ( Y3 >> 8 ) & 0xFF ) ^ \ + AES_FT2( ( Y0 >> 16 ) & 0xFF ) ^ \ + AES_FT3( ( Y1 >> 24 ) & 0xFF ); \ + \ + X3 = *RK++ ^ AES_FT0( ( Y3 ) & 0xFF ) ^ \ + AES_FT1( ( Y0 >> 8 ) & 0xFF ) ^ \ + AES_FT2( ( Y1 >> 16 ) & 0xFF ) ^ \ + AES_FT3( ( Y2 >> 24 ) & 0xFF ); \ +} + +#define AES_RROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \ +{ \ + X0 = *RK++ ^ AES_RT0( ( Y0 ) & 0xFF ) ^ \ + AES_RT1( ( Y3 >> 8 ) & 0xFF ) ^ \ + AES_RT2( ( Y2 >> 16 ) & 0xFF ) ^ \ + AES_RT3( ( Y1 >> 24 ) & 0xFF ); \ + \ + X1 = *RK++ ^ AES_RT0( ( Y1 ) & 0xFF ) ^ \ + AES_RT1( ( Y0 >> 8 ) & 0xFF ) ^ \ + AES_RT2( ( Y3 >> 16 ) & 0xFF ) ^ \ + AES_RT3( ( Y2 >> 24 ) & 0xFF ); \ + \ + X2 = *RK++ ^ AES_RT0( ( Y2 ) & 0xFF ) ^ \ + AES_RT1( ( Y1 >> 8 ) & 0xFF ) ^ \ + AES_RT2( ( Y0 >> 16 ) & 0xFF ) ^ \ + AES_RT3( ( Y3 >> 24 ) & 0xFF ); \ + \ + X3 = *RK++ ^ AES_RT0( ( Y3 ) & 0xFF ) ^ \ + AES_RT1( ( Y2 >> 8 ) & 0xFF ) ^ \ + AES_RT2( ( Y1 >> 16 ) & 0xFF ) ^ \ + AES_RT3( ( Y0 >> 24 ) & 0xFF ); \ +} + +/* + * AES-ECB block encryption + */ +#if !defined(MBEDTLS_AES_ENCRYPT_ALT) +int mbedtls_internal_aes_encrypt( mbedtls_aes_context *ctx, + const unsigned char input[16], + unsigned char output[16] ) +{ + int i; + uint32_t *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; + + RK = ctx->rk; + + GET_UINT32_LE( X0, input, 0 ); X0 ^= *RK++; + GET_UINT32_LE( X1, input, 4 ); X1 ^= *RK++; + GET_UINT32_LE( X2, input, 8 ); X2 ^= *RK++; + GET_UINT32_LE( X3, input, 12 ); X3 ^= *RK++; + + for( i = ( ctx->nr >> 1 ) - 1; i > 0; i-- ) + { + AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); + AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); + } + + AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); + + X0 = *RK++ ^ \ + ( (uint32_t) FSb[ ( Y0 ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( Y1 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( Y2 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( Y3 >> 24 ) & 0xFF ] << 24 ); + + X1 = *RK++ ^ \ + ( (uint32_t) FSb[ ( Y1 ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( Y2 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( Y3 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( Y0 >> 24 ) & 0xFF ] << 24 ); + + X2 = *RK++ ^ \ + ( (uint32_t) FSb[ ( Y2 ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( Y3 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( Y0 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( Y1 >> 24 ) & 0xFF ] << 24 ); + + X3 = *RK++ ^ \ + ( (uint32_t) FSb[ ( Y3 ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( Y0 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( Y1 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( Y2 >> 24 ) & 0xFF ] << 24 ); + + PUT_UINT32_LE( X0, output, 0 ); + PUT_UINT32_LE( X1, output, 4 ); + PUT_UINT32_LE( X2, output, 8 ); + PUT_UINT32_LE( X3, output, 12 ); + + return( 0 ); +} +#endif /* !MBEDTLS_AES_ENCRYPT_ALT */ + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +void mbedtls_aes_encrypt( mbedtls_aes_context *ctx, + const unsigned char input[16], + unsigned char output[16] ) +{ + mbedtls_internal_aes_encrypt( ctx, input, output ); +} +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +/* + * AES-ECB block decryption + */ +#if !defined(MBEDTLS_AES_DECRYPT_ALT) +int mbedtls_internal_aes_decrypt( mbedtls_aes_context *ctx, + const unsigned char input[16], + unsigned char output[16] ) +{ + int i; + uint32_t *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; + + RK = ctx->rk; + + GET_UINT32_LE( X0, input, 0 ); X0 ^= *RK++; + GET_UINT32_LE( X1, input, 4 ); X1 ^= *RK++; + GET_UINT32_LE( X2, input, 8 ); X2 ^= *RK++; + GET_UINT32_LE( X3, input, 12 ); X3 ^= *RK++; + + for( i = ( ctx->nr >> 1 ) - 1; i > 0; i-- ) + { + AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); + AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); + } + + AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); + + X0 = *RK++ ^ \ + ( (uint32_t) RSb[ ( Y0 ) & 0xFF ] ) ^ + ( (uint32_t) RSb[ ( Y3 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) RSb[ ( Y2 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) RSb[ ( Y1 >> 24 ) & 0xFF ] << 24 ); + + X1 = *RK++ ^ \ + ( (uint32_t) RSb[ ( Y1 ) & 0xFF ] ) ^ + ( (uint32_t) RSb[ ( Y0 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) RSb[ ( Y3 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) RSb[ ( Y2 >> 24 ) & 0xFF ] << 24 ); + + X2 = *RK++ ^ \ + ( (uint32_t) RSb[ ( Y2 ) & 0xFF ] ) ^ + ( (uint32_t) RSb[ ( Y1 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) RSb[ ( Y0 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) RSb[ ( Y3 >> 24 ) & 0xFF ] << 24 ); + + X3 = *RK++ ^ \ + ( (uint32_t) RSb[ ( Y3 ) & 0xFF ] ) ^ + ( (uint32_t) RSb[ ( Y2 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) RSb[ ( Y1 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) RSb[ ( Y0 >> 24 ) & 0xFF ] << 24 ); + + PUT_UINT32_LE( X0, output, 0 ); + PUT_UINT32_LE( X1, output, 4 ); + PUT_UINT32_LE( X2, output, 8 ); + PUT_UINT32_LE( X3, output, 12 ); + + return( 0 ); +} +#endif /* !MBEDTLS_AES_DECRYPT_ALT */ + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +void mbedtls_aes_decrypt( mbedtls_aes_context *ctx, + const unsigned char input[16], + unsigned char output[16] ) +{ + mbedtls_internal_aes_decrypt( ctx, input, output ); +} +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +/* + * AES-ECB block encryption/decryption + */ +int mbedtls_aes_crypt_ecb( mbedtls_aes_context *ctx, + int mode, + const unsigned char input[16], + unsigned char output[16] ) +{ +#if defined(MBEDTLS_AESNI_C) && defined(MBEDTLS_HAVE_X86_64) + if( mbedtls_aesni_has_support( MBEDTLS_AESNI_AES ) ) + return( mbedtls_aesni_crypt_ecb( ctx, mode, input, output ) ); +#endif + +#if defined(MBEDTLS_PADLOCK_C) && defined(MBEDTLS_HAVE_X86) + if( aes_padlock_ace ) + { + if( mbedtls_padlock_xcryptecb( ctx, mode, input, output ) == 0 ) + return( 0 ); + + // If padlock data misaligned, we just fall back to + // unaccelerated mode + // + } +#endif + + if( mode == MBEDTLS_AES_ENCRYPT ) + return( mbedtls_internal_aes_encrypt( ctx, input, output ) ); + else + return( mbedtls_internal_aes_decrypt( ctx, input, output ) ); +} + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +/* + * AES-CBC buffer encryption/decryption + */ +int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ) +{ + int i; + unsigned char temp[16]; + + if( length % 16 ) + return( MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH ); + +#if defined(MBEDTLS_PADLOCK_C) && defined(MBEDTLS_HAVE_X86) + if( aes_padlock_ace ) + { + if( mbedtls_padlock_xcryptcbc( ctx, mode, length, iv, input, output ) == 0 ) + return( 0 ); + + // If padlock data misaligned, we just fall back to + // unaccelerated mode + // + } +#endif + + if( mode == MBEDTLS_AES_DECRYPT ) + { + while( length > 0 ) + { + memcpy( temp, input, 16 ); + mbedtls_aes_crypt_ecb( ctx, mode, input, output ); + + for( i = 0; i < 16; i++ ) + output[i] = (unsigned char)( output[i] ^ iv[i] ); + + memcpy( iv, temp, 16 ); + + input += 16; + output += 16; + length -= 16; + } + } + else + { + while( length > 0 ) + { + for( i = 0; i < 16; i++ ) + output[i] = (unsigned char)( input[i] ^ iv[i] ); + + mbedtls_aes_crypt_ecb( ctx, mode, output, output ); + memcpy( iv, output, 16 ); + + input += 16; + output += 16; + length -= 16; + } + } + + return( 0 ); +} +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#if defined(MBEDTLS_CIPHER_MODE_CFB) +/* + * AES-CFB128 buffer encryption/decryption + */ +int mbedtls_aes_crypt_cfb128( mbedtls_aes_context *ctx, + int mode, + size_t length, + size_t *iv_off, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ) +{ + int c; + size_t n = *iv_off; + + if( mode == MBEDTLS_AES_DECRYPT ) + { + while( length-- ) + { + if( n == 0 ) + mbedtls_aes_crypt_ecb( ctx, MBEDTLS_AES_ENCRYPT, iv, iv ); + + c = *input++; + *output++ = (unsigned char)( c ^ iv[n] ); + iv[n] = (unsigned char) c; + + n = ( n + 1 ) & 0x0F; + } + } + else + { + while( length-- ) + { + if( n == 0 ) + mbedtls_aes_crypt_ecb( ctx, MBEDTLS_AES_ENCRYPT, iv, iv ); + + iv[n] = *output++ = (unsigned char)( iv[n] ^ *input++ ); + + n = ( n + 1 ) & 0x0F; + } + } + + *iv_off = n; + + return( 0 ); +} + +/* + * AES-CFB8 buffer encryption/decryption + */ +int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ) +{ + unsigned char c; + unsigned char ov[17]; + + while( length-- ) + { + memcpy( ov, iv, 16 ); + mbedtls_aes_crypt_ecb( ctx, MBEDTLS_AES_ENCRYPT, iv, iv ); + + if( mode == MBEDTLS_AES_DECRYPT ) + ov[16] = *input; + + c = *output++ = (unsigned char)( iv[0] ^ *input++ ); + + if( mode == MBEDTLS_AES_ENCRYPT ) + ov[16] = c; + + memcpy( iv, ov + 1, 16 ); + } + + return( 0 ); +} +#endif /*MBEDTLS_CIPHER_MODE_CFB */ + +#if defined(MBEDTLS_CIPHER_MODE_CTR) +/* + * AES-CTR buffer encryption/decryption + */ +int mbedtls_aes_crypt_ctr( mbedtls_aes_context *ctx, + size_t length, + size_t *nc_off, + unsigned char nonce_counter[16], + unsigned char stream_block[16], + const unsigned char *input, + unsigned char *output ) +{ + int c, i; + size_t n = *nc_off; + + if ( n > 0x0F ) + return( MBEDTLS_ERR_AES_BAD_INPUT_DATA ); + + while( length-- ) + { + if( n == 0 ) { + mbedtls_aes_crypt_ecb( ctx, MBEDTLS_AES_ENCRYPT, nonce_counter, stream_block ); + + for( i = 16; i > 0; i-- ) + if( ++nonce_counter[i - 1] != 0 ) + break; + } + c = *input++; + *output++ = (unsigned char)( c ^ stream_block[n] ); + + n = ( n + 1 ) & 0x0F; + } + + *nc_off = n; + + return( 0 ); +} +#endif /* MBEDTLS_CIPHER_MODE_CTR */ + +#endif /* !MBEDTLS_AES_ALT */ + +#if defined(MBEDTLS_SELF_TEST) +/* + * AES test vectors from: + * + * http://csrc.nist.gov/archive/aes/rijndael/rijndael-vals.zip + */ +static const unsigned char aes_test_ecb_dec[3][16] = +{ + { 0x44, 0x41, 0x6A, 0xC2, 0xD1, 0xF5, 0x3C, 0x58, + 0x33, 0x03, 0x91, 0x7E, 0x6B, 0xE9, 0xEB, 0xE0 }, + { 0x48, 0xE3, 0x1E, 0x9E, 0x25, 0x67, 0x18, 0xF2, + 0x92, 0x29, 0x31, 0x9C, 0x19, 0xF1, 0x5B, 0xA4 }, + { 0x05, 0x8C, 0xCF, 0xFD, 0xBB, 0xCB, 0x38, 0x2D, + 0x1F, 0x6F, 0x56, 0x58, 0x5D, 0x8A, 0x4A, 0xDE } +}; + +static const unsigned char aes_test_ecb_enc[3][16] = +{ + { 0xC3, 0x4C, 0x05, 0x2C, 0xC0, 0xDA, 0x8D, 0x73, + 0x45, 0x1A, 0xFE, 0x5F, 0x03, 0xBE, 0x29, 0x7F }, + { 0xF3, 0xF6, 0x75, 0x2A, 0xE8, 0xD7, 0x83, 0x11, + 0x38, 0xF0, 0x41, 0x56, 0x06, 0x31, 0xB1, 0x14 }, + { 0x8B, 0x79, 0xEE, 0xCC, 0x93, 0xA0, 0xEE, 0x5D, + 0xFF, 0x30, 0xB4, 0xEA, 0x21, 0x63, 0x6D, 0xA4 } +}; + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +static const unsigned char aes_test_cbc_dec[3][16] = +{ + { 0xFA, 0xCA, 0x37, 0xE0, 0xB0, 0xC8, 0x53, 0x73, + 0xDF, 0x70, 0x6E, 0x73, 0xF7, 0xC9, 0xAF, 0x86 }, + { 0x5D, 0xF6, 0x78, 0xDD, 0x17, 0xBA, 0x4E, 0x75, + 0xB6, 0x17, 0x68, 0xC6, 0xAD, 0xEF, 0x7C, 0x7B }, + { 0x48, 0x04, 0xE1, 0x81, 0x8F, 0xE6, 0x29, 0x75, + 0x19, 0xA3, 0xE8, 0x8C, 0x57, 0x31, 0x04, 0x13 } +}; + +static const unsigned char aes_test_cbc_enc[3][16] = +{ + { 0x8A, 0x05, 0xFC, 0x5E, 0x09, 0x5A, 0xF4, 0x84, + 0x8A, 0x08, 0xD3, 0x28, 0xD3, 0x68, 0x8E, 0x3D }, + { 0x7B, 0xD9, 0x66, 0xD5, 0x3A, 0xD8, 0xC1, 0xBB, + 0x85, 0xD2, 0xAD, 0xFA, 0xE8, 0x7B, 0xB1, 0x04 }, + { 0xFE, 0x3C, 0x53, 0x65, 0x3E, 0x2F, 0x45, 0xB5, + 0x6F, 0xCD, 0x88, 0xB2, 0xCC, 0x89, 0x8F, 0xF0 } +}; +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#if defined(MBEDTLS_CIPHER_MODE_CFB) +/* + * AES-CFB128 test vectors from: + * + * http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf + */ +static const unsigned char aes_test_cfb128_key[3][32] = +{ + { 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C }, + { 0x8E, 0x73, 0xB0, 0xF7, 0xDA, 0x0E, 0x64, 0x52, + 0xC8, 0x10, 0xF3, 0x2B, 0x80, 0x90, 0x79, 0xE5, + 0x62, 0xF8, 0xEA, 0xD2, 0x52, 0x2C, 0x6B, 0x7B }, + { 0x60, 0x3D, 0xEB, 0x10, 0x15, 0xCA, 0x71, 0xBE, + 0x2B, 0x73, 0xAE, 0xF0, 0x85, 0x7D, 0x77, 0x81, + 0x1F, 0x35, 0x2C, 0x07, 0x3B, 0x61, 0x08, 0xD7, + 0x2D, 0x98, 0x10, 0xA3, 0x09, 0x14, 0xDF, 0xF4 } +}; + +static const unsigned char aes_test_cfb128_iv[16] = +{ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F +}; + +static const unsigned char aes_test_cfb128_pt[64] = +{ + 0x6B, 0xC1, 0xBE, 0xE2, 0x2E, 0x40, 0x9F, 0x96, + 0xE9, 0x3D, 0x7E, 0x11, 0x73, 0x93, 0x17, 0x2A, + 0xAE, 0x2D, 0x8A, 0x57, 0x1E, 0x03, 0xAC, 0x9C, + 0x9E, 0xB7, 0x6F, 0xAC, 0x45, 0xAF, 0x8E, 0x51, + 0x30, 0xC8, 0x1C, 0x46, 0xA3, 0x5C, 0xE4, 0x11, + 0xE5, 0xFB, 0xC1, 0x19, 0x1A, 0x0A, 0x52, 0xEF, + 0xF6, 0x9F, 0x24, 0x45, 0xDF, 0x4F, 0x9B, 0x17, + 0xAD, 0x2B, 0x41, 0x7B, 0xE6, 0x6C, 0x37, 0x10 +}; + +static const unsigned char aes_test_cfb128_ct[3][64] = +{ + { 0x3B, 0x3F, 0xD9, 0x2E, 0xB7, 0x2D, 0xAD, 0x20, + 0x33, 0x34, 0x49, 0xF8, 0xE8, 0x3C, 0xFB, 0x4A, + 0xC8, 0xA6, 0x45, 0x37, 0xA0, 0xB3, 0xA9, 0x3F, + 0xCD, 0xE3, 0xCD, 0xAD, 0x9F, 0x1C, 0xE5, 0x8B, + 0x26, 0x75, 0x1F, 0x67, 0xA3, 0xCB, 0xB1, 0x40, + 0xB1, 0x80, 0x8C, 0xF1, 0x87, 0xA4, 0xF4, 0xDF, + 0xC0, 0x4B, 0x05, 0x35, 0x7C, 0x5D, 0x1C, 0x0E, + 0xEA, 0xC4, 0xC6, 0x6F, 0x9F, 0xF7, 0xF2, 0xE6 }, + { 0xCD, 0xC8, 0x0D, 0x6F, 0xDD, 0xF1, 0x8C, 0xAB, + 0x34, 0xC2, 0x59, 0x09, 0xC9, 0x9A, 0x41, 0x74, + 0x67, 0xCE, 0x7F, 0x7F, 0x81, 0x17, 0x36, 0x21, + 0x96, 0x1A, 0x2B, 0x70, 0x17, 0x1D, 0x3D, 0x7A, + 0x2E, 0x1E, 0x8A, 0x1D, 0xD5, 0x9B, 0x88, 0xB1, + 0xC8, 0xE6, 0x0F, 0xED, 0x1E, 0xFA, 0xC4, 0xC9, + 0xC0, 0x5F, 0x9F, 0x9C, 0xA9, 0x83, 0x4F, 0xA0, + 0x42, 0xAE, 0x8F, 0xBA, 0x58, 0x4B, 0x09, 0xFF }, + { 0xDC, 0x7E, 0x84, 0xBF, 0xDA, 0x79, 0x16, 0x4B, + 0x7E, 0xCD, 0x84, 0x86, 0x98, 0x5D, 0x38, 0x60, + 0x39, 0xFF, 0xED, 0x14, 0x3B, 0x28, 0xB1, 0xC8, + 0x32, 0x11, 0x3C, 0x63, 0x31, 0xE5, 0x40, 0x7B, + 0xDF, 0x10, 0x13, 0x24, 0x15, 0xE5, 0x4B, 0x92, + 0xA1, 0x3E, 0xD0, 0xA8, 0x26, 0x7A, 0xE2, 0xF9, + 0x75, 0xA3, 0x85, 0x74, 0x1A, 0xB9, 0xCE, 0xF8, + 0x20, 0x31, 0x62, 0x3D, 0x55, 0xB1, 0xE4, 0x71 } +}; +#endif /* MBEDTLS_CIPHER_MODE_CFB */ + +#if defined(MBEDTLS_CIPHER_MODE_CTR) +/* + * AES-CTR test vectors from: + * + * http://www.faqs.org/rfcs/rfc3686.html + */ + +static const unsigned char aes_test_ctr_key[3][16] = +{ + { 0xAE, 0x68, 0x52, 0xF8, 0x12, 0x10, 0x67, 0xCC, + 0x4B, 0xF7, 0xA5, 0x76, 0x55, 0x77, 0xF3, 0x9E }, + { 0x7E, 0x24, 0x06, 0x78, 0x17, 0xFA, 0xE0, 0xD7, + 0x43, 0xD6, 0xCE, 0x1F, 0x32, 0x53, 0x91, 0x63 }, + { 0x76, 0x91, 0xBE, 0x03, 0x5E, 0x50, 0x20, 0xA8, + 0xAC, 0x6E, 0x61, 0x85, 0x29, 0xF9, 0xA0, 0xDC } +}; + +static const unsigned char aes_test_ctr_nonce_counter[3][16] = +{ + { 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, + { 0x00, 0x6C, 0xB6, 0xDB, 0xC0, 0x54, 0x3B, 0x59, + 0xDA, 0x48, 0xD9, 0x0B, 0x00, 0x00, 0x00, 0x01 }, + { 0x00, 0xE0, 0x01, 0x7B, 0x27, 0x77, 0x7F, 0x3F, + 0x4A, 0x17, 0x86, 0xF0, 0x00, 0x00, 0x00, 0x01 } +}; + +static const unsigned char aes_test_ctr_pt[3][48] = +{ + { 0x53, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x62, + 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6D, 0x73, 0x67 }, + + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F }, + + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x20, 0x21, 0x22, 0x23 } +}; + +static const unsigned char aes_test_ctr_ct[3][48] = +{ + { 0xE4, 0x09, 0x5D, 0x4F, 0xB7, 0xA7, 0xB3, 0x79, + 0x2D, 0x61, 0x75, 0xA3, 0x26, 0x13, 0x11, 0xB8 }, + { 0x51, 0x04, 0xA1, 0x06, 0x16, 0x8A, 0x72, 0xD9, + 0x79, 0x0D, 0x41, 0xEE, 0x8E, 0xDA, 0xD3, 0x88, + 0xEB, 0x2E, 0x1E, 0xFC, 0x46, 0xDA, 0x57, 0xC8, + 0xFC, 0xE6, 0x30, 0xDF, 0x91, 0x41, 0xBE, 0x28 }, + { 0xC1, 0xCF, 0x48, 0xA8, 0x9F, 0x2F, 0xFD, 0xD9, + 0xCF, 0x46, 0x52, 0xE9, 0xEF, 0xDB, 0x72, 0xD7, + 0x45, 0x40, 0xA4, 0x2B, 0xDE, 0x6D, 0x78, 0x36, + 0xD5, 0x9A, 0x5C, 0xEA, 0xAE, 0xF3, 0x10, 0x53, + 0x25, 0xB2, 0x07, 0x2F } +}; + +static const int aes_test_ctr_len[3] = + { 16, 32, 36 }; +#endif /* MBEDTLS_CIPHER_MODE_CTR */ + +/* + * Checkup routine + */ +int mbedtls_aes_self_test( int verbose ) +{ + int ret = 0, i, j, u, mode; + unsigned int keybits; + unsigned char key[32]; + unsigned char buf[64]; + const unsigned char *aes_tests; +#if defined(MBEDTLS_CIPHER_MODE_CBC) || defined(MBEDTLS_CIPHER_MODE_CFB) + unsigned char iv[16]; +#endif +#if defined(MBEDTLS_CIPHER_MODE_CBC) + unsigned char prv[16]; +#endif +#if defined(MBEDTLS_CIPHER_MODE_CTR) || defined(MBEDTLS_CIPHER_MODE_CFB) + size_t offset; +#endif +#if defined(MBEDTLS_CIPHER_MODE_CTR) + int len; + unsigned char nonce_counter[16]; + unsigned char stream_block[16]; +#endif + mbedtls_aes_context ctx; + + memset( key, 0, 32 ); + mbedtls_aes_init( &ctx ); + + /* + * ECB mode + */ + for( i = 0; i < 6; i++ ) + { + u = i >> 1; + keybits = 128 + u * 64; + mode = i & 1; + + if( verbose != 0 ) + mbedtls_printf( " AES-ECB-%3d (%s): ", keybits, + ( mode == MBEDTLS_AES_DECRYPT ) ? "dec" : "enc" ); + + memset( buf, 0, 16 ); + + if( mode == MBEDTLS_AES_DECRYPT ) + { + ret = mbedtls_aes_setkey_dec( &ctx, key, keybits ); + aes_tests = aes_test_ecb_dec[u]; + } + else + { + ret = mbedtls_aes_setkey_enc( &ctx, key, keybits ); + aes_tests = aes_test_ecb_enc[u]; + } + + /* + * AES-192 is an optional feature that may be unavailable when + * there is an alternative underlying implementation i.e. when + * MBEDTLS_AES_ALT is defined. + */ + if( ret == MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE && keybits == 192 ) + { + mbedtls_printf( "skipped\n" ); + continue; + } + else if( ret != 0 ) + { + goto exit; + } + + for( j = 0; j < 10000; j++ ) + { + ret = mbedtls_aes_crypt_ecb( &ctx, mode, buf, buf ); + if( ret != 0 ) + goto exit; + } + + if( memcmp( buf, aes_tests, 16 ) != 0 ) + { + ret = 1; + goto exit; + } + + if( verbose != 0 ) + mbedtls_printf( "passed\n" ); + } + + if( verbose != 0 ) + mbedtls_printf( "\n" ); + +#if defined(MBEDTLS_CIPHER_MODE_CBC) + /* + * CBC mode + */ + for( i = 0; i < 6; i++ ) + { + u = i >> 1; + keybits = 128 + u * 64; + mode = i & 1; + + if( verbose != 0 ) + mbedtls_printf( " AES-CBC-%3d (%s): ", keybits, + ( mode == MBEDTLS_AES_DECRYPT ) ? "dec" : "enc" ); + + memset( iv , 0, 16 ); + memset( prv, 0, 16 ); + memset( buf, 0, 16 ); + + if( mode == MBEDTLS_AES_DECRYPT ) + { + ret = mbedtls_aes_setkey_dec( &ctx, key, keybits ); + aes_tests = aes_test_cbc_dec[u]; + } + else + { + ret = mbedtls_aes_setkey_enc( &ctx, key, keybits ); + aes_tests = aes_test_cbc_enc[u]; + } + + /* + * AES-192 is an optional feature that may be unavailable when + * there is an alternative underlying implementation i.e. when + * MBEDTLS_AES_ALT is defined. + */ + if( ret == MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE && keybits == 192 ) + { + mbedtls_printf( "skipped\n" ); + continue; + } + else if( ret != 0 ) + { + goto exit; + } + + for( j = 0; j < 10000; j++ ) + { + if( mode == MBEDTLS_AES_ENCRYPT ) + { + unsigned char tmp[16]; + + memcpy( tmp, prv, 16 ); + memcpy( prv, buf, 16 ); + memcpy( buf, tmp, 16 ); + } + + ret = mbedtls_aes_crypt_cbc( &ctx, mode, 16, iv, buf, buf ); + if( ret != 0 ) + goto exit; + + } + + if( memcmp( buf, aes_tests, 16 ) != 0 ) + { + ret = 1; + goto exit; + } + + if( verbose != 0 ) + mbedtls_printf( "passed\n" ); + } + + if( verbose != 0 ) + mbedtls_printf( "\n" ); +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#if defined(MBEDTLS_CIPHER_MODE_CFB) + /* + * CFB128 mode + */ + for( i = 0; i < 6; i++ ) + { + u = i >> 1; + keybits = 128 + u * 64; + mode = i & 1; + + if( verbose != 0 ) + mbedtls_printf( " AES-CFB128-%3d (%s): ", keybits, + ( mode == MBEDTLS_AES_DECRYPT ) ? "dec" : "enc" ); + + memcpy( iv, aes_test_cfb128_iv, 16 ); + memcpy( key, aes_test_cfb128_key[u], keybits / 8 ); + + offset = 0; + ret = mbedtls_aes_setkey_enc( &ctx, key, keybits ); + /* + * AES-192 is an optional feature that may be unavailable when + * there is an alternative underlying implementation i.e. when + * MBEDTLS_AES_ALT is defined. + */ + if( ret == MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE && keybits == 192 ) + { + mbedtls_printf( "skipped\n" ); + continue; + } + else if( ret != 0 ) + { + goto exit; + } + + if( mode == MBEDTLS_AES_DECRYPT ) + { + memcpy( buf, aes_test_cfb128_ct[u], 64 ); + aes_tests = aes_test_cfb128_pt; + } + else + { + memcpy( buf, aes_test_cfb128_pt, 64 ); + aes_tests = aes_test_cfb128_ct[u]; + } + + ret = mbedtls_aes_crypt_cfb128( &ctx, mode, 64, &offset, iv, buf, buf ); + if( ret != 0 ) + goto exit; + + if( memcmp( buf, aes_tests, 64 ) != 0 ) + { + ret = 1; + goto exit; + } + + if( verbose != 0 ) + mbedtls_printf( "passed\n" ); + } + + if( verbose != 0 ) + mbedtls_printf( "\n" ); +#endif /* MBEDTLS_CIPHER_MODE_CFB */ + +#if defined(MBEDTLS_CIPHER_MODE_CTR) + /* + * CTR mode + */ + for( i = 0; i < 6; i++ ) + { + u = i >> 1; + mode = i & 1; + + if( verbose != 0 ) + mbedtls_printf( " AES-CTR-128 (%s): ", + ( mode == MBEDTLS_AES_DECRYPT ) ? "dec" : "enc" ); + + memcpy( nonce_counter, aes_test_ctr_nonce_counter[u], 16 ); + memcpy( key, aes_test_ctr_key[u], 16 ); + + offset = 0; + if( ( ret = mbedtls_aes_setkey_enc( &ctx, key, 128 ) ) != 0 ) + goto exit; + + len = aes_test_ctr_len[u]; + + if( mode == MBEDTLS_AES_DECRYPT ) + { + memcpy( buf, aes_test_ctr_ct[u], len ); + aes_tests = aes_test_ctr_pt[u]; + } + else + { + memcpy( buf, aes_test_ctr_pt[u], len ); + aes_tests = aes_test_ctr_ct[u]; + } + + ret = mbedtls_aes_crypt_ctr( &ctx, len, &offset, nonce_counter, + stream_block, buf, buf ); + if( ret != 0 ) + goto exit; + + if( memcmp( buf, aes_tests, len ) != 0 ) + { + ret = 1; + goto exit; + } + + if( verbose != 0 ) + mbedtls_printf( "passed\n" ); + } + + if( verbose != 0 ) + mbedtls_printf( "\n" ); +#endif /* MBEDTLS_CIPHER_MODE_CTR */ + + ret = 0; + +exit: + if( ret != 0 && verbose != 0 ) + mbedtls_printf( "failed\n" ); + + mbedtls_aes_free( &ctx ); + + return( ret ); +} + +#endif /* MBEDTLS_SELF_TEST */ + +#endif /* MBEDTLS_AES_C */ diff --git a/others/mbedtls/aes.h b/others/mbedtls/aes.h new file mode 100644 index 00000000..dce058d7 --- /dev/null +++ b/others/mbedtls/aes.h @@ -0,0 +1,460 @@ +/** + * \file aes.h + * + * \brief This file contains AES definitions and functions. + * + * The Advanced Encryption Standard (AES) specifies a FIPS-approved + * cryptographic algorithm that can be used to protect electronic + * data. + * + * The AES algorithm is a symmetric block cipher that can + * encrypt and decrypt information. For more information, see + * FIPS Publication 197: Advanced Encryption Standard and + * ISO/IEC 18033-2:2006: Information technology -- Security + * techniques -- Encryption algorithms -- Part 2: Asymmetric + * ciphers. + */ + +/* Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_AES_H +#define MBEDTLS_AES_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#define MBEDTLS_CIPHER_MODE_CBC + +#include +#include + +/* padlock.c and aesni.c rely on these values! */ +#define MBEDTLS_AES_ENCRYPT 1 /**< AES encryption. */ +#define MBEDTLS_AES_DECRYPT 0 /**< AES decryption. */ + +/* Error codes in range 0x0020-0x0022 */ +#define MBEDTLS_ERR_AES_INVALID_KEY_LENGTH -0x0020 /**< Invalid key length. */ +#define MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH -0x0022 /**< Invalid data input length. */ + +/* Error codes in range 0x0021-0x0025 */ +#define MBEDTLS_ERR_AES_BAD_INPUT_DATA -0x0021 /**< Invalid input data. */ +#define MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE -0x0023 /**< Feature not available. For example, an unsupported AES key size. */ +#define MBEDTLS_ERR_AES_HW_ACCEL_FAILED -0x0025 /**< AES hardware accelerator failed. */ + +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) +#define inline __inline +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_AES_ALT) +// Regular implementation +// + +/** + * \brief The AES context-type definition. + */ +typedef struct +{ + int nr; /*!< The number of rounds. */ + uint32_t *rk; /*!< AES round keys. */ + uint32_t buf[68]; /*!< Unaligned data buffer. This buffer can + hold 32 extra Bytes, which can be used for + one of the following purposes: +
  • Alignment if VIA padlock is + used.
  • +
  • Simplifying key expansion in the 256-bit + case by generating an extra round key. +
*/ +} +mbedtls_aes_context; + +#else /* MBEDTLS_AES_ALT */ +#include "aes_alt.h" +#endif /* MBEDTLS_AES_ALT */ + +/** + * \brief This function initializes the specified AES context. + * + * It must be the first API called before using + * the context. + * + * \param ctx The AES context to initialize. + */ +void mbedtls_aes_init( mbedtls_aes_context *ctx ); + +/** + * \brief This function releases and clears the specified AES context. + * + * \param ctx The AES context to clear. + */ +void mbedtls_aes_free( mbedtls_aes_context *ctx ); + +/** + * \brief This function sets the encryption key. + * + * \param ctx The AES context to which the key should be bound. + * \param key The encryption key. + * \param keybits The size of data passed in bits. Valid options are: + *
  • 128 bits
  • + *
  • 192 bits
  • + *
  • 256 bits
+ * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure. + */ +int mbedtls_aes_setkey_enc( mbedtls_aes_context *ctx, const unsigned char *key, + unsigned int keybits ); + +/** + * \brief This function sets the decryption key. + * + * \param ctx The AES context to which the key should be bound. + * \param key The decryption key. + * \param keybits The size of data passed. Valid options are: + *
  • 128 bits
  • + *
  • 192 bits
  • + *
  • 256 bits
+ * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure. + */ +int mbedtls_aes_setkey_dec( mbedtls_aes_context *ctx, const unsigned char *key, + unsigned int keybits ); + +/** + * \brief This function performs an AES single-block encryption or + * decryption operation. + * + * It performs the operation defined in the \p mode parameter + * (encrypt or decrypt), on the input data buffer defined in + * the \p input parameter. + * + * mbedtls_aes_init(), and either mbedtls_aes_setkey_enc() or + * mbedtls_aes_setkey_dec() must be called before the first + * call to this API with the same context. + * + * \param ctx The AES context to use for encryption or decryption. + * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or + * #MBEDTLS_AES_DECRYPT. + * \param input The 16-Byte buffer holding the input data. + * \param output The 16-Byte buffer holding the output data. + + * \return \c 0 on success. + */ +int mbedtls_aes_crypt_ecb( mbedtls_aes_context *ctx, + int mode, + const unsigned char input[16], + unsigned char output[16] ); + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +/** + * \brief This function performs an AES-CBC encryption or decryption operation + * on full blocks. + * + * It performs the operation defined in the \p mode + * parameter (encrypt/decrypt), on the input data buffer defined in + * the \p input parameter. + * + * It can be called as many times as needed, until all the input + * data is processed. mbedtls_aes_init(), and either + * mbedtls_aes_setkey_enc() or mbedtls_aes_setkey_dec() must be called + * before the first call to this API with the same context. + * + * \note This function operates on aligned blocks, that is, the input size + * must be a multiple of the AES block size of 16 Bytes. + * + * \note Upon exit, the content of the IV is updated so that you can + * call the same function again on the next + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If you need to retain the contents of the IV, you should + * either save it manually or use the cipher module instead. + * + * + * \param ctx The AES context to use for encryption or decryption. + * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or + * #MBEDTLS_AES_DECRYPT. + * \param length The length of the input data in Bytes. This must be a + * multiple of the block size (16 Bytes). + * \param iv Initialization vector (updated after use). + * \param input The buffer holding the input data. + * \param output The buffer holding the output data. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH + * on failure. + */ +int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#if defined(MBEDTLS_CIPHER_MODE_CFB) +/** + * \brief This function performs an AES-CFB128 encryption or decryption + * operation. + * + * It performs the operation defined in the \p mode + * parameter (encrypt or decrypt), on the input data buffer + * defined in the \p input parameter. + * + * For CFB, you must set up the context with mbedtls_aes_setkey_enc(), + * regardless of whether you are performing an encryption or decryption + * operation, that is, regardless of the \p mode parameter. This is + * because CFB mode uses the same key schedule for encryption and + * decryption. + * + * \note Upon exit, the content of the IV is updated so that you can + * call the same function again on the next + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If you need to retain the contents of the + * IV, you must either save it manually or use the cipher + * module instead. + * + * + * \param ctx The AES context to use for encryption or decryption. + * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or + * #MBEDTLS_AES_DECRYPT. + * \param length The length of the input data. + * \param iv_off The offset in IV (updated after use). + * \param iv The initialization vector (updated after use). + * \param input The buffer holding the input data. + * \param output The buffer holding the output data. + * + * \return \c 0 on success. + */ +int mbedtls_aes_crypt_cfb128( mbedtls_aes_context *ctx, + int mode, + size_t length, + size_t *iv_off, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); + +/** + * \brief This function performs an AES-CFB8 encryption or decryption + * operation. + * + * It performs the operation defined in the \p mode + * parameter (encrypt/decrypt), on the input data buffer defined + * in the \p input parameter. + * + * Due to the nature of CFB, you must use the same key schedule for + * both encryption and decryption operations. Therefore, you must + * use the context initialized with mbedtls_aes_setkey_enc() for + * both #MBEDTLS_AES_ENCRYPT and #MBEDTLS_AES_DECRYPT. + * + * \note Upon exit, the content of the IV is updated so that you can + * call the same function again on the next + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If you need to retain the contents of the + * IV, you should either save it manually or use the cipher + * module instead. + * + * + * \param ctx The AES context to use for encryption or decryption. + * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or + * #MBEDTLS_AES_DECRYPT + * \param length The length of the input data. + * \param iv The initialization vector (updated after use). + * \param input The buffer holding the input data. + * \param output The buffer holding the output data. + * + * \return \c 0 on success. + */ +int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); +#endif /*MBEDTLS_CIPHER_MODE_CFB */ + +#if defined(MBEDTLS_CIPHER_MODE_CTR) +/** + * \brief This function performs an AES-CTR encryption or decryption + * operation. + * + * This function performs the operation defined in the \p mode + * parameter (encrypt/decrypt), on the input data buffer + * defined in the \p input parameter. + * + * Due to the nature of CTR, you must use the same key schedule + * for both encryption and decryption operations. Therefore, you + * must use the context initialized with mbedtls_aes_setkey_enc() + * for both #MBEDTLS_AES_ENCRYPT and #MBEDTLS_AES_DECRYPT. + * + * \warning You must never reuse a nonce value with the same key. Doing so + * would void the encryption for the two messages encrypted with + * the same nonce and key. + * + * There are two common strategies for managing nonces with CTR: + * + * 1. You can handle everything as a single message processed over + * successive calls to this function. In that case, you want to + * set \p nonce_counter and \p nc_off to 0 for the first call, and + * then preserve the values of \p nonce_counter, \p nc_off and \p + * stream_block across calls to this function as they will be + * updated by this function. + * + * With this strategy, you must not encrypt more than 2**128 + * blocks of data with the same key. + * + * 2. You can encrypt separate messages by dividing the \p + * nonce_counter buffer in two areas: the first one used for a + * per-message nonce, handled by yourself, and the second one + * updated by this function internally. + * + * For example, you might reserve the first 12 bytes for the + * per-message nonce, and the last 4 bytes for internal use. In that + * case, before calling this function on a new message you need to + * set the first 12 bytes of \p nonce_counter to your chosen nonce + * value, the last 4 to 0, and \p nc_off to 0 (which will cause \p + * stream_block to be ignored). That way, you can encrypt at most + * 2**96 messages of up to 2**32 blocks each with the same key. + * + * The per-message nonce (or information sufficient to reconstruct + * it) needs to be communicated with the ciphertext and must be unique. + * The recommended way to ensure uniqueness is to use a message + * counter. An alternative is to generate random nonces, but this + * limits the number of messages that can be securely encrypted: + * for example, with 96-bit random nonces, you should not encrypt + * more than 2**32 messages with the same key. + * + * Note that for both stategies, sizes are measured in blocks and + * that an AES block is 16 bytes. + * + * \warning Upon return, \p stream_block contains sensitive data. Its + * content must not be written to insecure storage and should be + * securely discarded as soon as it's no longer needed. + * + * \param ctx The AES context to use for encryption or decryption. + * \param length The length of the input data. + * \param nc_off The offset in the current \p stream_block, for + * resuming within the current cipher stream. The + * offset pointer should be 0 at the start of a stream. + * \param nonce_counter The 128-bit nonce and counter. + * \param stream_block The saved stream block for resuming. This is + * overwritten by the function. + * \param input The buffer holding the input data. + * \param output The buffer holding the output data. + * + * \return \c 0 on success. + */ +int mbedtls_aes_crypt_ctr( mbedtls_aes_context *ctx, + size_t length, + size_t *nc_off, + unsigned char nonce_counter[16], + unsigned char stream_block[16], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CTR */ + +/** + * \brief Internal AES block encryption function. This is only + * exposed to allow overriding it using + * \c MBEDTLS_AES_ENCRYPT_ALT. + * + * \param ctx The AES context to use for encryption. + * \param input The plaintext block. + * \param output The output (ciphertext) block. + * + * \return \c 0 on success. + */ +int mbedtls_internal_aes_encrypt( mbedtls_aes_context *ctx, + const unsigned char input[16], + unsigned char output[16] ); + +/** + * \brief Internal AES block decryption function. This is only + * exposed to allow overriding it using see + * \c MBEDTLS_AES_DECRYPT_ALT. + * + * \param ctx The AES context to use for decryption. + * \param input The ciphertext block. + * \param output The output (plaintext) block. + * + * \return \c 0 on success. + */ +int mbedtls_internal_aes_decrypt( mbedtls_aes_context *ctx, + const unsigned char input[16], + unsigned char output[16] ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief Deprecated internal AES block encryption function + * without return value. + * + * \deprecated Superseded by mbedtls_aes_encrypt_ext() in 2.5.0. + * + * \param ctx The AES context to use for encryption. + * \param input Plaintext block. + * \param output Output (ciphertext) block. + */ +MBEDTLS_DEPRECATED void mbedtls_aes_encrypt( mbedtls_aes_context *ctx, + const unsigned char input[16], + unsigned char output[16] ); + +/** + * \brief Deprecated internal AES block decryption function + * without return value. + * + * \deprecated Superseded by mbedtls_aes_decrypt_ext() in 2.5.0. + * + * \param ctx The AES context to use for decryption. + * \param input Ciphertext block. + * \param output Output (plaintext) block. + */ +MBEDTLS_DEPRECATED void mbedtls_aes_decrypt( mbedtls_aes_context *ctx, + const unsigned char input[16], + unsigned char output[16] ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +/** + * \brief Checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_aes_self_test( int verbose ); + +#ifdef __cplusplus +} +#endif + +#endif /* aes.h */ diff --git a/others/mbedtls/aesni.c b/others/mbedtls/aesni.c new file mode 100644 index 00000000..062708b0 --- /dev/null +++ b/others/mbedtls/aesni.c @@ -0,0 +1,470 @@ +/* + * AES-NI support functions + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +/* + * [AES-WP] http://software.intel.com/en-us/articles/intel-advanced-encryption-standard-aes-instructions-set + * [CLMUL-WP] http://software.intel.com/en-us/articles/intel-carry-less-multiplication-instruction-and-its-usage-for-computing-the-gcm-mode/ + */ + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_AESNI_C) + +#if defined(__has_feature) +#if __has_feature(memory_sanitizer) +#warning "MBEDTLS_AESNI_C is known to cause spurious error reports with some memory sanitizers as they do not understand the assembly code." +#endif +#endif + +#include "mbedtls/aesni.h" + +#include + +#ifndef asm +#define asm __asm +#endif + +#if defined(MBEDTLS_HAVE_X86_64) + +/* + * AES-NI support detection routine + */ +int mbedtls_aesni_has_support( unsigned int what ) +{ + static int done = 0; + static unsigned int c = 0; + + if( ! done ) + { + asm( "movl $1, %%eax \n\t" + "cpuid \n\t" + : "=c" (c) + : + : "eax", "ebx", "edx" ); + done = 1; + } + + return( ( c & what ) != 0 ); +} + +/* + * Binutils needs to be at least 2.19 to support AES-NI instructions. + * Unfortunately, a lot of users have a lower version now (2014-04). + * Emit bytecode directly in order to support "old" version of gas. + * + * Opcodes from the Intel architecture reference manual, vol. 3. + * We always use registers, so we don't need prefixes for memory operands. + * Operand macros are in gas order (src, dst) as opposed to Intel order + * (dst, src) in order to blend better into the surrounding assembly code. + */ +#define AESDEC ".byte 0x66,0x0F,0x38,0xDE," +#define AESDECLAST ".byte 0x66,0x0F,0x38,0xDF," +#define AESENC ".byte 0x66,0x0F,0x38,0xDC," +#define AESENCLAST ".byte 0x66,0x0F,0x38,0xDD," +#define AESIMC ".byte 0x66,0x0F,0x38,0xDB," +#define AESKEYGENA ".byte 0x66,0x0F,0x3A,0xDF," +#define PCLMULQDQ ".byte 0x66,0x0F,0x3A,0x44," + +#define xmm0_xmm0 "0xC0" +#define xmm0_xmm1 "0xC8" +#define xmm0_xmm2 "0xD0" +#define xmm0_xmm3 "0xD8" +#define xmm0_xmm4 "0xE0" +#define xmm1_xmm0 "0xC1" +#define xmm1_xmm2 "0xD1" + +/* + * AES-NI AES-ECB block en(de)cryption + */ +int mbedtls_aesni_crypt_ecb( mbedtls_aes_context *ctx, + int mode, + const unsigned char input[16], + unsigned char output[16] ) +{ + asm( "movdqu (%3), %%xmm0 \n\t" // load input + "movdqu (%1), %%xmm1 \n\t" // load round key 0 + "pxor %%xmm1, %%xmm0 \n\t" // round 0 + "add $16, %1 \n\t" // point to next round key + "subl $1, %0 \n\t" // normal rounds = nr - 1 + "test %2, %2 \n\t" // mode? + "jz 2f \n\t" // 0 = decrypt + + "1: \n\t" // encryption loop + "movdqu (%1), %%xmm1 \n\t" // load round key + AESENC xmm1_xmm0 "\n\t" // do round + "add $16, %1 \n\t" // point to next round key + "subl $1, %0 \n\t" // loop + "jnz 1b \n\t" + "movdqu (%1), %%xmm1 \n\t" // load round key + AESENCLAST xmm1_xmm0 "\n\t" // last round + "jmp 3f \n\t" + + "2: \n\t" // decryption loop + "movdqu (%1), %%xmm1 \n\t" + AESDEC xmm1_xmm0 "\n\t" // do round + "add $16, %1 \n\t" + "subl $1, %0 \n\t" + "jnz 2b \n\t" + "movdqu (%1), %%xmm1 \n\t" // load round key + AESDECLAST xmm1_xmm0 "\n\t" // last round + + "3: \n\t" + "movdqu %%xmm0, (%4) \n\t" // export output + : + : "r" (ctx->nr), "r" (ctx->rk), "r" (mode), "r" (input), "r" (output) + : "memory", "cc", "xmm0", "xmm1" ); + + + return( 0 ); +} + +/* + * GCM multiplication: c = a times b in GF(2^128) + * Based on [CLMUL-WP] algorithms 1 (with equation 27) and 5. + */ +void mbedtls_aesni_gcm_mult( unsigned char c[16], + const unsigned char a[16], + const unsigned char b[16] ) +{ + unsigned char aa[16], bb[16], cc[16]; + size_t i; + + /* The inputs are in big-endian order, so byte-reverse them */ + for( i = 0; i < 16; i++ ) + { + aa[i] = a[15 - i]; + bb[i] = b[15 - i]; + } + + asm( "movdqu (%0), %%xmm0 \n\t" // a1:a0 + "movdqu (%1), %%xmm1 \n\t" // b1:b0 + + /* + * Caryless multiplication xmm2:xmm1 = xmm0 * xmm1 + * using [CLMUL-WP] algorithm 1 (p. 13). + */ + "movdqa %%xmm1, %%xmm2 \n\t" // copy of b1:b0 + "movdqa %%xmm1, %%xmm3 \n\t" // same + "movdqa %%xmm1, %%xmm4 \n\t" // same + PCLMULQDQ xmm0_xmm1 ",0x00 \n\t" // a0*b0 = c1:c0 + PCLMULQDQ xmm0_xmm2 ",0x11 \n\t" // a1*b1 = d1:d0 + PCLMULQDQ xmm0_xmm3 ",0x10 \n\t" // a0*b1 = e1:e0 + PCLMULQDQ xmm0_xmm4 ",0x01 \n\t" // a1*b0 = f1:f0 + "pxor %%xmm3, %%xmm4 \n\t" // e1+f1:e0+f0 + "movdqa %%xmm4, %%xmm3 \n\t" // same + "psrldq $8, %%xmm4 \n\t" // 0:e1+f1 + "pslldq $8, %%xmm3 \n\t" // e0+f0:0 + "pxor %%xmm4, %%xmm2 \n\t" // d1:d0+e1+f1 + "pxor %%xmm3, %%xmm1 \n\t" // c1+e0+f1:c0 + + /* + * Now shift the result one bit to the left, + * taking advantage of [CLMUL-WP] eq 27 (p. 20) + */ + "movdqa %%xmm1, %%xmm3 \n\t" // r1:r0 + "movdqa %%xmm2, %%xmm4 \n\t" // r3:r2 + "psllq $1, %%xmm1 \n\t" // r1<<1:r0<<1 + "psllq $1, %%xmm2 \n\t" // r3<<1:r2<<1 + "psrlq $63, %%xmm3 \n\t" // r1>>63:r0>>63 + "psrlq $63, %%xmm4 \n\t" // r3>>63:r2>>63 + "movdqa %%xmm3, %%xmm5 \n\t" // r1>>63:r0>>63 + "pslldq $8, %%xmm3 \n\t" // r0>>63:0 + "pslldq $8, %%xmm4 \n\t" // r2>>63:0 + "psrldq $8, %%xmm5 \n\t" // 0:r1>>63 + "por %%xmm3, %%xmm1 \n\t" // r1<<1|r0>>63:r0<<1 + "por %%xmm4, %%xmm2 \n\t" // r3<<1|r2>>62:r2<<1 + "por %%xmm5, %%xmm2 \n\t" // r3<<1|r2>>62:r2<<1|r1>>63 + + /* + * Now reduce modulo the GCM polynomial x^128 + x^7 + x^2 + x + 1 + * using [CLMUL-WP] algorithm 5 (p. 20). + * Currently xmm2:xmm1 holds x3:x2:x1:x0 (already shifted). + */ + /* Step 2 (1) */ + "movdqa %%xmm1, %%xmm3 \n\t" // x1:x0 + "movdqa %%xmm1, %%xmm4 \n\t" // same + "movdqa %%xmm1, %%xmm5 \n\t" // same + "psllq $63, %%xmm3 \n\t" // x1<<63:x0<<63 = stuff:a + "psllq $62, %%xmm4 \n\t" // x1<<62:x0<<62 = stuff:b + "psllq $57, %%xmm5 \n\t" // x1<<57:x0<<57 = stuff:c + + /* Step 2 (2) */ + "pxor %%xmm4, %%xmm3 \n\t" // stuff:a+b + "pxor %%xmm5, %%xmm3 \n\t" // stuff:a+b+c + "pslldq $8, %%xmm3 \n\t" // a+b+c:0 + "pxor %%xmm3, %%xmm1 \n\t" // x1+a+b+c:x0 = d:x0 + + /* Steps 3 and 4 */ + "movdqa %%xmm1,%%xmm0 \n\t" // d:x0 + "movdqa %%xmm1,%%xmm4 \n\t" // same + "movdqa %%xmm1,%%xmm5 \n\t" // same + "psrlq $1, %%xmm0 \n\t" // e1:x0>>1 = e1:e0' + "psrlq $2, %%xmm4 \n\t" // f1:x0>>2 = f1:f0' + "psrlq $7, %%xmm5 \n\t" // g1:x0>>7 = g1:g0' + "pxor %%xmm4, %%xmm0 \n\t" // e1+f1:e0'+f0' + "pxor %%xmm5, %%xmm0 \n\t" // e1+f1+g1:e0'+f0'+g0' + // e0'+f0'+g0' is almost e0+f0+g0, ex\tcept for some missing + // bits carried from d. Now get those\t bits back in. + "movdqa %%xmm1,%%xmm3 \n\t" // d:x0 + "movdqa %%xmm1,%%xmm4 \n\t" // same + "movdqa %%xmm1,%%xmm5 \n\t" // same + "psllq $63, %%xmm3 \n\t" // d<<63:stuff + "psllq $62, %%xmm4 \n\t" // d<<62:stuff + "psllq $57, %%xmm5 \n\t" // d<<57:stuff + "pxor %%xmm4, %%xmm3 \n\t" // d<<63+d<<62:stuff + "pxor %%xmm5, %%xmm3 \n\t" // missing bits of d:stuff + "psrldq $8, %%xmm3 \n\t" // 0:missing bits of d + "pxor %%xmm3, %%xmm0 \n\t" // e1+f1+g1:e0+f0+g0 + "pxor %%xmm1, %%xmm0 \n\t" // h1:h0 + "pxor %%xmm2, %%xmm0 \n\t" // x3+h1:x2+h0 + + "movdqu %%xmm0, (%2) \n\t" // done + : + : "r" (aa), "r" (bb), "r" (cc) + : "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5" ); + + /* Now byte-reverse the outputs */ + for( i = 0; i < 16; i++ ) + c[i] = cc[15 - i]; + + return; +} + +/* + * Compute decryption round keys from encryption round keys + */ +void mbedtls_aesni_inverse_key( unsigned char *invkey, + const unsigned char *fwdkey, int nr ) +{ + unsigned char *ik = invkey; + const unsigned char *fk = fwdkey + 16 * nr; + + memcpy( ik, fk, 16 ); + + for( fk -= 16, ik += 16; fk > fwdkey; fk -= 16, ik += 16 ) + asm( "movdqu (%0), %%xmm0 \n\t" + AESIMC xmm0_xmm0 "\n\t" + "movdqu %%xmm0, (%1) \n\t" + : + : "r" (fk), "r" (ik) + : "memory", "xmm0" ); + + memcpy( ik, fk, 16 ); +} + +/* + * Key expansion, 128-bit case + */ +static void aesni_setkey_enc_128( unsigned char *rk, + const unsigned char *key ) +{ + asm( "movdqu (%1), %%xmm0 \n\t" // copy the original key + "movdqu %%xmm0, (%0) \n\t" // as round key 0 + "jmp 2f \n\t" // skip auxiliary routine + + /* + * Finish generating the next round key. + * + * On entry xmm0 is r3:r2:r1:r0 and xmm1 is X:stuff:stuff:stuff + * with X = rot( sub( r3 ) ) ^ RCON. + * + * On exit, xmm0 is r7:r6:r5:r4 + * with r4 = X + r0, r5 = r4 + r1, r6 = r5 + r2, r7 = r6 + r3 + * and those are written to the round key buffer. + */ + "1: \n\t" + "pshufd $0xff, %%xmm1, %%xmm1 \n\t" // X:X:X:X + "pxor %%xmm0, %%xmm1 \n\t" // X+r3:X+r2:X+r1:r4 + "pslldq $4, %%xmm0 \n\t" // r2:r1:r0:0 + "pxor %%xmm0, %%xmm1 \n\t" // X+r3+r2:X+r2+r1:r5:r4 + "pslldq $4, %%xmm0 \n\t" // etc + "pxor %%xmm0, %%xmm1 \n\t" + "pslldq $4, %%xmm0 \n\t" + "pxor %%xmm1, %%xmm0 \n\t" // update xmm0 for next time! + "add $16, %0 \n\t" // point to next round key + "movdqu %%xmm0, (%0) \n\t" // write it + "ret \n\t" + + /* Main "loop" */ + "2: \n\t" + AESKEYGENA xmm0_xmm1 ",0x01 \n\tcall 1b \n\t" + AESKEYGENA xmm0_xmm1 ",0x02 \n\tcall 1b \n\t" + AESKEYGENA xmm0_xmm1 ",0x04 \n\tcall 1b \n\t" + AESKEYGENA xmm0_xmm1 ",0x08 \n\tcall 1b \n\t" + AESKEYGENA xmm0_xmm1 ",0x10 \n\tcall 1b \n\t" + AESKEYGENA xmm0_xmm1 ",0x20 \n\tcall 1b \n\t" + AESKEYGENA xmm0_xmm1 ",0x40 \n\tcall 1b \n\t" + AESKEYGENA xmm0_xmm1 ",0x80 \n\tcall 1b \n\t" + AESKEYGENA xmm0_xmm1 ",0x1B \n\tcall 1b \n\t" + AESKEYGENA xmm0_xmm1 ",0x36 \n\tcall 1b \n\t" + : + : "r" (rk), "r" (key) + : "memory", "cc", "0" ); +} + +/* + * Key expansion, 192-bit case + */ +static void aesni_setkey_enc_192( unsigned char *rk, + const unsigned char *key ) +{ + asm( "movdqu (%1), %%xmm0 \n\t" // copy original round key + "movdqu %%xmm0, (%0) \n\t" + "add $16, %0 \n\t" + "movq 16(%1), %%xmm1 \n\t" + "movq %%xmm1, (%0) \n\t" + "add $8, %0 \n\t" + "jmp 2f \n\t" // skip auxiliary routine + + /* + * Finish generating the next 6 quarter-keys. + * + * On entry xmm0 is r3:r2:r1:r0, xmm1 is stuff:stuff:r5:r4 + * and xmm2 is stuff:stuff:X:stuff with X = rot( sub( r3 ) ) ^ RCON. + * + * On exit, xmm0 is r9:r8:r7:r6 and xmm1 is stuff:stuff:r11:r10 + * and those are written to the round key buffer. + */ + "1: \n\t" + "pshufd $0x55, %%xmm2, %%xmm2 \n\t" // X:X:X:X + "pxor %%xmm0, %%xmm2 \n\t" // X+r3:X+r2:X+r1:r4 + "pslldq $4, %%xmm0 \n\t" // etc + "pxor %%xmm0, %%xmm2 \n\t" + "pslldq $4, %%xmm0 \n\t" + "pxor %%xmm0, %%xmm2 \n\t" + "pslldq $4, %%xmm0 \n\t" + "pxor %%xmm2, %%xmm0 \n\t" // update xmm0 = r9:r8:r7:r6 + "movdqu %%xmm0, (%0) \n\t" + "add $16, %0 \n\t" + "pshufd $0xff, %%xmm0, %%xmm2 \n\t" // r9:r9:r9:r9 + "pxor %%xmm1, %%xmm2 \n\t" // stuff:stuff:r9+r5:r10 + "pslldq $4, %%xmm1 \n\t" // r2:r1:r0:0 + "pxor %%xmm2, %%xmm1 \n\t" // xmm1 = stuff:stuff:r11:r10 + "movq %%xmm1, (%0) \n\t" + "add $8, %0 \n\t" + "ret \n\t" + + "2: \n\t" + AESKEYGENA xmm1_xmm2 ",0x01 \n\tcall 1b \n\t" + AESKEYGENA xmm1_xmm2 ",0x02 \n\tcall 1b \n\t" + AESKEYGENA xmm1_xmm2 ",0x04 \n\tcall 1b \n\t" + AESKEYGENA xmm1_xmm2 ",0x08 \n\tcall 1b \n\t" + AESKEYGENA xmm1_xmm2 ",0x10 \n\tcall 1b \n\t" + AESKEYGENA xmm1_xmm2 ",0x20 \n\tcall 1b \n\t" + AESKEYGENA xmm1_xmm2 ",0x40 \n\tcall 1b \n\t" + AESKEYGENA xmm1_xmm2 ",0x80 \n\tcall 1b \n\t" + + : + : "r" (rk), "r" (key) + : "memory", "cc", "0" ); +} + +/* + * Key expansion, 256-bit case + */ +static void aesni_setkey_enc_256( unsigned char *rk, + const unsigned char *key ) +{ + asm( "movdqu (%1), %%xmm0 \n\t" + "movdqu %%xmm0, (%0) \n\t" + "add $16, %0 \n\t" + "movdqu 16(%1), %%xmm1 \n\t" + "movdqu %%xmm1, (%0) \n\t" + "jmp 2f \n\t" // skip auxiliary routine + + /* + * Finish generating the next two round keys. + * + * On entry xmm0 is r3:r2:r1:r0, xmm1 is r7:r6:r5:r4 and + * xmm2 is X:stuff:stuff:stuff with X = rot( sub( r7 )) ^ RCON + * + * On exit, xmm0 is r11:r10:r9:r8 and xmm1 is r15:r14:r13:r12 + * and those have been written to the output buffer. + */ + "1: \n\t" + "pshufd $0xff, %%xmm2, %%xmm2 \n\t" + "pxor %%xmm0, %%xmm2 \n\t" + "pslldq $4, %%xmm0 \n\t" + "pxor %%xmm0, %%xmm2 \n\t" + "pslldq $4, %%xmm0 \n\t" + "pxor %%xmm0, %%xmm2 \n\t" + "pslldq $4, %%xmm0 \n\t" + "pxor %%xmm2, %%xmm0 \n\t" + "add $16, %0 \n\t" + "movdqu %%xmm0, (%0) \n\t" + + /* Set xmm2 to stuff:Y:stuff:stuff with Y = subword( r11 ) + * and proceed to generate next round key from there */ + AESKEYGENA xmm0_xmm2 ",0x00 \n\t" + "pshufd $0xaa, %%xmm2, %%xmm2 \n\t" + "pxor %%xmm1, %%xmm2 \n\t" + "pslldq $4, %%xmm1 \n\t" + "pxor %%xmm1, %%xmm2 \n\t" + "pslldq $4, %%xmm1 \n\t" + "pxor %%xmm1, %%xmm2 \n\t" + "pslldq $4, %%xmm1 \n\t" + "pxor %%xmm2, %%xmm1 \n\t" + "add $16, %0 \n\t" + "movdqu %%xmm1, (%0) \n\t" + "ret \n\t" + + /* + * Main "loop" - Generating one more key than necessary, + * see definition of mbedtls_aes_context.buf + */ + "2: \n\t" + AESKEYGENA xmm1_xmm2 ",0x01 \n\tcall 1b \n\t" + AESKEYGENA xmm1_xmm2 ",0x02 \n\tcall 1b \n\t" + AESKEYGENA xmm1_xmm2 ",0x04 \n\tcall 1b \n\t" + AESKEYGENA xmm1_xmm2 ",0x08 \n\tcall 1b \n\t" + AESKEYGENA xmm1_xmm2 ",0x10 \n\tcall 1b \n\t" + AESKEYGENA xmm1_xmm2 ",0x20 \n\tcall 1b \n\t" + AESKEYGENA xmm1_xmm2 ",0x40 \n\tcall 1b \n\t" + : + : "r" (rk), "r" (key) + : "memory", "cc", "0" ); +} + +/* + * Key expansion, wrapper + */ +int mbedtls_aesni_setkey_enc( unsigned char *rk, + const unsigned char *key, + size_t bits ) +{ + switch( bits ) + { + case 128: aesni_setkey_enc_128( rk, key ); break; + case 192: aesni_setkey_enc_192( rk, key ); break; + case 256: aesni_setkey_enc_256( rk, key ); break; + default : return( MBEDTLS_ERR_AES_INVALID_KEY_LENGTH ); + } + + return( 0 ); +} + +#endif /* MBEDTLS_HAVE_X86_64 */ + +#endif /* MBEDTLS_AESNI_C */ diff --git a/others/mbedtls/aesni.h b/others/mbedtls/aesni.h new file mode 100644 index 00000000..746baa0e --- /dev/null +++ b/others/mbedtls/aesni.h @@ -0,0 +1,112 @@ +/** + * \file aesni.h + * + * \brief AES-NI for hardware AES acceleration on some Intel processors + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_AESNI_H +#define MBEDTLS_AESNI_H + +#include "aes.h" + +#define MBEDTLS_AESNI_AES 0x02000000u +#define MBEDTLS_AESNI_CLMUL 0x00000002u + +#if defined(MBEDTLS_HAVE_ASM) && defined(__GNUC__) && \ + ( defined(__amd64__) || defined(__x86_64__) ) && \ + ! defined(MBEDTLS_HAVE_X86_64) +#define MBEDTLS_HAVE_X86_64 +#endif + +#if defined(MBEDTLS_HAVE_X86_64) + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief AES-NI features detection routine + * + * \param what The feature to detect + * (MBEDTLS_AESNI_AES or MBEDTLS_AESNI_CLMUL) + * + * \return 1 if CPU has support for the feature, 0 otherwise + */ +int mbedtls_aesni_has_support( unsigned int what ); + +/** + * \brief AES-NI AES-ECB block en(de)cryption + * + * \param ctx AES context + * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT + * \param input 16-byte input block + * \param output 16-byte output block + * + * \return 0 on success (cannot fail) + */ +int mbedtls_aesni_crypt_ecb( mbedtls_aes_context *ctx, + int mode, + const unsigned char input[16], + unsigned char output[16] ); + +/** + * \brief GCM multiplication: c = a * b in GF(2^128) + * + * \param c Result + * \param a First operand + * \param b Second operand + * + * \note Both operands and result are bit strings interpreted as + * elements of GF(2^128) as per the GCM spec. + */ +void mbedtls_aesni_gcm_mult( unsigned char c[16], + const unsigned char a[16], + const unsigned char b[16] ); + +/** + * \brief Compute decryption round keys from encryption round keys + * + * \param invkey Round keys for the equivalent inverse cipher + * \param fwdkey Original round keys (for encryption) + * \param nr Number of rounds (that is, number of round keys minus one) + */ +void mbedtls_aesni_inverse_key( unsigned char *invkey, + const unsigned char *fwdkey, int nr ); + +/** + * \brief Perform key expansion (for encryption) + * + * \param rk Destination buffer where the round keys are written + * \param key Encryption key + * \param bits Key size in bits (must be 128, 192 or 256) + * + * \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_KEY_LENGTH + */ +int mbedtls_aesni_setkey_enc( unsigned char *rk, + const unsigned char *key, + size_t bits ); + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_HAVE_X86_64 */ + +#endif /* MBEDTLS_AESNI_H */ diff --git a/others/mbedtls/padlock.h b/others/mbedtls/padlock.h new file mode 100644 index 00000000..677936eb --- /dev/null +++ b/others/mbedtls/padlock.h @@ -0,0 +1,108 @@ +/** + * \file padlock.h + * + * \brief VIA PadLock ACE for HW encryption/decryption supported by some + * processors + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_PADLOCK_H +#define MBEDTLS_PADLOCK_H + +#include "aes.h" + +#define MBEDTLS_ERR_PADLOCK_DATA_MISALIGNED -0x0030 /**< Input data should be aligned. */ + +#if defined(__has_feature) +#if __has_feature(address_sanitizer) +#define MBEDTLS_HAVE_ASAN +#endif +#endif + +/* Some versions of ASan result in errors about not enough registers */ +#if defined(MBEDTLS_HAVE_ASM) && defined(__GNUC__) && defined(__i386__) && \ + !defined(MBEDTLS_HAVE_ASAN) + +#ifndef MBEDTLS_HAVE_X86 +#define MBEDTLS_HAVE_X86 +#endif + +#include + +#define MBEDTLS_PADLOCK_RNG 0x000C +#define MBEDTLS_PADLOCK_ACE 0x00C0 +#define MBEDTLS_PADLOCK_PHE 0x0C00 +#define MBEDTLS_PADLOCK_PMM 0x3000 + +#define MBEDTLS_PADLOCK_ALIGN16(x) (uint32_t *) (16 + ((int32_t) x & ~15)) + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief PadLock detection routine + * + * \param feature The feature to detect + * + * \return 1 if CPU has support for the feature, 0 otherwise + */ +int mbedtls_padlock_has_support( int feature ); + +/** + * \brief PadLock AES-ECB block en(de)cryption + * + * \param ctx AES context + * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT + * \param input 16-byte input block + * \param output 16-byte output block + * + * \return 0 if success, 1 if operation failed + */ +int mbedtls_padlock_xcryptecb( mbedtls_aes_context *ctx, + int mode, + const unsigned char input[16], + unsigned char output[16] ); + +/** + * \brief PadLock AES-CBC buffer en(de)cryption + * + * \param ctx AES context + * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT + * \param length length of the input data + * \param iv initialization vector (updated after use) + * \param input buffer holding the input data + * \param output buffer holding the output data + * + * \return 0 if success, 1 if operation failed + */ +int mbedtls_padlock_xcryptcbc( mbedtls_aes_context *ctx, + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); + +#ifdef __cplusplus +} +#endif + +#endif /* HAVE_X86 */ + +#endif /* padlock.h */ diff --git a/others/mbedtls/platform_util.c b/others/mbedtls/platform_util.c new file mode 100644 index 00000000..1a57de93 --- /dev/null +++ b/others/mbedtls/platform_util.c @@ -0,0 +1,67 @@ +/* + * Common and shared functions used by multiple modules in the Mbed TLS + * library. + * + * Copyright (C) 2018, Arm Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/platform_util.h" + +#include +#include + +#if !defined(MBEDTLS_PLATFORM_ZEROIZE_ALT) +/* + * This implementation should never be optimized out by the compiler + * + * This implementation for mbedtls_platform_zeroize() was inspired from Colin + * Percival's blog article at: + * + * http://www.daemonology.net/blog/2014-09-04-how-to-zero-a-buffer.html + * + * It uses a volatile function pointer to the standard memset(). Because the + * pointer is volatile the compiler expects it to change at + * any time and will not optimize out the call that could potentially perform + * other operations on the input buffer instead of just setting it to 0. + * Nevertheless, as pointed out by davidtgoldblatt on Hacker News + * (refer to http://www.daemonology.net/blog/2014-09-05-erratum.html for + * details), optimizations of the following form are still possible: + * + * if( memset_func != memset ) + * memset_func( buf, 0, len ); + * + * Note that it is extremely difficult to guarantee that + * mbedtls_platform_zeroize() will not be optimized out by aggressive compilers + * in a portable way. For this reason, Mbed TLS also provides the configuration + * option MBEDTLS_PLATFORM_ZEROIZE_ALT, which allows users to configure + * mbedtls_platform_zeroize() to use a suitable implementation for their + * platform and needs. + */ +static void * (* const volatile memset_func)( void *, int, size_t ) = memset; + +void mbedtls_platform_zeroize( void *buf, size_t len ) +{ + memset_func( buf, 0, len ); +} +#endif /* MBEDTLS_PLATFORM_ZEROIZE_ALT */ diff --git a/others/mbedtls/platform_util.h b/others/mbedtls/platform_util.h new file mode 100644 index 00000000..84f0732e --- /dev/null +++ b/others/mbedtls/platform_util.h @@ -0,0 +1,62 @@ +/** + * \file platform_util.h + * + * \brief Common and shared functions used by multiple modules in the Mbed TLS + * library. + */ +/* + * Copyright (C) 2018, Arm Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_PLATFORM_UTIL_H +#define MBEDTLS_PLATFORM_UTIL_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Securely zeroize a buffer + * + * The function is meant to wipe the data contained in a buffer so + * that it can no longer be recovered even if the program memory + * is later compromised. Call this function on sensitive data + * stored on the stack before returning from a function, and on + * sensitive data stored on the heap before freeing the heap + * object. + * + * It is extremely difficult to guarantee that calls to + * mbedtls_platform_zeroize() are not removed by aggressive + * compiler optimizations in a portable way. For this reason, Mbed + * TLS provides the configuration option + * MBEDTLS_PLATFORM_ZEROIZE_ALT, which allows users to configure + * mbedtls_platform_zeroize() to use a suitable implementation for + * their platform and needs + * + * \param buf Buffer to be zeroized + * \param len Length of the buffer in bytes + * + */ +void mbedtls_platform_zeroize( void *buf, size_t len ); + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_PLATFORM_UTIL_H */ diff --git a/src/parser/location.hh b/src/parser/location.hh index 1f8c13be..49c002be 100644 --- a/src/parser/location.hh +++ b/src/parser/location.hh @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.1. +// A Bison parser, made by GNU Bison 3.2. // Locations for Bison parsers in C++ @@ -38,11 +38,144 @@ #ifndef YY_YY_LOCATION_HH_INCLUDED # define YY_YY_LOCATION_HH_INCLUDED -# include "position.hh" +# include // std::max +# include +# include + +# ifndef YY_NULLPTR +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# else +# define YY_NULLPTR ((void*)0) +# endif +# endif namespace yy { -#line 46 "location.hh" // location.cc:290 +#line 60 "location.hh" // location.cc:339 + /// Abstract a position. + class position + { + public: + /// Construct a position. + explicit position (std::string* f = YY_NULLPTR, + unsigned l = 1u, + unsigned c = 1u) + : filename (f) + , line (l) + , column (c) + {} + + + /// Initialization. + void initialize (std::string* fn = YY_NULLPTR, + unsigned l = 1u, + unsigned c = 1u) + { + filename = fn; + line = l; + column = c; + } + + /** \name Line and Column related manipulators + ** \{ */ + /// (line related) Advance to the COUNT next lines. + void lines (int count = 1) + { + if (count) + { + column = 1u; + line = add_ (line, count, 1); + } + } + + /// (column related) Advance to the COUNT next columns. + void columns (int count = 1) + { + column = add_ (column, count, 1); + } + /** \} */ + + /// File name to which this position refers. + std::string* filename; + /// Current line number. + unsigned line; + /// Current column number. + unsigned column; + + private: + /// Compute max (min, lhs+rhs). + static unsigned add_ (unsigned lhs, int rhs, int min) + { + return static_cast (std::max (min, + static_cast (lhs) + rhs)); + } + }; + + /// Add \a width columns, in place. + inline position& + operator+= (position& res, int width) + { + res.columns (width); + return res; + } + + /// Add \a width columns. + inline position + operator+ (position res, int width) + { + return res += width; + } + + /// Subtract \a width columns, in place. + inline position& + operator-= (position& res, int width) + { + return res += -width; + } + + /// Subtract \a width columns. + inline position + operator- (position res, int width) + { + return res -= width; + } + + /// Compare two position objects. + inline bool + operator== (const position& pos1, const position& pos2) + { + return (pos1.line == pos2.line + && pos1.column == pos2.column + && (pos1.filename == pos2.filename + || (pos1.filename && pos2.filename + && *pos1.filename == *pos2.filename))); + } + + /// Compare two position objects. + inline bool + operator!= (const position& pos1, const position& pos2) + { + return !(pos1 == pos2); + } + + /** \brief Intercept output stream redirection. + ** \param ostr the destination output stream + ** \param pos a reference to the position to redirect + */ + template + std::basic_ostream& + operator<< (std::basic_ostream& ostr, const position& pos) + { + if (pos.filename) + ostr << *pos.filename << ':'; + return ostr << pos.line << '.' << pos.column; + } + /// Abstract a location. class location { @@ -185,5 +318,5 @@ namespace yy { } // yy -#line 189 "location.hh" // location.cc:290 +#line 322 "location.hh" // location.cc:339 #endif // !YY_YY_LOCATION_HH_INCLUDED diff --git a/src/parser/position.hh b/src/parser/position.hh index 141a2583..8d071218 100644 --- a/src/parser/position.hh +++ b/src/parser/position.hh @@ -1,177 +1,11 @@ -// A Bison parser, made by GNU Bison 3.1. +// A Bison parser, made by GNU Bison 3.2. -// Positions for Bison parsers in C++ +// Starting with Bison 3.2, this file is useless: the structure it +// used to define is now defined in "location.hh". +// +// To get rid of this file: +// 1. add 'require "3.2"' (or newer) to your grammar file +// 2. remove references to this file from your build system +// 3. if you used to include it, include "location.hh" instead. -// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc. - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -// As a special exception, you may create a larger work that contains -// part or all of the Bison parser skeleton and distribute that work -// under terms of your choice, so long as that work isn't itself a -// parser generator using the skeleton or a modified version thereof -// as a parser skeleton. Alternatively, if you modify or redistribute -// the parser skeleton itself, you may (at your option) remove this -// special exception, which will cause the skeleton and the resulting -// Bison output files to be licensed under the GNU General Public -// License without this special exception. - -// This special exception was added by the Free Software Foundation in -// version 2.2 of Bison. - -/** - ** \file position.hh - ** Define the yy::position class. - */ - -#ifndef YY_YY_POSITION_HH_INCLUDED -# define YY_YY_POSITION_HH_INCLUDED - -# include // std::max -# include -# include - -# ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# endif - - -namespace yy { -#line 56 "position.hh" // location.cc:290 - /// Abstract a position. - class position - { - public: - /// Construct a position. - explicit position (std::string* f = YY_NULLPTR, - unsigned l = 1u, - unsigned c = 1u) - : filename (f) - , line (l) - , column (c) - {} - - - /// Initialization. - void initialize (std::string* fn = YY_NULLPTR, - unsigned l = 1u, - unsigned c = 1u) - { - filename = fn; - line = l; - column = c; - } - - /** \name Line and Column related manipulators - ** \{ */ - /// (line related) Advance to the COUNT next lines. - void lines (int count = 1) - { - if (count) - { - column = 1u; - line = add_ (line, count, 1); - } - } - - /// (column related) Advance to the COUNT next columns. - void columns (int count = 1) - { - column = add_ (column, count, 1); - } - /** \} */ - - /// File name to which this position refers. - std::string* filename; - /// Current line number. - unsigned line; - /// Current column number. - unsigned column; - - private: - /// Compute max(min, lhs+rhs). - static unsigned add_ (unsigned lhs, int rhs, int min) - { - return static_cast(std::max(min, static_cast(lhs) + rhs)); - } - }; - - /// Add \a width columns, in place. - inline position& - operator+= (position& res, int width) - { - res.columns (width); - return res; - } - - /// Add \a width columns. - inline position - operator+ (position res, int width) - { - return res += width; - } - - /// Subtract \a width columns, in place. - inline position& - operator-= (position& res, int width) - { - return res += -width; - } - - /// Subtract \a width columns. - inline position - operator- (position res, int width) - { - return res -= width; - } - - /// Compare two position objects. - inline bool - operator== (const position& pos1, const position& pos2) - { - return (pos1.line == pos2.line - && pos1.column == pos2.column - && (pos1.filename == pos2.filename - || (pos1.filename && pos2.filename - && *pos1.filename == *pos2.filename))); - } - - /// Compare two position objects. - inline bool - operator!= (const position& pos1, const position& pos2) - { - return !(pos1 == pos2); - } - - /** \brief Intercept output stream redirection. - ** \param ostr the destination output stream - ** \param pos a reference to the position to redirect - */ - template - std::basic_ostream& - operator<< (std::basic_ostream& ostr, const position& pos) - { - if (pos.filename) - ostr << *pos.filename << ':'; - return ostr << pos.line << '.' << pos.column; - } - - -} // yy -#line 177 "position.hh" // location.cc:290 -#endif // !YY_YY_POSITION_HH_INCLUDED +#include "location.hh" diff --git a/src/parser/seclang-parser.cc b/src/parser/seclang-parser.cc index 10ee627a..e3d16afe 100644 --- a/src/parser/seclang-parser.cc +++ b/src/parser/seclang-parser.cc @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.1. +// A Bison parser, made by GNU Bison 3.2. // Skeleton implementation for Bison LALR(1) parsers in C++ @@ -30,30 +30,22 @@ // This special exception was added by the Free Software Foundation in // version 2.2 of Bison. +// Undocumented macros, especially those whose name start with YY_, +// are private implementation details. Do not rely on them. + -// First part of user declarations. -#line 37 "seclang-parser.cc" // lalr1.cc:407 -# ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# endif #include "seclang-parser.hh" -// User implementation prologue. -#line 51 "seclang-parser.cc" // lalr1.cc:415 // Unqualified %code blocks. -#line 361 "seclang-parser.yy" // lalr1.cc:416 +#line 361 "seclang-parser.yy" // lalr1.cc:437 #include "src/parser/driver.h" -#line 57 "seclang-parser.cc" // lalr1.cc:416 +#line 49 "seclang-parser.cc" // lalr1.cc:437 #ifndef YY_ @@ -148,7 +140,7 @@ namespace yy { -#line 152 "seclang-parser.cc" // lalr1.cc:491 +#line 144 "seclang-parser.cc" // lalr1.cc:512 /* Return YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is @@ -246,8 +238,8 @@ namespace yy { seclang_parser::stack_symbol_type::stack_symbol_type () {} - seclang_parser::stack_symbol_type::stack_symbol_type (const stack_symbol_type& that) - : super_type (that.state, that.location) + seclang_parser::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that) + : super_type (YY_MOVE (that.state), YY_MOVE (that.location)) { switch (that.type_get ()) { @@ -447,46 +439,50 @@ namespace yy { case 337: // "VARIABLE" case 338: // "Dictionary element" case 339: // "Dictionary element, selected by regexp" - value.copy< std::string > (that.value); + value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value)); break; case 346: // op case 347: // op_before_init - value.copy< std::unique_ptr > (that.value); + value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value)); break; case 355: // run_time_string - value.copy< std::unique_ptr > (that.value); + value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value)); break; case 352: // var - value.copy< std::unique_ptr > (that.value); + value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value)); break; case 353: // act case 354: // setvar_action - value.copy< std::unique_ptr > (that.value); + value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value)); break; case 349: // variables case 350: // variables_pre_process case 351: // variables_may_be_quoted - value.copy< std::unique_ptr > > > (that.value); + value.YY_MOVE_OR_COPY< std::unique_ptr > > > (YY_MOVE (that.value)); break; case 344: // actions case 345: // actions_may_quoted - value.copy< std::unique_ptr > > > (that.value); + value.YY_MOVE_OR_COPY< std::unique_ptr > > > (YY_MOVE (that.value)); break; default: break; } +#if defined __cplusplus && 201103L <= __cplusplus + // that is emptied. + that.state = empty_state; +#endif } - seclang_parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that) - : super_type (s, that.location) + seclang_parser::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that) + : super_type (s, YY_MOVE (that.location)) { switch (that.type_get ()) { @@ -685,6 +681,249 @@ namespace yy { case 336: // "RUN_TIME_VAR_TIME_YEAR" case 337: // "VARIABLE" case 338: // "Dictionary element" + case 339: // "Dictionary element, selected by regexp" + value.move< std::string > (YY_MOVE (that.value)); + break; + + case 346: // op + case 347: // op_before_init + value.move< std::unique_ptr > (YY_MOVE (that.value)); + break; + + case 355: // run_time_string + value.move< std::unique_ptr > (YY_MOVE (that.value)); + break; + + case 352: // var + value.move< std::unique_ptr > (YY_MOVE (that.value)); + break; + + case 353: // act + case 354: // setvar_action + value.move< std::unique_ptr > (YY_MOVE (that.value)); + break; + + case 349: // variables + case 350: // variables_pre_process + case 351: // variables_may_be_quoted + value.move< std::unique_ptr > > > (YY_MOVE (that.value)); + break; + + case 344: // actions + case 345: // actions_may_quoted + value.move< std::unique_ptr > > > (YY_MOVE (that.value)); + break; + + default: + break; + } + + // that is emptied. + that.type = empty_symbol; + } + +#if defined __cplusplus && __cplusplus < 201103L + seclang_parser::stack_symbol_type& + seclang_parser::stack_symbol_type::operator= (stack_symbol_type& that) + { + state = that.state; + switch (that.type_get ()) + { + case 144: // "Accuracy" + case 145: // "Allow" + case 146: // "Append" + case 147: // "AuditLog" + case 148: // "Block" + case 149: // "Capture" + case 150: // "Chain" + case 151: // "ACTION_CTL_AUDIT_ENGINE" + case 152: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 153: // "ACTION_CTL_BDY_JSON" + case 154: // "ACTION_CTL_BDY_XML" + case 155: // "ACTION_CTL_BDY_URLENCODED" + case 156: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 157: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 158: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 159: // "ACTION_CTL_RULE_REMOVE_BY_TAG" + case 160: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 161: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 162: // "Deny" + case 163: // "DeprecateVar" + case 164: // "Drop" + case 165: // "Exec" + case 166: // "ExpireVar" + case 167: // "Id" + case 168: // "InitCol" + case 169: // "Log" + case 170: // "LogData" + case 171: // "Maturity" + case 172: // "Msg" + case 173: // "MultiMatch" + case 174: // "NoAuditLog" + case 175: // "NoLog" + case 176: // "Pass" + case 177: // "Pause" + case 178: // "Phase" + case 179: // "Prepend" + case 180: // "Proxy" + case 181: // "Redirect" + case 182: // "Rev" + case 183: // "SanitiseArg" + case 184: // "SanitiseMatched" + case 185: // "SanitiseMatchedBytes" + case 186: // "SanitiseRequestHeader" + case 187: // "SanitiseResponseHeader" + case 188: // "SetEnv" + case 189: // "SetRsc" + case 190: // "SetSid" + case 191: // "SetUID" + case 192: // "Severity" + case 193: // "Skip" + case 194: // "SkipAfter" + case 195: // "Status" + case 196: // "Tag" + case 197: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" + case 198: // "ACTION_TRANSFORMATION_BASE_64_DECODE" + case 199: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" + case 200: // "ACTION_TRANSFORMATION_CMD_LINE" + case 201: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 202: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 203: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" + case 204: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 205: // "ACTION_TRANSFORMATION_HEX_DECODE" + case 206: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 207: // "ACTION_TRANSFORMATION_JS_DECODE" + case 208: // "ACTION_TRANSFORMATION_LENGTH" + case 209: // "ACTION_TRANSFORMATION_LOWERCASE" + case 210: // "ACTION_TRANSFORMATION_MD5" + case 211: // "ACTION_TRANSFORMATION_NONE" + case 212: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 213: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 214: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 215: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 216: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 217: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 218: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 219: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 220: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 221: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 222: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 223: // "ACTION_TRANSFORMATION_SHA1" + case 224: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 225: // "ACTION_TRANSFORMATION_TRIM" + case 226: // "ACTION_TRANSFORMATION_TRIM_LEFT" + case 227: // "ACTION_TRANSFORMATION_TRIM_RIGHT" + case 228: // "ACTION_TRANSFORMATION_UPPERCASE" + case 229: // "ACTION_TRANSFORMATION_URL_ENCODE" + case 230: // "ACTION_TRANSFORMATION_URL_DECODE" + case 231: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 232: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 233: // "Ver" + case 234: // "xmlns" + case 235: // "CONFIG_COMPONENT_SIG" + case 236: // "CONFIG_CONN_ENGINE" + case 237: // "CONFIG_SEC_ARGUMENT_SEPARATOR" + case 238: // "CONFIG_SEC_WEB_APP_ID" + case 239: // "CONFIG_SEC_SERVER_SIG" + case 240: // "CONFIG_DIR_AUDIT_DIR" + case 241: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 242: // "CONFIG_DIR_AUDIT_ENG" + case 243: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 244: // "CONFIG_DIR_AUDIT_LOG" + case 245: // "CONFIG_DIR_AUDIT_LOG2" + case 246: // "CONFIG_DIR_AUDIT_LOG_P" + case 247: // "CONFIG_DIR_AUDIT_STS" + case 248: // "CONFIG_DIR_AUDIT_TPE" + case 249: // "CONFIG_DIR_DEBUG_LOG" + case 250: // "CONFIG_DIR_DEBUG_LVL" + case 251: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" + case 252: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" + case 253: // "CONFIG_SEC_HASH_ENGINE" + case 254: // "CONFIG_SEC_HASH_KEY" + case 255: // "CONFIG_SEC_HASH_PARAM" + case 256: // "CONFIG_SEC_HASH_METHOD_RX" + case 257: // "CONFIG_SEC_HASH_METHOD_PM" + case 258: // "CONFIG_SEC_CHROOT_DIR" + case 259: // "CONFIG_DIR_GEO_DB" + case 260: // "CONFIG_DIR_GSB_DB" + case 261: // "CONFIG_SEC_GUARDIAN_LOG" + case 262: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 263: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 264: // "CONFIG_SEC_CONN_R_STATE_LIMIT" + case 265: // "CONFIG_SEC_CONN_W_STATE_LIMIT" + case 266: // "CONFIG_SEC_SENSOR_ID" + case 267: // "CONFIG_DIR_REQ_BODY" + case 268: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 269: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 270: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 271: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 272: // "CONFIG_DIR_RES_BODY" + case 273: // "CONFIG_DIR_RES_BODY_LIMIT" + case 274: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 275: // "CONFIG_SEC_RULE_INHERITANCE" + case 276: // "CONFIG_SEC_RULE_PERF_TIME" + case 277: // "CONFIG_DIR_RULE_ENG" + case 278: // "CONFIG_DIR_SEC_ACTION" + case 279: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 280: // "CONFIG_DIR_SEC_MARKER" + case 281: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 282: // "CONFIG_DIR_UNICODE_CODE_PAGE" + case 283: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 284: // "CONFIG_SEC_HTTP_BLKEY" + case 285: // "CONFIG_SEC_INTERCEPT_ON_ERROR" + case 286: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 287: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 288: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" + case 289: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" + case 290: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" + case 291: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" + case 292: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" + case 293: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" + case 294: // "CONFIG_UPDLOAD_KEEP_FILES" + case 295: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 296: // "CONFIG_UPLOAD_DIR" + case 297: // "CONFIG_UPLOAD_FILE_LIMIT" + case 298: // "CONFIG_UPLOAD_FILE_MODE" + case 299: // "CONFIG_VALUE_ABORT" + case 300: // "CONFIG_VALUE_DETC" + case 301: // "CONFIG_VALUE_HTTPS" + case 302: // "CONFIG_VALUE_OFF" + case 303: // "CONFIG_VALUE_ON" + case 304: // "CONFIG_VALUE_PARALLEL" + case 305: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 306: // "CONFIG_VALUE_REJECT" + case 307: // "CONFIG_VALUE_RELEVANT_ONLY" + case 308: // "CONFIG_VALUE_SERIAL" + case 309: // "CONFIG_VALUE_WARN" + case 310: // "CONFIG_XML_EXTERNAL_ENTITY" + case 311: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 312: // "CONGIG_DIR_SEC_ARG_SEP" + case 313: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 314: // "CONFIG_SEC_COOKIEV0_SEPARATOR" + case 315: // "CONGIG_DIR_SEC_DATA_DIR" + case 316: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 317: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" + case 318: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" + case 319: // "CONGIG_DIR_SEC_TMP_DIR" + case 320: // "DIRECTIVE" + case 321: // "DIRECTIVE_SECRULESCRIPT" + case 322: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" + case 323: // "QUOTATION_MARK" + case 324: // "RUN_TIME_VAR_BLD" + case 325: // "RUN_TIME_VAR_DUR" + case 326: // "RUN_TIME_VAR_HSV" + case 327: // "RUN_TIME_VAR_REMOTE_USER" + case 328: // "RUN_TIME_VAR_TIME" + case 329: // "RUN_TIME_VAR_TIME_DAY" + case 330: // "RUN_TIME_VAR_TIME_EPOCH" + case 331: // "RUN_TIME_VAR_TIME_HOUR" + case 332: // "RUN_TIME_VAR_TIME_MIN" + case 333: // "RUN_TIME_VAR_TIME_MON" + case 334: // "RUN_TIME_VAR_TIME_SEC" + case 335: // "RUN_TIME_VAR_TIME_WDAY" + case 336: // "RUN_TIME_VAR_TIME_YEAR" + case 337: // "VARIABLE" + case 338: // "Dictionary element" case 339: // "Dictionary element, selected by regexp" value.move< std::string > (that.value); break; @@ -722,252 +961,12 @@ namespace yy { break; } - // that is emptied. - that.type = empty_symbol; - } - - seclang_parser::stack_symbol_type& - seclang_parser::stack_symbol_type::operator= (const stack_symbol_type& that) - { - state = that.state; - switch (that.type_get ()) - { - case 144: // "Accuracy" - case 145: // "Allow" - case 146: // "Append" - case 147: // "AuditLog" - case 148: // "Block" - case 149: // "Capture" - case 150: // "Chain" - case 151: // "ACTION_CTL_AUDIT_ENGINE" - case 152: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 153: // "ACTION_CTL_BDY_JSON" - case 154: // "ACTION_CTL_BDY_XML" - case 155: // "ACTION_CTL_BDY_URLENCODED" - case 156: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 157: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 158: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 159: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case 160: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 161: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 162: // "Deny" - case 163: // "DeprecateVar" - case 164: // "Drop" - case 165: // "Exec" - case 166: // "ExpireVar" - case 167: // "Id" - case 168: // "InitCol" - case 169: // "Log" - case 170: // "LogData" - case 171: // "Maturity" - case 172: // "Msg" - case 173: // "MultiMatch" - case 174: // "NoAuditLog" - case 175: // "NoLog" - case 176: // "Pass" - case 177: // "Pause" - case 178: // "Phase" - case 179: // "Prepend" - case 180: // "Proxy" - case 181: // "Redirect" - case 182: // "Rev" - case 183: // "SanitiseArg" - case 184: // "SanitiseMatched" - case 185: // "SanitiseMatchedBytes" - case 186: // "SanitiseRequestHeader" - case 187: // "SanitiseResponseHeader" - case 188: // "SetEnv" - case 189: // "SetRsc" - case 190: // "SetSid" - case 191: // "SetUID" - case 192: // "Severity" - case 193: // "Skip" - case 194: // "SkipAfter" - case 195: // "Status" - case 196: // "Tag" - case 197: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case 198: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case 199: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case 200: // "ACTION_TRANSFORMATION_CMD_LINE" - case 201: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 202: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 203: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case 204: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 205: // "ACTION_TRANSFORMATION_HEX_DECODE" - case 206: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 207: // "ACTION_TRANSFORMATION_JS_DECODE" - case 208: // "ACTION_TRANSFORMATION_LENGTH" - case 209: // "ACTION_TRANSFORMATION_LOWERCASE" - case 210: // "ACTION_TRANSFORMATION_MD5" - case 211: // "ACTION_TRANSFORMATION_NONE" - case 212: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 213: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 214: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 215: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 216: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 217: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 218: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 219: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 220: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 221: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 222: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 223: // "ACTION_TRANSFORMATION_SHA1" - case 224: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 225: // "ACTION_TRANSFORMATION_TRIM" - case 226: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case 227: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case 228: // "ACTION_TRANSFORMATION_UPPERCASE" - case 229: // "ACTION_TRANSFORMATION_URL_ENCODE" - case 230: // "ACTION_TRANSFORMATION_URL_DECODE" - case 231: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 232: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 233: // "Ver" - case 234: // "xmlns" - case 235: // "CONFIG_COMPONENT_SIG" - case 236: // "CONFIG_CONN_ENGINE" - case 237: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case 238: // "CONFIG_SEC_WEB_APP_ID" - case 239: // "CONFIG_SEC_SERVER_SIG" - case 240: // "CONFIG_DIR_AUDIT_DIR" - case 241: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 242: // "CONFIG_DIR_AUDIT_ENG" - case 243: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 244: // "CONFIG_DIR_AUDIT_LOG" - case 245: // "CONFIG_DIR_AUDIT_LOG2" - case 246: // "CONFIG_DIR_AUDIT_LOG_P" - case 247: // "CONFIG_DIR_AUDIT_STS" - case 248: // "CONFIG_DIR_AUDIT_TPE" - case 249: // "CONFIG_DIR_DEBUG_LOG" - case 250: // "CONFIG_DIR_DEBUG_LVL" - case 251: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case 252: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case 253: // "CONFIG_SEC_HASH_ENGINE" - case 254: // "CONFIG_SEC_HASH_KEY" - case 255: // "CONFIG_SEC_HASH_PARAM" - case 256: // "CONFIG_SEC_HASH_METHOD_RX" - case 257: // "CONFIG_SEC_HASH_METHOD_PM" - case 258: // "CONFIG_SEC_CHROOT_DIR" - case 259: // "CONFIG_DIR_GEO_DB" - case 260: // "CONFIG_DIR_GSB_DB" - case 261: // "CONFIG_SEC_GUARDIAN_LOG" - case 262: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 263: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 264: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case 265: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case 266: // "CONFIG_SEC_SENSOR_ID" - case 267: // "CONFIG_DIR_REQ_BODY" - case 268: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 269: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 270: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 271: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 272: // "CONFIG_DIR_RES_BODY" - case 273: // "CONFIG_DIR_RES_BODY_LIMIT" - case 274: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 275: // "CONFIG_SEC_RULE_INHERITANCE" - case 276: // "CONFIG_SEC_RULE_PERF_TIME" - case 277: // "CONFIG_DIR_RULE_ENG" - case 278: // "CONFIG_DIR_SEC_ACTION" - case 279: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 280: // "CONFIG_DIR_SEC_MARKER" - case 281: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 282: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case 283: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 284: // "CONFIG_SEC_HTTP_BLKEY" - case 285: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case 286: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 287: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 288: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case 289: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case 290: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case 291: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case 292: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case 293: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case 294: // "CONFIG_UPDLOAD_KEEP_FILES" - case 295: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 296: // "CONFIG_UPLOAD_DIR" - case 297: // "CONFIG_UPLOAD_FILE_LIMIT" - case 298: // "CONFIG_UPLOAD_FILE_MODE" - case 299: // "CONFIG_VALUE_ABORT" - case 300: // "CONFIG_VALUE_DETC" - case 301: // "CONFIG_VALUE_HTTPS" - case 302: // "CONFIG_VALUE_OFF" - case 303: // "CONFIG_VALUE_ON" - case 304: // "CONFIG_VALUE_PARALLEL" - case 305: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 306: // "CONFIG_VALUE_REJECT" - case 307: // "CONFIG_VALUE_RELEVANT_ONLY" - case 308: // "CONFIG_VALUE_SERIAL" - case 309: // "CONFIG_VALUE_WARN" - case 310: // "CONFIG_XML_EXTERNAL_ENTITY" - case 311: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 312: // "CONGIG_DIR_SEC_ARG_SEP" - case 313: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 314: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case 315: // "CONGIG_DIR_SEC_DATA_DIR" - case 316: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 317: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case 318: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case 319: // "CONGIG_DIR_SEC_TMP_DIR" - case 320: // "DIRECTIVE" - case 321: // "DIRECTIVE_SECRULESCRIPT" - case 322: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case 323: // "QUOTATION_MARK" - case 324: // "RUN_TIME_VAR_BLD" - case 325: // "RUN_TIME_VAR_DUR" - case 326: // "RUN_TIME_VAR_HSV" - case 327: // "RUN_TIME_VAR_REMOTE_USER" - case 328: // "RUN_TIME_VAR_TIME" - case 329: // "RUN_TIME_VAR_TIME_DAY" - case 330: // "RUN_TIME_VAR_TIME_EPOCH" - case 331: // "RUN_TIME_VAR_TIME_HOUR" - case 332: // "RUN_TIME_VAR_TIME_MIN" - case 333: // "RUN_TIME_VAR_TIME_MON" - case 334: // "RUN_TIME_VAR_TIME_SEC" - case 335: // "RUN_TIME_VAR_TIME_WDAY" - case 336: // "RUN_TIME_VAR_TIME_YEAR" - case 337: // "VARIABLE" - case 338: // "Dictionary element" - case 339: // "Dictionary element, selected by regexp" - value.copy< std::string > (that.value); - break; - - case 346: // op - case 347: // op_before_init - value.copy< std::unique_ptr > (that.value); - break; - - case 355: // run_time_string - value.copy< std::unique_ptr > (that.value); - break; - - case 352: // var - value.copy< std::unique_ptr > (that.value); - break; - - case 353: // act - case 354: // setvar_action - value.copy< std::unique_ptr > (that.value); - break; - - case 349: // variables - case 350: // variables_pre_process - case 351: // variables_may_be_quoted - value.copy< std::unique_ptr > > > (that.value); - break; - - case 344: // actions - case 345: // actions_may_quoted - value.copy< std::unique_ptr > > > (that.value); - break; - - default: - break; - } - location = that.location; + // that is emptied. + that.state = empty_state; return *this; } - +#endif template void @@ -999,22 +998,26 @@ namespace yy { #endif void - seclang_parser::yypush_ (const char* m, state_type s, symbol_type& sym) - { - stack_symbol_type t (s, sym); - yypush_ (m, t); - } - - void - seclang_parser::yypush_ (const char* m, stack_symbol_type& s) + seclang_parser::yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym) { if (m) - YY_SYMBOL_PRINT (m, s); - yystack_.push (s); + YY_SYMBOL_PRINT (m, sym); + yystack_.push (YY_MOVE (sym)); } void - seclang_parser::yypop_ (unsigned n) + seclang_parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym) + { +#if defined __cplusplus && 201103L <= __cplusplus + yypush_ (m, stack_symbol_type (s, std::move (sym))); +#else + stack_symbol_type ss (s, sym); + yypush_ (m, ss); +#endif + } + + void + seclang_parser::yypop_ (int n) { yystack_.pop (n); } @@ -1068,6 +1071,12 @@ namespace yy { return yyvalue == yytable_ninf_; } + int + seclang_parser::operator() () + { + return parse (); + } + int seclang_parser::parse () { @@ -1097,20 +1106,20 @@ namespace yy { // User initialization code. - #line 354 "/home/zimmerle/core-trustwave/ModSecurity/src/parser/seclang-parser.yy" // lalr1.cc:746 +#line 354 "seclang-parser.yy" // lalr1.cc:783 { // Initialize the initial location. yyla.location.begin.filename = yyla.location.end.filename = &driver.file; } -#line 1107 "seclang-parser.cc" // lalr1.cc:746 +#line 1116 "seclang-parser.cc" // lalr1.cc:783 /* Initialize the stack. The initial state will be set in yynewstate, since the latter expects the semantical and the location values to have been already stored, initialize these stacks with a primary value. */ yystack_.clear (); - yypush_ (YY_NULLPTR, 0, yyla); + yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla)); // A new symbol was pushed on the stack. yynewstate: @@ -1171,7 +1180,7 @@ namespace yy { --yyerrstatus_; // Shift the lookahead token. - yypush_ ("Shifting", yyn, yyla); + yypush_ ("Shifting", yyn, YY_MOVE (yyla)); goto yynewstate; /*-----------------------------------------------------------. @@ -1392,36 +1401,36 @@ namespace yy { case 337: // "VARIABLE" case 338: // "Dictionary element" case 339: // "Dictionary element, selected by regexp" - yylhs.value.build< std::string > (); + yylhs.value.emplace< std::string > (); break; case 346: // op case 347: // op_before_init - yylhs.value.build< std::unique_ptr > (); + yylhs.value.emplace< std::unique_ptr > (); break; case 355: // run_time_string - yylhs.value.build< std::unique_ptr > (); + yylhs.value.emplace< std::unique_ptr > (); break; case 352: // var - yylhs.value.build< std::unique_ptr > (); + yylhs.value.emplace< std::unique_ptr > (); break; case 353: // act case 354: // setvar_action - yylhs.value.build< std::unique_ptr > (); + yylhs.value.emplace< std::unique_ptr > (); break; case 349: // variables case 350: // variables_pre_process case 351: // variables_may_be_quoted - yylhs.value.build< std::unique_ptr > > > (); + yylhs.value.emplace< std::unique_ptr > > > (); break; case 344: // actions case 345: // actions_may_quoted - yylhs.value.build< std::unique_ptr > > > (); + yylhs.value.emplace< std::unique_ptr > > > (); break; default: @@ -1445,241 +1454,241 @@ namespace yy { switch (yyn) { case 2: -#line 744 "seclang-parser.yy" // lalr1.cc:870 +#line 744 "seclang-parser.yy" // lalr1.cc:906 { return 0; } -#line 1453 "seclang-parser.cc" // lalr1.cc:870 +#line 1462 "seclang-parser.cc" // lalr1.cc:906 break; case 6: -#line 757 "seclang-parser.yy" // lalr1.cc:870 +#line 757 "seclang-parser.yy" // lalr1.cc:906 { driver.m_auditLog->setStorageDirMode(strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8)); } -#line 1461 "seclang-parser.cc" // lalr1.cc:870 +#line 1470 "seclang-parser.cc" // lalr1.cc:906 break; case 7: -#line 763 "seclang-parser.yy" // lalr1.cc:870 +#line 763 "seclang-parser.yy" // lalr1.cc:906 { driver.m_auditLog->setStorageDir(yystack_[0].value.as< std::string > ()); } -#line 1469 "seclang-parser.cc" // lalr1.cc:870 +#line 1478 "seclang-parser.cc" // lalr1.cc:906 break; case 8: -#line 769 "seclang-parser.yy" // lalr1.cc:870 +#line 769 "seclang-parser.yy" // lalr1.cc:906 { driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::RelevantOnlyAuditLogStatus); } -#line 1477 "seclang-parser.cc" // lalr1.cc:870 +#line 1486 "seclang-parser.cc" // lalr1.cc:906 break; case 9: -#line 773 "seclang-parser.yy" // lalr1.cc:870 +#line 773 "seclang-parser.yy" // lalr1.cc:906 { driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::OffAuditLogStatus); } -#line 1485 "seclang-parser.cc" // lalr1.cc:870 +#line 1494 "seclang-parser.cc" // lalr1.cc:906 break; case 10: -#line 777 "seclang-parser.yy" // lalr1.cc:870 +#line 777 "seclang-parser.yy" // lalr1.cc:906 { driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::OnAuditLogStatus); } -#line 1493 "seclang-parser.cc" // lalr1.cc:870 +#line 1502 "seclang-parser.cc" // lalr1.cc:906 break; case 11: -#line 783 "seclang-parser.yy" // lalr1.cc:870 +#line 783 "seclang-parser.yy" // lalr1.cc:906 { driver.m_auditLog->setFileMode(strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8)); } -#line 1501 "seclang-parser.cc" // lalr1.cc:870 +#line 1510 "seclang-parser.cc" // lalr1.cc:906 break; case 12: -#line 789 "seclang-parser.yy" // lalr1.cc:870 +#line 789 "seclang-parser.yy" // lalr1.cc:906 { driver.m_auditLog->setFilePath2(yystack_[0].value.as< std::string > ()); } -#line 1509 "seclang-parser.cc" // lalr1.cc:870 +#line 1518 "seclang-parser.cc" // lalr1.cc:906 break; case 13: -#line 795 "seclang-parser.yy" // lalr1.cc:870 +#line 795 "seclang-parser.yy" // lalr1.cc:906 { driver.m_auditLog->setParts(yystack_[0].value.as< std::string > ()); } -#line 1517 "seclang-parser.cc" // lalr1.cc:870 +#line 1526 "seclang-parser.cc" // lalr1.cc:906 break; case 14: -#line 801 "seclang-parser.yy" // lalr1.cc:870 +#line 801 "seclang-parser.yy" // lalr1.cc:906 { driver.m_auditLog->setFilePath1(yystack_[0].value.as< std::string > ()); } -#line 1525 "seclang-parser.cc" // lalr1.cc:870 +#line 1534 "seclang-parser.cc" // lalr1.cc:906 break; case 15: -#line 806 "seclang-parser.yy" // lalr1.cc:870 +#line 806 "seclang-parser.yy" // lalr1.cc:906 { driver.m_auditLog->setFormat(modsecurity::audit_log::AuditLog::JSONAuditLogFormat); } -#line 1533 "seclang-parser.cc" // lalr1.cc:870 +#line 1542 "seclang-parser.cc" // lalr1.cc:906 break; case 16: -#line 811 "seclang-parser.yy" // lalr1.cc:870 +#line 811 "seclang-parser.yy" // lalr1.cc:906 { driver.m_auditLog->setFormat(modsecurity::audit_log::AuditLog::NativeAuditLogFormat); } -#line 1541 "seclang-parser.cc" // lalr1.cc:870 +#line 1550 "seclang-parser.cc" // lalr1.cc:906 break; case 17: -#line 817 "seclang-parser.yy" // lalr1.cc:870 +#line 817 "seclang-parser.yy" // lalr1.cc:906 { std::string relevant_status(yystack_[0].value.as< std::string > ()); driver.m_auditLog->setRelevantStatus(relevant_status); } -#line 1550 "seclang-parser.cc" // lalr1.cc:870 +#line 1559 "seclang-parser.cc" // lalr1.cc:906 break; case 18: -#line 824 "seclang-parser.yy" // lalr1.cc:870 +#line 824 "seclang-parser.yy" // lalr1.cc:906 { driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::SerialAuditLogType); } -#line 1558 "seclang-parser.cc" // lalr1.cc:870 +#line 1567 "seclang-parser.cc" // lalr1.cc:906 break; case 19: -#line 828 "seclang-parser.yy" // lalr1.cc:870 +#line 828 "seclang-parser.yy" // lalr1.cc:906 { driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::ParallelAuditLogType); } -#line 1566 "seclang-parser.cc" // lalr1.cc:870 +#line 1575 "seclang-parser.cc" // lalr1.cc:906 break; case 20: -#line 832 "seclang-parser.yy" // lalr1.cc:870 +#line 832 "seclang-parser.yy" // lalr1.cc:906 { driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::HttpsAuditLogType); } -#line 1574 "seclang-parser.cc" // lalr1.cc:870 +#line 1583 "seclang-parser.cc" // lalr1.cc:906 break; case 21: -#line 838 "seclang-parser.yy" // lalr1.cc:870 +#line 838 "seclang-parser.yy" // lalr1.cc:906 { driver.m_uploadKeepFiles = modsecurity::RulesProperties::TrueConfigBoolean; } -#line 1582 "seclang-parser.cc" // lalr1.cc:870 +#line 1591 "seclang-parser.cc" // lalr1.cc:906 break; case 22: -#line 842 "seclang-parser.yy" // lalr1.cc:870 +#line 842 "seclang-parser.yy" // lalr1.cc:906 { driver.m_uploadKeepFiles = modsecurity::RulesProperties::FalseConfigBoolean; } -#line 1590 "seclang-parser.cc" // lalr1.cc:870 +#line 1599 "seclang-parser.cc" // lalr1.cc:906 break; case 23: -#line 846 "seclang-parser.yy" // lalr1.cc:870 +#line 846 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[2].location, "SecUploadKeepFiles RelevantOnly is not currently supported. Accepted values are On or Off"); YYERROR; } -#line 1599 "seclang-parser.cc" // lalr1.cc:870 +#line 1608 "seclang-parser.cc" // lalr1.cc:906 break; case 24: -#line 851 "seclang-parser.yy" // lalr1.cc:870 +#line 851 "seclang-parser.yy" // lalr1.cc:906 { driver.m_uploadFileLimit.m_set = true; driver.m_uploadFileLimit.m_value = strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 10); } -#line 1608 "seclang-parser.cc" // lalr1.cc:870 +#line 1617 "seclang-parser.cc" // lalr1.cc:906 break; case 25: -#line 856 "seclang-parser.yy" // lalr1.cc:870 +#line 856 "seclang-parser.yy" // lalr1.cc:906 { driver.m_uploadFileMode.m_set = true; driver.m_uploadFileMode.m_value = strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8); } -#line 1617 "seclang-parser.cc" // lalr1.cc:870 +#line 1626 "seclang-parser.cc" // lalr1.cc:906 break; case 26: -#line 861 "seclang-parser.yy" // lalr1.cc:870 +#line 861 "seclang-parser.yy" // lalr1.cc:906 { driver.m_uploadDirectory.m_set = true; driver.m_uploadDirectory.m_value = yystack_[0].value.as< std::string > (); } -#line 1626 "seclang-parser.cc" // lalr1.cc:870 +#line 1635 "seclang-parser.cc" // lalr1.cc:906 break; case 27: -#line 866 "seclang-parser.yy" // lalr1.cc:870 +#line 866 "seclang-parser.yy" // lalr1.cc:906 { driver.m_tmpSaveUploadedFiles = modsecurity::RulesProperties::TrueConfigBoolean; } -#line 1634 "seclang-parser.cc" // lalr1.cc:870 +#line 1643 "seclang-parser.cc" // lalr1.cc:906 break; case 28: -#line 870 "seclang-parser.yy" // lalr1.cc:870 +#line 870 "seclang-parser.yy" // lalr1.cc:906 { driver.m_tmpSaveUploadedFiles = modsecurity::RulesProperties::FalseConfigBoolean; } -#line 1642 "seclang-parser.cc" // lalr1.cc:870 +#line 1651 "seclang-parser.cc" // lalr1.cc:906 break; case 29: -#line 877 "seclang-parser.yy" // lalr1.cc:870 +#line 877 "seclang-parser.yy" // lalr1.cc:906 { yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[1].value.as< std::unique_ptr > > > ()); } -#line 1650 "seclang-parser.cc" // lalr1.cc:870 +#line 1659 "seclang-parser.cc" // lalr1.cc:906 break; case 30: -#line 881 "seclang-parser.yy" // lalr1.cc:870 +#line 881 "seclang-parser.yy" // lalr1.cc:906 { yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[0].value.as< std::unique_ptr > > > ()); } -#line 1658 "seclang-parser.cc" // lalr1.cc:870 +#line 1667 "seclang-parser.cc" // lalr1.cc:906 break; case 31: -#line 888 "seclang-parser.yy" // lalr1.cc:870 +#line 888 "seclang-parser.yy" // lalr1.cc:906 { ACTION_INIT(yystack_[0].value.as< std::unique_ptr > (), yystack_[3].location) yystack_[2].value.as< std::unique_ptr > > > ()->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ())); yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[2].value.as< std::unique_ptr > > > ()); } -#line 1668 "seclang-parser.cc" // lalr1.cc:870 +#line 1677 "seclang-parser.cc" // lalr1.cc:906 break; case 32: -#line 894 "seclang-parser.yy" // lalr1.cc:870 +#line 894 "seclang-parser.yy" // lalr1.cc:906 { std::unique_ptr>> b(new std::vector>()); ACTION_INIT(yystack_[0].value.as< std::unique_ptr > (), yystack_[1].location) b->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ())); yylhs.value.as< std::unique_ptr > > > () = std::move(b); } -#line 1679 "seclang-parser.cc" // lalr1.cc:870 +#line 1688 "seclang-parser.cc" // lalr1.cc:906 break; case 33: -#line 904 "seclang-parser.yy" // lalr1.cc:870 +#line 904 "seclang-parser.yy" // lalr1.cc:906 { yylhs.value.as< std::unique_ptr > () = std::move(yystack_[0].value.as< std::unique_ptr > ()); std::string error; @@ -1688,11 +1697,11 @@ namespace yy { YYERROR; } } -#line 1692 "seclang-parser.cc" // lalr1.cc:870 +#line 1701 "seclang-parser.cc" // lalr1.cc:906 break; case 34: -#line 913 "seclang-parser.yy" // lalr1.cc:870 +#line 913 "seclang-parser.yy" // lalr1.cc:906 { yylhs.value.as< std::unique_ptr > () = std::move(yystack_[0].value.as< std::unique_ptr > ()); yylhs.value.as< std::unique_ptr > ()->m_negation = true; @@ -1702,11 +1711,11 @@ namespace yy { YYERROR; } } -#line 1706 "seclang-parser.cc" // lalr1.cc:870 +#line 1715 "seclang-parser.cc" // lalr1.cc:906 break; case 35: -#line 923 "seclang-parser.yy" // lalr1.cc:870 +#line 923 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx(std::move(yystack_[0].value.as< std::unique_ptr > ()))); std::string error; @@ -1715,11 +1724,11 @@ namespace yy { YYERROR; } } -#line 1719 "seclang-parser.cc" // lalr1.cc:870 +#line 1728 "seclang-parser.cc" // lalr1.cc:906 break; case 36: -#line 932 "seclang-parser.yy" // lalr1.cc:870 +#line 932 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx(std::move(yystack_[0].value.as< std::unique_ptr > ()))); yylhs.value.as< std::unique_ptr > ()->m_negation = true; @@ -1729,286 +1738,286 @@ namespace yy { YYERROR; } } -#line 1733 "seclang-parser.cc" // lalr1.cc:870 +#line 1742 "seclang-parser.cc" // lalr1.cc:906 break; case 37: -#line 945 "seclang-parser.yy" // lalr1.cc:870 +#line 945 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::UnconditionalMatch()); } -#line 1741 "seclang-parser.cc" // lalr1.cc:870 +#line 1750 "seclang-parser.cc" // lalr1.cc:906 break; case 38: -#line 949 "seclang-parser.yy" // lalr1.cc:870 +#line 949 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::DetectSQLi()); } -#line 1749 "seclang-parser.cc" // lalr1.cc:870 +#line 1758 "seclang-parser.cc" // lalr1.cc:906 break; case 39: -#line 953 "seclang-parser.yy" // lalr1.cc:870 +#line 953 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::DetectXSS()); } -#line 1757 "seclang-parser.cc" // lalr1.cc:870 +#line 1766 "seclang-parser.cc" // lalr1.cc:906 break; case 40: -#line 957 "seclang-parser.yy" // lalr1.cc:870 +#line 957 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateUrlEncoding()); } -#line 1765 "seclang-parser.cc" // lalr1.cc:870 +#line 1774 "seclang-parser.cc" // lalr1.cc:906 break; case 41: -#line 961 "seclang-parser.yy" // lalr1.cc:870 +#line 961 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateUtf8Encoding()); } -#line 1773 "seclang-parser.cc" // lalr1.cc:870 +#line 1782 "seclang-parser.cc" // lalr1.cc:906 break; case 42: -#line 965 "seclang-parser.yy" // lalr1.cc:870 +#line 965 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::InspectFile(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1781 "seclang-parser.cc" // lalr1.cc:870 +#line 1790 "seclang-parser.cc" // lalr1.cc:906 break; case 43: -#line 969 "seclang-parser.yy" // lalr1.cc:870 +#line 969 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::FuzzyHash(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1789 "seclang-parser.cc" // lalr1.cc:870 +#line 1798 "seclang-parser.cc" // lalr1.cc:906 break; case 44: -#line 973 "seclang-parser.yy" // lalr1.cc:870 +#line 973 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateByteRange(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1797 "seclang-parser.cc" // lalr1.cc:870 +#line 1806 "seclang-parser.cc" // lalr1.cc:906 break; case 45: -#line 977 "seclang-parser.yy" // lalr1.cc:870 +#line 977 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateDTD(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1805 "seclang-parser.cc" // lalr1.cc:870 +#line 1814 "seclang-parser.cc" // lalr1.cc:906 break; case 46: -#line 981 "seclang-parser.yy" // lalr1.cc:870 +#line 981 "seclang-parser.yy" // lalr1.cc:906 { /* $$ = new operators::ValidateHash($1); */ OPERATOR_NOT_SUPPORTED("ValidateHash", yystack_[2].location); } -#line 1814 "seclang-parser.cc" // lalr1.cc:870 +#line 1823 "seclang-parser.cc" // lalr1.cc:906 break; case 47: -#line 986 "seclang-parser.yy" // lalr1.cc:870 +#line 986 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateSchema(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1822 "seclang-parser.cc" // lalr1.cc:870 +#line 1831 "seclang-parser.cc" // lalr1.cc:906 break; case 48: -#line 990 "seclang-parser.yy" // lalr1.cc:870 +#line 990 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::VerifyCC(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1830 "seclang-parser.cc" // lalr1.cc:870 +#line 1839 "seclang-parser.cc" // lalr1.cc:906 break; case 49: -#line 994 "seclang-parser.yy" // lalr1.cc:870 +#line 994 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::VerifyCPF(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1838 "seclang-parser.cc" // lalr1.cc:870 +#line 1847 "seclang-parser.cc" // lalr1.cc:906 break; case 50: -#line 998 "seclang-parser.yy" // lalr1.cc:870 +#line 998 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::VerifySSN(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1846 "seclang-parser.cc" // lalr1.cc:870 +#line 1855 "seclang-parser.cc" // lalr1.cc:906 break; case 51: -#line 1002 "seclang-parser.yy" // lalr1.cc:870 +#line 1002 "seclang-parser.yy" // lalr1.cc:906 { /* $$ = new operators::GsbLookup($1); */ OPERATOR_NOT_SUPPORTED("GsbLookup", yystack_[2].location); } -#line 1855 "seclang-parser.cc" // lalr1.cc:870 +#line 1864 "seclang-parser.cc" // lalr1.cc:906 break; case 52: -#line 1007 "seclang-parser.yy" // lalr1.cc:870 +#line 1007 "seclang-parser.yy" // lalr1.cc:906 { /* $$ = new operators::Rsub($1); */ OPERATOR_NOT_SUPPORTED("Rsub", yystack_[2].location); } -#line 1864 "seclang-parser.cc" // lalr1.cc:870 +#line 1873 "seclang-parser.cc" // lalr1.cc:906 break; case 53: -#line 1012 "seclang-parser.yy" // lalr1.cc:870 +#line 1012 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Within(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1872 "seclang-parser.cc" // lalr1.cc:870 +#line 1881 "seclang-parser.cc" // lalr1.cc:906 break; case 54: -#line 1016 "seclang-parser.yy" // lalr1.cc:870 +#line 1016 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ContainsWord(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1880 "seclang-parser.cc" // lalr1.cc:870 +#line 1889 "seclang-parser.cc" // lalr1.cc:906 break; case 55: -#line 1020 "seclang-parser.yy" // lalr1.cc:870 +#line 1020 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Contains(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1888 "seclang-parser.cc" // lalr1.cc:870 +#line 1897 "seclang-parser.cc" // lalr1.cc:906 break; case 56: -#line 1024 "seclang-parser.yy" // lalr1.cc:870 +#line 1024 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::EndsWith(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1896 "seclang-parser.cc" // lalr1.cc:870 +#line 1905 "seclang-parser.cc" // lalr1.cc:906 break; case 57: -#line 1028 "seclang-parser.yy" // lalr1.cc:870 +#line 1028 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Eq(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1904 "seclang-parser.cc" // lalr1.cc:870 +#line 1913 "seclang-parser.cc" // lalr1.cc:906 break; case 58: -#line 1032 "seclang-parser.yy" // lalr1.cc:870 +#line 1032 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Ge(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1912 "seclang-parser.cc" // lalr1.cc:870 +#line 1921 "seclang-parser.cc" // lalr1.cc:906 break; case 59: -#line 1036 "seclang-parser.yy" // lalr1.cc:870 +#line 1036 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Gt(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1920 "seclang-parser.cc" // lalr1.cc:870 +#line 1929 "seclang-parser.cc" // lalr1.cc:906 break; case 60: -#line 1040 "seclang-parser.yy" // lalr1.cc:870 +#line 1040 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::IpMatchF(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1928 "seclang-parser.cc" // lalr1.cc:870 +#line 1937 "seclang-parser.cc" // lalr1.cc:906 break; case 61: -#line 1044 "seclang-parser.yy" // lalr1.cc:870 +#line 1044 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::IpMatch(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1936 "seclang-parser.cc" // lalr1.cc:870 +#line 1945 "seclang-parser.cc" // lalr1.cc:906 break; case 62: -#line 1048 "seclang-parser.yy" // lalr1.cc:870 +#line 1048 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Le(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1944 "seclang-parser.cc" // lalr1.cc:870 +#line 1953 "seclang-parser.cc" // lalr1.cc:906 break; case 63: -#line 1052 "seclang-parser.yy" // lalr1.cc:870 +#line 1052 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Lt(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1952 "seclang-parser.cc" // lalr1.cc:870 +#line 1961 "seclang-parser.cc" // lalr1.cc:906 break; case 64: -#line 1056 "seclang-parser.yy" // lalr1.cc:870 +#line 1056 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::PmFromFile(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1960 "seclang-parser.cc" // lalr1.cc:870 +#line 1969 "seclang-parser.cc" // lalr1.cc:906 break; case 65: -#line 1060 "seclang-parser.yy" // lalr1.cc:870 +#line 1060 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Pm(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1968 "seclang-parser.cc" // lalr1.cc:870 +#line 1977 "seclang-parser.cc" // lalr1.cc:906 break; case 66: -#line 1064 "seclang-parser.yy" // lalr1.cc:870 +#line 1064 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rbl(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1976 "seclang-parser.cc" // lalr1.cc:870 +#line 1985 "seclang-parser.cc" // lalr1.cc:906 break; case 67: -#line 1068 "seclang-parser.yy" // lalr1.cc:870 +#line 1068 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1984 "seclang-parser.cc" // lalr1.cc:870 +#line 1993 "seclang-parser.cc" // lalr1.cc:906 break; case 68: -#line 1072 "seclang-parser.yy" // lalr1.cc:870 +#line 1072 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::StrEq(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 1992 "seclang-parser.cc" // lalr1.cc:870 +#line 2001 "seclang-parser.cc" // lalr1.cc:906 break; case 69: -#line 1076 "seclang-parser.yy" // lalr1.cc:870 +#line 1076 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::StrMatch(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 2000 "seclang-parser.cc" // lalr1.cc:870 +#line 2009 "seclang-parser.cc" // lalr1.cc:906 break; case 70: -#line 1080 "seclang-parser.yy" // lalr1.cc:870 +#line 1080 "seclang-parser.yy" // lalr1.cc:906 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::BeginsWith(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 2008 "seclang-parser.cc" // lalr1.cc:870 +#line 2017 "seclang-parser.cc" // lalr1.cc:906 break; case 71: -#line 1084 "seclang-parser.yy" // lalr1.cc:870 +#line 1084 "seclang-parser.yy" // lalr1.cc:906 { #if defined(WITH_GEOIP) or defined(WITH_MAXMIND) OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::GeoLookup()); @@ -2019,11 +2028,11 @@ namespace yy { YYERROR; #endif // WITH_GEOIP } -#line 2023 "seclang-parser.cc" // lalr1.cc:870 +#line 2032 "seclang-parser.cc" // lalr1.cc:906 break; case 73: -#line 1099 "seclang-parser.yy" // lalr1.cc:870 +#line 1099 "seclang-parser.yy" // lalr1.cc:906 { std::vector *a = new std::vector(); for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) { @@ -2048,11 +2057,11 @@ namespace yy { YYERROR; } } -#line 2052 "seclang-parser.cc" // lalr1.cc:870 +#line 2061 "seclang-parser.cc" // lalr1.cc:906 break; case 74: -#line 1124 "seclang-parser.yy" // lalr1.cc:870 +#line 1124 "seclang-parser.yy" // lalr1.cc:906 { Variables::Variables *v = new Variables::Variables(); for (auto &i : *yystack_[1].value.as< std::unique_ptr > > > ().get()) { @@ -2071,11 +2080,11 @@ namespace yy { YYERROR; } } -#line 2075 "seclang-parser.cc" // lalr1.cc:870 +#line 2084 "seclang-parser.cc" // lalr1.cc:906 break; case 75: -#line 1143 "seclang-parser.yy" // lalr1.cc:870 +#line 1143 "seclang-parser.yy" // lalr1.cc:906 { std::vector *a = new std::vector(); for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) { @@ -2090,11 +2099,11 @@ namespace yy { ); driver.addSecAction(rule); } -#line 2094 "seclang-parser.cc" // lalr1.cc:870 +#line 2103 "seclang-parser.cc" // lalr1.cc:906 break; case 76: -#line 1158 "seclang-parser.yy" // lalr1.cc:870 +#line 1158 "seclang-parser.yy" // lalr1.cc:906 { std::string err; std::vector *a = new std::vector(); @@ -2118,11 +2127,11 @@ namespace yy { YYERROR; } } -#line 2122 "seclang-parser.cc" // lalr1.cc:870 +#line 2131 "seclang-parser.cc" // lalr1.cc:906 break; case 77: -#line 1182 "seclang-parser.yy" // lalr1.cc:870 +#line 1182 "seclang-parser.yy" // lalr1.cc:906 { bool hasDisruptive = false; std::vector *actions = new std::vector(); @@ -2178,75 +2187,75 @@ namespace yy { delete actions; } -#line 2182 "seclang-parser.cc" // lalr1.cc:870 +#line 2191 "seclang-parser.cc" // lalr1.cc:906 break; case 78: -#line 1238 "seclang-parser.yy" // lalr1.cc:870 +#line 1238 "seclang-parser.yy" // lalr1.cc:906 { driver.addSecMarker(modsecurity::utils::string::removeBracketsIfNeeded(yystack_[0].value.as< std::string > ())); } -#line 2190 "seclang-parser.cc" // lalr1.cc:870 +#line 2199 "seclang-parser.cc" // lalr1.cc:906 break; case 79: -#line 1242 "seclang-parser.yy" // lalr1.cc:870 +#line 1242 "seclang-parser.yy" // lalr1.cc:906 { driver.m_secRuleEngine = modsecurity::Rules::DisabledRuleEngine; } -#line 2198 "seclang-parser.cc" // lalr1.cc:870 +#line 2207 "seclang-parser.cc" // lalr1.cc:906 break; case 80: -#line 1246 "seclang-parser.yy" // lalr1.cc:870 +#line 1246 "seclang-parser.yy" // lalr1.cc:906 { driver.m_secRuleEngine = modsecurity::Rules::EnabledRuleEngine; } -#line 2206 "seclang-parser.cc" // lalr1.cc:870 +#line 2215 "seclang-parser.cc" // lalr1.cc:906 break; case 81: -#line 1250 "seclang-parser.yy" // lalr1.cc:870 +#line 1250 "seclang-parser.yy" // lalr1.cc:906 { driver.m_secRuleEngine = modsecurity::Rules::DetectionOnlyRuleEngine; } -#line 2214 "seclang-parser.cc" // lalr1.cc:870 +#line 2223 "seclang-parser.cc" // lalr1.cc:906 break; case 82: -#line 1254 "seclang-parser.yy" // lalr1.cc:870 +#line 1254 "seclang-parser.yy" // lalr1.cc:906 { driver.m_secRequestBodyAccess = modsecurity::RulesProperties::TrueConfigBoolean; } -#line 2222 "seclang-parser.cc" // lalr1.cc:870 +#line 2231 "seclang-parser.cc" // lalr1.cc:906 break; case 83: -#line 1258 "seclang-parser.yy" // lalr1.cc:870 +#line 1258 "seclang-parser.yy" // lalr1.cc:906 { driver.m_secRequestBodyAccess = modsecurity::RulesProperties::FalseConfigBoolean; } -#line 2230 "seclang-parser.cc" // lalr1.cc:870 +#line 2239 "seclang-parser.cc" // lalr1.cc:906 break; case 84: -#line 1262 "seclang-parser.yy" // lalr1.cc:870 +#line 1262 "seclang-parser.yy" // lalr1.cc:906 { driver.m_secResponseBodyAccess = modsecurity::RulesProperties::TrueConfigBoolean; } -#line 2238 "seclang-parser.cc" // lalr1.cc:870 +#line 2247 "seclang-parser.cc" // lalr1.cc:906 break; case 85: -#line 1266 "seclang-parser.yy" // lalr1.cc:870 +#line 1266 "seclang-parser.yy" // lalr1.cc:906 { driver.m_secResponseBodyAccess = modsecurity::RulesProperties::FalseConfigBoolean; } -#line 2246 "seclang-parser.cc" // lalr1.cc:870 +#line 2255 "seclang-parser.cc" // lalr1.cc:906 break; case 86: -#line 1270 "seclang-parser.yy" // lalr1.cc:870 +#line 1270 "seclang-parser.yy" // lalr1.cc:906 { if (yystack_[0].value.as< std::string > ().length() != 1) { driver.error(yystack_[1].location, "Argument separator should be set to a single character."); @@ -2255,259 +2264,259 @@ namespace yy { driver.m_secArgumentSeparator.m_value = yystack_[0].value.as< std::string > (); driver.m_secArgumentSeparator.m_set = true; } -#line 2259 "seclang-parser.cc" // lalr1.cc:870 +#line 2268 "seclang-parser.cc" // lalr1.cc:906 break; case 87: -#line 1279 "seclang-parser.yy" // lalr1.cc:870 +#line 1279 "seclang-parser.yy" // lalr1.cc:906 { driver.m_components.push_back(yystack_[0].value.as< std::string > ()); } -#line 2267 "seclang-parser.cc" // lalr1.cc:870 +#line 2276 "seclang-parser.cc" // lalr1.cc:906 break; case 88: -#line 1283 "seclang-parser.yy" // lalr1.cc:870 +#line 1283 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[2].location, "SecConnEngine is not yet supported."); YYERROR; } -#line 2276 "seclang-parser.cc" // lalr1.cc:870 +#line 2285 "seclang-parser.cc" // lalr1.cc:906 break; case 89: -#line 1288 "seclang-parser.yy" // lalr1.cc:870 +#line 1288 "seclang-parser.yy" // lalr1.cc:906 { } -#line 2283 "seclang-parser.cc" // lalr1.cc:870 +#line 2292 "seclang-parser.cc" // lalr1.cc:906 break; case 90: -#line 1291 "seclang-parser.yy" // lalr1.cc:870 +#line 1291 "seclang-parser.yy" // lalr1.cc:906 { driver.m_secWebAppId.m_value = yystack_[0].value.as< std::string > (); driver.m_secWebAppId.m_set = true; } -#line 2292 "seclang-parser.cc" // lalr1.cc:870 +#line 2301 "seclang-parser.cc" // lalr1.cc:906 break; case 91: -#line 1296 "seclang-parser.yy" // lalr1.cc:870 +#line 1296 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecServerSignature is not supported."); YYERROR; } -#line 2301 "seclang-parser.cc" // lalr1.cc:870 +#line 2310 "seclang-parser.cc" // lalr1.cc:906 break; case 92: -#line 1301 "seclang-parser.yy" // lalr1.cc:870 +#line 1301 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecCacheTransformations is not supported."); YYERROR; } -#line 2310 "seclang-parser.cc" // lalr1.cc:870 +#line 2319 "seclang-parser.cc" // lalr1.cc:906 break; case 93: -#line 1306 "seclang-parser.yy" // lalr1.cc:870 +#line 1306 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[2].location, "SecDisableBackendCompression is not supported."); YYERROR; } -#line 2319 "seclang-parser.cc" // lalr1.cc:870 +#line 2328 "seclang-parser.cc" // lalr1.cc:906 break; case 94: -#line 1311 "seclang-parser.yy" // lalr1.cc:870 +#line 1311 "seclang-parser.yy" // lalr1.cc:906 { } -#line 2326 "seclang-parser.cc" // lalr1.cc:870 +#line 2335 "seclang-parser.cc" // lalr1.cc:906 break; case 95: -#line 1314 "seclang-parser.yy" // lalr1.cc:870 +#line 1314 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[2].location, "SecContentInjection is not yet supported."); YYERROR; } -#line 2335 "seclang-parser.cc" // lalr1.cc:870 +#line 2344 "seclang-parser.cc" // lalr1.cc:906 break; case 96: -#line 1319 "seclang-parser.yy" // lalr1.cc:870 +#line 1319 "seclang-parser.yy" // lalr1.cc:906 { } -#line 2342 "seclang-parser.cc" // lalr1.cc:870 +#line 2351 "seclang-parser.cc" // lalr1.cc:906 break; case 97: -#line 1322 "seclang-parser.yy" // lalr1.cc:870 +#line 1322 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecChrootDir is not supported."); YYERROR; } -#line 2351 "seclang-parser.cc" // lalr1.cc:870 +#line 2360 "seclang-parser.cc" // lalr1.cc:906 break; case 98: -#line 1327 "seclang-parser.yy" // lalr1.cc:870 +#line 1327 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[2].location, "SecHashEngine is not yet supported."); YYERROR; } -#line 2360 "seclang-parser.cc" // lalr1.cc:870 +#line 2369 "seclang-parser.cc" // lalr1.cc:906 break; case 99: -#line 1332 "seclang-parser.yy" // lalr1.cc:870 +#line 1332 "seclang-parser.yy" // lalr1.cc:906 { } -#line 2367 "seclang-parser.cc" // lalr1.cc:870 +#line 2376 "seclang-parser.cc" // lalr1.cc:906 break; case 100: -#line 1335 "seclang-parser.yy" // lalr1.cc:870 +#line 1335 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecHashKey is not yet supported."); YYERROR; } -#line 2376 "seclang-parser.cc" // lalr1.cc:870 +#line 2385 "seclang-parser.cc" // lalr1.cc:906 break; case 101: -#line 1340 "seclang-parser.yy" // lalr1.cc:870 +#line 1340 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecHashParam is not yet supported."); YYERROR; } -#line 2385 "seclang-parser.cc" // lalr1.cc:870 +#line 2394 "seclang-parser.cc" // lalr1.cc:906 break; case 102: -#line 1345 "seclang-parser.yy" // lalr1.cc:870 +#line 1345 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecHashMethodRx is not yet supported."); YYERROR; } -#line 2394 "seclang-parser.cc" // lalr1.cc:870 +#line 2403 "seclang-parser.cc" // lalr1.cc:906 break; case 103: -#line 1350 "seclang-parser.yy" // lalr1.cc:870 +#line 1350 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecHashMethodPm is not yet supported."); YYERROR; } -#line 2403 "seclang-parser.cc" // lalr1.cc:870 +#line 2412 "seclang-parser.cc" // lalr1.cc:906 break; case 104: -#line 1355 "seclang-parser.yy" // lalr1.cc:870 +#line 1355 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecGsbLookupDb is not supported."); YYERROR; } -#line 2412 "seclang-parser.cc" // lalr1.cc:870 +#line 2421 "seclang-parser.cc" // lalr1.cc:906 break; case 105: -#line 1360 "seclang-parser.yy" // lalr1.cc:870 +#line 1360 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecGuardianLog is not supported."); YYERROR; } -#line 2421 "seclang-parser.cc" // lalr1.cc:870 +#line 2430 "seclang-parser.cc" // lalr1.cc:906 break; case 106: -#line 1365 "seclang-parser.yy" // lalr1.cc:870 +#line 1365 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[2].location, "SecInterceptOnError is not yet supported."); YYERROR; } -#line 2430 "seclang-parser.cc" // lalr1.cc:870 +#line 2439 "seclang-parser.cc" // lalr1.cc:906 break; case 107: -#line 1370 "seclang-parser.yy" // lalr1.cc:870 +#line 1370 "seclang-parser.yy" // lalr1.cc:906 { } -#line 2437 "seclang-parser.cc" // lalr1.cc:870 +#line 2446 "seclang-parser.cc" // lalr1.cc:906 break; case 108: -#line 1373 "seclang-parser.yy" // lalr1.cc:870 +#line 1373 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecConnReadStateLimit is not yet supported."); YYERROR; } -#line 2446 "seclang-parser.cc" // lalr1.cc:870 +#line 2455 "seclang-parser.cc" // lalr1.cc:906 break; case 109: -#line 1378 "seclang-parser.yy" // lalr1.cc:870 +#line 1378 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecConnWriteStateLimit is not yet supported."); YYERROR; } -#line 2455 "seclang-parser.cc" // lalr1.cc:870 +#line 2464 "seclang-parser.cc" // lalr1.cc:906 break; case 110: -#line 1383 "seclang-parser.yy" // lalr1.cc:870 +#line 1383 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecSensorId is not yet supported."); YYERROR; } -#line 2464 "seclang-parser.cc" // lalr1.cc:870 +#line 2473 "seclang-parser.cc" // lalr1.cc:906 break; case 111: -#line 1388 "seclang-parser.yy" // lalr1.cc:870 +#line 1388 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[2].location, "SecRuleInheritance is not yet supported."); YYERROR; } -#line 2473 "seclang-parser.cc" // lalr1.cc:870 +#line 2482 "seclang-parser.cc" // lalr1.cc:906 break; case 112: -#line 1393 "seclang-parser.yy" // lalr1.cc:870 +#line 1393 "seclang-parser.yy" // lalr1.cc:906 { } -#line 2480 "seclang-parser.cc" // lalr1.cc:870 +#line 2489 "seclang-parser.cc" // lalr1.cc:906 break; case 113: -#line 1396 "seclang-parser.yy" // lalr1.cc:870 +#line 1396 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecRulePerfTime is not yet supported."); YYERROR; } -#line 2489 "seclang-parser.cc" // lalr1.cc:870 +#line 2498 "seclang-parser.cc" // lalr1.cc:906 break; case 114: -#line 1401 "seclang-parser.yy" // lalr1.cc:870 +#line 1401 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecStreamInBodyInspection is not supported."); YYERROR; } -#line 2498 "seclang-parser.cc" // lalr1.cc:870 +#line 2507 "seclang-parser.cc" // lalr1.cc:906 break; case 115: -#line 1406 "seclang-parser.yy" // lalr1.cc:870 +#line 1406 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecStreamOutBodyInspection is not supported."); YYERROR; } -#line 2507 "seclang-parser.cc" // lalr1.cc:870 +#line 2516 "seclang-parser.cc" // lalr1.cc:906 break; case 116: -#line 1411 "seclang-parser.yy" // lalr1.cc:870 +#line 1411 "seclang-parser.yy" // lalr1.cc:906 { std::string error; if (driver.m_exceptions.load(yystack_[0].value.as< std::string > (), &error) == false) { @@ -2520,11 +2529,11 @@ namespace yy { YYERROR; } } -#line 2524 "seclang-parser.cc" // lalr1.cc:870 +#line 2533 "seclang-parser.cc" // lalr1.cc:906 break; case 117: -#line 1424 "seclang-parser.yy" // lalr1.cc:870 +#line 1424 "seclang-parser.yy" // lalr1.cc:906 { std::string error; if (driver.m_exceptions.loadRemoveRuleByTag(yystack_[0].value.as< std::string > (), &error) == false) { @@ -2537,11 +2546,11 @@ namespace yy { YYERROR; } } -#line 2541 "seclang-parser.cc" // lalr1.cc:870 +#line 2550 "seclang-parser.cc" // lalr1.cc:906 break; case 118: -#line 1437 "seclang-parser.yy" // lalr1.cc:870 +#line 1437 "seclang-parser.yy" // lalr1.cc:906 { std::string error; if (driver.m_exceptions.loadRemoveRuleByMsg(yystack_[0].value.as< std::string > (), &error) == false) { @@ -2554,11 +2563,11 @@ namespace yy { YYERROR; } } -#line 2558 "seclang-parser.cc" // lalr1.cc:870 +#line 2567 "seclang-parser.cc" // lalr1.cc:906 break; case 119: -#line 1450 "seclang-parser.yy" // lalr1.cc:870 +#line 1450 "seclang-parser.yy" // lalr1.cc:906 { std::string error; if (driver.m_exceptions.loadUpdateTargetByTag(yystack_[1].value.as< std::string > (), std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) { @@ -2571,11 +2580,11 @@ namespace yy { YYERROR; } } -#line 2575 "seclang-parser.cc" // lalr1.cc:870 +#line 2584 "seclang-parser.cc" // lalr1.cc:906 break; case 120: -#line 1463 "seclang-parser.yy" // lalr1.cc:870 +#line 1463 "seclang-parser.yy" // lalr1.cc:906 { std::string error; if (driver.m_exceptions.loadUpdateTargetByMsg(yystack_[1].value.as< std::string > (), std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) { @@ -2588,11 +2597,11 @@ namespace yy { YYERROR; } } -#line 2592 "seclang-parser.cc" // lalr1.cc:870 +#line 2601 "seclang-parser.cc" // lalr1.cc:906 break; case 121: -#line 1476 "seclang-parser.yy" // lalr1.cc:870 +#line 1476 "seclang-parser.yy" // lalr1.cc:906 { std::string error; double ruleId; @@ -2618,11 +2627,11 @@ namespace yy { YYERROR; } } -#line 2622 "seclang-parser.cc" // lalr1.cc:870 +#line 2631 "seclang-parser.cc" // lalr1.cc:906 break; case 122: -#line 1502 "seclang-parser.yy" // lalr1.cc:870 +#line 1502 "seclang-parser.yy" // lalr1.cc:906 { std::string error; double ruleId; @@ -2649,11 +2658,11 @@ namespace yy { YYERROR; } } -#line 2653 "seclang-parser.cc" // lalr1.cc:870 +#line 2662 "seclang-parser.cc" // lalr1.cc:906 break; case 123: -#line 1530 "seclang-parser.yy" // lalr1.cc:870 +#line 1530 "seclang-parser.yy" // lalr1.cc:906 { if (driver.m_debugLog != NULL) { driver.m_debugLog->setDebugLogLevel(atoi(yystack_[0].value.as< std::string > ().c_str())); @@ -2665,11 +2674,11 @@ namespace yy { YYERROR; } } -#line 2669 "seclang-parser.cc" // lalr1.cc:870 +#line 2678 "seclang-parser.cc" // lalr1.cc:906 break; case 124: -#line 1542 "seclang-parser.yy" // lalr1.cc:870 +#line 1542 "seclang-parser.yy" // lalr1.cc:906 { if (driver.m_debugLog != NULL) { std::string error; @@ -2688,11 +2697,11 @@ namespace yy { YYERROR; } } -#line 2692 "seclang-parser.cc" // lalr1.cc:870 +#line 2701 "seclang-parser.cc" // lalr1.cc:906 break; case 125: -#line 1562 "seclang-parser.yy" // lalr1.cc:870 +#line 1562 "seclang-parser.yy" // lalr1.cc:906 { #if defined(WITH_GEOIP) or defined(WITH_MAXMIND) std::string err; @@ -2719,29 +2728,29 @@ namespace yy { YYERROR; #endif // WITH_GEOIP } -#line 2723 "seclang-parser.cc" // lalr1.cc:870 +#line 2732 "seclang-parser.cc" // lalr1.cc:906 break; case 126: -#line 1590 "seclang-parser.yy" // lalr1.cc:870 +#line 1590 "seclang-parser.yy" // lalr1.cc:906 { driver.m_requestBodyLimit.m_set = true; driver.m_requestBodyLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str()); } -#line 2732 "seclang-parser.cc" // lalr1.cc:870 +#line 2741 "seclang-parser.cc" // lalr1.cc:906 break; case 127: -#line 1595 "seclang-parser.yy" // lalr1.cc:870 +#line 1595 "seclang-parser.yy" // lalr1.cc:906 { driver.m_requestBodyNoFilesLimit.m_set = true; driver.m_requestBodyNoFilesLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str()); } -#line 2741 "seclang-parser.cc" // lalr1.cc:870 +#line 2750 "seclang-parser.cc" // lalr1.cc:906 break; case 128: -#line 1600 "seclang-parser.yy" // lalr1.cc:870 +#line 1600 "seclang-parser.yy" // lalr1.cc:906 { std::stringstream ss; ss << "As of ModSecurity version 3.0, SecRequestBodyInMemoryLimit is no longer "; @@ -2750,68 +2759,68 @@ namespace yy { driver.error(yystack_[1].location, ss.str()); YYERROR; } -#line 2754 "seclang-parser.cc" // lalr1.cc:870 +#line 2763 "seclang-parser.cc" // lalr1.cc:906 break; case 129: -#line 1609 "seclang-parser.yy" // lalr1.cc:870 +#line 1609 "seclang-parser.yy" // lalr1.cc:906 { driver.m_responseBodyLimit.m_set = true; driver.m_responseBodyLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str()); } -#line 2763 "seclang-parser.cc" // lalr1.cc:870 +#line 2772 "seclang-parser.cc" // lalr1.cc:906 break; case 130: -#line 1614 "seclang-parser.yy" // lalr1.cc:870 +#line 1614 "seclang-parser.yy" // lalr1.cc:906 { driver.m_requestBodyLimitAction = modsecurity::Rules::BodyLimitAction::ProcessPartialBodyLimitAction; } -#line 2771 "seclang-parser.cc" // lalr1.cc:870 +#line 2780 "seclang-parser.cc" // lalr1.cc:906 break; case 131: -#line 1618 "seclang-parser.yy" // lalr1.cc:870 +#line 1618 "seclang-parser.yy" // lalr1.cc:906 { driver.m_requestBodyLimitAction = modsecurity::Rules::BodyLimitAction::RejectBodyLimitAction; } -#line 2779 "seclang-parser.cc" // lalr1.cc:870 +#line 2788 "seclang-parser.cc" // lalr1.cc:906 break; case 132: -#line 1622 "seclang-parser.yy" // lalr1.cc:870 +#line 1622 "seclang-parser.yy" // lalr1.cc:906 { driver.m_responseBodyLimitAction = modsecurity::Rules::BodyLimitAction::ProcessPartialBodyLimitAction; } -#line 2787 "seclang-parser.cc" // lalr1.cc:870 +#line 2796 "seclang-parser.cc" // lalr1.cc:906 break; case 133: -#line 1626 "seclang-parser.yy" // lalr1.cc:870 +#line 1626 "seclang-parser.yy" // lalr1.cc:906 { driver.m_responseBodyLimitAction = modsecurity::Rules::BodyLimitAction::RejectBodyLimitAction; } -#line 2795 "seclang-parser.cc" // lalr1.cc:870 +#line 2804 "seclang-parser.cc" // lalr1.cc:906 break; case 134: -#line 1630 "seclang-parser.yy" // lalr1.cc:870 +#line 1630 "seclang-parser.yy" // lalr1.cc:906 { driver.m_remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::AbortOnFailedRemoteRulesAction; } -#line 2803 "seclang-parser.cc" // lalr1.cc:870 +#line 2812 "seclang-parser.cc" // lalr1.cc:906 break; case 135: -#line 1634 "seclang-parser.yy" // lalr1.cc:870 +#line 1634 "seclang-parser.yy" // lalr1.cc:906 { driver.m_remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::WarnOnFailedRemoteRulesAction; } -#line 2811 "seclang-parser.cc" // lalr1.cc:870 +#line 2820 "seclang-parser.cc" // lalr1.cc:906 break; case 138: -#line 1648 "seclang-parser.yy" // lalr1.cc:870 +#line 1648 "seclang-parser.yy" // lalr1.cc:906 { std::istringstream buf(yystack_[0].value.as< std::string > ()); std::istream_iterator beg(buf), end; @@ -2823,37 +2832,37 @@ namespace yy { driver.m_responseBodyTypeToBeInspected.m_value.insert(*it); } } -#line 2827 "seclang-parser.cc" // lalr1.cc:870 +#line 2836 "seclang-parser.cc" // lalr1.cc:906 break; case 139: -#line 1660 "seclang-parser.yy" // lalr1.cc:870 +#line 1660 "seclang-parser.yy" // lalr1.cc:906 { driver.m_responseBodyTypeToBeInspected.m_set = true; driver.m_responseBodyTypeToBeInspected.m_clear = true; driver.m_responseBodyTypeToBeInspected.m_value.clear(); } -#line 2837 "seclang-parser.cc" // lalr1.cc:870 +#line 2846 "seclang-parser.cc" // lalr1.cc:906 break; case 140: -#line 1666 "seclang-parser.yy" // lalr1.cc:870 +#line 1666 "seclang-parser.yy" // lalr1.cc:906 { driver.m_secXMLExternalEntity = modsecurity::RulesProperties::FalseConfigBoolean; } -#line 2845 "seclang-parser.cc" // lalr1.cc:870 +#line 2854 "seclang-parser.cc" // lalr1.cc:906 break; case 141: -#line 1670 "seclang-parser.yy" // lalr1.cc:870 +#line 1670 "seclang-parser.yy" // lalr1.cc:906 { driver.m_secXMLExternalEntity = modsecurity::RulesProperties::TrueConfigBoolean; } -#line 2853 "seclang-parser.cc" // lalr1.cc:870 +#line 2862 "seclang-parser.cc" // lalr1.cc:906 break; case 142: -#line 1674 "seclang-parser.yy" // lalr1.cc:870 +#line 1674 "seclang-parser.yy" // lalr1.cc:906 { /* Parser error disabled to avoid breaking default installations with modsecurity.conf-recommended std::stringstream ss; @@ -2864,31 +2873,31 @@ namespace yy { YYERROR; */ } -#line 2868 "seclang-parser.cc" // lalr1.cc:870 +#line 2877 "seclang-parser.cc" // lalr1.cc:906 break; case 145: -#line 1695 "seclang-parser.yy" // lalr1.cc:870 +#line 1695 "seclang-parser.yy" // lalr1.cc:906 { if (atoi(yystack_[0].value.as< std::string > ().c_str()) == 1) { driver.error(yystack_[1].location, "SecCookieFormat 1 is not yet supported."); YYERROR; } } -#line 2879 "seclang-parser.cc" // lalr1.cc:870 +#line 2888 "seclang-parser.cc" // lalr1.cc:906 break; case 146: -#line 1702 "seclang-parser.yy" // lalr1.cc:870 +#line 1702 "seclang-parser.yy" // lalr1.cc:906 { driver.error(yystack_[1].location, "SecCookieV0Separator is not yet supported."); YYERROR; } -#line 2888 "seclang-parser.cc" // lalr1.cc:870 +#line 2897 "seclang-parser.cc" // lalr1.cc:906 break; case 148: -#line 1712 "seclang-parser.yy" // lalr1.cc:870 +#line 1712 "seclang-parser.yy" // lalr1.cc:906 { std::string error; std::vector param; @@ -2942,31 +2951,31 @@ namespace yy { } } -#line 2946 "seclang-parser.cc" // lalr1.cc:870 +#line 2955 "seclang-parser.cc" // lalr1.cc:906 break; case 149: -#line 1766 "seclang-parser.yy" // lalr1.cc:870 +#line 1766 "seclang-parser.yy" // lalr1.cc:906 { /* Parser error disabled to avoid breaking default CRS installations with crs-setup.conf-recommended driver.error(@0, "SecCollectionTimeout is not yet supported."); YYERROR; */ } -#line 2957 "seclang-parser.cc" // lalr1.cc:870 +#line 2966 "seclang-parser.cc" // lalr1.cc:906 break; case 150: -#line 1773 "seclang-parser.yy" // lalr1.cc:870 +#line 1773 "seclang-parser.yy" // lalr1.cc:906 { driver.m_httpblKey.m_set = true; driver.m_httpblKey.m_value = yystack_[0].value.as< std::string > (); } -#line 2966 "seclang-parser.cc" // lalr1.cc:870 +#line 2975 "seclang-parser.cc" // lalr1.cc:906 break; case 151: -#line 1781 "seclang-parser.yy" // lalr1.cc:870 +#line 1781 "seclang-parser.yy" // lalr1.cc:906 { std::unique_ptr > > originalList = std::move(yystack_[0].value.as< std::unique_ptr > > > ()); std::unique_ptr>> newList(new std::vector>()); @@ -3000,2364 +3009,2364 @@ namespace yy { } yylhs.value.as< std::unique_ptr > > > () = std::move(newNewList); } -#line 3004 "seclang-parser.cc" // lalr1.cc:870 +#line 3013 "seclang-parser.cc" // lalr1.cc:906 break; case 152: -#line 1818 "seclang-parser.yy" // lalr1.cc:870 +#line 1818 "seclang-parser.yy" // lalr1.cc:906 { yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[0].value.as< std::unique_ptr > > > ()); } -#line 3012 "seclang-parser.cc" // lalr1.cc:870 +#line 3021 "seclang-parser.cc" // lalr1.cc:906 break; case 153: -#line 1822 "seclang-parser.yy" // lalr1.cc:870 +#line 1822 "seclang-parser.yy" // lalr1.cc:906 { yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[1].value.as< std::unique_ptr > > > ()); } -#line 3020 "seclang-parser.cc" // lalr1.cc:870 +#line 3029 "seclang-parser.cc" // lalr1.cc:906 break; case 154: -#line 1829 "seclang-parser.yy" // lalr1.cc:870 +#line 1829 "seclang-parser.yy" // lalr1.cc:906 { yystack_[2].value.as< std::unique_ptr > > > ()->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ())); yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[2].value.as< std::unique_ptr > > > ()); } -#line 3029 "seclang-parser.cc" // lalr1.cc:870 +#line 3038 "seclang-parser.cc" // lalr1.cc:906 break; case 155: -#line 1834 "seclang-parser.yy" // lalr1.cc:870 +#line 1834 "seclang-parser.yy" // lalr1.cc:906 { std::unique_ptr c(new VariableModificatorExclusion(std::move(yystack_[0].value.as< std::unique_ptr > ()))); yystack_[3].value.as< std::unique_ptr > > > ()->push_back(std::move(c)); yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[3].value.as< std::unique_ptr > > > ()); } -#line 3039 "seclang-parser.cc" // lalr1.cc:870 +#line 3048 "seclang-parser.cc" // lalr1.cc:906 break; case 156: -#line 1840 "seclang-parser.yy" // lalr1.cc:870 +#line 1840 "seclang-parser.yy" // lalr1.cc:906 { std::unique_ptr c(new VariableModificatorCount(std::move(yystack_[0].value.as< std::unique_ptr > ()))); yystack_[3].value.as< std::unique_ptr > > > ()->push_back(std::move(c)); yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[3].value.as< std::unique_ptr > > > ()); } -#line 3049 "seclang-parser.cc" // lalr1.cc:870 +#line 3058 "seclang-parser.cc" // lalr1.cc:906 break; case 157: -#line 1846 "seclang-parser.yy" // lalr1.cc:870 +#line 1846 "seclang-parser.yy" // lalr1.cc:906 { std::unique_ptr>> b(new std::vector>()); b->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ())); yylhs.value.as< std::unique_ptr > > > () = std::move(b); } -#line 3059 "seclang-parser.cc" // lalr1.cc:870 +#line 3068 "seclang-parser.cc" // lalr1.cc:906 break; case 158: -#line 1852 "seclang-parser.yy" // lalr1.cc:870 +#line 1852 "seclang-parser.yy" // lalr1.cc:906 { std::unique_ptr>> b(new std::vector>()); std::unique_ptr c(new VariableModificatorExclusion(std::move(yystack_[0].value.as< std::unique_ptr > ()))); b->push_back(std::move(c)); yylhs.value.as< std::unique_ptr > > > () = std::move(b); } -#line 3070 "seclang-parser.cc" // lalr1.cc:870 +#line 3079 "seclang-parser.cc" // lalr1.cc:906 break; case 159: -#line 1859 "seclang-parser.yy" // lalr1.cc:870 +#line 1859 "seclang-parser.yy" // lalr1.cc:906 { std::unique_ptr>> b(new std::vector>()); std::unique_ptr c(new VariableModificatorCount(std::move(yystack_[0].value.as< std::unique_ptr > ()))); b->push_back(std::move(c)); yylhs.value.as< std::unique_ptr > > > () = std::move(b); } -#line 3081 "seclang-parser.cc" // lalr1.cc:870 +#line 3090 "seclang-parser.cc" // lalr1.cc:906 break; case 160: -#line 1869 "seclang-parser.yy" // lalr1.cc:870 +#line 1869 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3089 "seclang-parser.cc" // lalr1.cc:870 +#line 3098 "seclang-parser.cc" // lalr1.cc:906 break; case 161: -#line 1873 "seclang-parser.yy" // lalr1.cc:870 +#line 1873 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3097 "seclang-parser.cc" // lalr1.cc:870 +#line 3106 "seclang-parser.cc" // lalr1.cc:906 break; case 162: -#line 1877 "seclang-parser.yy" // lalr1.cc:870 +#line 1877 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_NoDictElement()); } -#line 3105 "seclang-parser.cc" // lalr1.cc:870 +#line 3114 "seclang-parser.cc" // lalr1.cc:906 break; case 163: -#line 1881 "seclang-parser.yy" // lalr1.cc:870 +#line 1881 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3113 "seclang-parser.cc" // lalr1.cc:870 +#line 3122 "seclang-parser.cc" // lalr1.cc:906 break; case 164: -#line 1885 "seclang-parser.yy" // lalr1.cc:870 +#line 1885 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3121 "seclang-parser.cc" // lalr1.cc:870 +#line 3130 "seclang-parser.cc" // lalr1.cc:906 break; case 165: -#line 1889 "seclang-parser.yy" // lalr1.cc:870 +#line 1889 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_NoDictElement()); } -#line 3129 "seclang-parser.cc" // lalr1.cc:870 +#line 3138 "seclang-parser.cc" // lalr1.cc:906 break; case 166: -#line 1893 "seclang-parser.yy" // lalr1.cc:870 +#line 1893 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3137 "seclang-parser.cc" // lalr1.cc:870 +#line 3146 "seclang-parser.cc" // lalr1.cc:906 break; case 167: -#line 1897 "seclang-parser.yy" // lalr1.cc:870 +#line 1897 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3145 "seclang-parser.cc" // lalr1.cc:870 +#line 3154 "seclang-parser.cc" // lalr1.cc:906 break; case 168: -#line 1901 "seclang-parser.yy" // lalr1.cc:870 +#line 1901 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_NoDictElement()); } -#line 3153 "seclang-parser.cc" // lalr1.cc:870 +#line 3162 "seclang-parser.cc" // lalr1.cc:906 break; case 169: -#line 1905 "seclang-parser.yy" // lalr1.cc:870 +#line 1905 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3161 "seclang-parser.cc" // lalr1.cc:870 +#line 3170 "seclang-parser.cc" // lalr1.cc:906 break; case 170: -#line 1909 "seclang-parser.yy" // lalr1.cc:870 +#line 1909 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3169 "seclang-parser.cc" // lalr1.cc:870 +#line 3178 "seclang-parser.cc" // lalr1.cc:906 break; case 171: -#line 1913 "seclang-parser.yy" // lalr1.cc:870 +#line 1913 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_NoDictElement()); } -#line 3177 "seclang-parser.cc" // lalr1.cc:870 +#line 3186 "seclang-parser.cc" // lalr1.cc:906 break; case 172: -#line 1917 "seclang-parser.yy" // lalr1.cc:870 +#line 1917 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3185 "seclang-parser.cc" // lalr1.cc:870 +#line 3194 "seclang-parser.cc" // lalr1.cc:906 break; case 173: -#line 1921 "seclang-parser.yy" // lalr1.cc:870 +#line 1921 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3193 "seclang-parser.cc" // lalr1.cc:870 +#line 3202 "seclang-parser.cc" // lalr1.cc:906 break; case 174: -#line 1925 "seclang-parser.yy" // lalr1.cc:870 +#line 1925 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_NoDictElement()); } -#line 3201 "seclang-parser.cc" // lalr1.cc:870 +#line 3210 "seclang-parser.cc" // lalr1.cc:906 break; case 175: -#line 1929 "seclang-parser.yy" // lalr1.cc:870 +#line 1929 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3209 "seclang-parser.cc" // lalr1.cc:870 +#line 3218 "seclang-parser.cc" // lalr1.cc:906 break; case 176: -#line 1933 "seclang-parser.yy" // lalr1.cc:870 +#line 1933 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3217 "seclang-parser.cc" // lalr1.cc:870 +#line 3226 "seclang-parser.cc" // lalr1.cc:906 break; case 177: -#line 1937 "seclang-parser.yy" // lalr1.cc:870 +#line 1937 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_NoDictElement()); } -#line 3225 "seclang-parser.cc" // lalr1.cc:870 +#line 3234 "seclang-parser.cc" // lalr1.cc:906 break; case 178: -#line 1941 "seclang-parser.yy" // lalr1.cc:870 +#line 1941 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3233 "seclang-parser.cc" // lalr1.cc:870 +#line 3242 "seclang-parser.cc" // lalr1.cc:906 break; case 179: -#line 1945 "seclang-parser.yy" // lalr1.cc:870 +#line 1945 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3241 "seclang-parser.cc" // lalr1.cc:870 +#line 3250 "seclang-parser.cc" // lalr1.cc:906 break; case 180: -#line 1949 "seclang-parser.yy" // lalr1.cc:870 +#line 1949 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_NoDictElement()); } -#line 3249 "seclang-parser.cc" // lalr1.cc:870 +#line 3258 "seclang-parser.cc" // lalr1.cc:906 break; case 181: -#line 1953 "seclang-parser.yy" // lalr1.cc:870 +#line 1953 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3257 "seclang-parser.cc" // lalr1.cc:870 +#line 3266 "seclang-parser.cc" // lalr1.cc:906 break; case 182: -#line 1957 "seclang-parser.yy" // lalr1.cc:870 +#line 1957 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3265 "seclang-parser.cc" // lalr1.cc:870 +#line 3274 "seclang-parser.cc" // lalr1.cc:906 break; case 183: -#line 1961 "seclang-parser.yy" // lalr1.cc:870 +#line 1961 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_NoDictElement()); } -#line 3273 "seclang-parser.cc" // lalr1.cc:870 +#line 3282 "seclang-parser.cc" // lalr1.cc:906 break; case 184: -#line 1965 "seclang-parser.yy" // lalr1.cc:870 +#line 1965 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3281 "seclang-parser.cc" // lalr1.cc:870 +#line 3290 "seclang-parser.cc" // lalr1.cc:906 break; case 185: -#line 1969 "seclang-parser.yy" // lalr1.cc:870 +#line 1969 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3289 "seclang-parser.cc" // lalr1.cc:870 +#line 3298 "seclang-parser.cc" // lalr1.cc:906 break; case 186: -#line 1973 "seclang-parser.yy" // lalr1.cc:870 +#line 1973 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_NoDictElement()); } -#line 3297 "seclang-parser.cc" // lalr1.cc:870 +#line 3306 "seclang-parser.cc" // lalr1.cc:906 break; case 187: -#line 1977 "seclang-parser.yy" // lalr1.cc:870 +#line 1977 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3305 "seclang-parser.cc" // lalr1.cc:870 +#line 3314 "seclang-parser.cc" // lalr1.cc:906 break; case 188: -#line 1981 "seclang-parser.yy" // lalr1.cc:870 +#line 1981 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3313 "seclang-parser.cc" // lalr1.cc:870 +#line 3322 "seclang-parser.cc" // lalr1.cc:906 break; case 189: -#line 1985 "seclang-parser.yy" // lalr1.cc:870 +#line 1985 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_NoDictElement()); } -#line 3321 "seclang-parser.cc" // lalr1.cc:870 +#line 3330 "seclang-parser.cc" // lalr1.cc:906 break; case 190: -#line 1989 "seclang-parser.yy" // lalr1.cc:870 +#line 1989 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3329 "seclang-parser.cc" // lalr1.cc:870 +#line 3338 "seclang-parser.cc" // lalr1.cc:906 break; case 191: -#line 1993 "seclang-parser.yy" // lalr1.cc:870 +#line 1993 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3337 "seclang-parser.cc" // lalr1.cc:870 +#line 3346 "seclang-parser.cc" // lalr1.cc:906 break; case 192: -#line 1997 "seclang-parser.yy" // lalr1.cc:870 +#line 1997 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_NoDictElement()); } -#line 3345 "seclang-parser.cc" // lalr1.cc:870 +#line 3354 "seclang-parser.cc" // lalr1.cc:906 break; case 193: -#line 2001 "seclang-parser.yy" // lalr1.cc:870 +#line 2001 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3353 "seclang-parser.cc" // lalr1.cc:870 +#line 3362 "seclang-parser.cc" // lalr1.cc:906 break; case 194: -#line 2005 "seclang-parser.yy" // lalr1.cc:870 +#line 2005 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3361 "seclang-parser.cc" // lalr1.cc:870 +#line 3370 "seclang-parser.cc" // lalr1.cc:906 break; case 195: -#line 2009 "seclang-parser.yy" // lalr1.cc:870 +#line 2009 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_NoDictElement()); } -#line 3369 "seclang-parser.cc" // lalr1.cc:870 +#line 3378 "seclang-parser.cc" // lalr1.cc:906 break; case 196: -#line 2013 "seclang-parser.yy" // lalr1.cc:870 +#line 2013 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3377 "seclang-parser.cc" // lalr1.cc:870 +#line 3386 "seclang-parser.cc" // lalr1.cc:906 break; case 197: -#line 2017 "seclang-parser.yy" // lalr1.cc:870 +#line 2017 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3385 "seclang-parser.cc" // lalr1.cc:870 +#line 3394 "seclang-parser.cc" // lalr1.cc:906 break; case 198: -#line 2021 "seclang-parser.yy" // lalr1.cc:870 +#line 2021 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_NoDictElement()); } -#line 3393 "seclang-parser.cc" // lalr1.cc:870 +#line 3402 "seclang-parser.cc" // lalr1.cc:906 break; case 199: -#line 2025 "seclang-parser.yy" // lalr1.cc:870 +#line 2025 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3401 "seclang-parser.cc" // lalr1.cc:870 +#line 3410 "seclang-parser.cc" // lalr1.cc:906 break; case 200: -#line 2029 "seclang-parser.yy" // lalr1.cc:870 +#line 2029 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3409 "seclang-parser.cc" // lalr1.cc:870 +#line 3418 "seclang-parser.cc" // lalr1.cc:906 break; case 201: -#line 2033 "seclang-parser.yy" // lalr1.cc:870 +#line 2033 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_NoDictElement()); } -#line 3417 "seclang-parser.cc" // lalr1.cc:870 +#line 3426 "seclang-parser.cc" // lalr1.cc:906 break; case 202: -#line 2037 "seclang-parser.yy" // lalr1.cc:870 +#line 2037 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3425 "seclang-parser.cc" // lalr1.cc:870 +#line 3434 "seclang-parser.cc" // lalr1.cc:906 break; case 203: -#line 2041 "seclang-parser.yy" // lalr1.cc:870 +#line 2041 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3433 "seclang-parser.cc" // lalr1.cc:870 +#line 3442 "seclang-parser.cc" // lalr1.cc:906 break; case 204: -#line 2045 "seclang-parser.yy" // lalr1.cc:870 +#line 2045 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_NoDictElement()); } -#line 3441 "seclang-parser.cc" // lalr1.cc:870 +#line 3450 "seclang-parser.cc" // lalr1.cc:906 break; case 205: -#line 2049 "seclang-parser.yy" // lalr1.cc:870 +#line 2049 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3449 "seclang-parser.cc" // lalr1.cc:870 +#line 3458 "seclang-parser.cc" // lalr1.cc:906 break; case 206: -#line 2053 "seclang-parser.yy" // lalr1.cc:870 +#line 2053 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3457 "seclang-parser.cc" // lalr1.cc:870 +#line 3466 "seclang-parser.cc" // lalr1.cc:906 break; case 207: -#line 2057 "seclang-parser.yy" // lalr1.cc:870 +#line 2057 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_NoDictElement()); } -#line 3465 "seclang-parser.cc" // lalr1.cc:870 +#line 3474 "seclang-parser.cc" // lalr1.cc:906 break; case 208: -#line 2061 "seclang-parser.yy" // lalr1.cc:870 +#line 2061 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3473 "seclang-parser.cc" // lalr1.cc:870 +#line 3482 "seclang-parser.cc" // lalr1.cc:906 break; case 209: -#line 2065 "seclang-parser.yy" // lalr1.cc:870 +#line 2065 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3481 "seclang-parser.cc" // lalr1.cc:870 +#line 3490 "seclang-parser.cc" // lalr1.cc:906 break; case 210: -#line 2069 "seclang-parser.yy" // lalr1.cc:870 +#line 2069 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_NoDictElement()); } -#line 3489 "seclang-parser.cc" // lalr1.cc:870 +#line 3498 "seclang-parser.cc" // lalr1.cc:906 break; case 211: -#line 2073 "seclang-parser.yy" // lalr1.cc:870 +#line 2073 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV:" + yystack_[0].value.as< std::string > ())); } -#line 3497 "seclang-parser.cc" // lalr1.cc:870 +#line 3506 "seclang-parser.cc" // lalr1.cc:906 break; case 212: -#line 2077 "seclang-parser.yy" // lalr1.cc:870 +#line 2077 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV:" + yystack_[0].value.as< std::string > ())); } -#line 3505 "seclang-parser.cc" // lalr1.cc:870 +#line 3514 "seclang-parser.cc" // lalr1.cc:906 break; case 213: -#line 2081 "seclang-parser.yy" // lalr1.cc:870 +#line 2081 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV")); } -#line 3513 "seclang-parser.cc" // lalr1.cc:870 +#line 3522 "seclang-parser.cc" // lalr1.cc:906 break; case 214: -#line 2085 "seclang-parser.yy" // lalr1.cc:870 +#line 2085 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML("XML:" + yystack_[0].value.as< std::string > ())); } -#line 3521 "seclang-parser.cc" // lalr1.cc:870 +#line 3530 "seclang-parser.cc" // lalr1.cc:906 break; case 215: -#line 2089 "seclang-parser.yy" // lalr1.cc:870 +#line 2089 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML("XML:" + yystack_[0].value.as< std::string > ())); } -#line 3529 "seclang-parser.cc" // lalr1.cc:870 +#line 3538 "seclang-parser.cc" // lalr1.cc:906 break; case 216: -#line 2093 "seclang-parser.yy" // lalr1.cc:870 +#line 2093 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML_NoDictElement()); } -#line 3537 "seclang-parser.cc" // lalr1.cc:870 +#line 3546 "seclang-parser.cc" // lalr1.cc:906 break; case 217: -#line 2097 "seclang-parser.yy" // lalr1.cc:870 +#line 2097 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3545 "seclang-parser.cc" // lalr1.cc:870 +#line 3554 "seclang-parser.cc" // lalr1.cc:906 break; case 218: -#line 2101 "seclang-parser.yy" // lalr1.cc:870 +#line 2101 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3553 "seclang-parser.cc" // lalr1.cc:870 +#line 3562 "seclang-parser.cc" // lalr1.cc:906 break; case 219: -#line 2105 "seclang-parser.yy" // lalr1.cc:870 +#line 2105 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpNames_NoDictElement()); } -#line 3561 "seclang-parser.cc" // lalr1.cc:870 +#line 3570 "seclang-parser.cc" // lalr1.cc:906 break; case 220: -#line 2109 "seclang-parser.yy" // lalr1.cc:870 +#line 2109 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Resource_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 3569 "seclang-parser.cc" // lalr1.cc:870 +#line 3578 "seclang-parser.cc" // lalr1.cc:906 break; case 221: -#line 2113 "seclang-parser.yy" // lalr1.cc:870 +#line 2113 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Resource_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3577 "seclang-parser.cc" // lalr1.cc:870 +#line 3586 "seclang-parser.cc" // lalr1.cc:906 break; case 222: -#line 2117 "seclang-parser.yy" // lalr1.cc:870 +#line 2117 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Resource_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3585 "seclang-parser.cc" // lalr1.cc:870 +#line 3594 "seclang-parser.cc" // lalr1.cc:906 break; case 223: -#line 2121 "seclang-parser.yy" // lalr1.cc:870 +#line 2121 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Resource_NoDictElement()); } -#line 3593 "seclang-parser.cc" // lalr1.cc:870 +#line 3602 "seclang-parser.cc" // lalr1.cc:906 break; case 224: -#line 2125 "seclang-parser.yy" // lalr1.cc:870 +#line 2125 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 3601 "seclang-parser.cc" // lalr1.cc:870 +#line 3610 "seclang-parser.cc" // lalr1.cc:906 break; case 225: -#line 2129 "seclang-parser.yy" // lalr1.cc:870 +#line 2129 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3609 "seclang-parser.cc" // lalr1.cc:870 +#line 3618 "seclang-parser.cc" // lalr1.cc:906 break; case 226: -#line 2133 "seclang-parser.yy" // lalr1.cc:870 +#line 2133 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3617 "seclang-parser.cc" // lalr1.cc:870 +#line 3626 "seclang-parser.cc" // lalr1.cc:906 break; case 227: -#line 2137 "seclang-parser.yy" // lalr1.cc:870 +#line 2137 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_NoDictElement()); } -#line 3625 "seclang-parser.cc" // lalr1.cc:870 +#line 3634 "seclang-parser.cc" // lalr1.cc:906 break; case 228: -#line 2141 "seclang-parser.yy" // lalr1.cc:870 +#line 2141 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 3633 "seclang-parser.cc" // lalr1.cc:870 +#line 3642 "seclang-parser.cc" // lalr1.cc:906 break; case 229: -#line 2145 "seclang-parser.yy" // lalr1.cc:870 +#line 2145 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3641 "seclang-parser.cc" // lalr1.cc:870 +#line 3650 "seclang-parser.cc" // lalr1.cc:906 break; case 230: -#line 2149 "seclang-parser.yy" // lalr1.cc:870 +#line 2149 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3649 "seclang-parser.cc" // lalr1.cc:870 +#line 3658 "seclang-parser.cc" // lalr1.cc:906 break; case 231: -#line 2153 "seclang-parser.yy" // lalr1.cc:870 +#line 2153 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_NoDictElement()); } -#line 3657 "seclang-parser.cc" // lalr1.cc:870 +#line 3666 "seclang-parser.cc" // lalr1.cc:906 break; case 232: -#line 2157 "seclang-parser.yy" // lalr1.cc:870 +#line 2157 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::User_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 3665 "seclang-parser.cc" // lalr1.cc:870 +#line 3674 "seclang-parser.cc" // lalr1.cc:906 break; case 233: -#line 2161 "seclang-parser.yy" // lalr1.cc:870 +#line 2161 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::User_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3673 "seclang-parser.cc" // lalr1.cc:870 +#line 3682 "seclang-parser.cc" // lalr1.cc:906 break; case 234: -#line 2165 "seclang-parser.yy" // lalr1.cc:870 +#line 2165 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::User_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3681 "seclang-parser.cc" // lalr1.cc:870 +#line 3690 "seclang-parser.cc" // lalr1.cc:906 break; case 235: -#line 2169 "seclang-parser.yy" // lalr1.cc:870 +#line 2169 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::User_NoDictElement()); } -#line 3689 "seclang-parser.cc" // lalr1.cc:870 +#line 3698 "seclang-parser.cc" // lalr1.cc:906 break; case 236: -#line 2173 "seclang-parser.yy" // lalr1.cc:870 +#line 2173 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 3697 "seclang-parser.cc" // lalr1.cc:870 +#line 3706 "seclang-parser.cc" // lalr1.cc:906 break; case 237: -#line 2177 "seclang-parser.yy" // lalr1.cc:870 +#line 2177 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3705 "seclang-parser.cc" // lalr1.cc:870 +#line 3714 "seclang-parser.cc" // lalr1.cc:906 break; case 238: -#line 2181 "seclang-parser.yy" // lalr1.cc:870 +#line 2181 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3713 "seclang-parser.cc" // lalr1.cc:870 +#line 3722 "seclang-parser.cc" // lalr1.cc:906 break; case 239: -#line 2185 "seclang-parser.yy" // lalr1.cc:870 +#line 2185 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_NoDictElement()); } -#line 3721 "seclang-parser.cc" // lalr1.cc:870 +#line 3730 "seclang-parser.cc" // lalr1.cc:906 break; case 240: -#line 2189 "seclang-parser.yy" // lalr1.cc:870 +#line 2189 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 3729 "seclang-parser.cc" // lalr1.cc:870 +#line 3738 "seclang-parser.cc" // lalr1.cc:906 break; case 241: -#line 2193 "seclang-parser.yy" // lalr1.cc:870 +#line 2193 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3737 "seclang-parser.cc" // lalr1.cc:870 +#line 3746 "seclang-parser.cc" // lalr1.cc:906 break; case 242: -#line 2197 "seclang-parser.yy" // lalr1.cc:870 +#line 2197 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3745 "seclang-parser.cc" // lalr1.cc:870 +#line 3754 "seclang-parser.cc" // lalr1.cc:906 break; case 243: -#line 2201 "seclang-parser.yy" // lalr1.cc:870 +#line 2201 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_NoDictElement()); } -#line 3753 "seclang-parser.cc" // lalr1.cc:870 +#line 3762 "seclang-parser.cc" // lalr1.cc:906 break; case 244: -#line 2205 "seclang-parser.yy" // lalr1.cc:870 +#line 2205 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3761 "seclang-parser.cc" // lalr1.cc:870 +#line 3770 "seclang-parser.cc" // lalr1.cc:906 break; case 245: -#line 2209 "seclang-parser.yy" // lalr1.cc:870 +#line 2209 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3769 "seclang-parser.cc" // lalr1.cc:870 +#line 3778 "seclang-parser.cc" // lalr1.cc:906 break; case 246: -#line 2213 "seclang-parser.yy" // lalr1.cc:870 +#line 2213 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsNames_NoDictElement()); } -#line 3777 "seclang-parser.cc" // lalr1.cc:870 +#line 3786 "seclang-parser.cc" // lalr1.cc:906 break; case 247: -#line 2217 "seclang-parser.yy" // lalr1.cc:870 +#line 2217 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGetNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3785 "seclang-parser.cc" // lalr1.cc:870 +#line 3794 "seclang-parser.cc" // lalr1.cc:906 break; case 248: -#line 2221 "seclang-parser.yy" // lalr1.cc:870 +#line 2221 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGetNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3793 "seclang-parser.cc" // lalr1.cc:870 +#line 3802 "seclang-parser.cc" // lalr1.cc:906 break; case 249: -#line 2225 "seclang-parser.yy" // lalr1.cc:870 +#line 2225 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGetNames_NoDictElement()); } -#line 3801 "seclang-parser.cc" // lalr1.cc:870 +#line 3810 "seclang-parser.cc" // lalr1.cc:906 break; case 250: -#line 2230 "seclang-parser.yy" // lalr1.cc:870 +#line 2230 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPostNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3809 "seclang-parser.cc" // lalr1.cc:870 +#line 3818 "seclang-parser.cc" // lalr1.cc:906 break; case 251: -#line 2234 "seclang-parser.yy" // lalr1.cc:870 +#line 2234 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPostNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3817 "seclang-parser.cc" // lalr1.cc:870 +#line 3826 "seclang-parser.cc" // lalr1.cc:906 break; case 252: -#line 2238 "seclang-parser.yy" // lalr1.cc:870 +#line 2238 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPostNames_NoDictElement()); } -#line 3825 "seclang-parser.cc" // lalr1.cc:870 +#line 3834 "seclang-parser.cc" // lalr1.cc:906 break; case 253: -#line 2243 "seclang-parser.yy" // lalr1.cc:870 +#line 2243 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeadersNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3833 "seclang-parser.cc" // lalr1.cc:870 +#line 3842 "seclang-parser.cc" // lalr1.cc:906 break; case 254: -#line 2247 "seclang-parser.yy" // lalr1.cc:870 +#line 2247 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeadersNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3841 "seclang-parser.cc" // lalr1.cc:870 +#line 3850 "seclang-parser.cc" // lalr1.cc:906 break; case 255: -#line 2251 "seclang-parser.yy" // lalr1.cc:870 +#line 2251 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeadersNames_NoDictElement()); } -#line 3849 "seclang-parser.cc" // lalr1.cc:870 +#line 3858 "seclang-parser.cc" // lalr1.cc:906 break; case 256: -#line 2256 "seclang-parser.yy" // lalr1.cc:870 +#line 2256 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseContentType()); } -#line 3857 "seclang-parser.cc" // lalr1.cc:870 +#line 3866 "seclang-parser.cc" // lalr1.cc:906 break; case 257: -#line 2261 "seclang-parser.yy" // lalr1.cc:870 +#line 2261 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeadersNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3865 "seclang-parser.cc" // lalr1.cc:870 +#line 3874 "seclang-parser.cc" // lalr1.cc:906 break; case 258: -#line 2265 "seclang-parser.yy" // lalr1.cc:870 +#line 2265 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeadersNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3873 "seclang-parser.cc" // lalr1.cc:870 +#line 3882 "seclang-parser.cc" // lalr1.cc:906 break; case 259: -#line 2269 "seclang-parser.yy" // lalr1.cc:870 +#line 2269 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeadersNames_NoDictElement()); } -#line 3881 "seclang-parser.cc" // lalr1.cc:870 +#line 3890 "seclang-parser.cc" // lalr1.cc:906 break; case 260: -#line 2273 "seclang-parser.yy" // lalr1.cc:870 +#line 2273 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsCombinedSize()); } -#line 3889 "seclang-parser.cc" // lalr1.cc:870 +#line 3898 "seclang-parser.cc" // lalr1.cc:906 break; case 261: -#line 2277 "seclang-parser.yy" // lalr1.cc:870 +#line 2277 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::AuthType()); } -#line 3897 "seclang-parser.cc" // lalr1.cc:870 +#line 3906 "seclang-parser.cc" // lalr1.cc:906 break; case 262: -#line 2281 "seclang-parser.yy" // lalr1.cc:870 +#line 2281 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesCombinedSize()); } -#line 3905 "seclang-parser.cc" // lalr1.cc:870 +#line 3914 "seclang-parser.cc" // lalr1.cc:906 break; case 263: -#line 2285 "seclang-parser.yy" // lalr1.cc:870 +#line 2285 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FullRequest()); } -#line 3913 "seclang-parser.cc" // lalr1.cc:870 +#line 3922 "seclang-parser.cc" // lalr1.cc:906 break; case 264: -#line 2289 "seclang-parser.yy" // lalr1.cc:870 +#line 2289 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FullRequestLength()); } -#line 3921 "seclang-parser.cc" // lalr1.cc:870 +#line 3930 "seclang-parser.cc" // lalr1.cc:906 break; case 265: -#line 2293 "seclang-parser.yy" // lalr1.cc:870 +#line 2293 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::InboundDataError()); } -#line 3929 "seclang-parser.cc" // lalr1.cc:870 +#line 3938 "seclang-parser.cc" // lalr1.cc:906 break; case 266: -#line 2297 "seclang-parser.yy" // lalr1.cc:870 +#line 2297 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVar()); } -#line 3937 "seclang-parser.cc" // lalr1.cc:870 +#line 3946 "seclang-parser.cc" // lalr1.cc:906 break; case 267: -#line 2301 "seclang-parser.yy" // lalr1.cc:870 +#line 2301 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarName()); } -#line 3945 "seclang-parser.cc" // lalr1.cc:870 +#line 3954 "seclang-parser.cc" // lalr1.cc:906 break; case 268: -#line 2305 "seclang-parser.yy" // lalr1.cc:870 +#line 2305 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartBoundaryQuoted()); } -#line 3953 "seclang-parser.cc" // lalr1.cc:870 +#line 3962 "seclang-parser.cc" // lalr1.cc:906 break; case 269: -#line 2309 "seclang-parser.yy" // lalr1.cc:870 +#line 2309 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartBoundaryWhiteSpace()); } -#line 3961 "seclang-parser.cc" // lalr1.cc:870 +#line 3970 "seclang-parser.cc" // lalr1.cc:906 break; case 270: -#line 2313 "seclang-parser.yy" // lalr1.cc:870 +#line 2313 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartCrlfLFLines()); } -#line 3969 "seclang-parser.cc" // lalr1.cc:870 +#line 3978 "seclang-parser.cc" // lalr1.cc:906 break; case 271: -#line 2317 "seclang-parser.yy" // lalr1.cc:870 +#line 2317 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartDateAfter()); } -#line 3977 "seclang-parser.cc" // lalr1.cc:870 +#line 3986 "seclang-parser.cc" // lalr1.cc:906 break; case 272: -#line 2321 "seclang-parser.yy" // lalr1.cc:870 +#line 2321 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartDateBefore()); } -#line 3985 "seclang-parser.cc" // lalr1.cc:870 +#line 3994 "seclang-parser.cc" // lalr1.cc:906 break; case 273: -#line 2325 "seclang-parser.yy" // lalr1.cc:870 +#line 2325 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartFileLimitExceeded()); } -#line 3993 "seclang-parser.cc" // lalr1.cc:870 +#line 4002 "seclang-parser.cc" // lalr1.cc:906 break; case 274: -#line 2329 "seclang-parser.yy" // lalr1.cc:870 +#line 2329 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartHeaderFolding()); } -#line 4001 "seclang-parser.cc" // lalr1.cc:870 +#line 4010 "seclang-parser.cc" // lalr1.cc:906 break; case 275: -#line 2333 "seclang-parser.yy" // lalr1.cc:870 +#line 2333 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartInvalidHeaderFolding()); } -#line 4009 "seclang-parser.cc" // lalr1.cc:870 +#line 4018 "seclang-parser.cc" // lalr1.cc:906 break; case 276: -#line 2337 "seclang-parser.yy" // lalr1.cc:870 +#line 2337 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartInvalidPart()); } -#line 4017 "seclang-parser.cc" // lalr1.cc:870 +#line 4026 "seclang-parser.cc" // lalr1.cc:906 break; case 277: -#line 2341 "seclang-parser.yy" // lalr1.cc:870 +#line 2341 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartInvalidQuoting()); } -#line 4025 "seclang-parser.cc" // lalr1.cc:870 +#line 4034 "seclang-parser.cc" // lalr1.cc:906 break; case 278: -#line 2345 "seclang-parser.yy" // lalr1.cc:870 +#line 2345 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartLFLine()); } -#line 4033 "seclang-parser.cc" // lalr1.cc:870 +#line 4042 "seclang-parser.cc" // lalr1.cc:906 break; case 279: -#line 2349 "seclang-parser.yy" // lalr1.cc:870 +#line 2349 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartMissingSemicolon()); } -#line 4041 "seclang-parser.cc" // lalr1.cc:870 +#line 4050 "seclang-parser.cc" // lalr1.cc:906 break; case 280: -#line 2353 "seclang-parser.yy" // lalr1.cc:870 +#line 2353 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartMissingSemicolon()); } -#line 4049 "seclang-parser.cc" // lalr1.cc:870 +#line 4058 "seclang-parser.cc" // lalr1.cc:906 break; case 281: -#line 2357 "seclang-parser.yy" // lalr1.cc:870 +#line 2357 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartStrictError()); } -#line 4057 "seclang-parser.cc" // lalr1.cc:870 +#line 4066 "seclang-parser.cc" // lalr1.cc:906 break; case 282: -#line 2361 "seclang-parser.yy" // lalr1.cc:870 +#line 2361 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartUnmatchedBoundary()); } -#line 4065 "seclang-parser.cc" // lalr1.cc:870 +#line 4074 "seclang-parser.cc" // lalr1.cc:906 break; case 283: -#line 2365 "seclang-parser.yy" // lalr1.cc:870 +#line 2365 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::OutboundDataError()); } -#line 4073 "seclang-parser.cc" // lalr1.cc:870 +#line 4082 "seclang-parser.cc" // lalr1.cc:906 break; case 284: -#line 2369 "seclang-parser.yy" // lalr1.cc:870 +#line 2369 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::PathInfo()); } -#line 4081 "seclang-parser.cc" // lalr1.cc:870 +#line 4090 "seclang-parser.cc" // lalr1.cc:906 break; case 285: -#line 2373 "seclang-parser.yy" // lalr1.cc:870 +#line 2373 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::QueryString()); } -#line 4089 "seclang-parser.cc" // lalr1.cc:870 +#line 4098 "seclang-parser.cc" // lalr1.cc:906 break; case 286: -#line 2377 "seclang-parser.yy" // lalr1.cc:870 +#line 2377 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RemoteAddr()); } -#line 4097 "seclang-parser.cc" // lalr1.cc:870 +#line 4106 "seclang-parser.cc" // lalr1.cc:906 break; case 287: -#line 2381 "seclang-parser.yy" // lalr1.cc:870 +#line 2381 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RemoteHost()); } -#line 4105 "seclang-parser.cc" // lalr1.cc:870 +#line 4114 "seclang-parser.cc" // lalr1.cc:906 break; case 288: -#line 2385 "seclang-parser.yy" // lalr1.cc:870 +#line 2385 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RemotePort()); } -#line 4113 "seclang-parser.cc" // lalr1.cc:870 +#line 4122 "seclang-parser.cc" // lalr1.cc:906 break; case 289: -#line 2389 "seclang-parser.yy" // lalr1.cc:870 +#line 2389 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyError()); } -#line 4121 "seclang-parser.cc" // lalr1.cc:870 +#line 4130 "seclang-parser.cc" // lalr1.cc:906 break; case 290: -#line 2393 "seclang-parser.yy" // lalr1.cc:870 +#line 2393 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyErrorMsg()); } -#line 4129 "seclang-parser.cc" // lalr1.cc:870 +#line 4138 "seclang-parser.cc" // lalr1.cc:906 break; case 291: -#line 2397 "seclang-parser.yy" // lalr1.cc:870 +#line 2397 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyProcessor()); } -#line 4137 "seclang-parser.cc" // lalr1.cc:870 +#line 4146 "seclang-parser.cc" // lalr1.cc:906 break; case 292: -#line 2401 "seclang-parser.yy" // lalr1.cc:870 +#line 2401 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyProcessorError()); } -#line 4145 "seclang-parser.cc" // lalr1.cc:870 +#line 4154 "seclang-parser.cc" // lalr1.cc:906 break; case 293: -#line 2405 "seclang-parser.yy" // lalr1.cc:870 +#line 2405 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyProcessorErrorMsg()); } -#line 4153 "seclang-parser.cc" // lalr1.cc:870 +#line 4162 "seclang-parser.cc" // lalr1.cc:906 break; case 294: -#line 2409 "seclang-parser.yy" // lalr1.cc:870 +#line 2409 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestBasename()); } -#line 4161 "seclang-parser.cc" // lalr1.cc:870 +#line 4170 "seclang-parser.cc" // lalr1.cc:906 break; case 295: -#line 2413 "seclang-parser.yy" // lalr1.cc:870 +#line 2413 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestBody()); } -#line 4169 "seclang-parser.cc" // lalr1.cc:870 +#line 4178 "seclang-parser.cc" // lalr1.cc:906 break; case 296: -#line 2417 "seclang-parser.yy" // lalr1.cc:870 +#line 2417 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestBodyLength()); } -#line 4177 "seclang-parser.cc" // lalr1.cc:870 +#line 4186 "seclang-parser.cc" // lalr1.cc:906 break; case 297: -#line 2421 "seclang-parser.yy" // lalr1.cc:870 +#line 2421 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestFilename()); } -#line 4185 "seclang-parser.cc" // lalr1.cc:870 +#line 4194 "seclang-parser.cc" // lalr1.cc:906 break; case 298: -#line 2425 "seclang-parser.yy" // lalr1.cc:870 +#line 2425 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestLine()); } -#line 4193 "seclang-parser.cc" // lalr1.cc:870 +#line 4202 "seclang-parser.cc" // lalr1.cc:906 break; case 299: -#line 2429 "seclang-parser.yy" // lalr1.cc:870 +#line 2429 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestMethod()); } -#line 4201 "seclang-parser.cc" // lalr1.cc:870 +#line 4210 "seclang-parser.cc" // lalr1.cc:906 break; case 300: -#line 2433 "seclang-parser.yy" // lalr1.cc:870 +#line 2433 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestProtocol()); } -#line 4209 "seclang-parser.cc" // lalr1.cc:870 +#line 4218 "seclang-parser.cc" // lalr1.cc:906 break; case 301: -#line 2437 "seclang-parser.yy" // lalr1.cc:870 +#line 2437 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestURI()); } -#line 4217 "seclang-parser.cc" // lalr1.cc:870 +#line 4226 "seclang-parser.cc" // lalr1.cc:906 break; case 302: -#line 2441 "seclang-parser.yy" // lalr1.cc:870 +#line 2441 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestURIRaw()); } -#line 4225 "seclang-parser.cc" // lalr1.cc:870 +#line 4234 "seclang-parser.cc" // lalr1.cc:906 break; case 303: -#line 2445 "seclang-parser.yy" // lalr1.cc:870 +#line 2445 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseBody()); } -#line 4233 "seclang-parser.cc" // lalr1.cc:870 +#line 4242 "seclang-parser.cc" // lalr1.cc:906 break; case 304: -#line 2449 "seclang-parser.yy" // lalr1.cc:870 +#line 2449 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseContentLength()); } -#line 4241 "seclang-parser.cc" // lalr1.cc:870 +#line 4250 "seclang-parser.cc" // lalr1.cc:906 break; case 305: -#line 2453 "seclang-parser.yy" // lalr1.cc:870 +#line 2453 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseProtocol()); } -#line 4249 "seclang-parser.cc" // lalr1.cc:870 +#line 4258 "seclang-parser.cc" // lalr1.cc:906 break; case 306: -#line 2457 "seclang-parser.yy" // lalr1.cc:870 +#line 2457 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseStatus()); } -#line 4257 "seclang-parser.cc" // lalr1.cc:870 +#line 4266 "seclang-parser.cc" // lalr1.cc:906 break; case 307: -#line 2461 "seclang-parser.yy" // lalr1.cc:870 +#line 2461 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ServerAddr()); } -#line 4265 "seclang-parser.cc" // lalr1.cc:870 +#line 4274 "seclang-parser.cc" // lalr1.cc:906 break; case 308: -#line 2465 "seclang-parser.yy" // lalr1.cc:870 +#line 2465 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ServerName()); } -#line 4273 "seclang-parser.cc" // lalr1.cc:870 +#line 4282 "seclang-parser.cc" // lalr1.cc:906 break; case 309: -#line 2469 "seclang-parser.yy" // lalr1.cc:870 +#line 2469 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ServerPort()); } -#line 4281 "seclang-parser.cc" // lalr1.cc:870 +#line 4290 "seclang-parser.cc" // lalr1.cc:906 break; case 310: -#line 2473 "seclang-parser.yy" // lalr1.cc:870 +#line 2473 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::SessionID()); } -#line 4289 "seclang-parser.cc" // lalr1.cc:870 +#line 4298 "seclang-parser.cc" // lalr1.cc:906 break; case 311: -#line 2477 "seclang-parser.yy" // lalr1.cc:870 +#line 2477 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::UniqueID()); } -#line 4297 "seclang-parser.cc" // lalr1.cc:870 +#line 4306 "seclang-parser.cc" // lalr1.cc:906 break; case 312: -#line 2481 "seclang-parser.yy" // lalr1.cc:870 +#line 2481 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::UrlEncodedError()); } -#line 4305 "seclang-parser.cc" // lalr1.cc:870 +#line 4314 "seclang-parser.cc" // lalr1.cc:906 break; case 313: -#line 2485 "seclang-parser.yy" // lalr1.cc:870 +#line 2485 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::UserID()); } -#line 4313 "seclang-parser.cc" // lalr1.cc:870 +#line 4322 "seclang-parser.cc" // lalr1.cc:906 break; case 314: -#line 2489 "seclang-parser.yy" // lalr1.cc:870 +#line 2489 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Status()); } -#line 4321 "seclang-parser.cc" // lalr1.cc:870 +#line 4330 "seclang-parser.cc" // lalr1.cc:906 break; case 315: -#line 2493 "seclang-parser.yy" // lalr1.cc:870 +#line 2493 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Status()); } -#line 4329 "seclang-parser.cc" // lalr1.cc:870 +#line 4338 "seclang-parser.cc" // lalr1.cc:906 break; case 316: -#line 2497 "seclang-parser.yy" // lalr1.cc:870 +#line 2497 "seclang-parser.yy" // lalr1.cc:906 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::WebAppId()); } -#line 4337 "seclang-parser.cc" // lalr1.cc:870 +#line 4346 "seclang-parser.cc" // lalr1.cc:906 break; case 317: -#line 2501 "seclang-parser.yy" // lalr1.cc:870 +#line 2501 "seclang-parser.yy" // lalr1.cc:906 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); std::unique_ptr c(new Duration(name)); yylhs.value.as< std::unique_ptr > () = std::move(c); } -#line 4348 "seclang-parser.cc" // lalr1.cc:870 +#line 4357 "seclang-parser.cc" // lalr1.cc:906 break; case 318: -#line 2509 "seclang-parser.yy" // lalr1.cc:870 +#line 2509 "seclang-parser.yy" // lalr1.cc:906 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); std::unique_ptr c(new ModsecBuild(name)); yylhs.value.as< std::unique_ptr > () = std::move(c); } -#line 4359 "seclang-parser.cc" // lalr1.cc:870 +#line 4368 "seclang-parser.cc" // lalr1.cc:906 break; case 319: -#line 2516 "seclang-parser.yy" // lalr1.cc:870 +#line 2516 "seclang-parser.yy" // lalr1.cc:906 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); std::unique_ptr c(new HighestSeverity(name)); yylhs.value.as< std::unique_ptr > () = std::move(c); } -#line 4370 "seclang-parser.cc" // lalr1.cc:870 +#line 4379 "seclang-parser.cc" // lalr1.cc:906 break; case 320: -#line 2523 "seclang-parser.yy" // lalr1.cc:870 +#line 2523 "seclang-parser.yy" // lalr1.cc:906 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); std::unique_ptr c(new RemoteUser(name)); yylhs.value.as< std::unique_ptr > () = std::move(c); } -#line 4381 "seclang-parser.cc" // lalr1.cc:870 +#line 4390 "seclang-parser.cc" // lalr1.cc:906 break; case 321: -#line 2530 "seclang-parser.yy" // lalr1.cc:870 +#line 2530 "seclang-parser.yy" // lalr1.cc:906 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); std::unique_ptr c(new Time(name)); yylhs.value.as< std::unique_ptr > () = std::move(c); } -#line 4392 "seclang-parser.cc" // lalr1.cc:870 +#line 4401 "seclang-parser.cc" // lalr1.cc:906 break; case 322: -#line 2537 "seclang-parser.yy" // lalr1.cc:870 +#line 2537 "seclang-parser.yy" // lalr1.cc:906 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeDay(name)); yylhs.value.as< std::unique_ptr > () = std::move(c); } -#line 4403 "seclang-parser.cc" // lalr1.cc:870 +#line 4412 "seclang-parser.cc" // lalr1.cc:906 break; case 323: -#line 2544 "seclang-parser.yy" // lalr1.cc:870 +#line 2544 "seclang-parser.yy" // lalr1.cc:906 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeEpoch(name)); yylhs.value.as< std::unique_ptr > () = std::move(c); } -#line 4414 "seclang-parser.cc" // lalr1.cc:870 +#line 4423 "seclang-parser.cc" // lalr1.cc:906 break; case 324: -#line 2551 "seclang-parser.yy" // lalr1.cc:870 +#line 2551 "seclang-parser.yy" // lalr1.cc:906 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeHour(name)); yylhs.value.as< std::unique_ptr > () = std::move(c); } -#line 4425 "seclang-parser.cc" // lalr1.cc:870 +#line 4434 "seclang-parser.cc" // lalr1.cc:906 break; case 325: -#line 2558 "seclang-parser.yy" // lalr1.cc:870 +#line 2558 "seclang-parser.yy" // lalr1.cc:906 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeMin(name)); yylhs.value.as< std::unique_ptr > () = std::move(c); } -#line 4436 "seclang-parser.cc" // lalr1.cc:870 +#line 4445 "seclang-parser.cc" // lalr1.cc:906 break; case 326: -#line 2565 "seclang-parser.yy" // lalr1.cc:870 +#line 2565 "seclang-parser.yy" // lalr1.cc:906 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeMon(name)); yylhs.value.as< std::unique_ptr > () = std::move(c); } -#line 4447 "seclang-parser.cc" // lalr1.cc:870 +#line 4456 "seclang-parser.cc" // lalr1.cc:906 break; case 327: -#line 2572 "seclang-parser.yy" // lalr1.cc:870 +#line 2572 "seclang-parser.yy" // lalr1.cc:906 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeSec(name)); yylhs.value.as< std::unique_ptr > () = std::move(c); } -#line 4458 "seclang-parser.cc" // lalr1.cc:870 +#line 4467 "seclang-parser.cc" // lalr1.cc:906 break; case 328: -#line 2579 "seclang-parser.yy" // lalr1.cc:870 +#line 2579 "seclang-parser.yy" // lalr1.cc:906 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeWDay(name)); yylhs.value.as< std::unique_ptr > () = std::move(c); } -#line 4469 "seclang-parser.cc" // lalr1.cc:870 +#line 4478 "seclang-parser.cc" // lalr1.cc:906 break; case 329: -#line 2586 "seclang-parser.yy" // lalr1.cc:870 +#line 2586 "seclang-parser.yy" // lalr1.cc:906 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeYear(name)); yylhs.value.as< std::unique_ptr > () = std::move(c); } -#line 4480 "seclang-parser.cc" // lalr1.cc:870 +#line 4489 "seclang-parser.cc" // lalr1.cc:906 break; case 330: -#line 2596 "seclang-parser.yy" // lalr1.cc:870 +#line 2596 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Accuracy(yystack_[0].value.as< std::string > ())); } -#line 4488 "seclang-parser.cc" // lalr1.cc:870 +#line 4497 "seclang-parser.cc" // lalr1.cc:906 break; case 331: -#line 2600 "seclang-parser.yy" // lalr1.cc:870 +#line 2600 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Allow(yystack_[0].value.as< std::string > ())); } -#line 4496 "seclang-parser.cc" // lalr1.cc:870 +#line 4505 "seclang-parser.cc" // lalr1.cc:906 break; case 332: -#line 2604 "seclang-parser.yy" // lalr1.cc:870 +#line 2604 "seclang-parser.yy" // lalr1.cc:906 { ACTION_NOT_SUPPORTED("Append", yystack_[1].location); } -#line 4504 "seclang-parser.cc" // lalr1.cc:870 +#line 4513 "seclang-parser.cc" // lalr1.cc:906 break; case 333: -#line 2608 "seclang-parser.yy" // lalr1.cc:870 +#line 2608 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::AuditLog(yystack_[0].value.as< std::string > ())); } -#line 4512 "seclang-parser.cc" // lalr1.cc:870 +#line 4521 "seclang-parser.cc" // lalr1.cc:906 break; case 334: -#line 2612 "seclang-parser.yy" // lalr1.cc:870 +#line 2612 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Block(yystack_[0].value.as< std::string > ())); } -#line 4520 "seclang-parser.cc" // lalr1.cc:870 +#line 4529 "seclang-parser.cc" // lalr1.cc:906 break; case 335: -#line 2616 "seclang-parser.yy" // lalr1.cc:870 +#line 2616 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Capture(yystack_[0].value.as< std::string > ())); } -#line 4528 "seclang-parser.cc" // lalr1.cc:870 +#line 4537 "seclang-parser.cc" // lalr1.cc:906 break; case 336: -#line 2620 "seclang-parser.yy" // lalr1.cc:870 +#line 2620 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Chain(yystack_[0].value.as< std::string > ())); } -#line 4536 "seclang-parser.cc" // lalr1.cc:870 +#line 4545 "seclang-parser.cc" // lalr1.cc:906 break; case 337: -#line 2624 "seclang-parser.yy" // lalr1.cc:870 +#line 2624 "seclang-parser.yy" // lalr1.cc:906 { //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 4545 "seclang-parser.cc" // lalr1.cc:870 +#line 4554 "seclang-parser.cc" // lalr1.cc:906 break; case 338: -#line 2629 "seclang-parser.yy" // lalr1.cc:870 +#line 2629 "seclang-parser.yy" // lalr1.cc:906 { //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 4554 "seclang-parser.cc" // lalr1.cc:870 +#line 4563 "seclang-parser.cc" // lalr1.cc:906 break; case 339: -#line 2634 "seclang-parser.yy" // lalr1.cc:870 +#line 2634 "seclang-parser.yy" // lalr1.cc:906 { //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 4563 "seclang-parser.cc" // lalr1.cc:870 +#line 4572 "seclang-parser.cc" // lalr1.cc:906 break; case 340: -#line 2639 "seclang-parser.yy" // lalr1.cc:870 +#line 2639 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::AuditLogParts(yystack_[0].value.as< std::string > ())); } -#line 4571 "seclang-parser.cc" // lalr1.cc:870 +#line 4580 "seclang-parser.cc" // lalr1.cc:906 break; case 341: -#line 2643 "seclang-parser.yy" // lalr1.cc:870 +#line 2643 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyProcessorJSON(yystack_[0].value.as< std::string > ())); } -#line 4579 "seclang-parser.cc" // lalr1.cc:870 +#line 4588 "seclang-parser.cc" // lalr1.cc:906 break; case 342: -#line 2647 "seclang-parser.yy" // lalr1.cc:870 +#line 2647 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyProcessorXML(yystack_[0].value.as< std::string > ())); } -#line 4587 "seclang-parser.cc" // lalr1.cc:870 +#line 4596 "seclang-parser.cc" // lalr1.cc:906 break; case 343: -#line 2651 "seclang-parser.yy" // lalr1.cc:870 +#line 2651 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyProcessorURLENCODED(yystack_[0].value.as< std::string > ())); } -#line 4595 "seclang-parser.cc" // lalr1.cc:870 +#line 4604 "seclang-parser.cc" // lalr1.cc:906 break; case 344: -#line 2655 "seclang-parser.yy" // lalr1.cc:870 +#line 2655 "seclang-parser.yy" // lalr1.cc:906 { //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 4604 "seclang-parser.cc" // lalr1.cc:870 +#line 4613 "seclang-parser.cc" // lalr1.cc:906 break; case 345: -#line 2660 "seclang-parser.yy" // lalr1.cc:870 +#line 2660 "seclang-parser.yy" // lalr1.cc:906 { //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 4613 "seclang-parser.cc" // lalr1.cc:870 +#line 4622 "seclang-parser.cc" // lalr1.cc:906 break; case 346: -#line 2665 "seclang-parser.yy" // lalr1.cc:870 +#line 2665 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as< std::string > () + "true")); } -#line 4621 "seclang-parser.cc" // lalr1.cc:870 +#line 4630 "seclang-parser.cc" // lalr1.cc:906 break; case 347: -#line 2669 "seclang-parser.yy" // lalr1.cc:870 +#line 2669 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as< std::string > () + "false")); } -#line 4629 "seclang-parser.cc" // lalr1.cc:870 +#line 4638 "seclang-parser.cc" // lalr1.cc:906 break; case 348: -#line 2673 "seclang-parser.yy" // lalr1.cc:870 +#line 2673 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=on")); } -#line 4637 "seclang-parser.cc" // lalr1.cc:870 +#line 4646 "seclang-parser.cc" // lalr1.cc:906 break; case 349: -#line 2677 "seclang-parser.yy" // lalr1.cc:870 +#line 2677 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=off")); } -#line 4645 "seclang-parser.cc" // lalr1.cc:870 +#line 4654 "seclang-parser.cc" // lalr1.cc:906 break; case 350: -#line 2681 "seclang-parser.yy" // lalr1.cc:870 +#line 2681 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=detectiononly")); } -#line 4653 "seclang-parser.cc" // lalr1.cc:870 +#line 4662 "seclang-parser.cc" // lalr1.cc:906 break; case 351: -#line 2685 "seclang-parser.yy" // lalr1.cc:870 +#line 2685 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveById(yystack_[0].value.as< std::string > ())); } -#line 4661 "seclang-parser.cc" // lalr1.cc:870 +#line 4670 "seclang-parser.cc" // lalr1.cc:906 break; case 352: -#line 2689 "seclang-parser.yy" // lalr1.cc:870 +#line 2689 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveByTag(yystack_[0].value.as< std::string > ())); } -#line 4669 "seclang-parser.cc" // lalr1.cc:870 +#line 4678 "seclang-parser.cc" // lalr1.cc:906 break; case 353: -#line 2693 "seclang-parser.yy" // lalr1.cc:870 +#line 2693 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveTargetById(yystack_[0].value.as< std::string > ())); } -#line 4677 "seclang-parser.cc" // lalr1.cc:870 +#line 4686 "seclang-parser.cc" // lalr1.cc:906 break; case 354: -#line 2697 "seclang-parser.yy" // lalr1.cc:870 +#line 2697 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveTargetByTag(yystack_[0].value.as< std::string > ())); } -#line 4685 "seclang-parser.cc" // lalr1.cc:870 +#line 4694 "seclang-parser.cc" // lalr1.cc:906 break; case 355: -#line 2701 "seclang-parser.yy" // lalr1.cc:870 +#line 2701 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Deny(yystack_[0].value.as< std::string > ())); } -#line 4693 "seclang-parser.cc" // lalr1.cc:870 +#line 4702 "seclang-parser.cc" // lalr1.cc:906 break; case 356: -#line 2705 "seclang-parser.yy" // lalr1.cc:870 +#line 2705 "seclang-parser.yy" // lalr1.cc:906 { ACTION_NOT_SUPPORTED("DeprecateVar", yystack_[1].location); } -#line 4701 "seclang-parser.cc" // lalr1.cc:870 +#line 4710 "seclang-parser.cc" // lalr1.cc:906 break; case 357: -#line 2709 "seclang-parser.yy" // lalr1.cc:870 +#line 2709 "seclang-parser.yy" // lalr1.cc:906 { //ACTION_NOT_SUPPORTED("Drop", @0); ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[0].value.as< std::string > ())); } -#line 4710 "seclang-parser.cc" // lalr1.cc:870 +#line 4719 "seclang-parser.cc" // lalr1.cc:906 break; case 358: -#line 2714 "seclang-parser.yy" // lalr1.cc:870 +#line 2714 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Exec(yystack_[0].value.as< std::string > ())); } -#line 4718 "seclang-parser.cc" // lalr1.cc:870 +#line 4727 "seclang-parser.cc" // lalr1.cc:906 break; case 359: -#line 2718 "seclang-parser.yy" // lalr1.cc:870 +#line 2718 "seclang-parser.yy" // lalr1.cc:906 { //ACTION_NOT_SUPPORTED("ExpireVar", @0); ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[0].value.as< std::string > ())); } -#line 4727 "seclang-parser.cc" // lalr1.cc:870 +#line 4736 "seclang-parser.cc" // lalr1.cc:906 break; case 360: -#line 2723 "seclang-parser.yy" // lalr1.cc:870 +#line 2723 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::RuleId(yystack_[0].value.as< std::string > ())); } -#line 4735 "seclang-parser.cc" // lalr1.cc:870 +#line 4744 "seclang-parser.cc" // lalr1.cc:906 break; case 361: -#line 2727 "seclang-parser.yy" // lalr1.cc:870 +#line 2727 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::InitCol(yystack_[1].value.as< std::string > (), std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4743 "seclang-parser.cc" // lalr1.cc:870 +#line 4752 "seclang-parser.cc" // lalr1.cc:906 break; case 362: -#line 2731 "seclang-parser.yy" // lalr1.cc:870 +#line 2731 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::LogData(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4751 "seclang-parser.cc" // lalr1.cc:870 +#line 4760 "seclang-parser.cc" // lalr1.cc:906 break; case 363: -#line 2735 "seclang-parser.yy" // lalr1.cc:870 +#line 2735 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Log(yystack_[0].value.as< std::string > ())); } -#line 4759 "seclang-parser.cc" // lalr1.cc:870 +#line 4768 "seclang-parser.cc" // lalr1.cc:906 break; case 364: -#line 2739 "seclang-parser.yy" // lalr1.cc:870 +#line 2739 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Maturity(yystack_[0].value.as< std::string > ())); } -#line 4767 "seclang-parser.cc" // lalr1.cc:870 +#line 4776 "seclang-parser.cc" // lalr1.cc:906 break; case 365: -#line 2743 "seclang-parser.yy" // lalr1.cc:870 +#line 2743 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Msg(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4775 "seclang-parser.cc" // lalr1.cc:870 +#line 4784 "seclang-parser.cc" // lalr1.cc:906 break; case 366: -#line 2747 "seclang-parser.yy" // lalr1.cc:870 +#line 2747 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::MultiMatch(yystack_[0].value.as< std::string > ())); } -#line 4783 "seclang-parser.cc" // lalr1.cc:870 +#line 4792 "seclang-parser.cc" // lalr1.cc:906 break; case 367: -#line 2751 "seclang-parser.yy" // lalr1.cc:870 +#line 2751 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::NoAuditLog(yystack_[0].value.as< std::string > ())); } -#line 4791 "seclang-parser.cc" // lalr1.cc:870 +#line 4800 "seclang-parser.cc" // lalr1.cc:906 break; case 368: -#line 2755 "seclang-parser.yy" // lalr1.cc:870 +#line 2755 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::NoLog(yystack_[0].value.as< std::string > ())); } -#line 4799 "seclang-parser.cc" // lalr1.cc:870 +#line 4808 "seclang-parser.cc" // lalr1.cc:906 break; case 369: -#line 2759 "seclang-parser.yy" // lalr1.cc:870 +#line 2759 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Pass(yystack_[0].value.as< std::string > ())); } -#line 4807 "seclang-parser.cc" // lalr1.cc:870 +#line 4816 "seclang-parser.cc" // lalr1.cc:906 break; case 370: -#line 2763 "seclang-parser.yy" // lalr1.cc:870 +#line 2763 "seclang-parser.yy" // lalr1.cc:906 { ACTION_NOT_SUPPORTED("Pause", yystack_[1].location); } -#line 4815 "seclang-parser.cc" // lalr1.cc:870 +#line 4824 "seclang-parser.cc" // lalr1.cc:906 break; case 371: -#line 2767 "seclang-parser.yy" // lalr1.cc:870 +#line 2767 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Phase(yystack_[0].value.as< std::string > ())); } -#line 4823 "seclang-parser.cc" // lalr1.cc:870 +#line 4832 "seclang-parser.cc" // lalr1.cc:906 break; case 372: -#line 2771 "seclang-parser.yy" // lalr1.cc:870 +#line 2771 "seclang-parser.yy" // lalr1.cc:906 { ACTION_NOT_SUPPORTED("Prepend", yystack_[1].location); } -#line 4831 "seclang-parser.cc" // lalr1.cc:870 +#line 4840 "seclang-parser.cc" // lalr1.cc:906 break; case 373: -#line 2775 "seclang-parser.yy" // lalr1.cc:870 +#line 2775 "seclang-parser.yy" // lalr1.cc:906 { ACTION_NOT_SUPPORTED("Proxy", yystack_[1].location); } -#line 4839 "seclang-parser.cc" // lalr1.cc:870 +#line 4848 "seclang-parser.cc" // lalr1.cc:906 break; case 374: -#line 2779 "seclang-parser.yy" // lalr1.cc:870 +#line 2779 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Redirect(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4847 "seclang-parser.cc" // lalr1.cc:870 +#line 4856 "seclang-parser.cc" // lalr1.cc:906 break; case 375: -#line 2783 "seclang-parser.yy" // lalr1.cc:870 +#line 2783 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Rev(yystack_[0].value.as< std::string > ())); } -#line 4855 "seclang-parser.cc" // lalr1.cc:870 +#line 4864 "seclang-parser.cc" // lalr1.cc:906 break; case 376: -#line 2787 "seclang-parser.yy" // lalr1.cc:870 +#line 2787 "seclang-parser.yy" // lalr1.cc:906 { ACTION_NOT_SUPPORTED("SanitiseArg", yystack_[1].location); } -#line 4863 "seclang-parser.cc" // lalr1.cc:870 +#line 4872 "seclang-parser.cc" // lalr1.cc:906 break; case 377: -#line 2791 "seclang-parser.yy" // lalr1.cc:870 +#line 2791 "seclang-parser.yy" // lalr1.cc:906 { ACTION_NOT_SUPPORTED("SanitiseMatched", yystack_[1].location); } -#line 4871 "seclang-parser.cc" // lalr1.cc:870 +#line 4880 "seclang-parser.cc" // lalr1.cc:906 break; case 378: -#line 2795 "seclang-parser.yy" // lalr1.cc:870 +#line 2795 "seclang-parser.yy" // lalr1.cc:906 { ACTION_NOT_SUPPORTED("SanitiseMatchedBytes", yystack_[1].location); } -#line 4879 "seclang-parser.cc" // lalr1.cc:870 +#line 4888 "seclang-parser.cc" // lalr1.cc:906 break; case 379: -#line 2799 "seclang-parser.yy" // lalr1.cc:870 +#line 2799 "seclang-parser.yy" // lalr1.cc:906 { ACTION_NOT_SUPPORTED("SanitiseRequestHeader", yystack_[1].location); } -#line 4887 "seclang-parser.cc" // lalr1.cc:870 +#line 4896 "seclang-parser.cc" // lalr1.cc:906 break; case 380: -#line 2803 "seclang-parser.yy" // lalr1.cc:870 +#line 2803 "seclang-parser.yy" // lalr1.cc:906 { ACTION_NOT_SUPPORTED("SanitiseResponseHeader", yystack_[1].location); } -#line 4895 "seclang-parser.cc" // lalr1.cc:870 +#line 4904 "seclang-parser.cc" // lalr1.cc:906 break; case 381: -#line 2807 "seclang-parser.yy" // lalr1.cc:870 +#line 2807 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetENV(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4903 "seclang-parser.cc" // lalr1.cc:870 +#line 4912 "seclang-parser.cc" // lalr1.cc:906 break; case 382: -#line 2811 "seclang-parser.yy" // lalr1.cc:870 +#line 2811 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetRSC(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4911 "seclang-parser.cc" // lalr1.cc:870 +#line 4920 "seclang-parser.cc" // lalr1.cc:906 break; case 383: -#line 2815 "seclang-parser.yy" // lalr1.cc:870 +#line 2815 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetSID(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4919 "seclang-parser.cc" // lalr1.cc:870 +#line 4928 "seclang-parser.cc" // lalr1.cc:906 break; case 384: -#line 2819 "seclang-parser.yy" // lalr1.cc:870 +#line 2819 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetUID(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4927 "seclang-parser.cc" // lalr1.cc:870 +#line 4936 "seclang-parser.cc" // lalr1.cc:906 break; case 385: -#line 2823 "seclang-parser.yy" // lalr1.cc:870 +#line 2823 "seclang-parser.yy" // lalr1.cc:906 { yylhs.value.as< std::unique_ptr > () = std::move(yystack_[0].value.as< std::unique_ptr > ()); } -#line 4935 "seclang-parser.cc" // lalr1.cc:870 +#line 4944 "seclang-parser.cc" // lalr1.cc:906 break; case 386: -#line 2827 "seclang-parser.yy" // lalr1.cc:870 +#line 2827 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Severity(yystack_[0].value.as< std::string > ())); } -#line 4943 "seclang-parser.cc" // lalr1.cc:870 +#line 4952 "seclang-parser.cc" // lalr1.cc:906 break; case 387: -#line 2831 "seclang-parser.yy" // lalr1.cc:870 +#line 2831 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Skip(yystack_[0].value.as< std::string > ())); } -#line 4951 "seclang-parser.cc" // lalr1.cc:870 +#line 4960 "seclang-parser.cc" // lalr1.cc:906 break; case 388: -#line 2835 "seclang-parser.yy" // lalr1.cc:870 +#line 2835 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SkipAfter(yystack_[0].value.as< std::string > ())); } -#line 4959 "seclang-parser.cc" // lalr1.cc:870 +#line 4968 "seclang-parser.cc" // lalr1.cc:906 break; case 389: -#line 2839 "seclang-parser.yy" // lalr1.cc:870 +#line 2839 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::data::Status(yystack_[0].value.as< std::string > ())); } -#line 4967 "seclang-parser.cc" // lalr1.cc:870 +#line 4976 "seclang-parser.cc" // lalr1.cc:906 break; case 390: -#line 2843 "seclang-parser.yy" // lalr1.cc:870 +#line 2843 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Tag(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4975 "seclang-parser.cc" // lalr1.cc:870 +#line 4984 "seclang-parser.cc" // lalr1.cc:906 break; case 391: -#line 2847 "seclang-parser.yy" // lalr1.cc:870 +#line 2847 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Ver(yystack_[0].value.as< std::string > ())); } -#line 4983 "seclang-parser.cc" // lalr1.cc:870 +#line 4992 "seclang-parser.cc" // lalr1.cc:906 break; case 392: -#line 2851 "seclang-parser.yy" // lalr1.cc:870 +#line 2851 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::XmlNS(yystack_[0].value.as< std::string > ())); } -#line 4991 "seclang-parser.cc" // lalr1.cc:870 +#line 5000 "seclang-parser.cc" // lalr1.cc:906 break; case 393: -#line 2855 "seclang-parser.yy" // lalr1.cc:870 +#line 2855 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ParityZero7bit(yystack_[0].value.as< std::string > ())); } -#line 4999 "seclang-parser.cc" // lalr1.cc:870 +#line 5008 "seclang-parser.cc" // lalr1.cc:906 break; case 394: -#line 2859 "seclang-parser.yy" // lalr1.cc:870 +#line 2859 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ParityOdd7bit(yystack_[0].value.as< std::string > ())); } -#line 5007 "seclang-parser.cc" // lalr1.cc:870 +#line 5016 "seclang-parser.cc" // lalr1.cc:906 break; case 395: -#line 2863 "seclang-parser.yy" // lalr1.cc:870 +#line 2863 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ParityEven7bit(yystack_[0].value.as< std::string > ())); } -#line 5015 "seclang-parser.cc" // lalr1.cc:870 +#line 5024 "seclang-parser.cc" // lalr1.cc:906 break; case 396: -#line 2867 "seclang-parser.yy" // lalr1.cc:870 +#line 2867 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::SqlHexDecode(yystack_[0].value.as< std::string > ())); } -#line 5023 "seclang-parser.cc" // lalr1.cc:870 +#line 5032 "seclang-parser.cc" // lalr1.cc:906 break; case 397: -#line 2871 "seclang-parser.yy" // lalr1.cc:870 +#line 2871 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Base64Encode(yystack_[0].value.as< std::string > ())); } -#line 5031 "seclang-parser.cc" // lalr1.cc:870 +#line 5040 "seclang-parser.cc" // lalr1.cc:906 break; case 398: -#line 2875 "seclang-parser.yy" // lalr1.cc:870 +#line 2875 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Base64Decode(yystack_[0].value.as< std::string > ())); } -#line 5039 "seclang-parser.cc" // lalr1.cc:870 +#line 5048 "seclang-parser.cc" // lalr1.cc:906 break; case 399: -#line 2879 "seclang-parser.yy" // lalr1.cc:870 +#line 2879 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Base64DecodeExt(yystack_[0].value.as< std::string > ())); } -#line 5047 "seclang-parser.cc" // lalr1.cc:870 +#line 5056 "seclang-parser.cc" // lalr1.cc:906 break; case 400: -#line 2883 "seclang-parser.yy" // lalr1.cc:870 +#line 2883 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::CmdLine(yystack_[0].value.as< std::string > ())); } -#line 5055 "seclang-parser.cc" // lalr1.cc:870 +#line 5064 "seclang-parser.cc" // lalr1.cc:906 break; case 401: -#line 2887 "seclang-parser.yy" // lalr1.cc:870 +#line 2887 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Sha1(yystack_[0].value.as< std::string > ())); } -#line 5063 "seclang-parser.cc" // lalr1.cc:870 +#line 5072 "seclang-parser.cc" // lalr1.cc:906 break; case 402: -#line 2891 "seclang-parser.yy" // lalr1.cc:870 +#line 2891 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Md5(yystack_[0].value.as< std::string > ())); } -#line 5071 "seclang-parser.cc" // lalr1.cc:870 +#line 5080 "seclang-parser.cc" // lalr1.cc:906 break; case 403: -#line 2895 "seclang-parser.yy" // lalr1.cc:870 +#line 2895 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::EscapeSeqDecode(yystack_[0].value.as< std::string > ())); } -#line 5079 "seclang-parser.cc" // lalr1.cc:870 +#line 5088 "seclang-parser.cc" // lalr1.cc:906 break; case 404: -#line 2899 "seclang-parser.yy" // lalr1.cc:870 +#line 2899 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::HexEncode(yystack_[0].value.as< std::string > ())); } -#line 5087 "seclang-parser.cc" // lalr1.cc:870 +#line 5096 "seclang-parser.cc" // lalr1.cc:906 break; case 405: -#line 2903 "seclang-parser.yy" // lalr1.cc:870 +#line 2903 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::HexDecode(yystack_[0].value.as< std::string > ())); } -#line 5095 "seclang-parser.cc" // lalr1.cc:870 +#line 5104 "seclang-parser.cc" // lalr1.cc:906 break; case 406: -#line 2907 "seclang-parser.yy" // lalr1.cc:870 +#line 2907 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::LowerCase(yystack_[0].value.as< std::string > ())); } -#line 5103 "seclang-parser.cc" // lalr1.cc:870 +#line 5112 "seclang-parser.cc" // lalr1.cc:906 break; case 407: -#line 2911 "seclang-parser.yy" // lalr1.cc:870 +#line 2911 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UpperCase(yystack_[0].value.as< std::string > ())); } -#line 5111 "seclang-parser.cc" // lalr1.cc:870 +#line 5120 "seclang-parser.cc" // lalr1.cc:906 break; case 408: -#line 2915 "seclang-parser.yy" // lalr1.cc:870 +#line 2915 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UrlDecodeUni(yystack_[0].value.as< std::string > ())); } -#line 5119 "seclang-parser.cc" // lalr1.cc:870 +#line 5128 "seclang-parser.cc" // lalr1.cc:906 break; case 409: -#line 2919 "seclang-parser.yy" // lalr1.cc:870 +#line 2919 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UrlDecode(yystack_[0].value.as< std::string > ())); } -#line 5127 "seclang-parser.cc" // lalr1.cc:870 +#line 5136 "seclang-parser.cc" // lalr1.cc:906 break; case 410: -#line 2923 "seclang-parser.yy" // lalr1.cc:870 +#line 2923 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UrlEncode(yystack_[0].value.as< std::string > ())); } -#line 5135 "seclang-parser.cc" // lalr1.cc:870 +#line 5144 "seclang-parser.cc" // lalr1.cc:906 break; case 411: -#line 2927 "seclang-parser.yy" // lalr1.cc:870 +#line 2927 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::None(yystack_[0].value.as< std::string > ())); } -#line 5143 "seclang-parser.cc" // lalr1.cc:870 +#line 5152 "seclang-parser.cc" // lalr1.cc:906 break; case 412: -#line 2931 "seclang-parser.yy" // lalr1.cc:870 +#line 2931 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::CompressWhitespace(yystack_[0].value.as< std::string > ())); } -#line 5151 "seclang-parser.cc" // lalr1.cc:870 +#line 5160 "seclang-parser.cc" // lalr1.cc:906 break; case 413: -#line 2935 "seclang-parser.yy" // lalr1.cc:870 +#line 2935 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveWhitespace(yystack_[0].value.as< std::string > ())); } -#line 5159 "seclang-parser.cc" // lalr1.cc:870 +#line 5168 "seclang-parser.cc" // lalr1.cc:906 break; case 414: -#line 2939 "seclang-parser.yy" // lalr1.cc:870 +#line 2939 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ReplaceNulls(yystack_[0].value.as< std::string > ())); } -#line 5167 "seclang-parser.cc" // lalr1.cc:870 +#line 5176 "seclang-parser.cc" // lalr1.cc:906 break; case 415: -#line 2943 "seclang-parser.yy" // lalr1.cc:870 +#line 2943 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveNulls(yystack_[0].value.as< std::string > ())); } -#line 5175 "seclang-parser.cc" // lalr1.cc:870 +#line 5184 "seclang-parser.cc" // lalr1.cc:906 break; case 416: -#line 2947 "seclang-parser.yy" // lalr1.cc:870 +#line 2947 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::HtmlEntityDecode(yystack_[0].value.as< std::string > ())); } -#line 5183 "seclang-parser.cc" // lalr1.cc:870 +#line 5192 "seclang-parser.cc" // lalr1.cc:906 break; case 417: -#line 2951 "seclang-parser.yy" // lalr1.cc:870 +#line 2951 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::JsDecode(yystack_[0].value.as< std::string > ())); } -#line 5191 "seclang-parser.cc" // lalr1.cc:870 +#line 5200 "seclang-parser.cc" // lalr1.cc:906 break; case 418: -#line 2955 "seclang-parser.yy" // lalr1.cc:870 +#line 2955 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::CssDecode(yystack_[0].value.as< std::string > ())); } -#line 5199 "seclang-parser.cc" // lalr1.cc:870 +#line 5208 "seclang-parser.cc" // lalr1.cc:906 break; case 419: -#line 2959 "seclang-parser.yy" // lalr1.cc:870 +#line 2959 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Trim(yystack_[0].value.as< std::string > ())); } -#line 5207 "seclang-parser.cc" // lalr1.cc:870 +#line 5216 "seclang-parser.cc" // lalr1.cc:906 break; case 420: -#line 2963 "seclang-parser.yy" // lalr1.cc:870 +#line 2963 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::TrimLeft(yystack_[0].value.as< std::string > ())); } -#line 5215 "seclang-parser.cc" // lalr1.cc:870 +#line 5224 "seclang-parser.cc" // lalr1.cc:906 break; case 421: -#line 2967 "seclang-parser.yy" // lalr1.cc:870 +#line 2967 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::TrimRight(yystack_[0].value.as< std::string > ())); } -#line 5223 "seclang-parser.cc" // lalr1.cc:870 +#line 5232 "seclang-parser.cc" // lalr1.cc:906 break; case 422: -#line 2971 "seclang-parser.yy" // lalr1.cc:870 +#line 2971 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::NormalisePathWin(yystack_[0].value.as< std::string > ())); } -#line 5231 "seclang-parser.cc" // lalr1.cc:870 +#line 5240 "seclang-parser.cc" // lalr1.cc:906 break; case 423: -#line 2975 "seclang-parser.yy" // lalr1.cc:870 +#line 2975 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::NormalisePath(yystack_[0].value.as< std::string > ())); } -#line 5239 "seclang-parser.cc" // lalr1.cc:870 +#line 5248 "seclang-parser.cc" // lalr1.cc:906 break; case 424: -#line 2979 "seclang-parser.yy" // lalr1.cc:870 +#line 2979 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Length(yystack_[0].value.as< std::string > ())); } -#line 5247 "seclang-parser.cc" // lalr1.cc:870 +#line 5256 "seclang-parser.cc" // lalr1.cc:906 break; case 425: -#line 2983 "seclang-parser.yy" // lalr1.cc:870 +#line 2983 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Utf8ToUnicode(yystack_[0].value.as< std::string > ())); } -#line 5255 "seclang-parser.cc" // lalr1.cc:870 +#line 5264 "seclang-parser.cc" // lalr1.cc:906 break; case 426: -#line 2987 "seclang-parser.yy" // lalr1.cc:870 +#line 2987 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveCommentsChar(yystack_[0].value.as< std::string > ())); } -#line 5263 "seclang-parser.cc" // lalr1.cc:870 +#line 5272 "seclang-parser.cc" // lalr1.cc:906 break; case 427: -#line 2991 "seclang-parser.yy" // lalr1.cc:870 +#line 2991 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveComments(yystack_[0].value.as< std::string > ())); } -#line 5271 "seclang-parser.cc" // lalr1.cc:870 +#line 5280 "seclang-parser.cc" // lalr1.cc:906 break; case 428: -#line 2995 "seclang-parser.yy" // lalr1.cc:870 +#line 2995 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ReplaceComments(yystack_[0].value.as< std::string > ())); } -#line 5279 "seclang-parser.cc" // lalr1.cc:870 +#line 5288 "seclang-parser.cc" // lalr1.cc:906 break; case 429: -#line 3002 "seclang-parser.yy" // lalr1.cc:870 +#line 3002 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::unsetOperation, std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 5287 "seclang-parser.cc" // lalr1.cc:870 +#line 5296 "seclang-parser.cc" // lalr1.cc:906 break; case 430: -#line 3006 "seclang-parser.yy" // lalr1.cc:870 +#line 3006 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::setToOneOperation, std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 5295 "seclang-parser.cc" // lalr1.cc:870 +#line 5304 "seclang-parser.cc" // lalr1.cc:906 break; case 431: -#line 3010 "seclang-parser.yy" // lalr1.cc:870 +#line 3010 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::setOperation, std::move(yystack_[2].value.as< std::unique_ptr > ()), std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 5303 "seclang-parser.cc" // lalr1.cc:870 +#line 5312 "seclang-parser.cc" // lalr1.cc:906 break; case 432: -#line 3014 "seclang-parser.yy" // lalr1.cc:870 +#line 3014 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::sumAndSetOperation, std::move(yystack_[2].value.as< std::unique_ptr > ()), std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 5311 "seclang-parser.cc" // lalr1.cc:870 +#line 5320 "seclang-parser.cc" // lalr1.cc:906 break; case 433: -#line 3018 "seclang-parser.yy" // lalr1.cc:870 +#line 3018 "seclang-parser.yy" // lalr1.cc:906 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::substractAndSetOperation, std::move(yystack_[2].value.as< std::unique_ptr > ()), std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 5319 "seclang-parser.cc" // lalr1.cc:870 +#line 5328 "seclang-parser.cc" // lalr1.cc:906 break; case 434: -#line 3025 "seclang-parser.yy" // lalr1.cc:870 +#line 3025 "seclang-parser.yy" // lalr1.cc:906 { yystack_[1].value.as< std::unique_ptr > ()->appendText(yystack_[0].value.as< std::string > ()); yylhs.value.as< std::unique_ptr > () = std::move(yystack_[1].value.as< std::unique_ptr > ()); } -#line 5328 "seclang-parser.cc" // lalr1.cc:870 +#line 5337 "seclang-parser.cc" // lalr1.cc:906 break; case 435: -#line 3030 "seclang-parser.yy" // lalr1.cc:870 +#line 3030 "seclang-parser.yy" // lalr1.cc:906 { yystack_[1].value.as< std::unique_ptr > ()->appendVar(std::move(yystack_[0].value.as< std::unique_ptr > ())); yylhs.value.as< std::unique_ptr > () = std::move(yystack_[1].value.as< std::unique_ptr > ()); } -#line 5337 "seclang-parser.cc" // lalr1.cc:870 +#line 5346 "seclang-parser.cc" // lalr1.cc:906 break; case 436: -#line 3035 "seclang-parser.yy" // lalr1.cc:870 +#line 3035 "seclang-parser.yy" // lalr1.cc:906 { std::unique_ptr r(new RunTimeString()); r->appendText(yystack_[0].value.as< std::string > ()); yylhs.value.as< std::unique_ptr > () = std::move(r); } -#line 5347 "seclang-parser.cc" // lalr1.cc:870 +#line 5356 "seclang-parser.cc" // lalr1.cc:906 break; case 437: -#line 3041 "seclang-parser.yy" // lalr1.cc:870 +#line 3041 "seclang-parser.yy" // lalr1.cc:906 { std::unique_ptr r(new RunTimeString()); r->appendVar(std::move(yystack_[0].value.as< std::unique_ptr > ())); yylhs.value.as< std::unique_ptr > () = std::move(r); } -#line 5357 "seclang-parser.cc" // lalr1.cc:870 +#line 5366 "seclang-parser.cc" // lalr1.cc:906 break; -#line 5361 "seclang-parser.cc" // lalr1.cc:870 +#line 5370 "seclang-parser.cc" // lalr1.cc:906 default: break; } @@ -5375,7 +5384,7 @@ namespace yy { YY_STACK_PRINT (); // Shift the result of the reduction. - yypush_ (YY_NULLPTR, yylhs); + yypush_ (YY_NULLPTR, YY_MOVE (yylhs)); } goto yynewstate; @@ -5463,7 +5472,7 @@ namespace yy { // Shift the error token. error_token.state = yyn; - yypush_ ("Shifting", error_token); + yypush_ ("Shifting", YY_MOVE (error_token)); } goto yynewstate; @@ -6837,8 +6846,8 @@ namespace yy { } // yy -#line 6841 "seclang-parser.cc" // lalr1.cc:1181 -#line 3047 "seclang-parser.yy" // lalr1.cc:1182 +#line 6850 "seclang-parser.cc" // lalr1.cc:1217 +#line 3047 "seclang-parser.yy" // lalr1.cc:1218 void yy::seclang_parser::error (const location_type& l, const std::string& m) { diff --git a/src/parser/seclang-parser.hh b/src/parser/seclang-parser.hh index b97f390d..09d7a2dd 100644 --- a/src/parser/seclang-parser.hh +++ b/src/parser/seclang-parser.hh @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.1. +// A Bison parser, made by GNU Bison 3.2. // Skeleton interface for Bison LALR(1) parsers in C++ @@ -30,6 +30,7 @@ // This special exception was added by the Free Software Foundation in // version 2.2 of Bison. + /** ** \file y.tab.h ** Define the yy::parser class. @@ -37,10 +38,13 @@ // C++ LALR(1) parser skeleton written by Akim Demaille. +// Undocumented macros, especially those whose name start with YY_, +// are private implementation details. Do not rely on them. + #ifndef YY_YY_SECLANG_PARSER_HH_INCLUDED # define YY_YY_SECLANG_PARSER_HH_INCLUDED // // "%code requires" blocks. -#line 10 "seclang-parser.yy" // lalr1.cc:380 +#line 10 "seclang-parser.yy" // lalr1.cc:403 #include #include @@ -381,7 +385,7 @@ using modsecurity::operators::Operator; a = std::move(c); -#line 385 "seclang-parser.hh" // lalr1.cc:380 +#line 389 "seclang-parser.hh" // lalr1.cc:403 # include # include // std::abort @@ -389,7 +393,21 @@ using modsecurity::operators::Operator; # include # include # include -# include "stack.hh" + +// Support move semantics when possible. +#if defined __cplusplus && 201103L <= __cplusplus +# define YY_MOVE std::move +# define YY_MOVE_OR_COPY move +# define YY_MOVE_REF(Type) Type&& +# define YY_RVREF(Type) Type&& +# define YY_COPY(Type) Type +#else +# define YY_MOVE +# define YY_MOVE_OR_COPY copy +# define YY_MOVE_REF(Type) Type& +# define YY_RVREF(Type) const Type& +# define YY_COPY(Type) const Type& +#endif # include "location.hh" #include #ifndef YYASSERT @@ -416,15 +434,6 @@ using modsecurity::operators::Operator; # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) -# endif -#endif - /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -452,12 +461,17 @@ using modsecurity::operators::Operator; #endif # ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif # else -# define YY_NULLPTR 0 +# define YY_NULLPTR ((void*)0) # endif # endif + /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 1 @@ -465,7 +479,126 @@ using modsecurity::operators::Operator; namespace yy { -#line 469 "seclang-parser.hh" // lalr1.cc:380 +#line 483 "seclang-parser.hh" // lalr1.cc:403 + + /// A stack with random access from its top. + template > + class stack + { + public: + // Hide our reversed order. + typedef typename S::reverse_iterator iterator; + typedef typename S::const_reverse_iterator const_iterator; + typedef typename S::size_type size_type; + + stack (size_type n = 200) + : seq_ (n) + {} + + /// Random access. + /// + /// Index 0 returns the topmost element. + T& + operator[] (size_type i) + { + return seq_[size () - 1 - i]; + } + + /// Random access. + /// + /// Index 0 returns the topmost element. + T& + operator[] (int i) + { + return operator[] (size_type (i)); + } + + /// Random access. + /// + /// Index 0 returns the topmost element. + const T& + operator[] (size_type i) const + { + return seq_[size () - 1 - i]; + } + + /// Random access. + /// + /// Index 0 returns the topmost element. + const T& + operator[] (int i) const + { + return operator[] (size_type (i)); + } + + /// Steal the contents of \a t. + /// + /// Close to move-semantics. + void + push (YY_MOVE_REF (T) t) + { + seq_.push_back (T ()); + operator[](0).move (t); + } + + void + pop (int n = 1) + { + for (; 0 < n; --n) + seq_.pop_back (); + } + + void + clear () + { + seq_.clear (); + } + + size_type + size () const + { + return seq_.size (); + } + + const_iterator + begin () const + { + return seq_.rbegin (); + } + + const_iterator + end () const + { + return seq_.rend (); + } + + private: + stack (const stack&); + stack& operator= (const stack&); + /// The wrapped container. + S seq_; + }; + + /// Present a slice of the top of a stack. + template > + class slice + { + public: + slice (const S& stack, int range) + : stack_ (stack) + , range_ (range) + {} + + const T& + operator[] (int i) const + { + return stack_[range_ - i]; + } + + private: + const S& stack_; + int range_; + }; @@ -488,11 +621,11 @@ namespace yy { /// Construct and fill. template - variant (const T& t) + variant (YY_RVREF (T) t) : yytypeid_ (&typeid (T)) { YYASSERT (sizeof (T) <= S); - new (yyas_ ()) T (t); + new (yyas_ ()) T (YY_MOVE (t)); } /// Destruction, allowed only if empty. @@ -504,7 +637,7 @@ namespace yy { /// Instantiate an empty \a T in here. template T& - build () + emplace () { YYASSERT (!yytypeid_); YYASSERT (sizeof (T) <= S); @@ -512,16 +645,47 @@ namespace yy { return *new (yyas_ ()) T (); } +# if defined __cplusplus && 201103L <= __cplusplus + /// Instantiate a \a T in here from \a t. + template + T& + emplace (U&& u) + { + YYASSERT (!yytypeid_); + YYASSERT (sizeof (T) <= S); + yytypeid_ = & typeid (T); + return *new (yyas_ ()) T (std::forward (u)); + } +# else /// Instantiate a \a T in here from \a t. template T& - build (const T& t) + emplace (const T& t) { YYASSERT (!yytypeid_); YYASSERT (sizeof (T) <= S); yytypeid_ = & typeid (T); return *new (yyas_ ()) T (std::move((T&)t)); } +# endif + + /// Instantiate an empty \a T in here. + /// Obsolete, use emplace. + template + T& + build () + { + return emplace (); + } + + /// Instantiate a \a T in here from \a t. + /// Obsolete, use emplace. + template + T& + build (const T& t) + { + return emplace (t); + } /// Accessor to a built \a T. template @@ -550,7 +714,7 @@ namespace yy { /// Both variants must be built beforehand, because swapping the actual /// data requires reading it (with as()), and this is not possible on /// unconstructed variants: it would require some dynamic testing, which - /// should not be the variant's responsability. + /// should not be the variant's responsibility. /// Swapping between built and (possibly) non-built is done with /// variant::move (). template @@ -569,17 +733,32 @@ namespace yy { void move (self_type& other) { - build (); +# if defined __cplusplus && 201103L <= __cplusplus + emplace (std::move (other.as ())); +# else + emplace (); swap (other); +# endif other.destroy (); } +# if defined __cplusplus && 201103L <= __cplusplus + /// Move the content of \a other to this. + template + void + move (self_type&& other) + { + emplace (std::move (other.as ())); + other.destroy (); + } +#endif + /// Copy the content of \a other to this. template void copy (const self_type& other) { - build (other.as ()); + emplace (other.as ()); } /// Destroy the stored \a T. @@ -593,7 +772,7 @@ namespace yy { private: /// Prohibit blind copies. - self_type& operator=(const self_type&); + self_type& operator= (const self_type&); variant (const self_type&); /// Accessor to raw memory as \a T. @@ -831,34 +1010,34 @@ namespace yy { // "VARIABLE" // "Dictionary element" // "Dictionary element, selected by regexp" - char dummy1[sizeof(std::string)]; + char dummy1[sizeof (std::string)]; // op // op_before_init - char dummy2[sizeof(std::unique_ptr)]; + char dummy2[sizeof (std::unique_ptr)]; // run_time_string - char dummy3[sizeof(std::unique_ptr)]; + char dummy3[sizeof (std::unique_ptr)]; // var - char dummy4[sizeof(std::unique_ptr)]; + char dummy4[sizeof (std::unique_ptr)]; // act // setvar_action - char dummy5[sizeof(std::unique_ptr)]; + char dummy5[sizeof (std::unique_ptr)]; // variables // variables_pre_process // variables_may_be_quoted - char dummy6[sizeof(std::unique_ptr > > )]; + char dummy6[sizeof (std::unique_ptr > > )]; // actions // actions_may_quoted - char dummy7[sizeof(std::unique_ptr > > )]; + char dummy7[sizeof (std::unique_ptr > > )]; }; /// Symbol semantic values. - typedef variant semantic_type; + typedef variant semantic_type; #else typedef YYSTYPE semantic_type; #endif @@ -1233,7 +1412,7 @@ namespace yy { /// A complete symbol. /// /// Expects its Base type to provide access to the symbol type - /// via type_get(). + /// via type_get (). /// /// Provide access to semantic value and location. template @@ -1245,32 +1424,20 @@ namespace yy { /// Default constructor. basic_symbol (); - /// Copy constructor. - basic_symbol (const basic_symbol& other); + /// Move or copy constructor. + basic_symbol (YY_RVREF (basic_symbol) other); + /// Constructor for valueless symbols, and symbols from each type. + basic_symbol (typename Base::kind_type t, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr > > ) v, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr > > ) v, YY_RVREF (location_type) l); - basic_symbol (typename Base::kind_type t, const location_type& l); - - basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l); - - basic_symbol (typename Base::kind_type t, const std::unique_ptr& v, const location_type& l); - - basic_symbol (typename Base::kind_type t, const std::unique_ptr& v, const location_type& l); - - basic_symbol (typename Base::kind_type t, const std::unique_ptr& v, const location_type& l); - - basic_symbol (typename Base::kind_type t, const std::unique_ptr& v, const location_type& l); - - basic_symbol (typename Base::kind_type t, const std::unique_ptr > > & v, const location_type& l); - - basic_symbol (typename Base::kind_type t, const std::unique_ptr > > & v, const location_type& l); - - - /// Constructor for symbols with semantic value. - basic_symbol (typename Base::kind_type t, - const semantic_type& v, - const location_type& l); /// Destroy the symbol. ~basic_symbol (); @@ -1291,8 +1458,10 @@ namespace yy { location_type location; private: +#if defined __cplusplus && __cplusplus < 201103L /// Assignment operator. basic_symbol& operator= (const basic_symbol& other); +#endif }; /// Type access provider for token (enum) based symbols. @@ -1332,1364 +1501,14 @@ namespace yy { /// "External" symbols: returned by the scanner. typedef basic_symbol symbol_type; - // Symbol constructors declarations. - static inline - symbol_type - make_END (const location_type& l); - - static inline - symbol_type - make_COMMA (const location_type& l); - - static inline - symbol_type - make_CONFIG_CONTENT_INJECTION (const location_type& l); - - static inline - symbol_type - make_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR (const location_type& l); - - static inline - symbol_type - make_PIPE (const location_type& l); - - static inline - symbol_type - make_NEW_LINE (const location_type& l); - - static inline - symbol_type - make_VAR_COUNT (const location_type& l); - - static inline - symbol_type - make_VAR_EXCLUSION (const location_type& l); - - static inline - symbol_type - make_VARIABLE_ARGS (const location_type& l); - - static inline - symbol_type - make_VARIABLE_ARGS_POST (const location_type& l); - - static inline - symbol_type - make_VARIABLE_ARGS_GET (const location_type& l); - - static inline - symbol_type - make_VARIABLE_FILES_SIZES (const location_type& l); - - static inline - symbol_type - make_VARIABLE_FILES_NAMES (const location_type& l); - - static inline - symbol_type - make_VARIABLE_FILES_TMP_CONTENT (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_FILENAME (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_NAME (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MATCHED_VARS_NAMES (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MATCHED_VARS (const location_type& l); - - static inline - symbol_type - make_VARIABLE_FILES (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQUEST_COOKIES (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQUEST_HEADERS (const location_type& l); - - static inline - symbol_type - make_VARIABLE_RESPONSE_HEADERS (const location_type& l); - - static inline - symbol_type - make_VARIABLE_GEO (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQUEST_COOKIES_NAMES (const location_type& l); - - static inline - symbol_type - make_VARIABLE_ARGS_COMBINED_SIZE (const location_type& l); - - static inline - symbol_type - make_VARIABLE_ARGS_GET_NAMES (const location_type& l); - - static inline - symbol_type - make_VARIABLE_RULE (const location_type& l); - - static inline - symbol_type - make_VARIABLE_ARGS_NAMES (const location_type& l); - - static inline - symbol_type - make_VARIABLE_ARGS_POST_NAMES (const location_type& l); - - static inline - symbol_type - make_VARIABLE_AUTH_TYPE (const location_type& l); - - static inline - symbol_type - make_VARIABLE_FILES_COMBINED_SIZE (const location_type& l); - - static inline - symbol_type - make_VARIABLE_FILES_TMP_NAMES (const location_type& l); - - static inline - symbol_type - make_VARIABLE_FULL_REQUEST (const location_type& l); - - static inline - symbol_type - make_VARIABLE_FULL_REQUEST_LENGTH (const location_type& l); - - static inline - symbol_type - make_VARIABLE_INBOUND_DATA_ERROR (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MATCHED_VAR (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MATCHED_VAR_NAME (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_BOUNDARY_QUOTED (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_CRLF_LF_LINES (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_DATA_AFTER (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_DATA_BEFORE (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_HEADER_FOLDING (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_INVALID_PART (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_INVALID_QUOTING (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_LF_LINE (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_MISSING_SEMICOLON (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_SEMICOLON_MISSING (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_STRICT_ERROR (const location_type& l); - - static inline - symbol_type - make_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY (const location_type& l); - - static inline - symbol_type - make_VARIABLE_OUTBOUND_DATA_ERROR (const location_type& l); - - static inline - symbol_type - make_VARIABLE_PATH_INFO (const location_type& l); - - static inline - symbol_type - make_VARIABLE_QUERY_STRING (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REMOTE_ADDR (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REMOTE_HOST (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REMOTE_PORT (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQBODY_ERROR_MSG (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQBODY_ERROR (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQBODY_PROCESSOR_ERROR (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQBODY_PROCESSOR (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQUEST_BASENAME (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQUEST_BODY_LENGTH (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQUEST_BODY (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQUEST_FILE_NAME (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQUEST_HEADERS_NAMES (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQUEST_LINE (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQUEST_METHOD (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQUEST_PROTOCOL (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQUEST_URI_RAW (const location_type& l); - - static inline - symbol_type - make_VARIABLE_REQUEST_URI (const location_type& l); - - static inline - symbol_type - make_VARIABLE_RESOURCE (const location_type& l); - - static inline - symbol_type - make_VARIABLE_RESPONSE_BODY (const location_type& l); - - static inline - symbol_type - make_VARIABLE_RESPONSE_CONTENT_LENGTH (const location_type& l); - - static inline - symbol_type - make_VARIABLE_RESPONSE_CONTENT_TYPE (const location_type& l); - - static inline - symbol_type - make_VARIABLE_RESPONSE_HEADERS_NAMES (const location_type& l); - - static inline - symbol_type - make_VARIABLE_RESPONSE_PROTOCOL (const location_type& l); - - static inline - symbol_type - make_VARIABLE_RESPONSE_STATUS (const location_type& l); - - static inline - symbol_type - make_VARIABLE_SERVER_ADDR (const location_type& l); - - static inline - symbol_type - make_VARIABLE_SERVER_NAME (const location_type& l); - - static inline - symbol_type - make_VARIABLE_SERVER_PORT (const location_type& l); - - static inline - symbol_type - make_VARIABLE_SESSION_ID (const location_type& l); - - static inline - symbol_type - make_VARIABLE_UNIQUE_ID (const location_type& l); - - static inline - symbol_type - make_VARIABLE_URL_ENCODED_ERROR (const location_type& l); - - static inline - symbol_type - make_VARIABLE_USER_ID (const location_type& l); - - static inline - symbol_type - make_VARIABLE_WEB_APP_ID (const location_type& l); - - static inline - symbol_type - make_VARIABLE_STATUS (const location_type& l); - - static inline - symbol_type - make_VARIABLE_STATUS_LINE (const location_type& l); - - static inline - symbol_type - make_VARIABLE_IP (const location_type& l); - - static inline - symbol_type - make_VARIABLE_GLOBAL (const location_type& l); - - static inline - symbol_type - make_VARIABLE_TX (const location_type& l); - - static inline - symbol_type - make_VARIABLE_SESSION (const location_type& l); - - static inline - symbol_type - make_VARIABLE_USER (const location_type& l); - - static inline - symbol_type - make_RUN_TIME_VAR_ENV (const location_type& l); - - static inline - symbol_type - make_RUN_TIME_VAR_XML (const location_type& l); - - static inline - symbol_type - make_ACTION_SETVAR (const location_type& l); - - static inline - symbol_type - make_SETVAR_OPERATION_EQUALS (const location_type& l); - - static inline - symbol_type - make_SETVAR_OPERATION_EQUALS_PLUS (const location_type& l); - - static inline - symbol_type - make_SETVAR_OPERATION_EQUALS_MINUS (const location_type& l); - - static inline - symbol_type - make_NOT (const location_type& l); - - static inline - symbol_type - make_OPERATOR_BEGINS_WITH (const location_type& l); - - static inline - symbol_type - make_OPERATOR_CONTAINS (const location_type& l); - - static inline - symbol_type - make_OPERATOR_CONTAINS_WORD (const location_type& l); - - static inline - symbol_type - make_OPERATOR_DETECT_SQLI (const location_type& l); - - static inline - symbol_type - make_OPERATOR_DETECT_XSS (const location_type& l); - - static inline - symbol_type - make_OPERATOR_ENDS_WITH (const location_type& l); - - static inline - symbol_type - make_OPERATOR_EQ (const location_type& l); - - static inline - symbol_type - make_OPERATOR_FUZZY_HASH (const location_type& l); - - static inline - symbol_type - make_OPERATOR_GEOLOOKUP (const location_type& l); - - static inline - symbol_type - make_OPERATOR_GE (const location_type& l); - - static inline - symbol_type - make_OPERATOR_GSB_LOOKUP (const location_type& l); - - static inline - symbol_type - make_OPERATOR_GT (const location_type& l); - - static inline - symbol_type - make_OPERATOR_INSPECT_FILE (const location_type& l); - - static inline - symbol_type - make_OPERATOR_IP_MATCH_FROM_FILE (const location_type& l); - - static inline - symbol_type - make_OPERATOR_IP_MATCH (const location_type& l); - - static inline - symbol_type - make_OPERATOR_LE (const location_type& l); - - static inline - symbol_type - make_OPERATOR_LT (const location_type& l); - - static inline - symbol_type - make_OPERATOR_PM_FROM_FILE (const location_type& l); - - static inline - symbol_type - make_OPERATOR_PM (const location_type& l); - - static inline - symbol_type - make_OPERATOR_RBL (const location_type& l); - - static inline - symbol_type - make_OPERATOR_RSUB (const location_type& l); - - static inline - symbol_type - make_OPERATOR_RX_CONTENT_ONLY (const location_type& l); - - static inline - symbol_type - make_OPERATOR_RX (const location_type& l); - - static inline - symbol_type - make_OPERATOR_STR_EQ (const location_type& l); - - static inline - symbol_type - make_OPERATOR_STR_MATCH (const location_type& l); - - static inline - symbol_type - make_OPERATOR_UNCONDITIONAL_MATCH (const location_type& l); - - static inline - symbol_type - make_OPERATOR_VALIDATE_BYTE_RANGE (const location_type& l); - - static inline - symbol_type - make_OPERATOR_VALIDATE_DTD (const location_type& l); - - static inline - symbol_type - make_OPERATOR_VALIDATE_HASH (const location_type& l); - - static inline - symbol_type - make_OPERATOR_VALIDATE_SCHEMA (const location_type& l); - - static inline - symbol_type - make_OPERATOR_VALIDATE_URL_ENCODING (const location_type& l); - - static inline - symbol_type - make_OPERATOR_VALIDATE_UTF8_ENCODING (const location_type& l); - - static inline - symbol_type - make_OPERATOR_VERIFY_CC (const location_type& l); - - static inline - symbol_type - make_OPERATOR_VERIFY_CPF (const location_type& l); - - static inline - symbol_type - make_OPERATOR_VERIFY_SSN (const location_type& l); - - static inline - symbol_type - make_OPERATOR_WITHIN (const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_AUDIT_LOG_FMT (const location_type& l); - - static inline - symbol_type - make_JSON (const location_type& l); - - static inline - symbol_type - make_NATIVE (const location_type& l); - - static inline - symbol_type - make_ACTION_CTL_RULE_ENGINE (const location_type& l); - - static inline - symbol_type - make_ACTION_ACCURACY (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_ALLOW (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_APPEND (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_AUDIT_LOG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_BLOCK (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_CAPTURE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_CHAIN (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_CTL_AUDIT_ENGINE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_CTL_AUDIT_LOG_PARTS (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_CTL_BDY_JSON (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_CTL_BDY_XML (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_CTL_BDY_URLENCODED (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_CTL_FORCE_REQ_BODY_VAR (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_CTL_REQUEST_BODY_ACCESS (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_CTL_RULE_REMOVE_BY_ID (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_CTL_RULE_REMOVE_BY_TAG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_DENY (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_DEPRECATE_VAR (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_DROP (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_EXEC (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_EXPIRE_VAR (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_ID (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_INITCOL (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_LOG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_LOG_DATA (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_MATURITY (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_MSG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_MULTI_MATCH (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_NO_AUDIT_LOG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_NO_LOG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_PASS (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_PAUSE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_PHASE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_PREPEND (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_PROXY (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_REDIRECT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_REV (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_SANITISE_ARG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_SANITISE_MATCHED (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_SANITISE_MATCHED_BYTES (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_SANITISE_REQUEST_HEADER (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_SANITISE_RESPONSE_HEADER (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_SETENV (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_SETRSC (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_SETSID (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_SETUID (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_SEVERITY (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_SKIP (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_SKIP_AFTER (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_STATUS (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TAG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_BASE_64_ENCODE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_BASE_64_DECODE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_CMD_LINE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_CSS_DECODE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_HEX_ENCODE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_HEX_DECODE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_JS_DECODE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_LENGTH (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_LOWERCASE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_MD5 (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_NONE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_NORMALISE_PATH (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_REMOVE_COMMENTS (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_REMOVE_NULLS (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_REMOVE_WHITESPACE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_REPLACE_COMMENTS (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_REPLACE_NULLS (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_SHA1 (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_SQL_HEX_DECODE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_TRIM (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_TRIM_LEFT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_TRIM_RIGHT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_UPPERCASE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_URL_ENCODE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_URL_DECODE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_URL_DECODE_UNI (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_TRANSFORMATION_UTF8_TO_UNICODE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_VER (const std::string& v, const location_type& l); - - static inline - symbol_type - make_ACTION_XMLNS (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_COMPONENT_SIG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_CONN_ENGINE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_ARGUMENT_SEPARATOR (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_WEB_APP_ID (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_SERVER_SIG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_AUDIT_DIR (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_AUDIT_DIR_MOD (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_AUDIT_ENG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_AUDIT_FLE_MOD (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_AUDIT_LOG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_AUDIT_LOG2 (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_AUDIT_LOG_P (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_AUDIT_STS (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_AUDIT_TPE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_DEBUG_LOG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_DEBUG_LVL (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_CACHE_TRANSFORMATIONS (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_DISABLE_BACKEND_COMPRESS (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_HASH_ENGINE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_HASH_KEY (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_HASH_PARAM (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_HASH_METHOD_RX (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_HASH_METHOD_PM (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_CHROOT_DIR (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_GEO_DB (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_GSB_DB (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_GUARDIAN_LOG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_PCRE_MATCH_LIMIT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_CONN_R_STATE_LIMIT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_CONN_W_STATE_LIMIT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_SENSOR_ID (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_REQ_BODY (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_REQ_BODY_LIMIT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_REQ_BODY_LIMIT_ACTION (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_RES_BODY (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_RES_BODY_LIMIT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_RES_BODY_LIMIT_ACTION (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_RULE_INHERITANCE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_RULE_PERF_TIME (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_RULE_ENG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_SEC_ACTION (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_SEC_DEFAULT_ACTION (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_SEC_MARKER (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_UNICODE_MAP_FILE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_DIR_UNICODE_CODE_PAGE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_COLLECTION_TIMEOUT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_HTTP_BLKEY (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_INTERCEPT_ON_ERROR (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_RULE_REMOVE_BY_ID (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_RULE_REMOVE_BY_MSG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_RULE_REMOVE_BY_TAG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_UPDLOAD_KEEP_FILES (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_UPDLOAD_SAVE_TMP_FILES (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_UPLOAD_DIR (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_UPLOAD_FILE_LIMIT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_UPLOAD_FILE_MODE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_VALUE_ABORT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_VALUE_DETC (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_VALUE_HTTPS (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_VALUE_OFF (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_VALUE_ON (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_VALUE_PARALLEL (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_VALUE_PROCESS_PARTIAL (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_VALUE_REJECT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_VALUE_RELEVANT_ONLY (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_VALUE_SERIAL (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_VALUE_WARN (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_XML_EXTERNAL_ENTITY (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONGIG_DIR_RESPONSE_BODY_MP (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONGIG_DIR_SEC_ARG_SEP (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONGIG_DIR_SEC_COOKIE_FORMAT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_COOKIEV0_SEPARATOR (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONGIG_DIR_SEC_DATA_DIR (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONGIG_DIR_SEC_STATUS_ENGINE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_STREAM_IN_BODY_INSPECTION (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION (const std::string& v, const location_type& l); - - static inline - symbol_type - make_CONGIG_DIR_SEC_TMP_DIR (const std::string& v, const location_type& l); - - static inline - symbol_type - make_DIRECTIVE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_DIRECTIVE_SECRULESCRIPT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_FREE_TEXT_QUOTE_MACRO_EXPANSION (const std::string& v, const location_type& l); - - static inline - symbol_type - make_QUOTATION_MARK (const std::string& v, const location_type& l); - - static inline - symbol_type - make_RUN_TIME_VAR_BLD (const std::string& v, const location_type& l); - - static inline - symbol_type - make_RUN_TIME_VAR_DUR (const std::string& v, const location_type& l); - - static inline - symbol_type - make_RUN_TIME_VAR_HSV (const std::string& v, const location_type& l); - - static inline - symbol_type - make_RUN_TIME_VAR_REMOTE_USER (const std::string& v, const location_type& l); - - static inline - symbol_type - make_RUN_TIME_VAR_TIME (const std::string& v, const location_type& l); - - static inline - symbol_type - make_RUN_TIME_VAR_TIME_DAY (const std::string& v, const location_type& l); - - static inline - symbol_type - make_RUN_TIME_VAR_TIME_EPOCH (const std::string& v, const location_type& l); - - static inline - symbol_type - make_RUN_TIME_VAR_TIME_HOUR (const std::string& v, const location_type& l); - - static inline - symbol_type - make_RUN_TIME_VAR_TIME_MIN (const std::string& v, const location_type& l); - - static inline - symbol_type - make_RUN_TIME_VAR_TIME_MON (const std::string& v, const location_type& l); - - static inline - symbol_type - make_RUN_TIME_VAR_TIME_SEC (const std::string& v, const location_type& l); - - static inline - symbol_type - make_RUN_TIME_VAR_TIME_WDAY (const std::string& v, const location_type& l); - - static inline - symbol_type - make_RUN_TIME_VAR_TIME_YEAR (const std::string& v, const location_type& l); - - static inline - symbol_type - make_VARIABLE (const std::string& v, const location_type& l); - - static inline - symbol_type - make_DICT_ELEMENT (const std::string& v, const location_type& l); - - static inline - symbol_type - make_DICT_ELEMENT_REGEXP (const std::string& v, const location_type& l); - - /// Build a parser object. seclang_parser (modsecurity::Parser::Driver& driver_yyarg); virtual ~seclang_parser (); + /// Parse. An alias for parse (). + /// \returns 0 iff parsing succeeded. + int operator() (); + /// Parse. /// \returns 0 iff parsing succeeded. virtual int parse (); @@ -2716,6 +1535,1361 @@ namespace yy { /// Report a syntax error. void error (const syntax_error& err); + // Symbol constructors declarations. + static + symbol_type + make_END (YY_COPY (location_type) l); + + static + symbol_type + make_COMMA (YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_CONTENT_INJECTION (YY_COPY (location_type) l); + + static + symbol_type + make_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR (YY_COPY (location_type) l); + + static + symbol_type + make_PIPE (YY_COPY (location_type) l); + + static + symbol_type + make_NEW_LINE (YY_COPY (location_type) l); + + static + symbol_type + make_VAR_COUNT (YY_COPY (location_type) l); + + static + symbol_type + make_VAR_EXCLUSION (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_ARGS (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_ARGS_POST (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_ARGS_GET (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_FILES_SIZES (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_FILES_NAMES (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_FILES_TMP_CONTENT (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_FILENAME (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_NAME (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MATCHED_VARS_NAMES (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MATCHED_VARS (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_FILES (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQUEST_COOKIES (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQUEST_HEADERS (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_RESPONSE_HEADERS (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_GEO (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQUEST_COOKIES_NAMES (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_ARGS_COMBINED_SIZE (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_ARGS_GET_NAMES (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_RULE (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_ARGS_NAMES (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_ARGS_POST_NAMES (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_AUTH_TYPE (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_FILES_COMBINED_SIZE (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_FILES_TMP_NAMES (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_FULL_REQUEST (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_FULL_REQUEST_LENGTH (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_INBOUND_DATA_ERROR (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MATCHED_VAR (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MATCHED_VAR_NAME (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_BOUNDARY_QUOTED (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_CRLF_LF_LINES (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_DATA_AFTER (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_DATA_BEFORE (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_HEADER_FOLDING (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_INVALID_PART (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_INVALID_QUOTING (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_LF_LINE (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_MISSING_SEMICOLON (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_SEMICOLON_MISSING (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_STRICT_ERROR (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_OUTBOUND_DATA_ERROR (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_PATH_INFO (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_QUERY_STRING (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REMOTE_ADDR (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REMOTE_HOST (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REMOTE_PORT (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQBODY_ERROR_MSG (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQBODY_ERROR (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQBODY_PROCESSOR_ERROR (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQBODY_PROCESSOR (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQUEST_BASENAME (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQUEST_BODY_LENGTH (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQUEST_BODY (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQUEST_FILE_NAME (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQUEST_HEADERS_NAMES (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQUEST_LINE (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQUEST_METHOD (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQUEST_PROTOCOL (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQUEST_URI_RAW (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_REQUEST_URI (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_RESOURCE (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_RESPONSE_BODY (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_RESPONSE_CONTENT_LENGTH (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_RESPONSE_CONTENT_TYPE (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_RESPONSE_HEADERS_NAMES (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_RESPONSE_PROTOCOL (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_RESPONSE_STATUS (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_SERVER_ADDR (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_SERVER_NAME (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_SERVER_PORT (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_SESSION_ID (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_UNIQUE_ID (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_URL_ENCODED_ERROR (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_USER_ID (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_WEB_APP_ID (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_STATUS (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_STATUS_LINE (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_IP (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_GLOBAL (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_TX (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_SESSION (YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE_USER (YY_COPY (location_type) l); + + static + symbol_type + make_RUN_TIME_VAR_ENV (YY_COPY (location_type) l); + + static + symbol_type + make_RUN_TIME_VAR_XML (YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_SETVAR (YY_COPY (location_type) l); + + static + symbol_type + make_SETVAR_OPERATION_EQUALS (YY_COPY (location_type) l); + + static + symbol_type + make_SETVAR_OPERATION_EQUALS_PLUS (YY_COPY (location_type) l); + + static + symbol_type + make_SETVAR_OPERATION_EQUALS_MINUS (YY_COPY (location_type) l); + + static + symbol_type + make_NOT (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_BEGINS_WITH (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_CONTAINS (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_CONTAINS_WORD (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_DETECT_SQLI (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_DETECT_XSS (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_ENDS_WITH (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_EQ (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_FUZZY_HASH (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_GEOLOOKUP (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_GE (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_GSB_LOOKUP (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_GT (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_INSPECT_FILE (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_IP_MATCH_FROM_FILE (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_IP_MATCH (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_LE (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_LT (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_PM_FROM_FILE (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_PM (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_RBL (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_RSUB (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_RX_CONTENT_ONLY (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_RX (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_STR_EQ (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_STR_MATCH (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_UNCONDITIONAL_MATCH (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_VALIDATE_BYTE_RANGE (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_VALIDATE_DTD (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_VALIDATE_HASH (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_VALIDATE_SCHEMA (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_VALIDATE_URL_ENCODING (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_VALIDATE_UTF8_ENCODING (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_VERIFY_CC (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_VERIFY_CPF (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_VERIFY_SSN (YY_COPY (location_type) l); + + static + symbol_type + make_OPERATOR_WITHIN (YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_AUDIT_LOG_FMT (YY_COPY (location_type) l); + + static + symbol_type + make_JSON (YY_COPY (location_type) l); + + static + symbol_type + make_NATIVE (YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_CTL_RULE_ENGINE (YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_ACCURACY (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_ALLOW (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_APPEND (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_AUDIT_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_BLOCK (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_CAPTURE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_CHAIN (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_CTL_AUDIT_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_CTL_AUDIT_LOG_PARTS (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_CTL_BDY_JSON (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_CTL_BDY_XML (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_CTL_BDY_URLENCODED (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_CTL_FORCE_REQ_BODY_VAR (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_CTL_REQUEST_BODY_ACCESS (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_CTL_RULE_REMOVE_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_CTL_RULE_REMOVE_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_DENY (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_DEPRECATE_VAR (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_DROP (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_EXEC (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_EXPIRE_VAR (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_INITCOL (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_LOG_DATA (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_MATURITY (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_MSG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_MULTI_MATCH (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_NO_AUDIT_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_NO_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_PASS (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_PAUSE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_PHASE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_PREPEND (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_PROXY (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_REDIRECT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_REV (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_SANITISE_ARG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_SANITISE_MATCHED (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_SANITISE_MATCHED_BYTES (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_SANITISE_REQUEST_HEADER (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_SANITISE_RESPONSE_HEADER (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_SETENV (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_SETRSC (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_SETSID (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_SETUID (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_SEVERITY (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_SKIP (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_SKIP_AFTER (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_STATUS (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_BASE_64_ENCODE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_BASE_64_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_CMD_LINE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_CSS_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_HEX_ENCODE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_HEX_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_JS_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_LENGTH (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_LOWERCASE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_MD5 (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_NONE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_NORMALISE_PATH (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_REMOVE_COMMENTS (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_REMOVE_NULLS (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_REMOVE_WHITESPACE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_REPLACE_COMMENTS (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_REPLACE_NULLS (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_SHA1 (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_SQL_HEX_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_TRIM (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_TRIM_LEFT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_TRIM_RIGHT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_UPPERCASE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_URL_ENCODE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_URL_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_URL_DECODE_UNI (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_TRANSFORMATION_UTF8_TO_UNICODE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_VER (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_ACTION_XMLNS (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_COMPONENT_SIG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_CONN_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_ARGUMENT_SEPARATOR (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_WEB_APP_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_SERVER_SIG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_AUDIT_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_AUDIT_DIR_MOD (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_AUDIT_ENG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_AUDIT_FLE_MOD (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_AUDIT_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_AUDIT_LOG2 (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_AUDIT_LOG_P (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_AUDIT_STS (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_AUDIT_TPE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_DEBUG_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_DEBUG_LVL (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_CACHE_TRANSFORMATIONS (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_DISABLE_BACKEND_COMPRESS (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_HASH_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_HASH_KEY (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_HASH_PARAM (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_HASH_METHOD_RX (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_HASH_METHOD_PM (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_CHROOT_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_GEO_DB (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_GSB_DB (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_GUARDIAN_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_PCRE_MATCH_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_CONN_R_STATE_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_CONN_W_STATE_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_SENSOR_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_REQ_BODY (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_REQ_BODY_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_REQ_BODY_LIMIT_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_RES_BODY (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_RES_BODY_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_RES_BODY_LIMIT_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_RULE_INHERITANCE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_RULE_PERF_TIME (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_RULE_ENG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_SEC_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_SEC_DEFAULT_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_SEC_MARKER (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_UNICODE_MAP_FILE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DIR_UNICODE_CODE_PAGE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_COLLECTION_TIMEOUT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_HTTP_BLKEY (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_INTERCEPT_ON_ERROR (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_RULE_REMOVE_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_RULE_REMOVE_BY_MSG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_RULE_REMOVE_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_UPDLOAD_KEEP_FILES (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_UPDLOAD_SAVE_TMP_FILES (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_UPLOAD_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_UPLOAD_FILE_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_UPLOAD_FILE_MODE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_VALUE_ABORT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_VALUE_DETC (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_VALUE_HTTPS (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_VALUE_OFF (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_VALUE_ON (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_VALUE_PARALLEL (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_VALUE_PROCESS_PARTIAL (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_VALUE_REJECT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_VALUE_RELEVANT_ONLY (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_VALUE_SERIAL (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_VALUE_WARN (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_XML_EXTERNAL_ENTITY (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONGIG_DIR_RESPONSE_BODY_MP (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONGIG_DIR_SEC_ARG_SEP (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONGIG_DIR_SEC_COOKIE_FORMAT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_COOKIEV0_SEPARATOR (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONGIG_DIR_SEC_DATA_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONGIG_DIR_SEC_STATUS_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_STREAM_IN_BODY_INSPECTION (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_CONGIG_DIR_SEC_TMP_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_DIRECTIVE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_DIRECTIVE_SECRULESCRIPT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_FREE_TEXT_QUOTE_MACRO_EXPANSION (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_QUOTATION_MARK (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_RUN_TIME_VAR_BLD (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_RUN_TIME_VAR_DUR (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_RUN_TIME_VAR_HSV (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_RUN_TIME_VAR_REMOTE_USER (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_RUN_TIME_VAR_TIME (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_RUN_TIME_VAR_TIME_DAY (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_RUN_TIME_VAR_TIME_EPOCH (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_RUN_TIME_VAR_TIME_HOUR (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_RUN_TIME_VAR_TIME_MIN (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_RUN_TIME_VAR_TIME_MON (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_RUN_TIME_VAR_TIME_SEC (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_RUN_TIME_VAR_TIME_WDAY (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_RUN_TIME_VAR_TIME_YEAR (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_VARIABLE (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_DICT_ELEMENT (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_DICT_ELEMENT_REGEXP (YY_COPY (std::string) v, YY_COPY (location_type) l); + + + private: /// This class is not copyable. seclang_parser (const seclang_parser&); @@ -2856,12 +3030,15 @@ namespace yy { typedef basic_symbol super_type; /// Construct an empty symbol. stack_symbol_type (); - /// Copy construct (for efficiency). - stack_symbol_type (const stack_symbol_type& that); + /// Move or copy construction. + stack_symbol_type (YY_RVREF (stack_symbol_type) that); /// Steal the contents from \a sym to build this. - stack_symbol_type (state_type s, symbol_type& sym); - /// Assignment, needed by push_back. - stack_symbol_type& operator= (const stack_symbol_type& that); + stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym); +#if defined __cplusplus && __cplusplus < 201103L + /// Assignment, needed by push_back by some old implementations. + /// Moves the contents of that. + stack_symbol_type& operator= (stack_symbol_type& that); +#endif }; /// Stack type. @@ -2873,20 +3050,20 @@ namespace yy { /// Push a new state on the stack. /// \param m a debug message to display /// if null, no trace is output. - /// \param s the symbol + /// \param sym the symbol /// \warning the contents of \a s.value is stolen. - void yypush_ (const char* m, stack_symbol_type& s); + void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym); /// Push a new look ahead token on the state on the stack. /// \param m a debug message to display /// if null, no trace is output. /// \param s the state /// \param sym the symbol (for its value and location). - /// \warning the contents of \a s.value is stolen. - void yypush_ (const char* m, state_type s, symbol_type& sym); + /// \warning the contents of \a sym.value is stolen. + void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym); - /// Pop \a n symbols the three stacks. - void yypop_ (unsigned n = 1); + /// Pop \a n symbols from the stack. + void yypop_ (int n = 1); /// Constants. enum @@ -3000,10 +3177,10 @@ namespace yy { {} template - seclang_parser::basic_symbol::basic_symbol (const basic_symbol& other) - : Base (other) + seclang_parser::basic_symbol::basic_symbol (YY_RVREF (basic_symbol) other) + : Base (YY_MOVE (other)) , value () - , location (other.location) + , location (YY_MOVE (other.location)) { switch (other.type_get ()) { @@ -3203,36 +3380,36 @@ namespace yy { case 337: // "VARIABLE" case 338: // "Dictionary element" case 339: // "Dictionary element, selected by regexp" - value.copy< std::string > (other.value); + value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (other.value)); break; case 346: // op case 347: // op_before_init - value.copy< std::unique_ptr > (other.value); + value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (other.value)); break; case 355: // run_time_string - value.copy< std::unique_ptr > (other.value); + value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (other.value)); break; case 352: // var - value.copy< std::unique_ptr > (other.value); + value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (other.value)); break; case 353: // act case 354: // setvar_action - value.copy< std::unique_ptr > (other.value); + value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (other.value)); break; case 349: // variables case 350: // variables_pre_process case 351: // variables_may_be_quoted - value.copy< std::unique_ptr > > > (other.value); + value.YY_MOVE_OR_COPY< std::unique_ptr > > > (YY_MOVE (other.value)); break; case 344: // actions case 345: // actions_may_quoted - value.copy< std::unique_ptr > > > (other.value); + value.YY_MOVE_OR_COPY< std::unique_ptr > > > (YY_MOVE (other.value)); break; default: @@ -3241,307 +3418,65 @@ namespace yy { } - template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, const semantic_type& v, const location_type& l) - : Base (t) - , value () - , location (l) - { - (void) v; - switch (this->type_get ()) - { - case 144: // "Accuracy" - case 145: // "Allow" - case 146: // "Append" - case 147: // "AuditLog" - case 148: // "Block" - case 149: // "Capture" - case 150: // "Chain" - case 151: // "ACTION_CTL_AUDIT_ENGINE" - case 152: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 153: // "ACTION_CTL_BDY_JSON" - case 154: // "ACTION_CTL_BDY_XML" - case 155: // "ACTION_CTL_BDY_URLENCODED" - case 156: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 157: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 158: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 159: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case 160: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 161: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 162: // "Deny" - case 163: // "DeprecateVar" - case 164: // "Drop" - case 165: // "Exec" - case 166: // "ExpireVar" - case 167: // "Id" - case 168: // "InitCol" - case 169: // "Log" - case 170: // "LogData" - case 171: // "Maturity" - case 172: // "Msg" - case 173: // "MultiMatch" - case 174: // "NoAuditLog" - case 175: // "NoLog" - case 176: // "Pass" - case 177: // "Pause" - case 178: // "Phase" - case 179: // "Prepend" - case 180: // "Proxy" - case 181: // "Redirect" - case 182: // "Rev" - case 183: // "SanitiseArg" - case 184: // "SanitiseMatched" - case 185: // "SanitiseMatchedBytes" - case 186: // "SanitiseRequestHeader" - case 187: // "SanitiseResponseHeader" - case 188: // "SetEnv" - case 189: // "SetRsc" - case 190: // "SetSid" - case 191: // "SetUID" - case 192: // "Severity" - case 193: // "Skip" - case 194: // "SkipAfter" - case 195: // "Status" - case 196: // "Tag" - case 197: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case 198: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case 199: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case 200: // "ACTION_TRANSFORMATION_CMD_LINE" - case 201: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 202: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 203: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case 204: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 205: // "ACTION_TRANSFORMATION_HEX_DECODE" - case 206: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 207: // "ACTION_TRANSFORMATION_JS_DECODE" - case 208: // "ACTION_TRANSFORMATION_LENGTH" - case 209: // "ACTION_TRANSFORMATION_LOWERCASE" - case 210: // "ACTION_TRANSFORMATION_MD5" - case 211: // "ACTION_TRANSFORMATION_NONE" - case 212: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 213: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 214: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 215: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 216: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 217: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 218: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 219: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 220: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 221: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 222: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 223: // "ACTION_TRANSFORMATION_SHA1" - case 224: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 225: // "ACTION_TRANSFORMATION_TRIM" - case 226: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case 227: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case 228: // "ACTION_TRANSFORMATION_UPPERCASE" - case 229: // "ACTION_TRANSFORMATION_URL_ENCODE" - case 230: // "ACTION_TRANSFORMATION_URL_DECODE" - case 231: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 232: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 233: // "Ver" - case 234: // "xmlns" - case 235: // "CONFIG_COMPONENT_SIG" - case 236: // "CONFIG_CONN_ENGINE" - case 237: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case 238: // "CONFIG_SEC_WEB_APP_ID" - case 239: // "CONFIG_SEC_SERVER_SIG" - case 240: // "CONFIG_DIR_AUDIT_DIR" - case 241: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 242: // "CONFIG_DIR_AUDIT_ENG" - case 243: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 244: // "CONFIG_DIR_AUDIT_LOG" - case 245: // "CONFIG_DIR_AUDIT_LOG2" - case 246: // "CONFIG_DIR_AUDIT_LOG_P" - case 247: // "CONFIG_DIR_AUDIT_STS" - case 248: // "CONFIG_DIR_AUDIT_TPE" - case 249: // "CONFIG_DIR_DEBUG_LOG" - case 250: // "CONFIG_DIR_DEBUG_LVL" - case 251: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case 252: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case 253: // "CONFIG_SEC_HASH_ENGINE" - case 254: // "CONFIG_SEC_HASH_KEY" - case 255: // "CONFIG_SEC_HASH_PARAM" - case 256: // "CONFIG_SEC_HASH_METHOD_RX" - case 257: // "CONFIG_SEC_HASH_METHOD_PM" - case 258: // "CONFIG_SEC_CHROOT_DIR" - case 259: // "CONFIG_DIR_GEO_DB" - case 260: // "CONFIG_DIR_GSB_DB" - case 261: // "CONFIG_SEC_GUARDIAN_LOG" - case 262: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 263: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 264: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case 265: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case 266: // "CONFIG_SEC_SENSOR_ID" - case 267: // "CONFIG_DIR_REQ_BODY" - case 268: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 269: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 270: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 271: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 272: // "CONFIG_DIR_RES_BODY" - case 273: // "CONFIG_DIR_RES_BODY_LIMIT" - case 274: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 275: // "CONFIG_SEC_RULE_INHERITANCE" - case 276: // "CONFIG_SEC_RULE_PERF_TIME" - case 277: // "CONFIG_DIR_RULE_ENG" - case 278: // "CONFIG_DIR_SEC_ACTION" - case 279: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 280: // "CONFIG_DIR_SEC_MARKER" - case 281: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 282: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case 283: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 284: // "CONFIG_SEC_HTTP_BLKEY" - case 285: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case 286: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 287: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 288: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case 289: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case 290: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case 291: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case 292: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case 293: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case 294: // "CONFIG_UPDLOAD_KEEP_FILES" - case 295: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 296: // "CONFIG_UPLOAD_DIR" - case 297: // "CONFIG_UPLOAD_FILE_LIMIT" - case 298: // "CONFIG_UPLOAD_FILE_MODE" - case 299: // "CONFIG_VALUE_ABORT" - case 300: // "CONFIG_VALUE_DETC" - case 301: // "CONFIG_VALUE_HTTPS" - case 302: // "CONFIG_VALUE_OFF" - case 303: // "CONFIG_VALUE_ON" - case 304: // "CONFIG_VALUE_PARALLEL" - case 305: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 306: // "CONFIG_VALUE_REJECT" - case 307: // "CONFIG_VALUE_RELEVANT_ONLY" - case 308: // "CONFIG_VALUE_SERIAL" - case 309: // "CONFIG_VALUE_WARN" - case 310: // "CONFIG_XML_EXTERNAL_ENTITY" - case 311: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 312: // "CONGIG_DIR_SEC_ARG_SEP" - case 313: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 314: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case 315: // "CONGIG_DIR_SEC_DATA_DIR" - case 316: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 317: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case 318: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case 319: // "CONGIG_DIR_SEC_TMP_DIR" - case 320: // "DIRECTIVE" - case 321: // "DIRECTIVE_SECRULESCRIPT" - case 322: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case 323: // "QUOTATION_MARK" - case 324: // "RUN_TIME_VAR_BLD" - case 325: // "RUN_TIME_VAR_DUR" - case 326: // "RUN_TIME_VAR_HSV" - case 327: // "RUN_TIME_VAR_REMOTE_USER" - case 328: // "RUN_TIME_VAR_TIME" - case 329: // "RUN_TIME_VAR_TIME_DAY" - case 330: // "RUN_TIME_VAR_TIME_EPOCH" - case 331: // "RUN_TIME_VAR_TIME_HOUR" - case 332: // "RUN_TIME_VAR_TIME_MIN" - case 333: // "RUN_TIME_VAR_TIME_MON" - case 334: // "RUN_TIME_VAR_TIME_SEC" - case 335: // "RUN_TIME_VAR_TIME_WDAY" - case 336: // "RUN_TIME_VAR_TIME_YEAR" - case 337: // "VARIABLE" - case 338: // "Dictionary element" - case 339: // "Dictionary element, selected by regexp" - value.copy< std::string > (v); - break; - - case 346: // op - case 347: // op_before_init - value.copy< std::unique_ptr > (v); - break; - - case 355: // run_time_string - value.copy< std::unique_ptr > (v); - break; - - case 352: // var - value.copy< std::unique_ptr > (v); - break; - - case 353: // act - case 354: // setvar_action - value.copy< std::unique_ptr > (v); - break; - - case 349: // variables - case 350: // variables_pre_process - case 351: // variables_may_be_quoted - value.copy< std::unique_ptr > > > (v); - break; - - case 344: // actions - case 345: // actions_may_quoted - value.copy< std::unique_ptr > > > (v); - break; - - default: - break; - } -} - // Implementation of basic_symbol constructor for each type. - template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, const location_type& l) + seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (location_type) l) : Base (t) - , location (l) + , location (YY_MOVE (l)) {} template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l) + seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l) : Base (t) - , value (v) - , location (l) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) {} template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, const std::unique_ptr& v, const location_type& l) + seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l) : Base (t) - , value (v) - , location (l) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) {} template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, const std::unique_ptr& v, const location_type& l) + seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l) : Base (t) - , value (v) - , location (l) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) {} template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, const std::unique_ptr& v, const location_type& l) + seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l) : Base (t) - , value (v) - , location (l) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) {} template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, const std::unique_ptr& v, const location_type& l) + seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l) : Base (t) - , value (v) - , location (l) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) {} template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, const std::unique_ptr > > & v, const location_type& l) + seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr > > ) v, YY_RVREF (location_type) l) : Base (t) - , value (v) - , location (l) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) {} template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, const std::unique_ptr > > & v, const location_type& l) + seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr > > ) v, YY_RVREF (location_type) l) : Base (t) - , value (v) - , location (l) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) {} + template seclang_parser::basic_symbol::~basic_symbol () { @@ -4010,43 +3945,43 @@ namespace yy { case 337: // "VARIABLE" case 338: // "Dictionary element" case 339: // "Dictionary element, selected by regexp" - value.move< std::string > (s.value); + value.move< std::string > (YY_MOVE (s.value)); break; case 346: // op case 347: // op_before_init - value.move< std::unique_ptr > (s.value); + value.move< std::unique_ptr > (YY_MOVE (s.value)); break; case 355: // run_time_string - value.move< std::unique_ptr > (s.value); + value.move< std::unique_ptr > (YY_MOVE (s.value)); break; case 352: // var - value.move< std::unique_ptr > (s.value); + value.move< std::unique_ptr > (YY_MOVE (s.value)); break; case 353: // act case 354: // setvar_action - value.move< std::unique_ptr > (s.value); + value.move< std::unique_ptr > (YY_MOVE (s.value)); break; case 349: // variables case 350: // variables_pre_process case 351: // variables_may_be_quoted - value.move< std::unique_ptr > > > (s.value); + value.move< std::unique_ptr > > > (YY_MOVE (s.value)); break; case 344: // actions case 345: // actions_may_quoted - value.move< std::unique_ptr > > > (s.value); + value.move< std::unique_ptr > > > (YY_MOVE (s.value)); break; default: break; } - location = s.location; + location = YY_MOVE (s.location); } // by_type. @@ -4134,2039 +4069,2378 @@ namespace yy { }; return static_cast (yytoken_number_[type]); } + // Implementation of make_symbol for each symbol type. + inline seclang_parser::symbol_type - seclang_parser::make_END (const location_type& l) + seclang_parser::make_END (YY_COPY (location_type) l) { - return symbol_type (token::TOK_END, l); + return symbol_type (token::TOK_END, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_COMMA (const location_type& l) + seclang_parser::make_COMMA (YY_COPY (location_type) l) { - return symbol_type (token::TOK_COMMA, l); + return symbol_type (token::TOK_COMMA, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_CONTENT_INJECTION (const location_type& l) + seclang_parser::make_CONFIG_CONTENT_INJECTION (YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_CONTENT_INJECTION, l); + return symbol_type (token::TOK_CONFIG_CONTENT_INJECTION, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR (const location_type& l) + seclang_parser::make_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR (YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR, l); + return symbol_type (token::TOK_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_PIPE (const location_type& l) + seclang_parser::make_PIPE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_PIPE, l); + return symbol_type (token::TOK_PIPE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_NEW_LINE (const location_type& l) + seclang_parser::make_NEW_LINE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_NEW_LINE, l); + return symbol_type (token::TOK_NEW_LINE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VAR_COUNT (const location_type& l) + seclang_parser::make_VAR_COUNT (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VAR_COUNT, l); + return symbol_type (token::TOK_VAR_COUNT, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VAR_EXCLUSION (const location_type& l) + seclang_parser::make_VAR_EXCLUSION (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VAR_EXCLUSION, l); + return symbol_type (token::TOK_VAR_EXCLUSION, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_ARGS (const location_type& l) + seclang_parser::make_VARIABLE_ARGS (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_ARGS, l); + return symbol_type (token::TOK_VARIABLE_ARGS, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_ARGS_POST (const location_type& l) + seclang_parser::make_VARIABLE_ARGS_POST (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_ARGS_POST, l); + return symbol_type (token::TOK_VARIABLE_ARGS_POST, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_ARGS_GET (const location_type& l) + seclang_parser::make_VARIABLE_ARGS_GET (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_ARGS_GET, l); + return symbol_type (token::TOK_VARIABLE_ARGS_GET, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FILES_SIZES (const location_type& l) + seclang_parser::make_VARIABLE_FILES_SIZES (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_FILES_SIZES, l); + return symbol_type (token::TOK_VARIABLE_FILES_SIZES, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FILES_NAMES (const location_type& l) + seclang_parser::make_VARIABLE_FILES_NAMES (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_FILES_NAMES, l); + return symbol_type (token::TOK_VARIABLE_FILES_NAMES, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FILES_TMP_CONTENT (const location_type& l) + seclang_parser::make_VARIABLE_FILES_TMP_CONTENT (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_FILES_TMP_CONTENT, l); + return symbol_type (token::TOK_VARIABLE_FILES_TMP_CONTENT, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_FILENAME (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_FILENAME (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_FILENAME, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_FILENAME, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_NAME (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_NAME (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_NAME, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_NAME, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MATCHED_VARS_NAMES (const location_type& l) + seclang_parser::make_VARIABLE_MATCHED_VARS_NAMES (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MATCHED_VARS_NAMES, l); + return symbol_type (token::TOK_VARIABLE_MATCHED_VARS_NAMES, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MATCHED_VARS (const location_type& l) + seclang_parser::make_VARIABLE_MATCHED_VARS (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MATCHED_VARS, l); + return symbol_type (token::TOK_VARIABLE_MATCHED_VARS, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FILES (const location_type& l) + seclang_parser::make_VARIABLE_FILES (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_FILES, l); + return symbol_type (token::TOK_VARIABLE_FILES, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_COOKIES (const location_type& l) + seclang_parser::make_VARIABLE_REQUEST_COOKIES (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQUEST_COOKIES, l); + return symbol_type (token::TOK_VARIABLE_REQUEST_COOKIES, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_HEADERS (const location_type& l) + seclang_parser::make_VARIABLE_REQUEST_HEADERS (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQUEST_HEADERS, l); + return symbol_type (token::TOK_VARIABLE_REQUEST_HEADERS, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESPONSE_HEADERS (const location_type& l) + seclang_parser::make_VARIABLE_RESPONSE_HEADERS (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_RESPONSE_HEADERS, l); + return symbol_type (token::TOK_VARIABLE_RESPONSE_HEADERS, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_GEO (const location_type& l) + seclang_parser::make_VARIABLE_GEO (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_GEO, l); + return symbol_type (token::TOK_VARIABLE_GEO, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_COOKIES_NAMES (const location_type& l) + seclang_parser::make_VARIABLE_REQUEST_COOKIES_NAMES (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQUEST_COOKIES_NAMES, l); + return symbol_type (token::TOK_VARIABLE_REQUEST_COOKIES_NAMES, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_ARGS_COMBINED_SIZE (const location_type& l) + seclang_parser::make_VARIABLE_ARGS_COMBINED_SIZE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_ARGS_COMBINED_SIZE, l); + return symbol_type (token::TOK_VARIABLE_ARGS_COMBINED_SIZE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_ARGS_GET_NAMES (const location_type& l) + seclang_parser::make_VARIABLE_ARGS_GET_NAMES (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_ARGS_GET_NAMES, l); + return symbol_type (token::TOK_VARIABLE_ARGS_GET_NAMES, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RULE (const location_type& l) + seclang_parser::make_VARIABLE_RULE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_RULE, l); + return symbol_type (token::TOK_VARIABLE_RULE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_ARGS_NAMES (const location_type& l) + seclang_parser::make_VARIABLE_ARGS_NAMES (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_ARGS_NAMES, l); + return symbol_type (token::TOK_VARIABLE_ARGS_NAMES, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_ARGS_POST_NAMES (const location_type& l) + seclang_parser::make_VARIABLE_ARGS_POST_NAMES (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_ARGS_POST_NAMES, l); + return symbol_type (token::TOK_VARIABLE_ARGS_POST_NAMES, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_AUTH_TYPE (const location_type& l) + seclang_parser::make_VARIABLE_AUTH_TYPE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_AUTH_TYPE, l); + return symbol_type (token::TOK_VARIABLE_AUTH_TYPE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FILES_COMBINED_SIZE (const location_type& l) + seclang_parser::make_VARIABLE_FILES_COMBINED_SIZE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_FILES_COMBINED_SIZE, l); + return symbol_type (token::TOK_VARIABLE_FILES_COMBINED_SIZE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FILES_TMP_NAMES (const location_type& l) + seclang_parser::make_VARIABLE_FILES_TMP_NAMES (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_FILES_TMP_NAMES, l); + return symbol_type (token::TOK_VARIABLE_FILES_TMP_NAMES, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FULL_REQUEST (const location_type& l) + seclang_parser::make_VARIABLE_FULL_REQUEST (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_FULL_REQUEST, l); + return symbol_type (token::TOK_VARIABLE_FULL_REQUEST, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FULL_REQUEST_LENGTH (const location_type& l) + seclang_parser::make_VARIABLE_FULL_REQUEST_LENGTH (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_FULL_REQUEST_LENGTH, l); + return symbol_type (token::TOK_VARIABLE_FULL_REQUEST_LENGTH, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_INBOUND_DATA_ERROR (const location_type& l) + seclang_parser::make_VARIABLE_INBOUND_DATA_ERROR (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_INBOUND_DATA_ERROR, l); + return symbol_type (token::TOK_VARIABLE_INBOUND_DATA_ERROR, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MATCHED_VAR (const location_type& l) + seclang_parser::make_VARIABLE_MATCHED_VAR (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MATCHED_VAR, l); + return symbol_type (token::TOK_VARIABLE_MATCHED_VAR, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MATCHED_VAR_NAME (const location_type& l) + seclang_parser::make_VARIABLE_MATCHED_VAR_NAME (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MATCHED_VAR_NAME, l); + return symbol_type (token::TOK_VARIABLE_MATCHED_VAR_NAME, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_BOUNDARY_QUOTED (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_BOUNDARY_QUOTED (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_BOUNDARY_QUOTED, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_BOUNDARY_QUOTED, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_CRLF_LF_LINES (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_CRLF_LF_LINES (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_CRLF_LF_LINES, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_CRLF_LF_LINES, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_DATA_AFTER (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_DATA_AFTER (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_DATA_AFTER, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_DATA_AFTER, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_DATA_BEFORE (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_DATA_BEFORE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_DATA_BEFORE, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_DATA_BEFORE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_HEADER_FOLDING (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_HEADER_FOLDING (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_HEADER_FOLDING, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_HEADER_FOLDING, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_INVALID_PART (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_INVALID_PART (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_INVALID_PART, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_INVALID_PART, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_INVALID_QUOTING (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_INVALID_QUOTING (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_INVALID_QUOTING, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_INVALID_QUOTING, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_LF_LINE (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_LF_LINE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_LF_LINE, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_LF_LINE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_MISSING_SEMICOLON (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_MISSING_SEMICOLON (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_MISSING_SEMICOLON, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_MISSING_SEMICOLON, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_SEMICOLON_MISSING (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_SEMICOLON_MISSING (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_SEMICOLON_MISSING, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_SEMICOLON_MISSING, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_STRICT_ERROR (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_STRICT_ERROR (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_STRICT_ERROR, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_STRICT_ERROR, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY (const location_type& l) + seclang_parser::make_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY, l); + return symbol_type (token::TOK_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_OUTBOUND_DATA_ERROR (const location_type& l) + seclang_parser::make_VARIABLE_OUTBOUND_DATA_ERROR (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_OUTBOUND_DATA_ERROR, l); + return symbol_type (token::TOK_VARIABLE_OUTBOUND_DATA_ERROR, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_PATH_INFO (const location_type& l) + seclang_parser::make_VARIABLE_PATH_INFO (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_PATH_INFO, l); + return symbol_type (token::TOK_VARIABLE_PATH_INFO, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_QUERY_STRING (const location_type& l) + seclang_parser::make_VARIABLE_QUERY_STRING (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_QUERY_STRING, l); + return symbol_type (token::TOK_VARIABLE_QUERY_STRING, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REMOTE_ADDR (const location_type& l) + seclang_parser::make_VARIABLE_REMOTE_ADDR (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REMOTE_ADDR, l); + return symbol_type (token::TOK_VARIABLE_REMOTE_ADDR, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REMOTE_HOST (const location_type& l) + seclang_parser::make_VARIABLE_REMOTE_HOST (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REMOTE_HOST, l); + return symbol_type (token::TOK_VARIABLE_REMOTE_HOST, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REMOTE_PORT (const location_type& l) + seclang_parser::make_VARIABLE_REMOTE_PORT (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REMOTE_PORT, l); + return symbol_type (token::TOK_VARIABLE_REMOTE_PORT, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQBODY_ERROR_MSG (const location_type& l) + seclang_parser::make_VARIABLE_REQBODY_ERROR_MSG (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQBODY_ERROR_MSG, l); + return symbol_type (token::TOK_VARIABLE_REQBODY_ERROR_MSG, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQBODY_ERROR (const location_type& l) + seclang_parser::make_VARIABLE_REQBODY_ERROR (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQBODY_ERROR, l); + return symbol_type (token::TOK_VARIABLE_REQBODY_ERROR, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG (const location_type& l) + seclang_parser::make_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG, l); + return symbol_type (token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQBODY_PROCESSOR_ERROR (const location_type& l) + seclang_parser::make_VARIABLE_REQBODY_PROCESSOR_ERROR (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR, l); + return symbol_type (token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQBODY_PROCESSOR (const location_type& l) + seclang_parser::make_VARIABLE_REQBODY_PROCESSOR (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQBODY_PROCESSOR, l); + return symbol_type (token::TOK_VARIABLE_REQBODY_PROCESSOR, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_BASENAME (const location_type& l) + seclang_parser::make_VARIABLE_REQUEST_BASENAME (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQUEST_BASENAME, l); + return symbol_type (token::TOK_VARIABLE_REQUEST_BASENAME, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_BODY_LENGTH (const location_type& l) + seclang_parser::make_VARIABLE_REQUEST_BODY_LENGTH (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQUEST_BODY_LENGTH, l); + return symbol_type (token::TOK_VARIABLE_REQUEST_BODY_LENGTH, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_BODY (const location_type& l) + seclang_parser::make_VARIABLE_REQUEST_BODY (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQUEST_BODY, l); + return symbol_type (token::TOK_VARIABLE_REQUEST_BODY, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_FILE_NAME (const location_type& l) + seclang_parser::make_VARIABLE_REQUEST_FILE_NAME (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQUEST_FILE_NAME, l); + return symbol_type (token::TOK_VARIABLE_REQUEST_FILE_NAME, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_HEADERS_NAMES (const location_type& l) + seclang_parser::make_VARIABLE_REQUEST_HEADERS_NAMES (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQUEST_HEADERS_NAMES, l); + return symbol_type (token::TOK_VARIABLE_REQUEST_HEADERS_NAMES, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_LINE (const location_type& l) + seclang_parser::make_VARIABLE_REQUEST_LINE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQUEST_LINE, l); + return symbol_type (token::TOK_VARIABLE_REQUEST_LINE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_METHOD (const location_type& l) + seclang_parser::make_VARIABLE_REQUEST_METHOD (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQUEST_METHOD, l); + return symbol_type (token::TOK_VARIABLE_REQUEST_METHOD, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_PROTOCOL (const location_type& l) + seclang_parser::make_VARIABLE_REQUEST_PROTOCOL (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQUEST_PROTOCOL, l); + return symbol_type (token::TOK_VARIABLE_REQUEST_PROTOCOL, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_URI_RAW (const location_type& l) + seclang_parser::make_VARIABLE_REQUEST_URI_RAW (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQUEST_URI_RAW, l); + return symbol_type (token::TOK_VARIABLE_REQUEST_URI_RAW, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_URI (const location_type& l) + seclang_parser::make_VARIABLE_REQUEST_URI (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_REQUEST_URI, l); + return symbol_type (token::TOK_VARIABLE_REQUEST_URI, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESOURCE (const location_type& l) + seclang_parser::make_VARIABLE_RESOURCE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_RESOURCE, l); + return symbol_type (token::TOK_VARIABLE_RESOURCE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESPONSE_BODY (const location_type& l) + seclang_parser::make_VARIABLE_RESPONSE_BODY (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_RESPONSE_BODY, l); + return symbol_type (token::TOK_VARIABLE_RESPONSE_BODY, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESPONSE_CONTENT_LENGTH (const location_type& l) + seclang_parser::make_VARIABLE_RESPONSE_CONTENT_LENGTH (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_RESPONSE_CONTENT_LENGTH, l); + return symbol_type (token::TOK_VARIABLE_RESPONSE_CONTENT_LENGTH, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESPONSE_CONTENT_TYPE (const location_type& l) + seclang_parser::make_VARIABLE_RESPONSE_CONTENT_TYPE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_RESPONSE_CONTENT_TYPE, l); + return symbol_type (token::TOK_VARIABLE_RESPONSE_CONTENT_TYPE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESPONSE_HEADERS_NAMES (const location_type& l) + seclang_parser::make_VARIABLE_RESPONSE_HEADERS_NAMES (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_RESPONSE_HEADERS_NAMES, l); + return symbol_type (token::TOK_VARIABLE_RESPONSE_HEADERS_NAMES, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESPONSE_PROTOCOL (const location_type& l) + seclang_parser::make_VARIABLE_RESPONSE_PROTOCOL (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_RESPONSE_PROTOCOL, l); + return symbol_type (token::TOK_VARIABLE_RESPONSE_PROTOCOL, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESPONSE_STATUS (const location_type& l) + seclang_parser::make_VARIABLE_RESPONSE_STATUS (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_RESPONSE_STATUS, l); + return symbol_type (token::TOK_VARIABLE_RESPONSE_STATUS, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_SERVER_ADDR (const location_type& l) + seclang_parser::make_VARIABLE_SERVER_ADDR (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_SERVER_ADDR, l); + return symbol_type (token::TOK_VARIABLE_SERVER_ADDR, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_SERVER_NAME (const location_type& l) + seclang_parser::make_VARIABLE_SERVER_NAME (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_SERVER_NAME, l); + return symbol_type (token::TOK_VARIABLE_SERVER_NAME, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_SERVER_PORT (const location_type& l) + seclang_parser::make_VARIABLE_SERVER_PORT (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_SERVER_PORT, l); + return symbol_type (token::TOK_VARIABLE_SERVER_PORT, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_SESSION_ID (const location_type& l) + seclang_parser::make_VARIABLE_SESSION_ID (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_SESSION_ID, l); + return symbol_type (token::TOK_VARIABLE_SESSION_ID, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_UNIQUE_ID (const location_type& l) + seclang_parser::make_VARIABLE_UNIQUE_ID (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_UNIQUE_ID, l); + return symbol_type (token::TOK_VARIABLE_UNIQUE_ID, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_URL_ENCODED_ERROR (const location_type& l) + seclang_parser::make_VARIABLE_URL_ENCODED_ERROR (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_URL_ENCODED_ERROR, l); + return symbol_type (token::TOK_VARIABLE_URL_ENCODED_ERROR, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_USER_ID (const location_type& l) + seclang_parser::make_VARIABLE_USER_ID (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_USER_ID, l); + return symbol_type (token::TOK_VARIABLE_USER_ID, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_WEB_APP_ID (const location_type& l) + seclang_parser::make_VARIABLE_WEB_APP_ID (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_WEB_APP_ID, l); + return symbol_type (token::TOK_VARIABLE_WEB_APP_ID, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_STATUS (const location_type& l) + seclang_parser::make_VARIABLE_STATUS (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_STATUS, l); + return symbol_type (token::TOK_VARIABLE_STATUS, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_STATUS_LINE (const location_type& l) + seclang_parser::make_VARIABLE_STATUS_LINE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_STATUS_LINE, l); + return symbol_type (token::TOK_VARIABLE_STATUS_LINE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_IP (const location_type& l) + seclang_parser::make_VARIABLE_IP (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_IP, l); + return symbol_type (token::TOK_VARIABLE_IP, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_GLOBAL (const location_type& l) + seclang_parser::make_VARIABLE_GLOBAL (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_GLOBAL, l); + return symbol_type (token::TOK_VARIABLE_GLOBAL, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_TX (const location_type& l) + seclang_parser::make_VARIABLE_TX (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_TX, l); + return symbol_type (token::TOK_VARIABLE_TX, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_SESSION (const location_type& l) + seclang_parser::make_VARIABLE_SESSION (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_SESSION, l); + return symbol_type (token::TOK_VARIABLE_SESSION, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE_USER (const location_type& l) + seclang_parser::make_VARIABLE_USER (YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE_USER, l); + return symbol_type (token::TOK_VARIABLE_USER, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_ENV (const location_type& l) + seclang_parser::make_RUN_TIME_VAR_ENV (YY_COPY (location_type) l) { - return symbol_type (token::TOK_RUN_TIME_VAR_ENV, l); + return symbol_type (token::TOK_RUN_TIME_VAR_ENV, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_XML (const location_type& l) + seclang_parser::make_RUN_TIME_VAR_XML (YY_COPY (location_type) l) { - return symbol_type (token::TOK_RUN_TIME_VAR_XML, l); + return symbol_type (token::TOK_RUN_TIME_VAR_XML, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_SETVAR (const location_type& l) + seclang_parser::make_ACTION_SETVAR (YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_SETVAR, l); + return symbol_type (token::TOK_ACTION_SETVAR, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_SETVAR_OPERATION_EQUALS (const location_type& l) + seclang_parser::make_SETVAR_OPERATION_EQUALS (YY_COPY (location_type) l) { - return symbol_type (token::TOK_SETVAR_OPERATION_EQUALS, l); + return symbol_type (token::TOK_SETVAR_OPERATION_EQUALS, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_SETVAR_OPERATION_EQUALS_PLUS (const location_type& l) + seclang_parser::make_SETVAR_OPERATION_EQUALS_PLUS (YY_COPY (location_type) l) { - return symbol_type (token::TOK_SETVAR_OPERATION_EQUALS_PLUS, l); + return symbol_type (token::TOK_SETVAR_OPERATION_EQUALS_PLUS, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_SETVAR_OPERATION_EQUALS_MINUS (const location_type& l) + seclang_parser::make_SETVAR_OPERATION_EQUALS_MINUS (YY_COPY (location_type) l) { - return symbol_type (token::TOK_SETVAR_OPERATION_EQUALS_MINUS, l); + return symbol_type (token::TOK_SETVAR_OPERATION_EQUALS_MINUS, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_NOT (const location_type& l) + seclang_parser::make_NOT (YY_COPY (location_type) l) { - return symbol_type (token::TOK_NOT, l); + return symbol_type (token::TOK_NOT, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_BEGINS_WITH (const location_type& l) + seclang_parser::make_OPERATOR_BEGINS_WITH (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_BEGINS_WITH, l); + return symbol_type (token::TOK_OPERATOR_BEGINS_WITH, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_CONTAINS (const location_type& l) + seclang_parser::make_OPERATOR_CONTAINS (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_CONTAINS, l); + return symbol_type (token::TOK_OPERATOR_CONTAINS, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_CONTAINS_WORD (const location_type& l) + seclang_parser::make_OPERATOR_CONTAINS_WORD (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_CONTAINS_WORD, l); + return symbol_type (token::TOK_OPERATOR_CONTAINS_WORD, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_DETECT_SQLI (const location_type& l) + seclang_parser::make_OPERATOR_DETECT_SQLI (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_DETECT_SQLI, l); + return symbol_type (token::TOK_OPERATOR_DETECT_SQLI, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_DETECT_XSS (const location_type& l) + seclang_parser::make_OPERATOR_DETECT_XSS (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_DETECT_XSS, l); + return symbol_type (token::TOK_OPERATOR_DETECT_XSS, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_ENDS_WITH (const location_type& l) + seclang_parser::make_OPERATOR_ENDS_WITH (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_ENDS_WITH, l); + return symbol_type (token::TOK_OPERATOR_ENDS_WITH, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_EQ (const location_type& l) + seclang_parser::make_OPERATOR_EQ (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_EQ, l); + return symbol_type (token::TOK_OPERATOR_EQ, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_FUZZY_HASH (const location_type& l) + seclang_parser::make_OPERATOR_FUZZY_HASH (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_FUZZY_HASH, l); + return symbol_type (token::TOK_OPERATOR_FUZZY_HASH, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_GEOLOOKUP (const location_type& l) + seclang_parser::make_OPERATOR_GEOLOOKUP (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_GEOLOOKUP, l); + return symbol_type (token::TOK_OPERATOR_GEOLOOKUP, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_GE (const location_type& l) + seclang_parser::make_OPERATOR_GE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_GE, l); + return symbol_type (token::TOK_OPERATOR_GE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_GSB_LOOKUP (const location_type& l) + seclang_parser::make_OPERATOR_GSB_LOOKUP (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_GSB_LOOKUP, l); + return symbol_type (token::TOK_OPERATOR_GSB_LOOKUP, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_GT (const location_type& l) + seclang_parser::make_OPERATOR_GT (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_GT, l); + return symbol_type (token::TOK_OPERATOR_GT, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_INSPECT_FILE (const location_type& l) + seclang_parser::make_OPERATOR_INSPECT_FILE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_INSPECT_FILE, l); + return symbol_type (token::TOK_OPERATOR_INSPECT_FILE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_IP_MATCH_FROM_FILE (const location_type& l) + seclang_parser::make_OPERATOR_IP_MATCH_FROM_FILE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_IP_MATCH_FROM_FILE, l); + return symbol_type (token::TOK_OPERATOR_IP_MATCH_FROM_FILE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_IP_MATCH (const location_type& l) + seclang_parser::make_OPERATOR_IP_MATCH (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_IP_MATCH, l); + return symbol_type (token::TOK_OPERATOR_IP_MATCH, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_LE (const location_type& l) + seclang_parser::make_OPERATOR_LE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_LE, l); + return symbol_type (token::TOK_OPERATOR_LE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_LT (const location_type& l) + seclang_parser::make_OPERATOR_LT (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_LT, l); + return symbol_type (token::TOK_OPERATOR_LT, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_PM_FROM_FILE (const location_type& l) + seclang_parser::make_OPERATOR_PM_FROM_FILE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_PM_FROM_FILE, l); + return symbol_type (token::TOK_OPERATOR_PM_FROM_FILE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_PM (const location_type& l) + seclang_parser::make_OPERATOR_PM (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_PM, l); + return symbol_type (token::TOK_OPERATOR_PM, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_RBL (const location_type& l) + seclang_parser::make_OPERATOR_RBL (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_RBL, l); + return symbol_type (token::TOK_OPERATOR_RBL, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_RSUB (const location_type& l) + seclang_parser::make_OPERATOR_RSUB (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_RSUB, l); + return symbol_type (token::TOK_OPERATOR_RSUB, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_RX_CONTENT_ONLY (const location_type& l) + seclang_parser::make_OPERATOR_RX_CONTENT_ONLY (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_RX_CONTENT_ONLY, l); + return symbol_type (token::TOK_OPERATOR_RX_CONTENT_ONLY, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_RX (const location_type& l) + seclang_parser::make_OPERATOR_RX (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_RX, l); + return symbol_type (token::TOK_OPERATOR_RX, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_STR_EQ (const location_type& l) + seclang_parser::make_OPERATOR_STR_EQ (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_STR_EQ, l); + return symbol_type (token::TOK_OPERATOR_STR_EQ, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_STR_MATCH (const location_type& l) + seclang_parser::make_OPERATOR_STR_MATCH (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_STR_MATCH, l); + return symbol_type (token::TOK_OPERATOR_STR_MATCH, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_UNCONDITIONAL_MATCH (const location_type& l) + seclang_parser::make_OPERATOR_UNCONDITIONAL_MATCH (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_UNCONDITIONAL_MATCH, l); + return symbol_type (token::TOK_OPERATOR_UNCONDITIONAL_MATCH, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VALIDATE_BYTE_RANGE (const location_type& l) + seclang_parser::make_OPERATOR_VALIDATE_BYTE_RANGE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_VALIDATE_BYTE_RANGE, l); + return symbol_type (token::TOK_OPERATOR_VALIDATE_BYTE_RANGE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VALIDATE_DTD (const location_type& l) + seclang_parser::make_OPERATOR_VALIDATE_DTD (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_VALIDATE_DTD, l); + return symbol_type (token::TOK_OPERATOR_VALIDATE_DTD, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VALIDATE_HASH (const location_type& l) + seclang_parser::make_OPERATOR_VALIDATE_HASH (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_VALIDATE_HASH, l); + return symbol_type (token::TOK_OPERATOR_VALIDATE_HASH, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VALIDATE_SCHEMA (const location_type& l) + seclang_parser::make_OPERATOR_VALIDATE_SCHEMA (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_VALIDATE_SCHEMA, l); + return symbol_type (token::TOK_OPERATOR_VALIDATE_SCHEMA, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VALIDATE_URL_ENCODING (const location_type& l) + seclang_parser::make_OPERATOR_VALIDATE_URL_ENCODING (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_VALIDATE_URL_ENCODING, l); + return symbol_type (token::TOK_OPERATOR_VALIDATE_URL_ENCODING, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VALIDATE_UTF8_ENCODING (const location_type& l) + seclang_parser::make_OPERATOR_VALIDATE_UTF8_ENCODING (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_VALIDATE_UTF8_ENCODING, l); + return symbol_type (token::TOK_OPERATOR_VALIDATE_UTF8_ENCODING, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VERIFY_CC (const location_type& l) + seclang_parser::make_OPERATOR_VERIFY_CC (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_VERIFY_CC, l); + return symbol_type (token::TOK_OPERATOR_VERIFY_CC, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VERIFY_CPF (const location_type& l) + seclang_parser::make_OPERATOR_VERIFY_CPF (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_VERIFY_CPF, l); + return symbol_type (token::TOK_OPERATOR_VERIFY_CPF, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VERIFY_SSN (const location_type& l) + seclang_parser::make_OPERATOR_VERIFY_SSN (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_VERIFY_SSN, l); + return symbol_type (token::TOK_OPERATOR_VERIFY_SSN, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_OPERATOR_WITHIN (const location_type& l) + seclang_parser::make_OPERATOR_WITHIN (YY_COPY (location_type) l) { - return symbol_type (token::TOK_OPERATOR_WITHIN, l); + return symbol_type (token::TOK_OPERATOR_WITHIN, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_LOG_FMT (const location_type& l) + seclang_parser::make_CONFIG_DIR_AUDIT_LOG_FMT (YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_LOG_FMT, l); + return symbol_type (token::TOK_CONFIG_DIR_AUDIT_LOG_FMT, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_JSON (const location_type& l) + seclang_parser::make_JSON (YY_COPY (location_type) l) { - return symbol_type (token::TOK_JSON, l); + return symbol_type (token::TOK_JSON, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_NATIVE (const location_type& l) + seclang_parser::make_NATIVE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_NATIVE, l); + return symbol_type (token::TOK_NATIVE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_RULE_ENGINE (const location_type& l) + seclang_parser::make_ACTION_CTL_RULE_ENGINE (YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_CTL_RULE_ENGINE, l); + return symbol_type (token::TOK_ACTION_CTL_RULE_ENGINE, YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_ACCURACY (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_ACCURACY (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_ACCURACY, v, l); + return symbol_type (token::TOK_ACTION_ACCURACY, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_ALLOW (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_ALLOW (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_ALLOW, v, l); + return symbol_type (token::TOK_ACTION_ALLOW, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_APPEND (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_APPEND (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_APPEND, v, l); + return symbol_type (token::TOK_ACTION_APPEND, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_AUDIT_LOG (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_AUDIT_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_AUDIT_LOG, v, l); + return symbol_type (token::TOK_ACTION_AUDIT_LOG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_BLOCK (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_BLOCK (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_BLOCK, v, l); + return symbol_type (token::TOK_ACTION_BLOCK, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_CAPTURE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_CAPTURE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_CAPTURE, v, l); + return symbol_type (token::TOK_ACTION_CAPTURE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_CHAIN (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_CHAIN (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_CHAIN, v, l); + return symbol_type (token::TOK_ACTION_CHAIN, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_AUDIT_ENGINE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_CTL_AUDIT_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_CTL_AUDIT_ENGINE, v, l); + return symbol_type (token::TOK_ACTION_CTL_AUDIT_ENGINE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_AUDIT_LOG_PARTS (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_CTL_AUDIT_LOG_PARTS (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_CTL_AUDIT_LOG_PARTS, v, l); + return symbol_type (token::TOK_ACTION_CTL_AUDIT_LOG_PARTS, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_BDY_JSON (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_CTL_BDY_JSON (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_CTL_BDY_JSON, v, l); + return symbol_type (token::TOK_ACTION_CTL_BDY_JSON, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_BDY_XML (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_CTL_BDY_XML (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_CTL_BDY_XML, v, l); + return symbol_type (token::TOK_ACTION_CTL_BDY_XML, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_BDY_URLENCODED (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_CTL_BDY_URLENCODED (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_CTL_BDY_URLENCODED, v, l); + return symbol_type (token::TOK_ACTION_CTL_BDY_URLENCODED, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_FORCE_REQ_BODY_VAR (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_CTL_FORCE_REQ_BODY_VAR (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_CTL_FORCE_REQ_BODY_VAR, v, l); + return symbol_type (token::TOK_ACTION_CTL_FORCE_REQ_BODY_VAR, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_REQUEST_BODY_ACCESS (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_CTL_REQUEST_BODY_ACCESS (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_CTL_REQUEST_BODY_ACCESS, v, l); + return symbol_type (token::TOK_ACTION_CTL_REQUEST_BODY_ACCESS, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_RULE_REMOVE_BY_ID (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_CTL_RULE_REMOVE_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_CTL_RULE_REMOVE_BY_ID, v, l); + return symbol_type (token::TOK_ACTION_CTL_RULE_REMOVE_BY_ID, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_RULE_REMOVE_BY_TAG (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_CTL_RULE_REMOVE_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_CTL_RULE_REMOVE_BY_TAG, v, l); + return symbol_type (token::TOK_ACTION_CTL_RULE_REMOVE_BY_TAG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID, v, l); + return symbol_type (token::TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG, v, l); + return symbol_type (token::TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_DENY (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_DENY (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_DENY, v, l); + return symbol_type (token::TOK_ACTION_DENY, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_DEPRECATE_VAR (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_DEPRECATE_VAR (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_DEPRECATE_VAR, v, l); + return symbol_type (token::TOK_ACTION_DEPRECATE_VAR, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_DROP (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_DROP (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_DROP, v, l); + return symbol_type (token::TOK_ACTION_DROP, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_EXEC (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_EXEC (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_EXEC, v, l); + return symbol_type (token::TOK_ACTION_EXEC, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_EXPIRE_VAR (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_EXPIRE_VAR (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_EXPIRE_VAR, v, l); + return symbol_type (token::TOK_ACTION_EXPIRE_VAR, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_ID (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_ID, v, l); + return symbol_type (token::TOK_ACTION_ID, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_INITCOL (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_INITCOL (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_INITCOL, v, l); + return symbol_type (token::TOK_ACTION_INITCOL, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_LOG (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_LOG, v, l); + return symbol_type (token::TOK_ACTION_LOG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_LOG_DATA (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_LOG_DATA (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_LOG_DATA, v, l); + return symbol_type (token::TOK_ACTION_LOG_DATA, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_MATURITY (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_MATURITY (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_MATURITY, v, l); + return symbol_type (token::TOK_ACTION_MATURITY, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_MSG (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_MSG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_MSG, v, l); + return symbol_type (token::TOK_ACTION_MSG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_MULTI_MATCH (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_MULTI_MATCH (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_MULTI_MATCH, v, l); + return symbol_type (token::TOK_ACTION_MULTI_MATCH, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_NO_AUDIT_LOG (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_NO_AUDIT_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_NO_AUDIT_LOG, v, l); + return symbol_type (token::TOK_ACTION_NO_AUDIT_LOG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_NO_LOG (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_NO_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_NO_LOG, v, l); + return symbol_type (token::TOK_ACTION_NO_LOG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_PASS (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_PASS (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_PASS, v, l); + return symbol_type (token::TOK_ACTION_PASS, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_PAUSE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_PAUSE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_PAUSE, v, l); + return symbol_type (token::TOK_ACTION_PAUSE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_PHASE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_PHASE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_PHASE, v, l); + return symbol_type (token::TOK_ACTION_PHASE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_PREPEND (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_PREPEND (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_PREPEND, v, l); + return symbol_type (token::TOK_ACTION_PREPEND, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_PROXY (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_PROXY (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_PROXY, v, l); + return symbol_type (token::TOK_ACTION_PROXY, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_REDIRECT (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_REDIRECT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_REDIRECT, v, l); + return symbol_type (token::TOK_ACTION_REDIRECT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_REV (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_REV (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_REV, v, l); + return symbol_type (token::TOK_ACTION_REV, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_SANITISE_ARG (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_SANITISE_ARG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_SANITISE_ARG, v, l); + return symbol_type (token::TOK_ACTION_SANITISE_ARG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_SANITISE_MATCHED (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_SANITISE_MATCHED (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_SANITISE_MATCHED, v, l); + return symbol_type (token::TOK_ACTION_SANITISE_MATCHED, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_SANITISE_MATCHED_BYTES (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_SANITISE_MATCHED_BYTES (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_SANITISE_MATCHED_BYTES, v, l); + return symbol_type (token::TOK_ACTION_SANITISE_MATCHED_BYTES, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_SANITISE_REQUEST_HEADER (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_SANITISE_REQUEST_HEADER (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_SANITISE_REQUEST_HEADER, v, l); + return symbol_type (token::TOK_ACTION_SANITISE_REQUEST_HEADER, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_SANITISE_RESPONSE_HEADER (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_SANITISE_RESPONSE_HEADER (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_SANITISE_RESPONSE_HEADER, v, l); + return symbol_type (token::TOK_ACTION_SANITISE_RESPONSE_HEADER, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_SETENV (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_SETENV (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_SETENV, v, l); + return symbol_type (token::TOK_ACTION_SETENV, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_SETRSC (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_SETRSC (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_SETRSC, v, l); + return symbol_type (token::TOK_ACTION_SETRSC, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_SETSID (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_SETSID (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_SETSID, v, l); + return symbol_type (token::TOK_ACTION_SETSID, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_SETUID (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_SETUID (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_SETUID, v, l); + return symbol_type (token::TOK_ACTION_SETUID, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_SEVERITY (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_SEVERITY (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_SEVERITY, v, l); + return symbol_type (token::TOK_ACTION_SEVERITY, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_SKIP (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_SKIP (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_SKIP, v, l); + return symbol_type (token::TOK_ACTION_SKIP, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_SKIP_AFTER (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_SKIP_AFTER (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_SKIP_AFTER, v, l); + return symbol_type (token::TOK_ACTION_SKIP_AFTER, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_STATUS (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_STATUS (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_STATUS, v, l); + return symbol_type (token::TOK_ACTION_STATUS, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TAG (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TAG, v, l); + return symbol_type (token::TOK_ACTION_TAG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_BASE_64_ENCODE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_BASE_64_ENCODE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_BASE_64_ENCODE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_BASE_64_ENCODE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_BASE_64_DECODE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_BASE_64_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_BASE_64_DECODE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_BASE_64_DECODE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_CMD_LINE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_CMD_LINE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_CMD_LINE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_CMD_LINE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_CSS_DECODE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_CSS_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_CSS_DECODE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_CSS_DECODE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_HEX_ENCODE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_HEX_ENCODE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_HEX_ENCODE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_HEX_ENCODE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_HEX_DECODE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_HEX_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_HEX_DECODE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_HEX_DECODE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_JS_DECODE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_JS_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_JS_DECODE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_JS_DECODE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_LENGTH (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_LENGTH (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_LENGTH, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_LENGTH, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_LOWERCASE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_LOWERCASE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_LOWERCASE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_LOWERCASE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_MD5 (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_MD5 (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_MD5, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_MD5, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_NONE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_NONE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_NONE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_NONE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_NORMALISE_PATH (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_NORMALISE_PATH (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_NORMALISE_PATH, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_NORMALISE_PATH, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_REMOVE_COMMENTS (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_REMOVE_COMMENTS (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_REMOVE_NULLS (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_REMOVE_NULLS (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_REMOVE_NULLS, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_REMOVE_NULLS, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_REMOVE_WHITESPACE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_REMOVE_WHITESPACE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_REMOVE_WHITESPACE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_REMOVE_WHITESPACE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_REPLACE_COMMENTS (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_REPLACE_COMMENTS (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_REPLACE_COMMENTS, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_REPLACE_COMMENTS, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_REPLACE_NULLS (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_REPLACE_NULLS (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_REPLACE_NULLS, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_REPLACE_NULLS, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_SHA1 (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_SHA1 (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_SHA1, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_SHA1, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_SQL_HEX_DECODE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_SQL_HEX_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_SQL_HEX_DECODE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_SQL_HEX_DECODE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_TRIM (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_TRIM (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_TRIM, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_TRIM, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_TRIM_LEFT (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_TRIM_LEFT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_TRIM_LEFT, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_TRIM_LEFT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_TRIM_RIGHT (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_TRIM_RIGHT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_TRIM_RIGHT, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_TRIM_RIGHT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_UPPERCASE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_UPPERCASE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_UPPERCASE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_UPPERCASE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_URL_ENCODE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_URL_ENCODE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_URL_ENCODE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_URL_ENCODE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_URL_DECODE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_URL_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_URL_DECODE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_URL_DECODE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_URL_DECODE_UNI (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_URL_DECODE_UNI (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_URL_DECODE_UNI, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_URL_DECODE_UNI, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_UTF8_TO_UNICODE (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_TRANSFORMATION_UTF8_TO_UNICODE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_UTF8_TO_UNICODE, v, l); + return symbol_type (token::TOK_ACTION_TRANSFORMATION_UTF8_TO_UNICODE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_VER (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_VER (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_VER, v, l); + return symbol_type (token::TOK_ACTION_VER, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_ACTION_XMLNS (const std::string& v, const location_type& l) + seclang_parser::make_ACTION_XMLNS (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_ACTION_XMLNS, v, l); + return symbol_type (token::TOK_ACTION_XMLNS, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_COMPONENT_SIG (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_COMPONENT_SIG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_COMPONENT_SIG, v, l); + return symbol_type (token::TOK_CONFIG_COMPONENT_SIG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_CONN_ENGINE (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_CONN_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_CONN_ENGINE, v, l); + return symbol_type (token::TOK_CONFIG_CONN_ENGINE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_ARGUMENT_SEPARATOR (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_ARGUMENT_SEPARATOR (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_ARGUMENT_SEPARATOR, v, l); + return symbol_type (token::TOK_CONFIG_SEC_ARGUMENT_SEPARATOR, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_WEB_APP_ID (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_WEB_APP_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_WEB_APP_ID, v, l); + return symbol_type (token::TOK_CONFIG_SEC_WEB_APP_ID, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_SERVER_SIG (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_SERVER_SIG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_SERVER_SIG, v, l); + return symbol_type (token::TOK_CONFIG_SEC_SERVER_SIG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_DIR (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_AUDIT_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_DIR, v, l); + return symbol_type (token::TOK_CONFIG_DIR_AUDIT_DIR, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_DIR_MOD (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_AUDIT_DIR_MOD (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_DIR_MOD, v, l); + return symbol_type (token::TOK_CONFIG_DIR_AUDIT_DIR_MOD, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_ENG (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_AUDIT_ENG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_ENG, v, l); + return symbol_type (token::TOK_CONFIG_DIR_AUDIT_ENG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_FLE_MOD (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_AUDIT_FLE_MOD (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_FLE_MOD, v, l); + return symbol_type (token::TOK_CONFIG_DIR_AUDIT_FLE_MOD, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_LOG (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_AUDIT_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_LOG, v, l); + return symbol_type (token::TOK_CONFIG_DIR_AUDIT_LOG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_LOG2 (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_AUDIT_LOG2 (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_LOG2, v, l); + return symbol_type (token::TOK_CONFIG_DIR_AUDIT_LOG2, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_LOG_P (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_AUDIT_LOG_P (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_LOG_P, v, l); + return symbol_type (token::TOK_CONFIG_DIR_AUDIT_LOG_P, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_STS (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_AUDIT_STS (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_STS, v, l); + return symbol_type (token::TOK_CONFIG_DIR_AUDIT_STS, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_TPE (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_AUDIT_TPE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_TPE, v, l); + return symbol_type (token::TOK_CONFIG_DIR_AUDIT_TPE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_DEBUG_LOG (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_DEBUG_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_DEBUG_LOG, v, l); + return symbol_type (token::TOK_CONFIG_DIR_DEBUG_LOG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_DEBUG_LVL (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_DEBUG_LVL (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_DEBUG_LVL, v, l); + return symbol_type (token::TOK_CONFIG_DIR_DEBUG_LVL, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_CACHE_TRANSFORMATIONS (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_CACHE_TRANSFORMATIONS (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_CACHE_TRANSFORMATIONS, v, l); + return symbol_type (token::TOK_CONFIG_SEC_CACHE_TRANSFORMATIONS, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_DISABLE_BACKEND_COMPRESS (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_DISABLE_BACKEND_COMPRESS (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_DISABLE_BACKEND_COMPRESS, v, l); + return symbol_type (token::TOK_CONFIG_SEC_DISABLE_BACKEND_COMPRESS, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_HASH_ENGINE (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_HASH_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_HASH_ENGINE, v, l); + return symbol_type (token::TOK_CONFIG_SEC_HASH_ENGINE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_HASH_KEY (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_HASH_KEY (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_HASH_KEY, v, l); + return symbol_type (token::TOK_CONFIG_SEC_HASH_KEY, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_HASH_PARAM (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_HASH_PARAM (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_HASH_PARAM, v, l); + return symbol_type (token::TOK_CONFIG_SEC_HASH_PARAM, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_HASH_METHOD_RX (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_HASH_METHOD_RX (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_HASH_METHOD_RX, v, l); + return symbol_type (token::TOK_CONFIG_SEC_HASH_METHOD_RX, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_HASH_METHOD_PM (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_HASH_METHOD_PM (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_HASH_METHOD_PM, v, l); + return symbol_type (token::TOK_CONFIG_SEC_HASH_METHOD_PM, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_CHROOT_DIR (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_CHROOT_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_CHROOT_DIR, v, l); + return symbol_type (token::TOK_CONFIG_SEC_CHROOT_DIR, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_GEO_DB (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_GEO_DB (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_GEO_DB, v, l); + return symbol_type (token::TOK_CONFIG_DIR_GEO_DB, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_GSB_DB (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_GSB_DB (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_GSB_DB, v, l); + return symbol_type (token::TOK_CONFIG_DIR_GSB_DB, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_GUARDIAN_LOG (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_GUARDIAN_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_GUARDIAN_LOG, v, l); + return symbol_type (token::TOK_CONFIG_SEC_GUARDIAN_LOG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_PCRE_MATCH_LIMIT (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_PCRE_MATCH_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_PCRE_MATCH_LIMIT, v, l); + return symbol_type (token::TOK_CONFIG_DIR_PCRE_MATCH_LIMIT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION, v, l); + return symbol_type (token::TOK_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_CONN_R_STATE_LIMIT (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_CONN_R_STATE_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_CONN_R_STATE_LIMIT, v, l); + return symbol_type (token::TOK_CONFIG_SEC_CONN_R_STATE_LIMIT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_CONN_W_STATE_LIMIT (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_CONN_W_STATE_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_CONN_W_STATE_LIMIT, v, l); + return symbol_type (token::TOK_CONFIG_SEC_CONN_W_STATE_LIMIT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_SENSOR_ID (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_SENSOR_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_SENSOR_ID, v, l); + return symbol_type (token::TOK_CONFIG_SEC_SENSOR_ID, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_REQ_BODY (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_REQ_BODY (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_REQ_BODY, v, l); + return symbol_type (token::TOK_CONFIG_DIR_REQ_BODY, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT, v, l); + return symbol_type (token::TOK_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_REQ_BODY_LIMIT (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_REQ_BODY_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_REQ_BODY_LIMIT, v, l); + return symbol_type (token::TOK_CONFIG_DIR_REQ_BODY_LIMIT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_REQ_BODY_LIMIT_ACTION (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_REQ_BODY_LIMIT_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_REQ_BODY_LIMIT_ACTION, v, l); + return symbol_type (token::TOK_CONFIG_DIR_REQ_BODY_LIMIT_ACTION, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT, v, l); + return symbol_type (token::TOK_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_RES_BODY (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_RES_BODY (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_RES_BODY, v, l); + return symbol_type (token::TOK_CONFIG_DIR_RES_BODY, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_RES_BODY_LIMIT (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_RES_BODY_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_RES_BODY_LIMIT, v, l); + return symbol_type (token::TOK_CONFIG_DIR_RES_BODY_LIMIT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_RES_BODY_LIMIT_ACTION (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_RES_BODY_LIMIT_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_RES_BODY_LIMIT_ACTION, v, l); + return symbol_type (token::TOK_CONFIG_DIR_RES_BODY_LIMIT_ACTION, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_INHERITANCE (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_RULE_INHERITANCE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_RULE_INHERITANCE, v, l); + return symbol_type (token::TOK_CONFIG_SEC_RULE_INHERITANCE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_PERF_TIME (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_RULE_PERF_TIME (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_RULE_PERF_TIME, v, l); + return symbol_type (token::TOK_CONFIG_SEC_RULE_PERF_TIME, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_RULE_ENG (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_RULE_ENG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_RULE_ENG, v, l); + return symbol_type (token::TOK_CONFIG_DIR_RULE_ENG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_SEC_ACTION (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_SEC_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_SEC_ACTION, v, l); + return symbol_type (token::TOK_CONFIG_DIR_SEC_ACTION, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_SEC_DEFAULT_ACTION (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_SEC_DEFAULT_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_SEC_DEFAULT_ACTION, v, l); + return symbol_type (token::TOK_CONFIG_DIR_SEC_DEFAULT_ACTION, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_SEC_MARKER (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_SEC_MARKER (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_SEC_MARKER, v, l); + return symbol_type (token::TOK_CONFIG_DIR_SEC_MARKER, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_UNICODE_MAP_FILE (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_UNICODE_MAP_FILE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_UNICODE_MAP_FILE, v, l); + return symbol_type (token::TOK_CONFIG_DIR_UNICODE_MAP_FILE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_UNICODE_CODE_PAGE (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_DIR_UNICODE_CODE_PAGE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_DIR_UNICODE_CODE_PAGE, v, l); + return symbol_type (token::TOK_CONFIG_DIR_UNICODE_CODE_PAGE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_COLLECTION_TIMEOUT (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_COLLECTION_TIMEOUT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_COLLECTION_TIMEOUT, v, l); + return symbol_type (token::TOK_CONFIG_SEC_COLLECTION_TIMEOUT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_HTTP_BLKEY (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_HTTP_BLKEY (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_HTTP_BLKEY, v, l); + return symbol_type (token::TOK_CONFIG_SEC_HTTP_BLKEY, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_INTERCEPT_ON_ERROR (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_INTERCEPT_ON_ERROR (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_INTERCEPT_ON_ERROR, v, l); + return symbol_type (token::TOK_CONFIG_SEC_INTERCEPT_ON_ERROR, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION, v, l); + return symbol_type (token::TOK_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_REMOVE_BY_ID (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_RULE_REMOVE_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_RULE_REMOVE_BY_ID, v, l); + return symbol_type (token::TOK_CONFIG_SEC_RULE_REMOVE_BY_ID, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_REMOVE_BY_MSG (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_RULE_REMOVE_BY_MSG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_RULE_REMOVE_BY_MSG, v, l); + return symbol_type (token::TOK_CONFIG_SEC_RULE_REMOVE_BY_MSG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_REMOVE_BY_TAG (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_RULE_REMOVE_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_RULE_REMOVE_BY_TAG, v, l); + return symbol_type (token::TOK_CONFIG_SEC_RULE_REMOVE_BY_TAG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG, v, l); + return symbol_type (token::TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG, v, l); + return symbol_type (token::TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID, v, l); + return symbol_type (token::TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID, v, l); + return symbol_type (token::TOK_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_UPDLOAD_KEEP_FILES (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_UPDLOAD_KEEP_FILES (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_UPDLOAD_KEEP_FILES, v, l); + return symbol_type (token::TOK_CONFIG_UPDLOAD_KEEP_FILES, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_UPDLOAD_SAVE_TMP_FILES (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_UPDLOAD_SAVE_TMP_FILES (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_UPDLOAD_SAVE_TMP_FILES, v, l); + return symbol_type (token::TOK_CONFIG_UPDLOAD_SAVE_TMP_FILES, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_UPLOAD_DIR (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_UPLOAD_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_UPLOAD_DIR, v, l); + return symbol_type (token::TOK_CONFIG_UPLOAD_DIR, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_UPLOAD_FILE_LIMIT (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_UPLOAD_FILE_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_UPLOAD_FILE_LIMIT, v, l); + return symbol_type (token::TOK_CONFIG_UPLOAD_FILE_LIMIT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_UPLOAD_FILE_MODE (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_UPLOAD_FILE_MODE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_UPLOAD_FILE_MODE, v, l); + return symbol_type (token::TOK_CONFIG_UPLOAD_FILE_MODE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_ABORT (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_VALUE_ABORT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_VALUE_ABORT, v, l); + return symbol_type (token::TOK_CONFIG_VALUE_ABORT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_DETC (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_VALUE_DETC (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_VALUE_DETC, v, l); + return symbol_type (token::TOK_CONFIG_VALUE_DETC, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_HTTPS (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_VALUE_HTTPS (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_VALUE_HTTPS, v, l); + return symbol_type (token::TOK_CONFIG_VALUE_HTTPS, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_OFF (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_VALUE_OFF (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_VALUE_OFF, v, l); + return symbol_type (token::TOK_CONFIG_VALUE_OFF, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_ON (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_VALUE_ON (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_VALUE_ON, v, l); + return symbol_type (token::TOK_CONFIG_VALUE_ON, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_PARALLEL (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_VALUE_PARALLEL (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_VALUE_PARALLEL, v, l); + return symbol_type (token::TOK_CONFIG_VALUE_PARALLEL, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_PROCESS_PARTIAL (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_VALUE_PROCESS_PARTIAL (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_VALUE_PROCESS_PARTIAL, v, l); + return symbol_type (token::TOK_CONFIG_VALUE_PROCESS_PARTIAL, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_REJECT (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_VALUE_REJECT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_VALUE_REJECT, v, l); + return symbol_type (token::TOK_CONFIG_VALUE_REJECT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_RELEVANT_ONLY (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_VALUE_RELEVANT_ONLY (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_VALUE_RELEVANT_ONLY, v, l); + return symbol_type (token::TOK_CONFIG_VALUE_RELEVANT_ONLY, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_SERIAL (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_VALUE_SERIAL (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_VALUE_SERIAL, v, l); + return symbol_type (token::TOK_CONFIG_VALUE_SERIAL, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_WARN (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_VALUE_WARN (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_VALUE_WARN, v, l); + return symbol_type (token::TOK_CONFIG_VALUE_WARN, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_XML_EXTERNAL_ENTITY (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_XML_EXTERNAL_ENTITY (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_XML_EXTERNAL_ENTITY, v, l); + return symbol_type (token::TOK_CONFIG_XML_EXTERNAL_ENTITY, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONGIG_DIR_RESPONSE_BODY_MP (const std::string& v, const location_type& l) + seclang_parser::make_CONGIG_DIR_RESPONSE_BODY_MP (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONGIG_DIR_RESPONSE_BODY_MP, v, l); + return symbol_type (token::TOK_CONGIG_DIR_RESPONSE_BODY_MP, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONGIG_DIR_SEC_ARG_SEP (const std::string& v, const location_type& l) + seclang_parser::make_CONGIG_DIR_SEC_ARG_SEP (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONGIG_DIR_SEC_ARG_SEP, v, l); + return symbol_type (token::TOK_CONGIG_DIR_SEC_ARG_SEP, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONGIG_DIR_SEC_COOKIE_FORMAT (const std::string& v, const location_type& l) + seclang_parser::make_CONGIG_DIR_SEC_COOKIE_FORMAT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONGIG_DIR_SEC_COOKIE_FORMAT, v, l); + return symbol_type (token::TOK_CONGIG_DIR_SEC_COOKIE_FORMAT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_COOKIEV0_SEPARATOR (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_COOKIEV0_SEPARATOR (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_COOKIEV0_SEPARATOR, v, l); + return symbol_type (token::TOK_CONFIG_SEC_COOKIEV0_SEPARATOR, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONGIG_DIR_SEC_DATA_DIR (const std::string& v, const location_type& l) + seclang_parser::make_CONGIG_DIR_SEC_DATA_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONGIG_DIR_SEC_DATA_DIR, v, l); + return symbol_type (token::TOK_CONGIG_DIR_SEC_DATA_DIR, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONGIG_DIR_SEC_STATUS_ENGINE (const std::string& v, const location_type& l) + seclang_parser::make_CONGIG_DIR_SEC_STATUS_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONGIG_DIR_SEC_STATUS_ENGINE, v, l); + return symbol_type (token::TOK_CONGIG_DIR_SEC_STATUS_ENGINE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_STREAM_IN_BODY_INSPECTION (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_STREAM_IN_BODY_INSPECTION (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_STREAM_IN_BODY_INSPECTION, v, l); + return symbol_type (token::TOK_CONFIG_SEC_STREAM_IN_BODY_INSPECTION, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION (const std::string& v, const location_type& l) + seclang_parser::make_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION, v, l); + return symbol_type (token::TOK_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_CONGIG_DIR_SEC_TMP_DIR (const std::string& v, const location_type& l) + seclang_parser::make_CONGIG_DIR_SEC_TMP_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_CONGIG_DIR_SEC_TMP_DIR, v, l); + return symbol_type (token::TOK_CONGIG_DIR_SEC_TMP_DIR, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_DIRECTIVE (const std::string& v, const location_type& l) + seclang_parser::make_DIRECTIVE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_DIRECTIVE, v, l); + return symbol_type (token::TOK_DIRECTIVE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_DIRECTIVE_SECRULESCRIPT (const std::string& v, const location_type& l) + seclang_parser::make_DIRECTIVE_SECRULESCRIPT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_DIRECTIVE_SECRULESCRIPT, v, l); + return symbol_type (token::TOK_DIRECTIVE_SECRULESCRIPT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_FREE_TEXT_QUOTE_MACRO_EXPANSION (const std::string& v, const location_type& l) + seclang_parser::make_FREE_TEXT_QUOTE_MACRO_EXPANSION (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_FREE_TEXT_QUOTE_MACRO_EXPANSION, v, l); + return symbol_type (token::TOK_FREE_TEXT_QUOTE_MACRO_EXPANSION, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_QUOTATION_MARK (const std::string& v, const location_type& l) + seclang_parser::make_QUOTATION_MARK (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_QUOTATION_MARK, v, l); + return symbol_type (token::TOK_QUOTATION_MARK, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_BLD (const std::string& v, const location_type& l) + seclang_parser::make_RUN_TIME_VAR_BLD (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_RUN_TIME_VAR_BLD, v, l); + return symbol_type (token::TOK_RUN_TIME_VAR_BLD, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_DUR (const std::string& v, const location_type& l) + seclang_parser::make_RUN_TIME_VAR_DUR (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_RUN_TIME_VAR_DUR, v, l); + return symbol_type (token::TOK_RUN_TIME_VAR_DUR, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_HSV (const std::string& v, const location_type& l) + seclang_parser::make_RUN_TIME_VAR_HSV (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_RUN_TIME_VAR_HSV, v, l); + return symbol_type (token::TOK_RUN_TIME_VAR_HSV, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_REMOTE_USER (const std::string& v, const location_type& l) + seclang_parser::make_RUN_TIME_VAR_REMOTE_USER (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_RUN_TIME_VAR_REMOTE_USER, v, l); + return symbol_type (token::TOK_RUN_TIME_VAR_REMOTE_USER, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME (const std::string& v, const location_type& l) + seclang_parser::make_RUN_TIME_VAR_TIME (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME, v, l); + return symbol_type (token::TOK_RUN_TIME_VAR_TIME, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_DAY (const std::string& v, const location_type& l) + seclang_parser::make_RUN_TIME_VAR_TIME_DAY (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_DAY, v, l); + return symbol_type (token::TOK_RUN_TIME_VAR_TIME_DAY, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_EPOCH (const std::string& v, const location_type& l) + seclang_parser::make_RUN_TIME_VAR_TIME_EPOCH (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_EPOCH, v, l); + return symbol_type (token::TOK_RUN_TIME_VAR_TIME_EPOCH, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_HOUR (const std::string& v, const location_type& l) + seclang_parser::make_RUN_TIME_VAR_TIME_HOUR (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_HOUR, v, l); + return symbol_type (token::TOK_RUN_TIME_VAR_TIME_HOUR, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_MIN (const std::string& v, const location_type& l) + seclang_parser::make_RUN_TIME_VAR_TIME_MIN (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_MIN, v, l); + return symbol_type (token::TOK_RUN_TIME_VAR_TIME_MIN, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_MON (const std::string& v, const location_type& l) + seclang_parser::make_RUN_TIME_VAR_TIME_MON (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_MON, v, l); + return symbol_type (token::TOK_RUN_TIME_VAR_TIME_MON, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_SEC (const std::string& v, const location_type& l) + seclang_parser::make_RUN_TIME_VAR_TIME_SEC (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_SEC, v, l); + return symbol_type (token::TOK_RUN_TIME_VAR_TIME_SEC, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_WDAY (const std::string& v, const location_type& l) + seclang_parser::make_RUN_TIME_VAR_TIME_WDAY (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_WDAY, v, l); + return symbol_type (token::TOK_RUN_TIME_VAR_TIME_WDAY, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_YEAR (const std::string& v, const location_type& l) + seclang_parser::make_RUN_TIME_VAR_TIME_YEAR (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_YEAR, v, l); + return symbol_type (token::TOK_RUN_TIME_VAR_TIME_YEAR, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_VARIABLE (const std::string& v, const location_type& l) + seclang_parser::make_VARIABLE (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_VARIABLE, v, l); + return symbol_type (token::TOK_VARIABLE, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_DICT_ELEMENT (const std::string& v, const location_type& l) + seclang_parser::make_DICT_ELEMENT (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_DICT_ELEMENT, v, l); + return symbol_type (token::TOK_DICT_ELEMENT, YY_MOVE (v), YY_MOVE (l)); } + inline seclang_parser::symbol_type - seclang_parser::make_DICT_ELEMENT_REGEXP (const std::string& v, const location_type& l) + seclang_parser::make_DICT_ELEMENT_REGEXP (YY_COPY (std::string) v, YY_COPY (location_type) l) { - return symbol_type (token::TOK_DICT_ELEMENT_REGEXP, v, l); + return symbol_type (token::TOK_DICT_ELEMENT_REGEXP, YY_MOVE (v), YY_MOVE (l)); } } // yy -#line 6170 "seclang-parser.hh" // lalr1.cc:380 +#line 6444 "seclang-parser.hh" // lalr1.cc:403 diff --git a/src/parser/seclang-scanner.cc b/src/parser/seclang-scanner.cc index 176e781d..ffa54177 100644 --- a/src/parser/seclang-scanner.cc +++ b/src/parser/seclang-scanner.cc @@ -433,8 +433,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ -#define YY_NUM_RULES 536 -#define YY_END_OF_BUFFER 537 +#define YY_NUM_RULES 537 +#define YY_END_OF_BUFFER 538 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -442,7 +442,7 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3909] = +static const flex_int16_t yy_accept[3922] = { 0, 0, 0, 0, 0, 270, 270, 278, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -451,24 +451,24 @@ static const flex_int16_t yy_accept[3909] = 0, 0, 0, 0, 282, 282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 537, 529, 523, 263, 267, 268, + 0, 0, 0, 0, 538, 529, 523, 263, 267, 268, 266, 269, 529, 529, 529, 529, 529, 529, 529, 529, - 529, 529, 529, 529, 529, 286, 286, 536, 286, 286, + 529, 529, 529, 529, 529, 286, 286, 537, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 125, 270, 276, 278, 280, 274, 273, 275, 272, 278, 271, 487, 487, 486, 487, 487, 487, 120, 119, 118, 127, 127, 127, 134, 126, 127, 129, 129, 129, 128, 134, 129, 132, 132, - 132, 131, 134, 130, 132, 528, 528, 528, 536, 489, - 488, 440, 443, 536, 443, 440, 440, 440, 430, 430, + 132, 131, 134, 130, 132, 528, 528, 528, 537, 489, + 488, 440, 443, 537, 443, 440, 440, 440, 430, 430, 430, 433, 435, 430, 434, 430, 424, 430, 497, 497, 497, 496, 501, 497, 499, 499, 499, 498, 501, 499, 117, 117, 109, 117, 114, 108, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 112, 117, 111, 536, 506, 536, - 502, 515, 536, 282, 283, 536, 493, 493, 492, 495, + 117, 117, 117, 117, 112, 117, 111, 537, 506, 537, + 502, 515, 537, 282, 283, 537, 493, 493, 492, 495, 493, 491, 491, 490, 495, 491, 149, 530, 531, 532, 136, 135, 136, 136, 136, 136, 136, 136, 140, 139, 144, 145, 145, 144, 142, 141, 139, 147, 148, 148, @@ -530,206 +530,207 @@ static const flex_int16_t yy_accept[3909] = 0, 0, 0, 0, 0, 144, 0, 0, 0, 147, 0, 0, 266, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, - - 525, 358, 0, 0, 393, 0, 0, 383, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 386, 0, 0, 0, 405, 0, 0, 415, - 0, 0, 391, 122, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 468, 470, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 127, 0, 122, 129, 0, - 122, 132, 0, 122, 527, 440, 0, 0, 0, 0, - 440, 0, 0, 436, 441, 437, 436, 441, 437, 430, - 0, 430, 430, 430, 0, 430, 0, 0, 0, 0, - 430, 0, 429, 0, 430, 430, 425, 431, 426, 425, - - 431, 426, 0, 0, 430, 430, 497, 0, 122, 499, - 0, 122, 122, 0, 0, 0, 0, 0, 0, 0, - 0, 5, 0, 0, 7, 0, 0, 0, 8, 0, - 0, 0, 49, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 63, 0, 0, 107, 510, 513, 509, 517, - 0, 520, 0, 0, 516, 0, 0, 503, 512, 508, - 511, 284, 0, 285, 493, 0, 491, 0, 0, 0, - - 0, 0, 144, 0, 147, 0, 266, 266, 211, 0, - 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 359, 0, 0, 0, 374, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 387, 0, 0, 0, 0, - 0, 0, 421, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 485, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 438, 438, 438, 0, 0, 427, 427, - 0, 0, 0, 430, 430, 0, 427, 0, 430, 0, - 0, 0, 0, 0, 0, 0, 26, 0, 0, 2, - 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 12, 14, 0, 0, 16, - 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, + 221, 525, 358, 0, 0, 393, 0, 0, 383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 509, 520, 0, - 521, 516, 0, 518, 0, 508, 511, 507, 285, 0, + 0, 0, 0, 386, 0, 0, 0, 405, 0, 0, + 415, 0, 0, 391, 122, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 468, 470, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 127, 0, 122, 129, + 0, 122, 132, 0, 122, 527, 440, 0, 0, 0, + 0, 440, 0, 0, 436, 441, 437, 436, 441, 437, + 430, 0, 430, 430, 430, 0, 430, 0, 0, 0, + 0, 430, 0, 429, 0, 430, 430, 425, 431, 426, + + 425, 431, 426, 0, 0, 430, 430, 497, 0, 122, + 499, 0, 122, 122, 0, 0, 0, 0, 0, 0, + 0, 0, 5, 0, 0, 7, 0, 0, 0, 8, + 0, 0, 0, 49, 0, 0, 0, 13, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 107, 510, 513, 509, + 517, 0, 520, 0, 0, 516, 0, 0, 503, 512, + 508, 511, 284, 0, 285, 493, 0, 491, 0, 0, + + 0, 0, 0, 144, 0, 147, 0, 266, 266, 211, + 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 359, 0, 0, + 0, 374, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 387, 0, 0, + 0, 0, 0, 0, 421, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 485, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 438, 438, 438, 0, 0, + 427, 427, 0, 0, 0, 430, 430, 0, 427, 0, + 430, 0, 0, 0, 0, 0, 0, 0, 26, 0, + 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 14, 0, + 0, 16, 0, 53, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 509, + 520, 0, 521, 516, 0, 518, 0, 508, 511, 507, + + 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 266, 266, 0, 0, 0, 169, 0, 0, + 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, + 0, 0, 0, 0, 375, 0, 0, 408, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 356, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 472, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 442, 439, 442, 439, + 432, 428, 432, 428, 0, 427, 0, 0, 0, 430, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 41, 41, 0, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, + 0, 74, 0, 92, 0, 0, 0, 0, 0, 0, + 0, 0, 521, 518, 0, 519, 507, 0, 0, 0, + + 266, 266, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 257, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 416, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 411, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 266, 266, 0, 0, 0, 169, 0, 0, 218, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 41, 0, + 41, 41, 0, 0, 0, 0, 0, 0, 0, 50, + 0, 0, 15, 0, 52, 0, 54, 22, 55, 56, + 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, - 0, 375, 0, 0, 408, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 356, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 472, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 442, 439, 442, 439, 432, 428, 432, - 428, 0, 427, 0, 0, 0, 430, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 41, - 41, 0, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 0, 0, 0, 0, 74, 0, - 92, 0, 0, 0, 0, 0, 0, 0, 0, 521, - 518, 0, 519, 507, 0, 0, 0, 266, 266, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 416, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 411, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 457, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, - 0, 0, 0, 0, 41, 0, 41, 41, 0, 0, - 0, 0, 0, 0, 0, 50, 0, 0, 15, 0, - 52, 0, 54, 22, 55, 56, 58, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 64, 0, 0, 65, 519, 0, 0, 266, - 266, 0, 0, 0, 216, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 0, 0, 65, + 519, 0, 0, 266, 266, 0, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 360, 0, 0, 0, 395, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 360, + 0, 0, 0, 395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 410, 0, - 0, 0, 0, 419, 0, 0, 398, 0, 0, 401, - 402, 403, 0, 0, 0, 0, 357, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 465, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 410, 0, 0, 0, 0, 419, 0, + 0, 398, 0, 0, 401, 402, 403, 0, 0, 0, + 0, 357, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 465, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, - 40, 41, 40, 0, 41, 0, 0, 102, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, - 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 0, 266, 266, 0, - 0, 0, 0, 533, 0, 0, 259, 0, 0, 0, + 0, 0, 0, 0, 0, 40, 41, 40, 0, 41, + 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 57, 0, 0, 23, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 0, 266, 266, 0, 0, 0, 0, 533, 0, + 0, 259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 361, 0, 0, 362, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 322, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 418, 0, 0, 0, - 0, 353, 0, 0, 400, 406, 404, 354, 0, 0, - 0, 459, 0, 0, 460, 0, 0, 0, 0, 464, - 0, 473, 0, 0, 481, 0, 0, 0, 0, 0, + 361, 0, 0, 362, 294, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 40, 0, 40, 0, 0, 0, 0, 0, - 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, + 0, 0, 418, 0, 0, 0, 0, 353, 0, 0, + 400, 406, 404, 354, 0, 0, 0, 459, 0, 0, + 460, 0, 0, 0, 0, 464, 0, 473, 0, 0, + 481, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, + 40, 0, 0, 0, 0, 0, 0, 50, 0, 0, - 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, + 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, + 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 266, 266, 264, 0, + 264, 216, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 266, 266, 264, 0, 264, 216, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, + + 363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 241, 0, 0, 0, 0, 0, 0, 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, 363, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, + 0, 0, 0, 0, 0, 0, 476, 0, 484, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 482, 483, + 0, 0, 0, 0, 0, 25, 0, 25, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, + 48, 0, 48, 10, 11, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, + 0, 0, 266, 0, 264, 264, 264, 264, 264, 0, + 534, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 399, 0, 0, 0, 0, 0, 0, 476, - 0, 484, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 482, 483, 0, 0, 0, 0, 0, 25, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 46, 48, 0, 48, 10, 11, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 232, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 291, 0, 0, + + 366, 364, 0, 0, 0, 0, 0, 300, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 324, 325, 326, 397, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 342, 0, 0, 0, + 0, 0, 350, 351, 352, 413, 0, 0, 474, 0, + 0, 448, 445, 0, 0, 468, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 454, 0, 451, 0, 0, + 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 44, 44, 0, 0, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 61, 0, 0, 0, 91, 0, 78, 77, 0, + 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 94, 80, 83, 81, 0, 266, 266, 0, + 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 229, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, - 0, 0, 0, 0, 0, 266, 0, 264, 264, 264, - 264, 264, 0, 534, 0, 0, 0, 0, 0, 0, + 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 367, 365, 0, + 0, 297, 0, 0, 372, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 323, 0, 0, 0, 334, 0, 0, 0, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 190, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 291, - 0, 0, 366, 364, 0, 0, 0, 0, 0, 300, + 447, 475, 0, 0, 0, 478, 0, 0, 0, 0, + 0, 453, 0, 0, 0, 0, 24, 0, 0, 24, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 44, 44, 0, 44, 0, 44, 44, 0, 0, 47, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 324, 325, 326, 397, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 342, 0, - 0, 0, 0, 0, 350, 351, 352, 413, 0, 0, - 474, 0, 0, 448, 445, 0, 0, 468, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 454, 0, 451, - 0, 0, 0, 0, 25, 0, 0, 0, 26, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, - 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 61, 0, 0, 0, 91, 0, 78, - 77, 0, 79, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 94, 80, 83, 81, 0, 266, - 266, 0, 0, 0, 0, 219, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 251, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 367, 365, - 0, 0, 297, 0, 0, 372, 0, 394, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 323, 0, 0, 0, 334, 0, 0, 0, 338, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 447, 475, 0, 0, 0, 478, 0, 0, 0, - 0, 0, 453, 0, 0, 0, 0, 24, 0, 0, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 6, - 0, 44, 44, 0, 44, 0, 44, 44, 0, 0, - 47, 0, 0, 47, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, + 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, + 265, 265, 265, 265, 212, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 265, 265, 265, 265, 265, 212, 0, 0, 0, 0, - 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 189, 0, 0, 0, 0, 188, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 0, 0, 153, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -739,141 +740,142 @@ static const flex_int16_t yy_accept[3909] = 24, 25, 26, 0, 0, 0, 0, 0, 0, 103, 44, 43, 44, 44, 43, 0, 0, 44, 43, 0, 0, 44, 43, 44, 44, 45, 47, 48, 0, 0, - 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 217, 0, 161, 0, 163, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, - 0, 0, 230, 0, 0, 0, 0, 0, 0, 247, - 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, + 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, + 247, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, - 288, 0, 0, 388, 0, 0, 0, 0, 0, 0, + 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 318, 0, + 0, 288, 0, 0, 388, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 339, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 44, 0, 43, 0, 44, - 44, 43, 0, 43, 0, 0, 43, 0, 0, 45, - 43, 45, 45, 43, 0, 44, 43, 44, 0, 0, - 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 60, 0, 60, 0, 60, 0, - 0, 71, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 44, 0, 43, 0, + 44, 44, 43, 0, 43, 0, 0, 43, 0, 0, + 45, 43, 45, 45, 43, 0, 44, 43, 44, 0, + 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 60, 0, 60, 0, 60, - 0, 0, 0, 0, 87, 69, 82, 0, 0, 170, - 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 175, 0, 0, 0, - 0, 0, 244, 243, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 234, 0, 0, + 0, 0, 71, 70, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 87, 69, 82, 0, 0, + 170, 0, 0, 0, 0, 0, 0, 173, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 175, 0, + 0, 0, 0, 0, 244, 243, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 152, 0, 0, 0, 0, 289, 292, 0, 389, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, - 0, 0, 0, 376, 0, 378, 0, 341, 0, 0, + 0, 0, 152, 0, 0, 0, 0, 289, 292, 0, + 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, - 0, 349, 0, 0, 0, 0, 0, 480, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, - 42, 44, 42, 0, 44, 42, 0, 0, 42, 44, - 0, 42, 0, 42, 45, 45, 42, 45, 26, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 60, 0, 0, 0, 0, 0, 96, 96, - 0, 67, 0, 0, 0, 0, 98, 0, 0, 0, - 0, 0, 0, 0, 0, 238, 0, 0, 0, 0, - 0, 0, 0, 0, 258, 0, 177, 0, 245, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 208, 0, 0, 0, 152, 0, - 0, 293, 0, 0, 0, 396, 0, 0, 299, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 332, 0, 377, 0, 335, - 379, 0, 340, 0, 380, 0, 355, 0, 464, 0, - 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, - 0, 0, 0, 42, 42, 0, 42, 0, 44, 0, - 42, 45, 43, 45, 45, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 376, 0, 378, 0, 341, + 0, 0, 0, 349, 0, 0, 0, 0, 0, 480, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, + 0, 0, 42, 44, 42, 0, 44, 42, 0, 0, + 42, 44, 0, 42, 0, 42, 45, 45, 42, 45, + 26, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, + 96, 96, 0, 67, 0, 0, 0, 0, 98, 0, + 0, 0, 0, 0, 0, 0, 535, 0, 238, 0, + 0, 0, 0, 0, 0, 0, 0, 258, 0, 177, - 0, 68, 66, 100, 0, 0, 0, 0, 0, 167, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, + 0, 245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 253, 0, 0, 0, - 235, 0, 0, 0, 231, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 368, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 314, 0, 0, - 0, 0, 0, 327, 331, 0, 0, 0, 0, 381, - 0, 348, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 43, 43, 45, + 0, 0, 0, 0, 0, 0, 0, 208, 0, 0, + 0, 152, 0, 0, 293, 0, 0, 0, 396, 0, + 0, 299, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 332, 0, + 377, 0, 335, 379, 0, 340, 0, 380, 0, 355, + 0, 464, 0, 0, 0, 0, 0, 0, 0, 28, + 0, 0, 0, 0, 0, 0, 42, 42, 0, 42, + 0, 44, 0, 42, 45, 43, 45, 45, 0, 0, - 45, 43, 45, 0, 0, 0, 0, 0, 0, 60, - 0, 72, 0, 76, 0, 0, 0, 0, 0, 101, - 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 176, 0, 246, 0, 0, 0, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 252, + 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, + 0, 0, 0, 0, 68, 66, 100, 0, 0, 0, + 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, + 0, 0, 0, 235, 0, 0, 0, 231, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 205, 0, 287, 0, 369, 0, 298, 370, - 0, 0, 0, 0, 308, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 477, 0, 0, 0, 0, 0, 0, 0, + 314, 0, 0, 0, 0, 0, 327, 331, 0, 0, + 0, 0, 381, 0, 348, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, - 0, 60, 0, 89, 95, 95, 0, 86, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, - 0, 0, 248, 179, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 192, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 210, 0, 295, 296, - 371, 0, 0, 0, 0, 307, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 321, 0, 333, 0, 0, - 0, 0, 0, 407, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 43, 43, 45, 45, 43, 45, 0, 0, 0, 0, + 0, 0, 60, 0, 72, 0, 76, 0, 0, 0, + 0, 0, 101, 0, 0, 0, 0, 164, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 176, 0, 246, + 0, 0, 0, 536, 0, 0, 0, 0, 0, 0, + 0, 0, 252, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 205, 0, 287, 0, 369, + 0, 298, 370, 0, 0, 0, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 155, 0, 165, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, - 0, 0, 0, 0, 0, 0, 0, 193, 193, 0, - 195, 195, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 209, 222, 0, 0, 0, 304, 0, 0, 0, + 0, 0, 0, 0, 0, 477, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, + 0, 0, 0, 0, 60, 0, 89, 95, 95, 0, + 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 154, 0, 0, 248, 179, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 192, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 0, 295, 296, 371, 0, 0, 0, 0, 307, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 321, 0, + 333, 0, 0, 0, 0, 0, 407, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 446, 0, 0, 0, 452, 0, 0, - 29, 0, 0, 0, 36, 0, 0, 19, 0, 0, - 85, 99, 0, 0, 0, 162, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 182, 0, - - 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 191, 0, 0, 0, 305, + 0, 0, 0, 0, 0, 0, 0, 0, 155, 0, + 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 184, 0, 0, 0, 0, 0, 0, 0, + 193, 193, 0, 195, 195, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 209, 222, 0, 0, 0, 304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 384, 336, 0, 345, 0, 449, 0, 0, 455, 0, - 0, 0, 0, 37, 0, 20, 0, 160, 0, 160, - 225, 225, 156, 0, 0, 0, 261, 0, 249, 0, - 228, 0, 0, 0, 0, 0, 0, 0, 186, 0, - 0, 194, 196, 0, 0, 0, 0, 151, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, - 0, 0, 0, 319, 0, 0, 385, 337, 0, 346, + 0, 0, 0, 0, 0, 0, 446, 0, 0, 0, + 452, 0, 0, 29, 0, 0, 0, 36, 0, 0, + 19, 0, 0, 85, 99, 0, 0, 0, 162, 0, - 450, 0, 456, 0, 34, 0, 0, 21, 0, 0, - 0, 157, 0, 0, 250, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, - 0, 206, 0, 0, 303, 0, 0, 0, 0, 0, - 0, 0, 330, 344, 347, 0, 0, 0, 0, 159, - 0, 0, 236, 0, 0, 0, 227, 0, 0, 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 309, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 158, 150, 0, - 0, 0, 0, 0, 181, 0, 0, 223, 0, 204, + 0, 182, 0, 0, 187, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, + 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 384, 336, 0, 345, 0, 449, 0, + 0, 455, 0, 0, 0, 0, 37, 0, 20, 0, + 160, 0, 160, 225, 225, 156, 0, 0, 0, 261, + 0, 249, 0, 228, 0, 0, 0, 0, 0, 0, + 0, 186, 0, 0, 194, 196, 0, 0, 0, 0, + 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 202, 0, 0, 0, 254, 0, 301, 0, 0, - 0, 313, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 150, 0, 0, 0, 0, 185, 0, 0, - 0, 200, 0, 198, 0, 255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, - 171, 171, 0, 0, 0, 0, 0, 203, 201, 0, - 0, 0, 0, 0, 315, 316, 0, 329, 0, 0, - 0, 0, 39, 0, 256, 178, 0, 183, 0, 199, - 197, 0, 0, 0, 320, 0, 0, 0, 31, 172, - 180, 224, 302, 306, 0, 33, 30, 0, 0, 0, + 0, 0, 312, 0, 0, 0, 319, 0, 0, 385, + 337, 0, 346, 450, 0, 456, 0, 34, 0, 0, + 21, 0, 0, 0, 157, 0, 0, 250, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 151, 0, 0, 206, 0, 0, 303, 0, 0, + 0, 0, 0, 0, 0, 330, 344, 347, 0, 0, + 0, 0, 159, 0, 0, 236, 0, 0, 0, 227, + 0, 0, 260, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 309, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 311, 0, 0, 0, 32, 0 + 158, 150, 0, 0, 0, 0, 0, 181, 0, 0, + 223, 0, 204, 0, 202, 0, 0, 0, 254, 0, + 301, 0, 0, 0, 313, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, + 185, 0, 0, 0, 200, 0, 198, 0, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 171, 171, 0, 0, 0, 0, 0, + 203, 201, 0, 0, 0, 0, 0, 315, 316, 0, + 329, 0, 0, 0, 0, 39, 0, 256, 178, 0, + 183, 0, 199, 197, 0, 0, 0, 320, 0, 0, + + 0, 31, 172, 180, 224, 302, 306, 0, 33, 30, + 0, 0, 0, 0, 0, 311, 0, 0, 0, 32, + 0 } ; static const YY_CHAR yy_ec[256] = @@ -921,956 +923,958 @@ static const YY_CHAR yy_meta[88] = 15, 15, 15, 15, 17, 18, 1 } ; -static const flex_int16_t yy_base[4194] = +static const flex_int16_t yy_base[4210] = { 0, 0, 80, 161, 0, 4, 8, 14, 247, 21, 87, 101, 254, 25, 40, 53, 261, 265, 275, 284, 290, - 94, 304,12215,12214,12213,12212, 324, 347, 365, 383, + 94, 304,12237,12236,12235,12229, 324, 347, 365, 383, 413, 434, 314, 448, 335, 397, 505, 0, 457, 464, 591, 597, 603, 609, 419, 425, 271, 298, 102, 612, - 12213,12207,12205,12203,12202,12199,12198,12181, 614, 622, - 0, 0,12137,12126, 428, 611, 646, 668, 0, 0, - 57, 79, 620, 627,12151,13962, 673,13962,13962,13962, - 308,13962, 4, 25, 59, 52, 71, 72, 96, 279, - 315, 97, 220, 271, 8,13962, 443,13962, 655, 269, + 12229,12227,12226,12223,12222,12205,12187,12176, 614, 622, + 0, 0,12146,12145, 428, 611, 646, 668, 0, 0, + 57, 79, 620, 627,12173,14023, 673,14023,14023,14023, + 308,14023, 4, 25, 59, 52, 71, 72, 96, 279, + 315, 97, 220, 271, 8,14023, 443,14023, 655, 269, 312, 578, 673, 330, 429, 681, 327, 358, 368, 686, - 679, 699, 707, 421, 422, 38,12140, 133, 765, 771, - 783,13962,13962,13962,13962, 789,13962,13962, 631,13962, - 815, 76, 764,13962,13962,13962, 278, 798, 348, 417, - 12092, 801, 372, 829, 752,12091, 540, 814, 855, 895, - 883,12090, 546,12058, 904, 830, 901,13962, 913,13962, - 13962, 918,12057,12054,12030, 924, 957, 964, 934, 980, - 991,12028, 601, 1012,12026, 1024, 725, 1042, 770, 1054, - 831,12025, 625, 1063, 645, 978, 802, 867, 663, 1072, - 13962, 1081,13962,12076, 484, 475, 1047, 719, 764, 874, + 679, 699, 707, 421, 422, 38,12162, 133, 765, 771, + 783,14023,14023,14023,14023, 789,14023,14023, 631,14023, + 815, 76, 764,14023,14023,14023, 278, 798, 348, 417, + 12114, 801, 372, 829, 752,12082, 540, 814, 855, 895, + 883,12081, 546,12078, 904, 830, 901,14023, 913,14023, + 14023, 918,12054,12052,12050, 924, 957, 964, 934, 980, + 991,12049, 601, 1012,12046, 1024, 725, 1042, 770, 1054, + 831,12045, 625, 1063, 645, 978, 802, 867, 663, 1072, + 14023, 1081,14023,12089, 484, 475, 1047, 719, 764, 874, 717, 940, 752, 1056, 800, 953, 1064, 818, 1059, 917, - 821, 885, 405, 1139,13962,12075, 1143, 1147, 476, 309, - 1153, 1159, 410, 1011, 490, 493, 1096, 1114,12011, 911, - 1122, 1124, 1129,12005, 943, 1158,13962, 0, 0, 0, - 13962,13962, 990, 1017, 1053, 1062, 1105, 1118,13962, 120, - 1162,12004, 1113, 1168,13962,13962, 282, 1178,11943, 1116, - 11941, 1199, 1200,13962, 495, 0, 1187,11918, 1135, 1140, - 1144, 1149, 1180, 1172, 1168, 1184,13962, 1173, 1178, 1184, - 1199, 1182, 636,11960, 1229, 620, 1196, 1187, 1190, 1187, + 821, 885, 405, 1139,14023,12083, 1143, 1147, 476, 309, + 1153, 1159, 410, 1011, 490, 493, 1096, 1114,12028, 911, + 1122, 1124, 1129,11967, 943, 1158,14023, 0, 0, 0, + 14023,14023, 990, 1017, 1053, 1062, 1105, 1118,14023, 120, + 1162,11965, 1113, 1168,14023,14023, 282, 1178,11948, 1116, + 11930, 1199, 1200,14023, 495, 0, 1187,11913, 1135, 1140, + 1144, 1149, 1180, 1172, 1168, 1184,14023, 1173, 1178, 1184, + 1199, 1182, 636,11971, 1229, 620, 1196, 1187, 1190, 1187, 1198, 1200, 1198, 1199, 1213, 1221, 297, 1205, 1225, 1220, 1213, 1214, 1234, 1230, 1232, 1236, 1245, 1237, 735, 1243, - 1246, 1254, 1261, 1252, 641,11949,11865, 642, 1321, 1327, - 1333,13962, 1293,13962, 1304,13962, 1294, 1279, 1270, 1283, + 1246, 1254, 1261, 1252, 641,11969,11886, 642, 1321, 1327, + 1333,14023, 1293,14023, 1304,14023, 1294, 1279, 1270, 1283, 1297, 1268, 1304, 1311, 1298, 1302, 1317, 1302, 1314, 1328, - 1321, 1329, 1354, 1321, 1339, 920,11891, 670, 1395, 1405, - 1400,13962, 1409, 1410, 1406, 1416,11890,11869, 998, 1423, - 1431, 1417, 1429, 1435, 1440, 1439,11867,11866, 1391, 1454, - 1467, 1448, 1468, 1474, 1484, 1498, 1504,13962, 1510, 933, - 1514, 1525,11838, 1518,11884, 1541, 1561, 346, 1578, 1584, - 1585,11833,11832, 1609, 1527, 1624, 1642, 1500, 1648,13962, + 1321, 1329, 1354, 1321, 1339, 920,11893, 670, 1395, 1405, + 1400,14023, 1409, 1410, 1406, 1416,11891,11890, 998, 1423, + 1431, 1417, 1429, 1435, 1440, 1439,11862,11858, 1391, 1454, + 1467, 1448, 1468, 1474, 1484, 1498, 1504,14023, 1510, 933, + 1514, 1525,11857, 1518,11906, 1541, 1561, 346, 1578, 1584, + 1585,11855,11854, 1609, 1527, 1624, 1642, 1500, 1648,14023, - 1673, 1677, 1615, 1707, 842, 1708,13962,13962, 1733, 1739, - 1488,11831,11830, 1005, 1722, 1549, 1633, 1684, 1745, 1701, - 1568,11827, 1172, 1751, 1671, 1599, 1664, 1605, 1764, 1767, - 1734, 1780,13962,11880, 949, 816,13962, 1784,13962,11878, + 1673, 1677, 1615, 1707, 842, 1708,14023,14023, 1733, 1739, + 1488,11851,11850, 1005, 1722, 1549, 1633, 1684, 1745, 1701, + 1568,11848, 1172, 1751, 1671, 1599, 1664, 1605, 1764, 1767, + 1734, 1780,14023,11901, 949, 816,14023, 1784,14023,11848, 1463, 1335, 1402, 1444, 1474, 1477, 1503, 1529, 1581, 1753, - 1658, 1746,11852, 1734, 1739, 1728, 1761, 1758, 1774, 1771, - 13962, 1761, 1780, 1778, 1780, 1771, 1767, 1779, 1791, 1829, - 1792, 1782, 1806, 1533,11824, 1879,13962,11741,13962, 1883, - 1907, 1911, 1567, 701, 1917, 1075, 1691, 1560, 1847,11739, + 1658, 1746,11740, 1734, 1739, 1728, 1761, 1758, 1774, 1771, + 14023, 1761, 1780, 1778, 1780, 1771, 1767, 1779, 1791, 1829, + 1792, 1782, 1806, 1533,11763, 1879,14023,11747,14023, 1883, + 1907, 1911, 1567, 701, 1917, 1075, 1691, 1560, 1847,11743, 1923, 1930, 1861, 898, 1755, 1100, 1889, 1035, 1936, 1851, - 1110, 1937, 1942,11723, 1860,11665, 1293, 1888,13962, 1941, - 1943,11664,11661, 1428, 1945, 1947, 0, 0, 0, 1829, - 1030, 1882, 1899, 1476, 1921,13962,13962, 1956,11612,11611, - 1955, 1948, 1968,13962, 1979,11608,11582, 1996, 1978, 2008, - 11572, 1919, 1940, 1946, 1936, 1954, 1955, 1975,13962, 1985, + 1110, 1937, 1942,11742, 1860,11685, 1293, 1888,14023, 1941, + 1943,11636,11635, 1428, 1945, 1947, 0, 0, 0, 1829, + 1030, 1882, 1899, 1476, 1921,14023,14023, 1956,11632,11606, + 1955, 1948, 1968,14023, 1979,11600,11599, 1996, 1978, 2008, + 11592, 1919, 1940, 1946, 1936, 1954, 1955, 1975,14023, 1985, 1984, 1984, 1986, 2035, 1983, 1982, 1967, 2026, 1980, 1992, - 2001, 1633, 1998, 1992, 1669, 2007, 2005, 2003,13962, 2018, - 2003, 2009, 2031, 2026, 2022, 2030, 2067, 2059, 2047, 2041, - 2046, 2057, 2073,13962, 2068, 2084, 2072, 2091, 2109, 2036, - 2123,13962, 2087, 2085, 2080, 2097,13962, 2078, 2093, 2107, + 2001, 1633, 1998, 1992, 1669, 2011, 2010, 2006,14023, 2019, + 2010, 2013, 2032, 2032, 2027, 2032, 2067, 2062, 2047, 2041, + 2055, 2065, 2084,14023, 2073, 2087, 2075, 2093, 2109, 2036, + 2123,14023, 2092, 2086, 2081, 2099,14023, 2078, 2093, 2107, - 13962, 2092, 2099,13962,13962, 2108, 2103, 2098,13962, 2103, - 2120, 2112, 2107, 2106, 2110, 2116, 2130, 2122, 2108, 2164, - 11547,11572, 2185, 2194,11546, 2168,11512,11539, 2198, 2205, - 11536, 2204,11500,11522, 2221, 2222, 2196, 2211, 2215, 2184, - 2251, 856, 2282,11560, 2230, 2231, 2288,11518, 2253,11419, - 11364, 2313, 2322, 2347, 2255, 2348, 2380, 2409, 2410, 2440, - 11334, 2281, 2265, 2384, 2444, 2470, 2474,11289, 2257,11260, - 11285, 2458, 2500, 2186, 2247,11213,11235, 2378, 2379, 2391, - 13962, 2195, 2232, 2246, 2259, 2274, 2269, 2294,11263, 2281, - 2295, 2309, 2332, 2370, 2390, 2497, 2393, 2430, 2427,11260, + 14023, 2091, 2098,14023,14023, 2108, 2103, 2098,14023, 2105, + 2121, 2113, 2108, 2110, 2113, 2119, 2132, 2129, 2117, 2166, + 11542,11564, 2184, 2185,11563, 2191,11532,11552, 2198, 2202, + 11546, 2203,11517,11542, 2209, 2215, 2224, 2226, 2232, 2188, + 2249, 856, 2266,11510, 2228, 2214, 2283,11388, 2284,11291, + 11313, 2315, 2275, 2319, 2222, 2373, 2377, 2406, 2407, 2437, + 11351, 2282, 2329, 2438, 2468, 2469, 2498,11309, 2300,11237, + 11259, 2455, 2480, 2218, 2170,11230,11255, 2340, 2341, 2394, + 14023, 2232, 2283, 2303, 2310, 2329, 2315, 2361,11258, 2348, + 2362, 2385, 2380, 2400, 2402, 2495, 2418, 2467, 2451,11252, - 2433, 2449, 2459,13962, 2459, 2463, 2464, 2468, 2471, 2494, - 11234, 2495, 2500, 2502, 2492, 2489, 2512, 2501, 2496, 2519, - 2498, 2523, 2521, 2511, 2528, 2525, 2543, 2516, 2543,11228, - 11227, 2526, 2245, 2392, 2421, 2486, 2485, 2597, 2598, 2605, - 2606,11249, 2610, 2618, 1372, 2622, 2626, 2628,11224, 2632, - 2636, 2638, 2537, 2596,11136,11163,11160, 2637,11124,11146, - 2582, 2581, 2583, 2588,11145, 2641,11114,11134,11128, 2651, - 11099,11124, 92, 2596, 2598, 2617, 2606, 2606,13962, 2607, - 2620, 2630, 2634, 2616, 2638, 2666, 2653, 2656, 2650, 2629, - 2644, 2649, 2667, 2671, 2670, 2678, 2680, 2680, 2695,13962, + 2454, 2455, 2466,14023, 2479, 2482, 2484, 2489, 2482, 2499, + 11251, 2501, 2522, 2506, 2498, 2497, 2517, 2534, 2501, 2517, + 2504, 2547, 2524, 2515, 2531, 2530, 2549, 2536, 2558,11248, + 11223, 2545, 2260, 2300, 2349, 2544, 2362, 2611, 2620, 2369, + 2621,11242, 2427, 2628, 1372, 2635, 2448, 2636,11241, 2642, + 2486, 2643, 2534, 2604,11156,11176,11170, 2644,11141,11166, + 2571, 2584, 2590, 2598,11158, 2648,11124,11151,11148, 2658, + 11031,10853, 92, 2602, 2602, 2623, 2611, 2611,14023, 2612, + 2624, 2634, 2638, 2620, 2645, 2636, 2664, 2673, 2676, 2648, + 2638, 2654, 2653, 2682, 2681, 2648, 2674, 2687, 2685, 2698, - 2667, 2710,11034, 2679,13962, 2682,10828,13962, 2705, 2702, - 2691, 2706, 2710, 2708, 2703,10822, 2698, 2705, 2711, 2723, - 2709, 2716, 2304, 2727, 2724, 2715,10821, 2716, 2725, 2754, - 2728, 2742,13962, 2674, 2739, 2729, 2745, 2736, 2731, 2750, - 2754, 2752, 2768, 2752,13962, 2769, 2768, 2759, 2770, 2771, - 2774, 2779, 2774, 2772, 2779, 1723, 2813, 2831, 2809, 2840, - 2846, 2820, 2842, 2852, 2853, 2866, 947, 2862, 2854,10858, - 2887, 42, 2857,10775, 916,10769,13962,10807,13962, 2886, - 2850, 2910, 2953, 2954, 1309, 2974, 2864, 2920,10804, 2973, - 3007, 3016, 3039, 2316, 3048, 3060, 2978, 2847, 3069,13962, + 14023, 2540, 2721,10846, 2684,14023, 2686,10845,14023, 2710, + 2707, 2692, 2709, 2717, 2715, 2713,10842, 2705, 2714, 2720, + 2731, 2716, 2723, 2221, 2737, 2734, 2723,10798, 2725, 2733, + 2770, 2732, 2748,14023, 2592, 2745, 2735, 2754, 2741, 2735, + 2755, 2757, 2757, 2776, 2760,14023, 2778, 2779, 2770, 2777, + 2781, 2783, 2788, 2782, 2781, 2789, 1723, 2820, 2853, 1982, + 2850, 2857, 2819, 2859, 2868, 2866, 2877, 947, 2167, 2854, + 10832, 2894, 42, 2867,10792, 916,10789,14023,10749,14023, + 2893, 2884, 2917, 2937, 2955, 1309, 2980, 2829, 2943,10743, + 2981, 3006, 2999, 3037, 2252, 3067, 3068, 3033, 2258, 3088, - 10725,13962, 989, 2867, 3085, 3106, 2853, 2876, 3081, 2877, - 2937, 2995, 2930, 2843, 2855, 2869, 2868, 2885, 2878, 2926, - 3084,13962, 2964, 2968,13962,10709, 2956, 3130, 3153, 2982, - 2989, 2980,13962, 2994, 3037, 3037,13962, 3047, 3059, 3071, - 3054, 3064,10724, 3069, 3086, 3082, 3094, 3097, 3108, 3093, - 3134, 3115, 3119, 3136, 3138, 3133, 3150, 3130, 3142, 3152, - 3143, 3135,10709, 3147, 3141, 3154, 3159, 3150, 3160, 3155, - 3160, 3167,13962,10695, 3155, 2909, 3011, 3122, 3102, 3123, - 3219, 3203, 3231, 3232, 3238, 3239,10698, 3240, 3245, 3246, - 3251, 3252, 3257, 3258, 2985, 3256, 3028, 3258, 3176, 3198, + 14023,10742,14023, 989, 2298, 3097, 3106, 2829, 2880, 3127, + 2836, 2921, 3048, 2886, 2805, 2849, 2873, 2870, 2887, 2917, + 2925, 3083,14023, 2942, 2946,14023,10729, 2943, 3145, 3154, + 2969, 2995, 2983,14023, 2993, 2999, 2999,14023, 3030, 3075, + 3085, 3067, 3075,10719, 3077, 3084, 3081, 3094, 3118, 3129, + 3114, 3158, 3131, 3138, 3157, 3149, 3144, 3161, 3141, 3153, + 3163, 3154, 3146,10701, 3156, 3153, 3159, 3172, 3164, 3168, + 3162, 3167, 3175,14023,10712, 3163, 2916, 2931, 3020, 3066, + 3086, 3134, 3138, 3211, 3236, 3144, 3240,10718, 3244, 3246, + 3250, 3252, 3256, 3258, 3262, 2901, 3096, 3024, 3259, 3213, - 3216, 2934, 3260, 3259, 3264, 3262,10639,10618,13962, 3225, - 3228,13962, 3246, 3246, 3240, 3235, 3236, 3259, 3242, 3257, - 3261, 3263, 3249, 3260, 3248, 3275, 3250, 3255, 3297, 3303, - 3287, 3287, 3288, 3292, 3293, 3299, 3301, 3301, 3313, 3301, - 3311, 3309, 3320, 3311, 3312,13962, 3350, 3306, 3319, 3371, - 3315, 3325, 3336, 3346, 3357, 3360, 3351, 3347, 3361,10631, - 3367, 3369, 3355, 3357, 3362,13962, 3359, 3363, 3360, 3404, - 3377, 3383,13962, 3383, 3377, 3379, 3397, 3412, 3413, 3395, - 3394, 3405, 3407, 3419, 3406, 3413,13962, 3413, 3430, 3418, - 3429, 3428, 3426, 3435, 3427, 3429, 3445, 3426,10598,10625, + 3199, 3217, 3029, 3261, 3252, 3267, 3260,10652,10628,14023, + 3225, 3225,14023, 3246, 3248, 3243, 3237, 3237, 3260, 3242, + 3256, 3260, 3251, 3264, 3250, 3262, 3249, 3304, 3251, 3257, + 3278, 3298, 3282, 3287, 3289, 3293, 3294, 3300, 3302, 3302, + 3314, 3302, 3312, 3310, 3321, 3312, 3313,14023, 3351, 3308, + 3322, 3368, 3315, 3324, 3338, 3348, 3358, 3366, 3354, 3350, + 3363,10648, 3368, 3370, 3356, 3358, 3363,14023, 3360, 3364, + 3361, 3405, 3378, 3381,14023, 3383, 3372, 3371, 3378, 3393, + 3411, 3396, 3396, 3408, 3410, 3421, 3407, 3414,14023, 3414, + 3431, 3419, 3430, 3429, 3427, 3436, 3425, 3429, 3440, 3418, - 10594,10497,10465, 3501, 3479, 1508,10457,10379, 3510, 3480, - 3484, 3487, 1344, 3519, 3545, 3522, 3579, 3554, 3588, 3525, - 3602,10389,10343, 3442,10339, 3479,10324, 3479, 3472,13962, - 3470,13962, 3485, 3504, 3550, 3538, 3560,10300, 3577, 3627, - 3569, 3565, 3577, 3584, 3589,13962,13962,10278, 3586,13962, - 3597,10293, 0, 3594, 3582, 3602, 3607, 3623, 3616, 3627, - 3651, 3631, 3619, 3644, 3638, 3635, 3648, 3652, 3652, 3642, - 3654, 3653, 3656,13962, 3658, 3654, 3659, 3654, 3658,10282, - 3663, 3659, 3668, 3670,10218, 18,10177, 3573, 3616, 3617, - 3621, 3711, 3732, 3718, 3733, 3739, 3740, 3741, 3746, 3665, + 10618,10521,10489,10481,10403, 3502, 3481, 1508,10413,10367, + 3506, 3497, 3460, 3462, 1344, 3537, 3567, 3496, 3588, 3555, + 3603, 3568, 3602,10391,10291, 3438,10251, 3469,10302, 3476, + 3480,14023, 3478,14023, 3479, 3488, 3576, 3503, 3487,10317, + 3505, 3642, 3498, 3541, 3562, 3559, 3575,14023,14023,10298, + 3572,14023, 3587,10257, 0, 3589, 3591, 3614, 3614, 3615, + 3603, 3613, 3670, 3617, 3608, 3623, 3628, 3626, 3639, 3647, + 3648, 3642, 3652, 3662, 3667,14023, 3668, 3661, 3666, 3662, + 3666,10209, 3671, 3670, 3679, 3682,10196, 18,10194, 3527, + 3631, 3633, 3632, 3716, 3717, 3718, 3741, 3723, 3745, 3724, - 10114,10141,10110, 3682, 3688, 3704,10063, 9999, 9959, 9841, - 9830, 9820, 3705, 3715, 3720,13962, 3721, 3708,13962, 3714, - 3720, 3709, 3722, 3724, 3718, 3723, 3720, 3723, 3727, 3738, - 3719, 3740, 3741, 3732, 3733, 3728, 3740, 3733, 3745, 3751, - 3770, 3764, 3759, 3765, 3777, 3764, 3762, 3765, 3781, 3783, - 3785, 3774, 3790, 3787,13962, 3778, 3789, 3794, 3781, 3772, - 3783,13962, 3815, 3794, 3009, 3780, 3800, 3801, 9508, 3830, - 3822, 3823, 3819, 9090, 3814, 3820, 3838, 3823, 9078, 3829, - 9067, 3843, 3829, 3832, 3839, 3844, 3846, 3846, 9066, 3837, - 13962, 3844, 3833, 3837, 3849, 3840, 3852, 3866, 3870, 3872, + 3749, 3677,10134,10087,10023, 3696, 3691, 3695, 9983, 9865, + 9875, 9829, 9512, 9101, 3701, 3714, 3720,14023, 3721, 3708, + 14023, 3714, 3720, 3709, 3722, 3732, 3726, 3720, 3727, 3724, + 3728, 3730, 3742, 3723, 3744, 3745, 3737, 3738, 3734, 3752, + 3748, 3760, 3755, 3770, 3764, 3760, 3766, 3778, 3765, 3763, + 3766, 3782, 3785, 3787, 3776, 3794, 3791,14023, 3782, 3793, + 3798, 3785, 3776, 3787,14023, 3802, 3801, 3059, 3788, 3816, + 3827, 9101, 3834, 3823, 3824, 3820, 9100, 3815, 3821, 3839, + 3824, 9089, 3831, 9088, 3845, 3831, 3836, 3843, 3848, 3850, + 3850, 9000, 3841,14023, 3848, 3838, 3842, 3853, 3844, 3863, - 3887, 3888, 3879,13962, 3873, 3890, 3894, 3871, 3883, 3878, - 3884, 3896, 3900, 3915, 2888, 1689, 9105, 3916, 3959, 1818, - 9018, 3950, 1837, 3960, 1749, 2990, 3980, 3918, 3902, 3938, - 13962, 3897, 3941, 3946, 3935, 3944, 3951, 3963, 3957, 0, - 4008, 3945,13962, 3957, 3969, 3955, 3975, 3976, 4018, 3995, - 3998, 9022, 3986, 9004, 9003, 9002, 9001, 8999, 3989, 4049, - 3999, 8996, 8996, 4011, 4003, 4017, 4007, 4020, 4012, 4023, - 4028, 4012, 4016,13962, 4051, 4035, 4035, 4060,13962, 4058, - 4053, 4048, 4062, 4054, 4049, 966, 8912, 2182, 0, 3935, - 3936, 4036, 4040, 4042, 3052, 4067, 4058, 8717, 8715, 4068, + 3868, 3862, 3863, 3884, 3888, 3880,14023, 3874, 3891, 3895, + 3872, 3884, 3879, 3886, 3898, 3902, 3919, 2389, 1689, 9038, + 3920, 3960, 1818, 9037, 3929, 1837, 3961, 1749, 2936, 3992, + 3951, 3910, 3935,14023, 3901, 3929, 3939, 3936, 3938, 3946, + 3960, 3956, 0, 4020, 3944,14023, 3956, 3969, 3953, 3983, + 3970, 3996, 3995, 3997, 9041, 3984, 9022, 9019, 8876, 8793, + 8741, 3984, 4059, 3987, 8738, 8693, 4000, 3992, 4006, 3997, + 4010, 4002, 4024, 4027, 4013, 4016,14023, 4039, 4025, 4024, + 4058,14023, 4055, 4051, 4046, 4060, 4052, 4047, 966, 8660, + 2415, 0, 3939, 4048, 4049, 4050, 4100, 3553, 4067, 4057, - 4059, 8772, 4063, 4060, 4057, 4063, 4066, 4061, 4077, 4069, - 4081, 4072, 4103, 4083, 4081, 4088, 4104, 4092, 4115, 4104, - 4107, 4119, 4119, 4123, 4109, 4123, 4116, 4111, 4128, 4119, - 4159, 4122, 4133, 4121, 4142, 4135, 4145, 4133, 4166, 4153, - 4149, 4166, 4161, 4169, 4164, 4168, 4171, 4171, 4186, 4179, - 4176, 4173,13962, 8559, 8546, 8545, 4189, 4175, 4190, 4192, - 4179, 4222, 8429, 8425, 4195, 4199, 4219, 4238, 4212, 4204, - 4216, 4213, 4223, 4225, 4237, 4240, 4241, 4235, 4241, 4242, - 4244, 4227, 4239, 4236, 4234, 4255, 4253, 4265, 4259, 4272, - 4279, 4283, 4278, 4269, 4287,13962, 4272, 4282, 4285, 4275, + 8571, 8570, 4071, 4062, 8618, 4066, 4063, 4060, 4066, 4069, + 4063, 4066, 4080, 4071, 4084, 4075, 4097, 4091, 4091, 4097, + 4096, 4095, 4117, 4106, 4107, 4119, 4121, 4123, 4109, 4128, + 4122, 4116, 4133, 4124, 4163, 4126, 4137, 4124, 4145, 4143, + 4156, 4143, 4158, 4155, 4151, 4163, 4157, 4165, 4164, 4172, + 4175, 4175, 4190, 4183, 4180, 4177,14023, 8452, 8451, 8445, + 4193, 4179, 4194, 4195, 4182, 4223, 8436, 8428, 4203, 4208, + 4226, 4245, 4216, 4208, 4219, 4214, 4223, 4224, 4242, 4245, + 4246, 4239, 4245, 4246, 4246, 4230, 4243, 4245, 4238, 4259, + 4260, 4269, 4263, 4276, 4281, 4286, 4281, 4271, 4290,14023, - 4309, 4321, 4328, 4273, 4294, 4305, 4304,13962, 4303, 4322, - 4307, 4324, 4311, 4317, 4369, 2441, 8425, 4386, 4341, 8437, - 8385, 4320, 4327, 4337, 4360, 4390, 4347, 4361,13962, 4347, - 13962, 4364,13962,13962,13962,13962, 8387, 4349, 4383, 4428, - 8333, 4384, 4394, 4398, 4398, 4402, 4404, 4394, 4394, 4402, - 4408, 4400, 4389, 4410, 4425, 4406, 4427, 4425, 4438, 4441, - 4442, 4431, 8294, 3511, 8281, 0, 4361, 4442, 4461, 8214, - 1989, 4435, 4436, 8244,13962, 4450, 4437, 4439, 4449, 4452, - 4435, 4441, 4460, 4451, 4452, 4462, 4450, 4456, 4466, 4467, - 4472, 4474, 4475, 4473, 4475, 4488, 4486, 4496, 4497, 4502, + 4276, 4283, 4287, 4278, 4313, 4326, 4355, 4278, 4297, 4302, + 4303,14023, 4304, 4313, 4299, 4324, 4314, 4321, 4370, 2963, + 8378, 4374, 4338, 8351, 8294, 4325, 4338, 4348, 4354, 4413, + 4346, 4358,14023, 4345,14023, 4366,14023,14023,14023,14023, + 8309, 4358, 4379, 4424, 8291, 4381, 4391, 4419, 4420, 4423, + 4424, 4414, 4414, 4422, 4428, 4420, 4408, 4429, 4432, 4412, + 4432, 4429, 4436, 4437, 4438, 4427, 8251, 3930, 8289, 0, + 4401, 4438, 3559, 8148, 2420, 4430, 4431, 8196,14023, 4445, + 4432, 4434, 4444, 4473, 4426, 4432, 4461, 4479, 4469, 4470, + 4481, 4469, 4474, 4484, 4481, 4479, 4480, 4481, 4479, 4480, - 4493, 4503, 4489, 4507, 4504, 4491, 4497, 4499, 4503, 4514, - 4515, 4518, 4506, 4505, 4506, 4507, 4514, 4514, 4518, 4538, - 4539, 4528, 4526, 4551, 4569, 4552, 4538, 4554,13962, 4548, - 4549, 4537, 4548, 4544, 4547, 4569, 4553, 4555, 4557, 8114, - 4563, 4561, 4576, 4567, 4568, 4565, 4583, 4626, 4611, 7932, - 4591, 4595, 4587,13962, 4609, 4606,13962, 4614, 4600,13962, - 13962,13962, 4595, 4603, 4618, 4620,13962, 4608, 4622, 4614, - 4618, 4617, 4629, 4621, 4623, 4630, 4646, 4649, 4649, 4661, - 4651, 4668, 4671, 4657, 4660, 4659, 4660, 4662, 4679, 2191, - 7915, 4684, 4671,13962, 4669, 4685, 4686, 4689, 4687, 4679, + 4487, 4483, 4493, 4494, 4499, 4489, 4499, 4485, 4503, 4500, + 4488, 4494, 4520, 4523, 4533, 4534, 4537, 4525, 4524, 4525, + 4525, 4532, 4528, 4525, 4544, 4545, 4534, 4531, 4550, 4566, + 4549, 4535, 4551,14023, 4544, 4545, 4533, 4544, 4540, 4544, + 4577, 4568, 4571, 4573, 8140, 4580, 4578, 4593, 4583, 4584, + 4581, 4596, 4639, 3965, 8004, 4598, 4602, 4589,14023, 4601, + 4597,14023, 4604, 4590,14023,14023,14023, 4585, 4593, 4611, + 4611,14023, 4604, 4628, 4627, 4631, 4630, 4645, 4635, 4635, + 4636, 4652, 4653, 4652, 4654, 4643, 4659, 4690, 4647, 4650, + 4649, 4650, 4652, 4692, 1961, 7975, 4697, 4684,14023, 4682, - 7861, 4751, 7857, 3568, 7861, 4678, 0,13962, 7747, 4700, - 4696, 4752, 4710, 4719, 4724, 4723, 4721, 7742, 4751,13962, - 7741, 4714, 4792, 4758, 4732, 4732, 4752, 4751, 4756, 4757, - 4753, 4770,13962, 4774, 4767, 4791, 4791, 4788, 4803, 4802, - 4802, 4809, 4796, 4797, 4792, 3580, 4763, 7685, 7641, 7628, - 4795, 4801, 0, 7677, 4800, 4805,13962, 4806, 4809, 4810, - 4808, 4823, 4808, 4824, 4823, 4830, 4823, 4829, 4844, 4834, - 4846, 4842, 4858, 4853, 4854, 4866, 4861, 4844, 4850, 4853, - 4861, 4868, 4417, 4854, 4857, 4856, 4860, 4874, 4874, 4865, - 4871, 4867, 4882, 4878, 4869, 4900, 4908, 4723, 4901, 4903, + 4698, 4699, 4700, 4702, 4694, 7889, 4737, 7882, 4358, 7915, + 4692, 0,14023, 7766, 4708, 4698, 4758, 4700, 4708, 4712, + 4721, 4740, 7753, 4757,14023, 7749, 4719, 4787, 4756, 4757, + 4744, 4751, 4748, 4753, 4754, 4751, 4768,14023, 4772, 4765, + 4799, 4803, 4787, 4789, 4799, 4800, 4807, 4794, 4795, 4790, + 4696, 4392, 7649, 7659, 7644, 4792, 4798, 0, 7693, 4797, + 4802,14023, 4804, 4805, 4807, 4805, 4806, 4823, 4808, 4824, + 4823, 4830, 4839, 4829, 4856, 4842, 4846, 4843, 4859, 4854, + 4855, 4866, 4861, 4844, 4850, 4853, 4861, 4868, 4402, 4854, + 4857, 4859, 4861, 4874, 4874, 4865, 4871, 4867, 4882, 4878, - 4914, 4910, 4916, 4913,13962, 4910, 4907, 4940,13962, 4926, - 4924, 4925, 4927, 4926, 4927, 4934, 4936, 4930, 7619, 4938, - 13962, 4934, 4940, 4942, 4944, 4959, 4948, 4955, 4973, 4960, - 4967, 4972, 4969, 4974, 4962, 4963,13962, 5009, 4978, 4972, - 4968,13962, 4973, 4983,13962,13962,13962,13962, 4989, 7587, - 4975, 4973, 4986, 4980,13962, 5010, 5004, 5006, 5020, 5012, - 5019,13962, 5023, 5033,13962, 5027, 5020, 5024, 5019, 5026, - 5034, 5070, 4587, 5028, 5028, 5071, 5033, 5048, 5054, 5068, - 5059, 5069, 5133, 7607, 4732, 5103, 7446, 7441, 5104, 5080, - 5085,13962, 5086, 5093, 5080, 5091, 5086, 5097,13962, 5096, + 4885, 4900, 4907, 4642, 4912, 4913, 4915, 4911, 4918, 4915, + 14023, 4911, 4908, 4941,14023, 4927, 4925, 4926, 4928, 4929, + 4930, 4935, 4936, 4929, 7637, 4936,14023, 4934, 4956, 4942, + 4949, 4967, 4955, 4956, 4975, 4960, 4968, 4973, 4970, 4975, + 4963, 4964,14023, 5009, 4981, 4973, 4969,14023, 4977, 4984, + 14023,14023,14023,14023, 4989, 7624, 4974, 4973, 4986, 4980, + 14023, 5008, 5007, 5013, 5021, 5013, 5020,14023, 5024, 5033, + 14023, 5028, 5022, 5026, 5023, 5027, 5037, 5071, 5066, 5030, + 5029, 5071, 5049, 5049, 5058, 5076, 5062, 5070, 5142, 7658, + 5104, 5105, 7635, 7633, 5106, 5086, 5090,14023, 5091, 5101, - 5122, 5119, 5179, 7395, 5123, 5115,13962, 5115, 5132, 5132, - 5134, 5135, 5140, 5145, 5134, 5160, 5137, 5159, 5180, 5174, - 5169, 5184, 5191, 5190, 5176, 5189, 5179, 5195, 5196, 5187, - 2177, 7352, 5262, 7315, 5266,13962, 5189, 7339, 5184, 5203, - 5199, 5235, 5237, 5244, 5237, 5239, 5235, 5241, 5247, 5232, - 5244, 5239, 7319, 5025, 5248, 5255, 5255, 5237, 5238, 5246, - 5253,13962, 5255, 5263, 5261, 5251, 5168, 5265, 5248, 5269, - 5270, 5289, 5295, 5295, 5287, 5295, 5304, 5302, 5298, 5294, - 5295, 5289, 5339, 5291, 5300, 5306, 5308, 5313, 5315, 5302, - 5307, 5321, 5057,13962, 5309, 5315, 5306, 5308, 5330, 5336, + 5089, 5103, 5094, 5100,14023, 5103, 5122, 5123, 5188, 7629, + 5124, 5121,14023, 5118, 5135, 5135, 5141, 5142, 5138, 5143, + 5139, 5140, 5138, 5158, 5166, 5157, 5174, 5188, 5195, 5196, + 5183, 5196, 5186, 5202, 5203, 5194, 2486, 7592, 5240, 7566, + 5268,14023, 5196, 7488, 5196, 5206, 5202, 5220, 5221, 5224, + 5246, 5239, 5240, 5237, 5243, 5249, 5234, 5248, 5243, 7469, + 4752, 5252, 5259, 5259, 5241, 5242, 5250, 5256,14023, 5258, + 5267, 5264, 5254, 5178, 5268, 5251, 5272, 5273, 5274, 5279, + 5295, 5288, 5295, 5304, 5303, 5299, 5295, 5296, 5292, 5342, + 5294, 5303, 5309, 5311, 5316, 5318, 5305, 5310, 5324, 4394, - 5323, 5322, 5334, 5338, 5345, 5384, 5360, 5349, 5348, 5351, - 5353, 5356, 5358, 5363, 5360, 5376, 5366, 5371, 5394, 5386, - 5390, 5397, 5404, 5402, 5404, 5417, 5409, 5409, 5412, 5427, - 5414, 5430,13962, 7274, 5431, 5429, 5424, 5433, 7326,13962, - 7293,13962, 5431, 5429, 5441, 5433, 5424, 5431, 5451, 5450, - 5436,13962,13962, 5450, 1035, 1169, 5446, 5448, 5105, 5121, - 5487, 5468, 5470, 5464, 5468, 5480, 5468, 5483, 5478, 5491, - 5479, 5162,13962, 5504, 5513, 5515,13962,13962, 5491, 5480, - 5479, 5486, 5495, 5500, 5492, 5501, 5489, 5498, 5557, 5620, - 5498, 5511, 5534, 5546, 5527, 5529, 5554, 0, 5553, 5560, + 14023, 5312, 5318, 5309, 5311, 5333, 5336, 5321, 5320, 5325, + 5329, 5345, 5384, 5360, 5349, 5348, 5351, 5352, 5356, 5358, + 5363, 5360, 5376, 5366, 5370, 5382, 5370, 5375, 5386, 5404, + 5402, 5404, 5417, 5409, 5408, 5412, 5427, 5414, 5430,14023, + 7346, 5431, 5429, 5423, 5430, 7367,14023, 7363,14023, 5428, + 5427, 5438, 5429, 5421, 5428, 5448, 5448, 5434,14023,14023, + 5444, 1035, 1169, 5442, 5441, 5487, 5491, 5493, 5473, 5478, + 5470, 5473, 5486, 5473, 5487, 5482, 5495, 5483, 5179,14023, + 5504, 5508, 5510,14023,14023, 5491, 5480, 5479, 5485, 5493, + 5499, 5490, 5501, 5490, 5496, 5555, 5618, 5522, 5521, 5535, - 5542, 5563, 5553, 5568, 5569, 5555,13962, 5571, 5572, 5573, - 5574, 5591, 5579, 5587, 5606, 5610, 5605, 5600, 5619,13962, - 5604, 5621, 5622, 5624, 5621, 7020, 7005, 5659, 1957, 5608, - 5664, 5667, 5630,13962, 5634, 5619, 5626, 5642, 5720, 5639, - 5638, 5644, 5640, 5647, 5643, 5659, 5651, 5650, 5650, 5703, - 5688, 5671, 5675, 5661, 5666, 5673, 5685, 5686, 5690, 5681, - 5687, 5737, 0, 5707, 5704, 5702, 5716, 5705, 5702, 5701, - 5700, 5707, 5705, 0, 5723, 5725, 5731, 5717, 0, 5797, - 5726, 5754, 5738, 5745, 5754, 5183, 5748, 5758, 5758,13962, - 5772, 5761, 5371, 5377, 5763, 5762, 5758, 5774, 5779, 5767, + 5548, 5528, 5538, 5553, 0, 5552, 5554, 5540, 5560, 5554, + 5567, 5568, 5554,14023, 5570, 5571, 5572, 5585, 5591, 5578, + 5585, 5604, 5608, 5604, 5599, 5618,14023, 5602, 5620, 5622, + 5623, 5620, 7306, 7305, 5658, 1957, 5661, 5664, 5667, 5630, + 14023, 5634, 5621, 5632, 5643, 5720, 5642, 5644, 5641, 5646, + 5642, 5650, 5646, 5663, 5655, 5654, 5654, 5706, 5691, 5673, + 5676, 5668, 5683, 5690, 5692, 5692, 5696, 5688, 5694, 5743, + 0, 5708, 5705, 5704, 5719, 5708, 5705, 5705, 5706, 5713, + 5712, 0, 5726, 5736, 5744, 5728, 0, 5798, 5739, 5757, + 5741, 5750, 5758, 5688, 5751, 5764, 5759,14023, 5776, 5764, - 5777, 5767, 5770, 5788, 5783, 5788, 5780, 5790, 5788, 5797, - 5795, 5788, 5791, 5805,13962,13962,13962,13962, 5798, 5815, - 5814, 5798, 5816, 5824, 5827, 5827, 5825, 5814, 6988, 5831, - 5822, 5836, 5823, 5841,13962,13962,13962,13962, 5839, 5827, - 13962, 5830, 7003,13962,13962, 5844, 5837,13962, 5838, 5833, - 5850, 5837, 5850, 5855, 5862, 1446, 1625,13962, 2341,13962, - 5855, 5859, 5868, 6937, 6930, 5893, 6911, 5897,13962, 5864, - 5878, 5880, 5871, 5887, 5881, 5876, 5875, 5882, 250, 5951, - 6938, 6765, 6648, 5910, 6608, 5916, 5892, 5898, 5899, 5891, - 5893, 5891, 5898,13962, 5911, 5904, 5911, 5967, 5927, 5923, + 5154, 5794, 5766, 5765, 5762, 5779, 5784, 5770, 5784, 5779, + 5777, 5795, 5790, 5796, 5788, 5797, 5795, 5808, 5806, 5800, + 5795, 5811,14023,14023,14023,14023, 5804, 5817, 5816, 5800, + 5817, 5828, 5830, 5830, 5828, 5818, 7124, 5836, 5827, 5843, + 5830, 5849,14023,14023,14023,14023, 5846, 5834,14023, 5837, + 7101,14023,14023, 5852, 5845,14023, 5845, 5840, 5861, 5848, + 5862, 5859, 5868, 1446, 1625,14023, 3283,14023, 5861, 5864, + 5871, 7044, 7031, 5899, 7019, 5900,14023, 5865, 5882, 5883, + 5874, 5890, 5885, 5881, 5879, 5888, 250, 5957, 7040, 6997, + 6990, 5919, 6951, 5924, 5898, 5903, 5904, 5895, 5899, 5896, - 5939, 5933, 5931, 5932, 5947, 5947, 5945, 5963, 5961, 5950, - 5964, 5951, 5959, 0, 5966, 5968, 5976,13962, 5981,13962, - 13962, 5961,13962, 5971, 5972, 5975, 6623, 5975, 5978, 5980, - 5975, 5984, 5988, 5986,13962,13962, 5981,13962, 6000, 6583, - 6035, 6582, 6049, 5979, 6005,13962, 6021, 6013, 6626, 6621, - 6024, 6026, 6035, 6032, 6018, 6014, 6021, 5234, 6028, 6024, - 6039, 6025, 6027, 6037, 6037, 6046, 0, 6081, 6618, 6047, - 6037, 6056, 6056, 6077, 6067, 6078, 6080,13962, 6611, 6071, - 6440, 6077, 6085, 6088, 6078, 6089, 6086, 6087, 6092, 6078, - 6094, 0, 6086, 6092, 6087, 6101, 6304, 6092, 6089, 5390, + 5902,14023, 5918, 5909, 5915, 5971, 5933, 5929, 5943, 5937, + 5938, 5939, 5956, 5964, 5961, 5969, 5967, 5956, 5971, 5959, + 5963, 0, 5971, 5972, 5980,14023, 5985,14023,14023, 5965, + 14023, 5975, 5976, 5979, 6972, 5979, 5982, 5984, 5981, 5990, + 5992, 5991,14023,14023, 5987,14023, 6007, 6655, 6053, 6642, + 6067, 5988, 6026,14023, 6025, 6019, 6691, 6686, 6026, 6028, + 6043, 6040, 6026, 6022, 6043, 6030, 5939, 6036, 6032, 6048, + 6034, 6037, 6047, 6046, 6055, 0, 6092, 6683, 6057, 6048, + 6067, 6079, 6082, 6074, 6086, 6088,14023, 6664, 6078, 6654, + 6085, 6094, 6096, 6086, 6097, 6094, 6095, 6100, 6086, 6102, - 6101, 6091, 6164, 6114, 6112, 6114, 6124, 6133,13962,13962, - 6135, 6128, 6244, 6127, 6243, 6159, 6134,13962, 6128, 6138, - 6131, 6140, 6152, 6132, 6213, 6136, 6143, 6145, 6142, 6148, - 6161,13962, 6145, 6159, 6153, 6131, 6160, 6157, 6167,13962, - 6159, 6160, 6167, 6168, 6174, 6192, 6178, 6181, 6186, 6187, - 6202,13962,13962, 6201, 6207, 6204,13962, 6202, 6206, 6207, - 6116, 2425,13962, 6213, 6210, 6111, 6067, 6021, 6234, 5948, - 6235, 6236, 6199, 6211, 6207, 6204, 6212, 6214, 6208,13962, - 6206, 5924, 6292, 6267, 6261, 6293, 6301, 6324, 5915, 5759, - 5681, 6262, 5716, 6263, 6268, 6238, 5701, 6235, 6243, 6272, + 0, 6094, 6101, 6097, 6111, 6446, 6103, 6100, 6151, 6113, + 6106, 6170, 6123, 6133, 6134, 6135, 6144,14023,14023, 6146, + 6139, 6391, 6136, 6376, 6168, 6142,14023, 6136, 6146, 6139, + 6148, 6160, 6140, 6247, 6144, 6151, 6156, 6152, 6158, 6171, + 14023, 6155, 6169, 6161, 6140, 6169, 6166, 6178,14023, 6178, + 6179, 6177, 6179, 6185, 6203, 6189, 6190, 6194, 6195, 6210, + 14023,14023, 6209, 6215, 6212,14023, 6210, 6214, 6215, 6069, + 3943,14023, 6223, 6220, 6055, 6030, 5984, 6244, 5958, 6245, + 6246, 6209, 6221, 6215, 6213, 6221, 6225, 6227,14023, 6225, + 5948, 6304, 6269, 6270, 6288, 6308, 6323, 5938, 5716, 5648, - 6264, 6268, 6285, 6292, 6283,13962, 6297, 6294, 6302, 6300, - 6290, 6304, 6291, 6295, 6296, 6296, 6296, 6300, 6307, 6309, - 6318, 6315, 6330, 6331, 6328, 6335, 6339, 6346, 6347, 5671, - 6347, 5670, 6348, 6335, 6351, 6345, 6347, 6356, 6347, 6349, - 5558, 6394,13962, 5507, 6418,13962, 6358, 6356, 6368, 0, - 0, 0, 6356, 6366, 6361, 6362, 6371, 6370, 6378, 6389, - 6437, 6376, 6388,13962, 6398, 6383, 6399, 6404, 6394, 5547, - 0, 0, 6393, 6407, 6407, 6417, 6418, 6419,13962, 6412, - 0, 6415,13962, 6425, 6416, 6412, 6435,13962, 6420, 6428, - 6440, 5550, 6451, 6448, 6436, 6447, 6438,13962, 6440, 6453, + 6272, 5685, 6274, 6279, 6252, 5598, 6255, 6268, 6277, 6268, + 6272, 6284, 6299, 6294,14023, 6306, 6304, 6312, 6312, 6300, + 6315, 6303, 6306, 6307, 6306, 6306, 6310, 6314, 6315, 6324, + 6320, 6332, 6334, 6331, 6338, 6340, 6346, 6347, 5521, 6357, + 5507, 6355, 6344, 6360, 6354, 6357, 6366, 6359, 6359, 5350, + 6405,14023, 5342, 6409,14023, 6367, 6367, 6380, 0, 0, + 0, 6368, 6377, 6372, 6374, 6382, 6381, 6383, 6381, 6397, + 6433, 6386, 6400,14023, 6411, 6395, 6411, 6420, 6409, 5388, + 0, 0, 6404, 6420, 6419, 6431, 6433, 6431,14023, 6423, + 0, 6428,14023, 6436, 6427, 6423, 6446,14023, 6432, 6442, - 6489, 6460, 6468, 0, 6513, 1544, 6463, 5349, 6457, 6477, - 6480, 6467, 6469, 6479, 6483, 6488,13962, 6480, 6494, 6482, - 6491, 6497, 6500, 6502, 6506, 6496, 6490, 6506, 6504, 6506, - 6515, 5340, 5332, 6499, 6526, 6516, 6524, 6529, 6513, 6528, - 6535, 6539,13962, 6537, 6540, 6532, 6527, 6531, 6535,13962, - 6542, 6540, 6535,13962, 6541, 6547, 6557, 6551, 6550, 6560, - 6585, 6587,13962, 6557, 6571, 6569, 6579, 6580, 6582,13962, - 5280, 6599, 6645, 6646, 5234, 6606, 6625, 6647, 6598, 6665, - 6666, 6681, 652, 6685, 6704, 5169, 6612, 6622, 6599, 6588, - 6635,13962, 6650, 6654, 6649, 6655, 6653, 6654, 6656, 6660, + 6454, 6487, 6459, 6463, 6451, 6464, 6456,14023, 6457, 6469, + 6510, 6477, 6471, 0, 6529, 1544, 6469, 5336, 6467, 6486, + 6490, 6476, 6477, 6486, 6493, 6503,14023, 6496, 6510, 6498, + 6507, 6514, 6511, 6516, 6520, 6512, 6508, 6523, 6520, 6522, + 6531, 5332, 5331, 6514, 6533, 6523, 6532, 6541, 6527, 6542, + 6544, 6549,14023, 6546, 6548, 6539, 6537, 6546, 6551,14023, + 6558, 6556, 6551,14023, 6558, 6558, 6571, 6565, 6566, 6578, + 6602, 6603,14023, 6573, 6587, 6584, 6586, 6586, 6588,14023, + 5169, 6613, 6650, 6651, 5115, 6621, 6625, 6652, 6611, 6681, + 6682, 6690, 652, 6711, 6715, 5114, 6619, 6620, 6606, 6594, - 6670, 6673, 6681, 6677, 6674, 6686, 6691, 6693, 6683,13962, - 6701, 6698, 6704, 6705, 6691, 6711, 6710, 6697, 6700, 6719, - 6715, 6723, 6713,13962, 6711, 6728, 6715, 6731, 6731, 6737, - 13962, 6743,13962, 5169, 0, 6733, 6742, 6737, 6731, 6749, - 6738, 6752, 6744, 0, 0, 6751, 6756, 6745, 6765, 6764, - 6750, 6770,13962, 5156, 6768, 6761, 6772, 5115, 5933,13962, - 6767, 6757, 0, 6778, 6773, 6814, 6801, 6765, 6795, 6792, - 6775, 6844, 6800, 6805, 6787, 6807, 6792, 6818, 6822, 6817, - 0, 0, 6818, 6814, 6823, 1551, 4957, 1922, 6828, 6817, - 5525, 6818, 4955, 6855, 6834, 6839, 6826, 6829, 6848, 6839, + 6624,14023, 6640, 6665, 6655, 6662, 6661, 6664, 6664, 6673, + 6679, 6680, 6690, 6687, 6683, 6696, 6699, 6704, 6697,14023, + 6713, 6709, 6715, 6716, 6704, 6722, 6721, 6708, 6710, 6730, + 6726, 6734, 6723,14023, 6721, 6736, 6726, 6742, 6741, 6747, + 14023, 6754,14023, 5007, 0, 6744, 6754, 6748, 6742, 6761, + 6749, 6765, 5008, 6756, 0, 0, 6763, 6767, 6756, 6776, + 6777, 6761, 6781,14023, 4964, 6779, 6771, 6783, 4767, 6634, + 14023, 6778, 6768, 0, 6788, 6783, 6822, 6817, 6781, 6806, + 6806, 6788, 6850, 6812, 6816, 6803, 6825, 6807, 6829, 6835, + 6828, 0, 0, 6829, 6825, 6833, 1551, 4693, 2033, 6839, - 6852, 4912, 4749, 6845, 6853, 6850, 6854, 6857, 6881, 6866, - 6867, 6851, 6871, 6865, 6862, 6869, 6878, 6866, 6875, 6870, - 13962, 6877, 6870, 6881, 6878, 6897, 6882, 6887, 6885, 6893, - 6894, 6907, 6911, 6911, 6901, 6905, 6916, 6908, 6634, 6920, - 6908, 6908, 6907, 4709, 6932, 6984, 6959, 749, 6993, 6999, - 7018, 7019, 4718, 4592, 7000, 7003, 7006, 7007, 2301, 7037, - 942, 7066, 7067, 7078, 7086, 6963, 7097, 7098, 6981, 4618, - 4409, 6934,13962, 6940, 6929, 6932, 6967, 6988, 7000, 7021, - 7011, 4317, 7028, 7053,13962, 7064,13962, 7066,13962, 7071, - 7064, 7076,13962, 7079, 7071, 7084, 7080, 7081, 7082, 7072, + 6828, 6657, 6829, 4591, 6865, 6844, 6845, 6833, 6837, 6861, + 6854, 6865, 4585, 4359, 6857, 6868, 6862, 6870, 6871, 6895, + 6881, 6883, 6867, 6883, 6876, 6872, 6879, 6889, 6877, 6885, + 6881,14023, 6888, 6881, 6891, 6888, 6906, 6891, 6896, 6895, + 6906, 6908, 6922, 6924, 6924, 6915, 6917, 6932, 6922, 6958, + 6937, 6925, 6925, 6920, 4381, 6945, 6984, 6968, 749, 7002, + 7014, 7015, 7033, 4393, 4188, 6999, 7020, 7021, 7022, 2647, + 7053, 942, 7068, 7079, 7091, 7097, 7024, 7109, 7127, 6980, + 4232, 4174, 6943,14023, 6948, 6934, 6941, 6974, 7007, 7020, + 7024, 7016, 4158, 7034, 7048,14023, 7067,14023, 7070,14023, - 7089, 7080, 7085, 7088,13962,13962,13962, 7098, 7089,13962, - 7093, 7097, 7110, 7099, 7099, 7121,13962, 7105, 4225, 7114, - 7118, 7128, 7114, 7117, 4165, 7122,13962, 7129, 7128, 7129, - 0, 7181,13962,13962, 7126, 7136, 0, 7146, 7145, 7138, - 7145, 7142, 7165, 7145, 4043, 7154, 0, 7209, 7144, 7161, - 7162, 4035, 7179, 7164, 7186, 7181, 4025, 7183, 7193, 7186, - 3961, 2033, 3968, 7185, 7191,13962, 7023, 7182,13962, 7189, - 7190, 7183, 7191, 7197, 7207, 7212, 7202, 7218, 7214, 7210, - 7205, 7221, 7219, 7220,13962, 7220, 7219, 7241, 7227, 7227, - 7234, 7247, 7239, 7026, 7249, 7268, 7244,13962, 7237, 7240, + 7072, 7068, 7078,14023, 7082, 7073, 7086, 7084, 7085, 7088, + 7080, 7092, 7087, 7097, 7100,14023,14023,14023, 7114, 7104, + 14023, 7108, 7114, 7129, 7112, 7110, 7132,14023, 3935, 7116, + 3639, 7124, 7124, 7134, 7120, 7123, 3636, 7126,14023, 7133, + 7132, 7134, 0, 7203,14023,14023, 7131, 7144, 0, 7155, + 7154, 7149, 7155, 7154, 7181, 7156, 3621, 7170, 0, 0, + 7166, 7169, 7167, 3594, 7180, 7170, 7192, 7187, 3573, 7187, + 7197, 7190, 3518, 5020, 3549, 7189, 7195,14023, 7025, 7186, + 14023, 7192, 7194, 7184, 7194, 7200, 7214, 7219, 7213, 7237, + 7225, 7223, 7224, 7234, 7230, 7231,14023, 7231, 7229, 7247, - 7245,13962, 7246, 3778, 7260, 7268, 7256,13962, 7256, 7272, - 7275, 7263, 7276, 3802, 7263, 7266, 7289,13962, 7264, 7290, - 1445, 7338, 3649, 7313, 7055, 7295, 7349, 7353, 7364, 7379, - 3541, 7345, 7356, 3344, 7385, 7347, 7410, 7422,13962, 3521, - 7341, 7337, 7342, 3497, 7350, 3407, 7353, 3402, 7363, 7360, - 7376, 7374,13962, 7382, 7366, 7379, 7396, 7386, 7380, 7385, - 7390,13962, 7391, 7394, 7413, 7395,13962, 7418, 7416, 7407, - 7403, 7394, 7423, 7418, 7414,13962, 7425, 7431, 7421, 7429, - 7426, 7475, 7444, 3350,13962, 7442, 0, 0, 7482, 7438, - 7455, 3288, 7467, 7474, 7465, 7466, 7474, 7478, 7473, 7474, + 7233, 7233, 7240, 7251, 7243, 7271, 7254, 7277, 7248,14023, + 7241, 7243, 7250,14023, 7250, 3493, 7271, 7280, 7268,14023, + 7271, 7288, 7291, 7279, 7292, 3512, 7277, 7278, 7299,14023, + 7276, 7301, 1445, 7336, 3477, 7325, 7051, 7304, 7362, 7373, + 7374, 7385, 3515, 7354, 7359, 2200, 7394, 7383, 7403, 7432, + 14023, 3399, 7310, 7346, 7359, 3386, 7374, 3348, 7378, 3344, + 7382, 7376, 7390, 7380,14023, 7388, 7372, 7378, 7394, 7384, + 7383, 7385, 7390,14023, 7393, 7397, 7419, 7408,14023, 7428, + 7428, 7418, 7415, 7465, 7438, 7435, 3307, 7430,14023, 7440, + 7445, 7435, 7444, 7441, 7490, 7461, 3291,14023, 7460, 0, - 7482, 7497, 7491, 7477, 7496, 3282, 7489, 7492, 7482, 0, - 7487, 7493, 7507, 7509,13962, 7506, 7511, 7512, 2437, 7498, - 7493,13962, 7511, 7501, 7515,13962, 7516, 7527,13962, 7515, - 7528, 7529, 7531, 7524, 7529, 3164, 7535, 7536, 7544, 7540, - 3148, 7545, 7536, 7548, 7538,13962, 7550,13962, 7544,13962, - 13962, 7554,13962, 3087, 7589, 7558,13962, 7559,13962, 7552, - 7566, 7570, 7560, 7557, 7574, 7573,13962, 7571, 7589, 7589, - 7575, 7588, 7576, 7652, 7613, 3533, 7632, 7651, 7667, 7631, - 7671, 7690, 3924, 7705, 7711, 7585, 7627, 7627, 7640, 7631, - 3111, 7650, 7652, 7668,13962, 7654, 7665, 7679, 7687, 7686, + 0, 7516, 7448, 7448, 3209, 7460, 7469, 7463, 7476, 7489, + 7495, 7490, 7492, 7499, 7516, 7499, 7495, 7514, 3145, 7507, + 7511, 7501, 0, 7506, 7512, 7517, 7519,14023, 7516, 7523, + 7527, 5078, 7513, 7508,14023, 7526, 7516, 7530,14023, 7523, + 7534,14023, 7522, 7535, 7539, 7546, 7541, 7546, 3086, 7553, + 7553, 7552, 7558, 3031, 7563, 7554, 7567, 7557,14023, 7569, + 14023, 7563,14023,14023, 7564,14023, 2993, 7593, 7569,14023, + 7572,14023, 7568, 7582, 7586, 7577, 7574, 7591, 7581,14023, + 7578, 7599, 7604, 7590, 7606, 7592, 7662, 7629, 2947, 7673, + 7685, 7691, 7631, 7703, 7721, 2358, 7722, 7742, 7589, 7626, - 7688,13962,13962, 7697, 7698, 7684, 7685, 7701, 7703,13962, - 7736, 7700, 7710, 7715, 7703, 7700, 7712, 7710, 7709, 7764, - 7716, 7776, 7744, 3017, 7736, 7762, 0, 7750, 7758, 7769, - 7767, 7768, 7775, 7768, 7769, 7778, 7803, 2932, 7777, 7778, - 13962, 7771, 7782, 7783, 0, 7770, 7787, 7799, 2926, 7787, - 2922, 7799, 7810, 7815, 7795, 7743, 7802, 7805, 7805, 7800, - 2863, 7806, 7821, 7823, 7817, 7826, 2842,13962, 2776, 7818, - 7829, 7831, 7822,13962, 2764, 7818, 7838, 7839, 7851,13962, - 7827,13962, 7827, 7841, 7840, 7848, 7855, 7871, 7866, 7872, - 2711, 7862, 7875, 7864, 7876, 7880, 7875, 7939, 7901, 7940, + 7633, 7645, 7635, 3003, 7644, 7641, 7661,14023, 7662, 7667, + 7682, 7691, 7692, 7696,14023,14023, 7705, 7706, 7697, 7702, + 7720, 7722,14023, 7763, 7714, 7726, 7731, 7719, 7719, 7733, + 7731, 7730, 7785, 7735, 7795, 7762, 3007, 7751, 7777, 0, + 7756, 7767, 7792, 7789, 7790, 7798, 7789, 7790, 7799, 7816, + 2984, 7807, 7808,14023, 7801, 7812, 7813, 0, 7800, 7806, + 7817, 2966, 7802, 2933, 7805, 7819, 7828, 7808, 7319, 7815, + 7818, 7818, 7813, 2846, 7819, 7834, 7836, 7838, 7847, 2840, + 14023, 2787, 7839, 7850, 7852, 7843,14023, 2782, 7839, 7859, + 7869, 7860,14023, 7857,14023, 7858, 7871, 7870, 7867, 7873, - 7904, 7955, 7959, 7870, 7891, 7890, 7886, 7898, 2640,13962, - 7894,13962, 7932,13962, 7930, 7928, 7929, 7937, 7941,13962, - 7933, 7921, 7944, 7986, 7997, 7930, 7947, 7932, 7932, 7934, - 7943, 7948, 7995, 7995, 8024, 7996,13962, 8004, 8035, 8028, - 0, 8033, 8016, 8023, 8020, 8029, 8037, 8034, 8039,13962, - 2611, 7922, 7987, 8031, 8026, 7993, 8031, 8029, 8043, 2590, - 2580, 8062,13962, 8040,13962, 8060,13962, 8058,13962, 7977, - 2471, 8055, 8073, 8064, 8093, 8072, 8067, 8081, 8064, 8070, - 8067, 8082, 8069, 8085, 8084, 8083, 8086, 8095, 8076, 8101, - 8096, 8096,13962, 8091, 8099, 8108, 8105, 8112, 8151, 8118, + 7875, 7875, 7885, 2804, 7875, 7888, 7877, 7889, 7893, 7888, + 7952, 7914, 7953, 7469, 7968, 7972, 7891, 7913, 7926, 7920, + 7930, 2769,14023, 7911,14023, 7945,14023, 7943, 7941, 7942, + 7950, 7957,14023, 7948, 7480, 7960, 7999, 8010, 7946, 7964, + 7949, 7949, 8001, 8010, 8015, 8012, 8012, 8048, 8013,14023, + 8011, 8069, 8041, 0, 8046, 8029, 8036, 8033, 8055, 8063, + 8060, 8065,14023, 2746, 7786, 7935, 8057, 8052, 8000, 8057, + 8059, 8073, 2684, 2678, 8093,14023, 8060,14023, 8086,14023, + 8084,14023, 7329, 2563, 8081, 8089, 8087, 7759, 8094, 8089, + 8097, 8090, 8096, 8093, 8108, 8097, 8111, 8109, 8105, 8110, - 8118, 8131, 2445, 8131, 8134, 8171, 8135, 8137, 8144, 2449, - 8127,13962, 8151,13962,13962,13962, 8154,13962, 8139, 8199, - 2435, 8207, 8139, 8150, 8163, 8155, 8159, 8169, 8184,13962, - 8181, 8188,13962, 8245, 8199, 8201, 8200, 8205, 8248, 8217, - 8205, 8206, 8208, 0, 2413, 8188, 8283, 8229, 8241, 8289, - 8239, 8229, 8237, 2405, 2395, 8289, 8298, 8243,13962,13962, - 13962, 8252, 8261, 8258, 8281,13962, 8280, 8289, 8297, 8304, - 8285, 8302, 2298, 8290, 2234,13962, 8291,13962, 8305, 8306, - 8298, 8297, 8301,13962, 2283, 8308, 8302, 3139, 8310, 8304, - 8346, 8306, 8313, 8353, 0, 2230, 8341, 8343, 8358, 8360, + 8119, 8100, 8125, 8120, 8120,14023, 8115, 8125, 8127, 8122, + 8138, 5523, 8144, 8144, 8147, 2571, 8151, 8154, 8197, 8155, + 8157, 8164, 2497, 8141,14023, 8164,14023,14023,14023, 8169, + 14023, 8153, 8225, 2494, 8224, 8161, 8172, 8174, 8164, 8167, + 8201, 8210,14023, 8218, 8224,14023, 8250, 8245, 8246, 8233, + 8238, 8281, 8250, 8238, 8238, 8239, 0, 2453, 8010, 8058, + 8258, 8259, 8291, 8257, 8251, 8260, 2432, 2389, 8309, 8322, + 8254,14023,14023,14023, 8303, 8284, 8276, 8278,14023, 8288, + 8297, 8318, 8324, 8306, 8323, 2323, 8311, 2305,14023, 8312, + 14023, 8326, 8327, 8319, 8318, 8322,14023, 2354, 8331, 8325, - 2228, 8360, 8348, 7997, 8384, 8406, 8415,13962, 8365, 8369, - 8373, 2181, 8409, 8397, 8409, 8189, 8403, 8399, 8401,13962, - 8404, 8434, 8429, 8414, 8415, 8462, 8411, 2178, 8290, 0, - 2164, 8347, 0, 8413, 8414, 3353, 8437, 8436, 8431, 8483, - 8506, 8493,13962, 8444, 8484, 8480,13962, 8499, 2019, 8501, - 8505, 8489, 8493, 8496, 8497, 8496, 8510, 8495, 8495, 8496, - 8509, 8512, 8513,13962, 2051, 8512, 3280,13962, 3939, 8514, - 8549, 8526, 8542, 8543, 0, 0, 8561,13962, 8546, 8560, - 13962,13962, 8348, 8594, 8605, 8534, 8576, 8395, 8564, 8618, - 8396, 0, 8568, 8479, 8585, 8586, 8608, 8593, 8630, 8608, + 4327, 8333, 8327, 8369, 8339, 8346, 8376, 0, 2263, 8362, + 8364, 8379, 8381, 2251, 8381, 8369, 8006, 8407, 8427, 8436, + 14023, 8386, 8389, 8393, 2253, 8432, 8418, 8430, 8017, 8424, + 8420, 8422,14023, 8425, 8455, 8450, 8435, 8436, 8483, 8432, + 2237, 8298, 0, 2229, 8370, 0, 8434, 8435, 7426, 8458, + 8457, 8451, 8503, 8526, 8513,14023, 8465, 8503, 8499,14023, + 8519, 1998, 8521, 8525, 8509, 8513, 8516, 8517, 8516, 8530, + 8515, 8515, 8516, 8529, 8532, 8533,14023, 2050, 8533, 5114, + 14023, 5733, 8535, 8570, 8545, 8550, 8563, 0, 0, 8581, + 14023, 8566, 8580,14023,14023, 8500, 8614, 8625, 8554, 8597, - 8617,13962, 8644, 8627, 8626, 2048, 1852, 8634, 8635, 4366, - 1714, 6624, 8627, 8646, 8646, 8698, 8637, 8644, 8649,13962, - 8663, 8660, 8670, 8658, 8664, 8676, 8677, 8680, 8684, 8685, - 8457, 8472, 8681,13962, 8684,13962, 1711, 4360,13962, 4375, - 8703, 1630, 8686, 0, 8682,13962, 8690, 8595, 0, 8745, - 8765, 0,13962, 8690, 8608, 8696, 8670, 8609, 0, 0, - 8746, 0, 8711, 8705, 8710, 8722, 8732, 8736, 8785, 8735, - 8751,13962,13962, 8753, 8754, 8740, 8759, 1580, 6996, 1372, - 8752, 8743, 8745, 8745, 8746, 8748, 8744, 8756, 8766,13962, - 8763, 8787, 8778,13962, 8781, 8785,13962,13962, 8796, 8818, + 8059, 8586, 8640, 8231, 0, 8603, 8615, 8606, 8607, 8618, + 8613, 8650, 8628, 8637,14023, 8667, 8647, 8638, 1922, 1852, + 8656, 8659, 7736, 1714, 8227, 8647, 8666, 8666, 8719, 8658, + 8665, 8670,14023, 8684, 8681, 8687, 8672, 8678, 8695, 8696, + 8688, 8706, 8707, 7928, 7990, 8703,14023, 8705,14023, 1711, + 6826,14023, 8215, 8724, 1630, 8708, 0, 8703,14023, 8711, + 8629, 0, 8763, 8769, 0,14023, 8710, 8708, 8712, 8771, + 8709, 0, 0, 8770, 0, 8764, 8751, 8756, 8760, 8764, + 8765, 8786, 8764, 8780,14023,14023, 8782, 8783, 8769, 8788, + 1580, 8367, 1372, 8781, 8772, 8774, 8774, 8775, 8777, 8779, - 13962, 4779,13962, 8788,13962, 8792, 8799,13962, 1313, 8788, - 0, 8774, 0, 7323, 0, 1065, 8791, 8802, 8798, 8804, - 8799, 8802, 8808, 8845, 1060, 989, 8815, 8816, 7332, 8809, - 8817,13962, 8822, 8823,13962, 8826, 8826, 8826, 8832, 8833, - 8830, 8839, 885,13962,13962, 8849, 8841, 8856, 8861,13962, - 8844, 929, 0, 7634, 826, 7699,13962, 8846, 8851,13962, - 8854, 8854, 8860, 8855, 0, 8868, 8204, 8276, 832, 745, - 8859, 8860, 8874, 8860, 8875,13962, 670, 8875, 8871, 8875, - 8881, 8876, 8899, 580, 475, 8895, 8943,13962, 437, 8927, - 483, 8896, 8895, 8905,13962, 8896, 8905, 0, 8908, 8407, + 8790, 8800,14023, 8797, 8804, 8789,14023, 8788, 8792,14023, + 14023, 8803, 8607,14023, 8230,14023, 8808,14023, 8812, 8820, + 14023, 1313, 8807, 0, 8869, 0, 8853, 0, 1065, 8823, + 8834, 8831, 8838, 8833, 8836, 8841, 8876, 1060, 989, 8846, + 8851, 8875, 8844, 8851,14023, 8856, 8857,14023, 8860, 8857, + 8847, 8852, 8854, 8853, 8865, 885,14023,14023, 8873, 8865, + 8880, 8884,14023, 8877, 929, 0, 8890, 826, 8921,14023, + 8880, 8886,14023, 8890, 8890, 8896, 8891, 0, 8905, 8297, + 8375, 832, 745, 8895, 8899, 8911, 8897, 8913,14023, 670, + 8912, 8909, 8913, 8921, 8913, 8927, 580, 475, 8923, 8371, - 0, 8734, 0, 8946, 8947,13962, 8911,13962, 8911, 8924, - 8925,13962, 8917, 8920, 8934, 8917, 8936, 8946, 0, 367, - 8968, 8974, 8949, 8926, 382, 8930, 368,13962, 8947, 337, - 262, 8996, 0, 8997, 0,13962, 8957, 8957, 8950, 8954, - 8968, 8959, 8972, 8969, 8963, 8965, 8972, 0, 0, 0, - 254, 9015, 8974, 9028, 145, 9037, 9007,13962,13962, 138, - 109, 9009, 9009, 9003,13962,13962, 9010,13962, 9032, 9023, - 9027, 9029, 0, 43,13962, 9055, 9064, 9081, 9044,13962, - 13962, 9059, 9064, 9075,13962, 6, 9066, 9076,13962,13962, - 9108,13962,13962,13962, 9073,13962,13962, 9069, 9070, 9082, + 14023, 437, 8943, 483, 8926, 8924, 8930,14023, 8920, 8927, + 0, 8933, 8413, 0, 8414, 0, 8499, 8632,14023, 8937, + 14023, 8936, 8950, 8951,14023, 8944, 8946, 8960, 8943, 8962, + 8972, 0, 367, 8999, 9000, 8988, 8963, 382, 8961, 368, + 14023, 8979, 337, 262, 9020, 0, 9023, 0,14023, 8985, + 8987, 8979, 8985, 8994, 8984, 8996, 8992, 8986, 8989, 8995, + 0, 0, 0, 254, 9041, 8997, 9051, 145, 9060, 9033, + 14023,14023, 138, 109, 9034, 9033, 9046,14023,14023, 9034, + 14023, 9055, 9046, 9051, 9052, 0, 43,14023, 9078, 9087, + 9104, 9067,14023,14023, 9085, 9098, 9099,14023, 6, 9090, - 9079, 9072,13962, 9084, 9084, 9087,13962,13962, 9149, 9167, - 9185, 9203, 9221, 9239, 9257, 9275, 9293, 9311, 9329, 9347, - 9365, 9383, 9401, 9419, 9437, 9455, 9473, 9491, 9509, 9527, - 9545, 9563, 9581, 9599, 9617, 9635, 9653, 9671, 9689, 9707, - 9725, 9743, 9761, 9779, 9797, 9815, 9833, 9851, 9869, 9887, - 9905, 9923, 9941, 9959, 9977, 9995,10013,10031,10049,10067, - 10085,10103,10121,10139,10157,10175,10193,10210,10228,10246, - 10264,10282,10300,10317,10335,10353,10371,10389,10407,10425, - 10443,10461,10479,10497,10515,10533,10551,10569,10587,10605, - 10623,10641,10659,10677,10695,10713,10731,10748,10766,10784, + 9100,14023,14023, 9130,14023,14023,14023, 9097,14023,14023, + 9093, 9094, 9106, 9103, 9096,14023, 9108, 9109, 9111,14023, + 14023, 9173, 9191, 9209, 9227, 9245, 9263, 9281, 9299, 9317, + 9335, 9353, 9371, 9389, 9407, 9425, 9443, 9461, 9479, 9497, + 9515, 9533, 9551, 9569, 9587, 9605, 9623, 9641, 9659, 9677, + 9695, 9713, 9731, 9749, 9767, 9785, 9803, 9821, 9839, 9857, + 9875, 9893, 9911, 9929, 9947, 9965, 9983,10001,10019,10037, + 10055,10073,10091,10109,10127,10145,10163,10181,10199,10217, + 10234,10252,10270,10288,10306,10324,10341,10359,10377,10395, + 10413,10431,10449,10467,10485,10503,10521,10539,10557,10575, - 10802,10820,10838,10856,10874,10891,10909,10927,10945,10963, - 10981,10999,11017,11035,11053,11071,11089,11107,11125,11143, - 11161,11179,11197,11215,11232,11250,11268,11286,11304,11322, - 11340,11357,11375,11393,11411,11429,11447,11465,11483,11501, - 11519,11537,11555,11573,11591,11609,11627,11645,11663,11680, - 11698,11716,11734,11752,11770,11788,11806,11824,11842,11860, - 11871,11885,11903,11911,11927,11940,11944,11960,11978,11988, - 12004,12022,12040,12058,12075,12091,12109,12127,12145,12163, - 12181,12198,12214,12232,12241,12257,12275,12293,12311,12324, - 12332,12343,12359,12376,12394,12412,12430,12448,12466,12484, + 10593,10611,10629,10647,10665,10683,10701,10719,10737,10755, + 10772,10790,10808,10826,10844,10862,10880,10898,10915,10933, + 10951,10969,10987,11005,11023,11041,11059,11077,11095,11113, + 11131,11149,11167,11185,11203,11221,11239,11256,11274,11292, + 11310,11328,11346,11364,11381,11399,11417,11435,11453,11471, + 11489,11507,11525,11543,11561,11579,11597,11615,11633,11651, + 11669,11687,11704,11722,11740,11758,11776,11794,11812,11830, + 11848,11866,11884,11895,11909,11927,11935,11951,11964,11968, + 11984,12002,12012,12028,12046,12064,12082,12099,12115,12133, + 12151,12169,12187,12205,12222,12238,12256,12265,12281,12299, - 12502,12520,12538,12556,12566,12574,12582,12597,12608,12616, - 12624,12640,12656,12672,12689,12707,12725,12743,12761,12779, - 12797,12815,12833,12851,12869,12887,12905,12923,12941,12959, - 12972,12980,12988,12996,13007,13023,13039,13047,13055,13071, - 13089,13107,13125,13143,13161,13179,13197,13215,13233,13251, - 13269,13285,13301,13319,13337,13347,13363,13379,13392,13410, - 13427,13444,13461,13472,13488,13505,13522,13534,13550,13568, - 13586,13603,13621,13639,13655,13671,13688,13698,13714,13731, - 13749,13766,13784,13802,13819,13836,13854,13866,13882,13899, - 13916,13927,13943 + 12317,12335,12348,12356,12367,12383,12400,12418,12436,12454, + 12472,12490,12508,12526,12544,12562,12580,12590,12598,12606, + 12621,12632,12640,12648,12664,12680,12696,12713,12731,12749, + 12767,12785,12803,12821,12839,12857,12875,12893,12911,12929, + 12947,12965,12983,12996,13004,13012,13020,13031,13047,13063, + 13071,13079,13095,13113,13131,13149,13167,13185,13203,13221, + 13239,13257,13275,13293,13311,13327,13343,13361,13371,13382, + 13398,13408,13424,13440,13453,13471,13488,13505,13522,13533, + 13549,13566,13583,13595,13611,13629,13647,13664,13682,13700, + 13716,13732,13749,13759,13775,13792,13810,13827,13845,13863, + 13880,13897,13915,13927,13943,13960,13977,13988,14004 } ; -static const flex_int16_t yy_def[4194] = +static const flex_int16_t yy_def[4210] = { 0, - 3909, 3909, 3908, 3, 3910, 3910, 3, 3, 3911, 3911, - 3911, 3911, 3912, 3912, 3913, 3913, 3914, 3914, 3915, 3915, - 3916, 3916, 3910, 3910, 3910, 3910, 3917, 3917, 3918, 3918, - 3918, 3918, 3919, 3919, 3920, 3920, 3908, 37, 37, 37, - 3910, 3910, 3910, 3910, 3910, 3910, 3921, 3921, 3922, 3922, - 3923, 3923, 3924, 3924, 3925, 3925, 3926, 3926, 3927, 3927, - 3910, 3910, 3928, 3928, 3929, 3929, 3927, 3927, 3910, 3910, - 3930, 3930, 3931, 3931, 3908, 3908, 3908, 3908, 3908, 3908, - 3932, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3922, 3922, 3921, 3, 3923, 3923, 3, 3, 3924, 3924, + 3924, 3924, 3925, 3925, 3926, 3926, 3927, 3927, 3928, 3928, + 3929, 3929, 3923, 3923, 3923, 3923, 3930, 3930, 3931, 3931, + 3931, 3931, 3932, 3932, 3933, 3933, 3921, 37, 37, 37, + 3923, 3923, 3923, 3923, 3923, 3923, 3934, 3934, 3935, 3935, + 3936, 3936, 3937, 3937, 3938, 3938, 3939, 3939, 3940, 3940, + 3923, 3923, 3941, 3941, 3942, 3942, 3940, 3940, 3923, 3923, + 3943, 3943, 3944, 3944, 3921, 3921, 3921, 3921, 3921, 3921, + 3945, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 131, 3908, 3908, 3908, 3933, 3933, 3933, 3908, - 3908, 3933, 3934, 3934, 3934, 3908, 3935, 3934, 3936, 3936, - 3936, 3908, 3937, 3908, 3936, 3938, 3938, 3908, 3938, 3908, - 3908, 3939, 3908, 3908, 3908, 3939, 3940, 3939, 3941, 3941, - 3941, 3908, 3942, 3941, 3908, 3943, 3908, 3941, 3944, 3944, - 3944, 3908, 3945, 3944, 3946, 3946, 3946, 3908, 3908, 3946, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 131, 3921, 3921, 3921, 3946, 3946, 3946, 3921, + 3921, 3946, 3947, 3947, 3947, 3921, 3948, 3947, 3949, 3949, + 3949, 3921, 3950, 3921, 3949, 3951, 3951, 3921, 3951, 3921, + 3921, 3952, 3921, 3921, 3921, 3952, 3953, 3952, 3954, 3954, + 3954, 3921, 3955, 3954, 3921, 3956, 3921, 3954, 3957, 3957, + 3957, 3921, 3958, 3957, 3959, 3959, 3959, 3921, 3921, 3959, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3947, 3947, 3908, 3908, - 3947, 3948, 3948, 3908, 3949, 3948, 3908, 3950, 3951, 3952, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3953, 3908, 3954, 3953, 3908, 3908, 3908, 3955, 3908, 3956, - 3908, 3955, 3908, 3908, 3908, 3957, 3957, 3957, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3960, 3960, 3921, 3921, + 3960, 3961, 3961, 3921, 3962, 3961, 3921, 3963, 3964, 3965, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3966, 3921, 3967, 3966, 3921, 3921, 3921, 3968, 3921, 3969, + 3921, 3968, 3921, 3921, 3921, 3970, 3970, 3970, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3958, 3908, 3958, 3958, 3958, - 3908, 3908, 3958, 3958, 3958, 3959, 3908, 3960, 3959, 3959, - 3959, 3908, 3959, 3959, 3959, 3961, 3908, 3962, 3961, 3961, - 3961, 3908, 3961, 3961, 3961, 3963, 3963, 3908, 3963, 3908, - 3963, 3964, 3908, 3964, 3908, 3965, 3966, 3967, 3966, 3964, - 3968, 3908, 3969, 3968, 3968, 3968, 3968, 3908, 3968, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3971, 3921, 3971, 3971, 3971, + 3921, 3921, 3971, 3971, 3971, 3972, 3921, 3973, 3972, 3972, + 3972, 3921, 3972, 3972, 3972, 3974, 3921, 3975, 3974, 3974, + 3974, 3921, 3974, 3974, 3974, 3976, 3976, 3921, 3976, 3921, + 3976, 3977, 3921, 3977, 3921, 3978, 3979, 3980, 3979, 3977, + 3981, 3921, 3982, 3981, 3981, 3981, 3981, 3921, 3981, 3921, - 3970, 3971, 3972, 3971, 3973, 3971, 3908, 3908, 3968, 3968, - 3974, 3908, 3975, 3974, 3974, 3974, 3908, 3974, 3974, 3974, - 3976, 3908, 3976, 3976, 3908, 3976, 3908, 3908, 3976, 3976, - 3976, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3983, 3984, 3985, 3984, 3986, 3984, 3921, 3921, 3981, 3981, + 3987, 3921, 3988, 3987, 3987, 3987, 3921, 3987, 3987, 3987, + 3989, 3921, 3989, 3989, 3921, 3989, 3921, 3921, 3989, 3989, + 3989, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3977, 3908, 3977, 3908, 3908, 3977, - 3978, 3908, 3979, 3978, 3908, 3978, 3980, 3981, 3982, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3983, 3908, 3984, - 3983, 3908, 3983, 3908, 3985, 3908, 3986, 3985, 3908, 3985, - 3987, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3990, 3921, 3990, 3921, 3921, 3990, + 3991, 3921, 3992, 3991, 3921, 3991, 3993, 3994, 3995, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3996, 3921, 3997, + 3996, 3921, 3996, 3921, 3998, 3921, 3999, 3998, 3921, 3998, + 4000, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3988, - 3908, 3908, 3988, 3988, 3989, 3990, 3908, 3908, 3990, 3990, - 3991, 3992, 3908, 3908, 3992, 3992, 3908, 3908, 3993, 3994, - 3993, 3995, 3996, 3997, 3997, 3997, 3996, 3998, 3999, 3908, - 3908, 4000, 4001, 4000, 4002, 4000, 4003, 4004, 4004, 4004, - 4005, 4005, 4005, 4006, 4004, 3999, 3999, 4007, 4008, 3908, - 3908, 4008, 4008, 3908, 4009, 3908, 3908, 4009, 3908, 4009, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4001, + 3921, 3921, 4001, 4001, 4002, 4003, 3921, 3921, 4003, 4003, + 4004, 4005, 3921, 3921, 4005, 4005, 3921, 3921, 4006, 4007, + 4006, 4008, 4009, 4010, 4010, 4010, 4009, 4011, 4012, 3921, + 3921, 4013, 4014, 4013, 4015, 4013, 4016, 4017, 4017, 4017, + 4018, 4018, 4018, 4019, 4017, 4012, 4012, 4020, 4021, 3921, + 3921, 4021, 4021, 3921, 4022, 3921, 3921, 4022, 3921, 4022, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 4010, 3908, 3908, 4011, 4012, 3908, 3908, - 3908, 3908, 3908, 3908, 4013, 4014, 3908, 3908, 4015, 4016, - 3908, 3908, 4017, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 4023, 3921, 3921, 4024, 4025, 3921, 3921, + 3921, 3921, 3921, 3921, 4026, 4027, 3921, 3921, 4028, 4029, + 3921, 3921, 4030, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 4018, 3908, 4018, 4019, 3908, - 4019, 4020, 3908, 4020, 3908, 4021, 4022, 4022, 4022, 4023, - 4021, 4023, 4023, 3908, 4024, 3908, 3908, 4024, 3908, 3999, - 3908, 4025, 4025, 4025, 4026, 4027, 4026, 4026, 4028, 4029, - 4025, 4030, 4027, 4028, 4027, 4027, 3999, 4031, 3999, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 4031, 3921, 4031, 4032, + 3921, 4032, 4033, 3921, 4033, 3921, 4034, 4035, 4035, 4035, + 4036, 4034, 4036, 4036, 3921, 4037, 3921, 3921, 4037, 3921, + 4012, 3921, 4038, 4038, 4038, 4039, 4040, 4039, 4039, 4041, + 4042, 4038, 4043, 4040, 4041, 4040, 4040, 4012, 4044, 4012, - 4031, 3908, 4031, 4031, 4032, 3999, 4033, 3908, 4033, 4034, - 3908, 4034, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 4035, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 4036, 3908, 4037, 3908, 3908, 3908, + 3921, 4044, 3921, 4044, 4044, 4045, 4012, 4046, 3921, 4046, + 4047, 3921, 4047, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 4048, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 4049, 3921, 4050, 3921, 3921, - 3908, 3908, 4038, 3908, 4039, 3908, 4040, 4040, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4041, + 3921, 3921, 3921, 4051, 3921, 4052, 3921, 4053, 4053, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 4042, 3908, 4043, 4044, 4045, 4046, 3908, 4025, 4047, - 4047, 4047, 4028, 4025, 4027, 4028, 4027, 4048, 4027, 4049, - 4050, 4051, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4052, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 4035, 4053, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 4054, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 4054, 3921, 4055, 3921, 4056, 4057, 4058, 4059, 3921, + 4038, 4060, 4060, 4060, 4041, 4038, 4040, 4041, 4040, 4061, + 4040, 4062, 4063, 4064, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4065, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 4048, 4066, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4067, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 4055, 3908, 3908, 3908, 3908, 4056, 3908, 4057, 3908, - 4058, 4058, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 4068, 3921, 3921, 3921, 3921, 4069, 3921, + 4070, 3921, 4071, 4071, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 4044, 4045, 4044, 4045, 4047, 4027, 4047, - 4028, 4047, 4028, 4059, 4028, 4028, 4027, 4049, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4052, - 4060, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4061, 3908, - 3908, 4053, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 4054, 3908, 4054, 4062, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4058, 4058, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 4057, 4058, 4057, 4058, + 4060, 4040, 4060, 4041, 4060, 4041, 4072, 4041, 4041, 4040, + 4062, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 4065, 4073, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 4074, 3921, 3921, 4066, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4067, 3921, + 4067, 4075, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 4071, 4071, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 4047, 4028, 4048, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 4060, 4063, 4052, 4060, 3908, 3908, - 3908, 3908, 3908, 3908, 4064, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 4054, 3908, 4062, 3908, 3908, 3908, 4058, - 4065, 3908, 3908, 4066, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 4060, 4041, 4061, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4073, 4076, + 4065, 4073, 3921, 3921, 3921, 3921, 3921, 3921, 4077, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4067, 3921, 4075, + 3921, 3921, 3921, 4071, 4078, 3921, 3921, 4079, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4028, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 4041, 3921, 3921, 3921, 3921, 3921, - 4052, 4060, 3908, 4063, 4052, 3908, 4067, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 4054, 3908, 4058, 4068, 4069, - 3908, 3908, 4070, 4066, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 4065, 4073, 3921, 4076, 4065, + 3921, 4080, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 4067, 3921, 4071, 4081, 4082, 3921, 3921, 4083, 4079, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 4071, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 4060, 3908, 4063, 4063, 3908, 4067, 4072, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4084, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4073, 3921, + 4076, 4076, 3921, 4080, 4085, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 4073, 4068, 4068, 4069, 4069, 3908, 3908, 4070, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 4074, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 4075, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 4086, 4081, 4081, 4082, + 4082, 3921, 3921, 4083, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 4087, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4088, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4071, 4076, - 4071, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 4077, 3908, 4072, 4078, 4072, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4079, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 4084, 4089, 4084, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4090, 3921, + 4085, 4091, 4085, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 4080, 4081, 4068, 3908, 4068, - 4069, 4069, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4082, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 4074, 4083, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 4084, 3908, 3908, 3908, 3908, 4085, 4075, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 4092, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 4093, 4094, 4081, 3921, 4081, 4082, 4082, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4095, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4087, + 4096, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 4097, 3921, 3921, 3921, 3921, 4098, 4088, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 4071, 4076, 3908, 4076, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4077, 4086, - 4087, 3908, 4072, 4078, 3908, 4078, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 4084, 4089, 3921, 4089, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 4090, 4099, 4100, 3921, + 4085, 4091, 3921, 4091, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 4079, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4080, - 4088, 4081, 4089, 3908, 3908, 3908, 3908, 3908, 4090, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 4091, 4082, 4092, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 4083, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 4084, 3908, 3908, 3908, 3908, 4085, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 4092, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4093, 4101, 4094, + 4102, 3921, 3921, 3921, 3921, 3921, 4103, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 4104, 4095, 4105, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4096, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 4093, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4076, 3908, - 4071, 4076, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 4094, 4086, 4095, 4077, 4096, 4097, 4086, 4098, 3908, - 3908, 4099, 3908, 4100, 4099, 3908, 3908, 3908, 3908, 3908, + 4097, 3921, 3921, 3921, 3921, 4098, 3921, 3921, 3921, 3921, + 3921, 4106, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4089, 3921, 4084, + 4089, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 4107, 4099, 4108, 4090, 4109, 4110, 4099, 4111, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 4101, 4102, 3908, 4103, 4104, 3908, 3908, 3908, 3908, 4105, - 4106, 4107, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 4108, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4109, - 4110, 4111, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 4112, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 4112, 3921, 4113, 4112, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4114, + 4115, 3921, 4116, 4117, 3921, 3921, 3921, 3921, 4118, 4119, + 4120, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 4121, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4122, + 4123, 4124, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 4125, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 4113, 3908, 3908, 4114, 4114, 4115, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 4116, 4117, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 4118, 4119, 4120, 4121, 3908, 4122, 4123, 4119, 4124, 4125, - 4126, 4127, 4118, 4120, 4127, 4128, 4129, 4130, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 4126, 3921, 3921, 4127, 4127, 4128, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 4129, 4130, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 4131, 4132, 4133, 4134, 3921, 4135, 4136, 4132, 4137, 4138, + 4139, 4140, 4131, 4133, 4140, 4141, 4142, 4143, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 4131, 4132, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 4133, 4134, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 4135, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 4136, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 4137, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 4138, 4139, 3908, 3908, 3908, 4140, 3908, 4140, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 4144, 4145, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 4146, 4147, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 4148, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 4149, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 4150, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 4151, 4152, 3921, 3921, 3921, 4153, 3921, 4153, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4141, 3908, - 3908, 3908, 3908, 3908, 3908, 4120, 4142, 4118, 4143, 4120, - 4120, 4144, 3908, 3908, 4142, 4142, 4145, 4145, 4146, 4147, - 4128, 4147, 4147, 4148, 4148, 4118, 4149, 4149, 4150, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4154, + 3921, 3921, 3921, 3921, 3921, 3921, 4133, 4155, 4131, 4156, + 4133, 4133, 4157, 3921, 3921, 4155, 4155, 4158, 4158, 4159, + 4160, 4141, 4160, 4160, 4161, 4161, 4131, 4162, 4162, 4163, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4133, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 4151, 4152, 3908, 3908, 3908, 3908, 4153, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 4154, 4137, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 4138, 3908, 3908, 3908, - 3908, 4140, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4164, 3921, + 4146, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 4165, 4166, 3921, 3921, 3921, 3921, 4167, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4168, 4169, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4170, 3921, + 3921, 3921, 3921, 4153, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 4118, 4120, 3908, 4142, 4118, 4146, 4147, 4143, 4149, 4120, - 3908, 4145, 4142, 4128, 4147, 4128, 4155, 4147, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 4151, 4156, 4152, 3908, - 3908, 4153, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 4131, 4133, 3921, 4155, 4131, 4159, 4160, 4156, + 4162, 4133, 3921, 4158, 4155, 4141, 4160, 4141, 4171, 4160, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 4164, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4165, - 3908, 3908, 3908, 3908, 3908, 4154, 3908, 3908, 3908, 4157, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4140, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 4120, 4142, 4146, 4143, 4143, 4149, 4145, - 4147, 4155, 4128, 4147, 4155, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 4172, 4166, 3921, 3921, 4167, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4168, 3921, + 3921, 3921, 4173, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 4153, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 4133, 4155, 4159, 4156, + 4156, 4162, 4158, 4160, 4171, 4141, 4160, 4171, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 4158, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 4156, 3908, 3908, 4159, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 4157, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4120, 4142, 4155, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 4174, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 4172, 3921, 3921, 4175, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4173, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 4128, 4147, 4155, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 4159, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 4160, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4161, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 4133, 4155, 4171, 4141, 4160, 4171, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 4175, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 4176, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 4177, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 4155, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 4160, 4160, 4162, 4163, 3908, 3908, 3908, - 3908, 3908, 3908, 4161, 4161, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 4164, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4171, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 4176, 4176, 4178, 4179, + 3921, 3921, 3921, 3921, 3921, 3921, 4177, 4177, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4162, 4162, 4165, - 4163, 4163, 4166, 3908, 3908, 4167, 3908, 3908, 3908, 4161, - 4161, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 4164, 4168, 3908, 3908, 3908, 3908, - 3908, 3908, 4169, 4170, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 4171, 3908, 4172, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4180, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 4178, 4178, 4181, 4179, 4179, 4182, 3921, 3921, 4183, 3921, + 3921, 3921, 4177, 4177, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4180, 4184, 3921, + 3921, 3921, 3921, 3921, 3921, 4185, 4186, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 4165, 4166, 3908, 3908, 4167, - 3908, 4167, 3908, 3908, 3908, 4161, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 4168, 3908, 3908, 3908, 4169, 4173, 4170, - 4170, 4174, 3908, 3908, 4175, 3908, 3908, 3908, 4171, 4176, - 4172, 4177, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4167, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 4187, 3921, 4188, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4181, 4182, + 3921, 3921, 4183, 3921, 4183, 3921, 3921, 3921, 4177, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 4184, 3921, 3921, 3921, + 4185, 4189, 4186, 4186, 4190, 3921, 3921, 4191, 3921, 3921, + 3921, 4187, 4192, 4188, 4193, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 4183, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4173, 3908, - 4178, 4175, 4179, 4180, 4176, 4177, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4167, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 4178, 4179, 4180, 3908, 4180, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 4181, 3908, 4182, 4183, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4180, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4181, 3908, 4182, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 4189, 3921, 4194, 4191, 4195, 4196, 4192, 4193, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 4183, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 4194, 4195, 4196, 3921, 4196, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4197, 3921, 4198, + 4199, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 4184, 4183, 4185, 4186, 4187, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4188, 3908, - 3908, 4189, 4180, 3908, 3908, 3908, 3908, 3908, 3908, 4184, - 4185, 4186, 4190, 4187, 4191, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4188, 4192, 4193, - 4189, 4189, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 4190, - 4191, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 4192, 4193, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 4196, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 4197, 3921, 4198, 4200, 4199, 4201, 4202, 4203, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 4204, 3921, 3921, 4205, 4196, 3921, 3921, 3921, 3921, + 3921, 3921, 4200, 4201, 4202, 4206, 4203, 4207, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 4204, 4208, 4209, 4205, 4205, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 4206, 4207, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 4208, 4209, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 0, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 0, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908 + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921 } ; -static const flex_int16_t yy_nxt[14050] = +static const flex_int16_t yy_nxt[14111] = { 0, - 3908, 77, 78, 79, 77, 118, 80, 81, 118, 118, - 283, 284, 118, 3908, 82, 119, 120, 121, 119, 122, - 123, 3908, 129, 98, 124, 129, 130, 98, 125, 1387, - 83, 135, 84, 85, 3896, 269, 136, 86, 87, 88, - 315, 316, 98, 89, 90, 91, 135, 92, 93, 3890, - 131, 136, 94, 1106, 138, 139, 95, 138, 83, 872, + 3921, 77, 78, 79, 77, 118, 80, 81, 118, 118, + 283, 284, 118, 3921, 82, 119, 120, 121, 119, 122, + 123, 3921, 129, 98, 124, 129, 130, 98, 125, 1390, + 83, 135, 84, 85, 3909, 269, 136, 86, 87, 88, + 315, 316, 98, 89, 90, 91, 135, 92, 93, 3903, + 131, 136, 94, 1108, 138, 139, 95, 138, 83, 873, 84, 85, 140, 269, 141, 86, 87, 88, 256, 270, - 126, 89, 90, 91, 1388, 92, 93, 132, 283, 284, + 126, 89, 90, 91, 1391, 92, 93, 132, 283, 284, 94, 77, 78, 79, 77, 257, 80, 81, 129, 98, 256, 129, 130, 271, 82, 157, 158, 270, 157, 127, 96, 272, 129, 98, 233, 129, 130, 257, 234, 142, - 83, 235, 84, 85, 273, 3881, 131, 86, 87, 88, - 274, 271, 1007, 89, 90, 91, 275, 92, 93, 272, - 133, 280, 94, 526, 318, 527, 95, 318, 83, 1008, - 84, 85, 273, 132, 3880, 86, 87, 88, 274, 3877, + 83, 235, 84, 85, 273, 3894, 131, 86, 87, 88, + 274, 271, 1008, 89, 90, 91, 275, 92, 93, 272, + 133, 280, 94, 526, 318, 527, 95, 318, 83, 1009, + 84, 85, 273, 132, 3893, 86, 87, 88, 274, 3890, 159, 89, 90, 91, 275, 92, 93, 132, 236, 280, 94, 96, 97, 98, 96, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, @@ -1883,8 +1887,8 @@ static const flex_int16_t yy_nxt[14050] = 96, 106, 96, 107, 108, 109, 110, 111, 112, 113, 96, 114, 115, 96, 96, 96, 96, 117, 119, 120, 121, 119, 122, 123, 281, 129, 98, 124, 129, 130, - 3908, 125, 138, 139, 2281, 138, 144, 145, 3859, 144, - 140, 146, 141, 228, 147, 229, 144, 145, 2482, 144, + 3921, 125, 138, 139, 2289, 138, 144, 145, 3872, 144, + 140, 146, 141, 228, 147, 229, 144, 145, 2491, 144, 230, 146, 281, 133, 147, 150, 151, 347, 150, 347, 152, 150, 151, 153, 150, 526, 152, 527, 154, 153, @@ -1892,12 +1896,12 @@ static const flex_int16_t yy_nxt[14050] = 132, 489, 267, 569, 276, 180, 181, 142, 180, 289, 182, 148, 277, 183, 569, 163, 164, 231, 163, 282, 165, 148, 127, 96, 348, 166, 186, 187, 163, 188, - 155, 167, 276, 3858, 189, 278, 155, 289, 163, 164, + 155, 167, 276, 3871, 189, 278, 155, 289, 163, 164, 277, 163, 163, 165, 231, 290, 268, 347, 166, 347, 159, 163, 279, 645, 167, 490, 170, 171, 295, 170, - 184, 172, 3856, 278, 173, 163, 174, 301, 357, 175, - 168, 358, 176, 290, 170, 171, 3854, 170, 302, 172, - 279, 190, 173, 177, 174, 3849, 295, 175, 186, 187, + 184, 172, 3869, 278, 173, 163, 174, 301, 357, 175, + 168, 358, 176, 290, 170, 171, 3867, 170, 302, 172, + 279, 190, 173, 177, 174, 3862, 295, 175, 186, 187, 176, 188, 646, 168, 348, 301, 189, 474, 475, 163, 163, 177, 497, 498, 170, 171, 302, 170, 303, 172, @@ -1907,10 +1911,10 @@ static const flex_int16_t yy_nxt[14050] = 181, 176, 180, 190, 182, 313, 252, 183, 214, 215, 216, 217, 177, 191, 314, 214, 215, 216, 217, 178, 191, 191, 296, 351, 297, 226, 441, 487, 191, 441, - 487, 226, 488, 313, 254, 438, 439, 440, 438, 3756, - 178, 502, 314, 3791, 502, 503, 504, 283, 284, 286, + 487, 226, 488, 313, 254, 438, 439, 440, 438, 3769, + 178, 502, 314, 3804, 502, 503, 504, 283, 284, 286, - 296, 352, 297, 3819, 184, 191, 192, 193, 194, 192, + 296, 352, 297, 3832, 184, 191, 192, 193, 194, 192, 191, 195, 191, 191, 191, 191, 191, 191, 191, 196, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 197, 198, 199, 200, 201, @@ -1921,58 +1925,58 @@ static const flex_int16_t yy_nxt[14050] = 208, 209, 210, 191, 211, 191, 212, 191, 191, 191, 191, 191, 218, 219, 220, 221, 359, 222, 218, 219, - 220, 221, 369, 222, 218, 219, 220, 221, 3818, 222, + 220, 221, 369, 222, 218, 219, 220, 221, 3831, 222, 218, 219, 220, 221, 233, 222, 291, 252, 234, 242, 253, 235, 315, 316, 352, 252, 259, 242, 292, 260, 352, 261, 327, 259, 259, 327, 260, 557, 261, 252, 557, 259, 590, 318, 291, 590, 318, 223, 259, 422, 243, 242, 244, 223, 422, 259, 292, 395, 243, 223, - 244, 245, 246, 247, 248, 223, 2281, 254, 236, 245, + 244, 245, 246, 247, 248, 223, 2289, 254, 236, 245, 246, 247, 248, 242, 263, 264, 262, 263, 243, 619, 244, 414, 243, 262, 244, 400, 243, 265, 244, 245, 246, 247, 248, 245, 246, 247, 248, 245, 246, 247, - 248, 423, 287, 489, 243, 288, 244, 293, 2866, 400, + 248, 423, 287, 489, 243, 288, 244, 293, 2877, 400, 243, 298, 244, 306, 294, 245, 246, 247, 248, 428, - 304, 245, 246, 247, 248, 299, 620, 3811, 307, 265, + 304, 245, 246, 247, 248, 299, 620, 3824, 307, 265, 287, 300, 243, 288, 244, 293, 305, 308, 407, 298, - 408, 306, 294, 245, 246, 247, 248, 400, 304, 3805, + 408, 306, 294, 245, 246, 247, 248, 400, 304, 3818, 310, 584, 309, 299, 311, 312, 307, 490, 357, 300, - 446, 358, 584, 2281, 305, 308, 319, 320, 321, 319, + 446, 358, 584, 2289, 305, 308, 319, 320, 321, 319, 452, 322, 323, 320, 321, 323, 412, 324, 310, 413, 309, 398, 311, 312, 325, 321, 321, 325, 446, 326, 323, 320, 321, 323, 447, 324, 455, 342, 452, 349, - 343, 448, 349, 353, 354, 3025, 422, 347, 359, 347, + 343, 448, 349, 353, 354, 3037, 422, 347, 359, 347, 347, 422, 347, 449, 344, 345, 364, 365, 474, 475, 357, 320, 447, 358, 455, 342, 414, 320, 343, 448, - 360, 377, 378, 360, 377, 357, 3804, 412, 358, 321, + 360, 377, 378, 360, 377, 357, 3817, 412, 358, 321, 413, 449, 344, 345, 459, 320, 328, 329, 330, 331, 332, 333, 465, 334, 350, 472, 335, 355, 423, 662, 336, 367, 337, 338, 368, 339, 340, 341, 285, 367, - 363, 285, 459, 872, 328, 329, 330, 331, 332, 333, - 465, 334, 3791, 472, 335, 361, 379, 414, 336, 367, + 363, 285, 459, 873, 328, 329, 330, 331, 332, 333, + 465, 334, 3804, 472, 335, 361, 379, 414, 336, 367, 337, 338, 368, 339, 340, 341, 370, 367, 663, 370, 741, 367, 377, 378, 368, 377, 374, 375, 450, 367, - 367, 369, 873, 368, 377, 380, 381, 377, 367, 383, + 367, 369, 874, 368, 377, 380, 381, 377, 367, 383, 383, 451, 383, 427, 383, 383, 383, 473, 383, 347, - 383, 347, 383, 645, 637, 3788, 450, 637, 383, 369, - 392, 386, 3782, 393, 470, 394, 383, 471, 392, 451, - 441, 371, 383, 441, 742, 473, 2281, 379, 383, 388, - 373, 383, 392, 383, 868, 383, 383, 508, 383, 379, - 383, 388, 646, 453, 384, 471, 348, 1563, 383, 424, + 383, 347, 383, 645, 637, 3801, 450, 637, 383, 369, + 392, 386, 3795, 393, 470, 394, 383, 471, 392, 451, + 441, 371, 383, 441, 742, 473, 2289, 379, 383, 388, + 373, 383, 392, 383, 869, 383, 383, 508, 383, 379, + 383, 388, 646, 453, 384, 471, 348, 1567, 383, 424, 384, 396, 425, 454, 396, 383, 392, 422, 460, 393, - 395, 394, 383, 3768, 392, 509, 461, 392, 3036, 514, + 395, 394, 383, 3781, 392, 509, 461, 392, 3048, 514, 393, 453, 394, 383, 383, 392, 662, 625, 392, 383, 383, 454, 499, 389, 668, 499, 460, 500, 392, 392, - 390, 393, 1564, 394, 461, 391, 392, 509, 391, 401, - 392, 520, 870, 403, 426, 404, 397, 748, 405, 2257, - 392, 2258, 383, 388, 409, 410, 569, 395, 392, 383, + 390, 393, 1568, 394, 461, 391, 392, 509, 391, 401, + 392, 520, 871, 403, 426, 404, 397, 748, 405, 2265, + 392, 2266, 383, 388, 409, 410, 569, 395, 392, 383, 383, 393, 392, 394, 626, 415, 392, 569, 415, 520, - 412, 669, 521, 413, 3767, 419, 420, 501, 395, 412, - 392, 3757, 413, 659, 429, 430, 422, 497, 498, 442, + 412, 669, 521, 413, 3780, 419, 420, 501, 395, 412, + 392, 3770, 413, 659, 429, 430, 422, 497, 498, 442, 406, 422, 432, 433, 434, 432, 456, 522, 443, 466, 521, 749, 444, 467, 462, 435, 523, 445, 399, 468, @@ -1983,7 +1987,7 @@ static const flex_int16_t yy_nxt[14050] = 476, 477, 478, 476, 480, 477, 478, 481, 482, 483, 484, 482, 507, 485, 482, 483, 484, 491, 524, 485, 492, 493, 494, 492, 512, 495, 525, 513, 529, 531, - 507, 530, 538, 2259, 529, 2260, 529, 530, 510, 542, + 507, 530, 538, 2267, 529, 2268, 529, 530, 510, 542, 514, 674, 529, 543, 536, 514, 524, 537, 267, 536, 529, 267, 536, 544, 525, 436, 529, 534, 545, 436, @@ -1999,1427 +2003,1434 @@ static const flex_int16_t yy_nxt[14050] = 573, 574, 588, 589, 323, 327, 575, 323, 327, 324, 576, 579, 753, 582, 577, 325, 578, 583, 325, 585, - 326, 580, 581, 593, 594, 586, 587, 595, 598, 3750, - 588, 589, 319, 320, 321, 319, 887, 322, 323, 320, + 326, 580, 581, 593, 594, 586, 587, 595, 598, 3763, + 588, 589, 319, 320, 321, 319, 888, 322, 323, 320, 321, 323, 604, 324, 325, 321, 321, 325, 599, 326, 596, 593, 594, 597, 606, 595, 598, 605, 607, 754, - 265, 610, 600, 601, 602, 1323, 603, 611, 612, 614, - 604, 1113, 613, 615, 617, 608, 599, 682, 596, 618, - 609, 597, 606, 613, 986, 605, 607, 320, 3612, 610, + 265, 610, 600, 601, 602, 1326, 603, 611, 612, 614, + 604, 1115, 613, 615, 617, 608, 599, 682, 596, 618, + 609, 597, 606, 613, 987, 605, 607, 320, 3625, 610, 600, 601, 602, 320, 603, 611, 612, 614, 616, 321, - 613, 615, 617, 608, 889, 682, 349, 618, 609, 349, + 613, 615, 617, 608, 890, 682, 349, 618, 609, 349, 631, 613, 600, 601, 347, 367, 347, 353, 354, 621, 623, 355, 624, 623, 619, 347, 616, 347, 347, 347, - 347, 347, 357, 363, 360, 358, 627, 360, 987, 357, + 347, 347, 357, 363, 360, 358, 627, 360, 988, 357, 600, 601, 358, 364, 365, 357, 629, 757, 358, 629, 625, 357, 630, 683, 358, 367, 357, 632, 368, 358, - 2462, 350, 2463, 367, 373, 370, 622, 633, 370, 2281, + 2471, 350, 2472, 367, 373, 370, 622, 633, 370, 2289, 367, 620, 355, 368, 441, 348, 348, 441, 367, 374, 375, 683, 359, 628, 367, 635, 631, 368, 635, 361, 367, 367, 367, 368, 758, 363, 636, 626, 367, 684, 367, 359, 584, 368, 412, 369, 359, 413, 367, 377, - 378, 3025, 377, 584, 634, 377, 378, 685, 377, 650, + 378, 3037, 377, 584, 634, 377, 378, 685, 377, 650, 371, 377, 380, 381, 377, 377, 638, 684, 377, 383, - 383, 686, 383, 632, 373, 872, 383, 383, 399, 383, + 383, 686, 383, 632, 373, 873, 383, 383, 399, 383, 369, 383, 383, 392, 733, 685, 648, 733, 394, 383, 369, 392, 383, 640, 414, 383, 383, 383, 687, 686, - 2787, 419, 420, 383, 379, 640, 651, 2961, 668, 688, + 2798, 419, 420, 383, 379, 640, 651, 2973, 668, 688, 379, 735, 383, 388, 735, 383, 379, 383, 487, 383, 379, 487, 422, 488, 390, 388, 687, 422, 643, 383, 388, 384, 383, 649, 382, 383, 383, 688, 383, 383, - 383, 392, 388, 1317, 393, 643, 394, 641, 383, 392, + 383, 392, 388, 1320, 393, 643, 394, 641, 383, 392, - 2788, 429, 430, 383, 383, 669, 383, 2962, 674, 431, + 2799, 429, 430, 383, 383, 669, 383, 2974, 674, 431, 383, 383, 383, 392, 676, 392, 399, 389, 393, 399, - 394, 399, 689, 392, 423, 396, 642, 640, 396, 2257, - 392, 2258, 660, 393, 647, 394, 3680, 392, 392, 418, - 390, 395, 670, 399, 409, 410, 383, 388, 392, 805, - 689, 648, 392, 394, 392, 675, 392, 393, 3705, 394, - 805, 677, 392, 383, 388, 395, 315, 316, 431, 383, + 394, 399, 689, 392, 423, 396, 642, 640, 396, 2265, + 392, 2266, 660, 393, 647, 394, 3693, 392, 392, 418, + 390, 395, 670, 399, 409, 410, 383, 388, 392, 806, + 689, 648, 392, 394, 392, 675, 392, 393, 3718, 394, + 806, 677, 392, 383, 388, 395, 315, 316, 431, 383, 383, 406, 285, 676, 391, 285, 392, 391, 391, 392, - 397, 391, 653, 392, 654, 808, 403, 655, 404, 671, - 412, 405, 487, 413, 658, 487, 808, 488, 649, 661, + 397, 391, 653, 392, 654, 809, 403, 655, 404, 671, + 412, 405, 487, 413, 658, 487, 809, 488, 649, 661, - 399, 392, 693, 673, 399, 392, 868, 412, 391, 391, - 413, 391, 391, 392, 392, 3701, 403, 664, 404, 404, + 399, 392, 693, 673, 399, 392, 869, 412, 391, 391, + 413, 391, 391, 392, 392, 3714, 403, 664, 404, 404, 677, 405, 405, 415, 658, 658, 415, 427, 412, 656, - 693, 413, 1098, 406, 666, 392, 391, 666, 422, 392, + 693, 413, 1100, 406, 666, 392, 391, 666, 422, 392, 418, 667, 393, 422, 394, 392, 672, 392, 393, 672, 394, 412, 424, 392, 413, 425, 743, 414, 657, 743, - 422, 392, 391, 406, 665, 678, 1113, 392, 679, 680, - 3680, 422, 697, 422, 870, 698, 422, 699, 416, 620, + 422, 392, 391, 406, 665, 678, 1115, 392, 679, 680, + 3693, 422, 697, 422, 871, 698, 422, 699, 416, 620, 694, 432, 433, 434, 432, 438, 439, 440, 438, 395, 431, 695, 391, 391, 435, 395, 690, 700, 691, 701, 697, 414, 692, 698, 702, 699, 704, 426, 694, 705, 707, 706, 708, 710, 712, 703, 713, 715, 714, 695, 423, 716, 709, 423, 690, 700, 691, 701, 730, 731, - 692, 711, 702, 886, 704, 887, 436, 705, 707, 706, + 692, 711, 702, 887, 704, 888, 436, 705, 707, 706, 708, 710, 712, 703, 713, 715, 714, 732, 736, 716, - 709, 736, 502, 737, 1113, 502, 730, 731, 3673, 711, + 709, 736, 502, 737, 1115, 502, 730, 731, 3686, 711, 717, 718, 739, 719, 506, 739, 720, 740, 721, 506, 722, 723, 724, 761, 725, 732, 726, 727, 728, 729, 476, 477, 478, 476, 480, 477, 478, 480, 717, 718, 746, 719, 510, 746, 720, 747, 721, 755, 722, 723, - 724, 761, 725, 889, 726, 727, 728, 729, 480, 477, + 724, 761, 725, 890, 726, 727, 728, 729, 480, 477, 478, 481, 482, 483, 484, 482, 507, 485, 492, 493, - 494, 492, 1321, 495, 482, 483, 484, 491, 2961, 485, + 494, 492, 1324, 495, 482, 483, 484, 491, 3685, 485, 762, 492, 493, 494, 492, 436, 495, 499, 502, 436, 499, 502, 500, 750, 756, 506, 750, 763, 751, 512, - 506, 516, 513, 512, 759, 764, 513, 767, 762, 2129, - 2129, 529, 529, 436, 765, 530, 774, 486, 557, 529, - 529, 557, 775, 496, 529, 763, 533, 530, 2788, 486, + 506, 516, 513, 512, 759, 764, 513, 767, 762, 2136, + 2136, 529, 529, 436, 765, 530, 774, 486, 557, 529, + 529, 557, 775, 496, 529, 763, 533, 530, 1115, 486, 776, 777, 529, 764, 529, 536, 496, 771, 537, 540, - 536, 1750, 501, 536, 774, 778, 529, 510, 779, 514, + 536, 1102, 501, 536, 774, 778, 529, 510, 779, 514, 775, 760, 536, 516, 768, 769, 540, 536, 776, 777, 536, 766, 531, 780, 536, 781, 782, 537, 783, 536, - 784, 799, 536, 778, 533, 800, 779, 801, 802, 803, - 801, 804, 806, 807, 772, 538, 536, 590, 809, 3119, - 590, 780, 810, 781, 782, 266, 783, 811, 784, 799, - 812, 813, 770, 800, 3672, 3636, 802, 803, 814, 804, - 806, 807, 815, 816, 540, 785, 809, 786, 787, 817, - 810, 788, 789, 790, 818, 811, 3621, 791, 812, 813, - 792, 823, 793, 794, 795, 796, 814, 797, 798, 2788, - 815, 816, 824, 785, 825, 786, 787, 817, 819, 788, - - 789, 790, 818, 821, 822, 791, 826, 827, 792, 823, - 793, 794, 795, 796, 828, 797, 798, 820, 829, 830, - 824, 831, 825, 835, 834, 833, 819, 834, 836, 837, - 838, 821, 822, 839, 826, 827, 833, 840, 841, 832, - 842, 843, 828, 844, 845, 820, 829, 830, 846, 831, - 847, 835, 848, 849, 850, 851, 836, 837, 838, 852, - 853, 839, 854, 855, 351, 840, 841, 832, 842, 843, - 3908, 844, 845, 347, 357, 347, 846, 358, 847, 2127, - 848, 849, 850, 851, 3908, 3590, 623, 852, 853, 623, - 854, 855, 355, 1563, 347, 858, 347, 637, 858, 629, - - 637, 868, 629, 347, 357, 347, 861, 358, 1113, 861, - 367, 357, 865, 368, 358, 865, 383, 640, 367, 383, - 856, 383, 635, 864, 859, 635, 864, 367, 367, 640, - 368, 368, 866, 266, 877, 367, 367, 390, 1388, 2506, - 869, 348, 428, 383, 878, 914, 733, 645, 645, 733, - 348, 422, 383, 640, 359, 383, 422, 382, 3576, 392, - 862, 359, 393, 412, 394, 640, 413, 392, 866, 870, - 431, 641, 887, 914, 903, 886, 915, 369, 369, 383, - 916, 392, 662, 383, 388, 900, 874, 3564, 383, 383, - 388, 3557, 383, 399, 383, 901, 875, 917, 662, 643, - - 642, 640, 388, 910, 915, 643, 918, 871, 916, 880, - 383, 888, 2865, 907, 391, 879, 383, 391, 919, 392, - 1066, 904, 653, 399, 654, 917, 399, 655, 399, 2489, - 882, 1066, 920, 1113, 918, 922, 642, 640, 389, 884, - 889, 392, 923, 924, 647, 2259, 919, 2260, 391, 391, - 399, 391, 391, 392, 392, 3555, 653, 890, 654, 654, - 920, 655, 655, 922, 882, 882, 902, 876, 388, 656, - 923, 924, 1116, 383, 388, 392, 391, 925, 656, 678, - 590, 391, 679, 590, 391, 399, 392, 422, 399, 892, - 399, 893, 912, 976, 894, 913, 976, 895, 657, 3541, - - 422, 660, 926, 656, 891, 925, 885, 886, 392, 3540, - 391, 391, 399, 897, 391, 392, 392, 3445, 403, 403, - 404, 404, 735, 898, 405, 735, 658, 658, 927, 2462, - 926, 2463, 657, 657, 423, 428, 896, 392, 392, 3507, - 406, 391, 930, 2961, 897, 391, 392, 423, 391, 403, - 392, 404, 1703, 403, 898, 404, 927, 658, 405, 672, - 2506, 658, 672, 931, 412, 406, 659, 413, 392, 399, - 930, 666, 392, 3495, 666, 906, 392, 932, 906, 393, - 392, 394, 934, 393, 392, 394, 977, 736, 392, 977, - 736, 931, 737, 2962, 899, 391, 659, 1704, 392, 935, - - 905, 909, 392, 936, 909, 932, 412, 937, 928, 413, - 934, 938, 939, 940, 414, 929, 929, 929, 929, 929, - 929, 929, 929, 929, 941, 899, 395, 935, 3462, 391, - 395, 936, 942, 944, 945, 937, 950, 951, 952, 938, - 939, 940, 953, 954, 957, 955, 960, 946, 947, 956, - 948, 949, 941, 958, 963, 964, 414, 961, 965, 966, - 942, 944, 945, 969, 950, 951, 952, 962, 959, 975, - 953, 954, 957, 955, 960, 946, 947, 956, 948, 949, - 967, 958, 963, 964, 3456, 961, 965, 966, 970, 968, - 971, 969, 972, 508, 3455, 962, 959, 975, 978, 739, - - 506, 978, 739, 979, 740, 506, 980, 981, 967, 980, - 981, 743, 982, 999, 743, 3445, 970, 968, 971, 984, - 972, 510, 984, 746, 985, 1000, 746, 988, 747, 989, - 988, 1001, 989, 750, 990, 1002, 750, 992, 751, 993, - 992, 999, 993, 512, 994, 1009, 513, 529, 1010, 1011, - 530, 2506, 995, 1000, 1012, 529, 1013, 536, 1014, 1001, - 537, 1015, 536, 1002, 1016, 536, 1017, 1018, 801, 529, - 1019, 801, 1033, 1009, 1034, 834, 1010, 1011, 834, 536, - 1031, 1035, 1012, 1025, 1013, 1020, 1014, 1026, 1021, 1015, - 1028, 1027, 1016, 997, 1017, 1018, 1022, 1003, 1019, 1032, - - 1033, 1036, 1034, 1023, 1029, 1038, 1030, 1005, 1031, 1035, - 1024, 1025, 1040, 1020, 1043, 1026, 1021, 1037, 1028, 1027, - 1039, 1041, 1044, 1042, 1022, 1045, 1046, 1032, 1049, 1036, - 1050, 1023, 1029, 1038, 1030, 1052, 1053, 1046, 1024, 3399, - 1040, 1054, 1043, 1055, 1056, 1037, 1057, 1058, 1039, 1041, - 1044, 1042, 1060, 1045, 1061, 1062, 1049, 1063, 1050, 1064, - 1065, 1067, 1068, 1052, 1053, 1069, 1071, 1047, 1072, 1054, - 1073, 1055, 1056, 1075, 1057, 1058, 1076, 1077, 1078, 1079, - 1060, 1073, 1061, 1062, 1080, 1063, 1081, 1064, 1065, 1067, - 1068, 1082, 1074, 1069, 1071, 1083, 1072, 1084, 1085, 1086, - - 1087, 1075, 1088, 1090, 1076, 1077, 1078, 1079, 1091, 1092, - 1089, 1093, 1080, 1094, 1081, 1095, 1096, 1097, 1100, 1082, - 1074, 3384, 1099, 1083, 355, 1084, 1085, 1086, 1087, 1102, - 1088, 1090, 858, 3379, 367, 858, 1091, 1092, 1089, 1093, - 347, 1094, 347, 1095, 1096, 1097, 363, 861, 373, 1101, - 861, 1103, 357, 864, 865, 358, 864, 865, 367, 1108, - 390, 368, 1122, 390, 662, 626, 367, 383, 640, 622, - 383, 868, 383, 1105, 872, 1110, 632, 1104, 399, 868, - 640, 887, 418, 866, 662, 1123, 1124, 348, 383, 640, - 1126, 383, 392, 383, 383, 1107, 628, 394, 634, 3378, - - 392, 640, 359, 663, 866, 872, 651, 1127, 369, 669, - 976, 391, 1128, 976, 391, 383, 392, 1129, 1126, 653, - 3372, 1109, 641, 1120, 655, 1130, 3362, 882, 1131, 1111, - 3360, 834, 671, 675, 834, 1127, 3351, 887, 392, 870, - 1128, 431, 649, 871, 873, 1129, 1125, 870, 399, 889, - 1073, 642, 640, 1130, 391, 391, 1131, 391, 391, 392, - 392, 1073, 653, 653, 654, 1109, 656, 655, 655, 1132, - 882, 882, 642, 640, 399, 391, 1112, 399, 391, 399, - 392, 392, 392, 892, 392, 893, 428, 393, 894, 394, - 884, 895, 392, 677, 1200, 657, 912, 1132, 1136, 913, - - 1137, 399, 392, 1139, 422, 889, 392, 1113, 391, 883, - 883, 391, 977, 392, 1141, 977, 653, 399, 654, 1142, - 399, 655, 399, 3337, 882, 1453, 1136, 1143, 1137, 656, - 886, 1139, 1144, 1115, 395, 392, 1453, 1202, 657, 657, - 391, 754, 1141, 391, 399, 392, 1502, 1142, 892, 391, - 893, 423, 391, 894, 392, 1143, 895, 892, 886, 1117, - 1144, 391, 894, 1114, 391, 895, 392, 392, 1453, 1118, - 1145, 893, 896, 1146, 894, 392, 392, 895, 393, 1453, - 394, 1147, 909, 392, 758, 909, 391, 412, 391, 391, - 413, 392, 657, 1148, 1121, 896, 404, 392, 1145, 405, - - 889, 1146, 658, 1188, 896, 1149, 1188, 906, 1150, 1147, - 906, 1151, 392, 391, 1133, 393, 1119, 394, 1154, 1134, - 392, 1148, 2506, 978, 980, 395, 978, 980, 979, 1155, - 1156, 1135, 1157, 1149, 392, 1158, 1150, 414, 1159, 1151, - 1160, 665, 1133, 3567, 3279, 3568, 1154, 1134, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1155, 1156, 1135, - 1157, 1161, 395, 1158, 1162, 1163, 1159, 1164, 1160, 1165, - 391, 929, 929, 929, 929, 929, 929, 929, 929, 929, - 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1177, 1180, - 1175, 1181, 1162, 1163, 1176, 1164, 1178, 1165, 1182, 1179, - - 1183, 1184, 1185, 1187, 1189, 3271, 1204, 1189, 1166, 1167, - 1168, 1169, 1170, 1171, 1172, 1173, 1177, 1180, 1175, 1181, - 981, 3266, 1176, 981, 1178, 982, 1182, 1179, 1183, 1184, - 1185, 1187, 1190, 984, 1204, 1190, 984, 1191, 985, 1192, - 1193, 988, 1192, 1193, 988, 1194, 989, 1196, 1205, 989, - 1196, 990, 1197, 992, 1206, 1197, 992, 1198, 993, 1199, - 510, 993, 1199, 994, 516, 1201, 529, 1203, 1208, 1207, - 536, 1210, 1213, 1209, 529, 536, 1205, 1214, 536, 1215, - 1216, 1217, 1206, 1218, 3567, 1219, 3568, 533, 3241, 1220, - 540, 1221, 3227, 1222, 1223, 1224, 1225, 1230, 1233, 1234, - - 1213, 1226, 1227, 1228, 1229, 1214, 1231, 1215, 1216, 1217, - 1232, 1218, 756, 1219, 760, 768, 766, 1220, 772, 1221, - 770, 1222, 1223, 1224, 1225, 1230, 1233, 1234, 1235, 1226, - 1227, 1228, 1229, 1236, 1231, 1237, 1238, 1239, 1232, 1240, - 1241, 1242, 1245, 1248, 1246, 1243, 1250, 1244, 1247, 1251, - 1252, 1253, 1254, 1255, 3222, 1260, 1235, 1261, 2281, 3611, - 1249, 1236, 1264, 1237, 1238, 1239, 1265, 1240, 1241, 1242, - 1245, 1248, 1246, 1243, 1250, 1244, 1247, 1251, 1252, 1253, - 1254, 1255, 1256, 1260, 1266, 1261, 1257, 1262, 1249, 1267, - 1264, 1268, 1269, 1258, 1265, 1259, 1270, 1271, 1262, 1272, - - 3036, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 3612, - 1256, 1289, 1266, 2506, 1257, 1290, 1291, 1267, 2506, 1268, - 1269, 1258, 1292, 1259, 1270, 1271, 1293, 1272, 1263, 1274, - 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1289, - 1294, 1284, 1295, 1290, 1291, 1296, 1285, 1297, 1298, 1299, - 1292, 1300, 1286, 1301, 1293, 1302, 1287, 1303, 1288, 1304, - 1305, 1306, 1307, 1308, 1309, 1282, 1283, 1310, 1294, 1284, - 1295, 1311, 1312, 1296, 1285, 1297, 1298, 1299, 1313, 1300, - 1286, 1301, 351, 1302, 1287, 1303, 1288, 1304, 1305, 1306, - 1307, 1308, 1309, 1316, 1320, 1310, 868, 887, 428, 1311, - - 1312, 887, 383, 640, 887, 383, 1313, 383, 2506, 1329, - 355, 391, 1331, 1332, 391, 1314, 392, 1333, 866, 653, - 391, 654, 1746, 391, 1318, 392, 431, 882, 1324, 383, - 654, 1325, 1892, 655, 1328, 1334, 882, 1329, 392, 1113, - 1331, 1332, 662, 1322, 3178, 1333, 391, 391, 1335, 391, - 399, 392, 3033, 399, 892, 399, 1117, 641, 399, 894, - 399, 2489, 895, 1334, 1317, 1321, 656, 1388, 883, 889, - 1338, 1115, 889, 392, 1188, 891, 1335, 1188, 1326, 1885, - 391, 904, 399, 391, 1336, 392, 1315, 640, 892, 391, - 893, 1563, 391, 894, 392, 1319, 895, 892, 1338, 893, - - 1337, 886, 894, 399, 657, 895, 399, 392, 399, 1339, - 896, 1342, 1336, 1344, 1345, 1346, 392, 1189, 1190, 660, - 1189, 1190, 1390, 1191, 1886, 1390, 1347, 1348, 1337, 1350, - 399, 1351, 1353, 1354, 1355, 896, 1564, 1339, 1343, 1342, - 1356, 1344, 1345, 1346, 1327, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1347, 1348, 1357, 1350, 406, 1351, - 1353, 1354, 1355, 1358, 1319, 1359, 1361, 1362, 1356, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1363, 1364, - 1365, 1366, 1367, 1370, 1357, 1368, 1369, 399, 1371, 1372, - 1373, 1358, 1374, 1359, 1361, 1362, 1375, 1376, 1377, 1378, - - 1380, 1381, 1382, 1383, 1384, 3031, 1363, 1364, 1365, 1366, - 1367, 1370, 1192, 1368, 1369, 1192, 1371, 1372, 1373, 1391, - 1374, 508, 1391, 1395, 1375, 1376, 1377, 1378, 1380, 1381, - 1382, 1383, 1384, 1193, 1392, 1396, 1193, 1392, 1194, 1393, - 1196, 1197, 1394, 1196, 1197, 1394, 1198, 1199, 1397, 510, - 1199, 1395, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, - 1408, 1409, 1410, 1396, 1411, 1412, 1413, 1415, 1416, 1417, - 1418, 1419, 1414, 1420, 1421, 1422, 1397, 1423, 1424, 1425, - 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, - 1410, 1426, 1411, 1412, 1413, 1415, 1416, 1417, 1418, 1419, - - 1414, 1420, 1421, 1422, 1427, 1423, 1424, 1425, 1428, 1429, - 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1438, 1439, 1426, - 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1452, 1454, - 3167, 1437, 1427, 1455, 1456, 3158, 1428, 1429, 1430, 1431, - 1432, 1433, 1434, 1435, 1436, 1438, 1439, 1448, 1440, 1441, - 1442, 1443, 1444, 1445, 1446, 1447, 1452, 1454, 1449, 1437, - 1458, 1455, 1456, 1450, 1451, 1459, 1460, 1461, 1463, 1464, - 1465, 1466, 1468, 1470, 1471, 1448, 1472, 1473, 1475, 1476, - 1477, 1479, 1480, 1474, 1481, 1482, 1449, 1483, 1458, 1484, - 1485, 1450, 1451, 1459, 1460, 1461, 1463, 1464, 1465, 1466, - - 1468, 1470, 1471, 1486, 1472, 1473, 1475, 1476, 1477, 1479, - 1480, 1474, 1481, 1482, 1487, 1483, 1488, 1484, 1485, 1489, - 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, - 1500, 1486, 868, 887, 1504, 662, 1390, 1391, 2281, 1390, - 1391, 1507, 1487, 3638, 1488, 3639, 3908, 1489, 1490, 1491, - 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, - 391, 399, 1504, 391, 399, 392, 399, 887, 892, 1507, - 893, 869, 888, 894, 2788, 1508, 895, 884, 399, 1509, - 3301, 391, 1510, 1505, 391, 1506, 392, 392, 399, 1503, - 1511, 893, 1512, 1513, 894, 1514, 1519, 895, 1520, 1521, - - 870, 889, 659, 1508, 1522, 1523, 1112, 1509, 391, 1516, - 1510, 1505, 1516, 1506, 1516, 896, 656, 2963, 1511, 1517, - 1512, 1513, 1516, 1514, 1519, 1524, 1520, 1521, 1529, 1525, - 1530, 3115, 1522, 1523, 1532, 889, 1119, 1392, 1538, 3110, - 1392, 1567, 1393, 1394, 1567, 886, 1394, 3102, 1539, 1542, - 1543, 1544, 1545, 1524, 1546, 1547, 1529, 1548, 1530, 1527, - 1549, 1550, 1532, 1551, 1518, 1528, 1538, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1539, 1542, 1543, 1544, - 1545, 1552, 1546, 1547, 1553, 1548, 1554, 1527, 1549, 1550, - 1555, 1551, 1556, 1528, 1557, 1559, 1560, 1561, 1562, 1568, - - 1558, 1569, 1572, 1573, 1575, 1576, 1577, 1578, 1579, 1552, - 1580, 1581, 1553, 1582, 1554, 1583, 1584, 1588, 1555, 1589, - 1556, 1590, 1557, 1559, 1560, 1561, 1562, 1568, 1558, 1569, - 1572, 1573, 1575, 1576, 1577, 1578, 1579, 1585, 1580, 1581, - 1591, 1582, 1592, 1583, 1584, 1588, 1593, 1589, 1594, 1590, - 1586, 1595, 1596, 1597, 1601, 1587, 1602, 1603, 1604, 1598, - 1605, 1599, 1606, 1607, 1600, 1585, 1614, 1615, 1591, 3082, - 1592, 1616, 1617, 1618, 1593, 1619, 1594, 1620, 1586, 1595, - 1596, 1597, 1601, 1587, 1602, 1603, 1604, 1598, 1605, 1599, - 1606, 1607, 1600, 1608, 1614, 1615, 1621, 1609, 1622, 1616, - - 1617, 1618, 1623, 1619, 1610, 1620, 1611, 1612, 1624, 1613, - 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, - 1638, 1608, 1639, 1640, 1621, 1609, 1622, 1641, 1642, 1649, - 1623, 3076, 1610, 1650, 1611, 1612, 1624, 1613, 1625, 1626, - 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1638, 1651, - 1639, 1640, 1643, 1656, 1654, 1641, 1642, 1649, 1657, 1644, - 1658, 1650, 1652, 1659, 1653, 1654, 1660, 1645, 1661, 1662, - 1663, 1664, 1646, 1665, 1666, 1667, 1655, 1651, 1668, 1669, - 1643, 1656, 1670, 1673, 1671, 1674, 1657, 1644, 1658, 1672, - 1652, 1659, 1653, 1675, 1660, 1645, 1661, 1662, 1663, 1664, - - 1646, 1665, 1666, 1667, 1655, 1676, 1668, 1669, 1677, 1678, - 1670, 1673, 1671, 1674, 1679, 1680, 1681, 1672, 1682, 1683, - 1685, 1675, 1687, 1688, 1689, 1686, 887, 1691, 2506, 399, - 1690, 1692, 399, 1676, 399, 1684, 1677, 1678, 1113, 1693, - 1694, 1695, 1679, 1680, 1681, 1115, 1682, 1683, 1685, 399, - 1687, 1688, 1689, 1686, 1696, 1691, 399, 1697, 1698, 1692, - 1699, 1700, 1567, 1684, 3638, 1567, 3639, 1693, 1694, 1695, - 1516, 1706, 3678, 1516, 1709, 1516, 1710, 1326, 1711, 3702, - 1701, 3703, 1696, 1516, 896, 1697, 1698, 1516, 1699, 1700, - 1516, 1716, 1516, 883, 889, 1717, 1718, 1701, 1719, 1706, - - 1516, 1713, 1709, 1721, 1710, 1714, 1711, 1715, 1526, 1526, - 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1722, 1967, 1716, - 3039, 1967, 3679, 1717, 1718, 1702, 1719, 1725, 1726, 1713, - 1727, 1721, 1728, 1714, 1729, 1715, 1730, 1731, 1732, 1733, - 1734, 1735, 1518, 1736, 1737, 1722, 1723, 1723, 1723, 1723, - 1723, 1723, 1723, 1723, 1723, 1725, 1726, 1738, 1727, 1739, - 1728, 1740, 1729, 1741, 1730, 1731, 1732, 1733, 1734, 1735, - 1742, 1736, 1737, 1743, 1744, 1745, 1747, 1654, 1751, 1752, - 1755, 1756, 1757, 1758, 1761, 1738, 1759, 1739, 1654, 1740, - 1762, 1741, 1763, 1760, 1764, 1765, 1766, 1767, 1742, 1768, - - 1769, 1743, 1744, 1745, 1747, 1770, 1751, 1752, 1755, 1756, - 1757, 1758, 1761, 1771, 1759, 1772, 1773, 1774, 1762, 1775, - 1763, 1760, 1764, 1765, 1766, 1767, 1776, 1768, 1769, 1777, - 1778, 1779, 1780, 1770, 1781, 1782, 1783, 1784, 1785, 1786, - 1787, 1771, 1788, 1772, 1773, 1774, 1789, 1775, 1790, 1791, - 1792, 1793, 1794, 1795, 1776, 1796, 1797, 1777, 1778, 1779, - 1780, 1798, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1799, - 1788, 1800, 1801, 1802, 1789, 1803, 1790, 1791, 1792, 1793, - 1794, 1795, 1804, 1796, 1797, 1805, 1807, 1808, 1809, 1798, - 1810, 1811, 1812, 1813, 1814, 1815, 1805, 1799, 2060, 1800, - - 1801, 1802, 1816, 1803, 1817, 1818, 1819, 1821, 1822, 1823, - 1804, 1824, 1825, 1826, 1807, 1808, 1809, 1827, 1810, 1811, - 1812, 1813, 1814, 1815, 1839, 1840, 1806, 1837, 1828, 1892, - 1816, 1841, 1817, 1818, 1819, 1821, 1822, 1823, 1837, 1824, - 1825, 1826, 1842, 2061, 1843, 1827, 1844, 1845, 3031, 1846, - 1847, 1848, 1839, 1840, 1849, 1850, 1828, 1829, 1830, 1841, - 1851, 1831, 1852, 1832, 1853, 1854, 1855, 1833, 1834, 1856, - 1842, 1835, 1843, 1857, 1844, 1845, 1836, 1846, 1847, 1848, - 1858, 1859, 1849, 1850, 1860, 1829, 1830, 1861, 1851, 1831, - 1852, 1832, 1853, 1854, 1855, 1833, 1834, 1856, 1862, 1835, - - 1863, 1857, 1864, 1865, 1836, 1867, 1868, 1869, 1858, 1859, - 1870, 1871, 1860, 1872, 1874, 1861, 1866, 1875, 1876, 1877, - 1878, 1881, 1882, 1879, 1983, 1887, 1862, 1983, 1863, 2858, - 1864, 1865, 1890, 1867, 1868, 1869, 1880, 3018, 1870, 1871, - 1891, 1872, 1874, 1703, 1866, 1875, 1876, 1877, 1878, 1881, - 1882, 1879, 1516, 1887, 1893, 1516, 1894, 1516, 1895, 1896, - 1890, 1904, 1883, 1892, 1880, 1516, 1907, 1897, 1891, 1898, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1837, - 1908, 1900, 1893, 3702, 1894, 3703, 1895, 1896, 1704, 1904, - 1837, 1905, 1906, 1901, 1907, 1897, 1909, 1898, 1902, 1910, - - 1911, 1912, 1913, 1914, 1915, 1916, 2978, 1518, 1908, 1900, - 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1905, - 1906, 1901, 1923, 1920, 1909, 1917, 1902, 1910, 1911, 1912, - 1913, 1914, 1915, 1916, 1921, 1918, 1924, 1925, 1926, 1927, - 1928, 1929, 1930, 1922, 1936, 1937, 1919, 1939, 1940, 1941, - 1923, 1920, 1942, 1917, 1943, 1944, 1945, 1946, 1947, 1948, - 1949, 1950, 1921, 1918, 1924, 1925, 1926, 1927, 1928, 1929, - 1930, 1922, 1936, 1937, 1919, 1939, 1940, 1941, 1951, 1952, - 1942, 1954, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, - 1955, 1956, 1957, 1958, 1959, 1953, 1960, 1961, 1962, 1963, - - 1964, 1965, 1966, 1968, 1969, 1970, 1951, 1952, 1971, 1954, - 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1955, 1956, - 1957, 1958, 1959, 1953, 1960, 1961, 1962, 1963, 1964, 1965, - 1966, 1968, 1969, 1970, 1980, 1984, 1971, 1985, 1972, 1973, - 1974, 1975, 1976, 1977, 1978, 1979, 1981, 1986, 1989, 1987, - 1990, 1991, 1982, 1992, 1988, 1993, 1994, 1996, 1997, 1998, - 2001, 2002, 1980, 1984, 2003, 1985, 2004, 1994, 2005, 2977, - 1999, 2007, 2008, 2009, 1981, 1986, 1989, 1987, 1990, 1991, - 1982, 1992, 1988, 1993, 2000, 1996, 1997, 1998, 2001, 2002, - 2010, 2011, 2003, 2012, 2004, 2013, 2005, 1995, 1999, 2007, - - 2008, 2009, 2014, 2015, 2017, 2018, 2019, 2020, 2021, 2022, - 2023, 2029, 2968, 2963, 2030, 2031, 2032, 2016, 2010, 2011, - 2033, 2012, 2034, 2013, 2036, 2037, 2150, 2038, 2039, 2150, - 2014, 2015, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2029, - 2024, 2025, 2030, 2031, 2032, 2016, 2026, 2040, 2033, 2041, - 2034, 2042, 2036, 2037, 2027, 2038, 2039, 2028, 2043, 2044, - 2045, 2046, 2052, 2053, 2047, 2054, 2048, 2055, 2024, 2025, - 2049, 2056, 2057, 2190, 2026, 2040, 2062, 2041, 2063, 2042, - 2066, 2050, 2027, 2051, 2190, 2028, 2043, 2044, 2045, 2046, - 2052, 2053, 2047, 2054, 2048, 2055, 2067, 2068, 2049, 2056, - - 2057, 2047, 2069, 2048, 2062, 2064, 2063, 2049, 2066, 2050, - 2070, 2051, 2065, 2071, 1703, 2075, 2264, 2077, 2050, 2931, - 2058, 2078, 2079, 2080, 2067, 2068, 2081, 2083, 2082, 2047, - 2069, 2048, 2267, 2064, 1516, 2049, 2084, 1516, 2070, 1516, - 2065, 2071, 2085, 2086, 1701, 2077, 2050, 1516, 2058, 2078, - 2079, 2080, 2087, 2088, 2081, 2083, 2082, 2099, 2100, 1886, - 2076, 2265, 2927, 2101, 2084, 2102, 2103, 2104, 2105, 1967, - 2085, 2086, 1967, 2280, 2163, 2910, 2281, 2268, 2106, 2107, - 2087, 2088, 2108, 2281, 2403, 2099, 2100, 2403, 2111, 1702, - 2089, 2101, 2112, 2102, 2103, 2104, 2105, 2090, 2090, 2090, - - 2090, 2090, 2090, 2090, 2090, 2090, 2106, 2107, 2109, 2091, - 2108, 2092, 2093, 2094, 2113, 2110, 2111, 2095, 2114, 2115, - 2112, 2116, 2096, 2117, 2119, 2120, 2121, 2122, 2123, 2124, - 2125, 2097, 2133, 2135, 2118, 2561, 2109, 2091, 2561, 2092, - 2093, 2094, 2113, 2110, 2136, 2095, 2114, 2115, 2137, 2116, - 2096, 2117, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2097, - 2133, 2135, 2118, 2128, 2129, 2130, 2128, 2131, 2129, 2132, - 2131, 2138, 2136, 2139, 2140, 2141, 2137, 2142, 2143, 2144, - 2145, 2146, 2147, 2148, 2151, 2152, 2153, 2154, 2155, 2156, - 2853, 2157, 2158, 2159, 2281, 2160, 2161, 2164, 2165, 2138, - - 2166, 2139, 2140, 2141, 2167, 2142, 2143, 2144, 2145, 2146, - 2147, 2148, 2151, 2152, 2153, 2154, 2155, 2156, 1933, 2157, - 2158, 2159, 1935, 2160, 2161, 2164, 2165, 2168, 2166, 2169, - 2170, 2171, 2167, 2172, 2173, 2174, 2175, 2176, 2177, 2178, - 1983, 2181, 2182, 1983, 2183, 2179, 2184, 2185, 2186, 2187, - 2188, 2189, 2191, 2192, 2193, 2168, 2194, 2169, 2170, 2171, - 2195, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2196, 2181, - 2182, 2197, 2183, 2198, 2184, 2185, 2186, 2187, 2188, 2189, - 2191, 2192, 2193, 2199, 2194, 2200, 2201, 2409, 2195, 2814, - 2213, 2601, 2214, 2410, 2601, 2215, 2196, 2813, 2409, 2197, - - 2216, 2198, 2217, 2218, 2410, 2219, 2790, 2220, 2221, 2222, - 2223, 2199, 2224, 2200, 2201, 2202, 2203, 2204, 2213, 2205, - 2214, 2206, 2207, 2215, 2225, 2208, 2209, 2210, 2216, 2226, - 2217, 2218, 2211, 2219, 2212, 2220, 2221, 2222, 2223, 2227, - 2224, 2228, 2229, 2202, 2203, 2204, 2230, 2205, 2231, 2206, - 2207, 2232, 2225, 2208, 2209, 2210, 2233, 2226, 2234, 2235, - 2211, 2236, 2212, 2237, 2238, 2240, 2241, 2227, 2242, 2228, - 2229, 2243, 2246, 2247, 2230, 2248, 2231, 2249, 2250, 2232, - 2251, 2252, 2253, 2254, 2233, 2255, 2234, 2235, 2256, 2236, - 2261, 2237, 2238, 2240, 2241, 2262, 2242, 2263, 2264, 2243, - - 2246, 2247, 2269, 2248, 2270, 2249, 2250, 2271, 2251, 2252, - 2253, 2254, 2272, 2255, 2273, 2282, 2256, 2274, 2261, 2275, - 2276, 2277, 2278, 2262, 2285, 2263, 2282, 2287, 2288, 2289, - 2269, 2290, 2270, 2291, 2292, 2271, 2293, 2294, 2295, 2306, - 2272, 2966, 2273, 2061, 2296, 2274, 2297, 2275, 2276, 2277, - 2278, 2772, 2966, 2753, 2772, 2287, 2288, 2289, 2307, 2290, - 2283, 2291, 2292, 2343, 2293, 2294, 2295, 2306, 2308, 2286, - 2311, 2076, 2296, 2312, 2297, 2298, 2298, 2298, 2298, 2298, - 2298, 2298, 2298, 2298, 2313, 2315, 2307, 2299, 2309, 2300, - 2301, 2302, 2316, 2310, 2317, 2303, 2308, 2318, 2311, 2319, - - 2304, 2312, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2305, - 2129, 2130, 2313, 2315, 2341, 2299, 2309, 2300, 2301, 2302, - 2316, 2310, 2317, 2303, 2327, 2318, 2328, 2319, 2304, 2329, - 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2305, 2090, 2090, - 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2330, 2331, 2332, - 2333, 2334, 2327, 2335, 2328, 2336, 2337, 2329, 2338, 2339, - 2128, 2129, 2130, 2128, 1933, 2131, 2129, 2132, 2131, 2129, - 2132, 2344, 2345, 2346, 2347, 2330, 2331, 2332, 2333, 2334, - 2348, 2335, 2357, 2336, 2337, 2358, 2338, 2339, 2359, 2360, - 2361, 2362, 2369, 2363, 2364, 2722, 2720, 2365, 2366, 2344, - - 2345, 2346, 2347, 2371, 2150, 2372, 2373, 2150, 2348, 2367, - 2357, 2374, 2663, 2358, 2375, 1933, 2359, 2360, 2361, 2362, - 1935, 2363, 2364, 1935, 2349, 2365, 2366, 2495, 2376, 2370, - 2377, 2371, 2378, 2372, 2373, 2379, 2380, 2493, 3908, 2374, - 2350, 3908, 2375, 3908, 2382, 2383, 2384, 2385, 2386, 2387, - 2388, 2389, 2390, 2351, 2391, 2352, 2376, 2370, 2377, 2393, - 2378, 2394, 2395, 2379, 2380, 2353, 2396, 2354, 2355, 2356, - 2076, 2398, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, - 2390, 2351, 2391, 2352, 2399, 2400, 2401, 2393, 2402, 2394, - 2395, 2404, 2405, 2353, 2396, 2354, 2355, 2356, 3908, 2398, - - 2406, 3908, 2407, 3908, 2408, 2411, 2412, 2413, 2414, 2415, - 2418, 2419, 2399, 2400, 2401, 2416, 2402, 2420, 2421, 2404, - 2405, 2422, 2423, 2424, 2417, 2425, 2426, 2427, 2406, 2428, - 2407, 2430, 2408, 2411, 2412, 2413, 2414, 2415, 2418, 2419, - 2431, 2432, 2433, 2416, 2429, 2420, 2421, 2434, 2435, 2422, - 2423, 2424, 2436, 2425, 2426, 2427, 2437, 2428, 2438, 2430, - 2439, 2440, 2441, 2442, 2444, 2445, 2446, 2447, 2431, 2432, - 2433, 2448, 2429, 2449, 2450, 2434, 2435, 2451, 2453, 2454, - 2436, 2455, 2456, 2457, 2437, 2458, 2438, 2459, 2439, 2440, - 2441, 2442, 2444, 2445, 2446, 2447, 2460, 2461, 2464, 2448, - - 2465, 2449, 2450, 2466, 2468, 2451, 2453, 2454, 2471, 2455, - 2456, 2457, 2473, 2458, 2474, 2459, 2475, 2476, 2477, 2478, - 2479, 2491, 2480, 2481, 2460, 2461, 2464, 2494, 2465, 2281, - 2496, 2466, 2497, 2498, 2932, 2499, 2500, 2932, 2281, 2501, - 2473, 2502, 2474, 2503, 2475, 2476, 2477, 2478, 2479, 2469, - 2480, 2481, 2484, 2472, 2504, 2484, 2505, 2484, 2496, 2472, - 2497, 2498, 2485, 2499, 2500, 2486, 2492, 2501, 2507, 2502, - 2508, 2503, 2495, 2509, 2512, 2510, 2513, 2514, 2506, 2487, - 2511, 2515, 2504, 2516, 2505, 2298, 2298, 2298, 2298, 2298, - 2298, 2298, 2298, 2298, 2517, 2518, 2507, 2519, 2508, 2520, - - 2521, 2509, 2512, 2510, 2513, 2514, 2522, 2488, 2511, 2515, - 2523, 2516, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2532, - 2533, 2534, 2517, 2518, 2535, 2519, 2536, 2520, 2521, 2537, - 2538, 2539, 2540, 2546, 2522, 2547, 2542, 2543, 2523, 2542, - 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2532, 2533, 2534, - 2545, 2543, 2535, 2545, 2536, 2548, 2549, 2537, 2538, 2539, - 2540, 2546, 2553, 2547, 2554, 2556, 2557, 2558, 2559, 2560, - 2555, 2562, 2563, 2564, 2565, 2566, 2567, 2470, 2061, 2568, - 2569, 2573, 3908, 2548, 2549, 3908, 2574, 3908, 2575, 2576, - 2553, 2341, 2554, 2556, 2557, 2558, 2559, 2560, 2555, 2562, - - 2563, 2564, 2565, 2566, 2567, 2343, 2340, 2568, 2569, 2573, - 2577, 2578, 2579, 2580, 2574, 2582, 2575, 2576, 2584, 2585, - 2342, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, - 2595, 2596, 2597, 2599, 2600, 2602, 2603, 2660, 2577, 2578, - 2579, 2580, 2657, 2582, 2607, 2608, 2584, 2585, 2609, 2586, - 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, - 2597, 2599, 2600, 2602, 2603, 2605, 2610, 2611, 2605, 2612, - 2606, 2613, 2607, 2608, 2615, 2617, 2609, 2619, 2620, 2621, - 2622, 2623, 2624, 2625, 2627, 2628, 2617, 2629, 2636, 2630, - 2631, 2632, 2633, 2634, 2610, 2611, 2635, 2612, 2637, 2613, - - 2638, 2639, 2615, 2640, 2641, 2619, 2620, 2621, 2622, 2623, - 2624, 2625, 2627, 2628, 2642, 2629, 2618, 2630, 2631, 2632, - 2633, 2634, 2643, 2644, 2635, 2645, 2637, 2646, 2638, 2639, - 2647, 2640, 2641, 2648, 2649, 2650, 2651, 2652, 2653, 2654, - 2655, 2656, 2642, 2658, 2659, 2661, 2264, 2468, 2663, 2664, - 2643, 2644, 2665, 2645, 2666, 2646, 2667, 2668, 2647, 2669, - 2670, 2648, 2649, 2650, 2651, 2652, 2653, 2654, 2655, 2656, - 2626, 2658, 2659, 2687, 2282, 2281, 2663, 2664, 2675, 2491, - 2665, 2689, 2666, 2690, 2667, 2668, 2691, 2669, 2670, 2482, - 2472, 2662, 2472, 2484, 2484, 2676, 2484, 2484, 2484, 2484, - - 2616, 2614, 2484, 2672, 2679, 2484, 2486, 2484, 2692, 2689, - 2598, 2690, 2683, 1892, 2691, 2486, 2693, 2678, 2495, 2688, - 2673, 2680, 2694, 2677, 2495, 2484, 2695, 2696, 2484, 2684, - 2484, 2697, 2698, 2699, 2700, 2672, 2692, 2701, 2486, 2702, - 2703, 1892, 2704, 2705, 2693, 2706, 2707, 2708, 2674, 2681, - 2694, 2709, 2673, 2710, 2695, 2696, 2711, 2685, 2712, 2697, - 2698, 2699, 2700, 2713, 2714, 2701, 2715, 2702, 2703, 2716, - 2704, 2705, 2717, 2706, 2707, 2708, 2718, 2719, 2721, 2709, - 2488, 2710, 2723, 2724, 2711, 2725, 2712, 2726, 2727, 2728, - 2729, 2713, 2714, 2730, 2715, 2542, 2543, 2716, 2542, 2731, - - 2717, 2732, 2733, 2736, 2718, 2719, 2721, 2737, 2738, 2739, - 2723, 2724, 2740, 2725, 2741, 2726, 2727, 2728, 2729, 2545, - 2543, 2730, 2545, 2742, 2743, 2746, 2747, 2731, 2748, 2732, - 2733, 2736, 2749, 2750, 2751, 2737, 2738, 2739, 2561, 2752, - 2740, 2561, 2741, 2744, 2755, 2756, 2583, 2757, 2758, 2759, - 2341, 2742, 2743, 2746, 2747, 2760, 2748, 2761, 2764, 2762, - 2749, 2750, 2751, 2765, 2766, 2340, 2767, 2752, 2768, 2769, - 2770, 2771, 2755, 2756, 2343, 2757, 2758, 2759, 2775, 2776, - 2777, 2773, 2778, 2760, 2779, 2761, 2764, 2762, 2780, 2342, - 2601, 2765, 2766, 2601, 2767, 2781, 2768, 2769, 2770, 2771, - - 2774, 2783, 2784, 2785, 2789, 2791, 2775, 2776, 2777, 2773, - 2778, 2792, 2779, 2793, 2605, 2794, 2780, 2605, 2795, 2606, - 2796, 2797, 2798, 2799, 2800, 2801, 2802, 2803, 2774, 2783, - 2784, 2785, 2789, 2791, 2804, 2805, 2806, 2807, 2808, 2792, - 2809, 2793, 2810, 2794, 2811, 2812, 2795, 2815, 2796, 2797, - 2798, 2799, 2800, 2801, 2802, 2803, 2816, 2817, 2818, 2819, - 2820, 2821, 2804, 2805, 2806, 2807, 2808, 2822, 2809, 2823, - 2810, 2824, 2811, 2812, 2825, 2815, 2826, 2827, 2828, 2829, - 2830, 2831, 2832, 2833, 2816, 2817, 2818, 2819, 2820, 2821, - 2834, 2835, 2836, 2837, 2838, 2822, 2468, 2823, 2839, 2824, - - 2840, 2841, 2825, 2842, 2826, 2827, 2828, 2829, 2830, 2831, - 2832, 2833, 2843, 2281, 2844, 2581, 2845, 2854, 2834, 2835, - 2836, 2837, 2838, 2491, 2571, 2552, 2489, 2482, 2840, 2841, - 3678, 2842, 2550, 2869, 2855, 2870, 2857, 2871, 2343, 2341, - 2843, 2469, 2844, 2061, 2845, 2468, 2847, 2484, 2531, 2847, - 2484, 2847, 2484, 2676, 2859, 2678, 2848, 2852, 2488, 2849, - 2486, 2281, 2856, 2870, 2493, 2871, 2847, 2484, 2492, 2847, - 2484, 2847, 2484, 2850, 2673, 2482, 2861, 2864, 2076, 2849, - 3612, 2858, 2484, 2872, 2873, 2484, 2847, 2484, 2874, 2847, - 2268, 2847, 2683, 2862, 2680, 2486, 2848, 2875, 2876, 2849, - - 2877, 2851, 2488, 2878, 2076, 2484, 2879, 2880, 2484, 2684, - 2484, 2872, 2873, 2850, 2881, 2867, 2874, 2882, 2486, 2883, - 2884, 2863, 2865, 2885, 2886, 2875, 2876, 2887, 2877, 2888, - 2889, 2878, 2684, 2890, 2879, 2880, 2891, 2685, 2892, 2893, - 2894, 2851, 2881, 2895, 2896, 2882, 2897, 2883, 2884, 2898, - 2899, 2885, 2886, 2900, 2901, 2887, 2902, 2888, 2889, 2903, - 2868, 2890, 2904, 2905, 2891, 2906, 2892, 2893, 2894, 2907, - 2908, 2895, 2896, 2909, 2897, 2911, 2912, 2898, 2899, 2913, - 2914, 2900, 2901, 2915, 2902, 2916, 2917, 2903, 2918, 2920, - 2904, 2905, 2921, 2906, 2922, 2923, 2924, 2907, 2908, 2925, - - 2926, 2909, 2928, 2911, 2912, 2929, 2930, 2913, 2914, 2933, - 2934, 2915, 2935, 2916, 2917, 2936, 2918, 2920, 2937, 2943, - 2921, 2490, 2922, 2923, 2924, 2944, 2945, 2925, 2926, 2946, - 2928, 2939, 2949, 2929, 2930, 2950, 2951, 2933, 2934, 2940, - 2935, 2952, 2941, 2936, 2942, 2772, 2953, 2943, 2772, 2938, - 2947, 2954, 2955, 2944, 2945, 2956, 2958, 2946, 2959, 2939, - 2949, 2960, 2964, 2950, 2951, 2965, 2967, 2940, 2970, 2952, - 2941, 2969, 2942, 2971, 2953, 2972, 2973, 2938, 2974, 2954, - 2955, 2975, 2969, 2956, 2958, 2976, 2959, 2981, 2979, 2960, - 2964, 2982, 2983, 2965, 2967, 2984, 2970, 2985, 2986, 2987, - - 2988, 2971, 2980, 2972, 2973, 2989, 2974, 2990, 2985, 2975, - 2991, 2992, 2993, 2976, 2994, 2981, 2979, 2995, 2996, 2982, - 2983, 2997, 2998, 2984, 2999, 3000, 2986, 2987, 2988, 3001, - 3002, 3003, 3004, 2989, 3005, 2990, 3006, 3007, 2991, 2992, - 2993, 3008, 2994, 3009, 3010, 2995, 2996, 3011, 3012, 2997, - 2998, 3013, 2999, 3000, 3014, 3015, 3016, 3001, 3002, 3003, - 3004, 3017, 3005, 3019, 3006, 3007, 2489, 2470, 3040, 3008, - 3023, 3009, 3010, 3041, 2868, 3011, 3012, 2281, 3042, 3013, - 3043, 3020, 3014, 3015, 3016, 2847, 2061, 2855, 2847, 3017, - 2847, 3019, 2491, 2467, 2847, 3021, 3040, 2847, 2849, 2847, - - 2847, 3041, 3729, 2847, 3026, 2847, 3042, 2452, 3043, 3020, - 3021, 3023, 2850, 2849, 3032, 3024, 3044, 2675, 2675, 2847, - 2484, 3027, 2847, 2484, 2847, 2484, 3045, 2850, 2855, 3029, - 2672, 2855, 2849, 2486, 2676, 2676, 3046, 2286, 2847, 3122, - 3022, 2847, 3148, 2847, 3044, 2443, 2850, 2673, 3034, 3028, - 3122, 2849, 3612, 3148, 3045, 3022, 3024, 3047, 3048, 3033, - 3049, 2343, 2677, 2858, 3046, 2862, 3030, 2847, 2847, 2281, - 2847, 2847, 2847, 2847, 3030, 2674, 2341, 3034, 3037, 2484, - 2849, 2849, 2484, 3149, 2484, 3047, 3048, 2484, 3049, 2679, - 2484, 3050, 2484, 3035, 2862, 2862, 3051, 2679, 2484, 2484, - - 3052, 2484, 2484, 2484, 2484, 3053, 2680, 3054, 2683, 2683, - 3055, 2486, 2486, 3056, 2680, 3057, 3058, 3059, 3060, 3050, - 3061, 3062, 3035, 3038, 3051, 2684, 2684, 3063, 3052, 3064, - 3065, 3066, 3067, 3053, 2681, 3054, 3068, 3069, 3055, 3070, - 3071, 3056, 2865, 3057, 3058, 3059, 3060, 3072, 3061, 3062, - 3073, 3074, 3075, 2685, 2868, 3063, 3077, 3064, 3065, 3066, - 3067, 3078, 3079, 3080, 3068, 3069, 3081, 3070, 3071, 3083, - 3084, 3085, 3086, 3090, 3091, 3072, 3093, 3094, 3073, 3074, - 3075, 3095, 2932, 3096, 3077, 2932, 3097, 3088, 3101, 3078, - 3079, 3080, 3103, 3107, 3081, 3098, 3104, 3083, 3084, 3085, - - 3086, 3090, 3091, 3105, 3093, 3094, 3099, 3100, 3108, 3095, - 3908, 3096, 3109, 3908, 3097, 3908, 3101, 3111, 3112, 3113, - 3103, 3107, 3114, 3098, 3104, 3116, 3117, 3118, 3120, 3121, - 3123, 3105, 3124, 3125, 3099, 3100, 3108, 3126, 3127, 3128, - 3109, 3129, 3130, 3131, 3134, 3111, 3112, 3113, 3132, 3133, - 3114, 3135, 3136, 3116, 3117, 3118, 3120, 3121, 3123, 3137, - 3124, 3125, 3138, 3139, 3140, 3126, 3127, 3128, 3141, 3129, - 3130, 3131, 3134, 3142, 3143, 3144, 3132, 3133, 3145, 3135, - 3136, 3146, 3147, 3150, 3151, 3153, 3154, 3137, 3155, 3156, - 3138, 3139, 3140, 3157, 3159, 3151, 3141, 2245, 3160, 3161, - - 3162, 3142, 3143, 3144, 3163, 3164, 3145, 3165, 3166, 3146, - 3147, 3150, 3168, 3153, 3154, 3169, 3155, 3156, 3172, 3170, - 3173, 3157, 3159, 2489, 3175, 3152, 3160, 3161, 3162, 3755, - 2244, 2239, 3163, 3164, 3171, 3165, 3166, 2149, 3678, 2847, - 3168, 2855, 2847, 3169, 2847, 2134, 3172, 3170, 3173, 3174, - 2847, 3176, 2849, 2847, 2847, 2847, 2675, 2847, 3038, 2847, - 3034, 2281, 3171, 2849, 3177, 2484, 2850, 3023, 2484, 3033, - 2484, 1935, 3186, 2676, 3187, 2683, 3188, 2862, 2486, 3756, - 2847, 3027, 3189, 2847, 2855, 2847, 2847, 3190, 3679, 2847, - 3021, 2847, 2684, 2849, 3030, 3211, 3181, 3191, 3211, 2849, - - 3186, 3180, 3187, 3192, 3188, 3035, 3193, 2850, 1933, 3178, - 3189, 2484, 3033, 2862, 2484, 3190, 2484, 3194, 3195, 3196, - 3179, 3183, 2098, 2847, 2486, 3191, 2847, 3197, 2847, 3198, - 3199, 3192, 3200, 3034, 3193, 3030, 2849, 3201, 3184, 3202, - 3203, 3038, 3204, 3205, 3206, 3194, 3195, 3196, 3207, 3208, - 2862, 3209, 3210, 3212, 3213, 3197, 3214, 3198, 3199, 3215, - 3200, 3216, 3217, 3218, 3219, 3201, 3185, 3202, 3203, 2073, - 3204, 3205, 3206, 2072, 3221, 3223, 3207, 3208, 3038, 3209, - 3210, 3212, 3213, 3908, 3214, 3225, 3908, 3215, 3908, 3216, - 3217, 3218, 3219, 3220, 3220, 3220, 3220, 3220, 3220, 3220, - - 3220, 3220, 3221, 3223, 3226, 3228, 3229, 3230, 3231, 3232, - 3233, 3234, 3235, 3225, 3236, 3237, 3237, 3237, 3237, 3237, - 3237, 3237, 3237, 3237, 3238, 3239, 3240, 3242, 3243, 3244, - 3246, 3247, 3226, 3228, 3229, 3230, 3231, 3232, 3233, 3234, - 3235, 3248, 3236, 3249, 3250, 3251, 3252, 3253, 3254, 3255, - 3256, 3257, 3238, 3239, 3240, 3242, 3243, 3244, 3246, 3247, - 3258, 3259, 3260, 3261, 3262, 3263, 3264, 3265, 3267, 3248, - 3268, 3249, 3250, 3251, 3252, 3253, 3254, 3255, 3256, 3257, - 3269, 3270, 3272, 3273, 3274, 3275, 3276, 3277, 3258, 3259, - 3260, 3261, 3262, 3263, 3264, 3265, 3267, 3278, 3268, 3282, - - 3283, 3284, 3285, 3286, 3287, 3280, 3288, 3289, 3269, 3270, - 3272, 3273, 3274, 3275, 3276, 3277, 3280, 3290, 1886, 3291, - 3292, 3293, 3294, 3297, 3023, 3278, 3295, 3282, 3283, 3284, - 3285, 3286, 3287, 2847, 3288, 3289, 2847, 3296, 2847, 3304, - 3789, 2855, 3299, 3026, 2035, 3290, 3281, 3291, 3292, 3293, - 3294, 3297, 2847, 2847, 3295, 2847, 2847, 2847, 2847, 2676, - 3027, 3305, 3026, 3021, 3306, 3296, 2849, 3304, 2484, 3024, - 3307, 2484, 2847, 2484, 3308, 2847, 2006, 2847, 3298, 3027, - 2850, 2486, 3034, 3908, 1935, 2849, 3309, 2858, 3028, 3305, - 3790, 2484, 3306, 3310, 2484, 2684, 2484, 1933, 3307, 2862, - - 3311, 3183, 3308, 3312, 2486, 3789, 2847, 3178, 3022, 2847, - 3313, 2847, 2484, 3314, 3309, 2484, 2861, 2484, 3184, 2849, - 3315, 3310, 3302, 2868, 3316, 2486, 3317, 3035, 3311, 3318, - 3319, 3312, 3320, 2862, 3321, 3322, 3323, 3211, 3313, 3184, - 3211, 3314, 3324, 3326, 3327, 3328, 3300, 3329, 3315, 3330, - 3331, 3332, 3316, 3333, 3317, 3756, 1931, 3318, 3319, 3367, - 3320, 2863, 3321, 3322, 3323, 3334, 3339, 3303, 1903, 1899, - 3367, 3326, 3327, 3328, 1889, 3329, 3336, 3330, 3331, 3332, - 3338, 3333, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, - 3220, 3342, 3343, 3334, 3335, 3335, 3335, 3335, 3335, 3335, - - 3335, 3335, 3335, 3344, 3336, 3345, 3346, 3347, 3338, 3340, - 3348, 3349, 3350, 3352, 3353, 3354, 3355, 3356, 3357, 3342, - 3343, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, - 3358, 3344, 3359, 3345, 3346, 3347, 3361, 3340, 3348, 3349, - 3350, 3352, 3353, 3354, 3355, 3356, 3357, 3363, 3364, 3365, - 3366, 3368, 3369, 3370, 3371, 3373, 3374, 3375, 3358, 3376, - 3359, 3377, 3380, 3381, 3361, 3382, 3383, 3385, 3386, 3387, - 3390, 3391, 1518, 3392, 3393, 3363, 3364, 3365, 3366, 3368, - 3369, 3370, 3371, 3373, 3374, 3375, 3394, 3376, 3395, 3377, - 3380, 3381, 3388, 3382, 3383, 3385, 3386, 3387, 3390, 3391, - - 3389, 3392, 3393, 3396, 3397, 3398, 3400, 3401, 3402, 3403, - 3404, 3405, 3023, 1884, 3394, 3303, 3395, 1705, 2281, 3407, - 3388, 3408, 3420, 3446, 3409, 3420, 3446, 3410, 3389, 2855, - 3411, 3396, 3397, 3398, 3400, 3401, 3402, 3403, 3404, 3405, - 2847, 2484, 1873, 2847, 2484, 2847, 2484, 3407, 3412, 3408, - 3021, 3406, 3409, 2849, 2486, 3410, 2847, 2856, 3411, 2847, - 2484, 2847, 3413, 2484, 3414, 2484, 3034, 2850, 3184, 2849, - 3183, 3415, 3416, 2486, 3417, 3418, 3412, 3419, 3421, 3423, - 3424, 3425, 3426, 2862, 3427, 3428, 3429, 3184, 3447, 1838, - 3413, 3447, 3414, 3461, 3450, 2851, 3303, 3450, 3583, 3415, - - 3416, 3584, 3417, 3418, 3461, 3419, 3421, 3423, 3424, 3425, - 3426, 2863, 3427, 3428, 3429, 3303, 3422, 3422, 3422, 3422, - 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3325, 3325, 3325, - 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3430, 3431, - 3432, 3422, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, - 3335, 3433, 3325, 3434, 3434, 3434, 3434, 3434, 3434, 3434, - 3434, 3434, 3435, 3436, 3437, 3438, 3430, 3431, 3432, 3439, - 3440, 3441, 3442, 3443, 3448, 3449, 3451, 3452, 3453, 3433, - 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3458, - 3435, 3436, 3437, 3438, 3459, 3460, 3463, 3439, 3440, 3441, - - 3442, 3443, 3448, 3449, 3451, 3452, 3453, 3464, 3465, 3466, - 3467, 3468, 3472, 3473, 3474, 3475, 3476, 3458, 3469, 3477, - 3466, 3478, 3459, 3460, 3463, 3479, 3470, 3471, 3480, 3481, - 3482, 3483, 3484, 3485, 3486, 3464, 3465, 3487, 3467, 3468, - 3472, 3473, 3474, 3475, 3476, 3488, 3469, 3477, 3489, 3478, - 3490, 3492, 3493, 3479, 3470, 3471, 3480, 3481, 3482, 3483, - 3484, 3485, 3486, 3494, 3491, 3487, 3491, 3496, 3497, 3498, - 3499, 1820, 2484, 3488, 3500, 2484, 3489, 2484, 3490, 3492, - 3493, 3501, 3183, 3502, 3503, 2486, 3504, 3509, 3510, 3529, - 3594, 3494, 3529, 3594, 3530, 3496, 3497, 3498, 3499, 3184, - - 3420, 3511, 3500, 3420, 3512, 3505, 3513, 3514, 3767, 3501, - 3801, 3502, 3503, 3508, 3504, 3509, 3510, 3506, 3506, 3506, - 3506, 3506, 3506, 3506, 3506, 3506, 3515, 3300, 3516, 3511, - 3517, 3518, 3512, 3519, 3513, 3514, 3491, 3422, 3422, 3422, - 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3520, 3521, - 1753, 3524, 3522, 3525, 3515, 3526, 3516, 3527, 3517, 3518, - 3534, 3519, 3422, 3434, 3434, 3434, 3434, 3434, 3434, 3434, - 3434, 3434, 3535, 3537, 3538, 3539, 3520, 3521, 3523, 3524, - 3768, 3525, 3803, 3526, 3532, 3527, 1748, 3532, 3534, 3533, - 3450, 3529, 1388, 3450, 3529, 3536, 3530, 3543, 3544, 3546, - - 3535, 3537, 3538, 3539, 3545, 3547, 3523, 3542, 3542, 3542, - 3542, 3542, 3542, 3542, 3542, 3542, 3457, 3457, 3457, 3457, - 3457, 3457, 3457, 3457, 3457, 3543, 3544, 3546, 3548, 3549, - 3550, 3551, 3545, 3547, 3552, 3553, 3554, 3556, 3558, 3559, - 3560, 3561, 3562, 3563, 3565, 3566, 3569, 3570, 3532, 3583, - 1565, 3532, 3583, 3533, 3649, 1724, 3548, 3549, 3550, 3551, - 3572, 3573, 3552, 3553, 3554, 3556, 3558, 3559, 3560, 3561, - 3562, 3563, 3565, 3566, 3569, 3570, 3571, 3571, 3571, 3571, - 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3574, 3572, 3573, - 3577, 3578, 3579, 3580, 3581, 3582, 3655, 3658, 1720, 3655, - - 3658, 3571, 3585, 3585, 3585, 3585, 3585, 3585, 3585, 3585, - 3585, 3908, 1708, 3908, 3587, 3574, 3588, 3589, 3577, 3578, - 3579, 3580, 3581, 3582, 3506, 3506, 3506, 3506, 3506, 3506, - 3506, 3506, 3506, 3586, 3586, 3586, 3586, 3586, 3586, 3586, - 3586, 3586, 3587, 3591, 3588, 3589, 3592, 3593, 3595, 3596, - 3597, 3598, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, - 3599, 3600, 3601, 3602, 1707, 3605, 3603, 3608, 3609, 3613, - 3614, 3591, 3615, 3697, 3592, 3593, 3595, 3596, 3597, 3598, - 3594, 1705, 1648, 3594, 3697, 3662, 1647, 3540, 3698, 3600, - 3601, 3602, 3604, 3605, 3617, 3608, 3609, 3613, 3614, 3698, - - 3615, 3616, 3616, 3616, 3616, 3616, 3616, 3616, 3616, 3616, - 3541, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - 3604, 3618, 3617, 3619, 3616, 3616, 3616, 3616, 3616, 3616, - 3616, 3616, 3616, 3620, 3622, 3623, 3624, 3625, 3626, 3627, - 3628, 3629, 3630, 3631, 3632, 3633, 3634, 3635, 3637, 3618, - 3640, 3619, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, - 3586, 3620, 3622, 3623, 3624, 3625, 3626, 3627, 3628, 3629, - 3630, 3631, 3632, 3633, 3634, 3635, 3637, 3641, 3640, 3571, - 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, - 3642, 3643, 3645, 3646, 3647, 3651, 3908, 3652, 3651, 3908, - - 3649, 3908, 1637, 1636, 3571, 3641, 3654, 3656, 3652, 3655, - 3658, 3653, 3655, 3658, 3711, 3714, 1635, 3660, 3642, 3643, - 3645, 3646, 3647, 3585, 3585, 3585, 3585, 3585, 3585, 3585, - 3585, 3585, 3663, 3664, 3654, 3656, 3657, 3657, 3657, 3657, - 3657, 3657, 3657, 3657, 3657, 3660, 3665, 3666, 3599, 3599, - 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3667, 3668, 3670, - 3663, 3664, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, - 3669, 3671, 3674, 3675, 3665, 3666, 3681, 3676, 3682, 3648, - 3683, 3684, 3685, 3686, 3677, 3667, 3668, 3670, 3657, 3657, - 3657, 3657, 3657, 3657, 3657, 3657, 3657, 3687, 3688, 3671, - - 3674, 3675, 3540, 3689, 3681, 3676, 3682, 3690, 3683, 3684, - 3685, 3686, 3677, 3691, 3692, 3693, 3616, 3616, 3616, 3616, - 3616, 3616, 3616, 3616, 3616, 3687, 3688, 3694, 3695, 3696, - 3699, 3689, 3700, 3704, 3706, 3690, 3707, 3708, 3908, 3710, - 3908, 3691, 3692, 3693, 3713, 3717, 3652, 3908, 3652, 3652, - 3908, 3908, 3908, 3718, 3719, 3694, 3695, 3696, 3699, 3652, - 3700, 3704, 3706, 3720, 3707, 3708, 3651, 3710, 3652, 3651, - 3721, 3649, 3713, 3717, 3722, 3908, 1574, 1571, 3908, 3652, - 3908, 3718, 3719, 1570, 3723, 3724, 3725, 3726, 3727, 3728, - 3730, 3720, 3731, 3732, 3733, 3734, 3735, 3736, 3721, 3737, - - 3738, 3739, 3722, 3669, 3669, 3669, 3669, 3669, 3669, 3669, - 3669, 3669, 3723, 3724, 3725, 3726, 3727, 3728, 3730, 3740, - 3731, 3732, 3733, 3734, 3735, 3736, 3741, 3737, 3738, 3739, - 3648, 3742, 3743, 3744, 3745, 3746, 3747, 3748, 3751, 3758, - 3759, 3760, 3761, 3762, 3763, 3745, 3764, 3740, 3749, 3765, - 3648, 3769, 3770, 3771, 3741, 3772, 3773, 3774, 3775, 3742, - 3743, 3744, 3776, 3746, 3747, 3748, 3751, 3758, 3759, 3760, - 3761, 3762, 3763, 3777, 3764, 3778, 3749, 3779, 3780, 3769, - 3770, 3771, 3781, 3772, 3773, 3774, 3775, 3783, 3784, 3785, - 3776, 3786, 3787, 3766, 3792, 3793, 3794, 3795, 3796, 3797, - - 3799, 3777, 3806, 3778, 3807, 3779, 3780, 3808, 3809, 3810, - 3781, 3812, 3813, 3814, 3815, 3783, 3784, 3785, 3816, 3786, - 3787, 3766, 3792, 3793, 3794, 3795, 3796, 3797, 3799, 3817, - 3806, 3820, 3807, 3823, 3824, 3808, 3809, 3810, 3825, 3812, - 3813, 3814, 3815, 3826, 3821, 3827, 3816, 3822, 3828, 3829, - 3804, 3805, 3833, 3835, 3836, 3789, 3837, 3817, 3838, 3820, - 3839, 3840, 3824, 3841, 3842, 3843, 3825, 3844, 1565, 3821, - 3853, 3826, 3821, 3827, 3850, 3852, 3828, 3829, 3852, 3855, - 3850, 3857, 3836, 3756, 3837, 3845, 3838, 3862, 3839, 3840, - 3863, 3841, 3842, 3843, 3864, 3844, 3846, 3865, 3853, 3847, - - 3908, 3908, 3908, 3908, 3866, 3790, 3867, 3855, 3868, 3857, - 3869, 3870, 3871, 3845, 3872, 3862, 3852, 3875, 3863, 3852, - 1541, 3850, 3864, 1540, 3846, 3865, 1537, 3847, 1536, 1535, - 1534, 1533, 3866, 1531, 3867, 1113, 3868, 3879, 3869, 3870, - 3871, 3882, 3872, 3883, 3884, 3875, 3876, 3876, 3876, 3876, - 3876, 3876, 3876, 3876, 3876, 3878, 3878, 3878, 3878, 3878, - 3878, 3878, 3878, 3878, 3885, 3879, 3886, 3887, 3888, 3882, - 3889, 3883, 3884, 3876, 3876, 3876, 3876, 3876, 3876, 3876, - 3876, 3876, 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, - 3891, 3892, 3885, 3893, 3886, 3887, 3888, 3894, 3889, 3878, - - 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3895, 3897, - 3898, 3899, 3900, 3901, 3902, 3903, 3904, 3905, 3906, 3892, - 3907, 3893, 872, 1478, 1469, 3894, 3891, 3891, 3891, 3891, - 3891, 3891, 3891, 3891, 3891, 1467, 3895, 3897, 3898, 3899, - 3900, 3901, 3902, 3903, 3904, 3905, 3906, 1462, 3907, 76, + 784, 800, 536, 778, 533, 801, 779, 802, 803, 804, + 802, 805, 807, 808, 772, 538, 536, 590, 626, 2973, + 590, 780, 810, 781, 782, 887, 783, 811, 784, 800, + 812, 813, 770, 801, 3649, 3634, 803, 804, 814, 805, + 807, 808, 815, 816, 540, 785, 786, 787, 788, 817, + 810, 789, 790, 791, 818, 811, 819, 792, 812, 813, + 793, 824, 794, 795, 796, 797, 814, 798, 799, 2799, + 815, 816, 825, 785, 786, 787, 788, 817, 820, 789, + + 790, 791, 818, 826, 819, 792, 822, 823, 793, 824, + 794, 795, 796, 797, 827, 798, 799, 821, 828, 829, + 825, 830, 831, 832, 835, 834, 820, 835, 836, 837, + 838, 826, 839, 840, 822, 823, 834, 841, 842, 843, + 844, 833, 827, 845, 846, 821, 828, 829, 847, 830, + 831, 832, 848, 849, 850, 851, 836, 837, 838, 852, + 839, 840, 853, 854, 855, 841, 842, 843, 844, 833, + 856, 845, 846, 351, 422, 347, 847, 347, 1107, 422, + 848, 849, 850, 851, 869, 623, 859, 852, 623, 859, + 853, 854, 855, 347, 347, 347, 347, 357, 856, 629, + + 358, 355, 629, 862, 357, 869, 862, 358, 357, 367, + 635, 358, 368, 635, 2289, 367, 865, 367, 368, 865, + 390, 367, 857, 367, 368, 637, 911, 866, 637, 367, + 866, 645, 878, 383, 640, 3921, 383, 1068, 383, 888, + 348, 348, 879, 3921, 870, 645, 640, 860, 1068, 867, + 383, 640, 871, 383, 359, 382, 3048, 3603, 359, 863, + 383, 733, 2515, 640, 733, 369, 867, 383, 388, 1115, + 875, 369, 383, 871, 428, 662, 399, 383, 889, 399, + 876, 399, 915, 643, 383, 388, 901, 383, 641, 383, + 392, 3589, 885, 393, 383, 394, 902, 388, 392, 662, + + 643, 977, 431, 399, 977, 872, 412, 890, 1118, 413, + 915, 383, 392, 880, 663, 662, 391, 642, 640, 391, + 391, 392, 389, 391, 653, 392, 654, 916, 653, 655, + 654, 656, 883, 655, 642, 640, 883, 917, 904, 647, + 881, 678, 590, 392, 679, 590, 662, 392, 918, 422, + 735, 877, 388, 735, 1122, 916, 908, 399, 3577, 886, + 887, 919, 3570, 978, 920, 917, 978, 903, 383, 388, + 981, 656, 2289, 981, 391, 656, 918, 391, 391, 392, + 3568, 391, 891, 392, 654, 905, 893, 655, 894, 919, + 883, 895, 920, 3554, 896, 913, 423, 428, 914, 921, + + 657, 391, 923, 422, 657, 392, 873, 391, 391, 924, + 898, 391, 392, 392, 3314, 403, 403, 404, 404, 925, + 899, 405, 1755, 658, 658, 926, 1567, 921, 743, 892, + 923, 743, 927, 897, 392, 392, 3553, 924, 391, 399, + 928, 898, 399, 392, 399, 874, 403, 925, 404, 989, + 423, 899, 989, 926, 658, 660, 672, 3458, 657, 672, + 927, 412, 406, 659, 413, 392, 399, 931, 928, 391, + 666, 1391, 391, 666, 392, 392, 266, 403, 393, 404, + 394, 910, 405, 392, 910, 658, 412, 993, 2134, 413, + 993, 900, 391, 659, 406, 931, 392, 392, 3520, 907, + + 932, 933, 907, 935, 392, 936, 929, 393, 2515, 394, + 937, 414, 392, 930, 930, 930, 930, 930, 930, 930, + 930, 930, 900, 399, 906, 395, 392, 938, 932, 933, + 939, 935, 940, 936, 941, 942, 414, 943, 937, 945, + 951, 802, 266, 952, 802, 736, 953, 954, 736, 958, + 737, 959, 961, 391, 395, 938, 946, 964, 939, 965, + 940, 966, 941, 942, 967, 943, 960, 945, 951, 947, + 948, 952, 949, 950, 953, 954, 955, 958, 956, 959, + 961, 962, 957, 970, 946, 964, 968, 965, 976, 966, + 508, 963, 967, 835, 960, 969, 835, 947, 948, 3508, + + 949, 950, 1000, 971, 955, 972, 956, 973, 506, 962, + 957, 970, 979, 506, 968, 979, 976, 980, 510, 963, + 3475, 739, 982, 969, 739, 982, 740, 983, 1001, 985, + 1000, 971, 985, 972, 986, 973, 746, 990, 1002, 746, + 990, 747, 991, 750, 994, 1003, 750, 994, 751, 995, + 512, 1010, 1011, 513, 529, 1012, 1001, 530, 2876, 1013, + 996, 1014, 529, 1015, 536, 1016, 1002, 537, 1017, 536, + 1018, 1019, 536, 1003, 1023, 2498, 529, 1020, 1033, 1010, + 1011, 1035, 3469, 1012, 1036, 1037, 536, 1013, 3468, 1014, + 1042, 1015, 1021, 1016, 1024, 1022, 1017, 1034, 1018, 1019, + + 998, 1025, 1023, 1027, 1004, 1020, 1033, 1028, 1026, 1035, + 1030, 1029, 1036, 1037, 1006, 1040, 1038, 1043, 1042, 1044, + 1021, 1045, 1024, 1022, 1031, 1034, 1032, 1046, 1047, 1025, + 1041, 1027, 1039, 1051, 1052, 1028, 1026, 1048, 1030, 1029, + 1054, 1055, 1056, 1040, 1038, 1043, 1057, 1044, 1048, 1045, + 3458, 1058, 1031, 1059, 1032, 1046, 1047, 1060, 1041, 1062, + 1039, 1051, 1052, 1063, 1064, 1065, 1066, 1067, 1054, 1055, + 1056, 1069, 1070, 1071, 1057, 1073, 1074, 1077, 1049, 1058, + 2515, 1059, 1078, 1079, 1080, 1060, 1075, 1062, 1081, 1082, + 1083, 1063, 1064, 1065, 1066, 1067, 1084, 1075, 1085, 1069, + + 1070, 1071, 1086, 1073, 1074, 1077, 1087, 1088, 1076, 1089, + 1078, 1079, 1080, 1090, 1092, 1093, 1081, 1082, 1083, 1094, + 1095, 1091, 1096, 1097, 1084, 1098, 1085, 1099, 1104, 1101, + 1086, 355, 3412, 367, 1087, 1088, 1076, 1089, 1124, 3397, + 1112, 1090, 1092, 1093, 3392, 1126, 888, 1094, 1095, 1091, + 1096, 1097, 1128, 1098, 859, 1099, 363, 859, 862, 1103, + 390, 862, 347, 357, 347, 373, 358, 866, 1105, 865, + 866, 869, 865, 390, 367, 632, 622, 368, 383, 640, + 1128, 383, 367, 383, 873, 669, 418, 835, 1106, 1125, + 835, 640, 675, 1110, 867, 383, 640, 3391, 383, 392, + + 383, 1129, 1109, 3385, 394, 383, 628, 392, 640, 348, + 1202, 867, 399, 359, 890, 634, 1130, 977, 391, 1131, + 977, 391, 383, 392, 369, 431, 653, 1132, 1111, 1129, + 1127, 655, 978, 641, 883, 978, 671, 3375, 391, 871, + 651, 391, 428, 392, 1130, 392, 653, 1131, 654, 649, + 872, 655, 1113, 1115, 883, 1132, 391, 754, 3191, 391, + 888, 392, 642, 640, 653, 392, 1111, 1133, 1134, 655, + 3373, 399, 883, 656, 1708, 2498, 1138, 677, 1139, 642, + 640, 391, 399, 392, 391, 399, 392, 399, 3364, 893, + 1141, 894, 1506, 884, 895, 1133, 1134, 896, 885, 1114, + + 399, 1143, 657, 399, 1138, 399, 1139, 391, 392, 399, + 391, 884, 392, 3350, 2515, 653, 1117, 654, 1141, 1709, + 655, 979, 657, 883, 979, 1144, 980, 399, 890, 1143, + 1145, 1146, 1147, 1204, 392, 1148, 887, 656, 391, 392, + 657, 391, 393, 392, 394, 1075, 893, 392, 894, 913, + 3292, 895, 914, 1144, 896, 897, 1075, 422, 1145, 1146, + 1147, 392, 1116, 1148, 1149, 392, 887, 1190, 391, 391, + 1190, 391, 391, 392, 392, 1457, 893, 1120, 1119, 894, + 758, 895, 895, 890, 896, 896, 1457, 981, 3284, 395, + 981, 657, 1149, 897, 392, 392, 391, 393, 391, 394, + + 510, 391, 392, 392, 423, 1203, 1123, 907, 404, 1150, + 907, 405, 392, 1135, 658, 393, 392, 394, 1136, 1151, + 392, 1152, 1153, 897, 1121, 391, 1156, 1157, 910, 1158, + 1137, 910, 1159, 412, 392, 982, 413, 1150, 982, 1191, + 983, 1135, 1191, 3279, 395, 1194, 1136, 1151, 1194, 1152, + 1153, 3254, 756, 665, 1156, 1157, 1160, 1158, 1137, 1161, + 1159, 1162, 395, 1142, 1142, 1142, 1142, 1142, 1142, 1142, + 1142, 1142, 930, 930, 930, 930, 930, 930, 930, 930, + 930, 1165, 391, 414, 1160, 1163, 1166, 1161, 1164, 1162, + 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1177, + + 1179, 1180, 1182, 1178, 1181, 1183, 1184, 1185, 1186, 1165, + 1187, 1189, 1192, 3240, 1166, 1192, 1164, 1193, 1167, 1168, + 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1177, 1179, 1180, + 1182, 1178, 1181, 1183, 1184, 1185, 1186, 985, 1187, 1189, + 985, 1195, 986, 1206, 1195, 989, 1196, 990, 989, 1207, + 990, 1198, 991, 1199, 1198, 1208, 1199, 993, 1200, 994, + 993, 1210, 994, 1201, 995, 516, 1201, 529, 1205, 1212, + 1209, 1206, 1215, 536, 1216, 529, 1211, 1207, 536, 1217, + 533, 536, 1218, 1208, 1219, 1220, 1221, 2267, 540, 2268, + 1222, 1223, 1224, 1225, 1226, 3235, 1227, 1228, 1233, 1236, + + 1215, 1237, 1216, 1229, 1230, 1231, 1232, 1217, 768, 1238, + 1218, 3921, 1219, 1220, 1221, 760, 772, 766, 1222, 1223, + 1224, 1225, 1226, 770, 1227, 1228, 1233, 1236, 1239, 1237, + 1240, 1229, 1230, 1231, 1232, 1234, 1241, 1238, 1242, 1235, + 1243, 1244, 1245, 1248, 1251, 1249, 1246, 1253, 1247, 1250, + 1254, 1255, 1256, 1257, 1258, 2515, 1239, 1263, 1240, 2515, + 1264, 1252, 1267, 1234, 1241, 1268, 1242, 1235, 1243, 1244, + 1245, 1248, 1251, 1249, 1246, 1253, 1247, 1250, 1254, 1255, + 1256, 1257, 1258, 1259, 1265, 1263, 1269, 1260, 1264, 1252, + 1267, 1270, 1271, 1268, 1261, 1265, 1262, 2515, 1272, 1273, + + 1274, 1275, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, + 1898, 1259, 1292, 1293, 1269, 1260, 1294, 1295, 1296, 1270, + 1271, 1297, 1261, 1298, 1262, 1266, 1272, 1273, 1274, 1275, + 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, + 1292, 1293, 1287, 1299, 1294, 1295, 1296, 1288, 1300, 1297, + 1301, 1298, 1302, 1289, 1303, 1304, 1305, 1290, 1306, 1291, + 1307, 1308, 1309, 1310, 1311, 1312, 1285, 1286, 1313, 1314, + 1287, 1299, 1315, 1316, 351, 1288, 1300, 888, 1301, 888, + 1302, 1289, 1303, 1304, 1305, 1290, 1306, 1291, 1307, 1308, + 1309, 1310, 1311, 1312, 428, 1319, 1313, 1314, 869, 1332, + + 1315, 1316, 355, 383, 640, 1328, 383, 391, 383, 1334, + 391, 1323, 392, 1115, 888, 653, 1317, 654, 1325, 867, + 1321, 1335, 431, 883, 399, 1336, 3045, 1332, 1190, 1337, + 383, 1190, 1338, 3043, 392, 1341, 1342, 1334, 391, 1345, + 3180, 391, 1347, 392, 884, 890, 1327, 890, 654, 1335, + 3171, 655, 1329, 1336, 883, 2799, 399, 1337, 641, 399, + 1338, 399, 656, 1341, 1342, 391, 1320, 1345, 391, 1457, + 1347, 391, 1117, 392, 2975, 1659, 893, 1331, 1119, 3128, + 1457, 895, 1324, 399, 896, 662, 1659, 1318, 640, 391, + 1348, 1322, 391, 892, 392, 392, 399, 893, 3123, 894, + + 1349, 1350, 895, 399, 391, 896, 399, 391, 399, 392, + 1339, 897, 893, 1351, 894, 1353, 392, 895, 1348, 660, + 896, 1354, 657, 887, 905, 3115, 1340, 1356, 1349, 1350, + 399, 392, 1191, 1393, 1192, 1191, 1393, 1192, 1339, 1193, + 3095, 1351, 1357, 1353, 897, 3089, 1358, 1359, 1360, 1354, + 1361, 1362, 1364, 1346, 1340, 1356, 1365, 1366, 406, 1330, + 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1367, + 1357, 1368, 1369, 1322, 1358, 1359, 1360, 1370, 1361, 1362, + 1364, 1371, 1372, 1373, 1365, 1366, 1374, 399, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1367, 1375, 1368, + + 1369, 1376, 1377, 1378, 1379, 1370, 1380, 1381, 1383, 1371, + 1372, 1373, 1384, 1385, 1374, 1386, 1387, 1194, 1195, 1394, + 1194, 1195, 1394, 1196, 1198, 1397, 1375, 1198, 1397, 1376, + 1377, 1378, 1379, 508, 1380, 1381, 1383, 1398, 1399, 1400, + 1384, 1385, 1395, 1386, 1387, 1395, 1199, 1396, 1403, 1199, + 1201, 1200, 1404, 1201, 1405, 1406, 1407, 1408, 1409, 1410, + 1411, 510, 1412, 1413, 1414, 1398, 1399, 1400, 1415, 1416, + 1419, 1417, 1420, 1421, 1422, 1423, 1403, 1418, 1424, 1425, + 1404, 1426, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1427, + 1412, 1413, 1414, 1428, 1429, 1430, 1415, 1416, 1419, 1417, + + 1420, 1421, 1422, 1423, 1431, 1418, 1424, 1425, 1432, 1426, + 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1427, 1440, 1442, + 1443, 1428, 1429, 1430, 1444, 1445, 1446, 1447, 1448, 1449, + 1450, 1451, 1431, 1441, 1452, 1456, 1432, 1458, 1433, 1434, + 1435, 1436, 1437, 1438, 1439, 1453, 1440, 1442, 1443, 1459, + 1454, 1455, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, + 1460, 1441, 1452, 1456, 1462, 1458, 1463, 1464, 1465, 1467, + 1468, 1469, 1470, 1453, 1472, 1474, 1475, 1459, 1454, 1455, + 1476, 1477, 1479, 1480, 1481, 1483, 1484, 1478, 1460, 1485, + 1486, 1487, 1462, 1488, 1463, 1464, 1465, 1467, 1468, 1469, + + 1470, 1489, 1472, 1474, 1475, 1490, 1491, 1492, 1476, 1477, + 1479, 1480, 1481, 1483, 1484, 1478, 1493, 1485, 1486, 1487, + 1494, 1488, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1489, + 1502, 1503, 1504, 1490, 1491, 1492, 869, 888, 1505, 2929, + 1393, 1751, 1508, 1393, 1493, 1511, 888, 2471, 1494, 2472, + 1495, 1496, 1497, 1498, 1499, 1500, 1501, 399, 1502, 1503, + 1504, 391, 399, 1512, 391, 399, 392, 399, 662, 893, + 1508, 894, 1513, 1511, 895, 870, 889, 896, 885, 3921, + 1509, 1843, 1510, 1514, 1515, 1114, 1391, 1516, 392, 399, + 1517, 1512, 1843, 391, 1518, 1523, 391, 1524, 392, 1525, + + 1513, 1507, 1526, 894, 871, 890, 895, 1529, 1509, 896, + 1510, 1514, 1515, 1527, 890, 1516, 897, 656, 1517, 1528, + 391, 1520, 1518, 1523, 1520, 1524, 1520, 1525, 1533, 1534, + 1526, 1521, 1536, 1542, 1520, 659, 1543, 1531, 1546, 1547, + 1548, 1527, 1549, 1532, 1550, 1551, 887, 1528, 1121, 1394, + 1395, 1571, 1394, 1395, 1571, 1396, 1533, 1534, 1552, 1553, + 1536, 1542, 1554, 1555, 1543, 1531, 1546, 1547, 1548, 1556, + 1549, 1532, 1550, 1551, 1557, 1558, 1522, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1552, 1553, 1559, 1560, + 1554, 1555, 1561, 1563, 1564, 1565, 1566, 1556, 1562, 1572, + + 1573, 1397, 1557, 1558, 1397, 1576, 1577, 1579, 1580, 1581, + 1582, 1583, 1584, 1585, 1586, 1587, 1559, 1560, 1588, 1589, + 1561, 1563, 1564, 1565, 1566, 1593, 1562, 1572, 1573, 1594, + 1595, 1590, 1596, 1576, 1577, 1579, 1580, 1581, 1582, 1583, + 1584, 1585, 1586, 1587, 1591, 1597, 1588, 1589, 1598, 1592, + 1599, 1600, 1601, 1593, 1606, 1602, 1607, 1594, 1595, 1590, + 1596, 1603, 1608, 1604, 1609, 1610, 1605, 1611, 1612, 2515, + 1619, 1620, 1591, 1597, 1621, 1622, 1598, 1592, 1599, 1600, + 1601, 1623, 1606, 1602, 1607, 3051, 1624, 1625, 1626, 1603, + 1608, 1604, 1609, 1610, 1605, 1611, 1612, 1613, 1619, 1620, + + 1627, 1614, 1621, 1622, 1628, 1629, 1630, 1631, 1615, 1623, + 1616, 1617, 1632, 1618, 1624, 1625, 1626, 1633, 1634, 1635, + 1636, 1637, 1638, 1639, 1643, 1613, 1644, 1645, 1627, 1614, + 1646, 1647, 1628, 1629, 1630, 1631, 1615, 1654, 1616, 1617, + 1632, 1618, 1655, 1898, 3043, 1633, 1634, 1635, 1636, 1637, + 1638, 1639, 1643, 1648, 1644, 1645, 1656, 1661, 1646, 1647, + 1649, 1659, 1662, 1663, 1664, 1654, 1665, 1666, 1650, 1657, + 1655, 1658, 1659, 1651, 1667, 1668, 1669, 1670, 1671, 1672, + 1673, 1648, 1674, 1660, 1656, 1661, 1675, 1678, 1649, 1679, + 1662, 1663, 1664, 1676, 1665, 1666, 1650, 1657, 1677, 1658, + + 1680, 1651, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1681, + 1674, 1660, 1682, 1683, 1675, 1678, 1684, 1679, 1685, 1686, + 1687, 1676, 1688, 1692, 1690, 1693, 1677, 1694, 1680, 1691, + 888, 3580, 1696, 3581, 1697, 1695, 1698, 1681, 1689, 1699, + 1682, 1683, 1700, 1115, 1684, 1701, 1685, 1686, 1687, 1702, + 1688, 1692, 1690, 1693, 399, 1694, 399, 1691, 1703, 399, + 1696, 399, 1697, 1704, 1698, 1705, 1689, 1699, 1711, 1891, + 1700, 1520, 1117, 1701, 1520, 1520, 1520, 1702, 1520, 1714, + 1520, 1706, 1329, 399, 1520, 1706, 1703, 1715, 1520, 1716, + 1721, 1704, 1722, 1705, 1723, 1718, 1711, 884, 890, 1719, + + 1724, 1720, 1571, 1974, 2869, 1571, 1974, 1714, 1843, 3030, + 2198, 897, 1726, 1727, 1892, 1715, 2990, 1716, 1721, 1843, + 1722, 2198, 1723, 1718, 1730, 1731, 1707, 1719, 1724, 1720, + 1522, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, + 1726, 1727, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, + 1728, 1732, 1730, 1731, 1733, 1734, 1735, 1736, 1737, 1738, + 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, + 1749, 1750, 1752, 1756, 1757, 1760, 1761, 1762, 1763, 1732, + 1766, 1767, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, + 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, + + 1752, 1756, 1757, 1760, 1761, 1762, 1763, 1764, 1766, 1767, + 1768, 1769, 1770, 1771, 1765, 1772, 1773, 1774, 1775, 1776, + 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, + 1787, 1788, 1789, 1790, 1791, 1764, 1792, 1793, 1768, 1769, + 1770, 1771, 1765, 1772, 1773, 1774, 1775, 1776, 1777, 1778, + 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, + 1789, 1790, 1791, 1794, 1792, 1793, 1795, 1796, 1797, 1798, + 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, + 1809, 1810, 1811, 1813, 1814, 1815, 1816, 1817, 1818, 1819, + 1820, 1794, 1821, 1811, 1795, 1796, 1797, 1798, 1799, 1800, + + 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, + 1822, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1823, + 1821, 1824, 1825, 1812, 1827, 1828, 1829, 1830, 1831, 1832, + 1833, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1822, 1852, + 1853, 1834, 2989, 1990, 1854, 1855, 1990, 1823, 2980, 1824, + 1825, 1856, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1845, + 1846, 1847, 1848, 1849, 1850, 1851, 1857, 1852, 1853, 1834, + 1835, 1836, 1854, 1855, 1837, 1858, 1838, 1859, 1860, 1856, + 1839, 1840, 1861, 1862, 1841, 1863, 1864, 1865, 1866, 1842, + 1867, 1868, 1869, 1870, 1857, 1873, 1874, 1875, 1835, 1836, + + 1876, 1877, 1837, 1858, 1838, 1859, 1860, 1567, 1839, 1840, + 1861, 1862, 1841, 1863, 1864, 1865, 1866, 1842, 1867, 1868, + 1869, 1870, 1871, 1873, 1874, 1875, 1878, 1880, 1876, 1877, + 1881, 1882, 1883, 1884, 1885, 1872, 1887, 1888, 1520, 1893, + 1896, 1520, 1897, 1520, 1899, 1900, 1901, 1886, 1889, 2975, + 1871, 1520, 1568, 2158, 1878, 1880, 2158, 1902, 1881, 1882, + 1883, 1884, 1885, 1872, 1887, 1888, 1910, 1893, 1896, 1898, + 1897, 2943, 1899, 1900, 1901, 1886, 1717, 1717, 1717, 1717, + 1717, 1717, 1717, 1717, 1717, 1902, 1903, 1906, 1904, 1911, + 1912, 1913, 1914, 1522, 1910, 1915, 1916, 1917, 1918, 1907, + + 1919, 1920, 1921, 1922, 1908, 1728, 1728, 1728, 1728, 1728, + 1728, 1728, 1728, 1728, 1903, 1906, 1904, 1911, 1912, 1913, + 1914, 1929, 1930, 1915, 1916, 1917, 1918, 1907, 1919, 1920, + 1921, 1922, 1908, 1923, 1931, 1926, 1932, 1933, 1934, 1935, + 1936, 1942, 1943, 1924, 1945, 1946, 1927, 1947, 1948, 1929, + 1930, 1949, 1950, 1951, 1925, 1928, 1952, 1953, 1954, 1955, + 1956, 1923, 1931, 1926, 1932, 1933, 1934, 1935, 1936, 1942, + 1943, 1924, 1945, 1946, 1927, 1947, 1948, 1957, 1958, 1949, + 1950, 1951, 1925, 1928, 1952, 1953, 1954, 1955, 1956, 1961, + 1962, 1959, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, + + 1971, 1972, 1973, 1975, 1976, 1957, 1958, 1960, 1977, 1978, + 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1961, 1962, 1959, + 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, + 1973, 1975, 1976, 1986, 1987, 1960, 1977, 1978, 1979, 1980, + 1981, 1982, 1983, 1984, 1985, 1988, 1991, 1992, 1993, 1996, + 1994, 1989, 1997, 1998, 1999, 1995, 2000, 2001, 2003, 2004, + 2005, 1986, 1987, 2008, 2009, 2010, 2011, 2012, 2001, 2014, + 2939, 2006, 2015, 1988, 1991, 1992, 1993, 1996, 1994, 1989, + 1997, 1998, 1999, 1995, 2000, 2007, 2003, 2004, 2005, 2016, + 2017, 2008, 2009, 2010, 2011, 2012, 2018, 2014, 2002, 2006, + + 2015, 2019, 2020, 2021, 2024, 2022, 2025, 2026, 2027, 2028, + 2029, 2030, 2929, 2921, 2036, 2037, 2038, 2016, 2017, 2023, + 2039, 2040, 2041, 2043, 2018, 2044, 3132, 2045, 2046, 2019, + 2020, 2021, 2024, 2022, 2025, 2026, 2027, 2028, 2029, 2030, + 2031, 2032, 2036, 2037, 2038, 2047, 2033, 2023, 2039, 2040, + 2041, 2043, 2048, 2044, 2034, 2045, 2046, 2035, 2049, 2050, + 2051, 2052, 2053, 2059, 2054, 2060, 2055, 2061, 2031, 2032, + 2056, 2062, 2063, 2047, 2033, 2064, 2799, 2067, 2069, 2070, + 2048, 2057, 2034, 2058, 2973, 2035, 2049, 2050, 2051, 2052, + 2053, 2059, 2054, 2060, 2055, 2061, 2073, 2074, 2056, 2062, + + 2063, 2075, 2054, 2064, 2055, 2071, 2069, 2070, 2056, 2057, + 2076, 2058, 2072, 2077, 2078, 1708, 1708, 2082, 3580, 2057, + 3581, 2065, 2068, 2084, 2073, 2074, 2085, 2086, 2289, 2075, + 2054, 2087, 2055, 2071, 2974, 2088, 2056, 2089, 2076, 2090, + 2072, 2077, 2078, 1520, 2091, 2092, 1520, 2057, 1520, 2065, + 2093, 2084, 2094, 1706, 2085, 2086, 1520, 2095, 2106, 2087, + 1709, 1892, 2083, 2088, 2107, 2089, 2108, 2090, 2109, 2110, + 2418, 2864, 2091, 2092, 2111, 2112, 2113, 2114, 2093, 1974, + 2094, 2418, 1974, 2289, 2171, 2095, 2106, 2115, 2116, 2118, + 2288, 2119, 2107, 2289, 2108, 2117, 2109, 2110, 1707, 2096, + + 2120, 2121, 2111, 2112, 2113, 2114, 2097, 2097, 2097, 2097, + 2097, 2097, 2097, 2097, 2097, 2115, 2116, 2118, 2098, 2119, + 2099, 2100, 2101, 2117, 2122, 2123, 2102, 2124, 2120, 2121, + 2126, 2103, 2127, 2128, 2129, 2130, 2131, 2132, 2125, 2140, + 2104, 2135, 2136, 2137, 2135, 2142, 2098, 2143, 2099, 2100, + 2101, 2144, 2122, 2123, 2102, 2124, 2145, 2146, 2126, 2103, + 2127, 2128, 2129, 2130, 2131, 2132, 2125, 2140, 2104, 2138, + 2136, 2139, 2138, 2142, 2147, 2143, 2148, 2149, 2150, 2144, + 2151, 2152, 2153, 2154, 2145, 2146, 2155, 2156, 2159, 2160, + 2161, 2162, 2163, 2164, 2165, 2166, 1939, 2167, 2168, 2169, + + 2172, 2173, 2147, 2174, 2148, 2149, 2150, 2175, 2151, 2152, + 2153, 2154, 2176, 2177, 2155, 2156, 2159, 2160, 2161, 2162, + 2163, 2164, 2165, 2166, 1941, 2167, 2168, 2169, 2172, 2173, + 2178, 2174, 2179, 2180, 2181, 2175, 2182, 2183, 2184, 2185, + 2176, 2177, 2186, 1990, 2189, 2190, 1990, 2191, 2187, 2192, + 2193, 2194, 2195, 2196, 2197, 2199, 2200, 2201, 2178, 2202, + 2179, 2180, 2181, 2203, 2182, 2183, 2184, 2185, 2204, 2205, + 2186, 2206, 2189, 2190, 2207, 2191, 2208, 2192, 2193, 2194, + 2195, 2196, 2197, 2199, 2200, 2201, 2209, 2202, 2825, 2824, + 2221, 2203, 2222, 2801, 2764, 2223, 2204, 2205, 2351, 2206, + + 2224, 2225, 2207, 2226, 2208, 2227, 2349, 2228, 2229, 2230, + 2231, 2232, 2233, 2234, 2209, 2210, 2211, 2212, 2221, 2213, + 2222, 2214, 2215, 2223, 2235, 2216, 2217, 2218, 2224, 2225, + 2236, 2226, 2219, 2227, 2220, 2228, 2229, 2230, 2231, 2232, + 2233, 2234, 2237, 2210, 2211, 2212, 2238, 2213, 2239, 2214, + 2215, 2240, 2235, 2216, 2217, 2218, 2241, 2242, 2236, 2243, + 2219, 2244, 2220, 2245, 2246, 2248, 2249, 2250, 2251, 2254, + 2237, 2255, 2256, 2257, 2238, 2258, 2239, 2259, 2260, 2240, + 2261, 2262, 2264, 2263, 2241, 2242, 2269, 2243, 2270, 2244, + 2271, 2245, 2246, 2248, 2249, 2250, 2251, 2254, 2272, 2255, + + 2256, 2257, 2275, 2258, 2272, 2259, 2260, 2277, 2261, 2262, + 2264, 2263, 2278, 2279, 2269, 2290, 2270, 2280, 2271, 2293, + 2281, 2290, 2282, 2283, 2284, 2285, 2286, 2295, 2296, 2297, + 2298, 2299, 2732, 2300, 2301, 2277, 3504, 2302, 3504, 2303, + 2278, 2279, 2304, 2273, 2305, 2280, 2730, 2276, 2281, 2068, + 2282, 2283, 2284, 2285, 2286, 2295, 2296, 2297, 2298, 2299, + 2291, 2300, 2301, 2314, 2294, 2302, 2083, 2303, 2315, 2316, + 2304, 2319, 2305, 2306, 2306, 2306, 2306, 2306, 2306, 2306, + 2306, 2306, 2320, 2321, 2323, 2307, 2324, 2308, 2309, 2310, + 2317, 2314, 2325, 2311, 2326, 2318, 2315, 2316, 2312, 2319, + + 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2313, 3504, 2673, + 2320, 2321, 2323, 2307, 2324, 2308, 2309, 2310, 2317, 2334, + 2325, 2311, 2326, 2318, 2335, 2336, 2312, 2337, 2327, 2328, + 2329, 2330, 2331, 2332, 2333, 2313, 2097, 2097, 2097, 2097, + 2097, 2097, 2097, 2097, 2097, 2338, 2339, 2334, 2340, 2341, + 2342, 2343, 2335, 2336, 2344, 2337, 2345, 2346, 2347, 2135, + 2136, 2137, 2135, 2136, 2137, 2138, 2136, 2139, 2138, 2136, + 2139, 2352, 2353, 2338, 2339, 2354, 2340, 2341, 2342, 2343, + 2355, 2356, 2344, 2365, 2345, 2346, 2347, 2366, 2367, 2412, + 2368, 2369, 2412, 2370, 2371, 2378, 2504, 2372, 2373, 2352, + + 2353, 2374, 2375, 2354, 2502, 2380, 2381, 2158, 2355, 2356, + 2158, 2365, 2376, 2382, 1939, 2366, 2367, 1939, 2368, 2369, + 1941, 2370, 2371, 1941, 2357, 2372, 2373, 2083, 2383, 2374, + 2375, 2384, 2379, 2380, 2381, 2385, 2386, 3651, 2387, 3652, + 2358, 2382, 2388, 2389, 3921, 2391, 2392, 3921, 2393, 3921, + 2394, 2395, 2396, 2359, 2397, 2360, 2383, 2398, 2399, 2384, + 2379, 2400, 2402, 2385, 2386, 2361, 2387, 2362, 2363, 2364, + 2388, 2389, 2403, 2391, 2392, 2404, 2393, 2405, 2394, 2395, + 2396, 2359, 2397, 2360, 2407, 2398, 2399, 2408, 2409, 2400, + 2402, 2410, 2411, 2361, 2413, 2362, 2363, 2364, 2414, 3921, + + 2403, 2415, 3921, 2404, 3921, 2405, 2416, 2417, 2420, 2421, + 2419, 2422, 2407, 2423, 2424, 2408, 2409, 2427, 2425, 2410, + 2411, 2419, 2413, 2428, 2429, 2430, 2414, 2426, 2431, 2415, + 2432, 2433, 2434, 2435, 2416, 2417, 2420, 2421, 2436, 2422, + 2437, 2423, 2424, 2439, 2440, 2427, 2425, 2441, 2442, 2443, + 2444, 2428, 2429, 2430, 2445, 2438, 2431, 2446, 2432, 2433, + 2434, 2435, 2447, 2448, 2449, 2450, 2436, 2451, 2437, 2453, + 2454, 2439, 2440, 2455, 2456, 2441, 2442, 2443, 2444, 2457, + 2458, 2459, 2445, 2438, 2460, 2446, 2462, 2463, 2464, 2465, + 2447, 2448, 2449, 2450, 2466, 2451, 2467, 2453, 2454, 2468, + + 2469, 2455, 2456, 2470, 2473, 2474, 2475, 2457, 2458, 2459, + 2477, 2480, 2460, 2482, 2462, 2463, 2464, 2465, 2483, 2484, + 2485, 2486, 2466, 2487, 2467, 2488, 2489, 2468, 2469, 2490, + 2500, 2470, 2473, 2474, 2475, 2503, 2505, 2506, 2507, 2508, + 2571, 2482, 2509, 2571, 2510, 2511, 2483, 2484, 2485, 2486, + 2512, 2487, 2289, 2488, 2489, 2478, 2481, 2490, 2493, 2513, + 2514, 2493, 2289, 2493, 2505, 2506, 2507, 2508, 2494, 2481, + 2509, 2495, 2510, 2511, 2516, 2501, 2517, 2518, 2512, 2519, + 2504, 2521, 2515, 2522, 2520, 2496, 2523, 2513, 2514, 2306, + 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2524, 2525, + + 2526, 2527, 2516, 2528, 2517, 2518, 2529, 2519, 2530, 2521, + 2531, 2522, 2520, 2497, 2523, 2532, 2533, 2534, 2535, 2536, + 2537, 2538, 2539, 2541, 2542, 2543, 2524, 2525, 2526, 2527, + 2544, 2528, 2545, 2546, 2529, 2547, 2530, 2548, 2531, 2549, + 2479, 2068, 2555, 2532, 2533, 2534, 2535, 2536, 2537, 2538, + 2539, 2541, 2542, 2543, 2551, 2552, 2556, 2551, 2544, 2557, + 2545, 2546, 2558, 2547, 2562, 2548, 2563, 2549, 2554, 2552, + 2555, 2554, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2572, + 2573, 2670, 2574, 2575, 2556, 2576, 2577, 2557, 2578, 2579, + 2558, 2583, 2562, 3921, 2563, 2667, 3921, 2584, 3921, 2585, + + 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2572, 2573, 2349, + 2574, 2575, 2586, 2576, 2577, 2587, 2578, 2579, 2588, 2583, + 2589, 2590, 2592, 2351, 2348, 2584, 2594, 2585, 2595, 2596, + 2597, 2598, 2599, 2600, 2601, 2602, 2603, 2604, 2350, 2605, + 2586, 2606, 2607, 2587, 2609, 2610, 2588, 2612, 2589, 2590, + 2592, 2613, 2611, 2617, 2594, 2611, 2595, 2596, 2597, 2598, + 2599, 2600, 2601, 2602, 2603, 2604, 2618, 2605, 2619, 2606, + 2607, 2615, 2609, 2610, 2615, 2612, 2616, 2620, 2621, 2613, + 2622, 2617, 2623, 2625, 2627, 2629, 2630, 2631, 2632, 2633, + 2634, 2635, 2637, 2638, 2618, 2627, 2619, 2646, 2639, 2640, + + 2641, 2642, 2643, 2644, 2645, 2620, 2621, 2647, 2622, 2648, + 2623, 2625, 2649, 2629, 2630, 2631, 2632, 2633, 2634, 2635, + 2637, 2638, 2650, 2651, 2652, 2628, 2639, 2640, 2641, 2642, + 2643, 2644, 2645, 2653, 2654, 2647, 2655, 2648, 2656, 2657, + 2649, 2658, 2659, 2660, 2661, 2662, 2663, 2664, 2665, 2666, + 2650, 2651, 2652, 2668, 2669, 2671, 2272, 2477, 2673, 2674, + 2675, 2653, 2654, 2676, 2655, 2677, 2656, 2657, 2678, 2658, + 2659, 2660, 2661, 2662, 2663, 2664, 2665, 2666, 2679, 2680, + 2685, 2668, 2669, 2697, 2289, 2290, 2673, 2674, 2675, 2493, + 2500, 2676, 2493, 2677, 2493, 2699, 2678, 2686, 2491, 2689, + + 2481, 2672, 2481, 2700, 2636, 2493, 2679, 2680, 2493, 2493, + 2493, 2701, 2493, 2702, 2493, 2682, 2690, 1898, 2495, 2693, + 2703, 2704, 2495, 2699, 2493, 2687, 2688, 2493, 2504, 2493, + 2698, 2700, 2683, 2705, 2682, 2504, 2694, 2495, 2706, 2701, + 2707, 2702, 2708, 2709, 2691, 1898, 2710, 2711, 2703, 2704, + 2712, 2683, 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, + 2684, 2705, 2721, 2722, 2695, 2723, 2706, 2724, 2707, 2725, + 2708, 2709, 2726, 2727, 2710, 2711, 2728, 2729, 2712, 2497, + 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, 2731, 2733, + 2721, 2722, 2734, 2723, 2735, 2724, 2736, 2725, 2737, 2738, + + 2726, 2727, 2739, 2740, 2728, 2729, 2551, 2552, 2741, 2551, + 2554, 2552, 2742, 2554, 2743, 2746, 2731, 2733, 2747, 2748, + 2734, 2749, 2735, 2750, 2736, 2751, 2737, 2738, 2752, 2753, + 2739, 2740, 2754, 2626, 2571, 2757, 2741, 2571, 2758, 2755, + 2742, 2759, 2743, 2746, 2760, 2761, 2747, 2748, 2624, 2749, + 2762, 2750, 2608, 2751, 2763, 2766, 2752, 2753, 2767, 2768, + 2754, 2349, 2769, 2757, 2770, 2351, 2758, 2771, 2772, 2759, + 2773, 2775, 2760, 2761, 2776, 2777, 2348, 2778, 2762, 2779, + 2350, 2780, 2763, 2766, 2781, 2782, 2767, 2768, 2783, 2784, + 2769, 2783, 2770, 2786, 2787, 2771, 2772, 2788, 2773, 2775, + + 2789, 2790, 2776, 2777, 2791, 2778, 2796, 2779, 2785, 2780, + 2800, 2611, 2781, 2782, 2611, 2802, 2792, 2784, 2794, 2795, + 2803, 2786, 2787, 2804, 2805, 2788, 2806, 2807, 2789, 2790, + 2615, 2808, 2791, 2615, 2796, 2616, 2785, 2809, 2800, 2810, + 2811, 2812, 2813, 2802, 2814, 2815, 2794, 2795, 2803, 2816, + 2817, 2804, 2805, 2818, 2806, 2807, 2819, 2820, 2821, 2808, + 2822, 2823, 2826, 2827, 2828, 2809, 2829, 2810, 2811, 2812, + 2813, 2830, 2814, 2815, 2831, 2832, 2833, 2816, 2817, 2834, + 2835, 2818, 2836, 2837, 2819, 2820, 2821, 2838, 2822, 2823, + 2826, 2827, 2828, 2839, 2829, 2840, 2841, 2842, 2843, 2830, + + 2844, 2845, 2831, 2832, 2833, 2846, 2847, 2834, 2835, 2848, + 2836, 2837, 2849, 2477, 2850, 2838, 2851, 2852, 2853, 2854, + 2855, 2839, 2856, 2840, 2841, 2842, 2843, 2289, 2844, 2845, + 2500, 2880, 2865, 2846, 2847, 2944, 2868, 2848, 2944, 2498, + 2849, 2491, 2881, 2882, 2851, 2852, 2853, 2854, 2855, 2866, + 2856, 2858, 2493, 2686, 2858, 2493, 2858, 2493, 2478, 2068, + 2593, 2859, 2863, 2497, 2860, 2495, 2289, 2870, 2591, 2688, + 2881, 2882, 2883, 2978, 2884, 2501, 2083, 2867, 2861, 2683, + 2491, 2869, 2858, 2493, 2978, 2858, 2493, 2858, 2493, 2581, + 2561, 2493, 2872, 2875, 2493, 2860, 2493, 2559, 2351, 2885, + + 2883, 2693, 2884, 2886, 2495, 2887, 2862, 2497, 2888, 2873, + 2690, 2349, 2858, 2889, 2890, 2858, 2493, 2858, 2694, 2493, + 2891, 2493, 2859, 2892, 2893, 2860, 2878, 2885, 2894, 2495, + 2895, 2886, 2896, 2887, 2897, 2898, 2888, 2874, 2876, 2861, + 2899, 2889, 2890, 2694, 2900, 2901, 2695, 2902, 2891, 2903, + 2904, 2892, 2893, 2905, 2906, 2907, 2894, 2908, 2895, 2909, + 2896, 2910, 2897, 2898, 2911, 2912, 2913, 2862, 2899, 2914, + 2915, 2879, 2900, 2901, 2916, 2902, 2917, 2903, 2904, 2918, + 2919, 2905, 2906, 2907, 2920, 2908, 2922, 2909, 2923, 2910, + 2924, 2925, 2911, 2912, 2913, 2926, 2927, 2914, 2915, 2928, + + 2930, 2932, 2916, 2933, 2917, 2934, 2935, 2918, 2919, 2936, + 2937, 2938, 2920, 2940, 2922, 2941, 2923, 2942, 2924, 2925, + 2945, 2946, 2947, 2926, 2927, 2948, 2949, 2928, 2930, 2932, + 3651, 2933, 3652, 2934, 2935, 2955, 2956, 2936, 2937, 2938, + 2957, 2940, 2958, 2941, 2961, 2942, 2962, 2951, 2945, 2946, + 2947, 2783, 2963, 2948, 2783, 2952, 2959, 2950, 2953, 2964, + 2954, 2965, 2966, 2955, 2956, 2967, 2968, 2970, 2957, 2971, + 2958, 2972, 2961, 2976, 2962, 2951, 2977, 2979, 2982, 2983, + 2963, 2981, 2984, 2952, 2985, 2950, 2953, 2964, 2954, 2965, + 2966, 2986, 2981, 2967, 2968, 2970, 2987, 2971, 2988, 2972, + + 2991, 2976, 2993, 2994, 2977, 2979, 2982, 2983, 2995, 2996, + 2984, 2997, 2985, 2998, 2992, 2999, 3000, 3001, 3002, 2986, + 3003, 3004, 2997, 3005, 2987, 3006, 2988, 3007, 2991, 3008, + 2993, 2994, 3009, 3010, 3011, 3012, 2995, 2996, 3013, 3014, + 3015, 2998, 3016, 2999, 3000, 3001, 3002, 3017, 3003, 3004, + 3018, 3005, 3019, 3006, 3020, 3007, 3021, 3008, 3022, 3023, + 3009, 3010, 3011, 3012, 3024, 3025, 3013, 3014, 3015, 2477, + 3016, 3026, 3027, 3028, 3029, 3017, 3031, 3052, 3018, 3035, + 3019, 3053, 3020, 3054, 3021, 2858, 3022, 3023, 2858, 3055, + 2858, 2500, 3024, 3025, 3032, 3033, 2866, 2540, 2860, 3026, + + 3027, 3028, 3029, 2858, 3031, 3052, 2858, 2502, 2858, 3053, + 3035, 3054, 2861, 3038, 2276, 2858, 2858, 3055, 2858, 2858, + 2858, 2858, 3032, 3056, 3036, 3033, 3041, 2866, 2860, 2860, + 3039, 3044, 2685, 2685, 2493, 2879, 2294, 2493, 2289, 2493, + 3034, 3135, 2861, 2861, 2682, 3057, 2083, 2495, 2866, 2686, + 2686, 3056, 3135, 2499, 2858, 3036, 3058, 2858, 3040, 2858, + 3059, 2683, 3042, 3060, 3046, 2289, 3061, 2860, 2498, 2858, + 3034, 3042, 2858, 3057, 2858, 2479, 3045, 2687, 2869, 3046, + 2858, 2873, 2860, 2858, 3058, 2858, 3062, 2068, 3059, 2684, + 3049, 3060, 2493, 2860, 3061, 2493, 2873, 2493, 2493, 3063, + + 2476, 2493, 2689, 2493, 3064, 2461, 3065, 2873, 2689, 3047, + 2493, 3066, 3067, 2493, 3062, 2493, 3068, 3069, 3070, 2690, + 2693, 3071, 3072, 2495, 3047, 2690, 3073, 3063, 2493, 3074, + 3075, 2493, 3064, 2493, 3065, 3050, 3076, 2694, 2693, 3066, + 3067, 2495, 3077, 3078, 3068, 3069, 3070, 2691, 3079, 3071, + 3072, 3080, 3081, 2876, 3073, 2694, 3082, 3074, 3075, 3083, + 3084, 3085, 3086, 3088, 3076, 2695, 3090, 3091, 3092, 3093, + 3077, 3078, 3094, 3096, 3097, 3098, 3079, 3099, 3103, 3080, + 3081, 2452, 3104, 2879, 3082, 3106, 3107, 3083, 3084, 3085, + 3086, 3088, 3108, 3109, 3090, 3091, 3092, 3093, 3110, 3114, + + 3094, 3096, 3097, 3098, 2944, 3099, 3103, 2944, 3116, 3101, + 3104, 3111, 3117, 3106, 3107, 3120, 3121, 3122, 3124, 3118, + 3108, 3109, 3112, 3113, 3125, 3126, 3110, 3114, 3127, 3129, + 3130, 3131, 3133, 3134, 3136, 3137, 3116, 3138, 3139, 3111, + 3117, 3140, 3141, 3120, 3121, 3122, 3124, 3118, 3142, 3143, + 3112, 3113, 3125, 3126, 3144, 3147, 3127, 3129, 3130, 3131, + 3133, 3134, 3136, 3137, 3148, 3138, 3139, 3145, 3146, 3140, + 3141, 3149, 3150, 3151, 3152, 3153, 3142, 3143, 3154, 3155, + 3156, 3157, 3144, 3147, 3158, 3159, 3160, 3161, 3163, 3166, + 3167, 3168, 3148, 3164, 3169, 3145, 3146, 3170, 3161, 3149, + + 3150, 3151, 3152, 3153, 3164, 3172, 3154, 3155, 3156, 3157, + 3173, 3174, 3158, 3159, 3160, 3175, 3163, 3166, 3167, 3168, + 3176, 3177, 3169, 3178, 3179, 3170, 3181, 3182, 3162, 3183, + 3185, 3186, 2498, 3172, 3165, 3380, 3188, 2858, 3173, 3174, + 2858, 3199, 2858, 3175, 3184, 3474, 3380, 3187, 3176, 3177, + 2860, 3178, 3179, 2866, 3181, 3182, 3474, 3183, 3185, 3186, + 3189, 2351, 2349, 2858, 2861, 2685, 2858, 2253, 2858, 3199, + 3035, 2252, 3184, 3046, 2858, 2493, 2860, 2858, 2493, 2858, + 2493, 3045, 2686, 3200, 3190, 2693, 2858, 2866, 2495, 2858, + 2873, 2858, 3042, 3201, 3050, 2858, 3033, 2289, 2858, 2860, + + 2858, 3039, 2694, 2247, 2493, 3194, 3202, 2493, 2860, 2493, + 3193, 3200, 3203, 2861, 3196, 3045, 3204, 2495, 3047, 3205, + 3206, 3201, 2873, 3207, 3208, 3209, 3210, 3211, 3212, 3191, + 3192, 3197, 3624, 2858, 3202, 3213, 2858, 3214, 2858, 3215, + 3203, 3042, 3216, 3046, 3204, 3217, 2860, 3205, 3206, 3218, + 3050, 3207, 3208, 3209, 3210, 3211, 3212, 3219, 3220, 3198, + 2873, 3221, 3222, 3213, 3223, 3214, 3224, 3215, 3225, 3224, + 3216, 3226, 3227, 3217, 3228, 3229, 3230, 3218, 3231, 3232, + 3316, 3433, 3625, 2289, 3433, 3219, 3220, 2157, 3050, 3221, + 3222, 3234, 3223, 3236, 2141, 3238, 3225, 3239, 3241, 3226, + + 3227, 3242, 3228, 3229, 3230, 3243, 3231, 3232, 3233, 3233, + 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3921, 3244, 3234, + 3921, 3236, 3921, 3238, 3245, 3239, 3241, 3246, 3247, 3242, + 3248, 3249, 3251, 3243, 3250, 3250, 3250, 3250, 3250, 3250, + 3250, 3250, 3250, 3252, 3253, 3255, 3244, 3256, 3257, 3259, + 3260, 3261, 3245, 3262, 3263, 3246, 3247, 3264, 3248, 3249, + 3251, 3265, 3266, 3267, 3268, 3269, 3270, 3271, 3272, 3273, + 3274, 3252, 3253, 3255, 3275, 3256, 3257, 3259, 3260, 3261, + 3276, 3262, 3263, 3277, 3278, 3264, 3280, 3281, 3282, 3265, + 3266, 3267, 3268, 3269, 3270, 3271, 3272, 3273, 3274, 3283, + + 3285, 3286, 3275, 3287, 3288, 3289, 3290, 3291, 3276, 3293, + 3295, 3277, 3278, 3296, 3280, 3281, 3282, 3297, 3298, 3299, + 3293, 3300, 1941, 3301, 3302, 3303, 3304, 3283, 3285, 3286, + 3305, 3287, 3288, 3289, 3290, 3291, 3306, 3307, 3295, 3310, + 3035, 3296, 3312, 3317, 3308, 3297, 3298, 3299, 1939, 3300, + 3294, 3301, 3302, 3303, 3304, 3309, 2105, 2866, 3305, 2686, + 3318, 2080, 2079, 2858, 3306, 3307, 2858, 3310, 2858, 1892, + 3319, 3317, 3308, 3033, 2858, 3320, 2860, 2858, 3321, 2858, + 3322, 2042, 3323, 3309, 3038, 3036, 2858, 2869, 3318, 2858, + 2861, 2858, 2493, 3324, 2013, 2493, 3038, 2493, 3319, 3921, + + 1941, 3039, 3311, 3320, 2858, 2495, 3321, 2858, 3322, 2858, + 3323, 3325, 3326, 3039, 3046, 1939, 3327, 2860, 3034, 2694, + 1937, 3324, 2493, 2858, 3328, 2493, 2858, 2493, 2858, 3040, + 3329, 2873, 3196, 2872, 3330, 2495, 2860, 3331, 3332, 3325, + 3326, 3191, 3691, 2493, 3327, 3333, 2493, 2879, 2493, 3197, + 2873, 3334, 3328, 3315, 3335, 3336, 2495, 3339, 3329, 3047, + 3340, 3341, 3330, 3342, 3224, 3331, 3332, 3224, 3343, 3337, + 3197, 3344, 3345, 3333, 3346, 3479, 1909, 3313, 2874, 3334, + 1905, 3352, 3335, 3336, 3347, 3339, 3479, 3459, 3340, 3341, + 3459, 3342, 3692, 1895, 3349, 3351, 3343, 3355, 3316, 3344, + + 3345, 3356, 3346, 3233, 3233, 3233, 3233, 3233, 3233, 3233, + 3233, 3233, 3347, 3348, 3348, 3348, 3348, 3348, 3348, 3348, + 3348, 3348, 3349, 3351, 3353, 3355, 3357, 3358, 3359, 3356, + 3360, 3361, 3362, 3363, 3250, 3250, 3250, 3250, 3250, 3250, + 3250, 3250, 3250, 3365, 3366, 3367, 3368, 3369, 3370, 3371, + 3372, 3374, 3353, 3376, 3357, 3358, 3359, 3377, 3360, 3361, + 3362, 3363, 3378, 3379, 3381, 3382, 3383, 3384, 3386, 3387, + 3388, 3365, 3366, 3367, 3368, 3369, 3370, 3371, 3372, 3374, + 3389, 3376, 3390, 3393, 3394, 3377, 3395, 3396, 3398, 3399, + 3378, 3379, 3381, 3382, 3383, 3384, 3386, 3387, 3388, 3400, + + 3403, 3401, 3404, 3405, 3406, 3407, 3408, 3409, 3389, 3402, + 3390, 3393, 3394, 3410, 3395, 3396, 3398, 3399, 3411, 3413, + 3414, 3415, 3416, 3417, 3418, 3035, 1522, 3400, 3403, 3401, + 3404, 3405, 3406, 3407, 3408, 3409, 3460, 3402, 1890, 3460, + 3420, 3410, 2866, 3421, 3710, 1710, 3411, 3413, 3414, 3415, + 3416, 3417, 3418, 2858, 2493, 3710, 2858, 2493, 2858, 2493, + 3422, 3423, 3424, 3033, 3419, 3425, 2860, 2495, 3420, 2858, + 2867, 3421, 2858, 2493, 2858, 3426, 2493, 3427, 2493, 3046, + 2861, 3197, 2860, 3196, 3428, 3429, 2495, 3430, 3422, 3423, + 3424, 3431, 3432, 3425, 3434, 3436, 2873, 3437, 3438, 3439, + + 3197, 3463, 1879, 3426, 3463, 3427, 3711, 3596, 2862, 3316, + 3597, 3542, 3428, 3429, 3542, 3430, 3543, 3711, 3607, 3431, + 3432, 3607, 3434, 3436, 2874, 3437, 3438, 3439, 3316, 3435, + 3435, 3435, 3435, 3435, 3435, 3435, 3435, 3435, 3435, 3435, + 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, + 3338, 3440, 3441, 3442, 3435, 3443, 3444, 3445, 3446, 3545, + 3668, 1844, 3545, 3668, 3546, 3338, 3348, 3348, 3348, 3348, + 3348, 3348, 3348, 3348, 3348, 3448, 3449, 3450, 3451, 3440, + 3441, 3442, 3452, 3443, 3444, 3445, 3446, 3447, 3447, 3447, + 3447, 3447, 3447, 3447, 3447, 3447, 3453, 3454, 3455, 3456, + + 3461, 3462, 3464, 3448, 3449, 3450, 3451, 3465, 3466, 3471, + 3452, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, + 3472, 3473, 3476, 3477, 3453, 3454, 3455, 3456, 3461, 3462, + 3464, 3478, 3480, 3481, 3482, 3465, 3466, 3471, 3485, 3486, + 3487, 3488, 3483, 3484, 3489, 3490, 3491, 3492, 3472, 3473, + 3476, 3477, 3493, 3494, 3495, 3496, 3497, 3498, 3499, 3478, + 3480, 3481, 3482, 3500, 3501, 3502, 3485, 3486, 3487, 3488, + 3483, 3484, 3489, 3490, 3491, 3492, 3503, 3505, 3506, 3507, + 3493, 3494, 3495, 3496, 3497, 3498, 3499, 3509, 3510, 3511, + 3512, 3500, 3501, 3502, 3513, 3514, 3515, 1826, 2493, 3516, + + 3517, 2493, 1758, 2493, 3503, 3505, 3506, 3507, 3196, 3522, + 3523, 2495, 3524, 3525, 3526, 3509, 3510, 3511, 3512, 3715, + 1753, 3716, 3513, 3514, 3515, 3197, 3433, 3516, 3517, 3433, + 3521, 3518, 3671, 3691, 3715, 3671, 3716, 3522, 3523, 3527, + 3524, 3525, 3526, 3519, 3519, 3519, 3519, 3519, 3519, 3519, + 3519, 3519, 3528, 3313, 3435, 3435, 3435, 3435, 3435, 3435, + 3435, 3435, 3435, 3435, 3435, 3529, 3530, 3527, 3447, 3447, + 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3531, 3532, 3435, + 3528, 3533, 3534, 3625, 3537, 3535, 3538, 3539, 3540, 3547, + 3548, 3550, 3463, 3529, 3530, 3463, 3551, 3549, 3552, 3542, + + 1391, 3780, 3542, 3814, 3543, 3531, 3532, 1569, 3556, 3533, + 3534, 3536, 3537, 1729, 3538, 3539, 3540, 3547, 3548, 3550, + 1725, 1713, 3559, 3560, 3551, 3561, 3552, 3555, 3555, 3555, + 3555, 3555, 3555, 3555, 3555, 3555, 3556, 3562, 3563, 3536, + 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3557, + 3559, 3560, 3564, 3561, 3565, 3558, 3566, 3567, 3569, 3571, + 3572, 3573, 3574, 3575, 3576, 3562, 3563, 3578, 3579, 3582, + 3583, 3545, 3834, 3742, 3545, 3835, 3546, 3557, 1712, 3781, + 3564, 3816, 3565, 3558, 3566, 3567, 3569, 3571, 3572, 3573, + 3574, 3575, 3576, 3585, 3586, 3578, 3579, 3582, 3583, 3584, + + 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, + 3587, 3590, 3591, 3592, 3593, 3594, 3595, 3921, 3921, 3921, + 3921, 3585, 3586, 3625, 3584, 3598, 3598, 3598, 3598, 3598, + 3598, 3598, 3598, 3598, 1710, 3600, 3601, 3602, 3587, 3590, + 3591, 3592, 3593, 3594, 3595, 3519, 3519, 3519, 3519, 3519, + 3519, 3519, 3519, 3519, 3599, 3599, 3599, 3599, 3599, 3599, + 3599, 3599, 3599, 3600, 3601, 3602, 3604, 3605, 3606, 3608, + 3609, 3610, 3611, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3613, 3614, 3615, 1653, 3618, 3616, 3621, 3622, + 3626, 3627, 3628, 1652, 3604, 3605, 3606, 3608, 3609, 3610, + + 3611, 3596, 1642, 3817, 3596, 3846, 3662, 3553, 1641, 1640, + 3613, 3614, 3615, 3617, 3618, 3630, 3621, 3622, 3626, 3627, + 3628, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, + 3554, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, + 3631, 3617, 3632, 3630, 3629, 3629, 3629, 3629, 3629, 3629, + 3629, 3629, 3629, 3633, 3635, 3636, 3637, 3638, 3639, 3640, + 3641, 3642, 3643, 3644, 3645, 3646, 3647, 3648, 3631, 3650, + 3632, 3653, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, + 3599, 3633, 3635, 3636, 3637, 3638, 3639, 3640, 3641, 3642, + 3643, 3644, 3645, 3646, 3647, 3648, 3654, 3650, 3655, 3653, + + 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, + 3584, 3656, 3658, 3659, 3660, 3664, 3607, 3665, 3664, 3607, + 3662, 3675, 1578, 3758, 3654, 3584, 3655, 3667, 3665, 3669, + 3921, 3666, 1575, 3921, 3758, 3921, 3818, 1574, 3848, 3656, + 3658, 3659, 3660, 3598, 3598, 3598, 3598, 3598, 3598, 3598, + 3598, 3598, 3673, 3676, 3677, 3667, 3678, 3669, 3670, 3670, + 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3679, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3680, 3681, 3683, + 3673, 3676, 3677, 3684, 3678, 3682, 3682, 3682, 3682, 3682, + 3682, 3682, 3682, 3682, 3687, 3679, 3694, 3688, 3695, 3661, + + 3696, 3689, 3697, 3698, 3699, 3680, 3681, 3683, 3690, 3668, + 3671, 3684, 3668, 3671, 3724, 3727, 1569, 1545, 3700, 3701, + 3702, 3703, 3687, 3553, 3694, 3688, 3695, 3704, 3696, 3689, + 3697, 3698, 3699, 3705, 3706, 3707, 3690, 3629, 3629, 3629, + 3629, 3629, 3629, 3629, 3629, 3629, 3700, 3701, 3702, 3703, + 3708, 3709, 3712, 3713, 3717, 3704, 3719, 3720, 3721, 3723, + 3726, 3705, 3706, 3707, 3665, 1544, 3665, 3665, 1541, 3921, + 3664, 3921, 3665, 3664, 3921, 3662, 3921, 3665, 3708, 3709, + 3712, 3713, 3717, 3665, 3719, 3720, 3721, 3723, 3726, 3670, + 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3730, 3731, + + 3732, 3733, 3734, 3735, 3682, 3682, 3682, 3682, 3682, 3682, + 3682, 3682, 3682, 3736, 3737, 3738, 3739, 3740, 3741, 3743, + 1540, 3744, 3745, 3746, 3747, 3748, 3730, 3731, 3732, 3733, + 3734, 3735, 3749, 3750, 3751, 3752, 3753, 3754, 3755, 3756, + 3757, 3736, 3737, 3738, 3739, 3740, 3741, 3743, 3661, 3744, + 3745, 3746, 3747, 3748, 3661, 3759, 3760, 3764, 3761, 3768, + 3749, 3750, 3751, 3752, 3753, 3754, 3755, 3756, 3757, 3762, + 3921, 3771, 3772, 3921, 3773, 3921, 3774, 3775, 3776, 3777, + 3778, 3691, 3782, 3759, 3760, 3764, 3761, 3783, 3784, 3785, + 3786, 3787, 3788, 3789, 3790, 3791, 3802, 3762, 3792, 3771, + + 3772, 3793, 3773, 1539, 3774, 3775, 3776, 3777, 3794, 3769, + 3782, 3796, 3797, 3798, 3799, 3783, 3784, 3785, 3786, 3787, + 3788, 3789, 3790, 3791, 3779, 3800, 3792, 3802, 3805, 3793, + 3806, 3692, 3807, 3808, 3809, 3810, 3794, 3812, 3819, 3796, + 3797, 3798, 3799, 3820, 3821, 3822, 3803, 3823, 3825, 3836, + 3826, 3827, 3779, 3800, 3828, 3829, 3805, 3830, 3806, 3833, + 3807, 3808, 3809, 3810, 3837, 3812, 3819, 3838, 3839, 3840, + 3841, 3820, 3821, 3822, 3842, 3823, 3825, 3769, 3826, 3827, + 3849, 3850, 3828, 3829, 3851, 3830, 3852, 3833, 3853, 3854, + 3855, 3856, 3837, 3857, 3802, 3838, 3839, 3840, 3841, 3769, + + 3834, 3865, 3842, 3834, 3865, 3863, 3863, 3866, 3849, 3850, + 3868, 3858, 3851, 3870, 3852, 3875, 3853, 3854, 3855, 3856, + 3876, 3857, 3859, 3877, 3921, 3860, 3921, 3921, 3878, 3921, + 3879, 3880, 3881, 3882, 3883, 3866, 3884, 3885, 3868, 3858, + 3888, 3870, 3865, 3875, 3803, 3865, 1538, 3863, 3876, 1537, + 3859, 3877, 1535, 3860, 1115, 873, 3878, 1482, 3879, 3880, + 3881, 3882, 3883, 3892, 3884, 3885, 3895, 3896, 3888, 3889, + 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3891, 3891, + 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3897, 3898, 3899, + 3900, 3892, 3901, 3902, 3895, 3896, 3889, 3889, 3889, 3889, + + 3889, 3889, 3889, 3889, 3889, 3904, 3904, 3904, 3904, 3904, + 3904, 3904, 3904, 3904, 3905, 3897, 3898, 3899, 3900, 3906, + 3901, 3902, 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, + 3891, 3907, 3908, 3910, 3911, 3912, 3913, 3914, 3915, 3916, + 3917, 3918, 3905, 3919, 3920, 1473, 1471, 3906, 3904, 3904, + 3904, 3904, 3904, 3904, 3904, 3904, 3904, 1466, 1461, 3907, + 3908, 3910, 3911, 3912, 3913, 3914, 3915, 3916, 3917, 3918, + 1402, 3919, 3920, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 128, 128, 128, 128, 128, + 76, 98, 98, 98, 98, 98, 98, 98, 98, 98, + + 98, 98, 98, 98, 98, 98, 98, 98, 98, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - - 128, 128, 128, 134, 134, 134, 134, 134, 134, 134, + 128, 128, 128, 128, 128, 128, 128, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 143, + 134, 134, 134, 134, 134, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 156, 156, 156, 156, 156, + 143, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 162, 162, 162, 162, 162, 162, 162, - + 156, 156, 156, 156, 156, 156, 156, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 169, 169, 169, 169, 169, 169, 169, 169, 169, - 169, 169, 169, 169, 169, 169, 169, 169, 169, 179, + 162, 162, 162, 162, 162, 169, 169, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, + 169, 169, 169, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 227, 227, 227, 227, 227, + 179, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 232, 232, 232, 232, 232, 232, 232, + + 227, 227, 227, 227, 227, 227, 227, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - - 232, 237, 237, 237, 237, 237, 237, 237, 237, 237, - 237, 237, 237, 237, 237, 237, 237, 237, 237, 238, + 232, 232, 232, 232, 232, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 238, 238, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 240, 240, 240, 240, 240, + 238, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 251, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, - 251, 251, 251, 251, 251, 251, 251, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 258, 258, 258, 258, 258, + 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, - 258, 258, 258, 266, 266, 1457, 266, 266, 266, 266, + 258, 258, 258, 258, 258, 258, 258, 266, 266, 1401, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, + + 266, 266, 266, 266, 266, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 363, 363, 363, 363, 363, 363, 363, 363, 363, + 363, 363, 363, 363, 363, 363, 363, 363, 363, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 376, 376, 376, 376, 376, + + 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, + 376, 376, 376, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 387, 387, 387, 387, 387, 387, 387, 387, 387, + 387, 387, 387, 387, 387, 387, 387, 387, 387, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 399, 399, 399, + 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, + 399, 399, 399, 399, 399, 402, 402, 402, 402, 402, + 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, + + 402, 402, 402, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 421, + 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, + 421, 421, 421, 421, 421, 421, 421, 505, 505, 505, + 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, + 505, 505, 505, 505, 505, 511, 511, 511, 511, 511, + 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, + 511, 511, 511, 516, 516, 516, 516, 516, 516, 516, + + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 517, 517, 540, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 518, + 518, 538, 518, 518, 518, 518, 518, 518, 518, 518, + 518, 518, 518, 518, 518, 518, 518, 519, 519, 533, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + + 533, 535, 535, 535, 535, 535, 535, 535, 535, 535, + 535, 535, 535, 535, 535, 535, 535, 535, 535, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 266, 266, 531, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 363, 363, 363, 363, 363, 363, 363, 363, 363, + + 363, 363, 363, 363, 363, 363, 363, 516, 363, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 514, 373, 376, 376, 376, 376, 376, + 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, + 376, 376, 376, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 639, 639, 639, 639, 639, 639, 639, 639, 639, + 639, 639, 639, 639, 639, 639, 639, 639, 639, 387, + + 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, + 387, 387, 387, 387, 387, 387, 387, 644, 510, 644, + 644, 1392, 1388, 644, 644, 644, 644, 644, 1382, 644, + 644, 644, 644, 644, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 399, 399, 399, 399, 399, 399, 399, 399, + 399, 399, 399, 399, 399, 399, 399, 399, 3921, 399, + 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, + 652, 652, 652, 652, 652, 652, 652, 652, 402, 402, + 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, + + 402, 402, 402, 402, 402, 402, 659, 659, 659, 659, + 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, + 659, 659, 659, 659, 661, 1352, 661, 661, 1344, 1333, + 661, 661, 661, 661, 661, 431, 661, 661, 661, 661, + 661, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, 411, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 421, 421, 421, + 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, + 421, 421, 421, 421, 421, 505, 505, 505, 505, 505, + + 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, + 505, 505, 505, 511, 511, 511, 511, 511, 511, 511, + 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, + 511, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 414, 516, 517, + 517, 399, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 518, 518, 395, + 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, + 518, 518, 518, 518, 518, 519, 519, 373, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + + 519, 519, 519, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 369, 533, 535, + 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, + 535, 535, 535, 535, 535, 535, 535, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 363, 540, 266, 266, 359, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 363, 363, 363, 363, 363, 363, 363, 363, 363, + 363, 363, 363, 363, 363, 363, 363, 363, 363, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 366, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 639, 639, 639, 639, 639, 639, 639, + 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, + + 639, 868, 355, 868, 868, 1276, 1214, 868, 868, 868, + 868, 868, 1213, 868, 868, 868, 868, 868, 868, 871, + 1197, 871, 871, 1188, 1176, 871, 871, 871, 871, 871, + 1155, 871, 871, 871, 871, 871, 871, 387, 387, 387, + 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, + 387, 387, 387, 387, 387, 644, 1140, 644, 644, 662, + 1115, 644, 644, 644, 644, 644, 645, 644, 644, 644, + 644, 644, 399, 399, 399, 399, 399, 399, 399, 399, + 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + + 391, 391, 391, 391, 391, 391, 391, 391, 652, 652, + 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, + 652, 652, 652, 652, 652, 652, 884, 884, 884, 884, + 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, + 884, 884, 884, 884, 886, 385, 886, 886, 385, 873, + 886, 886, 886, 886, 886, 1072, 886, 886, 886, 886, + 886, 886, 657, 657, 657, 657, 657, 657, 657, 657, + 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, + 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, + 402, 402, 402, 402, 402, 402, 402, 402, 661, 1061, + + 661, 661, 1053, 1050, 661, 661, 661, 661, 661, 1007, + 661, 661, 661, 661, 661, 659, 659, 659, 659, 659, + 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, + 659, 659, 659, 418, 418, 418, 418, 418, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, 411, 421, + 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, + 421, 421, 421, 421, 421, 421, 421, 505, 505, 505, + 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, + + 505, 505, 505, 505, 505, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 511, 511, 511, 511, 511, 511, 511, + 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, + 511, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 535, 535, 535, 535, 535, + + 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, + 535, 535, 535, 266, 266, 540, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 363, 363, 363, - 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, - 363, 363, 363, 363, 363, 366, 366, 366, 366, 366, + 356, 356, 356, 356, 356, 356, 356, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 376, 376, 376, 376, 376, 376, 376, 376, 376, - 376, 376, 376, 376, 376, 376, 376, 376, 376, 382, - 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 366, 366, 366, 366, 366, 639, 639, 639, 639, 639, + 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, - 382, 382, 382, 382, 382, 382, 382, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 391, 391, 391, 391, 391, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 391, 391, 391, 399, 399, 399, 399, 399, 399, 399, - 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, - 399, 402, 402, 402, 402, 402, 402, 402, 402, 402, + 639, 639, 639, 868, 538, 868, 868, 1005, 533, 868, + 868, 868, 868, 868, 531, 868, 868, 868, 868, 868, + 868, 871, 999, 871, 871, 516, 514, 871, 871, 871, + 871, 871, 997, 871, 871, 871, 871, 871, 871, 644, + 510, 644, 644, 992, 984, 644, 644, 644, 644, 644, + 975, 644, 644, 644, 644, 644, 652, 652, 652, 652, + 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, + 652, 652, 652, 652, 886, 974, 886, 886, 944, 934, + 886, 886, 886, 886, 886, 922, 886, 886, 886, 886, + 886, 886, 657, 657, 657, 657, 657, 657, 657, 657, + + 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, + 890, 912, 890, 890, 431, 909, 890, 890, 890, 890, + 890, 418, 890, 890, 890, 890, 890, 890, 884, 884, + 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, + 884, 884, 884, 884, 884, 884, 887, 887, 887, 887, + 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, + 887, 887, 887, 887, 661, 414, 661, 661, 662, 882, + 661, 661, 661, 661, 661, 399, 661, 661, 661, 661, + 661, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 418, 418, 418, - 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, - 418, 418, 418, 418, 418, 421, 421, 421, 421, 421, + 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, - 421, 421, 421, 505, 505, 505, 505, 505, 505, 505, + 421, 421, 421, 421, 421, 1154, 1154, 1154, 1154, 1154, + 1154, 1154, 1154, 1154, 395, 1154, 1154, 1154, 1154, 1154, + 1154, 1154, 1154, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 517, 517, 1399, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 511, 511, 511, 511, 511, 511, 511, 511, 511, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, - 517, 517, 517, 517, 517, 518, 518, 1398, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 519, 519, 540, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 528, 528, 528, 528, 528, 528, 528, 528, 528, - 528, 528, 528, 528, 528, 528, 528, 528, 528, 533, - 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, - 533, 533, 533, 533, 533, 533, 533, 535, 535, 535, + 528, 528, 528, 528, 528, 528, 528, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 540, 540, 540, 540, 540, - - 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, - 540, 540, 540, 266, 266, 538, 266, 266, 266, 266, + 535, 535, 535, 535, 535, 266, 266, 645, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 363, 363, 363, + 266, 266, 266, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, - 363, 363, 363, 533, 363, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - - 366, 366, 366, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 531, - 373, 376, 376, 376, 376, 376, 376, 376, 376, 376, - 376, 376, 376, 376, 376, 376, 376, 376, 376, 382, - 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, - 382, 382, 382, 382, 382, 382, 382, 639, 639, 639, + 363, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, - 639, 639, 639, 639, 639, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 644, 516, 644, 644, 514, 510, 644, + 639, 639, 639, 639, 639, 639, 639, 868, 864, 868, - 644, 644, 644, 644, 1389, 644, 644, 644, 644, 644, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 391, 391, 391, 391, 391, 391, 391, 391, 399, 399, + 868, 373, 369, 868, 868, 868, 868, 868, 861, 868, + 868, 868, 868, 868, 868, 871, 363, 871, 871, 359, + 858, 871, 871, 871, 871, 871, 355, 871, 871, 871, + 871, 871, 871, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, - 399, 399, 399, 399, 1385, 399, 652, 652, 652, 652, - 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, - 652, 652, 652, 652, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 659, 659, 659, 659, 659, 659, 659, 659, + 399, 886, 773, 886, 886, 538, 539, 886, 886, 886, + 886, 886, 531, 886, 886, 886, 886, 886, 886, 887, + 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, + 887, 887, 887, 887, 887, 887, 887, 661, 532, 661, + 661, 514, 515, 661, 661, 661, 661, 661, 661, 661, + + 661, 661, 661, 661, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, - - 661, 1379, 661, 661, 3908, 1349, 661, 661, 661, 661, - 661, 1341, 661, 661, 661, 661, 661, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 418, 418, 418, 418, 418, + 659, 659, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, - 418, 1330, 418, 421, 421, 421, 421, 421, 421, 421, - 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, - 421, 505, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 505, 505, 505, 505, 505, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, + 1343, 508, 1343, 1343, 752, 738, 1343, 1343, 1343, 479, + 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1355, 1355, + 1355, 1355, 1355, 1355, 1355, 734, 1355, 696, 1355, 1355, + 1355, 1355, 1355, 1355, 1355, 1355, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 516, 516, 516, 516, 516, 516, - 511, 511, 511, 511, 511, 511, 511, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 431, 516, 517, 517, 418, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 518, 518, 414, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 519, 519, 399, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 528, - 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, - 528, 528, 528, 528, 528, 528, 528, 533, 533, 533, - + 516, 516, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, - 533, 533, 533, 395, 533, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 540, 540, 540, 540, 540, 540, 540, - 540, 540, 540, 540, 540, 540, 540, 540, 540, 373, - 540, 266, 266, 369, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 363, 363, 363, - 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, - - 363, 363, 363, 363, 363, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 639, - 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, - 639, 639, 639, 639, 639, 639, 639, 867, 363, 867, - 867, 359, 355, 867, 867, 867, 867, 867, 1273, 867, - 867, 867, 867, 867, 867, 870, 1212, 870, 870, 1211, - - 1195, 870, 870, 870, 870, 870, 1186, 870, 870, 870, - 870, 870, 870, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 644, 1174, 644, 644, 1153, 1138, 644, 644, 644, - 644, 644, 662, 644, 644, 644, 644, 644, 399, 399, - 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, - 399, 399, 399, 399, 399, 399, 391, 391, 391, 391, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 391, 391, 391, 391, 652, 652, 652, 652, 652, 652, - 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, - - 652, 652, 883, 883, 883, 883, 883, 883, 883, 883, - 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, - 885, 1113, 885, 885, 645, 385, 885, 885, 885, 885, - 885, 385, 885, 885, 885, 885, 885, 885, 657, 657, - 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, - 657, 657, 657, 657, 657, 657, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 661, 872, 661, 661, 1070, 1059, - 661, 661, 661, 661, 661, 1051, 661, 661, 661, 661, - 661, 659, 659, 659, 659, 659, 659, 659, 659, 659, - - 659, 659, 659, 659, 659, 659, 659, 659, 659, 418, - 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, - 418, 418, 418, 418, 418, 418, 418, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 421, 421, 421, 421, 421, - 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, - 421, 421, 421, 505, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 511, - - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 533, 533, 533, - 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, - 533, 533, 533, 533, 533, 528, 528, 528, 528, 528, - 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, - 528, 528, 528, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, - 540, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 266, - 266, 1048, 266, 266, 266, 266, 266, 266, 266, 266, + 540, 540, 540, 540, 540, 540, 540, 540, 266, 266, + 681, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 884, 884, 884, 884, + 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, + 884, 884, 884, 884, 1519, 1519, 1519, 1519, 1519, 1519, + 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, - 266, 266, 266, 266, 266, 266, 266, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 639, 639, 639, 639, 639, 639, 639, 639, 639, - 639, 639, 639, 639, 639, 639, 639, 639, 639, 867, - 1006, 867, 867, 540, 538, 867, 867, 867, 867, 867, - 1004, 867, 867, 867, 867, 867, 867, 870, 533, 870, + 1519, 1519, 1530, 437, 428, 1530, 414, 417, 1530, 1570, + 395, 398, 390, 385, 369, 1570, 1570, 1570, 372, 1570, + 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1520, 1520, 1520, + 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, + 1520, 1520, 1520, 1520, 1520, 1717, 359, 362, 1717, 351, + 1717, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, + 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1759, + 592, 591, 1759, 558, 1759, 541, 1759, 1759, 1759, 1759, + 1894, 1894, 1894, 1894, 1938, 1938, 539, 1938, 1938, 1938, + 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, - 870, 531, 998, 870, 870, 870, 870, 870, 516, 870, - 870, 870, 870, 870, 870, 644, 514, 644, 644, 996, - 510, 644, 644, 644, 644, 644, 991, 644, 644, 644, - 644, 644, 652, 652, 652, 652, 652, 652, 652, 652, - 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, - 885, 983, 885, 885, 974, 973, 885, 885, 885, 885, - 885, 943, 885, 885, 885, 885, 885, 885, 657, 657, - 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, - 657, 657, 657, 657, 657, 657, 889, 933, 889, 889, - 921, 911, 889, 889, 889, 889, 889, 431, 889, 889, + 1938, 1938, 1940, 1940, 539, 1940, 1940, 1940, 1940, 1940, + 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, + 1944, 532, 1944, 515, 1944, 1944, 1944, 1944, 2066, 2066, + 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, + 2066, 2066, 2066, 2066, 2066, 2066, 2081, 2081, 2081, 2081, + 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, + 2081, 2081, 2081, 2081, 2133, 2133, 2133, 2133, 2133, 2133, + 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, + 2133, 2133, 2170, 2170, 508, 479, 2170, 2170, 2170, 2170, + 2170, 437, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, - 889, 889, 889, 889, 883, 883, 883, 883, 883, 883, - 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, - 883, 883, 886, 886, 886, 886, 886, 886, 886, 886, - 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, - 661, 908, 661, 661, 418, 414, 661, 661, 661, 661, - 661, 662, 661, 661, 661, 661, 661, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 421, 421, 421, 421, 421, 421, 421, + 2188, 417, 398, 2188, 2188, 398, 385, 2188, 385, 2188, + 385, 2188, 2188, 2188, 2188, 2274, 2274, 2274, 2274, 2274, + 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, + 2274, 2274, 2274, 2287, 372, 2287, 2287, 372, 362, 2287, + 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, + 2287, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, + 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2322, + 351, 317, 3921, 250, 250, 2322, 2322, 2322, 98, 2322, + 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2348, 2348, 98, + 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, - 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, - 421, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, - 881, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 505, - 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 505, 505, 505, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 528, 528, 528, 528, 528, - 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, - 528, 528, 528, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, + 2348, 2348, 2348, 2348, 2348, 2350, 2350, 98, 2350, 2350, + 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, + 2350, 2350, 2350, 2377, 98, 98, 2377, 2377, 98, 98, + 2377, 98, 2377, 161, 2377, 2377, 2377, 2377, 2390, 161, + 160, 160, 3921, 3921, 2390, 2390, 2390, 3921, 2390, 2390, + 2390, 2390, 2390, 2390, 2390, 2390, 2401, 2401, 3921, 2401, + 2401, 3921, 2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401, + 2401, 2401, 2401, 2406, 3921, 2406, 3921, 2406, 2406, 2406, + 2406, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2289, - 535, 266, 266, 399, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 363, - 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, - 363, 363, 363, 363, 363, 363, 363, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 639, 639, 639, 639, 639, - 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, - 639, 639, 639, 867, 395, 867, 867, 645, 863, 867, - 867, 867, 867, 867, 373, 867, 867, 867, 867, 867, - 867, 870, 369, 870, 870, 860, 363, 870, 870, 870, + 3921, 2289, 2289, 3921, 3921, 2289, 2289, 2289, 2289, 2289, + 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2550, 2550, 2550, + 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, + 2550, 2550, 2550, 2550, 2550, 2553, 2553, 2553, 2553, 2553, + 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, + 2553, 2553, 2553, 2560, 3921, 3921, 2560, 3921, 2560, 3921, + 2560, 2560, 2560, 2560, 2580, 3921, 2580, 3921, 2580, 2580, + 2580, 2580, 2582, 3921, 3921, 2582, 3921, 2582, 3921, 2582, + 2582, 2582, 2582, 2614, 2614, 3921, 2614, 2614, 2614, 2614, + 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, - 870, 870, 359, 870, 870, 870, 870, 870, 870, 399, - 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, - 399, 399, 399, 399, 399, 399, 399, 885, 857, 885, - 885, 355, 773, 885, 885, 885, 885, 885, 538, 885, - 885, 885, 885, 885, 885, 886, 886, 886, 886, 886, - 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, - 886, 886, 886, 661, 539, 661, 661, 531, 532, 661, - 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, - 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, - 659, 659, 659, 659, 659, 659, 659, 659, 418, 418, + 2681, 3921, 2681, 2681, 3921, 3921, 2681, 2681, 2681, 2681, + 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2495, 2495, 2495, 2495, + 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, + 2495, 2495, 2495, 2495, 2692, 2692, 2692, 2692, 2692, 2692, + 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, + 2692, 2692, 2696, 3921, 2696, 2696, 3921, 3921, 2696, 2696, + 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, + 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, - 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, - 418, 418, 418, 418, 418, 418, 1340, 514, 1340, 1340, - 515, 508, 1340, 1340, 1340, 752, 1340, 1340, 1340, 1340, - 1340, 1340, 1340, 1340, 1352, 1352, 1352, 1352, 1352, 1352, - 1352, 738, 1352, 479, 1352, 1352, 1352, 1352, 1352, 1352, - 1352, 1352, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, - 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 533, 533, - 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2081, 2081, + 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, + 2081, 2081, 2081, 2081, 2081, 2081, 2348, 2348, 3921, 2348, + 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, + 2348, 2348, 2348, 2348, 2550, 2550, 2550, 2550, 2550, 2550, + 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, + 2550, 2550, 2350, 2350, 3921, 2350, 2350, 2350, 2350, 2350, + 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, + 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, + 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2744, 3921, - 533, 533, 533, 533, 533, 533, 540, 540, 540, 540, - 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, - 540, 540, 540, 540, 266, 266, 734, 266, 266, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 883, 883, 883, 883, 883, 883, 883, 883, - 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1526, 696, - 681, 1526, 437, 428, 1526, 1566, 414, 417, 395, 398, - 390, 1566, 1566, 1566, 385, 1566, 1566, 1566, 1566, 1566, + 2744, 3921, 2744, 2744, 2744, 2744, 2560, 3921, 2560, 3921, + 2560, 2560, 2560, 2560, 2745, 3921, 2745, 3921, 2745, 2745, + 2745, 2745, 2756, 3921, 3921, 2756, 2756, 3921, 3921, 2756, + 3921, 2756, 3921, 2756, 2756, 2756, 2756, 2580, 3921, 3921, + 2580, 3921, 2580, 3921, 2580, 2580, 2580, 2580, 2765, 3921, + 2765, 3921, 2765, 2765, 2765, 2765, 2582, 3921, 2582, 3921, + 2582, 2582, 2582, 2582, 2774, 2774, 3921, 2774, 2774, 3921, + 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, + 2774, 2793, 3921, 3921, 2793, 2793, 3921, 3921, 2793, 3921, + 2793, 3921, 2793, 2793, 2793, 2793, 2614, 2614, 3921, 2614, - 1566, 1566, 1566, 1516, 1516, 1516, 1516, 1516, 1516, 1516, - 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, - 1516, 1712, 369, 372, 1712, 359, 1712, 1749, 1749, 1749, - 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, - 1749, 1749, 1749, 1749, 1749, 1754, 362, 351, 1754, 592, - 1754, 591, 1754, 1754, 1754, 1754, 1888, 1888, 1888, 1888, - 1932, 1932, 558, 1932, 1932, 1932, 1932, 1932, 1932, 1932, - 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1934, 1934, - 541, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, - 1934, 1934, 1934, 1934, 1934, 1934, 1938, 539, 1938, 539, + 2614, 3921, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, + 2614, 2614, 2614, 2797, 2797, 2797, 2797, 2797, 2797, 2797, + 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797, + 2797, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, + 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2066, + 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, + 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2681, 3921, 2681, + 2681, 3921, 3921, 2681, 2681, 2681, 2681, 2681, 2681, 2681, + 2681, 2681, 2681, 2681, 2681, 2287, 3921, 2287, 2287, 3921, + 3921, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, - 1938, 1938, 1938, 1938, 2059, 2059, 2059, 2059, 2059, 2059, - 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, - 2059, 2059, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, - 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, - 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, - 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2162, 2162, - 532, 515, 2162, 2162, 2162, 2162, 2162, 508, 2162, 2162, - 2162, 2162, 2162, 2162, 2162, 2162, 2180, 479, 437, 2180, - 2180, 417, 398, 2180, 398, 2180, 385, 2180, 2180, 2180, - 2180, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, + 2287, 2287, 2287, 2857, 2857, 2857, 2857, 2857, 2857, 2857, + 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, + 2857, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2858, + 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, + 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2289, 3921, 2289, 2289, 3921, + 3921, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, + 2289, 2289, 2289, 2871, 2871, 2871, 2871, 2871, 2871, 2871, - 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2279, - 385, 2279, 2279, 385, 372, 2279, 2279, 2279, 2279, 2279, - 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2284, 2284, 2284, - 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, - 2284, 2284, 2284, 2284, 2284, 2314, 372, 362, 351, 317, - 3908, 2314, 2314, 2314, 250, 2314, 2314, 2314, 2314, 2314, - 2314, 2314, 2314, 2340, 2340, 250, 2340, 2340, 2340, 2340, - 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, - 2340, 2342, 2342, 98, 2342, 2342, 2342, 2342, 2342, 2342, - 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2368, + 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, + 2871, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, + 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2692, + 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, + 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2696, 3921, 2696, + 2696, 3921, 3921, 2696, 2696, 2696, 2696, 2696, 2696, 2696, + 2696, 2696, 2696, 2696, 2696, 2292, 2292, 2292, 2292, 2292, + 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, + 2292, 2292, 2292, 2081, 2081, 2081, 2081, 2081, 2081, 2081, + 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, - 98, 98, 2368, 2368, 98, 98, 2368, 98, 2368, 98, - 2368, 2368, 2368, 2368, 2381, 98, 161, 161, 160, 160, - 2381, 2381, 2381, 3908, 2381, 2381, 2381, 2381, 2381, 2381, - 2381, 2381, 2392, 2392, 3908, 2392, 2392, 3908, 2392, 2392, - 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2397, - 3908, 2397, 3908, 2397, 2397, 2397, 2397, 2483, 2483, 2483, - 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, - 2483, 2483, 2483, 2483, 2483, 2281, 3908, 2281, 2281, 3908, - 3908, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, - 2281, 2281, 2281, 2541, 2541, 2541, 2541, 2541, 2541, 2541, + 2081, 2744, 3921, 3921, 2744, 3921, 2744, 3921, 2744, 2744, + 2744, 2744, 2745, 3921, 2745, 3921, 2745, 2745, 2745, 2745, + 2931, 3921, 2931, 3921, 2931, 2931, 2931, 2931, 2756, 3921, + 2756, 3921, 2756, 2756, 2756, 2756, 2765, 3921, 3921, 2765, + 3921, 2765, 3921, 2765, 2765, 2765, 2765, 2774, 2774, 3921, + 2774, 2774, 3921, 2774, 2774, 2774, 2774, 2774, 2774, 2774, + 2774, 2774, 2774, 2774, 2960, 3921, 3921, 2960, 2960, 3921, + 3921, 2960, 3921, 2960, 3921, 2960, 2960, 2960, 2960, 2969, + 3921, 2969, 3921, 2969, 2969, 2969, 2969, 2793, 3921, 2793, + 3921, 2793, 2793, 2793, 2793, 2797, 2797, 2797, 2797, 2797, - 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, - 2541, 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544, - 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2551, - 3908, 3908, 2551, 3908, 2551, 3908, 2551, 2551, 2551, 2551, - 2570, 3908, 2570, 3908, 2570, 2570, 2570, 2570, 2572, 3908, - 3908, 2572, 3908, 2572, 3908, 2572, 2572, 2572, 2572, 2604, - 2604, 3908, 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604, - 2604, 2604, 2604, 2604, 2604, 2604, 2671, 3908, 2671, 2671, - 3908, 3908, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, - 2671, 2671, 2671, 2671, 2484, 2484, 2484, 2484, 2484, 2484, - - 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, - 2484, 2484, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, - 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, - 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, - 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2686, 3908, - 2686, 2686, 3908, 3908, 2686, 2686, 2686, 2686, 2686, 2686, - 2686, 2686, 2686, 2686, 2686, 2686, 2284, 2284, 2284, 2284, - 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, - 2284, 2284, 2284, 2284, 2074, 2074, 2074, 2074, 2074, 2074, - 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, - - 2074, 2074, 2340, 2340, 3908, 2340, 2340, 2340, 2340, 2340, - 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, - 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, - 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2342, 2342, - 3908, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, - 2342, 2342, 2342, 2342, 2342, 2342, 2544, 2544, 2544, 2544, - 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544, - 2544, 2544, 2544, 2544, 2734, 3908, 2734, 3908, 2734, 2734, - 2734, 2734, 2551, 3908, 2551, 3908, 2551, 2551, 2551, 2551, - 2735, 3908, 2735, 3908, 2735, 2735, 2735, 2735, 2745, 3908, - - 3908, 2745, 2745, 3908, 3908, 2745, 3908, 2745, 3908, 2745, - 2745, 2745, 2745, 2570, 3908, 3908, 2570, 3908, 2570, 3908, - 2570, 2570, 2570, 2570, 2754, 3908, 2754, 3908, 2754, 2754, - 2754, 2754, 2572, 3908, 2572, 3908, 2572, 2572, 2572, 2572, - 2763, 2763, 3908, 2763, 2763, 3908, 2763, 2763, 2763, 2763, - 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2782, 3908, 3908, - 2782, 2782, 3908, 3908, 2782, 3908, 2782, 3908, 2782, 2782, - 2782, 2782, 2604, 2604, 3908, 2604, 2604, 3908, 2604, 2604, - 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2786, - 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, - - 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2266, 2266, 2266, - 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, - 2266, 2266, 2266, 2266, 2266, 2059, 2059, 2059, 2059, 2059, - 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, - 2059, 2059, 2059, 2671, 3908, 2671, 2671, 3908, 3908, 2671, - 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, - 2671, 2279, 3908, 2279, 2279, 3908, 3908, 2279, 2279, 2279, - 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2846, - 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, - 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2483, 2483, 2483, - - 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, - 2483, 2483, 2483, 2483, 2483, 2847, 2847, 2847, 2847, 2847, - 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, - 2847, 2847, 2847, 2484, 2484, 2484, 2484, 2484, 2484, 2484, - 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, - 2484, 2281, 3908, 2281, 2281, 3908, 3908, 2281, 2281, 2281, - 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2860, + 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797, + 2797, 2797, 2797, 2274, 2274, 2274, 2274, 2274, 2274, 2274, + 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, + 2274, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, + 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, - 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2486, 2486, 2486, - 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, + 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, - 2486, 2486, 2486, 2486, 2486, 2682, 2682, 2682, 2682, 2682, - 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, - 2682, 2682, 2682, 2686, 3908, 2686, 2686, 3908, 3908, 2686, - 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, - 2686, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, - 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2074, - 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, - 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2734, 3908, 3908, - 2734, 3908, 2734, 3908, 2734, 2734, 2734, 2734, 2735, 3908, - 2735, 3908, 2735, 2735, 2735, 2735, 2919, 3908, 2919, 3908, + 2493, 2493, 2493, 2289, 3921, 2289, 2289, 3921, 3921, 2289, + 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, + 2289, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, + 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2495, + 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, + 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2692, 2692, 2692, + 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, + 2692, 2692, 2692, 2692, 2692, 2292, 2292, 2292, 2292, 2292, + 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, + 2292, 2292, 2292, 3087, 3087, 3921, 3921, 3087, 3087, 3087, - 2919, 2919, 2919, 2919, 2745, 3908, 2745, 3908, 2745, 2745, - 2745, 2745, 2754, 3908, 3908, 2754, 3908, 2754, 3908, 2754, - 2754, 2754, 2754, 2763, 2763, 3908, 2763, 2763, 3908, 2763, - 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, - 2948, 3908, 3908, 2948, 2948, 3908, 3908, 2948, 3908, 2948, - 3908, 2948, 2948, 2948, 2948, 2957, 3908, 2957, 3908, 2957, - 2957, 2957, 2957, 2782, 3908, 2782, 3908, 2782, 2782, 2782, - 2782, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, - 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2266, - 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, + 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, + 3087, 3100, 3100, 3921, 3100, 3100, 3921, 3100, 3100, 3100, + 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3102, 3921, + 3921, 3102, 3102, 3921, 3921, 3102, 3921, 3102, 3921, 3102, + 3102, 3102, 3102, 3105, 3105, 3105, 3105, 3921, 3105, 3105, + 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, + 3105, 3119, 3921, 3921, 3921, 3921, 3921, 3119, 3119, 3119, + 3921, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 2960, + 3921, 2960, 3921, 2960, 2960, 2960, 2960, 2969, 3921, 3921, + 2969, 3921, 2969, 3921, 2969, 2969, 2969, 2969, 3195, 3195, - 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2847, 2847, 2847, - 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, - 2847, 2847, 2847, 2847, 2847, 2849, 2849, 2849, 2849, 2849, - 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, - 2849, 2849, 2849, 2483, 2483, 2483, 2483, 2483, 2483, 2483, - 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, - 2483, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, - 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2281, - 3908, 2281, 2281, 3908, 3908, 2281, 2281, 2281, 2281, 2281, - 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2860, 2860, 2860, + 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, + 3195, 3195, 3195, 3195, 3195, 3195, 3237, 3921, 3237, 3921, + 3237, 3237, 3237, 3237, 3258, 3258, 3921, 3258, 3258, 3921, + 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, + 3258, 3338, 3921, 3921, 3338, 3338, 3921, 3921, 3921, 3921, + 3921, 3921, 3338, 3354, 3354, 3921, 3921, 3921, 3354, 3354, + 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, + 3354, 3457, 3457, 3921, 3457, 3457, 3921, 3457, 3457, 3457, + 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3467, 3467, + 3921, 3467, 3467, 3921, 3467, 3467, 3467, 3467, 3467, 3467, - 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, - 2860, 2860, 2860, 2860, 2860, 2486, 2486, 2486, 2486, 2486, - 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, - 2486, 2486, 2486, 2682, 2682, 2682, 2682, 2682, 2682, 2682, - 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, - 2682, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, - 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 3087, - 3087, 3908, 3087, 3087, 3908, 3087, 3087, 3087, 3087, 3087, - 3087, 3087, 3087, 3087, 3087, 3087, 3089, 3908, 3908, 3089, - 3089, 3908, 3908, 3089, 3908, 3089, 3908, 3089, 3089, 3089, + 3467, 3467, 3467, 3467, 3467, 3541, 3541, 3921, 3541, 3541, + 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, + 3541, 3541, 3544, 3544, 3921, 3544, 3544, 3544, 3544, 3544, + 3544, 3544, 3544, 3544, 3544, 3544, 3544, 3544, 3544, 3588, + 3921, 3588, 3921, 3588, 3921, 3588, 3588, 3588, 3588, 3619, + 3619, 3921, 3619, 3619, 3921, 3619, 3619, 3619, 3619, 3619, + 3619, 3619, 3619, 3619, 3619, 3619, 3620, 3620, 3921, 3620, + 3620, 3921, 3620, 3620, 3620, 3620, 3620, 3620, 3620, 3620, + 3620, 3620, 3620, 3623, 3623, 3623, 3623, 3623, 3623, 3623, + 3623, 3623, 3623, 3623, 3623, 3623, 3623, 3623, 3623, 3623, - 3089, 3092, 3092, 3092, 3092, 3908, 3092, 3092, 3092, 3092, - 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3106, - 3908, 3908, 3908, 3908, 3908, 3106, 3106, 3106, 3908, 3106, - 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3182, 3182, 3182, - 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, - 3182, 3182, 3182, 3182, 3182, 3224, 3908, 3224, 3908, 3224, - 3224, 3224, 3224, 3245, 3245, 3908, 3245, 3245, 3908, 3245, - 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, - 3325, 3908, 3908, 3325, 3325, 3908, 3908, 3908, 3908, 3908, - 3908, 3325, 3341, 3341, 3908, 3908, 3908, 3341, 3341, 3341, + 3623, 3657, 3921, 3657, 3921, 3657, 3921, 3657, 3657, 3657, + 3657, 3661, 3661, 3921, 3921, 3661, 3661, 3661, 3661, 3661, + 3921, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3663, + 3663, 3921, 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, + 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3672, 3672, 3921, + 3672, 3672, 3921, 3672, 3672, 3672, 3672, 3672, 3672, 3672, + 3672, 3672, 3672, 3672, 3674, 3674, 3921, 3921, 3674, 3674, + 3674, 3674, 3674, 3921, 3674, 3674, 3674, 3674, 3674, 3674, + 3674, 3674, 3722, 3921, 3921, 3921, 3921, 3921, 3722, 3722, + 3722, 3921, 3722, 3722, 3722, 3722, 3722, 3722, 3722, 3722, - 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, - 3444, 3444, 3908, 3444, 3444, 3908, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3454, 3454, 3908, - 3454, 3454, 3908, 3454, 3454, 3454, 3454, 3454, 3454, 3454, - 3454, 3454, 3454, 3454, 3528, 3528, 3908, 3528, 3528, 3528, - 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, - 3528, 3531, 3531, 3908, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3575, 3908, - 3575, 3908, 3575, 3908, 3575, 3575, 3575, 3575, 3606, 3606, - 3908, 3606, 3606, 3908, 3606, 3606, 3606, 3606, 3606, 3606, + 3665, 3665, 3921, 3665, 3665, 3921, 3665, 3665, 3665, 3665, + 3665, 3665, 3665, 3665, 3665, 3665, 3665, 3725, 3921, 3921, + 3725, 3725, 3921, 3921, 3725, 3921, 3725, 3921, 3725, 3725, + 3725, 3725, 3728, 3728, 3921, 3728, 3728, 3921, 3728, 3728, + 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3729, + 3921, 3921, 3921, 3921, 3921, 3729, 3729, 3729, 3921, 3729, + 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3765, 3921, 3765, + 3921, 3765, 3765, 3765, 3765, 3766, 3766, 3921, 3766, 3766, + 3921, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, + 3766, 3766, 3767, 3767, 3767, 3767, 3767, 3767, 3767, 3767, - 3606, 3606, 3606, 3606, 3606, 3607, 3607, 3908, 3607, 3607, - 3908, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, - 3607, 3607, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, - 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, - 3644, 3908, 3644, 3908, 3644, 3908, 3644, 3644, 3644, 3644, - 3648, 3648, 3908, 3908, 3648, 3648, 3648, 3648, 3648, 3908, - 3648, 3648, 3648, 3648, 3648, 3648, 3648, 3648, 3650, 3650, - 3908, 3650, 3650, 3650, 3650, 3650, 3650, 3650, 3650, 3650, - 3650, 3650, 3650, 3650, 3650, 3650, 3659, 3659, 3908, 3659, - 3659, 3908, 3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659, + 3767, 3767, 3767, 3767, 3767, 3767, 3767, 3767, 3767, 3767, + 3811, 3811, 3921, 3811, 3811, 3921, 3811, 3811, 3811, 3811, + 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3813, 3921, 3921, + 3921, 3813, 3813, 3813, 3813, 3813, 3921, 3813, 3813, 3813, + 3813, 3813, 3813, 3813, 3813, 3815, 3921, 3921, 3921, 3815, + 3815, 3815, 3815, 3815, 3921, 3815, 3815, 3815, 3815, 3815, + 3815, 3815, 3815, 3843, 3843, 3921, 3843, 3843, 3921, 3843, + 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, + 3844, 3844, 3921, 3844, 3844, 3921, 3844, 3844, 3844, 3844, + 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3845, 3921, 3921, - 3659, 3659, 3659, 3661, 3661, 3908, 3908, 3661, 3661, 3661, - 3661, 3661, 3908, 3661, 3661, 3661, 3661, 3661, 3661, 3661, - 3661, 3709, 3908, 3908, 3908, 3908, 3908, 3709, 3709, 3709, - 3908, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3652, - 3652, 3908, 3652, 3652, 3908, 3652, 3652, 3652, 3652, 3652, - 3652, 3652, 3652, 3652, 3652, 3652, 3712, 3908, 3908, 3712, - 3712, 3908, 3908, 3712, 3908, 3712, 3908, 3712, 3712, 3712, - 3712, 3715, 3715, 3908, 3715, 3715, 3908, 3715, 3715, 3715, - 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3716, 3908, - 3908, 3908, 3908, 3908, 3716, 3716, 3716, 3908, 3716, 3716, + 3921, 3845, 3845, 3845, 3845, 3845, 3921, 3845, 3845, 3845, + 3845, 3845, 3845, 3845, 3845, 3847, 3921, 3921, 3921, 3847, + 3847, 3847, 3847, 3847, 3921, 3847, 3847, 3847, 3847, 3847, + 3847, 3847, 3847, 3861, 3921, 3861, 3921, 3861, 3921, 3861, + 3861, 3861, 3861, 3864, 3864, 3921, 3864, 3864, 3864, 3864, + 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, + 3873, 3873, 3921, 3873, 3873, 3921, 3873, 3873, 3873, 3873, + 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3874, 3874, 3921, + 3874, 3874, 3921, 3874, 3874, 3874, 3874, 3874, 3874, 3874, + 3874, 3874, 3874, 3874, 3886, 3921, 3886, 3921, 3886, 3921, - 3716, 3716, 3716, 3716, 3716, 3716, 3752, 3908, 3752, 3908, - 3752, 3752, 3752, 3752, 3753, 3753, 3908, 3753, 3753, 3908, - 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, - 3753, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, - 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3798, - 3798, 3908, 3798, 3798, 3908, 3798, 3798, 3798, 3798, 3798, - 3798, 3798, 3798, 3798, 3798, 3798, 3800, 3908, 3908, 3908, - 3800, 3800, 3800, 3800, 3800, 3908, 3800, 3800, 3800, 3800, - 3800, 3800, 3800, 3800, 3802, 3908, 3908, 3908, 3802, 3802, - 3802, 3802, 3802, 3908, 3802, 3802, 3802, 3802, 3802, 3802, + 3886, 3886, 3886, 3886, 3887, 3921, 3921, 3921, 3921, 3921, + 3887, 3887, 3887, 3921, 3887, 3887, 3887, 3887, 3887, 3887, + 3887, 3887, 75, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3802, 3802, 3830, 3830, 3908, 3830, 3830, 3908, 3830, 3830, - 3830, 3830, 3830, 3830, 3830, 3830, 3830, 3830, 3830, 3831, - 3831, 3908, 3831, 3831, 3908, 3831, 3831, 3831, 3831, 3831, - 3831, 3831, 3831, 3831, 3831, 3831, 3832, 3908, 3908, 3908, - 3832, 3832, 3832, 3832, 3832, 3908, 3832, 3832, 3832, 3832, - 3832, 3832, 3832, 3832, 3834, 3908, 3908, 3908, 3834, 3834, - 3834, 3834, 3834, 3908, 3834, 3834, 3834, 3834, 3834, 3834, - 3834, 3834, 3848, 3908, 3848, 3908, 3848, 3908, 3848, 3848, - 3848, 3848, 3851, 3851, 3908, 3851, 3851, 3851, 3851, 3851, - 3851, 3851, 3851, 3851, 3851, 3851, 3851, 3851, 3851, 3860, - - 3860, 3908, 3860, 3860, 3908, 3860, 3860, 3860, 3860, 3860, - 3860, 3860, 3860, 3860, 3860, 3860, 3861, 3861, 3908, 3861, - 3861, 3908, 3861, 3861, 3861, 3861, 3861, 3861, 3861, 3861, - 3861, 3861, 3861, 3873, 3908, 3873, 3908, 3873, 3908, 3873, - 3873, 3873, 3873, 3874, 3908, 3908, 3908, 3908, 3908, 3874, - 3874, 3874, 3908, 3874, 3874, 3874, 3874, 3874, 3874, 3874, - 3874, 75, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908 + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921 } ; -static const flex_int16_t yy_chk[14050] = +static const flex_int16_t yy_chk[14111] = { 0, 0, 1, 1, 1, 1, 5, 1, 1, 5, 6, 95, 95, 6, 0, 1, 7, 7, 7, 7, 7, - 7, 0, 9, 9, 7, 9, 9, 13, 7, 1186, - 1, 13, 1, 1, 3886, 83, 13, 1, 1, 1, - 116, 116, 14, 1, 1, 1, 14, 1, 1, 3874, - 9, 14, 1, 872, 15, 15, 1, 15, 1, 872, + 7, 0, 9, 9, 7, 9, 9, 13, 7, 1188, + 1, 13, 1, 1, 3899, 83, 13, 1, 1, 1, + 116, 116, 14, 1, 1, 1, 14, 1, 1, 3887, + 9, 14, 1, 873, 15, 15, 1, 15, 1, 873, 1, 1, 15, 83, 15, 1, 1, 1, 71, 84, - 7, 1, 1, 1, 1186, 1, 1, 9, 132, 132, + 7, 1, 1, 1, 1188, 1, 1, 9, 132, 132, 1, 2, 2, 2, 2, 71, 2, 2, 10, 10, 72, 10, 10, 85, 2, 21, 21, 84, 21, 7, 7, 86, 11, 11, 49, 11, 11, 72, 49, 15, - 2, 49, 2, 2, 87, 3861, 10, 2, 2, 2, + 2, 49, 2, 2, 87, 3874, 10, 2, 2, 2, 88, 85, 773, 2, 2, 2, 89, 2, 2, 86, 11, 92, 2, 250, 118, 250, 2, 118, 2, 773, - 2, 2, 87, 10, 3860, 2, 2, 2, 88, 3855, + 2, 2, 87, 10, 3873, 2, 2, 2, 88, 3868, 21, 2, 2, 2, 89, 2, 2, 11, 49, 92, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -3432,8 +3443,8 @@ static const flex_int16_t yy_chk[14050] = 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 8, 8, 8, 8, 8, 8, 93, 12, 12, 8, 12, 12, - 3851, 8, 16, 16, 2279, 16, 17, 17, 3831, 17, - 16, 17, 16, 47, 17, 47, 18, 18, 2279, 18, + 3864, 8, 16, 16, 2287, 16, 17, 17, 3844, 17, + 16, 17, 16, 47, 17, 47, 18, 18, 2287, 18, 47, 18, 93, 12, 18, 19, 19, 137, 19, 137, 19, 20, 20, 19, 20, 257, 20, 257, 19, 20, @@ -3441,12 +3452,12 @@ static const flex_int16_t yy_chk[14050] = 12, 220, 81, 297, 90, 33, 33, 16, 33, 100, 33, 17, 90, 33, 297, 27, 27, 47, 27, 94, 27, 18, 8, 8, 137, 27, 35, 35, 27, 35, - 19, 27, 90, 3830, 35, 91, 20, 100, 28, 28, + 19, 27, 90, 3843, 35, 91, 20, 100, 28, 28, 90, 28, 27, 28, 48, 101, 81, 139, 28, 139, 22, 28, 91, 388, 28, 220, 29, 29, 104, 29, - 33, 29, 3827, 91, 29, 28, 29, 107, 143, 29, - 27, 143, 29, 101, 30, 30, 3825, 30, 108, 30, - 91, 35, 30, 29, 30, 3820, 104, 30, 36, 36, + 33, 29, 3840, 91, 29, 28, 29, 107, 143, 29, + 27, 143, 29, 101, 30, 30, 3838, 30, 108, 30, + 91, 35, 30, 29, 30, 3833, 104, 30, 36, 36, 30, 36, 388, 28, 139, 107, 36, 213, 213, 27, 27, 30, 223, 223, 31, 31, 108, 31, 109, 31, @@ -3456,10 +3467,10 @@ static const flex_int16_t yy_chk[14050] = 34, 32, 34, 36, 34, 114, 65, 34, 39, 39, 39, 39, 32, 39, 115, 40, 40, 40, 40, 31, 40, 39, 105, 140, 105, 45, 196, 219, 40, 196, - 219, 46, 219, 114, 65, 195, 195, 195, 195, 3791, - 32, 225, 115, 3789, 225, 226, 226, 265, 265, 97, + 219, 46, 219, 114, 65, 195, 195, 195, 195, 3804, + 32, 225, 115, 3802, 225, 226, 226, 265, 265, 97, - 105, 140, 105, 3785, 34, 37, 37, 37, 37, 37, + 105, 140, 105, 3798, 34, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, @@ -3470,58 +3481,58 @@ static const flex_int16_t yy_chk[14050] = 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 41, 41, 41, 41, 147, 41, 42, 42, - 42, 42, 153, 42, 43, 43, 43, 43, 3784, 43, + 42, 42, 153, 42, 43, 43, 43, 43, 3797, 43, 44, 44, 44, 44, 50, 44, 102, 66, 50, 59, 66, 50, 286, 286, 147, 66, 73, 60, 102, 73, 153, 73, 129, 74, 73, 129, 74, 283, 74, 66, 283, 74, 315, 318, 102, 315, 318, 41, 73, 185, 59, 67, 59, 42, 185, 74, 102, 173, 60, 43, - 60, 59, 59, 59, 59, 44, 2683, 66, 50, 60, + 60, 59, 59, 59, 59, 44, 2693, 66, 50, 60, 60, 60, 60, 68, 77, 77, 73, 77, 59, 348, 59, 183, 67, 74, 67, 173, 60, 129, 60, 59, 59, 59, 59, 67, 67, 67, 67, 60, 60, 60, - 60, 185, 99, 484, 68, 99, 68, 103, 2683, 183, + 60, 185, 99, 484, 68, 99, 68, 103, 2693, 183, 67, 106, 67, 111, 103, 68, 68, 68, 68, 189, - 110, 67, 67, 67, 67, 106, 348, 3777, 111, 77, + 110, 67, 67, 67, 67, 106, 348, 3790, 111, 77, 99, 106, 68, 99, 68, 103, 110, 112, 177, 106, - 177, 111, 103, 68, 68, 68, 68, 189, 110, 3770, + 177, 111, 103, 68, 68, 68, 68, 189, 110, 3783, 113, 309, 112, 106, 113, 113, 111, 484, 145, 106, - 198, 145, 309, 2848, 110, 112, 119, 119, 119, 119, + 198, 145, 309, 2859, 110, 112, 119, 119, 119, 119, 201, 119, 120, 120, 120, 120, 179, 120, 113, 179, 112, 177, 113, 113, 121, 121, 121, 121, 198, 121, 126, 126, 126, 126, 199, 126, 203, 133, 201, 138, - 133, 199, 138, 142, 142, 2848, 187, 138, 145, 138, + 133, 199, 138, 142, 142, 2859, 187, 138, 145, 138, 142, 187, 142, 199, 133, 133, 148, 148, 436, 436, 148, 119, 199, 148, 203, 133, 179, 120, 133, 199, - 144, 156, 156, 144, 156, 144, 3769, 181, 144, 121, + 144, 156, 156, 144, 156, 144, 3782, 181, 144, 121, 181, 199, 133, 133, 205, 126, 131, 131, 131, 131, 131, 131, 208, 131, 138, 211, 131, 142, 187, 405, 131, 149, 131, 131, 149, 131, 131, 131, 188, 149, 148, 188, 205, 642, 131, 131, 131, 131, 131, 131, - 208, 131, 3755, 211, 131, 144, 156, 181, 131, 151, + 208, 131, 3768, 211, 131, 144, 156, 181, 131, 151, 131, 131, 151, 131, 131, 131, 150, 151, 405, 150, 494, 150, 157, 157, 150, 157, 155, 155, 200, 150, 155, 149, 642, 155, 159, 159, 159, 159, 155, 162, 162, 200, 162, 188, 162, 166, 166, 212, 166, 346, - 166, 346, 162, 875, 380, 3752, 200, 380, 166, 151, - 169, 166, 3743, 169, 210, 169, 162, 210, 169, 200, - 435, 150, 166, 435, 494, 212, 2861, 157, 167, 167, - 155, 167, 169, 167, 867, 168, 168, 230, 168, 159, - 168, 167, 875, 202, 162, 210, 346, 1386, 168, 186, + 166, 346, 162, 876, 380, 3765, 200, 380, 166, 151, + 169, 166, 3756, 169, 210, 169, 162, 210, 169, 200, + 435, 150, 166, 435, 494, 212, 2872, 157, 167, 167, + 155, 167, 169, 167, 868, 168, 168, 230, 168, 159, + 168, 167, 876, 202, 162, 210, 346, 1389, 168, 186, 166, 170, 186, 202, 170, 167, 170, 186, 206, 170, - 169, 170, 168, 3726, 170, 230, 206, 171, 2861, 235, + 169, 170, 168, 3739, 170, 230, 206, 171, 2872, 235, - 171, 202, 171, 162, 162, 171, 903, 359, 170, 166, + 171, 202, 171, 162, 162, 171, 904, 359, 170, 166, 166, 202, 224, 167, 414, 224, 206, 224, 174, 171, - 168, 174, 1386, 174, 206, 176, 174, 235, 176, 174, - 176, 243, 867, 176, 186, 176, 170, 498, 176, 2055, - 174, 2055, 167, 167, 178, 178, 521, 171, 178, 168, + 168, 174, 1389, 174, 206, 176, 174, 235, 176, 174, + 176, 243, 868, 176, 186, 176, 170, 498, 176, 2062, + 174, 2062, 167, 167, 178, 178, 521, 171, 178, 168, 168, 178, 176, 178, 359, 180, 178, 521, 180, 243, - 180, 414, 244, 180, 3725, 184, 184, 224, 174, 184, - 178, 3716, 184, 903, 190, 190, 190, 486, 486, 197, + 180, 414, 244, 180, 3738, 184, 184, 224, 174, 184, + 178, 3729, 184, 904, 190, 190, 190, 486, 486, 197, 176, 190, 192, 192, 192, 192, 204, 245, 197, 209, 244, 498, 197, 209, 207, 192, 246, 197, 178, 209, @@ -3532,7 +3543,7 @@ static const flex_int16_t yy_chk[14050] = 214, 214, 214, 214, 217, 217, 217, 217, 218, 218, 218, 218, 227, 218, 221, 221, 221, 221, 247, 221, 222, 222, 222, 222, 236, 222, 248, 236, 251, 253, - 228, 251, 260, 2056, 254, 2056, 251, 254, 231, 269, + 228, 251, 260, 2063, 254, 2063, 251, 254, 231, 269, 232, 423, 254, 270, 258, 233, 247, 258, 267, 258, 251, 267, 258, 271, 248, 214, 254, 253, 272, 217, @@ -3548,897 +3559,874 @@ static const flex_int16_t yy_chk[14050] = 301, 302, 313, 314, 323, 327, 303, 323, 327, 323, 304, 305, 507, 307, 304, 325, 304, 308, 325, 310, - 325, 306, 306, 328, 329, 311, 312, 330, 332, 3709, - 313, 314, 319, 319, 319, 319, 885, 319, 320, 320, + 325, 306, 306, 328, 329, 311, 312, 330, 332, 3722, + 313, 314, 319, 319, 319, 319, 886, 319, 320, 320, 320, 320, 335, 320, 321, 321, 321, 321, 333, 321, 331, 328, 329, 331, 336, 330, 332, 335, 337, 507, - 327, 338, 333, 333, 334, 1113, 334, 339, 340, 341, - 335, 1113, 340, 342, 344, 337, 333, 442, 331, 345, - 337, 331, 336, 345, 745, 335, 337, 319, 3680, 338, + 327, 338, 333, 333, 334, 1115, 334, 339, 340, 341, + 335, 1115, 340, 342, 344, 337, 333, 442, 331, 345, + 337, 331, 336, 345, 745, 335, 337, 319, 3693, 338, 333, 333, 334, 320, 334, 339, 340, 341, 343, 321, - 340, 342, 344, 337, 885, 442, 349, 345, 337, 349, + 340, 342, 344, 337, 886, 442, 349, 345, 337, 349, 369, 345, 343, 343, 349, 369, 349, 350, 350, 351, 353, 351, 354, 353, 350, 355, 343, 355, 353, 354, 353, 354, 356, 362, 360, 356, 362, 360, 745, 360, 343, 343, 360, 361, 361, 363, 364, 514, 363, 364, 361, 364, 365, 443, 364, 366, 365, 369, 366, 365, - 2256, 349, 2256, 366, 372, 370, 351, 372, 370, 3021, + 2264, 349, 2264, 366, 372, 370, 351, 372, 370, 3033, 370, 350, 355, 370, 441, 353, 354, 441, 370, 371, 371, 443, 356, 362, 373, 374, 371, 373, 374, 360, 374, 371, 373, 374, 514, 363, 375, 361, 374, 444, 375, 364, 524, 375, 411, 366, 365, 411, 375, 376, - 376, 3021, 376, 524, 372, 377, 377, 445, 377, 398, + 376, 3033, 376, 524, 372, 377, 377, 445, 377, 398, 370, 379, 379, 379, 379, 381, 381, 444, 381, 384, - 384, 446, 384, 371, 373, 1106, 382, 382, 398, 382, + 384, 446, 384, 371, 373, 1108, 382, 382, 398, 382, 374, 382, 384, 395, 474, 445, 395, 474, 395, 382, 375, 395, 386, 386, 411, 386, 384, 386, 447, 446, - 2606, 416, 416, 382, 376, 386, 398, 2786, 416, 448, + 2616, 416, 416, 382, 376, 386, 398, 2797, 416, 448, 377, 488, 387, 387, 488, 387, 379, 387, 483, 386, 381, 483, 421, 483, 384, 387, 447, 421, 387, 389, 389, 382, 389, 395, 389, 390, 390, 448, 390, 387, - 390, 391, 389, 1106, 391, 389, 391, 386, 390, 391, + 390, 391, 389, 1108, 391, 389, 391, 386, 390, 391, - 2606, 426, 426, 384, 384, 416, 389, 2786, 426, 428, + 2616, 426, 426, 384, 384, 416, 389, 2797, 426, 428, 382, 382, 390, 391, 428, 394, 403, 387, 394, 403, - 394, 403, 449, 394, 421, 396, 386, 386, 396, 2257, - 396, 2257, 403, 396, 389, 396, 3678, 394, 396, 417, + 394, 403, 449, 394, 421, 396, 386, 386, 396, 2265, + 396, 2265, 403, 396, 389, 396, 3691, 394, 396, 417, 390, 391, 417, 403, 397, 397, 387, 387, 397, 562, - 449, 397, 396, 397, 399, 426, 397, 399, 3642, 399, + 449, 397, 396, 397, 399, 426, 397, 399, 3655, 399, 562, 428, 399, 389, 389, 394, 427, 427, 427, 390, 390, 403, 425, 427, 401, 425, 399, 401, 402, 401, 396, 402, 401, 402, 401, 565, 402, 401, 402, 417, 418, 402, 487, 418, 402, 487, 565, 487, 397, 403, - 403, 401, 451, 420, 399, 402, 1316, 420, 404, 406, - 420, 404, 406, 404, 406, 3637, 404, 406, 404, 406, + 403, 401, 451, 420, 399, 402, 1319, 420, 404, 406, + 420, 404, 406, 404, 406, 3650, 404, 406, 404, 406, 427, 404, 406, 415, 404, 406, 415, 425, 415, 401, - 451, 415, 856, 402, 409, 404, 406, 409, 431, 409, + 451, 415, 857, 402, 409, 404, 406, 409, 431, 409, 418, 410, 409, 431, 409, 410, 419, 409, 410, 419, 410, 419, 424, 410, 419, 424, 495, 420, 401, 495, - 424, 409, 402, 404, 406, 429, 1325, 410, 429, 430, - 3611, 430, 454, 429, 1316, 455, 430, 456, 415, 856, + 424, 409, 402, 404, 406, 429, 1328, 410, 429, 430, + 3624, 430, 454, 429, 1319, 455, 430, 456, 415, 857, 452, 432, 432, 432, 432, 438, 438, 438, 438, 409, 431, 452, 404, 406, 432, 410, 450, 457, 450, 458, 454, 419, 450, 455, 459, 456, 460, 424, 452, 462, 463, 462, 464, 465, 466, 459, 467, 468, 467, 452, 429, 469, 464, 430, 450, 457, 450, 458, 471, 472, - 450, 465, 459, 1325, 460, 1320, 432, 462, 463, 462, + 450, 465, 459, 1328, 460, 1323, 432, 462, 463, 462, 464, 465, 466, 459, 467, 468, 467, 473, 489, 469, - 464, 489, 500, 489, 1323, 500, 471, 472, 3607, 465, + 464, 489, 500, 489, 1326, 500, 471, 472, 3620, 465, 470, 470, 493, 470, 505, 493, 470, 493, 470, 505, 470, 470, 470, 520, 470, 473, 470, 470, 470, 470, 476, 476, 476, 476, 480, 480, 480, 480, 470, 470, 497, 470, 508, 497, 470, 497, 470, 508, 470, 470, - 470, 520, 470, 1320, 470, 470, 470, 470, 481, 481, + 470, 520, 470, 1323, 470, 470, 470, 470, 481, 481, 481, 481, 482, 482, 482, 482, 505, 482, 485, 485, - 485, 485, 1323, 485, 491, 491, 491, 491, 2788, 491, + 485, 485, 1326, 485, 491, 491, 491, 491, 3619, 491, 522, 492, 492, 492, 492, 476, 492, 499, 502, 480, 499, 502, 499, 503, 508, 510, 503, 523, 503, 511, - 510, 515, 511, 516, 515, 525, 516, 532, 522, 2129, - 2129, 531, 528, 481, 531, 528, 542, 482, 557, 531, - 528, 557, 543, 485, 533, 523, 532, 533, 2788, 491, + 510, 515, 511, 516, 515, 525, 516, 532, 522, 2136, + 2136, 531, 528, 481, 531, 528, 542, 482, 557, 531, + 528, 557, 543, 485, 533, 523, 532, 533, 1695, 491, 544, 545, 533, 525, 528, 535, 492, 539, 535, 539, - 535, 1571, 499, 535, 542, 546, 533, 510, 547, 511, + 535, 860, 499, 535, 542, 546, 533, 510, 547, 511, 543, 515, 538, 516, 532, 538, 539, 535, 544, 545, 538, 531, 528, 548, 540, 550, 551, 540, 552, 540, 553, 555, 540, 546, 533, 556, 547, 558, 559, 560, - 558, 561, 563, 564, 539, 535, 540, 590, 566, 2962, - 590, 548, 567, 550, 551, 1571, 552, 568, 553, 555, - 570, 571, 538, 556, 3606, 3565, 559, 560, 572, 561, - 563, 564, 573, 574, 540, 554, 566, 554, 554, 575, - 567, 554, 554, 554, 576, 568, 3549, 554, 570, 571, - 554, 579, 554, 554, 554, 554, 572, 554, 554, 2962, - 573, 574, 580, 554, 581, 554, 554, 575, 577, 554, - - 554, 554, 576, 578, 578, 554, 582, 583, 554, 579, - 554, 554, 554, 554, 585, 554, 554, 577, 586, 587, - 580, 588, 581, 593, 591, 589, 577, 591, 594, 595, - 596, 578, 578, 598, 582, 583, 589, 599, 600, 588, - 602, 603, 585, 606, 607, 577, 586, 587, 608, 588, - 610, 593, 611, 612, 613, 614, 594, 595, 596, 615, - 616, 598, 617, 618, 619, 599, 600, 588, 602, 603, - 3531, 606, 607, 620, 626, 620, 608, 626, 610, 1931, - 611, 612, 613, 614, 3528, 3512, 623, 615, 616, 623, - 617, 618, 619, 1388, 623, 624, 623, 637, 624, 629, - - 637, 640, 629, 624, 629, 624, 630, 629, 1690, 630, - 632, 630, 638, 632, 630, 638, 639, 639, 632, 639, - 620, 639, 635, 636, 626, 635, 636, 635, 636, 639, - 635, 636, 639, 1931, 645, 635, 636, 646, 1388, 3501, - 640, 623, 674, 639, 645, 682, 733, 645, 646, 733, - 624, 675, 641, 641, 629, 641, 675, 641, 3496, 649, - 632, 630, 649, 669, 649, 641, 669, 649, 641, 640, - 674, 639, 655, 682, 663, 1690, 683, 635, 636, 641, - 684, 649, 663, 643, 643, 662, 643, 3485, 643, 647, - 647, 3475, 647, 663, 647, 662, 643, 685, 662, 643, - - 639, 639, 647, 675, 683, 647, 686, 641, 684, 649, - 643, 655, 2859, 669, 652, 645, 647, 652, 687, 652, - 823, 663, 652, 653, 652, 685, 653, 652, 653, 2859, - 652, 823, 688, 894, 686, 690, 641, 641, 643, 653, - 655, 652, 691, 692, 647, 2259, 687, 2259, 654, 656, - 653, 654, 656, 654, 656, 3473, 654, 656, 654, 656, - 688, 654, 656, 690, 654, 656, 662, 643, 643, 652, - 691, 692, 894, 647, 647, 654, 656, 693, 653, 678, - 679, 657, 678, 679, 657, 664, 657, 678, 664, 657, - 664, 657, 680, 734, 657, 680, 734, 657, 652, 3455, - - 680, 664, 694, 654, 656, 693, 653, 653, 657, 3454, - 658, 659, 664, 658, 659, 658, 659, 3445, 658, 659, - 658, 659, 735, 658, 659, 735, 658, 659, 695, 2462, - 694, 2462, 654, 656, 678, 679, 657, 658, 659, 3421, - 664, 660, 697, 3119, 660, 665, 660, 680, 665, 660, - 665, 660, 1516, 665, 660, 665, 695, 660, 665, 672, - 3410, 665, 672, 698, 672, 658, 659, 672, 660, 664, - 697, 666, 665, 3403, 666, 667, 666, 699, 667, 666, - 667, 666, 701, 667, 666, 667, 737, 736, 667, 737, - 736, 698, 736, 3119, 658, 659, 660, 1516, 666, 702, - - 665, 673, 667, 703, 673, 699, 673, 705, 696, 673, - 701, 706, 707, 708, 672, 696, 696, 696, 696, 696, - 696, 696, 696, 696, 709, 660, 666, 702, 3371, 665, - 667, 703, 710, 712, 713, 705, 714, 715, 716, 706, - 707, 708, 717, 718, 719, 718, 721, 713, 713, 718, - 713, 713, 709, 720, 723, 724, 673, 722, 725, 726, - 710, 712, 713, 728, 714, 715, 716, 722, 720, 732, - 717, 718, 719, 718, 721, 713, 713, 718, 713, 713, - 727, 720, 723, 724, 3361, 722, 725, 726, 729, 727, - 729, 728, 729, 753, 3360, 722, 720, 732, 738, 739, - - 754, 738, 739, 738, 739, 754, 740, 741, 727, 740, - 741, 743, 741, 761, 743, 3351, 729, 727, 729, 744, - 729, 753, 744, 746, 744, 762, 746, 747, 746, 748, - 747, 763, 748, 750, 748, 764, 750, 751, 750, 752, - 751, 761, 752, 758, 752, 774, 758, 766, 775, 776, - 766, 3309, 754, 762, 777, 766, 778, 770, 780, 763, - 770, 781, 770, 764, 782, 770, 783, 784, 801, 766, - 785, 801, 790, 774, 791, 834, 775, 776, 834, 770, - 789, 792, 777, 787, 778, 785, 780, 787, 785, 781, - 788, 787, 782, 758, 783, 784, 786, 766, 785, 789, - - 790, 793, 791, 786, 788, 794, 788, 770, 789, 792, - 786, 787, 795, 785, 797, 787, 785, 793, 788, 787, - 794, 796, 798, 796, 786, 799, 802, 789, 804, 793, - 806, 786, 788, 794, 788, 809, 810, 802, 786, 3291, - 795, 811, 797, 812, 813, 793, 814, 815, 794, 796, - 798, 796, 817, 799, 818, 819, 804, 820, 806, 821, - 822, 824, 825, 809, 810, 826, 828, 802, 829, 811, - 830, 812, 813, 831, 814, 815, 832, 835, 836, 837, - 817, 830, 818, 819, 838, 820, 839, 821, 822, 824, - 825, 840, 830, 826, 828, 841, 829, 842, 843, 844, - - 846, 831, 847, 848, 832, 835, 836, 837, 849, 850, - 847, 851, 838, 852, 839, 853, 854, 855, 859, 840, - 830, 3275, 857, 841, 857, 842, 843, 844, 846, 862, - 847, 848, 858, 3269, 862, 858, 849, 850, 847, 851, - 858, 852, 858, 853, 854, 855, 860, 861, 863, 860, - 861, 863, 861, 864, 865, 861, 864, 865, 864, 881, - 869, 864, 907, 873, 898, 859, 864, 866, 866, 857, - 866, 869, 866, 868, 873, 887, 862, 866, 881, 868, - 866, 887, 908, 866, 904, 908, 910, 858, 871, 871, - 914, 871, 880, 871, 866, 880, 860, 880, 863, 3267, - - 880, 871, 861, 898, 871, 1315, 881, 915, 864, 907, - 976, 882, 916, 976, 882, 871, 882, 917, 914, 882, - 3261, 882, 866, 904, 882, 918, 3251, 882, 919, 888, - 3249, 913, 908, 910, 913, 915, 3238, 888, 882, 869, - 916, 911, 880, 871, 1315, 917, 911, 868, 888, 887, - 1002, 866, 866, 918, 883, 884, 919, 883, 884, 883, - 884, 1002, 883, 884, 883, 884, 882, 883, 884, 920, - 883, 884, 871, 871, 890, 886, 888, 890, 886, 890, - 886, 883, 884, 886, 897, 886, 913, 897, 886, 897, - 890, 886, 897, 911, 995, 882, 912, 920, 923, 912, - - 924, 890, 886, 927, 912, 888, 897, 1326, 891, 883, - 884, 891, 977, 891, 930, 977, 891, 892, 891, 931, - 892, 891, 892, 3224, 891, 1265, 923, 932, 924, 890, - 886, 927, 934, 892, 897, 891, 1265, 997, 883, 884, - 893, 995, 930, 893, 892, 893, 1326, 931, 893, 895, - 893, 912, 895, 893, 895, 932, 893, 895, 890, 895, - 934, 896, 895, 891, 896, 895, 896, 893, 1395, 896, - 935, 896, 892, 936, 896, 899, 895, 896, 899, 1395, - 899, 938, 909, 899, 997, 909, 905, 909, 896, 905, - 909, 905, 891, 939, 905, 893, 905, 899, 935, 905, - - 892, 936, 905, 979, 895, 940, 979, 906, 941, 938, - 906, 942, 906, 905, 921, 906, 896, 906, 944, 921, - 906, 939, 3191, 978, 980, 899, 978, 980, 978, 945, - 946, 921, 947, 940, 906, 948, 941, 909, 949, 942, - 950, 905, 921, 3488, 3154, 3488, 944, 921, 928, 928, - 928, 928, 928, 928, 928, 928, 928, 945, 946, 921, - 947, 951, 906, 948, 951, 952, 949, 953, 950, 954, - 905, 929, 929, 929, 929, 929, 929, 929, 929, 929, - 955, 956, 957, 958, 959, 960, 961, 962, 965, 967, - 964, 968, 951, 952, 964, 953, 966, 954, 969, 966, - - 970, 971, 972, 975, 982, 3141, 999, 982, 955, 956, - 957, 958, 959, 960, 961, 962, 965, 967, 964, 968, - 981, 3136, 964, 981, 966, 981, 969, 966, 970, 971, - 972, 975, 983, 984, 999, 983, 984, 983, 984, 985, - 986, 988, 985, 986, 988, 986, 989, 990, 1000, 989, - 990, 989, 991, 992, 1001, 991, 992, 991, 993, 994, - 996, 993, 994, 993, 998, 996, 1003, 998, 1004, 1003, - 1005, 1006, 1010, 1005, 1003, 1005, 1000, 1011, 1005, 1013, - 1014, 1015, 1001, 1016, 3567, 1017, 3567, 1004, 3106, 1018, - 1006, 1019, 3092, 1020, 1021, 1022, 1023, 1025, 1027, 1028, - - 1010, 1024, 1024, 1024, 1024, 1011, 1026, 1013, 1014, 1015, - 1026, 1016, 996, 1017, 998, 1004, 1003, 1018, 1006, 1019, - 1005, 1020, 1021, 1022, 1023, 1025, 1027, 1028, 1029, 1024, - 1024, 1024, 1024, 1030, 1026, 1031, 1032, 1033, 1026, 1034, - 1035, 1036, 1037, 1039, 1038, 1036, 1040, 1036, 1038, 1041, - 1042, 1043, 1044, 1045, 3084, 1048, 1029, 1049, 3034, 3536, - 1039, 1030, 1051, 1031, 1032, 1033, 1052, 1034, 1035, 1036, - 1037, 1039, 1038, 1036, 1040, 1036, 1038, 1041, 1042, 1043, - 1044, 1045, 1047, 1048, 1053, 1049, 1047, 1050, 1039, 1054, - 1051, 1055, 1056, 1047, 1052, 1047, 1057, 1058, 1050, 1059, - - 3034, 1061, 1062, 1063, 1064, 1065, 1067, 1068, 1069, 3536, - 1047, 1071, 1053, 3048, 1047, 1072, 1074, 1054, 3046, 1055, - 1056, 1047, 1075, 1047, 1057, 1058, 1076, 1059, 1050, 1061, - 1062, 1063, 1064, 1065, 1067, 1068, 1069, 1070, 1070, 1071, - 1077, 1070, 1078, 1072, 1074, 1079, 1070, 1080, 1081, 1082, - 1075, 1083, 1070, 1084, 1076, 1085, 1070, 1086, 1070, 1088, - 1089, 1090, 1091, 1092, 1093, 1070, 1070, 1094, 1077, 1070, - 1078, 1095, 1096, 1079, 1070, 1080, 1081, 1082, 1097, 1083, - 1070, 1084, 1098, 1085, 1070, 1086, 1070, 1088, 1089, 1090, - 1091, 1092, 1093, 1105, 1110, 1094, 1105, 1110, 1124, 1095, - - 1096, 1111, 1104, 1104, 1112, 1104, 1097, 1104, 3044, 1126, - 1098, 1109, 1128, 1129, 1109, 1104, 1109, 1131, 1104, 1109, - 1114, 1109, 1564, 1114, 1109, 1114, 1124, 1109, 1114, 1104, - 1114, 1116, 3040, 1114, 1120, 1133, 1114, 1126, 1109, 1116, - 1128, 1129, 1120, 1112, 3176, 1131, 1115, 1114, 1134, 1115, - 1116, 1115, 3031, 1120, 1115, 1118, 1115, 1104, 1118, 1115, - 1118, 3176, 1115, 1133, 1105, 1110, 1109, 1564, 1111, 1111, - 1136, 1118, 1112, 1115, 1188, 1114, 1134, 1188, 1116, 1704, - 1117, 1120, 1118, 1117, 1135, 1117, 1104, 1104, 1117, 1119, - 1117, 1746, 1119, 1117, 1119, 1109, 1117, 1119, 1136, 1119, - - 1135, 1115, 1119, 1121, 1114, 1119, 1121, 1117, 1121, 1137, - 1118, 1139, 1135, 1141, 1142, 1143, 1119, 1189, 1190, 1121, - 1189, 1190, 1191, 1190, 1704, 1191, 1144, 1145, 1135, 1149, - 1121, 1151, 1154, 1155, 1156, 1117, 1746, 1137, 1140, 1139, - 1157, 1141, 1142, 1143, 1119, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1144, 1145, 1158, 1149, 1121, 1151, - 1154, 1155, 1156, 1159, 1117, 1160, 1162, 1163, 1157, 1161, - 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1164, 1165, - 1166, 1167, 1168, 1170, 1158, 1169, 1169, 1121, 1171, 1172, - 1173, 1159, 1175, 1160, 1162, 1163, 1176, 1177, 1178, 1179, - - 1181, 1182, 1183, 1184, 1184, 3023, 1164, 1165, 1166, 1167, - 1168, 1170, 1192, 1169, 1169, 1192, 1171, 1172, 1173, 1194, - 1175, 1200, 1194, 1204, 1176, 1177, 1178, 1179, 1181, 1182, - 1183, 1184, 1184, 1193, 1195, 1205, 1193, 1195, 1193, 1195, - 1196, 1197, 1198, 1196, 1197, 1198, 1197, 1199, 1206, 1200, - 1199, 1204, 1213, 1214, 1215, 1217, 1218, 1220, 1221, 1222, - 1223, 1224, 1225, 1205, 1226, 1227, 1228, 1229, 1230, 1231, - 1232, 1233, 1228, 1234, 1235, 1236, 1206, 1237, 1238, 1239, - 1213, 1214, 1215, 1217, 1218, 1220, 1221, 1222, 1223, 1224, - 1225, 1240, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, - - 1228, 1234, 1235, 1236, 1241, 1237, 1238, 1239, 1242, 1243, - 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1240, - 1253, 1254, 1256, 1257, 1258, 1259, 1260, 1261, 1264, 1266, - 3014, 1250, 1241, 1267, 1268, 3004, 1242, 1243, 1244, 1245, - 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1263, 1253, 1254, - 1256, 1257, 1258, 1259, 1260, 1261, 1264, 1266, 1263, 1250, - 1270, 1267, 1268, 1263, 1263, 1271, 1272, 1273, 1275, 1276, - 1277, 1278, 1280, 1282, 1283, 1263, 1284, 1285, 1286, 1287, - 1288, 1290, 1292, 1285, 1293, 1294, 1263, 1295, 1270, 1296, - 1297, 1263, 1263, 1271, 1272, 1273, 1275, 1276, 1277, 1278, - - 1280, 1282, 1283, 1298, 1284, 1285, 1286, 1287, 1288, 1290, - 1292, 1285, 1293, 1294, 1299, 1295, 1300, 1296, 1297, 1301, - 1302, 1303, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, - 1313, 1298, 1314, 1318, 1329, 1328, 1390, 1391, 3183, 1390, - 1391, 1332, 1299, 3569, 1300, 3569, 1328, 1301, 1302, 1303, - 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1322, - 1319, 1324, 1329, 1319, 1324, 1319, 1324, 1322, 1319, 1332, - 1319, 1314, 1318, 1319, 2963, 1333, 1319, 1324, 1322, 1334, - 3183, 1327, 1335, 1330, 1327, 1330, 1327, 1319, 1324, 1327, - 1336, 1327, 1337, 1338, 1327, 1339, 1342, 1327, 1344, 1345, - - 1314, 1318, 1328, 1333, 1346, 1347, 1322, 1334, 1327, 1341, - 1335, 1330, 1341, 1330, 1341, 1319, 1324, 2961, 1336, 1341, - 1337, 1338, 1341, 1339, 1342, 1348, 1344, 1345, 1350, 1349, - 1351, 2957, 1346, 1347, 1353, 1322, 1327, 1392, 1359, 2952, - 1392, 1393, 1392, 1394, 1393, 1324, 1394, 2945, 1361, 1364, - 1365, 1366, 1367, 1348, 1368, 1369, 1350, 1370, 1351, 1349, - 1371, 1372, 1353, 1373, 1341, 1349, 1359, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1361, 1364, 1365, 1366, - 1367, 1375, 1368, 1369, 1376, 1370, 1377, 1349, 1371, 1372, - 1378, 1373, 1380, 1349, 1381, 1382, 1383, 1384, 1385, 1396, - - 1381, 1397, 1400, 1401, 1403, 1404, 1405, 1406, 1407, 1375, - 1408, 1409, 1376, 1410, 1377, 1411, 1412, 1414, 1378, 1415, - 1380, 1416, 1381, 1382, 1383, 1384, 1385, 1396, 1381, 1397, - 1400, 1401, 1403, 1404, 1405, 1406, 1407, 1413, 1408, 1409, - 1417, 1410, 1418, 1411, 1412, 1414, 1419, 1415, 1420, 1416, - 1413, 1421, 1422, 1423, 1424, 1413, 1425, 1426, 1427, 1423, - 1428, 1423, 1429, 1430, 1423, 1413, 1432, 1433, 1417, 2925, - 1418, 1434, 1435, 1436, 1419, 1437, 1420, 1438, 1413, 1421, - 1422, 1423, 1424, 1413, 1425, 1426, 1427, 1423, 1428, 1423, - 1429, 1430, 1423, 1431, 1432, 1433, 1439, 1431, 1440, 1434, - - 1435, 1436, 1441, 1437, 1431, 1438, 1431, 1431, 1442, 1431, - 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, - 1457, 1431, 1458, 1459, 1439, 1431, 1440, 1460, 1461, 1465, - 1441, 2919, 1431, 1466, 1431, 1431, 1442, 1431, 1443, 1444, - 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1457, 1467, - 1458, 1459, 1462, 1469, 1468, 1460, 1461, 1465, 1470, 1462, - 1471, 1466, 1467, 1472, 1467, 1468, 1473, 1462, 1474, 1475, - 1476, 1477, 1462, 1478, 1479, 1480, 1468, 1467, 1481, 1482, - 1462, 1469, 1483, 1485, 1484, 1486, 1470, 1462, 1471, 1484, - 1467, 1472, 1467, 1487, 1473, 1462, 1474, 1475, 1476, 1477, - - 1462, 1478, 1479, 1480, 1468, 1488, 1481, 1482, 1489, 1490, - 1483, 1485, 1484, 1486, 1491, 1492, 1493, 1484, 1494, 1495, - 1497, 1487, 1498, 1499, 1500, 1497, 1501, 1504, 2882, 1503, - 1502, 1505, 1503, 1488, 1503, 1495, 1489, 1490, 1502, 1506, - 1507, 1509, 1491, 1492, 1493, 1503, 1494, 1495, 1497, 1502, - 1498, 1499, 1500, 1497, 1510, 1504, 1503, 1511, 1512, 1505, - 1513, 1514, 1567, 1495, 3638, 1567, 3638, 1506, 1507, 1509, - 1515, 1519, 3610, 1515, 1522, 1515, 1523, 1502, 1524, 3640, - 1515, 3640, 1510, 1515, 1503, 1511, 1512, 1518, 1513, 1514, - 1518, 1527, 1518, 1501, 1501, 1528, 1530, 1518, 1532, 1519, - - 1518, 1525, 1522, 1538, 1523, 1525, 1524, 1525, 1526, 1526, - 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1539, 1783, 1527, - 2871, 1783, 3610, 1528, 1530, 1515, 1532, 1542, 1543, 1525, - 1544, 1538, 1545, 1525, 1546, 1525, 1547, 1548, 1549, 1550, - 1551, 1552, 1518, 1553, 1554, 1539, 1540, 1540, 1540, 1540, - 1540, 1540, 1540, 1540, 1540, 1542, 1543, 1555, 1544, 1556, - 1545, 1557, 1546, 1558, 1547, 1548, 1549, 1550, 1551, 1552, - 1559, 1553, 1554, 1560, 1561, 1562, 1568, 1569, 1572, 1573, - 1576, 1577, 1578, 1579, 1581, 1555, 1580, 1556, 1569, 1557, - 1582, 1558, 1583, 1580, 1584, 1585, 1586, 1587, 1559, 1588, - - 1589, 1560, 1561, 1562, 1568, 1590, 1572, 1573, 1576, 1577, - 1578, 1579, 1581, 1591, 1580, 1592, 1593, 1594, 1582, 1595, - 1583, 1580, 1584, 1585, 1586, 1587, 1596, 1588, 1589, 1597, - 1598, 1599, 1600, 1590, 1601, 1602, 1603, 1604, 1605, 1606, - 1607, 1591, 1608, 1592, 1593, 1594, 1609, 1595, 1610, 1611, - 1612, 1613, 1614, 1615, 1596, 1616, 1617, 1597, 1598, 1599, - 1600, 1618, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1619, - 1608, 1620, 1621, 1622, 1609, 1623, 1610, 1611, 1612, 1613, - 1614, 1615, 1624, 1616, 1617, 1625, 1626, 1627, 1628, 1618, - 1630, 1631, 1632, 1633, 1634, 1635, 1625, 1619, 1873, 1620, - - 1621, 1622, 1636, 1623, 1637, 1638, 1639, 1641, 1642, 1643, - 1624, 1644, 1645, 1646, 1626, 1627, 1628, 1647, 1630, 1631, - 1632, 1633, 1634, 1635, 1651, 1652, 1625, 1649, 1647, 2870, - 1636, 1653, 1637, 1638, 1639, 1641, 1642, 1643, 1649, 1644, - 1645, 1646, 1655, 1873, 1656, 1647, 1658, 1659, 2854, 1663, - 1664, 1665, 1651, 1652, 1666, 1668, 1647, 1648, 1648, 1653, - 1669, 1648, 1670, 1648, 1671, 1672, 1673, 1648, 1648, 1674, - 1655, 1648, 1656, 1675, 1658, 1659, 1648, 1663, 1664, 1665, - 1676, 1677, 1666, 1668, 1678, 1648, 1648, 1679, 1669, 1648, - 1670, 1648, 1671, 1672, 1673, 1648, 1648, 1674, 1680, 1648, - - 1681, 1675, 1682, 1683, 1648, 1684, 1685, 1686, 1676, 1677, - 1687, 1688, 1678, 1689, 1692, 1679, 1683, 1693, 1695, 1696, - 1697, 1699, 1700, 1698, 1798, 1706, 1680, 1798, 1681, 2853, - 1682, 1683, 1710, 1684, 1685, 1686, 1698, 2844, 1687, 1688, - 1711, 1689, 1692, 1885, 1683, 1693, 1695, 1696, 1697, 1699, - 1700, 1698, 1702, 1706, 1713, 1702, 1714, 1702, 1715, 1716, - 1710, 1722, 1702, 1712, 1698, 1702, 1725, 1717, 1711, 1717, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1747, - 1726, 1719, 1713, 3702, 1714, 3702, 1715, 1716, 1885, 1722, - 1747, 1724, 1724, 1719, 1725, 1717, 1727, 1717, 1719, 1728, - - 1729, 1730, 1731, 1732, 1734, 1735, 2803, 1702, 1726, 1719, - 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1724, - 1724, 1719, 1738, 1737, 1727, 1736, 1719, 1728, 1729, 1730, - 1731, 1732, 1734, 1735, 1737, 1736, 1739, 1740, 1741, 1742, - 1743, 1744, 1745, 1737, 1751, 1752, 1736, 1755, 1756, 1758, - 1738, 1737, 1759, 1736, 1760, 1761, 1762, 1763, 1764, 1765, - 1766, 1767, 1737, 1736, 1739, 1740, 1741, 1742, 1743, 1744, - 1745, 1737, 1751, 1752, 1736, 1755, 1756, 1758, 1768, 1769, - 1759, 1770, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, - 1771, 1772, 1773, 1774, 1775, 1769, 1776, 1777, 1778, 1779, - - 1780, 1781, 1782, 1784, 1785, 1786, 1768, 1769, 1787, 1770, - 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1771, 1772, - 1773, 1774, 1775, 1769, 1776, 1777, 1778, 1779, 1780, 1781, - 1782, 1784, 1785, 1786, 1796, 1799, 1787, 1800, 1788, 1789, - 1790, 1791, 1792, 1793, 1794, 1795, 1797, 1801, 1802, 1801, - 1803, 1804, 1797, 1806, 1801, 1807, 1808, 1810, 1811, 1812, - 1814, 1815, 1796, 1799, 1816, 1800, 1817, 1808, 1818, 2802, - 1813, 1820, 1822, 1823, 1797, 1801, 1802, 1801, 1803, 1804, - 1797, 1806, 1801, 1807, 1813, 1810, 1811, 1812, 1814, 1815, - 1824, 1825, 1816, 1826, 1817, 1827, 1818, 1808, 1813, 1820, - - 1822, 1823, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, - 1836, 1839, 2793, 2787, 1840, 1841, 1843, 1829, 1824, 1825, - 1844, 1826, 1849, 1827, 1851, 1852, 1954, 1853, 1854, 1954, - 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1839, - 1838, 1838, 1840, 1841, 1843, 1829, 1838, 1856, 1844, 1857, - 1849, 1858, 1851, 1852, 1838, 1853, 1854, 1838, 1859, 1860, - 1861, 1863, 1866, 1867, 1864, 1868, 1864, 1869, 1838, 1838, - 1864, 1870, 1871, 1993, 1838, 1856, 1874, 1857, 1875, 1858, - 1877, 1864, 1838, 1864, 1993, 1838, 1859, 1860, 1861, 1863, - 1866, 1867, 1864, 1868, 1864, 1869, 1878, 1879, 1864, 1870, - - 1871, 1872, 1880, 1872, 1874, 1876, 1875, 1872, 1877, 1864, - 1881, 1864, 1876, 1882, 1886, 1889, 2059, 1890, 1872, 2758, - 1872, 1891, 1893, 1894, 1878, 1879, 1895, 1896, 1895, 1872, - 1880, 1872, 2060, 1876, 1883, 1872, 1897, 1883, 1881, 1883, - 1876, 1882, 1898, 1900, 1883, 1890, 1872, 1883, 1872, 1891, - 1893, 1894, 1901, 1902, 1895, 1896, 1895, 1905, 1906, 1886, - 1889, 2059, 2754, 1908, 1897, 1909, 1910, 1911, 1912, 1967, - 1898, 1900, 1967, 2072, 1967, 2734, 2072, 2060, 1913, 1914, - 1901, 1902, 1915, 2686, 2186, 1905, 1906, 2186, 1917, 1883, - 1903, 1908, 1918, 1909, 1910, 1911, 1912, 1903, 1903, 1903, - - 1903, 1903, 1903, 1903, 1903, 1903, 1913, 1914, 1916, 1903, - 1915, 1903, 1903, 1903, 1919, 1916, 1917, 1903, 1920, 1921, - 1918, 1922, 1903, 1923, 1924, 1925, 1926, 1927, 1928, 1929, - 1930, 1903, 1937, 1939, 1923, 2358, 1916, 1903, 2358, 1903, - 1903, 1903, 1919, 1916, 1940, 1903, 1920, 1921, 1941, 1922, - 1903, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1903, - 1937, 1939, 1923, 1933, 1933, 1933, 1933, 1935, 1935, 1935, - 1935, 1942, 1940, 1943, 1944, 1945, 1941, 1946, 1947, 1948, - 1949, 1950, 1951, 1952, 1955, 1956, 1957, 1958, 1959, 1960, - 2675, 1961, 1963, 1964, 2671, 1965, 1966, 1968, 1969, 1942, - - 1970, 1943, 1944, 1945, 1971, 1946, 1947, 1948, 1949, 1950, - 1951, 1952, 1955, 1956, 1957, 1958, 1959, 1960, 1933, 1961, - 1963, 1964, 1935, 1965, 1966, 1968, 1969, 1972, 1970, 1973, - 1974, 1975, 1971, 1976, 1977, 1978, 1979, 1980, 1981, 1982, - 1983, 1984, 1985, 1983, 1986, 1983, 1987, 1988, 1989, 1990, - 1991, 1992, 1995, 1996, 1997, 1972, 1998, 1973, 1974, 1975, - 1999, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 2000, 1984, - 1985, 2001, 1986, 2002, 1987, 1988, 1989, 1990, 1991, 1992, - 1995, 1996, 1997, 2003, 1998, 2004, 2005, 2193, 1999, 2633, - 2007, 2400, 2008, 2194, 2400, 2009, 2000, 2632, 2193, 2001, - - 2010, 2002, 2011, 2012, 2194, 2013, 2608, 2014, 2015, 2016, - 2017, 2003, 2018, 2004, 2005, 2006, 2006, 2006, 2007, 2006, - 2008, 2006, 2006, 2009, 2019, 2006, 2006, 2006, 2010, 2020, - 2011, 2012, 2006, 2013, 2006, 2014, 2015, 2016, 2017, 2021, - 2018, 2022, 2023, 2006, 2006, 2006, 2024, 2006, 2025, 2006, - 2006, 2026, 2019, 2006, 2006, 2006, 2027, 2020, 2028, 2029, - 2006, 2030, 2006, 2031, 2032, 2035, 2036, 2021, 2037, 2022, - 2023, 2038, 2043, 2044, 2024, 2045, 2025, 2046, 2047, 2026, - 2048, 2049, 2050, 2051, 2027, 2051, 2028, 2029, 2054, 2030, - 2057, 2031, 2032, 2035, 2036, 2058, 2037, 2058, 2061, 2038, - - 2043, 2044, 2062, 2045, 2063, 2046, 2047, 2064, 2048, 2049, - 2050, 2051, 2065, 2051, 2066, 2074, 2054, 2067, 2057, 2068, - 2069, 2070, 2071, 2058, 2075, 2058, 2076, 2079, 2080, 2081, - 2062, 2082, 2063, 2083, 2084, 2064, 2085, 2086, 2087, 2091, - 2065, 2791, 2066, 2061, 2088, 2067, 2088, 2068, 2069, 2070, - 2071, 2592, 2791, 2570, 2592, 2079, 2080, 2081, 2092, 2082, - 2074, 2083, 2084, 2544, 2085, 2086, 2087, 2091, 2093, 2075, - 2095, 2076, 2088, 2096, 2088, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2097, 2099, 2092, 2089, 2094, 2089, - 2089, 2089, 2100, 2094, 2101, 2089, 2093, 2102, 2095, 2103, - - 2089, 2096, 2104, 2105, 2106, 2108, 2109, 2110, 2111, 2089, - 2130, 2130, 2097, 2099, 2541, 2089, 2094, 2089, 2089, 2089, - 2100, 2094, 2101, 2089, 2112, 2102, 2113, 2103, 2089, 2114, - 2104, 2105, 2106, 2108, 2109, 2110, 2111, 2089, 2090, 2090, - 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2115, 2116, 2117, - 2118, 2119, 2112, 2121, 2113, 2122, 2123, 2114, 2124, 2125, - 2128, 2128, 2128, 2128, 2130, 2131, 2131, 2131, 2131, 2132, - 2132, 2133, 2135, 2136, 2137, 2115, 2116, 2117, 2118, 2119, - 2138, 2121, 2140, 2122, 2123, 2141, 2124, 2125, 2142, 2143, - 2144, 2145, 2151, 2146, 2147, 2532, 2530, 2148, 2149, 2133, - - 2135, 2136, 2137, 2152, 2150, 2153, 2154, 2150, 2138, 2150, - 2140, 2155, 2497, 2141, 2156, 2128, 2142, 2143, 2144, 2145, - 2131, 2146, 2147, 2132, 2139, 2148, 2149, 2493, 2157, 2151, - 2158, 2152, 2159, 2153, 2154, 2160, 2161, 2491, 2162, 2155, - 2139, 2162, 2156, 2162, 2164, 2165, 2166, 2167, 2168, 2169, - 2170, 2171, 2172, 2139, 2173, 2139, 2157, 2151, 2158, 2175, - 2159, 2176, 2177, 2160, 2161, 2139, 2178, 2139, 2139, 2139, - 2490, 2181, 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, - 2172, 2139, 2173, 2139, 2182, 2183, 2184, 2175, 2185, 2176, - 2177, 2187, 2188, 2139, 2178, 2139, 2139, 2139, 2180, 2181, - - 2189, 2180, 2191, 2180, 2192, 2195, 2196, 2197, 2198, 2199, - 2201, 2202, 2182, 2183, 2184, 2200, 2185, 2203, 2204, 2187, - 2188, 2205, 2206, 2207, 2200, 2208, 2209, 2210, 2189, 2211, - 2191, 2212, 2192, 2195, 2196, 2197, 2198, 2199, 2201, 2202, - 2213, 2214, 2219, 2200, 2211, 2203, 2204, 2220, 2221, 2205, - 2206, 2207, 2222, 2208, 2209, 2210, 2223, 2211, 2224, 2212, - 2225, 2226, 2227, 2228, 2230, 2231, 2232, 2233, 2213, 2214, - 2219, 2234, 2211, 2239, 2240, 2220, 2221, 2242, 2246, 2247, - 2222, 2249, 2250, 2251, 2223, 2252, 2224, 2253, 2225, 2226, - 2227, 2228, 2230, 2231, 2232, 2233, 2254, 2255, 2261, 2234, - - 2262, 2239, 2240, 2263, 2266, 2242, 2246, 2247, 2268, 2249, - 2250, 2251, 2270, 2252, 2271, 2253, 2272, 2273, 2274, 2275, - 2276, 2284, 2277, 2278, 2254, 2255, 2261, 2286, 2262, 2489, - 2287, 2263, 2288, 2289, 2759, 2290, 2291, 2759, 2482, 2292, - 2270, 2293, 2271, 2295, 2272, 2273, 2274, 2275, 2276, 2266, - 2277, 2278, 2280, 2268, 2296, 2280, 2297, 2280, 2287, 2470, - 2288, 2289, 2280, 2290, 2291, 2280, 2284, 2292, 2299, 2293, - 2300, 2295, 2286, 2301, 2303, 2302, 2304, 2305, 2298, 2280, - 2302, 2306, 2296, 2307, 2297, 2298, 2298, 2298, 2298, 2298, - 2298, 2298, 2298, 2298, 2308, 2309, 2299, 2310, 2300, 2311, - - 2312, 2301, 2303, 2302, 2304, 2305, 2313, 2280, 2302, 2306, - 2315, 2307, 2316, 2317, 2319, 2322, 2324, 2325, 2326, 2328, - 2329, 2330, 2308, 2309, 2331, 2310, 2332, 2311, 2312, 2333, - 2334, 2337, 2339, 2344, 2313, 2345, 2341, 2341, 2315, 2341, - 2316, 2317, 2319, 2322, 2324, 2325, 2326, 2328, 2329, 2330, - 2343, 2343, 2331, 2343, 2332, 2347, 2348, 2333, 2334, 2337, - 2339, 2344, 2351, 2345, 2352, 2353, 2354, 2355, 2356, 2357, - 2352, 2359, 2360, 2361, 2362, 2363, 2364, 2468, 2467, 2365, - 2366, 2370, 2368, 2347, 2348, 2368, 2371, 2368, 2372, 2373, - 2351, 2341, 2352, 2353, 2354, 2355, 2356, 2357, 2352, 2359, - - 2360, 2361, 2362, 2363, 2364, 2343, 2341, 2365, 2366, 2370, - 2374, 2375, 2376, 2377, 2371, 2380, 2372, 2373, 2382, 2383, - 2343, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2393, - 2394, 2395, 2396, 2398, 2399, 2401, 2402, 2466, 2374, 2375, - 2376, 2377, 2461, 2380, 2404, 2405, 2382, 2383, 2406, 2384, - 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2393, 2394, 2395, - 2396, 2398, 2399, 2401, 2402, 2403, 2407, 2408, 2403, 2411, - 2403, 2412, 2404, 2405, 2414, 2416, 2406, 2417, 2419, 2420, - 2421, 2422, 2423, 2424, 2426, 2427, 2416, 2428, 2436, 2429, - 2430, 2431, 2433, 2434, 2407, 2408, 2435, 2411, 2437, 2412, - - 2438, 2439, 2414, 2441, 2442, 2417, 2419, 2420, 2421, 2422, - 2423, 2424, 2426, 2427, 2443, 2428, 2416, 2429, 2430, 2431, - 2433, 2434, 2444, 2445, 2435, 2446, 2437, 2447, 2438, 2439, - 2448, 2441, 2442, 2449, 2450, 2451, 2454, 2455, 2456, 2458, - 2459, 2460, 2443, 2464, 2465, 2469, 2471, 2472, 2473, 2474, - 2444, 2445, 2475, 2446, 2476, 2447, 2477, 2478, 2448, 2479, - 2481, 2449, 2450, 2451, 2454, 2455, 2456, 2458, 2459, 2460, - 2425, 2464, 2465, 2492, 2494, 2485, 2473, 2474, 2484, 2495, - 2475, 2496, 2476, 2498, 2477, 2478, 2499, 2479, 2481, 2485, - 2469, 2471, 2472, 2483, 2486, 2484, 2483, 2486, 2483, 2486, - - 2415, 2413, 2487, 2483, 2486, 2487, 2483, 2487, 2500, 2496, - 2397, 2498, 2487, 2501, 2499, 2487, 2502, 2485, 2492, 2494, - 2483, 2486, 2503, 2484, 2495, 2488, 2504, 2505, 2488, 2487, - 2488, 2507, 2508, 2509, 2510, 2488, 2500, 2511, 2488, 2512, - 2513, 2501, 2514, 2515, 2502, 2516, 2517, 2518, 2483, 2486, - 2503, 2519, 2488, 2520, 2504, 2505, 2521, 2487, 2522, 2507, - 2508, 2509, 2510, 2523, 2524, 2511, 2525, 2512, 2513, 2526, - 2514, 2515, 2527, 2516, 2517, 2518, 2528, 2529, 2531, 2519, - 2488, 2520, 2533, 2534, 2521, 2535, 2522, 2536, 2537, 2538, - 2539, 2523, 2524, 2540, 2525, 2542, 2542, 2526, 2542, 2547, - - 2527, 2548, 2549, 2553, 2528, 2529, 2531, 2554, 2555, 2556, - 2533, 2534, 2557, 2535, 2558, 2536, 2537, 2538, 2539, 2545, - 2545, 2540, 2545, 2559, 2560, 2562, 2563, 2547, 2565, 2548, - 2549, 2553, 2566, 2567, 2568, 2554, 2555, 2556, 2561, 2569, - 2557, 2561, 2558, 2561, 2573, 2574, 2381, 2575, 2576, 2577, - 2542, 2559, 2560, 2562, 2563, 2578, 2565, 2580, 2582, 2580, - 2566, 2567, 2568, 2584, 2585, 2542, 2586, 2569, 2587, 2589, - 2590, 2591, 2573, 2574, 2545, 2575, 2576, 2577, 2594, 2595, - 2596, 2593, 2597, 2578, 2599, 2580, 2582, 2580, 2600, 2545, - 2601, 2584, 2585, 2601, 2586, 2601, 2587, 2589, 2590, 2591, - - 2593, 2602, 2602, 2603, 2607, 2609, 2594, 2595, 2596, 2593, - 2597, 2610, 2599, 2611, 2605, 2612, 2600, 2605, 2613, 2605, - 2614, 2615, 2616, 2618, 2619, 2620, 2621, 2622, 2593, 2602, - 2602, 2603, 2607, 2609, 2623, 2624, 2625, 2626, 2627, 2610, - 2628, 2611, 2629, 2612, 2630, 2631, 2613, 2634, 2614, 2615, - 2616, 2618, 2619, 2620, 2621, 2622, 2635, 2636, 2637, 2638, - 2639, 2640, 2623, 2624, 2625, 2626, 2627, 2641, 2628, 2642, - 2629, 2644, 2630, 2631, 2645, 2634, 2646, 2647, 2648, 2649, - 2651, 2652, 2653, 2655, 2635, 2636, 2637, 2638, 2639, 2640, - 2656, 2657, 2658, 2659, 2660, 2641, 2661, 2642, 2662, 2644, - - 2664, 2665, 2645, 2666, 2646, 2647, 2648, 2649, 2651, 2652, - 2653, 2655, 2667, 2672, 2668, 2379, 2669, 2676, 2656, 2657, - 2658, 2659, 2660, 2687, 2369, 2350, 2679, 2672, 2664, 2665, - 3612, 2666, 2349, 2688, 2676, 2689, 2677, 2690, 2342, 2340, - 2667, 2661, 2668, 2662, 2669, 2839, 2673, 2674, 2327, 2673, - 2674, 2673, 2674, 2677, 2679, 2672, 2673, 2674, 2678, 2673, - 2674, 2678, 2676, 2689, 2285, 2690, 2680, 2681, 2687, 2680, - 2681, 2680, 2681, 2673, 2674, 2678, 2680, 2681, 2688, 2680, - 3612, 2677, 2682, 2691, 2693, 2682, 2684, 2682, 2694, 2684, - 2839, 2684, 2682, 2680, 2681, 2682, 2684, 2695, 2696, 2684, - - 2697, 2673, 2674, 2698, 2283, 2685, 2699, 2700, 2685, 2682, - 2685, 2691, 2693, 2684, 2701, 2685, 2694, 2702, 2685, 2703, - 2704, 2680, 2681, 2705, 2706, 2695, 2696, 2707, 2697, 2708, - 2709, 2698, 2685, 2711, 2699, 2700, 2712, 2682, 2713, 2714, - 2715, 2684, 2701, 2716, 2717, 2702, 2718, 2703, 2704, 2719, - 2720, 2705, 2706, 2721, 2722, 2707, 2723, 2708, 2709, 2725, - 2685, 2711, 2726, 2727, 2712, 2728, 2713, 2714, 2715, 2729, - 2730, 2716, 2717, 2732, 2718, 2736, 2737, 2719, 2720, 2738, - 2739, 2721, 2722, 2740, 2723, 2741, 2742, 2725, 2743, 2746, - 2726, 2727, 2747, 2728, 2748, 2749, 2750, 2729, 2730, 2751, - - 2752, 2732, 2755, 2736, 2737, 2756, 2757, 2738, 2739, 2761, - 2762, 2740, 2764, 2741, 2742, 2765, 2743, 2746, 2766, 2768, - 2747, 2282, 2748, 2749, 2750, 2769, 2770, 2751, 2752, 2771, - 2755, 2767, 2773, 2756, 2757, 2774, 2775, 2761, 2762, 2767, - 2764, 2776, 2767, 2765, 2767, 2772, 2777, 2768, 2772, 2766, - 2772, 2778, 2779, 2769, 2770, 2780, 2783, 2771, 2784, 2767, - 2773, 2785, 2789, 2774, 2775, 2790, 2792, 2767, 2795, 2776, - 2767, 2794, 2767, 2796, 2777, 2797, 2798, 2766, 2799, 2778, - 2779, 2800, 2794, 2780, 2783, 2801, 2784, 2805, 2804, 2785, - 2789, 2806, 2807, 2790, 2792, 2808, 2795, 2809, 2810, 2811, - - 2812, 2796, 2804, 2797, 2798, 2813, 2799, 2814, 2809, 2800, - 2815, 2816, 2817, 2801, 2818, 2805, 2804, 2819, 2820, 2806, - 2807, 2822, 2823, 2808, 2824, 2825, 2810, 2811, 2812, 2826, - 2827, 2828, 2829, 2813, 2830, 2814, 2831, 2832, 2815, 2816, - 2817, 2833, 2818, 2834, 2835, 2819, 2820, 2836, 2837, 2822, - 2823, 2838, 2824, 2825, 2840, 2841, 2842, 2826, 2827, 2828, - 2829, 2843, 2830, 2845, 2831, 2832, 2281, 2267, 2872, 2833, - 2847, 2834, 2835, 2874, 2866, 2836, 2837, 2866, 2875, 2838, - 2876, 2845, 2840, 2841, 2842, 2846, 2265, 2847, 2846, 2843, - 2846, 2845, 2869, 2264, 2849, 2846, 2872, 2849, 2846, 2849, - - 2850, 2874, 3679, 2850, 2849, 2850, 2875, 2243, 2876, 2845, - 2850, 2855, 2846, 2850, 2856, 2847, 2877, 2857, 2858, 2851, - 2852, 2849, 2851, 2852, 2851, 2852, 2878, 2850, 2855, 2851, - 2852, 2856, 2851, 2852, 2857, 2858, 2879, 2869, 2860, 2967, - 2846, 2860, 2994, 2860, 2877, 2229, 2851, 2852, 2860, 2849, - 2967, 2860, 3679, 2994, 2878, 2850, 2855, 2880, 2881, 2856, - 2883, 2127, 2857, 2858, 2879, 2860, 3025, 2862, 2863, 3025, - 2862, 2863, 2862, 2863, 2851, 2852, 2126, 2862, 2863, 2864, - 2862, 2863, 2864, 2994, 2864, 2880, 2881, 2865, 2883, 2864, - 2865, 2884, 2865, 2860, 2862, 2863, 2886, 2865, 2867, 2868, - - 2888, 2867, 2868, 2867, 2868, 2890, 2864, 2891, 2867, 2868, - 2892, 2867, 2868, 2894, 2865, 2895, 2896, 2897, 2898, 2884, - 2899, 2900, 2862, 2863, 2886, 2867, 2868, 2901, 2888, 2902, - 2903, 2904, 2908, 2890, 2864, 2891, 2909, 2911, 2892, 2912, - 2913, 2894, 2865, 2895, 2896, 2897, 2898, 2914, 2899, 2900, - 2915, 2916, 2918, 2867, 2868, 2901, 2920, 2902, 2903, 2904, - 2908, 2921, 2922, 2923, 2909, 2911, 2924, 2912, 2913, 2926, - 2928, 2929, 2930, 2935, 2936, 2914, 2938, 2939, 2915, 2916, - 2918, 2940, 2932, 2941, 2920, 2932, 2942, 2932, 2944, 2921, - 2922, 2923, 2946, 2949, 2924, 2943, 2946, 2926, 2928, 2929, - - 2930, 2935, 2936, 2946, 2938, 2939, 2943, 2943, 2950, 2940, - 2948, 2941, 2951, 2948, 2942, 2948, 2944, 2953, 2954, 2955, - 2946, 2949, 2956, 2943, 2946, 2958, 2959, 2960, 2964, 2965, - 2968, 2946, 2970, 2971, 2943, 2943, 2950, 2972, 2973, 2974, - 2951, 2975, 2976, 2977, 2979, 2953, 2954, 2955, 2978, 2978, - 2956, 2980, 2981, 2958, 2959, 2960, 2964, 2965, 2968, 2982, - 2970, 2971, 2983, 2984, 2986, 2972, 2973, 2974, 2987, 2975, - 2976, 2977, 2979, 2988, 2989, 2990, 2978, 2978, 2991, 2980, - 2981, 2992, 2993, 2995, 2996, 2997, 2999, 2982, 3000, 3001, - 2983, 2984, 2986, 3003, 3005, 2996, 2987, 2041, 3006, 3007, - - 3009, 2988, 2989, 2990, 3010, 3011, 2991, 3012, 3013, 2992, - 2993, 2995, 3015, 2997, 2999, 3016, 3000, 3001, 3019, 3017, - 3020, 3003, 3005, 3026, 3024, 2996, 3006, 3007, 3009, 3714, - 2039, 2034, 3010, 3011, 3017, 3012, 3013, 1953, 3729, 3022, - 3015, 3024, 3022, 3016, 3022, 1938, 3019, 3017, 3020, 3022, - 3027, 3026, 3022, 3027, 3028, 3027, 3032, 3028, 3036, 3028, - 3027, 3036, 3017, 3027, 3028, 3029, 3022, 3033, 3029, 3024, - 3029, 1934, 3041, 3032, 3042, 3029, 3043, 3027, 3029, 3714, - 3030, 3028, 3045, 3030, 3033, 3030, 3035, 3047, 3729, 3035, - 3030, 3035, 3029, 3030, 3022, 3072, 3035, 3049, 3072, 3035, - - 3041, 3032, 3042, 3050, 3043, 3027, 3051, 3030, 1932, 3028, - 3045, 3037, 3033, 3035, 3037, 3047, 3037, 3052, 3054, 3055, - 3029, 3037, 1904, 3038, 3037, 3049, 3038, 3056, 3038, 3057, - 3058, 3050, 3059, 3038, 3051, 3030, 3038, 3060, 3037, 3061, - 3063, 3035, 3064, 3065, 3066, 3052, 3054, 3055, 3068, 3069, - 3038, 3070, 3071, 3073, 3074, 3056, 3075, 3057, 3058, 3077, - 3059, 3078, 3079, 3080, 3081, 3060, 3037, 3061, 3063, 1888, - 3064, 3065, 3066, 1887, 3083, 3086, 3068, 3069, 3038, 3070, - 3071, 3073, 3074, 3089, 3075, 3090, 3089, 3077, 3089, 3078, - 3079, 3080, 3081, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - - 3082, 3082, 3083, 3086, 3091, 3093, 3094, 3095, 3096, 3097, - 3098, 3099, 3100, 3090, 3101, 3102, 3102, 3102, 3102, 3102, - 3102, 3102, 3102, 3102, 3103, 3104, 3105, 3107, 3108, 3109, - 3111, 3112, 3091, 3093, 3094, 3095, 3096, 3097, 3098, 3099, - 3100, 3113, 3101, 3114, 3116, 3117, 3118, 3120, 3121, 3123, - 3124, 3125, 3103, 3104, 3105, 3107, 3108, 3109, 3111, 3112, - 3127, 3128, 3130, 3131, 3132, 3133, 3134, 3135, 3137, 3113, - 3138, 3114, 3116, 3117, 3118, 3120, 3121, 3123, 3124, 3125, - 3139, 3140, 3142, 3143, 3144, 3145, 3147, 3149, 3127, 3128, - 3130, 3131, 3132, 3133, 3134, 3135, 3137, 3152, 3138, 3156, - - 3158, 3160, 3161, 3162, 3163, 3155, 3164, 3165, 3139, 3140, - 3142, 3143, 3144, 3145, 3147, 3149, 3155, 3166, 1884, 3168, - 3169, 3170, 3171, 3173, 3175, 3152, 3172, 3156, 3158, 3160, - 3161, 3162, 3163, 3177, 3164, 3165, 3177, 3172, 3177, 3186, - 3754, 3175, 3180, 3177, 1850, 3166, 3155, 3168, 3169, 3170, - 3171, 3173, 3178, 3174, 3172, 3178, 3174, 3178, 3174, 3180, - 3177, 3187, 3178, 3174, 3188, 3172, 3174, 3186, 3179, 3175, - 3189, 3179, 3181, 3179, 3190, 3181, 1819, 3181, 3179, 3178, - 3174, 3179, 3181, 1754, 1750, 3181, 3192, 3180, 3177, 3187, - 3754, 3182, 3188, 3193, 3182, 3179, 3182, 1749, 3189, 3181, - - 3194, 3182, 3190, 3196, 3182, 3756, 3184, 3178, 3174, 3184, - 3197, 3184, 3185, 3198, 3192, 3185, 3184, 3185, 3182, 3184, - 3199, 3193, 3185, 3179, 3200, 3185, 3201, 3181, 3194, 3204, - 3205, 3196, 3206, 3184, 3207, 3208, 3209, 3211, 3197, 3185, - 3211, 3198, 3211, 3212, 3213, 3214, 3182, 3215, 3199, 3216, - 3217, 3218, 3200, 3219, 3201, 3756, 1748, 3204, 3205, 3256, - 3206, 3184, 3207, 3208, 3209, 3221, 3226, 3185, 1721, 1718, - 3256, 3212, 3213, 3214, 1709, 3215, 3223, 3216, 3217, 3218, - 3225, 3219, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, - 3220, 3228, 3229, 3221, 3222, 3222, 3222, 3222, 3222, 3222, - - 3222, 3222, 3222, 3230, 3223, 3231, 3232, 3233, 3225, 3226, - 3234, 3235, 3236, 3239, 3240, 3242, 3243, 3244, 3246, 3228, - 3229, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, - 3247, 3230, 3248, 3231, 3232, 3233, 3250, 3226, 3234, 3235, - 3236, 3239, 3240, 3242, 3243, 3244, 3246, 3252, 3253, 3254, - 3255, 3257, 3258, 3259, 3260, 3262, 3263, 3264, 3247, 3265, - 3248, 3266, 3270, 3271, 3250, 3272, 3273, 3276, 3277, 3278, - 3281, 3283, 1705, 3284, 3285, 3252, 3253, 3254, 3255, 3257, - 3258, 3259, 3260, 3262, 3263, 3264, 3286, 3265, 3287, 3266, - 3270, 3271, 3279, 3272, 3273, 3276, 3277, 3278, 3281, 3283, - - 3279, 3284, 3285, 3288, 3289, 3290, 3292, 3293, 3294, 3295, - 3296, 3297, 3299, 1703, 3286, 3301, 3287, 1701, 3301, 3304, - 3279, 3305, 3322, 3352, 3306, 3322, 3352, 3307, 3279, 3299, - 3308, 3288, 3289, 3290, 3292, 3293, 3294, 3295, 3296, 3297, - 3298, 3300, 1691, 3298, 3300, 3298, 3300, 3304, 3311, 3305, - 3298, 3300, 3306, 3298, 3300, 3307, 3302, 3299, 3308, 3302, - 3303, 3302, 3313, 3303, 3315, 3303, 3302, 3298, 3300, 3302, - 3303, 3316, 3317, 3303, 3318, 3319, 3311, 3321, 3323, 3326, - 3327, 3328, 3329, 3302, 3330, 3331, 3332, 3303, 3353, 1650, - 3313, 3353, 3315, 3370, 3356, 3298, 3300, 3356, 3504, 3316, - - 3317, 3504, 3318, 3319, 3370, 3321, 3323, 3326, 3327, 3328, - 3329, 3302, 3330, 3331, 3332, 3303, 3324, 3324, 3324, 3324, - 3324, 3324, 3324, 3324, 3324, 3324, 3324, 3325, 3325, 3325, - 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3333, 3334, - 3336, 3324, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, - 3335, 3338, 3325, 3339, 3339, 3339, 3339, 3339, 3339, 3339, - 3339, 3339, 3340, 3342, 3343, 3344, 3333, 3334, 3336, 3345, - 3346, 3347, 3348, 3349, 3354, 3355, 3357, 3358, 3359, 3338, - 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3364, - 3340, 3342, 3343, 3344, 3366, 3368, 3372, 3345, 3346, 3347, - - 3348, 3349, 3354, 3355, 3357, 3358, 3359, 3373, 3374, 3375, - 3376, 3377, 3379, 3380, 3381, 3382, 3383, 3364, 3378, 3384, - 3375, 3385, 3366, 3368, 3372, 3386, 3378, 3378, 3387, 3388, - 3389, 3390, 3391, 3392, 3394, 3373, 3374, 3395, 3376, 3377, - 3379, 3380, 3381, 3382, 3383, 3396, 3378, 3384, 3397, 3385, - 3398, 3400, 3401, 3386, 3378, 3378, 3387, 3388, 3389, 3390, - 3391, 3392, 3394, 3402, 3399, 3395, 3399, 3404, 3405, 3407, - 3408, 1640, 3406, 3396, 3409, 3406, 3397, 3406, 3398, 3400, - 3401, 3411, 3406, 3413, 3417, 3406, 3419, 3423, 3424, 3446, - 3516, 3402, 3446, 3516, 3446, 3404, 3405, 3407, 3408, 3406, - - 3420, 3425, 3409, 3420, 3426, 3420, 3427, 3428, 3767, 3411, - 3767, 3413, 3417, 3422, 3419, 3423, 3424, 3420, 3420, 3420, - 3420, 3420, 3420, 3420, 3420, 3420, 3429, 3406, 3431, 3425, - 3432, 3435, 3426, 3436, 3427, 3428, 3399, 3422, 3422, 3422, - 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3437, 3438, - 1574, 3440, 3439, 3441, 3429, 3442, 3431, 3443, 3432, 3435, - 3448, 3436, 3422, 3434, 3434, 3434, 3434, 3434, 3434, 3434, - 3434, 3434, 3449, 3451, 3452, 3453, 3437, 3438, 3439, 3440, - 3768, 3441, 3768, 3442, 3447, 3443, 1570, 3447, 3448, 3447, - 3450, 3529, 1565, 3450, 3529, 3450, 3529, 3458, 3462, 3463, - - 3449, 3451, 3452, 3453, 3462, 3464, 3439, 3456, 3456, 3456, - 3456, 3456, 3456, 3456, 3456, 3456, 3457, 3457, 3457, 3457, - 3457, 3457, 3457, 3457, 3457, 3458, 3462, 3463, 3465, 3467, - 3468, 3469, 3462, 3464, 3470, 3471, 3472, 3474, 3477, 3479, - 3480, 3481, 3482, 3483, 3486, 3487, 3489, 3490, 3532, 3583, - 1563, 3532, 3583, 3532, 3583, 1541, 3465, 3467, 3468, 3469, - 3492, 3493, 3470, 3471, 3472, 3474, 3477, 3479, 3480, 3481, - 3482, 3483, 3486, 3487, 3489, 3490, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3494, 3492, 3493, - 3497, 3498, 3499, 3500, 3502, 3503, 3588, 3591, 1537, 3588, - - 3591, 3491, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, - 3505, 3800, 1521, 3800, 3509, 3494, 3510, 3511, 3497, 3498, - 3499, 3500, 3502, 3503, 3506, 3506, 3506, 3506, 3506, 3506, - 3506, 3506, 3506, 3507, 3507, 3507, 3507, 3507, 3507, 3507, - 3507, 3507, 3509, 3513, 3510, 3511, 3514, 3515, 3517, 3518, - 3519, 3521, 3522, 3522, 3522, 3522, 3522, 3522, 3522, 3522, - 3522, 3523, 3524, 3525, 1520, 3527, 3526, 3534, 3535, 3537, - 3538, 3513, 3539, 3631, 3514, 3515, 3517, 3518, 3519, 3521, - 3594, 1517, 1464, 3594, 3631, 3594, 1463, 3540, 3632, 3523, - 3524, 3525, 3526, 3527, 3544, 3534, 3535, 3537, 3538, 3632, - - 3539, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, - 3541, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - 3526, 3545, 3544, 3546, 3541, 3541, 3541, 3541, 3541, 3541, - 3541, 3541, 3541, 3548, 3550, 3551, 3552, 3553, 3554, 3555, - 3556, 3557, 3558, 3559, 3560, 3561, 3562, 3563, 3566, 3545, - 3570, 3546, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, - 3586, 3548, 3550, 3551, 3552, 3553, 3554, 3555, 3556, 3557, - 3558, 3559, 3560, 3561, 3562, 3563, 3566, 3572, 3570, 3571, - 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, - 3573, 3574, 3577, 3579, 3580, 3584, 3648, 3584, 3584, 3648, - - 3584, 3648, 1456, 1455, 3571, 3572, 3587, 3589, 3584, 3655, - 3658, 3585, 3655, 3658, 3655, 3658, 1454, 3593, 3573, 3574, - 3577, 3579, 3580, 3585, 3585, 3585, 3585, 3585, 3585, 3585, - 3585, 3585, 3595, 3596, 3587, 3589, 3590, 3590, 3590, 3590, - 3590, 3590, 3590, 3590, 3590, 3593, 3597, 3598, 3599, 3599, - 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3600, 3601, 3604, - 3595, 3596, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, - 3603, 3605, 3608, 3609, 3597, 3598, 3613, 3609, 3614, 3584, - 3615, 3617, 3618, 3619, 3609, 3600, 3601, 3604, 3657, 3657, - 3657, 3657, 3657, 3657, 3657, 3657, 3657, 3621, 3622, 3605, - - 3608, 3609, 3616, 3623, 3613, 3609, 3614, 3624, 3615, 3617, - 3618, 3619, 3609, 3625, 3626, 3627, 3616, 3616, 3616, 3616, - 3616, 3616, 3616, 3616, 3616, 3621, 3622, 3628, 3629, 3630, - 3633, 3623, 3635, 3641, 3643, 3624, 3645, 3647, 3802, 3654, - 3802, 3625, 3626, 3627, 3656, 3663, 3650, 3661, 3650, 3650, - 3661, 3650, 3661, 3664, 3665, 3628, 3629, 3630, 3633, 3650, - 3635, 3641, 3643, 3666, 3645, 3647, 3651, 3654, 3651, 3651, - 3667, 3651, 3656, 3663, 3668, 3712, 1402, 1399, 3712, 3651, - 3712, 3664, 3665, 1398, 3670, 3671, 3674, 3675, 3676, 3677, - 3681, 3666, 3682, 3683, 3684, 3685, 3686, 3687, 3667, 3688, - - 3689, 3691, 3668, 3669, 3669, 3669, 3669, 3669, 3669, 3669, - 3669, 3669, 3670, 3671, 3674, 3675, 3676, 3677, 3681, 3692, - 3682, 3683, 3684, 3685, 3686, 3687, 3693, 3688, 3689, 3691, - 3650, 3695, 3696, 3699, 3700, 3704, 3706, 3707, 3710, 3717, - 3718, 3719, 3720, 3721, 3722, 3700, 3723, 3692, 3707, 3724, - 3651, 3727, 3728, 3730, 3693, 3731, 3733, 3734, 3736, 3695, - 3696, 3699, 3737, 3704, 3706, 3707, 3710, 3717, 3718, 3719, - 3720, 3721, 3722, 3738, 3723, 3739, 3707, 3740, 3741, 3727, - 3728, 3730, 3742, 3731, 3733, 3734, 3736, 3746, 3747, 3748, - 3737, 3749, 3751, 3724, 3758, 3759, 3761, 3762, 3763, 3764, - - 3766, 3738, 3771, 3739, 3772, 3740, 3741, 3773, 3774, 3775, - 3742, 3778, 3779, 3780, 3781, 3746, 3747, 3748, 3782, 3749, - 3751, 3724, 3758, 3759, 3761, 3762, 3763, 3764, 3766, 3783, - 3771, 3786, 3772, 3790, 3792, 3773, 3774, 3775, 3793, 3778, - 3779, 3780, 3781, 3794, 3787, 3796, 3782, 3787, 3797, 3799, - 3804, 3805, 3804, 3805, 3807, 3823, 3809, 3783, 3810, 3786, - 3811, 3813, 3792, 3814, 3815, 3816, 3793, 3817, 1387, 3821, - 3824, 3794, 3821, 3796, 3821, 3822, 3797, 3799, 3822, 3826, - 3822, 3829, 3807, 3790, 3809, 3818, 3810, 3837, 3811, 3813, - 3838, 3814, 3815, 3816, 3839, 3817, 3818, 3840, 3824, 3818, - - 3832, 3834, 3832, 3834, 3841, 3823, 3842, 3826, 3843, 3829, - 3844, 3845, 3846, 3818, 3847, 3837, 3852, 3853, 3838, 3852, - 1363, 3852, 3839, 1362, 3818, 3840, 1358, 3818, 1357, 1356, - 1355, 1354, 3841, 1352, 3842, 1321, 3843, 3857, 3844, 3845, - 3846, 3862, 3847, 3863, 3864, 3853, 3854, 3854, 3854, 3854, - 3854, 3854, 3854, 3854, 3854, 3856, 3856, 3856, 3856, 3856, - 3856, 3856, 3856, 3856, 3867, 3857, 3869, 3870, 3871, 3862, - 3872, 3863, 3864, 3876, 3876, 3876, 3876, 3876, 3876, 3876, - 3876, 3876, 3877, 3877, 3877, 3877, 3877, 3877, 3877, 3877, - 3877, 3879, 3867, 3882, 3869, 3870, 3871, 3883, 3872, 3878, - - 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3884, 3887, - 3888, 3895, 3898, 3899, 3900, 3901, 3902, 3904, 3905, 3879, - 3906, 3882, 1317, 1289, 1281, 3883, 3891, 3891, 3891, 3891, - 3891, 3891, 3891, 3891, 3891, 1279, 3884, 3887, 3888, 3895, - 3898, 3899, 3900, 3901, 3902, 3904, 3905, 1274, 3906, 3909, - 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, - 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3910, 3910, 3910, - 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, - 3910, 3910, 3910, 3910, 3910, 3911, 3911, 3911, 3911, 3911, - 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, - - 3911, 3911, 3911, 3912, 3912, 3912, 3912, 3912, 3912, 3912, - 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, - 3912, 3913, 3913, 3913, 3913, 3913, 3913, 3913, 3913, 3913, - 3913, 3913, 3913, 3913, 3913, 3913, 3913, 3913, 3913, 3914, - 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, - 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3915, 3915, 3915, - 3915, 3915, 3915, 3915, 3915, 3915, 3915, 3915, 3915, 3915, - 3915, 3915, 3915, 3915, 3915, 3916, 3916, 3916, 3916, 3916, - 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, - 3916, 3916, 3916, 3917, 3917, 3917, 3917, 3917, 3917, 3917, - - 3917, 3917, 3917, 3917, 3917, 3917, 3917, 3917, 3917, 3917, - 3917, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, - 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3919, - 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919, - 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3920, 3920, 3920, - 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, - 3920, 3920, 3920, 3920, 3920, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3922, 3922, 3922, 3922, 3922, 3922, 3922, + 558, 561, 563, 564, 539, 535, 540, 590, 860, 2799, + 590, 548, 566, 550, 551, 1695, 552, 567, 553, 555, + 568, 570, 538, 556, 3578, 3562, 559, 560, 571, 561, + 563, 564, 572, 573, 540, 554, 554, 554, 554, 574, + 566, 554, 554, 554, 575, 567, 576, 554, 568, 570, + 554, 579, 554, 554, 554, 554, 571, 554, 554, 2799, + 572, 573, 580, 554, 554, 554, 554, 574, 577, 554, + + 554, 554, 575, 581, 576, 554, 578, 578, 554, 579, + 554, 554, 554, 554, 582, 554, 554, 577, 583, 585, + 580, 586, 587, 588, 591, 589, 577, 591, 593, 594, + 595, 581, 596, 598, 578, 578, 589, 599, 600, 602, + 603, 588, 582, 606, 607, 577, 583, 585, 608, 586, + 587, 588, 610, 611, 612, 613, 593, 594, 595, 614, + 596, 598, 615, 616, 617, 599, 600, 602, 603, 588, + 618, 606, 607, 619, 675, 620, 608, 620, 869, 675, + 610, 611, 612, 613, 869, 623, 624, 614, 623, 624, + 615, 616, 617, 623, 624, 623, 624, 626, 618, 629, + + 626, 619, 629, 630, 629, 640, 630, 629, 630, 632, + 635, 630, 632, 635, 3046, 635, 636, 632, 635, 636, + 646, 636, 620, 635, 636, 637, 675, 638, 637, 636, + 638, 646, 645, 639, 639, 3544, 639, 824, 639, 655, + 623, 624, 645, 3541, 640, 645, 639, 626, 824, 639, + 641, 641, 869, 641, 629, 641, 3046, 3525, 630, 632, + 639, 733, 3514, 641, 733, 635, 641, 643, 643, 895, + 643, 636, 643, 640, 674, 899, 653, 641, 655, 653, + 643, 653, 682, 643, 647, 647, 662, 647, 639, 647, + 649, 3509, 653, 649, 643, 649, 662, 647, 649, 662, + + 647, 734, 674, 653, 734, 641, 669, 655, 895, 669, + 682, 647, 649, 645, 899, 905, 652, 639, 639, 652, + 654, 652, 643, 654, 652, 654, 652, 683, 654, 652, + 654, 653, 652, 654, 641, 641, 654, 684, 663, 647, + 649, 678, 679, 652, 678, 679, 663, 654, 685, 678, + 735, 643, 643, 735, 905, 683, 669, 663, 3498, 653, + 653, 686, 3488, 737, 687, 684, 737, 662, 647, 647, + 740, 652, 3196, 740, 656, 654, 685, 656, 657, 656, + 3486, 657, 656, 657, 656, 663, 657, 656, 657, 686, + 656, 657, 687, 3468, 657, 680, 678, 679, 680, 688, + + 652, 656, 690, 680, 654, 657, 1318, 658, 659, 691, + 658, 659, 658, 659, 3196, 658, 659, 658, 659, 692, + 658, 659, 1575, 658, 659, 693, 1391, 688, 743, 656, + 690, 743, 694, 657, 658, 659, 3467, 691, 660, 664, + 695, 660, 664, 660, 664, 1318, 660, 692, 660, 747, + 680, 660, 747, 693, 660, 664, 672, 3458, 656, 672, + 694, 672, 658, 659, 672, 660, 664, 697, 695, 665, + 666, 1391, 665, 666, 665, 666, 1575, 665, 666, 665, + 666, 673, 665, 666, 673, 665, 673, 751, 1937, 673, + 751, 658, 659, 660, 664, 697, 665, 666, 3434, 667, + + 698, 699, 667, 701, 667, 702, 696, 667, 3423, 667, + 703, 672, 667, 696, 696, 696, 696, 696, 696, 696, + 696, 696, 660, 664, 665, 666, 667, 705, 698, 699, + 706, 701, 707, 702, 708, 709, 673, 710, 703, 712, + 714, 802, 1937, 715, 802, 736, 716, 717, 736, 719, + 736, 720, 721, 665, 667, 705, 713, 723, 706, 724, + 707, 725, 708, 709, 726, 710, 720, 712, 714, 713, + 713, 715, 713, 713, 716, 717, 718, 719, 718, 720, + 721, 722, 718, 728, 713, 723, 727, 724, 732, 725, + 753, 722, 726, 835, 720, 727, 835, 713, 713, 3416, + + 713, 713, 761, 729, 718, 729, 718, 729, 754, 722, + 718, 728, 738, 754, 727, 738, 732, 738, 753, 722, + 3384, 739, 741, 727, 739, 741, 739, 741, 762, 744, + 761, 729, 744, 729, 744, 729, 746, 748, 763, 746, + 748, 746, 748, 750, 752, 764, 750, 752, 750, 752, + 758, 774, 775, 758, 766, 776, 762, 766, 2870, 777, + 754, 778, 766, 780, 770, 781, 763, 770, 782, 770, + 783, 784, 770, 764, 786, 2870, 766, 785, 790, 774, + 775, 791, 3374, 776, 792, 793, 770, 777, 3373, 778, + 796, 780, 785, 781, 787, 785, 782, 790, 783, 784, + + 758, 787, 786, 788, 766, 785, 790, 788, 787, 791, + 789, 788, 792, 793, 770, 795, 794, 797, 796, 797, + 785, 798, 787, 785, 789, 790, 789, 799, 800, 787, + 795, 788, 794, 805, 807, 788, 787, 803, 789, 788, + 810, 811, 812, 795, 794, 797, 813, 797, 803, 798, + 3364, 814, 789, 815, 789, 799, 800, 816, 795, 818, + 794, 805, 807, 819, 820, 821, 822, 823, 810, 811, + 812, 825, 826, 827, 813, 829, 830, 832, 803, 814, + 3322, 815, 833, 836, 837, 816, 831, 818, 838, 839, + 840, 819, 820, 821, 822, 823, 841, 831, 842, 825, + + 826, 827, 843, 829, 830, 832, 844, 845, 831, 847, + 833, 836, 837, 848, 849, 850, 838, 839, 840, 851, + 852, 848, 853, 854, 841, 855, 842, 856, 863, 858, + 843, 858, 3304, 863, 844, 845, 831, 847, 908, 3288, + 888, 848, 849, 850, 3282, 911, 888, 851, 852, 848, + 853, 854, 915, 855, 859, 856, 861, 859, 862, 861, + 870, 862, 859, 862, 859, 864, 862, 866, 864, 865, + 866, 870, 865, 874, 865, 863, 858, 865, 867, 867, + 915, 867, 865, 867, 874, 908, 909, 914, 867, 909, + 914, 867, 911, 882, 867, 872, 872, 3280, 872, 881, + + 872, 916, 881, 3274, 881, 867, 861, 881, 872, 859, + 996, 872, 882, 862, 888, 864, 917, 977, 883, 918, + 977, 883, 872, 883, 865, 912, 883, 919, 883, 916, + 912, 883, 978, 867, 883, 978, 909, 3264, 884, 870, + 882, 884, 914, 884, 917, 883, 884, 918, 884, 881, + 872, 884, 889, 1329, 884, 919, 885, 996, 3189, 885, + 889, 885, 867, 867, 885, 884, 885, 920, 921, 885, + 3262, 889, 885, 883, 1520, 3189, 924, 912, 925, 872, + 872, 887, 891, 885, 887, 891, 887, 891, 3251, 887, + 928, 887, 1329, 884, 887, 920, 921, 887, 891, 889, + + 893, 931, 883, 893, 924, 893, 925, 892, 887, 891, + 892, 885, 892, 3237, 3204, 892, 893, 892, 928, 1520, + 892, 979, 884, 892, 979, 932, 979, 893, 889, 931, + 933, 935, 936, 998, 892, 937, 887, 891, 894, 898, + 885, 894, 898, 894, 898, 1003, 894, 898, 894, 913, + 3167, 894, 913, 932, 894, 893, 1003, 913, 933, 935, + 936, 898, 892, 937, 939, 894, 891, 980, 896, 897, + 980, 896, 897, 896, 897, 1268, 896, 897, 896, 897, + 998, 896, 897, 893, 896, 897, 1268, 981, 3154, 898, + 981, 892, 939, 894, 900, 896, 897, 900, 906, 900, + + 997, 906, 900, 906, 913, 997, 906, 907, 906, 940, + 907, 906, 907, 922, 906, 907, 900, 907, 922, 941, + 907, 942, 943, 896, 897, 906, 945, 946, 910, 947, + 922, 910, 948, 910, 907, 982, 910, 940, 982, 983, + 982, 922, 983, 3149, 900, 986, 922, 941, 986, 942, + 943, 3119, 997, 906, 945, 946, 949, 947, 922, 950, + 948, 951, 907, 929, 929, 929, 929, 929, 929, 929, + 929, 929, 930, 930, 930, 930, 930, 930, 930, 930, + 930, 953, 906, 910, 949, 952, 954, 950, 952, 951, + 955, 956, 957, 958, 959, 960, 961, 962, 963, 965, + + 966, 967, 968, 965, 967, 969, 970, 971, 972, 953, + 973, 976, 984, 3105, 954, 984, 952, 984, 955, 956, + 957, 958, 959, 960, 961, 962, 963, 965, 966, 967, + 968, 965, 967, 969, 970, 971, 972, 985, 973, 976, + 985, 987, 985, 1000, 987, 989, 987, 990, 989, 1001, + 990, 991, 990, 992, 991, 1002, 992, 993, 992, 994, + 993, 1005, 994, 995, 994, 999, 995, 1004, 999, 1007, + 1004, 1000, 1011, 1006, 1012, 1004, 1006, 1001, 1006, 1014, + 1005, 1006, 1015, 1002, 1016, 1017, 1018, 2267, 1007, 2267, + 1019, 1020, 1021, 1022, 1023, 3097, 1024, 1025, 1027, 1029, + + 1011, 1030, 1012, 1026, 1026, 1026, 1026, 1014, 1005, 1031, + 1015, 3087, 1016, 1017, 1018, 999, 1007, 1004, 1019, 1020, + 1021, 1022, 1023, 1006, 1024, 1025, 1027, 1029, 1032, 1030, + 1033, 1026, 1026, 1026, 1026, 1028, 1034, 1031, 1035, 1028, + 1036, 1037, 1038, 1039, 1041, 1040, 1038, 1042, 1038, 1040, + 1043, 1044, 1045, 1046, 1047, 3060, 1032, 1050, 1033, 3058, + 1051, 1041, 1053, 1028, 1034, 1054, 1035, 1028, 1036, 1037, + 1038, 1039, 1041, 1040, 1038, 1042, 1038, 1040, 1043, 1044, + 1045, 1046, 1047, 1049, 1052, 1050, 1055, 1049, 1051, 1041, + 1053, 1056, 1057, 1054, 1049, 1052, 1049, 3056, 1058, 1059, + + 1060, 1061, 1063, 1064, 1065, 1066, 1067, 1069, 1070, 1071, + 3052, 1049, 1073, 1074, 1055, 1049, 1076, 1077, 1078, 1056, + 1057, 1079, 1049, 1080, 1049, 1052, 1058, 1059, 1060, 1061, + 1063, 1064, 1065, 1066, 1067, 1069, 1070, 1071, 1072, 1072, + 1073, 1074, 1072, 1081, 1076, 1077, 1078, 1072, 1082, 1079, + 1083, 1080, 1084, 1072, 1085, 1086, 1087, 1072, 1088, 1072, + 1090, 1091, 1092, 1093, 1094, 1095, 1072, 1072, 1096, 1097, + 1072, 1081, 1098, 1099, 1100, 1072, 1082, 1113, 1083, 1114, + 1084, 1072, 1085, 1086, 1087, 1072, 1088, 1072, 1090, 1091, + 1092, 1093, 1094, 1095, 1126, 1107, 1096, 1097, 1107, 1128, + + 1098, 1099, 1100, 1106, 1106, 1118, 1106, 1111, 1106, 1130, + 1111, 1112, 1111, 1118, 1112, 1111, 1106, 1111, 1114, 1106, + 1111, 1131, 1126, 1111, 1118, 1133, 3043, 1128, 1190, 1135, + 1106, 1190, 1136, 3035, 1111, 1138, 1139, 1130, 1116, 1141, + 3026, 1116, 1143, 1116, 1113, 1113, 1116, 1114, 1116, 1131, + 3016, 1116, 1118, 1133, 1116, 2975, 1120, 1135, 1106, 1120, + 1136, 1120, 1111, 1138, 1139, 1116, 1107, 1141, 1117, 1398, + 1143, 1117, 1120, 1117, 2973, 1573, 1117, 1122, 1117, 2969, + 1398, 1117, 1112, 1120, 1117, 1122, 1573, 1106, 1106, 1119, + 1144, 1111, 1119, 1116, 1119, 1117, 1122, 1119, 2964, 1119, + + 1145, 1146, 1119, 1123, 1121, 1119, 1123, 1121, 1123, 1121, + 1137, 1120, 1121, 1147, 1121, 1151, 1119, 1121, 1144, 1123, + 1121, 1153, 1116, 1117, 1122, 2957, 1137, 1156, 1145, 1146, + 1123, 1121, 1191, 1193, 1192, 1191, 1193, 1192, 1137, 1192, + 2937, 1147, 1157, 1151, 1119, 2931, 1158, 1159, 1160, 1153, + 1161, 1162, 1164, 1142, 1137, 1156, 1165, 1166, 1123, 1121, + 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1167, + 1157, 1168, 1169, 1119, 1158, 1159, 1160, 1170, 1161, 1162, + 1164, 1171, 1171, 1172, 1165, 1166, 1173, 1123, 1163, 1163, + 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1167, 1174, 1168, + + 1169, 1175, 1177, 1178, 1179, 1170, 1180, 1181, 1183, 1171, + 1171, 1172, 1184, 1185, 1173, 1186, 1186, 1194, 1195, 1196, + 1194, 1195, 1196, 1195, 1198, 1200, 1174, 1198, 1200, 1175, + 1177, 1178, 1179, 1202, 1180, 1181, 1183, 1206, 1207, 1208, + 1184, 1185, 1197, 1186, 1186, 1197, 1199, 1197, 1215, 1199, + 1201, 1199, 1216, 1201, 1217, 1219, 1220, 1222, 1223, 1224, + 1225, 1202, 1226, 1227, 1228, 1206, 1207, 1208, 1229, 1230, + 1232, 1231, 1233, 1234, 1235, 1236, 1215, 1231, 1237, 1238, + 1216, 1239, 1217, 1219, 1220, 1222, 1223, 1224, 1225, 1240, + 1226, 1227, 1228, 1241, 1242, 1243, 1229, 1230, 1232, 1231, + + 1233, 1234, 1235, 1236, 1244, 1231, 1237, 1238, 1245, 1239, + 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1240, 1253, 1254, + 1255, 1241, 1242, 1243, 1256, 1257, 1259, 1260, 1261, 1262, + 1263, 1264, 1244, 1253, 1266, 1267, 1245, 1269, 1246, 1247, + 1248, 1249, 1250, 1251, 1252, 1266, 1253, 1254, 1255, 1270, + 1266, 1266, 1256, 1257, 1259, 1260, 1261, 1262, 1263, 1264, + 1271, 1253, 1266, 1267, 1273, 1269, 1274, 1275, 1276, 1278, + 1279, 1280, 1281, 1266, 1283, 1285, 1286, 1270, 1266, 1266, + 1287, 1288, 1289, 1290, 1291, 1293, 1295, 1288, 1271, 1296, + 1297, 1298, 1273, 1299, 1274, 1275, 1276, 1278, 1279, 1280, + + 1281, 1300, 1283, 1285, 1286, 1301, 1302, 1303, 1287, 1288, + 1289, 1290, 1291, 1293, 1295, 1288, 1304, 1296, 1297, 1298, + 1305, 1299, 1306, 1308, 1309, 1310, 1311, 1312, 1313, 1300, + 1314, 1315, 1316, 1301, 1302, 1303, 1317, 1321, 1325, 2929, + 1393, 1568, 1332, 1393, 1304, 1335, 1325, 2471, 1305, 2471, + 1306, 1308, 1309, 1310, 1311, 1312, 1313, 1325, 1314, 1315, + 1316, 1322, 1327, 1336, 1322, 1327, 1322, 1327, 1331, 1322, + 1332, 1322, 1337, 1335, 1322, 1317, 1321, 1322, 1327, 1331, + 1333, 1654, 1333, 1338, 1339, 1325, 1568, 1340, 1322, 1327, + 1341, 1336, 1654, 1330, 1342, 1345, 1330, 1347, 1330, 1348, + + 1337, 1330, 1349, 1330, 1317, 1321, 1330, 1352, 1333, 1330, + 1333, 1338, 1339, 1350, 1325, 1340, 1322, 1327, 1341, 1351, + 1330, 1344, 1342, 1345, 1344, 1347, 1344, 1348, 1353, 1354, + 1349, 1344, 1356, 1362, 1344, 1331, 1364, 1352, 1367, 1368, + 1369, 1350, 1370, 1352, 1371, 1372, 1327, 1351, 1330, 1394, + 1395, 1396, 1394, 1395, 1396, 1395, 1353, 1354, 1373, 1374, + 1356, 1362, 1375, 1376, 1364, 1352, 1367, 1368, 1369, 1378, + 1370, 1352, 1371, 1372, 1379, 1380, 1344, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1373, 1374, 1381, 1383, + 1375, 1376, 1384, 1385, 1386, 1387, 1388, 1378, 1384, 1399, + + 1400, 1397, 1379, 1380, 1397, 1403, 1404, 1406, 1407, 1408, + 1409, 1410, 1411, 1412, 1413, 1414, 1381, 1383, 1415, 1416, + 1384, 1385, 1386, 1387, 1388, 1418, 1384, 1399, 1400, 1419, + 1420, 1417, 1421, 1403, 1404, 1406, 1407, 1408, 1409, 1410, + 1411, 1412, 1413, 1414, 1417, 1422, 1415, 1416, 1423, 1417, + 1424, 1425, 1426, 1418, 1428, 1427, 1429, 1419, 1420, 1417, + 1421, 1427, 1430, 1427, 1431, 1432, 1427, 1433, 1434, 2893, + 1436, 1437, 1417, 1422, 1438, 1439, 1423, 1417, 1424, 1425, + 1426, 1440, 1428, 1427, 1429, 2882, 1441, 1442, 1443, 1427, + 1430, 1427, 1431, 1432, 1427, 1433, 1434, 1435, 1436, 1437, + + 1444, 1435, 1438, 1439, 1445, 1446, 1447, 1448, 1435, 1440, + 1435, 1435, 1449, 1435, 1441, 1442, 1443, 1450, 1451, 1452, + 1453, 1454, 1455, 1456, 1461, 1435, 1462, 1463, 1444, 1435, + 1464, 1465, 1445, 1446, 1447, 1448, 1435, 1469, 1435, 1435, + 1449, 1435, 1470, 2881, 2865, 1450, 1451, 1452, 1453, 1454, + 1455, 1456, 1461, 1466, 1462, 1463, 1471, 1473, 1464, 1465, + 1466, 1472, 1474, 1475, 1476, 1469, 1477, 1478, 1466, 1471, + 1470, 1471, 1472, 1466, 1479, 1480, 1481, 1482, 1483, 1484, + 1485, 1466, 1486, 1472, 1471, 1473, 1487, 1489, 1466, 1490, + 1474, 1475, 1476, 1488, 1477, 1478, 1466, 1471, 1488, 1471, + + 1491, 1466, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1492, + 1486, 1472, 1493, 1494, 1487, 1489, 1495, 1490, 1496, 1497, + 1498, 1488, 1499, 1502, 1501, 1503, 1488, 1504, 1491, 1501, + 1505, 3501, 1508, 3501, 1509, 1506, 1510, 1492, 1499, 1511, + 1493, 1494, 1513, 1506, 1495, 1514, 1496, 1497, 1498, 1515, + 1499, 1502, 1501, 1503, 1506, 1504, 1507, 1501, 1516, 1507, + 1508, 1507, 1509, 1517, 1510, 1518, 1499, 1511, 1523, 1709, + 1513, 1519, 1507, 1514, 1519, 1522, 1519, 1515, 1522, 1526, + 1522, 1519, 1506, 1507, 1519, 1522, 1516, 1527, 1522, 1528, + 1531, 1517, 1532, 1518, 1534, 1529, 1523, 1505, 1505, 1529, + + 1536, 1529, 1571, 1789, 2864, 1571, 1789, 1526, 1752, 2855, + 2000, 1507, 1542, 1543, 1709, 1527, 2814, 1528, 1531, 1752, + 1532, 2000, 1534, 1529, 1546, 1547, 1519, 1529, 1536, 1529, + 1522, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, + 1542, 1543, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, + 1544, 1548, 1546, 1547, 1549, 1550, 1551, 1552, 1553, 1554, + 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, + 1565, 1566, 1572, 1576, 1577, 1580, 1581, 1582, 1583, 1548, + 1585, 1586, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, + 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, + + 1572, 1576, 1577, 1580, 1581, 1582, 1583, 1584, 1585, 1586, + 1587, 1588, 1589, 1590, 1584, 1591, 1592, 1593, 1594, 1595, + 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, + 1606, 1607, 1608, 1609, 1610, 1584, 1611, 1612, 1587, 1588, + 1589, 1590, 1584, 1591, 1592, 1593, 1594, 1595, 1596, 1597, + 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, + 1608, 1609, 1610, 1613, 1611, 1612, 1614, 1615, 1616, 1617, + 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, + 1628, 1629, 1630, 1631, 1632, 1633, 1635, 1636, 1637, 1638, + 1639, 1613, 1640, 1630, 1614, 1615, 1616, 1617, 1618, 1619, + + 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, + 1641, 1631, 1632, 1633, 1635, 1636, 1637, 1638, 1639, 1642, + 1640, 1643, 1644, 1630, 1646, 1647, 1648, 1649, 1650, 1651, + 1652, 1656, 1657, 1658, 1660, 1661, 1663, 1664, 1641, 1668, + 1669, 1652, 2813, 1804, 1670, 1671, 1804, 1642, 2804, 1643, + 1644, 1673, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1656, + 1657, 1658, 1660, 1661, 1663, 1664, 1674, 1668, 1669, 1652, + 1653, 1653, 1670, 1671, 1653, 1675, 1653, 1676, 1677, 1673, + 1653, 1653, 1678, 1679, 1653, 1680, 1681, 1682, 1683, 1653, + 1684, 1685, 1686, 1687, 1674, 1689, 1690, 1691, 1653, 1653, + + 1692, 1693, 1653, 1675, 1653, 1676, 1677, 1751, 1653, 1653, + 1678, 1679, 1653, 1680, 1681, 1682, 1683, 1653, 1684, 1685, + 1686, 1687, 1688, 1689, 1690, 1691, 1694, 1697, 1692, 1693, + 1698, 1700, 1701, 1702, 1703, 1688, 1704, 1705, 1707, 1711, + 1715, 1707, 1716, 1707, 1718, 1719, 1720, 1703, 1707, 2798, + 1688, 1707, 1751, 1961, 1694, 1697, 1961, 1721, 1698, 1700, + 1701, 1702, 1703, 1688, 1704, 1705, 1727, 1711, 1715, 1717, + 1716, 2769, 1718, 1719, 1720, 1703, 1717, 1717, 1717, 1717, + 1717, 1717, 1717, 1717, 1717, 1721, 1722, 1724, 1722, 1729, + 1729, 1730, 1731, 1707, 1727, 1732, 1733, 1734, 1735, 1724, + + 1736, 1737, 1739, 1740, 1724, 1728, 1728, 1728, 1728, 1728, + 1728, 1728, 1728, 1728, 1722, 1724, 1722, 1729, 1729, 1730, + 1731, 1743, 1744, 1732, 1733, 1734, 1735, 1724, 1736, 1737, + 1739, 1740, 1724, 1741, 1745, 1742, 1746, 1747, 1748, 1749, + 1750, 1756, 1757, 1741, 1760, 1761, 1742, 1763, 1764, 1743, + 1744, 1765, 1766, 1767, 1741, 1742, 1768, 1769, 1770, 1771, + 1772, 1741, 1745, 1742, 1746, 1747, 1748, 1749, 1750, 1756, + 1757, 1741, 1760, 1761, 1742, 1763, 1764, 1773, 1774, 1765, + 1766, 1767, 1741, 1742, 1768, 1769, 1770, 1771, 1772, 1776, + 1777, 1775, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, + + 1786, 1787, 1788, 1790, 1791, 1773, 1774, 1775, 1792, 1793, + 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1776, 1777, 1775, + 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, + 1788, 1790, 1791, 1801, 1802, 1775, 1792, 1793, 1794, 1795, + 1796, 1797, 1798, 1799, 1800, 1803, 1805, 1806, 1807, 1808, + 1807, 1803, 1809, 1810, 1812, 1807, 1813, 1814, 1816, 1817, + 1818, 1801, 1802, 1820, 1821, 1822, 1823, 1824, 1814, 1826, + 2765, 1819, 1828, 1803, 1805, 1806, 1807, 1808, 1807, 1803, + 1809, 1810, 1812, 1807, 1813, 1819, 1816, 1817, 1818, 1829, + 1830, 1820, 1821, 1822, 1823, 1824, 1831, 1826, 1814, 1819, + + 1828, 1832, 1833, 1834, 1836, 1835, 1837, 1838, 1839, 1840, + 1841, 1842, 2753, 2744, 1845, 1846, 1847, 1829, 1830, 1835, + 1849, 1850, 1855, 1857, 1831, 1858, 2974, 1859, 1860, 1832, + 1833, 1834, 1836, 1835, 1837, 1838, 1839, 1840, 1841, 1842, + 1844, 1844, 1845, 1846, 1847, 1862, 1844, 1835, 1849, 1850, + 1855, 1857, 1863, 1858, 1844, 1859, 1860, 1844, 1864, 1865, + 1866, 1867, 1869, 1872, 1870, 1873, 1870, 1874, 1844, 1844, + 1870, 1875, 1876, 1862, 1844, 1877, 2974, 1879, 1880, 1881, + 1863, 1870, 1844, 1870, 3132, 1844, 1864, 1865, 1866, 1867, + 1869, 1872, 1870, 1873, 1870, 1874, 1883, 1884, 1870, 1875, + + 1876, 1885, 1878, 1877, 1878, 1882, 1880, 1881, 1878, 1870, + 1886, 1870, 1882, 1887, 1888, 1891, 1892, 1895, 3580, 1878, + 3580, 1878, 1879, 1896, 1883, 1884, 1897, 1899, 2696, 1885, + 1878, 1900, 1878, 1882, 3132, 1901, 1878, 1901, 1886, 1902, + 1882, 1887, 1888, 1889, 1903, 1904, 1889, 1878, 1889, 1878, + 1906, 1896, 1907, 1889, 1897, 1899, 1889, 1908, 1911, 1900, + 1891, 1892, 1895, 1901, 1912, 1901, 1914, 1902, 1915, 1916, + 2201, 2685, 1903, 1904, 1917, 1918, 1919, 1920, 1906, 1974, + 1907, 2201, 1974, 2681, 1974, 1908, 1911, 1921, 1922, 1923, + 2079, 1924, 1912, 2079, 1914, 1922, 1915, 1916, 1889, 1909, + + 1925, 1926, 1917, 1918, 1919, 1920, 1909, 1909, 1909, 1909, + 1909, 1909, 1909, 1909, 1909, 1921, 1922, 1923, 1909, 1924, + 1909, 1909, 1909, 1922, 1927, 1928, 1909, 1929, 1925, 1926, + 1930, 1909, 1931, 1932, 1933, 1934, 1935, 1936, 1929, 1943, + 1909, 1939, 1939, 1939, 1939, 1945, 1909, 1946, 1909, 1909, + 1909, 1947, 1927, 1928, 1909, 1929, 1948, 1949, 1930, 1909, + 1931, 1932, 1933, 1934, 1935, 1936, 1929, 1943, 1909, 1941, + 1941, 1941, 1941, 1945, 1950, 1946, 1951, 1952, 1953, 1947, + 1954, 1955, 1956, 1957, 1948, 1949, 1958, 1959, 1962, 1963, + 1964, 1965, 1966, 1967, 1968, 1970, 1939, 1971, 1972, 1973, + + 1975, 1976, 1950, 1977, 1951, 1952, 1953, 1978, 1954, 1955, + 1956, 1957, 1979, 1980, 1958, 1959, 1962, 1963, 1964, 1965, + 1966, 1967, 1968, 1970, 1941, 1971, 1972, 1973, 1975, 1976, + 1981, 1977, 1982, 1983, 1984, 1978, 1985, 1986, 1987, 1988, + 1979, 1980, 1989, 1990, 1991, 1992, 1990, 1993, 1990, 1994, + 1995, 1996, 1997, 1998, 1999, 2002, 2003, 2004, 1981, 2005, + 1982, 1983, 1984, 2006, 1985, 1986, 1987, 1988, 2007, 2008, + 1989, 2009, 1991, 1992, 2010, 1993, 2011, 1994, 1995, 1996, + 1997, 1998, 1999, 2002, 2003, 2004, 2012, 2005, 2643, 2642, + 2014, 2006, 2015, 2618, 2580, 2016, 2007, 2008, 2553, 2009, + + 2017, 2018, 2010, 2019, 2011, 2020, 2550, 2021, 2022, 2023, + 2024, 2025, 2026, 2027, 2012, 2013, 2013, 2013, 2014, 2013, + 2015, 2013, 2013, 2016, 2028, 2013, 2013, 2013, 2017, 2018, + 2029, 2019, 2013, 2020, 2013, 2021, 2022, 2023, 2024, 2025, + 2026, 2027, 2030, 2013, 2013, 2013, 2031, 2013, 2032, 2013, + 2013, 2033, 2028, 2013, 2013, 2013, 2034, 2035, 2029, 2036, + 2013, 2037, 2013, 2038, 2039, 2042, 2043, 2044, 2045, 2050, + 2030, 2051, 2052, 2053, 2031, 2054, 2032, 2055, 2056, 2033, + 2057, 2058, 2061, 2058, 2034, 2035, 2064, 2036, 2065, 2037, + 2065, 2038, 2039, 2042, 2043, 2044, 2045, 2050, 2066, 2051, + + 2052, 2053, 2067, 2054, 2068, 2055, 2056, 2069, 2057, 2058, + 2061, 2058, 2070, 2071, 2064, 2081, 2065, 2072, 2065, 2082, + 2073, 2083, 2074, 2075, 2076, 2077, 2078, 2086, 2087, 2088, + 2089, 2090, 2541, 2091, 2092, 2069, 3412, 2093, 3412, 2094, + 2070, 2071, 2095, 2066, 2095, 2072, 2539, 2067, 2073, 2068, + 2074, 2075, 2076, 2077, 2078, 2086, 2087, 2088, 2089, 2090, + 2081, 2091, 2092, 2098, 2082, 2093, 2083, 2094, 2099, 2100, + 2095, 2102, 2095, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2103, 2104, 2106, 2096, 2107, 2096, 2096, 2096, + 2101, 2098, 2108, 2096, 2109, 2101, 2099, 2100, 2096, 2102, + + 2110, 2111, 2112, 2113, 2115, 2116, 2117, 2096, 3412, 2506, + 2103, 2104, 2106, 2096, 2107, 2096, 2096, 2096, 2101, 2118, + 2108, 2096, 2109, 2101, 2119, 2120, 2096, 2121, 2110, 2111, + 2112, 2113, 2115, 2116, 2117, 2096, 2097, 2097, 2097, 2097, + 2097, 2097, 2097, 2097, 2097, 2122, 2123, 2118, 2124, 2125, + 2126, 2128, 2119, 2120, 2129, 2121, 2130, 2131, 2132, 2135, + 2135, 2135, 2135, 2137, 2137, 2138, 2138, 2138, 2138, 2139, + 2139, 2140, 2142, 2122, 2123, 2143, 2124, 2125, 2126, 2128, + 2144, 2145, 2129, 2147, 2130, 2131, 2132, 2148, 2149, 2194, + 2150, 2151, 2194, 2152, 2153, 2159, 2502, 2154, 2155, 2140, + + 2142, 2156, 2157, 2143, 2500, 2160, 2161, 2158, 2144, 2145, + 2158, 2147, 2158, 2162, 2135, 2148, 2149, 2137, 2150, 2151, + 2138, 2152, 2153, 2139, 2146, 2154, 2155, 2499, 2163, 2156, + 2157, 2164, 2159, 2160, 2161, 2165, 2166, 3582, 2167, 3582, + 2146, 2162, 2168, 2169, 2170, 2172, 2173, 2170, 2174, 2170, + 2175, 2176, 2177, 2146, 2178, 2146, 2163, 2179, 2180, 2164, + 2159, 2181, 2183, 2165, 2166, 2146, 2167, 2146, 2146, 2146, + 2168, 2169, 2184, 2172, 2173, 2185, 2174, 2186, 2175, 2176, + 2177, 2146, 2178, 2146, 2189, 2179, 2180, 2190, 2191, 2181, + 2183, 2192, 2193, 2146, 2195, 2146, 2146, 2146, 2196, 2188, + + 2184, 2197, 2188, 2185, 2188, 2186, 2199, 2200, 2203, 2204, + 2202, 2205, 2189, 2206, 2207, 2190, 2191, 2209, 2208, 2192, + 2193, 2202, 2195, 2210, 2211, 2212, 2196, 2208, 2213, 2197, + 2214, 2215, 2216, 2217, 2199, 2200, 2203, 2204, 2218, 2205, + 2219, 2206, 2207, 2220, 2221, 2209, 2208, 2222, 2227, 2228, + 2229, 2210, 2211, 2212, 2230, 2219, 2213, 2231, 2214, 2215, + 2216, 2217, 2232, 2233, 2234, 2235, 2218, 2236, 2219, 2238, + 2239, 2220, 2221, 2240, 2241, 2222, 2227, 2228, 2229, 2242, + 2247, 2248, 2230, 2219, 2250, 2231, 2254, 2255, 2257, 2258, + 2232, 2233, 2234, 2235, 2259, 2236, 2260, 2238, 2239, 2261, + + 2262, 2240, 2241, 2263, 2269, 2270, 2271, 2242, 2247, 2248, + 2274, 2276, 2250, 2278, 2254, 2255, 2257, 2258, 2279, 2280, + 2281, 2282, 2259, 2283, 2260, 2284, 2285, 2261, 2262, 2286, + 2292, 2263, 2269, 2270, 2271, 2294, 2295, 2296, 2297, 2298, + 2367, 2278, 2299, 2367, 2300, 2301, 2279, 2280, 2281, 2282, + 2303, 2283, 2498, 2284, 2285, 2274, 2276, 2286, 2288, 2304, + 2305, 2288, 2491, 2288, 2295, 2296, 2297, 2298, 2288, 2479, + 2299, 2288, 2300, 2301, 2307, 2292, 2308, 2309, 2303, 2310, + 2294, 2311, 2306, 2312, 2310, 2288, 2313, 2304, 2305, 2306, + 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2314, 2315, + + 2316, 2317, 2307, 2318, 2308, 2309, 2319, 2310, 2320, 2311, + 2321, 2312, 2310, 2288, 2313, 2323, 2324, 2325, 2327, 2330, + 2332, 2333, 2334, 2336, 2337, 2338, 2314, 2315, 2316, 2317, + 2339, 2318, 2340, 2341, 2319, 2342, 2320, 2345, 2321, 2347, + 2477, 2476, 2352, 2323, 2324, 2325, 2327, 2330, 2332, 2333, + 2334, 2336, 2337, 2338, 2349, 2349, 2353, 2349, 2339, 2355, + 2340, 2341, 2356, 2342, 2359, 2345, 2360, 2347, 2351, 2351, + 2352, 2351, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2368, + 2369, 2475, 2370, 2371, 2353, 2372, 2373, 2355, 2374, 2375, + 2356, 2379, 2359, 2377, 2360, 2470, 2377, 2380, 2377, 2381, + + 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2368, 2369, 2349, + 2370, 2371, 2382, 2372, 2373, 2383, 2374, 2375, 2384, 2379, + 2385, 2386, 2389, 2351, 2349, 2380, 2391, 2381, 2392, 2393, + 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2402, 2351, 2403, + 2382, 2404, 2405, 2383, 2407, 2408, 2384, 2410, 2385, 2386, + 2389, 2411, 2409, 2413, 2391, 2409, 2392, 2393, 2394, 2395, + 2396, 2397, 2398, 2399, 2400, 2402, 2414, 2403, 2415, 2404, + 2405, 2412, 2407, 2408, 2412, 2410, 2412, 2416, 2417, 2411, + 2420, 2413, 2421, 2423, 2425, 2426, 2428, 2429, 2430, 2431, + 2432, 2433, 2435, 2436, 2414, 2425, 2415, 2445, 2437, 2438, + + 2439, 2440, 2442, 2443, 2444, 2416, 2417, 2446, 2420, 2447, + 2421, 2423, 2448, 2426, 2428, 2429, 2430, 2431, 2432, 2433, + 2435, 2436, 2450, 2451, 2452, 2425, 2437, 2438, 2439, 2440, + 2442, 2443, 2444, 2453, 2454, 2446, 2455, 2447, 2456, 2457, + 2448, 2458, 2459, 2460, 2463, 2464, 2465, 2467, 2468, 2469, + 2450, 2451, 2452, 2473, 2474, 2478, 2480, 2481, 2482, 2483, + 2484, 2453, 2454, 2485, 2455, 2486, 2456, 2457, 2487, 2458, + 2459, 2460, 2463, 2464, 2465, 2467, 2468, 2469, 2488, 2490, + 2493, 2473, 2474, 2501, 2494, 2503, 2482, 2483, 2484, 2495, + 2504, 2485, 2495, 2486, 2495, 2505, 2487, 2493, 2494, 2495, + + 2478, 2480, 2481, 2507, 2434, 2492, 2488, 2490, 2492, 2496, + 2492, 2508, 2496, 2509, 2496, 2492, 2495, 2510, 2492, 2496, + 2511, 2512, 2496, 2505, 2497, 2493, 2494, 2497, 2501, 2497, + 2503, 2507, 2492, 2513, 2497, 2504, 2496, 2497, 2514, 2508, + 2516, 2509, 2517, 2518, 2495, 2510, 2519, 2520, 2511, 2512, + 2521, 2497, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, + 2492, 2513, 2530, 2531, 2496, 2532, 2514, 2533, 2516, 2534, + 2517, 2518, 2535, 2536, 2519, 2520, 2537, 2538, 2521, 2497, + 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2540, 2542, + 2530, 2531, 2543, 2532, 2544, 2533, 2545, 2534, 2546, 2547, + + 2535, 2536, 2548, 2549, 2537, 2538, 2551, 2551, 2556, 2551, + 2554, 2554, 2557, 2554, 2558, 2562, 2540, 2542, 2563, 2564, + 2543, 2565, 2544, 2566, 2545, 2567, 2546, 2547, 2568, 2569, + 2548, 2549, 2570, 2424, 2571, 2572, 2556, 2571, 2573, 2571, + 2557, 2575, 2558, 2562, 2576, 2577, 2563, 2564, 2422, 2565, + 2578, 2566, 2406, 2567, 2579, 2583, 2568, 2569, 2584, 2585, + 2570, 2551, 2586, 2572, 2587, 2554, 2573, 2588, 2590, 2575, + 2590, 2592, 2576, 2577, 2594, 2595, 2551, 2596, 2578, 2597, + 2554, 2599, 2579, 2583, 2600, 2601, 2584, 2585, 2602, 2603, + 2586, 2602, 2587, 2604, 2605, 2588, 2590, 2606, 2590, 2592, + + 2607, 2609, 2594, 2595, 2610, 2596, 2613, 2597, 2603, 2599, + 2617, 2611, 2600, 2601, 2611, 2619, 2611, 2603, 2612, 2612, + 2620, 2604, 2605, 2621, 2622, 2606, 2623, 2624, 2607, 2609, + 2615, 2625, 2610, 2615, 2613, 2615, 2603, 2626, 2617, 2628, + 2629, 2630, 2631, 2619, 2632, 2633, 2612, 2612, 2620, 2634, + 2635, 2621, 2622, 2636, 2623, 2624, 2637, 2638, 2639, 2625, + 2640, 2641, 2644, 2645, 2646, 2626, 2647, 2628, 2629, 2630, + 2631, 2648, 2632, 2633, 2649, 2650, 2651, 2634, 2635, 2652, + 2654, 2636, 2655, 2656, 2637, 2638, 2639, 2657, 2640, 2641, + 2644, 2645, 2646, 2658, 2647, 2659, 2661, 2662, 2663, 2648, + + 2665, 2666, 2649, 2650, 2651, 2667, 2668, 2652, 2654, 2669, + 2655, 2656, 2670, 2671, 2672, 2657, 2674, 2675, 2676, 2677, + 2678, 2658, 2679, 2659, 2661, 2662, 2663, 2682, 2665, 2666, + 2697, 2698, 2686, 2667, 2668, 2770, 2687, 2669, 2770, 2689, + 2670, 2682, 2699, 2700, 2674, 2675, 2676, 2677, 2678, 2686, + 2679, 2683, 2684, 2687, 2683, 2684, 2683, 2684, 2671, 2672, + 2390, 2683, 2684, 2688, 2683, 2684, 2688, 2689, 2388, 2682, + 2699, 2700, 2701, 2802, 2703, 2697, 2698, 2686, 2683, 2684, + 2688, 2687, 2690, 2691, 2802, 2690, 2691, 2690, 2691, 2378, + 2358, 2692, 2690, 2691, 2692, 2690, 2692, 2357, 2350, 2704, + + 2701, 2692, 2703, 2705, 2692, 2706, 2683, 2684, 2707, 2690, + 2691, 2348, 2694, 2708, 2709, 2694, 2695, 2694, 2692, 2695, + 2710, 2695, 2694, 2711, 2712, 2694, 2695, 2704, 2713, 2695, + 2714, 2705, 2715, 2706, 2716, 2717, 2707, 2690, 2691, 2694, + 2718, 2708, 2709, 2695, 2719, 2721, 2692, 2722, 2710, 2723, + 2724, 2711, 2712, 2725, 2726, 2727, 2713, 2728, 2714, 2729, + 2715, 2730, 2716, 2717, 2731, 2732, 2733, 2694, 2718, 2735, + 2736, 2695, 2719, 2721, 2737, 2722, 2738, 2723, 2724, 2739, + 2740, 2725, 2726, 2727, 2742, 2728, 2746, 2729, 2747, 2730, + 2748, 2749, 2731, 2732, 2733, 2750, 2751, 2735, 2736, 2752, + + 2754, 2757, 2737, 2758, 2738, 2759, 2760, 2739, 2740, 2761, + 2762, 2763, 2742, 2766, 2746, 2767, 2747, 2768, 2748, 2749, + 2772, 2773, 2775, 2750, 2751, 2776, 2777, 2752, 2754, 2757, + 3651, 2758, 3651, 2759, 2760, 2779, 2780, 2761, 2762, 2763, + 2781, 2766, 2782, 2767, 2784, 2768, 2785, 2778, 2772, 2773, + 2775, 2783, 2786, 2776, 2783, 2778, 2783, 2777, 2778, 2787, + 2778, 2788, 2789, 2779, 2780, 2790, 2791, 2794, 2781, 2795, + 2782, 2796, 2784, 2800, 2785, 2778, 2801, 2803, 2806, 2807, + 2786, 2805, 2808, 2778, 2809, 2777, 2778, 2787, 2778, 2788, + 2789, 2810, 2805, 2790, 2791, 2794, 2811, 2795, 2812, 2796, + + 2815, 2800, 2816, 2817, 2801, 2803, 2806, 2807, 2818, 2819, + 2808, 2820, 2809, 2821, 2815, 2822, 2823, 2824, 2825, 2810, + 2826, 2827, 2820, 2828, 2811, 2829, 2812, 2830, 2815, 2831, + 2816, 2817, 2833, 2834, 2835, 2836, 2818, 2819, 2837, 2838, + 2839, 2821, 2840, 2822, 2823, 2824, 2825, 2841, 2826, 2827, + 2842, 2828, 2843, 2829, 2844, 2830, 2845, 2831, 2846, 2847, + 2833, 2834, 2835, 2836, 2848, 2849, 2837, 2838, 2839, 2850, + 2840, 2851, 2852, 2853, 2854, 2841, 2856, 2883, 2842, 2858, + 2843, 2885, 2844, 2886, 2845, 2857, 2846, 2847, 2857, 2887, + 2857, 2880, 2848, 2849, 2856, 2857, 2858, 2335, 2857, 2851, + + 2852, 2853, 2854, 2860, 2856, 2883, 2860, 2293, 2860, 2885, + 2866, 2886, 2857, 2860, 2850, 2861, 2862, 2887, 2861, 2862, + 2861, 2862, 2856, 2888, 2858, 2861, 2862, 2866, 2861, 2862, + 2860, 2867, 2868, 2869, 2863, 2877, 2880, 2863, 2877, 2863, + 2857, 2979, 2861, 2862, 2863, 2889, 2291, 2863, 2867, 2868, + 2869, 2888, 2979, 2290, 2871, 2866, 2890, 2871, 2860, 2871, + 2891, 2863, 3037, 2892, 2871, 3037, 2894, 2871, 2289, 2873, + 2861, 2862, 2873, 2889, 2873, 2275, 2867, 2868, 2869, 2873, + 2874, 2871, 2873, 2874, 2890, 2874, 2895, 2273, 2891, 2863, + 2874, 2892, 2875, 2874, 2894, 2875, 2873, 2875, 2876, 2897, + + 2272, 2876, 2875, 2876, 2899, 2251, 2901, 2874, 2876, 2871, + 2878, 2902, 2903, 2878, 2895, 2878, 2905, 2906, 2907, 2875, + 2878, 2908, 2909, 2878, 2873, 2876, 2910, 2897, 2879, 2911, + 2912, 2879, 2899, 2879, 2901, 2874, 2913, 2878, 2879, 2902, + 2903, 2879, 2914, 2915, 2905, 2906, 2907, 2875, 2919, 2908, + 2909, 2920, 2922, 2876, 2910, 2879, 2923, 2911, 2912, 2924, + 2925, 2926, 2927, 2930, 2913, 2878, 2932, 2933, 2934, 2935, + 2914, 2915, 2936, 2938, 2940, 2941, 2919, 2942, 2947, 2920, + 2922, 2237, 2948, 2879, 2923, 2950, 2951, 2924, 2925, 2926, + 2927, 2930, 2952, 2953, 2932, 2933, 2934, 2935, 2954, 2956, + + 2936, 2938, 2940, 2941, 2944, 2942, 2947, 2944, 2958, 2944, + 2948, 2955, 2958, 2950, 2951, 2961, 2962, 2963, 2965, 2958, + 2952, 2953, 2955, 2955, 2966, 2967, 2954, 2956, 2968, 2970, + 2971, 2972, 2976, 2977, 2980, 2982, 2958, 2983, 2984, 2955, + 2958, 2985, 2986, 2961, 2962, 2963, 2965, 2958, 2987, 2988, + 2955, 2955, 2966, 2967, 2989, 2991, 2968, 2970, 2971, 2972, + 2976, 2977, 2980, 2982, 2992, 2983, 2984, 2990, 2990, 2985, + 2986, 2993, 2994, 2995, 2996, 2998, 2987, 2988, 2999, 3000, + 3001, 3002, 2989, 2991, 3003, 3004, 3005, 3006, 3007, 3009, + 3011, 3012, 2992, 3008, 3013, 2990, 2990, 3015, 3006, 2993, + + 2994, 2995, 2996, 2998, 3008, 3017, 2999, 3000, 3001, 3002, + 3018, 3019, 3003, 3004, 3005, 3021, 3007, 3009, 3011, 3012, + 3022, 3023, 3013, 3024, 3025, 3015, 3027, 3028, 3006, 3029, + 3031, 3032, 3038, 3017, 3008, 3269, 3036, 3034, 3018, 3019, + 3034, 3053, 3034, 3021, 3029, 3383, 3269, 3034, 3022, 3023, + 3034, 3024, 3025, 3036, 3027, 3028, 3383, 3029, 3031, 3032, + 3038, 2134, 2133, 3039, 3034, 3044, 3039, 2048, 3039, 3053, + 3045, 2046, 3029, 3039, 3040, 3041, 3039, 3040, 3041, 3040, + 3041, 3036, 3044, 3054, 3040, 3041, 3042, 3045, 3041, 3042, + 3039, 3042, 3034, 3055, 3048, 3047, 3042, 3048, 3047, 3042, + + 3047, 3040, 3041, 2041, 3049, 3047, 3057, 3049, 3047, 3049, + 3044, 3054, 3059, 3042, 3049, 3045, 3061, 3049, 3039, 3062, + 3063, 3055, 3047, 3064, 3066, 3067, 3068, 3069, 3070, 3040, + 3041, 3049, 3549, 3050, 3057, 3071, 3050, 3072, 3050, 3073, + 3059, 3042, 3075, 3050, 3061, 3076, 3050, 3062, 3063, 3077, + 3047, 3064, 3066, 3067, 3068, 3069, 3070, 3078, 3080, 3049, + 3050, 3081, 3082, 3071, 3083, 3072, 3084, 3073, 3085, 3084, + 3075, 3086, 3088, 3076, 3090, 3091, 3092, 3077, 3093, 3094, + 3314, 3335, 3549, 3314, 3335, 3078, 3080, 1960, 3050, 3081, + 3082, 3096, 3083, 3099, 1944, 3103, 3085, 3104, 3106, 3086, + + 3088, 3107, 3090, 3091, 3092, 3108, 3093, 3094, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3102, 3109, 3096, + 3102, 3099, 3102, 3103, 3110, 3104, 3106, 3111, 3112, 3107, + 3113, 3114, 3116, 3108, 3115, 3115, 3115, 3115, 3115, 3115, + 3115, 3115, 3115, 3117, 3118, 3120, 3109, 3121, 3122, 3124, + 3125, 3126, 3110, 3127, 3129, 3111, 3112, 3130, 3113, 3114, + 3116, 3131, 3133, 3134, 3136, 3137, 3138, 3140, 3141, 3143, + 3144, 3117, 3118, 3120, 3145, 3121, 3122, 3124, 3125, 3126, + 3146, 3127, 3129, 3147, 3148, 3130, 3150, 3151, 3152, 3131, + 3133, 3134, 3136, 3137, 3138, 3140, 3141, 3143, 3144, 3153, + + 3155, 3156, 3145, 3157, 3158, 3160, 3162, 3165, 3146, 3168, + 3169, 3147, 3148, 3171, 3150, 3151, 3152, 3173, 3174, 3175, + 3168, 3176, 1940, 3177, 3178, 3179, 3181, 3153, 3155, 3156, + 3182, 3157, 3158, 3160, 3162, 3165, 3183, 3184, 3169, 3186, + 3188, 3171, 3193, 3199, 3185, 3173, 3174, 3175, 1938, 3176, + 3168, 3177, 3178, 3179, 3181, 3185, 1910, 3188, 3182, 3193, + 3200, 1894, 1893, 3187, 3183, 3184, 3187, 3186, 3187, 1890, + 3201, 3199, 3185, 3187, 3190, 3202, 3187, 3190, 3203, 3190, + 3205, 1856, 3206, 3185, 3190, 3188, 3191, 3193, 3200, 3191, + 3187, 3191, 3192, 3207, 1825, 3192, 3191, 3192, 3201, 1759, + + 1755, 3190, 3192, 3202, 3194, 3192, 3203, 3194, 3205, 3194, + 3206, 3209, 3210, 3191, 3194, 1754, 3211, 3194, 3187, 3192, + 1753, 3207, 3195, 3197, 3212, 3195, 3197, 3195, 3197, 3190, + 3213, 3194, 3195, 3197, 3214, 3195, 3197, 3217, 3218, 3209, + 3210, 3191, 3623, 3198, 3211, 3219, 3198, 3192, 3198, 3195, + 3197, 3220, 3212, 3198, 3221, 3222, 3198, 3225, 3213, 3194, + 3226, 3227, 3214, 3228, 3224, 3217, 3218, 3224, 3229, 3224, + 3198, 3230, 3231, 3219, 3232, 3388, 1726, 3195, 3197, 3220, + 1723, 3239, 3221, 3222, 3234, 3225, 3388, 3365, 3226, 3227, + 3365, 3228, 3623, 1714, 3236, 3238, 3229, 3241, 3198, 3230, + + 3231, 3242, 3232, 3233, 3233, 3233, 3233, 3233, 3233, 3233, + 3233, 3233, 3234, 3235, 3235, 3235, 3235, 3235, 3235, 3235, + 3235, 3235, 3236, 3238, 3239, 3241, 3243, 3244, 3245, 3242, + 3246, 3247, 3248, 3249, 3250, 3250, 3250, 3250, 3250, 3250, + 3250, 3250, 3250, 3252, 3253, 3255, 3256, 3257, 3259, 3260, + 3261, 3263, 3239, 3265, 3243, 3244, 3245, 3266, 3246, 3247, + 3248, 3249, 3267, 3268, 3270, 3271, 3272, 3273, 3275, 3276, + 3277, 3252, 3253, 3255, 3256, 3257, 3259, 3260, 3261, 3263, + 3278, 3265, 3279, 3283, 3284, 3266, 3285, 3286, 3289, 3290, + 3267, 3268, 3270, 3271, 3272, 3273, 3275, 3276, 3277, 3291, + + 3294, 3292, 3296, 3297, 3298, 3299, 3300, 3301, 3278, 3292, + 3279, 3283, 3284, 3302, 3285, 3286, 3289, 3290, 3303, 3305, + 3306, 3307, 3308, 3309, 3310, 3312, 1710, 3291, 3294, 3292, + 3296, 3297, 3298, 3299, 3300, 3301, 3366, 3292, 1708, 3366, + 3317, 3302, 3312, 3318, 3644, 1706, 3303, 3305, 3306, 3307, + 3308, 3309, 3310, 3311, 3313, 3644, 3311, 3313, 3311, 3313, + 3319, 3320, 3321, 3311, 3313, 3324, 3311, 3313, 3317, 3315, + 3312, 3318, 3315, 3316, 3315, 3326, 3316, 3328, 3316, 3315, + 3311, 3313, 3315, 3316, 3329, 3330, 3316, 3331, 3319, 3320, + 3321, 3332, 3334, 3324, 3336, 3339, 3315, 3340, 3341, 3342, + + 3316, 3369, 1696, 3326, 3369, 3328, 3645, 3517, 3311, 3313, + 3517, 3459, 3329, 3330, 3459, 3331, 3459, 3645, 3529, 3332, + 3334, 3529, 3336, 3339, 3315, 3340, 3341, 3342, 3316, 3337, + 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, + 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, + 3338, 3343, 3344, 3345, 3337, 3346, 3347, 3349, 3351, 3460, + 3601, 1655, 3460, 3601, 3460, 3338, 3348, 3348, 3348, 3348, + 3348, 3348, 3348, 3348, 3348, 3353, 3355, 3356, 3357, 3343, + 3344, 3345, 3358, 3346, 3347, 3349, 3351, 3352, 3352, 3352, + 3352, 3352, 3352, 3352, 3352, 3352, 3359, 3360, 3361, 3362, + + 3367, 3368, 3370, 3353, 3355, 3356, 3357, 3371, 3372, 3377, + 3358, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, + 3379, 3381, 3385, 3386, 3359, 3360, 3361, 3362, 3367, 3368, + 3370, 3387, 3389, 3390, 3391, 3371, 3372, 3377, 3392, 3393, + 3394, 3395, 3391, 3391, 3396, 3397, 3398, 3399, 3379, 3381, + 3385, 3386, 3400, 3401, 3402, 3403, 3404, 3405, 3407, 3387, + 3389, 3390, 3391, 3408, 3409, 3410, 3392, 3393, 3394, 3395, + 3391, 3391, 3396, 3397, 3398, 3399, 3411, 3413, 3414, 3415, + 3400, 3401, 3402, 3403, 3404, 3405, 3407, 3417, 3418, 3420, + 3421, 3408, 3409, 3410, 3422, 3424, 3426, 1645, 3419, 3430, + + 3432, 3419, 1578, 3419, 3411, 3413, 3414, 3415, 3419, 3436, + 3437, 3419, 3438, 3439, 3440, 3417, 3418, 3420, 3421, 3653, + 1574, 3653, 3422, 3424, 3426, 3419, 3433, 3430, 3432, 3433, + 3435, 3433, 3604, 3625, 3715, 3604, 3715, 3436, 3437, 3441, + 3438, 3439, 3440, 3433, 3433, 3433, 3433, 3433, 3433, 3433, + 3433, 3433, 3442, 3419, 3435, 3435, 3435, 3435, 3435, 3435, + 3435, 3435, 3435, 3435, 3435, 3444, 3445, 3441, 3447, 3447, + 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3448, 3449, 3435, + 3442, 3450, 3451, 3625, 3453, 3452, 3454, 3455, 3456, 3461, + 3462, 3464, 3463, 3444, 3445, 3463, 3465, 3463, 3466, 3542, + + 1569, 3780, 3542, 3780, 3542, 3448, 3449, 1567, 3471, 3450, + 3451, 3452, 3453, 1545, 3454, 3455, 3456, 3461, 3462, 3464, + 1541, 1525, 3476, 3477, 3465, 3478, 3466, 3469, 3469, 3469, + 3469, 3469, 3469, 3469, 3469, 3469, 3471, 3480, 3481, 3452, + 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3475, + 3476, 3477, 3482, 3478, 3483, 3475, 3484, 3485, 3487, 3490, + 3492, 3493, 3494, 3495, 3496, 3480, 3481, 3499, 3500, 3502, + 3503, 3545, 3800, 3692, 3545, 3800, 3545, 3475, 1524, 3781, + 3482, 3781, 3483, 3475, 3484, 3485, 3487, 3490, 3492, 3493, + 3494, 3495, 3496, 3505, 3506, 3499, 3500, 3502, 3503, 3504, + + 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, + 3507, 3510, 3511, 3512, 3513, 3515, 3516, 3813, 3815, 3813, + 3815, 3505, 3506, 3692, 3504, 3518, 3518, 3518, 3518, 3518, + 3518, 3518, 3518, 3518, 1521, 3522, 3523, 3524, 3507, 3510, + 3511, 3512, 3513, 3515, 3516, 3519, 3519, 3519, 3519, 3519, + 3519, 3519, 3519, 3519, 3520, 3520, 3520, 3520, 3520, 3520, + 3520, 3520, 3520, 3522, 3523, 3524, 3526, 3527, 3528, 3530, + 3531, 3532, 3534, 3535, 3535, 3535, 3535, 3535, 3535, 3535, + 3535, 3535, 3536, 3537, 3538, 1468, 3540, 3539, 3547, 3548, + 3550, 3551, 3552, 1467, 3526, 3527, 3528, 3530, 3531, 3532, + + 3534, 3596, 1460, 3817, 3596, 3817, 3596, 3553, 1459, 1458, + 3536, 3537, 3538, 3539, 3540, 3557, 3547, 3548, 3550, 3551, + 3552, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, + 3554, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, + 3558, 3539, 3559, 3557, 3554, 3554, 3554, 3554, 3554, 3554, + 3554, 3554, 3554, 3561, 3563, 3564, 3565, 3566, 3567, 3568, + 3569, 3570, 3571, 3572, 3573, 3574, 3575, 3576, 3558, 3579, + 3559, 3583, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, + 3599, 3561, 3563, 3564, 3565, 3566, 3567, 3568, 3569, 3570, + 3571, 3572, 3573, 3574, 3575, 3576, 3585, 3579, 3586, 3583, + + 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, + 3584, 3587, 3590, 3592, 3593, 3597, 3607, 3597, 3597, 3607, + 3597, 3607, 1405, 3713, 3585, 3584, 3586, 3600, 3597, 3602, + 3661, 3598, 1402, 3661, 3713, 3661, 3818, 1401, 3818, 3587, + 3590, 3592, 3593, 3598, 3598, 3598, 3598, 3598, 3598, 3598, + 3598, 3598, 3606, 3608, 3609, 3600, 3610, 3602, 3603, 3603, + 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3611, 3612, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3613, 3614, 3617, + 3606, 3608, 3609, 3618, 3610, 3616, 3616, 3616, 3616, 3616, + 3616, 3616, 3616, 3616, 3621, 3611, 3626, 3622, 3627, 3597, + + 3628, 3622, 3630, 3631, 3632, 3613, 3614, 3617, 3622, 3668, + 3671, 3618, 3668, 3671, 3668, 3671, 1390, 1366, 3634, 3635, + 3636, 3637, 3621, 3629, 3626, 3622, 3627, 3638, 3628, 3622, + 3630, 3631, 3632, 3639, 3640, 3641, 3622, 3629, 3629, 3629, + 3629, 3629, 3629, 3629, 3629, 3629, 3634, 3635, 3636, 3637, + 3642, 3643, 3646, 3648, 3654, 3638, 3656, 3658, 3660, 3667, + 3669, 3639, 3640, 3641, 3663, 1365, 3663, 3663, 1361, 3663, + 3664, 3674, 3664, 3664, 3674, 3664, 3674, 3663, 3642, 3643, + 3646, 3648, 3654, 3664, 3656, 3658, 3660, 3667, 3669, 3670, + 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3676, 3677, + + 3678, 3679, 3680, 3681, 3682, 3682, 3682, 3682, 3682, 3682, + 3682, 3682, 3682, 3683, 3684, 3687, 3688, 3689, 3690, 3694, + 1360, 3695, 3696, 3697, 3698, 3699, 3676, 3677, 3678, 3679, + 3680, 3681, 3700, 3701, 3702, 3704, 3705, 3706, 3708, 3709, + 3712, 3683, 3684, 3687, 3688, 3689, 3690, 3694, 3663, 3695, + 3696, 3697, 3698, 3699, 3664, 3717, 3719, 3723, 3720, 3727, + 3700, 3701, 3702, 3704, 3705, 3706, 3708, 3709, 3712, 3720, + 3725, 3730, 3731, 3725, 3732, 3725, 3733, 3734, 3735, 3736, + 3737, 3742, 3740, 3717, 3719, 3723, 3720, 3741, 3743, 3744, + 3746, 3747, 3749, 3750, 3751, 3752, 3767, 3720, 3753, 3730, + + 3731, 3754, 3732, 1359, 3733, 3734, 3735, 3736, 3755, 3727, + 3740, 3759, 3760, 3761, 3762, 3741, 3743, 3744, 3746, 3747, + 3749, 3750, 3751, 3752, 3737, 3764, 3753, 3769, 3771, 3754, + 3772, 3742, 3774, 3775, 3776, 3777, 3755, 3779, 3784, 3759, + 3760, 3761, 3762, 3785, 3786, 3787, 3767, 3788, 3791, 3803, + 3792, 3793, 3737, 3764, 3794, 3795, 3771, 3796, 3772, 3799, + 3774, 3775, 3776, 3777, 3805, 3779, 3784, 3806, 3807, 3809, + 3810, 3785, 3786, 3787, 3812, 3788, 3791, 3769, 3792, 3793, + 3820, 3822, 3794, 3795, 3823, 3796, 3824, 3799, 3826, 3827, + 3828, 3829, 3805, 3830, 3836, 3806, 3807, 3809, 3810, 3803, + + 3834, 3835, 3812, 3834, 3835, 3834, 3835, 3837, 3820, 3822, + 3839, 3831, 3823, 3842, 3824, 3850, 3826, 3827, 3828, 3829, + 3851, 3830, 3831, 3852, 3845, 3831, 3845, 3847, 3853, 3847, + 3854, 3855, 3856, 3857, 3858, 3837, 3859, 3860, 3839, 3831, + 3866, 3842, 3865, 3850, 3836, 3865, 1358, 3865, 3851, 1357, + 3831, 3852, 1355, 3831, 1324, 1320, 3853, 1292, 3854, 3855, + 3856, 3857, 3858, 3870, 3859, 3860, 3875, 3876, 3866, 3867, + 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3869, 3869, + 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3877, 3880, 3882, + 3883, 3870, 3884, 3885, 3875, 3876, 3889, 3889, 3889, 3889, + + 3889, 3889, 3889, 3889, 3889, 3890, 3890, 3890, 3890, 3890, + 3890, 3890, 3890, 3890, 3892, 3877, 3880, 3882, 3883, 3895, + 3884, 3885, 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, + 3891, 3896, 3897, 3900, 3901, 3908, 3911, 3912, 3913, 3914, + 3915, 3917, 3892, 3918, 3919, 1284, 1282, 3895, 3904, 3904, + 3904, 3904, 3904, 3904, 3904, 3904, 3904, 1277, 1272, 3896, + 3897, 3900, 3901, 3908, 3911, 3912, 3913, 3914, 3915, 3917, + 1214, 3918, 3919, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, + 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3925, 3925, 3925, @@ -4448,19 +4436,19 @@ static const flex_int16_t yy_chk[14050] = 3926, 3926, 3926, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, - 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3929, + 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, - 3931, 3931, 3931, 3932, 3932, 1269, 3932, 3932, 3932, 3932, + 3931, 3931, 3931, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3934, - 3934, 3934, 3934, 3934, 3934, 3934, 3934, 3934, 3934, 3934, + 3934, 3934, 3934, 3934, 3934, 3934, 3934, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3936, 3936, 3936, 3936, 3936, @@ -4470,8 +4458,8 @@ static const flex_int16_t yy_chk[14050] = 3937, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, - 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3940, 3940, 3940, + 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, @@ -4480,9 +4468,9 @@ static const flex_int16_t yy_chk[14050] = 3942, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, - 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3945, 3945, 3945, - + 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3945, 3945, 1213, 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, + 3945, 3945, 3945, 3945, 3945, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3947, 3947, 3947, 3947, 3947, 3947, 3947, @@ -4490,12 +4478,12 @@ static const flex_int16_t yy_chk[14050] = 3947, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, - 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3950, 3950, 1212, + 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, + 3950, 3950, 3950, 3950, 3950, 3951, 3951, 3951, 3951, 3951, - 3950, 3950, 3950, 3950, 3950, 3951, 3951, 1211, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, - 3951, 3951, 3951, 3952, 3952, 1210, 3952, 3952, 3952, 3952, + 3951, 3951, 3951, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3954, @@ -4503,452 +4491,482 @@ static const flex_int16_t yy_chk[14050] = 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3956, 3956, 3956, 3956, 3956, - 3956, 3956, 3956, 3956, 3956, 3956, 3956, 3956, 3956, 3956, - 3956, 3956, 3956, 3957, 3957, 1209, 3957, 3957, 3957, 3957, + + 3956, 3956, 3956, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, - 3960, 3960, 3960, 1208, 3960, 3961, 3961, 3961, 3961, 3961, + 3960, 3960, 3960, 3960, 3960, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, - 3961, 3961, 3961, 3962, 3962, 3962, 3962, 3962, 3962, 3962, - 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 1207, - 3962, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, + + 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, + 3962, 3963, 3963, 1212, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3964, - 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, - 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3965, 3965, 3965, + 3964, 1211, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, + 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3965, 3965, 1210, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, - 3966, 3966, 3966, 3967, 1203, 3967, 3967, 1202, 1201, 3967, + 3966, 3966, 3966, 3967, 3967, 3967, 3967, 3967, 3967, 3967, + 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, - 3967, 3967, 3967, 3967, 1187, 3967, 3967, 3967, 3967, 3967, - 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, - 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3969, 3969, + 3967, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, + 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, - 3969, 3969, 3969, 3969, 1185, 3969, 3970, 3970, 3970, 3970, + 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3970, 3970, 1209, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, - 3970, 3970, 3970, 3970, 3971, 3971, 3971, 3971, 3971, 3971, + 3970, 3970, 3970, 3970, 3970, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, - 3971, 3971, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, + 3971, 3971, 3971, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, + 3972, 3973, 3973, 3973, 3973, 3973, 3973, 3973, 3973, 3973, - 3973, 1180, 3973, 3973, 1152, 1148, 3973, 3973, 3973, 3973, - 3973, 1138, 3973, 3973, 3973, 3973, 3973, 3974, 3974, 3974, + 3973, 3973, 3973, 3973, 3973, 3973, 3973, 1205, 3973, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, - 3974, 3974, 3974, 3974, 3974, 3975, 3975, 3975, 3975, 3975, + 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, - 3975, 1127, 3975, 3976, 3976, 3976, 3976, 3976, 3976, 3976, + 3975, 3975, 3975, 1204, 3975, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, - 3976, 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, - 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3978, - 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, + 3976, 3976, 3976, 3977, 3977, 3977, 3977, 3977, 3977, 3977, + 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, + 3977, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, + 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3979, - 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, - 3979, 3979, 3979, 1125, 3979, 3980, 3980, 1123, 3980, 3980, - 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, - 3980, 3980, 3980, 3981, 3981, 1122, 3981, 3981, 3981, 3981, + 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3980, 1203, 3980, + 3980, 1189, 1187, 3980, 3980, 3980, 3980, 3980, 1182, 3980, + 3980, 3980, 3980, 3980, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, - 3981, 3982, 3982, 1108, 3982, 3982, 3982, 3982, 3982, 3982, - 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3983, + 3981, 3981, 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3982, + 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3982, 1154, 3982, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, - 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3984, 3984, 3984, - + 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3984, 3984, 3984, 3984, 3984, 3984, 3984, 3984, 3984, 3984, 3984, 3984, - 3984, 3984, 3984, 1107, 3984, 3985, 3985, 3985, 3985, 3985, + + 3984, 3984, 3984, 3984, 3984, 3984, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, - 3985, 3985, 3985, 3986, 3986, 3986, 3986, 3986, 3986, 3986, - 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 1103, - 3986, 3987, 3987, 1102, 3987, 3987, 3987, 3987, 3987, 3987, + 3985, 3985, 3985, 3985, 3986, 1150, 3986, 3986, 1140, 1129, + 3986, 3986, 3986, 3986, 3986, 1127, 3986, 3986, 3986, 3986, + 3986, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, - 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3989, 3989, 3989, + 3988, 3988, 3988, 3988, 3988, 1125, 3988, 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, - 3989, 3989, 3989, 3989, 3989, 3990, 3990, 3990, 3990, 3990, + 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, - 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3993, - 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3993, - 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3994, 1101, 3994, - 3994, 1100, 1099, 3994, 3994, 3994, 3994, 3994, 1060, 3994, - 3994, 3994, 3994, 3994, 3994, 3995, 1008, 3995, 3995, 1007, + 3992, 3992, 3992, 3992, 3992, 3992, 3992, 1124, 3992, 3993, + 3993, 1110, 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3993, + 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3994, 3994, 1109, + 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, + 3994, 3994, 3994, 3994, 3994, 3995, 3995, 1105, 3995, 3995, + 3995, 3995, 3995, 3995, 3995, 3995, 3995, 3995, 3995, 3995, - 987, 3995, 3995, 3995, 3995, 3995, 974, 3995, 3995, 3995, 3995, 3995, 3995, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, - 3996, 3997, 963, 3997, 3997, 943, 926, 3997, 3997, 3997, - 3997, 3997, 901, 3997, 3997, 3997, 3997, 3997, 3998, 3998, + 3996, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, + 3997, 3997, 3997, 3997, 3997, 3997, 3997, 1104, 3997, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, - 3998, 3998, 3998, 3998, 3998, 3998, 3999, 3999, 3999, 3999, + 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, - 3999, 3999, 3999, 3999, 4000, 4000, 4000, 4000, 4000, 4000, + 3999, 3999, 3999, 1103, 3999, 4000, 4000, 1102, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, + 4000, 4000, 4000, 4001, 4001, 4001, 4001, 4001, 4001, 4001, - 4000, 4000, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, - 4002, 889, 4002, 4002, 878, 876, 4002, 4002, 4002, 4002, - 4002, 874, 4002, 4002, 4002, 4002, 4002, 4002, 4003, 4003, + 4001, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, + 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, - 4003, 4003, 4003, 4003, 4003, 4003, 4004, 4004, 4004, 4004, + 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, - 4004, 4004, 4004, 4004, 4005, 870, 4005, 4005, 827, 816, - 4005, 4005, 4005, 4005, 4005, 807, 4005, 4005, 4005, 4005, - 4005, 4006, 4006, 4006, 4006, 4006, 4006, 4006, 4006, 4006, + 4004, 4004, 4004, 4004, 4004, 4005, 4005, 4005, 4005, 4005, + 4005, 4005, 4005, 4005, 4005, 4005, 4005, 4005, 4005, 4005, + 4005, 4005, 4005, 4006, 4006, 4006, 4006, 4006, 4006, 4006, + 4006, 4006, 4006, 4006, 4006, 4006, 4006, 4006, 4006, 4006, - 4006, 4006, 4006, 4006, 4006, 4006, 4006, 4006, 4006, 4007, - 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, - 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4009, 4009, 4009, 4009, 4009, + 4006, 4007, 1101, 4007, 4007, 1062, 1009, 4007, 4007, 4007, + 4007, 4007, 1008, 4007, 4007, 4007, 4007, 4007, 4007, 4008, + 988, 4008, 4008, 975, 964, 4008, 4008, 4008, 4008, 4008, + 944, 4008, 4008, 4008, 4008, 4008, 4008, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, - 4009, 4009, 4009, 4010, 4010, 4010, 4010, 4010, 4010, 4010, - 4010, 4010, 4010, 4010, 4010, 4010, 4010, 4010, 4010, 4010, - 4010, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, - 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4012, - + 4009, 4009, 4009, 4009, 4009, 4010, 927, 4010, 4010, 902, + 890, 4010, 4010, 4010, 4010, 4010, 879, 4010, 4010, 4010, + 4010, 4010, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, + 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, - 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4013, 4013, 4013, - 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, - 4013, 4013, 4013, 4013, 4013, 4014, 4014, 4014, 4014, 4014, - 4014, 4014, 4014, 4014, 4014, 4014, 4014, 4014, 4014, 4014, - 4014, 4014, 4014, 4015, 4015, 4015, 4015, 4015, 4015, 4015, - 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, - 4015, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, - 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4017, - 4017, 803, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, - 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4018, 4018, 4018, - 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, + 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4013, 4013, + 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, + 4013, 4013, 4013, 4013, 4013, 4013, 4014, 4014, 4014, 4014, + 4014, 4014, 4014, 4014, 4014, 4014, 4014, 4014, 4014, 4014, + 4014, 4014, 4014, 4014, 4015, 877, 4015, 4015, 875, 871, + 4015, 4015, 4015, 4015, 4015, 828, 4015, 4015, 4015, 4015, + 4015, 4015, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, + 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, + 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, + 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4018, 817, + + 4018, 4018, 808, 804, 4018, 4018, 4018, 4018, 4018, 772, 4018, 4018, 4018, 4018, 4018, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4020, 4020, 4020, 4020, 4020, 4020, 4020, 4020, 4020, 4020, 4020, 4020, 4020, 4020, 4020, 4020, 4020, 4020, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4022, - 772, 4022, 4022, 771, 769, 4022, 4022, 4022, 4022, 4022, - 768, 4022, 4022, 4022, 4022, 4022, 4022, 4023, 767, 4023, + 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, + 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4023, 4023, 4023, + 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, - 4023, 765, 760, 4023, 4023, 4023, 4023, 4023, 759, 4023, - 4023, 4023, 4023, 4023, 4023, 4024, 757, 4024, 4024, 756, - 755, 4024, 4024, 4024, 4024, 4024, 749, 4024, 4024, 4024, - 4024, 4024, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, + 4023, 4023, 4023, 4023, 4023, 4024, 4024, 4024, 4024, 4024, + 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, + 4024, 4024, 4024, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, - 4026, 742, 4026, 4026, 731, 730, 4026, 4026, 4026, 4026, - 4026, 711, 4026, 4026, 4026, 4026, 4026, 4026, 4027, 4027, + 4025, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, + 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, - 4027, 4027, 4027, 4027, 4027, 4027, 4028, 700, 4028, 4028, - 689, 677, 4028, 4028, 4028, 4028, 4028, 676, 4028, 4028, + 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4028, 4028, 4028, + 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, + 4028, 4028, 4028, 4028, 4028, 4029, 4029, 4029, 4029, 4029, - 4028, 4028, 4028, 4028, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, - 4029, 4029, 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, + 4029, 4029, 4029, 4030, 4030, 771, 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, - 4031, 671, 4031, 4031, 670, 668, 4031, 4031, 4031, 4031, - 4031, 661, 4031, 4031, 4031, 4031, 4031, 4032, 4032, 4032, + 4030, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, + 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, - 4032, 4032, 4032, 4032, 4032, 4033, 4033, 4033, 4033, 4033, + 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4033, 4033, 4033, 4033, 4033, 4033, 4033, 4033, 4033, 4033, 4033, 4033, 4033, - 4033, 4033, 4033, 4034, 4034, 4034, 4034, 4034, 4034, 4034, - + 4033, 4033, 4033, 4033, 4033, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, - 4034, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, - 651, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4036, - 4036, 4036, 4036, 4036, 4036, 4036, 4036, 4036, 4036, 4036, - 4036, 4036, 4036, 4036, 4036, 4036, 4036, 4037, 4037, 4037, - 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, - 4037, 4037, 4037, 4037, 4037, 4038, 4038, 4038, 4038, 4038, + + 4034, 4034, 4034, 4035, 769, 4035, 4035, 768, 767, 4035, + 4035, 4035, 4035, 4035, 765, 4035, 4035, 4035, 4035, 4035, + 4035, 4036, 760, 4036, 4036, 759, 757, 4036, 4036, 4036, + 4036, 4036, 756, 4036, 4036, 4036, 4036, 4036, 4036, 4037, + 755, 4037, 4037, 749, 742, 4037, 4037, 4037, 4037, 4037, + 731, 4037, 4037, 4037, 4037, 4037, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, - 4038, 4038, 4038, 4039, 4039, 4039, 4039, 4039, 4039, 4039, - 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, + 4038, 4038, 4038, 4038, 4039, 730, 4039, 4039, 711, 700, + 4039, 4039, 4039, 4039, 4039, 689, 4039, 4039, 4039, 4039, + 4039, 4039, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, - 4039, 4040, 4040, 650, 4040, 4040, 4040, 4040, 4040, 4040, - 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4041, - 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, - 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4042, 4042, 4042, + 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, + 4041, 677, 4041, 4041, 676, 671, 4041, 4041, 4041, 4041, + 4041, 670, 4041, 4041, 4041, 4041, 4041, 4041, 4042, 4042, 4042, 4042, 4042, 4042, 4042, 4042, 4042, 4042, 4042, 4042, - 4042, 4042, 4042, 4042, 4042, 4043, 4043, 4043, 4043, 4043, + 4042, 4042, 4042, 4042, 4042, 4042, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, - 4043, 4043, 4043, 4044, 648, 4044, 4044, 644, 634, 4044, - 4044, 4044, 4044, 4044, 633, 4044, 4044, 4044, 4044, 4044, - 4044, 4045, 631, 4045, 4045, 628, 627, 4045, 4045, 4045, + 4043, 4043, 4043, 4043, 4044, 668, 4044, 4044, 661, 651, + 4044, 4044, 4044, 4044, 4044, 650, 4044, 4044, 4044, 4044, + 4044, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, + 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4046, - 4045, 4045, 625, 4045, 4045, 4045, 4045, 4045, 4045, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, - 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4047, 622, 4047, - 4047, 621, 541, 4047, 4047, 4047, 4047, 4047, 537, 4047, + 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4047, 4047, 4047, + 4047, 4047, 4047, 4047, 4047, 4047, 4047, 4047, 4047, 4047, 4047, 4047, 4047, 4047, 4047, 4048, 4048, 4048, 4048, 4048, - 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, - 4048, 4048, 4048, 4049, 536, 4049, 4049, 530, 529, 4049, + 4048, 4048, 4048, 4048, 648, 4048, 4048, 4048, 4048, 4048, + 4048, 4048, 4048, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, - 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, - 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4051, 4051, - + 4049, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, + 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, - 4051, 4051, 4051, 4051, 4051, 4051, 4052, 513, 4052, 4052, - 512, 506, 4052, 4052, 4052, 504, 4052, 4052, 4052, 4052, - 4052, 4052, 4052, 4052, 4053, 4053, 4053, 4053, 4053, 4053, - 4053, 490, 4053, 478, 4053, 4053, 4053, 4053, 4053, 4053, - 4053, 4053, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, + + 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4052, 4052, 4052, + 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, + 4052, 4052, 4052, 4052, 4052, 4053, 4053, 644, 4053, 4053, + 4053, 4053, 4053, 4053, 4053, 4053, 4053, 4053, 4053, 4053, + 4053, 4053, 4053, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, - 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, - 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4056, 4056, + 4054, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, + 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, + 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4057, 634, 4057, - 4056, 4056, 4056, 4056, 4056, 4056, 4057, 4057, 4057, 4057, - 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, - 4057, 4057, 4057, 4057, 4058, 4058, 475, 4058, 4058, 4058, - 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, - 4058, 4058, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, + 4057, 633, 631, 4057, 4057, 4057, 4057, 4057, 628, 4057, + 4057, 4057, 4057, 4057, 4057, 4058, 627, 4058, 4058, 625, + 622, 4058, 4058, 4058, 4058, 4058, 621, 4058, 4058, 4058, + 4058, 4058, 4058, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, - 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, - 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4061, 453, - 440, 4061, 434, 422, 4061, 4062, 413, 412, 393, 392, - 385, 4062, 4062, 4062, 383, 4062, 4062, 4062, 4062, 4062, + 4059, 4060, 541, 4060, 4060, 537, 536, 4060, 4060, 4060, + 4060, 4060, 530, 4060, 4060, 4060, 4060, 4060, 4060, 4061, + 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, + 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4062, 529, 4062, + 4062, 513, 512, 4062, 4062, 4062, 4062, 4062, 4062, 4062, - 4062, 4062, 4062, 4063, 4063, 4063, 4063, 4063, 4063, 4063, + 4062, 4062, 4062, 4062, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, - 4063, 4064, 368, 367, 4064, 358, 4064, 4065, 4065, 4065, - 4065, 4065, 4065, 4065, 4065, 4065, 4065, 4065, 4065, 4065, - 4065, 4065, 4065, 4065, 4065, 4066, 357, 347, 4066, 317, - 4066, 316, 4066, 4066, 4066, 4066, 4067, 4067, 4067, 4067, - 4068, 4068, 284, 4068, 4068, 4068, 4068, 4068, 4068, 4068, - 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4069, 4069, - 268, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, - 4069, 4069, 4069, 4069, 4069, 4069, 4070, 261, 4070, 259, + 4063, 4063, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, + 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, + 4065, 506, 4065, 4065, 504, 490, 4065, 4065, 4065, 478, + 4065, 4065, 4065, 4065, 4065, 4065, 4065, 4065, 4066, 4066, + 4066, 4066, 4066, 4066, 4066, 475, 4066, 453, 4066, 4066, + 4066, 4066, 4066, 4066, 4066, 4066, 4067, 4067, 4067, 4067, + 4067, 4067, 4067, 4067, 4067, 4067, 4067, 4067, 4067, 4067, + 4067, 4067, 4067, 4067, 4068, 4068, 4068, 4068, 4068, 4068, - 4070, 4070, 4070, 4070, 4071, 4071, 4071, 4071, 4071, 4071, - 4071, 4071, 4071, 4071, 4071, 4071, 4071, 4071, 4071, 4071, - 4071, 4071, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, + 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, + 4068, 4068, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, + 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, + 4070, 4070, 4070, 4070, 4070, 4070, 4070, 4070, 4070, 4070, + 4070, 4070, 4070, 4070, 4070, 4070, 4070, 4070, 4071, 4071, + 440, 4071, 4071, 4071, 4071, 4071, 4071, 4071, 4071, 4071, + 4071, 4071, 4071, 4071, 4071, 4071, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, + 4072, 4072, 4072, 4072, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, - 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4074, 4074, - 252, 234, 4074, 4074, 4074, 4074, 4074, 229, 4074, 4074, - 4074, 4074, 4074, 4074, 4074, 4074, 4075, 216, 194, 4075, - 4075, 182, 175, 4075, 172, 4075, 165, 4075, 4075, 4075, - 4075, 4076, 4076, 4076, 4076, 4076, 4076, 4076, 4076, 4076, - 4076, 4076, 4076, 4076, 4076, 4076, 4076, 4076, 4076, 4077, - 164, 4077, 4077, 163, 154, 4077, 4077, 4077, 4077, 4077, - 4077, 4077, 4077, 4077, 4077, 4077, 4077, 4078, 4078, 4078, - 4078, 4078, 4078, 4078, 4078, 4078, 4078, 4078, 4078, 4078, - 4078, 4078, 4078, 4078, 4078, 4079, 152, 146, 141, 117, - 75, 4079, 4079, 4079, 64, 4079, 4079, 4079, 4079, 4079, - 4079, 4079, 4079, 4080, 4080, 63, 4080, 4080, 4080, 4080, - 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, - 4080, 4081, 4081, 58, 4081, 4081, 4081, 4081, 4081, 4081, - 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4082, + 4073, 4073, 4074, 434, 422, 4074, 413, 412, 4074, 4075, + 393, 392, 385, 383, 368, 4075, 4075, 4075, 367, 4075, + 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4076, 4076, 4076, + 4076, 4076, 4076, 4076, 4076, 4076, 4076, 4076, 4076, 4076, + 4076, 4076, 4076, 4076, 4076, 4077, 358, 357, 4077, 347, + 4077, 4078, 4078, 4078, 4078, 4078, 4078, 4078, 4078, 4078, + 4078, 4078, 4078, 4078, 4078, 4078, 4078, 4078, 4078, 4079, + 317, 316, 4079, 284, 4079, 268, 4079, 4079, 4079, 4079, + 4080, 4080, 4080, 4080, 4081, 4081, 261, 4081, 4081, 4081, + 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, - 57, 56, 4082, 4082, 55, 54, 4082, 53, 4082, 52, - 4082, 4082, 4082, 4082, 4083, 51, 26, 25, 24, 23, - 4083, 4083, 4083, 0, 4083, 4083, 4083, 4083, 4083, 4083, - 4083, 4083, 4084, 4084, 0, 4084, 4084, 0, 4084, 4084, - 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4085, - 0, 4085, 0, 4085, 4085, 4085, 4085, 4086, 4086, 4086, + 4081, 4081, 4082, 4082, 259, 4082, 4082, 4082, 4082, 4082, + 4082, 4082, 4082, 4082, 4082, 4082, 4082, 4082, 4082, 4082, + 4083, 252, 4083, 234, 4083, 4083, 4083, 4083, 4084, 4084, + 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, + 4084, 4084, 4084, 4084, 4084, 4084, 4085, 4085, 4085, 4085, + 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, + 4085, 4085, 4085, 4085, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, - 4086, 4086, 4086, 4086, 4086, 4087, 0, 4087, 4087, 0, - 0, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, - 4087, 4087, 4087, 4088, 4088, 4088, 4088, 4088, 4088, 4088, + 4086, 4086, 4087, 4087, 229, 216, 4087, 4087, 4087, 4087, + 4087, 194, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, - 4088, 4088, 4088, 4088, 4088, 4088, 4088, 4088, 4088, 4088, - 4088, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, - 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4090, - 0, 0, 4090, 0, 4090, 0, 4090, 4090, 4090, 4090, - 4091, 0, 4091, 0, 4091, 4091, 4091, 4091, 4092, 0, - 0, 4092, 0, 4092, 0, 4092, 4092, 4092, 4092, 4093, - 4093, 0, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, - 4093, 4093, 4093, 4093, 4093, 4093, 4094, 0, 4094, 4094, - 0, 0, 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, - 4094, 4094, 4094, 4094, 4095, 4095, 4095, 4095, 4095, 4095, + 4088, 182, 175, 4088, 4088, 172, 165, 4088, 164, 4088, + 163, 4088, 4088, 4088, 4088, 4089, 4089, 4089, 4089, 4089, + 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, + 4089, 4089, 4089, 4090, 154, 4090, 4090, 152, 146, 4090, + 4090, 4090, 4090, 4090, 4090, 4090, 4090, 4090, 4090, 4090, + 4090, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4092, + 141, 117, 75, 64, 63, 4092, 4092, 4092, 58, 4092, + 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4093, 4093, 57, + 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, - 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, - 4095, 4095, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, - 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, - 4097, 4097, 4097, 4097, 4097, 4097, 4097, 4097, 4097, 4097, - 4097, 4097, 4097, 4097, 4097, 4097, 4097, 4097, 4098, 0, - 4098, 4098, 0, 0, 4098, 4098, 4098, 4098, 4098, 4098, - 4098, 4098, 4098, 4098, 4098, 4098, 4099, 4099, 4099, 4099, - 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, - 4099, 4099, 4099, 4099, 4100, 4100, 4100, 4100, 4100, 4100, - 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, + 4093, 4093, 4093, 4093, 4093, 4094, 4094, 56, 4094, 4094, + 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, + 4094, 4094, 4094, 4095, 55, 54, 4095, 4095, 53, 52, + 4095, 51, 4095, 26, 4095, 4095, 4095, 4095, 4096, 25, + 24, 23, 0, 0, 4096, 4096, 4096, 0, 4096, 4096, + 4096, 4096, 4096, 4096, 4096, 4096, 4097, 4097, 0, 4097, + 4097, 0, 4097, 4097, 4097, 4097, 4097, 4097, 4097, 4097, + 4097, 4097, 4097, 4098, 0, 4098, 0, 4098, 4098, 4098, + 4098, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, + 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4100, - 4100, 4100, 4101, 4101, 0, 4101, 4101, 4101, 4101, 4101, + 0, 4100, 4100, 0, 0, 4100, 4100, 4100, 4100, 4100, + 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, + 4101, 4101, 4101, 4101, 4101, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, - 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4103, 4103, - 0, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, - 4103, 4103, 4103, 4103, 4103, 4103, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4105, 0, 4105, 0, 4105, 4105, - 4105, 4105, 4106, 0, 4106, 0, 4106, 4106, 4106, 4106, - 4107, 0, 4107, 0, 4107, 4107, 4107, 4107, 4108, 0, + 4102, 4102, 4102, 4103, 0, 0, 4103, 0, 4103, 0, + 4103, 4103, 4103, 4103, 4104, 0, 4104, 0, 4104, 4104, + 4104, 4104, 4105, 0, 0, 4105, 0, 4105, 0, 4105, + 4105, 4105, 4105, 4106, 4106, 0, 4106, 4106, 4106, 4106, + 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, - 0, 4108, 4108, 0, 0, 4108, 0, 4108, 0, 4108, - 4108, 4108, 4108, 4109, 0, 0, 4109, 0, 4109, 0, - 4109, 4109, 4109, 4109, 4110, 0, 4110, 0, 4110, 4110, - 4110, 4110, 4111, 0, 4111, 0, 4111, 4111, 4111, 4111, - 4112, 4112, 0, 4112, 4112, 0, 4112, 4112, 4112, 4112, - 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4113, 0, 0, - 4113, 4113, 0, 0, 4113, 0, 4113, 0, 4113, 4113, - 4113, 4113, 4114, 4114, 0, 4114, 4114, 0, 4114, 4114, - 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4115, + 4107, 0, 4107, 4107, 0, 0, 4107, 4107, 4107, 4107, + 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4108, 4108, + 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, + 4108, 4108, 4108, 4108, 4108, 4108, 4109, 4109, 4109, 4109, + 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, + 4109, 4109, 4109, 4109, 4110, 4110, 4110, 4110, 4110, 4110, + 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, + 4110, 4110, 4111, 0, 4111, 4111, 0, 0, 4111, 4111, + 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, + 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4112, + + 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4113, 4113, + 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, + 4113, 4113, 4113, 4113, 4113, 4113, 4114, 4114, 0, 4114, + 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, + 4114, 4114, 4114, 4114, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, - - 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4116, 4116, 4116, + 4115, 4115, 4116, 4116, 0, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, - 4116, 4116, 4116, 4116, 4116, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, - 4117, 4117, 4117, 4118, 0, 4118, 4118, 0, 0, 4118, - 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, 4118, - 4118, 4119, 0, 4119, 4119, 0, 0, 4119, 4119, 4119, - 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4120, - 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, - 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4121, 4121, 4121, + 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4118, 0, - 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, 4121, - 4121, 4121, 4121, 4121, 4121, 4122, 4122, 4122, 4122, 4122, - 4122, 4122, 4122, 4122, 4122, 4122, 4122, 4122, 4122, 4122, - 4122, 4122, 4122, 4123, 4123, 4123, 4123, 4123, 4123, 4123, - 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, - 4123, 4124, 0, 4124, 4124, 0, 0, 4124, 4124, 4124, - 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4125, + 4118, 0, 4118, 4118, 4118, 4118, 4119, 0, 4119, 0, + 4119, 4119, 4119, 4119, 4120, 0, 4120, 0, 4120, 4120, + 4120, 4120, 4121, 0, 0, 4121, 4121, 0, 0, 4121, + 0, 4121, 0, 4121, 4121, 4121, 4121, 4122, 0, 0, + 4122, 0, 4122, 0, 4122, 4122, 4122, 4122, 4123, 0, + 4123, 0, 4123, 4123, 4123, 4123, 4124, 0, 4124, 0, + 4124, 4124, 4124, 4124, 4125, 4125, 0, 4125, 4125, 0, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4126, 4126, 4126, - 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, + 4125, 4126, 0, 0, 4126, 4126, 0, 0, 4126, 0, + 4126, 0, 4126, 4126, 4126, 4126, 4127, 4127, 0, 4127, - 4126, 4126, 4126, 4126, 4126, 4127, 4127, 4127, 4127, 4127, - 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, - 4127, 4127, 4127, 4128, 0, 4128, 4128, 0, 0, 4128, + 4127, 0, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, + 4127, 4127, 4127, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, - 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4131, 0, 0, - 4131, 0, 4131, 0, 4131, 4131, 4131, 4131, 4132, 0, - 4132, 0, 4132, 4132, 4132, 4132, 4133, 0, 4133, 0, + 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4131, 0, 4131, + 4131, 0, 0, 4131, 4131, 4131, 4131, 4131, 4131, 4131, + 4131, 4131, 4131, 4131, 4131, 4132, 0, 4132, 4132, 0, + 0, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4133, 4133, 4133, 4133, 4134, 0, 4134, 0, 4134, 4134, - 4134, 4134, 4135, 0, 0, 4135, 0, 4135, 0, 4135, - 4135, 4135, 4135, 4136, 4136, 0, 4136, 4136, 0, 4136, + 4132, 4132, 4132, 4133, 4133, 4133, 4133, 4133, 4133, 4133, + 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, + 4133, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, + 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4135, + 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, + 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, - 4137, 0, 0, 4137, 4137, 0, 0, 4137, 0, 4137, - 0, 4137, 4137, 4137, 4137, 4138, 0, 4138, 0, 4138, - 4138, 4138, 4138, 4139, 0, 4139, 0, 4139, 4139, 4139, - 4139, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, - 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4141, - 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, + 4136, 4136, 4136, 4136, 4136, 4137, 0, 4137, 4137, 0, + 0, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, + 4137, 4137, 4137, 4138, 4138, 4138, 4138, 4138, 4138, 4138, - 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4142, 4142, 4142, + 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, + 4138, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, + 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4140, + 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, + 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4141, 0, 4141, + 4141, 0, 0, 4141, 4141, 4141, 4141, 4141, 4141, 4141, + 4141, 4141, 4141, 4141, 4141, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, - 4142, 4142, 4142, 4142, 4142, 4143, 4143, 4143, 4143, 4143, + 4142, 4142, 4142, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, - 4143, 4143, 4143, 4144, 4144, 4144, 4144, 4144, 4144, 4144, - 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, - 4144, 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, - 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4146, - 0, 4146, 4146, 0, 0, 4146, 4146, 4146, 4146, 4146, - 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4147, 4147, 4147, - 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, - 4147, 4147, 4147, 4147, 4147, 4148, 4148, 4148, 4148, 4148, - 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, - 4148, 4148, 4148, 4149, 4149, 4149, 4149, 4149, 4149, 4149, - 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, - 4149, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, - 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4151, - 4151, 0, 4151, 4151, 0, 4151, 4151, 4151, 4151, 4151, - 4151, 4151, 4151, 4151, 4151, 4151, 4152, 0, 0, 4152, - 4152, 0, 0, 4152, 0, 4152, 0, 4152, 4152, 4152, + 4143, 4144, 0, 0, 4144, 0, 4144, 0, 4144, 4144, + 4144, 4144, 4145, 0, 4145, 0, 4145, 4145, 4145, 4145, + 4146, 0, 4146, 0, 4146, 4146, 4146, 4146, 4147, 0, + 4147, 0, 4147, 4147, 4147, 4147, 4148, 0, 0, 4148, + 0, 4148, 0, 4148, 4148, 4148, 4148, 4149, 4149, 0, + 4149, 4149, 0, 4149, 4149, 4149, 4149, 4149, 4149, 4149, + 4149, 4149, 4149, 4149, 4150, 0, 0, 4150, 4150, 0, + 0, 4150, 0, 4150, 0, 4150, 4150, 4150, 4150, 4151, + 0, 4151, 0, 4151, 4151, 4151, 4151, 4152, 0, 4152, + 0, 4152, 4152, 4152, 4152, 4153, 4153, 4153, 4153, 4153, - 4152, 4153, 4153, 4153, 4153, 0, 4153, 4153, 4153, 4153, - 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4154, - 0, 0, 0, 0, 0, 4154, 4154, 4154, 0, 4154, - 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4155, 4155, 4155, - 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, - 4155, 4155, 4155, 4155, 4155, 4156, 0, 4156, 0, 4156, - 4156, 4156, 4156, 4157, 4157, 0, 4157, 4157, 0, 4157, + 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, + 4153, 4153, 4153, 4154, 4154, 4154, 4154, 4154, 4154, 4154, + 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, + 4154, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, + 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4156, + 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, + 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, - 4158, 0, 0, 4158, 4158, 0, 0, 0, 0, 0, - 0, 4158, 4159, 4159, 0, 0, 0, 4159, 4159, 4159, + 4157, 4157, 4157, 4157, 4157, 4158, 4158, 4158, 4158, 4158, + 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, + 4158, 4158, 4158, 4159, 0, 4159, 4159, 0, 0, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, - 4160, 4160, 0, 4160, 4160, 0, 4160, 4160, 4160, 4160, - 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4161, 4161, 0, - 4161, 4161, 0, 4161, 4161, 4161, 4161, 4161, 4161, 4161, - 4161, 4161, 4161, 4161, 4162, 4162, 0, 4162, 4162, 4162, + 4159, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, + 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4161, + 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, + 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, - 4162, 4163, 4163, 0, 4163, 4163, 4163, 4163, 4163, 4163, - 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4164, 0, - 4164, 0, 4164, 0, 4164, 4164, 4164, 4164, 4165, 4165, - 0, 4165, 4165, 0, 4165, 4165, 4165, 4165, 4165, 4165, + 4162, 4162, 4162, 4162, 4162, 4163, 4163, 4163, 4163, 4163, + 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, + 4163, 4163, 4163, 4164, 4164, 0, 0, 4164, 4164, 4164, - 4165, 4165, 4165, 4165, 4165, 4166, 4166, 0, 4166, 4166, - 0, 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, - 4166, 4166, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, + 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, + 4164, 4165, 4165, 0, 4165, 4165, 0, 4165, 4165, 4165, + 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4166, 0, + 0, 4166, 4166, 0, 0, 4166, 0, 4166, 0, 4166, + 4166, 4166, 4166, 4167, 4167, 4167, 4167, 0, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, - 4168, 0, 4168, 0, 4168, 0, 4168, 4168, 4168, 4168, - 4169, 4169, 0, 0, 4169, 4169, 4169, 4169, 4169, 0, - 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4170, 4170, - 0, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, - 4170, 4170, 4170, 4170, 4170, 4170, 4171, 4171, 0, 4171, - 4171, 0, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, + 4167, 4168, 0, 0, 0, 0, 0, 4168, 4168, 4168, + 0, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4169, + 0, 4169, 0, 4169, 4169, 4169, 4169, 4170, 0, 0, + 4170, 0, 4170, 0, 4170, 4170, 4170, 4170, 4171, 4171, - 4171, 4171, 4171, 4172, 4172, 0, 0, 4172, 4172, 4172, - 4172, 4172, 0, 4172, 4172, 4172, 4172, 4172, 4172, 4172, - 4172, 4173, 0, 0, 0, 0, 0, 4173, 4173, 4173, - 0, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4174, - 4174, 0, 4174, 4174, 0, 4174, 4174, 4174, 4174, 4174, - 4174, 4174, 4174, 4174, 4174, 4174, 4175, 0, 0, 4175, - 4175, 0, 0, 4175, 0, 4175, 0, 4175, 4175, 4175, + 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, + 4171, 4171, 4171, 4171, 4171, 4171, 4172, 0, 4172, 0, + 4172, 4172, 4172, 4172, 4173, 4173, 0, 4173, 4173, 0, + 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, + 4173, 4174, 0, 0, 4174, 4174, 0, 0, 0, 0, + 0, 0, 4174, 4175, 4175, 0, 0, 0, 4175, 4175, + 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4176, 4176, 0, 4176, 4176, 0, 4176, 4176, 4176, - 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4177, 0, - 0, 0, 0, 0, 4177, 4177, 4177, 0, 4177, 4177, + 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4177, 4177, + 0, 4177, 4177, 0, 4177, 4177, 4177, 4177, 4177, 4177, - 4177, 4177, 4177, 4177, 4177, 4177, 4178, 0, 4178, 0, - 4178, 4178, 4178, 4178, 4179, 4179, 0, 4179, 4179, 0, - 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, - 4179, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, - 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4181, + 4177, 4177, 4177, 4177, 4177, 4178, 4178, 0, 4178, 4178, + 4178, 4178, 4178, 4178, 4178, 4178, 4178, 4178, 4178, 4178, + 4178, 4178, 4179, 4179, 0, 4179, 4179, 4179, 4179, 4179, + 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4180, + 0, 4180, 0, 4180, 0, 4180, 4180, 4180, 4180, 4181, 4181, 0, 4181, 4181, 0, 4181, 4181, 4181, 4181, 4181, - 4181, 4181, 4181, 4181, 4181, 4181, 4182, 0, 0, 0, - 4182, 4182, 4182, 4182, 4182, 0, 4182, 4182, 4182, 4182, - 4182, 4182, 4182, 4182, 4183, 0, 0, 0, 4183, 4183, - 4183, 4183, 4183, 0, 4183, 4183, 4183, 4183, 4183, 4183, + 4181, 4181, 4181, 4181, 4181, 4181, 4182, 4182, 0, 4182, + 4182, 0, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, + 4182, 4182, 4182, 4183, 4183, 4183, 4183, 4183, 4183, 4183, + 4183, 4183, 4183, 4183, 4183, 4183, 4183, 4183, 4183, 4183, - 4183, 4183, 4184, 4184, 0, 4184, 4184, 0, 4184, 4184, - 4184, 4184, 4184, 4184, 4184, 4184, 4184, 4184, 4184, 4185, - 4185, 0, 4185, 4185, 0, 4185, 4185, 4185, 4185, 4185, - 4185, 4185, 4185, 4185, 4185, 4185, 4186, 0, 0, 0, - 4186, 4186, 4186, 4186, 4186, 0, 4186, 4186, 4186, 4186, - 4186, 4186, 4186, 4186, 4187, 0, 0, 0, 4187, 4187, - 4187, 4187, 4187, 0, 4187, 4187, 4187, 4187, 4187, 4187, - 4187, 4187, 4188, 0, 4188, 0, 4188, 0, 4188, 4188, - 4188, 4188, 4189, 4189, 0, 4189, 4189, 4189, 4189, 4189, - 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4190, + 4183, 4184, 0, 4184, 0, 4184, 0, 4184, 4184, 4184, + 4184, 4185, 4185, 0, 0, 4185, 4185, 4185, 4185, 4185, + 0, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4186, + 4186, 0, 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, + 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4187, 4187, 0, + 4187, 4187, 0, 4187, 4187, 4187, 4187, 4187, 4187, 4187, + 4187, 4187, 4187, 4187, 4188, 4188, 0, 0, 4188, 4188, + 4188, 4188, 4188, 0, 4188, 4188, 4188, 4188, 4188, 4188, + 4188, 4188, 4189, 0, 0, 0, 0, 0, 4189, 4189, + 4189, 0, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, - 4190, 0, 4190, 4190, 0, 4190, 4190, 4190, 4190, 4190, - 4190, 4190, 4190, 4190, 4190, 4190, 4191, 4191, 0, 4191, - 4191, 0, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, - 4191, 4191, 4191, 4192, 0, 4192, 0, 4192, 0, 4192, - 4192, 4192, 4192, 4193, 0, 0, 0, 0, 0, 4193, - 4193, 4193, 0, 4193, 4193, 4193, 4193, 4193, 4193, 4193, - 4193, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, + 4190, 4190, 0, 4190, 4190, 0, 4190, 4190, 4190, 4190, + 4190, 4190, 4190, 4190, 4190, 4190, 4190, 4191, 0, 0, + 4191, 4191, 0, 0, 4191, 0, 4191, 0, 4191, 4191, + 4191, 4191, 4192, 4192, 0, 4192, 4192, 0, 4192, 4192, + 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4193, + 0, 0, 0, 0, 0, 4193, 4193, 4193, 0, 4193, + 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4194, 0, 4194, + 0, 4194, 4194, 4194, 4194, 4195, 4195, 0, 4195, 4195, + 0, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, + 4195, 4195, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908, 3908 + 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, + 4197, 4197, 0, 4197, 4197, 0, 4197, 4197, 4197, 4197, + 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4198, 0, 0, + 0, 4198, 4198, 4198, 4198, 4198, 0, 4198, 4198, 4198, + 4198, 4198, 4198, 4198, 4198, 4199, 0, 0, 0, 4199, + 4199, 4199, 4199, 4199, 0, 4199, 4199, 4199, 4199, 4199, + 4199, 4199, 4199, 4200, 4200, 0, 4200, 4200, 0, 4200, + 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, + 4201, 4201, 0, 4201, 4201, 0, 4201, 4201, 4201, 4201, + 4201, 4201, 4201, 4201, 4201, 4201, 4201, 4202, 0, 0, + + 0, 4202, 4202, 4202, 4202, 4202, 0, 4202, 4202, 4202, + 4202, 4202, 4202, 4202, 4202, 4203, 0, 0, 0, 4203, + 4203, 4203, 4203, 4203, 0, 4203, 4203, 4203, 4203, 4203, + 4203, 4203, 4203, 4204, 0, 4204, 0, 4204, 0, 4204, + 4204, 4204, 4204, 4205, 4205, 0, 4205, 4205, 4205, 4205, + 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, + 4206, 4206, 0, 4206, 4206, 0, 4206, 4206, 4206, 4206, + 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4207, 4207, 0, + 4207, 4207, 0, 4207, 4207, 4207, 4207, 4207, 4207, 4207, + 4207, 4207, 4207, 4207, 4208, 0, 4208, 0, 4208, 0, + + 4208, 4208, 4208, 4208, 4209, 0, 0, 0, 0, 0, + 4209, 4209, 4209, 0, 4209, 4209, 4209, 4209, 4209, 4209, + 4209, 4209, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, + + 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921 } ; static yy_state_type yy_last_accepting_state; @@ -4957,67 +4975,67 @@ static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 1; -static const flex_int16_t yy_rule_linenum[536] = +static const flex_int16_t yy_rule_linenum[537] = { 0, - 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, - 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, - 522, 523, 525, 526, 527, 528, 529, 530, 531, 532, - 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 557, 558, 560, 561, 564, 565, - 566, 567, 568, 569, 570, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, + 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 525, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 562, 563, 566, 567, + 568, 569, 570, 571, 572, 574, 575, 576, 577, 578, + 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 607, 608, 610, 611, 612, 613, 614, 618, 623, 624, - 629, 630, 631, 636, 637, 638, 643, 648, 649, 650, - 655, 656, 660, 661, 662, 666, 667, 671, 672, 676, - 677, 678, 682, 683, 687, 688, 693, 694, 695, 699, - 703, 704, 712, 717, 718, 723, 724, 725, 734, 737, - 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, - 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, - 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, - 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, + 609, 610, 612, 613, 614, 615, 616, 620, 625, 626, + 631, 632, 633, 638, 639, 640, 645, 650, 651, 652, + 657, 658, 662, 663, 664, 668, 669, 673, 674, 678, + 679, 680, 684, 685, 689, 690, 695, 696, 697, 701, + 705, 706, 714, 719, 720, 725, 726, 727, 736, 739, + 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, + 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, + 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, + 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, + 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, - 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, - 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, - 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, - 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, - 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, - 838, 839, 840, 841, 842, 843, 845, 846, 847, 849, - 850, 851, 852, 853, 854, 855, 856, 857, 858, 861, - 865, 866, 867, 868, 869, 873, 874, 875, 876, 877, - 878, 882, 883, 884, 885, 890, 891, 892, 893, 894, - 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, + 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, + 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, + 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, + 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, + 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, + 840, 841, 842, 843, 844, 845, 847, 848, 849, 851, + 852, 853, 854, 855, 856, 857, 858, 859, 860, 863, + 867, 868, 869, 870, 871, 875, 876, 877, 878, 879, + 880, 884, 885, 886, 887, 892, 893, 894, 895, 896, + 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, - 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, - 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, - 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, - 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, - 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, - 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, - 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, - 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, - 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, - 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, + 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, + 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, + 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, + 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, + 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, + 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, + 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, + 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, + 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, + 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, - 1005, 1006, 1007, 1008, 1009, 1010, 1013, 1014, 1015, 1016, - 1017, 1018, 1019, 1020, 1021, 1025, 1026, 1027, 1028, 1029, - 1030, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, - 1045, 1046, 1047, 1048, 1049, 1054, 1055, 1056, 1057, 1058, - 1060, 1061, 1063, 1064, 1070, 1071, 1072, 1073, 1074, 1075, - 1078, 1079, 1080, 1081, 1082, 1083, 1087, 1088, 1089, 1090, - 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, - 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, - 1111, 1112, 1113, 1114, 1115, 1117, 1118, 1123, 1127, 1131, - 1132, 1136, 1137, 1140, 1141, 1145, 1146, 1150, 1151, 1155, + 1007, 1008, 1009, 1010, 1011, 1012, 1015, 1016, 1017, 1018, + 1019, 1020, 1021, 1022, 1023, 1027, 1028, 1029, 1030, 1031, + 1032, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, + 1047, 1048, 1049, 1050, 1051, 1056, 1057, 1058, 1059, 1060, + 1062, 1063, 1065, 1066, 1072, 1073, 1074, 1075, 1076, 1077, + 1080, 1081, 1082, 1083, 1084, 1085, 1089, 1090, 1091, 1092, + 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, + 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, + 1113, 1114, 1115, 1116, 1117, 1119, 1120, 1125, 1129, 1133, + 1134, 1138, 1139, 1142, 1143, 1147, 1148, 1152, 1153, 1157, - 1156, 1161, 1163, 1164, 1165, 1166, 1168, 1169, 1170, 1171, - 1173, 1174, 1175, 1176, 1178, 1180, 1181, 1183, 1184, 1185, - 1186, 1188, 1193, 1194, 1195, 1199, 1200, 1201, 1206, 1208, - 1209, 1210, 1235, 1261, 1289 + 1158, 1163, 1165, 1166, 1167, 1168, 1170, 1171, 1172, 1173, + 1175, 1176, 1177, 1178, 1180, 1182, 1183, 1185, 1186, 1187, + 1188, 1190, 1195, 1196, 1197, 1201, 1202, 1203, 1208, 1210, + 1211, 1212, 1237, 1263, 1291, 1329 } ; /* The intent behind this definition is that it'll catch @@ -5039,6 +5057,7 @@ char *yytext; #include "src/parser/seclang-parser.hh" #include "src/utils/https_client.h" #include "src/utils/string.h" +#include "others/mbedtls/aes.h" using modsecurity::Parser::Driver; using modsecurity::Utils::HttpsClient; @@ -5103,15 +5122,15 @@ static std::stack YY_PREVIOUS_STATE; #define BEGIN_PREVIOUS() { BEGIN(YY_PREVIOUS_STATE.top()); YY_PREVIOUS_STATE.pop(); } // The location of the current token. -#line 5106 "seclang-scanner.cc" +#line 5125 "seclang-scanner.cc" #define YY_NO_INPUT 1 -#line 489 "seclang-scanner.ll" +#line 491 "seclang-scanner.ll" // Code run each time a pattern is matched. # define YY_USER_ACTION driver.loc.back()->columns (yyleng); -#line 5113 "seclang-scanner.cc" -#line 5114 "seclang-scanner.cc" +#line 5132 "seclang-scanner.cc" +#line 5133 "seclang-scanner.cc" #define INITIAL 0 #define EXPECTING_ACTION_PREDICATE_VARIABLE 1 @@ -5425,15 +5444,15 @@ YY_DECL { /* %% [7.0] user's declarations go here */ -#line 494 "seclang-scanner.ll" +#line 496 "seclang-scanner.ll" -#line 498 "seclang-scanner.ll" +#line 500 "seclang-scanner.ll" // Code run each time yylex is called. driver.loc.back()->step(); -#line 5436 "seclang-scanner.cc" +#line 5455 "seclang-scanner.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -5462,13 +5481,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3909 ) + if ( yy_current_state >= 3922 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 3908 ); + while ( yy_current_state != 3921 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -5487,13 +5506,13 @@ do_action: /* This label is used only to access EOF actions. */ { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 536 ) + else if ( yy_act < 537 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 536 ) + else if ( yy_act == 537 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 537 ) + else if ( yy_act == 538 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -5511,559 +5530,559 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 502 "seclang-scanner.ll" +#line 504 "seclang-scanner.ll" { return p::make_ACTION_APPEND(yytext, *driver.loc.back()); } YY_BREAK case 2: YY_RULE_SETUP -#line 503 "seclang-scanner.ll" +#line 505 "seclang-scanner.ll" { return p::make_ACTION_BLOCK(yytext, *driver.loc.back()); } YY_BREAK case 3: YY_RULE_SETUP -#line 504 "seclang-scanner.ll" +#line 506 "seclang-scanner.ll" { return p::make_ACTION_CAPTURE(yytext, *driver.loc.back()); } YY_BREAK case 4: YY_RULE_SETUP -#line 505 "seclang-scanner.ll" +#line 507 "seclang-scanner.ll" { return p::make_ACTION_CHAIN(yytext, *driver.loc.back()); } YY_BREAK case 5: YY_RULE_SETUP -#line 506 "seclang-scanner.ll" +#line 508 "seclang-scanner.ll" { return p::make_ACTION_DENY(yytext, *driver.loc.back()); } YY_BREAK case 6: YY_RULE_SETUP -#line 507 "seclang-scanner.ll" +#line 509 "seclang-scanner.ll" { return p::make_ACTION_DEPRECATE_VAR(yytext, *driver.loc.back()); } YY_BREAK case 7: YY_RULE_SETUP -#line 508 "seclang-scanner.ll" +#line 510 "seclang-scanner.ll" { return p::make_ACTION_DROP(yytext, *driver.loc.back()); } YY_BREAK case 8: YY_RULE_SETUP -#line 509 "seclang-scanner.ll" +#line 511 "seclang-scanner.ll" { return p::make_ACTION_ID(yytext, *driver.loc.back()); } YY_BREAK case 9: YY_RULE_SETUP -#line 510 "seclang-scanner.ll" +#line 512 "seclang-scanner.ll" { return p::make_ACTION_LOG(yytext, *driver.loc.back()); } YY_BREAK case 10: YY_RULE_SETUP -#line 511 "seclang-scanner.ll" +#line 513 "seclang-scanner.ll" { return p::make_ACTION_MULTI_MATCH(yytext, *driver.loc.back()); } YY_BREAK case 11: YY_RULE_SETUP -#line 512 "seclang-scanner.ll" +#line 514 "seclang-scanner.ll" { return p::make_ACTION_NO_AUDIT_LOG(yytext, *driver.loc.back()); } YY_BREAK case 12: YY_RULE_SETUP -#line 513 "seclang-scanner.ll" +#line 515 "seclang-scanner.ll" { return p::make_ACTION_NO_LOG(yytext, *driver.loc.back()); } YY_BREAK case 13: YY_RULE_SETUP -#line 514 "seclang-scanner.ll" +#line 516 "seclang-scanner.ll" { return p::make_ACTION_PASS(yytext, *driver.loc.back()); } YY_BREAK case 14: YY_RULE_SETUP -#line 515 "seclang-scanner.ll" +#line 517 "seclang-scanner.ll" { return p::make_ACTION_PAUSE(yytext, *driver.loc.back()); } YY_BREAK case 15: YY_RULE_SETUP -#line 516 "seclang-scanner.ll" +#line 518 "seclang-scanner.ll" { return p::make_ACTION_PREPEND(yytext, *driver.loc.back()); } YY_BREAK case 16: YY_RULE_SETUP -#line 517 "seclang-scanner.ll" +#line 519 "seclang-scanner.ll" { return p::make_ACTION_PROXY(yytext, *driver.loc.back()); } YY_BREAK case 17: YY_RULE_SETUP -#line 518 "seclang-scanner.ll" +#line 520 "seclang-scanner.ll" { return p::make_ACTION_SANITISE_ARG(yytext, *driver.loc.back()); } YY_BREAK case 18: YY_RULE_SETUP -#line 519 "seclang-scanner.ll" +#line 521 "seclang-scanner.ll" { return p::make_ACTION_SANITISE_MATCHED(yytext, *driver.loc.back()); } YY_BREAK case 19: YY_RULE_SETUP -#line 520 "seclang-scanner.ll" +#line 522 "seclang-scanner.ll" { return p::make_ACTION_SANITISE_MATCHED_BYTES(yytext, *driver.loc.back()); } YY_BREAK case 20: YY_RULE_SETUP -#line 521 "seclang-scanner.ll" +#line 523 "seclang-scanner.ll" { return p::make_ACTION_SANITISE_REQUEST_HEADER(yytext, *driver.loc.back()); } YY_BREAK case 21: YY_RULE_SETUP -#line 522 "seclang-scanner.ll" +#line 524 "seclang-scanner.ll" { return p::make_ACTION_SANITISE_RESPONSE_HEADER(yytext, *driver.loc.back()); } YY_BREAK case 22: YY_RULE_SETUP -#line 523 "seclang-scanner.ll" +#line 525 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_SETRSC(yytext, *driver.loc.back()); } YY_BREAK case 23: YY_RULE_SETUP -#line 525 "seclang-scanner.ll" +#line 527 "seclang-scanner.ll" { return p::make_ACTION_STATUS(yytext, *driver.loc.back()); } YY_BREAK case 24: /* rule 24 can match eol */ YY_RULE_SETUP -#line 526 "seclang-scanner.ll" +#line 528 "seclang-scanner.ll" { return p::make_ACTION_ACCURACY(yytext, *driver.loc.back()); } YY_BREAK case 25: /* rule 25 can match eol */ YY_RULE_SETUP -#line 527 "seclang-scanner.ll" +#line 529 "seclang-scanner.ll" { return p::make_ACTION_ACCURACY(yytext, *driver.loc.back()); } YY_BREAK case 26: YY_RULE_SETUP -#line 528 "seclang-scanner.ll" +#line 530 "seclang-scanner.ll" { return p::make_ACTION_ALLOW(yytext, *driver.loc.back()); } YY_BREAK case 27: YY_RULE_SETUP -#line 529 "seclang-scanner.ll" +#line 531 "seclang-scanner.ll" { return p::make_ACTION_AUDIT_LOG(yytext, *driver.loc.back()); } YY_BREAK case 28: YY_RULE_SETUP -#line 530 "seclang-scanner.ll" +#line 532 "seclang-scanner.ll" { return p::make_ACTION_CTL_AUDIT_ENGINE(yytext, *driver.loc.back()); } YY_BREAK case 29: YY_RULE_SETUP -#line 531 "seclang-scanner.ll" +#line 533 "seclang-scanner.ll" { return p::make_ACTION_CTL_AUDIT_LOG_PARTS(yytext, *driver.loc.back()); } YY_BREAK case 30: YY_RULE_SETUP -#line 532 "seclang-scanner.ll" +#line 534 "seclang-scanner.ll" { return p::make_ACTION_CTL_BDY_JSON(yytext, *driver.loc.back()); } YY_BREAK case 31: YY_RULE_SETUP -#line 533 "seclang-scanner.ll" +#line 535 "seclang-scanner.ll" { return p::make_ACTION_CTL_BDY_XML(yytext, *driver.loc.back()); } YY_BREAK case 32: YY_RULE_SETUP -#line 534 "seclang-scanner.ll" +#line 536 "seclang-scanner.ll" { return p::make_ACTION_CTL_BDY_URLENCODED(yytext, *driver.loc.back()); } YY_BREAK case 33: YY_RULE_SETUP -#line 535 "seclang-scanner.ll" +#line 537 "seclang-scanner.ll" { return p::make_ACTION_CTL_FORCE_REQ_BODY_VAR(yytext, *driver.loc.back()); } YY_BREAK case 34: YY_RULE_SETUP -#line 536 "seclang-scanner.ll" +#line 538 "seclang-scanner.ll" { return p::make_ACTION_CTL_REQUEST_BODY_ACCESS(yytext, *driver.loc.back()); } YY_BREAK case 35: YY_RULE_SETUP -#line 537 "seclang-scanner.ll" +#line 539 "seclang-scanner.ll" { return p::make_ACTION_CTL_RULE_ENGINE(*driver.loc.back()); } YY_BREAK case 36: YY_RULE_SETUP -#line 538 "seclang-scanner.ll" +#line 540 "seclang-scanner.ll" { return p::make_ACTION_CTL_RULE_REMOVE_BY_ID(yytext, *driver.loc.back()); } YY_BREAK case 37: YY_RULE_SETUP -#line 539 "seclang-scanner.ll" +#line 541 "seclang-scanner.ll" { return p::make_ACTION_CTL_RULE_REMOVE_BY_TAG(yytext, *driver.loc.back()); } YY_BREAK case 38: YY_RULE_SETUP -#line 540 "seclang-scanner.ll" +#line 542 "seclang-scanner.ll" { return p::make_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID(yytext, *driver.loc.back()); } YY_BREAK case 39: YY_RULE_SETUP -#line 541 "seclang-scanner.ll" +#line 543 "seclang-scanner.ll" { return p::make_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG(yytext, *driver.loc.back()); } YY_BREAK case 40: /* rule 40 can match eol */ YY_RULE_SETUP -#line 542 "seclang-scanner.ll" +#line 544 "seclang-scanner.ll" { return p::make_ACTION_EXEC(yytext, *driver.loc.back()); } YY_BREAK case 41: /* rule 41 can match eol */ YY_RULE_SETUP -#line 543 "seclang-scanner.ll" +#line 545 "seclang-scanner.ll" { return p::make_ACTION_EXEC(yytext, *driver.loc.back()); } YY_BREAK case 42: /* rule 42 can match eol */ YY_RULE_SETUP -#line 544 "seclang-scanner.ll" +#line 546 "seclang-scanner.ll" { return p::make_ACTION_EXPIRE_VAR(yytext, *driver.loc.back()); } YY_BREAK case 43: /* rule 43 can match eol */ YY_RULE_SETUP -#line 545 "seclang-scanner.ll" +#line 547 "seclang-scanner.ll" { return p::make_ACTION_EXPIRE_VAR(yytext, *driver.loc.back()); } YY_BREAK case 44: /* rule 44 can match eol */ YY_RULE_SETUP -#line 546 "seclang-scanner.ll" +#line 548 "seclang-scanner.ll" { return p::make_ACTION_EXPIRE_VAR(yytext, *driver.loc.back()); } YY_BREAK case 45: /* rule 45 can match eol */ YY_RULE_SETUP -#line 547 "seclang-scanner.ll" +#line 549 "seclang-scanner.ll" { return p::make_ACTION_EXPIRE_VAR(yytext, *driver.loc.back()); } YY_BREAK case 46: YY_RULE_SETUP -#line 548 "seclang-scanner.ll" +#line 550 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_INITCOL(yytext, *driver.loc.back()); } YY_BREAK case 47: /* rule 47 can match eol */ YY_RULE_SETUP -#line 549 "seclang-scanner.ll" +#line 551 "seclang-scanner.ll" { return p::make_ACTION_MATURITY(yytext, *driver.loc.back()); } YY_BREAK case 48: /* rule 48 can match eol */ YY_RULE_SETUP -#line 550 "seclang-scanner.ll" +#line 552 "seclang-scanner.ll" { return p::make_ACTION_MATURITY(yytext, *driver.loc.back()); } YY_BREAK case 49: YY_RULE_SETUP -#line 551 "seclang-scanner.ll" +#line 553 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_MSG(yytext, *driver.loc.back()); } YY_BREAK case 50: YY_RULE_SETUP -#line 552 "seclang-scanner.ll" +#line 554 "seclang-scanner.ll" { return p::make_ACTION_PHASE(yytext, *driver.loc.back()); } YY_BREAK case 51: YY_RULE_SETUP -#line 553 "seclang-scanner.ll" +#line 555 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_REDIRECT(yytext, *driver.loc.back()); } YY_BREAK case 52: /* rule 52 can match eol */ YY_RULE_SETUP -#line 554 "seclang-scanner.ll" +#line 556 "seclang-scanner.ll" { return p::make_ACTION_REV(yytext, *driver.loc.back()); } YY_BREAK case 53: /* rule 53 can match eol */ YY_RULE_SETUP -#line 555 "seclang-scanner.ll" +#line 557 "seclang-scanner.ll" { return p::make_ACTION_REV(yytext, *driver.loc.back()); } YY_BREAK case 54: YY_RULE_SETUP -#line 556 "seclang-scanner.ll" +#line 558 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_SETENV(yytext, *driver.loc.back()); } YY_BREAK case 55: YY_RULE_SETUP -#line 557 "seclang-scanner.ll" +#line 559 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_SETSID(yytext, *driver.loc.back()); } YY_BREAK case 56: YY_RULE_SETUP -#line 558 "seclang-scanner.ll" +#line 560 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_SETUID(yytext, *driver.loc.back()); } YY_BREAK case 57: YY_RULE_SETUP -#line 560 "seclang-scanner.ll" +#line 562 "seclang-scanner.ll" { BEGIN(SETVAR_ACTION_QUOTED); return p::make_ACTION_SETVAR(*driver.loc.back()); } YY_BREAK case 58: YY_RULE_SETUP -#line 561 "seclang-scanner.ll" +#line 563 "seclang-scanner.ll" { BEGIN(SETVAR_ACTION_NONQUOTED); return p::make_ACTION_SETVAR(*driver.loc.back()); } YY_BREAK case 59: YY_RULE_SETUP -#line 564 "seclang-scanner.ll" +#line 566 "seclang-scanner.ll" { return p::make_ACTION_SEVERITY(yytext, *driver.loc.back()); } YY_BREAK case 60: YY_RULE_SETUP -#line 565 "seclang-scanner.ll" +#line 567 "seclang-scanner.ll" { return p::make_ACTION_SEVERITY(yytext, *driver.loc.back()); } YY_BREAK case 61: YY_RULE_SETUP -#line 566 "seclang-scanner.ll" +#line 568 "seclang-scanner.ll" { return p::make_ACTION_SKIP_AFTER(yytext, *driver.loc.back()); } YY_BREAK case 62: YY_RULE_SETUP -#line 567 "seclang-scanner.ll" +#line 569 "seclang-scanner.ll" { return p::make_ACTION_SKIP(yytext, *driver.loc.back()); } YY_BREAK case 63: YY_RULE_SETUP -#line 568 "seclang-scanner.ll" +#line 570 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_TAG(yytext, *driver.loc.back()); } YY_BREAK case 64: /* rule 64 can match eol */ YY_RULE_SETUP -#line 569 "seclang-scanner.ll" +#line 571 "seclang-scanner.ll" { return p::make_ACTION_VER(yytext, *driver.loc.back()); } YY_BREAK case 65: YY_RULE_SETUP -#line 570 "seclang-scanner.ll" +#line 572 "seclang-scanner.ll" { return p::make_ACTION_XMLNS(yytext, *driver.loc.back()); } YY_BREAK case 66: YY_RULE_SETUP -#line 572 "seclang-scanner.ll" +#line 574 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT(yytext, *driver.loc.back()); } YY_BREAK case 67: YY_RULE_SETUP -#line 573 "seclang-scanner.ll" +#line 575 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT(yytext, *driver.loc.back()); } YY_BREAK case 68: YY_RULE_SETUP -#line 574 "seclang-scanner.ll" +#line 576 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT(yytext, *driver.loc.back()); } YY_BREAK case 69: YY_RULE_SETUP -#line 575 "seclang-scanner.ll" +#line 577 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_SQL_HEX_DECODE(yytext, *driver.loc.back()); } YY_BREAK case 70: YY_RULE_SETUP -#line 576 "seclang-scanner.ll" +#line 578 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_BASE_64_ENCODE(yytext, *driver.loc.back()); } YY_BREAK case 71: YY_RULE_SETUP -#line 577 "seclang-scanner.ll" +#line 579 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_BASE_64_DECODE(yytext, *driver.loc.back()); } YY_BREAK case 72: YY_RULE_SETUP -#line 578 "seclang-scanner.ll" +#line 580 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT(yytext, *driver.loc.back()); } YY_BREAK case 73: YY_RULE_SETUP -#line 579 "seclang-scanner.ll" +#line 581 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_CMD_LINE(yytext, *driver.loc.back()); } YY_BREAK case 74: YY_RULE_SETUP -#line 580 "seclang-scanner.ll" +#line 582 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_SHA1(yytext, *driver.loc.back()); } YY_BREAK case 75: YY_RULE_SETUP -#line 581 "seclang-scanner.ll" +#line 583 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_MD5(yytext, *driver.loc.back()); } YY_BREAK case 76: YY_RULE_SETUP -#line 582 "seclang-scanner.ll" +#line 584 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE(yytext, *driver.loc.back()); } YY_BREAK case 77: YY_RULE_SETUP -#line 583 "seclang-scanner.ll" +#line 585 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_HEX_ENCODE(yytext, *driver.loc.back()); } YY_BREAK case 78: YY_RULE_SETUP -#line 584 "seclang-scanner.ll" +#line 586 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_HEX_DECODE(yytext, *driver.loc.back()); } YY_BREAK case 79: YY_RULE_SETUP -#line 585 "seclang-scanner.ll" +#line 587 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_LOWERCASE(yytext, *driver.loc.back()); } YY_BREAK case 80: YY_RULE_SETUP -#line 586 "seclang-scanner.ll" +#line 588 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_UPPERCASE(yytext, *driver.loc.back()); } YY_BREAK case 81: YY_RULE_SETUP -#line 587 "seclang-scanner.ll" +#line 589 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_URL_ENCODE(yytext, *driver.loc.back()); } YY_BREAK case 82: YY_RULE_SETUP -#line 588 "seclang-scanner.ll" +#line 590 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_URL_DECODE_UNI(yytext, *driver.loc.back()); } YY_BREAK case 83: YY_RULE_SETUP -#line 589 "seclang-scanner.ll" +#line 591 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_URL_DECODE(yytext, *driver.loc.back()); } YY_BREAK case 84: YY_RULE_SETUP -#line 590 "seclang-scanner.ll" +#line 592 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_NONE(yytext, *driver.loc.back()); } YY_BREAK case 85: YY_RULE_SETUP -#line 591 "seclang-scanner.ll" +#line 593 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE(yytext, *driver.loc.back()); } YY_BREAK case 86: YY_RULE_SETUP -#line 592 "seclang-scanner.ll" +#line 594 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_REMOVE_WHITESPACE(yytext, *driver.loc.back()); } YY_BREAK case 87: YY_RULE_SETUP -#line 593 "seclang-scanner.ll" +#line 595 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_REPLACE_NULLS(yytext, *driver.loc.back()); } YY_BREAK case 88: YY_RULE_SETUP -#line 594 "seclang-scanner.ll" +#line 596 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_REMOVE_NULLS(yytext, *driver.loc.back()); } YY_BREAK case 89: YY_RULE_SETUP -#line 595 "seclang-scanner.ll" +#line 597 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE(yytext, *driver.loc.back()); } YY_BREAK case 90: YY_RULE_SETUP -#line 596 "seclang-scanner.ll" +#line 598 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_JS_DECODE(yytext, *driver.loc.back()); } YY_BREAK case 91: YY_RULE_SETUP -#line 597 "seclang-scanner.ll" +#line 599 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_CSS_DECODE(yytext, *driver.loc.back()); } YY_BREAK case 92: YY_RULE_SETUP -#line 598 "seclang-scanner.ll" +#line 600 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_TRIM(yytext, *driver.loc.back()); } YY_BREAK case 93: YY_RULE_SETUP -#line 599 "seclang-scanner.ll" +#line 601 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_TRIM_LEFT(yytext, *driver.loc.back()); } YY_BREAK case 94: YY_RULE_SETUP -#line 600 "seclang-scanner.ll" +#line 602 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_TRIM_RIGHT(yytext, *driver.loc.back()); } YY_BREAK case 95: YY_RULE_SETUP -#line 601 "seclang-scanner.ll" +#line 603 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN(yytext, *driver.loc.back()); } YY_BREAK case 96: YY_RULE_SETUP -#line 602 "seclang-scanner.ll" +#line 604 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_NORMALISE_PATH(yytext, *driver.loc.back()); } YY_BREAK case 97: YY_RULE_SETUP -#line 603 "seclang-scanner.ll" +#line 605 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_LENGTH(yytext, *driver.loc.back()); } YY_BREAK case 98: YY_RULE_SETUP -#line 604 "seclang-scanner.ll" +#line 606 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_UTF8_TO_UNICODE(yytext, *driver.loc.back()); } YY_BREAK case 99: YY_RULE_SETUP -#line 605 "seclang-scanner.ll" +#line 607 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR(yytext, *driver.loc.back()); } YY_BREAK case 100: YY_RULE_SETUP -#line 606 "seclang-scanner.ll" +#line 608 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_REMOVE_COMMENTS(yytext, *driver.loc.back()); } YY_BREAK case 101: YY_RULE_SETUP -#line 607 "seclang-scanner.ll" +#line 609 "seclang-scanner.ll" { return p::make_ACTION_TRANSFORMATION_REPLACE_COMMENTS(yytext, *driver.loc.back()); } YY_BREAK case 102: YY_RULE_SETUP -#line 608 "seclang-scanner.ll" +#line 610 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_LOG_DATA(yytext, *driver.loc.back()); } YY_BREAK case 103: YY_RULE_SETUP -#line 610 "seclang-scanner.ll" +#line 612 "seclang-scanner.ll" { return p::make_CONFIG_VALUE_DETC(yytext, *driver.loc.back()); } YY_BREAK case 104: YY_RULE_SETUP -#line 611 "seclang-scanner.ll" +#line 613 "seclang-scanner.ll" { return p::make_CONFIG_VALUE_OFF(yytext, *driver.loc.back()); } YY_BREAK case 105: YY_RULE_SETUP -#line 612 "seclang-scanner.ll" +#line 614 "seclang-scanner.ll" { return p::make_CONFIG_VALUE_ON(yytext, *driver.loc.back()); } YY_BREAK case 106: /* rule 106 can match eol */ YY_RULE_SETUP -#line 613 "seclang-scanner.ll" +#line 615 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); } YY_BREAK case 107: /* rule 107 can match eol */ YY_RULE_SETUP -#line 614 "seclang-scanner.ll" +#line 616 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); } YY_BREAK case 108: YY_RULE_SETUP -#line 618 "seclang-scanner.ll" +#line 620 "seclang-scanner.ll" { return p::make_COMMA(*driver.loc.back()); } YY_BREAK @@ -6071,75 +6090,75 @@ YY_RULE_SETUP case 109: /* rule 109 can match eol */ YY_RULE_SETUP -#line 623 "seclang-scanner.ll" +#line 625 "seclang-scanner.ll" { BEGIN(INITIAL); yyless(yyleng); driver.loc.back()->lines(1); driver.loc.back()->step(); } YY_BREAK case 110: /* rule 110 can match eol */ YY_RULE_SETUP -#line 624 "seclang-scanner.ll" +#line 626 "seclang-scanner.ll" { BEGIN(INITIAL); yyless(yyleng); driver.loc.back()->lines(1); driver.loc.back()->step(); } YY_BREAK case 111: YY_RULE_SETUP -#line 629 "seclang-scanner.ll" +#line 631 "seclang-scanner.ll" { BEGIN(INITIAL); yyless(yyleng); } YY_BREAK case 112: /* rule 112 can match eol */ YY_RULE_SETUP -#line 630 "seclang-scanner.ll" +#line 632 "seclang-scanner.ll" { BEGIN(INITIAL); yyless(1); } YY_BREAK case 113: /* rule 113 can match eol */ YY_RULE_SETUP -#line 631 "seclang-scanner.ll" +#line 633 "seclang-scanner.ll" { BEGIN(INITIAL); driver.loc.back()->lines(1); driver.loc.back()->step(); } YY_BREAK case 114: YY_RULE_SETUP -#line 636 "seclang-scanner.ll" +#line 638 "seclang-scanner.ll" { BEGIN(INITIAL); yyless(yyleng); p::make_NEW_LINE(*driver.loc.back()); } YY_BREAK case 115: /* rule 115 can match eol */ YY_RULE_SETUP -#line 637 "seclang-scanner.ll" +#line 639 "seclang-scanner.ll" { BEGIN(INITIAL); yyless(1); } YY_BREAK case 116: /* rule 116 can match eol */ YY_RULE_SETUP -#line 638 "seclang-scanner.ll" +#line 640 "seclang-scanner.ll" { BEGIN(INITIAL); driver.loc.back()->lines(1); driver.loc.back()->step(); } YY_BREAK case 117: YY_RULE_SETUP -#line 643 "seclang-scanner.ll" +#line 645 "seclang-scanner.ll" { BEGIN(LEXING_ERROR_ACTION); yyless(0); } YY_BREAK case 118: YY_RULE_SETUP -#line 648 "seclang-scanner.ll" +#line 650 "seclang-scanner.ll" { BEGIN(ACTION_PREDICATE_ENDS_WITH_QUOTE); } YY_BREAK case 119: YY_RULE_SETUP -#line 649 "seclang-scanner.ll" +#line 651 "seclang-scanner.ll" { BEGIN(ACTION_PREDICATE_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 120: YY_RULE_SETUP -#line 650 "seclang-scanner.ll" +#line 652 "seclang-scanner.ll" { BEGIN(ACTION_PREDICATE_ENDS_WITH_COMMA_OR_DOUBLE_QUOTE); yyless(0); } YY_BREAK @@ -6147,116 +6166,116 @@ YY_RULE_SETUP case 121: /* rule 121 can match eol */ YY_RULE_SETUP -#line 655 "seclang-scanner.ll" +#line 657 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); } YY_BREAK case 122: /* rule 122 can match eol */ YY_RULE_SETUP -#line 656 "seclang-scanner.ll" +#line 658 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); } YY_BREAK case 123: YY_RULE_SETUP -#line 660 "seclang-scanner.ll" +#line 662 "seclang-scanner.ll" { yyless(1); BEGIN_PREVIOUS(); } YY_BREAK case 124: YY_RULE_SETUP -#line 661 "seclang-scanner.ll" +#line 663 "seclang-scanner.ll" { BEGIN_PREVIOUS(); } YY_BREAK case 125: YY_RULE_SETUP -#line 662 "seclang-scanner.ll" +#line 664 "seclang-scanner.ll" { BEGIN_PREVIOUS(); } YY_BREAK case 126: YY_RULE_SETUP -#line 666 "seclang-scanner.ll" +#line 668 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); yyless(yyleng); } YY_BREAK case 127: /* rule 127 can match eol */ YY_RULE_SETUP -#line 667 "seclang-scanner.ll" +#line 669 "seclang-scanner.ll" { return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } YY_BREAK case 128: YY_RULE_SETUP -#line 671 "seclang-scanner.ll" +#line 673 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); yyless(yyleng); } YY_BREAK case 129: /* rule 129 can match eol */ YY_RULE_SETUP -#line 672 "seclang-scanner.ll" +#line 674 "seclang-scanner.ll" { return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } YY_BREAK case 130: YY_RULE_SETUP -#line 676 "seclang-scanner.ll" +#line 678 "seclang-scanner.ll" { yyless(0); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 131: YY_RULE_SETUP -#line 677 "seclang-scanner.ll" +#line 679 "seclang-scanner.ll" { yyless(0); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE);} YY_BREAK case 132: /* rule 132 can match eol */ YY_RULE_SETUP -#line 678 "seclang-scanner.ll" +#line 680 "seclang-scanner.ll" { return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } YY_BREAK case 133: YY_RULE_SETUP -#line 682 "seclang-scanner.ll" +#line 684 "seclang-scanner.ll" { BEGINX(EXPECTING_ACTION_PREDICATE_VARIABLE); } YY_BREAK case 134: YY_RULE_SETUP -#line 683 "seclang-scanner.ll" +#line 685 "seclang-scanner.ll" { BEGIN(LEXING_ERROR_VARIABLE); yyless(0); } YY_BREAK case 135: YY_RULE_SETUP -#line 687 "seclang-scanner.ll" +#line 689 "seclang-scanner.ll" { return p::make_NOT(*driver.loc.back()); } YY_BREAK case 136: /* rule 136 can match eol */ YY_RULE_SETUP -#line 688 "seclang-scanner.ll" +#line 690 "seclang-scanner.ll" { BEGIN_ACTION_OPERATION(); yyless(0); } YY_BREAK case 137: YY_RULE_SETUP -#line 693 "seclang-scanner.ll" +#line 695 "seclang-scanner.ll" { BEGIN_ACTION_WAITING_CONTENT(); return p::make_SETVAR_OPERATION_EQUALS_PLUS(*driver.loc.back()); } YY_BREAK case 138: YY_RULE_SETUP -#line 694 "seclang-scanner.ll" +#line 696 "seclang-scanner.ll" { BEGIN_ACTION_WAITING_CONTENT(); return p::make_SETVAR_OPERATION_EQUALS_MINUS(*driver.loc.back()); } YY_BREAK case 139: YY_RULE_SETUP -#line 695 "seclang-scanner.ll" +#line 697 "seclang-scanner.ll" { BEGIN_ACTION_WAITING_CONTENT(); return p::make_SETVAR_OPERATION_EQUALS(*driver.loc.back()); } YY_BREAK @@ -6264,27 +6283,27 @@ YY_RULE_SETUP case 140: /* rule 140 can match eol */ YY_RULE_SETUP -#line 699 "seclang-scanner.ll" +#line 701 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); yyless(0);} YY_BREAK case 141: YY_RULE_SETUP -#line 703 "seclang-scanner.ll" +#line 705 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 142: /* rule 142 can match eol */ YY_RULE_SETUP -#line 704 "seclang-scanner.ll" +#line 706 "seclang-scanner.ll" { BEGIN(LEXING_ERROR_ACTION); yyless(0); } YY_BREAK case 143: YY_RULE_SETUP -#line 712 "seclang-scanner.ll" +#line 714 "seclang-scanner.ll" { BEGINX(EXPECTING_ACTION_PREDICATE_VARIABLE); } YY_BREAK @@ -6292,1507 +6311,1507 @@ YY_RULE_SETUP case 144: /* rule 144 can match eol */ YY_RULE_SETUP -#line 717 "seclang-scanner.ll" +#line 719 "seclang-scanner.ll" { return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } YY_BREAK case 145: /* rule 145 can match eol */ YY_RULE_SETUP -#line 718 "seclang-scanner.ll" +#line 720 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); yyless(0); } YY_BREAK case 146: YY_RULE_SETUP -#line 723 "seclang-scanner.ll" +#line 725 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 147: /* rule 147 can match eol */ YY_RULE_SETUP -#line 724 "seclang-scanner.ll" +#line 726 "seclang-scanner.ll" { return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } YY_BREAK case 148: /* rule 148 can match eol */ YY_RULE_SETUP -#line 725 "seclang-scanner.ll" +#line 727 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); yyless(0); } YY_BREAK case YY_STATE_EOF(FINISH_ACTIONS): -#line 733 "seclang-scanner.ll" +#line 735 "seclang-scanner.ll" { BEGIN(INITIAL); yyless(0); p::make_NEW_LINE(*driver.loc.back()); } YY_BREAK case 149: YY_RULE_SETUP -#line 734 "seclang-scanner.ll" +#line 736 "seclang-scanner.ll" { BEGIN(INITIAL); } YY_BREAK case 150: /* rule 150 can match eol */ YY_RULE_SETUP -#line 737 "seclang-scanner.ll" +#line 739 "seclang-scanner.ll" { return p::make_CONFIG_COMPONENT_SIG(strchr(yytext, ' ') + 2, *driver.loc.back()); } YY_BREAK case 151: /* rule 151 can match eol */ YY_RULE_SETUP -#line 738 "seclang-scanner.ll" +#line 740 "seclang-scanner.ll" { return p::make_CONFIG_SEC_SERVER_SIG(strchr(yytext, ' ') + 2, *driver.loc.back()); } YY_BREAK case 152: /* rule 152 can match eol */ YY_RULE_SETUP -#line 739 "seclang-scanner.ll" +#line 741 "seclang-scanner.ll" { return p::make_CONFIG_SEC_WEB_APP_ID(parserSanitizer(strchr(yytext, ' ') + 2), *driver.loc.back()); } YY_BREAK case 153: YY_RULE_SETUP -#line 740 "seclang-scanner.ll" +#line 742 "seclang-scanner.ll" { return p::make_CONFIG_SEC_WEB_APP_ID(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 154: YY_RULE_SETUP -#line 741 "seclang-scanner.ll" +#line 743 "seclang-scanner.ll" { return p::make_CONFIG_CONTENT_INJECTION(*driver.loc.back()); } YY_BREAK case 155: YY_RULE_SETUP -#line 742 "seclang-scanner.ll" +#line 744 "seclang-scanner.ll" { return p::make_CONFIG_DIR_AUDIT_DIR_MOD(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 156: YY_RULE_SETUP -#line 743 "seclang-scanner.ll" +#line 745 "seclang-scanner.ll" { return p::make_CONFIG_DIR_AUDIT_DIR_MOD(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 157: YY_RULE_SETUP -#line 744 "seclang-scanner.ll" +#line 746 "seclang-scanner.ll" { return p::make_CONFIG_DIR_AUDIT_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 158: YY_RULE_SETUP -#line 745 "seclang-scanner.ll" +#line 747 "seclang-scanner.ll" { return p::make_CONFIG_DIR_AUDIT_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 159: YY_RULE_SETUP -#line 746 "seclang-scanner.ll" +#line 748 "seclang-scanner.ll" { return p::make_CONFIG_SEC_ARGUMENT_SEPARATOR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 160: YY_RULE_SETUP -#line 747 "seclang-scanner.ll" +#line 749 "seclang-scanner.ll" { return p::make_CONFIG_SEC_ARGUMENT_SEPARATOR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 161: YY_RULE_SETUP -#line 748 "seclang-scanner.ll" +#line 750 "seclang-scanner.ll" { return p::make_CONFIG_DIR_AUDIT_ENG(yytext, *driver.loc.back()); } YY_BREAK case 162: YY_RULE_SETUP -#line 749 "seclang-scanner.ll" +#line 751 "seclang-scanner.ll" { return p::make_CONFIG_DIR_AUDIT_FLE_MOD(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 163: YY_RULE_SETUP -#line 750 "seclang-scanner.ll" +#line 752 "seclang-scanner.ll" { return p::make_CONFIG_DIR_AUDIT_LOG2(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 164: YY_RULE_SETUP -#line 751 "seclang-scanner.ll" +#line 753 "seclang-scanner.ll" { return p::make_CONFIG_DIR_AUDIT_LOG_P(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 165: YY_RULE_SETUP -#line 752 "seclang-scanner.ll" +#line 754 "seclang-scanner.ll" { return p::make_CONFIG_DIR_AUDIT_LOG_P(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 166: YY_RULE_SETUP -#line 753 "seclang-scanner.ll" +#line 755 "seclang-scanner.ll" { return p::make_CONFIG_DIR_AUDIT_LOG(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 167: YY_RULE_SETUP -#line 754 "seclang-scanner.ll" +#line 756 "seclang-scanner.ll" { return p::make_CONFIG_DIR_AUDIT_LOG_FMT(*driver.loc.back()); } YY_BREAK case 168: YY_RULE_SETUP -#line 755 "seclang-scanner.ll" +#line 757 "seclang-scanner.ll" { return p::make_JSON(*driver.loc.back()); } YY_BREAK case 169: YY_RULE_SETUP -#line 756 "seclang-scanner.ll" +#line 758 "seclang-scanner.ll" { return p::make_NATIVE(*driver.loc.back()); } YY_BREAK case 170: YY_RULE_SETUP -#line 757 "seclang-scanner.ll" +#line 759 "seclang-scanner.ll" { return p::make_CONFIG_DIR_AUDIT_LOG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 171: YY_RULE_SETUP -#line 758 "seclang-scanner.ll" +#line 760 "seclang-scanner.ll" { return p::make_CONFIG_DIR_AUDIT_STS(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 172: YY_RULE_SETUP -#line 759 "seclang-scanner.ll" +#line 761 "seclang-scanner.ll" { return p::make_CONFIG_DIR_AUDIT_STS(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 173: YY_RULE_SETUP -#line 760 "seclang-scanner.ll" +#line 762 "seclang-scanner.ll" { return p::make_CONFIG_DIR_AUDIT_TPE(yytext, *driver.loc.back()); } YY_BREAK case 174: YY_RULE_SETUP -#line 761 "seclang-scanner.ll" +#line 763 "seclang-scanner.ll" { return p::make_CONFIG_DIR_DEBUG_LOG(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 175: YY_RULE_SETUP -#line 762 "seclang-scanner.ll" +#line 764 "seclang-scanner.ll" { return p::make_CONFIG_DIR_DEBUG_LOG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 176: YY_RULE_SETUP -#line 763 "seclang-scanner.ll" +#line 765 "seclang-scanner.ll" { return p::make_CONFIG_DIR_DEBUG_LVL(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 177: YY_RULE_SETUP -#line 764 "seclang-scanner.ll" +#line 766 "seclang-scanner.ll" { return p::make_CONFIG_DIR_GEO_DB(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 178: YY_RULE_SETUP -#line 765 "seclang-scanner.ll" +#line 767 "seclang-scanner.ll" { return p::make_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 179: YY_RULE_SETUP -#line 766 "seclang-scanner.ll" +#line 768 "seclang-scanner.ll" { return p::make_CONFIG_DIR_PCRE_MATCH_LIMIT(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 180: YY_RULE_SETUP -#line 767 "seclang-scanner.ll" +#line 769 "seclang-scanner.ll" { return p::make_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 181: YY_RULE_SETUP -#line 768 "seclang-scanner.ll" +#line 770 "seclang-scanner.ll" { return p::make_CONFIG_DIR_REQ_BODY_LIMIT_ACTION(yytext, *driver.loc.back()); } YY_BREAK case 182: YY_RULE_SETUP -#line 769 "seclang-scanner.ll" +#line 771 "seclang-scanner.ll" { return p::make_CONFIG_DIR_REQ_BODY_LIMIT(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 183: YY_RULE_SETUP -#line 770 "seclang-scanner.ll" +#line 772 "seclang-scanner.ll" { return p::make_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 184: YY_RULE_SETUP -#line 771 "seclang-scanner.ll" +#line 773 "seclang-scanner.ll" { return p::make_CONFIG_DIR_REQ_BODY(yytext, *driver.loc.back()); } YY_BREAK case 185: YY_RULE_SETUP -#line 772 "seclang-scanner.ll" +#line 774 "seclang-scanner.ll" { return p::make_CONFIG_DIR_RES_BODY_LIMIT_ACTION(yytext, *driver.loc.back()); } YY_BREAK case 186: YY_RULE_SETUP -#line 773 "seclang-scanner.ll" +#line 775 "seclang-scanner.ll" { return p::make_CONFIG_DIR_RES_BODY_LIMIT(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 187: YY_RULE_SETUP -#line 774 "seclang-scanner.ll" +#line 776 "seclang-scanner.ll" { return p::make_CONFIG_DIR_RES_BODY(yytext, *driver.loc.back()); } YY_BREAK case 188: YY_RULE_SETUP -#line 775 "seclang-scanner.ll" +#line 777 "seclang-scanner.ll" { return p::make_CONFIG_DIR_RULE_ENG(yytext, *driver.loc.back()); } YY_BREAK case 189: YY_RULE_SETUP -#line 776 "seclang-scanner.ll" +#line 778 "seclang-scanner.ll" { return p::make_CONFIG_DIR_SEC_MARKER(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 190: YY_RULE_SETUP -#line 777 "seclang-scanner.ll" +#line 779 "seclang-scanner.ll" { return p::make_CONFIG_DIR_SEC_MARKER(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 191: YY_RULE_SETUP -#line 778 "seclang-scanner.ll" +#line 780 "seclang-scanner.ll" { return p::make_CONFIG_DIR_UNICODE_MAP_FILE(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 192: YY_RULE_SETUP -#line 779 "seclang-scanner.ll" +#line 781 "seclang-scanner.ll" { return p::make_CONFIG_SEC_RULE_REMOVE_BY_ID(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 193: YY_RULE_SETUP -#line 780 "seclang-scanner.ll" +#line 782 "seclang-scanner.ll" { return p::make_CONFIG_SEC_RULE_REMOVE_BY_MSG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 194: YY_RULE_SETUP -#line 781 "seclang-scanner.ll" +#line 783 "seclang-scanner.ll" { return p::make_CONFIG_SEC_RULE_REMOVE_BY_MSG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 195: YY_RULE_SETUP -#line 782 "seclang-scanner.ll" +#line 784 "seclang-scanner.ll" { return p::make_CONFIG_SEC_RULE_REMOVE_BY_TAG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 196: YY_RULE_SETUP -#line 783 "seclang-scanner.ll" +#line 785 "seclang-scanner.ll" { return p::make_CONFIG_SEC_RULE_REMOVE_BY_TAG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 197: YY_RULE_SETUP -#line 784 "seclang-scanner.ll" +#line 786 "seclang-scanner.ll" { state_variable_from = 1; BEGIN(TRANSACTION_TO_VARIABLE); return p::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 198: YY_RULE_SETUP -#line 785 "seclang-scanner.ll" +#line 787 "seclang-scanner.ll" { state_variable_from = 1; BEGIN(TRANSACTION_TO_VARIABLE); return p::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 199: YY_RULE_SETUP -#line 786 "seclang-scanner.ll" +#line 788 "seclang-scanner.ll" { state_variable_from = 1; BEGIN(TRANSACTION_TO_VARIABLE); return p::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 200: YY_RULE_SETUP -#line 787 "seclang-scanner.ll" +#line 789 "seclang-scanner.ll" { state_variable_from = 1; BEGIN(TRANSACTION_TO_VARIABLE); return p::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 201: YY_RULE_SETUP -#line 788 "seclang-scanner.ll" +#line 790 "seclang-scanner.ll" { state_variable_from = 1; BEGIN(TRANSACTION_TO_VARIABLE); return p::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 202: YY_RULE_SETUP -#line 789 "seclang-scanner.ll" +#line 791 "seclang-scanner.ll" { state_variable_from = 1; BEGIN(TRANSACTION_TO_VARIABLE); return p::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 203: YY_RULE_SETUP -#line 790 "seclang-scanner.ll" +#line 792 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 204: YY_RULE_SETUP -#line 791 "seclang-scanner.ll" +#line 793 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 205: YY_RULE_SETUP -#line 792 "seclang-scanner.ll" +#line 794 "seclang-scanner.ll" { return p::make_CONFIG_UPDLOAD_KEEP_FILES(yytext, *driver.loc.back()); } YY_BREAK case 206: YY_RULE_SETUP -#line 793 "seclang-scanner.ll" +#line 795 "seclang-scanner.ll" { return p::make_CONFIG_UPDLOAD_SAVE_TMP_FILES(yytext, *driver.loc.back()); } YY_BREAK case 207: YY_RULE_SETUP -#line 794 "seclang-scanner.ll" +#line 796 "seclang-scanner.ll" { return p::make_CONFIG_UPLOAD_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 208: YY_RULE_SETUP -#line 795 "seclang-scanner.ll" +#line 797 "seclang-scanner.ll" { return p::make_CONFIG_UPLOAD_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 209: YY_RULE_SETUP -#line 796 "seclang-scanner.ll" +#line 798 "seclang-scanner.ll" { return p::make_CONFIG_UPLOAD_FILE_LIMIT(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 210: YY_RULE_SETUP -#line 797 "seclang-scanner.ll" +#line 799 "seclang-scanner.ll" { return p::make_CONFIG_UPLOAD_FILE_MODE(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 211: YY_RULE_SETUP -#line 798 "seclang-scanner.ll" +#line 800 "seclang-scanner.ll" { return p::make_CONFIG_VALUE_ABORT(yytext, *driver.loc.back()); } YY_BREAK case 212: YY_RULE_SETUP -#line 799 "seclang-scanner.ll" +#line 801 "seclang-scanner.ll" { return p::make_CONFIG_VALUE_DETC(yytext, *driver.loc.back()); } YY_BREAK case 213: YY_RULE_SETUP -#line 800 "seclang-scanner.ll" +#line 802 "seclang-scanner.ll" { return p::make_CONFIG_VALUE_HTTPS(yytext, *driver.loc.back()); } YY_BREAK case 214: YY_RULE_SETUP -#line 801 "seclang-scanner.ll" +#line 803 "seclang-scanner.ll" { return p::make_CONFIG_VALUE_OFF(yytext, *driver.loc.back()); } YY_BREAK case 215: YY_RULE_SETUP -#line 802 "seclang-scanner.ll" +#line 804 "seclang-scanner.ll" { return p::make_CONFIG_VALUE_ON(yytext, *driver.loc.back()); } YY_BREAK case 216: YY_RULE_SETUP -#line 803 "seclang-scanner.ll" +#line 805 "seclang-scanner.ll" { return p::make_CONFIG_VALUE_PARALLEL(yytext, *driver.loc.back()); } YY_BREAK case 217: YY_RULE_SETUP -#line 804 "seclang-scanner.ll" +#line 806 "seclang-scanner.ll" { return p::make_CONFIG_VALUE_PROCESS_PARTIAL(yytext, *driver.loc.back()); } YY_BREAK case 218: YY_RULE_SETUP -#line 805 "seclang-scanner.ll" +#line 807 "seclang-scanner.ll" { return p::make_CONFIG_VALUE_REJECT(yytext, *driver.loc.back()); } YY_BREAK case 219: YY_RULE_SETUP -#line 806 "seclang-scanner.ll" +#line 808 "seclang-scanner.ll" { return p::make_CONFIG_VALUE_RELEVANT_ONLY(yytext, *driver.loc.back()); } YY_BREAK case 220: YY_RULE_SETUP -#line 807 "seclang-scanner.ll" +#line 809 "seclang-scanner.ll" { return p::make_CONFIG_VALUE_SERIAL(yytext, *driver.loc.back()); } YY_BREAK case 221: YY_RULE_SETUP -#line 808 "seclang-scanner.ll" +#line 810 "seclang-scanner.ll" { return p::make_CONFIG_VALUE_WARN(yytext, *driver.loc.back()); } YY_BREAK case 222: YY_RULE_SETUP -#line 809 "seclang-scanner.ll" +#line 811 "seclang-scanner.ll" { return p::make_CONFIG_XML_EXTERNAL_ENTITY(yytext, *driver.loc.back()); } YY_BREAK case 223: YY_RULE_SETUP -#line 810 "seclang-scanner.ll" +#line 812 "seclang-scanner.ll" { return p::make_CONGIG_DIR_RESPONSE_BODY_MP(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 224: YY_RULE_SETUP -#line 811 "seclang-scanner.ll" +#line 813 "seclang-scanner.ll" { return p::make_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR(*driver.loc.back()); } YY_BREAK case 225: YY_RULE_SETUP -#line 812 "seclang-scanner.ll" +#line 814 "seclang-scanner.ll" { return p::make_CONGIG_DIR_SEC_ARG_SEP(yytext, *driver.loc.back()); } YY_BREAK case 226: YY_RULE_SETUP -#line 813 "seclang-scanner.ll" +#line 815 "seclang-scanner.ll" { return p::make_CONGIG_DIR_SEC_COOKIE_FORMAT(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 227: YY_RULE_SETUP -#line 814 "seclang-scanner.ll" +#line 816 "seclang-scanner.ll" { return p::make_CONFIG_SEC_COOKIEV0_SEPARATOR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 228: YY_RULE_SETUP -#line 815 "seclang-scanner.ll" +#line 817 "seclang-scanner.ll" { return p::make_CONFIG_SEC_COOKIEV0_SEPARATOR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 229: YY_RULE_SETUP -#line 816 "seclang-scanner.ll" +#line 818 "seclang-scanner.ll" { return p::make_CONGIG_DIR_SEC_DATA_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 230: YY_RULE_SETUP -#line 817 "seclang-scanner.ll" +#line 819 "seclang-scanner.ll" { return p::make_CONGIG_DIR_SEC_DATA_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 231: YY_RULE_SETUP -#line 818 "seclang-scanner.ll" +#line 820 "seclang-scanner.ll" { return p::make_CONGIG_DIR_SEC_STATUS_ENGINE(yytext, *driver.loc.back()); } YY_BREAK case 232: YY_RULE_SETUP -#line 819 "seclang-scanner.ll" +#line 821 "seclang-scanner.ll" { return p::make_CONGIG_DIR_SEC_TMP_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 233: YY_RULE_SETUP -#line 820 "seclang-scanner.ll" +#line 822 "seclang-scanner.ll" { return p::make_CONGIG_DIR_SEC_TMP_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 234: YY_RULE_SETUP -#line 821 "seclang-scanner.ll" +#line 823 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_DIRECTIVE_TO_ACTIONS); return p::make_DIRECTIVE_SECRULESCRIPT(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 235: YY_RULE_SETUP -#line 822 "seclang-scanner.ll" +#line 824 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_DIRECTIVE_TO_ACTIONS); return p::make_DIRECTIVE_SECRULESCRIPT(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 236: YY_RULE_SETUP -#line 823 "seclang-scanner.ll" +#line 825 "seclang-scanner.ll" { return p::make_CONFIG_SEC_CACHE_TRANSFORMATIONS(yytext, *driver.loc.back()); } YY_BREAK case 237: YY_RULE_SETUP -#line 824 "seclang-scanner.ll" +#line 826 "seclang-scanner.ll" { return p::make_CONFIG_SEC_CHROOT_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 238: YY_RULE_SETUP -#line 825 "seclang-scanner.ll" +#line 827 "seclang-scanner.ll" { return p::make_CONFIG_SEC_CHROOT_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 239: YY_RULE_SETUP -#line 826 "seclang-scanner.ll" +#line 828 "seclang-scanner.ll" { return p::make_CONFIG_CONN_ENGINE(yytext, *driver.loc.back()); } YY_BREAK case 240: YY_RULE_SETUP -#line 827 "seclang-scanner.ll" +#line 829 "seclang-scanner.ll" { return p::make_CONFIG_SEC_HASH_ENGINE(yytext, *driver.loc.back()); } YY_BREAK case 241: YY_RULE_SETUP -#line 828 "seclang-scanner.ll" +#line 830 "seclang-scanner.ll" { return p::make_CONFIG_SEC_HASH_KEY(yytext, *driver.loc.back()); } YY_BREAK case 242: YY_RULE_SETUP -#line 829 "seclang-scanner.ll" +#line 831 "seclang-scanner.ll" { return p::make_CONFIG_SEC_HASH_PARAM(yytext, *driver.loc.back()); } YY_BREAK case 243: YY_RULE_SETUP -#line 830 "seclang-scanner.ll" +#line 832 "seclang-scanner.ll" { return p::make_CONFIG_SEC_HASH_METHOD_RX(yytext, *driver.loc.back()); } YY_BREAK case 244: YY_RULE_SETUP -#line 831 "seclang-scanner.ll" +#line 833 "seclang-scanner.ll" { return p::make_CONFIG_SEC_HASH_METHOD_PM(yytext, *driver.loc.back()); } YY_BREAK case 245: YY_RULE_SETUP -#line 832 "seclang-scanner.ll" +#line 834 "seclang-scanner.ll" { return p::make_CONFIG_DIR_GSB_DB(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 246: YY_RULE_SETUP -#line 833 "seclang-scanner.ll" +#line 835 "seclang-scanner.ll" { return p::make_CONFIG_DIR_GSB_DB(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } YY_BREAK case 247: YY_RULE_SETUP -#line 834 "seclang-scanner.ll" +#line 836 "seclang-scanner.ll" { return p::make_CONFIG_SEC_GUARDIAN_LOG(yytext, *driver.loc.back()); } YY_BREAK case 248: YY_RULE_SETUP -#line 835 "seclang-scanner.ll" +#line 837 "seclang-scanner.ll" { return p::make_CONFIG_SEC_INTERCEPT_ON_ERROR(yytext, *driver.loc.back()); } YY_BREAK case 249: YY_RULE_SETUP -#line 836 "seclang-scanner.ll" +#line 838 "seclang-scanner.ll" { return p::make_CONFIG_SEC_CONN_R_STATE_LIMIT(yytext, *driver.loc.back()); } YY_BREAK case 250: YY_RULE_SETUP -#line 837 "seclang-scanner.ll" +#line 839 "seclang-scanner.ll" { return p::make_CONFIG_SEC_CONN_W_STATE_LIMIT(yytext, *driver.loc.back()); } YY_BREAK case 251: YY_RULE_SETUP -#line 838 "seclang-scanner.ll" +#line 840 "seclang-scanner.ll" { return p::make_CONFIG_SEC_SENSOR_ID(yytext, *driver.loc.back()); } YY_BREAK case 252: YY_RULE_SETUP -#line 839 "seclang-scanner.ll" +#line 841 "seclang-scanner.ll" { return p::make_CONFIG_SEC_RULE_INHERITANCE(yytext, *driver.loc.back()); } YY_BREAK case 253: YY_RULE_SETUP -#line 840 "seclang-scanner.ll" +#line 842 "seclang-scanner.ll" { return p::make_CONFIG_SEC_RULE_PERF_TIME(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 254: YY_RULE_SETUP -#line 841 "seclang-scanner.ll" +#line 843 "seclang-scanner.ll" { return p::make_CONFIG_SEC_STREAM_IN_BODY_INSPECTION(yytext, *driver.loc.back()); } YY_BREAK case 255: YY_RULE_SETUP -#line 842 "seclang-scanner.ll" +#line 844 "seclang-scanner.ll" { return p::make_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION(yytext, *driver.loc.back()); } YY_BREAK case 256: YY_RULE_SETUP -#line 843 "seclang-scanner.ll" +#line 845 "seclang-scanner.ll" { return p::make_CONFIG_SEC_DISABLE_BACKEND_COMPRESS(yytext, *driver.loc.back()); } YY_BREAK case 257: YY_RULE_SETUP -#line 845 "seclang-scanner.ll" +#line 847 "seclang-scanner.ll" { BEGIN(TRANSACTION_TO_VARIABLE); return p::make_DIRECTIVE(yytext, *driver.loc.back()); } YY_BREAK case 258: YY_RULE_SETUP -#line 846 "seclang-scanner.ll" +#line 848 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_DIRECTIVE_TO_ACTIONS); return p::make_CONFIG_DIR_SEC_DEFAULT_ACTION(yytext, *driver.loc.back()); } YY_BREAK case 259: YY_RULE_SETUP -#line 847 "seclang-scanner.ll" +#line 849 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_DIRECTIVE_TO_ACTIONS); return p::make_CONFIG_DIR_SEC_ACTION(yytext, *driver.loc.back()); } YY_BREAK case 260: YY_RULE_SETUP -#line 849 "seclang-scanner.ll" +#line 851 "seclang-scanner.ll" { return p::make_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION(yytext, *driver.loc.back()); } YY_BREAK case 261: YY_RULE_SETUP -#line 850 "seclang-scanner.ll" +#line 852 "seclang-scanner.ll" { return p::make_CONFIG_SEC_COLLECTION_TIMEOUT(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 262: YY_RULE_SETUP -#line 851 "seclang-scanner.ll" +#line 853 "seclang-scanner.ll" { return p::make_CONFIG_SEC_HTTP_BLKEY(strchr(yytext, ' ') + 1, *driver.loc.back()); } YY_BREAK case 263: /* rule 263 can match eol */ YY_RULE_SETUP -#line 852 "seclang-scanner.ll" +#line 854 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); } YY_BREAK case 264: /* rule 264 can match eol */ YY_RULE_SETUP -#line 853 "seclang-scanner.ll" +#line 855 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(COMMENT); } YY_BREAK case 265: /* rule 265 can match eol */ YY_RULE_SETUP -#line 854 "seclang-scanner.ll" +#line 856 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(COMMENT); } YY_BREAK case 266: YY_RULE_SETUP -#line 855 "seclang-scanner.ll" +#line 857 "seclang-scanner.ll" { driver.loc.back()->step(); /* comment, just ignore. */ } YY_BREAK case 267: YY_RULE_SETUP -#line 856 "seclang-scanner.ll" +#line 858 "seclang-scanner.ll" { driver.loc.back()->step(); /* carriage return, just ignore. */} YY_BREAK case 268: YY_RULE_SETUP -#line 857 "seclang-scanner.ll" +#line 859 "seclang-scanner.ll" { return p::make_QUOTATION_MARK(yytext, *driver.loc.back()); } YY_BREAK case 269: YY_RULE_SETUP -#line 858 "seclang-scanner.ll" +#line 860 "seclang-scanner.ll" { return p::make_COMMA(*driver.loc.back()); } YY_BREAK case 270: YY_RULE_SETUP -#line 861 "seclang-scanner.ll" +#line 863 "seclang-scanner.ll" { BEGIN(EXPECTING_VARIABLE); } YY_BREAK case 271: YY_RULE_SETUP -#line 865 "seclang-scanner.ll" +#line 867 "seclang-scanner.ll" { return p::make_PIPE(*driver.loc.back()); } YY_BREAK case 272: YY_RULE_SETUP -#line 866 "seclang-scanner.ll" +#line 868 "seclang-scanner.ll" { return p::make_PIPE(*driver.loc.back()); } YY_BREAK case 273: YY_RULE_SETUP -#line 867 "seclang-scanner.ll" +#line 869 "seclang-scanner.ll" { return p::make_QUOTATION_MARK(yytext, *driver.loc.back()); } YY_BREAK case 274: YY_RULE_SETUP -#line 868 "seclang-scanner.ll" +#line 870 "seclang-scanner.ll" { return p::make_VAR_EXCLUSION(*driver.loc.back()); } YY_BREAK case 275: YY_RULE_SETUP -#line 869 "seclang-scanner.ll" +#line 871 "seclang-scanner.ll" { return p::make_VAR_COUNT(*driver.loc.back()); } YY_BREAK case 276: YY_RULE_SETUP -#line 873 "seclang-scanner.ll" +#line 875 "seclang-scanner.ll" { if (state_variable_from == 0) { BEGIN(EXPECTING_OPERATOR_ENDS_WITH_SPACE); } else { state_variable_from = 0; BEGIN(INITIAL);} } YY_BREAK case 277: YY_RULE_SETUP -#line 874 "seclang-scanner.ll" +#line 876 "seclang-scanner.ll" { if (state_variable_from == 0) { BEGIN(EXPECTING_OPERATOR_ENDS_WITH_QUOTE); } else { state_variable_from = 0; BEGIN(INITIAL);} } YY_BREAK case 278: /* rule 278 can match eol */ YY_RULE_SETUP -#line 875 "seclang-scanner.ll" +#line 877 "seclang-scanner.ll" { if (state_variable_from == 0) { BEGIN(EXPECTING_OPERATOR_ENDS_WITH_SPACE); } else { state_variable_from = 0; BEGIN(INITIAL);} } YY_BREAK case 279: /* rule 279 can match eol */ YY_RULE_SETUP -#line 876 "seclang-scanner.ll" +#line 878 "seclang-scanner.ll" { if (state_variable_from == 0) { BEGIN(EXPECTING_OPERATOR_ENDS_WITH_QUOTE); } else { state_variable_from = 0; BEGIN(INITIAL);} } YY_BREAK case 280: /* rule 280 can match eol */ YY_RULE_SETUP -#line 877 "seclang-scanner.ll" +#line 879 "seclang-scanner.ll" { if (state_variable_from == 0) { BEGIN(EXPECTING_OPERATOR_ENDS_WITH_SPACE); } else { state_variable_from = 0; BEGIN(INITIAL);} } YY_BREAK case 281: /* rule 281 can match eol */ YY_RULE_SETUP -#line 878 "seclang-scanner.ll" +#line 880 "seclang-scanner.ll" { if (state_variable_from == 0) { BEGIN(EXPECTING_OPERATOR_ENDS_WITH_QUOTE); } else { state_variable_from = 0; BEGIN(INITIAL);} } YY_BREAK case 282: YY_RULE_SETUP -#line 882 "seclang-scanner.ll" +#line 884 "seclang-scanner.ll" { } YY_BREAK case 283: YY_RULE_SETUP -#line 883 "seclang-scanner.ll" +#line 885 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 284: /* rule 284 can match eol */ YY_RULE_SETUP -#line 884 "seclang-scanner.ll" +#line 886 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 285: /* rule 285 can match eol */ YY_RULE_SETUP -#line 885 "seclang-scanner.ll" +#line 887 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 286: YY_RULE_SETUP -#line 890 "seclang-scanner.ll" +#line 892 "seclang-scanner.ll" { BEGIN(LEXING_ERROR_VARIABLE); yyless(0); } YY_BREAK case 287: YY_RULE_SETUP -#line 891 "seclang-scanner.ll" +#line 893 "seclang-scanner.ll" { return p::make_VARIABLE_ARGS_COMBINED_SIZE(*driver.loc.back()); } YY_BREAK case 288: YY_RULE_SETUP -#line 892 "seclang-scanner.ll" +#line 894 "seclang-scanner.ll" { return p::make_VARIABLE_ARGS_GET_NAMES(*driver.loc.back()); } YY_BREAK case 289: YY_RULE_SETUP -#line 893 "seclang-scanner.ll" +#line 895 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_ARGS_GET_NAMES(*driver.loc.back()); } YY_BREAK case 290: YY_RULE_SETUP -#line 894 "seclang-scanner.ll" +#line 896 "seclang-scanner.ll" { return p::make_VARIABLE_ARGS_NAMES(*driver.loc.back()); } YY_BREAK case 291: YY_RULE_SETUP -#line 895 "seclang-scanner.ll" +#line 897 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_ARGS_NAMES(*driver.loc.back()); } YY_BREAK case 292: YY_RULE_SETUP -#line 896 "seclang-scanner.ll" +#line 898 "seclang-scanner.ll" { return p::make_VARIABLE_ARGS_POST_NAMES(*driver.loc.back()); } YY_BREAK case 293: YY_RULE_SETUP -#line 897 "seclang-scanner.ll" +#line 899 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_ARGS_POST_NAMES(*driver.loc.back()); } YY_BREAK case 294: YY_RULE_SETUP -#line 898 "seclang-scanner.ll" +#line 900 "seclang-scanner.ll" { return p::make_VARIABLE_AUTH_TYPE(*driver.loc.back()); } YY_BREAK case 295: YY_RULE_SETUP -#line 899 "seclang-scanner.ll" +#line 901 "seclang-scanner.ll" { return p::make_VARIABLE_FILES_COMBINED_SIZE(*driver.loc.back()); } YY_BREAK case 296: YY_RULE_SETUP -#line 900 "seclang-scanner.ll" +#line 902 "seclang-scanner.ll" { return p::make_VARIABLE_FULL_REQUEST_LENGTH(*driver.loc.back()); } YY_BREAK case 297: YY_RULE_SETUP -#line 901 "seclang-scanner.ll" +#line 903 "seclang-scanner.ll" { return p::make_VARIABLE_FULL_REQUEST(*driver.loc.back()); } YY_BREAK case 298: YY_RULE_SETUP -#line 902 "seclang-scanner.ll" +#line 904 "seclang-scanner.ll" { return p::make_VARIABLE_INBOUND_DATA_ERROR(*driver.loc.back()); } YY_BREAK case 299: YY_RULE_SETUP -#line 903 "seclang-scanner.ll" +#line 905 "seclang-scanner.ll" { return p::make_VARIABLE_MATCHED_VAR_NAME(*driver.loc.back()); } YY_BREAK case 300: YY_RULE_SETUP -#line 904 "seclang-scanner.ll" +#line 906 "seclang-scanner.ll" { return p::make_VARIABLE_MATCHED_VAR(*driver.loc.back()); } YY_BREAK case 301: YY_RULE_SETUP -#line 905 "seclang-scanner.ll" +#line 907 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_BOUNDARY_QUOTED(*driver.loc.back()); } YY_BREAK case 302: YY_RULE_SETUP -#line 906 "seclang-scanner.ll" +#line 908 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE(*driver.loc.back()); } YY_BREAK case 303: YY_RULE_SETUP -#line 907 "seclang-scanner.ll" +#line 909 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_CRLF_LF_LINES(*driver.loc.back()); } YY_BREAK case 304: YY_RULE_SETUP -#line 908 "seclang-scanner.ll" +#line 910 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_DATA_AFTER(*driver.loc.back()); } YY_BREAK case 305: YY_RULE_SETUP -#line 909 "seclang-scanner.ll" +#line 911 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_DATA_BEFORE(*driver.loc.back()); } YY_BREAK case 306: YY_RULE_SETUP -#line 910 "seclang-scanner.ll" +#line 912 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED(*driver.loc.back()); } YY_BREAK case 307: YY_RULE_SETUP -#line 911 "seclang-scanner.ll" +#line 913 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_MULTIPART_FILENAME(*driver.loc.back()); } YY_BREAK case 308: YY_RULE_SETUP -#line 912 "seclang-scanner.ll" +#line 914 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_FILENAME(*driver.loc.back()); } YY_BREAK case 309: YY_RULE_SETUP -#line 913 "seclang-scanner.ll" +#line 915 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_HEADER_FOLDING(*driver.loc.back()); } YY_BREAK case 310: YY_RULE_SETUP -#line 914 "seclang-scanner.ll" +#line 916 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_HEADER_FOLDING(*driver.loc.back()); } YY_BREAK case 311: YY_RULE_SETUP -#line 915 "seclang-scanner.ll" +#line 917 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING(*driver.loc.back()); } YY_BREAK case 312: YY_RULE_SETUP -#line 916 "seclang-scanner.ll" +#line 918 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_INVALID_PART(*driver.loc.back()); } YY_BREAK case 313: YY_RULE_SETUP -#line 917 "seclang-scanner.ll" +#line 919 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_INVALID_QUOTING(*driver.loc.back()); } YY_BREAK case 314: YY_RULE_SETUP -#line 918 "seclang-scanner.ll" +#line 920 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_LF_LINE(*driver.loc.back()); } YY_BREAK case 315: YY_RULE_SETUP -#line 919 "seclang-scanner.ll" +#line 921 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_MISSING_SEMICOLON(*driver.loc.back()); } YY_BREAK case 316: YY_RULE_SETUP -#line 920 "seclang-scanner.ll" +#line 922 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_SEMICOLON_MISSING(*driver.loc.back()); } YY_BREAK case 317: YY_RULE_SETUP -#line 921 "seclang-scanner.ll" +#line 923 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_MULTIPART_NAME(*driver.loc.back()); } YY_BREAK case 318: YY_RULE_SETUP -#line 922 "seclang-scanner.ll" +#line 924 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_NAME(*driver.loc.back()); } YY_BREAK case 319: YY_RULE_SETUP -#line 923 "seclang-scanner.ll" +#line 925 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_STRICT_ERROR(*driver.loc.back()); } YY_BREAK case 320: YY_RULE_SETUP -#line 924 "seclang-scanner.ll" +#line 926 "seclang-scanner.ll" { return p::make_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY(*driver.loc.back()); } YY_BREAK case 321: YY_RULE_SETUP -#line 925 "seclang-scanner.ll" +#line 927 "seclang-scanner.ll" { return p::make_VARIABLE_OUTBOUND_DATA_ERROR(*driver.loc.back()); } YY_BREAK case 322: YY_RULE_SETUP -#line 926 "seclang-scanner.ll" +#line 928 "seclang-scanner.ll" { return p::make_VARIABLE_PATH_INFO(*driver.loc.back()); } YY_BREAK case 323: YY_RULE_SETUP -#line 927 "seclang-scanner.ll" +#line 929 "seclang-scanner.ll" { return p::make_VARIABLE_QUERY_STRING(*driver.loc.back()); } YY_BREAK case 324: YY_RULE_SETUP -#line 928 "seclang-scanner.ll" +#line 930 "seclang-scanner.ll" { return p::make_VARIABLE_REMOTE_ADDR(*driver.loc.back()); } YY_BREAK case 325: YY_RULE_SETUP -#line 929 "seclang-scanner.ll" +#line 931 "seclang-scanner.ll" { return p::make_VARIABLE_REMOTE_HOST(*driver.loc.back()); } YY_BREAK case 326: YY_RULE_SETUP -#line 930 "seclang-scanner.ll" +#line 932 "seclang-scanner.ll" { return p::make_VARIABLE_REMOTE_PORT(*driver.loc.back()); } YY_BREAK case 327: YY_RULE_SETUP -#line 931 "seclang-scanner.ll" +#line 933 "seclang-scanner.ll" { return p::make_VARIABLE_REQBODY_ERROR_MSG(*driver.loc.back()); } YY_BREAK case 328: YY_RULE_SETUP -#line 932 "seclang-scanner.ll" +#line 934 "seclang-scanner.ll" { return p::make_VARIABLE_REQBODY_ERROR(*driver.loc.back()); } YY_BREAK case 329: YY_RULE_SETUP -#line 933 "seclang-scanner.ll" +#line 935 "seclang-scanner.ll" { return p::make_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG(*driver.loc.back()); } YY_BREAK case 330: YY_RULE_SETUP -#line 934 "seclang-scanner.ll" +#line 936 "seclang-scanner.ll" { return p::make_VARIABLE_REQBODY_PROCESSOR_ERROR(*driver.loc.back()); } YY_BREAK case 331: YY_RULE_SETUP -#line 935 "seclang-scanner.ll" +#line 937 "seclang-scanner.ll" { return p::make_VARIABLE_REQBODY_PROCESSOR(*driver.loc.back()); } YY_BREAK case 332: YY_RULE_SETUP -#line 936 "seclang-scanner.ll" +#line 938 "seclang-scanner.ll" { return p::make_VARIABLE_REQUEST_BASENAME(*driver.loc.back()); } YY_BREAK case 333: YY_RULE_SETUP -#line 937 "seclang-scanner.ll" +#line 939 "seclang-scanner.ll" { return p::make_VARIABLE_REQUEST_BODY_LENGTH(*driver.loc.back()); } YY_BREAK case 334: YY_RULE_SETUP -#line 938 "seclang-scanner.ll" +#line 940 "seclang-scanner.ll" { return p::make_VARIABLE_REQUEST_BODY(*driver.loc.back()); } YY_BREAK case 335: YY_RULE_SETUP -#line 939 "seclang-scanner.ll" +#line 941 "seclang-scanner.ll" { return p::make_VARIABLE_REQUEST_FILE_NAME(*driver.loc.back()); } YY_BREAK case 336: YY_RULE_SETUP -#line 940 "seclang-scanner.ll" +#line 942 "seclang-scanner.ll" { return p::make_VARIABLE_REQUEST_HEADERS_NAMES(*driver.loc.back()); } YY_BREAK case 337: YY_RULE_SETUP -#line 941 "seclang-scanner.ll" +#line 943 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_REQUEST_HEADERS_NAMES(*driver.loc.back()); } YY_BREAK case 338: YY_RULE_SETUP -#line 942 "seclang-scanner.ll" +#line 944 "seclang-scanner.ll" { return p::make_VARIABLE_REQUEST_LINE(*driver.loc.back()); } YY_BREAK case 339: YY_RULE_SETUP -#line 943 "seclang-scanner.ll" +#line 945 "seclang-scanner.ll" { return p::make_VARIABLE_REQUEST_METHOD(*driver.loc.back()); } YY_BREAK case 340: YY_RULE_SETUP -#line 944 "seclang-scanner.ll" +#line 946 "seclang-scanner.ll" { return p::make_VARIABLE_REQUEST_PROTOCOL(*driver.loc.back()); } YY_BREAK case 341: YY_RULE_SETUP -#line 945 "seclang-scanner.ll" +#line 947 "seclang-scanner.ll" { return p::make_VARIABLE_REQUEST_URI_RAW(*driver.loc.back()); } YY_BREAK case 342: YY_RULE_SETUP -#line 946 "seclang-scanner.ll" +#line 948 "seclang-scanner.ll" { return p::make_VARIABLE_REQUEST_URI(*driver.loc.back()); } YY_BREAK case 343: YY_RULE_SETUP -#line 947 "seclang-scanner.ll" +#line 949 "seclang-scanner.ll" { return p::make_VARIABLE_RESPONSE_BODY(*driver.loc.back()); } YY_BREAK case 344: YY_RULE_SETUP -#line 948 "seclang-scanner.ll" +#line 950 "seclang-scanner.ll" { return p::make_VARIABLE_RESPONSE_CONTENT_LENGTH(*driver.loc.back()); } YY_BREAK case 345: YY_RULE_SETUP -#line 949 "seclang-scanner.ll" +#line 951 "seclang-scanner.ll" { return p::make_VARIABLE_RESPONSE_CONTENT_TYPE(*driver.loc.back()); } YY_BREAK case 346: YY_RULE_SETUP -#line 950 "seclang-scanner.ll" +#line 952 "seclang-scanner.ll" { return p::make_VARIABLE_RESPONSE_HEADERS_NAMES(*driver.loc.back()); } YY_BREAK case 347: YY_RULE_SETUP -#line 951 "seclang-scanner.ll" +#line 953 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_RESPONSE_HEADERS_NAMES(*driver.loc.back()); } YY_BREAK case 348: YY_RULE_SETUP -#line 952 "seclang-scanner.ll" +#line 954 "seclang-scanner.ll" { return p::make_VARIABLE_RESPONSE_PROTOCOL(*driver.loc.back()); } YY_BREAK case 349: YY_RULE_SETUP -#line 953 "seclang-scanner.ll" +#line 955 "seclang-scanner.ll" { return p::make_VARIABLE_RESPONSE_STATUS(*driver.loc.back()); } YY_BREAK case 350: YY_RULE_SETUP -#line 954 "seclang-scanner.ll" +#line 956 "seclang-scanner.ll" { return p::make_VARIABLE_SERVER_ADDR(*driver.loc.back()); } YY_BREAK case 351: YY_RULE_SETUP -#line 955 "seclang-scanner.ll" +#line 957 "seclang-scanner.ll" { return p::make_VARIABLE_SERVER_NAME(*driver.loc.back()); } YY_BREAK case 352: YY_RULE_SETUP -#line 956 "seclang-scanner.ll" +#line 958 "seclang-scanner.ll" { return p::make_VARIABLE_SERVER_PORT(*driver.loc.back()); } YY_BREAK case 353: YY_RULE_SETUP -#line 957 "seclang-scanner.ll" +#line 959 "seclang-scanner.ll" { return p::make_VARIABLE_SESSION_ID(*driver.loc.back()); } YY_BREAK case 354: YY_RULE_SETUP -#line 958 "seclang-scanner.ll" +#line 960 "seclang-scanner.ll" { return p::make_VARIABLE_UNIQUE_ID(*driver.loc.back()); } YY_BREAK case 355: YY_RULE_SETUP -#line 959 "seclang-scanner.ll" +#line 961 "seclang-scanner.ll" { return p::make_VARIABLE_URL_ENCODED_ERROR(*driver.loc.back()); } YY_BREAK case 356: YY_RULE_SETUP -#line 960 "seclang-scanner.ll" +#line 962 "seclang-scanner.ll" { return p::make_VARIABLE_USER_ID(*driver.loc.back()); } YY_BREAK case 357: YY_RULE_SETUP -#line 961 "seclang-scanner.ll" +#line 963 "seclang-scanner.ll" { return p::make_VARIABLE_WEB_APP_ID(*driver.loc.back()); } YY_BREAK case 358: YY_RULE_SETUP -#line 962 "seclang-scanner.ll" +#line 964 "seclang-scanner.ll" { return p::make_VARIABLE_ARGS(*driver.loc.back()); } YY_BREAK case 359: YY_RULE_SETUP -#line 963 "seclang-scanner.ll" +#line 965 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_ARGS(*driver.loc.back()); } YY_BREAK case 360: YY_RULE_SETUP -#line 964 "seclang-scanner.ll" +#line 966 "seclang-scanner.ll" { return p::make_VARIABLE_ARGS_GET(*driver.loc.back()); } YY_BREAK case 361: YY_RULE_SETUP -#line 965 "seclang-scanner.ll" +#line 967 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_ARGS_GET(*driver.loc.back()); } YY_BREAK case 362: YY_RULE_SETUP -#line 966 "seclang-scanner.ll" +#line 968 "seclang-scanner.ll" { return p::make_VARIABLE_ARGS_POST(*driver.loc.back()); } YY_BREAK case 363: YY_RULE_SETUP -#line 967 "seclang-scanner.ll" +#line 969 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_ARGS_POST(*driver.loc.back()); } YY_BREAK case 364: YY_RULE_SETUP -#line 968 "seclang-scanner.ll" +#line 970 "seclang-scanner.ll" { return p::make_VARIABLE_FILES_SIZES(*driver.loc.back()); } YY_BREAK case 365: YY_RULE_SETUP -#line 969 "seclang-scanner.ll" +#line 971 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_FILES_SIZES(*driver.loc.back()); } YY_BREAK case 366: YY_RULE_SETUP -#line 970 "seclang-scanner.ll" +#line 972 "seclang-scanner.ll" { return p::make_VARIABLE_FILES_NAMES(*driver.loc.back()); } YY_BREAK case 367: YY_RULE_SETUP -#line 971 "seclang-scanner.ll" +#line 973 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_FILES_NAMES(*driver.loc.back()); } YY_BREAK case 368: YY_RULE_SETUP -#line 972 "seclang-scanner.ll" +#line 974 "seclang-scanner.ll" { return p::make_VARIABLE_FILES_TMP_CONTENT(*driver.loc.back()); } YY_BREAK case 369: YY_RULE_SETUP -#line 973 "seclang-scanner.ll" +#line 975 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_FILES_TMP_CONTENT(*driver.loc.back()); } YY_BREAK case 370: YY_RULE_SETUP -#line 974 "seclang-scanner.ll" +#line 976 "seclang-scanner.ll" { return p::make_VARIABLE_MATCHED_VARS_NAMES(*driver.loc.back()); } YY_BREAK case 371: YY_RULE_SETUP -#line 975 "seclang-scanner.ll" +#line 977 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_MATCHED_VARS_NAMES(*driver.loc.back()); } YY_BREAK case 372: YY_RULE_SETUP -#line 976 "seclang-scanner.ll" +#line 978 "seclang-scanner.ll" { return p::make_VARIABLE_MATCHED_VARS(*driver.loc.back()); } YY_BREAK case 373: YY_RULE_SETUP -#line 977 "seclang-scanner.ll" +#line 979 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_MATCHED_VARS(*driver.loc.back()); } YY_BREAK case 374: YY_RULE_SETUP -#line 978 "seclang-scanner.ll" +#line 980 "seclang-scanner.ll" { return p::make_VARIABLE_FILES(*driver.loc.back()); } YY_BREAK case 375: YY_RULE_SETUP -#line 979 "seclang-scanner.ll" +#line 981 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_FILES(*driver.loc.back()); } YY_BREAK case 376: YY_RULE_SETUP -#line 980 "seclang-scanner.ll" +#line 982 "seclang-scanner.ll" { return p::make_VARIABLE_REQUEST_COOKIES(*driver.loc.back()); } YY_BREAK case 377: YY_RULE_SETUP -#line 981 "seclang-scanner.ll" +#line 983 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_REQUEST_COOKIES(*driver.loc.back()); } YY_BREAK case 378: YY_RULE_SETUP -#line 982 "seclang-scanner.ll" +#line 984 "seclang-scanner.ll" { return p::make_VARIABLE_REQUEST_HEADERS(*driver.loc.back()); } YY_BREAK case 379: YY_RULE_SETUP -#line 983 "seclang-scanner.ll" +#line 985 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_REQUEST_HEADERS(*driver.loc.back()); } YY_BREAK case 380: YY_RULE_SETUP -#line 984 "seclang-scanner.ll" +#line 986 "seclang-scanner.ll" { return p::make_VARIABLE_RESPONSE_HEADERS(*driver.loc.back()); } YY_BREAK case 381: YY_RULE_SETUP -#line 985 "seclang-scanner.ll" +#line 987 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_RESPONSE_HEADERS(*driver.loc.back()); } YY_BREAK case 382: YY_RULE_SETUP -#line 986 "seclang-scanner.ll" +#line 988 "seclang-scanner.ll" { return p::make_VARIABLE_GEO(*driver.loc.back()); } YY_BREAK case 383: YY_RULE_SETUP -#line 987 "seclang-scanner.ll" +#line 989 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_GEO(*driver.loc.back()); } YY_BREAK case 384: YY_RULE_SETUP -#line 988 "seclang-scanner.ll" +#line 990 "seclang-scanner.ll" { return p::make_VARIABLE_REQUEST_COOKIES_NAMES(*driver.loc.back()); } YY_BREAK case 385: YY_RULE_SETUP -#line 989 "seclang-scanner.ll" +#line 991 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_REQUEST_COOKIES_NAMES(*driver.loc.back()); } YY_BREAK case 386: YY_RULE_SETUP -#line 990 "seclang-scanner.ll" +#line 992 "seclang-scanner.ll" { return p::make_VARIABLE_RULE(*driver.loc.back()); } YY_BREAK case 387: YY_RULE_SETUP -#line 991 "seclang-scanner.ll" +#line 993 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_RULE(*driver.loc.back()); } YY_BREAK case 388: YY_RULE_SETUP -#line 992 "seclang-scanner.ll" +#line 994 "seclang-scanner.ll" { return p::make_VARIABLE_FILES_TMP_NAMES(*driver.loc.back()); } YY_BREAK case 389: YY_RULE_SETUP -#line 993 "seclang-scanner.ll" +#line 995 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_FILES_TMP_NAMES(*driver.loc.back()); } YY_BREAK case 390: YY_RULE_SETUP -#line 994 "seclang-scanner.ll" +#line 996 "seclang-scanner.ll" { return p::make_RUN_TIME_VAR_XML(*driver.loc.back()); } YY_BREAK case 391: YY_RULE_SETUP -#line 995 "seclang-scanner.ll" +#line 997 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_RUN_TIME_VAR_XML(*driver.loc.back()); } YY_BREAK case 392: YY_RULE_SETUP -#line 996 "seclang-scanner.ll" +#line 998 "seclang-scanner.ll" { return p::make_RUN_TIME_VAR_ENV(*driver.loc.back()); } YY_BREAK case 393: YY_RULE_SETUP -#line 997 "seclang-scanner.ll" +#line 999 "seclang-scanner.ll" { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_RUN_TIME_VAR_ENV(*driver.loc.back()); } YY_BREAK case 394: YY_RULE_SETUP -#line 998 "seclang-scanner.ll" +#line 1000 "seclang-scanner.ll" { return p::make_RUN_TIME_VAR_BLD(yytext, *driver.loc.back()); } YY_BREAK case 395: YY_RULE_SETUP -#line 999 "seclang-scanner.ll" +#line 1001 "seclang-scanner.ll" { return p::make_RUN_TIME_VAR_DUR(yytext, *driver.loc.back()); } YY_BREAK case 396: YY_RULE_SETUP -#line 1000 "seclang-scanner.ll" +#line 1002 "seclang-scanner.ll" { return p::make_RUN_TIME_VAR_HSV(yytext, *driver.loc.back()); } YY_BREAK case 397: YY_RULE_SETUP -#line 1001 "seclang-scanner.ll" +#line 1003 "seclang-scanner.ll" { return p::make_RUN_TIME_VAR_REMOTE_USER(yytext, *driver.loc.back()); } YY_BREAK case 398: YY_RULE_SETUP -#line 1002 "seclang-scanner.ll" +#line 1004 "seclang-scanner.ll" { return p::make_RUN_TIME_VAR_TIME_DAY(yytext, *driver.loc.back()); } YY_BREAK case 399: YY_RULE_SETUP -#line 1003 "seclang-scanner.ll" +#line 1005 "seclang-scanner.ll" { return p::make_RUN_TIME_VAR_TIME_EPOCH(yytext, *driver.loc.back()); } YY_BREAK case 400: YY_RULE_SETUP -#line 1004 "seclang-scanner.ll" +#line 1006 "seclang-scanner.ll" { return p::make_RUN_TIME_VAR_TIME_HOUR(yytext, *driver.loc.back()); } YY_BREAK case 401: YY_RULE_SETUP -#line 1005 "seclang-scanner.ll" +#line 1007 "seclang-scanner.ll" { return p::make_RUN_TIME_VAR_TIME_MIN(yytext, *driver.loc.back()); } YY_BREAK case 402: YY_RULE_SETUP -#line 1006 "seclang-scanner.ll" +#line 1008 "seclang-scanner.ll" { return p::make_RUN_TIME_VAR_TIME_MON(yytext, *driver.loc.back()); } YY_BREAK case 403: YY_RULE_SETUP -#line 1007 "seclang-scanner.ll" +#line 1009 "seclang-scanner.ll" { return p::make_RUN_TIME_VAR_TIME_SEC(yytext, *driver.loc.back()); } YY_BREAK case 404: YY_RULE_SETUP -#line 1008 "seclang-scanner.ll" +#line 1010 "seclang-scanner.ll" { return p::make_RUN_TIME_VAR_TIME_YEAR(yytext, *driver.loc.back()); } YY_BREAK case 405: YY_RULE_SETUP -#line 1009 "seclang-scanner.ll" +#line 1011 "seclang-scanner.ll" { return p::make_RUN_TIME_VAR_TIME(yytext, *driver.loc.back()); } YY_BREAK case 406: YY_RULE_SETUP -#line 1010 "seclang-scanner.ll" +#line 1012 "seclang-scanner.ll" { return p::make_RUN_TIME_VAR_TIME_WDAY(yytext, *driver.loc.back()); } YY_BREAK case 407: YY_RULE_SETUP -#line 1013 "seclang-scanner.ll" +#line 1015 "seclang-scanner.ll" { driver.error (*driver.loc.back(), "Variable VARIABLE_WEBSERVER_ERROR_LOG is not supported by libModSecurity", ""); throw p::syntax_error(*driver.loc.back(), "");} YY_BREAK case 408: YY_RULE_SETUP -#line 1014 "seclang-scanner.ll" +#line 1016 "seclang-scanner.ll" { return p::make_VARIABLE_GLOBAL(*driver.loc.back()); } YY_BREAK case 409: YY_RULE_SETUP -#line 1015 "seclang-scanner.ll" +#line 1017 "seclang-scanner.ll" { return p::make_VARIABLE_IP(*driver.loc.back()); } YY_BREAK case 410: YY_RULE_SETUP -#line 1016 "seclang-scanner.ll" +#line 1018 "seclang-scanner.ll" { return p::make_VARIABLE_RESOURCE(*driver.loc.back()); } YY_BREAK case 411: YY_RULE_SETUP -#line 1017 "seclang-scanner.ll" +#line 1019 "seclang-scanner.ll" { return p::make_VARIABLE_SESSION(*driver.loc.back()); } YY_BREAK case 412: YY_RULE_SETUP -#line 1018 "seclang-scanner.ll" +#line 1020 "seclang-scanner.ll" { return p::make_VARIABLE_STATUS(*driver.loc.back()); } YY_BREAK case 413: YY_RULE_SETUP -#line 1019 "seclang-scanner.ll" +#line 1021 "seclang-scanner.ll" { return p::make_VARIABLE_STATUS_LINE(*driver.loc.back()); } YY_BREAK case 414: YY_RULE_SETUP -#line 1020 "seclang-scanner.ll" +#line 1022 "seclang-scanner.ll" { return p::make_VARIABLE_TX(*driver.loc.back()); } YY_BREAK case 415: YY_RULE_SETUP -#line 1021 "seclang-scanner.ll" +#line 1023 "seclang-scanner.ll" { return p::make_VARIABLE_USER(*driver.loc.back()); } YY_BREAK case 416: YY_RULE_SETUP -#line 1025 "seclang-scanner.ll" +#line 1027 "seclang-scanner.ll" { BEGINX_(); return p::make_VARIABLE_GLOBAL(*driver.loc.back()); } YY_BREAK case 417: YY_RULE_SETUP -#line 1026 "seclang-scanner.ll" +#line 1028 "seclang-scanner.ll" { BEGINX_(); return p::make_VARIABLE_IP(*driver.loc.back()); } YY_BREAK case 418: YY_RULE_SETUP -#line 1027 "seclang-scanner.ll" +#line 1029 "seclang-scanner.ll" { BEGINX_(); return p::make_VARIABLE_RESOURCE(*driver.loc.back()); } YY_BREAK case 419: YY_RULE_SETUP -#line 1028 "seclang-scanner.ll" +#line 1030 "seclang-scanner.ll" { BEGINX_(); return p::make_VARIABLE_SESSION(*driver.loc.back()); } YY_BREAK case 420: YY_RULE_SETUP -#line 1029 "seclang-scanner.ll" +#line 1031 "seclang-scanner.ll" { BEGINX_(); return p::make_VARIABLE_TX(*driver.loc.back()); } YY_BREAK case 421: YY_RULE_SETUP -#line 1030 "seclang-scanner.ll" +#line 1032 "seclang-scanner.ll" { BEGINX_(); return p::make_VARIABLE_USER(*driver.loc.back()); } YY_BREAK case 422: YY_RULE_SETUP -#line 1035 "seclang-scanner.ll" +#line 1037 "seclang-scanner.ll" { BEGIN_ACTION_WAITING_CONTENT(); return p::make_SETVAR_OPERATION_EQUALS_PLUS(*driver.loc.back()); } YY_BREAK case 423: YY_RULE_SETUP -#line 1036 "seclang-scanner.ll" +#line 1038 "seclang-scanner.ll" { BEGIN_ACTION_WAITING_CONTENT(); return p::make_SETVAR_OPERATION_EQUALS_MINUS(*driver.loc.back()); } YY_BREAK case 424: YY_RULE_SETUP -#line 1037 "seclang-scanner.ll" +#line 1039 "seclang-scanner.ll" { BEGIN_ACTION_WAITING_CONTENT(); return p::make_SETVAR_OPERATION_EQUALS(*driver.loc.back()); } YY_BREAK case 425: /* rule 425 can match eol */ YY_RULE_SETUP -#line 1038 "seclang-scanner.ll" +#line 1040 "seclang-scanner.ll" { BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 1, yyleng-2), *driver.loc.back()); } YY_BREAK case 426: /* rule 426 can match eol */ YY_RULE_SETUP -#line 1039 "seclang-scanner.ll" +#line 1041 "seclang-scanner.ll" { BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 1, yyleng-2), *driver.loc.back()); } YY_BREAK case 427: /* rule 427 can match eol */ YY_RULE_SETUP -#line 1040 "seclang-scanner.ll" +#line 1042 "seclang-scanner.ll" { BEGIN_PREVIOUS(); yyless(yyleng - 0); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 2, yyleng-4), *driver.loc.back()); } YY_BREAK case 428: /* rule 428 can match eol */ YY_RULE_SETUP -#line 1041 "seclang-scanner.ll" +#line 1043 "seclang-scanner.ll" { BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 2, yyleng-4), *driver.loc.back()); } YY_BREAK case 429: /* rule 429 can match eol */ YY_RULE_SETUP -#line 1042 "seclang-scanner.ll" +#line 1044 "seclang-scanner.ll" { yyless(yyleng - 1); BEGIN_PREVIOUS(); return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } YY_BREAK case 430: /* rule 430 can match eol */ YY_RULE_SETUP -#line 1043 "seclang-scanner.ll" +#line 1045 "seclang-scanner.ll" { return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } YY_BREAK case 431: /* rule 431 can match eol */ YY_RULE_SETUP -#line 1045 "seclang-scanner.ll" +#line 1047 "seclang-scanner.ll" { BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 1, yyleng-2), *driver.loc.back()); } YY_BREAK case 432: /* rule 432 can match eol */ YY_RULE_SETUP -#line 1046 "seclang-scanner.ll" +#line 1048 "seclang-scanner.ll" { BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 2, yyleng-4), *driver.loc.back()); } YY_BREAK case 433: YY_RULE_SETUP -#line 1047 "seclang-scanner.ll" +#line 1049 "seclang-scanner.ll" { BEGIN_PREVIOUS(); yyless(0); } YY_BREAK case 434: YY_RULE_SETUP -#line 1048 "seclang-scanner.ll" +#line 1050 "seclang-scanner.ll" { BEGIN_PREVIOUS(); yyless(0); } YY_BREAK case 435: YY_RULE_SETUP -#line 1049 "seclang-scanner.ll" +#line 1051 "seclang-scanner.ll" { BEGINX(LEXING_ERROR_ACTION); yyless(0); } YY_BREAK @@ -7800,508 +7819,508 @@ YY_RULE_SETUP case 436: /* rule 436 can match eol */ YY_RULE_SETUP -#line 1054 "seclang-scanner.ll" +#line 1056 "seclang-scanner.ll" { BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 1, yyleng-2), *driver.loc.back()); } YY_BREAK case 437: /* rule 437 can match eol */ YY_RULE_SETUP -#line 1055 "seclang-scanner.ll" +#line 1057 "seclang-scanner.ll" { BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 1, yyleng-2), *driver.loc.back()); } YY_BREAK case 438: /* rule 438 can match eol */ YY_RULE_SETUP -#line 1056 "seclang-scanner.ll" +#line 1058 "seclang-scanner.ll" { BEGIN_PREVIOUS(); yyless(yyleng - 0); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 2, yyleng-4), *driver.loc.back()); } YY_BREAK case 439: /* rule 439 can match eol */ YY_RULE_SETUP -#line 1057 "seclang-scanner.ll" +#line 1059 "seclang-scanner.ll" { BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 2, yyleng-4), *driver.loc.back()); } YY_BREAK case 440: /* rule 440 can match eol */ YY_RULE_SETUP -#line 1058 "seclang-scanner.ll" +#line 1060 "seclang-scanner.ll" { BEGIN_PREVIOUS(); return p::make_DICT_ELEMENT(yytext, *driver.loc.back()); } YY_BREAK case 441: /* rule 441 can match eol */ YY_RULE_SETUP -#line 1060 "seclang-scanner.ll" +#line 1062 "seclang-scanner.ll" { BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 1, yyleng-2), *driver.loc.back()); } YY_BREAK case 442: /* rule 442 can match eol */ YY_RULE_SETUP -#line 1061 "seclang-scanner.ll" +#line 1063 "seclang-scanner.ll" { BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 2, yyleng-4), *driver.loc.back()); } YY_BREAK case 443: YY_RULE_SETUP -#line 1063 "seclang-scanner.ll" +#line 1065 "seclang-scanner.ll" { BEGINX(LEXING_ERROR_ACTION); yyless(0); } YY_BREAK case 444: YY_RULE_SETUP -#line 1064 "seclang-scanner.ll" +#line 1066 "seclang-scanner.ll" { return p::make_QUOTATION_MARK(yytext, *driver.loc.back()); } YY_BREAK case 445: YY_RULE_SETUP -#line 1070 "seclang-scanner.ll" +#line 1072 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_GEOLOOKUP(*driver.loc.back()); } YY_BREAK case 446: YY_RULE_SETUP -#line 1071 "seclang-scanner.ll" +#line 1073 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_UNCONDITIONAL_MATCH(*driver.loc.back()); } YY_BREAK case 447: YY_RULE_SETUP -#line 1072 "seclang-scanner.ll" +#line 1074 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_DETECT_SQLI(*driver.loc.back()); } YY_BREAK case 448: YY_RULE_SETUP -#line 1073 "seclang-scanner.ll" +#line 1075 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_DETECT_XSS(*driver.loc.back()); } YY_BREAK case 449: YY_RULE_SETUP -#line 1074 "seclang-scanner.ll" +#line 1076 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_VALIDATE_URL_ENCODING(*driver.loc.back()); } YY_BREAK case 450: YY_RULE_SETUP -#line 1075 "seclang-scanner.ll" +#line 1077 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_VALIDATE_UTF8_ENCODING(*driver.loc.back()); } YY_BREAK case 451: YY_RULE_SETUP -#line 1078 "seclang-scanner.ll" +#line 1080 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_GEOLOOKUP(*driver.loc.back()); } YY_BREAK case 452: YY_RULE_SETUP -#line 1079 "seclang-scanner.ll" +#line 1081 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_UNCONDITIONAL_MATCH(*driver.loc.back()); } YY_BREAK case 453: YY_RULE_SETUP -#line 1080 "seclang-scanner.ll" +#line 1082 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_DETECT_SQLI(*driver.loc.back()); } YY_BREAK case 454: YY_RULE_SETUP -#line 1081 "seclang-scanner.ll" +#line 1083 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_DETECT_XSS(*driver.loc.back()); } YY_BREAK case 455: YY_RULE_SETUP -#line 1082 "seclang-scanner.ll" +#line 1084 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_VALIDATE_URL_ENCODING(*driver.loc.back()); } YY_BREAK case 456: YY_RULE_SETUP -#line 1083 "seclang-scanner.ll" +#line 1085 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_VALIDATE_UTF8_ENCODING(*driver.loc.back()); } YY_BREAK case 457: YY_RULE_SETUP -#line 1087 "seclang-scanner.ll" +#line 1089 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_WITHIN(*driver.loc.back()); } YY_BREAK case 458: YY_RULE_SETUP -#line 1088 "seclang-scanner.ll" +#line 1090 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_CONTAINS_WORD(*driver.loc.back()); } YY_BREAK case 459: YY_RULE_SETUP -#line 1089 "seclang-scanner.ll" +#line 1091 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_CONTAINS(*driver.loc.back()); } YY_BREAK case 460: YY_RULE_SETUP -#line 1090 "seclang-scanner.ll" +#line 1092 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_ENDS_WITH(*driver.loc.back()); } YY_BREAK case 461: YY_RULE_SETUP -#line 1091 "seclang-scanner.ll" +#line 1093 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_EQ(*driver.loc.back()); } YY_BREAK case 462: YY_RULE_SETUP -#line 1092 "seclang-scanner.ll" +#line 1094 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_GE(*driver.loc.back()); } YY_BREAK case 463: YY_RULE_SETUP -#line 1093 "seclang-scanner.ll" +#line 1095 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_GT(*driver.loc.back()); } YY_BREAK case 464: YY_RULE_SETUP -#line 1094 "seclang-scanner.ll" +#line 1096 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_IP_MATCH_FROM_FILE(*driver.loc.back()); } YY_BREAK case 465: YY_RULE_SETUP -#line 1095 "seclang-scanner.ll" +#line 1097 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_IP_MATCH(*driver.loc.back()); } YY_BREAK case 466: YY_RULE_SETUP -#line 1096 "seclang-scanner.ll" +#line 1098 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_LE(*driver.loc.back()); } YY_BREAK case 467: YY_RULE_SETUP -#line 1097 "seclang-scanner.ll" +#line 1099 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_LT(*driver.loc.back()); } YY_BREAK case 468: YY_RULE_SETUP -#line 1098 "seclang-scanner.ll" +#line 1100 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_PM_FROM_FILE(*driver.loc.back()); } YY_BREAK case 469: YY_RULE_SETUP -#line 1099 "seclang-scanner.ll" +#line 1101 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_PM(*driver.loc.back()); } YY_BREAK case 470: YY_RULE_SETUP -#line 1100 "seclang-scanner.ll" +#line 1102 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_RBL( *driver.loc.back()); } YY_BREAK case 471: YY_RULE_SETUP -#line 1101 "seclang-scanner.ll" +#line 1103 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_RX(*driver.loc.back()); } YY_BREAK case 472: YY_RULE_SETUP -#line 1102 "seclang-scanner.ll" +#line 1104 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_STR_EQ(*driver.loc.back()); } YY_BREAK case 473: YY_RULE_SETUP -#line 1103 "seclang-scanner.ll" +#line 1105 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_STR_MATCH(*driver.loc.back()); } YY_BREAK case 474: YY_RULE_SETUP -#line 1104 "seclang-scanner.ll" +#line 1106 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_BEGINS_WITH(*driver.loc.back()); } YY_BREAK case 475: YY_RULE_SETUP -#line 1105 "seclang-scanner.ll" +#line 1107 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_INSPECT_FILE(*driver.loc.back()); } YY_BREAK case 476: YY_RULE_SETUP -#line 1106 "seclang-scanner.ll" +#line 1108 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_FUZZY_HASH(*driver.loc.back()); } YY_BREAK case 477: YY_RULE_SETUP -#line 1107 "seclang-scanner.ll" +#line 1109 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_VALIDATE_BYTE_RANGE(*driver.loc.back()); } YY_BREAK case 478: YY_RULE_SETUP -#line 1108 "seclang-scanner.ll" +#line 1110 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_VALIDATE_DTD(*driver.loc.back()); } YY_BREAK case 479: YY_RULE_SETUP -#line 1109 "seclang-scanner.ll" +#line 1111 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_VALIDATE_HASH(*driver.loc.back()); } YY_BREAK case 480: YY_RULE_SETUP -#line 1110 "seclang-scanner.ll" +#line 1112 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_VALIDATE_SCHEMA(*driver.loc.back()); } YY_BREAK case 481: YY_RULE_SETUP -#line 1111 "seclang-scanner.ll" +#line 1113 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_VERIFY_CC(*driver.loc.back()); } YY_BREAK case 482: YY_RULE_SETUP -#line 1112 "seclang-scanner.ll" +#line 1114 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_VERIFY_CPF(*driver.loc.back()); } YY_BREAK case 483: YY_RULE_SETUP -#line 1113 "seclang-scanner.ll" +#line 1115 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_VERIFY_SSN(*driver.loc.back()); } YY_BREAK case 484: YY_RULE_SETUP -#line 1114 "seclang-scanner.ll" +#line 1116 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_GSB_LOOKUP(*driver.loc.back()); } YY_BREAK case 485: YY_RULE_SETUP -#line 1115 "seclang-scanner.ll" +#line 1117 "seclang-scanner.ll" { BEGIN_PARAMETER(); return p::make_OPERATOR_RSUB(*driver.loc.back()); } YY_BREAK case 486: YY_RULE_SETUP -#line 1117 "seclang-scanner.ll" +#line 1119 "seclang-scanner.ll" { return p::make_NOT(*driver.loc.back()); } YY_BREAK case 487: YY_RULE_SETUP -#line 1118 "seclang-scanner.ll" +#line 1120 "seclang-scanner.ll" { BEGIN_NO_OP_INFORMED(); yyless(0); } YY_BREAK case 488: YY_RULE_SETUP -#line 1123 "seclang-scanner.ll" +#line 1125 "seclang-scanner.ll" { BEGIN(EXPECTING_PARAMETER_ENDS_WITH_SPACE); } YY_BREAK case 489: YY_RULE_SETUP -#line 1127 "seclang-scanner.ll" +#line 1129 "seclang-scanner.ll" { BEGIN(EXPECTING_PARAMETER_ENDS_WITH_QUOTE); } YY_BREAK case 490: YY_RULE_SETUP -#line 1131 "seclang-scanner.ll" +#line 1133 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_PARAMETERS_TO_ACTIONS); } YY_BREAK case 491: /* rule 491 can match eol */ YY_RULE_SETUP -#line 1132 "seclang-scanner.ll" +#line 1134 "seclang-scanner.ll" { return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } YY_BREAK case 492: YY_RULE_SETUP -#line 1136 "seclang-scanner.ll" +#line 1138 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_PARAMETERS_TO_ACTIONS); } YY_BREAK case 493: /* rule 493 can match eol */ YY_RULE_SETUP -#line 1137 "seclang-scanner.ll" +#line 1139 "seclang-scanner.ll" { return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } YY_BREAK case 494: YY_RULE_SETUP -#line 1140 "seclang-scanner.ll" +#line 1142 "seclang-scanner.ll" { BEGINX(EXPECTING_ACTION_PREDICATE_VARIABLE); } YY_BREAK case 495: YY_RULE_SETUP -#line 1141 "seclang-scanner.ll" +#line 1143 "seclang-scanner.ll" { BEGIN(LEXING_ERROR); yyless(0); } YY_BREAK case 496: YY_RULE_SETUP -#line 1145 "seclang-scanner.ll" +#line 1147 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_PARAMETERS_TO_ACTIONS); } YY_BREAK case 497: /* rule 497 can match eol */ YY_RULE_SETUP -#line 1146 "seclang-scanner.ll" +#line 1148 "seclang-scanner.ll" { return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } YY_BREAK case 498: YY_RULE_SETUP -#line 1150 "seclang-scanner.ll" +#line 1152 "seclang-scanner.ll" { BEGIN(TRANSACTION_FROM_OPERATOR_PARAMETERS_TO_ACTIONS); } YY_BREAK case 499: /* rule 499 can match eol */ YY_RULE_SETUP -#line 1151 "seclang-scanner.ll" +#line 1153 "seclang-scanner.ll" { return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } YY_BREAK case 500: YY_RULE_SETUP -#line 1155 "seclang-scanner.ll" +#line 1157 "seclang-scanner.ll" { BEGINX(EXPECTING_ACTION_PREDICATE_VARIABLE); } YY_BREAK case 501: YY_RULE_SETUP -#line 1156 "seclang-scanner.ll" +#line 1158 "seclang-scanner.ll" { BEGIN(LEXING_ERROR_VARIABLE); yyless(0); } YY_BREAK case 502: YY_RULE_SETUP -#line 1161 "seclang-scanner.ll" +#line 1163 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTIONS_ONLY_ONE); } YY_BREAK case 503: /* rule 503 can match eol */ YY_RULE_SETUP -#line 1163 "seclang-scanner.ll" +#line 1165 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 504: /* rule 504 can match eol */ YY_RULE_SETUP -#line 1164 "seclang-scanner.ll" +#line 1166 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 505: /* rule 505 can match eol */ YY_RULE_SETUP -#line 1165 "seclang-scanner.ll" +#line 1167 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ONLY_ONE); } YY_BREAK case 506: /* rule 506 can match eol */ YY_RULE_SETUP -#line 1166 "seclang-scanner.ll" +#line 1168 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ONLY_ONE); } YY_BREAK case 507: /* rule 507 can match eol */ YY_RULE_SETUP -#line 1168 "seclang-scanner.ll" +#line 1170 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 508: /* rule 508 can match eol */ YY_RULE_SETUP -#line 1169 "seclang-scanner.ll" +#line 1171 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 509: /* rule 509 can match eol */ YY_RULE_SETUP -#line 1170 "seclang-scanner.ll" +#line 1172 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 510: /* rule 510 can match eol */ YY_RULE_SETUP -#line 1171 "seclang-scanner.ll" +#line 1173 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 511: /* rule 511 can match eol */ YY_RULE_SETUP -#line 1173 "seclang-scanner.ll" +#line 1175 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ONLY_ONE); } YY_BREAK case 512: /* rule 512 can match eol */ YY_RULE_SETUP -#line 1174 "seclang-scanner.ll" +#line 1176 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ONLY_ONE); } YY_BREAK case 513: /* rule 513 can match eol */ YY_RULE_SETUP -#line 1175 "seclang-scanner.ll" +#line 1177 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ONLY_ONE); } YY_BREAK case 514: /* rule 514 can match eol */ YY_RULE_SETUP -#line 1176 "seclang-scanner.ll" +#line 1178 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ONLY_ONE); } YY_BREAK case 515: YY_RULE_SETUP -#line 1178 "seclang-scanner.ll" +#line 1180 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 516: /* rule 516 can match eol */ YY_RULE_SETUP -#line 1180 "seclang-scanner.ll" +#line 1182 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 517: /* rule 517 can match eol */ YY_RULE_SETUP -#line 1181 "seclang-scanner.ll" +#line 1183 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 518: /* rule 518 can match eol */ YY_RULE_SETUP -#line 1183 "seclang-scanner.ll" +#line 1185 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 519: /* rule 519 can match eol */ YY_RULE_SETUP -#line 1184 "seclang-scanner.ll" +#line 1186 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 520: /* rule 520 can match eol */ YY_RULE_SETUP -#line 1185 "seclang-scanner.ll" +#line 1187 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 521: /* rule 521 can match eol */ YY_RULE_SETUP -#line 1186 "seclang-scanner.ll" +#line 1188 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 522: YY_RULE_SETUP -#line 1188 "seclang-scanner.ll" +#line 1190 "seclang-scanner.ll" { BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } YY_BREAK case 523: YY_RULE_SETUP -#line 1193 "seclang-scanner.ll" +#line 1195 "seclang-scanner.ll" { } YY_BREAK case 524: /* rule 524 can match eol */ YY_RULE_SETUP -#line 1194 "seclang-scanner.ll" +#line 1196 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); } YY_BREAK case 525: /* rule 525 can match eol */ YY_RULE_SETUP -#line 1195 "seclang-scanner.ll" +#line 1197 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); } YY_BREAK @@ -8309,40 +8328,40 @@ YY_RULE_SETUP case 526: /* rule 526 can match eol */ YY_RULE_SETUP -#line 1199 "seclang-scanner.ll" +#line 1201 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); } YY_BREAK case 527: /* rule 527 can match eol */ YY_RULE_SETUP -#line 1200 "seclang-scanner.ll" +#line 1202 "seclang-scanner.ll" { driver.loc.back()->lines(1); driver.loc.back()->step(); } YY_BREAK case 528: /* rule 528 can match eol */ YY_RULE_SETUP -#line 1201 "seclang-scanner.ll" +#line 1203 "seclang-scanner.ll" { BEGIN(INITIAL); driver.loc.back()->lines(1); driver.loc.back()->step(); } YY_BREAK case 529: YY_RULE_SETUP -#line 1206 "seclang-scanner.ll" +#line 1208 "seclang-scanner.ll" { BEGIN(LEXING_ERROR); yyless(0); } YY_BREAK case 530: YY_RULE_SETUP -#line 1208 "seclang-scanner.ll" +#line 1210 "seclang-scanner.ll" { driver.error (*driver.loc.back(), "Invalid input: ", yytext); throw p::syntax_error(*driver.loc.back(), ""); } YY_BREAK case 531: YY_RULE_SETUP -#line 1209 "seclang-scanner.ll" +#line 1211 "seclang-scanner.ll" { driver.error (*driver.loc.back(), "Expecting an action, got: ", yytext); throw p::syntax_error(*driver.loc.back(), ""); } YY_BREAK case 532: YY_RULE_SETUP -#line 1210 "seclang-scanner.ll" +#line 1212 "seclang-scanner.ll" { driver.error (*driver.loc.back(), "Expecting a variable, got: : ", yytext); throw p::syntax_error(*driver.loc.back(), ""); } YY_BREAK case YY_STATE_EOF(INITIAL): @@ -8381,7 +8400,7 @@ case YY_STATE_EOF(SETVAR_ACTION_QUOTED): case YY_STATE_EOF(SETVAR_ACTION_QUOTED_WAITING_COLLECTION_ELEM): case YY_STATE_EOF(SETVAR_ACTION_QUOTED_WAITING_OPERATION): case YY_STATE_EOF(SETVAR_ACTION_QUOTED_WAITING_CONTENT): -#line 1213 "seclang-scanner.ll" +#line 1215 "seclang-scanner.ll" { if (driver.ref.size() > 1) { driver.ref.pop_back(); @@ -8405,7 +8424,7 @@ case YY_STATE_EOF(SETVAR_ACTION_QUOTED_WAITING_CONTENT): YY_BREAK case 533: YY_RULE_SETUP -#line 1235 "seclang-scanner.ll" +#line 1237 "seclang-scanner.ll" { std::string err; const char *file = strchr(yytext, ' ') + 1; @@ -8434,7 +8453,7 @@ YY_RULE_SETUP YY_BREAK case 534: YY_RULE_SETUP -#line 1261 "seclang-scanner.ll" +#line 1263 "seclang-scanner.ll" { std::string err; const char *file = strchr(yytext, ' ') + 1; @@ -8464,9 +8483,50 @@ YY_RULE_SETUP } YY_BREAK case 535: -/* rule 535 can match eol */ YY_RULE_SETUP -#line 1289 "seclang-scanner.ll" +#line 1291 "seclang-scanner.ll" +{ +// https://tls.mbed.org/kb/how-to/encrypt-with-aes-cbc + mbedtls_aes_context aes; + std::vector conf = modsecurity::utils::string::split(yytext, ' '); + if (conf.size() < 2) { + driver.error (*driver.loc.back(), "", "SecRemoteRules demands a key and a URI"); + throw p::syntax_error(*driver.loc.back(), ""); + } + + std::ifstream t(conf[1]); + std::string str; + std::cout << conf[1] << std::endl; + + + t.seekg(0, std::ios::end); + str.reserve(t.tellg()); + t.seekg(0, std::ios::beg); + + str.assign((std::istreambuf_iterator(t)), + std::istreambuf_iterator()); + + std::cout << str << std::endl; + + driver.ref.push_back(conf[1]); + driver.loc.push_back(new yy::location()); + YY_BUFFER_STATE temp = YY_CURRENT_BUFFER; + yypush_buffer_state(temp); + + unsigned char key[32] = { 0 }; + unsigned char iv[16] = { 0 }; + unsigned char *output = (unsigned char *)malloc(str.size() + 1); + mbedtls_aes_setkey_enc( &aes, key, 256 ); + mbedtls_aes_crypt_cbc( &aes, MBEDTLS_AES_DECRYPT, 24, iv, (unsigned char *) str.c_str(), output ); + + yy_scan_string(str.c_str()); + +} + YY_BREAK +case 536: +/* rule 536 can match eol */ +YY_RULE_SETUP +#line 1329 "seclang-scanner.ll" { HttpsClient c; std::string key; @@ -8502,12 +8562,12 @@ YY_RULE_SETUP yy_scan_string(c.content.c_str()); } YY_BREAK -case 536: +case 537: YY_RULE_SETUP -#line 1325 "seclang-scanner.ll" +#line 1365 "seclang-scanner.ll" ECHO; YY_BREAK -#line 8510 "seclang-scanner.cc" +#line 8570 "seclang-scanner.cc" case YY_END_OF_BUFFER: { @@ -8826,7 +8886,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3909 ) + if ( yy_current_state >= 3922 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -8859,11 +8919,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3909 ) + if ( yy_current_state >= 3922 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3908); + yy_is_jam = (yy_current_state == 3921); return yy_is_jam ? 0 : yy_current_state; } @@ -9612,7 +9672,7 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 1325 "seclang-scanner.ll" +#line 1365 "seclang-scanner.ll" namespace modsecurity { diff --git a/src/parser/seclang-scanner.ll b/src/parser/seclang-scanner.ll index a46bfdc4..168e3342 100755 --- a/src/parser/seclang-scanner.ll +++ b/src/parser/seclang-scanner.ll @@ -8,6 +8,7 @@ #include "src/parser/seclang-parser.hh" #include "src/utils/https_client.h" #include "src/utils/string.h" +#include "others/mbedtls/aes.h" using modsecurity::Parser::Driver; using modsecurity::Utils::HttpsClient; @@ -376,6 +377,7 @@ CONFIG_INCLUDE (?i:Include) CONFIG_SEC_COLLECTION_TIMEOUT (?i:SecCollectionTimeout) CONFIG_SEC_HTTP_BLKEY (?i:SecHttpBlKey) CONFIG_SEC_REMOTE_RULES (?i:SecRemoteRules) +CONFIG_SEC_BINARY_RULES (?i:SecBinaryRules) CONFIG_SEC_REMOTE_RULES_FAIL_ACTION (?i:SecRemoteRulesFailAction) CONFIG_SEC_REMOVE_RULES_BY_ID (?i:SecRuleRemoveById) CONFIG_SEC_REMOVE_RULES_BY_MSG (?i:SecRuleRemoveByMsg) @@ -1285,6 +1287,44 @@ EQUALS_MINUS (?i:=\-) free(f); } +{CONFIG_SEC_BINARY_RULES}[ ]+[^\n\r ]+ { +// https://tls.mbed.org/kb/how-to/encrypt-with-aes-cbc + mbedtls_aes_context aes; + std::vector conf = modsecurity::utils::string::split(yytext, ' '); + if (conf.size() < 2) { + driver.error (*driver.loc.back(), "", "SecRemoteRules demands a key and a URI"); + throw p::syntax_error(*driver.loc.back(), ""); + } + + std::ifstream t(conf[1]); + std::string str; + std::cout << conf[1] << std::endl; + + + t.seekg(0, std::ios::end); + str.reserve(t.tellg()); + t.seekg(0, std::ios::beg); + + str.assign((std::istreambuf_iterator(t)), + std::istreambuf_iterator()); + + std::cout << str << std::endl; + + driver.ref.push_back(conf[1]); + driver.loc.push_back(new yy::location()); + YY_BUFFER_STATE temp = YY_CURRENT_BUFFER; + yypush_buffer_state(temp); + + unsigned char key[32] = { 0 }; + unsigned char iv[16] = { 0 }; + unsigned char *output = (unsigned char *)malloc(str.size() + 1); + mbedtls_aes_setkey_enc( &aes, key, 256 ); + mbedtls_aes_crypt_cbc( &aes, MBEDTLS_AES_DECRYPT, 24, iv, (unsigned char *) str.c_str(), output ); + + yy_scan_string(str.c_str()); + +} + {CONFIG_SEC_REMOTE_RULES}[ ][^ ]+[ ][^\n\r ]+ { HttpsClient c; std::string key; diff --git a/src/parser/stack.hh b/src/parser/stack.hh index 180cdc88..1ea27022 100644 --- a/src/parser/stack.hh +++ b/src/parser/stack.hh @@ -1,157 +1,8 @@ -// A Bison parser, made by GNU Bison 3.1. +// A Bison parser, made by GNU Bison 3.2. -// Stack handling for Bison parsers in C++ - -// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc. - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -// As a special exception, you may create a larger work that contains -// part or all of the Bison parser skeleton and distribute that work -// under terms of your choice, so long as that work isn't itself a -// parser generator using the skeleton or a modified version thereof -// as a parser skeleton. Alternatively, if you modify or redistribute -// the parser skeleton itself, you may (at your option) remove this -// special exception, which will cause the skeleton and the resulting -// Bison output files to be licensed under the GNU General Public -// License without this special exception. - -// This special exception was added by the Free Software Foundation in -// version 2.2 of Bison. - -/** - ** \file stack.hh - ** Define the yy::stack class. - */ - -#ifndef YY_YY_STACK_HH_INCLUDED -# define YY_YY_STACK_HH_INCLUDED - -# include - - -namespace yy { -#line 46 "stack.hh" // stack.hh:132 - /// A stack with random access from its top. - template > - class stack - { - public: - // Hide our reversed order. - typedef typename S::reverse_iterator iterator; - typedef typename S::const_reverse_iterator const_iterator; - typedef typename S::size_type size_type; - - stack () - { - seq_.reserve (200); - } - - stack (size_type n) - : seq_ (n) - {} - - /// Random access. - /// - /// Index 0 returns the topmost element. - T& - operator[] (size_type i) - { - return seq_[seq_.size () - 1 - i]; - } - - /// Random access. - /// - /// Index 0 returns the topmost element. - const T& - operator[] (size_type i) const - { - return seq_[seq_.size () - 1 - i]; - } - - /// Steal the contents of \a t. - /// - /// Close to move-semantics. - void - push (T& t) - { - seq_.push_back (T()); - operator[](0).move (t); - } - - void - pop (size_type n = 1) - { - for (; n; --n) - seq_.pop_back (); - } - - void - clear () - { - seq_.clear (); - } - - size_type - size () const - { - return seq_.size (); - } - - const_iterator - begin () const - { - return seq_.rbegin (); - } - - const_iterator - end () const - { - return seq_.rend (); - } - - private: - stack (const stack&); - stack& operator= (const stack&); - /// The wrapped container. - S seq_; - }; - - /// Present a slice of the top of a stack. - template > - class slice - { - public: - typedef typename S::size_type size_type; - slice (const S& stack, size_type range) - : stack_ (stack) - , range_ (range) - {} - - const T& - operator[] (size_type i) const - { - return stack_[range_ - i]; - } - - private: - const S& stack_; - size_type range_; - }; - - -} // yy -#line 156 "stack.hh" // stack.hh:132 - -#endif // !YY_YY_STACK_HH_INCLUDED +// Starting with Bison 3.2, this file is useless: the structure it +// used to define is now defined with the parser itself. +// +// To get rid of this file: +// 1. add 'require "3.2"' (or newer) to your grammar file +// 2. remove references to this file from your build system.