This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
6cc0334f7cfe1f974442d84dd92c9dc676c3fa90
[perl5.git] / regcharclass.h
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(((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(((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )\
38     : ( 0x85 == ((const U8*)s)[0] ) )                                       \
39 : ((e)-(s) > 1) ?                                                           \
40     ( ( inRANGE(((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(((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(((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(((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )\
62 : ((e)-(s) > 1) ?                                                           \
63     ( ( inRANGE(((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(((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(((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(((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(((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(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(((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )
112
113 /*** GENERATED CODE ***/
114 #define is_VERTWS_cp_high(cp)                                               \
115 ( 0x2028 == cp || 0x2029 == cp )
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(((const U8*)s)[2], 0x90, 0x99) || inRANGE(((const U8*)s)[2], 0xA1, 0xA6) ) ? 3 : 0 )\
127     : ( ( 0xBD == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x81, 0x86) ) ) ? 3 : 0 )\
128 : 0 )
129
130 /*** GENERATED CODE ***/
131 #define is_XDIGIT_cp_high(cp)                                               \
132 ( inRANGE(cp, 0xFF10, 0xFF19) || ( 0xFF19 < cp &&                           \
133 ( inRANGE(cp, 0xFF21, 0xFF26) || inRANGE(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(((const U8*)s)[2], 0x80, 0x8A) || inRANGE(((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(cp, 0x2000, 0x200A) || ( 0x200A < cp &&                           \
154 ( 0x2028 == cp || ( 0x2028 < cp &&                                          \
155 ( 0x2029 == cp || ( 0x2029 < cp &&                                          \
156 ( 0x202F == cp || ( 0x202F < cp &&                                          \
157 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) ) ) )
158
159 /*
160         NONCHAR: Non character code points
161
162         \p{_Perl_Nchar}
163 */
164 /*** GENERATED CODE ***/
165 #define is_NONCHAR_utf8_safe(s,e)                                           \
166 ( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xEF == ((const U8*)s)[0] ) ?\
167             ( ( 0xB7 == ((const U8*)s)[1] ) ?                               \
168                 ( ( inRANGE(((const U8*)s)[2], 0x90, 0xAF) ) ? 3 : 0 )      \
169             : ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0xBE, 0xBF) ) ) ? 3 : 0 )\
170         : ( 0xF0 == ((const U8*)s)[0] ) ?                                   \
171             ( ( ( ( ((const U8*)s)[1] == 0x9F || ( ( ((const U8*)s)[1] & 0xEF ) == 0xAF ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
172         : ( inRANGE(((const U8*)s)[0], 0xF1, 0xF3) ) ?                      \
173             ( ( ( ( ( ((const U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
174         : ( ( ( ( 0xF4 == ((const U8*)s)[0] ) && ( 0x8F == ((const U8*)s)[1] ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 ) : 0 )
175
176 /*
177         SURROGATE: Surrogate code points
178
179         \p{_Perl_Surrogate}
180 */
181 /*** GENERATED CODE ***/
182 #define is_SURROGATE_utf8_safe(s,e)                                         \
183 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xED == ((const U8*)s)[0] ) ) && ( inRANGE(((const U8*)s)[1], 0xA0, 0xBF) ) ) && ( inRANGE(((const U8*)s)[2], 0x80, 0xBF) ) ) ? 3 : 0 )
184
185 /*
186         QUOTEMETA: Meta-characters that \Q should quote
187
188         \p{_Perl_Quotemeta}
189 */
190 /*** GENERATED CODE ***/
191 #define is_QUOTEMETA_high(s)                                                \
192 ( ( 0xCD == ((const U8*)s)[0] ) ?                                           \
193     ( ( 0x8F == ((const U8*)s)[1] ) ? 2 : 0 )                               \
194 : ( 0xD8 == ((const U8*)s)[0] ) ?                                           \
195     ( ( 0x9C == ((const U8*)s)[1] ) ? 2 : 0 )                               \
196 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
197     ( ( 0x85 == ((const U8*)s)[1] ) ?                                       \
198         ( ( inRANGE(((const U8*)s)[2], 0x9F, 0xA0) ) ? 3 : 0 )              \
199     : ( 0x9A == ((const U8*)s)[1] ) ?                                       \
200         ( ( 0x80 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
201     : ( 0x9E == ((const U8*)s)[1] ) ?                                       \
202         ( ( inRANGE(((const U8*)s)[2], 0xB4, 0xB5) ) ? 3 : 0 )              \
203     : ( ( 0xA0 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x8B, 0x8E) ) ) ? 3 : 0 )\
204 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
205     ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
206         ( ( inRANGE(((const U8*)s)[2], 0x80, 0xBE) ) ? 3 : 0 )              \
207     : ( 0x81 == ((const U8*)s)[1] ) ?                                       \
208         ( ( inRANGE(((const U8*)s)[2], 0x81, 0x93) || inRANGE(((const U8*)s)[2], 0x95, 0xAF) ) ? 3 : 0 )\
209     : ( 0x86 == ((const U8*)s)[1] ) ?                                       \
210         ( ( inRANGE(((const U8*)s)[2], 0x90, 0xBF) ) ? 3 : 0 )              \
211     : ( inRANGE(((const U8*)s)[1], 0x87, 0x90) || inRANGE(((const U8*)s)[1], 0x94, 0x9C) || inRANGE(((const U8*)s)[1], 0x9F, 0xAF) || inRANGE(((const U8*)s)[1], 0xB8, 0xB9) ) ?\
212         3                                                                   \
213     : ( 0x91 == ((const U8*)s)[1] ) ?                                       \
214         ( ( inRANGE(((const U8*)s)[2], 0x80, 0x9F) ) ? 3 : 0 )              \
215     : ( 0x9D == ((const U8*)s)[1] ) ?                                       \
216         ( ( inRANGE(((const U8*)s)[2], 0x80, 0xB5) ) ? 3 : 0 )              \
217     : ( ( 0x9E == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x94, 0xBF) ) ) ? 3 : 0 )\
218 : ( 0xE3 == ((const U8*)s)[0] ) ?                                           \
219     ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
220         ( ( inRANGE(((const U8*)s)[2], 0x80, 0x83) || inRANGE(((const U8*)s)[2], 0x88, 0xA0) || 0xB0 == ((const U8*)s)[2] ) ? 3 : 0 )\
221     : ( ( 0x85 == ((const U8*)s)[1] ) && ( 0xA4 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
222 : ( 0xEF == ((const U8*)s)[0] ) ?                                           \
223     ( ( 0xB4 == ((const U8*)s)[1] ) ?                                       \
224         ( ( inRANGE(((const U8*)s)[2], 0xBE, 0xBF) ) ? 3 : 0 )              \
225     : ( 0xB8 == ((const U8*)s)[1] ) ?                                       \
226         ( ( inRANGE(((const U8*)s)[2], 0x80, 0x8F) ) ? 3 : 0 )              \
227     : ( 0xB9 == ((const U8*)s)[1] ) ?                                       \
228         ( ( inRANGE(((const U8*)s)[2], 0x85, 0x86) ) ? 3 : 0 )              \
229     : ( 0xBB == ((const U8*)s)[1] ) ?                                       \
230         ( ( 0xBF == ((const U8*)s)[2] ) ? 3 : 0 )                           \
231     : ( 0xBE == ((const U8*)s)[1] ) ?                                       \
232         ( ( 0xA0 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
233     : ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0xB0, 0xB8) ) ) ? 3 : 0 )\
234 : ( 0xF0 == ((const U8*)s)[0] ) ?                                           \
235     ( ( 0x9B == ((const U8*)s)[1] ) ?                                       \
236         ( ( ( 0xB2 == ((const U8*)s)[2] ) && ( inRANGE(((const U8*)s)[3], 0xA0, 0xA3) ) ) ? 4 : 0 )\
237     : ( ( ( 0x9D == ((const U8*)s)[1] ) && ( 0x85 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0xB3, 0xBA) ) ) ? 4 : 0 )\
238 : ( ( 0xF3 == ((const U8*)s)[0] ) && ( 0xA0 == ((const U8*)s)[1] ) ) ? 4 : 0 )
239
240 /*
241         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
242
243         &regcharclass_multi_char_folds::multi_char_folds('u', 'a')
244 */
245 /*** GENERATED CODE ***/
246 #define is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e)                             \
247 ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                                 \
248             ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
249         : ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )
250
251
252 /*** GENERATED CODE ***/
253 #define is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e)                             \
254 ( ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                                 \
255         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
256     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
257         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
258     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
259         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
260     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
261         ( ( inRANGE(((const U8*)s)[1], 'S', 'T') || inRANGE(((const U8*)s)[1], 's', 't') ) ? 2\
262         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
263     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
264         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
265     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
266         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
267     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
268         ( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
269             ( ( inRANGE(((const U8*)s)[2], 'S', 'T') || inRANGE(((const U8*)s)[2], 's', 't') ) ? 3\
270             : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
271         : 0 )                                                               \
272     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
273         ( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
274     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
275         ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
276             ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
277         : ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
278             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
279                 ( ( 0x82 == ((const U8*)s)[3] ) ?                           \
280                     ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
281                 : 0 )                                                       \
282             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
283         : ( 0xB9 == ((const U8*)s)[1] ) ?                                   \
284             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
285                 ( ( 0x88 == ((const U8*)s)[3] ) ?                           \
286                     ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
287                         ( ( inRANGE(((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
288                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
289                 : 0 )                                                       \
290             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
291         : 0 )                                                               \
292     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
293         ( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
294             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
295         : ( 0x85 == ((const U8*)s)[1] ) ?                                   \
296             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
297                 ( ( 0x88 == ((const U8*)s)[3] ) ?                           \
298                     ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
299                         ( ( inRANGE(((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
300                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
301                 : ( 0x93 == ((const U8*)s)[3] ) ?                           \
302                     ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
303                         ( ( inRANGE(((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 4 )\
304                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
305                 : 0 )                                                       \
306             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
307         : ( 0x89 == ((const U8*)s)[1] ) ?                                   \
308             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
309                 ( ( 0x82 == ((const U8*)s)[3] ) ?                           \
310                     ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
311                 : 0 )                                                       \
312             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
313         : ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
314     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
315         ( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
316             ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
317         : ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
318             ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
319         : ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
320     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
321         ( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
322             ( ( ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
323         : ( ( ( ( 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 )\
324     : 0 )
325
326
327 /*** GENERATED CODE ***/
328 #define is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e)                             \
329 ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                                 \
330         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
331     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
332         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
333             ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
334         : ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
335     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
336         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
337     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
338         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
339     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
340         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
341     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
342         ( ( inRANGE(((const U8*)s)[1], 'S', 'T') || inRANGE(((const U8*)s)[1], 's', 't') ) ? 2\
343         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
344     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
345         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
346     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
347         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
348     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
349         ( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
350             ( ( inRANGE(((const U8*)s)[2], 'S', 'T') || inRANGE(((const U8*)s)[2], 's', 't') ) ? 3\
351             : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
352         : 0 )                                                               \
353     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
354         ( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
355     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
356         ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
357             ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
358         : ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
359             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
360                 ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
361             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
362         : ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
363     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
364         ( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
365             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
366         : ( 0x85 == ((const U8*)s)[1] ) ?                                   \
367             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
368                 ( ( 0x93 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
369             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
370         : ( 0x89 == ((const U8*)s)[1] ) ?                                   \
371             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
372                 ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
373             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
374         : ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
375     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
376         ( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
377             ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
378         : ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
379             ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
380         : ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
381     : 0 )
382
383
384 /*** GENERATED CODE ***/
385 #define is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e)                             \
386 ( ((e)-(s) > 2) ?                                                           \
387     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
388         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
389     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
390         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
391             ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
392         : ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
393     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
394         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
395     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
396         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
397     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
398         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
399     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
400         ( ( inRANGE(((const U8*)s)[1], 'S', 'T') || inRANGE(((const U8*)s)[1], 's', 't') ) ? 2\
401         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
402     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
403         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
404     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
405         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
406     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
407         ( ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 'S', 'T') || inRANGE(((const U8*)s)[2], 's', 't') ) ) ? 3 : 0 )\
408     : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0xBC == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
409 : ((e)-(s) > 1) ?                                                           \
410     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
411         ( ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
412     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) && ( inRANGE(((const U8*)s)[1], 'S', 'T') || inRANGE(((const U8*)s)[1], 's', 't') ) ) ? 2 : 0 )\
413 : 0 )
414
415
416 /*** GENERATED CODE ***/
417 #define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
418 ( ((e)-(s) > 5) ?                                                           \
419     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
420         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
421     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) )\
422 : ((e)-(s) > 4) ?                                                           \
423     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
424         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
425     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
426         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
427             ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
428         : ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
429     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
430         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
431     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
432         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
433     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
434         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
435     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
436         ( ( inRANGE(((const U8*)s)[1], 'S', 'T') || inRANGE(((const U8*)s)[1], 's', 't') ) ? 2\
437         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
438     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
439         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
440     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
441         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
442     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
443         ( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
444             ( ( inRANGE(((const U8*)s)[2], 'S', 'T') || inRANGE(((const U8*)s)[2], 's', 't') ) ? 3\
445             : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
446         : 0 )                                                               \
447     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
448         ( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
449     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
450         ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
451             ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
452         : ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
453             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
454                 ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
455             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
456         : ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
457     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
458         ( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
459             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
460         : ( 0x85 == ((const U8*)s)[1] ) ?                                   \
461             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
462                 ( ( 0x93 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
463             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
464         : ( 0x89 == ((const U8*)s)[1] ) ?                                   \
465             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
466                 ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
467             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
468         : ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
469     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
470         ( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
471             ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
472         : ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
473             ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
474         : ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
475     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
476         ( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
477             ( ( ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
478         : ( ( ( ( 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 )\
479     : 0 )                                                                   \
480 : ((e)-(s) > 3) ? is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e) )
481
482 /*
483         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
484
485         &regcharclass_multi_char_folds::multi_char_folds('l', 'a')
486 */
487 /*** GENERATED CODE ***/
488 #define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
489 ( ((e)-(s) > 2) ?                                                           \
490     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
491         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
492             ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
493         : ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
494     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) && ( inRANGE(((const U8*)s)[1], 'S', 'T') || inRANGE(((const U8*)s)[1], 's', 't') ) ) ? 2 : 0 )\
495 : ((e)-(s) > 1) ?                                                           \
496     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
497         ( ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
498     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) && ( inRANGE(((const U8*)s)[1], 'S', 'T') || inRANGE(((const U8*)s)[1], 's', 't') ) ) ? 2 : 0 )\
499 : 0 )
500
501 /*
502         THREE_CHAR_FOLD: A three-character multi-char fold
503
504         &regcharclass_multi_char_folds::multi_char_folds('u', '3')
505 */
506 /*** GENERATED CODE ***/
507 #define is_THREE_CHAR_FOLD_utf8_safe(s,e)                                   \
508 ( ((e)-(s) > 5) ?                                                           \
509     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
510         ( ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) && ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ) ? 3 : 0 )\
511     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
512         ( ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
513             ( ( ( ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) && ( 0xCE == ((const U8*)s)[4] ) ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
514         : ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCC == ((const U8*)s)[2] ) ) && ( 0x88 == ((const U8*)s)[3] ) ) ? ( ( 0xCC == ((const U8*)s)[4] ) ?\
515                         ( ( inRANGE(((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
516                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
517     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
518         ( ( 0x85 == ((const U8*)s)[1] ) ?                                   \
519             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x88 == ((const U8*)s)[3] || 0x93 == ((const U8*)s)[3] ) ) ? ( ( 0xCC == ((const U8*)s)[4] ) ?\
520                         ( ( inRANGE(((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
521                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
522         : ( ( ( ( ( 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 )\
523     : 0 )                                                                   \
524 : ( ( ( ((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 )
525
526 /*
527         THREE_CHAR_FOLD: A three-character multi-char fold
528
529         &regcharclass_multi_char_folds::multi_char_folds('l', '3')
530 */
531 /*** GENERATED CODE ***/
532 #define is_THREE_CHAR_FOLD_latin1_safe(s,e)                                 \
533 ( ( ( ( ( ((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 )
534
535 /*
536         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
537
538         &regcharclass_multi_char_folds::multi_char_folds('u', 'h')
539 */
540 /*** GENERATED CODE ***/
541 #define is_THREE_CHAR_FOLD_HEAD_utf8_safe(s,e)                              \
542 ( ((e)-(s) > 3) ?                                                           \
543     ( ( ( ( ((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\
544     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
545         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
546     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
547         ( ( 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )                           \
548     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
549         ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                           \
550     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
551         ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ? 2                      \
552         : ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
553             ( ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
554         : ( 0xB9 == ((const U8*)s)[1] ) ?                                   \
555             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x88 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
556         : 0 )                                                               \
557     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
558         ( ( 0x81 == ((const U8*)s)[1] || 0x8E == ((const U8*)s)[1] ) ? 2    \
559         : ( 0x85 == ((const U8*)s)[1] ) ?                                   \
560             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x88 == ((const U8*)s)[3] || 0x93 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
561         : ( 0x89 == ((const U8*)s)[1] ) ?                                   \
562             ( ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
563         : 0 )                                                               \
564     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
565         ( ( 0xA5 == ((const U8*)s)[1] || 0xB4 == ((const U8*)s)[1] || 0xBE == ((const U8*)s)[1] ) ? 2 : 0 )\
566     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
567         ( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
568             ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) ? 3 : 0 )            \
569         : ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) ? 3 : 0 )\
570     : 0 )                                                                   \
571 : ((e)-(s) > 2) ?                                                           \
572     ( ( ( ( ((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\
573     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
574         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
575     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
576         ( ( 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )                           \
577     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
578         ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                           \
579     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
580         ( ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) || ( ( ((const U8*)s)[1] & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0xB7 ) ? 2 : 0 )\
581     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
582         ( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x81 ) || ((const U8*)s)[1] == 0x89 || ((const U8*)s)[1] == 0x8E ) ? 2 : 0 )\
583     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
584         ( ( 0xA5 == ((const U8*)s)[1] || 0xB4 == ((const U8*)s)[1] || 0xBE == ((const U8*)s)[1] ) ? 2 : 0 )\
585     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
586         ( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
587             ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) ? 3 : 0 )            \
588         : ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) ? 3 : 0 )\
589     : 0 )                                                                   \
590 : ((e)-(s) > 1) ?                                                           \
591     ( ( ( ( ((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\
592     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
593         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
594     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
595         ( ( 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )                           \
596     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
597         ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                           \
598     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
599         ( ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) || ( ( ((const U8*)s)[1] & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0xB7 ) ? 2 : 0 )\
600     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
601         ( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x81 ) || ((const U8*)s)[1] == 0x89 || ((const U8*)s)[1] == 0x8E ) ? 2 : 0 )\
602     : ( ( 0xD5 == ((const U8*)s)[0] ) && ( 0xA5 == ((const U8*)s)[1] || 0xB4 == ((const U8*)s)[1] || 0xBE == ((const U8*)s)[1] ) ) ? 2 : 0 )\
603 : ((e)-(s) > 0) ?                                                           \
604     ( ( ( ((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' ) )\
605 : 0 )
606
607 /*
608         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
609
610         &regcharclass_multi_char_folds::multi_char_folds('l', 'h')
611 */
612 /*** GENERATED CODE ***/
613 #define is_THREE_CHAR_FOLD_HEAD_latin1_safe(s,e)                            \
614 ( ((e)-(s) > 1) ?                                                           \
615     ( ( ( ( ((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\
616     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
617         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
618     : 0 )                                                                   \
619 : ((e)-(s) > 0) ?                                                           \
620     ( ( ( ((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' ) )\
621 : 0 )
622
623 /*
624         FOLDS_TO_MULTI: characters that fold to multi-char strings
625
626         \p{_Perl_Folds_To_Multi_Char}
627 */
628 /*** GENERATED CODE ***/
629 #define is_FOLDS_TO_MULTI_utf8(s)                                           \
630 ( ( 0xC3 == ((const U8*)s)[0] ) ?                                           \
631     ( ( 0x9F == ((const U8*)s)[1] ) ? 2 : 0 )                               \
632 : ( 0xC4 == ((const U8*)s)[0] || 0xC7 == ((const U8*)s)[0] ) ?              \
633     ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
634 : ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
635     ( ( 0x89 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
636 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
637     ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x90 ) ? 2 : 0 )                    \
638 : ( 0xD6 == ((const U8*)s)[0] ) ?                                           \
639     ( ( 0x87 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
640 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
641     ( ( 0xBA == ((const U8*)s)[1] ) ?                                       \
642         ( ( inRANGE(((const U8*)s)[2], 0x96, 0x9A) || 0x9E == ((const U8*)s)[2] ) ? 3 : 0 )\
643     : ( 0xBD == ((const U8*)s)[1] ) ?                                       \
644         ( ( ( ((const U8*)s)[2] & 0xF9 ) == 0x90 ) ? 3 : 0 )                \
645     : ( 0xBE == ((const U8*)s)[1] ) ?                                       \
646         ( ( inRANGE(((const U8*)s)[2], 0x80, 0xAF) || inRANGE(((const U8*)s)[2], 0xB2, 0xB4) || inRANGE(((const U8*)s)[2], 0xB6, 0xB7) || 0xBC == ((const U8*)s)[2] ) ? 3 : 0 )\
647     : ( ( 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 )\
648 : ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x80, 0x86) || inRANGE(((const U8*)s)[2], 0x93, 0x97) ) ) ? 3 : 0 )
649
650 /*
651         PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale
652
653         \p{_Perl_Problematic_Locale_Folds}
654 */
655 /*** GENERATED CODE ***/
656 #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
657 ( ( ((const U8*)s)[0] <= 0x7F ) ? 1                                         \
658 : ( inRANGE(((const U8*)s)[0], 0xC2, 0xC3) ) ?                              \
659     2                                                                       \
660 : ( 0xC4 == ((const U8*)s)[0] ) ?                                           \
661     ( ( inRANGE(((const U8*)s)[1], 0xB0, 0xB1) ) ? 2 : 0 )                  \
662 : ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
663     ( ( 0x89 == ((const U8*)s)[1] || 0xB8 == ((const U8*)s)[1] || 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )\
664 : ( 0xC7 == ((const U8*)s)[0] ) ?                                           \
665     ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
666 : ( 0xCC == ((const U8*)s)[0] ) ?                                           \
667     ( ( 0x87 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
668 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
669     ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 )                    \
670 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
671     ( ( ( 0xBA == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x96, 0x9A) || 0x9E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
672 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
673     ( ( ( 0x84 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0xAA, 0xAB) ) ) ? 3 : 0 )\
674 : ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x80, 0x86) ) ) ? 3 : 0 )
675
676 /*** GENERATED CODE ***/
677 #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
678 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
679 ( 0x130 == cp || ( 0x130 < cp &&                                            \
680 ( 0x131 == cp || ( 0x131 < cp &&                                            \
681 ( 0x149 == cp || ( 0x149 < cp &&                                            \
682 ( 0x178 == cp || ( 0x178 < cp &&                                            \
683 ( 0x17F == cp || ( 0x17F < cp &&                                            \
684 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
685 ( 0x307 == cp || ( 0x307 < cp &&                                            \
686 ( 0x39C == cp || ( 0x39C < cp &&                                            \
687 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
688 ( inRANGE(cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&                           \
689 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
690 ( 0x212A == cp || ( 0x212A < cp &&                                          \
691 ( 0x212B == cp || inRANGE(cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
692
693 /*
694         PROBLEMATIC_LOCALE_FOLDEDS_START: The first folded character of folds which are problematic under locale
695
696         \p{_Perl_Problematic_Locale_Foldeds_Start}
697 */
698 /*** GENERATED CODE ***/
699 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
700 ( ( ((const U8*)s)[0] <= 0x7F ) ? 1                                         \
701 : ( inRANGE(((const U8*)s)[0], 0xC2, 0xC3) ) ?                              \
702     2                                                                       \
703 : ( 0xC4 == ((const U8*)s)[0] ) ?                                           \
704     ( ( inRANGE(((const U8*)s)[1], 0xB0, 0xB1) ) ? 2 : 0 )                  \
705 : ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
706     ( ( 0x89 == ((const U8*)s)[1] || 0xB8 == ((const U8*)s)[1] || 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )\
707 : ( 0xC7 == ((const U8*)s)[0] ) ?                                           \
708     ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
709 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
710     ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                               \
711 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
712     ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 )                    \
713 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
714     ( ( ( 0xBA == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x96, 0x9A) || 0x9E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
715 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
716     ( ( ( 0x84 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0xAA, 0xAB) ) ) ? 3 : 0 )\
717 : ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x80, 0x86) ) ) ? 3 : 0 )
718
719 /*** GENERATED CODE ***/
720 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
721 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
722 ( 0x130 == cp || ( 0x130 < cp &&                                            \
723 ( 0x131 == cp || ( 0x131 < cp &&                                            \
724 ( 0x149 == cp || ( 0x149 < cp &&                                            \
725 ( 0x178 == cp || ( 0x178 < cp &&                                            \
726 ( 0x17F == cp || ( 0x17F < cp &&                                            \
727 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
728 ( 0x2BC == cp || ( 0x2BC < cp &&                                            \
729 ( 0x39C == cp || ( 0x39C < cp &&                                            \
730 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
731 ( inRANGE(cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&                           \
732 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
733 ( 0x212A == cp || ( 0x212A < cp &&                                          \
734 ( 0x212B == cp || inRANGE(cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
735
736 /*
737         PATWS: pattern white space
738
739         \p{_Perl_PatWS}
740 */
741 /*** GENERATED CODE ***/
742 #define is_PATWS_safe(s,e,is_utf8)                                          \
743 ( ( LIKELY((e) > (s)) ) ?                                                   \
744     ( ( inRANGE(((const U8*)s)[0], '\t', '\r') || ' ' == ((const U8*)s)[0] ) ? 1\
745     : (! is_utf8 ) ?                                                        \
746             ( 0x85 == ((const U8*)s)[0] )                                   \
747         : ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ?                          \
748             ( ( 0xC2 == ((const U8*)s)[0] ) ?                               \
749                 ( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                   \
750             : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x8E, 0x8F) || inRANGE(((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )\
751         : 0 )                                                               \
752 : 0 )
753
754 /*
755         HANGUL_ED: Hangul syllables whose first character is \xED
756
757         0xD000 - 0xD7FF
758 */
759 /*** GENERATED CODE ***/
760 #define is_HANGUL_ED_utf8_safe(s,e)                                         \
761 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xED == ((const U8*)s)[0] ) ) && ( inRANGE(((const U8*)s)[1], 0x80, 0x9F) ) ) && ( inRANGE(((const U8*)s)[2], 0x80, 0xBF) ) ) ? 3 : 0 )
762
763 #endif  /* ASCII/Latin1 */
764
765 #if 'A' == 193 /* EBCDIC 1047 */ \
766      && '\\' == 224 && '[' == 173 && ']' == 189 && '{' == 192 && '}' == 208 \
767      && '^' == 95 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
768      && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
769 /*
770         LNBREAK: Line Break: \R
771
772         "\x0D\x0A"      # CRLF - Network (Windows) line ending
773         \p{VertSpace}
774 */
775 /*** GENERATED CODE ***/
776 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
777 ( ((e)-(s) > 2) ?                                                           \
778     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
779     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
780         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
781     : ( ( ( ( is_utf8 ) && ( 0xCA == ((const U8*)s)[0] ) ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
782 : ((e)-(s) > 1) ?                                                           \
783     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
784     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
785         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
786     : 0 )                                                                   \
787 : ((e)-(s) > 0) ?                                                           \
788     ( inRANGE(((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
789 : 0 )
790
791 /*** GENERATED CODE ***/
792 #define is_LNBREAK_utf8_safe(s,e)                                           \
793 ( ((e)-(s) > 2) ?                                                           \
794     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
795     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
796         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
797     : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
798 : ((e)-(s) > 1) ?                                                           \
799     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
800     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
801         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
802     : 0 )                                                                   \
803 : ((e)-(s) > 0) ?                                                           \
804     ( inRANGE(((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
805 : 0 )
806
807 /*** GENERATED CODE ***/
808 #define is_LNBREAK_latin1_safe(s,e)                                         \
809 ( ((e)-(s) > 1) ?                                                           \
810     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
811     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
812         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
813     : 0 )                                                                   \
814 : ((e)-(s) > 0) ?                                                           \
815     ( inRANGE(((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
816 : 0 )
817
818 /*
819         HORIZWS: Horizontal Whitespace: \h \H
820
821         \p{HorizSpace}
822 */
823 /*** GENERATED CODE ***/
824 #define is_HORIZWS_high(s)                                                  \
825 ( ( 0xBC == ((const U8*)s)[0] ) ?                                           \
826     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
827 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
828     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
829         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
830     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
831         ( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
832     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
833 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
834
835 /*** GENERATED CODE ***/
836 #define is_HORIZWS_cp_high(cp)                                              \
837 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
838 ( inRANGE(cp, 0x2000, 0x200A) || ( 0x200A < cp &&                           \
839 ( 0x202F == cp || ( 0x202F < cp &&                                          \
840 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) )
841
842 /*
843         VERTWS: Vertical Whitespace: \v \V
844
845         \p{VertSpace}
846 */
847 /*** GENERATED CODE ***/
848 #define is_VERTWS_high(s)                                                   \
849 ( ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )
850
851 /*** GENERATED CODE ***/
852 #define is_VERTWS_cp_high(cp)                                               \
853 ( 0x2028 == cp || 0x2029 == cp )
854
855 /*
856         XDIGIT: Hexadecimal digits
857
858         \p{XDigit}
859 */
860 /*** GENERATED CODE ***/
861 #define is_XDIGIT_high(s)                                                   \
862 ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x73 == ((const U8*)s)[1] ) ) ? ( ( 0x67 == ((const U8*)s)[2] ) ?\
863             ( ( inRANGE(((const U8*)s)[3], 0x57, 0x59) || inRANGE(((const U8*)s)[3], 0x62, 0x68) ) ? 4 : 0 )\
864         : ( ( inRANGE(((const U8*)s)[2], 0x68, 0x69) ) && ( inRANGE(((const U8*)s)[3], 0x42, 0x47) ) ) ? 4 : 0 ) : 0 )
865
866 /*** GENERATED CODE ***/
867 #define is_XDIGIT_cp_high(cp)                                               \
868 ( inRANGE(cp, 0xFF10, 0xFF19) || ( 0xFF19 < cp &&                           \
869 ( inRANGE(cp, 0xFF21, 0xFF26) || inRANGE(cp, 0xFF41, 0xFF46) ) ) )
870
871 /*
872         XPERLSPACE: \p{XPerlSpace}
873
874         \p{XPerlSpace}
875 */
876 /*** GENERATED CODE ***/
877 #define is_XPERLSPACE_high(s)                                               \
878 ( ( 0xBC == ((const U8*)s)[0] ) ?                                           \
879     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
880 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
881     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
882         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
883     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
884         ( ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
885     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
886 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
887
888 /*** GENERATED CODE ***/
889 #define is_XPERLSPACE_cp_high(cp)                                           \
890 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
891 ( inRANGE(cp, 0x2000, 0x200A) || ( 0x200A < cp &&                           \
892 ( 0x2028 == cp || ( 0x2028 < cp &&                                          \
893 ( 0x2029 == cp || ( 0x2029 < cp &&                                          \
894 ( 0x202F == cp || ( 0x202F < cp &&                                          \
895 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) ) ) )
896
897 /*
898         NONCHAR: Non character code points
899
900         \p{_Perl_Nchar}
901 */
902 /*** GENERATED CODE ***/
903 #define is_NONCHAR_utf8_safe(s,e)                                           \
904 ( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\
905             ( ( 0x73 == ((const U8*)s)[1] ) ?                               \
906                 ( ( 0x55 == ((const U8*)s)[2] ) ?                           \
907                     ( ( inRANGE(((const U8*)s)[3], 0x57, 0x59) || inRANGE(((const U8*)s)[3], 0x62, 0x6A) || inRANGE(((const U8*)s)[3], 0x70, 0x73) ) ? 4 : 0 )\
908                 : ( 0x56 == ((const U8*)s)[2] ) ?                           \
909                     ( ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
910                 : ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE(((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )\
911             : 0 )                                                           \
912         : ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ?\
913             ( ( ( ( 0x73 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )\
914         : ( 0xED == ((const U8*)s)[0] ) ?                                   \
915             ( ( ( ( ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x62 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x64 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x68 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x71 ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE(((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 )\
916         : ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE(((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 ) : 0 )
917
918 /*
919         SURROGATE: Surrogate code points
920
921         \p{_Perl_Surrogate}
922 */
923 /*** GENERATED CODE ***/
924 #define is_SURROGATE_utf8_safe(s,e)                                         \
925 ( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( inRANGE(((const U8*)s)[1], 0x65, 0x66) ) ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x59) || inRANGE(((const U8*)s)[3], 0x62, 0x6A) || inRANGE(((const U8*)s)[3], 0x70, 0x73) ) ) ? 4 : 0 )
926
927 /*
928         QUOTEMETA: Meta-characters that \Q should quote
929
930         \p{_Perl_Quotemeta}
931 */
932 /*** GENERATED CODE ***/
933 #define is_QUOTEMETA_high(s)                                                \
934 ( ( 0xB1 == ((const U8*)s)[0] ) ?                                           \
935     ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
936 : ( 0xB8 == ((const U8*)s)[0] ) ?                                           \
937     ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
938 : ( 0xBB == ((const U8*)s)[0] ) ?                                           \
939     ( ( 0x51 == ((const U8*)s)[1] ) ?                                       \
940         ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
941     : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
942 : ( 0xBC == ((const U8*)s)[0] ) ?                                           \
943     ( ( 0x63 == ((const U8*)s)[1] ) ?                                       \
944         ( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
945     : ( ( 0x71 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x63, 0x64) ) ) ? 3 : 0 )\
946 : ( 0xBE == ((const U8*)s)[0] ) ?                                           \
947     ( ( ( 0x41 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x52, 0x55) ) ) ? 3 : 0 )\
948 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
949     ( ( 0x41 == ((const U8*)s)[1] || inRANGE(((const U8*)s)[1], 0x54, 0x59) || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x73) ) ?\
950         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
951     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
952         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
953     : ( 0x43 == ((const U8*)s)[1] ) ?                                       \
954         ( ( inRANGE(((const U8*)s)[2], 0x42, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x62 == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x64, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
955     : ( 0x44 == ((const U8*)s)[1] ) ?                                       \
956         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x56) ) ? 3 : 0 )\
957     : ( ( 0x53 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x57, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
958 : ( 0xCB == ((const U8*)s)[0] ) ?                                           \
959     ( ( inRANGE(((const U8*)s)[1], 0x41, 0x43) || inRANGE(((const U8*)s)[1], 0x49, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || inRANGE(((const U8*)s)[1], 0x62, 0x69) || inRANGE(((const U8*)s)[1], 0x71, 0x73) ) ?\
960         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
961     : ( 0x6A == ((const U8*)s)[1] ) ?                                       \
962         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x64) ) ? 3 : 0 )\
963     : ( ( 0x70 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x63, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
964 : ( 0xCC == ((const U8*)s)[0] ) ?                                           \
965     ( ( ( inRANGE(((const U8*)s)[1], 0x41, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x73) ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
966 : ( 0xCD == ((const U8*)s)[0] ) ?                                           \
967     ( ( ( inRANGE(((const U8*)s)[1], 0x57, 0x59) || 0x62 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
968 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
969     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
970         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x44) || inRANGE(((const U8*)s)[2], 0x49, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
971     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
972         ( ( 0x41 == ((const U8*)s)[2] || 0x57 == ((const U8*)s)[2] ) ? 3 : 0 )\
973     : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
974 : ( 0xDD == ((const U8*)s)[0] ) ?                                           \
975     ( ( 0x73 == ((const U8*)s)[1] ) ?                                       \
976         ( ( 0x4A == ((const U8*)s)[2] ) ?                                   \
977             ( ( inRANGE(((const U8*)s)[3], 0x72, 0x73) ) ? 4 : 0 )          \
978         : ( 0x57 == ((const U8*)s)[2] ) ?                                   \
979             ( ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
980         : ( 0x59 == ((const U8*)s)[2] ) ?                                   \
981             ( ( inRANGE(((const U8*)s)[3], 0x46, 0x47) ) ? 4 : 0 )          \
982         : ( 0x66 == ((const U8*)s)[2] ) ?                                   \
983             ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
984         : ( 0x71 == ((const U8*)s)[2] ) ?                                   \
985             ( ( 0x41 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
986         : ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE(((const U8*)s)[3], 0x57, 0x59) || inRANGE(((const U8*)s)[3], 0x62, 0x67) ) ) ? 4 : 0 )\
987     : 0 )                                                                   \
988 : ( 0xDF == ((const U8*)s)[0] ) ?                                           \
989     ( ( 0x56 == ((const U8*)s)[1] ) ?                                       \
990         ( ( ( 0x46 == ((const U8*)s)[2] ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x44) ) ) ? 4 : 0 )\
991     : ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x62, 0x69) ) ) ? 4 : 0 )\
992 : ( ( ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x44) ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x59) || inRANGE(((const U8*)s)[3], 0x62, 0x6A) || inRANGE(((const U8*)s)[3], 0x70, 0x73) ) ) && ( inRANGE(((const U8*)s)[4], 0x41, 0x4A) || inRANGE(((const U8*)s)[4], 0x51, 0x59) || inRANGE(((const U8*)s)[4], 0x62, 0x6A) || inRANGE(((const U8*)s)[4], 0x70, 0x73) ) ) ? 5 : 0 )
993
994 /*
995         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
996
997         &regcharclass_multi_char_folds::multi_char_folds('u', 'a')
998 */
999 /*** GENERATED CODE ***/
1000 #define is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e)                             \
1001 ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )
1002
1003
1004 /*** GENERATED CODE ***/
1005 #define is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e)                             \
1006 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                                 \
1007         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1008     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1009         ( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
1010             ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
1011                 ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1012             : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1013         : 0 )                                                               \
1014     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1015         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1016     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1017         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1018             ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1019         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1020     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1021         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1022     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1023         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1024     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1025         ( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1026     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1027         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
1028             ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1029         : ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1030             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1031                 ( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1032                     ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1033                 : 0 )                                                       \
1034             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1035         : ( 0x68 == ((const U8*)s)[1] ) ?                                   \
1036             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1037                 ( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1038                     ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1039                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1040                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1041                 : 0 )                                                       \
1042             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1043         : 0 )                                                               \
1044     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1045         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1046             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1047         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1048             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1049                 ( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1050                     ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1051                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1052                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1053                 : ( 0x62 == ((const U8*)s)[3] ) ?                           \
1054                     ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1055                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 4 )\
1056                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1057                 : 0 )                                                       \
1058             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1059         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1060             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1061                 ( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1062                     ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1063                 : 0 )                                                       \
1064             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1065         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1066     : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
1067         ( ( 0x52 == ((const U8*)s)[1] ) ?                                   \
1068             ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
1069                 ( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1070             : ( 0x63 == ((const U8*)s)[2] ) ?                               \
1071                 ( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x46 == ((const U8*)s)[5] || 0x52 == ((const U8*)s)[5] || 0x54 == ((const U8*)s)[5] || 0x65 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1072             : ( ( ( ( 0x72 == ((const U8*)s)[2] ) && ( 0xB8 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x65 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1073         : 0 )                                                               \
1074     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1075         ( ( inRANGE(((const U8*)s)[1], 0x67, 0x68) ) ?                      \
1076             ( ( ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1077         : ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1078     : 0 )
1079
1080
1081 /*** GENERATED CODE ***/
1082 #define is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e)                             \
1083 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                                 \
1084         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1085     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1086         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1087             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1088         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1089     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1090         ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1091     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1092         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1093     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1094         ( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
1095             ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
1096                 ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1097             : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1098         : 0 )                                                               \
1099     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1100         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1101     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1102         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1103             ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1104         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1105     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1106         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1107     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1108         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1109     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1110         ( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1111     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1112         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
1113             ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1114         : ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1115             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1116                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1117             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1118         : ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1119     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1120         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1121             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1122         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1123             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1124                 ( ( 0x62 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1125             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1126         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1127             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1128                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1129             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1130         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1131     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1132         ( ( inRANGE(((const U8*)s)[1], 0x67, 0x68) ) ?                      \
1133             ( ( ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1134         : ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1135     : 0 )
1136
1137
1138 /*** GENERATED CODE ***/
1139 #define is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e)                             \
1140 ( ((e)-(s) > 3) ?                                                           \
1141     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1142         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1143     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1144         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1145             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1146         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1147     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1148         ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1149     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1150         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1151     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1152         ( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
1153             ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
1154                 ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1155             : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1156         : 0 )                                                               \
1157     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1158         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1159     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1160         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1161             ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1162         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1163     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1164         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1165     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1166         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1167     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1168         ( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1169     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1170         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
1171             ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1172         : ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1173             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1174                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1175             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1176         : ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1177     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1178         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1179             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1180         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1181             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1182                 ( ( 0x62 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1183             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1184         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1185             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1186                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1187             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1188         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1189     : 0 )                                                                   \
1190 : ((e)-(s) > 2) ?                                                           \
1191     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1192         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1193     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1194         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1195             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1196         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1197     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1198         ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1199     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1200         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1201     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1202         ( ( ( 0x73 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ) ? 3 : 0 )\
1203     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1204         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1205     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1206         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1207             ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1208         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1209     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1210         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1211     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1212         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1213     : ( ( ( 0xAB == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1214 : ((e)-(s) > 1) ?                                                           \
1215     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1216         ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1217     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
1218 : 0 )
1219
1220
1221 /*** GENERATED CODE ***/
1222 #define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
1223 ( ((e)-(s) > 5) ?                                                           \
1224     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1225         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1226     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1227         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1228             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1229         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1230     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) )\
1231 : ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e) )
1232
1233 /*
1234         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
1235
1236         &regcharclass_multi_char_folds::multi_char_folds('l', 'a')
1237 */
1238 /*** GENERATED CODE ***/
1239 #define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
1240 ( ((e)-(s) > 2) ?                                                           \
1241     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1242         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1243             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1244         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1245     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
1246 : ((e)-(s) > 1) ?                                                           \
1247     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1248         ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1249     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
1250 : 0 )
1251
1252 /*
1253         THREE_CHAR_FOLD: A three-character multi-char fold
1254
1255         &regcharclass_multi_char_folds::multi_char_folds('u', '3')
1256 */
1257 /*** GENERATED CODE ***/
1258 #define is_THREE_CHAR_FOLD_utf8_safe(s,e)                                   \
1259 ( ((e)-(s) > 5) ?                                                           \
1260     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1261         ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )\
1262     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1263         ( ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1264             ( ( ( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB4 == ((const U8*)s)[4] ) ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1265         : ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x49 == ((const U8*)s)[3] ) ) ? ( ( 0xAF == ((const U8*)s)[4] ) ?\
1266                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1267                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
1268     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1269         ( ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1270             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x62 == ((const U8*)s)[3] ) ) ? ( ( 0xAF == ((const U8*)s)[4] ) ?\
1271                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1272                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
1273         : ( ( ( ( ( 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 )\
1274     : 0 )                                                                   \
1275 : ( ( ( ((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 )
1276
1277 /*
1278         THREE_CHAR_FOLD: A three-character multi-char fold
1279
1280         &regcharclass_multi_char_folds::multi_char_folds('l', '3')
1281 */
1282 /*** GENERATED CODE ***/
1283 #define is_THREE_CHAR_FOLD_latin1_safe(s,e)                                 \
1284 ( ( ( ( ( ((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 )
1285
1286 /*
1287         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
1288
1289         &regcharclass_multi_char_folds::multi_char_folds('u', 'h')
1290 */
1291 /*** GENERATED CODE ***/
1292 #define is_THREE_CHAR_FOLD_HEAD_utf8_safe(s,e)                              \
1293 ( ((e)-(s) > 3) ?                                                           \
1294     ( ( ( ( ((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\
1295     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1296         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
1297     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1298         ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1299     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1300         ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1301     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1302         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2    \
1303         : ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1304             ( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1305         : ( 0x68 == ((const U8*)s)[1] ) ?                                   \
1306             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1307         : 0 )                                                               \
1308     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1309         ( ( 0x42 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2    \
1310         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1311             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x62 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1312         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1313             ( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1314         : 0 )                                                               \
1315     : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
1316         ( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1317     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1318         ( ( inRANGE(((const U8*)s)[1], 0x67, 0x68) ) ?                      \
1319             ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )          \
1320         : ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1321     : 0 )                                                                   \
1322 : ((e)-(s) > 2) ?                                                           \
1323     ( ( ( ( ((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\
1324     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1325         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
1326     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1327         ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1328     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1329         ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1330     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1331         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] || 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] || 0x68 == ((const U8*)s)[1] ) ? 2 : 0 )\
1332     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1333         ( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ? 2 : 0 )\
1334     : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
1335         ( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1336     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1337         ( ( inRANGE(((const U8*)s)[1], 0x67, 0x68) ) ?                      \
1338             ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )          \
1339         : ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1340     : 0 )                                                                   \
1341 : ((e)-(s) > 1) ?                                                           \
1342     ( ( ( ( ((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\
1343     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1344         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
1345     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1346         ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1347     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1348         ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1349     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1350         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] || 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] || 0x68 == ((const U8*)s)[1] ) ? 2 : 0 )\
1351     : ( ( 0xB5 == ((const U8*)s)[0] ) && ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ) ? 2 : 0 )\
1352 : ((e)-(s) > 0) ?                                                           \
1353     ( ( ( ((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' ) )\
1354 : 0 )
1355
1356 /*
1357         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
1358
1359         &regcharclass_multi_char_folds::multi_char_folds('l', 'h')
1360 */
1361 /*** GENERATED CODE ***/
1362 #define is_THREE_CHAR_FOLD_HEAD_latin1_safe(s,e)                            \
1363 ( ((e)-(s) > 1) ?                                                           \
1364     ( ( ( ( ((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\
1365     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1366         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
1367     : 0 )                                                                   \
1368 : ((e)-(s) > 0) ?                                                           \
1369     ( ( ( ((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' ) )\
1370 : 0 )
1371
1372 /*
1373         FOLDS_TO_MULTI: characters that fold to multi-char strings
1374
1375         \p{_Perl_Folds_To_Multi_Char}
1376 */
1377 /*** GENERATED CODE ***/
1378 #define is_FOLDS_TO_MULTI_utf8(s)                                           \
1379 ( ( 0x8A == ((const U8*)s)[0] ) ?                                           \
1380     ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1381 : ( 0x8D == ((const U8*)s)[0] || 0x9C == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 0xB3, 0xB4) ) ?\
1382     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1383 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
1384     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1385 : ( 0xB8 == ((const U8*)s)[0] ) ?                                           \
1386     ( ( ( 0x53 == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1387 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
1388     ( ( 0x63 == ((const U8*)s)[1] ) ?                                       \
1389         ( ( inRANGE(((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )\
1390     : ( 0x69 == ((const U8*)s)[1] ) ?                                       \
1391         ( ( 0x57 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x65 == ((const U8*)s)[2] ) ? 3 : 0 )\
1392     : ( 0x70 == ((const U8*)s)[1] ) ?                                       \
1393         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
1394     : ( 0x71 == ((const U8*)s)[1] ) ?                                       \
1395         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x56) || 0x59 == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x63) || inRANGE(((const U8*)s)[2], 0x65, 0x66) || 0x70 == ((const U8*)s)[2] ) ? 3 : 0 )\
1396     : ( 0x72 == ((const U8*)s)[1] ) ?                                       \
1397         ( ( inRANGE(((const U8*)s)[2], 0x43, 0x45) || inRANGE(((const U8*)s)[2], 0x47, 0x48) || 0x53 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x65, 0x66) ) ? 3 : 0 )\
1398     : ( ( 0x73 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x43, 0x45) || inRANGE(((const U8*)s)[2], 0x47, 0x48) || 0x59 == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x63) || inRANGE(((const U8*)s)[2], 0x65, 0x66) || 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1399 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x47) || inRANGE(((const U8*)s)[3], 0x62, 0x66) ) ) ? 4 : 0 )
1400
1401 /*
1402         PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale
1403
1404         \p{_Perl_Problematic_Locale_Folds}
1405 */
1406 /*** GENERATED CODE ***/
1407 #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
1408 ( ( ( ((const U8*)s)[0] <= ' ' ) || inRANGE(((const U8*)s)[0], '.', '&') || inRANGE(((const U8*)s)[0], '!', '/') || inRANGE(((const U8*)s)[0], ',', '?') || inRANGE(((const U8*)s)[0], '`', '"') || inRANGE(((const U8*)s)[0], 'a', 'i') || inRANGE(((const U8*)s)[0], 'j', 'r') || inRANGE(((const U8*)s)[0], '~', 'z') || '[' == ((const U8*)s)[0] || ']' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], '{', 'I') || inRANGE(((const U8*)s)[0], '}', 'R') || '\\' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 'S', 'Z') || inRANGE(((const U8*)s)[0], '0', '9') || 0xFF == ((const U8*)s)[0] ) ? 1\
1409 : ( 0x80 == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 0x8A, 0x8B) ) ? \
1410     ( ( inRANGE(((const U8*)s)[1], 0x41, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x73) ) ? 2 : 0 )\
1411 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
1412     ( ( inRANGE(((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )                  \
1413 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
1414     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1415 : ( 0x8F == ((const U8*)s)[0] ) ?                                           \
1416     ( ( 0x67 == ((const U8*)s)[1] || 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )  \
1417 : ( 0x9C == ((const U8*)s)[0] ) ?                                           \
1418     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1419 : ( 0xAF == ((const U8*)s)[0] ) ?                                           \
1420     ( ( 0x48 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1421 : ( inRANGE(((const U8*)s)[0], 0xB3, 0xB4) ) ?                              \
1422     ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1423 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
1424     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1425 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1426     ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
1427 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )
1428
1429 /*** GENERATED CODE ***/
1430 #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
1431 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
1432 ( 0x130 == cp || ( 0x130 < cp &&                                            \
1433 ( 0x131 == cp || ( 0x131 < cp &&                                            \
1434 ( 0x149 == cp || ( 0x149 < cp &&                                            \
1435 ( 0x178 == cp || ( 0x178 < cp &&                                            \
1436 ( 0x17F == cp || ( 0x17F < cp &&                                            \
1437 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
1438 ( 0x307 == cp || ( 0x307 < cp &&                                            \
1439 ( 0x39C == cp || ( 0x39C < cp &&                                            \
1440 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
1441 ( inRANGE(cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&                           \
1442 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
1443 ( 0x212A == cp || ( 0x212A < cp &&                                          \
1444 ( 0x212B == cp || inRANGE(cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
1445
1446 /*
1447         PROBLEMATIC_LOCALE_FOLDEDS_START: The first folded character of folds which are problematic under locale
1448
1449         \p{_Perl_Problematic_Locale_Foldeds_Start}
1450 */
1451 /*** GENERATED CODE ***/
1452 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
1453 ( ( ( ((const U8*)s)[0] <= ' ' ) || inRANGE(((const U8*)s)[0], '.', '&') || inRANGE(((const U8*)s)[0], '!', '/') || inRANGE(((const U8*)s)[0], ',', '?') || inRANGE(((const U8*)s)[0], '`', '"') || inRANGE(((const U8*)s)[0], 'a', 'i') || inRANGE(((const U8*)s)[0], 'j', 'r') || inRANGE(((const U8*)s)[0], '~', 'z') || '[' == ((const U8*)s)[0] || ']' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], '{', 'I') || inRANGE(((const U8*)s)[0], '}', 'R') || '\\' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 'S', 'Z') || inRANGE(((const U8*)s)[0], '0', '9') || 0xFF == ((const U8*)s)[0] ) ? 1\
1454 : ( 0x80 == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 0x8A, 0x8B) ) ? \
1455     ( ( inRANGE(((const U8*)s)[1], 0x41, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x73) ) ? 2 : 0 )\
1456 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
1457     ( ( inRANGE(((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )                  \
1458 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
1459     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1460 : ( 0x8F == ((const U8*)s)[0] ) ?                                           \
1461     ( ( 0x67 == ((const U8*)s)[1] || 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )  \
1462 : ( 0x9C == ((const U8*)s)[0] ) ?                                           \
1463     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1464 : ( 0xAB == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 0xB3, 0xB4) ) ? \
1465     ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1466 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
1467     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1468 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1469     ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
1470 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )
1471
1472 /*** GENERATED CODE ***/
1473 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
1474 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
1475 ( 0x130 == cp || ( 0x130 < cp &&                                            \
1476 ( 0x131 == cp || ( 0x131 < cp &&                                            \
1477 ( 0x149 == cp || ( 0x149 < cp &&                                            \
1478 ( 0x178 == cp || ( 0x178 < cp &&                                            \
1479 ( 0x17F == cp || ( 0x17F < cp &&                                            \
1480 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
1481 ( 0x2BC == cp || ( 0x2BC < cp &&                                            \
1482 ( 0x39C == cp || ( 0x39C < cp &&                                            \
1483 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
1484 ( inRANGE(cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&                           \
1485 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
1486 ( 0x212A == cp || ( 0x212A < cp &&                                          \
1487 ( 0x212B == cp || inRANGE(cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
1488
1489 /*
1490         PATWS: pattern white space
1491
1492         \p{_Perl_PatWS}
1493 */
1494 /*** GENERATED CODE ***/
1495 #define is_PATWS_safe(s,e,is_utf8)                                          \
1496 ( ( LIKELY((e) > (s)) ) ?                                                   \
1497     ( ( '\t' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] || ' ' == ((const U8*)s)[0] ) ? 1\
1498     : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((const U8*)s)[0] ) ) ? ( ( 0x41 == ((const U8*)s)[1] ) ?\
1499                     ( ( inRANGE(((const U8*)s)[2], 0x55, 0x56) ) ? 3 : 0 )  \
1500                 : ( ( 0x42 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 ) : 0 )\
1501 : 0 )
1502
1503 #endif  /* EBCDIC 1047 */
1504
1505 #if 'A' == 193 /* EBCDIC 037 */ \
1506      && '\\' == 224 && '[' == 186 && ']' == 187 && '{' == 192 && '}' == 208 \
1507      && '^' == 176 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
1508      && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
1509 /*
1510         LNBREAK: Line Break: \R
1511
1512         "\x0D\x0A"      # CRLF - Network (Windows) line ending
1513         \p{VertSpace}
1514 */
1515 /*** GENERATED CODE ***/
1516 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
1517 ( ((e)-(s) > 2) ?                                                           \
1518     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
1519     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1520         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1521     : ( ( ( ( is_utf8 ) && ( 0xCA == ((const U8*)s)[0] ) ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
1522 : ((e)-(s) > 1) ?                                                           \
1523     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
1524     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1525         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1526     : 0 )                                                                   \
1527 : ((e)-(s) > 0) ?                                                           \
1528     ( inRANGE(((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] )\
1529 : 0 )
1530
1531 /*** GENERATED CODE ***/
1532 #define is_LNBREAK_utf8_safe(s,e)                                           \
1533 ( ((e)-(s) > 2) ?                                                           \
1534     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
1535     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1536         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1537     : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
1538 : ((e)-(s) > 1) ?                                                           \
1539     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
1540     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1541         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1542     : 0 )                                                                   \
1543 : ((e)-(s) > 0) ?                                                           \
1544     ( inRANGE(((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] )\
1545 : 0 )
1546
1547 /*** GENERATED CODE ***/
1548 #define is_LNBREAK_latin1_safe(s,e)                                         \
1549 ( ((e)-(s) > 1) ?                                                           \
1550     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
1551     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1552         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1553     : 0 )                                                                   \
1554 : ((e)-(s) > 0) ?                                                           \
1555     ( inRANGE(((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] )\
1556 : 0 )
1557
1558 /*
1559         HORIZWS: Horizontal Whitespace: \h \H
1560
1561         \p{HorizSpace}
1562 */
1563 /*** GENERATED CODE ***/
1564 #define is_HORIZWS_high(s)                                                  \
1565 ( ( 0xBD == ((const U8*)s)[0] ) ?                                           \
1566     ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1567 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1568     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
1569         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
1570     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1571         ( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
1572     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1573 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
1574
1575 /*** GENERATED CODE ***/
1576 #define is_HORIZWS_cp_high(cp)                                              \
1577 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
1578 ( inRANGE(cp, 0x2000, 0x200A) || ( 0x200A < cp &&                           \
1579 ( 0x202F == cp || ( 0x202F < cp &&                                          \
1580 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) )
1581
1582 /*
1583         VERTWS: Vertical Whitespace: \v \V
1584
1585         \p{VertSpace}
1586 */
1587 /*** GENERATED CODE ***/
1588 #define is_VERTWS_high(s)                                                   \
1589 ( ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )
1590
1591 /*** GENERATED CODE ***/
1592 #define is_VERTWS_cp_high(cp)                                               \
1593 ( 0x2028 == cp || 0x2029 == cp )
1594
1595 /*
1596         XDIGIT: Hexadecimal digits
1597
1598         \p{XDigit}
1599 */
1600 /*** GENERATED CODE ***/
1601 #define is_XDIGIT_high(s)                                                   \
1602 ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) ? ( ( 0x66 == ((const U8*)s)[2] ) ?\
1603             ( ( inRANGE(((const U8*)s)[3], 0x57, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE(((const U8*)s)[3], 0x62, 0x67) ) ? 4 : 0 )\
1604         : ( ( inRANGE(((const U8*)s)[2], 0x67, 0x68) ) && ( inRANGE(((const U8*)s)[3], 0x42, 0x47) ) ) ? 4 : 0 ) : 0 )
1605
1606 /*** GENERATED CODE ***/
1607 #define is_XDIGIT_cp_high(cp)                                               \
1608 ( inRANGE(cp, 0xFF10, 0xFF19) || ( 0xFF19 < cp &&                           \
1609 ( inRANGE(cp, 0xFF21, 0xFF26) || inRANGE(cp, 0xFF41, 0xFF46) ) ) )
1610
1611 /*
1612         XPERLSPACE: \p{XPerlSpace}
1613
1614         \p{XPerlSpace}
1615 */
1616 /*** GENERATED CODE ***/
1617 #define is_XPERLSPACE_high(s)                                               \
1618 ( ( 0xBD == ((const U8*)s)[0] ) ?                                           \
1619     ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1620 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1621     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
1622         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
1623     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1624         ( ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
1625     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1626 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
1627
1628 /*** GENERATED CODE ***/
1629 #define is_XPERLSPACE_cp_high(cp)                                           \
1630 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
1631 ( inRANGE(cp, 0x2000, 0x200A) || ( 0x200A < cp &&                           \
1632 ( 0x2028 == cp || ( 0x2028 < cp &&                                          \
1633 ( 0x2029 == cp || ( 0x2029 < cp &&                                          \
1634 ( 0x202F == cp || ( 0x202F < cp &&                                          \
1635 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) ) ) )
1636
1637 /*
1638         NONCHAR: Non character code points
1639
1640         \p{_Perl_Nchar}
1641 */
1642 /*** GENERATED CODE ***/
1643 #define is_NONCHAR_utf8_safe(s,e)                                           \
1644 ( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\
1645             ( ( 0x72 == ((const U8*)s)[1] ) ?                               \
1646                 ( ( 0x55 == ((const U8*)s)[2] ) ?                           \
1647                     ( ( inRANGE(((const U8*)s)[3], 0x57, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE(((const U8*)s)[3], 0x62, 0x6A) || inRANGE(((const U8*)s)[3], 0x70, 0x72) ) ? 4 : 0 )\
1648                 : ( 0x56 == ((const U8*)s)[2] ) ?                           \
1649                     ( ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
1650                 : ( ( 0x72 == ((const U8*)s)[2] ) && ( inRANGE(((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )\
1651             : 0 )                                                           \
1652         : ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ?\
1653             ( ( ( ( 0x72 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )\
1654         : ( 0xED == ((const U8*)s)[0] ) ?                                   \
1655             ( ( ( ( ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x5F || ((const U8*)s)[1] == 0x63 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) || ((const U8*)s)[1] == 0x69 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x70 ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE(((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 )\
1656         : ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE(((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 ) : 0 )
1657
1658 /*
1659         SURROGATE: Surrogate code points
1660
1661         \p{_Perl_Surrogate}
1662 */
1663 /*** GENERATED CODE ***/
1664 #define is_SURROGATE_utf8_safe(s,e)                                         \
1665 ( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( inRANGE(((const U8*)s)[1], 0x64, 0x65) ) ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE(((const U8*)s)[3], 0x62, 0x6A) || inRANGE(((const U8*)s)[3], 0x70, 0x72) ) ) ? 4 : 0 )
1666
1667 /*
1668         QUOTEMETA: Meta-characters that \Q should quote
1669
1670         \p{_Perl_Quotemeta}
1671 */
1672 /*** GENERATED CODE ***/
1673 #define is_QUOTEMETA_high_part0(s)                                          \
1674 ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x6A == ((const U8*)s)[2] ) ) ? 3 : 0 )
1675
1676
1677 /*** GENERATED CODE ***/
1678 #define is_QUOTEMETA_high_part1(s)                                          \
1679 ( ( 0xBC == ((const U8*)s)[0] ) ?                                           \
1680     ( ( 0x51 == ((const U8*)s)[1] ) ?                                       \
1681         ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
1682     : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1683 : ( 0xBD == ((const U8*)s)[0] ) ?                                           \
1684     ( ( 0x62 == ((const U8*)s)[1] ) ?                                       \
1685         ( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
1686     : ( ( 0x70 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x62, 0x63) ) ) ? 3 : 0 )\
1687 : ( 0xBE == ((const U8*)s)[0] ) ?                                           \
1688     ( ( ( 0x41 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x52, 0x55) ) ) ? 3 : 0 )\
1689 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1690     ( ( 0x41 == ((const U8*)s)[1] || inRANGE(((const U8*)s)[1], 0x54, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x72) ) ?\
1691         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
1692     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1693         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x71) ) ? 3 : 0 )\
1694     : ( 0x43 == ((const U8*)s)[1] ) ?                                       \
1695         ( ( inRANGE(((const U8*)s)[2], 0x42, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x63, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
1696     : ( 0x44 == ((const U8*)s)[1] ) ?                                       \
1697         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x56) ) ? 3 : 0 )\
1698     : ( ( 0x53 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x57, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )\
1699 : ( 0xCB == ((const U8*)s)[0] ) ?                                           \
1700     ( ( inRANGE(((const U8*)s)[1], 0x41, 0x43) || inRANGE(((const U8*)s)[1], 0x49, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE(((const U8*)s)[1], 0x62, 0x68) || inRANGE(((const U8*)s)[1], 0x70, 0x72) ) ?\
1701         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
1702     : ( 0x69 == ((const U8*)s)[1] ) ?                                       \
1703         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x63) ) ? 3 : 0 )\
1704     : ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )\
1705 : ( 0xCC == ((const U8*)s)[0] ) ?                                           \
1706     ( ( ( inRANGE(((const U8*)s)[1], 0x41, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x72) ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )\
1707 : ( 0xCD == ((const U8*)s)[0] ) ?                                           \
1708     ( ( ( inRANGE(((const U8*)s)[1], 0x57, 0x59) || 0x5F == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )\
1709 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
1710     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
1711         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x44) || inRANGE(((const U8*)s)[2], 0x49, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
1712     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1713         ( ( 0x41 == ((const U8*)s)[2] || 0x57 == ((const U8*)s)[2] ) ? 3 : 0 )\
1714     : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1715 : ( 0xDD == ((const U8*)s)[0] ) ?                                           \
1716     ( ( 0x72 == ((const U8*)s)[1] ) ?                                       \
1717         ( ( 0x4A == ((const U8*)s)[2] ) ?                                   \
1718             ( ( inRANGE(((const U8*)s)[3], 0x71, 0x72) ) ? 4 : 0 )          \
1719         : ( 0x57 == ((const U8*)s)[2] ) ?                                   \
1720             ( ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
1721         : ( 0x59 == ((const U8*)s)[2] ) ?                                   \
1722             ( ( inRANGE(((const U8*)s)[3], 0x46, 0x47) ) ? 4 : 0 )          \
1723         : ( 0x65 == ((const U8*)s)[2] ) ?                                   \
1724             ( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
1725         : ( 0x70 == ((const U8*)s)[2] ) ?                                   \
1726             ( ( 0x41 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
1727         : ( ( 0x72 == ((const U8*)s)[2] ) && ( inRANGE(((const U8*)s)[3], 0x57, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE(((const U8*)s)[3], 0x62, 0x66) ) ) ? 4 : 0 )\
1728     : 0 )                                                                   \
1729 : ( 0xDF == ((const U8*)s)[0] ) ?                                           \
1730     ( ( 0x56 == ((const U8*)s)[1] ) ?                                       \
1731         ( ( ( 0x46 == ((const U8*)s)[2] ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x44) ) ) ? 4 : 0 )\
1732     : ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( 0x5F == ((const U8*)s)[3] || inRANGE(((const U8*)s)[3], 0x62, 0x68) ) ) ? 4 : 0 )\
1733 : ( ( ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x44) ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE(((const U8*)s)[3], 0x62, 0x6A) || inRANGE(((const U8*)s)[3], 0x70, 0x72) ) ) && ( inRANGE(((const U8*)s)[4], 0x41, 0x4A) || inRANGE(((const U8*)s)[4], 0x51, 0x59) || 0x5F == ((const U8*)s)[4] || inRANGE(((const U8*)s)[4], 0x62, 0x6A) || inRANGE(((const U8*)s)[4], 0x70, 0x72) ) ) ? 5 : 0 )
1734
1735
1736 /*** GENERATED CODE ***/
1737 #define is_QUOTEMETA_high(s)                                                \
1738 ( ( 0xAF == ((const U8*)s)[0] ) ?                                           \
1739     ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1740 : ( 0xB7 == ((const U8*)s)[0] ) ? is_QUOTEMETA_high_part0(s) : is_QUOTEMETA_high_part1(s) )
1741
1742 /*
1743         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
1744
1745         &regcharclass_multi_char_folds::multi_char_folds('u', 'a')
1746 */
1747 /*** GENERATED CODE ***/
1748 #define is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e)                             \
1749 ( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )
1750
1751
1752 /*** GENERATED CODE ***/
1753 #define is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e)                             \
1754 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                                 \
1755         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1756     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
1757         ( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
1758             ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
1759                 ( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1760             : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1761         : 0 )                                                               \
1762     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1763         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1764     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1765         ( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
1766             ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1767         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1768     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1769         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1770     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1771         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1772     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
1773         ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1774     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
1775         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
1776             ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1777         : ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
1778             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1779                 ( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1780                     ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1781                 : 0 )                                                       \
1782             : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1783         : ( 0x67 == ((const U8*)s)[1] ) ?                                   \
1784             ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
1785                 ( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1786                     ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
1787                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1788                     : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1789                 : 0 )                                                       \
1790             : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1791         : 0 )                                                               \
1792     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1793         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1794             ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1795         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1796             ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
1797                 ( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1798                     ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
1799                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1800                     : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1801                 : ( 0x5F == ((const U8*)s)[3] ) ?                           \
1802                     ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
1803                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 4 )\
1804                     : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1805                 : 0 )                                                       \
1806             : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1807         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1808             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1809                 ( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1810                     ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1811                 : 0 )                                                       \
1812             : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1813         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1814     : ( 0xB7 == ((const U8*)s)[0] ) ?                                       \
1815         ( ( 0x52 == ((const U8*)s)[1] ) ?                                   \
1816             ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
1817                 ( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1818             : ( 0x62 == ((const U8*)s)[2] ) ?                               \
1819                 ( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x46 == ((const U8*)s)[5] || 0x52 == ((const U8*)s)[5] || 0x54 == ((const U8*)s)[5] || 0x64 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1820             : ( ( ( ( 0x71 == ((const U8*)s)[2] ) && ( 0xB7 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x64 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1821         : 0 )                                                               \
1822     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1823         ( ( inRANGE(((const U8*)s)[1], 0x66, 0x67) ) ?                      \
1824             ( ( ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1825         : ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1826     : 0 )
1827
1828
1829 /*** GENERATED CODE ***/
1830 #define is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e)                             \
1831 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                                 \
1832         ( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1833     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1834         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1835             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1836         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1837     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1838         ( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1839     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1840         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1841     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
1842         ( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
1843             ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
1844                 ( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1845             : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1846         : 0 )                                                               \
1847     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1848         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1849     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1850         ( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
1851             ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1852         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1853     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1854         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1855     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1856         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1857     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
1858         ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1859     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
1860         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
1861             ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1862         : ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
1863             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1864                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1865             : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1866         : ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1867     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1868         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1869             ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1870         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1871             ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
1872                 ( ( 0x5F == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1873             : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1874         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1875             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1876                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1877             : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1878         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1879     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1880         ( ( inRANGE(((const U8*)s)[1], 0x66, 0x67) ) ?                      \
1881             ( ( ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1882         : ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1883     : 0 )
1884
1885
1886 /*** GENERATED CODE ***/
1887 #define is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e)                             \
1888 ( ((e)-(s) > 3) ?                                                           \
1889     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1890         ( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1891     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1892         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1893             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1894         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1895     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1896         ( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1897     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1898         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1899     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
1900         ( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
1901             ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
1902                 ( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1903             : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1904         : 0 )                                                               \
1905     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1906         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1907     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1908         ( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
1909             ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1910         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1911     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1912         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1913     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1914         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1915     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
1916         ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1917     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
1918         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
1919             ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1920         : ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
1921             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1922                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1923             : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1924         : ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1925     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1926         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1927             ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1928         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1929             ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
1930                 ( ( 0x5F == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1931             : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1932         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1933             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1934                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1935             : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1936         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1937     : 0 )                                                                   \
1938 : ((e)-(s) > 2) ?                                                           \
1939     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1940         ( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1941     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1942         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1943             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1944         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1945     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1946         ( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1947     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1948         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1949     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
1950         ( ( ( 0x72 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ) ? 3 : 0 )\
1951     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1952         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1953     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1954         ( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
1955             ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1956         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1957     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1958         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1959     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1960         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1961     : ( ( ( 0xAA == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1962 : ((e)-(s) > 1) ?                                                           \
1963     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1964         ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1965     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
1966 : 0 )
1967
1968
1969 /*** GENERATED CODE ***/
1970 #define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
1971 ( ((e)-(s) > 5) ?                                                           \
1972     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1973         ( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1974     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1975         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1976             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1977         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1978     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) )\
1979 : ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e) )
1980
1981 /*
1982         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
1983
1984         &regcharclass_multi_char_folds::multi_char_folds('l', 'a')
1985 */
1986 /*** GENERATED CODE ***/
1987 #define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
1988 ( ((e)-(s) > 2) ?                                                           \
1989     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1990         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1991             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1992         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1993     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
1994 : ((e)-(s) > 1) ?                                                           \
1995     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1996         ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1997     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
1998 : 0 )
1999
2000 /*
2001         THREE_CHAR_FOLD: A three-character multi-char fold
2002
2003         &regcharclass_multi_char_folds::multi_char_folds('u', '3')
2004 */
2005 /*** GENERATED CODE ***/
2006 #define is_THREE_CHAR_FOLD_utf8_safe(s,e)                                   \
2007 ( ((e)-(s) > 5) ?                                                           \
2008     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2009         ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )\
2010     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
2011         ( ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
2012             ( ( ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB3 == ((const U8*)s)[4] ) ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
2013         : ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAD == ((const U8*)s)[2] ) ) && ( 0x49 == ((const U8*)s)[3] ) ) ? ( ( 0xAD == ((const U8*)s)[4] ) ?\
2014                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
2015                     : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
2016     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2017         ( ( 0x46 == ((const U8*)s)[1] ) ?                                   \
2018             ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x5F == ((const U8*)s)[3] ) ) ? ( ( 0xAD == ((const U8*)s)[4] ) ?\
2019                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
2020                     : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
2021         : ( ( ( ( ( 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 )\
2022     : 0 )                                                                   \
2023 : ( ( ( ((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 )
2024
2025 /*
2026         THREE_CHAR_FOLD: A three-character multi-char fold
2027
2028         &regcharclass_multi_char_folds::multi_char_folds('l', '3')
2029 */
2030 /*** GENERATED CODE ***/
2031 #define is_THREE_CHAR_FOLD_latin1_safe(s,e)                                 \
2032 ( ( ( ( ( ((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 )
2033
2034 /*
2035         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
2036
2037         &regcharclass_multi_char_folds::multi_char_folds('u', 'h')
2038 */
2039 /*** GENERATED CODE ***/
2040 #define is_THREE_CHAR_FOLD_HEAD_utf8_safe(s,e)                              \
2041 ( ((e)-(s) > 3) ?                                                           \
2042     ( ( ( ( ((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\
2043     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2044         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2045     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
2046         ( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2047     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
2048         ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2049     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
2050         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2    \
2051         : ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
2052             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2053         : ( 0x67 == ((const U8*)s)[1] ) ?                                   \
2054             ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2055         : 0 )                                                               \
2056     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2057         ( ( 0x42 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2    \
2058         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
2059             ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x5F == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2060         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
2061             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2062         : 0 )                                                               \
2063     : ( 0xB7 == ((const U8*)s)[0] ) ?                                       \
2064         ( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2065     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
2066         ( ( inRANGE(((const U8*)s)[1], 0x66, 0x67) ) ?                      \
2067             ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )          \
2068         : ( ( 0x69 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2069     : 0 )                                                                   \
2070 : ((e)-(s) > 2) ?                                                           \
2071     ( ( ( ( ((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\
2072     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2073         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2074     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
2075         ( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2076     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
2077         ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2078     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
2079         ( ( ((const U8*)s)[1] == 0x53 || ((const U8*)s)[1] == 0x55 || ((const U8*)s)[1] == 0x58 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) ) ? 2 : 0 )\
2080     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2081         ( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ? 2 : 0 )\
2082     : ( 0xB7 == ((const U8*)s)[0] ) ?                                       \
2083         ( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2084     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
2085         ( ( inRANGE(((const U8*)s)[1], 0x66, 0x67) ) ?                      \
2086             ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )          \
2087         : ( ( 0x69 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2088     : 0 )                                                                   \
2089 : ((e)-(s) > 1) ?                                                           \
2090     ( ( ( ( ((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\
2091     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2092         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2093     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
2094         ( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2095     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
2096         ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2097     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
2098         ( ( ((const U8*)s)[1] == 0x53 || ((const U8*)s)[1] == 0x55 || ((const U8*)s)[1] == 0x58 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) ) ? 2 : 0 )\
2099     : ( ( 0xB4 == ((const U8*)s)[0] ) && ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ) ? 2 : 0 )\
2100 : ((e)-(s) > 0) ?                                                           \
2101     ( ( ( ((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' ) )\
2102 : 0 )
2103
2104 /*
2105         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
2106
2107         &regcharclass_multi_char_folds::multi_char_folds('l', 'h')
2108 */
2109 /*** GENERATED CODE ***/
2110 #define is_THREE_CHAR_FOLD_HEAD_latin1_safe(s,e)                            \
2111 ( ((e)-(s) > 1) ?                                                           \
2112     ( ( ( ( ((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\
2113     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2114         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2115     : 0 )                                                                   \
2116 : ((e)-(s) > 0) ?                                                           \
2117     ( ( ( ((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' ) )\
2118 : 0 )
2119
2120 /*
2121         FOLDS_TO_MULTI: characters that fold to multi-char strings
2122
2123         \p{_Perl_Folds_To_Multi_Char}
2124 */
2125 /*** GENERATED CODE ***/
2126 #define is_FOLDS_TO_MULTI_utf8(s)                                           \
2127 ( ( 0x80 == ((const U8*)s)[0] ) ?                                           \
2128     ( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2129 : ( 0x8C == ((const U8*)s)[0] || 0x9B == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 0xB2, 0xB3) ) ?\
2130     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2131 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
2132     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2133 : ( 0xB7 == ((const U8*)s)[0] ) ?                                           \
2134     ( ( ( 0x53 == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2135 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
2136     ( ( 0x62 == ((const U8*)s)[1] ) ?                                       \
2137         ( ( inRANGE(((const U8*)s)[2], 0x64, 0x68) || 0x71 == ((const U8*)s)[2] ) ? 3 : 0 )\
2138     : ( 0x68 == ((const U8*)s)[1] ) ?                                       \
2139         ( ( 0x57 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x64 == ((const U8*)s)[2] ) ? 3 : 0 )\
2140     : ( 0x6A == ((const U8*)s)[1] ) ?                                       \
2141         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
2142     : ( 0x70 == ((const U8*)s)[1] ) ?                                       \
2143         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x56) || 0x59 == ((const U8*)s)[2] || 0x5F == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x64, 0x65) || 0x6A == ((const U8*)s)[2] ) ? 3 : 0 )\
2144     : ( 0x71 == ((const U8*)s)[1] ) ?                                       \
2145         ( ( inRANGE(((const U8*)s)[2], 0x43, 0x45) || inRANGE(((const U8*)s)[2], 0x47, 0x48) || 0x53 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x64, 0x65) ) ? 3 : 0 )\
2146     : ( ( 0x72 == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((const U8*)s)[2] & 0xDE ) == 0x44 ) || ((const U8*)s)[2] == 0x48 || ((const U8*)s)[2] == 0x59 || ((const U8*)s)[2] == 0x5F || ( ( ((const U8*)s)[2] & '7' ) == 0x62 ) ) ) ? 3 : 0 )\
2147 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x47) || 0x5F == ((const U8*)s)[3] || inRANGE(((const U8*)s)[3], 0x62, 0x65) ) ) ? 4 : 0 )
2148
2149 /*
2150         PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale
2151
2152         \p{_Perl_Problematic_Locale_Folds}
2153 */
2154 /*** GENERATED CODE ***/
2155 #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
2156 ( ( ( ((const U8*)s)[0] <= ' ' ) || inRANGE(((const U8*)s)[0], '.', '&') || inRANGE(((const U8*)s)[0], '!', ';') || inRANGE(((const U8*)s)[0], '-', '/') || inRANGE(((const U8*)s)[0], ',', '?') || inRANGE(((const U8*)s)[0], '`', '"') || inRANGE(((const U8*)s)[0], 'a', 'i') || inRANGE(((const U8*)s)[0], 'j', 'r') || inRANGE(((const U8*)s)[0], '~', 'z') || '^' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], '[', ']') || inRANGE(((const U8*)s)[0], '{', 'I') || inRANGE(((const U8*)s)[0], '}', 'R') || '\\' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 'S', 'Z') || inRANGE(((const U8*)s)[0], '0', '9') || 0xFF == ((const U8*)s)[0] ) ? 1\
2157 : ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || 0x8A == ((const U8*)s)[0] ) ?\
2158     ( ( inRANGE(((const U8*)s)[1], 0x41, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x72) ) ? 2 : 0 )\
2159 : ( 0x8C == ((const U8*)s)[0] ) ?                                           \
2160     ( ( inRANGE(((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )                  \
2161 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
2162     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2163 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
2164     ( ( 0x66 == ((const U8*)s)[1] || 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )  \
2165 : ( 0x9B == ((const U8*)s)[0] ) ?                                           \
2166     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2167 : ( 0xAD == ((const U8*)s)[0] ) ?                                           \
2168     ( ( 0x48 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2169 : ( inRANGE(((const U8*)s)[0], 0xB2, 0xB3) ) ?                              \
2170     ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2171 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
2172     ( ( ( 0x62 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x64, 0x68) || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2173 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
2174     ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
2175 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )
2176
2177 /*** GENERATED CODE ***/
2178 #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
2179 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
2180 ( 0x130 == cp || ( 0x130 < cp &&                                            \
2181 ( 0x131 == cp || ( 0x131 < cp &&                                            \
2182 ( 0x149 == cp || ( 0x149 < cp &&                                            \
2183 ( 0x178 == cp || ( 0x178 < cp &&                                            \
2184 ( 0x17F == cp || ( 0x17F < cp &&                                            \
2185 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
2186 ( 0x307 == cp || ( 0x307 < cp &&                                            \
2187 ( 0x39C == cp || ( 0x39C < cp &&                                            \
2188 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
2189 ( inRANGE(cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&                           \
2190 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
2191 ( 0x212A == cp || ( 0x212A < cp &&                                          \
2192 ( 0x212B == cp || inRANGE(cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
2193
2194 /*
2195         PROBLEMATIC_LOCALE_FOLDEDS_START: The first folded character of folds which are problematic under locale
2196
2197         \p{_Perl_Problematic_Locale_Foldeds_Start}
2198 */
2199 /*** GENERATED CODE ***/
2200 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
2201 ( ( ( ((const U8*)s)[0] <= ' ' ) || inRANGE(((const U8*)s)[0], '.', '&') || inRANGE(((const U8*)s)[0], '!', ';') || inRANGE(((const U8*)s)[0], '-', '/') || inRANGE(((const U8*)s)[0], ',', '?') || inRANGE(((const U8*)s)[0], '`', '"') || inRANGE(((const U8*)s)[0], 'a', 'i') || inRANGE(((const U8*)s)[0], 'j', 'r') || inRANGE(((const U8*)s)[0], '~', 'z') || '^' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], '[', ']') || inRANGE(((const U8*)s)[0], '{', 'I') || inRANGE(((const U8*)s)[0], '}', 'R') || '\\' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 'S', 'Z') || inRANGE(((const U8*)s)[0], '0', '9') || 0xFF == ((const U8*)s)[0] ) ? 1\
2202 : ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || 0x8A == ((const U8*)s)[0] ) ?\
2203     ( ( inRANGE(((const U8*)s)[1], 0x41, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x72) ) ? 2 : 0 )\
2204 : ( 0x8C == ((const U8*)s)[0] ) ?                                           \
2205     ( ( inRANGE(((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )                  \
2206 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
2207     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2208 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
2209     ( ( 0x66 == ((const U8*)s)[1] || 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )  \
2210 : ( 0x9B == ((const U8*)s)[0] ) ?                                           \
2211     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2212 : ( 0xAA == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 0xB2, 0xB3) ) ? \
2213     ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2214 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
2215     ( ( ( 0x62 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x64, 0x68) || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2216 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
2217     ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
2218 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )
2219
2220 /*** GENERATED CODE ***/
2221 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
2222 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
2223 ( 0x130 == cp || ( 0x130 < cp &&                                            \
2224 ( 0x131 == cp || ( 0x131 < cp &&                                            \
2225 ( 0x149 == cp || ( 0x149 < cp &&                                            \
2226 ( 0x178 == cp || ( 0x178 < cp &&                                            \
2227 ( 0x17F == cp || ( 0x17F < cp &&                                            \
2228 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
2229 ( 0x2BC == cp || ( 0x2BC < cp &&                                            \
2230 ( 0x39C == cp || ( 0x39C < cp &&                                            \
2231 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
2232 ( inRANGE(cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&                           \
2233 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
2234 ( 0x212A == cp || ( 0x212A < cp &&                                          \
2235 ( 0x212B == cp || inRANGE(cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
2236
2237 /*
2238         PATWS: pattern white space
2239
2240         \p{_Perl_PatWS}
2241 */
2242 /*** GENERATED CODE ***/
2243 #define is_PATWS_safe(s,e,is_utf8)                                          \
2244 ( ( LIKELY((e) > (s)) ) ?                                                   \
2245     ( ( '\t' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] || ' ' == ((const U8*)s)[0] ) ? 1\
2246     : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((const U8*)s)[0] ) ) ? ( ( 0x41 == ((const U8*)s)[1] ) ?\
2247                     ( ( inRANGE(((const U8*)s)[2], 0x55, 0x56) ) ? 3 : 0 )  \
2248                 : ( ( 0x42 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 ) : 0 )\
2249 : 0 )
2250
2251 #endif  /* EBCDIC 037 */
2252
2253 #endif /* PERL_REGCHARCLASS_H_ */
2254
2255 /* Generated from:
2256  * d60b1a3dffe16c4aaaf3f00d21993bb320d05e9828b106182214764d4c69935c lib/Unicode/UCD.pm
2257  * ce96627d4fc91b4fd886c409caeb9b76cf7bd345e12f05c6701add7f233f6437 lib/unicore/ArabicShaping.txt
2258  * 0e69eef3da722cc104522d8372e86d5b86bb7afcc761b0c991e39e832294946d lib/unicore/BidiBrackets.txt
2259  * a00d9d21585106a52113fb7b1d3d0373a5835be72e76862fb559ebddd474d70e lib/unicore/BidiMirroring.txt
2260  * 81a82b6a9fcf1a9c12f588d7a1decd73a9afdc4cac95b0eb7e576e7942d6c19f lib/unicore/Blocks.txt
2261  * 99d231d7c91688bbe8ca8ccebcc2f46b5b222f844babe4827295bae11e2abe5f lib/unicore/CaseFolding.txt
2262  * 38badafd818d8405324fe298c0676be0c95186368c84b5368375fd871a645144 lib/unicore/CompositionExclusions.txt
2263  * e779a443d3aa2a3166a15becaa2b737c922480e32c0453d5956093633555078f lib/unicore/DAge.txt
2264  * a5d45f59b39deaab3c72ce8c1a2e212a5e086dff11b1f9d5bb0e352642e82248 lib/unicore/DCoreProperties.txt
2265  * 3ac44e11c84bdaf6b207d2c2c20eed857ae17052393fc7f71b0fe951186ba906 lib/unicore/DNormalizationProps.txt
2266  * 4f822ec7a9ebbb3138ad29bade8b9688d25b39c7a3c0b7431f01e7229e4fcb6e lib/unicore/EastAsianWidth.txt
2267  * fc535aa1047a70105ab9a22c2b4c3f363a2ff02fe48ebbc5eeb9873b2752ff0b lib/unicore/EquivalentUnifiedIdeograph.txt
2268  * b9c5158ce944d2fec57e0e4ecb716bdabfc3bdde73525f1772fe03f61a30d473 lib/unicore/HangulSyllableType.txt
2269  * 36c1b2a626ff1fb23b8b21e6ea8712698f8ce668dded1cb48b8ddf6a6a1b04e9 lib/unicore/IdStatus.txt
2270  * 4857c4ffa3898e6128b2d46b0a02e499a663fb91464a69ef3611096f01293acc lib/unicore/IdType.txt
2271  * 69197b019fa5f2fb0d8c6ed1ed8acb9f2e8b5b8f45a947953ffa652f3bf54983 lib/unicore/IndicPositionalCategory.txt
2272  * 6604e2f0fde7428675364aa0006bc686b79488dcc60ae8cb29800af2be3352e8 lib/unicore/IndicSyllabicCategory.txt
2273  * 84ead63924aaa74b988b2eaf254a8733276ed108633ce2ef77a9ee1de7818162 lib/unicore/Jamo.txt
2274  * d5abcd8f54c8a2aa912924c485ccf7f968ad98feaa303d8e9a29ad89172f1faf lib/unicore/LineBreak.txt
2275  * 985128e8c8b2540233331d9b27d897d2c23bd5bcf1d05da960befce6efc59542 lib/unicore/NameAliases.txt
2276  * 27282b8aa01d4d0c44aef436cb74195ae8639ffa187aeee4e6247af76febea76 lib/unicore/NamedSequences.txt
2277  * 485b5a3ed25dbf1f94dfa5a9b69d8b4550ffd0c33045ccc55ccfd7c80b2a40cf lib/unicore/PropList.txt
2278  * 6b3902e9268cd843fe65cbdea992108c9528343ec0679f800b96f356bb553e5a lib/unicore/PropValueAliases.txt
2279  * 2bd5777847e3d6add3c7e5c0d1393ddcab89e5a0ac3ff498cb0c53041f0b86e4 lib/unicore/PropertyAliases.txt
2280  * 03a61dc89422e44cc2b73e8e893321007880ab69e2a4d281c0f1bc29c602b9d0 lib/unicore/ScriptExtensions.txt
2281  * 9a5ed1ec9b5f0d7147e9371ad792ab39203611af7637cff2aa4a5c663b172cde lib/unicore/Scripts.txt
2282  * 6424312f1dc39b22e0ff9c0ffb13dfad424d9b03e6a6dc6bca941f6bf5ef1ffd lib/unicore/SpecialCasing.txt
2283  * bdbffbbfc8ad4d3a6d01b5891510458f3d36f7170422af4ea2bed3211a73e8bb lib/unicore/UnicodeData.txt
2284  * 160f41816234addb511901d5f21febd69574578dd93de6ef8153e35693325575 lib/unicore/VerticalOrientation.txt
2285  * 32dfb37d21db530529a6ec3dc13d96f21f8e7c7faf7ff3db8a9760cd76cec81d lib/unicore/auxiliary/GCBTest.txt
2286  * 2bd3c5e2d62701ff81fb3ec318e179a4618cabb1493b1e0dd2b4e7e56c5437c4 lib/unicore/auxiliary/GraphemeBreakProperty.txt
2287  * c51fbebfa82a0f36473b44bfd71d5ef6cb6a1f81fb313375dc9a1910d79bb2b6 lib/unicore/auxiliary/LBTest.txt
2288  * 80b0107750818d8f370bd120b6fe56b6855b60581f72affe8b60409a469b4b65 lib/unicore/auxiliary/SBTest.txt
2289  * 09e3166ebab166ac630a227f77f4e794ebd433271abd5588f5a67e7f199c71ee lib/unicore/auxiliary/SentenceBreakProperty.txt
2290  * bf5373ce28a5df06796c93dc159dd15a997bb2950c92704b40ae8190cfc3716d lib/unicore/auxiliary/WBTest.txt
2291  * a2b7373cf2fe3fa3b26dbb53405ca849985f771ff47f1c61743978003ff80499 lib/unicore/auxiliary/WordBreakProperty.txt
2292  * d2686f400a638c80775d7c662556fb8fa8dd3bbe4aa548d9d31624264c6e1bb1 lib/unicore/emoji/emoji.txt
2293  * b827ae5da8c2b08947cc9a120a7b7fd2f1676fb160b508df78075381635b127c lib/unicore/extracted/DBidiClass.txt
2294  * 6fdc5b5ef40444a8f0c772e6b67c00498d4216fe0c0fdf76744ce338f2ad3810 lib/unicore/extracted/DBinaryProperties.txt
2295  * e14928a5bf6ad5958a80332bd42e96e14420080a95c660e5da29384e496755d0 lib/unicore/extracted/DCombiningClass.txt
2296  * 579a03281fbe87b78d5d9a8523de4d255edd7e4ca6eab0e4c7729de97e9b89b1 lib/unicore/extracted/DDecompositionType.txt
2297  * ad83c59b257e9d480ffd3001d4ac240c5fed7cb1919453e1c4e8877035256bcd lib/unicore/extracted/DEastAsianWidth.txt
2298  * 4502f0969e4e6558c4b4c6ca4c23dad70b863d61dd3d5eed1a62a6c3c99fd570 lib/unicore/extracted/DGeneralCategory.txt
2299  * 00bb88b89e2adb646f3177f9444e2d3192386b81a5de9556104b338274b253e1 lib/unicore/extracted/DJoinGroup.txt
2300  * ac835b6e11a60c9820d3cf2d1cb0558dd68efb8f53f404a51632e4726690a6d7 lib/unicore/extracted/DJoinType.txt
2301  * baba9dfc133e3cb770a89aaf0973b1341fa61c2da6c176baf6428898b3b568d8 lib/unicore/extracted/DLineBreak.txt
2302  * 6d4a8c945dd7db83ed617cbb7d937de7f4ecf016ff22970d846e996a7c9a2a5d lib/unicore/extracted/DNumType.txt
2303  * 5b7c14380d5cceeaffcfbc18db1ed936391d2af2d51f5a41f1a17b692c77e59b lib/unicore/extracted/DNumValues.txt
2304  * ee0dd174fd5b158d82dfea95d7d822ca0bfcd490182669353dca3ab39a8ee807 lib/unicore/mktables
2305  * 50b85a67451145545a65cea370dab8d3444fbfe07e9c34cef560c5b7da9d3eef lib/unicore/version
2306  * 2680b9254eb236c5c090f11b149605043e8c8433661b96efc4a42fb4709342a5 regen/charset_translations.pl
2307  * a9698b1cfbd50099b3305ce0a331a680327887126e2881c108fdae1768b86ea2 regen/regcharclass.pl
2308  * c0a5e4cb2b9ffad78691938e122c1310bbc98aca2364af243e5c6b2ec0f59dc3 regen/regcharclass_multi_char_folds.pl
2309  * ex: set ro: */