/-- This set of tests checks the API, internals, and non-Perl stuff for UTF
    support, excluding Unicode properties. However, tests that give different
    results in 8-bit and 16-bit modes are excluded (see tests 16 and 17). --/

/\x{110000}/8DZ
Failed: character value in \x{...} sequence is too large at offset 9

/\x{ffffffff}/8
Failed: character value in \x{...} sequence is too large at offset 11

/\x{100000000}/8
Failed: character value in \x{...} sequence is too large at offset 12

/\x{d800}/8
Failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 7

/\x{dfff}/8
Failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 7

/\x{d7ff}/8

/\x{e000}/8

/^\x{100}a\x{1234}/8
    \x{100}a\x{1234}bcd
 0: \x{100}a\x{1234}

/\x{0041}\x{2262}\x{0391}\x{002e}/DZ8
------------------------------------------------------------------
        Bra
        A\x{2262}\x{391}.
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'A'
Need char = '.'
    \x{0041}\x{2262}\x{0391}\x{002e}
 0: A\x{2262}\x{391}.
    
/.{3,5}X/DZ8
------------------------------------------------------------------
        Bra
        Any{3}
        Any{0,2}
        X
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'X'
    \x{212ab}\x{212ab}\x{212ab}\x{861}X
 0: \x{212ab}\x{212ab}\x{212ab}\x{861}X

/.{3,5}?/DZ8
------------------------------------------------------------------
        Bra
        Any{3}
        Any{0,2}?
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
    \x{212ab}\x{212ab}\x{212ab}\x{861}
 0: \x{212ab}\x{212ab}\x{212ab}

/(?<=\C)X/8
Failed: \C not allowed in lookbehind assertion at offset 6

/^[ab]/8DZ
------------------------------------------------------------------
        Bra
        ^
        [ab]
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: anchored utf
No first char
No need char
    bar
 0: b
    *** Failers
No match
    c
No match
    \x{ff}
No match
    \x{100}  
No match

/^[^ab]/8DZ
------------------------------------------------------------------
        Bra
        ^
        [\x00-`c-\xff] (neg)
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: anchored utf
No first char
No need char
    c
 0: c
    \x{ff}
 0: \x{ff}
    \x{100}  
 0: \x{100}
    *** Failers 
 0: *
    aaa
No match
  
/\x{100}*(\d+|"(?1)")/8
    1234
 0: 1234
 1: 1234
    "1234" 
 0: "1234"
 1: "1234"
    \x{100}1234
 0: \x{100}1234
 1: 1234
    "\x{100}1234"  
 0: \x{100}1234
 1: 1234
    \x{100}\x{100}12ab 
 0: \x{100}\x{100}12
 1: 12
    \x{100}\x{100}"12" 
 0: \x{100}\x{100}"12"
 1: "12"
    *** Failers 
No match
    \x{100}\x{100}abcd
No match

/\x{100}*/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char

/a\x{100}*/8DZ
------------------------------------------------------------------
        Bra
        a
        \x{100}*
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'a'
No need char

/ab\x{100}*/8DZ
------------------------------------------------------------------
        Bra
        ab
        \x{100}*
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'a'
Need char = 'b'

/\x{100}*A/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*+
        A
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'A'
    A
 0: A

/\x{100}*\d(?R)/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*+
        \d
        Recurse
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char

/[Z\x{100}]/8DZ
------------------------------------------------------------------
        Bra
        [Z\x{100}]
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
    Z\x{100}
 0: Z
    \x{100}
 0: \x{100}
    \x{100}Z
 0: \x{100}
    *** Failers 
No match

/[\x{200}-\x{100}]/8
Failed: range out of order in character class at offset 15

/[Ā-Ą]/8
    \x{100}
 0: \x{100}
    \x{104}
 0: \x{104}
    *** Failers
No match
    \x{105}
No match
    \x{ff}    
No match

/[z-\x{100}]/8DZ
------------------------------------------------------------------
        Bra
        [z-\x{100}]
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char

/[z\Qa-d]Ā\E]/8DZ
------------------------------------------------------------------
        Bra
        [\-\]adz\x{100}]
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
    \x{100}
 0: \x{100}
    Ā 
 0: \x{100}

/[\xFF]/DZ
------------------------------------------------------------------
        Bra
        \x{ff}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
First char = \xff
No need char
    >\xff<
 0: \xff

/[^\xFF]/DZ
------------------------------------------------------------------
        Bra
        [^\x{ff}]
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char

/[Ä-Ü]/8
    Ö # Matches without Study
 0: \x{d6}
    \x{d6}
 0: \x{d6}
    
/[Ä-Ü]/8S
    Ö <-- Same with Study
 0: \x{d6}
    \x{d6}
 0: \x{d6}
    
/[\x{c4}-\x{dc}]/8 
    Ö # Matches without Study
 0: \x{d6}
    \x{d6} 
 0: \x{d6}

/[\x{c4}-\x{dc}]/8S
    Ö <-- Same with Study
 0: \x{d6}
    \x{d6} 
 0: \x{d6}

/[^\x{100}]abc(xyz(?1))/8DZ
------------------------------------------------------------------
        Bra
        [^\x{100}]
        abc
        CBra 1
        xyz
        Recurse
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
Need char = 'z'

/[ab\x{100}]abc(xyz(?1))/8DZ
------------------------------------------------------------------
        Bra
        [ab\x{100}]
        abc
        CBra 1
        xyz
        Recurse
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
Need char = 'z'

/(\x{100}(b(?2)c))?/DZ8
------------------------------------------------------------------
        Bra
        Brazero
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf
No first char
No need char

/(\x{100}(b(?2)c)){0,2}/DZ8
------------------------------------------------------------------
        Bra
        Brazero
        Bra
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Brazero
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf
No first char
No need char

/(\x{100}(b(?1)c))?/DZ8
------------------------------------------------------------------
        Bra
        Brazero
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf
No first char
No need char

/(\x{100}(b(?1)c)){0,2}/DZ8
------------------------------------------------------------------
        Bra
        Brazero
        Bra
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Brazero
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf
No first char
No need char

/\W/8
    A.B
 0: .
    A\x{100}B 
 0: \x{100}
  
/\w/8
    \x{100}X   
 0: X

/^\ሴ/8DZ
------------------------------------------------------------------
        Bra
        ^
        \x{1234}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: anchored utf
No first char
No need char

/\x{100}*\d/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*+
        \d
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char

/\x{100}*\s/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*+
        \s
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char

/\x{100}*\w/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*+
        \w
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char

/\x{100}*\D/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*
        \D
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char

/\x{100}*\S/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*
        \S
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char

/\x{100}*\W/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*
        \W
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char

/()()()()()()()()()()
 ()()()()()()()()()()
 ()()()()()()()()()()
 ()()()()()()()()()()
 A (x) (?41) B/8x
    AxxB     
Matched, but too many substrings
 0: AxxB
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 

/^[\x{100}\E-\Q\E\x{150}]/BZ8
------------------------------------------------------------------
        Bra
        ^
        [\x{100}-\x{150}]
        Ket
        End
------------------------------------------------------------------

/^[\QĀ\E-\QŐ\E]/BZ8
------------------------------------------------------------------
        Bra
        ^
        [\x{100}-\x{150}]
        Ket
        End
------------------------------------------------------------------

/^abc./mgx8<any>
    abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x{0085}abc7 \x{2028}abc8 \x{2029}abc9 JUNK
 0: abc1
 0: abc2
 0: abc3
 0: abc4
 0: abc5
 0: abc6
 0: abc7
 0: abc8
 0: abc9

/abc.$/mgx8<any>
    abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x{0085} abc7\x{2028} abc8\x{2029} abc9
 0: abc1
 0: abc2
 0: abc3
 0: abc4
 0: abc5
 0: abc6
 0: abc7
 0: abc8
 0: abc9

/^a\Rb/8<bsr_unicode>
    a\nb
 0: a\x{0a}b
    a\rb
 0: a\x{0d}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    a\x0bb
 0: a\x{0b}b
    a\x0cb
 0: a\x{0c}b
    a\x{85}b   
 0: a\x{85}b
    a\x{2028}b 
 0: a\x{2028}b
    a\x{2029}b 
 0: a\x{2029}b
    ** Failers
No match
    a\n\rb    
No match

/^a\R*b/8<bsr_unicode>
    ab
 0: ab
    a\nb
 0: a\x{0a}b
    a\rb
 0: a\x{0d}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    a\x0bb
 0: a\x{0b}b
    a\x0c\x{2028}\x{2029}b
 0: a\x{0c}\x{2028}\x{2029}b
    a\x{85}b   
 0: a\x{85}b
    a\n\rb    
 0: a\x{0a}\x{0d}b
    a\n\r\x{85}\x0cb 
 0: a\x{0a}\x{0d}\x{85}\x{0c}b

/^a\R+b/8<bsr_unicode>
    a\nb
 0: a\x{0a}b
    a\rb
 0: a\x{0d}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    a\x0bb
 0: a\x{0b}b
    a\x0c\x{2028}\x{2029}b
 0: a\x{0c}\x{2028}\x{2029}b
    a\x{85}b   
 0: a\x{85}b
    a\n\rb    
 0: a\x{0a}\x{0d}b
    a\n\r\x{85}\x0cb 
 0: a\x{0a}\x{0d}\x{85}\x{0c}b
    ** Failers
No match
    ab  
No match

/^a\R{1,3}b/8<bsr_unicode>
    a\nb
 0: a\x{0a}b
    a\n\rb
 0: a\x{0a}\x{0d}b
    a\n\r\x{85}b
 0: a\x{0a}\x{0d}\x{85}b
    a\r\n\r\nb 
 0: a\x{0d}\x{0a}\x{0d}\x{0a}b
    a\r\n\r\n\r\nb 
 0: a\x{0d}\x{0a}\x{0d}\x{0a}\x{0d}\x{0a}b
    a\n\r\n\rb
 0: a\x{0a}\x{0d}\x{0a}\x{0d}b
    a\n\n\r\nb 
 0: a\x{0a}\x{0a}\x{0d}\x{0a}b
    ** Failers
No match
    a\n\n\n\rb
No match
    a\r
No match

/\H\h\V\v/8
    X X\x0a
 0: X X\x{0a}
    X\x09X\x0b
 0: X\x{09}X\x{0b}
    ** Failers
No match
    \x{a0} X\x0a   
No match
    
/\H*\h+\V?\v{3,4}/8 
    \x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
 0: \x{09} \x{a0}X\x{0a}\x{0b}\x{0c}\x{0d}
    \x09\x20\x{a0}\x0a\x0b\x0c\x0d\x0a
 0: \x{09} \x{a0}\x{0a}\x{0b}\x{0c}\x{0d}
    \x09\x20\x{a0}\x0a\x0b\x0c
 0: \x{09} \x{a0}\x{0a}\x{0b}\x{0c}
    ** Failers 
No match
    \x09\x20\x{a0}\x0a\x0b
No match
     
/\H\h\V\v/8
    \x{3001}\x{3000}\x{2030}\x{2028}
 0: \x{3001}\x{3000}\x{2030}\x{2028}
    X\x{180e}X\x{85}
 0: X\x{180e}X\x{85}
    ** Failers
No match
    \x{2009} X\x0a   
No match
    
/\H*\h+\V?\v{3,4}/8 
    \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x0c\x0d\x0a
 0: \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x{0c}\x{0d}
    \x09\x{205f}\x{a0}\x0a\x{2029}\x0c\x{2028}\x0a
 0: \x{09}\x{205f}\x{a0}\x{0a}\x{2029}\x{0c}\x{2028}
    \x09\x20\x{202f}\x0a\x0b\x0c
 0: \x{09} \x{202f}\x{0a}\x{0b}\x{0c}
    ** Failers 
No match
    \x09\x{200a}\x{a0}\x{2028}\x0b
No match
     
/[\h]/8BZ
------------------------------------------------------------------
        Bra
        [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}]
        Ket
        End
------------------------------------------------------------------
    >\x{1680}
 0: \x{1680}

/[\h]{3,}/8BZ
------------------------------------------------------------------
        Bra
        [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}]{3,}
        Ket
        End
------------------------------------------------------------------
    >\x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}<
 0: \x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}

/[\v]/8BZ
------------------------------------------------------------------
        Bra
        [\x0a-\x0d\x85\x{2028}-\x{2029}]
        Ket
        End
------------------------------------------------------------------

/[\H]/8BZ
------------------------------------------------------------------
        Bra
        [\x00-\x08\x0a-\x1f!-\x9f\x{a1}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{10ffff}]
        Ket
        End
------------------------------------------------------------------

/[\V]/8BZ
------------------------------------------------------------------
        Bra
        [\x00-\x09\x0e-\x84\x{86}-\x{2027}\x{202a}-\x{10ffff}]
        Ket
        End
------------------------------------------------------------------

/.*$/8<any>
    \x{1ec5} 
 0: \x{1ec5}
    
/a\Rb/I8<bsr_anycrlf>
Capturing subpattern count = 0
Options: bsr_anycrlf utf
First char = 'a'
Need char = 'b'
    a\rb
 0: a\x{0d}b
    a\nb
 0: a\x{0a}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    ** Failers
No match
    a\x{85}b
No match
    a\x0bb     
No match

/a\Rb/I8<bsr_unicode>
Capturing subpattern count = 0
Options: bsr_unicode utf
First char = 'a'
Need char = 'b'
    a\rb
 0: a\x{0d}b
    a\nb
 0: a\x{0a}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    a\x{85}b
 0: a\x{85}b
    a\x0bb     
 0: a\x{0b}b
    ** Failers 
No match
    a\x{85}b\<bsr_anycrlf>
No match
    a\x0bb\<bsr_anycrlf>
No match
    
/a\R?b/I8<bsr_anycrlf>
Capturing subpattern count = 0
Options: bsr_anycrlf utf
First char = 'a'
Need char = 'b'
    a\rb
 0: a\x{0d}b
    a\nb
 0: a\x{0a}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    ** Failers
No match
    a\x{85}b
No match
    a\x0bb     
No match

/a\R?b/I8<bsr_unicode>
Capturing subpattern count = 0
Options: bsr_unicode utf
First char = 'a'
Need char = 'b'
    a\rb
 0: a\x{0d}b
    a\nb
 0: a\x{0a}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    a\x{85}b
 0: a\x{85}b
    a\x0bb     
 0: a\x{0b}b
    ** Failers 
No match
    a\x{85}b\<bsr_anycrlf>
No match
    a\x0bb\<bsr_anycrlf>
No match
 
/.*a.*=.b.*/8<ANY>
    QQQ\x{2029}ABCaXYZ=!bPQR
 0: ABCaXYZ=!bPQR
    ** Failers
No match
    a\x{2029}b
No match
    \x61\xe2\x80\xa9\x62 
No match

/[[:a\x{100}b:]]/8
Failed: unknown POSIX class name at offset 3

/a[^]b/<JS>8
    a\x{1234}b
 0: a\x{1234}b
    a\nb 
 0: a\x{0a}b
    ** Failers
No match
    ab  
No match
    
/a[^]+b/<JS>8
    aXb
 0: aXb
    a\nX\nX\x{1234}b 
 0: a\x{0a}X\x{0a}X\x{1234}b
    ** Failers
No match
    ab  
No match

/(\x{de})\1/
    \x{de}\x{de}
 0: \xde\xde
 1: \xde

/X/8f<any> 
    A\x{1ec5}ABCXYZ
 0: X

/Xa{2,4}b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa
    
/Xa{2,4}?b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa
    
/Xa{2,4}+b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa
    
/X\x{123}{2,4}b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X\x{123}{2,4}?b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X\x{123}{2,4}+b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X\x{123}{2,4}b/8
    Xx\P
No match
    X\x{123}x\P
No match
    X\x{123}\x{123}x\P 
No match
    X\x{123}\x{123}\x{123}x\P
No match
    X\x{123}\x{123}\x{123}\x{123}x\P 
No match
    
/X\x{123}{2,4}?b/8
    Xx\P
No match
    X\x{123}x\P
No match
    X\x{123}\x{123}x\P 
No match
    X\x{123}\x{123}\x{123}x\P
No match
    X\x{123}\x{123}\x{123}\x{123}x\P 
No match
    
/X\x{123}{2,4}+b/8
    Xx\P
No match
    X\x{123}x\P
No match
    X\x{123}\x{123}x\P 
No match
    X\x{123}\x{123}\x{123}x\P
No match
    X\x{123}\x{123}\x{123}\x{123}x\P 
No match
    
/X\d{2,4}b/8
    X\P
Partial match: X
    X3\P
Partial match: X3
    X33\P 
Partial match: X33
    X333\P
Partial match: X333
    X3333\P 
Partial match: X3333
    
/X\d{2,4}?b/8
    X\P
Partial match: X
    X3\P
Partial match: X3
    X33\P 
Partial match: X33
    X333\P
Partial match: X333
    X3333\P 
Partial match: X3333
    
/X\d{2,4}+b/8
    X\P
Partial match: X
    X3\P
Partial match: X3
    X33\P 
Partial match: X33
    X333\P
Partial match: X333
    X3333\P 
Partial match: X3333

/X\D{2,4}b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa
    
/X\D{2,4}?b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa
    
/X\D{2,4}+b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa

/X\D{2,4}b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X\D{2,4}?b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X\D{2,4}+b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}

/X[abc]{2,4}b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa
    
/X[abc]{2,4}?b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa
    
/X[abc]{2,4}+b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa

/X[abc\x{123}]{2,4}b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X[abc\x{123}]{2,4}?b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X[abc\x{123}]{2,4}+b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}

/X[^a]{2,4}b/8
    X\P
Partial match: X
    Xz\P
Partial match: Xz
    Xzz\P 
Partial match: Xzz
    Xzzz\P
Partial match: Xzzz
    Xzzzz\P 
Partial match: Xzzzz
    
/X[^a]{2,4}?b/8
    X\P
Partial match: X
    Xz\P
Partial match: Xz
    Xzz\P 
Partial match: Xzz
    Xzzz\P
Partial match: Xzzz
    Xzzzz\P 
Partial match: Xzzzz
    
/X[^a]{2,4}+b/8
    X\P
Partial match: X
    Xz\P
Partial match: Xz
    Xzz\P 
Partial match: Xzz
    Xzzz\P
Partial match: Xzzz
    Xzzzz\P 
Partial match: Xzzzz

/X[^a]{2,4}b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X[^a]{2,4}?b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X[^a]{2,4}+b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}

/(Y)X\1{2,4}b/8
    YX\P
Partial match: YX
    YXY\P
Partial match: YXY
    YXYY\P 
Partial match: YXYY
    YXYYY\P
Partial match: YXYYY
    YXYYYY\P 
Partial match: YXYYYY
    
/(Y)X\1{2,4}?b/8
    YX\P
Partial match: YX
    YXY\P
Partial match: YXY
    YXYY\P 
Partial match: YXYY
    YXYYY\P
Partial match: YXYYY
    YXYYYY\P 
Partial match: YXYYYY
    
/(Y)X\1{2,4}+b/8
    YX\P
Partial match: YX
    YXY\P
Partial match: YXY
    YXYY\P 
Partial match: YXYY
    YXYYY\P
Partial match: YXYYY
    YXYYYY\P 
Partial match: YXYYYY

/(\x{123})X\1{2,4}b/8
    \x{123}X\P
Partial match: \x{123}X
    \x{123}X\x{123}\P
Partial match: \x{123}X\x{123}
    \x{123}X\x{123}\x{123}\P 
Partial match: \x{123}X\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\P
Partial match: \x{123}X\x{123}\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}
    
/(\x{123})X\1{2,4}?b/8
    \x{123}X\P
Partial match: \x{123}X
    \x{123}X\x{123}\P
Partial match: \x{123}X\x{123}
    \x{123}X\x{123}\x{123}\P 
Partial match: \x{123}X\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\P
Partial match: \x{123}X\x{123}\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}
    
/(\x{123})X\1{2,4}+b/8
    \x{123}X\P
Partial match: \x{123}X
    \x{123}X\x{123}\P
Partial match: \x{123}X\x{123}
    \x{123}X\x{123}\x{123}\P 
Partial match: \x{123}X\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\P
Partial match: \x{123}X\x{123}\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}

/\bthe cat\b/8
    the cat\P
 0: the cat
    the cat\P\P
Partial match: the cat

/abcd*/8
    xxxxabcd\P
 0: abcd
    xxxxabcd\P\P
Partial match: abcd

/abcd*/i8
    xxxxabcd\P
 0: abcd
    xxxxabcd\P\P
Partial match: abcd
    XXXXABCD\P
 0: ABCD
    XXXXABCD\P\P
Partial match: ABCD

/abc\d*/8
    xxxxabc1\P
 0: abc1
    xxxxabc1\P\P
Partial match: abc1

/(a)bc\1*/8
    xxxxabca\P
 0: abca
 1: a
    xxxxabca\P\P
Partial match: abca

/abc[de]*/8
    xxxxabcde\P
 0: abcde
    xxxxabcde\P\P
Partial match: abcde

/X\W{3}X/8
    \PX
Partial match: X

/\sxxx\s/8T1
    AB\x{85}xxx\x{a0}XYZ
 0: \x{85}xxx\x{a0}
    AB\x{a0}xxx\x{85}XYZ
 0: \x{a0}xxx\x{85}

/\S \S/8T1
    \x{a2} \x{84} 
 0: \x{a2} \x{84}

'A#хц'8x<any>BZ
------------------------------------------------------------------
        Bra
        A
        Ket
        End
------------------------------------------------------------------

'A#хц
  PQ'8x<any>BZ
------------------------------------------------------------------
        Bra
        APQ
        Ket
        End
------------------------------------------------------------------
  
/a+#хaa
  z#XX?/8x<any>BZ 
------------------------------------------------------------------
        Bra
        a++
        z
        Ket
        End
------------------------------------------------------------------

/a+#хaa
  z#х?/8x<any>BZ 
------------------------------------------------------------------
        Bra
        a++
        z
        Ket
        End
------------------------------------------------------------------

/\g{A}xxx#bXX(?'A'123)
(?'A'456)/8x<any>BZ
------------------------------------------------------------------
        Bra
        \1
        xxx
        CBra 1
        456
        Ket
        Ket
        End
------------------------------------------------------------------

/\g{A}xxx#bх(?'A'123)
(?'A'456)/8x<any>BZ
------------------------------------------------------------------
        Bra
        \1
        xxx
        CBra 1
        456
        Ket
        Ket
        End
------------------------------------------------------------------

/^\cģ/8
Failed: \c must be followed by an ASCII character at offset 3

/(\R*)(.)/s8
    \r\n
 0: \x{0d}
 1: 
 2: \x{0d}
    \r\r\n\n\r 
 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
 1: \x{0d}\x{0d}\x{0a}\x{0a}
 2: \x{0d}
    \r\r\n\n\r\n 
 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
 1: \x{0d}\x{0d}\x{0a}\x{0a}
 2: \x{0d}

/(\R)*(.)/s8
    \r\n
 0: \x{0d}
 1: <unset>
 2: \x{0d}
    \r\r\n\n\r 
 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
 1: \x{0a}
 2: \x{0d}
    \r\r\n\n\r\n 
 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
 1: \x{0a}
 2: \x{0d}

/[^\x{1234}]+/iS8I   
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 1
No set of starting bytes

/[^\x{1234}]+?/iS8I   
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 1
No set of starting bytes

/[^\x{1234}]++/iS8I   
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 1
No set of starting bytes

/[^\x{1234}]{2}/iS8I
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 2
No set of starting bytes

//<bsr_anycrlf><bsr_unicode>
Failed: inconsistent NEWLINE options at offset 0

/f.*/
    \P\Pfor
Partial match: for

/f.*/s
    \P\Pfor
Partial match: for

/f.*/8
    \P\Pfor
Partial match: for

/f.*/8s
    \P\Pfor
Partial match: for
    
/\x{d7ff}\x{e000}/8

/\x{d800}/8
Failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 7

/\x{dfff}/8 
Failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 7

/\h+/8
    \x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
 0: \x{1680}\x{2000}\x{202f}\x{3000}
    \x{3001}\x{2fff}\x{200a}\x{a0}\x{2000}
 0: \x{200a}\x{a0}\x{2000}

/[\h\x{e000}]+/8BZ
------------------------------------------------------------------
        Bra
        [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}\x{e000}]+
        Ket
        End
------------------------------------------------------------------
    \x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
 0: \x{1680}\x{2000}\x{202f}\x{3000}
    \x{3001}\x{2fff}\x{200a}\x{a0}\x{2000}
 0: \x{200a}\x{a0}\x{2000}

/\H+/8
    \x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
 0: \x{167f}\x{1681}\x{180d}\x{180f}
    \x{2000}\x{200a}\x{1fff}\x{200b}
 0: \x{1fff}\x{200b}
    \x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
 0: \x{202e}\x{2030}\x{205e}\x{2060}
    \x{a0}\x{3000}\x{9f}\x{a1}\x{2fff}\x{3001}
 0: \x{9f}\x{a1}\x{2fff}\x{3001}

/[\H\x{d7ff}]+/8BZ
------------------------------------------------------------------
        Bra
        [\x00-\x08\x0a-\x1f!-\x9f\x{a1}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{10ffff}\x{d7ff}]+
        Ket
        End
------------------------------------------------------------------
    \x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
 0: \x{167f}\x{1681}\x{180d}\x{180f}
    \x{2000}\x{200a}\x{1fff}\x{200b}
 0: \x{1fff}\x{200b}
    \x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
 0: \x{202e}\x{2030}\x{205e}\x{2060}
    \x{a0}\x{3000}\x{9f}\x{a1}\x{2fff}\x{3001}
 0: \x{9f}\x{a1}\x{2fff}\x{3001}

/\v+/8
    \x{2027}\x{2030}\x{2028}\x{2029}
 0: \x{2028}\x{2029}
    \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
 0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}

/[\v\x{e000}]+/8BZ
------------------------------------------------------------------
        Bra
        [\x0a-\x0d\x85\x{2028}-\x{2029}\x{e000}]+
        Ket
        End
------------------------------------------------------------------
    \x{2027}\x{2030}\x{2028}\x{2029}
 0: \x{2028}\x{2029}
    \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
 0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}

/\V+/8
    \x{2028}\x{2029}\x{2027}\x{2030}
 0: \x{2027}\x{2030}
    \x{85}\x0a\x0b\x0c\x0d\x09\x0e\x{84}\x{86}
 0: \x{09}\x{0e}\x{84}\x{86}

/[\V\x{d7ff}]+/8BZ
------------------------------------------------------------------
        Bra
        [\x00-\x09\x0e-\x84\x{86}-\x{2027}\x{202a}-\x{10ffff}\x{d7ff}]+
        Ket
        End
------------------------------------------------------------------
    \x{2028}\x{2029}\x{2027}\x{2030}
 0: \x{2027}\x{2030}
    \x{85}\x0a\x0b\x0c\x0d\x09\x0e\x{84}\x{86}
 0: \x{09}\x{0e}\x{84}\x{86}

/\R+/8<bsr_unicode>
    \x{2027}\x{2030}\x{2028}\x{2029}
 0: \x{2028}\x{2029}
    \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
 0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}

/(..)\1/8
    ab\P
Partial match: ab
    aba\P
Partial match: aba
    abab\P
 0: abab
 1: ab

/(..)\1/8i
    ab\P
Partial match: ab
    abA\P
Partial match: abA
    aBAb\P
 0: aBAb
 1: aB

/(..)\1{2,}/8
    ab\P
Partial match: ab
    aba\P
Partial match: aba
    abab\P
Partial match: abab
    ababa\P
Partial match: ababa
    ababab\P
 0: ababab
 1: ab
    ababab\P\P
Partial match: ababab
    abababa\P
 0: ababab
 1: ab
    abababa\P\P
Partial match: abababa

/(..)\1{2,}/8i
    ab\P
Partial match: ab
    aBa\P
Partial match: aBa
    aBAb\P
Partial match: aBAb
    AbaBA\P
Partial match: AbaBA
    abABAb\P
 0: abABAb
 1: ab
    aBAbaB\P\P
Partial match: aBAbaB
    abABabA\P
 0: abABab
 1: ab
    abaBABa\P\P
Partial match: abaBABa

/(..)\1{2,}?x/8i
    ab\P
Partial match: ab
    abA\P
Partial match: abA
    aBAb\P
Partial match: aBAb
    abaBA\P
Partial match: abaBA
    abAbaB\P
Partial match: abAbaB
    abaBabA\P
Partial match: abaBabA
    abAbABaBx\P
 0: abAbABaBx
 1: ab

/./8<CRLF>
    \r\P
 0: \x{0d}
    \r\P\P 
Partial match: \x{0d}
  
/.{2,3}/8<CRLF>
    \r\P 
Partial match: \x{0d}
    \r\P\P
Partial match: \x{0d}
    \r\r\P
 0: \x{0d}\x{0d}
    \r\r\P\P
Partial match: \x{0d}\x{0d}
    \r\r\r\P
 0: \x{0d}\x{0d}\x{0d}
    \r\r\r\P\P     
Partial match: \x{0d}\x{0d}\x{0d}

/.{2,3}?/8<CRLF>
    \r\P 
Partial match: \x{0d}
    \r\P\P
Partial match: \x{0d}
    \r\r\P
 0: \x{0d}\x{0d}
    \r\r\P\P
Partial match: \x{0d}\x{0d}
    \r\r\r\P
 0: \x{0d}\x{0d}
    \r\r\r\P\P     
 0: \x{0d}\x{0d}

/[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/8BZ
------------------------------------------------------------------
        Bra
        [^\x{100}]
        [^\x{1234}]
        [^\x{ffff}]
        [^\x{10000}]
        [^\x{10ffff}]
        Ket
        End
------------------------------------------------------------------

/[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/8BZi
------------------------------------------------------------------
        Bra
     /i [^\x{100}]
     /i [^\x{1234}]
     /i [^\x{ffff}]
     /i [^\x{10000}]
     /i [^\x{10ffff}]
        Ket
        End
------------------------------------------------------------------

/[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/8BZ
------------------------------------------------------------------
        Bra
        [^\x{100}]*
        [^\x{10000}]+
        [^\x{10ffff}]??
        [^\x{8000}]{4}
        [^\x{8000}]*
        [^\x{7fff}]{2}
        [^\x{7fff}]{0,7}?
        [^\x{fffff}]{5}
        [^\x{fffff}]?+
        Ket
        End
------------------------------------------------------------------

/[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/8BZi
------------------------------------------------------------------
        Bra
     /i [^\x{100}]*
     /i [^\x{10000}]+
     /i [^\x{10ffff}]??
     /i [^\x{8000}]{4}
     /i [^\x{8000}]*
     /i [^\x{7fff}]{2}
     /i [^\x{7fff}]{0,7}?
        Once
     /i [^\x{fffff}]{5}
     /i [^\x{fffff}]?
        Ket
        Ket
        End
------------------------------------------------------------------

/(?<=\x{1234}\x{1234})\bxy/I8
Capturing subpattern count = 0
Max lookbehind = 2
Options: utf
First char = 'x'
Need char = 'y'

/(?<!^)ETA/8
    ETA
No match

/\u0100/<JS>8BZ
------------------------------------------------------------------
        Bra
        \x{100}
        Ket
        End
------------------------------------------------------------------

/[\u0100-\u0200]/<JS>8BZ
------------------------------------------------------------------
        Bra
        [\x{100}-\x{200}]
        Ket
        End
------------------------------------------------------------------

/\ud800/<JS>8
Failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 5

/-- End of testinput5 --/