From 49f72aa4513c66b0b6d97be3240a212c7f865f62 Mon Sep 17 00:00:00 2001 From: Quinlan Pfiffer Date: Sat, 10 Jan 2015 19:01:52 -0800 Subject: [PATCH] Add PATCH, PUT, DELETE methods AG: rewrite method code to use method arrays --- lib/lextable-strings.h | 4 + lib/lextable.h | 1491 ++++++++++++++++++++++++------------------------ lib/libwebsockets.h | 6 +- lib/parsers.c | 61 +- lib/server.c | 74 ++- 5 files changed, 828 insertions(+), 808 deletions(-) diff --git a/lib/lextable-strings.h b/lib/lextable-strings.h index c0f1f2e..277c8a5 100644 --- a/lib/lextable-strings.h +++ b/lib/lextable-strings.h @@ -80,6 +80,10 @@ static const char *set[] = { "via:", "www-authenticate:", "proxy ", + + "patch", + "put", + "delete", "", /* not matchable */ diff --git a/lib/lextable.h b/lib/lextable.h index 80d318e..73c92d4 100644 --- a/lib/lextable.h +++ b/lib/lextable.h @@ -1,745 +1,760 @@ /* pos 0000: 0 */ 0x67 /* 'g' */, 0x3D, 0x00 /* (to 0x003D state 1) */, 0x70 /* 'p' */, 0x3F, 0x00 /* (to 0x0042 state 5) */, - 0x6F /* 'o' */, 0x48, 0x00 /* (to 0x004E state 10) */, - 0x68 /* 'h' */, 0x54, 0x00 /* (to 0x005D state 18) */, - 0x63 /* 'c' */, 0x5D, 0x00 /* (to 0x0069 state 23) */, - 0x75 /* 'u' */, 0x78, 0x00 /* (to 0x0087 state 34) */, - 0x73 /* 's' */, 0x8B, 0x00 /* (to 0x009D state 48) */, - 0x0D /* '.' */, 0xC4, 0x00 /* (to 0x00D9 state 68) */, - 0x61 /* 'a' */, 0x16, 0x01 /* (to 0x012E state 129) */, - 0x69 /* 'i' */, 0x55, 0x01 /* (to 0x0170 state 163) */, - 0x64 /* 'd' */, 0xFE, 0x01 /* (to 0x021C state 265) */, - 0x72 /* 'r' */, 0x01, 0x02 /* (to 0x0222 state 270) */, - 0x3A /* ':' */, 0x32, 0x02 /* (to 0x0256 state 299) */, - 0x65 /* 'e' */, 0xC3, 0x02 /* (to 0x02EA state 414) */, - 0x66 /* 'f' */, 0xDF, 0x02 /* (to 0x0309 state 430) */, - 0x6C /* 'l' */, 0x01, 0x03 /* (to 0x032E state 463) */, - 0x6D /* 'm' */, 0x24, 0x03 /* (to 0x0354 state 489) */, - 0x74 /* 't' */, 0x93, 0x03 /* (to 0x03C6 state 583) */, - 0x76 /* 'v' */, 0xAE, 0x03 /* (to 0x03E4 state 611) */, - 0x77 /* 'w' */, 0xBB, 0x03 /* (to 0x03F4 state 619) */, + 0x6F /* 'o' */, 0x4E, 0x00 /* (to 0x0054 state 10) */, + 0x68 /* 'h' */, 0x5A, 0x00 /* (to 0x0063 state 18) */, + 0x63 /* 'c' */, 0x63, 0x00 /* (to 0x006F state 23) */, + 0x75 /* 'u' */, 0x7E, 0x00 /* (to 0x008D state 34) */, + 0x73 /* 's' */, 0x91, 0x00 /* (to 0x00A3 state 48) */, + 0x0D /* '.' */, 0xCA, 0x00 /* (to 0x00DF state 68) */, + 0x61 /* 'a' */, 0x1C, 0x01 /* (to 0x0134 state 129) */, + 0x69 /* 'i' */, 0x5B, 0x01 /* (to 0x0176 state 163) */, + 0x64 /* 'd' */, 0x04, 0x02 /* (to 0x0222 state 265) */, + 0x72 /* 'r' */, 0x0D, 0x02 /* (to 0x022E state 270) */, + 0x3A /* ':' */, 0x3E, 0x02 /* (to 0x0262 state 299) */, + 0x65 /* 'e' */, 0xCF, 0x02 /* (to 0x02F6 state 414) */, + 0x66 /* 'f' */, 0xEB, 0x02 /* (to 0x0315 state 430) */, + 0x6C /* 'l' */, 0x0D, 0x03 /* (to 0x033A state 463) */, + 0x6D /* 'm' */, 0x30, 0x03 /* (to 0x0360 state 489) */, + 0x74 /* 't' */, 0x9F, 0x03 /* (to 0x03D2 state 583) */, + 0x76 /* 'v' */, 0xBA, 0x03 /* (to 0x03F0 state 611) */, + 0x77 /* 'w' */, 0xC7, 0x03 /* (to 0x0400 state 619) */, 0x08, /* fail */ /* pos 003d: 1 */ 0xE5 /* 'e' -> */, /* pos 003e: 2 */ 0xF4 /* 't' -> */, /* pos 003f: 3 */ 0xA0 /* ' ' -> */, /* pos 0040: 4 */ 0x00, 0x00 /* - terminal marker 0 - */, -/* pos 0042: 5 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0049 state 6) */, - 0x72 /* 'r' */, 0x7D, 0x01 /* (to 0x01C2 state 211) */, - 0x08, /* fail */ -/* pos 0049: 6 */ 0xF3 /* 's' -> */, -/* pos 004a: 7 */ 0xF4 /* 't' -> */, -/* pos 004b: 8 */ 0xA0 /* ' ' -> */, -/* pos 004c: 9 */ 0x00, 0x01 /* - terminal marker 1 - */, -/* pos 004e: 10 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x0055 state 11) */, - 0x72 /* 'r' */, 0x45, 0x00 /* (to 0x0096 state 42) */, - 0x08, /* fail */ -/* pos 0055: 11 */ 0xF4 /* 't' -> */, -/* pos 0056: 12 */ 0xE9 /* 'i' -> */, -/* pos 0057: 13 */ 0xEF /* 'o' -> */, -/* pos 0058: 14 */ 0xEE /* 'n' -> */, -/* pos 0059: 15 */ 0xF3 /* 's' -> */, -/* pos 005a: 16 */ 0xA0 /* ' ' -> */, -/* pos 005b: 17 */ 0x00, 0x02 /* - terminal marker 2 - */, -/* pos 005d: 18 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0064 state 19) */, - 0x74 /* 't' */, 0xB3, 0x00 /* (to 0x0113 state 110) */, - 0x08, /* fail */ -/* pos 0064: 19 */ 0xF3 /* 's' -> */, -/* pos 0065: 20 */ 0xF4 /* 't' -> */, -/* pos 0066: 21 */ 0xBA /* ':' -> */, -/* pos 0067: 22 */ 0x00, 0x03 /* - terminal marker 3 - */, -/* pos 0069: 23 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0070 state 24) */, - 0x61 /* 'a' */, 0x63, 0x01 /* (to 0x01CF state 217) */, - 0x08, /* fail */ -/* pos 0070: 24 */ 0x6E /* 'n' */, 0x07, 0x00 /* (to 0x0077 state 25) */, - 0x6F /* 'o' */, 0x78, 0x01 /* (to 0x01EB state 243) */, - 0x08, /* fail */ -/* pos 0077: 25 */ 0x6E /* 'n' */, 0x07, 0x00 /* (to 0x007E state 26) */, - 0x74 /* 't' */, 0x77, 0x01 /* (to 0x01F1 state 248) */, - 0x08, /* fail */ -/* pos 007e: 26 */ 0xE5 /* 'e' -> */, -/* pos 007f: 27 */ 0xE3 /* 'c' -> */, -/* pos 0080: 28 */ 0xF4 /* 't' -> */, -/* pos 0081: 29 */ 0xE9 /* 'i' -> */, -/* pos 0082: 30 */ 0xEF /* 'o' -> */, -/* pos 0083: 31 */ 0xEE /* 'n' -> */, -/* pos 0084: 32 */ 0xBA /* ':' -> */, -/* pos 0085: 33 */ 0x00, 0x04 /* - terminal marker 4 - */, -/* pos 0087: 34 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x008E state 35) */, - 0x73 /* 's' */, 0x4F, 0x03 /* (to 0x03D9 state 601) */, - 0x08, /* fail */ -/* pos 008e: 35 */ 0xE7 /* 'g' -> */, -/* pos 008f: 36 */ 0xF2 /* 'r' -> */, -/* pos 0090: 37 */ 0xE1 /* 'a' -> */, -/* pos 0091: 38 */ 0xE4 /* 'd' -> */, -/* pos 0092: 39 */ 0xE5 /* 'e' -> */, -/* pos 0093: 40 */ 0xBA /* ':' -> */, -/* pos 0094: 41 */ 0x00, 0x05 /* - terminal marker 5 - */, -/* pos 0096: 42 */ 0xE9 /* 'i' -> */, -/* pos 0097: 43 */ 0xE7 /* 'g' -> */, -/* pos 0098: 44 */ 0xE9 /* 'i' -> */, -/* pos 0099: 45 */ 0xEE /* 'n' -> */, -/* pos 009a: 46 */ 0xBA /* ':' -> */, -/* pos 009b: 47 */ 0x00, 0x06 /* - terminal marker 6 - */, -/* pos 009d: 48 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x00A4 state 49) */, - 0x74 /* 't' */, 0x0C, 0x03 /* (to 0x03AC state 558) */, - 0x08, /* fail */ -/* pos 00a4: 49 */ 0x63 /* 'c' */, 0x0A, 0x00 /* (to 0x00AE state 50) */, - 0x72 /* 'r' */, 0xF5, 0x02 /* (to 0x039C state 544) */, - 0x74 /* 't' */, 0xF8, 0x02 /* (to 0x03A2 state 549) */, - 0x08, /* fail */ -/* pos 00ae: 50 */ 0xAD /* '-' -> */, -/* pos 00af: 51 */ 0xF7 /* 'w' -> */, -/* pos 00b0: 52 */ 0xE5 /* 'e' -> */, -/* pos 00b1: 53 */ 0xE2 /* 'b' -> */, -/* pos 00b2: 54 */ 0xF3 /* 's' -> */, -/* pos 00b3: 55 */ 0xEF /* 'o' -> */, -/* pos 00b4: 56 */ 0xE3 /* 'c' -> */, -/* pos 00b5: 57 */ 0xEB /* 'k' -> */, -/* pos 00b6: 58 */ 0xE5 /* 'e' -> */, -/* pos 00b7: 59 */ 0xF4 /* 't' -> */, -/* pos 00b8: 60 */ 0xAD /* '-' -> */, -/* pos 00b9: 61 */ 0x64 /* 'd' */, 0x19, 0x00 /* (to 0x00D2 state 62) */, - 0x65 /* 'e' */, 0x20, 0x00 /* (to 0x00DC state 70) */, - 0x6B /* 'k' */, 0x29, 0x00 /* (to 0x00E8 state 81) */, - 0x70 /* 'p' */, 0x38, 0x00 /* (to 0x00FA state 88) */, - 0x61 /* 'a' */, 0x3F, 0x00 /* (to 0x0104 state 97) */, - 0x6E /* 'n' */, 0x44, 0x00 /* (to 0x010C state 104) */, - 0x76 /* 'v' */, 0x7A, 0x01 /* (to 0x0245 state 284) */, - 0x6F /* 'o' */, 0x80, 0x01 /* (to 0x024E state 292) */, - 0x08, /* fail */ -/* pos 00d2: 62 */ 0xF2 /* 'r' -> */, -/* pos 00d3: 63 */ 0xE1 /* 'a' -> */, -/* pos 00d4: 64 */ 0xE6 /* 'f' -> */, -/* pos 00d5: 65 */ 0xF4 /* 't' -> */, -/* pos 00d6: 66 */ 0xBA /* ':' -> */, -/* pos 00d7: 67 */ 0x00, 0x07 /* - terminal marker 7 - */, -/* pos 00d9: 68 */ 0x8A /* '.' -> */, -/* pos 00da: 69 */ 0x00, 0x08 /* - terminal marker 8 - */, -/* pos 00dc: 70 */ 0xF8 /* 'x' -> */, -/* pos 00dd: 71 */ 0xF4 /* 't' -> */, -/* pos 00de: 72 */ 0xE5 /* 'e' -> */, -/* pos 00df: 73 */ 0xEE /* 'n' -> */, -/* pos 00e0: 74 */ 0xF3 /* 's' -> */, -/* pos 00e1: 75 */ 0xE9 /* 'i' -> */, -/* pos 00e2: 76 */ 0xEF /* 'o' -> */, -/* pos 00e3: 77 */ 0xEE /* 'n' -> */, -/* pos 00e4: 78 */ 0xF3 /* 's' -> */, -/* pos 00e5: 79 */ 0xBA /* ':' -> */, -/* pos 00e6: 80 */ 0x00, 0x09 /* - terminal marker 9 - */, -/* pos 00e8: 81 */ 0xE5 /* 'e' -> */, -/* pos 00e9: 82 */ 0xF9 /* 'y' -> */, -/* pos 00ea: 83 */ 0x31 /* '1' */, 0x0A, 0x00 /* (to 0x00F4 state 84) */, - 0x32 /* '2' */, 0x0A, 0x00 /* (to 0x00F7 state 86) */, - 0x3A /* ':' */, 0x53, 0x01 /* (to 0x0243 state 283) */, - 0x08, /* fail */ -/* pos 00f4: 84 */ 0xBA /* ':' -> */, -/* pos 00f5: 85 */ 0x00, 0x0A /* - terminal marker 10 - */, -/* pos 00f7: 86 */ 0xBA /* ':' -> */, -/* pos 00f8: 87 */ 0x00, 0x0B /* - terminal marker 11 - */, -/* pos 00fa: 88 */ 0xF2 /* 'r' -> */, -/* pos 00fb: 89 */ 0xEF /* 'o' -> */, -/* pos 00fc: 90 */ 0xF4 /* 't' -> */, -/* pos 00fd: 91 */ 0xEF /* 'o' -> */, -/* pos 00fe: 92 */ 0xE3 /* 'c' -> */, -/* pos 00ff: 93 */ 0xEF /* 'o' -> */, -/* pos 0100: 94 */ 0xEC /* 'l' -> */, -/* pos 0101: 95 */ 0xBA /* ':' -> */, -/* pos 0102: 96 */ 0x00, 0x0C /* - terminal marker 12 - */, -/* pos 0104: 97 */ 0xE3 /* 'c' -> */, -/* pos 0105: 98 */ 0xE3 /* 'c' -> */, -/* pos 0106: 99 */ 0xE5 /* 'e' -> */, -/* pos 0107: 100 */ 0xF0 /* 'p' -> */, -/* pos 0108: 101 */ 0xF4 /* 't' -> */, -/* pos 0109: 102 */ 0xBA /* ':' -> */, -/* pos 010a: 103 */ 0x00, 0x0D /* - terminal marker 13 - */, -/* pos 010c: 104 */ 0xEF /* 'o' -> */, -/* pos 010d: 105 */ 0xEE /* 'n' -> */, -/* pos 010e: 106 */ 0xE3 /* 'c' -> */, -/* pos 010f: 107 */ 0xE5 /* 'e' -> */, -/* pos 0110: 108 */ 0xBA /* ':' -> */, -/* pos 0111: 109 */ 0x00, 0x0E /* - terminal marker 14 - */, -/* pos 0113: 110 */ 0xF4 /* 't' -> */, -/* pos 0114: 111 */ 0xF0 /* 'p' -> */, -/* pos 0115: 112 */ 0x2F /* '/' */, 0x07, 0x00 /* (to 0x011C state 113) */, - 0x32 /* '2' */, 0x0A, 0x00 /* (to 0x0122 state 118) */, - 0x08, /* fail */ -/* pos 011c: 113 */ 0xB1 /* '1' -> */, -/* pos 011d: 114 */ 0xAE /* '.' -> */, -/* pos 011e: 115 */ 0xB1 /* '1' -> */, -/* pos 011f: 116 */ 0xA0 /* ' ' -> */, -/* pos 0120: 117 */ 0x00, 0x0F /* - terminal marker 15 - */, -/* pos 0122: 118 */ 0xAD /* '-' -> */, -/* pos 0123: 119 */ 0xF3 /* 's' -> */, -/* pos 0124: 120 */ 0xE5 /* 'e' -> */, -/* pos 0125: 121 */ 0xF4 /* 't' -> */, -/* pos 0126: 122 */ 0xF4 /* 't' -> */, -/* pos 0127: 123 */ 0xE9 /* 'i' -> */, -/* pos 0128: 124 */ 0xEE /* 'n' -> */, -/* pos 0129: 125 */ 0xE7 /* 'g' -> */, -/* pos 012a: 126 */ 0xF3 /* 's' -> */, -/* pos 012b: 127 */ 0xBA /* ':' -> */, -/* pos 012c: 128 */ 0x00, 0x10 /* - terminal marker 16 - */, -/* pos 012e: 129 */ 0x63 /* 'c' */, 0x0D, 0x00 /* (to 0x013B state 130) */, - 0x75 /* 'u' */, 0xAC, 0x00 /* (to 0x01DD state 230) */, - 0x67 /* 'g' */, 0x7C, 0x01 /* (to 0x02B0 state 363) */, - 0x6C /* 'l' */, 0x7D, 0x01 /* (to 0x02B4 state 366) */, - 0x08, /* fail */ -/* pos 013b: 130 */ 0xE3 /* 'c' -> */, -/* pos 013c: 131 */ 0xE5 /* 'e' -> */, -/* pos 013d: 132 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x0144 state 133) */, - 0x73 /* 's' */, 0x0E, 0x00 /* (to 0x014E state 136) */, - 0x08, /* fail */ -/* pos 0144: 133 */ 0xF4 /* 't' -> */, -/* pos 0145: 134 */ 0x3A /* ':' */, 0x07, 0x00 /* (to 0x014C state 135) */, - 0x2D /* '-' */, 0x59, 0x00 /* (to 0x01A1 state 192) */, - 0x08, /* fail */ -/* pos 014c: 135 */ 0x00, 0x11 /* - terminal marker 17 - */, -/* pos 014e: 136 */ 0xF3 /* 's' -> */, -/* pos 014f: 137 */ 0xAD /* '-' -> */, -/* pos 0150: 138 */ 0xE3 /* 'c' -> */, -/* pos 0151: 139 */ 0xEF /* 'o' -> */, -/* pos 0152: 140 */ 0xEE /* 'n' -> */, -/* pos 0153: 141 */ 0xF4 /* 't' -> */, -/* pos 0154: 142 */ 0xF2 /* 'r' -> */, -/* pos 0155: 143 */ 0xEF /* 'o' -> */, -/* pos 0156: 144 */ 0xEC /* 'l' -> */, -/* pos 0157: 145 */ 0xAD /* '-' -> */, -/* pos 0158: 146 */ 0x72 /* 'r' */, 0x07, 0x00 /* (to 0x015F state 147) */, - 0x61 /* 'a' */, 0x47, 0x01 /* (to 0x02A2 state 350) */, - 0x08, /* fail */ -/* pos 015f: 147 */ 0xE5 /* 'e' -> */, -/* pos 0160: 148 */ 0xF1 /* 'q' -> */, -/* pos 0161: 149 */ 0xF5 /* 'u' -> */, -/* pos 0162: 150 */ 0xE5 /* 'e' -> */, -/* pos 0163: 151 */ 0xF3 /* 's' -> */, -/* pos 0164: 152 */ 0xF4 /* 't' -> */, -/* pos 0165: 153 */ 0xAD /* '-' -> */, -/* pos 0166: 154 */ 0xE8 /* 'h' -> */, -/* pos 0167: 155 */ 0xE5 /* 'e' -> */, -/* pos 0168: 156 */ 0xE1 /* 'a' -> */, -/* pos 0169: 157 */ 0xE4 /* 'd' -> */, -/* pos 016a: 158 */ 0xE5 /* 'e' -> */, -/* pos 016b: 159 */ 0xF2 /* 'r' -> */, -/* pos 016c: 160 */ 0xF3 /* 's' -> */, -/* pos 016d: 161 */ 0xBA /* ':' -> */, -/* pos 016e: 162 */ 0x00, 0x12 /* - terminal marker 18 - */, -/* pos 0170: 163 */ 0xE6 /* 'f' -> */, -/* pos 0171: 164 */ 0xAD /* '-' -> */, -/* pos 0172: 165 */ 0x6D /* 'm' */, 0x0D, 0x00 /* (to 0x017F state 166) */, - 0x6E /* 'n' */, 0x20, 0x00 /* (to 0x0195 state 181) */, - 0x72 /* 'r' */, 0x9D, 0x01 /* (to 0x0315 state 440) */, - 0x75 /* 'u' */, 0xA1, 0x01 /* (to 0x031C state 446) */, - 0x08, /* fail */ -/* pos 017f: 166 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0186 state 167) */, - 0x61 /* 'a' */, 0x8D, 0x01 /* (to 0x030F state 435) */, - 0x08, /* fail */ -/* pos 0186: 167 */ 0xE4 /* 'd' -> */, -/* pos 0187: 168 */ 0xE9 /* 'i' -> */, -/* pos 0188: 169 */ 0xE6 /* 'f' -> */, -/* pos 0189: 170 */ 0xE9 /* 'i' -> */, -/* pos 018a: 171 */ 0xE5 /* 'e' -> */, -/* pos 018b: 172 */ 0xE4 /* 'd' -> */, -/* pos 018c: 173 */ 0xAD /* '-' -> */, -/* pos 018d: 174 */ 0xF3 /* 's' -> */, -/* pos 018e: 175 */ 0xE9 /* 'i' -> */, -/* pos 018f: 176 */ 0xEE /* 'n' -> */, -/* pos 0190: 177 */ 0xE3 /* 'c' -> */, -/* pos 0191: 178 */ 0xE5 /* 'e' -> */, -/* pos 0192: 179 */ 0xBA /* ':' -> */, -/* pos 0193: 180 */ 0x00, 0x13 /* - terminal marker 19 - */, -/* pos 0195: 181 */ 0xEF /* 'o' -> */, -/* pos 0196: 182 */ 0xEE /* 'n' -> */, -/* pos 0197: 183 */ 0xE5 /* 'e' -> */, -/* pos 0198: 184 */ 0xAD /* '-' -> */, -/* pos 0199: 185 */ 0xED /* 'm' -> */, -/* pos 019a: 186 */ 0xE1 /* 'a' -> */, -/* pos 019b: 187 */ 0xF4 /* 't' -> */, -/* pos 019c: 188 */ 0xE3 /* 'c' -> */, -/* pos 019d: 189 */ 0xE8 /* 'h' -> */, -/* pos 019e: 190 */ 0xBA /* ':' -> */, -/* pos 019f: 191 */ 0x00, 0x14 /* - terminal marker 20 - */, -/* pos 01a1: 192 */ 0x65 /* 'e' */, 0x0D, 0x00 /* (to 0x01AE state 193) */, - 0x6C /* 'l' */, 0x14, 0x00 /* (to 0x01B8 state 202) */, - 0x63 /* 'c' */, 0xEA, 0x00 /* (to 0x0291 state 335) */, - 0x72 /* 'r' */, 0xF0, 0x00 /* (to 0x029A state 343) */, - 0x08, /* fail */ -/* pos 01ae: 193 */ 0xEE /* 'n' -> */, -/* pos 01af: 194 */ 0xE3 /* 'c' -> */, -/* pos 01b0: 195 */ 0xEF /* 'o' -> */, -/* pos 01b1: 196 */ 0xE4 /* 'd' -> */, -/* pos 01b2: 197 */ 0xE9 /* 'i' -> */, -/* pos 01b3: 198 */ 0xEE /* 'n' -> */, -/* pos 01b4: 199 */ 0xE7 /* 'g' -> */, -/* pos 01b5: 200 */ 0xBA /* ':' -> */, -/* pos 01b6: 201 */ 0x00, 0x15 /* - terminal marker 21 - */, -/* pos 01b8: 202 */ 0xE1 /* 'a' -> */, -/* pos 01b9: 203 */ 0xEE /* 'n' -> */, -/* pos 01ba: 204 */ 0xE7 /* 'g' -> */, -/* pos 01bb: 205 */ 0xF5 /* 'u' -> */, -/* pos 01bc: 206 */ 0xE1 /* 'a' -> */, -/* pos 01bd: 207 */ 0xE7 /* 'g' -> */, -/* pos 01be: 208 */ 0xE5 /* 'e' -> */, -/* pos 01bf: 209 */ 0xBA /* ':' -> */, -/* pos 01c0: 210 */ 0x00, 0x16 /* - terminal marker 22 - */, -/* pos 01c2: 211 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x01C9 state 212) */, - 0x6F /* 'o' */, 0x9D, 0x01 /* (to 0x0362 state 502) */, - 0x08, /* fail */ -/* pos 01c9: 212 */ 0xE7 /* 'g' -> */, -/* pos 01ca: 213 */ 0xED /* 'm' -> */, -/* pos 01cb: 214 */ 0xE1 /* 'a' -> */, -/* pos 01cc: 215 */ 0xBA /* ':' -> */, -/* pos 01cd: 216 */ 0x00, 0x17 /* - terminal marker 23 - */, -/* pos 01cf: 217 */ 0xE3 /* 'c' -> */, -/* pos 01d0: 218 */ 0xE8 /* 'h' -> */, -/* pos 01d1: 219 */ 0xE5 /* 'e' -> */, -/* pos 01d2: 220 */ 0xAD /* '-' -> */, -/* pos 01d3: 221 */ 0xE3 /* 'c' -> */, -/* pos 01d4: 222 */ 0xEF /* 'o' -> */, -/* pos 01d5: 223 */ 0xEE /* 'n' -> */, -/* pos 01d6: 224 */ 0xF4 /* 't' -> */, -/* pos 01d7: 225 */ 0xF2 /* 'r' -> */, -/* pos 01d8: 226 */ 0xEF /* 'o' -> */, -/* pos 01d9: 227 */ 0xEC /* 'l' -> */, -/* pos 01da: 228 */ 0xBA /* ':' -> */, -/* pos 01db: 229 */ 0x00, 0x18 /* - terminal marker 24 - */, -/* pos 01dd: 230 */ 0xF4 /* 't' -> */, -/* pos 01de: 231 */ 0xE8 /* 'h' -> */, -/* pos 01df: 232 */ 0xEF /* 'o' -> */, -/* pos 01e0: 233 */ 0xF2 /* 'r' -> */, -/* pos 01e1: 234 */ 0xE9 /* 'i' -> */, -/* pos 01e2: 235 */ 0xFA /* 'z' -> */, -/* pos 01e3: 236 */ 0xE1 /* 'a' -> */, -/* pos 01e4: 237 */ 0xF4 /* 't' -> */, -/* pos 01e5: 238 */ 0xE9 /* 'i' -> */, -/* pos 01e6: 239 */ 0xEF /* 'o' -> */, -/* pos 01e7: 240 */ 0xEE /* 'n' -> */, -/* pos 01e8: 241 */ 0xBA /* ':' -> */, -/* pos 01e9: 242 */ 0x00, 0x19 /* - terminal marker 25 - */, -/* pos 01eb: 243 */ 0xEB /* 'k' -> */, -/* pos 01ec: 244 */ 0xE9 /* 'i' -> */, -/* pos 01ed: 245 */ 0xE5 /* 'e' -> */, -/* pos 01ee: 246 */ 0xBA /* ':' -> */, -/* pos 01ef: 247 */ 0x00, 0x1A /* - terminal marker 26 - */, -/* pos 01f1: 248 */ 0xE5 /* 'e' -> */, -/* pos 01f2: 249 */ 0xEE /* 'n' -> */, -/* pos 01f3: 250 */ 0xF4 /* 't' -> */, -/* pos 01f4: 251 */ 0xAD /* '-' -> */, -/* pos 01f5: 252 */ 0x6C /* 'l' */, 0x10, 0x00 /* (to 0x0205 state 253) */, - 0x74 /* 't' */, 0x1E, 0x00 /* (to 0x0216 state 260) */, - 0x64 /* 'd' */, 0xBF, 0x00 /* (to 0x02BA state 371) */, - 0x65 /* 'e' */, 0xC9, 0x00 /* (to 0x02C7 state 383) */, - 0x72 /* 'r' */, 0xE2, 0x00 /* (to 0x02E3 state 408) */, - 0x08, /* fail */ -/* pos 0205: 253 */ 0x65 /* 'e' */, 0x0A, 0x00 /* (to 0x020F state 254) */, - 0x61 /* 'a' */, 0xC9, 0x00 /* (to 0x02D1 state 392) */, - 0x6F /* 'o' */, 0xCF, 0x00 /* (to 0x02DA state 400) */, - 0x08, /* fail */ -/* pos 020f: 254 */ 0xEE /* 'n' -> */, -/* pos 0210: 255 */ 0xE7 /* 'g' -> */, -/* pos 0211: 256 */ 0xF4 /* 't' -> */, -/* pos 0212: 257 */ 0xE8 /* 'h' -> */, -/* pos 0213: 258 */ 0xBA /* ':' -> */, -/* pos 0214: 259 */ 0x00, 0x1B /* - terminal marker 27 - */, -/* pos 0216: 260 */ 0xF9 /* 'y' -> */, -/* pos 0217: 261 */ 0xF0 /* 'p' -> */, -/* pos 0218: 262 */ 0xE5 /* 'e' -> */, -/* pos 0219: 263 */ 0xBA /* ':' -> */, -/* pos 021a: 264 */ 0x00, 0x1C /* - terminal marker 28 - */, -/* pos 021c: 265 */ 0xE1 /* 'a' -> */, -/* pos 021d: 266 */ 0xF4 /* 't' -> */, -/* pos 021e: 267 */ 0xE5 /* 'e' -> */, -/* pos 021f: 268 */ 0xBA /* ':' -> */, -/* pos 0220: 269 */ 0x00, 0x1D /* - terminal marker 29 - */, -/* pos 0222: 270 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x0229 state 271) */, - 0x65 /* 'e' */, 0x0A, 0x00 /* (to 0x022F state 276) */, - 0x08, /* fail */ -/* pos 0229: 271 */ 0xEE /* 'n' -> */, -/* pos 022a: 272 */ 0xE7 /* 'g' -> */, -/* pos 022b: 273 */ 0xE5 /* 'e' -> */, -/* pos 022c: 274 */ 0xBA /* ':' -> */, -/* pos 022d: 275 */ 0x00, 0x1E /* - terminal marker 30 - */, -/* pos 022f: 276 */ 0x66 /* 'f' */, 0x07, 0x00 /* (to 0x0236 state 277) */, - 0x74 /* 't' */, 0x5F, 0x01 /* (to 0x0391 state 534) */, - 0x08, /* fail */ -/* pos 0236: 277 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x023D state 278) */, - 0x72 /* 'r' */, 0x52, 0x01 /* (to 0x038B state 529) */, - 0x08, /* fail */ -/* pos 023d: 278 */ 0xF2 /* 'r' -> */, -/* pos 023e: 279 */ 0xE5 /* 'e' -> */, -/* pos 023f: 280 */ 0xF2 /* 'r' -> */, -/* pos 0240: 281 */ 0xBA /* ':' -> */, -/* pos 0241: 282 */ 0x00, 0x1F /* - terminal marker 31 - */, -/* pos 0243: 283 */ 0x00, 0x20 /* - terminal marker 32 - */, -/* pos 0245: 284 */ 0xE5 /* 'e' -> */, -/* pos 0246: 285 */ 0xF2 /* 'r' -> */, -/* pos 0247: 286 */ 0xF3 /* 's' -> */, -/* pos 0248: 287 */ 0xE9 /* 'i' -> */, -/* pos 0249: 288 */ 0xEF /* 'o' -> */, -/* pos 024a: 289 */ 0xEE /* 'n' -> */, -/* pos 024b: 290 */ 0xBA /* ':' -> */, -/* pos 024c: 291 */ 0x00, 0x21 /* - terminal marker 33 - */, -/* pos 024e: 292 */ 0xF2 /* 'r' -> */, -/* pos 024f: 293 */ 0xE9 /* 'i' -> */, -/* pos 0250: 294 */ 0xE7 /* 'g' -> */, -/* pos 0251: 295 */ 0xE9 /* 'i' -> */, -/* pos 0252: 296 */ 0xEE /* 'n' -> */, -/* pos 0253: 297 */ 0xBA /* ':' -> */, -/* pos 0254: 298 */ 0x00, 0x22 /* - terminal marker 34 - */, -/* pos 0256: 299 */ 0x61 /* 'a' */, 0x0D, 0x00 /* (to 0x0263 state 300) */, - 0x6D /* 'm' */, 0x15, 0x00 /* (to 0x026E state 310) */, - 0x70 /* 'p' */, 0x1A, 0x00 /* (to 0x0276 state 317) */, - 0x73 /* 's' */, 0x1D, 0x00 /* (to 0x027C state 322) */, - 0x08, /* fail */ -/* pos 0263: 300 */ 0xF5 /* 'u' -> */, -/* pos 0264: 301 */ 0xF4 /* 't' -> */, -/* pos 0265: 302 */ 0xE8 /* 'h' -> */, -/* pos 0266: 303 */ 0xEF /* 'o' -> */, -/* pos 0267: 304 */ 0xF2 /* 'r' -> */, -/* pos 0268: 305 */ 0xE9 /* 'i' -> */, -/* pos 0269: 306 */ 0xF4 /* 't' -> */, -/* pos 026a: 307 */ 0xF9 /* 'y' -> */, -/* pos 026b: 308 */ 0xBA /* ':' -> */, -/* pos 026c: 309 */ 0x00, 0x23 /* - terminal marker 35 - */, -/* pos 026e: 310 */ 0xE5 /* 'e' -> */, -/* pos 026f: 311 */ 0xF4 /* 't' -> */, -/* pos 0270: 312 */ 0xE8 /* 'h' -> */, -/* pos 0271: 313 */ 0xEF /* 'o' -> */, -/* pos 0272: 314 */ 0xE4 /* 'd' -> */, -/* pos 0273: 315 */ 0xBA /* ':' -> */, -/* pos 0274: 316 */ 0x00, 0x24 /* - terminal marker 36 - */, -/* pos 0276: 317 */ 0xE1 /* 'a' -> */, -/* pos 0277: 318 */ 0xF4 /* 't' -> */, -/* pos 0278: 319 */ 0xE8 /* 'h' -> */, -/* pos 0279: 320 */ 0xBA /* ':' -> */, -/* pos 027a: 321 */ 0x00, 0x25 /* - terminal marker 37 - */, -/* pos 027c: 322 */ 0x63 /* 'c' */, 0x07, 0x00 /* (to 0x0283 state 323) */, - 0x74 /* 't' */, 0x0B, 0x00 /* (to 0x028A state 329) */, - 0x08, /* fail */ -/* pos 0283: 323 */ 0xE8 /* 'h' -> */, -/* pos 0284: 324 */ 0xE5 /* 'e' -> */, -/* pos 0285: 325 */ 0xED /* 'm' -> */, -/* pos 0286: 326 */ 0xE5 /* 'e' -> */, -/* pos 0287: 327 */ 0xBA /* ':' -> */, -/* pos 0288: 328 */ 0x00, 0x26 /* - terminal marker 38 - */, -/* pos 028a: 329 */ 0xE1 /* 'a' -> */, -/* pos 028b: 330 */ 0xF4 /* 't' -> */, -/* pos 028c: 331 */ 0xF5 /* 'u' -> */, -/* pos 028d: 332 */ 0xF3 /* 's' -> */, -/* pos 028e: 333 */ 0xBA /* ':' -> */, -/* pos 028f: 334 */ 0x00, 0x27 /* - terminal marker 39 - */, -/* pos 0291: 335 */ 0xE8 /* 'h' -> */, -/* pos 0292: 336 */ 0xE1 /* 'a' -> */, -/* pos 0293: 337 */ 0xF2 /* 'r' -> */, -/* pos 0294: 338 */ 0xF3 /* 's' -> */, -/* pos 0295: 339 */ 0xE5 /* 'e' -> */, -/* pos 0296: 340 */ 0xF4 /* 't' -> */, -/* pos 0297: 341 */ 0xBA /* ':' -> */, -/* pos 0298: 342 */ 0x00, 0x28 /* - terminal marker 40 - */, -/* pos 029a: 343 */ 0xE1 /* 'a' -> */, -/* pos 029b: 344 */ 0xEE /* 'n' -> */, -/* pos 029c: 345 */ 0xE7 /* 'g' -> */, -/* pos 029d: 346 */ 0xE5 /* 'e' -> */, -/* pos 029e: 347 */ 0xF3 /* 's' -> */, -/* pos 029f: 348 */ 0xBA /* ':' -> */, -/* pos 02a0: 349 */ 0x00, 0x29 /* - terminal marker 41 - */, -/* pos 02a2: 350 */ 0xEC /* 'l' -> */, -/* pos 02a3: 351 */ 0xEC /* 'l' -> */, -/* pos 02a4: 352 */ 0xEF /* 'o' -> */, -/* pos 02a5: 353 */ 0xF7 /* 'w' -> */, -/* pos 02a6: 354 */ 0xAD /* '-' -> */, -/* pos 02a7: 355 */ 0xEF /* 'o' -> */, -/* pos 02a8: 356 */ 0xF2 /* 'r' -> */, -/* pos 02a9: 357 */ 0xE9 /* 'i' -> */, -/* pos 02aa: 358 */ 0xE7 /* 'g' -> */, -/* pos 02ab: 359 */ 0xE9 /* 'i' -> */, -/* pos 02ac: 360 */ 0xEE /* 'n' -> */, -/* pos 02ad: 361 */ 0xBA /* ':' -> */, -/* pos 02ae: 362 */ 0x00, 0x2A /* - terminal marker 42 - */, -/* pos 02b0: 363 */ 0xE5 /* 'e' -> */, -/* pos 02b1: 364 */ 0xBA /* ':' -> */, -/* pos 02b2: 365 */ 0x00, 0x2B /* - terminal marker 43 - */, -/* pos 02b4: 366 */ 0xEC /* 'l' -> */, -/* pos 02b5: 367 */ 0xEF /* 'o' -> */, -/* pos 02b6: 368 */ 0xF7 /* 'w' -> */, -/* pos 02b7: 369 */ 0xBA /* ':' -> */, -/* pos 02b8: 370 */ 0x00, 0x2C /* - terminal marker 44 - */, -/* pos 02ba: 371 */ 0xE9 /* 'i' -> */, -/* pos 02bb: 372 */ 0xF3 /* 's' -> */, -/* pos 02bc: 373 */ 0xF0 /* 'p' -> */, -/* pos 02bd: 374 */ 0xEF /* 'o' -> */, -/* pos 02be: 375 */ 0xF3 /* 's' -> */, -/* pos 02bf: 376 */ 0xE9 /* 'i' -> */, -/* pos 02c0: 377 */ 0xF4 /* 't' -> */, -/* pos 02c1: 378 */ 0xE9 /* 'i' -> */, -/* pos 02c2: 379 */ 0xEF /* 'o' -> */, -/* pos 02c3: 380 */ 0xEE /* 'n' -> */, -/* pos 02c4: 381 */ 0xBA /* ':' -> */, -/* pos 02c5: 382 */ 0x00, 0x2D /* - terminal marker 45 - */, -/* pos 02c7: 383 */ 0xEE /* 'n' -> */, -/* pos 02c8: 384 */ 0xE3 /* 'c' -> */, -/* pos 02c9: 385 */ 0xEF /* 'o' -> */, -/* pos 02ca: 386 */ 0xE4 /* 'd' -> */, -/* pos 02cb: 387 */ 0xE9 /* 'i' -> */, -/* pos 02cc: 388 */ 0xEE /* 'n' -> */, -/* pos 02cd: 389 */ 0xE7 /* 'g' -> */, -/* pos 02ce: 390 */ 0xBA /* ':' -> */, -/* pos 02cf: 391 */ 0x00, 0x2E /* - terminal marker 46 - */, -/* pos 02d1: 392 */ 0xEE /* 'n' -> */, -/* pos 02d2: 393 */ 0xE7 /* 'g' -> */, -/* pos 02d3: 394 */ 0xF5 /* 'u' -> */, -/* pos 02d4: 395 */ 0xE1 /* 'a' -> */, -/* pos 02d5: 396 */ 0xE7 /* 'g' -> */, -/* pos 02d6: 397 */ 0xE5 /* 'e' -> */, -/* pos 02d7: 398 */ 0xBA /* ':' -> */, -/* pos 02d8: 399 */ 0x00, 0x2F /* - terminal marker 47 - */, -/* pos 02da: 400 */ 0xE3 /* 'c' -> */, -/* pos 02db: 401 */ 0xE1 /* 'a' -> */, -/* pos 02dc: 402 */ 0xF4 /* 't' -> */, -/* pos 02dd: 403 */ 0xE9 /* 'i' -> */, -/* pos 02de: 404 */ 0xEF /* 'o' -> */, -/* pos 02df: 405 */ 0xEE /* 'n' -> */, -/* pos 02e0: 406 */ 0xBA /* ':' -> */, -/* pos 02e1: 407 */ 0x00, 0x30 /* - terminal marker 48 - */, -/* pos 02e3: 408 */ 0xE1 /* 'a' -> */, -/* pos 02e4: 409 */ 0xEE /* 'n' -> */, -/* pos 02e5: 410 */ 0xE7 /* 'g' -> */, -/* pos 02e6: 411 */ 0xE5 /* 'e' -> */, -/* pos 02e7: 412 */ 0xBA /* ':' -> */, -/* pos 02e8: 413 */ 0x00, 0x31 /* - terminal marker 49 - */, -/* pos 02ea: 414 */ 0x74 /* 't' */, 0x07, 0x00 /* (to 0x02F1 state 415) */, - 0x78 /* 'x' */, 0x09, 0x00 /* (to 0x02F6 state 419) */, - 0x08, /* fail */ -/* pos 02f1: 415 */ 0xE1 /* 'a' -> */, -/* pos 02f2: 416 */ 0xE7 /* 'g' -> */, -/* pos 02f3: 417 */ 0xBA /* ':' -> */, -/* pos 02f4: 418 */ 0x00, 0x32 /* - terminal marker 50 - */, -/* pos 02f6: 419 */ 0xF0 /* 'p' -> */, -/* pos 02f7: 420 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x02FE state 421) */, - 0x69 /* 'i' */, 0x09, 0x00 /* (to 0x0303 state 425) */, - 0x08, /* fail */ -/* pos 02fe: 421 */ 0xE3 /* 'c' -> */, -/* pos 02ff: 422 */ 0xF4 /* 't' -> */, -/* pos 0300: 423 */ 0xBA /* ':' -> */, -/* pos 0301: 424 */ 0x00, 0x33 /* - terminal marker 51 - */, -/* pos 0303: 425 */ 0xF2 /* 'r' -> */, -/* pos 0304: 426 */ 0xE5 /* 'e' -> */, -/* pos 0305: 427 */ 0xF3 /* 's' -> */, -/* pos 0306: 428 */ 0xBA /* ':' -> */, -/* pos 0307: 429 */ 0x00, 0x34 /* - terminal marker 52 - */, -/* pos 0309: 430 */ 0xF2 /* 'r' -> */, -/* pos 030a: 431 */ 0xEF /* 'o' -> */, -/* pos 030b: 432 */ 0xED /* 'm' -> */, -/* pos 030c: 433 */ 0xBA /* ':' -> */, -/* pos 030d: 434 */ 0x00, 0x35 /* - terminal marker 53 - */, -/* pos 030f: 435 */ 0xF4 /* 't' -> */, -/* pos 0310: 436 */ 0xE3 /* 'c' -> */, -/* pos 0311: 437 */ 0xE8 /* 'h' -> */, -/* pos 0312: 438 */ 0xBA /* ':' -> */, -/* pos 0313: 439 */ 0x00, 0x36 /* - terminal marker 54 - */, -/* pos 0315: 440 */ 0xE1 /* 'a' -> */, -/* pos 0316: 441 */ 0xEE /* 'n' -> */, -/* pos 0317: 442 */ 0xE7 /* 'g' -> */, -/* pos 0318: 443 */ 0xE5 /* 'e' -> */, -/* pos 0319: 444 */ 0xBA /* ':' -> */, -/* pos 031a: 445 */ 0x00, 0x37 /* - terminal marker 55 - */, -/* pos 031c: 446 */ 0xEE /* 'n' -> */, -/* pos 031d: 447 */ 0xED /* 'm' -> */, -/* pos 031e: 448 */ 0xEF /* 'o' -> */, -/* pos 031f: 449 */ 0xE4 /* 'd' -> */, -/* pos 0320: 450 */ 0xE9 /* 'i' -> */, -/* pos 0321: 451 */ 0xE6 /* 'f' -> */, -/* pos 0322: 452 */ 0xE9 /* 'i' -> */, -/* pos 0323: 453 */ 0xE5 /* 'e' -> */, -/* pos 0324: 454 */ 0xE4 /* 'd' -> */, -/* pos 0325: 455 */ 0xAD /* '-' -> */, -/* pos 0326: 456 */ 0xF3 /* 's' -> */, -/* pos 0327: 457 */ 0xE9 /* 'i' -> */, -/* pos 0328: 458 */ 0xEE /* 'n' -> */, -/* pos 0329: 459 */ 0xE3 /* 'c' -> */, -/* pos 032a: 460 */ 0xE5 /* 'e' -> */, -/* pos 032b: 461 */ 0xBA /* ':' -> */, -/* pos 032c: 462 */ 0x00, 0x38 /* - terminal marker 56 - */, -/* pos 032e: 463 */ 0x61 /* 'a' */, 0x0A, 0x00 /* (to 0x0338 state 464) */, - 0x69 /* 'i' */, 0x15, 0x00 /* (to 0x0346 state 477) */, - 0x6F /* 'o' */, 0x17, 0x00 /* (to 0x034B state 481) */, - 0x08, /* fail */ -/* pos 0338: 464 */ 0xF3 /* 's' -> */, -/* pos 0339: 465 */ 0xF4 /* 't' -> */, -/* pos 033a: 466 */ 0xAD /* '-' -> */, -/* pos 033b: 467 */ 0xED /* 'm' -> */, -/* pos 033c: 468 */ 0xEF /* 'o' -> */, -/* pos 033d: 469 */ 0xE4 /* 'd' -> */, -/* pos 033e: 470 */ 0xE9 /* 'i' -> */, -/* pos 033f: 471 */ 0xE6 /* 'f' -> */, -/* pos 0340: 472 */ 0xE9 /* 'i' -> */, -/* pos 0341: 473 */ 0xE5 /* 'e' -> */, -/* pos 0342: 474 */ 0xE4 /* 'd' -> */, -/* pos 0343: 475 */ 0xBA /* ':' -> */, -/* pos 0344: 476 */ 0x00, 0x39 /* - terminal marker 57 - */, -/* pos 0346: 477 */ 0xEE /* 'n' -> */, -/* pos 0347: 478 */ 0xEB /* 'k' -> */, -/* pos 0348: 479 */ 0xBA /* ':' -> */, -/* pos 0349: 480 */ 0x00, 0x3A /* - terminal marker 58 - */, -/* pos 034b: 481 */ 0xE3 /* 'c' -> */, -/* pos 034c: 482 */ 0xE1 /* 'a' -> */, -/* pos 034d: 483 */ 0xF4 /* 't' -> */, -/* pos 034e: 484 */ 0xE9 /* 'i' -> */, -/* pos 034f: 485 */ 0xEF /* 'o' -> */, -/* pos 0350: 486 */ 0xEE /* 'n' -> */, -/* pos 0351: 487 */ 0xBA /* ':' -> */, -/* pos 0352: 488 */ 0x00, 0x3B /* - terminal marker 59 - */, -/* pos 0354: 489 */ 0xE1 /* 'a' -> */, -/* pos 0355: 490 */ 0xF8 /* 'x' -> */, -/* pos 0356: 491 */ 0xAD /* '-' -> */, -/* pos 0357: 492 */ 0xE6 /* 'f' -> */, -/* pos 0358: 493 */ 0xEF /* 'o' -> */, -/* pos 0359: 494 */ 0xF2 /* 'r' -> */, -/* pos 035a: 495 */ 0xF7 /* 'w' -> */, -/* pos 035b: 496 */ 0xE1 /* 'a' -> */, -/* pos 035c: 497 */ 0xF2 /* 'r' -> */, -/* pos 035d: 498 */ 0xE4 /* 'd' -> */, -/* pos 035e: 499 */ 0xF3 /* 's' -> */, -/* pos 035f: 500 */ 0xBA /* ':' -> */, -/* pos 0360: 501 */ 0x00, 0x3C /* - terminal marker 60 - */, -/* pos 0362: 502 */ 0xF8 /* 'x' -> */, -/* pos 0363: 503 */ 0xF9 /* 'y' -> */, -/* pos 0364: 504 */ 0x2D /* '-' */, 0x07, 0x00 /* (to 0x036B state 505) */, - 0x20 /* ' ' */, 0x9F, 0x00 /* (to 0x0406 state 636) */, - 0x08, /* fail */ -/* pos 036b: 505 */ 0xE1 /* 'a' -> */, -/* pos 036c: 506 */ 0xF5 /* 'u' -> */, -/* pos 036d: 507 */ 0xF4 /* 't' -> */, -/* pos 036e: 508 */ 0xE8 /* 'h' -> */, -/* pos 036f: 509 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x0376 state 510) */, - 0x6F /* 'o' */, 0x0E, 0x00 /* (to 0x0380 state 519) */, - 0x08, /* fail */ -/* pos 0376: 510 */ 0xEE /* 'n' -> */, -/* pos 0377: 511 */ 0xF4 /* 't' -> */, -/* pos 0378: 512 */ 0xE9 /* 'i' -> */, -/* pos 0379: 513 */ 0xE3 /* 'c' -> */, -/* pos 037a: 514 */ 0xE1 /* 'a' -> */, -/* pos 037b: 515 */ 0xF4 /* 't' -> */, -/* pos 037c: 516 */ 0xE5 /* 'e' -> */, -/* pos 037d: 517 */ 0xBA /* ':' -> */, -/* pos 037e: 518 */ 0x00, 0x3D /* - terminal marker 61 - */, -/* pos 0380: 519 */ 0xF2 /* 'r' -> */, -/* pos 0381: 520 */ 0xE9 /* 'i' -> */, -/* pos 0382: 521 */ 0xFA /* 'z' -> */, -/* pos 0383: 522 */ 0xE1 /* 'a' -> */, -/* pos 0384: 523 */ 0xF4 /* 't' -> */, -/* pos 0385: 524 */ 0xE9 /* 'i' -> */, -/* pos 0386: 525 */ 0xEF /* 'o' -> */, -/* pos 0387: 526 */ 0xEE /* 'n' -> */, -/* pos 0388: 527 */ 0xBA /* ':' -> */, -/* pos 0389: 528 */ 0x00, 0x3E /* - terminal marker 62 - */, -/* pos 038b: 529 */ 0xE5 /* 'e' -> */, -/* pos 038c: 530 */ 0xF3 /* 's' -> */, -/* pos 038d: 531 */ 0xE8 /* 'h' -> */, -/* pos 038e: 532 */ 0xBA /* ':' -> */, -/* pos 038f: 533 */ 0x00, 0x3F /* - terminal marker 63 - */, -/* pos 0391: 534 */ 0xF2 /* 'r' -> */, -/* pos 0392: 535 */ 0xF9 /* 'y' -> */, -/* pos 0393: 536 */ 0xAD /* '-' -> */, -/* pos 0394: 537 */ 0xE1 /* 'a' -> */, -/* pos 0395: 538 */ 0xE6 /* 'f' -> */, -/* pos 0396: 539 */ 0xF4 /* 't' -> */, -/* pos 0397: 540 */ 0xE5 /* 'e' -> */, -/* pos 0398: 541 */ 0xF2 /* 'r' -> */, -/* pos 0399: 542 */ 0xBA /* ':' -> */, -/* pos 039a: 543 */ 0x00, 0x40 /* - terminal marker 64 - */, -/* pos 039c: 544 */ 0xF6 /* 'v' -> */, -/* pos 039d: 545 */ 0xE5 /* 'e' -> */, -/* pos 039e: 546 */ 0xF2 /* 'r' -> */, -/* pos 039f: 547 */ 0xBA /* ':' -> */, -/* pos 03a0: 548 */ 0x00, 0x41 /* - terminal marker 65 - */, -/* pos 03a2: 549 */ 0xAD /* '-' -> */, -/* pos 03a3: 550 */ 0xE3 /* 'c' -> */, -/* pos 03a4: 551 */ 0xEF /* 'o' -> */, -/* pos 03a5: 552 */ 0xEF /* 'o' -> */, -/* pos 03a6: 553 */ 0xEB /* 'k' -> */, -/* pos 03a7: 554 */ 0xE9 /* 'i' -> */, -/* pos 03a8: 555 */ 0xE5 /* 'e' -> */, -/* pos 03a9: 556 */ 0xBA /* ':' -> */, -/* pos 03aa: 557 */ 0x00, 0x42 /* - terminal marker 66 - */, -/* pos 03ac: 558 */ 0xF2 /* 'r' -> */, -/* pos 03ad: 559 */ 0xE9 /* 'i' -> */, -/* pos 03ae: 560 */ 0xE3 /* 'c' -> */, -/* pos 03af: 561 */ 0xF4 /* 't' -> */, -/* pos 03b0: 562 */ 0xAD /* '-' -> */, -/* pos 03b1: 563 */ 0xF4 /* 't' -> */, -/* pos 03b2: 564 */ 0xF2 /* 'r' -> */, -/* pos 03b3: 565 */ 0xE1 /* 'a' -> */, -/* pos 03b4: 566 */ 0xEE /* 'n' -> */, -/* pos 03b5: 567 */ 0xF3 /* 's' -> */, -/* pos 03b6: 568 */ 0xF0 /* 'p' -> */, -/* pos 03b7: 569 */ 0xEF /* 'o' -> */, -/* pos 03b8: 570 */ 0xF2 /* 'r' -> */, -/* pos 03b9: 571 */ 0xF4 /* 't' -> */, -/* pos 03ba: 572 */ 0xAD /* '-' -> */, -/* pos 03bb: 573 */ 0xF3 /* 's' -> */, -/* pos 03bc: 574 */ 0xE5 /* 'e' -> */, -/* pos 03bd: 575 */ 0xE3 /* 'c' -> */, -/* pos 03be: 576 */ 0xF5 /* 'u' -> */, -/* pos 03bf: 577 */ 0xF2 /* 'r' -> */, -/* pos 03c0: 578 */ 0xE9 /* 'i' -> */, -/* pos 03c1: 579 */ 0xF4 /* 't' -> */, -/* pos 03c2: 580 */ 0xF9 /* 'y' -> */, -/* pos 03c3: 581 */ 0xBA /* ':' -> */, -/* pos 03c4: 582 */ 0x00, 0x43 /* - terminal marker 67 - */, -/* pos 03c6: 583 */ 0xF2 /* 'r' -> */, -/* pos 03c7: 584 */ 0xE1 /* 'a' -> */, -/* pos 03c8: 585 */ 0xEE /* 'n' -> */, -/* pos 03c9: 586 */ 0xF3 /* 's' -> */, -/* pos 03ca: 587 */ 0xE6 /* 'f' -> */, -/* pos 03cb: 588 */ 0xE5 /* 'e' -> */, -/* pos 03cc: 589 */ 0xF2 /* 'r' -> */, -/* pos 03cd: 590 */ 0xAD /* '-' -> */, -/* pos 03ce: 591 */ 0xE5 /* 'e' -> */, -/* pos 03cf: 592 */ 0xEE /* 'n' -> */, -/* pos 03d0: 593 */ 0xE3 /* 'c' -> */, -/* pos 03d1: 594 */ 0xEF /* 'o' -> */, -/* pos 03d2: 595 */ 0xE4 /* 'd' -> */, -/* pos 03d3: 596 */ 0xE9 /* 'i' -> */, -/* pos 03d4: 597 */ 0xEE /* 'n' -> */, -/* pos 03d5: 598 */ 0xE7 /* 'g' -> */, -/* pos 03d6: 599 */ 0xBA /* ':' -> */, -/* pos 03d7: 600 */ 0x00, 0x44 /* - terminal marker 68 - */, -/* pos 03d9: 601 */ 0xE5 /* 'e' -> */, -/* pos 03da: 602 */ 0xF2 /* 'r' -> */, -/* pos 03db: 603 */ 0xAD /* '-' -> */, -/* pos 03dc: 604 */ 0xE1 /* 'a' -> */, -/* pos 03dd: 605 */ 0xE7 /* 'g' -> */, -/* pos 03de: 606 */ 0xE5 /* 'e' -> */, -/* pos 03df: 607 */ 0xEE /* 'n' -> */, -/* pos 03e0: 608 */ 0xF4 /* 't' -> */, -/* pos 03e1: 609 */ 0xBA /* ':' -> */, -/* pos 03e2: 610 */ 0x00, 0x45 /* - terminal marker 69 - */, -/* pos 03e4: 611 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x03EB state 612) */, - 0x69 /* 'i' */, 0x09, 0x00 /* (to 0x03F0 state 616) */, - 0x08, /* fail */ -/* pos 03eb: 612 */ 0xF2 /* 'r' -> */, -/* pos 03ec: 613 */ 0xF9 /* 'y' -> */, -/* pos 03ed: 614 */ 0xBA /* ':' -> */, -/* pos 03ee: 615 */ 0x00, 0x46 /* - terminal marker 70 - */, -/* pos 03f0: 616 */ 0xE1 /* 'a' -> */, -/* pos 03f1: 617 */ 0xBA /* ':' -> */, -/* pos 03f2: 618 */ 0x00, 0x47 /* - terminal marker 71 - */, -/* pos 03f4: 619 */ 0xF7 /* 'w' -> */, -/* pos 03f5: 620 */ 0xF7 /* 'w' -> */, -/* pos 03f6: 621 */ 0xAD /* '-' -> */, -/* pos 03f7: 622 */ 0xE1 /* 'a' -> */, -/* pos 03f8: 623 */ 0xF5 /* 'u' -> */, -/* pos 03f9: 624 */ 0xF4 /* 't' -> */, -/* pos 03fa: 625 */ 0xE8 /* 'h' -> */, -/* pos 03fb: 626 */ 0xE5 /* 'e' -> */, -/* pos 03fc: 627 */ 0xEE /* 'n' -> */, -/* pos 03fd: 628 */ 0xF4 /* 't' -> */, -/* pos 03fe: 629 */ 0xE9 /* 'i' -> */, -/* pos 03ff: 630 */ 0xE3 /* 'c' -> */, -/* pos 0400: 631 */ 0xE1 /* 'a' -> */, -/* pos 0401: 632 */ 0xF4 /* 't' -> */, -/* pos 0402: 633 */ 0xE5 /* 'e' -> */, -/* pos 0403: 634 */ 0xBA /* ':' -> */, -/* pos 0404: 635 */ 0x00, 0x48 /* - terminal marker 72 - */, -/* pos 0406: 636 */ 0x00, 0x49 /* - terminal marker 73 - */, -/* total size 1032 bytes */ +/* pos 0042: 5 */ 0x6F /* 'o' */, 0x0D, 0x00 /* (to 0x004F state 6) */, + 0x72 /* 'r' */, 0x83, 0x01 /* (to 0x01C8 state 211) */, + 0x61 /* 'a' */, 0xCC, 0x03 /* (to 0x0414 state 637) */, + 0x75 /* 'u' */, 0xCE, 0x03 /* (to 0x0419 state 641) */, + 0x08, /* fail */ +/* pos 004f: 6 */ 0xF3 /* 's' -> */, +/* pos 0050: 7 */ 0xF4 /* 't' -> */, +/* pos 0051: 8 */ 0xA0 /* ' ' -> */, +/* pos 0052: 9 */ 0x00, 0x01 /* - terminal marker 1 - */, +/* pos 0054: 10 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x005B state 11) */, + 0x72 /* 'r' */, 0x45, 0x00 /* (to 0x009C state 42) */, + 0x08, /* fail */ +/* pos 005b: 11 */ 0xF4 /* 't' -> */, +/* pos 005c: 12 */ 0xE9 /* 'i' -> */, +/* pos 005d: 13 */ 0xEF /* 'o' -> */, +/* pos 005e: 14 */ 0xEE /* 'n' -> */, +/* pos 005f: 15 */ 0xF3 /* 's' -> */, +/* pos 0060: 16 */ 0xA0 /* ' ' -> */, +/* pos 0061: 17 */ 0x00, 0x02 /* - terminal marker 2 - */, +/* pos 0063: 18 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x006A state 19) */, + 0x74 /* 't' */, 0xB3, 0x00 /* (to 0x0119 state 110) */, + 0x08, /* fail */ +/* pos 006a: 19 */ 0xF3 /* 's' -> */, +/* pos 006b: 20 */ 0xF4 /* 't' -> */, +/* pos 006c: 21 */ 0xBA /* ':' -> */, +/* pos 006d: 22 */ 0x00, 0x03 /* - terminal marker 3 - */, +/* pos 006f: 23 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0076 state 24) */, + 0x61 /* 'a' */, 0x63, 0x01 /* (to 0x01D5 state 217) */, + 0x08, /* fail */ +/* pos 0076: 24 */ 0x6E /* 'n' */, 0x07, 0x00 /* (to 0x007D state 25) */, + 0x6F /* 'o' */, 0x78, 0x01 /* (to 0x01F1 state 243) */, + 0x08, /* fail */ +/* pos 007d: 25 */ 0x6E /* 'n' */, 0x07, 0x00 /* (to 0x0084 state 26) */, + 0x74 /* 't' */, 0x77, 0x01 /* (to 0x01F7 state 248) */, + 0x08, /* fail */ +/* pos 0084: 26 */ 0xE5 /* 'e' -> */, +/* pos 0085: 27 */ 0xE3 /* 'c' -> */, +/* pos 0086: 28 */ 0xF4 /* 't' -> */, +/* pos 0087: 29 */ 0xE9 /* 'i' -> */, +/* pos 0088: 30 */ 0xEF /* 'o' -> */, +/* pos 0089: 31 */ 0xEE /* 'n' -> */, +/* pos 008a: 32 */ 0xBA /* ':' -> */, +/* pos 008b: 33 */ 0x00, 0x04 /* - terminal marker 4 - */, +/* pos 008d: 34 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x0094 state 35) */, + 0x73 /* 's' */, 0x55, 0x03 /* (to 0x03E5 state 601) */, + 0x08, /* fail */ +/* pos 0094: 35 */ 0xE7 /* 'g' -> */, +/* pos 0095: 36 */ 0xF2 /* 'r' -> */, +/* pos 0096: 37 */ 0xE1 /* 'a' -> */, +/* pos 0097: 38 */ 0xE4 /* 'd' -> */, +/* pos 0098: 39 */ 0xE5 /* 'e' -> */, +/* pos 0099: 40 */ 0xBA /* ':' -> */, +/* pos 009a: 41 */ 0x00, 0x05 /* - terminal marker 5 - */, +/* pos 009c: 42 */ 0xE9 /* 'i' -> */, +/* pos 009d: 43 */ 0xE7 /* 'g' -> */, +/* pos 009e: 44 */ 0xE9 /* 'i' -> */, +/* pos 009f: 45 */ 0xEE /* 'n' -> */, +/* pos 00a0: 46 */ 0xBA /* ':' -> */, +/* pos 00a1: 47 */ 0x00, 0x06 /* - terminal marker 6 - */, +/* pos 00a3: 48 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x00AA state 49) */, + 0x74 /* 't' */, 0x12, 0x03 /* (to 0x03B8 state 558) */, + 0x08, /* fail */ +/* pos 00aa: 49 */ 0x63 /* 'c' */, 0x0A, 0x00 /* (to 0x00B4 state 50) */, + 0x72 /* 'r' */, 0xFB, 0x02 /* (to 0x03A8 state 544) */, + 0x74 /* 't' */, 0xFE, 0x02 /* (to 0x03AE state 549) */, + 0x08, /* fail */ +/* pos 00b4: 50 */ 0xAD /* '-' -> */, +/* pos 00b5: 51 */ 0xF7 /* 'w' -> */, +/* pos 00b6: 52 */ 0xE5 /* 'e' -> */, +/* pos 00b7: 53 */ 0xE2 /* 'b' -> */, +/* pos 00b8: 54 */ 0xF3 /* 's' -> */, +/* pos 00b9: 55 */ 0xEF /* 'o' -> */, +/* pos 00ba: 56 */ 0xE3 /* 'c' -> */, +/* pos 00bb: 57 */ 0xEB /* 'k' -> */, +/* pos 00bc: 58 */ 0xE5 /* 'e' -> */, +/* pos 00bd: 59 */ 0xF4 /* 't' -> */, +/* pos 00be: 60 */ 0xAD /* '-' -> */, +/* pos 00bf: 61 */ 0x64 /* 'd' */, 0x19, 0x00 /* (to 0x00D8 state 62) */, + 0x65 /* 'e' */, 0x20, 0x00 /* (to 0x00E2 state 70) */, + 0x6B /* 'k' */, 0x29, 0x00 /* (to 0x00EE state 81) */, + 0x70 /* 'p' */, 0x38, 0x00 /* (to 0x0100 state 88) */, + 0x61 /* 'a' */, 0x3F, 0x00 /* (to 0x010A state 97) */, + 0x6E /* 'n' */, 0x44, 0x00 /* (to 0x0112 state 104) */, + 0x76 /* 'v' */, 0x80, 0x01 /* (to 0x0251 state 284) */, + 0x6F /* 'o' */, 0x86, 0x01 /* (to 0x025A state 292) */, + 0x08, /* fail */ +/* pos 00d8: 62 */ 0xF2 /* 'r' -> */, +/* pos 00d9: 63 */ 0xE1 /* 'a' -> */, +/* pos 00da: 64 */ 0xE6 /* 'f' -> */, +/* pos 00db: 65 */ 0xF4 /* 't' -> */, +/* pos 00dc: 66 */ 0xBA /* ':' -> */, +/* pos 00dd: 67 */ 0x00, 0x07 /* - terminal marker 7 - */, +/* pos 00df: 68 */ 0x8A /* '.' -> */, +/* pos 00e0: 69 */ 0x00, 0x08 /* - terminal marker 8 - */, +/* pos 00e2: 70 */ 0xF8 /* 'x' -> */, +/* pos 00e3: 71 */ 0xF4 /* 't' -> */, +/* pos 00e4: 72 */ 0xE5 /* 'e' -> */, +/* pos 00e5: 73 */ 0xEE /* 'n' -> */, +/* pos 00e6: 74 */ 0xF3 /* 's' -> */, +/* pos 00e7: 75 */ 0xE9 /* 'i' -> */, +/* pos 00e8: 76 */ 0xEF /* 'o' -> */, +/* pos 00e9: 77 */ 0xEE /* 'n' -> */, +/* pos 00ea: 78 */ 0xF3 /* 's' -> */, +/* pos 00eb: 79 */ 0xBA /* ':' -> */, +/* pos 00ec: 80 */ 0x00, 0x09 /* - terminal marker 9 - */, +/* pos 00ee: 81 */ 0xE5 /* 'e' -> */, +/* pos 00ef: 82 */ 0xF9 /* 'y' -> */, +/* pos 00f0: 83 */ 0x31 /* '1' */, 0x0A, 0x00 /* (to 0x00FA state 84) */, + 0x32 /* '2' */, 0x0A, 0x00 /* (to 0x00FD state 86) */, + 0x3A /* ':' */, 0x59, 0x01 /* (to 0x024F state 283) */, + 0x08, /* fail */ +/* pos 00fa: 84 */ 0xBA /* ':' -> */, +/* pos 00fb: 85 */ 0x00, 0x0A /* - terminal marker 10 - */, +/* pos 00fd: 86 */ 0xBA /* ':' -> */, +/* pos 00fe: 87 */ 0x00, 0x0B /* - terminal marker 11 - */, +/* pos 0100: 88 */ 0xF2 /* 'r' -> */, +/* pos 0101: 89 */ 0xEF /* 'o' -> */, +/* pos 0102: 90 */ 0xF4 /* 't' -> */, +/* pos 0103: 91 */ 0xEF /* 'o' -> */, +/* pos 0104: 92 */ 0xE3 /* 'c' -> */, +/* pos 0105: 93 */ 0xEF /* 'o' -> */, +/* pos 0106: 94 */ 0xEC /* 'l' -> */, +/* pos 0107: 95 */ 0xBA /* ':' -> */, +/* pos 0108: 96 */ 0x00, 0x0C /* - terminal marker 12 - */, +/* pos 010a: 97 */ 0xE3 /* 'c' -> */, +/* pos 010b: 98 */ 0xE3 /* 'c' -> */, +/* pos 010c: 99 */ 0xE5 /* 'e' -> */, +/* pos 010d: 100 */ 0xF0 /* 'p' -> */, +/* pos 010e: 101 */ 0xF4 /* 't' -> */, +/* pos 010f: 102 */ 0xBA /* ':' -> */, +/* pos 0110: 103 */ 0x00, 0x0D /* - terminal marker 13 - */, +/* pos 0112: 104 */ 0xEF /* 'o' -> */, +/* pos 0113: 105 */ 0xEE /* 'n' -> */, +/* pos 0114: 106 */ 0xE3 /* 'c' -> */, +/* pos 0115: 107 */ 0xE5 /* 'e' -> */, +/* pos 0116: 108 */ 0xBA /* ':' -> */, +/* pos 0117: 109 */ 0x00, 0x0E /* - terminal marker 14 - */, +/* pos 0119: 110 */ 0xF4 /* 't' -> */, +/* pos 011a: 111 */ 0xF0 /* 'p' -> */, +/* pos 011b: 112 */ 0x2F /* '/' */, 0x07, 0x00 /* (to 0x0122 state 113) */, + 0x32 /* '2' */, 0x0A, 0x00 /* (to 0x0128 state 118) */, + 0x08, /* fail */ +/* pos 0122: 113 */ 0xB1 /* '1' -> */, +/* pos 0123: 114 */ 0xAE /* '.' -> */, +/* pos 0124: 115 */ 0xB1 /* '1' -> */, +/* pos 0125: 116 */ 0xA0 /* ' ' -> */, +/* pos 0126: 117 */ 0x00, 0x0F /* - terminal marker 15 - */, +/* pos 0128: 118 */ 0xAD /* '-' -> */, +/* pos 0129: 119 */ 0xF3 /* 's' -> */, +/* pos 012a: 120 */ 0xE5 /* 'e' -> */, +/* pos 012b: 121 */ 0xF4 /* 't' -> */, +/* pos 012c: 122 */ 0xF4 /* 't' -> */, +/* pos 012d: 123 */ 0xE9 /* 'i' -> */, +/* pos 012e: 124 */ 0xEE /* 'n' -> */, +/* pos 012f: 125 */ 0xE7 /* 'g' -> */, +/* pos 0130: 126 */ 0xF3 /* 's' -> */, +/* pos 0131: 127 */ 0xBA /* ':' -> */, +/* pos 0132: 128 */ 0x00, 0x10 /* - terminal marker 16 - */, +/* pos 0134: 129 */ 0x63 /* 'c' */, 0x0D, 0x00 /* (to 0x0141 state 130) */, + 0x75 /* 'u' */, 0xAC, 0x00 /* (to 0x01E3 state 230) */, + 0x67 /* 'g' */, 0x82, 0x01 /* (to 0x02BC state 363) */, + 0x6C /* 'l' */, 0x83, 0x01 /* (to 0x02C0 state 366) */, + 0x08, /* fail */ +/* pos 0141: 130 */ 0xE3 /* 'c' -> */, +/* pos 0142: 131 */ 0xE5 /* 'e' -> */, +/* pos 0143: 132 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x014A state 133) */, + 0x73 /* 's' */, 0x0E, 0x00 /* (to 0x0154 state 136) */, + 0x08, /* fail */ +/* pos 014a: 133 */ 0xF4 /* 't' -> */, +/* pos 014b: 134 */ 0x3A /* ':' */, 0x07, 0x00 /* (to 0x0152 state 135) */, + 0x2D /* '-' */, 0x59, 0x00 /* (to 0x01A7 state 192) */, + 0x08, /* fail */ +/* pos 0152: 135 */ 0x00, 0x11 /* - terminal marker 17 - */, +/* pos 0154: 136 */ 0xF3 /* 's' -> */, +/* pos 0155: 137 */ 0xAD /* '-' -> */, +/* pos 0156: 138 */ 0xE3 /* 'c' -> */, +/* pos 0157: 139 */ 0xEF /* 'o' -> */, +/* pos 0158: 140 */ 0xEE /* 'n' -> */, +/* pos 0159: 141 */ 0xF4 /* 't' -> */, +/* pos 015a: 142 */ 0xF2 /* 'r' -> */, +/* pos 015b: 143 */ 0xEF /* 'o' -> */, +/* pos 015c: 144 */ 0xEC /* 'l' -> */, +/* pos 015d: 145 */ 0xAD /* '-' -> */, +/* pos 015e: 146 */ 0x72 /* 'r' */, 0x07, 0x00 /* (to 0x0165 state 147) */, + 0x61 /* 'a' */, 0x4D, 0x01 /* (to 0x02AE state 350) */, + 0x08, /* fail */ +/* pos 0165: 147 */ 0xE5 /* 'e' -> */, +/* pos 0166: 148 */ 0xF1 /* 'q' -> */, +/* pos 0167: 149 */ 0xF5 /* 'u' -> */, +/* pos 0168: 150 */ 0xE5 /* 'e' -> */, +/* pos 0169: 151 */ 0xF3 /* 's' -> */, +/* pos 016a: 152 */ 0xF4 /* 't' -> */, +/* pos 016b: 153 */ 0xAD /* '-' -> */, +/* pos 016c: 154 */ 0xE8 /* 'h' -> */, +/* pos 016d: 155 */ 0xE5 /* 'e' -> */, +/* pos 016e: 156 */ 0xE1 /* 'a' -> */, +/* pos 016f: 157 */ 0xE4 /* 'd' -> */, +/* pos 0170: 158 */ 0xE5 /* 'e' -> */, +/* pos 0171: 159 */ 0xF2 /* 'r' -> */, +/* pos 0172: 160 */ 0xF3 /* 's' -> */, +/* pos 0173: 161 */ 0xBA /* ':' -> */, +/* pos 0174: 162 */ 0x00, 0x12 /* - terminal marker 18 - */, +/* pos 0176: 163 */ 0xE6 /* 'f' -> */, +/* pos 0177: 164 */ 0xAD /* '-' -> */, +/* pos 0178: 165 */ 0x6D /* 'm' */, 0x0D, 0x00 /* (to 0x0185 state 166) */, + 0x6E /* 'n' */, 0x20, 0x00 /* (to 0x019B state 181) */, + 0x72 /* 'r' */, 0xA3, 0x01 /* (to 0x0321 state 440) */, + 0x75 /* 'u' */, 0xA7, 0x01 /* (to 0x0328 state 446) */, + 0x08, /* fail */ +/* pos 0185: 166 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x018C state 167) */, + 0x61 /* 'a' */, 0x93, 0x01 /* (to 0x031B state 435) */, + 0x08, /* fail */ +/* pos 018c: 167 */ 0xE4 /* 'd' -> */, +/* pos 018d: 168 */ 0xE9 /* 'i' -> */, +/* pos 018e: 169 */ 0xE6 /* 'f' -> */, +/* pos 018f: 170 */ 0xE9 /* 'i' -> */, +/* pos 0190: 171 */ 0xE5 /* 'e' -> */, +/* pos 0191: 172 */ 0xE4 /* 'd' -> */, +/* pos 0192: 173 */ 0xAD /* '-' -> */, +/* pos 0193: 174 */ 0xF3 /* 's' -> */, +/* pos 0194: 175 */ 0xE9 /* 'i' -> */, +/* pos 0195: 176 */ 0xEE /* 'n' -> */, +/* pos 0196: 177 */ 0xE3 /* 'c' -> */, +/* pos 0197: 178 */ 0xE5 /* 'e' -> */, +/* pos 0198: 179 */ 0xBA /* ':' -> */, +/* pos 0199: 180 */ 0x00, 0x13 /* - terminal marker 19 - */, +/* pos 019b: 181 */ 0xEF /* 'o' -> */, +/* pos 019c: 182 */ 0xEE /* 'n' -> */, +/* pos 019d: 183 */ 0xE5 /* 'e' -> */, +/* pos 019e: 184 */ 0xAD /* '-' -> */, +/* pos 019f: 185 */ 0xED /* 'm' -> */, +/* pos 01a0: 186 */ 0xE1 /* 'a' -> */, +/* pos 01a1: 187 */ 0xF4 /* 't' -> */, +/* pos 01a2: 188 */ 0xE3 /* 'c' -> */, +/* pos 01a3: 189 */ 0xE8 /* 'h' -> */, +/* pos 01a4: 190 */ 0xBA /* ':' -> */, +/* pos 01a5: 191 */ 0x00, 0x14 /* - terminal marker 20 - */, +/* pos 01a7: 192 */ 0x65 /* 'e' */, 0x0D, 0x00 /* (to 0x01B4 state 193) */, + 0x6C /* 'l' */, 0x14, 0x00 /* (to 0x01BE state 202) */, + 0x63 /* 'c' */, 0xF0, 0x00 /* (to 0x029D state 335) */, + 0x72 /* 'r' */, 0xF6, 0x00 /* (to 0x02A6 state 343) */, + 0x08, /* fail */ +/* pos 01b4: 193 */ 0xEE /* 'n' -> */, +/* pos 01b5: 194 */ 0xE3 /* 'c' -> */, +/* pos 01b6: 195 */ 0xEF /* 'o' -> */, +/* pos 01b7: 196 */ 0xE4 /* 'd' -> */, +/* pos 01b8: 197 */ 0xE9 /* 'i' -> */, +/* pos 01b9: 198 */ 0xEE /* 'n' -> */, +/* pos 01ba: 199 */ 0xE7 /* 'g' -> */, +/* pos 01bb: 200 */ 0xBA /* ':' -> */, +/* pos 01bc: 201 */ 0x00, 0x15 /* - terminal marker 21 - */, +/* pos 01be: 202 */ 0xE1 /* 'a' -> */, +/* pos 01bf: 203 */ 0xEE /* 'n' -> */, +/* pos 01c0: 204 */ 0xE7 /* 'g' -> */, +/* pos 01c1: 205 */ 0xF5 /* 'u' -> */, +/* pos 01c2: 206 */ 0xE1 /* 'a' -> */, +/* pos 01c3: 207 */ 0xE7 /* 'g' -> */, +/* pos 01c4: 208 */ 0xE5 /* 'e' -> */, +/* pos 01c5: 209 */ 0xBA /* ':' -> */, +/* pos 01c6: 210 */ 0x00, 0x16 /* - terminal marker 22 - */, +/* pos 01c8: 211 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x01CF state 212) */, + 0x6F /* 'o' */, 0xA3, 0x01 /* (to 0x036E state 502) */, + 0x08, /* fail */ +/* pos 01cf: 212 */ 0xE7 /* 'g' -> */, +/* pos 01d0: 213 */ 0xED /* 'm' -> */, +/* pos 01d1: 214 */ 0xE1 /* 'a' -> */, +/* pos 01d2: 215 */ 0xBA /* ':' -> */, +/* pos 01d3: 216 */ 0x00, 0x17 /* - terminal marker 23 - */, +/* pos 01d5: 217 */ 0xE3 /* 'c' -> */, +/* pos 01d6: 218 */ 0xE8 /* 'h' -> */, +/* pos 01d7: 219 */ 0xE5 /* 'e' -> */, +/* pos 01d8: 220 */ 0xAD /* '-' -> */, +/* pos 01d9: 221 */ 0xE3 /* 'c' -> */, +/* pos 01da: 222 */ 0xEF /* 'o' -> */, +/* pos 01db: 223 */ 0xEE /* 'n' -> */, +/* pos 01dc: 224 */ 0xF4 /* 't' -> */, +/* pos 01dd: 225 */ 0xF2 /* 'r' -> */, +/* pos 01de: 226 */ 0xEF /* 'o' -> */, +/* pos 01df: 227 */ 0xEC /* 'l' -> */, +/* pos 01e0: 228 */ 0xBA /* ':' -> */, +/* pos 01e1: 229 */ 0x00, 0x18 /* - terminal marker 24 - */, +/* pos 01e3: 230 */ 0xF4 /* 't' -> */, +/* pos 01e4: 231 */ 0xE8 /* 'h' -> */, +/* pos 01e5: 232 */ 0xEF /* 'o' -> */, +/* pos 01e6: 233 */ 0xF2 /* 'r' -> */, +/* pos 01e7: 234 */ 0xE9 /* 'i' -> */, +/* pos 01e8: 235 */ 0xFA /* 'z' -> */, +/* pos 01e9: 236 */ 0xE1 /* 'a' -> */, +/* pos 01ea: 237 */ 0xF4 /* 't' -> */, +/* pos 01eb: 238 */ 0xE9 /* 'i' -> */, +/* pos 01ec: 239 */ 0xEF /* 'o' -> */, +/* pos 01ed: 240 */ 0xEE /* 'n' -> */, +/* pos 01ee: 241 */ 0xBA /* ':' -> */, +/* pos 01ef: 242 */ 0x00, 0x19 /* - terminal marker 25 - */, +/* pos 01f1: 243 */ 0xEB /* 'k' -> */, +/* pos 01f2: 244 */ 0xE9 /* 'i' -> */, +/* pos 01f3: 245 */ 0xE5 /* 'e' -> */, +/* pos 01f4: 246 */ 0xBA /* ':' -> */, +/* pos 01f5: 247 */ 0x00, 0x1A /* - terminal marker 26 - */, +/* pos 01f7: 248 */ 0xE5 /* 'e' -> */, +/* pos 01f8: 249 */ 0xEE /* 'n' -> */, +/* pos 01f9: 250 */ 0xF4 /* 't' -> */, +/* pos 01fa: 251 */ 0xAD /* '-' -> */, +/* pos 01fb: 252 */ 0x6C /* 'l' */, 0x10, 0x00 /* (to 0x020B state 253) */, + 0x74 /* 't' */, 0x1E, 0x00 /* (to 0x021C state 260) */, + 0x64 /* 'd' */, 0xC5, 0x00 /* (to 0x02C6 state 371) */, + 0x65 /* 'e' */, 0xCF, 0x00 /* (to 0x02D3 state 383) */, + 0x72 /* 'r' */, 0xE8, 0x00 /* (to 0x02EF state 408) */, + 0x08, /* fail */ +/* pos 020b: 253 */ 0x65 /* 'e' */, 0x0A, 0x00 /* (to 0x0215 state 254) */, + 0x61 /* 'a' */, 0xCF, 0x00 /* (to 0x02DD state 392) */, + 0x6F /* 'o' */, 0xD5, 0x00 /* (to 0x02E6 state 400) */, + 0x08, /* fail */ +/* pos 0215: 254 */ 0xEE /* 'n' -> */, +/* pos 0216: 255 */ 0xE7 /* 'g' -> */, +/* pos 0217: 256 */ 0xF4 /* 't' -> */, +/* pos 0218: 257 */ 0xE8 /* 'h' -> */, +/* pos 0219: 258 */ 0xBA /* ':' -> */, +/* pos 021a: 259 */ 0x00, 0x1B /* - terminal marker 27 - */, +/* pos 021c: 260 */ 0xF9 /* 'y' -> */, +/* pos 021d: 261 */ 0xF0 /* 'p' -> */, +/* pos 021e: 262 */ 0xE5 /* 'e' -> */, +/* pos 021f: 263 */ 0xBA /* ':' -> */, +/* pos 0220: 264 */ 0x00, 0x1C /* - terminal marker 28 - */, +/* pos 0222: 265 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x0229 state 266) */, + 0x65 /* 'e' */, 0xF7, 0x01 /* (to 0x041C state 643) */, + 0x08, /* fail */ +/* pos 0229: 266 */ 0xF4 /* 't' -> */, +/* pos 022a: 267 */ 0xE5 /* 'e' -> */, +/* pos 022b: 268 */ 0xBA /* ':' -> */, +/* pos 022c: 269 */ 0x00, 0x1D /* - terminal marker 29 - */, +/* pos 022e: 270 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x0235 state 271) */, + 0x65 /* 'e' */, 0x0A, 0x00 /* (to 0x023B state 276) */, + 0x08, /* fail */ +/* pos 0235: 271 */ 0xEE /* 'n' -> */, +/* pos 0236: 272 */ 0xE7 /* 'g' -> */, +/* pos 0237: 273 */ 0xE5 /* 'e' -> */, +/* pos 0238: 274 */ 0xBA /* ':' -> */, +/* pos 0239: 275 */ 0x00, 0x1E /* - terminal marker 30 - */, +/* pos 023b: 276 */ 0x66 /* 'f' */, 0x07, 0x00 /* (to 0x0242 state 277) */, + 0x74 /* 't' */, 0x5F, 0x01 /* (to 0x039D state 534) */, + 0x08, /* fail */ +/* pos 0242: 277 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x0249 state 278) */, + 0x72 /* 'r' */, 0x52, 0x01 /* (to 0x0397 state 529) */, + 0x08, /* fail */ +/* pos 0249: 278 */ 0xF2 /* 'r' -> */, +/* pos 024a: 279 */ 0xE5 /* 'e' -> */, +/* pos 024b: 280 */ 0xF2 /* 'r' -> */, +/* pos 024c: 281 */ 0xBA /* ':' -> */, +/* pos 024d: 282 */ 0x00, 0x1F /* - terminal marker 31 - */, +/* pos 024f: 283 */ 0x00, 0x20 /* - terminal marker 32 - */, +/* pos 0251: 284 */ 0xE5 /* 'e' -> */, +/* pos 0252: 285 */ 0xF2 /* 'r' -> */, +/* pos 0253: 286 */ 0xF3 /* 's' -> */, +/* pos 0254: 287 */ 0xE9 /* 'i' -> */, +/* pos 0255: 288 */ 0xEF /* 'o' -> */, +/* pos 0256: 289 */ 0xEE /* 'n' -> */, +/* pos 0257: 290 */ 0xBA /* ':' -> */, +/* pos 0258: 291 */ 0x00, 0x21 /* - terminal marker 33 - */, +/* pos 025a: 292 */ 0xF2 /* 'r' -> */, +/* pos 025b: 293 */ 0xE9 /* 'i' -> */, +/* pos 025c: 294 */ 0xE7 /* 'g' -> */, +/* pos 025d: 295 */ 0xE9 /* 'i' -> */, +/* pos 025e: 296 */ 0xEE /* 'n' -> */, +/* pos 025f: 297 */ 0xBA /* ':' -> */, +/* pos 0260: 298 */ 0x00, 0x22 /* - terminal marker 34 - */, +/* pos 0262: 299 */ 0x61 /* 'a' */, 0x0D, 0x00 /* (to 0x026F state 300) */, + 0x6D /* 'm' */, 0x15, 0x00 /* (to 0x027A state 310) */, + 0x70 /* 'p' */, 0x1A, 0x00 /* (to 0x0282 state 317) */, + 0x73 /* 's' */, 0x1D, 0x00 /* (to 0x0288 state 322) */, + 0x08, /* fail */ +/* pos 026f: 300 */ 0xF5 /* 'u' -> */, +/* pos 0270: 301 */ 0xF4 /* 't' -> */, +/* pos 0271: 302 */ 0xE8 /* 'h' -> */, +/* pos 0272: 303 */ 0xEF /* 'o' -> */, +/* pos 0273: 304 */ 0xF2 /* 'r' -> */, +/* pos 0274: 305 */ 0xE9 /* 'i' -> */, +/* pos 0275: 306 */ 0xF4 /* 't' -> */, +/* pos 0276: 307 */ 0xF9 /* 'y' -> */, +/* pos 0277: 308 */ 0xBA /* ':' -> */, +/* pos 0278: 309 */ 0x00, 0x23 /* - terminal marker 35 - */, +/* pos 027a: 310 */ 0xE5 /* 'e' -> */, +/* pos 027b: 311 */ 0xF4 /* 't' -> */, +/* pos 027c: 312 */ 0xE8 /* 'h' -> */, +/* pos 027d: 313 */ 0xEF /* 'o' -> */, +/* pos 027e: 314 */ 0xE4 /* 'd' -> */, +/* pos 027f: 315 */ 0xBA /* ':' -> */, +/* pos 0280: 316 */ 0x00, 0x24 /* - terminal marker 36 - */, +/* pos 0282: 317 */ 0xE1 /* 'a' -> */, +/* pos 0283: 318 */ 0xF4 /* 't' -> */, +/* pos 0284: 319 */ 0xE8 /* 'h' -> */, +/* pos 0285: 320 */ 0xBA /* ':' -> */, +/* pos 0286: 321 */ 0x00, 0x25 /* - terminal marker 37 - */, +/* pos 0288: 322 */ 0x63 /* 'c' */, 0x07, 0x00 /* (to 0x028F state 323) */, + 0x74 /* 't' */, 0x0B, 0x00 /* (to 0x0296 state 329) */, + 0x08, /* fail */ +/* pos 028f: 323 */ 0xE8 /* 'h' -> */, +/* pos 0290: 324 */ 0xE5 /* 'e' -> */, +/* pos 0291: 325 */ 0xED /* 'm' -> */, +/* pos 0292: 326 */ 0xE5 /* 'e' -> */, +/* pos 0293: 327 */ 0xBA /* ':' -> */, +/* pos 0294: 328 */ 0x00, 0x26 /* - terminal marker 38 - */, +/* pos 0296: 329 */ 0xE1 /* 'a' -> */, +/* pos 0297: 330 */ 0xF4 /* 't' -> */, +/* pos 0298: 331 */ 0xF5 /* 'u' -> */, +/* pos 0299: 332 */ 0xF3 /* 's' -> */, +/* pos 029a: 333 */ 0xBA /* ':' -> */, +/* pos 029b: 334 */ 0x00, 0x27 /* - terminal marker 39 - */, +/* pos 029d: 335 */ 0xE8 /* 'h' -> */, +/* pos 029e: 336 */ 0xE1 /* 'a' -> */, +/* pos 029f: 337 */ 0xF2 /* 'r' -> */, +/* pos 02a0: 338 */ 0xF3 /* 's' -> */, +/* pos 02a1: 339 */ 0xE5 /* 'e' -> */, +/* pos 02a2: 340 */ 0xF4 /* 't' -> */, +/* pos 02a3: 341 */ 0xBA /* ':' -> */, +/* pos 02a4: 342 */ 0x00, 0x28 /* - terminal marker 40 - */, +/* pos 02a6: 343 */ 0xE1 /* 'a' -> */, +/* pos 02a7: 344 */ 0xEE /* 'n' -> */, +/* pos 02a8: 345 */ 0xE7 /* 'g' -> */, +/* pos 02a9: 346 */ 0xE5 /* 'e' -> */, +/* pos 02aa: 347 */ 0xF3 /* 's' -> */, +/* pos 02ab: 348 */ 0xBA /* ':' -> */, +/* pos 02ac: 349 */ 0x00, 0x29 /* - terminal marker 41 - */, +/* pos 02ae: 350 */ 0xEC /* 'l' -> */, +/* pos 02af: 351 */ 0xEC /* 'l' -> */, +/* pos 02b0: 352 */ 0xEF /* 'o' -> */, +/* pos 02b1: 353 */ 0xF7 /* 'w' -> */, +/* pos 02b2: 354 */ 0xAD /* '-' -> */, +/* pos 02b3: 355 */ 0xEF /* 'o' -> */, +/* pos 02b4: 356 */ 0xF2 /* 'r' -> */, +/* pos 02b5: 357 */ 0xE9 /* 'i' -> */, +/* pos 02b6: 358 */ 0xE7 /* 'g' -> */, +/* pos 02b7: 359 */ 0xE9 /* 'i' -> */, +/* pos 02b8: 360 */ 0xEE /* 'n' -> */, +/* pos 02b9: 361 */ 0xBA /* ':' -> */, +/* pos 02ba: 362 */ 0x00, 0x2A /* - terminal marker 42 - */, +/* pos 02bc: 363 */ 0xE5 /* 'e' -> */, +/* pos 02bd: 364 */ 0xBA /* ':' -> */, +/* pos 02be: 365 */ 0x00, 0x2B /* - terminal marker 43 - */, +/* pos 02c0: 366 */ 0xEC /* 'l' -> */, +/* pos 02c1: 367 */ 0xEF /* 'o' -> */, +/* pos 02c2: 368 */ 0xF7 /* 'w' -> */, +/* pos 02c3: 369 */ 0xBA /* ':' -> */, +/* pos 02c4: 370 */ 0x00, 0x2C /* - terminal marker 44 - */, +/* pos 02c6: 371 */ 0xE9 /* 'i' -> */, +/* pos 02c7: 372 */ 0xF3 /* 's' -> */, +/* pos 02c8: 373 */ 0xF0 /* 'p' -> */, +/* pos 02c9: 374 */ 0xEF /* 'o' -> */, +/* pos 02ca: 375 */ 0xF3 /* 's' -> */, +/* pos 02cb: 376 */ 0xE9 /* 'i' -> */, +/* pos 02cc: 377 */ 0xF4 /* 't' -> */, +/* pos 02cd: 378 */ 0xE9 /* 'i' -> */, +/* pos 02ce: 379 */ 0xEF /* 'o' -> */, +/* pos 02cf: 380 */ 0xEE /* 'n' -> */, +/* pos 02d0: 381 */ 0xBA /* ':' -> */, +/* pos 02d1: 382 */ 0x00, 0x2D /* - terminal marker 45 - */, +/* pos 02d3: 383 */ 0xEE /* 'n' -> */, +/* pos 02d4: 384 */ 0xE3 /* 'c' -> */, +/* pos 02d5: 385 */ 0xEF /* 'o' -> */, +/* pos 02d6: 386 */ 0xE4 /* 'd' -> */, +/* pos 02d7: 387 */ 0xE9 /* 'i' -> */, +/* pos 02d8: 388 */ 0xEE /* 'n' -> */, +/* pos 02d9: 389 */ 0xE7 /* 'g' -> */, +/* pos 02da: 390 */ 0xBA /* ':' -> */, +/* pos 02db: 391 */ 0x00, 0x2E /* - terminal marker 46 - */, +/* pos 02dd: 392 */ 0xEE /* 'n' -> */, +/* pos 02de: 393 */ 0xE7 /* 'g' -> */, +/* pos 02df: 394 */ 0xF5 /* 'u' -> */, +/* pos 02e0: 395 */ 0xE1 /* 'a' -> */, +/* pos 02e1: 396 */ 0xE7 /* 'g' -> */, +/* pos 02e2: 397 */ 0xE5 /* 'e' -> */, +/* pos 02e3: 398 */ 0xBA /* ':' -> */, +/* pos 02e4: 399 */ 0x00, 0x2F /* - terminal marker 47 - */, +/* pos 02e6: 400 */ 0xE3 /* 'c' -> */, +/* pos 02e7: 401 */ 0xE1 /* 'a' -> */, +/* pos 02e8: 402 */ 0xF4 /* 't' -> */, +/* pos 02e9: 403 */ 0xE9 /* 'i' -> */, +/* pos 02ea: 404 */ 0xEF /* 'o' -> */, +/* pos 02eb: 405 */ 0xEE /* 'n' -> */, +/* pos 02ec: 406 */ 0xBA /* ':' -> */, +/* pos 02ed: 407 */ 0x00, 0x30 /* - terminal marker 48 - */, +/* pos 02ef: 408 */ 0xE1 /* 'a' -> */, +/* pos 02f0: 409 */ 0xEE /* 'n' -> */, +/* pos 02f1: 410 */ 0xE7 /* 'g' -> */, +/* pos 02f2: 411 */ 0xE5 /* 'e' -> */, +/* pos 02f3: 412 */ 0xBA /* ':' -> */, +/* pos 02f4: 413 */ 0x00, 0x31 /* - terminal marker 49 - */, +/* pos 02f6: 414 */ 0x74 /* 't' */, 0x07, 0x00 /* (to 0x02FD state 415) */, + 0x78 /* 'x' */, 0x09, 0x00 /* (to 0x0302 state 419) */, + 0x08, /* fail */ +/* pos 02fd: 415 */ 0xE1 /* 'a' -> */, +/* pos 02fe: 416 */ 0xE7 /* 'g' -> */, +/* pos 02ff: 417 */ 0xBA /* ':' -> */, +/* pos 0300: 418 */ 0x00, 0x32 /* - terminal marker 50 - */, +/* pos 0302: 419 */ 0xF0 /* 'p' -> */, +/* pos 0303: 420 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x030A state 421) */, + 0x69 /* 'i' */, 0x09, 0x00 /* (to 0x030F state 425) */, + 0x08, /* fail */ +/* pos 030a: 421 */ 0xE3 /* 'c' -> */, +/* pos 030b: 422 */ 0xF4 /* 't' -> */, +/* pos 030c: 423 */ 0xBA /* ':' -> */, +/* pos 030d: 424 */ 0x00, 0x33 /* - terminal marker 51 - */, +/* pos 030f: 425 */ 0xF2 /* 'r' -> */, +/* pos 0310: 426 */ 0xE5 /* 'e' -> */, +/* pos 0311: 427 */ 0xF3 /* 's' -> */, +/* pos 0312: 428 */ 0xBA /* ':' -> */, +/* pos 0313: 429 */ 0x00, 0x34 /* - terminal marker 52 - */, +/* pos 0315: 430 */ 0xF2 /* 'r' -> */, +/* pos 0316: 431 */ 0xEF /* 'o' -> */, +/* pos 0317: 432 */ 0xED /* 'm' -> */, +/* pos 0318: 433 */ 0xBA /* ':' -> */, +/* pos 0319: 434 */ 0x00, 0x35 /* - terminal marker 53 - */, +/* pos 031b: 435 */ 0xF4 /* 't' -> */, +/* pos 031c: 436 */ 0xE3 /* 'c' -> */, +/* pos 031d: 437 */ 0xE8 /* 'h' -> */, +/* pos 031e: 438 */ 0xBA /* ':' -> */, +/* pos 031f: 439 */ 0x00, 0x36 /* - terminal marker 54 - */, +/* pos 0321: 440 */ 0xE1 /* 'a' -> */, +/* pos 0322: 441 */ 0xEE /* 'n' -> */, +/* pos 0323: 442 */ 0xE7 /* 'g' -> */, +/* pos 0324: 443 */ 0xE5 /* 'e' -> */, +/* pos 0325: 444 */ 0xBA /* ':' -> */, +/* pos 0326: 445 */ 0x00, 0x37 /* - terminal marker 55 - */, +/* pos 0328: 446 */ 0xEE /* 'n' -> */, +/* pos 0329: 447 */ 0xED /* 'm' -> */, +/* pos 032a: 448 */ 0xEF /* 'o' -> */, +/* pos 032b: 449 */ 0xE4 /* 'd' -> */, +/* pos 032c: 450 */ 0xE9 /* 'i' -> */, +/* pos 032d: 451 */ 0xE6 /* 'f' -> */, +/* pos 032e: 452 */ 0xE9 /* 'i' -> */, +/* pos 032f: 453 */ 0xE5 /* 'e' -> */, +/* pos 0330: 454 */ 0xE4 /* 'd' -> */, +/* pos 0331: 455 */ 0xAD /* '-' -> */, +/* pos 0332: 456 */ 0xF3 /* 's' -> */, +/* pos 0333: 457 */ 0xE9 /* 'i' -> */, +/* pos 0334: 458 */ 0xEE /* 'n' -> */, +/* pos 0335: 459 */ 0xE3 /* 'c' -> */, +/* pos 0336: 460 */ 0xE5 /* 'e' -> */, +/* pos 0337: 461 */ 0xBA /* ':' -> */, +/* pos 0338: 462 */ 0x00, 0x38 /* - terminal marker 56 - */, +/* pos 033a: 463 */ 0x61 /* 'a' */, 0x0A, 0x00 /* (to 0x0344 state 464) */, + 0x69 /* 'i' */, 0x15, 0x00 /* (to 0x0352 state 477) */, + 0x6F /* 'o' */, 0x17, 0x00 /* (to 0x0357 state 481) */, + 0x08, /* fail */ +/* pos 0344: 464 */ 0xF3 /* 's' -> */, +/* pos 0345: 465 */ 0xF4 /* 't' -> */, +/* pos 0346: 466 */ 0xAD /* '-' -> */, +/* pos 0347: 467 */ 0xED /* 'm' -> */, +/* pos 0348: 468 */ 0xEF /* 'o' -> */, +/* pos 0349: 469 */ 0xE4 /* 'd' -> */, +/* pos 034a: 470 */ 0xE9 /* 'i' -> */, +/* pos 034b: 471 */ 0xE6 /* 'f' -> */, +/* pos 034c: 472 */ 0xE9 /* 'i' -> */, +/* pos 034d: 473 */ 0xE5 /* 'e' -> */, +/* pos 034e: 474 */ 0xE4 /* 'd' -> */, +/* pos 034f: 475 */ 0xBA /* ':' -> */, +/* pos 0350: 476 */ 0x00, 0x39 /* - terminal marker 57 - */, +/* pos 0352: 477 */ 0xEE /* 'n' -> */, +/* pos 0353: 478 */ 0xEB /* 'k' -> */, +/* pos 0354: 479 */ 0xBA /* ':' -> */, +/* pos 0355: 480 */ 0x00, 0x3A /* - terminal marker 58 - */, +/* pos 0357: 481 */ 0xE3 /* 'c' -> */, +/* pos 0358: 482 */ 0xE1 /* 'a' -> */, +/* pos 0359: 483 */ 0xF4 /* 't' -> */, +/* pos 035a: 484 */ 0xE9 /* 'i' -> */, +/* pos 035b: 485 */ 0xEF /* 'o' -> */, +/* pos 035c: 486 */ 0xEE /* 'n' -> */, +/* pos 035d: 487 */ 0xBA /* ':' -> */, +/* pos 035e: 488 */ 0x00, 0x3B /* - terminal marker 59 - */, +/* pos 0360: 489 */ 0xE1 /* 'a' -> */, +/* pos 0361: 490 */ 0xF8 /* 'x' -> */, +/* pos 0362: 491 */ 0xAD /* '-' -> */, +/* pos 0363: 492 */ 0xE6 /* 'f' -> */, +/* pos 0364: 493 */ 0xEF /* 'o' -> */, +/* pos 0365: 494 */ 0xF2 /* 'r' -> */, +/* pos 0366: 495 */ 0xF7 /* 'w' -> */, +/* pos 0367: 496 */ 0xE1 /* 'a' -> */, +/* pos 0368: 497 */ 0xF2 /* 'r' -> */, +/* pos 0369: 498 */ 0xE4 /* 'd' -> */, +/* pos 036a: 499 */ 0xF3 /* 's' -> */, +/* pos 036b: 500 */ 0xBA /* ':' -> */, +/* pos 036c: 501 */ 0x00, 0x3C /* - terminal marker 60 - */, +/* pos 036e: 502 */ 0xF8 /* 'x' -> */, +/* pos 036f: 503 */ 0xF9 /* 'y' -> */, +/* pos 0370: 504 */ 0x2D /* '-' */, 0x07, 0x00 /* (to 0x0377 state 505) */, + 0x20 /* ' ' */, 0x9F, 0x00 /* (to 0x0412 state 636) */, + 0x08, /* fail */ +/* pos 0377: 505 */ 0xE1 /* 'a' -> */, +/* pos 0378: 506 */ 0xF5 /* 'u' -> */, +/* pos 0379: 507 */ 0xF4 /* 't' -> */, +/* pos 037a: 508 */ 0xE8 /* 'h' -> */, +/* pos 037b: 509 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x0382 state 510) */, + 0x6F /* 'o' */, 0x0E, 0x00 /* (to 0x038C state 519) */, + 0x08, /* fail */ +/* pos 0382: 510 */ 0xEE /* 'n' -> */, +/* pos 0383: 511 */ 0xF4 /* 't' -> */, +/* pos 0384: 512 */ 0xE9 /* 'i' -> */, +/* pos 0385: 513 */ 0xE3 /* 'c' -> */, +/* pos 0386: 514 */ 0xE1 /* 'a' -> */, +/* pos 0387: 515 */ 0xF4 /* 't' -> */, +/* pos 0388: 516 */ 0xE5 /* 'e' -> */, +/* pos 0389: 517 */ 0xBA /* ':' -> */, +/* pos 038a: 518 */ 0x00, 0x3D /* - terminal marker 61 - */, +/* pos 038c: 519 */ 0xF2 /* 'r' -> */, +/* pos 038d: 520 */ 0xE9 /* 'i' -> */, +/* pos 038e: 521 */ 0xFA /* 'z' -> */, +/* pos 038f: 522 */ 0xE1 /* 'a' -> */, +/* pos 0390: 523 */ 0xF4 /* 't' -> */, +/* pos 0391: 524 */ 0xE9 /* 'i' -> */, +/* pos 0392: 525 */ 0xEF /* 'o' -> */, +/* pos 0393: 526 */ 0xEE /* 'n' -> */, +/* pos 0394: 527 */ 0xBA /* ':' -> */, +/* pos 0395: 528 */ 0x00, 0x3E /* - terminal marker 62 - */, +/* pos 0397: 529 */ 0xE5 /* 'e' -> */, +/* pos 0398: 530 */ 0xF3 /* 's' -> */, +/* pos 0399: 531 */ 0xE8 /* 'h' -> */, +/* pos 039a: 532 */ 0xBA /* ':' -> */, +/* pos 039b: 533 */ 0x00, 0x3F /* - terminal marker 63 - */, +/* pos 039d: 534 */ 0xF2 /* 'r' -> */, +/* pos 039e: 535 */ 0xF9 /* 'y' -> */, +/* pos 039f: 536 */ 0xAD /* '-' -> */, +/* pos 03a0: 537 */ 0xE1 /* 'a' -> */, +/* pos 03a1: 538 */ 0xE6 /* 'f' -> */, +/* pos 03a2: 539 */ 0xF4 /* 't' -> */, +/* pos 03a3: 540 */ 0xE5 /* 'e' -> */, +/* pos 03a4: 541 */ 0xF2 /* 'r' -> */, +/* pos 03a5: 542 */ 0xBA /* ':' -> */, +/* pos 03a6: 543 */ 0x00, 0x40 /* - terminal marker 64 - */, +/* pos 03a8: 544 */ 0xF6 /* 'v' -> */, +/* pos 03a9: 545 */ 0xE5 /* 'e' -> */, +/* pos 03aa: 546 */ 0xF2 /* 'r' -> */, +/* pos 03ab: 547 */ 0xBA /* ':' -> */, +/* pos 03ac: 548 */ 0x00, 0x41 /* - terminal marker 65 - */, +/* pos 03ae: 549 */ 0xAD /* '-' -> */, +/* pos 03af: 550 */ 0xE3 /* 'c' -> */, +/* pos 03b0: 551 */ 0xEF /* 'o' -> */, +/* pos 03b1: 552 */ 0xEF /* 'o' -> */, +/* pos 03b2: 553 */ 0xEB /* 'k' -> */, +/* pos 03b3: 554 */ 0xE9 /* 'i' -> */, +/* pos 03b4: 555 */ 0xE5 /* 'e' -> */, +/* pos 03b5: 556 */ 0xBA /* ':' -> */, +/* pos 03b6: 557 */ 0x00, 0x42 /* - terminal marker 66 - */, +/* pos 03b8: 558 */ 0xF2 /* 'r' -> */, +/* pos 03b9: 559 */ 0xE9 /* 'i' -> */, +/* pos 03ba: 560 */ 0xE3 /* 'c' -> */, +/* pos 03bb: 561 */ 0xF4 /* 't' -> */, +/* pos 03bc: 562 */ 0xAD /* '-' -> */, +/* pos 03bd: 563 */ 0xF4 /* 't' -> */, +/* pos 03be: 564 */ 0xF2 /* 'r' -> */, +/* pos 03bf: 565 */ 0xE1 /* 'a' -> */, +/* pos 03c0: 566 */ 0xEE /* 'n' -> */, +/* pos 03c1: 567 */ 0xF3 /* 's' -> */, +/* pos 03c2: 568 */ 0xF0 /* 'p' -> */, +/* pos 03c3: 569 */ 0xEF /* 'o' -> */, +/* pos 03c4: 570 */ 0xF2 /* 'r' -> */, +/* pos 03c5: 571 */ 0xF4 /* 't' -> */, +/* pos 03c6: 572 */ 0xAD /* '-' -> */, +/* pos 03c7: 573 */ 0xF3 /* 's' -> */, +/* pos 03c8: 574 */ 0xE5 /* 'e' -> */, +/* pos 03c9: 575 */ 0xE3 /* 'c' -> */, +/* pos 03ca: 576 */ 0xF5 /* 'u' -> */, +/* pos 03cb: 577 */ 0xF2 /* 'r' -> */, +/* pos 03cc: 578 */ 0xE9 /* 'i' -> */, +/* pos 03cd: 579 */ 0xF4 /* 't' -> */, +/* pos 03ce: 580 */ 0xF9 /* 'y' -> */, +/* pos 03cf: 581 */ 0xBA /* ':' -> */, +/* pos 03d0: 582 */ 0x00, 0x43 /* - terminal marker 67 - */, +/* pos 03d2: 583 */ 0xF2 /* 'r' -> */, +/* pos 03d3: 584 */ 0xE1 /* 'a' -> */, +/* pos 03d4: 585 */ 0xEE /* 'n' -> */, +/* pos 03d5: 586 */ 0xF3 /* 's' -> */, +/* pos 03d6: 587 */ 0xE6 /* 'f' -> */, +/* pos 03d7: 588 */ 0xE5 /* 'e' -> */, +/* pos 03d8: 589 */ 0xF2 /* 'r' -> */, +/* pos 03d9: 590 */ 0xAD /* '-' -> */, +/* pos 03da: 591 */ 0xE5 /* 'e' -> */, +/* pos 03db: 592 */ 0xEE /* 'n' -> */, +/* pos 03dc: 593 */ 0xE3 /* 'c' -> */, +/* pos 03dd: 594 */ 0xEF /* 'o' -> */, +/* pos 03de: 595 */ 0xE4 /* 'd' -> */, +/* pos 03df: 596 */ 0xE9 /* 'i' -> */, +/* pos 03e0: 597 */ 0xEE /* 'n' -> */, +/* pos 03e1: 598 */ 0xE7 /* 'g' -> */, +/* pos 03e2: 599 */ 0xBA /* ':' -> */, +/* pos 03e3: 600 */ 0x00, 0x44 /* - terminal marker 68 - */, +/* pos 03e5: 601 */ 0xE5 /* 'e' -> */, +/* pos 03e6: 602 */ 0xF2 /* 'r' -> */, +/* pos 03e7: 603 */ 0xAD /* '-' -> */, +/* pos 03e8: 604 */ 0xE1 /* 'a' -> */, +/* pos 03e9: 605 */ 0xE7 /* 'g' -> */, +/* pos 03ea: 606 */ 0xE5 /* 'e' -> */, +/* pos 03eb: 607 */ 0xEE /* 'n' -> */, +/* pos 03ec: 608 */ 0xF4 /* 't' -> */, +/* pos 03ed: 609 */ 0xBA /* ':' -> */, +/* pos 03ee: 610 */ 0x00, 0x45 /* - terminal marker 69 - */, +/* pos 03f0: 611 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x03F7 state 612) */, + 0x69 /* 'i' */, 0x09, 0x00 /* (to 0x03FC state 616) */, + 0x08, /* fail */ +/* pos 03f7: 612 */ 0xF2 /* 'r' -> */, +/* pos 03f8: 613 */ 0xF9 /* 'y' -> */, +/* pos 03f9: 614 */ 0xBA /* ':' -> */, +/* pos 03fa: 615 */ 0x00, 0x46 /* - terminal marker 70 - */, +/* pos 03fc: 616 */ 0xE1 /* 'a' -> */, +/* pos 03fd: 617 */ 0xBA /* ':' -> */, +/* pos 03fe: 618 */ 0x00, 0x47 /* - terminal marker 71 - */, +/* pos 0400: 619 */ 0xF7 /* 'w' -> */, +/* pos 0401: 620 */ 0xF7 /* 'w' -> */, +/* pos 0402: 621 */ 0xAD /* '-' -> */, +/* pos 0403: 622 */ 0xE1 /* 'a' -> */, +/* pos 0404: 623 */ 0xF5 /* 'u' -> */, +/* pos 0405: 624 */ 0xF4 /* 't' -> */, +/* pos 0406: 625 */ 0xE8 /* 'h' -> */, +/* pos 0407: 626 */ 0xE5 /* 'e' -> */, +/* pos 0408: 627 */ 0xEE /* 'n' -> */, +/* pos 0409: 628 */ 0xF4 /* 't' -> */, +/* pos 040a: 629 */ 0xE9 /* 'i' -> */, +/* pos 040b: 630 */ 0xE3 /* 'c' -> */, +/* pos 040c: 631 */ 0xE1 /* 'a' -> */, +/* pos 040d: 632 */ 0xF4 /* 't' -> */, +/* pos 040e: 633 */ 0xE5 /* 'e' -> */, +/* pos 040f: 634 */ 0xBA /* ':' -> */, +/* pos 0410: 635 */ 0x00, 0x48 /* - terminal marker 72 - */, +/* pos 0412: 636 */ 0x00, 0x49 /* - terminal marker 73 - */, +/* pos 0414: 637 */ 0xF4 /* 't' -> */, +/* pos 0415: 638 */ 0xE3 /* 'c' -> */, +/* pos 0416: 639 */ 0xE8 /* 'h' -> */, +/* pos 0417: 640 */ 0x00, 0x4A /* - terminal marker 74 - */, +/* pos 0419: 641 */ 0xF4 /* 't' -> */, +/* pos 041a: 642 */ 0x00, 0x4B /* - terminal marker 75 - */, +/* pos 041c: 643 */ 0xEC /* 'l' -> */, +/* pos 041d: 644 */ 0xE5 /* 'e' -> */, +/* pos 041e: 645 */ 0xF4 /* 't' -> */, +/* pos 041f: 646 */ 0xE5 /* 'e' -> */, +/* pos 0420: 647 */ 0x00, 0x4C /* - terminal marker 76 - */, +/* total size 1058 bytes */ diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index 3c717ff..9aa07cb 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -389,8 +389,12 @@ enum lws_token_indexes { WSI_TOKEN_HTTP_WWW_AUTHENTICATE, WSI_TOKEN_PROXY, + WSI_TOKEN_PATCH_URI, + WSI_TOKEN_PUT_URI, + WSI_TOKEN_DELETE_URI, + WSI_TOKEN_HTTP_URI_ARGS, - + /* use token storage to stash these */ _WSI_TOKEN_CLIENT_SENT_PROTOCOLS, diff --git a/lib/parsers.c b/lib/parsers.c index 2b4a900..25996fb 100644 --- a/lib/parsers.c +++ b/lib/parsers.c @@ -202,7 +202,15 @@ int libwebsocket_parse( struct libwebsocket_context *context, struct libwebsocket *wsi, unsigned char c) { - int n; + static const unsigned char methods[] = { + WSI_TOKEN_GET_URI, + WSI_TOKEN_POST_URI, + WSI_TOKEN_OPTIONS_URI, + WSI_TOKEN_PUT_URI, + WSI_TOKEN_PATCH_URI, + WSI_TOKEN_DELETE_URI, + }; + int n, m; switch (wsi->u.hdr.parser_state) { default: @@ -215,9 +223,11 @@ int libwebsocket_parse( wsi->u.hdr.parser_state]].len && c == ' ') break; - if ((wsi->u.hdr.parser_state != WSI_TOKEN_GET_URI) && - (wsi->u.hdr.parser_state != WSI_TOKEN_POST_URI) && - (wsi->u.hdr.parser_state != WSI_TOKEN_OPTIONS_URI)) + for (m = 0; m < ARRAY_SIZE(methods); m++) + if (wsi->u.hdr.parser_state == methods[m]) + break; + if (m == ARRAY_SIZE(methods)) + /* it was not any of the methods */ goto check_eol; /* special URI processing... end at space */ @@ -398,17 +408,15 @@ swallow: if (wsi->u.hdr.lextable_pos < 0) { /* this is not a header we know about */ - if (wsi->u.hdr.ah->frag_index[WSI_TOKEN_GET_URI] || - wsi->u.hdr.ah->frag_index[WSI_TOKEN_POST_URI] || - wsi->u.hdr.ah->frag_index[WSI_TOKEN_OPTIONS_URI] || - wsi->u.hdr.ah->frag_index[WSI_TOKEN_HTTP]) { - /* - * already had the method, no idea what - * this crap is, ignore - */ - wsi->u.hdr.parser_state = WSI_TOKEN_SKIPPING; - break; - } + for (m = 0; m < ARRAY_SIZE(methods); m++) + if (wsi->u.hdr.ah->frag_index[methods[m]]) { + /* + * already had the method, no idea what + * this crap is, ignore + */ + wsi->u.hdr.parser_state = WSI_TOKEN_SKIPPING; + break; + } /* * hm it's an unknown http method in fact, * treat as dangerous @@ -418,28 +426,19 @@ swallow: return -1; } if (lextable[wsi->u.hdr.lextable_pos] < FAIL_CHAR) { - /* terminal state */ n = ((unsigned int)lextable[wsi->u.hdr.lextable_pos] << 8) | lextable[wsi->u.hdr.lextable_pos + 1]; lwsl_parser("known hdr %d\n", n); - if (n == WSI_TOKEN_GET_URI && - wsi->u.hdr.ah->frag_index[WSI_TOKEN_GET_URI]) { - lwsl_warn("Duplicated GET\n"); - return -1; - } - if (n == WSI_TOKEN_POST_URI && - wsi->u.hdr.ah->frag_index[WSI_TOKEN_POST_URI]) { - lwsl_warn("Duplicated POST\n"); - return -1; - } - if (n == WSI_TOKEN_OPTIONS_URI && - wsi->u.hdr.ah->frag_index[WSI_TOKEN_OPTIONS_URI]) { - lwsl_warn("Duplicated OPTIONS\n"); - return -1; - } + for (m = 0; m < ARRAY_SIZE(methods); m++) + if (n == methods[m] && + wsi->u.hdr.ah->frag_index[ + methods[m]]) { + lwsl_warn("Duplicated method\n"); + return -1; + } /* * WSORIGIN is protocol equiv to ORIGIN, diff --git a/lib/server.c b/lib/server.c index ed5c47b..df2524a 100644 --- a/lib/server.c +++ b/lib/server.c @@ -179,60 +179,58 @@ int lws_http_action(struct libwebsocket_context *context, char content_length_str[32]; char http_version_str[10]; char http_conn_str[20]; - int n; - - /* it's not websocket.... shall we accept it as http? */ - - if (!lws_hdr_total_length(wsi, WSI_TOKEN_GET_URI) && - !lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI) && + int n, count = 0; + static const unsigned char methods[] = { + WSI_TOKEN_GET_URI, + WSI_TOKEN_POST_URI, + WSI_TOKEN_OPTIONS_URI, + WSI_TOKEN_PUT_URI, + WSI_TOKEN_PATCH_URI, + WSI_TOKEN_DELETE_URI, #ifdef LWS_USE_HTTP2 - !lws_hdr_total_length(wsi, WSI_TOKEN_HTTP_COLON_PATH) && + WSI_TOKEN_HTTP_COLON_PATH, #endif - !lws_hdr_total_length(wsi, WSI_TOKEN_OPTIONS_URI)) { + }; + static const char * const method_names[] = { + "GET", "POST", "OPTIONS", "PUT", "PATCH", "DELETE", +#ifdef LWS_USE_HTTP2 + ":path", +#endif + }; + + /* it's not websocket.... shall we accept it as http? */ + + for (n = 0; n < ARRAY_SIZE(methods); n++) + if (lws_hdr_total_length(wsi, methods[n])) + count++; + if (!count) { lwsl_warn("Missing URI in HTTP request\n"); goto bail_nuke_ah; } - if (lws_hdr_total_length(wsi, WSI_TOKEN_GET_URI) && - lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI)) { - lwsl_warn("GET and POST methods?\n"); + if (count != 1) { + lwsl_warn("multiple methods?\n"); goto bail_nuke_ah; } if (libwebsocket_ensure_user_space(wsi)) goto bail_nuke_ah; -#ifdef LWS_USE_HTTP2 - if (lws_hdr_total_length(wsi, WSI_TOKEN_HTTP_COLON_PATH)) { - uri_ptr = lws_hdr_simple_ptr(wsi, WSI_TOKEN_HTTP_COLON_PATH); - uri_len = lws_hdr_total_length(wsi, WSI_TOKEN_HTTP_COLON_PATH); - lwsl_info("HTTP2 request for '%s'\n", uri_ptr); - goto got_uri; - } -#endif - if (lws_hdr_total_length(wsi, WSI_TOKEN_OPTIONS_URI)) { - uri_ptr = lws_hdr_simple_ptr(wsi, WSI_TOKEN_OPTIONS_URI); - uri_len = lws_hdr_total_length(wsi, WSI_TOKEN_OPTIONS_URI); - lwsl_info("HTTP OPTIONS request for '%s'\n", uri_ptr); - goto got_uri; - } - if (lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI)) { - uri_ptr = lws_hdr_simple_ptr(wsi, WSI_TOKEN_POST_URI); - uri_len = lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI); - lwsl_info("HTTP POST request for '%s'\n", uri_ptr); - goto got_uri; - } - if (lws_hdr_total_length(wsi, WSI_TOKEN_GET_URI)) { - uri_ptr = lws_hdr_simple_ptr(wsi, WSI_TOKEN_GET_URI); - uri_len = lws_hdr_total_length(wsi, WSI_TOKEN_GET_URI); - lwsl_info("HTTP GET request for '%s'\n", uri_ptr); - } + for (n = 0; n < ARRAY_SIZE(methods); n++) + if (lws_hdr_total_length(wsi, methods[n])) { + uri_ptr = lws_hdr_simple_ptr(wsi, methods[n]); + uri_len = lws_hdr_total_length(wsi, methods[n]); + lwsl_info("Method: %s request for '%s'\n", + method_names[n], uri_ptr); + break; + } -got_uri: /* HTTP header had a content length? */ wsi->u.http.content_length = 0; - if (lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI)) + if (lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI) || + lws_hdr_total_length(wsi, WSI_TOKEN_PATCH_URI) || + lws_hdr_total_length(wsi, WSI_TOKEN_PUT_URI)) wsi->u.http.content_length = 100 * 1024 * 1024; if (lws_hdr_total_length(wsi, WSI_TOKEN_HTTP_CONTENT_LENGTH)) { -- 2.7.4