15759b3d2Safresh1#!./perl 25759b3d2Safresh1 3f3efcd01Safresh1use strict; 4f3efcd01Safresh1use warnings; 55759b3d2Safresh1use utf8; 65759b3d2Safresh1 75759b3d2Safresh1# This tests that the ANYOF nodes generated by bracketed character classes are 85759b3d2Safresh1# as expected. The representation of these is not guaranteed, and this test 95759b3d2Safresh1# may need to be updated if it changes. But it is here to make sure that no 105759b3d2Safresh1# unexpected changes occur. These could come from faulty generation of the 115759b3d2Safresh1# node, or faulty display of them (or both). Because these causes come from 125759b3d2Safresh1# very different parts of the regex compiler, it is unlikely that a commit 135759b3d2Safresh1# would change both of them, so this test will adequately serve to test both. 145759b3d2Safresh1 155759b3d2Safresh1BEGIN { 165759b3d2Safresh1 chdir 't' if -d 't'; 175759b3d2Safresh1 require './test.pl'; 185759b3d2Safresh1 set_up_inc('../lib','.','../ext/re'); 19*5486feefSafresh1 require Config; Config->import; 205759b3d2Safresh1 skip_all('no re module') unless defined &DynaLoader::boot_DynaLoader; 215759b3d2Safresh1} 225759b3d2Safresh1 235759b3d2Safresh1# An array is used instead of a hash, so that the tests are carried out in the 245759b3d2Safresh1# order given by this file. Even-numbered indices are the regexes to compile. 255759b3d2Safresh1# The next higher element is the expected compilation result. 265759b3d2Safresh1# 275759b3d2Safresh1# It is painful to port some of these to EBCDIC, as not only do the code point 285759b3d2Safresh1# numbers change (for those < 256), but the order changes, as the compiled 295759b3d2Safresh1# version is sorted by native code point order. On EBCDIC, \r comes before 305759b3d2Safresh1# \n, and 'k' before "K', for example. So, the tests where there are 315759b3d2Safresh1# differences are skipped on EBCDIC. They are all at the beginning of the 325759b3d2Safresh1# array, and a special marker entry is used to delmit the boundary between 335759b3d2Safresh1# skipped and not skipped. 34f3efcd01Safresh1# 35f3efcd01Safresh1# NOTE: If the pattern contains (?8) it will be upgraded to UTF-8 after 36f3efcd01Safresh1# stripping that 375759b3d2Safresh1 38de8cc8edSafresh1use Unicode::UCD; 39de8cc8edSafresh1my $highest_cp = $Unicode::UCD::MAX_CP; 40de8cc8edSafresh1my $highest_cp_string = sprintf "%X", $highest_cp; 41de8cc8edSafresh1$highest_cp_string = "$highest_cp_string"; 425759b3d2Safresh1 43de8cc8edSafresh1my $infinity = $highest_cp_string; 44de8cc8edSafresh1$infinity =~ s/^7/F/; # Make infinity larger than the largest legal one, and 45de8cc8edSafresh1 # at the time of this writing, we really internally 46de8cc8edSafresh1 # allow UV_MAX to be infinity. 475759b3d2Safresh1 48f3efcd01Safresh1sub get_compiled ($) { 49f3efcd01Safresh1 # Convert platform-independent values to what is suitable for the 50f3efcd01Safresh1 # platform 51f3efcd01Safresh1 52f3efcd01Safresh1 my $pattern = shift; 53f3efcd01Safresh1 54de8cc8edSafresh1 $pattern =~ s/{INFTY}/\\x{$infinity}/g; 55de8cc8edSafresh1 $pattern =~ s/{HIGHEST_CP}/\\x{$highest_cp_string}/g; 56f3efcd01Safresh1 my $use_utf8 = ($pattern =~ s/\Q(?8)//); 57f3efcd01Safresh1 58f3efcd01Safresh1 $pattern = "my \$a = '$pattern';"; 59f3efcd01Safresh1 $pattern .= "utf8::upgrade(\$a);" if $use_utf8; 60f3efcd01Safresh1 $pattern .= "qr/\$a/"; 61f3efcd01Safresh1 my $actual_pattern = "use re qw(Debug COMPILE); $pattern"; 62f3efcd01Safresh1 63f3efcd01Safresh1 my $result = fresh_perl($actual_pattern); 64f3efcd01Safresh1 if ($? != 0) { # Re-run so as to display STDERR. 65de8cc8edSafresh1 fail($pattern, "Until this is fixed, the planned number of tests will be wrong"); 66f3efcd01Safresh1 fresh_perl($actual_pattern, { stderr => 0, verbose => 1 }); 67f3efcd01Safresh1 return; 68f3efcd01Safresh1 } 69f3efcd01Safresh1 70f3efcd01Safresh1 # The Debug output will come back as a bunch of lines. We are 71f3efcd01Safresh1 # interested only in the line after /Final program/ 72f3efcd01Safresh1 my @lines = split /\n/, $result; 73f3efcd01Safresh1 while (defined ($_ = shift @lines)) { 74f3efcd01Safresh1 last if /Final program/; 75f3efcd01Safresh1 } 76f3efcd01Safresh1 77f3efcd01Safresh1 $_ = shift @lines; 78256a93a4Safresh1 unless (defined $_) { 79256a93a4Safresh1 die "Unexpected compilation result: '$result'\n" 80256a93a4Safresh1 . " Compiled from '$actual_pattern'"; 81256a93a4Safresh1 } 82f3efcd01Safresh1 83f3efcd01Safresh1 s/ \s* \( \d+ \) \s* //x; # Get rid of the node branch 84f3efcd01Safresh1 s/ ^ \s* \d+ : \s* //x; # ... And the node number 85f3efcd01Safresh1 86f3efcd01Safresh1 # Use platform-independent values 87de8cc8edSafresh1 s/$infinity/INFTY/ig; 88de8cc8edSafresh1 s/$highest_cp_string/HIGHEST_CP/ig; 89f3efcd01Safresh1 90f3efcd01Safresh1 return $_; 91f3efcd01Safresh1} 92f3efcd01Safresh1 93f3efcd01Safresh1# Note: EXACTish lowercases the hex; ANYOF uppercases, without braces 94f3efcd01Safresh1 95f3efcd01Safresh1my @tests = ( 96f3efcd01Safresh1 '[\xe0\xc0]' => 'EXACTFU <\\x{e0}>', 97f3efcd01Safresh1 '[\xe1\xc1]' => 'EXACTFU <\\x{e1}>', 98f3efcd01Safresh1 '[\xe2\xc2]' => 'EXACTFU <\\x{e2}>', 99f3efcd01Safresh1 '[\xe3\xc3]' => 'EXACTFU <\\x{e3}>', 100f3efcd01Safresh1 '[\xe4\xc4]' => 'EXACTFU <\\x{e4}>', 101f3efcd01Safresh1 '[\xc5\xe5]' => 'ANYOF[\\xC5\\xE5]', 102f3efcd01Safresh1 '[\xe6\xc6]' => 'EXACTFU <\\x{e6}>', 103f3efcd01Safresh1 '[\xe7\xc7]' => 'EXACTFU <\\x{e7}>', 104f3efcd01Safresh1 '[\xe8\xc8]' => 'EXACTFU <\\x{e8}>', 105f3efcd01Safresh1 '[\xe9\xc9]' => 'EXACTFU <\\x{e9}>', 106f3efcd01Safresh1 '[\xea\xca]' => 'EXACTFU <\\x{ea}>', 107f3efcd01Safresh1 '[\xeb\xcb]' => 'EXACTFU <\\x{eb}>', 108f3efcd01Safresh1 '[\xec\xcc]' => 'EXACTFU <\\x{ec}>', 109f3efcd01Safresh1 '[\xee\xce]' => 'EXACTFU <\\x{ee}>', 110f3efcd01Safresh1 '[\xef\xcf]' => 'EXACTFU <\\x{ef}>', 111f3efcd01Safresh1 '[\xf0\xd0]' => 'EXACTFU <\\x{f0}>', 112f3efcd01Safresh1 '[\xf1\xd1]' => 'EXACTFU <\\x{f1}>', 113f3efcd01Safresh1 '[\xf2\xd2]' => 'EXACTFU <\\x{f2}>', 114f3efcd01Safresh1 '[\xf3\xd3]' => 'EXACTFU <\\x{f3}>', 115f3efcd01Safresh1 '[\xf4\xd4]' => 'EXACTFU <\\x{f4}>', 116f3efcd01Safresh1 '[\xf5\xd5]' => 'EXACTFU <\\x{f5}>', 117f3efcd01Safresh1 '[\xf6\xd6]' => 'EXACTFU <\\x{f6}>', 118f3efcd01Safresh1 '[\xf8\xd8]' => 'EXACTFU <\\x{f8}>', 119f3efcd01Safresh1 '[\xf9\xd9]' => 'EXACTFU <\\x{f9}>', 120f3efcd01Safresh1 '[\xfa\xda]' => 'EXACTFU <\\x{fa}>', 121f3efcd01Safresh1 '[\xfb\xdb]' => 'EXACTFU <\\x{fb}>', 122f3efcd01Safresh1 '[\xfc\xdc]' => 'EXACTFU <\\x{fc}>', 123f3efcd01Safresh1 '[\xfd\xdd]' => 'EXACTFU <\\x{fd}>', 124f3efcd01Safresh1 '[\xfe\xde]' => 'EXACTFU <\\x{fe}>', 125f3efcd01Safresh1 126f3efcd01Safresh1 '[[{]' => 'ANYOFM[\[\{]', 127f3efcd01Safresh1 '[^\S ]' => 'ANYOFD[\t\n\x0B\f\r{utf8}\x85\xA0][1680 2000-200A 2028-2029 202F 205F 3000]', 128f3efcd01Safresh1 '[^\n\r]' => 'ANYOF[^\n\r][0100-INFTY]', 129f3efcd01Safresh1 '[^\/\|,\$\%%\@\ \%"\<\>\:\#\&\*\{\}\[\]\(\)]' => 'ANYOF[^ "#$%&()*,/:<>@\[\]\{|\}][0100-INFTY]', 130f3efcd01Safresh1 '[[:ascii:]]' => 'ANYOFM[\x00-\x7F]', 131f3efcd01Safresh1 '[[:^ascii:]]' => 'NANYOFM[\x00-\x7F]', 132f3efcd01Safresh1 '[[:^ascii:]\x{2C2}]' => 'NANYOFM[\x00-\x7F]', 133f3efcd01Safresh1 '(?u)[[:ascii:]]' => 'ANYOFM[\x00-\x7F]', 134f3efcd01Safresh1 '(?u)[[:^ascii:]]' => 'NANYOFM[\x00-\x7F]', 135f3efcd01Safresh1 '(?a)[[:ascii:]]' => 'ANYOFM[\x00-\x7F]', 136f3efcd01Safresh1 '(?a)[[:^ascii:]]' => 'NANYOFM[\x00-\x7F]', 137f3efcd01Safresh1 '(?a)[[:^ascii:]\x{2C2}]' => 'NANYOFM[\x00-\x7F]', 138f3efcd01Safresh1 '[[:cntrl:]]' => 'POSIXD[:cntrl:]', 139f3efcd01Safresh1 '[^[:^print:][:^ascii:]]' => 'POSIXA[:print:]', 140f2a19305Safresh1 '[^[:^print:][:^ascii:]b]' => 'ANYOF[^\x00-\x1Fb\x7F-\xFF][0100-INFTY]', 141f2a19305Safresh1 '[^[:^print:][:^ascii:]b\p{Is_unresolved}]' => 'ANYOF[^\x00-\x1Fb\x7F-\xFF{+main::Is_unresolved}0100-INFTY]', 142f3efcd01Safresh1 '[[:blank:]]' => 'POSIXD[:blank:]', 143f3efcd01Safresh1 '[ [:blank:]]' => 'POSIXD[:blank:]', 144f3efcd01Safresh1 '[_[:blank:]]' => 'ANYOFD[\t _{utf8}\xA0][1680 2000-200A 202F 205F 3000]', 145f3efcd01Safresh1 '[_[:^blank:]]' => 'NPOSIXD[:blank:]', 146f3efcd01Safresh1 '[\xA0[:^blank:]]' => 'ANYOF[^\t ][0100-167F 1681-1FFF 200B-202E 2030-205E 2060-2FFF 3001-INFTY]', 147f3efcd01Safresh1 '(?d:[_[:^blank:]])' => 'NPOSIXD[:blank:]', 148de8cc8edSafresh1 '[\x{07}-\x{0B}]' => 'ANYOFR[\a\b\t\n\x0B]', 149de8cc8edSafresh1 '(?l)[\x{2029}]' => 'EXACTL <\x{2029}>', 150de8cc8edSafresh1 '(?l)(?[\x{2029}])' => 'ANYOFL{utf8-locale-reqd}[2029]', # regex sets requires utf8 locale for /l 151de8cc8edSafresh1 '(?il)[\x{212A}]' => 'EXACTFL <\\x{212a}>', 152f3efcd01Safresh1 '(?il)(?[\x{212A}])' => 'ANYOFL{utf8-locale-reqd}[Kk][212A]', 153f3efcd01Safresh1 154f3efcd01Safresh1 '(?i)b[s]\xe0' => 'ANYOFM[Bb]', # The s goes into a 2nd node 155f3efcd01Safresh1 156f3efcd01Safresh1 '[aA]' => 'ANYOFM[Aa]', 157f3efcd01Safresh1 '[bB]' => 'ANYOFM[Bb]', 158f3efcd01Safresh1 '[kK]' => 'ANYOFM[Kk]', 159f3efcd01Safresh1 160f3efcd01Safresh1 'ebcdic_ok_below_this_marker', 161f3efcd01Safresh1 162f3efcd01Safresh1 '(?i:[^:])' => 'NANYOFM[:]', 163f3efcd01Safresh1 164f3efcd01Safresh1 '[^\n]' => 'REG_ANY', 165f3efcd01Safresh1 166f3efcd01Safresh1 '[[:alpha:]]' => 'POSIXD[:alpha:]', 167f3efcd01Safresh1 '[[:^alpha:]]' => 'NPOSIXD[:alpha:]', 168f3efcd01Safresh1 '[[:^alpha:]\x{2C2}]' => 'NPOSIXU[:alpha:]', 169f3efcd01Safresh1 '(?l)[[:alpha:]]' => 'POSIXL[:alpha:]', 170f3efcd01Safresh1 '(?l)[[:^alpha:]]' => 'NPOSIXL[:alpha:]', 171f3efcd01Safresh1 '(?l)[[:^alpha:]\x{2C2}]' => 'NPOSIXL[:alpha:]', 172f3efcd01Safresh1 '(?u)[[:alpha:]]' => 'POSIXU[:alpha:]', 173f3efcd01Safresh1 '(?u)[[:^alpha:]]' => 'NPOSIXU[:alpha:]', 174f3efcd01Safresh1 '(?a)[[:alpha:]]' => 'POSIXA[:alpha:]', 175f3efcd01Safresh1 '(?a)[[:^alpha:]]' => 'NPOSIXA[:alpha:]', 176f3efcd01Safresh1 '(?a)[[:^alpha:]\x{2C2}]' => 'NPOSIXA[:alpha:]', 177f3efcd01Safresh1 '[[:alpha:][:^alpha:]]' => 'SANY', 178f3efcd01Safresh1 '[^[:alpha:][:^alpha:]]' => 'OPFAIL', 179f3efcd01Safresh1 '(?l)[[:alpha:][:^alpha:]]' => 'SANY', 180f3efcd01Safresh1 '(?l)[^[:alpha:][:^alpha:]]' => 'OPFAIL', 181f3efcd01Safresh1 '(?u)[[:alpha:][:^alpha:]]' => 'SANY', 182f3efcd01Safresh1 '(?u)[^[:alpha:][:^alpha:]]' => 'OPFAIL', 183f3efcd01Safresh1 '(?a)[[:alpha:][:^alpha:]]' => 'SANY', 184f3efcd01Safresh1 '(?a)[^[:alpha:][:^alpha:]]' => 'OPFAIL', 185f3efcd01Safresh1 '[[:alnum:]]' => 'POSIXD[:alnum:]', 186f3efcd01Safresh1 '[[:^alnum:]]' => 'NPOSIXD[:alnum:]', 187f3efcd01Safresh1 '[[:^alnum:]\x{2C2}]' => 'NPOSIXU[:alnum:]', 188f3efcd01Safresh1 '(?l)[[:alnum:]]' => 'POSIXL[:alnum:]', 189f3efcd01Safresh1 '(?l)[[:^alnum:]]' => 'NPOSIXL[:alnum:]', 190f3efcd01Safresh1 '(?l)[[:^alnum:]\x{2C2}]' => 'NPOSIXL[:alnum:]', 191f3efcd01Safresh1 '(?u)[[:alnum:]]' => 'POSIXU[:alnum:]', 192f3efcd01Safresh1 '(?u)[[:^alnum:]]' => 'NPOSIXU[:alnum:]', 193f3efcd01Safresh1 '(?a)[[:alnum:]]' => 'POSIXA[:alnum:]', 194f3efcd01Safresh1 '(?a)[[:^alnum:]]' => 'NPOSIXA[:alnum:]', 195f3efcd01Safresh1 '(?a)[[:^alnum:]\x{2C2}]' => 'NPOSIXA[:alnum:]', 196f3efcd01Safresh1 '[[:alnum:][:^alnum:]]' => 'SANY', 197f3efcd01Safresh1 '[^[:alnum:][:^alnum:]]' => 'OPFAIL', 198f3efcd01Safresh1 '(?l)[[:alnum:][:^alnum:]]' => 'SANY', 199f3efcd01Safresh1 '(?l)[^[:alnum:][:^alnum:]]' => 'OPFAIL', 200f3efcd01Safresh1 '(?u)[[:alnum:][:^alnum:]]' => 'SANY', 201f3efcd01Safresh1 '(?u)[^[:alnum:][:^alnum:]]' => 'OPFAIL', 202f3efcd01Safresh1 '(?a)[[:alnum:][:^alnum:]]' => 'SANY', 203f3efcd01Safresh1 '(?a)[^[:alnum:][:^alnum:]]' => 'OPFAIL', 204f3efcd01Safresh1 '(?l)[[:ascii:]]' => 'POSIXL[:ascii:]', 205f3efcd01Safresh1 '(?l)[[:^ascii:]]' => 'NPOSIXL[:ascii:]', 206f3efcd01Safresh1 '(?l)[[:^ascii:]\x{2C2}]' => 'NPOSIXL[:ascii:]', 207f3efcd01Safresh1 '[[:ascii:][:^ascii:]]' => 'SANY', 208f3efcd01Safresh1 '[^[:ascii:][:^ascii:]]' => 'OPFAIL', 209f3efcd01Safresh1 '(?l)[[:ascii:][:^ascii:]]' => 'SANY', 210f3efcd01Safresh1 '(?l)[^[:ascii:][:^ascii:]]' => 'OPFAIL', 211f3efcd01Safresh1 '(?u)[[:ascii:][:^ascii:]]' => 'SANY', 212f3efcd01Safresh1 '(?u)[^[:ascii:][:^ascii:]]' => 'OPFAIL', 213f3efcd01Safresh1 '(?a)[[:ascii:][:^ascii:]]' => 'SANY', 214f3efcd01Safresh1 '(?a)[^[:ascii:][:^ascii:]]' => 'OPFAIL', 215f3efcd01Safresh1 '[[:^blank:]]' => 'NPOSIXD[:blank:]', 216f3efcd01Safresh1 '[[:^blank:]\x{2C2}]' => 'NPOSIXU[:blank:]', 217f3efcd01Safresh1 '(?l)[[:blank:]]' => 'POSIXL[:blank:]', 218f3efcd01Safresh1 '(?l)[[:^blank:]]' => 'NPOSIXL[:blank:]', 219f3efcd01Safresh1 '(?l)[[:^blank:]\x{2C2}]' => 'NPOSIXL[:blank:]', 220f3efcd01Safresh1 '(?u)[[:blank:]]' => 'POSIXU[:blank:]', 221f3efcd01Safresh1 '(?u)[[:^blank:]]' => 'NPOSIXU[:blank:]', 222f3efcd01Safresh1 '(?a)[[:blank:]]' => 'POSIXA[:blank:]', 223f3efcd01Safresh1 '(?a)[[:^blank:]]' => 'NPOSIXA[:blank:]', 224f3efcd01Safresh1 '(?a)[[:^blank:]\x{2C2}]' => 'NPOSIXA[:blank:]', 225f3efcd01Safresh1 '[[:blank:]]' => 'POSIXD[:blank:]', 226f3efcd01Safresh1 '[[:blank:][:^blank:]]' => 'SANY', 227f3efcd01Safresh1 '[^[:blank:][:^blank:]]' => 'OPFAIL', 228f3efcd01Safresh1 '(?l)[[:blank:][:^blank:]]' => 'SANY', 229f3efcd01Safresh1 '(?l)[^[:blank:][:^blank:]]' => 'OPFAIL', 230f3efcd01Safresh1 '(?u)[[:blank:][:^blank:]]' => 'SANY', 231f3efcd01Safresh1 '(?u)[^[:blank:][:^blank:]]' => 'OPFAIL', 232f3efcd01Safresh1 '(?a)[[:blank:][:^blank:]]' => 'SANY', 233f3efcd01Safresh1 '(?a)[^[:blank:][:^blank:]]' => 'OPFAIL', 234f3efcd01Safresh1 '[[:^cntrl:]]' => 'NPOSIXD[:cntrl:]', 235f3efcd01Safresh1 '[[:^cntrl:]\x{2C2}]' => 'NPOSIXU[:cntrl:]', 236f3efcd01Safresh1 '(?l)[[:cntrl:]]' => 'POSIXL[:cntrl:]', 237f3efcd01Safresh1 '(?l)[[:^cntrl:]]' => 'NPOSIXL[:cntrl:]', 238f3efcd01Safresh1 '(?l)[[:^cntrl:]\x{2C2}]' => 'NPOSIXL[:cntrl:]', 239f3efcd01Safresh1 '(?u)[[:cntrl:]]' => 'POSIXU[:cntrl:]', 240f3efcd01Safresh1 '(?u)[[:^cntrl:]]' => 'NPOSIXU[:cntrl:]', 241f3efcd01Safresh1 '(?a)[[:cntrl:]]' => 'POSIXA[:cntrl:]', 242f3efcd01Safresh1 '(?a)[[:^cntrl:]]' => 'NPOSIXA[:cntrl:]', 243f3efcd01Safresh1 '(?a)[[:^cntrl:]\x{2C2}]' => 'NPOSIXA[:cntrl:]', 244f3efcd01Safresh1 '[[:cntrl:][:^cntrl:]]' => 'SANY', 245f3efcd01Safresh1 '[^[:cntrl:][:^cntrl:]]' => 'OPFAIL', 246f3efcd01Safresh1 '(?l)[[:cntrl:][:^cntrl:]]' => 'SANY', 247f3efcd01Safresh1 '(?l)[^[:cntrl:][:^cntrl:]]' => 'OPFAIL', 248f3efcd01Safresh1 '(?u)[[:cntrl:][:^cntrl:]]' => 'SANY', 249f3efcd01Safresh1 '(?u)[^[:cntrl:][:^cntrl:]]' => 'OPFAIL', 250f3efcd01Safresh1 '(?a)[[:cntrl:][:^cntrl:]]' => 'SANY', 251f3efcd01Safresh1 '(?a)[^[:cntrl:][:^cntrl:]]' => 'OPFAIL', 252f3efcd01Safresh1 '[[:digit:]]' => 'POSIXU[\d]', 253f3efcd01Safresh1 '[[:^digit:]]' => 'NPOSIXU[\d]', 254f3efcd01Safresh1 '[[:^digit:]\x{2C2}]' => 'NPOSIXU[\d]', 255f3efcd01Safresh1 '(?l)[[:digit:]]' => 'POSIXL[\d]', 256f3efcd01Safresh1 '(?l)[[:^digit:]]' => 'NPOSIXL[\d]', 257f3efcd01Safresh1 '(?l)[[:^digit:]\x{2C2}]' => 'NPOSIXL[\d]', 258f3efcd01Safresh1 '(?u)[[:digit:]]' => 'POSIXU[\d]', 259f3efcd01Safresh1 '(?u)[[:^digit:]]' => 'NPOSIXU[\d]', 260f3efcd01Safresh1 '(?a)[[:digit:]]' => 'POSIXA[\d]', 261f3efcd01Safresh1 '(?a)[[:^digit:]]' => 'NPOSIXA[\d]', 262f3efcd01Safresh1 '(?a)[[:^digit:]\x{2C2}]' => 'NPOSIXA[\d]', 263f3efcd01Safresh1 '[[:digit:][:^digit:]]' => 'SANY', 264f3efcd01Safresh1 '[^[:digit:][:^digit:]]' => 'OPFAIL', 265f3efcd01Safresh1 '(?l)[[:digit:][:^digit:]]' => 'SANY', 266f3efcd01Safresh1 '(?l)[^[:digit:][:^digit:]]' => 'OPFAIL', 267f3efcd01Safresh1 '(?u)[[:digit:][:^digit:]]' => 'SANY', 268f3efcd01Safresh1 '(?u)[^[:digit:][:^digit:]]' => 'OPFAIL', 269f3efcd01Safresh1 '(?a)[[:digit:][:^digit:]]' => 'SANY', 270f3efcd01Safresh1 '(?a)[^[:digit:][:^digit:]]' => 'OPFAIL', 271f3efcd01Safresh1 '[[:graph:]]' => 'POSIXD[:graph:]', 272f3efcd01Safresh1 '[[:^graph:]]' => 'NPOSIXD[:graph:]', 273f3efcd01Safresh1 '[[:^graph:]\x{FFFF}]' => 'NPOSIXU[:graph:]', 274f3efcd01Safresh1 '(?l)[[:graph:]]' => 'POSIXL[:graph:]', 275f3efcd01Safresh1 '(?l)[[:^graph:]]' => 'NPOSIXL[:graph:]', 276f3efcd01Safresh1 '(?l)[[:^graph:]\x{FFFF}]' => 'NPOSIXL[:graph:]', 277f3efcd01Safresh1 '(?u)[[:graph:]]' => 'POSIXU[:graph:]', 278f3efcd01Safresh1 '(?u)[[:^graph:]]' => 'NPOSIXU[:graph:]', 279f3efcd01Safresh1 '(?a)[[:graph:]]' => 'POSIXA[:graph:]', 280f3efcd01Safresh1 '(?a)[[:^graph:]]' => 'NPOSIXA[:graph:]', 281f3efcd01Safresh1 '(?a)[[:^graph:]\x{FFFF}]' => 'NPOSIXA[:graph:]', 282f3efcd01Safresh1 '[[:graph:][:^graph:]]' => 'SANY', 283f3efcd01Safresh1 '[^[:graph:][:^graph:]]' => 'OPFAIL', 284f3efcd01Safresh1 '(?l)[[:graph:][:^graph:]]' => 'SANY', 285f3efcd01Safresh1 '(?l)[^[:graph:][:^graph:]]' => 'OPFAIL', 286f3efcd01Safresh1 '(?u)[[:graph:][:^graph:]]' => 'SANY', 287f3efcd01Safresh1 '(?u)[^[:graph:][:^graph:]]' => 'OPFAIL', 288f3efcd01Safresh1 '(?a)[[:graph:][:^graph:]]' => 'SANY', 289f3efcd01Safresh1 '(?a)[^[:graph:][:^graph:]]' => 'OPFAIL', 290f3efcd01Safresh1 '[[:lower:]]' => 'POSIXD[:lower:]', 291f3efcd01Safresh1 '[[:^lower:]]' => 'NPOSIXD[:lower:]', 292f3efcd01Safresh1 '[[:^lower:]\x{2C2}]' => 'NPOSIXU[:lower:]', 293f3efcd01Safresh1 '(?l)[[:lower:]]' => 'POSIXL[:lower:]', 294f3efcd01Safresh1 '(?l)[[:^lower:]]' => 'NPOSIXL[:lower:]', 295f3efcd01Safresh1 '(?l)[[:^lower:]\x{2C2}]' => 'NPOSIXL[:lower:]', 296f3efcd01Safresh1 '(?u)[[:lower:]]' => 'POSIXU[:lower:]', 297f3efcd01Safresh1 '(?u)[[:^lower:]]' => 'NPOSIXU[:lower:]', 298f3efcd01Safresh1 '(?a)[[:lower:]]' => 'POSIXA[:lower:]', 299f3efcd01Safresh1 '(?a)[[:^lower:]]' => 'NPOSIXA[:lower:]', 300f3efcd01Safresh1 '(?a)[[:^lower:]\x{2C2}]' => 'NPOSIXA[:lower:]', 301f3efcd01Safresh1 '[[:lower:][:^lower:]]' => 'SANY', 302f3efcd01Safresh1 '[^[:lower:][:^lower:]]' => 'OPFAIL', 303f3efcd01Safresh1 '(?l)[[:lower:][:^lower:]]' => 'SANY', 304f3efcd01Safresh1 '(?l)[^[:lower:][:^lower:]]' => 'OPFAIL', 305f3efcd01Safresh1 '(?u)[[:lower:][:^lower:]]' => 'SANY', 306f3efcd01Safresh1 '(?u)[^[:lower:][:^lower:]]' => 'OPFAIL', 307f3efcd01Safresh1 '(?a)[[:lower:][:^lower:]]' => 'SANY', 308f3efcd01Safresh1 '(?a)[^[:lower:][:^lower:]]' => 'OPFAIL', 309f3efcd01Safresh1 '[[:print:]]' => 'POSIXD[:print:]', 310f3efcd01Safresh1 '[[:^print:]]' => 'NPOSIXD[:print:]', 311f3efcd01Safresh1 '[[:^print:]\x{FFFF}]' => 'NPOSIXU[:print:]', 312f3efcd01Safresh1 '(?l)[[:print:]]' => 'POSIXL[:print:]', 313f3efcd01Safresh1 '(?l)[[:^print:]]' => 'NPOSIXL[:print:]', 314f3efcd01Safresh1 '(?l)[[:^print:]\x{FFFF}]' => 'NPOSIXL[:print:]', 315f3efcd01Safresh1 '(?u)[[:print:]]' => 'POSIXU[:print:]', 316f3efcd01Safresh1 '(?u)[[:^print:]]' => 'NPOSIXU[:print:]', 317f3efcd01Safresh1 '(?a)[[:print:]]' => 'POSIXA[:print:]', 318f3efcd01Safresh1 '(?a)[[:^print:]]' => 'NPOSIXA[:print:]', 319f3efcd01Safresh1 '(?a)[[:^print:]\x{FFFF}]' => 'NPOSIXA[:print:]', 320f3efcd01Safresh1 '[[:print:][:^print:]]' => 'SANY', 321f3efcd01Safresh1 '[^[:print:][:^print:]]' => 'OPFAIL', 322f3efcd01Safresh1 '(?l)[[:print:][:^print:]]' => 'SANY', 323f3efcd01Safresh1 '(?l)[^[:print:][:^print:]]' => 'OPFAIL', 324f3efcd01Safresh1 '(?u)[[:print:][:^print:]]' => 'SANY', 325f3efcd01Safresh1 '(?u)[^[:print:][:^print:]]' => 'OPFAIL', 326f3efcd01Safresh1 '(?a)[[:print:][:^print:]]' => 'SANY', 327f3efcd01Safresh1 '(?a)[^[:print:][:^print:]]' => 'OPFAIL', 328f3efcd01Safresh1 '[[:punct:]]' => 'POSIXD[:punct:]', 329f3efcd01Safresh1 '[[:^punct:]]' => 'NPOSIXD[:punct:]', 330f3efcd01Safresh1 '[[:^punct:]\x{2C2}]' => 'NPOSIXU[:punct:]', 331f3efcd01Safresh1 '(?l)[[:punct:]]' => 'POSIXL[:punct:]', 332f3efcd01Safresh1 '(?l)[[:^punct:]]' => 'NPOSIXL[:punct:]', 333f3efcd01Safresh1 '(?l)[[:^punct:]\x{2C2}]' => 'NPOSIXL[:punct:]', 334f3efcd01Safresh1 '(?u)[[:punct:]]' => 'POSIXU[:punct:]', 335f3efcd01Safresh1 '(?u)[[:^punct:]]' => 'NPOSIXU[:punct:]', 336f3efcd01Safresh1 '(?a)[[:punct:]]' => 'POSIXA[:punct:]', 337f3efcd01Safresh1 '(?a)[[:^punct:]]' => 'NPOSIXA[:punct:]', 338f3efcd01Safresh1 '(?a)[[:^punct:]\x{2C2}]' => 'NPOSIXA[:punct:]', 339f3efcd01Safresh1 '[[:punct:][:^punct:]]' => 'SANY', 340f3efcd01Safresh1 '[^[:punct:][:^punct:]]' => 'OPFAIL', 341f3efcd01Safresh1 '(?l)[[:punct:][:^punct:]]' => 'SANY', 342f3efcd01Safresh1 '(?l)[^[:punct:][:^punct:]]' => 'OPFAIL', 343f3efcd01Safresh1 '(?u)[[:punct:][:^punct:]]' => 'SANY', 344f3efcd01Safresh1 '(?u)[^[:punct:][:^punct:]]' => 'OPFAIL', 345f3efcd01Safresh1 '(?a)[[:punct:][:^punct:]]' => 'SANY', 346f3efcd01Safresh1 '(?a)[^[:punct:][:^punct:]]' => 'OPFAIL', 347f3efcd01Safresh1 '[[:space:]]' => 'POSIXD[\s]', 348f3efcd01Safresh1 '[[:^space:]]' => 'NPOSIXD[\s]', 349f3efcd01Safresh1 '[[:^space:]\x{2C2}]' => 'NPOSIXU[\s]', 350f3efcd01Safresh1 '(?l)[[:space:]]' => 'POSIXL[\s]', 351f3efcd01Safresh1 '(?l)[[:^space:]]' => 'NPOSIXL[\s]', 352f3efcd01Safresh1 '(?l)[[:^space:]\x{2C2}]' => 'NPOSIXL[\s]', 353f3efcd01Safresh1 '(?u)[[:space:]]' => 'POSIXU[\s]', 354f3efcd01Safresh1 '(?u)[[:^space:]]' => 'NPOSIXU[\s]', 355f3efcd01Safresh1 '(?a)[[:space:]]' => 'POSIXA[\s]', 356f3efcd01Safresh1 '(?a)[[:^space:]]' => 'NPOSIXA[\s]', 357f3efcd01Safresh1 '(?a)[[:^space:]\x{2C2}]' => 'NPOSIXA[\s]', 358f3efcd01Safresh1 '[[:space:][:^space:]]' => 'SANY', 359f3efcd01Safresh1 '[^[:space:][:^space:]]' => 'OPFAIL', 360f3efcd01Safresh1 '(?l)[[:space:][:^space:]]' => 'SANY', 361f3efcd01Safresh1 '(?l)[^[:space:][:^space:]]' => 'OPFAIL', 362f3efcd01Safresh1 '(?u)[[:space:][:^space:]]' => 'SANY', 363f3efcd01Safresh1 '(?u)[^[:space:][:^space:]]' => 'OPFAIL', 364f3efcd01Safresh1 '(?a)[[:space:][:^space:]]' => 'SANY', 365f3efcd01Safresh1 '(?a)[^[:space:][:^space:]]' => 'OPFAIL', 366f3efcd01Safresh1 '[[:upper:]]' => 'POSIXD[:upper:]', 367f3efcd01Safresh1 '[[:^upper:]]' => 'NPOSIXD[:upper:]', 368f3efcd01Safresh1 '[[:^upper:]\x{2C2}]' => 'NPOSIXU[:upper:]', 369f3efcd01Safresh1 '(?l)[[:upper:]]' => 'POSIXL[:upper:]', 370f3efcd01Safresh1 '(?l)[[:^upper:]]' => 'NPOSIXL[:upper:]', 371f3efcd01Safresh1 '(?l)[[:^upper:]\x{2C2}]' => 'NPOSIXL[:upper:]', 372f3efcd01Safresh1 '(?u)[[:upper:]]' => 'POSIXU[:upper:]', 373f3efcd01Safresh1 '(?u)[[:^upper:]]' => 'NPOSIXU[:upper:]', 374f3efcd01Safresh1 '(?a)[[:upper:]]' => 'POSIXA[:upper:]', 375f3efcd01Safresh1 '(?a)[[:^upper:]]' => 'NPOSIXA[:upper:]', 376f3efcd01Safresh1 '(?a)[[:^upper:]\x{2C2}]' => 'NPOSIXA[:upper:]', 377f3efcd01Safresh1 '[[:upper:][:^upper:]]' => 'SANY', 378f3efcd01Safresh1 '[^[:upper:][:^upper:]]' => 'OPFAIL', 379f3efcd01Safresh1 '(?l)[[:upper:][:^upper:]]' => 'SANY', 380f3efcd01Safresh1 '(?l)[^[:upper:][:^upper:]]' => 'OPFAIL', 381f3efcd01Safresh1 '(?u)[[:upper:][:^upper:]]' => 'SANY', 382f3efcd01Safresh1 '(?u)[^[:upper:][:^upper:]]' => 'OPFAIL', 383f3efcd01Safresh1 '(?a)[[:upper:][:^upper:]]' => 'SANY', 384f3efcd01Safresh1 '(?a)[^[:upper:][:^upper:]]' => 'OPFAIL', 385f3efcd01Safresh1 '[\v]' => 'POSIXU[\v]', 386f3efcd01Safresh1 '[^\v]' => 'NPOSIXU[\v]', 387f3efcd01Safresh1 '[\V\x{2C2}]' => 'NPOSIXU[\v]', 388f3efcd01Safresh1 '(?l)[\v]' => 'POSIXU[\v]', 389f3efcd01Safresh1 '(?l)[^\v]' => 'NPOSIXU[\v]', 390f3efcd01Safresh1 '(?l)[\V\x{2C2}]' => 'NPOSIXU[\v]', 391f3efcd01Safresh1 '(?u)[\v]' => 'POSIXU[\v]', 392f3efcd01Safresh1 '(?u)[^\v]' => 'NPOSIXU[\v]', 393f3efcd01Safresh1 '(?a)[\v]' => 'POSIXU[\v]', 394f3efcd01Safresh1 '(?a)[^\v]' => 'NPOSIXU[\v]', 395f3efcd01Safresh1 '(?a)[\V\x{2C2}]' => 'NPOSIXU[\v]', 396f3efcd01Safresh1 '[\v\V]' => 'SANY', 397f3efcd01Safresh1 '[^\v\V]' => 'OPFAIL', 398f3efcd01Safresh1 '(?l)[\v\V]' => 'SANY', 399f3efcd01Safresh1 '(?l)[^\v\V]' => 'OPFAIL', 400f3efcd01Safresh1 '(?u)[\v\V]' => 'SANY', 401f3efcd01Safresh1 '(?u)[^\v\V]' => 'OPFAIL', 402f3efcd01Safresh1 '(?a)[\v\V]' => 'SANY', 403f3efcd01Safresh1 '(?a)[^\v\V]' => 'OPFAIL', 404f3efcd01Safresh1 '[[:word:]]' => 'POSIXD[\w]', 405f3efcd01Safresh1 '[[:^word:]]' => 'NPOSIXD[\w]', 406f3efcd01Safresh1 '[[:^word:]\x{2C2}]' => 'NPOSIXU[\w]', 407f3efcd01Safresh1 '(?l)[[:word:]]' => 'POSIXL[\w]', 408f3efcd01Safresh1 '(?l)[[:^word:]]' => 'NPOSIXL[\w]', 409f3efcd01Safresh1 '(?l)[[:^word:]\x{2C2}]' => 'NPOSIXL[\w]', 410f3efcd01Safresh1 '(?u)[[:word:]]' => 'POSIXU[\w]', 411f3efcd01Safresh1 '(?u)[[:^word:]]' => 'NPOSIXU[\w]', 412f3efcd01Safresh1 '(?a)[[:word:]]' => 'POSIXA[\w]', 413f3efcd01Safresh1 '(?a)[[:^word:]]' => 'NPOSIXA[\w]', 414f3efcd01Safresh1 '(?a)[[:^word:]\x{2C2}]' => 'NPOSIXA[\w]', 415f3efcd01Safresh1 '[[:word:][:^word:]]' => 'SANY', 416f3efcd01Safresh1 '[^[:word:][:^word:]]' => 'OPFAIL', 417f3efcd01Safresh1 '(?l)[[:word:][:^word:]]' => 'SANY', 418f3efcd01Safresh1 '(?l)[^[:word:][:^word:]]' => 'OPFAIL', 419f3efcd01Safresh1 '(?u)[[:word:][:^word:]]' => 'SANY', 420f3efcd01Safresh1 '(?u)[^[:word:][:^word:]]' => 'OPFAIL', 421f3efcd01Safresh1 '(?a)[[:word:][:^word:]]' => 'SANY', 422f3efcd01Safresh1 '(?a)[^[:word:][:^word:]]' => 'OPFAIL', 423f3efcd01Safresh1 '[[:xdigit:]]' => 'POSIXU[:xdigit:]', 424f3efcd01Safresh1 '[[:^xdigit:]]' => 'NPOSIXU[:xdigit:]', 425f3efcd01Safresh1 '[[:^xdigit:]\x{2C2}]' => 'NPOSIXU[:xdigit:]', 426f3efcd01Safresh1 '(?l)[[:xdigit:]]' => 'POSIXL[:xdigit:]', 427f3efcd01Safresh1 '(?l)[[:^xdigit:]]' => 'NPOSIXL[:xdigit:]', 428f3efcd01Safresh1 '(?l)[[:^xdigit:]\x{2C2}]' => 'NPOSIXL[:xdigit:]', 429f3efcd01Safresh1 '(?u)[[:xdigit:]]' => 'POSIXU[:xdigit:]', 430f3efcd01Safresh1 '(?u)[[:^xdigit:]]' => 'NPOSIXU[:xdigit:]', 431f3efcd01Safresh1 '(?a)[[:xdigit:]]' => 'POSIXA[:xdigit:]', 432f3efcd01Safresh1 '(?a)[[:^xdigit:]]' => 'NPOSIXA[:xdigit:]', 433f3efcd01Safresh1 '(?a)[[:^xdigit:]\x{2C2}]' => 'NPOSIXA[:xdigit:]', 434f3efcd01Safresh1 '[[:xdigit:][:^xdigit:]]' => 'SANY', 435f3efcd01Safresh1 '[^[:xdigit:][:^xdigit:]]' => 'OPFAIL', 436f3efcd01Safresh1 '(?l)[[:xdigit:][:^xdigit:]]' => 'SANY', 437f3efcd01Safresh1 '(?l)[^[:xdigit:][:^xdigit:]]' => 'OPFAIL', 438f3efcd01Safresh1 '(?u)[[:xdigit:][:^xdigit:]]' => 'SANY', 439f3efcd01Safresh1 '(?u)[^[:xdigit:][:^xdigit:]]' => 'OPFAIL', 440f3efcd01Safresh1 '(?a)[[:xdigit:][:^xdigit:]]' => 'SANY', 441f3efcd01Safresh1 '(?a)[^[:xdigit:][:^xdigit:]]' => 'OPFAIL', 442f3efcd01Safresh1 '(?i)[[:lower:]]' => 'POSIXD[:cased:]', 443f3efcd01Safresh1 '(?i)[[:^lower:]]' => 'NPOSIXD[:cased:]', 444f3efcd01Safresh1 '(?i)[[:^lower:]\x{2C2}]' => 'NPOSIXU[:cased:]', 445f3efcd01Safresh1 '(?i)(?l)[[:lower:]]' => 'POSIXL[:cased:]', 446f3efcd01Safresh1 '(?i)(?l)[[:^lower:]]' => 'NPOSIXL[:cased:]', 447f3efcd01Safresh1 '(?i)(?l)[[:^lower:]\x{2C2}]' => 'NPOSIXL[:cased:]', 448f3efcd01Safresh1 '(?i)(?u)[[:lower:]]' => 'POSIXU[:cased:]', 449f3efcd01Safresh1 '(?i)(?u)[[:^lower:]]' => 'NPOSIXU[:cased:]', 450f3efcd01Safresh1 '(?i)(?a)[[:lower:]]' => 'POSIXA[:alpha:]', 451f3efcd01Safresh1 '(?i)(?a)[[:^lower:]]' => 'NPOSIXA[:alpha:]', 452f3efcd01Safresh1 '(?i)(?a)[[:^lower:]\x{2C2}]' => 'NPOSIXA[:alpha:]', 453f3efcd01Safresh1 '(?i)[[:upper:]]' => 'POSIXD[:cased:]', 454f3efcd01Safresh1 '(?i)[[:^upper:]]' => 'NPOSIXD[:cased:]', 455f3efcd01Safresh1 '(?i)[[:^upper:]\x{2C2}]' => 'NPOSIXU[:cased:]', 456f3efcd01Safresh1 '(?i)(?l)[[:upper:]]' => 'POSIXL[:cased:]', 457f3efcd01Safresh1 '(?i)(?l)[[:^upper:]]' => 'NPOSIXL[:cased:]', 458f3efcd01Safresh1 '(?i)(?l)[[:^upper:]\x{2C2}]' => 'NPOSIXL[:cased:]', 459f3efcd01Safresh1 '(?i)(?u)[[:upper:]]' => 'POSIXU[:cased:]', 460f3efcd01Safresh1 '(?i)(?u)[[:^upper:]]' => 'NPOSIXU[:cased:]', 461f3efcd01Safresh1 '(?i)(?a)[[:upper:]]' => 'POSIXA[:alpha:]', 462f3efcd01Safresh1 '(?i)(?a)[[:^upper:]]' => 'NPOSIXA[:alpha:]', 463f3efcd01Safresh1 '(?i)(?a)[[:^upper:]\x{2C2}]' => 'NPOSIXA[:alpha:]', 464f3efcd01Safresh1 '(?i)[\d\w]' => 'POSIXD[\w]', 465f3efcd01Safresh1 '(?i)[\D\w]' => 'SANY', 466f3efcd01Safresh1 #'(?i)(?l)[\d\w]' => varies depending on Unicode release 467f3efcd01Safresh1 '(?i)(?l)[\D\w]' => 'ANYOFPOSIXL{i}[\\w\\D][0100-INFTY]', 468f3efcd01Safresh1 '(?i)(?u)[\d\w]' => 'POSIXU[\w]', 469f3efcd01Safresh1 '(?i)(?u)[\D\w]' => 'SANY', 470f3efcd01Safresh1 '(?i)(?a)[\d\w]' => 'POSIXA[\w]', 471f3efcd01Safresh1 '(?i)(?a)[\D\w]' => 'SANY', 472de8cc8edSafresh1 '(?l:[\x{212A}])' => 'EXACTL <\x{212a}>', 473f3efcd01Safresh1 '(?l:[\s\x{212A}])' => 'ANYOFPOSIXL[\s][1680 2000-200A 2028-2029 202F 205F 212A 3000]', 474f3efcd01Safresh1 '(?l:[^\S\x{202F}])' => 'ANYOFPOSIXL[^\\S][1680 2000-200A 2028-2029 205F 3000]', 475de8cc8edSafresh1 '(?li:[a-z])' => (($::IS_ASCII) 476de8cc8edSafresh1 ? 'ANYOFL{i}[a-z{utf8 locale}\x{017F}\x{212A}]' 477de8cc8edSafresh1 : 'ANYOFL{i}[a-ij-rs-z{utf8 locale}\x{017F}\x{212A}]'), 478f3efcd01Safresh1 '\p{All}' => 'SANY', 479f3efcd01Safresh1 '\P{All}' => 'OPFAIL', 480f3efcd01Safresh1 '[\p{Any}]' => 'ANYOF[\x00-\xFF][0100-10FFFF]', 481f3efcd01Safresh1 482f3efcd01Safresh1 '[\p{IsMyRuntimeProperty}]' => 'ANYOF[+main::IsMyRuntimeProperty]', 483f3efcd01Safresh1 '[^\p{IsMyRuntimeProperty}]' => 'ANYOF[^{+main::IsMyRuntimeProperty}]', 484f3efcd01Safresh1 '[a\p{IsMyRuntimeProperty}]' => 'ANYOF[a][+main::IsMyRuntimeProperty]', 485f3efcd01Safresh1 '[^a\p{IsMyRuntimeProperty}]' => 'ANYOF[^a{+main::IsMyRuntimeProperty}]', 486f3efcd01Safresh1 '[^a\x{100}\p{IsMyRuntimeProperty}]' => 'ANYOF[^a{+main::IsMyRuntimeProperty}0100]', 487f3efcd01Safresh1 '[^\p{All}\p{IsMyRuntimeProperty}]' => 'OPFAIL', 488f3efcd01Safresh1 '[\p{All}\p{IsMyRuntimeProperty}]' => 'SANY', 489f3efcd01Safresh1 490de8cc8edSafresh1 '[\x{00}-{HIGHEST_CP}]' => 'ANYOF[\x00-\xFF][0100-HIGHEST_CP]', 491f3efcd01Safresh1 '[\x{00}-{INFTY}]' => 'SANY', 492f3efcd01Safresh1 '[\x{101}-{INFTY}]' => 'ANYOFH[0101-INFTY]', 493de8cc8edSafresh1 '[\x{101}-{HIGHEST_CP}]' => 'ANYOFH[0101-HIGHEST_CP]', 494f2a19305Safresh1 '[\x{102}\x{104}]' => 'ANYOFHbbm[0102 0104]', 495de8cc8edSafresh1 '[\x{102}-\x{104}{HIGHEST_CP}]' => 'ANYOFH[0102-0104 HIGHEST_CP]', 496de8cc8edSafresh1 '[\x{102}-\x{104}\x{101}]' => 'ANYOFRb[0101-0104]', 497f3efcd01Safresh1 '[\x{102}-\x{104}\x{101}-{INFTY}]' => 'ANYOFH[0101-INFTY]', 498de8cc8edSafresh1 '[\x{102}-\x{104}\x{101}-{HIGHEST_CP}]' => 'ANYOFH[0101-HIGHEST_CP]', 499de8cc8edSafresh1 '[\x{102}-\x{104}\x{102}]' => 'ANYOFRb[0102-0104]', 500f3efcd01Safresh1 '[\x{102}-\x{104}\x{102}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 501de8cc8edSafresh1 '[\x{102}-\x{104}\x{102}-{HIGHEST_CP}]' => 'ANYOFH[0102-HIGHEST_CP]', 502de8cc8edSafresh1 '[\x{102}-\x{104}\x{103}]' => 'ANYOFRb[0102-0104]', 503f3efcd01Safresh1 '[\x{102}-\x{104}\x{103}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 504de8cc8edSafresh1 '[\x{102}-\x{104}\x{103}-{HIGHEST_CP}]' => 'ANYOFH[0102-HIGHEST_CP]', 505de8cc8edSafresh1 '[\x{102}-\x{104}\x{104}]' => 'ANYOFRb[0102-0104]', 506f3efcd01Safresh1 '[\x{102}-\x{104}\x{104}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 507de8cc8edSafresh1 '[\x{102}-\x{104}\x{104}-{HIGHEST_CP}]' => 'ANYOFH[0102-HIGHEST_CP]', 508de8cc8edSafresh1 '[\x{102}-\x{104}\x{105}]' => 'ANYOFRb[0102-0105]', 509f3efcd01Safresh1 '[\x{102}-\x{104}\x{105}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 510de8cc8edSafresh1 '[\x{102}-\x{104}\x{105}-{HIGHEST_CP}]' => 'ANYOFH[0102-HIGHEST_CP]', 511f2a19305Safresh1 '[\x{102}-\x{104}\x{106}]' => 'ANYOFHbbm[0102-0104 0106]', 512f3efcd01Safresh1 '[\x{102}-\x{104}\x{106}-{INFTY}]' => 'ANYOFH[0102-0104 0106-INFTY]', 513de8cc8edSafresh1 '[\x{102}-\x{104}\x{106}-{HIGHEST_CP}]' => 'ANYOFH[0102-0104 0106-HIGHEST_CP]', 514de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}{HIGHEST_CP}]' => 'ANYOFH[0102-0104 0108-010A HIGHEST_CP]', 515f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}]' => 'ANYOFHbbm[0101-0104 0108-010A]', 516f3efcd01Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{INFTY}]' => 'ANYOFH[0101-INFTY]', 517de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{HIGHEST_CP}]' => 'ANYOFH[0101-HIGHEST_CP]', 518f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{102}]' => 'ANYOFHbbm[0101-0104 0108-010A]', 519f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{103}]' => 'ANYOFHbbm[0101-0104 0108-010A]', 520f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{104}]' => 'ANYOFHbbm[0101-0104 0108-010A]', 521f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{105}]' => 'ANYOFHbbm[0101-0105 0108-010A]', 522f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{106}]' => 'ANYOFHbbm[0101-0106 0108-010A]', 523de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{107}]' => 'ANYOFRb[0101-010A]', 524de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{108}]' => 'ANYOFRb[0101-010A]', 525de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{109}]' => 'ANYOFRb[0101-010A]', 526de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10A}]' => 'ANYOFRb[0101-010A]', 527de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10B}]' => 'ANYOFRb[0101-010B]', 528f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}]' => 'ANYOFHbbm[0102-0104 0108-010A]', 529f3efcd01Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 530de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{HIGHEST_CP}]' => 'ANYOFH[0102-HIGHEST_CP]', 531f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{102}]' => 'ANYOFHbbm[0102-0104 0108-010A]', 532f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{103}]' => 'ANYOFHbbm[0102-0104 0108-010A]', 533f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{104}]' => 'ANYOFHbbm[0102-0104 0108-010A]', 534f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{105}]' => 'ANYOFHbbm[0102-0105 0108-010A]', 535f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{106}]' => 'ANYOFHbbm[0102-0106 0108-010A]', 536de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{107}]' => 'ANYOFRb[0102-010A]', 537de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{108}]' => 'ANYOFRb[0102-010A]', 538de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{109}]' => 'ANYOFRb[0102-010A]', 539de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10A}]' => 'ANYOFRb[0102-010A]', 540de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10B}]' => 'ANYOFRb[0102-010B]', 541de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10C}]' => 'ANYOFRb[0102-010C]', 542f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}]' => 'ANYOFHbbm[0102-0104 0108-010A]', 543f3efcd01Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 544de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{HIGHEST_CP}]' => 'ANYOFH[0102-HIGHEST_CP]', 545f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{104}]' => 'ANYOFHbbm[0102-0104 0108-010A]', 546f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{105}]' => 'ANYOFHbbm[0102-0105 0108-010A]', 547f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{106}]' => 'ANYOFHbbm[0102-0106 0108-010A]', 548de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{107}]' => 'ANYOFRb[0102-010A]', 549de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{108}]' => 'ANYOFRb[0102-010A]', 550de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{109}]' => 'ANYOFRb[0102-010A]', 551de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10A}]' => 'ANYOFRb[0102-010A]', 552de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10B}]' => 'ANYOFRb[0102-010B]', 553de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10C}]' => 'ANYOFRb[0102-010C]', 554f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}]' => 'ANYOFHbbm[0102-0104 0108-010A]', 555f3efcd01Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 556de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{HIGHEST_CP}]' => 'ANYOFH[0102-HIGHEST_CP]', 557f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{105}]' => 'ANYOFHbbm[0102-0105 0108-010A]', 558f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{106}]' => 'ANYOFHbbm[0102-0106 0108-010A]', 559de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{107}]' => 'ANYOFRb[0102-010A]', 560de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{108}]' => 'ANYOFRb[0102-010A]', 561de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{109}]' => 'ANYOFRb[0102-010A]', 562de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10A}]' => 'ANYOFRb[0102-010A]', 563de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10B}]' => 'ANYOFRb[0102-010B]', 564de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10C}]' => 'ANYOFRb[0102-010C]', 565f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}]' => 'ANYOFHbbm[0102-0105 0108-010A]', 566f3efcd01Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 567de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{HIGHEST_CP}]' => 'ANYOFH[0102-HIGHEST_CP]', 568f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{106}]' => 'ANYOFHbbm[0102-0106 0108-010A]', 569de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{107}]' => 'ANYOFRb[0102-010A]', 570de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{108}]' => 'ANYOFRb[0102-010A]', 571de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{109}]' => 'ANYOFRb[0102-010A]', 572de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10A}]' => 'ANYOFRb[0102-010A]', 573de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10B}]' => 'ANYOFRb[0102-010B]', 574de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10C}]' => 'ANYOFRb[0102-010C]', 575f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}]' => 'ANYOFHbbm[0102-0104 0106 0108-010A]', 576f3efcd01Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{INFTY}]' => 'ANYOFH[0102-0104 0106-INFTY]', 577de8cc8edSafresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{HIGHEST_CP}]' => 'ANYOFH[0102-0104 0106-HIGHEST_CP]', 578f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{107}]' => 'ANYOFHbbm[0102-0104 0106-010A]', 579f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{108}]' => 'ANYOFHbbm[0102-0104 0106-010A]', 580f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{109}]' => 'ANYOFHbbm[0102-0104 0106-010A]', 581f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10A}]' => 'ANYOFHbbm[0102-0104 0106-010A]', 582f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10B}]' => 'ANYOFHbbm[0102-0104 0106-010B]', 583f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10C}]' => 'ANYOFHbbm[0102-0104 0106-010C]', 584f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{107}]' => 'ANYOFHbbm[0102-0104 0107-010A]', 585f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{108}]' => 'ANYOFHbbm[0102-0104 0108-010A]', 586f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{109}]' => 'ANYOFHbbm[0102-0104 0108-010A]', 587f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{10A}]' => 'ANYOFHbbm[0102-0104 0108-010A]', 588f2a19305Safresh1 '[\x{102}-\x{104}\x{108}-\x{10A}\x{10B}]' => 'ANYOFHbbm[0102-0104 0108-010B]', 589de8cc8edSafresh1 '[\x{103}\x{102}]' => 'EXACTFU_REQ8 <\x{103}>', 590f2a19305Safresh1 '[\x{104}\x{102}]' => 'ANYOFHbbm[0102 0104]', 591de8cc8edSafresh1 '[\x{104}\x{102}\x{103}]' => 'ANYOFRb[0102-0104]', 592f3efcd01Safresh1 '[\x{106}-{INFTY}\x{104}]' => 'ANYOFH[0104 0106-INFTY]', 593f3efcd01Safresh1 '[\x{106}-{INFTY}\x{104}-{INFTY}]' => 'ANYOFH[0104-INFTY]', 594de8cc8edSafresh1 '[\x{106}-{INFTY}\x{104}-{HIGHEST_CP}]' => 'ANYOFH[0104-INFTY]', 595f3efcd01Safresh1 '[\x{106}-{INFTY}\x{104}-\x{105}]' => 'ANYOFH[0104-INFTY]', 596f3efcd01Safresh1 '[\x{106}-{INFTY}\x{104}-\x{106}]' => 'ANYOFH[0104-INFTY]', 597f3efcd01Safresh1 '[\x{106}-{INFTY}\x{104}-\x{107}]' => 'ANYOFH[0104-INFTY]', 598f3efcd01Safresh1 '[\x{106}-{INFTY}\x{105}]' => 'ANYOFH[0105-INFTY]', 599f3efcd01Safresh1 '[\x{106}-{INFTY}\x{105}-{INFTY}]' => 'ANYOFH[0105-INFTY]', 600de8cc8edSafresh1 '[\x{106}-{INFTY}\x{105}-{HIGHEST_CP}]' => 'ANYOFH[0105-INFTY]', 601f3efcd01Safresh1 '[\x{106}-{INFTY}\x{105}-\x{106}]' => 'ANYOFH[0105-INFTY]', 602f3efcd01Safresh1 '[\x{106}-{INFTY}\x{105}-\x{107}]' => 'ANYOFH[0105-INFTY]', 603f3efcd01Safresh1 '[\x{106}-{INFTY}\x{106}]' => 'ANYOFH[0106-INFTY]', 604f3efcd01Safresh1 '[\x{106}-{INFTY}\x{106}-{INFTY}]' => 'ANYOFH[0106-INFTY]', 605de8cc8edSafresh1 '[\x{106}-{INFTY}\x{106}-{HIGHEST_CP}]' => 'ANYOFH[0106-INFTY]', 606f3efcd01Safresh1 '[\x{106}-{INFTY}\x{106}-\x{107}]' => 'ANYOFH[0106-INFTY]', 607f3efcd01Safresh1 '[\x{106}-{INFTY}\x{107}]' => 'ANYOFH[0106-INFTY]', 608f3efcd01Safresh1 '[\x{106}-{INFTY}\x{107}-{INFTY}]' => 'ANYOFH[0106-INFTY]', 609de8cc8edSafresh1 '[\x{106}-{INFTY}\x{107}-{HIGHEST_CP}]' => 'ANYOFH[0106-INFTY]', 610f3efcd01Safresh1 '[\x{106}-{INFTY}\x{107}-\x{107}]' => 'ANYOFH[0106-INFTY]', 611de8cc8edSafresh1 '[\x{10C}-{INFTY}{HIGHEST_CP}]' => 'ANYOFH[010C-INFTY]', 612de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{00}-{HIGHEST_CP}]' => 'SANY', 613f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{00}-{INFTY}]' => 'SANY', 614f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{101}-{INFTY}]' => 'ANYOFH[0101-INFTY]', 615de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{101}-{HIGHEST_CP}]' => 'ANYOFH[0101-INFTY]', 616f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}\x{104}]' => 'ANYOFH[0102 0104 010C-INFTY]', 617de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}{HIGHEST_CP}]' => 'ANYOFH[0102-0104 010C-INFTY]', 618f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{100}]' => 'ANYOFH[0100 0102-0104 010C-INFTY]', 619f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{101}]' => 'ANYOFH[0101-0104 010C-INFTY]', 620f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{101}-{INFTY}]' => 'ANYOFH[0101-INFTY]', 621de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{101}-{HIGHEST_CP}]' => 'ANYOFH[0101-INFTY]', 622f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{102}]' => 'ANYOFH[0102-0104 010C-INFTY]', 623f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{102}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 624de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{102}-{HIGHEST_CP}]' => 'ANYOFH[0102-INFTY]', 625f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{103}]' => 'ANYOFH[0102-0104 010C-INFTY]', 626f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{103}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 627de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{103}-{HIGHEST_CP}]' => 'ANYOFH[0102-INFTY]', 628f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{104}]' => 'ANYOFH[0102-0104 010C-INFTY]', 629f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{104}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 630de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{104}-{HIGHEST_CP}]' => 'ANYOFH[0102-INFTY]', 631f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{105}]' => 'ANYOFH[0102-0105 010C-INFTY]', 632f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{105}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 633de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{105}-{HIGHEST_CP}]' => 'ANYOFH[0102-INFTY]', 634f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{106}]' => 'ANYOFH[0102-0104 0106 010C-INFTY]', 635f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{106}-{INFTY}]' => 'ANYOFH[0102-0104 0106-INFTY]', 636de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{106}-{HIGHEST_CP}]' => 'ANYOFH[0102-0104 0106-INFTY]', 637de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}{HIGHEST_CP}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', 638f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}]' => 'ANYOFH[0101-0104 0108-010A 010C-INFTY]', 639f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{INFTY}]' => 'ANYOFH[0101-INFTY]', 640de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{HIGHEST_CP}]' => 'ANYOFH[0101-INFTY]', 641f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{102}]' => 'ANYOFH[0101-0104 0108-010A 010C-INFTY]', 642f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{103}]' => 'ANYOFH[0101-0104 0108-010A 010C-INFTY]', 643f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{104}]' => 'ANYOFH[0101-0104 0108-010A 010C-INFTY]', 644f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{105}]' => 'ANYOFH[0101-0105 0108-010A 010C-INFTY]', 645f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{106}]' => 'ANYOFH[0101-0106 0108-010A 010C-INFTY]', 646f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{107}]' => 'ANYOFH[0101-010A 010C-INFTY]', 647f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{108}]' => 'ANYOFH[0101-010A 010C-INFTY]', 648f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{109}]' => 'ANYOFH[0101-010A 010C-INFTY]', 649f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10A}]' => 'ANYOFH[0101-010A 010C-INFTY]', 650f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10B}]' => 'ANYOFH[0101-INFTY]', 651f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', 652f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 653de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{HIGHEST_CP}]' => 'ANYOFH[0102-INFTY]', 654f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{102}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', 655f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{103}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', 656f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{104}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', 657f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{105}]' => 'ANYOFH[0102-0105 0108-010A 010C-INFTY]', 658f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{106}]' => 'ANYOFH[0102-0106 0108-010A 010C-INFTY]', 659f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{107}]' => 'ANYOFH[0102-010A 010C-INFTY]', 660f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{108}]' => 'ANYOFH[0102-010A 010C-INFTY]', 661f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{109}]' => 'ANYOFH[0102-010A 010C-INFTY]', 662f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10A}]' => 'ANYOFH[0102-010A 010C-INFTY]', 663f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10B}]' => 'ANYOFH[0102-INFTY]', 664f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10C}]' => 'ANYOFH[0102-INFTY]', 665f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', 666f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 667de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{HIGHEST_CP}]' => 'ANYOFH[0102-INFTY]', 668f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{104}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', 669f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{105}]' => 'ANYOFH[0102-0105 0108-010A 010C-INFTY]', 670f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{106}]' => 'ANYOFH[0102-0106 0108-010A 010C-INFTY]', 671f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{107}]' => 'ANYOFH[0102-010A 010C-INFTY]', 672f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{108}]' => 'ANYOFH[0102-010A 010C-INFTY]', 673f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{109}]' => 'ANYOFH[0102-010A 010C-INFTY]', 674f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10A}]' => 'ANYOFH[0102-010A 010C-INFTY]', 675f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10B}]' => 'ANYOFH[0102-INFTY]', 676f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10C}]' => 'ANYOFH[0102-INFTY]', 677f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', 678f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 679de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{HIGHEST_CP}]' => 'ANYOFH[0102-INFTY]', 680f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{105}]' => 'ANYOFH[0102-0105 0108-010A 010C-INFTY]', 681f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{106}]' => 'ANYOFH[0102-0106 0108-010A 010C-INFTY]', 682f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{107}]' => 'ANYOFH[0102-010A 010C-INFTY]', 683f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{108}]' => 'ANYOFH[0102-010A 010C-INFTY]', 684f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{109}]' => 'ANYOFH[0102-010A 010C-INFTY]', 685f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10A}]' => 'ANYOFH[0102-010A 010C-INFTY]', 686f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10B}]' => 'ANYOFH[0102-INFTY]', 687f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10C}]' => 'ANYOFH[0102-INFTY]', 688f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}]' => 'ANYOFH[0102-0105 0108-010A 010C-INFTY]', 689f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{INFTY}]' => 'ANYOFH[0102-INFTY]', 690de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{HIGHEST_CP}]' => 'ANYOFH[0102-INFTY]', 691f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{106}]' => 'ANYOFH[0102-0106 0108-010A 010C-INFTY]', 692f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{107}]' => 'ANYOFH[0102-010A 010C-INFTY]', 693f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{108}]' => 'ANYOFH[0102-010A 010C-INFTY]', 694f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{109}]' => 'ANYOFH[0102-010A 010C-INFTY]', 695f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10A}]' => 'ANYOFH[0102-010A 010C-INFTY]', 696f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10B}]' => 'ANYOFH[0102-INFTY]', 697f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10C}]' => 'ANYOFH[0102-INFTY]', 698f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}]' => 'ANYOFH[0102-0104 0106 0108-010A 010C-INFTY]', 699f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{INFTY}]' => 'ANYOFH[0102-0104 0106-INFTY]', 700de8cc8edSafresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{HIGHEST_CP}]' => 'ANYOFH[0102-0104 0106-INFTY]', 701f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{107}]' => 'ANYOFH[0102-0104 0106-010A 010C-INFTY]', 702f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{108}]' => 'ANYOFH[0102-0104 0106-010A 010C-INFTY]', 703f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{109}]' => 'ANYOFH[0102-0104 0106-010A 010C-INFTY]', 704f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10A}]' => 'ANYOFH[0102-0104 0106-010A 010C-INFTY]', 705f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10B}]' => 'ANYOFH[0102-0104 0106-INFTY]', 706f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10C}]' => 'ANYOFH[0102-0104 0106-INFTY]', 707f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{107}]' => 'ANYOFH[0102-0104 0107-010A 010C-INFTY]', 708f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{108}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', 709f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{109}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', 710f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{10A}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', 711f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{10B}]' => 'ANYOFH[0102-0104 0108-INFTY]', 712f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{103}\x{102}]' => 'ANYOFH[0102-0103 010C-INFTY]', 713f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{104}\x{102}]' => 'ANYOFH[0102 0104 010C-INFTY]', 714f3efcd01Safresh1 '[\x{10C}-{INFTY}\x{104}\x{102}\x{103}]' => 'ANYOFH[0102-0104 010C-INFTY]', 715de8cc8edSafresh1 '[{HIGHEST_CP}]' => 'EXACT_REQ8 <\x{HIGHEST_CP}>', 716f3efcd01Safresh1 717de8cc8edSafresh1 '(?8)(?i)[\x{410}]' => 'EXACTFU_REQ8 <\x{430}>', 718de8cc8edSafresh1 '(?8)(?i)[\x{399}]' => 'EXACTFU_REQ8 <\x{3b9}>', 719de8cc8edSafresh1 '(?8)(?i)[\x{345}\x{399}\x{3B9}\x{1FBE}]' => 'EXACTFU_REQ8 <\x{3b9}>', 720de8cc8edSafresh1 '(?i)[\x{2b9}]' => 'EXACT_REQ8 <\x{2b9}>', # Doesn't participate in a fold 721de8cc8edSafresh1 '(?8)(?i)[\x{2b9}]' => 'EXACT_REQ8 <\x{2b9}>', 722de8cc8edSafresh1 '(?i)[\x{2bc}]' => 'EXACTFU_REQ8 <\x{2bc}>', # Part of a multi-char fold, ASCII component 723de8cc8edSafresh1 '(?i)[\x{390}]' => 'EXACTFU_REQ8 <\x{3b9}\x{308}\x{301}>', # Part of a multi-char fold, no ASCII component 724f3efcd01Safresh1 725f3efcd01Safresh1 '(?i)[\x{1E9E}]' => 'EXACTFU <ss>', 726f3efcd01Safresh1 '(?iaa)[\x{1E9E}]' => 'EXACTFAA <\x{17f}\x{17f}>', 727f3efcd01Safresh1 '(?i)[\x{FB00}]' => 'EXACTFU <ff>', 728de8cc8edSafresh1 '(?iaa)[\x{FB00}]' => 'EXACT_REQ8 <\x{fb00}>', 729f3efcd01Safresh1 '(?i)[\x{FB00}]' => 'EXACTFU <ff>', 730f3efcd01Safresh1 '(?i)[\x{FB01}]' => 'EXACTFU <fi>', 731f3efcd01Safresh1 '(?i)[\x{FB02}]' => 'EXACTFU <fl>', 732f3efcd01Safresh1 '(?i)[\x{FB03}]' => 'EXACTFU <ffi>', 733f3efcd01Safresh1 '(?i)[\x{FB04}]' => 'EXACTFU <ffl>', 734f3efcd01Safresh1 '(?i)[\x{FB05}]' => 'EXACTFU <st>', 735f3efcd01Safresh1 '(?i)[\x{FB06}]' => 'EXACTFU <st>', 736f3efcd01Safresh1 737f3efcd01Safresh1 '[a][b]' => 'EXACT <ab>', 738de8cc8edSafresh1 '[a]\x{100}' => 'EXACT_REQ8 <a\x{100}>', 739de8cc8edSafresh1 '(?8)[\x{100}]a' => 'EXACT_REQ8 <\x{100}a>', 740f3efcd01Safresh1 '(?i)[b][c]' => 'EXACTFU <bc>', 741de8cc8edSafresh1 '(?i)[b]\x{100}' => 'EXACTFU_REQ8 <b\x{101}>', 742de8cc8edSafresh1 '(?8)(?i)[\x{100}]b' => 'EXACTFU_REQ8 <\x{101}b>', 743f3efcd01Safresh1 '(?i)b[s]' => 'EXACTFU <bs>', 744f3efcd01Safresh1 '(?i)b[s]c' => 'EXACTFU <bsc>', 745f3efcd01Safresh1 '(?i)bs[s]c' => 'EXACTF <bss>', # The c goes into a 2nd node 746f3efcd01Safresh1 '(?iu)bs[s]c' => 'EXACTFUP <bssc>', 747f3efcd01Safresh1 '(?i)b[s]sc' => 'EXACTF <bssc>', 748f3efcd01Safresh1 '(?iu)b[s]sc' => 'EXACTFUP <bssc>', 749f3efcd01Safresh1 '(?i)[b]st' => 'EXACTFU <bst>', 750f3efcd01Safresh1 '(?i)[b]st[s]' => 'EXACTFU <bsts>', 751f3efcd01Safresh1 '(?i)[b]st[s]st' => 'EXACTF <bstsst>', 752f3efcd01Safresh1 '(?iu)[b]st[s]st' => 'EXACTFUP <bstsst>', 753f3efcd01Safresh1 '(?i)[s][s]' => 'EXACTF <ss>', 754f3efcd01Safresh1 '(?iu)[s][s]' => 'EXACTFUP <ss>', 755f3efcd01Safresh1); 756f3efcd01Safresh1 757f3efcd01Safresh1my @single_chars_to_test = 758f3efcd01Safresh1( 759f3efcd01Safresh1 "\x00", # Always potentially problematic 760f3efcd01Safresh1 "\x01", # Unnamed control 761f3efcd01Safresh1 "\b", # Named control 762f3efcd01Safresh1 "\n", # Potentially special 763f3efcd01Safresh1 "\r", # Potentially special 764f3efcd01Safresh1 "\cK", # Potentially special 765f3efcd01Safresh1 "0", # Digit 766f3efcd01Safresh1 ":", # Not in any fold 767f3efcd01Safresh1 "A", # ASCII capital, participates in multi-char fold 768f3efcd01Safresh1 "a", # ASCII small, participates in multi-char fold 769f3efcd01Safresh1 "B", # ASCII capital, participates only in case-pair fold 770f3efcd01Safresh1 "b", # ASCII small, participates only in case-pair fold 771f3efcd01Safresh1 "K", # ASCII capital, folded to from above Latin1 772f3efcd01Safresh1 "k", # ASCII small, folded to from above Latin1 773f3efcd01Safresh1 "\c?", # Potentially special 774f3efcd01Safresh1 "\x80", # Latin1 control 775f3efcd01Safresh1 "\xB5", # Micro sign, folds to above Latin1 776f3efcd01Safresh1 "\xC0", # Latin1 capital, participates only in case-pair fold 777f3efcd01Safresh1 "\xE0", # Latin1 small, participates only in case-pair fold 778f3efcd01Safresh1 "\xC5", # Latin1 capital, folded to from above Latin1 779f3efcd01Safresh1 "\xE5", # Latin1 small, folded to from above Latin1 780f3efcd01Safresh1 "\xDF", # Small sharp S. folds to 'ss' 781f3efcd01Safresh1 "\xF7", # Doesn't participate in any fold 782f3efcd01Safresh1 "\xFF", # Folded to by above Latin1 783f3efcd01Safresh1 "\x{100}", # First few above Latin1 characters 784f3efcd01Safresh1 "\x{101}", 785f3efcd01Safresh1 "\x{102}", 786f3efcd01Safresh1 "\x{103}", 787f3efcd01Safresh1 "\x{104}", 788f3efcd01Safresh1 "\x{105}", 789f3efcd01Safresh1 "\x{106}", 790f3efcd01Safresh1 "\x{107}", 791f3efcd01Safresh1 "\x{108}", 792de8cc8edSafresh1 "\x{2029}", 793f3efcd01Safresh1); 794f3efcd01Safresh1 795f3efcd01Safresh1my @single_tests; 796f3efcd01Safresh1for my $char (@single_chars_to_test) { 797f3efcd01Safresh1 my $cp = ord $char; 798f3efcd01Safresh1 my $hex = sprintf "%02x", $cp; 799f3efcd01Safresh1 my $oct = sprintf "%o", $cp; 800f3efcd01Safresh1 my $cp_string; 801f3efcd01Safresh1 802f3efcd01Safresh1 my $cased; 803f3efcd01Safresh1 my $folded_hex; 804f3efcd01Safresh1 805f3efcd01Safresh1 { 806f3efcd01Safresh1 use feature 'unicode_strings'; 807f3efcd01Safresh1 $cased = uc $char ne $char || lc $char ne $char; 808f3efcd01Safresh1 $folded_hex = ($cased) 809f3efcd01Safresh1 ? sprintf("%02x", ord lc $char) 810f3efcd01Safresh1 : $hex; 811f3efcd01Safresh1 #print STDERR "$hex, $folded_hex\n"; 812f3efcd01Safresh1 } 813f3efcd01Safresh1 814f3efcd01Safresh1 for my $fold ("", "i") { 815f3efcd01Safresh1 #next unless $fold; 816f3efcd01Safresh1 for my $charset ("", "u", "l", "aa") { 817f3efcd01Safresh1 #next if $charset eq "aa" && ! $fold; 818f3efcd01Safresh1 819f3efcd01Safresh1 my $modifiers = $fold . $charset; 820f3efcd01Safresh1 $modifiers = "(?$modifiers)" if $modifiers; 821f3efcd01Safresh1 822f3efcd01Safresh1 for my $upgrade ("", "(?8)") { 823f3efcd01Safresh1 push @single_tests, "$upgrade$modifiers\[\\x{$hex}\]"; 824f3efcd01Safresh1 if ($cp < 256 || $upgrade) { 825f3efcd01Safresh1 push @single_tests, get_compiled("$upgrade$modifiers\\x{$hex}"); 826f3efcd01Safresh1 } 827f3efcd01Safresh1 else { 828de8cc8edSafresh1 use feature 'fc'; 829de8cc8edSafresh1 830de8cc8edSafresh1 my %list = ( sprintf("%X", $cp) => 1 ); 831f3efcd01Safresh1 if ($fold) { 832de8cc8edSafresh1 for my $op (qw(fc lc uc)) { 833de8cc8edSafresh1 my $result = eval "$op(\"$char\")"; 834de8cc8edSafresh1 $list{sprintf "%X", ord $result} = 1; 835f3efcd01Safresh1 } 836f3efcd01Safresh1 } 837de8cc8edSafresh1 838de8cc8edSafresh1 my $mod_cp = $cp; 839de8cc8edSafresh1 my $op; 840de8cc8edSafresh1 841de8cc8edSafresh1 if (! $fold || scalar keys %list == 1) { 842de8cc8edSafresh1 $op = ($charset eq 'l') 843de8cc8edSafresh1 ? 'EXACTL' 844de8cc8edSafresh1 : ($cp < 256) 845de8cc8edSafresh1 ? 'EXACT' 846de8cc8edSafresh1 : 'EXACT_REQ8'; 847f3efcd01Safresh1 } 848f3efcd01Safresh1 else { 849de8cc8edSafresh1 $op = ($charset eq 'aa') 850de8cc8edSafresh1 ? 'EXACTFAA' 851de8cc8edSafresh1 : ($charset eq 'l') 852de8cc8edSafresh1 ? (($cp < 256) 853de8cc8edSafresh1 ? 'EXACTFL' 854de8cc8edSafresh1 : 'EXACTFLU8') 855de8cc8edSafresh1 : ($cp < 256) 856de8cc8edSafresh1 ? 'EXACTFU' 857de8cc8edSafresh1 : 'EXACTFU_REQ8'; 858de8cc8edSafresh1 $mod_cp = ord fc $char; 859f3efcd01Safresh1 } 860de8cc8edSafresh1 861de8cc8edSafresh1 push @single_tests, sprintf "$op <\\x{%X}>", $mod_cp; 862f3efcd01Safresh1 } 863f3efcd01Safresh1 } 864f3efcd01Safresh1 } 865f3efcd01Safresh1 } 866f3efcd01Safresh1} 867f3efcd01Safresh1 868f3efcd01Safresh1unshift @tests, @single_tests; 869f3efcd01Safresh1 8705759b3d2Safresh1plan(scalar (@tests - 1) / 2); # -1 because of the marker. 8715759b3d2Safresh1 8725759b3d2Safresh1my $skip_ebcdic = $::IS_EBCDIC; 8735759b3d2Safresh1while (defined (my $test = shift @tests)) { 8745759b3d2Safresh1 8755759b3d2Safresh1 if ($test eq 'ebcdic_ok_below_this_marker') { 8765759b3d2Safresh1 $skip_ebcdic = 0; 8775759b3d2Safresh1 next; 8785759b3d2Safresh1 } 8795759b3d2Safresh1 8805759b3d2Safresh1 my $expected = shift @tests; 8815759b3d2Safresh1 8825759b3d2Safresh1 SKIP: { 8835759b3d2Safresh1 skip("test not ported to EBCDIC", 1) if $skip_ebcdic; 8845759b3d2Safresh1 8855759b3d2Safresh1 my $display_expected = $expected 886de8cc8edSafresh1 =~ s/ HIGHEST_CP /$highest_cp_string/xgr; 887f3efcd01Safresh1 my $test_name = "Verify compilation of $test displays as" 888de8cc8edSafresh1 . " $expected"; 8895759b3d2Safresh1 890f3efcd01Safresh1 my $result = get_compiled($test); 891de8cc8edSafresh1 if ($expected =~ / ^ ANYOF[HR] /x) { 892f3efcd01Safresh1 like($result, qr/ ^ \Q$expected\E (?:\Q (First UTF-8 byte=\x\E 893de8cc8edSafresh1 [[:xdigit:]]{2} )? /x, $test_name); 8945759b3d2Safresh1 } 895f3efcd01Safresh1 else { 896de8cc8edSafresh1 is($result, $expected, $test_name); 8975759b3d2Safresh1 } 8985759b3d2Safresh1 } 8995759b3d2Safresh1} 900