1 /* -*- buffer-read-only: t -*-
2  *
3  *    regcharclass.h
4  *
5  *    Copyright (C) 2007, 2011 by Larry Wall and others
6  *
7  *    You may distribute under the terms of either the GNU General Public
8  *    License or the Artistic License, as specified in the README file.
9  *
10  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
11  * This file is built by regen/regcharclass.pl.
12  * Any changes made here will be lost!
13  * WARNING: These macros are for internal Perl core use only, and may be
14  * changed or removed without notice.
15  */
16 
17 
18 #ifndef PERL_REGCHARCLASS_H_ /* Guard against nested #includes */
19 #define PERL_REGCHARCLASS_H_
20 
21 #if 'A' == 65 /* ASCII/Latin1 */
22 /*
23 	LNBREAK: Line Break: \R
24 
25 	"\x0D\x0A"      # CRLF - Network (Windows) line ending
26 	\p{VertSpace}
27 */
28 /*** GENERATED CODE ***/
29 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
30 ( ((e)-(s) > 2) ?                                                           \
31     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\f') ) ? 1            \
32     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
33 	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
34     : ( is_utf8 ) ?                                                         \
35 	( ( 0xC2 == ((const U8*)s)[0] ) ?                                   \
36 	    ( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                       \
37 	: ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )\
38     : ( 0x85 == ((const U8*)s)[0] ) )                                       \
39 : ((e)-(s) > 1) ?                                                           \
40     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\f') ) ? 1            \
41     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
42 	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
43     : ( is_utf8 ) ?                                                         \
44 	( ( ( 0xC2 == ((const U8*)s)[0] ) && ( 0x85 == ((const U8*)s)[1] ) ) ? 2 : 0 )\
45     : ( 0x85 == ((const U8*)s)[0] ) )                                       \
46 : ((e)-(s) > 0) ?                                                           \
47     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\r') ) ? 1            \
48     : ( !( is_utf8 ) ) ?                                                    \
49 	( 0x85 == ((const U8*)s)[0] )                                       \
50     : 0 )                                                                   \
51 : 0 )
52 
53 /*** GENERATED CODE ***/
54 #define is_LNBREAK_utf8_safe(s,e)                                           \
55 ( ((e)-(s) > 2) ?                                                           \
56     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\f') ) ? 1            \
57     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
58 	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
59     : ( 0xC2 == ((const U8*)s)[0] ) ?                                       \
60 	( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
61     : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )\
62 : ((e)-(s) > 1) ?                                                           \
63     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\f') ) ? 1            \
64     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
65 	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
66     : ( ( 0xC2 == ((const U8*)s)[0] ) && ( 0x85 == ((const U8*)s)[1] ) ) ? 2 : 0 )\
67 : ((e)-(s) > 0) ?                                                           \
68     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\r') )                  \
69 : 0 )
70 
71 /*** GENERATED CODE ***/
72 #define is_LNBREAK_latin1_safe(s,e)                                         \
73 ( ((e)-(s) > 1) ?                                                           \
74     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\f') || 0x85 == ((const U8*)s)[0] ) ? 1\
75     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
76 	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
77     : 0 )                                                                   \
78 : ((e)-(s) > 0) ?                                                           \
79     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\r') || 0x85 == ((const U8*)s)[0] )\
80 : 0 )
81 
82 /*
83 	HORIZWS: Horizontal Whitespace: \h \H
84 
85 	\p{HorizSpace}
86 */
87 /*** GENERATED CODE ***/
88 #define is_HORIZWS_high(s)                                                  \
89 ( ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
90     ( ( ( 0x9A == ((const U8*)s)[1] ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
91 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
92     ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
93 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x8A) || 0xAF == ((const U8*)s)[2] ) ? 3 : 0 )\
94     : ( ( 0x81 == ((const U8*)s)[1] ) && ( 0x9F == ((const U8*)s)[2] ) ) ? 3 : 0 )\
95 : ( ( ( 0xE3 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )
96 
97 /*** GENERATED CODE ***/
98 #define is_HORIZWS_cp_high(cp)                                              \
99 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
100 ( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
101 ( 0x202F == cp || ( 0x202F < cp &&                                          \
102 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) )
103 
104 /*
105 	VERTWS: Vertical Whitespace: \v \V
106 
107 	\p{VertSpace}
108 */
109 /*** GENERATED CODE ***/
110 #define is_VERTWS_high(s)                                                   \
111 ( ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )
112 
113 /*** GENERATED CODE ***/
114 #define is_VERTWS_cp_high(cp)                                               \
115 ( inRANGE_helper_(UV, cp, 0x2028, 0x2029) )
116 
117 /*
118 	XDIGIT: Hexadecimal digits
119 
120 	\p{XDigit}
121 */
122 /*** GENERATED CODE ***/
123 #define is_XDIGIT_high(s)                                                   \
124 ( ( 0xEF == ((const U8*)s)[0] ) ?                                           \
125     ( ( 0xBC == ((const U8*)s)[1] ) ?                                       \
126 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x90, 0x99) || inRANGE_helper_(U8, ((const U8*)s)[2], 0xA1, 0xA6) ) ? 3 : 0 )\
127     : ( ( 0xBD == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x81, 0x86) ) ) ? 3 : 0 )\
128 : 0 )
129 
130 /*** GENERATED CODE ***/
131 #define is_XDIGIT_cp_high(cp)                                               \
132 ( inRANGE_helper_(UV, cp, 0xFF10, 0xFF19) || ( 0xFF19 < cp &&               \
133 ( inRANGE_helper_(UV, cp, 0xFF21, 0xFF26) || inRANGE_helper_(UV, cp, 0xFF41, 0xFF46) ) ) )
134 
135 /*
136 	XPERLSPACE: \p{XPerlSpace}
137 
138 	\p{XPerlSpace}
139 */
140 /*** GENERATED CODE ***/
141 #define is_XPERLSPACE_high(s)                                               \
142 ( ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
143     ( ( ( 0x9A == ((const U8*)s)[1] ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
144 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
145     ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
146 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x8A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0xA8, 0xA9) || 0xAF == ((const U8*)s)[2] ) ? 3 : 0 )\
147     : ( ( 0x81 == ((const U8*)s)[1] ) && ( 0x9F == ((const U8*)s)[2] ) ) ? 3 : 0 )\
148 : ( ( ( 0xE3 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )
149 
150 /*** GENERATED CODE ***/
151 #define is_XPERLSPACE_cp_high(cp)                                           \
152 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
153 ( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
154 ( inRANGE_helper_(UV, cp, 0x2028, 0x2029) || ( 0x2029 < cp &&               \
155 ( 0x202F == cp || ( 0x202F < cp &&                                          \
156 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) )
157 
158 /*
159 	NONCHAR: Non character code points
160 
161 	\p{_Perl_Nchar}
162 */
163 /*** GENERATED CODE ***/
164 #define is_NONCHAR_utf8_safe(s,e)                                           \
165 ( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xEF == ((const U8*)s)[0] ) ?\
166 	    ( ( 0xB7 == ((const U8*)s)[1] ) ?                               \
167 		( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x90, 0xAF) ) ? 3 : 0 )\
168 	    : ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xBE, 0xBF) ) ) ? 3 : 0 )\
169 	: ( 0xF0 == ((const U8*)s)[0] ) ?                                   \
170 	    ( ( ( ( ((const U8*)s)[1] == 0x9F || ( ( ((const U8*)s)[1] & 0xEF ) == 0xAF ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
171 	: ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xF1, 0xF3) ) ?          \
172 	    ( ( ( ( ( ((const U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
173 	: ( ( ( ( 0xF4 == ((const U8*)s)[0] ) && ( 0x8F == ((const U8*)s)[1] ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 ) : 0 )
174 
175 /*
176 	SHORTER_NON_CHARS: # 3 bytes
177 
178 	0xFDD0 - 0xFDEF
179 	0xFFFE - 0xFFFF
180 */
181 /*** GENERATED CODE ***/
182 #define is_SHORTER_NON_CHARS_utf8(s)                                        \
183 ( ( 0xEF == ((const U8*)s)[0] ) ?                                           \
184     ( ( 0xB7 == ((const U8*)s)[1] ) ?                                       \
185 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x90, 0xAF) ) ? 3 : 0 )  \
186     : ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xBE, 0xBF) ) ) ? 3 : 0 )\
187 : 0 )
188 
189 /*
190 	LARGER_NON_CHARS: # 4 bytes
191 
192 	0x1FFFE - 0x1FFFF
193 	0x2FFFE - 0x2FFFF
194 	0x3FFFE - 0x3FFFF
195 	0x4FFFE - 0x4FFFF
196 	0x5FFFE - 0x5FFFF
197 	0x6FFFE - 0x6FFFF
198 	0x7FFFE - 0x7FFFF
199 	0x8FFFE - 0x8FFFF
200 	0x9FFFE - 0x9FFFF
201 	0xAFFFE - 0xAFFFF
202 	0xBFFFE - 0xBFFFF
203 	0xCFFFE - 0xCFFFF
204 	0xDFFFE - 0xDFFFF
205 	0xEFFFE - 0xEFFFF
206 	0xFFFFE - 0xFFFFF
207 	0x10FFFE - 0x10FFFF
208 */
209 /*** GENERATED CODE ***/
210 #define is_LARGER_NON_CHARS_utf8(s)                                         \
211 ( ( 0xF0 == ((const U8*)s)[0] ) ?                                           \
212     ( ( ( ( ((const U8*)s)[1] == 0x9F || ( ( ((const U8*)s)[1] & 0xEF ) == 0xAF ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
213 : ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xF1, 0xF3) ) ?                  \
214     ( ( ( ( ( ((const U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
215 : ( ( ( ( 0xF4 == ((const U8*)s)[0] ) && ( 0x8F == ((const U8*)s)[1] ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )
216 
217 /*
218 	SURROGATE: Surrogate code points
219 
220 	\p{_Perl_Surrogate}
221 */
222 /*** GENERATED CODE ***/
223 #define is_SURROGATE_utf8(s)                                                \
224 ( ( ( 0xED == ((const U8*)s)[0] ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0xA0, 0xBF) ) ) ? 3 : 0 )
225 
226 /*** GENERATED CODE ***/
227 #define is_SURROGATE_utf8_safe(s,e)                                         \
228 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xED == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0xA0, 0xBF) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xBF) ) ) ? 3 : 0 )
229 
230 /*
231 	QUOTEMETA: Meta-characters that \Q should quote
232 
233 	\p{_Perl_Quotemeta}
234 */
235 /*** GENERATED CODE ***/
236 #define is_QUOTEMETA_high(s)                                                \
237 ( ( 0xCD == ((const U8*)s)[0] ) ?                                           \
238     ( ( 0x8F == ((const U8*)s)[1] ) ? 2 : 0 )                               \
239 : ( 0xD8 == ((const U8*)s)[0] ) ?                                           \
240     ( ( 0x9C == ((const U8*)s)[1] ) ? 2 : 0 )                               \
241 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
242     ( ( 0x85 == ((const U8*)s)[1] ) ?                                       \
243 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x9F, 0xA0) ) ? 3 : 0 )  \
244     : ( 0x9A == ((const U8*)s)[1] ) ?                                       \
245 	( ( 0x80 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
246     : ( 0x9E == ((const U8*)s)[1] ) ?                                       \
247 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xB4, 0xB5) ) ? 3 : 0 )  \
248     : ( ( 0xA0 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x8B, 0x8F) ) ) ? 3 : 0 )\
249 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
250     ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
251 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xBE) ) ? 3 : 0 )  \
252     : ( 0x81 == ((const U8*)s)[1] ) ?                                       \
253 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x81, 0x93) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x95, 0xAF) ) ? 3 : 0 )\
254     : ( 0x86 == ((const U8*)s)[1] ) ?                                       \
255 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x90, 0xBF) ) ? 3 : 0 )  \
256     : ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x87, 0x90) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x94, 0x9C) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x9F, 0xAF) || inRANGE_helper_(U8, ((const U8*)s)[1], 0xB8, 0xB9) ) ?\
257 	3                                                                   \
258     : ( 0x91 == ((const U8*)s)[1] ) ?                                       \
259 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x9F) ) ? 3 : 0 )  \
260     : ( 0x9D == ((const U8*)s)[1] ) ?                                       \
261 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xB5) ) ? 3 : 0 )  \
262     : ( ( 0x9E == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x94, 0xBF) ) ) ? 3 : 0 )\
263 : ( 0xE3 == ((const U8*)s)[0] ) ?                                           \
264     ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
265 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x83) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x88, 0xA0) || 0xB0 == ((const U8*)s)[2] ) ? 3 : 0 )\
266     : ( ( 0x85 == ((const U8*)s)[1] ) && ( 0xA4 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
267 : ( 0xEF == ((const U8*)s)[0] ) ?                                           \
268     ( ( 0xB4 == ((const U8*)s)[1] ) ?                                       \
269 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xBE, 0xBF) ) ? 3 : 0 )  \
270     : ( 0xB8 == ((const U8*)s)[1] ) ?                                       \
271 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x8F) ) ? 3 : 0 )  \
272     : ( 0xB9 == ((const U8*)s)[1] ) ?                                       \
273 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x85, 0x86) ) ? 3 : 0 )  \
274     : ( 0xBB == ((const U8*)s)[1] ) ?                                       \
275 	( ( 0xBF == ((const U8*)s)[2] ) ? 3 : 0 )                           \
276     : ( 0xBE == ((const U8*)s)[1] ) ?                                       \
277 	( ( 0xA0 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
278     : ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xB0, 0xB8) ) ) ? 3 : 0 )\
279 : ( 0xF0 == ((const U8*)s)[0] ) ?                                           \
280     ( ( 0x9B == ((const U8*)s)[1] ) ?                                       \
281 	( ( ( 0xB2 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xA0, 0xA3) ) ) ? 4 : 0 )\
282     : ( ( ( 0x9D == ((const U8*)s)[1] ) && ( 0x85 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xB3, 0xBA) ) ) ? 4 : 0 )\
283 : ( ( 0xF3 == ((const U8*)s)[0] ) && ( 0xA0 == ((const U8*)s)[1] ) ) ? 4 : 0 )
284 
285 /*
286 	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
287 
288 	%regcharclass_multi_char_folds::multi_char_folds('u', 'a')
289 */
290 /*** GENERATED CODE ***/
291 #define is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                            \
292 ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                                 \
293 	    ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
294 	: ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )
295 
296 
297 /*** GENERATED CODE ***/
298 #define is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                            \
299 ( ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                                 \
300 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
301     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
302 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
303     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
304 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
305     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
306 	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ? 2\
307 	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
308     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
309 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
310     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
311 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
312     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
313 	( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
314 	    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[2], 's', 't') ) ? 3\
315 	    : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
316 	: 0 )                                                               \
317     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
318 	( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
319     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
320 	( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
321 	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
322 	: ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
323 	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
324 		( ( 0x82 == ((const U8*)s)[3] ) ?                           \
325 		    ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
326 		: 0 )                                                       \
327 	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
328 	: ( 0xB9 == ((const U8*)s)[1] ) ?                                   \
329 	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
330 		( ( 0x88 == ((const U8*)s)[3] ) ?                           \
331 		    ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
332 			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
333 		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
334 		: 0 )                                                       \
335 	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
336 	: 0 )                                                               \
337     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
338 	( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
339 	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
340 	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
341 	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
342 		( ( 0x88 == ((const U8*)s)[3] ) ?                           \
343 		    ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
344 			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
345 		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
346 		: ( 0x93 == ((const U8*)s)[3] ) ?                           \
347 		    ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
348 			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 4 )\
349 		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
350 		: 0 )                                                       \
351 	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
352 	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
353 	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
354 		( ( 0x82 == ((const U8*)s)[3] ) ?                           \
355 		    ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
356 		: 0 )                                                       \
357 	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
358 	: ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
359     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
360 	( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
361 	    ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
362 	: ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
363 	    ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
364 	: ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
365     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
366 	( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
367 	    ( ( ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
368 	: ( ( ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
369     : 0 )
370 
371 
372 /*** GENERATED CODE ***/
373 #define is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                            \
374 ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                                 \
375 	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
376     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
377 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
378 	    ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
379 	: ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
380     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
381 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
382     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
383 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
384     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
385 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
386     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
387 	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ? 2\
388 	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
389     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
390 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
391     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
392 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
393     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
394 	( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
395 	    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[2], 's', 't') ) ? 3\
396 	    : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
397 	: 0 )                                                               \
398     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
399 	( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
400     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
401 	( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
402 	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
403 	: ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
404 	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
405 		( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
406 	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
407 	: ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
408     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
409 	( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
410 	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
411 	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
412 	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
413 		( ( 0x93 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
414 	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
415 	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
416 	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
417 		( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
418 	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
419 	: ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
420     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
421 	( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
422 	    ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
423 	: ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
424 	    ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
425 	: ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
426     : 0 )
427 
428 
429 /*** GENERATED CODE ***/
430 #define is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                            \
431 ( ((e)-(s) > 2) ?                                                           \
432     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
433 	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
434     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
435 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
436 	    ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
437 	: ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
438     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
439 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
440     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
441 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
442     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
443 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
444     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
445 	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ? 2\
446 	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
447     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
448 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
449     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
450 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
451     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
452 	( ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[2], 's', 't') ) ) ? 3 : 0 )\
453     : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0xBC == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
454 : ((e)-(s) > 1) ?                                                           \
455     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
456 	( ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
457     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ) ? 2 : 0 )\
458 : 0 )
459 
460 
461 /*** GENERATED CODE ***/
462 #define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
463 ( ((e)-(s) > 5) ?                                                           \
464     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
465 	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
466     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )\
467 : ((e)-(s) > 4) ?                                                           \
468     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
469 	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
470     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
471 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
472 	    ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
473 	: ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
474     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
475 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
476     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
477 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
478     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
479 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
480     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
481 	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ? 2\
482 	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
483     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
484 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
485     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
486 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
487     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
488 	( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
489 	    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[2], 's', 't') ) ? 3\
490 	    : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
491 	: 0 )                                                               \
492     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
493 	( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
494     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
495 	( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
496 	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
497 	: ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
498 	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
499 		( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
500 	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
501 	: ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
502     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
503 	( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
504 	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
505 	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
506 	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
507 		( ( 0x93 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
508 	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
509 	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
510 	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
511 		( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
512 	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
513 	: ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
514     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
515 	( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
516 	    ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
517 	: ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
518 	    ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
519 	: ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
520     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
521 	( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
522 	    ( ( ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
523 	: ( ( ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
524     : 0 )                                                                   \
525 : ((e)-(s) > 3) ? is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )
526 
527 /*** GENERATED CODE ***/
528 #define what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                          \
529 ( ( 0x81 == ((const U8*)s)[1] ) ?                                           \
530 	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
531 	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
532 	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
533 		( ( 0x88 == ((const U8*)s)[3] ) ?                           \
534 		    ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
535 			( ( 0x80 == ((const U8*)s)[5] ) ? 0x1FE2            \
536 			: ( 0x81 == ((const U8*)s)[5] ) ? 0x3B0 : 0 )       \
537 		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 0x1FE7 : 0 )\
538 		: ( 0x93 == ((const U8*)s)[3] ) ?                           \
539 		    ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
540 			( ( 0x80 == ((const U8*)s)[5] ) ? 0x1F52            \
541 			: ( 0x81 == ((const U8*)s)[5] ) ? 0x1F54 : 0x1F50 ) \
542 		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 0x1F56 : 0x1F50 )\
543 		: 0 )                                                       \
544 	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
545 	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
546 	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
547 		( ( 0x82 == ((const U8*)s)[3] ) ?                           \
548 		    ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 0x1FF7 : 0x1FF6 )\
549 		: 0 )                                                       \
550 	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
551 	: ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )
552 
553 
554 /*** GENERATED CODE ***/
555 #define what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                          \
556 ( ( 0xD5 == ((const U8*)s)[0] ) ?                                           \
557 	( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
558 	    ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x587 : 0 )\
559 	: ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
560 	    ( ( 0xD5 == ((const U8*)s)[2] ) ?                               \
561 		( ( 0xA5 == ((const U8*)s)[3] ) ? 0xFB14                    \
562 		: ( 0xAB == ((const U8*)s)[3] ) ? 0xFB15                    \
563 		: ( 0xAD == ((const U8*)s)[3] ) ? 0xFB17                    \
564 		: ( 0xB6 == ((const U8*)s)[3] ) ? 0xFB13 : 0 )              \
565 	    : 0 )                                                           \
566 	: ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 0xFB16 : 0 )\
567     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
568 	( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
569 	    ( ( 0x80 == ((const U8*)s)[2] ) ?                               \
570 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
571 	    : ( 0x81 == ((const U8*)s)[2] ) ?                               \
572 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
573 	    : ( 0x82 == ((const U8*)s)[2] ) ?                               \
574 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
575 	    : ( 0x83 == ((const U8*)s)[2] ) ?                               \
576 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
577 	    : ( 0x84 == ((const U8*)s)[2] ) ?                               \
578 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
579 	    : ( 0x85 == ((const U8*)s)[2] ) ?                               \
580 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
581 	    : ( 0x86 == ((const U8*)s)[2] ) ?                               \
582 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
583 	    : ( 0x87 == ((const U8*)s)[2] ) ?                               \
584 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
585 	    : ( 0xA0 == ((const U8*)s)[2] ) ?                               \
586 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
587 	    : ( 0xA1 == ((const U8*)s)[2] ) ?                               \
588 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
589 	    : ( 0xA2 == ((const U8*)s)[2] ) ?                               \
590 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
591 	    : ( 0xA3 == ((const U8*)s)[2] ) ?                               \
592 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
593 	    : ( 0xA4 == ((const U8*)s)[2] ) ?                               \
594 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
595 	    : ( 0xA5 == ((const U8*)s)[2] ) ?                               \
596 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
597 	    : ( 0xA6 == ((const U8*)s)[2] ) ?                               \
598 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
599 	    : ( ( ( 0xA7 == ((const U8*)s)[2] ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
600 	: ( 0xBD == ((const U8*)s)[1] ) ?                                   \
601 	    ( ( 0xA0 == ((const U8*)s)[2] ) ?                               \
602 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
603 	    : ( 0xA1 == ((const U8*)s)[2] ) ?                               \
604 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
605 	    : ( 0xA2 == ((const U8*)s)[2] ) ?                               \
606 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
607 	    : ( 0xA3 == ((const U8*)s)[2] ) ?                               \
608 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
609 	    : ( 0xA4 == ((const U8*)s)[2] ) ?                               \
610 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
611 	    : ( 0xA5 == ((const U8*)s)[2] ) ?                               \
612 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
613 	    : ( 0xA6 == ((const U8*)s)[2] ) ?                               \
614 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
615 	    : ( 0xA7 == ((const U8*)s)[2] ) ?                               \
616 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
617 	    : ( 0xB0 == ((const U8*)s)[2] ) ?                               \
618 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
619 	    : ( 0xB4 == ((const U8*)s)[2] ) ?                               \
620 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
621 	    : ( ( ( 0xBC == ((const U8*)s)[2] ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
622 	: 0 )                                                               \
623     : 0 )
624 
625 
626 /*** GENERATED CODE ***/
627 #define what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                          \
628 ( ( 0x81 == ((const U8*)s)[1] ) ?                                           \
629 	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
630 	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
631 	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
632 		( ( 0x93 == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
633 	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
634 	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
635 	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
636 		( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
637 	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
638 	: ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )
639 
640 
641 /*** GENERATED CODE ***/
642 #define what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                          \
643 ( ( 0xD5 == ((const U8*)s)[0] ) ?                                           \
644 	( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
645 	    ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x587 : 0 )\
646 	: ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
647 	    ( ( 0xD5 == ((const U8*)s)[2] ) ?                               \
648 		( ( 0xA5 == ((const U8*)s)[3] ) ? 0xFB14                    \
649 		: ( 0xAB == ((const U8*)s)[3] ) ? 0xFB15                    \
650 		: ( 0xAD == ((const U8*)s)[3] ) ? 0xFB17                    \
651 		: ( 0xB6 == ((const U8*)s)[3] ) ? 0xFB13 : 0 )              \
652 	    : 0 )                                                           \
653 	: ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 0xFB16 : 0 )\
654     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
655 	( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
656 	    ( ( 0x80 == ((const U8*)s)[2] ) ?                               \
657 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
658 	    : ( 0x81 == ((const U8*)s)[2] ) ?                               \
659 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
660 	    : ( 0x82 == ((const U8*)s)[2] ) ?                               \
661 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
662 	    : ( 0x83 == ((const U8*)s)[2] ) ?                               \
663 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
664 	    : ( 0x84 == ((const U8*)s)[2] ) ?                               \
665 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
666 	    : ( 0x85 == ((const U8*)s)[2] ) ?                               \
667 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
668 	    : ( 0x86 == ((const U8*)s)[2] ) ?                               \
669 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
670 	    : ( 0x87 == ((const U8*)s)[2] ) ?                               \
671 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
672 	    : ( 0xA0 == ((const U8*)s)[2] ) ?                               \
673 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
674 	    : ( 0xA1 == ((const U8*)s)[2] ) ?                               \
675 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
676 	    : ( 0xA2 == ((const U8*)s)[2] ) ?                               \
677 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
678 	    : ( 0xA3 == ((const U8*)s)[2] ) ?                               \
679 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
680 	    : ( 0xA4 == ((const U8*)s)[2] ) ?                               \
681 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
682 	    : ( 0xA5 == ((const U8*)s)[2] ) ?                               \
683 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
684 	    : ( 0xA6 == ((const U8*)s)[2] ) ?                               \
685 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
686 	    : ( ( ( 0xA7 == ((const U8*)s)[2] ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
687 	: ( 0xBD == ((const U8*)s)[1] ) ?                                   \
688 	    ( ( 0xA0 == ((const U8*)s)[2] ) ?                               \
689 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
690 	    : ( 0xA1 == ((const U8*)s)[2] ) ?                               \
691 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
692 	    : ( 0xA2 == ((const U8*)s)[2] ) ?                               \
693 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
694 	    : ( 0xA3 == ((const U8*)s)[2] ) ?                               \
695 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
696 	    : ( 0xA4 == ((const U8*)s)[2] ) ?                               \
697 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
698 	    : ( 0xA5 == ((const U8*)s)[2] ) ?                               \
699 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
700 	    : ( 0xA6 == ((const U8*)s)[2] ) ?                               \
701 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
702 	    : ( 0xA7 == ((const U8*)s)[2] ) ?                               \
703 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
704 	    : ( 0xB0 == ((const U8*)s)[2] ) ?                               \
705 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
706 	    : ( 0xB4 == ((const U8*)s)[2] ) ?                               \
707 		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
708 	    : ( ( ( 0xBC == ((const U8*)s)[2] ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
709 	: 0 )                                                               \
710     : 0 )
711 
712 
713 /*** GENERATED CODE ***/
714 #define what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e)                          \
715 ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                                 \
716 	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
717     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
718 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
719 	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) ? 0xFB03              \
720 	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ? 0xFB04 : 0xFB00 )   \
721 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
722 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
723     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
724 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
725     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
726 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
727     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
728 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
729     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
730 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
731 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05                  \
732 	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 0xDF : 0 )\
733     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
734 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
735     : ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) ?                             \
736 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
737     : ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ?                             \
738 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
739     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
740 	( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
741 	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'S' ) ? 0xDF                \
742 	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'T' ) ? 0xFB05              \
743 	    : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 0xDF : 0 )\
744 	: 0 )                                                               \
745     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
746 	( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 0x149 : 0 )\
747     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
748 	( ( 0xAC == ((const U8*)s)[1] ) ?                                   \
749 	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
750 	: ( 0xAE == ((const U8*)s)[1] ) ?                                   \
751 	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
752 	: ( 0xB1 == ((const U8*)s)[1] ) ?                                   \
753 	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
754 		( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
755 	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
756 	: ( 0xB7 == ((const U8*)s)[1] ) ?                                   \
757 	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
758 		( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
759 	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
760 	: ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
761     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
762 	( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
763 	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
764 	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
765 	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
766 		( ( 0x93 == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
767 	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
768 	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
769 	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
770 		( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
771 	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
772 	: ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )\
773     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
774 	( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
775 	    ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x587 : 0 )\
776 	: ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
777 	    ( ( 0xD5 == ((const U8*)s)[2] ) ?                               \
778 		( ( 0xA5 == ((const U8*)s)[3] ) ? 0xFB14                    \
779 		: ( 0xAB == ((const U8*)s)[3] ) ? 0xFB15                    \
780 		: ( 0xAD == ((const U8*)s)[3] ) ? 0xFB17                    \
781 		: ( 0xB6 == ((const U8*)s)[3] ) ? 0xFB13 : 0 )              \
782 	    : 0 )                                                           \
783 	: ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 0xFB16 : 0 )\
784     : 0 )
785 
786 
787 /*** GENERATED CODE ***/
788 #define what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e)                          \
789 ( ((e)-(s) > 2) ?                                                           \
790     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
791 	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
792     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
793 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
794 	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) ? 0xFB03              \
795 	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ? 0xFB04 : 0xFB00 )   \
796 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
797 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
798     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
799 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
800     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
801 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
802     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
803 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
804     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
805 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
806 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05                  \
807 	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 0xDF : 0 )\
808     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
809 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
810     : ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) ?                             \
811 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
812     : ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ?                             \
813 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
814     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
815 	( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
816 	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'S' ) ? 0xDF                \
817 	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'T' ) ? 0xFB05 : 0 )        \
818 	: 0 )                                                               \
819     : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0xBC == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 0x149 : 0 )\
820 : ((e)-(s) > 1) ?                                                           \
821     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
822 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 0xFB00                  \
823 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
824 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
825     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
826 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
827 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05 : 0 )            \
828     : 0 )                                                                   \
829 : 0 )
830 
831 
832 /*** GENERATED CODE ***/
833 #define what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e)                          \
834 ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                                 \
835 	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
836     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
837 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
838 	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) ? 0xFB03              \
839 	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ? 0xFB04 : 0xFB00 )   \
840 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
841 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
842     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
843 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
844     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
845 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
846     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
847 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
848     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
849 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
850 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05                  \
851 	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 0xDF : 0 )\
852     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
853 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
854     : ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) ?                             \
855 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
856     : ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ?                             \
857 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
858     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
859 	( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
860 	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'S' ) ? 0xDF                \
861 	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'T' ) ? 0xFB05              \
862 	    : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 0xDF : 0 )\
863 	: 0 )                                                               \
864     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
865 	( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 0x149 : 0 )\
866     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
867 	( ( 0xAC == ((const U8*)s)[1] ) ?                                   \
868 	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
869 	: ( 0xAE == ((const U8*)s)[1] ) ?                                   \
870 	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
871 	: ( 0xB1 == ((const U8*)s)[1] ) ?                                   \
872 	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
873 		( ( 0x82 == ((const U8*)s)[3] ) ?                           \
874 		    ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 0x1FB7 : 0x1FB6 )\
875 		: 0 )                                                       \
876 	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
877 	: ( 0xB7 == ((const U8*)s)[1] ) ?                                   \
878 	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
879 		( ( 0x82 == ((const U8*)s)[3] ) ?                           \
880 		    ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 0x1FC7 : 0x1FC6 )\
881 		: 0 )                                                       \
882 	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
883 	: ( 0xB9 == ((const U8*)s)[1] ) ?                                   \
884 	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
885 		( ( 0x88 == ((const U8*)s)[3] ) ?                           \
886 		    ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
887 			( ( 0x80 == ((const U8*)s)[5] ) ? 0x1FD2            \
888 			: ( 0x81 == ((const U8*)s)[5] ) ? 0x390 : 0 )       \
889 		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 0x1FD7 : 0 )\
890 		: 0 )                                                       \
891 	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
892 	: 0 )                                                               \
893     : ( 0xCF == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )
894 
895 
896 /*** GENERATED CODE ***/
897 #define what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e)                          \
898 ( ((e)-(s) > 4) ?                                                           \
899     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
900 	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
901     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
902 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
903 	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) ? 0xFB03              \
904 	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ? 0xFB04 : 0xFB00 )   \
905 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
906 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
907     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
908 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
909     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
910 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
911     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
912 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
913     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
914 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
915 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05                  \
916 	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 0xDF : 0 )\
917     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
918 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
919     : ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) ?                             \
920 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
921     : ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ?                             \
922 	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
923     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
924 	( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
925 	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'S' ) ? 0xDF                \
926 	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'T' ) ? 0xFB05              \
927 	    : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 0xDF : 0 )\
928 	: 0 )                                                               \
929     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
930 	( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 0x149 : 0 )\
931     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
932 	( ( 0xAC == ((const U8*)s)[1] ) ?                                   \
933 	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
934 	: ( 0xAE == ((const U8*)s)[1] ) ?                                   \
935 	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
936 	: ( 0xB1 == ((const U8*)s)[1] ) ?                                   \
937 	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
938 		( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
939 	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
940 	: ( 0xB7 == ((const U8*)s)[1] ) ?                                   \
941 	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
942 		( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
943 	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
944 	: ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
945     : ( 0xCF == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )\
946 : ((e)-(s) > 3) ? what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e) )
947 
948 
949 /*** GENERATED CODE ***/
950 #define what_MULTI_CHAR_FOLD_utf8_safe(s,e)                                 \
951 ( ((e)-(s) > 5) ? what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e) )
952 
953 /*
954 	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
955 
956 	%regcharclass_multi_char_folds::multi_char_folds('l', 'a')
957 */
958 /*** GENERATED CODE ***/
959 #define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
960 ( ((e)-(s) > 2) ?                                                           \
961     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
962 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
963 	    ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
964 	: ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
965     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ) ? 2 : 0 )\
966 : ((e)-(s) > 1) ?                                                           \
967     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
968 	( ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
969     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ) ? 2 : 0 )\
970 : 0 )
971 
972 /*** GENERATED CODE ***/
973 #define what_MULTI_CHAR_FOLD_latin1_safe(s,e)                               \
974 ( ((e)-(s) > 2) ?                                                           \
975     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
976 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
977 	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) ? 0xFB03              \
978 	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ? 0xFB04 : 0xFB00 )   \
979 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
980 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
981     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
982 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
983 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05 : 0 )            \
984     : 0 )                                                                   \
985 : ((e)-(s) > 1) ?                                                           \
986     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
987 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 0xFB00                  \
988 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
989 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
990     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
991 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
992 	: ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05 : 0 )            \
993     : 0 )                                                                   \
994 : 0 )
995 
996 /*
997 	THREE_CHAR_FOLD: A three-character multi-char fold
998 
999 	%regcharclass_multi_char_folds::multi_char_folds('u', '3')
1000 */
1001 /*** GENERATED CODE ***/
1002 #define is_THREE_CHAR_FOLD_utf8_safe(s,e)                                   \
1003 ( ((e)-(s) > 5) ?                                                           \
1004     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
1005 	( ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) && ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ) ? 3 : 0 )\
1006     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
1007 	( ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
1008 	    ( ( ( ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) && ( 0xCE == ((const U8*)s)[4] ) ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1009 	: ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCC == ((const U8*)s)[2] ) ) && ( 0x88 == ((const U8*)s)[3] ) ) ? ( ( 0xCC == ((const U8*)s)[4] ) ?\
1010 			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
1011 		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
1012     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
1013 	( ( 0x85 == ((const U8*)s)[1] ) ?                                   \
1014 	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x88 == ((const U8*)s)[3] || 0x93 == ((const U8*)s)[3] ) ) ? ( ( 0xCC == ((const U8*)s)[4] ) ?\
1015 			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
1016 		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
1017 	: ( ( ( ( ( 0x89 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) && ( 0xCE == ((const U8*)s)[4] ) ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1018     : 0 )                                                                   \
1019 : ( ( ( ((e)-(s) > 2) && ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ) && ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ) && ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ) ? 3 : 0 )
1020 
1021 /*
1022 	THREE_CHAR_FOLD: A three-character multi-char fold
1023 
1024 	%regcharclass_multi_char_folds::multi_char_folds('l', '3')
1025 */
1026 /*** GENERATED CODE ***/
1027 #define is_THREE_CHAR_FOLD_latin1_safe(s,e)                                 \
1028 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ) && ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ) && ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ) ? 3 : 0 )
1029 
1030 /*
1031 	THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
1032 
1033 	%regcharclass_multi_char_folds::multi_char_folds('u', 'h')
1034 */
1035 /*** GENERATED CODE ***/
1036 #define is_THREE_CHAR_FOLD_HEAD_utf8_safe(s,e)                              \
1037 ( ((e)-(s) > 3) ?                                                           \
1038     ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
1039     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
1040 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
1041     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
1042 	( ( 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1043     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
1044 	( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1045     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
1046 	( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ? 2                      \
1047 	: ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
1048 	    ( ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1049 	: ( 0xB9 == ((const U8*)s)[1] ) ?                                   \
1050 	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x88 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1051 	: 0 )                                                               \
1052     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
1053 	( ( 0x81 == ((const U8*)s)[1] || 0x8E == ((const U8*)s)[1] ) ? 2    \
1054 	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
1055 	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x88 == ((const U8*)s)[3] || 0x93 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1056 	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
1057 	    ( ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1058 	: 0 )                                                               \
1059     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
1060 	( ( 0xA5 == ((const U8*)s)[1] || 0xB4 == ((const U8*)s)[1] || 0xBE == ((const U8*)s)[1] ) ? 2 : 0 )\
1061     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
1062 	( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
1063 	    ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) ? 3 : 0 )            \
1064 	: ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) ? 3 : 0 )\
1065     : 0 )                                                                   \
1066 : ((e)-(s) > 2) ?                                                           \
1067     ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
1068     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
1069 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
1070     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
1071 	( ( 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1072     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
1073 	( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1074     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
1075 	( ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) || ( ( ((const U8*)s)[1] & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0xB7 ) ? 2 : 0 )\
1076     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
1077 	( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x81 ) || ((const U8*)s)[1] == 0x89 || ((const U8*)s)[1] == 0x8E ) ? 2 : 0 )\
1078     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
1079 	( ( 0xA5 == ((const U8*)s)[1] || 0xB4 == ((const U8*)s)[1] || 0xBE == ((const U8*)s)[1] ) ? 2 : 0 )\
1080     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
1081 	( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
1082 	    ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) ? 3 : 0 )            \
1083 	: ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) ? 3 : 0 )\
1084     : 0 )                                                                   \
1085 : ((e)-(s) > 1) ?                                                           \
1086     ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
1087     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
1088 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
1089     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
1090 	( ( 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1091     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
1092 	( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1093     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
1094 	( ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) || ( ( ((const U8*)s)[1] & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0xB7 ) ? 2 : 0 )\
1095     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
1096 	( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x81 ) || ((const U8*)s)[1] == 0x89 || ((const U8*)s)[1] == 0x8E ) ? 2 : 0 )\
1097     : ( ( 0xD5 == ((const U8*)s)[0] ) && ( 0xA5 == ((const U8*)s)[1] || 0xB4 == ((const U8*)s)[1] || 0xBE == ((const U8*)s)[1] ) ) ? 2 : 0 )\
1098 : ((e)-(s) > 0) ?                                                           \
1099     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) )\
1100 : 0 )
1101 
1102 /*
1103 	THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
1104 
1105 	%regcharclass_multi_char_folds::multi_char_folds('l', 'h')
1106 */
1107 /*** GENERATED CODE ***/
1108 #define is_THREE_CHAR_FOLD_HEAD_latin1_safe(s,e)                            \
1109 ( ((e)-(s) > 1) ?                                                           \
1110     ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
1111     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
1112 	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
1113     : 0 )                                                                   \
1114 : ((e)-(s) > 0) ?                                                           \
1115     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) )\
1116 : 0 )
1117 
1118 /*
1119 	FOLDS_TO_MULTI: characters that fold to multi-char strings
1120 
1121 	\p{_Perl_Folds_To_Multi_Char}
1122 */
1123 /*** GENERATED CODE ***/
1124 #define is_FOLDS_TO_MULTI_utf8(s)                                           \
1125 ( ( 0xC3 == ((const U8*)s)[0] ) ?                                           \
1126     ( ( 0x9F == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1127 : ( 0xC4 == ((const U8*)s)[0] || 0xC7 == ((const U8*)s)[0] ) ?              \
1128     ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1129 : ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
1130     ( ( 0x89 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1131 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
1132     ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x90 ) ? 2 : 0 )                    \
1133 : ( 0xD6 == ((const U8*)s)[0] ) ?                                           \
1134     ( ( 0x87 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1135 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
1136     ( ( 0xBA == ((const U8*)s)[1] ) ?                                       \
1137 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x96, 0x9A) || 0x9E == ((const U8*)s)[2] ) ? 3 : 0 )\
1138     : ( 0xBD == ((const U8*)s)[1] ) ?                                       \
1139 	( ( ( ((const U8*)s)[2] & 0xF9 ) == 0x90 ) ? 3 : 0 )                \
1140     : ( 0xBE == ((const U8*)s)[1] ) ?                                       \
1141 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xAF) || inRANGE_helper_(U8, ((const U8*)s)[2], 0xB2, 0xB4) || inRANGE_helper_(U8, ((const U8*)s)[2], 0xB6, 0xB7) || 0xBC == ((const U8*)s)[2] ) ? 3 : 0 )\
1142     : ( ( 0xBF == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xCA ) == 0x82 ) || ( ( ((const U8*)s)[2] & 0xF7 ) == 0x84 ) || ((const U8*)s)[2] == 0xA4 || ( ( ((const U8*)s)[2] & 0xF7 ) == 0xB4 ) ) ) ? 3 : 0 )\
1143 : ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x86) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x93, 0x97) ) ) ? 3 : 0 )
1144 
1145 /*
1146 	PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale
1147 
1148 	\p{_Perl_Problematic_Locale_Folds}
1149 */
1150 /*** GENERATED CODE ***/
1151 #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
1152 ( ( ((const U8*)s)[0] <= 0x7F ) ? 1                                         \
1153 : ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xC2, 0xC3) ) ?                  \
1154     2                                                                       \
1155 : ( 0xC4 == ((const U8*)s)[0] ) ?                                           \
1156     ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0xB0, 0xB1) ) ? 2 : 0 )      \
1157 : ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
1158     ( ( 0x89 == ((const U8*)s)[1] || 0xB8 == ((const U8*)s)[1] || 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )\
1159 : ( 0xC7 == ((const U8*)s)[0] ) ?                                           \
1160     ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1161 : ( 0xCC == ((const U8*)s)[0] ) ?                                           \
1162     ( ( 0x87 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1163 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
1164     ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 )                    \
1165 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
1166     ( ( ( 0xBA == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x96, 0x9A) || 0x9E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1167 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
1168     ( ( ( 0x84 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xAA, 0xAB) ) ) ? 3 : 0 )\
1169 : ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x86) ) ) ? 3 : 0 )
1170 
1171 /*** GENERATED CODE ***/
1172 #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
1173 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
1174 ( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
1175 ( 0x149 == cp || ( 0x149 < cp &&                                            \
1176 ( 0x178 == cp || ( 0x178 < cp &&                                            \
1177 ( 0x17F == cp || ( 0x17F < cp &&                                            \
1178 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
1179 ( 0x307 == cp || ( 0x307 < cp &&                                            \
1180 ( 0x39C == cp || ( 0x39C < cp &&                                            \
1181 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
1182 ( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
1183 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
1184 ( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
1185 
1186 /*
1187 	PROBLEMATIC_LOCALE_FOLDEDS_START: The first folded character of folds which are problematic under locale
1188 
1189 	\p{_Perl_Problematic_Locale_Foldeds_Start}
1190 */
1191 /*** GENERATED CODE ***/
1192 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
1193 ( ( ((const U8*)s)[0] <= 0x7F ) ? 1                                         \
1194 : ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xC2, 0xC3) ) ?                  \
1195     2                                                                       \
1196 : ( 0xC4 == ((const U8*)s)[0] ) ?                                           \
1197     ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0xB0, 0xB1) ) ? 2 : 0 )      \
1198 : ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
1199     ( ( 0x89 == ((const U8*)s)[1] || 0xB8 == ((const U8*)s)[1] || 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )\
1200 : ( 0xC7 == ((const U8*)s)[0] ) ?                                           \
1201     ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1202 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1203     ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1204 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
1205     ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 )                    \
1206 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
1207     ( ( ( 0xBA == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x96, 0x9A) || 0x9E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1208 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
1209     ( ( ( 0x84 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xAA, 0xAB) ) ) ? 3 : 0 )\
1210 : ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x86) ) ) ? 3 : 0 )
1211 
1212 /*** GENERATED CODE ***/
1213 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
1214 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
1215 ( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
1216 ( 0x149 == cp || ( 0x149 < cp &&                                            \
1217 ( 0x178 == cp || ( 0x178 < cp &&                                            \
1218 ( 0x17F == cp || ( 0x17F < cp &&                                            \
1219 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
1220 ( 0x2BC == cp || ( 0x2BC < cp &&                                            \
1221 ( 0x39C == cp || ( 0x39C < cp &&                                            \
1222 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
1223 ( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
1224 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
1225 ( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
1226 
1227 /*
1228 	PATWS: pattern white space
1229 
1230 	\p{_Perl_PatWS}
1231 */
1232 /*** GENERATED CODE ***/
1233 #define is_PATWS_safe(s,e,is_utf8)                                          \
1234 ( ( LIKELY((e) > (s)) ) ?                                                   \
1235     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\t', '\r') || ' ' == ((const U8*)s)[0] ) ? 1\
1236     : (! is_utf8 ) ?                                                        \
1237 	    ( 0x85 == ((const U8*)s)[0] )                                   \
1238 	: ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ?                          \
1239 	    ( ( 0xC2 == ((const U8*)s)[0] ) ?                               \
1240 		( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                   \
1241 	    : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x8E, 0x8F) || inRANGE_helper_(U8, ((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )\
1242 	: 0 )                                                               \
1243 : 0 )
1244 
1245 /*
1246 	HANGUL_ED: Hangul syllables whose first UTF-8 byte is \xED
1247 
1248 	0xD000 - 0xD7FF
1249 */
1250 /*** GENERATED CODE ***/
1251 #define is_HANGUL_ED_utf8_safe(s,e)                                         \
1252 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xED == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x80, 0x9F) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xBF) ) ) ? 3 : 0 )
1253 
1254 #endif	/* ASCII/Latin1 */
1255 
1256 #if 'A' == 193 /* EBCDIC 1047 */ \
1257      && '\\' == 224 && '[' == 173 && ']' == 189 && '{' == 192 && '}' == 208 \
1258      && '^' == 95 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
1259      && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
1260 /*
1261 	LNBREAK: Line Break: \R
1262 
1263 	"\x0D\x0A"      # CRLF - Network (Windows) line ending
1264 	\p{VertSpace}
1265 */
1266 /*** GENERATED CODE ***/
1267 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
1268 ( ((e)-(s) > 2) ?                                                           \
1269     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
1270     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1271 	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1272     : ( ( ( ( is_utf8 ) && ( 0xCA == ((const U8*)s)[0] ) ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
1273 : ((e)-(s) > 1) ?                                                           \
1274     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
1275     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1276 	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1277     : 0 )                                                                   \
1278 : ((e)-(s) > 0) ?                                                           \
1279     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
1280 : 0 )
1281 
1282 /*** GENERATED CODE ***/
1283 #define is_LNBREAK_utf8_safe(s,e)                                           \
1284 ( ((e)-(s) > 2) ?                                                           \
1285     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
1286     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1287 	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1288     : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
1289 : ((e)-(s) > 1) ?                                                           \
1290     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
1291     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1292 	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1293     : 0 )                                                                   \
1294 : ((e)-(s) > 0) ?                                                           \
1295     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
1296 : 0 )
1297 
1298 /*** GENERATED CODE ***/
1299 #define is_LNBREAK_latin1_safe(s,e)                                         \
1300 ( ((e)-(s) > 1) ?                                                           \
1301     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
1302     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1303 	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1304     : 0 )                                                                   \
1305 : ((e)-(s) > 0) ?                                                           \
1306     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
1307 : 0 )
1308 
1309 /*
1310 	HORIZWS: Horizontal Whitespace: \h \H
1311 
1312 	\p{HorizSpace}
1313 */
1314 /*** GENERATED CODE ***/
1315 #define is_HORIZWS_high(s)                                                  \
1316 ( ( 0xBC == ((const U8*)s)[0] ) ?                                           \
1317     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1318 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1319     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
1320 	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAA) ) ? 3 : 0 )\
1321     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1322 	( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
1323     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1324 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
1325 
1326 /*** GENERATED CODE ***/
1327 #define is_HORIZWS_cp_high(cp)                                              \
1328 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
1329 ( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
1330 ( 0x202F == cp || ( 0x202F < cp &&                                          \
1331 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) )
1332 
1333 /*
1334 	VERTWS: Vertical Whitespace: \v \V
1335 
1336 	\p{VertSpace}
1337 */
1338 /*** GENERATED CODE ***/
1339 #define is_VERTWS_high(s)                                                   \
1340 ( ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )
1341 
1342 /*** GENERATED CODE ***/
1343 #define is_VERTWS_cp_high(cp)                                               \
1344 ( inRANGE_helper_(UV, cp, 0x2028, 0x2029) )
1345 
1346 /*
1347 	XDIGIT: Hexadecimal digits
1348 
1349 	\p{XDigit}
1350 */
1351 /*** GENERATED CODE ***/
1352 #define is_XDIGIT_high(s)                                                   \
1353 ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x73 == ((const U8*)s)[1] ) ) ? ( ( 0x67 == ((const U8*)s)[2] ) ?\
1354 	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xB9) ) ? 4 : 0 )\
1355 	: ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x68, 0x69) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x42, 0x47) ) ) ? 4 : 0 ) : 0 )
1356 
1357 /*** GENERATED CODE ***/
1358 #define is_XDIGIT_cp_high(cp)                                               \
1359 ( inRANGE_helper_(UV, cp, 0xFF10, 0xFF19) || ( 0xFF19 < cp &&               \
1360 ( inRANGE_helper_(UV, cp, 0xFF21, 0xFF26) || inRANGE_helper_(UV, cp, 0xFF41, 0xFF46) ) ) )
1361 
1362 /*
1363 	XPERLSPACE: \p{XPerlSpace}
1364 
1365 	\p{XPerlSpace}
1366 */
1367 /*** GENERATED CODE ***/
1368 #define is_XPERLSPACE_high(s)                                               \
1369 ( ( 0xBC == ((const U8*)s)[0] ) ?                                           \
1370     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1371 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1372     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
1373 	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAA) ) ? 3 : 0 )\
1374     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1375 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
1376     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1377 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
1378 
1379 /*** GENERATED CODE ***/
1380 #define is_XPERLSPACE_cp_high(cp)                                           \
1381 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
1382 ( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
1383 ( inRANGE_helper_(UV, cp, 0x2028, 0x2029) || ( 0x2029 < cp &&               \
1384 ( 0x202F == cp || ( 0x202F < cp &&                                          \
1385 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) )
1386 
1387 /*
1388 	NONCHAR: Non character code points
1389 
1390 	\p{_Perl_Nchar}
1391 */
1392 /*** GENERATED CODE ***/
1393 #define is_NONCHAR_utf8_safe(s,e)                                           \
1394 ( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\
1395 	    ( ( 0x73 == ((const U8*)s)[1] ) ?                               \
1396 		( ( 0x55 == ((const U8*)s)[2] ) ?                           \
1397 		    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xBF) ) ? 4 : 0 )\
1398 		: ( 0x56 == ((const U8*)s)[2] ) ?                           \
1399 		    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
1400 		: ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )\
1401 	    : 0 )                                                           \
1402 	: ( ((const U8*)s)[0] == 0xDF || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xFD ) == 0xF5 ) ) ?\
1403 	    ( ( ( ( 0x73 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )\
1404 	: ( 0xED == ((const U8*)s)[0] ) ?                                   \
1405 	    ( ( ( ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF9 ) == 0xA9 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF1 ) == 0xB1 ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 )\
1406 	: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 ) : 0 )
1407 
1408 /*
1409 	SHORTER_NON_CHARS: # 4 bytes
1410 
1411 	0xFDD0 - 0xFDEF
1412 	0xFFFE - 0xFFFF
1413 	0x1FFFE - 0x1FFFF
1414 	0x2FFFE - 0x2FFFF
1415 	0x3FFFE - 0x3FFFF
1416 */
1417 /*** GENERATED CODE ***/
1418 #define is_SHORTER_NON_CHARS_utf8(s)                                        \
1419 ( ( 0xDD == ((const U8*)s)[0] ) ?                                           \
1420     ( ( 0x73 == ((const U8*)s)[1] ) ?                                       \
1421 	( ( 0x55 == ((const U8*)s)[2] ) ?                                   \
1422 	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xBF) ) ? 4 : 0 )\
1423 	: ( 0x56 == ((const U8*)s)[2] ) ?                                   \
1424 	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
1425 	: ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )\
1426     : 0 )                                                                   \
1427 : ( ( ( ( ((const U8*)s)[0] == 0xDF || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xFD ) == 0xF5 ) ) && ( 0x73 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )
1428 
1429 /*
1430 	LARGER_NON_CHARS: # 5 bytes
1431 
1432 	0x4FFFE - 0x4FFFF
1433 	0x5FFFE - 0x5FFFF
1434 	0x6FFFE - 0x6FFFF
1435 	0x7FFFE - 0x7FFFF
1436 	0x8FFFE - 0x8FFFF
1437 	0x9FFFE - 0x9FFFF
1438 	0xAFFFE - 0xAFFFF
1439 	0xBFFFE - 0xBFFFF
1440 	0xCFFFE - 0xCFFFF
1441 	0xDFFFE - 0xDFFFF
1442 	0xEFFFE - 0xEFFFF
1443 	0xFFFFE - 0xFFFFF
1444 	0x10FFFE - 0x10FFFF
1445 */
1446 /*** GENERATED CODE ***/
1447 #define is_LARGER_NON_CHARS_utf8(s)                                         \
1448 ( ( 0xED == ((const U8*)s)[0] ) ?                                           \
1449     ( ( ( ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF9 ) == 0xA9 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF1 ) == 0xB1 ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 )\
1450 : ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 )
1451 
1452 /*
1453 	SURROGATE: Surrogate code points
1454 
1455 	\p{_Perl_Surrogate}
1456 */
1457 /*** GENERATED CODE ***/
1458 #define is_SURROGATE_utf8(s)                                                \
1459 ( ( ( 0xDD == ((const U8*)s)[0] ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x65, 0x66) ) ) ? 4 : 0 )
1460 
1461 /*** GENERATED CODE ***/
1462 #define is_SURROGATE_utf8_safe(s,e)                                         \
1463 ( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x65, 0x66) ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xBF) ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xBF) ) ) ? 4 : 0 )
1464 
1465 /*
1466 	QUOTEMETA: Meta-characters that \Q should quote
1467 
1468 	\p{_Perl_Quotemeta}
1469 */
1470 /*** GENERATED CODE ***/
1471 #define is_QUOTEMETA_high(s)                                                \
1472 ( ( 0xB1 == ((const U8*)s)[0] ) ?                                           \
1473     ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1474 : ( 0xB8 == ((const U8*)s)[0] ) ?                                           \
1475     ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1476 : ( 0xBB == ((const U8*)s)[0] ) ?                                           \
1477     ( ( 0x51 == ((const U8*)s)[1] ) ?                                       \
1478 	( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
1479     : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1480 : ( 0xBC == ((const U8*)s)[0] ) ?                                           \
1481     ( ( 0x63 == ((const U8*)s)[1] ) ?                                       \
1482 	( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
1483     : ( ( 0x71 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x63, 0x64) ) ) ? 3 : 0 )\
1484 : ( 0xBE == ((const U8*)s)[0] ) ?                                           \
1485     ( ( ( 0x41 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x52, 0x56) ) ) ? 3 : 0 )\
1486 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1487     ( ( 0x41 == ((const U8*)s)[1] || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xAD, 0xBF) ) ?\
1488 	3                                                                   \
1489     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1490 	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xBE) ) ? 3 : 0 )\
1491     : ( 0x43 == ((const U8*)s)[1] ) ?                                       \
1492 	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA1, 0xB3) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB5, 0xBF) ) ? 3 : 0 )\
1493     : ( 0x44 == ((const U8*)s)[1] ) ?                                       \
1494 	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAF) ) ? 3 : 0 )\
1495     : ( ( 0x53 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB0, 0xBF) ) ) ? 3 : 0 )\
1496 : ( 0xCB == ((const U8*)s)[0] ) ?                                           \
1497     ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xA0, 0xA2) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xA8, 0xBA) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xBD, 0xBF) ) ?\
1498 	3                                                                   \
1499     : ( 0x6A == ((const U8*)s)[1] ) ?                                       \
1500 	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xB5) ) ? 3 : 0 )\
1501     : ( ( 0x70 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB4, 0xBF) ) ) ? 3 : 0 )\
1502 : ( 0xCC == ((const U8*)s)[0] ) ?                                           \
1503     3                                                                       \
1504 : ( 0xCD == ((const U8*)s)[0] ) ?                                           \
1505     ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xB0, 0xB3) ) ?\
1506 	3                                                                   \
1507     : 0 )                                                                   \
1508 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
1509     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
1510 	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xA3) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA8, 0xBF) ) ? 3 : 0 )\
1511     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1512 	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEF ) == 0xA0 ) ? 3 : 0 )\
1513     : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1514 : ( 0xDD == ((const U8*)s)[0] ) ?                                           \
1515     ( ( 0x73 == ((const U8*)s)[1] ) ?                                       \
1516 	( ( 0x4A == ((const U8*)s)[2] ) ?                                   \
1517 	    ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ? 4 : 0 )\
1518 	: ( 0x57 == ((const U8*)s)[2] ) ?                                   \
1519 	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
1520 	: ( 0x59 == ((const U8*)s)[2] ) ?                                   \
1521 	    ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x46, 0x47) ) ? 4 : 0 )\
1522 	: ( 0x66 == ((const U8*)s)[2] ) ?                                   \
1523 	    ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
1524 	: ( 0x71 == ((const U8*)s)[2] ) ?                                   \
1525 	    ( ( 0x41 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
1526 	: ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xB8) ) ) ? 4 : 0 )\
1527     : 0 )                                                                   \
1528 : ( 0xDF == ((const U8*)s)[0] ) ?                                           \
1529     ( ( 0x56 == ((const U8*)s)[1] ) ?                                       \
1530 	( ( ( 0x46 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x44) ) ) ? 4 : 0 )\
1531     : ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x69) ) ) ? 4 : 0 )\
1532 : ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x44) ) ) ? 5 : 0 )
1533 
1534 /*
1535 	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
1536 
1537 	%regcharclass_multi_char_folds::multi_char_folds('u', 'a')
1538 */
1539 /*** GENERATED CODE ***/
1540 #define is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                            \
1541 ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )
1542 
1543 
1544 /*** GENERATED CODE ***/
1545 #define is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                            \
1546 ( ( 0x8F == ((const U8*)s)[0] ) ?                                           \
1547 	( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
1548 	    ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
1549 		( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1550 	    : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1551 	: 0 )                                                               \
1552     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1553 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1554     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1555 	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1556 	    ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1557 	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1558     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1559 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1560     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1561 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1562     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1563 	( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1564     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1565 	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ?     \
1566 	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1567 	: ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1568 	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1569 		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1570 		    ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1571 		: 0 )                                                       \
1572 	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1573 	: ( 0x68 == ((const U8*)s)[1] ) ?                                   \
1574 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1575 		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1576 		    ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1577 			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1578 		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1579 		: 0 )                                                       \
1580 	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1581 	: 0 )                                                               \
1582     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1583 	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1584 	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1585 	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1586 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1587 		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1588 		    ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1589 			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1590 		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1591 		: ( 0x62 == ((const U8*)s)[3] ) ?                           \
1592 		    ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1593 			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 4 )\
1594 		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1595 		: 0 )                                                       \
1596 	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1597 	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1598 	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1599 		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1600 		    ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1601 		: 0 )                                                       \
1602 	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1603 	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1604     : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
1605 	( ( 0x52 == ((const U8*)s)[1] ) ?                                   \
1606 	    ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
1607 		( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1608 	    : ( 0x63 == ((const U8*)s)[2] ) ?                               \
1609 		( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[5]) & 0xF7 ) == 0xA5 ) || ((const U8*)s)[5] == 0x52 || ((const U8*)s)[5] == 0x65 ) ) ? 6 : 0 )\
1610 	    : ( ( ( ( 0x72 == ((const U8*)s)[2] ) && ( 0xB8 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x65 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1611 	: 0 )                                                               \
1612     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1613 	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ?          \
1614 	    ( ( ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1615 	: ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x70 ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1616     : 0 )
1617 
1618 
1619 /*** GENERATED CODE ***/
1620 #define is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                            \
1621 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                                 \
1622 	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1623     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1624 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1625 	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1626 	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1627     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1628 	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1629     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1630 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1631     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1632 	( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
1633 	    ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
1634 		( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1635 	    : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1636 	: 0 )                                                               \
1637     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1638 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1639     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1640 	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1641 	    ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1642 	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1643     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1644 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1645     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1646 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1647     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1648 	( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1649     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1650 	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ?     \
1651 	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1652 	: ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1653 	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1654 		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1655 	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1656 	: ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1657     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1658 	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1659 	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1660 	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1661 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1662 		( ( 0x62 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1663 	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1664 	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1665 	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1666 		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1667 	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1668 	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1669     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1670 	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ?          \
1671 	    ( ( ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1672 	: ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x70 ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1673     : 0 )
1674 
1675 
1676 /*** GENERATED CODE ***/
1677 #define is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                            \
1678 ( ((e)-(s) > 3) ?                                                           \
1679     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1680 	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1681     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1682 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1683 	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1684 	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1685     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1686 	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1687     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1688 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1689     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1690 	( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
1691 	    ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
1692 		( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1693 	    : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1694 	: 0 )                                                               \
1695     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1696 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1697     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1698 	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1699 	    ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1700 	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1701     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1702 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1703     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1704 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1705     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1706 	( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1707     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1708 	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ?     \
1709 	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1710 	: ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1711 	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1712 		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1713 	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1714 	: ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1715     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1716 	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1717 	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1718 	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1719 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1720 		( ( 0x62 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1721 	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1722 	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1723 	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1724 		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1725 	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1726 	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1727     : 0 )                                                                   \
1728 : ((e)-(s) > 2) ?                                                           \
1729     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1730 	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1731     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1732 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1733 	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1734 	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1735     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1736 	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1737     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1738 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1739     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1740 	( ( ( 0x73 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ) ? 3 : 0 )\
1741     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1742 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1743     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1744 	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1745 	    ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1746 	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1747     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1748 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1749     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1750 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1751     : ( ( ( 0xAB == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1752 : ((e)-(s) > 1) ?                                                           \
1753     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1754 	( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1755     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
1756 : 0 )
1757 
1758 
1759 /*** GENERATED CODE ***/
1760 #define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
1761 ( ((e)-(s) > 5) ?                                                           \
1762     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1763 	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1764     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1765 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1766 	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1767 	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1768     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1769 	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1770     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )\
1771 : ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )
1772 
1773 /*** GENERATED CODE ***/
1774 #define what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                          \
1775 ( ( 0x52 == ((const U8*)s)[1] ) ?                                           \
1776 	    ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
1777 		( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x587 : 0 )\
1778 	    : ( 0x63 == ((const U8*)s)[2] ) ?                               \
1779 		( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) ? ( ( 0x46 == ((const U8*)s)[5] ) ? 0xFB14\
1780 			: ( 0x52 == ((const U8*)s)[5] ) ? 0xFB15            \
1781 			: ( 0x54 == ((const U8*)s)[5] ) ? 0xFB17            \
1782 			: ( 0x65 == ((const U8*)s)[5] ) ? 0xFB13 : 0 ) : 0 )\
1783 	    : ( ( ( ( 0x72 == ((const U8*)s)[2] ) && ( 0xB8 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x65 == ((const U8*)s)[5] ) ) ? 0xFB16 : 0 )\
1784 	: 0 )
1785 
1786 
1787 /*** GENERATED CODE ***/
1788 #define what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                          \
1789 ( ( 0xBF == ((const U8*)s)[0] ) ?                                           \
1790 	( ( 0x67 == ((const U8*)s)[1] ) ?                                   \
1791 	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
1792 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
1793 	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
1794 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
1795 	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
1796 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
1797 	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
1798 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
1799 	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
1800 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
1801 	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
1802 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
1803 	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
1804 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
1805 	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
1806 	: ( 0x68 == ((const U8*)s)[1] ) ?                                   \
1807 	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
1808 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
1809 	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
1810 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
1811 	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
1812 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
1813 	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
1814 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
1815 	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
1816 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
1817 	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
1818 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
1819 	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
1820 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
1821 	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
1822 	: ( 0x6A == ((const U8*)s)[1] ) ?                                   \
1823 	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
1824 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
1825 	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
1826 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
1827 	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
1828 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
1829 	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
1830 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
1831 	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
1832 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
1833 	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
1834 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
1835 	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
1836 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
1837 	    : ( 0x48 == ((const U8*)s)[2] ) ?                               \
1838 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
1839 	    : ( 0x57 == ((const U8*)s)[2] ) ?                               \
1840 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
1841 	    : ( 0x63 == ((const U8*)s)[2] ) ?                               \
1842 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
1843 	    : ( ( ( 0x70 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
1844 	: 0 )                                                               \
1845     : 0 )
1846 
1847 
1848 /*** GENERATED CODE ***/
1849 #define what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                          \
1850 ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                                 \
1851 	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
1852 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
1853 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
1854 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )
1855 
1856 
1857 /*** GENERATED CODE ***/
1858 #define what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                          \
1859 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                                 \
1860 	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
1861     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1862 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
1863     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1864 	( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
1865 	    ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
1866 		( ( 0x73 == ((const U8*)s)[3] ) ? 0x59 : 0 )                \
1867 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
1868 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
1869 	: 0 )                                                               \
1870     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1871 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
1872     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1873 	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1874 	    ( ( 0x73 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
1875 	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
1876 	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
1877     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1878 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
1879     : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
1880 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
1881     : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
1882 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
1883     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1884 	( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
1885     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1886 	( ( 0x53 == ((const U8*)s)[1] ) ?                                   \
1887 	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
1888 	: ( 0x55 == ((const U8*)s)[1] ) ?                                   \
1889 	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
1890 	: ( 0x58 == ((const U8*)s)[1] ) ?                                   \
1891 	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1892 		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1893 		    ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 0x1FB7 : 0x1FB6 )\
1894 		: 0 )                                                       \
1895 	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
1896 	: ( 0x66 == ((const U8*)s)[1] ) ?                                   \
1897 	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1898 		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1899 		    ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 0x1FC7 : 0x1FC6 )\
1900 		: 0 )                                                       \
1901 	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
1902 	: ( 0x68 == ((const U8*)s)[1] ) ?                                   \
1903 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1904 		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1905 		    ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1906 			( ( 0x41 == ((const U8*)s)[5] ) ? 0x1FD2            \
1907 			: ( 0x42 == ((const U8*)s)[5] ) ? 0x390 : 0 )       \
1908 		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x1FD7 : 0 )\
1909 		: 0 )                                                       \
1910 	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
1911 	: 0 )                                                               \
1912     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1913 	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1914 	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
1915 	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1916 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1917 		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1918 		    ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1919 			( ( 0x41 == ((const U8*)s)[5] ) ? 0x1FE2            \
1920 			: ( 0x42 == ((const U8*)s)[5] ) ? 0x3B0 : 0 )       \
1921 		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x1FE7 : 0 )\
1922 		: ( 0x62 == ((const U8*)s)[3] ) ?                           \
1923 		    ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1924 			( ( 0x41 == ((const U8*)s)[5] ) ? 0x1F52            \
1925 			: ( 0x42 == ((const U8*)s)[5] ) ? 0x1F54 : 0x1F50 ) \
1926 		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x1F56 : 0x1F50 )\
1927 		: 0 )                                                       \
1928 	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
1929 	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1930 	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1931 		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1932 		    ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 0x1FF7 : 0x1FF6 )\
1933 		: 0 )                                                       \
1934 	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
1935 	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )\
1936     : ( 0xB8 == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )
1937 
1938 
1939 /*** GENERATED CODE ***/
1940 #define what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e)                          \
1941 ( ( 0x42 == ((const U8*)s)[1] ) ?                                           \
1942 	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
1943 	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1944 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1945 		( ( 0x62 == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
1946 	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
1947 	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1948 	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1949 		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
1950 	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
1951 	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )
1952 
1953 
1954 /*** GENERATED CODE ***/
1955 #define what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e)                          \
1956 ( ( 0xBF == ((const U8*)s)[0] ) ?                                           \
1957 	( ( 0x67 == ((const U8*)s)[1] ) ?                                   \
1958 	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
1959 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
1960 	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
1961 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
1962 	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
1963 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
1964 	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
1965 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
1966 	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
1967 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
1968 	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
1969 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
1970 	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
1971 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
1972 	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
1973 	: ( 0x68 == ((const U8*)s)[1] ) ?                                   \
1974 	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
1975 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
1976 	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
1977 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
1978 	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
1979 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
1980 	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
1981 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
1982 	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
1983 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
1984 	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
1985 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
1986 	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
1987 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
1988 	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
1989 	: ( 0x6A == ((const U8*)s)[1] ) ?                                   \
1990 	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
1991 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
1992 	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
1993 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
1994 	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
1995 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
1996 	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
1997 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
1998 	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
1999 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
2000 	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
2001 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
2002 	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
2003 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
2004 	    : ( 0x48 == ((const U8*)s)[2] ) ?                               \
2005 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
2006 	    : ( 0x57 == ((const U8*)s)[2] ) ?                               \
2007 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
2008 	    : ( 0x63 == ((const U8*)s)[2] ) ?                               \
2009 		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
2010 	    : ( ( ( 0x70 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
2011 	: 0 )                                                               \
2012     : 0 )
2013 
2014 
2015 /*** GENERATED CODE ***/
2016 #define what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e)                          \
2017 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                                 \
2018 	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
2019     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2020 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
2021 	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
2022 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
2023 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
2024 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
2025     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
2026 	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
2027     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
2028 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
2029     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
2030 	( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
2031 	    ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
2032 		( ( 0x73 == ((const U8*)s)[3] ) ? 0x59 : 0 )                \
2033 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
2034 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
2035 	: 0 )                                                               \
2036     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
2037 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
2038     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
2039 	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
2040 	    ( ( 0x73 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
2041 	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
2042 	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
2043     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
2044 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
2045     : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
2046 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
2047     : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
2048 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
2049     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
2050 	( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
2051     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2052 	( ( 0x53 == ((const U8*)s)[1] ) ?                                   \
2053 	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
2054 	: ( 0x55 == ((const U8*)s)[1] ) ?                                   \
2055 	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
2056 	: ( 0x58 == ((const U8*)s)[1] ) ?                                   \
2057 	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
2058 		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
2059 	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
2060 	: ( 0x66 == ((const U8*)s)[1] ) ?                                   \
2061 	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
2062 		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
2063 	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
2064 	: ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
2065     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
2066 	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
2067 	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
2068 	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
2069 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
2070 		( ( 0x62 == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
2071 	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
2072 	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
2073 	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
2074 		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
2075 	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
2076 	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )\
2077     : 0 )
2078 
2079 
2080 /*** GENERATED CODE ***/
2081 #define what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e)                          \
2082 ( ((e)-(s) > 2) ?                                                           \
2083     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
2084 	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
2085     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2086 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
2087 	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
2088 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
2089 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
2090 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
2091     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
2092 	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
2093     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
2094 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
2095     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
2096 	( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
2097 	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
2098 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
2099 	: 0 )                                                               \
2100     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
2101 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
2102     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
2103 	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
2104 	    ( ( 0x73 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
2105 	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
2106 	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
2107     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
2108 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
2109     : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
2110 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
2111     : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
2112 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
2113     : ( ( ( 0xAB == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
2114 : ((e)-(s) > 1) ?                                                           \
2115     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2116 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 0xFB00                  \
2117 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
2118 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
2119     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
2120 	( ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
2121 	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
2122     : 0 )                                                                   \
2123 : 0 )
2124 
2125 
2126 /*** GENERATED CODE ***/
2127 #define what_MULTI_CHAR_FOLD_utf8_safe(s,e)                                 \
2128 ( ((e)-(s) > 5) ?                                                           \
2129     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
2130 	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
2131     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ? what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )\
2132 : ((e)-(s) > 4) ?                                                           \
2133     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
2134 	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
2135     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2136 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
2137 	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
2138 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
2139 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
2140 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
2141     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
2142 	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
2143     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
2144 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
2145     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
2146 	( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
2147 	    ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
2148 		( ( 0x73 == ((const U8*)s)[3] ) ? 0x59 : 0 )                \
2149 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
2150 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
2151 	: 0 )                                                               \
2152     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
2153 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
2154     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
2155 	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
2156 	    ( ( 0x73 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
2157 	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
2158 	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
2159     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
2160 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
2161     : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
2162 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
2163     : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
2164 	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
2165     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
2166 	( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
2167     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2168 	( ( 0x53 == ((const U8*)s)[1] ) ?                                   \
2169 	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
2170 	: ( 0x55 == ((const U8*)s)[1] ) ?                                   \
2171 	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
2172 	: ( 0x58 == ((const U8*)s)[1] ) ?                                   \
2173 	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
2174 		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
2175 	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
2176 	: ( 0x66 == ((const U8*)s)[1] ) ?                                   \
2177 	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
2178 		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
2179 	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
2180 	: ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
2181     : ( 0xB5 == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e) )\
2182 : ((e)-(s) > 3) ? what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e) )
2183 
2184 /*
2185 	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
2186 
2187 	%regcharclass_multi_char_folds::multi_char_folds('l', 'a')
2188 */
2189 /*** GENERATED CODE ***/
2190 #define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
2191 ( ((e)-(s) > 2) ?                                                           \
2192     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2193 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
2194 	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
2195 	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
2196     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
2197 : ((e)-(s) > 1) ?                                                           \
2198     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2199 	( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
2200     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
2201 : 0 )
2202 
2203 /*** GENERATED CODE ***/
2204 #define what_MULTI_CHAR_FOLD_latin1_safe(s,e)                               \
2205 ( ((e)-(s) > 2) ?                                                           \
2206     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2207 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
2208 	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
2209 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
2210 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
2211 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
2212     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
2213 	( ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
2214 	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
2215     : 0 )                                                                   \
2216 : ((e)-(s) > 1) ?                                                           \
2217     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2218 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 0xFB00                  \
2219 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
2220 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
2221     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
2222 	( ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
2223 	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
2224     : 0 )                                                                   \
2225 : 0 )
2226 
2227 /*
2228 	THREE_CHAR_FOLD: A three-character multi-char fold
2229 
2230 	%regcharclass_multi_char_folds::multi_char_folds('u', '3')
2231 */
2232 /*** GENERATED CODE ***/
2233 #define is_THREE_CHAR_FOLD_utf8_safe(s,e)                                   \
2234 ( ((e)-(s) > 5) ?                                                           \
2235     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2236 	( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )\
2237     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2238 	( ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
2239 	    ( ( ( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB4 == ((const U8*)s)[4] ) ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
2240 	: ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x49 == ((const U8*)s)[3] ) ) ? ( ( 0xAF == ((const U8*)s)[4] ) ?\
2241 			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
2242 		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
2243     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
2244 	( ( 0x46 == ((const U8*)s)[1] ) ?                                   \
2245 	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x62 == ((const U8*)s)[3] ) ) ? ( ( 0xAF == ((const U8*)s)[4] ) ?\
2246 			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
2247 		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
2248 	: ( ( ( ( ( 0x4A == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB4 == ((const U8*)s)[4] ) ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
2249     : 0 )                                                                   \
2250 : ( ( ( ((e)-(s) > 2) && ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ) && ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )
2251 
2252 /*
2253 	THREE_CHAR_FOLD: A three-character multi-char fold
2254 
2255 	%regcharclass_multi_char_folds::multi_char_folds('l', '3')
2256 */
2257 /*** GENERATED CODE ***/
2258 #define is_THREE_CHAR_FOLD_latin1_safe(s,e)                                 \
2259 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ) && ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )
2260 
2261 /*
2262 	THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
2263 
2264 	%regcharclass_multi_char_folds::multi_char_folds('u', 'h')
2265 */
2266 /*** GENERATED CODE ***/
2267 #define is_THREE_CHAR_FOLD_HEAD_utf8_safe(s,e)                              \
2268 ( ((e)-(s) > 3) ?                                                           \
2269     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
2270     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2271 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2272     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
2273 	( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2274     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
2275 	( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2276     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2277 	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ? 2   \
2278 	: ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
2279 	    ( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2280 	: ( 0x68 == ((const U8*)s)[1] ) ?                                   \
2281 	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2282 	: 0 )                                                               \
2283     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
2284 	( ( 0x42 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2    \
2285 	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
2286 	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x62 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2287 	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
2288 	    ( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2289 	: 0 )                                                               \
2290     : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
2291 	( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2292     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
2293 	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ?          \
2294 	    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )\
2295 	: ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x70 ) ) ? 3 : 0 )\
2296     : 0 )                                                                   \
2297 : ((e)-(s) > 2) ?                                                           \
2298     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
2299     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2300 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2301     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
2302 	( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2303     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
2304 	( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2305     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2306 	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0x66 ) ? 2 : 0 )\
2307     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
2308 	( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ? 2 : 0 )\
2309     : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
2310 	( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2311     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
2312 	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ?          \
2313 	    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )\
2314 	: ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x70 ) ) ? 3 : 0 )\
2315     : 0 )                                                                   \
2316 : ((e)-(s) > 1) ?                                                           \
2317     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
2318     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2319 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2320     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
2321 	( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2322     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
2323 	( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2324     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2325 	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0x66 ) ? 2 : 0 )\
2326     : ( ( 0xB5 == ((const U8*)s)[0] ) && ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ) ? 2 : 0 )\
2327 : ((e)-(s) > 0) ?                                                           \
2328     ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
2329 : 0 )
2330 
2331 /*
2332 	THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
2333 
2334 	%regcharclass_multi_char_folds::multi_char_folds('l', 'h')
2335 */
2336 /*** GENERATED CODE ***/
2337 #define is_THREE_CHAR_FOLD_HEAD_latin1_safe(s,e)                            \
2338 ( ((e)-(s) > 1) ?                                                           \
2339     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
2340     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2341 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2342     : 0 )                                                                   \
2343 : ((e)-(s) > 0) ?                                                           \
2344     ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
2345 : 0 )
2346 
2347 /*
2348 	FOLDS_TO_MULTI: characters that fold to multi-char strings
2349 
2350 	\p{_Perl_Folds_To_Multi_Char}
2351 */
2352 /*** GENERATED CODE ***/
2353 #define is_FOLDS_TO_MULTI_utf8(s)                                           \
2354 ( ( 0x8A == ((const U8*)s)[0] ) ?                                           \
2355     ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2356 : ( 0x8D == ((const U8*)s)[0] || 0x9C == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 0xB3, 0xB4) ) ?\
2357     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2358 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
2359     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2360 : ( 0xB8 == ((const U8*)s)[0] ) ?                                           \
2361     ( ( ( 0x53 == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2362 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
2363     ( ( 0x63 == ((const U8*)s)[1] ) ?                                       \
2364 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )\
2365     : ( 0x69 == ((const U8*)s)[1] ) ?                                       \
2366 	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF9 ) == 0xB0 ) ? 3 : 0 )\
2367     : ( 0x70 == ((const U8*)s)[1] ) ?                                       \
2368 	3                                                                   \
2369     : ( 0x71 == ((const U8*)s)[1] ) ?                                       \
2370 	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF0 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFA ) == 0xB2 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xB4 ) ) ? 3 : 0 )\
2371     : ( 0x72 == ((const U8*)s)[1] ) ?                                       \
2372 	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEA ) == 0xA2 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xA4 ) ) ? 3 : 0 )\
2373     : ( ( 0x73 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEA ) == 0xA2 ) || ((const U8*)s)[2] == 0x45 || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xB4 ) ) ) ? 3 : 0 )\
2374 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x47) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x66) ) ) ? 4 : 0 )
2375 
2376 /*
2377 	PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale
2378 
2379 	\p{_Perl_Problematic_Locale_Folds}
2380 */
2381 /*** GENERATED CODE ***/
2382 #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
2383 ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0x80 ) == 0x00 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xE0 ) == 0x80 ) ) ? 1\
2384 : ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[0]), 0xC5, 0xC7) ) ?\
2385     2                                                                       \
2386 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
2387     ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )      \
2388 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
2389     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2390 : ( 0x8F == ((const U8*)s)[0] ) ?                                           \
2391     ( ( 0x67 == ((const U8*)s)[1] || 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )  \
2392 : ( 0x9C == ((const U8*)s)[0] ) ?                                           \
2393     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2394 : ( 0xAF == ((const U8*)s)[0] ) ?                                           \
2395     ( ( 0x48 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2396 : ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xB3, 0xB4) ) ?                  \
2397     ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2398 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
2399     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2400 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
2401     ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
2402 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )
2403 
2404 /*** GENERATED CODE ***/
2405 #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
2406 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
2407 ( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
2408 ( 0x149 == cp || ( 0x149 < cp &&                                            \
2409 ( 0x178 == cp || ( 0x178 < cp &&                                            \
2410 ( 0x17F == cp || ( 0x17F < cp &&                                            \
2411 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
2412 ( 0x307 == cp || ( 0x307 < cp &&                                            \
2413 ( 0x39C == cp || ( 0x39C < cp &&                                            \
2414 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
2415 ( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
2416 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
2417 ( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
2418 
2419 /*
2420 	PROBLEMATIC_LOCALE_FOLDEDS_START: The first folded character of folds which are problematic under locale
2421 
2422 	\p{_Perl_Problematic_Locale_Foldeds_Start}
2423 */
2424 /*** GENERATED CODE ***/
2425 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
2426 ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0x80 ) == 0x00 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xE0 ) == 0x80 ) ) ? 1\
2427 : ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[0]), 0xC5, 0xC7) ) ?\
2428     2                                                                       \
2429 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
2430     ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )      \
2431 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
2432     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2433 : ( 0x8F == ((const U8*)s)[0] ) ?                                           \
2434     ( ( 0x67 == ((const U8*)s)[1] || 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )  \
2435 : ( 0x9C == ((const U8*)s)[0] ) ?                                           \
2436     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2437 : ( 0xAB == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 0xB3, 0xB4) ) ?\
2438     ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2439 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
2440     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2441 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
2442     ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
2443 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )
2444 
2445 /*** GENERATED CODE ***/
2446 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
2447 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
2448 ( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
2449 ( 0x149 == cp || ( 0x149 < cp &&                                            \
2450 ( 0x178 == cp || ( 0x178 < cp &&                                            \
2451 ( 0x17F == cp || ( 0x17F < cp &&                                            \
2452 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
2453 ( 0x2BC == cp || ( 0x2BC < cp &&                                            \
2454 ( 0x39C == cp || ( 0x39C < cp &&                                            \
2455 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
2456 ( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
2457 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
2458 ( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
2459 
2460 /*
2461 	PATWS: pattern white space
2462 
2463 	\p{_Perl_PatWS}
2464 */
2465 /*** GENERATED CODE ***/
2466 #define is_PATWS_safe(s,e,is_utf8)                                          \
2467 ( ( LIKELY((e) > (s)) ) ?                                                   \
2468     ( ( '\t' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] || ' ' == ((const U8*)s)[0] ) ? 1\
2469     : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((const U8*)s)[0] ) ) ? ( ( 0x41 == ((const U8*)s)[1] ) ?\
2470 		    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x55, 0x56) ) ? 3 : 0 )\
2471 		: ( ( 0x42 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 ) : 0 )\
2472 : 0 )
2473 
2474 /*
2475 	HANGUL_ED: Hangul syllables whose first UTF-8 byte is \xED
2476 
2477 	0x1 - 0x0
2478 */
2479 /*** GENERATED CODE ***/
2480 #define is_HANGUL_ED_utf8_safe(s,e)                                         \
2481 ( 0 )
2482 
2483 #endif	/* EBCDIC 1047 */
2484 
2485 #if 'A' == 193 /* EBCDIC 037 */ \
2486      && '\\' == 224 && '[' == 186 && ']' == 187 && '{' == 192 && '}' == 208 \
2487      && '^' == 176 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
2488      && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
2489 /*
2490 	LNBREAK: Line Break: \R
2491 
2492 	"\x0D\x0A"      # CRLF - Network (Windows) line ending
2493 	\p{VertSpace}
2494 */
2495 /*** GENERATED CODE ***/
2496 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
2497 ( ((e)-(s) > 2) ?                                                           \
2498     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
2499     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
2500 	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
2501     : ( ( ( ( is_utf8 ) && ( 0xCA == ((const U8*)s)[0] ) ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
2502 : ((e)-(s) > 1) ?                                                           \
2503     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
2504     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
2505 	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
2506     : 0 )                                                                   \
2507 : ((e)-(s) > 0) ?                                                           \
2508     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] )\
2509 : 0 )
2510 
2511 /*** GENERATED CODE ***/
2512 #define is_LNBREAK_utf8_safe(s,e)                                           \
2513 ( ((e)-(s) > 2) ?                                                           \
2514     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
2515     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
2516 	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
2517     : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
2518 : ((e)-(s) > 1) ?                                                           \
2519     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
2520     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
2521 	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
2522     : 0 )                                                                   \
2523 : ((e)-(s) > 0) ?                                                           \
2524     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] )\
2525 : 0 )
2526 
2527 /*** GENERATED CODE ***/
2528 #define is_LNBREAK_latin1_safe(s,e)                                         \
2529 ( ((e)-(s) > 1) ?                                                           \
2530     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
2531     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
2532 	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
2533     : 0 )                                                                   \
2534 : ((e)-(s) > 0) ?                                                           \
2535     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] )\
2536 : 0 )
2537 
2538 /*
2539 	HORIZWS: Horizontal Whitespace: \h \H
2540 
2541 	\p{HorizSpace}
2542 */
2543 /*** GENERATED CODE ***/
2544 #define is_HORIZWS_high(s)                                                  \
2545 ( ( 0xBD == ((const U8*)s)[0] ) ?                                           \
2546     ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2547 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
2548     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
2549 	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAA) ) ? 3 : 0 )\
2550     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
2551 	( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
2552     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2553 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
2554 
2555 /*** GENERATED CODE ***/
2556 #define is_HORIZWS_cp_high(cp)                                              \
2557 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
2558 ( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
2559 ( 0x202F == cp || ( 0x202F < cp &&                                          \
2560 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) )
2561 
2562 /*
2563 	VERTWS: Vertical Whitespace: \v \V
2564 
2565 	\p{VertSpace}
2566 */
2567 /*** GENERATED CODE ***/
2568 #define is_VERTWS_high(s)                                                   \
2569 ( ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )
2570 
2571 /*** GENERATED CODE ***/
2572 #define is_VERTWS_cp_high(cp)                                               \
2573 ( inRANGE_helper_(UV, cp, 0x2028, 0x2029) )
2574 
2575 /*
2576 	XDIGIT: Hexadecimal digits
2577 
2578 	\p{XDigit}
2579 */
2580 /*** GENERATED CODE ***/
2581 #define is_XDIGIT_high(s)                                                   \
2582 ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) ? ( ( 0x66 == ((const U8*)s)[2] ) ?\
2583 	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xB9) ) ? 4 : 0 )\
2584 	: ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x67, 0x68) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x42, 0x47) ) ) ? 4 : 0 ) : 0 )
2585 
2586 /*** GENERATED CODE ***/
2587 #define is_XDIGIT_cp_high(cp)                                               \
2588 ( inRANGE_helper_(UV, cp, 0xFF10, 0xFF19) || ( 0xFF19 < cp &&               \
2589 ( inRANGE_helper_(UV, cp, 0xFF21, 0xFF26) || inRANGE_helper_(UV, cp, 0xFF41, 0xFF46) ) ) )
2590 
2591 /*
2592 	XPERLSPACE: \p{XPerlSpace}
2593 
2594 	\p{XPerlSpace}
2595 */
2596 /*** GENERATED CODE ***/
2597 #define is_XPERLSPACE_high(s)                                               \
2598 ( ( 0xBD == ((const U8*)s)[0] ) ?                                           \
2599     ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2600 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
2601     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
2602 	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAA) ) ? 3 : 0 )\
2603     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
2604 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
2605     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2606 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
2607 
2608 /*** GENERATED CODE ***/
2609 #define is_XPERLSPACE_cp_high(cp)                                           \
2610 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
2611 ( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
2612 ( inRANGE_helper_(UV, cp, 0x2028, 0x2029) || ( 0x2029 < cp &&               \
2613 ( 0x202F == cp || ( 0x202F < cp &&                                          \
2614 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) )
2615 
2616 /*
2617 	NONCHAR: Non character code points
2618 
2619 	\p{_Perl_Nchar}
2620 */
2621 /*** GENERATED CODE ***/
2622 #define is_NONCHAR_utf8_safe(s,e)                                           \
2623 ( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\
2624 	    ( ( 0x72 == ((const U8*)s)[1] ) ?                               \
2625 		( ( 0x55 == ((const U8*)s)[2] ) ?                           \
2626 		    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xBF) ) ? 4 : 0 )\
2627 		: ( 0x56 == ((const U8*)s)[2] ) ?                           \
2628 		    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
2629 		: ( ( 0x72 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )\
2630 	    : 0 )                                                           \
2631 	: ( ((const U8*)s)[0] == 0xDF || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xFD ) == 0xF5 ) ) ?\
2632 	    ( ( ( ( 0x72 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )\
2633 	: ( 0xED == ((const U8*)s)[0] ) ?                                   \
2634 	    ( ( ( ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF9 ) == 0xA9 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF1 ) == 0xB1 ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 )\
2635 	: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 ) : 0 )
2636 
2637 /*
2638 	SHORTER_NON_CHARS: # 4 bytes
2639 
2640 	0xFDD0 - 0xFDEF
2641 	0xFFFE - 0xFFFF
2642 	0x1FFFE - 0x1FFFF
2643 	0x2FFFE - 0x2FFFF
2644 	0x3FFFE - 0x3FFFF
2645 */
2646 /*** GENERATED CODE ***/
2647 #define is_SHORTER_NON_CHARS_utf8(s)                                        \
2648 ( ( 0xDD == ((const U8*)s)[0] ) ?                                           \
2649     ( ( 0x72 == ((const U8*)s)[1] ) ?                                       \
2650 	( ( 0x55 == ((const U8*)s)[2] ) ?                                   \
2651 	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xBF) ) ? 4 : 0 )\
2652 	: ( 0x56 == ((const U8*)s)[2] ) ?                                   \
2653 	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
2654 	: ( ( 0x72 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )\
2655     : 0 )                                                                   \
2656 : ( ( ( ( ((const U8*)s)[0] == 0xDF || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xFD ) == 0xF5 ) ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )
2657 
2658 /*
2659 	LARGER_NON_CHARS: # 5 bytes
2660 
2661 	0x4FFFE - 0x4FFFF
2662 	0x5FFFE - 0x5FFFF
2663 	0x6FFFE - 0x6FFFF
2664 	0x7FFFE - 0x7FFFF
2665 	0x8FFFE - 0x8FFFF
2666 	0x9FFFE - 0x9FFFF
2667 	0xAFFFE - 0xAFFFF
2668 	0xBFFFE - 0xBFFFF
2669 	0xCFFFE - 0xCFFFF
2670 	0xDFFFE - 0xDFFFF
2671 	0xEFFFE - 0xEFFFF
2672 	0xFFFFE - 0xFFFFF
2673 	0x10FFFE - 0x10FFFF
2674 */
2675 /*** GENERATED CODE ***/
2676 #define is_LARGER_NON_CHARS_utf8(s)                                         \
2677 ( ( 0xED == ((const U8*)s)[0] ) ?                                           \
2678     ( ( ( ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF9 ) == 0xA9 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF1 ) == 0xB1 ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 )\
2679 : ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 )
2680 
2681 /*
2682 	SURROGATE: Surrogate code points
2683 
2684 	\p{_Perl_Surrogate}
2685 */
2686 /*** GENERATED CODE ***/
2687 #define is_SURROGATE_utf8(s)                                                \
2688 ( ( ( 0xDD == ((const U8*)s)[0] ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x64, 0x65) ) ) ? 4 : 0 )
2689 
2690 /*** GENERATED CODE ***/
2691 #define is_SURROGATE_utf8_safe(s,e)                                         \
2692 ( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x64, 0x65) ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xBF) ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xBF) ) ) ? 4 : 0 )
2693 
2694 /*
2695 	QUOTEMETA: Meta-characters that \Q should quote
2696 
2697 	\p{_Perl_Quotemeta}
2698 */
2699 /*** GENERATED CODE ***/
2700 #define is_QUOTEMETA_high(s)                                                \
2701 ( ( 0xAF == ((const U8*)s)[0] ) ?                                           \
2702     ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2703 : ( 0xB7 == ((const U8*)s)[0] ) ?                                           \
2704     ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x6A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2705 : ( 0xBC == ((const U8*)s)[0] ) ?                                           \
2706     ( ( 0x51 == ((const U8*)s)[1] ) ?                                       \
2707 	( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
2708     : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2709 : ( 0xBD == ((const U8*)s)[0] ) ?                                           \
2710     ( ( 0x62 == ((const U8*)s)[1] ) ?                                       \
2711 	( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
2712     : ( ( 0x70 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x63) ) ) ? 3 : 0 )\
2713 : ( 0xBE == ((const U8*)s)[0] ) ?                                           \
2714     ( ( ( 0x41 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x52, 0x56) ) ) ? 3 : 0 )\
2715 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
2716     ( ( 0x41 == ((const U8*)s)[1] || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xAD, 0xBF) ) ?\
2717 	3                                                                   \
2718     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
2719 	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xBE) ) ? 3 : 0 )\
2720     : ( 0x43 == ((const U8*)s)[1] ) ?                                       \
2721 	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA1, 0xB3) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB5, 0xBF) ) ? 3 : 0 )\
2722     : ( 0x44 == ((const U8*)s)[1] ) ?                                       \
2723 	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAF) ) ? 3 : 0 )\
2724     : ( ( 0x53 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB0, 0xBF) ) ) ? 3 : 0 )\
2725 : ( 0xCB == ((const U8*)s)[0] ) ?                                           \
2726     ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xA0, 0xA2) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xA8, 0xBA) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xBD, 0xBF) ) ?\
2727 	3                                                                   \
2728     : ( 0x69 == ((const U8*)s)[1] ) ?                                       \
2729 	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xB5) ) ? 3 : 0 )\
2730     : ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB4, 0xBF) ) ) ? 3 : 0 )\
2731 : ( 0xCC == ((const U8*)s)[0] ) ?                                           \
2732     3                                                                       \
2733 : ( 0xCD == ((const U8*)s)[0] ) ?                                           \
2734     ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xB0, 0xB3) ) ?\
2735 	3                                                                   \
2736     : 0 )                                                                   \
2737 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
2738     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
2739 	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xA3) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA8, 0xBF) ) ? 3 : 0 )\
2740     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
2741 	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEF ) == 0xA0 ) ? 3 : 0 )\
2742     : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2743 : ( 0xDD == ((const U8*)s)[0] ) ?                                           \
2744     ( ( 0x72 == ((const U8*)s)[1] ) ?                                       \
2745 	( ( 0x4A == ((const U8*)s)[2] ) ?                                   \
2746 	    ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ? 4 : 0 )\
2747 	: ( 0x57 == ((const U8*)s)[2] ) ?                                   \
2748 	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
2749 	: ( 0x59 == ((const U8*)s)[2] ) ?                                   \
2750 	    ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x46, 0x47) ) ? 4 : 0 )\
2751 	: ( 0x65 == ((const U8*)s)[2] ) ?                                   \
2752 	    ( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
2753 	: ( 0x70 == ((const U8*)s)[2] ) ?                                   \
2754 	    ( ( 0x41 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
2755 	: ( ( 0x72 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xB8) ) ) ? 4 : 0 )\
2756     : 0 )                                                                   \
2757 : ( 0xDF == ((const U8*)s)[0] ) ?                                           \
2758     ( ( 0x56 == ((const U8*)s)[1] ) ?                                       \
2759 	( ( ( 0x46 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x44) ) ) ? 4 : 0 )\
2760     : ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB3, 0xBA) ) ) ? 4 : 0 )\
2761 : ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x44) ) ) ? 5 : 0 )
2762 
2763 /*
2764 	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
2765 
2766 	%regcharclass_multi_char_folds::multi_char_folds('u', 'a')
2767 */
2768 /*** GENERATED CODE ***/
2769 #define is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                            \
2770 ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )
2771 
2772 
2773 /*** GENERATED CODE ***/
2774 #define is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                            \
2775 ( ( 0x8E == ((const U8*)s)[0] ) ?                                           \
2776 	( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
2777 	    ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
2778 		( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
2779 	    : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
2780 	: 0 )                                                               \
2781     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
2782 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2783     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
2784 	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
2785 	    ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
2786 	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
2787     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
2788 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2789     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
2790 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2791     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
2792 	( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
2793     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
2794 	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ?     \
2795 	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2796 	: ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
2797 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
2798 		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
2799 		    ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
2800 		: 0 )                                                       \
2801 	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2802 	: ( 0x67 == ((const U8*)s)[1] ) ?                                   \
2803 	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
2804 		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
2805 		    ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
2806 			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
2807 		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
2808 		: 0 )                                                       \
2809 	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2810 	: 0 )                                                               \
2811     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2812 	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
2813 	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2814 	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
2815 	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
2816 		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
2817 		    ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
2818 			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
2819 		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
2820 		: ( 0x5F == ((const U8*)s)[3] ) ?                           \
2821 		    ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
2822 			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 4 )\
2823 		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
2824 		: 0 )                                                       \
2825 	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2826 	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
2827 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
2828 		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
2829 		    ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
2830 		: 0 )                                                       \
2831 	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2832 	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2833     : ( 0xB7 == ((const U8*)s)[0] ) ?                                       \
2834 	( ( 0x52 == ((const U8*)s)[1] ) ?                                   \
2835 	    ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
2836 		( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
2837 	    : ( 0x62 == ((const U8*)s)[2] ) ?                               \
2838 		( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[5]) & 0xF7 ) == 0xA5 ) || ((const U8*)s)[5] == 0x52 || ((const U8*)s)[5] == 0x64 ) ) ? 6 : 0 )\
2839 	    : ( ( ( ( 0x71 == ((const U8*)s)[2] ) && ( 0xB7 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x64 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
2840 	: 0 )                                                               \
2841     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
2842 	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x66, 0x67) ) ?          \
2843 	    ( ( ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
2844 	: ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x6A ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
2845     : 0 )
2846 
2847 
2848 /*** GENERATED CODE ***/
2849 #define is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                            \
2850 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                                 \
2851 	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2852     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2853 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
2854 	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
2855 	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
2856     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
2857 	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2858     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
2859 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2860     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
2861 	( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
2862 	    ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
2863 		( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
2864 	    : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
2865 	: 0 )                                                               \
2866     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
2867 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2868     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
2869 	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
2870 	    ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
2871 	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
2872     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
2873 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2874     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
2875 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2876     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
2877 	( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
2878     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
2879 	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ?     \
2880 	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2881 	: ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
2882 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
2883 		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
2884 	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2885 	: ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2886     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2887 	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
2888 	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2889 	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
2890 	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
2891 		( ( 0x5F == ((const U8*)s)[3] ) ? 4 : 0 )                   \
2892 	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2893 	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
2894 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
2895 		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
2896 	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2897 	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2898     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
2899 	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x66, 0x67) ) ?          \
2900 	    ( ( ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
2901 	: ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x6A ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
2902     : 0 )
2903 
2904 
2905 /*** GENERATED CODE ***/
2906 #define is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                            \
2907 ( ((e)-(s) > 3) ?                                                           \
2908     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
2909 	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2910     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2911 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
2912 	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
2913 	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
2914     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
2915 	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2916     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
2917 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2918     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
2919 	( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
2920 	    ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
2921 		( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
2922 	    : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
2923 	: 0 )                                                               \
2924     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
2925 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2926     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
2927 	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
2928 	    ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
2929 	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
2930     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
2931 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2932     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
2933 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2934     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
2935 	( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
2936     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
2937 	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ?     \
2938 	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2939 	: ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
2940 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
2941 		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
2942 	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2943 	: ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2944     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2945 	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
2946 	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2947 	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
2948 	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
2949 		( ( 0x5F == ((const U8*)s)[3] ) ? 4 : 0 )                   \
2950 	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2951 	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
2952 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
2953 		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
2954 	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2955 	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
2956     : 0 )                                                                   \
2957 : ((e)-(s) > 2) ?                                                           \
2958     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
2959 	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2960     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2961 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
2962 	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
2963 	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
2964     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
2965 	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2966     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
2967 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2968     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
2969 	( ( ( 0x72 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ) ? 3 : 0 )\
2970     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
2971 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2972     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
2973 	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
2974 	    ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
2975 	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
2976     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
2977 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2978     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
2979 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2980     : ( ( ( 0xAA == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
2981 : ((e)-(s) > 1) ?                                                           \
2982     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2983 	( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
2984     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
2985 : 0 )
2986 
2987 
2988 /*** GENERATED CODE ***/
2989 #define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
2990 ( ((e)-(s) > 5) ?                                                           \
2991     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
2992 	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2993     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2994 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
2995 	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
2996 	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
2997     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
2998 	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2999     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )\
3000 : ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )
3001 
3002 /*** GENERATED CODE ***/
3003 #define what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                          \
3004 ( ( 0x52 == ((const U8*)s)[1] ) ?                                           \
3005 	    ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
3006 		( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x587 : 0 )\
3007 	    : ( 0x62 == ((const U8*)s)[2] ) ?                               \
3008 		( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) ? ( ( 0x46 == ((const U8*)s)[5] ) ? 0xFB14\
3009 			: ( 0x52 == ((const U8*)s)[5] ) ? 0xFB15            \
3010 			: ( 0x54 == ((const U8*)s)[5] ) ? 0xFB17            \
3011 			: ( 0x64 == ((const U8*)s)[5] ) ? 0xFB13 : 0 ) : 0 )\
3012 	    : ( ( ( ( 0x71 == ((const U8*)s)[2] ) && ( 0xB7 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x64 == ((const U8*)s)[5] ) ) ? 0xFB16 : 0 )\
3013 	: 0 )
3014 
3015 
3016 /*** GENERATED CODE ***/
3017 #define what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                          \
3018 ( ( 0xBF == ((const U8*)s)[0] ) ?                                           \
3019 	( ( 0x66 == ((const U8*)s)[1] ) ?                                   \
3020 	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
3021 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
3022 	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
3023 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
3024 	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
3025 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
3026 	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
3027 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
3028 	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
3029 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
3030 	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
3031 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
3032 	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
3033 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
3034 	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
3035 	: ( 0x67 == ((const U8*)s)[1] ) ?                                   \
3036 	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
3037 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
3038 	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
3039 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
3040 	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
3041 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
3042 	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
3043 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
3044 	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
3045 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
3046 	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
3047 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
3048 	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
3049 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
3050 	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
3051 	: ( 0x69 == ((const U8*)s)[1] ) ?                                   \
3052 	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
3053 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
3054 	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
3055 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
3056 	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
3057 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
3058 	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
3059 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
3060 	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
3061 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
3062 	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
3063 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
3064 	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
3065 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
3066 	    : ( 0x48 == ((const U8*)s)[2] ) ?                               \
3067 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
3068 	    : ( 0x57 == ((const U8*)s)[2] ) ?                               \
3069 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
3070 	    : ( 0x62 == ((const U8*)s)[2] ) ?                               \
3071 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
3072 	    : ( ( ( 0x6A == ((const U8*)s)[2] ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
3073 	: 0 )                                                               \
3074     : 0 )
3075 
3076 
3077 /*** GENERATED CODE ***/
3078 #define what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                          \
3079 ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                                 \
3080 	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
3081 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
3082 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
3083 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )
3084 
3085 
3086 /*** GENERATED CODE ***/
3087 #define what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                          \
3088 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                                 \
3089 	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
3090     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
3091 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
3092     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
3093 	( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
3094 	    ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
3095 		( ( 0x72 == ((const U8*)s)[3] ) ? 0x59 : 0 )                \
3096 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
3097 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
3098 	: 0 )                                                               \
3099     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
3100 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
3101     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
3102 	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
3103 	    ( ( 0x72 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
3104 	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
3105 	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
3106     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
3107 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
3108     : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
3109 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
3110     : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
3111 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
3112     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
3113 	( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
3114     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
3115 	( ( 0x53 == ((const U8*)s)[1] ) ?                                   \
3116 	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
3117 	: ( 0x55 == ((const U8*)s)[1] ) ?                                   \
3118 	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
3119 	: ( 0x58 == ((const U8*)s)[1] ) ?                                   \
3120 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
3121 		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
3122 		    ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 0x1FB7 : 0x1FB6 )\
3123 		: 0 )                                                       \
3124 	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
3125 	: ( 0x65 == ((const U8*)s)[1] ) ?                                   \
3126 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
3127 		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
3128 		    ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 0x1FC7 : 0x1FC6 )\
3129 		: 0 )                                                       \
3130 	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
3131 	: ( 0x67 == ((const U8*)s)[1] ) ?                                   \
3132 	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
3133 		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
3134 		    ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
3135 			( ( 0x41 == ((const U8*)s)[5] ) ? 0x1FD2            \
3136 			: ( 0x42 == ((const U8*)s)[5] ) ? 0x390 : 0 )       \
3137 		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x1FD7 : 0 )\
3138 		: 0 )                                                       \
3139 	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
3140 	: 0 )                                                               \
3141     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
3142 	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
3143 	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
3144 	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
3145 	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
3146 		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
3147 		    ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
3148 			( ( 0x41 == ((const U8*)s)[5] ) ? 0x1FE2            \
3149 			: ( 0x42 == ((const U8*)s)[5] ) ? 0x3B0 : 0 )       \
3150 		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x1FE7 : 0 )\
3151 		: ( 0x5F == ((const U8*)s)[3] ) ?                           \
3152 		    ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
3153 			( ( 0x41 == ((const U8*)s)[5] ) ? 0x1F52            \
3154 			: ( 0x42 == ((const U8*)s)[5] ) ? 0x1F54 : 0x1F50 ) \
3155 		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x1F56 : 0x1F50 )\
3156 		: 0 )                                                       \
3157 	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
3158 	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
3159 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
3160 		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
3161 		    ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 0x1FF7 : 0x1FF6 )\
3162 		: 0 )                                                       \
3163 	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
3164 	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )\
3165     : ( 0xB7 == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )
3166 
3167 
3168 /*** GENERATED CODE ***/
3169 #define what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e)                          \
3170 ( ( 0x42 == ((const U8*)s)[1] ) ?                                           \
3171 	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
3172 	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
3173 	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
3174 		( ( 0x5F == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
3175 	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
3176 	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
3177 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
3178 		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
3179 	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
3180 	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )
3181 
3182 
3183 /*** GENERATED CODE ***/
3184 #define what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e)                          \
3185 ( ( 0xBF == ((const U8*)s)[0] ) ?                                           \
3186 	( ( 0x66 == ((const U8*)s)[1] ) ?                                   \
3187 	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
3188 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
3189 	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
3190 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
3191 	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
3192 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
3193 	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
3194 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
3195 	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
3196 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
3197 	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
3198 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
3199 	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
3200 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
3201 	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
3202 	: ( 0x67 == ((const U8*)s)[1] ) ?                                   \
3203 	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
3204 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
3205 	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
3206 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
3207 	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
3208 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
3209 	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
3210 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
3211 	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
3212 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
3213 	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
3214 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
3215 	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
3216 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
3217 	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
3218 	: ( 0x69 == ((const U8*)s)[1] ) ?                                   \
3219 	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
3220 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
3221 	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
3222 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
3223 	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
3224 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
3225 	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
3226 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
3227 	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
3228 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
3229 	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
3230 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
3231 	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
3232 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
3233 	    : ( 0x48 == ((const U8*)s)[2] ) ?                               \
3234 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
3235 	    : ( 0x57 == ((const U8*)s)[2] ) ?                               \
3236 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
3237 	    : ( 0x62 == ((const U8*)s)[2] ) ?                               \
3238 		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
3239 	    : ( ( ( 0x6A == ((const U8*)s)[2] ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
3240 	: 0 )                                                               \
3241     : 0 )
3242 
3243 
3244 /*** GENERATED CODE ***/
3245 #define what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e)                          \
3246 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                                 \
3247 	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
3248     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
3249 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
3250 	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
3251 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
3252 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
3253 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
3254     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
3255 	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
3256     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
3257 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
3258     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
3259 	( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
3260 	    ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
3261 		( ( 0x72 == ((const U8*)s)[3] ) ? 0x59 : 0 )                \
3262 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
3263 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
3264 	: 0 )                                                               \
3265     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
3266 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
3267     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
3268 	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
3269 	    ( ( 0x72 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
3270 	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
3271 	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
3272     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
3273 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
3274     : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
3275 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
3276     : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
3277 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
3278     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
3279 	( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
3280     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
3281 	( ( 0x53 == ((const U8*)s)[1] ) ?                                   \
3282 	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
3283 	: ( 0x55 == ((const U8*)s)[1] ) ?                                   \
3284 	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
3285 	: ( 0x58 == ((const U8*)s)[1] ) ?                                   \
3286 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
3287 		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
3288 	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
3289 	: ( 0x65 == ((const U8*)s)[1] ) ?                                   \
3290 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
3291 		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
3292 	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
3293 	: ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
3294     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
3295 	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
3296 	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
3297 	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
3298 	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
3299 		( ( 0x5F == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
3300 	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
3301 	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
3302 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
3303 		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
3304 	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
3305 	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )\
3306     : 0 )
3307 
3308 
3309 /*** GENERATED CODE ***/
3310 #define what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e)                          \
3311 ( ((e)-(s) > 2) ?                                                           \
3312     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
3313 	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
3314     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
3315 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
3316 	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
3317 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
3318 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
3319 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
3320     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
3321 	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
3322     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
3323 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
3324     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
3325 	( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
3326 	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
3327 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
3328 	: 0 )                                                               \
3329     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
3330 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
3331     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
3332 	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
3333 	    ( ( 0x72 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
3334 	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
3335 	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
3336     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
3337 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
3338     : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
3339 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
3340     : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
3341 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
3342     : ( ( ( 0xAA == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
3343 : ((e)-(s) > 1) ?                                                           \
3344     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
3345 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 0xFB00                  \
3346 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
3347 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
3348     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
3349 	( ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
3350 	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
3351     : 0 )                                                                   \
3352 : 0 )
3353 
3354 
3355 /*** GENERATED CODE ***/
3356 #define what_MULTI_CHAR_FOLD_utf8_safe(s,e)                                 \
3357 ( ((e)-(s) > 5) ?                                                           \
3358     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
3359 	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
3360     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ? what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )\
3361 : ((e)-(s) > 4) ?                                                           \
3362     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
3363 	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
3364     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
3365 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
3366 	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
3367 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
3368 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
3369 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
3370     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
3371 	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
3372     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
3373 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
3374     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
3375 	( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
3376 	    ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
3377 		( ( 0x72 == ((const U8*)s)[3] ) ? 0x59 : 0 )                \
3378 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
3379 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
3380 	: 0 )                                                               \
3381     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
3382 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
3383     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
3384 	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
3385 	    ( ( 0x72 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
3386 	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
3387 	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
3388     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
3389 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
3390     : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
3391 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
3392     : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
3393 	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
3394     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
3395 	( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
3396     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
3397 	( ( 0x53 == ((const U8*)s)[1] ) ?                                   \
3398 	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
3399 	: ( 0x55 == ((const U8*)s)[1] ) ?                                   \
3400 	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
3401 	: ( 0x58 == ((const U8*)s)[1] ) ?                                   \
3402 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
3403 		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
3404 	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
3405 	: ( 0x65 == ((const U8*)s)[1] ) ?                                   \
3406 	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
3407 		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
3408 	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
3409 	: ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
3410     : ( 0xB4 == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e) )\
3411 : ((e)-(s) > 3) ? what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e) )
3412 
3413 /*
3414 	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
3415 
3416 	%regcharclass_multi_char_folds::multi_char_folds('l', 'a')
3417 */
3418 /*** GENERATED CODE ***/
3419 #define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
3420 ( ((e)-(s) > 2) ?                                                           \
3421     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
3422 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
3423 	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
3424 	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
3425     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
3426 : ((e)-(s) > 1) ?                                                           \
3427     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
3428 	( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
3429     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
3430 : 0 )
3431 
3432 /*** GENERATED CODE ***/
3433 #define what_MULTI_CHAR_FOLD_latin1_safe(s,e)                               \
3434 ( ((e)-(s) > 2) ?                                                           \
3435     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
3436 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
3437 	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
3438 	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
3439 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
3440 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
3441     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
3442 	( ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
3443 	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
3444     : 0 )                                                                   \
3445 : ((e)-(s) > 1) ?                                                           \
3446     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
3447 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 0xFB00                  \
3448 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
3449 	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
3450     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
3451 	( ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
3452 	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
3453     : 0 )                                                                   \
3454 : 0 )
3455 
3456 /*
3457 	THREE_CHAR_FOLD: A three-character multi-char fold
3458 
3459 	%regcharclass_multi_char_folds::multi_char_folds('u', '3')
3460 */
3461 /*** GENERATED CODE ***/
3462 #define is_THREE_CHAR_FOLD_utf8_safe(s,e)                                   \
3463 ( ((e)-(s) > 5) ?                                                           \
3464     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
3465 	( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )\
3466     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
3467 	( ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
3468 	    ( ( ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB3 == ((const U8*)s)[4] ) ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
3469 	: ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAD == ((const U8*)s)[2] ) ) && ( 0x49 == ((const U8*)s)[3] ) ) ? ( ( 0xAD == ((const U8*)s)[4] ) ?\
3470 			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
3471 		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
3472     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
3473 	( ( 0x46 == ((const U8*)s)[1] ) ?                                   \
3474 	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x5F == ((const U8*)s)[3] ) ) ? ( ( 0xAD == ((const U8*)s)[4] ) ?\
3475 			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
3476 		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
3477 	: ( ( ( ( ( 0x4A == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB3 == ((const U8*)s)[4] ) ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
3478     : 0 )                                                                   \
3479 : ( ( ( ((e)-(s) > 2) && ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ) && ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )
3480 
3481 /*
3482 	THREE_CHAR_FOLD: A three-character multi-char fold
3483 
3484 	%regcharclass_multi_char_folds::multi_char_folds('l', '3')
3485 */
3486 /*** GENERATED CODE ***/
3487 #define is_THREE_CHAR_FOLD_latin1_safe(s,e)                                 \
3488 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ) && ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )
3489 
3490 /*
3491 	THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
3492 
3493 	%regcharclass_multi_char_folds::multi_char_folds('u', 'h')
3494 */
3495 /*** GENERATED CODE ***/
3496 #define is_THREE_CHAR_FOLD_HEAD_utf8_safe(s,e)                              \
3497 ( ((e)-(s) > 3) ?                                                           \
3498     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
3499     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
3500 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
3501     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
3502 	( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
3503     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
3504 	( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                           \
3505     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
3506 	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ? 2   \
3507 	: ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
3508 	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
3509 	: ( 0x67 == ((const U8*)s)[1] ) ?                                   \
3510 	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
3511 	: 0 )                                                               \
3512     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
3513 	( ( 0x42 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2    \
3514 	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
3515 	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x5F == ((const U8*)s)[3] ) ) ? 4 : 2 )\
3516 	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
3517 	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
3518 	: 0 )                                                               \
3519     : ( 0xB7 == ((const U8*)s)[0] ) ?                                       \
3520 	( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
3521     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
3522 	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x66, 0x67) ) ?          \
3523 	    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )\
3524 	: ( ( 0x69 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x6A ) ) ? 3 : 0 )\
3525     : 0 )                                                                   \
3526 : ((e)-(s) > 2) ?                                                           \
3527     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
3528     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
3529 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
3530     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
3531 	( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
3532     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
3533 	( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                           \
3534     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
3535 	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0x65 ) ? 2 : 0 )\
3536     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
3537 	( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ? 2 : 0 )\
3538     : ( 0xB7 == ((const U8*)s)[0] ) ?                                       \
3539 	( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
3540     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
3541 	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x66, 0x67) ) ?          \
3542 	    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )\
3543 	: ( ( 0x69 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x6A ) ) ? 3 : 0 )\
3544     : 0 )                                                                   \
3545 : ((e)-(s) > 1) ?                                                           \
3546     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
3547     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
3548 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
3549     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
3550 	( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
3551     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
3552 	( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                           \
3553     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
3554 	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0x65 ) ? 2 : 0 )\
3555     : ( ( 0xB4 == ((const U8*)s)[0] ) && ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ) ? 2 : 0 )\
3556 : ((e)-(s) > 0) ?                                                           \
3557     ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
3558 : 0 )
3559 
3560 /*
3561 	THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
3562 
3563 	%regcharclass_multi_char_folds::multi_char_folds('l', 'h')
3564 */
3565 /*** GENERATED CODE ***/
3566 #define is_THREE_CHAR_FOLD_HEAD_latin1_safe(s,e)                            \
3567 ( ((e)-(s) > 1) ?                                                           \
3568     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
3569     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
3570 	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
3571     : 0 )                                                                   \
3572 : ((e)-(s) > 0) ?                                                           \
3573     ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
3574 : 0 )
3575 
3576 /*
3577 	FOLDS_TO_MULTI: characters that fold to multi-char strings
3578 
3579 	\p{_Perl_Folds_To_Multi_Char}
3580 */
3581 /*** GENERATED CODE ***/
3582 #define is_FOLDS_TO_MULTI_utf8(s)                                           \
3583 ( ( 0x80 == ((const U8*)s)[0] ) ?                                           \
3584     ( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
3585 : ( 0x8C == ((const U8*)s)[0] || 0x9B == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 0xB2, 0xB3) ) ?\
3586     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
3587 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
3588     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
3589 : ( 0xB7 == ((const U8*)s)[0] ) ?                                           \
3590     ( ( ( 0x53 == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
3591 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
3592     ( ( 0x62 == ((const U8*)s)[1] ) ?                                       \
3593 	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x64, 0x68) || 0x71 == ((const U8*)s)[2] ) ? 3 : 0 )\
3594     : ( 0x68 == ((const U8*)s)[1] ) ?                                       \
3595 	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF9 ) == 0xB0 ) ? 3 : 0 )\
3596     : ( 0x6A == ((const U8*)s)[1] ) ?                                       \
3597 	3                                                                   \
3598     : ( 0x70 == ((const U8*)s)[1] ) ?                                       \
3599 	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF0 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFA ) == 0xB2 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xB4 ) ) ? 3 : 0 )\
3600     : ( 0x71 == ((const U8*)s)[1] ) ?                                       \
3601 	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEA ) == 0xA2 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xA4 ) ) ? 3 : 0 )\
3602     : ( ( 0x72 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEA ) == 0xA2 ) || ((const U8*)s)[2] == 0x45 || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xB4 ) ) ) ? 3 : 0 )\
3603 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xA6) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB3, 0xB7) ) ) ? 4 : 0 )
3604 
3605 /*
3606 	PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale
3607 
3608 	\p{_Perl_Problematic_Locale_Folds}
3609 */
3610 /*** GENERATED CODE ***/
3611 #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
3612 ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0x80 ) == 0x00 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xE0 ) == 0x80 ) ) ? 1\
3613 : ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[0]), 0xC5, 0xC7) ) ?\
3614     2                                                                       \
3615 : ( 0x8C == ((const U8*)s)[0] ) ?                                           \
3616     ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )      \
3617 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
3618     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
3619 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
3620     ( ( 0x66 == ((const U8*)s)[1] || 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )  \
3621 : ( 0x9B == ((const U8*)s)[0] ) ?                                           \
3622     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
3623 : ( 0xAD == ((const U8*)s)[0] ) ?                                           \
3624     ( ( 0x48 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
3625 : ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xB2, 0xB3) ) ?                  \
3626     ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
3627 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
3628     ( ( ( 0x62 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x64, 0x68) || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
3629 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
3630     ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
3631 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )
3632 
3633 /*** GENERATED CODE ***/
3634 #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
3635 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
3636 ( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
3637 ( 0x149 == cp || ( 0x149 < cp &&                                            \
3638 ( 0x178 == cp || ( 0x178 < cp &&                                            \
3639 ( 0x17F == cp || ( 0x17F < cp &&                                            \
3640 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
3641 ( 0x307 == cp || ( 0x307 < cp &&                                            \
3642 ( 0x39C == cp || ( 0x39C < cp &&                                            \
3643 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
3644 ( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
3645 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
3646 ( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
3647 
3648 /*
3649 	PROBLEMATIC_LOCALE_FOLDEDS_START: The first folded character of folds which are problematic under locale
3650 
3651 	\p{_Perl_Problematic_Locale_Foldeds_Start}
3652 */
3653 /*** GENERATED CODE ***/
3654 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
3655 ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0x80 ) == 0x00 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xE0 ) == 0x80 ) ) ? 1\
3656 : ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[0]), 0xC5, 0xC7) ) ?\
3657     2                                                                       \
3658 : ( 0x8C == ((const U8*)s)[0] ) ?                                           \
3659     ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )      \
3660 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
3661     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
3662 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
3663     ( ( 0x66 == ((const U8*)s)[1] || 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )  \
3664 : ( 0x9B == ((const U8*)s)[0] ) ?                                           \
3665     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
3666 : ( 0xAA == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 0xB2, 0xB3) ) ?\
3667     ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
3668 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
3669     ( ( ( 0x62 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x64, 0x68) || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
3670 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
3671     ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
3672 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )
3673 
3674 /*** GENERATED CODE ***/
3675 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
3676 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
3677 ( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
3678 ( 0x149 == cp || ( 0x149 < cp &&                                            \
3679 ( 0x178 == cp || ( 0x178 < cp &&                                            \
3680 ( 0x17F == cp || ( 0x17F < cp &&                                            \
3681 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
3682 ( 0x2BC == cp || ( 0x2BC < cp &&                                            \
3683 ( 0x39C == cp || ( 0x39C < cp &&                                            \
3684 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
3685 ( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
3686 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
3687 ( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
3688 
3689 /*
3690 	PATWS: pattern white space
3691 
3692 	\p{_Perl_PatWS}
3693 */
3694 /*** GENERATED CODE ***/
3695 #define is_PATWS_safe(s,e,is_utf8)                                          \
3696 ( ( LIKELY((e) > (s)) ) ?                                                   \
3697     ( ( '\t' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] || ' ' == ((const U8*)s)[0] ) ? 1\
3698     : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((const U8*)s)[0] ) ) ? ( ( 0x41 == ((const U8*)s)[1] ) ?\
3699 		    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x55, 0x56) ) ? 3 : 0 )\
3700 		: ( ( 0x42 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 ) : 0 )\
3701 : 0 )
3702 
3703 /*
3704 	HANGUL_ED: Hangul syllables whose first UTF-8 byte is \xED
3705 
3706 	0x1 - 0x0
3707 */
3708 /*** GENERATED CODE ***/
3709 #define is_HANGUL_ED_utf8_safe(s,e)                                         \
3710 ( 0 )
3711 
3712 #endif	/* EBCDIC 037 */
3713 
3714 #endif /* PERL_REGCHARCLASS_H_ */
3715 
3716 /* Generated from:
3717  * 688d673ec947f7ccf898b4eae9848139d4d33676b688dee54f449f8bf9d3bbd2 lib/Unicode/UCD.pm
3718  * c7698811e9adb6cc98fb996a7de4be2b6532f2ac67e76055cc8afdbf6ee18af3 lib/unicore/ArabicShaping.txt
3719  * 24a74555f918bbe99f5b3f1b83cf36fc0e205bb8a600a6a3aa539c710a3dcf27 lib/unicore/BidiBrackets.txt
3720  * 7a5c74cedc1616a9af0a9d22e108ae592d86fe93649c144ae6ba49f193a44122 lib/unicore/BidiMirroring.txt
3721  * 598870dddef7b34b5a972916528c456aff2765b79cd4f9647fb58ceb767e7f17 lib/unicore/Blocks.txt
3722  * a566cd48687b2cd897e02501118b2413c14ae86d318f9abbbba97feb84189f0f lib/unicore/CaseFolding.txt
3723  * 3360762fc3295cea54ab251c31df621d05ba4b94d46c60eaac29aa16d70ad1e0 lib/unicore/CompositionExclusions.txt
3724  * 7e058dec02147098bc9c28d86209f0f251bba0538f3b5a705ad02ea3bb709fe0 lib/unicore/DAge.txt
3725  * e3eddd7d469cd1b0feed7528defad1a1cc7c6a9ceb0ae4446a6d10921ed2e7bc lib/unicore/DCoreProperties.txt
3726  * b2c444c20730b097787fdf50bd7d6dd3fc5256ab8084f5b35b11c8776eca674c lib/unicore/DNormalizationProps.txt
3727  * f901ac011aa32a09224d6555da71e2532c59c1d3381322829de0e3b880507250 lib/unicore/EastAsianWidth.txt
3728  * 5995522f01633073911dad1edb74d13aa832f42862c0392a79627b85d52f2391 lib/unicore/EquivalentUnifiedIdeograph.txt
3729  * cd1c9367cba438afa965fcb5edc6ed3ec6e685fd5dd21c0cc20c026f04beb0e5 lib/unicore/HangulSyllableType.txt
3730  * 3f3f368fccdb37f350ecedc20b37fa71ab31c04e847884c77780d34283539f73 lib/unicore/IdStatus.txt
3731  * 45a150c23961b58d7784704af6c4daccd6517d97b6489e53d13bbdbf9e4f065f lib/unicore/IdType.txt
3732  * d8704c8725568813a947ff2ef38bcf1f05e2a6fbea6876ba384890f187a8bf61 lib/unicore/IndicPositionalCategory.txt
3733  * c7b969b653dc278fb66ab4136223d320e30ad19367eb791ae60dcc6d92071b16 lib/unicore/IndicSyllabicCategory.txt
3734  * 39ff89e0a329e1ccce6d54fad8cf82e90926901928c0ca9b9a2ad5681f330dd9 lib/unicore/Jamo.txt
3735  * 9e06e9f35c6959fb91dcc7993f90d58523c3079bc62c6b25f828b4cdebc5d70c lib/unicore/LineBreak.txt
3736  * 14b3b677d33f95c51423dce6eef4a6a28b4b160451ecedee4b91edb6745cf4a3 lib/unicore/NameAliases.txt
3737  * db5745688affcdc0c3927a1ee0667018a96a7b24513f866d5235e98fef6c2436 lib/unicore/NamedSequences.txt
3738  * 6bddfdb850417a5bee6deff19290fd1b138589909afb50f5a049f343bf2c6722 lib/unicore/PropList.txt
3739  * eb755757e20b72b330b2948df3cf2ff7adb0e31bb060140dc09dafb132ace2cd lib/unicore/PropValueAliases.txt
3740  * 859d7225f2d2a460b3ccb1d61a7945f8cc219acdf5aa53b66b7a1e4bf6ebfc87 lib/unicore/PropertyAliases.txt
3741  * d37eedf63ff9c48bac863d5f76862373d6cf5269fd21253d499e2430d638c01d lib/unicore/ScriptExtensions.txt
3742  * 52db475c4ec445e73b0b16915448c357614946ad7062843c563e00d7535c6510 lib/unicore/Scripts.txt
3743  * c667b45908fd269af25fd55d2fc5bbc157fb1b77675936e25c513ce32e080334 lib/unicore/SpecialCasing.txt
3744  * 36018e68657fdcb3485f636630ffe8c8532e01c977703d2803f5b89d6c5feafb lib/unicore/UnicodeData.txt
3745  * 869ff43dd012f924d03c89fc268c88f0e7eea72f0228b91ca30455afdb84f8fd lib/unicore/VerticalOrientation.txt
3746  * ddc7d4d1f3838573b94fc5d83ff7217e63c47b22ae1cd40c5fe1a54efc15589b lib/unicore/auxiliary/GCBTest.txt
3747  * 97e79f1f8d9cd76d120f2420381a01abc00a7c78a2aa583fa3f9627264a99742 lib/unicore/auxiliary/GraphemeBreakProperty.txt
3748  * 488dbb6a7e1d0070d4aa7c175352c818ff6425172850d1b40c6177726658cb05 lib/unicore/auxiliary/LBTest.txt
3749  * 7e42dd749dbb94aa44b13faf9df6319d9a16ce2ea09a3a094fcfbb5962168040 lib/unicore/auxiliary/SBTest.txt
3750  * 7092ca4117cec891c25c7724132efc519e1dece01ae9fd6068035a9db04d526e lib/unicore/auxiliary/SentenceBreakProperty.txt
3751  * 8094b544ec1580c7e41ac0187805cc1aeb330a90301ec7505563e1a59318284e lib/unicore/auxiliary/WBTest.txt
3752  * 7716752aad296d4ab23ff4ed0a2746fc5328750ff84e9e7d6f3828ee9eaef742 lib/unicore/auxiliary/WordBreakProperty.txt
3753  * b597836124298b8f7fa076273802840cfc3271a25f5c397a082e120954b82c3c lib/unicore/emoji/emoji.txt
3754  * e5fe51acc74e3e83b4fb4c7b25f3c34491d6eb8095c9955d0712dafbca7b3c2b lib/unicore/extracted/DBidiClass.txt
3755  * cd0a14176d93bf440b77a582a0d678190fc0688b15442d4cfb250bf2e27956af lib/unicore/extracted/DBinaryProperties.txt
3756  * 12b0c3af9b600b49488d66545a3e7844ea980809627201bf9afeebe1c9f16f4e lib/unicore/extracted/DCombiningClass.txt
3757  * f76064b298cfbd715ba542e7894f7a507d32da2f011070d1d01df95cad9817d6 lib/unicore/extracted/DDecompositionType.txt
3758  * f9bef074cc916db57fece99d54a4505f8e7c7b17481619e3f0005211f7717d4b lib/unicore/extracted/DEastAsianWidth.txt
3759  * cde679c8461976ed40d7edf61ae98cbb947540831f06f5bc7da7decbf91a1420 lib/unicore/extracted/DGeneralCategory.txt
3760  * 9bb891831328713603a486a4a03df7f7987c3e1e8144a6d1ac71fd061ef3f732 lib/unicore/extracted/DJoinGroup.txt
3761  * e97c65bbea0a69d2fae6ec4182b09e519e13232e20bd804b3004edc0f36bb0d4 lib/unicore/extracted/DJoinType.txt
3762  * 43f6df50e4878f501b417e366b0ee097ae5ccb2d4ce942026bed3d62d78e7887 lib/unicore/extracted/DLineBreak.txt
3763  * a04502ebb36a45d83cbe48a7d8132ea8143edb7b3d34d0aa6afe4a9685049741 lib/unicore/extracted/DNumType.txt
3764  * 11075771b112e8e7ccf6ffa637c4c91eadc3ef3db0517b24e605df8fd3624239 lib/unicore/extracted/DNumValues.txt
3765  * 2b1f989c7326b58b7e66be2dfa016bddaeb877644ac49839301302a0e64b6a4b lib/unicore/mktables
3766  * c72bbdeda99714db1c8024d3311da4aef3c0db3b9b9f11455a7cfe10d5e9aba3 lib/unicore/version
3767  * 0a6b5ab33bb1026531f816efe81aea1a8ffcd34a27cbea37dd6a70a63d73c844 regen/charset_translations.pl
3768  * 1aa94679c695efd507b7e4491629dba1021b74c21a5324dfd3a582a5d654bd32 regen/regcharclass.pl
3769  * b2f896452d2b30da3e04800f478c60c1fd0b03d6b668689b020f1e3cf1f1cdd9 regen/regcharclass_multi_char_folds.pl
3770  * ex: set ro: */
3771