/*! @author Toru Nagashima <https://github.com/mysticatea> */
'use strict';

Object.defineProperty(exports, '__esModule', { value: true });



var ast = /*#__PURE__*/Object.freeze({

});

function isIdStart(cp) {
    if (cp < 0x41)
        return false;
    if (cp < 0x5b)
        return true;
    if (cp < 0x61)
        return false;
    if (cp < 0x7b)
        return true;
    return isLargeIdStart(cp);
}
function isIdContinue(cp) {
    if (cp < 0x30)
        return false;
    if (cp < 0x3a)
        return true;
    if (cp < 0x41)
        return false;
    if (cp < 0x5b)
        return true;
    if (cp === 0x5f)
        return true;
    if (cp < 0x61)
        return false;
    if (cp < 0x7b)
        return true;
    return isLargeIdStart(cp) || isLargeIdContinue(cp);
}
function isLargeIdStart(cp) {
    if (cp < 0x30a1) {
        if (cp < 0xec0) {
            if (cp < 0xa35) {
                if (cp < 0x6e5) {
                    if (cp < 0x37a) {
                        if (cp < 0x294) {
                            if (cp < 0xf8) {
                                if (cp === 0xaa)
                                    return true;
                                if (cp === 0xb5)
                                    return true;
                                if (cp === 0xba)
                                    return true;
                                if (cp < 0xc0)
                                    return false;
                                if (cp < 0xd7)
                                    return true;
                                if (cp < 0xd8)
                                    return false;
                                if (cp < 0xf7)
                                    return true;
                                return false;
                            }
                            if (cp < 0x1bb)
                                return true;
                            if (cp === 0x1bb)
                                return true;
                            if (cp < 0x1bc)
                                return false;
                            if (cp < 0x1c0)
                                return true;
                            if (cp < 0x1c0)
                                return false;
                            if (cp < 0x1c4)
                                return true;
                            if (cp < 0x1c4)
                                return false;
                            if (cp < 0x294)
                                return true;
                            return false;
                        }
                        if (cp < 0x2ec) {
                            if (cp === 0x294)
                                return true;
                            if (cp < 0x295)
                                return false;
                            if (cp < 0x2b0)
                                return true;
                            if (cp < 0x2b0)
                                return false;
                            if (cp < 0x2c2)
                                return true;
                            if (cp < 0x2c6)
                                return false;
                            if (cp < 0x2d2)
                                return true;
                            if (cp < 0x2e0)
                                return false;
                            if (cp < 0x2e5)
                                return true;
                            return false;
                        }
                        if (cp === 0x2ec)
                            return true;
                        if (cp === 0x2ee)
                            return true;
                        if (cp < 0x370)
                            return false;
                        if (cp < 0x374)
                            return true;
                        if (cp === 0x374)
                            return true;
                        if (cp < 0x376)
                            return false;
                        if (cp < 0x378)
                            return true;
                        return false;
                    }
                    if (cp < 0x531) {
                        if (cp < 0x38c) {
                            if (cp === 0x37a)
                                return true;
                            if (cp < 0x37b)
                                return false;
                            if (cp < 0x37e)
                                return true;
                            if (cp === 0x37f)
                                return true;
                            if (cp === 0x386)
                                return true;
                            if (cp < 0x388)
                                return false;
                            if (cp < 0x38b)
                                return true;
                            return false;
                        }
                        if (cp === 0x38c)
                            return true;
                        if (cp < 0x38e)
                            return false;
                        if (cp < 0x3a2)
                            return true;
                        if (cp < 0x3a3)
                            return false;
                        if (cp < 0x3f6)
                            return true;
                        if (cp < 0x3f7)
                            return false;
                        if (cp < 0x482)
                            return true;
                        if (cp < 0x48a)
                            return false;
                        if (cp < 0x530)
                            return true;
                        return false;
                    }
                    if (cp < 0x620) {
                        if (cp < 0x531)
                            return false;
                        if (cp < 0x557)
                            return true;
                        if (cp === 0x559)
                            return true;
                        if (cp < 0x560)
                            return false;
                        if (cp < 0x589)
                            return true;
                        if (cp < 0x5d0)
                            return false;
                        if (cp < 0x5eb)
                            return true;
                        if (cp < 0x5ef)
                            return false;
                        if (cp < 0x5f3)
                            return true;
                        return false;
                    }
                    if (cp < 0x640)
                        return true;
                    if (cp === 0x640)
                        return true;
                    if (cp < 0x641)
                        return false;
                    if (cp < 0x64b)
                        return true;
                    if (cp < 0x66e)
                        return false;
                    if (cp < 0x670)
                        return true;
                    if (cp < 0x671)
                        return false;
                    if (cp < 0x6d4)
                        return true;
                    if (cp === 0x6d5)
                        return true;
                    return false;
                }
                if (cp < 0x950) {
                    if (cp < 0x7fa) {
                        if (cp < 0x712) {
                            if (cp < 0x6e5)
                                return false;
                            if (cp < 0x6e7)
                                return true;
                            if (cp < 0x6ee)
                                return false;
                            if (cp < 0x6f0)
                                return true;
                            if (cp < 0x6fa)
                                return false;
                            if (cp < 0x6fd)
                                return true;
                            if (cp === 0x6ff)
                                return true;
                            if (cp === 0x710)
                                return true;
                            return false;
                        }
                        if (cp < 0x730)
                            return true;
                        if (cp < 0x74d)
                            return false;
                        if (cp < 0x7a6)
                            return true;
                        if (cp === 0x7b1)
                            return true;
                        if (cp < 0x7ca)
                            return false;
                        if (cp < 0x7eb)
                            return true;
                        if (cp < 0x7f4)
                            return false;
                        if (cp < 0x7f6)
                            return true;
                        return false;
                    }
                    if (cp < 0x840) {
                        if (cp === 0x7fa)
                            return true;
                        if (cp < 0x800)
                            return false;
                        if (cp < 0x816)
                            return true;
                        if (cp === 0x81a)
                            return true;
                        if (cp === 0x824)
                            return true;
                        if (cp === 0x828)
                            return true;
                        return false;
                    }
                    if (cp < 0x859)
                        return true;
                    if (cp < 0x860)
                        return false;
                    if (cp < 0x86b)
                        return true;
                    if (cp < 0x8a0)
                        return false;
                    if (cp < 0x8b5)
                        return true;
                    if (cp < 0x8b6)
                        return false;
                    if (cp < 0x8be)
                        return true;
                    if (cp < 0x904)
                        return false;
                    if (cp < 0x93a)
                        return true;
                    if (cp === 0x93d)
                        return true;
                    return false;
                }
                if (cp < 0x9bd) {
                    if (cp < 0x98f) {
                        if (cp === 0x950)
                            return true;
                        if (cp < 0x958)
                            return false;
                        if (cp < 0x962)
                            return true;
                        if (cp === 0x971)
                            return true;
                        if (cp < 0x972)
                            return false;
                        if (cp < 0x981)
                            return true;
                        if (cp < 0x985)
                            return false;
                        if (cp < 0x98d)
                            return true;
                        return false;
                    }
                    if (cp < 0x991)
                        return true;
                    if (cp < 0x993)
                        return false;
                    if (cp < 0x9a9)
                        return true;
                    if (cp < 0x9aa)
                        return false;
                    if (cp < 0x9b1)
                        return true;
                    if (cp === 0x9b2)
                        return true;
                    if (cp < 0x9b6)
                        return false;
                    if (cp < 0x9ba)
                        return true;
                    return false;
                }
                if (cp < 0x9fc) {
                    if (cp === 0x9bd)
                        return true;
                    if (cp === 0x9ce)
                        return true;
                    if (cp < 0x9dc)
                        return false;
                    if (cp < 0x9de)
                        return true;
                    if (cp < 0x9df)
                        return false;
                    if (cp < 0x9e2)
                        return true;
                    if (cp < 0x9f0)
                        return false;
                    if (cp < 0x9f2)
                        return true;
                    return false;
                }
                if (cp === 0x9fc)
                    return true;
                if (cp < 0xa05)
                    return false;
                if (cp < 0xa0b)
                    return true;
                if (cp < 0xa0f)
                    return false;
                if (cp < 0xa11)
                    return true;
                if (cp < 0xa13)
                    return false;
                if (cp < 0xa29)
                    return true;
                if (cp < 0xa2a)
                    return false;
                if (cp < 0xa31)
                    return true;
                if (cp < 0xa32)
                    return false;
                if (cp < 0xa34)
                    return true;
                return false;
            }
            if (cp < 0xc60) {
                if (cp < 0xb3d) {
                    if (cp < 0xab5) {
                        if (cp < 0xa85) {
                            if (cp < 0xa35)
                                return false;
                            if (cp < 0xa37)
                                return true;
                            if (cp < 0xa38)
                                return false;
                            if (cp < 0xa3a)
                                return true;
                            if (cp < 0xa59)
                                return false;
                            if (cp < 0xa5d)
                                return true;
                            if (cp === 0xa5e)
                                return true;
                            if (cp < 0xa72)
                                return false;
                            if (cp < 0xa75)
                                return true;
                            return false;
                        }
                        if (cp < 0xa8e)
                            return true;
                        if (cp < 0xa8f)
                            return false;
                        if (cp < 0xa92)
                            return true;
                        if (cp < 0xa93)
                            return false;
                        if (cp < 0xaa9)
                            return true;
                        if (cp < 0xaaa)
                            return false;
                        if (cp < 0xab1)
                            return true;
                        if (cp < 0xab2)
                            return false;
                        if (cp < 0xab4)
                            return true;
                        return false;
                    }
                    if (cp < 0xb05) {
                        if (cp < 0xab5)
                            return false;
                        if (cp < 0xaba)
                            return true;
                        if (cp === 0xabd)
                            return true;
                        if (cp === 0xad0)
                            return true;
                        if (cp < 0xae0)
                            return false;
                        if (cp < 0xae2)
                            return true;
                        if (cp === 0xaf9)
                            return true;
                        return false;
                    }
                    if (cp < 0xb0d)
                        return true;
                    if (cp < 0xb0f)
                        return false;
                    if (cp < 0xb11)
                        return true;
                    if (cp < 0xb13)
                        return false;
                    if (cp < 0xb29)
                        return true;
                    if (cp < 0xb2a)
                        return false;
                    if (cp < 0xb31)
                        return true;
                    if (cp < 0xb32)
                        return false;
                    if (cp < 0xb34)
                        return true;
                    if (cp < 0xb35)
                        return false;
                    if (cp < 0xb3a)
                        return true;
                    return false;
                }
                if (cp < 0xb9e) {
                    if (cp < 0xb85) {
                        if (cp === 0xb3d)
                            return true;
                        if (cp < 0xb5c)
                            return false;
                        if (cp < 0xb5e)
                            return true;
                        if (cp < 0xb5f)
                            return false;
                        if (cp < 0xb62)
                            return true;
                        if (cp === 0xb71)
                            return true;
                        if (cp === 0xb83)
                            return true;
                        return false;
                    }
                    if (cp < 0xb8b)
                        return true;
                    if (cp < 0xb8e)
                        return false;
                    if (cp < 0xb91)
                        return true;
                    if (cp < 0xb92)
                        return false;
                    if (cp < 0xb96)
                        return true;
                    if (cp < 0xb99)
                        return false;
                    if (cp < 0xb9b)
                        return true;
                    if (cp === 0xb9c)
                        return true;
                    return false;
                }
                if (cp < 0xc05) {
                    if (cp < 0xb9e)
                        return false;
                    if (cp < 0xba0)
                        return true;
                    if (cp < 0xba3)
                        return false;
                    if (cp < 0xba5)
                        return true;
                    if (cp < 0xba8)
                        return false;
                    if (cp < 0xbab)
                        return true;
                    if (cp < 0xbae)
                        return false;
                    if (cp < 0xbba)
                        return true;
                    if (cp === 0xbd0)
                        return true;
                    return false;
                }
                if (cp < 0xc0d)
                    return true;
                if (cp < 0xc0e)
                    return false;
                if (cp < 0xc11)
                    return true;
                if (cp < 0xc12)
                    return false;
                if (cp < 0xc29)
                    return true;
                if (cp < 0xc2a)
                    return false;
                if (cp < 0xc3a)
                    return true;
                if (cp === 0xc3d)
                    return true;
                if (cp < 0xc58)
                    return false;
                if (cp < 0xc5b)
                    return true;
                return false;
            }
            if (cp < 0xdb3) {
                if (cp < 0xcf1) {
                    if (cp < 0xcaa) {
                        if (cp < 0xc60)
                            return false;
                        if (cp < 0xc62)
                            return true;
                        if (cp === 0xc80)
                            return true;
                        if (cp < 0xc85)
                            return false;
                        if (cp < 0xc8d)
                            return true;
                        if (cp < 0xc8e)
                            return false;
                        if (cp < 0xc91)
                            return true;
                        if (cp < 0xc92)
                            return false;
                        if (cp < 0xca9)
                            return true;
                        return false;
                    }
                    if (cp < 0xcb4)
                        return true;
                    if (cp < 0xcb5)
                        return false;
                    if (cp < 0xcba)
                        return true;
                    if (cp === 0xcbd)
                        return true;
                    if (cp === 0xcde)
                        return true;
                    if (cp < 0xce0)
                        return false;
                    if (cp < 0xce2)
                        return true;
                    return false;
                }
                if (cp < 0xd4e) {
                    if (cp < 0xcf1)
                        return false;
                    if (cp < 0xcf3)
                        return true;
                    if (cp < 0xd05)
                        return false;
                    if (cp < 0xd0d)
                        return true;
                    if (cp < 0xd0e)
                        return false;
                    if (cp < 0xd11)
                        return true;
                    if (cp < 0xd12)
                        return false;
                    if (cp < 0xd3b)
                        return true;
                    if (cp === 0xd3d)
                        return true;
                    return false;
                }
                if (cp === 0xd4e)
                    return true;
                if (cp < 0xd54)
                    return false;
                if (cp < 0xd57)
                    return true;
                if (cp < 0xd5f)
                    return false;
                if (cp < 0xd62)
                    return true;
                if (cp < 0xd7a)
                    return false;
                if (cp < 0xd80)
                    return true;
                if (cp < 0xd85)
                    return false;
                if (cp < 0xd97)
                    return true;
                if (cp < 0xd9a)
                    return false;
                if (cp < 0xdb2)
                    return true;
                return false;
            }
            if (cp < 0xe8a) {
                if (cp < 0xe40) {
                    if (cp < 0xdb3)
                        return false;
                    if (cp < 0xdbc)
                        return true;
                    if (cp === 0xdbd)
                        return true;
                    if (cp < 0xdc0)
                        return false;
                    if (cp < 0xdc7)
                        return true;
                    if (cp < 0xe01)
                        return false;
                    if (cp < 0xe31)
                        return true;
                    if (cp < 0xe32)
                        return false;
                    if (cp < 0xe34)
                        return true;
                    return false;
                }
                if (cp < 0xe46)
                    return true;
                if (cp === 0xe46)
                    return true;
                if (cp < 0xe81)
                    return false;
                if (cp < 0xe83)
                    return true;
                if (cp === 0xe84)
                    return true;
                if (cp < 0xe87)
                    return false;
                if (cp < 0xe89)
                    return true;
                return false;
            }
            if (cp < 0xea5) {
                if (cp === 0xe8a)
                    return true;
                if (cp === 0xe8d)
                    return true;
                if (cp < 0xe94)
                    return false;
                if (cp < 0xe98)
                    return true;
                if (cp < 0xe99)
                    return false;
                if (cp < 0xea0)
                    return true;
                if (cp < 0xea1)
                    return false;
                if (cp < 0xea4)
                    return true;
                return false;
            }
            if (cp === 0xea5)
                return true;
            if (cp === 0xea7)
                return true;
            if (cp < 0xeaa)
                return false;
            if (cp < 0xeac)
                return true;
            if (cp < 0xead)
                return false;
            if (cp < 0xeb1)
                return true;
            if (cp < 0xeb2)
                return false;
            if (cp < 0xeb4)
                return true;
            if (cp === 0xebd)
                return true;
            return false;
        }
        if (cp < 0x1ce9) {
            if (cp < 0x166f) {
                if (cp < 0x10fd) {
                    if (cp < 0x105a) {
                        if (cp < 0xf49) {
                            if (cp < 0xec0)
                                return false;
                            if (cp < 0xec5)
                                return true;
                            if (cp === 0xec6)
                                return true;
                            if (cp < 0xedc)
                                return false;
                            if (cp < 0xee0)
                                return true;
                            if (cp === 0xf00)
                                return true;
                            if (cp < 0xf40)
                                return false;
                            if (cp < 0xf48)
                                return true;
                            return false;
                        }
                        if (cp < 0xf6d)
                            return true;
                        if (cp < 0xf88)
                            return false;
                        if (cp < 0xf8d)
                            return true;
                        if (cp < 0x1000)
                            return false;
                        if (cp < 0x102b)
                            return true;
                        if (cp === 0x103f)
                            return true;
                        if (cp < 0x1050)
                            return false;
                        if (cp < 0x1056)
                            return true;
                        return false;
                    }
                    if (cp < 0x108e) {
                        if (cp < 0x105a)
                            return false;
                        if (cp < 0x105e)
                            return true;
                        if (cp === 0x1061)
                            return true;
                        if (cp < 0x1065)
                            return false;
                        if (cp < 0x1067)
                            return true;
                        if (cp < 0x106e)
                            return false;
                        if (cp < 0x1071)
                            return true;
                        if (cp < 0x1075)
                            return false;
                        if (cp < 0x1082)
                            return true;
                        return false;
                    }
                    if (cp === 0x108e)
                        return true;
                    if (cp < 0x10a0)
                        return false;
                    if (cp < 0x10c6)
                        return true;
                    if (cp === 0x10c7)
                        return true;
                    if (cp === 0x10cd)
                        return true;
                    if (cp < 0x10d0)
                        return false;
                    if (cp < 0x10fb)
                        return true;
                    if (cp === 0x10fc)
                        return true;
                    return false;
                }
                if (cp < 0x12b8) {
                    if (cp < 0x125a) {
                        if (cp < 0x10fd)
                            return false;
                        if (cp < 0x1100)
                            return true;
                        if (cp < 0x1100)
                            return false;
                        if (cp < 0x1249)
                            return true;
                        if (cp < 0x124a)
                            return false;
                        if (cp < 0x124e)
                            return true;
                        if (cp < 0x1250)
                            return false;
                        if (cp < 0x1257)
                            return true;
                        if (cp === 0x1258)
                            return true;
                        return false;
                    }
                    if (cp < 0x125e)
                        return true;
                    if (cp < 0x1260)
                        return false;
                    if (cp < 0x1289)
                        return true;
                    if (cp < 0x128a)
                        return false;
                    if (cp < 0x128e)
                        return true;
                    if (cp < 0x1290)
                        return false;
                    if (cp < 0x12b1)
                        return true;
                    if (cp < 0x12b2)
                        return false;
                    if (cp < 0x12b6)
                        return true;
                    return false;
                }
                if (cp < 0x1312) {
                    if (cp < 0x12b8)
                        return false;
                    if (cp < 0x12bf)
                        return true;
                    if (cp === 0x12c0)
                        return true;
                    if (cp < 0x12c2)
                        return false;
                    if (cp < 0x12c6)
                        return true;
                    if (cp < 0x12c8)
                        return false;
                    if (cp < 0x12d7)
                        return true;
                    if (cp < 0x12d8)
                        return false;
                    if (cp < 0x1311)
                        return true;
                    return false;
                }
                if (cp < 0x1316)
                    return true;
                if (cp < 0x1318)
                    return false;
                if (cp < 0x135b)
                    return true;
                if (cp < 0x1380)
                    return false;
                if (cp < 0x1390)
                    return true;
                if (cp < 0x13a0)
                    return false;
                if (cp < 0x13f6)
                    return true;
                if (cp < 0x13f8)
                    return false;
                if (cp < 0x13fe)
                    return true;
                if (cp < 0x1401)
                    return false;
                if (cp < 0x166d)
                    return true;
                return false;
            }
            if (cp < 0x18b0) {
                if (cp < 0x176e) {
                    if (cp < 0x1700) {
                        if (cp < 0x166f)
                            return false;
                        if (cp < 0x1680)
                            return true;
                        if (cp < 0x1681)
                            return false;
                        if (cp < 0x169b)
                            return true;
                        if (cp < 0x16a0)
                            return false;
                        if (cp < 0x16eb)
                            return true;
                        if (cp < 0x16ee)
                            return false;
                        if (cp < 0x16f1)
                            return true;
                        if (cp < 0x16f1)
                            return false;
                        if (cp < 0x16f9)
                            return true;
                        return false;
                    }
                    if (cp < 0x170d)
                        return true;
                    if (cp < 0x170e)
                        return false;
                    if (cp < 0x1712)
                        return true;
                    if (cp < 0x1720)
                        return false;
                    if (cp < 0x1732)
                        return true;
                    if (cp < 0x1740)
                        return false;
                    if (cp < 0x1752)
                        return true;
                    if (cp < 0x1760)
                        return false;
                    if (cp < 0x176d)
                        return true;
                    return false;
                }
                if (cp < 0x1843) {
                    if (cp < 0x176e)
                        return false;
                    if (cp < 0x1771)
                        return true;
                    if (cp < 0x1780)
                        return false;
                    if (cp < 0x17b4)
                        return true;
                    if (cp === 0x17d7)
                        return true;
                    if (cp === 0x17dc)
                        return true;
                    if (cp < 0x1820)
                        return false;
                    if (cp < 0x1843)
                        return true;
                    return false;
                }
                if (cp === 0x1843)
                    return true;
                if (cp < 0x1844)
                    return false;
                if (cp < 0x1879)
                    return true;
                if (cp < 0x1880)
                    return false;
                if (cp < 0x1885)
                    return true;
                if (cp < 0x1885)
                    return false;
                if (cp < 0x1887)
                    return true;
                if (cp < 0x1887)
                    return false;
                if (cp < 0x18a9)
                    return true;
                if (cp === 0x18aa)
                    return true;
                return false;
            }
            if (cp < 0x1b45) {
                if (cp < 0x19b0) {
                    if (cp < 0x18b0)
                        return false;
                    if (cp < 0x18f6)
                        return true;
                    if (cp < 0x1900)
                        return false;
                    if (cp < 0x191f)
                        return true;
                    if (cp < 0x1950)
                        return false;
                    if (cp < 0x196e)
                        return true;
                    if (cp < 0x1970)
                        return false;
                    if (cp < 0x1975)
                        return true;
                    if (cp < 0x1980)
                        return false;
                    if (cp < 0x19ac)
                        return true;
                    return false;
                }
                if (cp < 0x19ca)
                    return true;
                if (cp < 0x1a00)
                    return false;
                if (cp < 0x1a17)
                    return true;
                if (cp < 0x1a20)
                    return false;
                if (cp < 0x1a55)
                    return true;
                if (cp === 0x1aa7)
                    return true;
                if (cp < 0x1b05)
                    return false;
                if (cp < 0x1b34)
                    return true;
                return false;
            }
            if (cp < 0x1c4d) {
                if (cp < 0x1b45)
                    return false;
                if (cp < 0x1b4c)
                    return true;
                if (cp < 0x1b83)
                    return false;
                if (cp < 0x1ba1)
                    return true;
                if (cp < 0x1bae)
                    return false;
                if (cp < 0x1bb0)
                    return true;
                if (cp < 0x1bba)
                    return false;
                if (cp < 0x1be6)
                    return true;
                if (cp < 0x1c00)
                    return false;
                if (cp < 0x1c24)
                    return true;
                return false;
            }
            if (cp < 0x1c50)
                return true;
            if (cp < 0x1c5a)
                return false;
            if (cp < 0x1c78)
                return true;
            if (cp < 0x1c78)
                return false;
            if (cp < 0x1c7e)
                return true;
            if (cp < 0x1c80)
                return false;
            if (cp < 0x1c89)
                return true;
            if (cp < 0x1c90)
                return false;
            if (cp < 0x1cbb)
                return true;
            if (cp < 0x1cbd)
                return false;
            if (cp < 0x1cc0)
                return true;
            return false;
        }
        if (cp < 0x212f) {
            if (cp < 0x1fc2) {
                if (cp < 0x1f18) {
                    if (cp < 0x1d6b) {
                        if (cp < 0x1ce9)
                            return false;
                        if (cp < 0x1ced)
                            return true;
                        if (cp < 0x1cee)
                            return false;
                        if (cp < 0x1cf2)
                            return true;
                        if (cp < 0x1cf5)
                            return false;
                        if (cp < 0x1cf7)
                            return true;
                        if (cp < 0x1d00)
                            return false;
                        if (cp < 0x1d2c)
                            return true;
                        if (cp < 0x1d2c)
                            return false;
                        if (cp < 0x1d6b)
                            return true;
                        return false;
                    }
                    if (cp < 0x1d78)
                        return true;
                    if (cp === 0x1d78)
                        return true;
                    if (cp < 0x1d79)
                        return false;
                    if (cp < 0x1d9b)
                        return true;
                    if (cp < 0x1d9b)
                        return false;
                    if (cp < 0x1dc0)
                        return true;
                    if (cp < 0x1e00)
                        return false;
                    if (cp < 0x1f16)
                        return true;
                    return false;
                }
                if (cp < 0x1f5b) {
                    if (cp < 0x1f18)
                        return false;
                    if (cp < 0x1f1e)
                        return true;
                    if (cp < 0x1f20)
                        return false;
                    if (cp < 0x1f46)
                        return true;
                    if (cp < 0x1f48)
                        return false;
                    if (cp < 0x1f4e)
                        return true;
                    if (cp < 0x1f50)
                        return false;
                    if (cp < 0x1f58)
                        return true;
                    if (cp === 0x1f59)
                        return true;
                    return false;
                }
                if (cp === 0x1f5b)
                    return true;
                if (cp === 0x1f5d)
                    return true;
                if (cp < 0x1f5f)
                    return false;
                if (cp < 0x1f7e)
                    return true;
                if (cp < 0x1f80)
                    return false;
                if (cp < 0x1fb5)
                    return true;
                if (cp < 0x1fb6)
                    return false;
                if (cp < 0x1fbd)
                    return true;
                if (cp === 0x1fbe)
                    return true;
                return false;
            }
            if (cp < 0x2102) {
                if (cp < 0x1ff2) {
                    if (cp < 0x1fc2)
                        return false;
                    if (cp < 0x1fc5)
                        return true;
                    if (cp < 0x1fc6)
                        return false;
                    if (cp < 0x1fcd)
                        return true;
                    if (cp < 0x1fd0)
                        return false;
                    if (cp < 0x1fd4)
                        return true;
                    if (cp < 0x1fd6)
                        return false;
                    if (cp < 0x1fdc)
                        return true;
                    if (cp < 0x1fe0)
                        return false;
                    if (cp < 0x1fed)
                        return true;
                    return false;
                }
                if (cp < 0x1ff5)
                    return true;
                if (cp < 0x1ff6)
                    return false;
                if (cp < 0x1ffd)
                    return true;
                if (cp === 0x2071)
                    return true;
                if (cp === 0x207f)
                    return true;
                if (cp < 0x2090)
                    return false;
                if (cp < 0x209d)
                    return true;
                return false;
            }
            if (cp < 0x2119) {
                if (cp === 0x2102)
                    return true;
                if (cp === 0x2107)
                    return true;
                if (cp < 0x210a)
                    return false;
                if (cp < 0x2114)
                    return true;
                if (cp === 0x2115)
                    return true;
                if (cp === 0x2118)
                    return true;
                return false;
            }
            if (cp < 0x211e)
                return true;
            if (cp === 0x2124)
                return true;
            if (cp === 0x2126)
                return true;
            if (cp === 0x2128)
                return true;
            if (cp < 0x212a)
                return false;
            if (cp < 0x212e)
                return true;
            if (cp === 0x212e)
                return true;
            return false;
        }
        if (cp < 0x2d80) {
            if (cp < 0x2c30) {
                if (cp < 0x214e) {
                    if (cp < 0x212f)
                        return false;
                    if (cp < 0x2135)
                        return true;
                    if (cp < 0x2135)
                        return false;
                    if (cp < 0x2139)
                        return true;
                    if (cp === 0x2139)
                        return true;
                    if (cp < 0x213c)
                        return false;
                    if (cp < 0x2140)
                        return true;
                    if (cp < 0x2145)
                        return false;
                    if (cp < 0x214a)
                        return true;
                    return false;
                }
                if (cp === 0x214e)
                    return true;
                if (cp < 0x2160)
                    return false;
                if (cp < 0x2183)
                    return true;
                if (cp < 0x2183)
                    return false;
                if (cp < 0x2185)
                    return true;
                if (cp < 0x2185)
                    return false;
                if (cp < 0x2189)
                    return true;
                if (cp < 0x2c00)
                    return false;
                if (cp < 0x2c2f)
                    return true;
                return false;
            }
            if (cp < 0x2cf2) {
                if (cp < 0x2c30)
                    return false;
                if (cp < 0x2c5f)
                    return true;
                if (cp < 0x2c60)
                    return false;
                if (cp < 0x2c7c)
                    return true;
                if (cp < 0x2c7c)
                    return false;
                if (cp < 0x2c7e)
                    return true;
                if (cp < 0x2c7e)
                    return false;
                if (cp < 0x2ce5)
                    return true;
                if (cp < 0x2ceb)
                    return false;
                if (cp < 0x2cef)
                    return true;
                return false;
            }
            if (cp < 0x2cf4)
                return true;
            if (cp < 0x2d00)
                return false;
            if (cp < 0x2d26)
                return true;
            if (cp === 0x2d27)
                return true;
            if (cp === 0x2d2d)
                return true;
            if (cp < 0x2d30)
                return false;
            if (cp < 0x2d68)
                return true;
            if (cp === 0x2d6f)
                return true;
            return false;
        }
        if (cp < 0x3006) {
            if (cp < 0x2dc0) {
                if (cp < 0x2d80)
                    return false;
                if (cp < 0x2d97)
                    return true;
                if (cp < 0x2da0)
                    return false;
                if (cp < 0x2da7)
                    return true;
                if (cp < 0x2da8)
                    return false;
                if (cp < 0x2daf)
                    return true;
                if (cp < 0x2db0)
                    return false;
                if (cp < 0x2db7)
                    return true;
                if (cp < 0x2db8)
                    return false;
                if (cp < 0x2dbf)
                    return true;
                return false;
            }
            if (cp < 0x2dc7)
                return true;
            if (cp < 0x2dc8)
                return false;
            if (cp < 0x2dcf)
                return true;
            if (cp < 0x2dd0)
                return false;
            if (cp < 0x2dd7)
                return true;
            if (cp < 0x2dd8)
                return false;
            if (cp < 0x2ddf)
                return true;
            if (cp === 0x3005)
                return true;
            return false;
        }
        if (cp < 0x303b) {
            if (cp === 0x3006)
                return true;
            if (cp === 0x3007)
                return true;
            if (cp < 0x3021)
                return false;
            if (cp < 0x302a)
                return true;
            if (cp < 0x3031)
                return false;
            if (cp < 0x3036)
                return true;
            if (cp < 0x3038)
                return false;
            if (cp < 0x303b)
                return true;
            return false;
        }
        if (cp === 0x303b)
            return true;
        if (cp === 0x303c)
            return true;
        if (cp < 0x3041)
            return false;
        if (cp < 0x3097)
            return true;
        if (cp < 0x309b)
            return false;
        if (cp < 0x309d)
            return true;
        if (cp < 0x309d)
            return false;
        if (cp < 0x309f)
            return true;
        if (cp === 0x309f)
            return true;
        return false;
    }
    if (cp < 0x10b60) {
        if (cp < 0xd7b0) {
            if (cp < 0xa882) {
                if (cp < 0xa67f) {
                    if (cp < 0xa015) {
                        if (cp < 0x31a0) {
                            if (cp < 0x30a1)
                                return false;
                            if (cp < 0x30fb)
                                return true;
                            if (cp < 0x30fc)
                                return false;
                            if (cp < 0x30ff)
                                return true;
                            if (cp === 0x30ff)
                                return true;
                            if (cp < 0x3105)
                                return false;
                            if (cp < 0x3130)
                                return true;
                            if (cp < 0x3131)
                                return false;
                            if (cp < 0x318f)
                                return true;
                            return false;
                        }
                        if (cp < 0x31bb)
                            return true;
                        if (cp < 0x31f0)
                            return false;
                        if (cp < 0x3200)
                            return true;
                        if (cp < 0x3400)
                            return false;
                        if (cp < 0x4db6)
                            return true;
                        if (cp < 0x4e00)
                            return false;
                        if (cp < 0x9ff0)
                            return true;
                        if (cp < 0xa000)
                            return false;
                        if (cp < 0xa015)
                            return true;
                        return false;
                    }
                    if (cp < 0xa60c) {
                        if (cp === 0xa015)
                            return true;
                        if (cp < 0xa016)
                            return false;
                        if (cp < 0xa48d)
                            return true;
                        if (cp < 0xa4d0)
                            return false;
                        if (cp < 0xa4f8)
                            return true;
                        if (cp < 0xa4f8)
                            return false;
                        if (cp < 0xa4fe)
                            return true;
                        if (cp < 0xa500)
                            return false;
                        if (cp < 0xa60c)
                            return true;
                        return false;
                    }
                    if (cp === 0xa60c)
                        return true;
                    if (cp < 0xa610)
                        return false;
                    if (cp < 0xa620)
                        return true;
                    if (cp < 0xa62a)
                        return false;
                    if (cp < 0xa62c)
                        return true;
                    if (cp < 0xa640)
                        return false;
                    if (cp < 0xa66e)
                        return true;
                    if (cp === 0xa66e)
                        return true;
                    return false;
                }
                if (cp < 0xa78b) {
                    if (cp < 0xa717) {
                        if (cp === 0xa67f)
                            return true;
                        if (cp < 0xa680)
                            return false;
                        if (cp < 0xa69c)
                            return true;
                        if (cp < 0xa69c)
                            return false;
                        if (cp < 0xa69e)
                            return true;
                        if (cp < 0xa6a0)
                            return false;
                        if (cp < 0xa6e6)
                            return true;
                        if (cp < 0xa6e6)
                            return false;
                        if (cp < 0xa6f0)
                            return true;
                        return false;
                    }
                    if (cp < 0xa720)
                        return true;
                    if (cp < 0xa722)
                        return false;
                    if (cp < 0xa770)
                        return true;
                    if (cp === 0xa770)
                        return true;
                    if (cp < 0xa771)
                        return false;
                    if (cp < 0xa788)
                        return true;
                    if (cp === 0xa788)
                        return true;
                    return false;
                }
                if (cp < 0xa7fa) {
                    if (cp < 0xa78b)
                        return false;
                    if (cp < 0xa78f)
                        return true;
                    if (cp === 0xa78f)
                        return true;
                    if (cp < 0xa790)
                        return false;
                    if (cp < 0xa7ba)
                        return true;
                    if (cp === 0xa7f7)
                        return true;
                    if (cp < 0xa7f8)
                        return false;
                    if (cp < 0xa7fa)
                        return true;
                    return false;
                }
                if (cp === 0xa7fa)
                    return true;
                if (cp < 0xa7fb)
                    return false;
                if (cp < 0xa802)
                    return true;
                if (cp < 0xa803)
                    return false;
                if (cp < 0xa806)
                    return true;
                if (cp < 0xa807)
                    return false;
                if (cp < 0xa80b)
                    return true;
                if (cp < 0xa80c)
                    return false;
                if (cp < 0xa823)
                    return true;
                if (cp < 0xa840)
                    return false;
                if (cp < 0xa874)
                    return true;
                return false;
            }
            if (cp < 0xaab1) {
                if (cp < 0xa9e6) {
                    if (cp < 0xa930) {
                        if (cp < 0xa882)
                            return false;
                        if (cp < 0xa8b4)
                            return true;
                        if (cp < 0xa8f2)
                            return false;
                        if (cp < 0xa8f8)
                            return true;
                        if (cp === 0xa8fb)
                            return true;
                        if (cp < 0xa8fd)
                            return false;
                        if (cp < 0xa8ff)
                            return true;
                        if (cp < 0xa90a)
                            return false;
                        if (cp < 0xa926)
                            return true;
                        return false;
                    }
                    if (cp < 0xa947)
                        return true;
                    if (cp < 0xa960)
                        return false;
                    if (cp < 0xa97d)
                        return true;
                    if (cp < 0xa984)
                        return false;
                    if (cp < 0xa9b3)
                        return true;
                    if (cp === 0xa9cf)
                        return true;
                    if (cp < 0xa9e0)
                        return false;
                    if (cp < 0xa9e5)
                        return true;
                    return false;
                }
                if (cp < 0xaa44) {
                    if (cp === 0xa9e6)
                        return true;
                    if (cp < 0xa9e7)
                        return false;
                    if (cp < 0xa9f0)
                        return true;
                    if (cp < 0xa9fa)
                        return false;
                    if (cp < 0xa9ff)
                        return true;
                    if (cp < 0xaa00)
                        return false;
                    if (cp < 0xaa29)
                        return true;
                    if (cp < 0xaa40)
                        return false;
                    if (cp < 0xaa43)
                        return true;
                    return false;
                }
                if (cp < 0xaa4c)
                    return true;
                if (cp < 0xaa60)
                    return false;
                if (cp < 0xaa70)
                    return true;
                if (cp === 0xaa70)
                    return true;
                if (cp < 0xaa71)
                    return false;
                if (cp < 0xaa77)
                    return true;
                if (cp === 0xaa7a)
                    return true;
                if (cp < 0xaa7e)
                    return false;
                if (cp < 0xaab0)
                    return true;
                return false;
            }
            if (cp < 0xab01) {
                if (cp < 0xaadb) {
                    if (cp === 0xaab1)
                        return true;
                    if (cp < 0xaab5)
                        return false;
                    if (cp < 0xaab7)
                        return true;
                    if (cp < 0xaab9)
                        return false;
                    if (cp < 0xaabe)
                        return true;
                    if (cp === 0xaac0)
                        return true;
                    if (cp === 0xaac2)
                        return true;
                    return false;
                }
                if (cp < 0xaadd)
                    return true;
                if (cp === 0xaadd)
                    return true;
                if (cp < 0xaae0)
                    return false;
                if (cp < 0xaaeb)
                    return true;
                if (cp === 0xaaf2)
                    return true;
                if (cp < 0xaaf3)
                    return false;
                if (cp < 0xaaf5)
                    return true;
                return false;
            }
            if (cp < 0xab30) {
                if (cp < 0xab01)
                    return false;
                if (cp < 0xab07)
                    return true;
                if (cp < 0xab09)
                    return false;
                if (cp < 0xab0f)
                    return true;
                if (cp < 0xab11)
                    return false;
                if (cp < 0xab17)
                    return true;
                if (cp < 0xab20)
                    return false;
                if (cp < 0xab27)
                    return true;
                if (cp < 0xab28)
                    return false;
                if (cp < 0xab2f)
                    return true;
                return false;
            }
            if (cp < 0xab5b)
                return true;
            if (cp < 0xab5c)
                return false;
            if (cp < 0xab60)
                return true;
            if (cp < 0xab60)
                return false;
            if (cp < 0xab66)
                return true;
            if (cp < 0xab70)
                return false;
            if (cp < 0xabc0)
                return true;
            if (cp < 0xabc0)
                return false;
            if (cp < 0xabe3)
                return true;
            if (cp < 0xac00)
                return false;
            if (cp < 0xd7a4)
                return true;
            return false;
        }
        if (cp < 0x1032d) {
            if (cp < 0xff41) {
                if (cp < 0xfb3e) {
                    if (cp < 0xfb13) {
                        if (cp < 0xd7b0)
                            return false;
                        if (cp < 0xd7c7)
                            return true;
                        if (cp < 0xd7cb)
                            return false;
                        if (cp < 0xd7fc)
                            return true;
                        if (cp < 0xf900)
                            return false;
                        if (cp < 0xfa6e)
                            return true;
                        if (cp < 0xfa70)
                            return false;
                        if (cp < 0xfada)
                            return true;
                        if (cp < 0xfb00)
                            return false;
                        if (cp < 0xfb07)
                            return true;
                        return false;
                    }
                    if (cp < 0xfb18)
                        return true;
                    if (cp === 0xfb1d)
                        return true;
                    if (cp < 0xfb1f)
                        return false;
                    if (cp < 0xfb29)
                        return true;
                    if (cp < 0xfb2a)
                        return false;
                    if (cp < 0xfb37)
                        return true;
                    if (cp < 0xfb38)
                        return false;
                    if (cp < 0xfb3d)
                        return true;
                    return false;
                }
                if (cp < 0xfd50) {
                    if (cp === 0xfb3e)
                        return true;
                    if (cp < 0xfb40)
                        return false;
                    if (cp < 0xfb42)
                        return true;
                    if (cp < 0xfb43)
                        return false;
                    if (cp < 0xfb45)
                        return true;
                    if (cp < 0xfb46)
                        return false;
                    if (cp < 0xfbb2)
                        return true;
                    if (cp < 0xfbd3)
                        return false;
                    if (cp < 0xfd3e)
                        return true;
                    return false;
                }
                if (cp < 0xfd90)
                    return true;
                if (cp < 0xfd92)
                    return false;
                if (cp < 0xfdc8)
                    return true;
                if (cp < 0xfdf0)
                    return false;
                if (cp < 0xfdfc)
                    return true;
                if (cp < 0xfe70)
                    return false;
                if (cp < 0xfe75)
                    return true;
                if (cp < 0xfe76)
                    return false;
                if (cp < 0xfefd)
                    return true;
                if (cp < 0xff21)
                    return false;
                if (cp < 0xff3b)
                    return true;
                return false;
            }
            if (cp < 0x10000) {
                if (cp < 0xffa0) {
                    if (cp < 0xff41)
                        return false;
                    if (cp < 0xff5b)
                        return true;
                    if (cp < 0xff66)
                        return false;
                    if (cp < 0xff70)
                        return true;
                    if (cp === 0xff70)
                        return true;
                    if (cp < 0xff71)
                        return false;
                    if (cp < 0xff9e)
                        return true;
                    if (cp < 0xff9e)
                        return false;
                    if (cp < 0xffa0)
                        return true;
                    return false;
                }
                if (cp < 0xffbf)
                    return true;
                if (cp < 0xffc2)
                    return false;
                if (cp < 0xffc8)
                    return true;
                if (cp < 0xffca)
                    return false;
                if (cp < 0xffd0)
                    return true;
                if (cp < 0xffd2)
                    return false;
                if (cp < 0xffd8)
                    return true;
                if (cp < 0xffda)
                    return false;
                if (cp < 0xffdd)
                    return true;
                return false;
            }
            if (cp < 0x10050) {
                if (cp < 0x10000)
                    return false;
                if (cp < 0x1000c)
                    return true;
                if (cp < 0x1000d)
                    return false;
                if (cp < 0x10027)
                    return true;
                if (cp < 0x10028)
                    return false;
                if (cp < 0x1003b)
                    return true;
                if (cp < 0x1003c)
                    return false;
                if (cp < 0x1003e)
                    return true;
                if (cp < 0x1003f)
                    return false;
                if (cp < 0x1004e)
                    return true;
                return false;
            }
            if (cp < 0x1005e)
                return true;
            if (cp < 0x10080)
                return false;
            if (cp < 0x100fb)
                return true;
            if (cp < 0x10140)
                return false;
            if (cp < 0x10175)
                return true;
            if (cp < 0x10280)
                return false;
            if (cp < 0x1029d)
                return true;
            if (cp < 0x102a0)
                return false;
            if (cp < 0x102d1)
                return true;
            if (cp < 0x10300)
                return false;
            if (cp < 0x10320)
                return true;
            return false;
        }
        if (cp < 0x10837) {
            if (cp < 0x10450) {
                if (cp < 0x10380) {
                    if (cp < 0x1032d)
                        return false;
                    if (cp < 0x10341)
                        return true;
                    if (cp === 0x10341)
                        return true;
                    if (cp < 0x10342)
                        return false;
                    if (cp < 0x1034a)
                        return true;
                    if (cp === 0x1034a)
                        return true;
                    if (cp < 0x10350)
                        return false;
                    if (cp < 0x10376)
                        return true;
                    return false;
                }
                if (cp < 0x1039e)
                    return true;
                if (cp < 0x103a0)
                    return false;
                if (cp < 0x103c4)
                    return true;
                if (cp < 0x103c8)
                    return false;
                if (cp < 0x103d0)
                    return true;
                if (cp < 0x103d1)
                    return false;
                if (cp < 0x103d6)
                    return true;
                if (cp < 0x10400)
                    return false;
                if (cp < 0x10450)
                    return true;
                return false;
            }
            if (cp < 0x10600) {
                if (cp < 0x10450)
                    return false;
                if (cp < 0x1049e)
                    return true;
                if (cp < 0x104b0)
                    return false;
                if (cp < 0x104d4)
                    return true;
                if (cp < 0x104d8)
                    return false;
                if (cp < 0x104fc)
                    return true;
                if (cp < 0x10500)
                    return false;
                if (cp < 0x10528)
                    return true;
                if (cp < 0x10530)
                    return false;
                if (cp < 0x10564)
                    return true;
                return false;
            }
            if (cp < 0x10737)
                return true;
            if (cp < 0x10740)
                return false;
            if (cp < 0x10756)
                return true;
            if (cp < 0x10760)
                return false;
            if (cp < 0x10768)
                return true;
            if (cp < 0x10800)
                return false;
            if (cp < 0x10806)
                return true;
            if (cp === 0x10808)
                return true;
            if (cp < 0x1080a)
                return false;
            if (cp < 0x10836)
                return true;
            return false;
        }
        if (cp < 0x109be) {
            if (cp < 0x108e0) {
                if (cp < 0x10837)
                    return false;
                if (cp < 0x10839)
                    return true;
                if (cp === 0x1083c)
                    return true;
                if (cp < 0x1083f)
                    return false;
                if (cp < 0x10856)
                    return true;
                if (cp < 0x10860)
                    return false;
                if (cp < 0x10877)
                    return true;
                if (cp < 0x10880)
                    return false;
                if (cp < 0x1089f)
                    return true;
                return false;
            }
            if (cp < 0x108f3)
                return true;
            if (cp < 0x108f4)
                return false;
            if (cp < 0x108f6)
                return true;
            if (cp < 0x10900)
                return false;
            if (cp < 0x10916)
                return true;
            if (cp < 0x10920)
                return false;
            if (cp < 0x1093a)
                return true;
            if (cp < 0x10980)
                return false;
            if (cp < 0x109b8)
                return true;
            return false;
        }
        if (cp < 0x10a60) {
            if (cp < 0x109be)
                return false;
            if (cp < 0x109c0)
                return true;
            if (cp === 0x10a00)
                return true;
            if (cp < 0x10a10)
                return false;
            if (cp < 0x10a14)
                return true;
            if (cp < 0x10a15)
                return false;
            if (cp < 0x10a18)
                return true;
            if (cp < 0x10a19)
                return false;
            if (cp < 0x10a36)
                return true;
            return false;
        }
        if (cp < 0x10a7d)
            return true;
        if (cp < 0x10a80)
            return false;
        if (cp < 0x10a9d)
            return true;
        if (cp < 0x10ac0)
            return false;
        if (cp < 0x10ac8)
            return true;
        if (cp < 0x10ac9)
            return false;
        if (cp < 0x10ae5)
            return true;
        if (cp < 0x10b00)
            return false;
        if (cp < 0x10b36)
            return true;
        if (cp < 0x10b40)
            return false;
        if (cp < 0x10b56)
            return true;
        return false;
    }
    if (cp < 0x16e40) {
        if (cp < 0x11580) {
            if (cp < 0x11213) {
                if (cp < 0x11083) {
                    if (cp < 0x10d00) {
                        if (cp < 0x10b60)
                            return false;
                        if (cp < 0x10b73)
                            return true;
                        if (cp < 0x10b80)
                            return false;
                        if (cp < 0x10b92)
                            return true;
                        if (cp < 0x10c00)
                            return false;
                        if (cp < 0x10c49)
                            return true;
                        if (cp < 0x10c80)
                            return false;
                        if (cp < 0x10cb3)
                            return true;
                        if (cp < 0x10cc0)
                            return false;
                        if (cp < 0x10cf3)
                            return true;
                        return false;
                    }
                    if (cp < 0x10d24)
                        return true;
                    if (cp < 0x10f00)
                        return false;
                    if (cp < 0x10f1d)
                        return true;
                    if (cp === 0x10f27)
                        return true;
                    if (cp < 0x10f30)
                        return false;
                    if (cp < 0x10f46)
                        return true;
                    if (cp < 0x11003)
                        return false;
                    if (cp < 0x11038)
                        return true;
                    return false;
                }
                if (cp < 0x11176) {
                    if (cp < 0x11083)
                        return false;
                    if (cp < 0x110b0)
                        return true;
                    if (cp < 0x110d0)
                        return false;
                    if (cp < 0x110e9)
                        return true;
                    if (cp < 0x11103)
                        return false;
                    if (cp < 0x11127)
                        return true;
                    if (cp === 0x11144)
                        return true;
                    if (cp < 0x11150)
                        return false;
                    if (cp < 0x11173)
                        return true;
                    return false;
                }
                if (cp === 0x11176)
                    return true;
                if (cp < 0x11183)
                    return false;
                if (cp < 0x111b3)
                    return true;
                if (cp < 0x111c1)
                    return false;
                if (cp < 0x111c5)
                    return true;
                if (cp === 0x111da)
                    return true;
                if (cp === 0x111dc)
                    return true;
                if (cp < 0x11200)
                    return false;
                if (cp < 0x11212)
                    return true;
                return false;
            }
            if (cp < 0x1132a) {
                if (cp < 0x1129f) {
                    if (cp < 0x11213)
                        return false;
                    if (cp < 0x1122c)
                        return true;
                    if (cp < 0x11280)
                        return false;
                    if (cp < 0x11287)
                        return true;
                    if (cp === 0x11288)
                        return true;
                    if (cp < 0x1128a)
                        return false;
                    if (cp < 0x1128e)
                        return true;
                    if (cp < 0x1128f)
                        return false;
                    if (cp < 0x1129e)
                        return true;
                    return false;
                }
                if (cp < 0x112a9)
                    return true;
                if (cp < 0x112b0)
                    return false;
                if (cp < 0x112df)
                    return true;
                if (cp < 0x11305)
                    return false;
                if (cp < 0x1130d)
                    return true;
                if (cp < 0x1130f)
                    return false;
                if (cp < 0x11311)
                    return true;
                if (cp < 0x11313)
                    return false;
                if (cp < 0x11329)
                    return true;
                return false;
            }
            if (cp < 0x1135d) {
                if (cp < 0x1132a)
                    return false;
                if (cp < 0x11331)
                    return true;
                if (cp < 0x11332)
                    return false;
                if (cp < 0x11334)
                    return true;
                if (cp < 0x11335)
                    return false;
                if (cp < 0x1133a)
                    return true;
                if (cp === 0x1133d)
                    return true;
                if (cp === 0x11350)
                    return true;
                return false;
            }
            if (cp < 0x11362)
                return true;
            if (cp < 0x11400)
                return false;
            if (cp < 0x11435)
                return true;
            if (cp < 0x11447)
                return false;
            if (cp < 0x1144b)
                return true;
            if (cp < 0x11480)
                return false;
            if (cp < 0x114b0)
                return true;
            if (cp < 0x114c4)
                return false;
            if (cp < 0x114c6)
                return true;
            if (cp === 0x114c7)
                return true;
            return false;
        }
        if (cp < 0x11d00) {
            if (cp < 0x11a0b) {
                if (cp < 0x11700) {
                    if (cp < 0x11580)
                        return false;
                    if (cp < 0x115af)
                        return true;
                    if (cp < 0x115d8)
                        return false;
                    if (cp < 0x115dc)
                        return true;
                    if (cp < 0x11600)
                        return false;
                    if (cp < 0x11630)
                        return true;
                    if (cp === 0x11644)
                        return true;
                    if (cp < 0x11680)
                        return false;
                    if (cp < 0x116ab)
                        return true;
                    return false;
                }
                if (cp < 0x1171b)
                    return true;
                if (cp < 0x11800)
                    return false;
                if (cp < 0x1182c)
                    return true;
                if (cp < 0x118a0)
                    return false;
                if (cp < 0x118e0)
                    return true;
                if (cp === 0x118ff)
                    return true;
                if (cp === 0x11a00)
                    return true;
                return false;
            }
            if (cp < 0x11a9d) {
                if (cp < 0x11a0b)
                    return false;
                if (cp < 0x11a33)
                    return true;
                if (cp === 0x11a3a)
                    return true;
                if (cp === 0x11a50)
                    return true;
                if (cp < 0x11a5c)
                    return false;
                if (cp < 0x11a84)
                    return true;
                if (cp < 0x11a86)
                    return false;
                if (cp < 0x11a8a)
                    return true;
                return false;
            }
            if (cp === 0x11a9d)
                return true;
            if (cp < 0x11ac0)
                return false;
            if (cp < 0x11af9)
                return true;
            if (cp < 0x11c00)
                return false;
            if (cp < 0x11c09)
                return true;
            if (cp < 0x11c0a)
                return false;
            if (cp < 0x11c2f)
                return true;
            if (cp === 0x11c40)
                return true;
            if (cp < 0x11c72)
                return false;
            if (cp < 0x11c90)
                return true;
            return false;
        }
        if (cp < 0x12400) {
            if (cp < 0x11d67) {
                if (cp < 0x11d00)
                    return false;
                if (cp < 0x11d07)
                    return true;
                if (cp < 0x11d08)
                    return false;
                if (cp < 0x11d0a)
                    return true;
                if (cp < 0x11d0b)
                    return false;
                if (cp < 0x11d31)
                    return true;
                if (cp === 0x11d46)
                    return true;
                if (cp < 0x11d60)
                    return false;
                if (cp < 0x11d66)
                    return true;
                return false;
            }
            if (cp < 0x11d69)
                return true;
            if (cp < 0x11d6a)
                return false;
            if (cp < 0x11d8a)
                return true;
            if (cp === 0x11d98)
                return true;
            if (cp < 0x11ee0)
                return false;
            if (cp < 0x11ef3)
                return true;
            if (cp < 0x12000)
                return false;
            if (cp < 0x1239a)
                return true;
            return false;
        }
        if (cp < 0x16a40) {
            if (cp < 0x12400)
                return false;
            if (cp < 0x1246f)
                return true;
            if (cp < 0x12480)
                return false;
            if (cp < 0x12544)
                return true;
            if (cp < 0x13000)
                return false;
            if (cp < 0x1342f)
                return true;
            if (cp < 0x14400)
                return false;
            if (cp < 0x14647)
                return true;
            if (cp < 0x16800)
                return false;
            if (cp < 0x16a39)
                return true;
            return false;
        }
        if (cp < 0x16a5f)
            return true;
        if (cp < 0x16ad0)
            return false;
        if (cp < 0x16aee)
            return true;
        if (cp < 0x16b00)
            return false;
        if (cp < 0x16b30)
            return true;
        if (cp < 0x16b40)
            return false;
        if (cp < 0x16b44)
            return true;
        if (cp < 0x16b63)
            return false;
        if (cp < 0x16b78)
            return true;
        if (cp < 0x16b7d)
            return false;
        if (cp < 0x16b90)
            return true;
        return false;
    }
    if (cp < 0x1d7c4) {
        if (cp < 0x1d4bd) {
            if (cp < 0x1bc70) {
                if (cp < 0x17000) {
                    if (cp < 0x16e40)
                        return false;
                    if (cp < 0x16e80)
                        return true;
                    if (cp < 0x16f00)
                        return false;
                    if (cp < 0x16f45)
                        return true;
                    if (cp === 0x16f50)
                        return true;
                    if (cp < 0x16f93)
                        return false;
                    if (cp < 0x16fa0)
                        return true;
                    if (cp < 0x16fe0)
                        return false;
                    if (cp < 0x16fe2)
                        return true;
                    return false;
                }
                if (cp < 0x187f2)
                    return true;
                if (cp < 0x18800)
                    return false;
                if (cp < 0x18af3)
                    return true;
                if (cp < 0x1b000)
                    return false;
                if (cp < 0x1b11f)
                    return true;
                if (cp < 0x1b170)
                    return false;
                if (cp < 0x1b2fc)
                    return true;
                if (cp < 0x1bc00)
                    return false;
                if (cp < 0x1bc6b)
                    return true;
                return false;
            }
            if (cp < 0x1d49e) {
                if (cp < 0x1bc70)
                    return false;
                if (cp < 0x1bc7d)
                    return true;
                if (cp < 0x1bc80)
                    return false;
                if (cp < 0x1bc89)
                    return true;
                if (cp < 0x1bc90)
                    return false;
                if (cp < 0x1bc9a)
                    return true;
                if (cp < 0x1d400)
                    return false;
                if (cp < 0x1d455)
                    return true;
                if (cp < 0x1d456)
                    return false;
                if (cp < 0x1d49d)
                    return true;
                return false;
            }
            if (cp < 0x1d4a0)
                return true;
            if (cp === 0x1d4a2)
                return true;
            if (cp < 0x1d4a5)
                return false;
            if (cp < 0x1d4a7)
                return true;
            if (cp < 0x1d4a9)
                return false;
            if (cp < 0x1d4ad)
                return true;
            if (cp < 0x1d4ae)
                return false;
            if (cp < 0x1d4ba)
                return true;
            if (cp === 0x1d4bb)
                return true;
            return false;
        }
        if (cp < 0x1d552) {
            if (cp < 0x1d51e) {
                if (cp < 0x1d4bd)
                    return false;
                if (cp < 0x1d4c4)
                    return true;
                if (cp < 0x1d4c5)
                    return false;
                if (cp < 0x1d506)
                    return true;
                if (cp < 0x1d507)
                    return false;
                if (cp < 0x1d50b)
                    return true;
                if (cp < 0x1d50d)
                    return false;
                if (cp < 0x1d515)
                    return true;
                if (cp < 0x1d516)
                    return false;
                if (cp < 0x1d51d)
                    return true;
                return false;
            }
            if (cp < 0x1d53a)
                return true;
            if (cp < 0x1d53b)
                return false;
            if (cp < 0x1d53f)
                return true;
            if (cp < 0x1d540)
                return false;
            if (cp < 0x1d545)
                return true;
            if (cp === 0x1d546)
                return true;
            if (cp < 0x1d54a)
                return false;
            if (cp < 0x1d551)
                return true;
            return false;
        }
        if (cp < 0x1d716) {
            if (cp < 0x1d552)
                return false;
            if (cp < 0x1d6a6)
                return true;
            if (cp < 0x1d6a8)
                return false;
            if (cp < 0x1d6c1)
                return true;
            if (cp < 0x1d6c2)
                return false;
            if (cp < 0x1d6db)
                return true;
            if (cp < 0x1d6dc)
                return false;
            if (cp < 0x1d6fb)
                return true;
            if (cp < 0x1d6fc)
                return false;
            if (cp < 0x1d715)
                return true;
            return false;
        }
        if (cp < 0x1d735)
            return true;
        if (cp < 0x1d736)
            return false;
        if (cp < 0x1d74f)
            return true;
        if (cp < 0x1d750)
            return false;
        if (cp < 0x1d76f)
            return true;
        if (cp < 0x1d770)
            return false;
        if (cp < 0x1d789)
            return true;
        if (cp < 0x1d78a)
            return false;
        if (cp < 0x1d7a9)
            return true;
        if (cp < 0x1d7aa)
            return false;
        if (cp < 0x1d7c3)
            return true;
        return false;
    }
    if (cp < 0x1ee5b) {
        if (cp < 0x1ee39) {
            if (cp < 0x1ee21) {
                if (cp < 0x1d7c4)
                    return false;
                if (cp < 0x1d7cc)
                    return true;
                if (cp < 0x1e800)
                    return false;
                if (cp < 0x1e8c5)
                    return true;
                if (cp < 0x1e900)
                    return false;
                if (cp < 0x1e944)
                    return true;
                if (cp < 0x1ee00)
                    return false;
                if (cp < 0x1ee04)
                    return true;
                if (cp < 0x1ee05)
                    return false;
                if (cp < 0x1ee20)
                    return true;
                return false;
            }
            if (cp < 0x1ee23)
                return true;
            if (cp === 0x1ee24)
                return true;
            if (cp === 0x1ee27)
                return true;
            if (cp < 0x1ee29)
                return false;
            if (cp < 0x1ee33)
                return true;
            if (cp < 0x1ee34)
                return false;
            if (cp < 0x1ee38)
                return true;
            return false;
        }
        if (cp < 0x1ee4b) {
            if (cp === 0x1ee39)
                return true;
            if (cp === 0x1ee3b)
                return true;
            if (cp === 0x1ee42)
                return true;
            if (cp === 0x1ee47)
                return true;
            if (cp === 0x1ee49)
                return true;
            return false;
        }
        if (cp === 0x1ee4b)
            return true;
        if (cp < 0x1ee4d)
            return false;
        if (cp < 0x1ee50)
            return true;
        if (cp < 0x1ee51)
            return false;
        if (cp < 0x1ee53)
            return true;
        if (cp === 0x1ee54)
            return true;
        if (cp === 0x1ee57)
            return true;
        if (cp === 0x1ee59)
            return true;
        return false;
    }
    if (cp < 0x1ee80) {
        if (cp < 0x1ee67) {
            if (cp === 0x1ee5b)
                return true;
            if (cp === 0x1ee5d)
                return true;
            if (cp === 0x1ee5f)
                return true;
            if (cp < 0x1ee61)
                return false;
            if (cp < 0x1ee63)
                return true;
            if (cp === 0x1ee64)
                return true;
            return false;
        }
        if (cp < 0x1ee6b)
            return true;
        if (cp < 0x1ee6c)
            return false;
        if (cp < 0x1ee73)
            return true;
        if (cp < 0x1ee74)
            return false;
        if (cp < 0x1ee78)
            return true;
        if (cp < 0x1ee79)
            return false;
        if (cp < 0x1ee7d)
            return true;
        if (cp === 0x1ee7e)
            return true;
        return false;
    }
    if (cp < 0x20000) {
        if (cp < 0x1ee80)
            return false;
        if (cp < 0x1ee8a)
            return true;
        if (cp < 0x1ee8b)
            return false;
        if (cp < 0x1ee9c)
            return true;
        if (cp < 0x1eea1)
            return false;
        if (cp < 0x1eea4)
            return true;
        if (cp < 0x1eea5)
            return false;
        if (cp < 0x1eeaa)
            return true;
        if (cp < 0x1eeab)
            return false;
        if (cp < 0x1eebc)
            return true;
        return false;
    }
    if (cp < 0x2a6d7)
        return true;
    if (cp < 0x2a700)
        return false;
    if (cp < 0x2b735)
        return true;
    if (cp < 0x2b740)
        return false;
    if (cp < 0x2b81e)
        return true;
    if (cp < 0x2b820)
        return false;
    if (cp < 0x2cea2)
        return true;
    if (cp < 0x2ceb0)
        return false;
    if (cp < 0x2ebe1)
        return true;
    if (cp < 0x2f800)
        return false;
    if (cp < 0x2fa1e)
        return true;
    return false;
}
function isLargeIdContinue(cp) {
    if (cp < 0x1cd0) {
        if (cp < 0xd82) {
            if (cp < 0xa83) {
                if (cp < 0x93b) {
                    if (cp < 0x6ea) {
                        if (cp < 0x5c7) {
                            if (cp === 0xb7)
                                return true;
                            if (cp < 0x300)
                                return false;
                            if (cp < 0x370)
                                return true;
                            if (cp === 0x387)
                                return true;
                            if (cp < 0x483)
                                return false;
                            if (cp < 0x488)
                                return true;
                            if (cp < 0x591)
                                return false;
                            if (cp < 0x5be)
                                return true;
                            if (cp === 0x5bf)
                                return true;
                            if (cp < 0x5c1)
                                return false;
                            if (cp < 0x5c3)
                                return true;
                            if (cp < 0x5c4)
                                return false;
                            if (cp < 0x5c6)
                                return true;
                            return false;
                        }
                        if (cp === 0x5c7)
                            return true;
                        if (cp < 0x610)
                            return false;
                        if (cp < 0x61b)
                            return true;
                        if (cp < 0x64b)
                            return false;
                        if (cp < 0x660)
                            return true;
                        if (cp < 0x660)
                            return false;
                        if (cp < 0x66a)
                            return true;
                        if (cp === 0x670)
                            return true;
                        if (cp < 0x6d6)
                            return false;
                        if (cp < 0x6dd)
                            return true;
                        if (cp < 0x6df)
                            return false;
                        if (cp < 0x6e5)
                            return true;
                        if (cp < 0x6e7)
                            return false;
                        if (cp < 0x6e9)
                            return true;
                        return false;
                    }
                    if (cp < 0x816) {
                        if (cp < 0x6ea)
                            return false;
                        if (cp < 0x6ee)
                            return true;
                        if (cp < 0x6f0)
                            return false;
                        if (cp < 0x6fa)
                            return true;
                        if (cp === 0x711)
                            return true;
                        if (cp < 0x730)
                            return false;
                        if (cp < 0x74b)
                            return true;
                        if (cp < 0x7a6)
                            return false;
                        if (cp < 0x7b1)
                            return true;
                        if (cp < 0x7c0)
                            return false;
                        if (cp < 0x7ca)
                            return true;
                        if (cp < 0x7eb)
                            return false;
                        if (cp < 0x7f4)
                            return true;
                        if (cp === 0x7fd)
                            return true;
                        return false;
                    }
                    if (cp < 0x81a)
                        return true;
                    if (cp < 0x81b)
                        return false;
                    if (cp < 0x824)
                        return true;
                    if (cp < 0x825)
                        return false;
                    if (cp < 0x828)
                        return true;
                    if (cp < 0x829)
                        return false;
                    if (cp < 0x82e)
                        return true;
                    if (cp < 0x859)
                        return false;
                    if (cp < 0x85c)
                        return true;
                    if (cp < 0x8d3)
                        return false;
                    if (cp < 0x8e2)
                        return true;
                    if (cp < 0x8e3)
                        return false;
                    if (cp < 0x903)
                        return true;
                    if (cp === 0x903)
                        return true;
                    if (cp === 0x93a)
                        return true;
                    return false;
                }
                if (cp < 0x9cd) {
                    if (cp < 0x962) {
                        if (cp === 0x93b)
                            return true;
                        if (cp === 0x93c)
                            return true;
                        if (cp < 0x93e)
                            return false;
                        if (cp < 0x941)
                            return true;
                        if (cp < 0x941)
                            return false;
                        if (cp < 0x949)
                            return true;
                        if (cp < 0x949)
                            return false;
                        if (cp < 0x94d)
                            return true;
                        if (cp === 0x94d)
                            return true;
                        if (cp < 0x94e)
                            return false;
                        if (cp < 0x950)
                            return true;
                        if (cp < 0x951)
                            return false;
                        if (cp < 0x958)
                            return true;
                        return false;
                    }
                    if (cp < 0x964)
                        return true;
                    if (cp < 0x966)
                        return false;
                    if (cp < 0x970)
                        return true;
                    if (cp === 0x981)
                        return true;
                    if (cp < 0x982)
                        return false;
                    if (cp < 0x984)
                        return true;
                    if (cp === 0x9bc)
                        return true;
                    if (cp < 0x9be)
                        return false;
                    if (cp < 0x9c1)
                        return true;
                    if (cp < 0x9c1)
                        return false;
                    if (cp < 0x9c5)
                        return true;
                    if (cp < 0x9c7)
                        return false;
                    if (cp < 0x9c9)
                        return true;
                    if (cp < 0x9cb)
                        return false;
                    if (cp < 0x9cd)
                        return true;
                    return false;
                }
                if (cp < 0xa3e) {
                    if (cp === 0x9cd)
                        return true;
                    if (cp === 0x9d7)
                        return true;
                    if (cp < 0x9e2)
                        return false;
                    if (cp < 0x9e4)
                        return true;
                    if (cp < 0x9e6)
                        return false;
                    if (cp < 0x9f0)
                        return true;
                    if (cp === 0x9fe)
                        return true;
                    if (cp < 0xa01)
                        return false;
                    if (cp < 0xa03)
                        return true;
                    if (cp === 0xa03)
                        return true;
                    if (cp === 0xa3c)
                        return true;
                    return false;
                }
                if (cp < 0xa41)
                    return true;
                if (cp < 0xa41)
                    return false;
                if (cp < 0xa43)
                    return true;
                if (cp < 0xa47)
                    return false;
                if (cp < 0xa49)
                    return true;
                if (cp < 0xa4b)
                    return false;
                if (cp < 0xa4e)
                    return true;
                if (cp === 0xa51)
                    return true;
                if (cp < 0xa66)
                    return false;
                if (cp < 0xa70)
                    return true;
                if (cp < 0xa70)
                    return false;
                if (cp < 0xa72)
                    return true;
                if (cp === 0xa75)
                    return true;
                if (cp < 0xa81)
                    return false;
                if (cp < 0xa83)
                    return true;
                return false;
            }
            if (cp < 0xc00) {
                if (cp < 0xb41) {
                    if (cp < 0xae2) {
                        if (cp === 0xa83)
                            return true;
                        if (cp === 0xabc)
                            return true;
                        if (cp < 0xabe)
                            return false;
                        if (cp < 0xac1)
                            return true;
                        if (cp < 0xac1)
                            return false;
                        if (cp < 0xac6)
                            return true;
                        if (cp < 0xac7)
                            return false;
                        if (cp < 0xac9)
                            return true;
                        if (cp === 0xac9)
                            return true;
                        if (cp < 0xacb)
                            return false;
                        if (cp < 0xacd)
                            return true;
                        if (cp === 0xacd)
                            return true;
                        return false;
                    }
                    if (cp < 0xae4)
                        return true;
                    if (cp < 0xae6)
                        return false;
                    if (cp < 0xaf0)
                        return true;
                    if (cp < 0xafa)
                        return false;
                    if (cp < 0xb00)
                        return true;
                    if (cp === 0xb01)
                        return true;
                    if (cp < 0xb02)
                        return false;
                    if (cp < 0xb04)
                        return true;
                    if (cp === 0xb3c)
                        return true;
                    if (cp === 0xb3e)
                        return true;
                    if (cp === 0xb3f)
                        return true;
                    if (cp === 0xb40)
                        return true;
                    return false;
                }
                if (cp < 0xb82) {
                    if (cp < 0xb41)
                        return false;
                    if (cp < 0xb45)
                        return true;
                    if (cp < 0xb47)
                        return false;
                    if (cp < 0xb49)
                        return true;
                    if (cp < 0xb4b)
                        return false;
                    if (cp < 0xb4d)
                        return true;
                    if (cp === 0xb4d)
                        return true;
                    if (cp === 0xb56)
                        return true;
                    if (cp === 0xb57)
                        return true;
                    if (cp < 0xb62)
                        return false;
                    if (cp < 0xb64)
                        return true;
                    if (cp < 0xb66)
                        return false;
                    if (cp < 0xb70)
                        return true;
                    return false;
                }
                if (cp === 0xb82)
                    return true;
                if (cp < 0xbbe)
                    return false;
                if (cp < 0xbc0)
                    return true;
                if (cp === 0xbc0)
                    return true;
                if (cp < 0xbc1)
                    return false;
                if (cp < 0xbc3)
                    return true;
                if (cp < 0xbc6)
                    return false;
                if (cp < 0xbc9)
                    return true;
                if (cp < 0xbca)
                    return false;
                if (cp < 0xbcd)
                    return true;
                if (cp === 0xbcd)
                    return true;
                if (cp === 0xbd7)
                    return true;
                if (cp < 0xbe6)
                    return false;
                if (cp < 0xbf0)
                    return true;
                return false;
            }
            if (cp < 0xcc7) {
                if (cp < 0xc62) {
                    if (cp === 0xc00)
                        return true;
                    if (cp < 0xc01)
                        return false;
                    if (cp < 0xc04)
                        return true;
                    if (cp === 0xc04)
                        return true;
                    if (cp < 0xc3e)
                        return false;
                    if (cp < 0xc41)
                        return true;
                    if (cp < 0xc41)
                        return false;
                    if (cp < 0xc45)
                        return true;
                    if (cp < 0xc46)
                        return false;
                    if (cp < 0xc49)
                        return true;
                    if (cp < 0xc4a)
                        return false;
                    if (cp < 0xc4e)
                        return true;
                    if (cp < 0xc55)
                        return false;
                    if (cp < 0xc57)
                        return true;
                    return false;
                }
                if (cp < 0xc64)
                    return true;
                if (cp < 0xc66)
                    return false;
                if (cp < 0xc70)
                    return true;
                if (cp === 0xc81)
                    return true;
                if (cp < 0xc82)
                    return false;
                if (cp < 0xc84)
                    return true;
                if (cp === 0xcbc)
                    return true;
                if (cp === 0xcbe)
                    return true;
                if (cp === 0xcbf)
                    return true;
                if (cp < 0xcc0)
                    return false;
                if (cp < 0xcc5)
                    return true;
                if (cp === 0xcc6)
                    return true;
                return false;
            }
            if (cp < 0xd3b) {
                if (cp < 0xcc7)
                    return false;
                if (cp < 0xcc9)
                    return true;
                if (cp < 0xcca)
                    return false;
                if (cp < 0xccc)
                    return true;
                if (cp < 0xccc)
                    return false;
                if (cp < 0xcce)
                    return true;
                if (cp < 0xcd5)
                    return false;
                if (cp < 0xcd7)
                    return true;
                if (cp < 0xce2)
                    return false;
                if (cp < 0xce4)
                    return true;
                if (cp < 0xce6)
                    return false;
                if (cp < 0xcf0)
                    return true;
                if (cp < 0xd00)
                    return false;
                if (cp < 0xd02)
                    return true;
                if (cp < 0xd02)
                    return false;
                if (cp < 0xd04)
                    return true;
                return false;
            }
            if (cp < 0xd3d)
                return true;
            if (cp < 0xd3e)
                return false;
            if (cp < 0xd41)
                return true;
            if (cp < 0xd41)
                return false;
            if (cp < 0xd45)
                return true;
            if (cp < 0xd46)
                return false;
            if (cp < 0xd49)
                return true;
            if (cp < 0xd4a)
                return false;
            if (cp < 0xd4d)
                return true;
            if (cp === 0xd4d)
                return true;
            if (cp === 0xd57)
                return true;
            if (cp < 0xd62)
                return false;
            if (cp < 0xd64)
                return true;
            if (cp < 0xd66)
                return false;
            if (cp < 0xd70)
                return true;
            return false;
        }
        if (cp < 0x17e0) {
            if (cp < 0x1038) {
                if (cp < 0xf18) {
                    if (cp < 0xe31) {
                        if (cp < 0xd82)
                            return false;
                        if (cp < 0xd84)
                            return true;
                        if (cp === 0xdca)
                            return true;
                        if (cp < 0xdcf)
                            return false;
                        if (cp < 0xdd2)
                            return true;
                        if (cp < 0xdd2)
                            return false;
                        if (cp < 0xdd5)
                            return true;
                        if (cp === 0xdd6)
                            return true;
                        if (cp < 0xdd8)
                            return false;
                        if (cp < 0xde0)
                            return true;
                        if (cp < 0xde6)
                            return false;
                        if (cp < 0xdf0)
                            return true;
                        if (cp < 0xdf2)
                            return false;
                        if (cp < 0xdf4)
                            return true;
                        return false;
                    }
                    if (cp === 0xe31)
                        return true;
                    if (cp < 0xe34)
                        return false;
                    if (cp < 0xe3b)
                        return true;
                    if (cp < 0xe47)
                        return false;
                    if (cp < 0xe4f)
                        return true;
                    if (cp < 0xe50)
                        return false;
                    if (cp < 0xe5a)
                        return true;
                    if (cp === 0xeb1)
                        return true;
                    if (cp < 0xeb4)
                        return false;
                    if (cp < 0xeba)
                        return true;
                    if (cp < 0xebb)
                        return false;
                    if (cp < 0xebd)
                        return true;
                    if (cp < 0xec8)
                        return false;
                    if (cp < 0xece)
                        return true;
                    if (cp < 0xed0)
                        return false;
                    if (cp < 0xeda)
                        return true;
                    return false;
                }
                if (cp < 0xf80) {
                    if (cp < 0xf18)
                        return false;
                    if (cp < 0xf1a)
                        return true;
                    if (cp < 0xf20)
                        return false;
                    if (cp < 0xf2a)
                        return true;
                    if (cp === 0xf35)
                        return true;
                    if (cp === 0xf37)
                        return true;
                    if (cp === 0xf39)
                        return true;
                    if (cp < 0xf3e)
                        return false;
                    if (cp < 0xf40)
                        return true;
                    if (cp < 0xf71)
                        return false;
                    if (cp < 0xf7f)
                        return true;
                    if (cp === 0xf7f)
                        return true;
                    return false;
                }
                if (cp < 0xf85)
                    return true;
                if (cp < 0xf86)
                    return false;
                if (cp < 0xf88)
                    return true;
                if (cp < 0xf8d)
                    return false;
                if (cp < 0xf98)
                    return true;
                if (cp < 0xf99)
                    return false;
                if (cp < 0xfbd)
                    return true;
                if (cp === 0xfc6)
                    return true;
                if (cp < 0x102b)
                    return false;
                if (cp < 0x102d)
                    return true;
                if (cp < 0x102d)
                    return false;
                if (cp < 0x1031)
                    return true;
                if (cp === 0x1031)
                    return true;
                if (cp < 0x1032)
                    return false;
                if (cp < 0x1038)
                    return true;
                return false;
            }
            if (cp < 0x1090) {
                if (cp < 0x1062) {
                    if (cp === 0x1038)
                        return true;
                    if (cp < 0x1039)
                        return false;
                    if (cp < 0x103b)
                        return true;
                    if (cp < 0x103b)
                        return false;
                    if (cp < 0x103d)
                        return true;
                    if (cp < 0x103d)
                        return false;
                    if (cp < 0x103f)
                        return true;
                    if (cp < 0x1040)
                        return false;
                    if (cp < 0x104a)
                        return true;
                    if (cp < 0x1056)
                        return false;
                    if (cp < 0x1058)
                        return true;
                    if (cp < 0x1058)
                        return false;
                    if (cp < 0x105a)
                        return true;
                    if (cp < 0x105e)
                        return false;
                    if (cp < 0x1061)
                        return true;
                    return false;
                }
                if (cp < 0x1065)
                    return true;
                if (cp < 0x1067)
                    return false;
                if (cp < 0x106e)
                    return true;
                if (cp < 0x1071)
                    return false;
                if (cp < 0x1075)
                    return true;
                if (cp === 0x1082)
                    return true;
                if (cp < 0x1083)
                    return false;
                if (cp < 0x1085)
                    return true;
                if (cp < 0x1085)
                    return false;
                if (cp < 0x1087)
                    return true;
                if (cp < 0x1087)
                    return false;
                if (cp < 0x108d)
                    return true;
                if (cp === 0x108d)
                    return true;
                if (cp === 0x108f)
                    return true;
                return false;
            }
            if (cp < 0x1772) {
                if (cp < 0x1090)
                    return false;
                if (cp < 0x109a)
                    return true;
                if (cp < 0x109a)
                    return false;
                if (cp < 0x109d)
                    return true;
                if (cp === 0x109d)
                    return true;
                if (cp < 0x135d)
                    return false;
                if (cp < 0x1360)
                    return true;
                if (cp < 0x1369)
                    return false;
                if (cp < 0x1372)
                    return true;
                if (cp < 0x1712)
                    return false;
                if (cp < 0x1715)
                    return true;
                if (cp < 0x1732)
                    return false;
                if (cp < 0x1735)
                    return true;
                if (cp < 0x1752)
                    return false;
                if (cp < 0x1754)
                    return true;
                return false;
            }
            if (cp < 0x1774)
                return true;
            if (cp < 0x17b4)
                return false;
            if (cp < 0x17b6)
                return true;
            if (cp === 0x17b6)
                return true;
            if (cp < 0x17b7)
                return false;
            if (cp < 0x17be)
                return true;
            if (cp < 0x17be)
                return false;
            if (cp < 0x17c6)
                return true;
            if (cp === 0x17c6)
                return true;
            if (cp < 0x17c7)
                return false;
            if (cp < 0x17c9)
                return true;
            if (cp < 0x17c9)
                return false;
            if (cp < 0x17d4)
                return true;
            if (cp === 0x17dd)
                return true;
            return false;
        }
        if (cp < 0x1b04) {
            if (cp < 0x1a1b) {
                if (cp < 0x1930) {
                    if (cp < 0x17e0)
                        return false;
                    if (cp < 0x17ea)
                        return true;
                    if (cp < 0x180b)
                        return false;
                    if (cp < 0x180e)
                        return true;
                    if (cp < 0x1810)
                        return false;
                    if (cp < 0x181a)
                        return true;
                    if (cp === 0x18a9)
                        return true;
                    if (cp < 0x1920)
                        return false;
                    if (cp < 0x1923)
                        return true;
                    if (cp < 0x1923)
                        return false;
                    if (cp < 0x1927)
                        return true;
                    if (cp < 0x1927)
                        return false;
                    if (cp < 0x1929)
                        return true;
                    if (cp < 0x1929)
                        return false;
                    if (cp < 0x192c)
                        return true;
                    return false;
                }
                if (cp < 0x1932)
                    return true;
                if (cp === 0x1932)
                    return true;
                if (cp < 0x1933)
                    return false;
                if (cp < 0x1939)
                    return true;
                if (cp < 0x1939)
                    return false;
                if (cp < 0x193c)
                    return true;
                if (cp < 0x1946)
                    return false;
                if (cp < 0x1950)
                    return true;
                if (cp < 0x19d0)
                    return false;
                if (cp < 0x19da)
                    return true;
                if (cp === 0x19da)
                    return true;
                if (cp < 0x1a17)
                    return false;
                if (cp < 0x1a19)
                    return true;
                if (cp < 0x1a19)
                    return false;
                if (cp < 0x1a1b)
                    return true;
                return false;
            }
            if (cp < 0x1a63) {
                if (cp === 0x1a1b)
                    return true;
                if (cp === 0x1a55)
                    return true;
                if (cp === 0x1a56)
                    return true;
                if (cp === 0x1a57)
                    return true;
                if (cp < 0x1a58)
                    return false;
                if (cp < 0x1a5f)
                    return true;
                if (cp === 0x1a60)
                    return true;
                if (cp === 0x1a61)
                    return true;
                if (cp === 0x1a62)
                    return true;
                return false;
            }
            if (cp < 0x1a65)
                return true;
            if (cp < 0x1a65)
                return false;
            if (cp < 0x1a6d)
                return true;
            if (cp < 0x1a6d)
                return false;
            if (cp < 0x1a73)
                return true;
            if (cp < 0x1a73)
                return false;
            if (cp < 0x1a7d)
                return true;
            if (cp === 0x1a7f)
                return true;
            if (cp < 0x1a80)
                return false;
            if (cp < 0x1a8a)
                return true;
            if (cp < 0x1a90)
                return false;
            if (cp < 0x1a9a)
                return true;
            if (cp < 0x1ab0)
                return false;
            if (cp < 0x1abe)
                return true;
            if (cp < 0x1b00)
                return false;
            if (cp < 0x1b04)
                return true;
            return false;
        }
        if (cp < 0x1baa) {
            if (cp < 0x1b43) {
                if (cp === 0x1b04)
                    return true;
                if (cp === 0x1b34)
                    return true;
                if (cp === 0x1b35)
                    return true;
                if (cp < 0x1b36)
                    return false;
                if (cp < 0x1b3b)
                    return true;
                if (cp === 0x1b3b)
                    return true;
                if (cp === 0x1b3c)
                    return true;
                if (cp < 0x1b3d)
                    return false;
                if (cp < 0x1b42)
                    return true;
                if (cp === 0x1b42)
                    return true;
                return false;
            }
            if (cp < 0x1b45)
                return true;
            if (cp < 0x1b50)
                return false;
            if (cp < 0x1b5a)
                return true;
            if (cp < 0x1b6b)
                return false;
            if (cp < 0x1b74)
                return true;
            if (cp < 0x1b80)
                return false;
            if (cp < 0x1b82)
                return true;
            if (cp === 0x1b82)
                return true;
            if (cp === 0x1ba1)
                return true;
            if (cp < 0x1ba2)
                return false;
            if (cp < 0x1ba6)
                return true;
            if (cp < 0x1ba6)
                return false;
            if (cp < 0x1ba8)
                return true;
            if (cp < 0x1ba8)
                return false;
            if (cp < 0x1baa)
                return true;
            return false;
        }
        if (cp < 0x1bee) {
            if (cp === 0x1baa)
                return true;
            if (cp < 0x1bab)
                return false;
            if (cp < 0x1bae)
                return true;
            if (cp < 0x1bb0)
                return false;
            if (cp < 0x1bba)
                return true;
            if (cp === 0x1be6)
                return true;
            if (cp === 0x1be7)
                return true;
            if (cp < 0x1be8)
                return false;
            if (cp < 0x1bea)
                return true;
            if (cp < 0x1bea)
                return false;
            if (cp < 0x1bed)
                return true;
            if (cp === 0x1bed)
                return true;
            return false;
        }
        if (cp === 0x1bee)
            return true;
        if (cp < 0x1bef)
            return false;
        if (cp < 0x1bf2)
            return true;
        if (cp < 0x1bf2)
            return false;
        if (cp < 0x1bf4)
            return true;
        if (cp < 0x1c24)
            return false;
        if (cp < 0x1c2c)
            return true;
        if (cp < 0x1c2c)
            return false;
        if (cp < 0x1c34)
            return true;
        if (cp < 0x1c34)
            return false;
        if (cp < 0x1c36)
            return true;
        if (cp < 0x1c36)
            return false;
        if (cp < 0x1c38)
            return true;
        if (cp < 0x1c40)
            return false;
        if (cp < 0x1c4a)
            return true;
        if (cp < 0x1c50)
            return false;
        if (cp < 0x1c5a)
            return true;
        return false;
    }
    if (cp < 0x1123e) {
        if (cp < 0xaab7) {
            if (cp < 0xa8b4) {
                if (cp < 0x2d7f) {
                    if (cp < 0x1cf8) {
                        if (cp < 0x1cd0)
                            return false;
                        if (cp < 0x1cd3)
                            return true;
                        if (cp < 0x1cd4)
                            return false;
                        if (cp < 0x1ce1)
                            return true;
                        if (cp === 0x1ce1)
                            return true;
                        if (cp < 0x1ce2)
                            return false;
                        if (cp < 0x1ce9)
                            return true;
                        if (cp === 0x1ced)
                            return true;
                        if (cp < 0x1cf2)
                            return false;
                        if (cp < 0x1cf4)
                            return true;
                        if (cp === 0x1cf4)
                            return true;
                        if (cp === 0x1cf7)
                            return true;
                        return false;
                    }
                    if (cp < 0x1cfa)
                        return true;
                    if (cp < 0x1dc0)
                        return false;
                    if (cp < 0x1dfa)
                        return true;
                    if (cp < 0x1dfb)
                        return false;
                    if (cp < 0x1e00)
                        return true;
                    if (cp < 0x203f)
                        return false;
                    if (cp < 0x2041)
                        return true;
                    if (cp === 0x2054)
                        return true;
                    if (cp < 0x20d0)
                        return false;
                    if (cp < 0x20dd)
                        return true;
                    if (cp === 0x20e1)
                        return true;
                    if (cp < 0x20e5)
                        return false;
                    if (cp < 0x20f1)
                        return true;
                    if (cp < 0x2cef)
                        return false;
                    if (cp < 0x2cf2)
                        return true;
                    return false;
                }
                if (cp < 0xa69e) {
                    if (cp === 0x2d7f)
                        return true;
                    if (cp < 0x2de0)
                        return false;
                    if (cp < 0x2e00)
                        return true;
                    if (cp < 0x302a)
                        return false;
                    if (cp < 0x302e)
                        return true;
                    if (cp < 0x302e)
                        return false;
                    if (cp < 0x3030)
                        return true;
                    if (cp < 0x3099)
                        return false;
                    if (cp < 0x309b)
                        return true;
                    if (cp < 0xa620)
                        return false;
                    if (cp < 0xa62a)
                        return true;
                    if (cp === 0xa66f)
                        return true;
                    if (cp < 0xa674)
                        return false;
                    if (cp < 0xa67e)
                        return true;
                    return false;
                }
                if (cp < 0xa6a0)
                    return true;
                if (cp < 0xa6f0)
                    return false;
                if (cp < 0xa6f2)
                    return true;
                if (cp === 0xa802)
                    return true;
                if (cp === 0xa806)
                    return true;
                if (cp === 0xa80b)
                    return true;
                if (cp < 0xa823)
                    return false;
                if (cp < 0xa825)
                    return true;
                if (cp < 0xa825)
                    return false;
                if (cp < 0xa827)
                    return true;
                if (cp === 0xa827)
                    return true;
                if (cp < 0xa880)
                    return false;
                if (cp < 0xa882)
                    return true;
                return false;
            }
            if (cp < 0xa9d0) {
                if (cp < 0xa952) {
                    if (cp < 0xa8b4)
                        return false;
                    if (cp < 0xa8c4)
                        return true;
                    if (cp < 0xa8c4)
                        return false;
                    if (cp < 0xa8c6)
                        return true;
                    if (cp < 0xa8d0)
                        return false;
                    if (cp < 0xa8da)
                        return true;
                    if (cp < 0xa8e0)
                        return false;
                    if (cp < 0xa8f2)
                        return true;
                    if (cp === 0xa8ff)
                        return true;
                    if (cp < 0xa900)
                        return false;
                    if (cp < 0xa90a)
                        return true;
                    if (cp < 0xa926)
                        return false;
                    if (cp < 0xa92e)
                        return true;
                    if (cp < 0xa947)
                        return false;
                    if (cp < 0xa952)
                        return true;
                    return false;
                }
                if (cp < 0xa954)
                    return true;
                if (cp < 0xa980)
                    return false;
                if (cp < 0xa983)
                    return true;
                if (cp === 0xa983)
                    return true;
                if (cp === 0xa9b3)
                    return true;
                if (cp < 0xa9b4)
                    return false;
                if (cp < 0xa9b6)
                    return true;
                if (cp < 0xa9b6)
                    return false;
                if (cp < 0xa9ba)
                    return true;
                if (cp < 0xa9ba)
                    return false;
                if (cp < 0xa9bc)
                    return true;
                if (cp === 0xa9bc)
                    return true;
                if (cp < 0xa9bd)
                    return false;
                if (cp < 0xa9c1)
                    return true;
                return false;
            }
            if (cp < 0xaa43) {
                if (cp < 0xa9d0)
                    return false;
                if (cp < 0xa9da)
                    return true;
                if (cp === 0xa9e5)
                    return true;
                if (cp < 0xa9f0)
                    return false;
                if (cp < 0xa9fa)
                    return true;
                if (cp < 0xaa29)
                    return false;
                if (cp < 0xaa2f)
                    return true;
                if (cp < 0xaa2f)
                    return false;
                if (cp < 0xaa31)
                    return true;
                if (cp < 0xaa31)
                    return false;
                if (cp < 0xaa33)
                    return true;
                if (cp < 0xaa33)
                    return false;
                if (cp < 0xaa35)
                    return true;
                if (cp < 0xaa35)
                    return false;
                if (cp < 0xaa37)
                    return true;
                return false;
            }
            if (cp === 0xaa43)
                return true;
            if (cp === 0xaa4c)
                return true;
            if (cp === 0xaa4d)
                return true;
            if (cp < 0xaa50)
                return false;
            if (cp < 0xaa5a)
                return true;
            if (cp === 0xaa7b)
                return true;
            if (cp === 0xaa7c)
                return true;
            if (cp === 0xaa7d)
                return true;
            if (cp === 0xaab0)
                return true;
            if (cp < 0xaab2)
                return false;
            if (cp < 0xaab5)
                return true;
            return false;
        }
        if (cp < 0x10d30) {
            if (cp < 0xfe00) {
                if (cp < 0xabe3) {
                    if (cp < 0xaab7)
                        return false;
                    if (cp < 0xaab9)
                        return true;
                    if (cp < 0xaabe)
                        return false;
                    if (cp < 0xaac0)
                        return true;
                    if (cp === 0xaac1)
                        return true;
                    if (cp === 0xaaeb)
                        return true;
                    if (cp < 0xaaec)
                        return false;
                    if (cp < 0xaaee)
                        return true;
                    if (cp < 0xaaee)
                        return false;
                    if (cp < 0xaaf0)
                        return true;
                    if (cp === 0xaaf5)
                        return true;
                    if (cp === 0xaaf6)
                        return true;
                    return false;
                }
                if (cp < 0xabe5)
                    return true;
                if (cp === 0xabe5)
                    return true;
                if (cp < 0xabe6)
                    return false;
                if (cp < 0xabe8)
                    return true;
                if (cp === 0xabe8)
                    return true;
                if (cp < 0xabe9)
                    return false;
                if (cp < 0xabeb)
                    return true;
                if (cp === 0xabec)
                    return true;
                if (cp === 0xabed)
                    return true;
                if (cp < 0xabf0)
                    return false;
                if (cp < 0xabfa)
                    return true;
                if (cp === 0xfb1e)
                    return true;
                return false;
            }
            if (cp < 0x10376) {
                if (cp < 0xfe00)
                    return false;
                if (cp < 0xfe10)
                    return true;
                if (cp < 0xfe20)
                    return false;
                if (cp < 0xfe30)
                    return true;
                if (cp < 0xfe33)
                    return false;
                if (cp < 0xfe35)
                    return true;
                if (cp < 0xfe4d)
                    return false;
                if (cp < 0xfe50)
                    return true;
                if (cp < 0xff10)
                    return false;
                if (cp < 0xff1a)
                    return true;
                if (cp === 0xff3f)
                    return true;
                if (cp === 0x101fd)
                    return true;
                if (cp === 0x102e0)
                    return true;
                return false;
            }
            if (cp < 0x1037b)
                return true;
            if (cp < 0x104a0)
                return false;
            if (cp < 0x104aa)
                return true;
            if (cp < 0x10a01)
                return false;
            if (cp < 0x10a04)
                return true;
            if (cp < 0x10a05)
                return false;
            if (cp < 0x10a07)
                return true;
            if (cp < 0x10a0c)
                return false;
            if (cp < 0x10a10)
                return true;
            if (cp < 0x10a38)
                return false;
            if (cp < 0x10a3b)
                return true;
            if (cp === 0x10a3f)
                return true;
            if (cp < 0x10ae5)
                return false;
            if (cp < 0x10ae7)
                return true;
            if (cp < 0x10d24)
                return false;
            if (cp < 0x10d28)
                return true;
            return false;
        }
        if (cp < 0x1112d) {
            if (cp < 0x11082) {
                if (cp < 0x10d30)
                    return false;
                if (cp < 0x10d3a)
                    return true;
                if (cp < 0x10f46)
                    return false;
                if (cp < 0x10f51)
                    return true;
                if (cp === 0x11000)
                    return true;
                if (cp === 0x11001)
                    return true;
                if (cp === 0x11002)
                    return true;
                if (cp < 0x11038)
                    return false;
                if (cp < 0x11047)
                    return true;
                if (cp < 0x11066)
                    return false;
                if (cp < 0x11070)
                    return true;
                if (cp < 0x1107f)
                    return false;
                if (cp < 0x11082)
                    return true;
                return false;
            }
            if (cp === 0x11082)
                return true;
            if (cp < 0x110b0)
                return false;
            if (cp < 0x110b3)
                return true;
            if (cp < 0x110b3)
                return false;
            if (cp < 0x110b7)
                return true;
            if (cp < 0x110b7)
                return false;
            if (cp < 0x110b9)
                return true;
            if (cp < 0x110b9)
                return false;
            if (cp < 0x110bb)
                return true;
            if (cp < 0x110f0)
                return false;
            if (cp < 0x110fa)
                return true;
            if (cp < 0x11100)
                return false;
            if (cp < 0x11103)
                return true;
            if (cp < 0x11127)
                return false;
            if (cp < 0x1112c)
                return true;
            if (cp === 0x1112c)
                return true;
            return false;
        }
        if (cp < 0x111bf) {
            if (cp < 0x1112d)
                return false;
            if (cp < 0x11135)
                return true;
            if (cp < 0x11136)
                return false;
            if (cp < 0x11140)
                return true;
            if (cp < 0x11145)
                return false;
            if (cp < 0x11147)
                return true;
            if (cp === 0x11173)
                return true;
            if (cp < 0x11180)
                return false;
            if (cp < 0x11182)
                return true;
            if (cp === 0x11182)
                return true;
            if (cp < 0x111b3)
                return false;
            if (cp < 0x111b6)
                return true;
            if (cp < 0x111b6)
                return false;
            if (cp < 0x111bf)
                return true;
            return false;
        }
        if (cp < 0x111c1)
            return true;
        if (cp < 0x111c9)
            return false;
        if (cp < 0x111cd)
            return true;
        if (cp < 0x111d0)
            return false;
        if (cp < 0x111da)
            return true;
        if (cp < 0x1122c)
            return false;
        if (cp < 0x1122f)
            return true;
        if (cp < 0x1122f)
            return false;
        if (cp < 0x11232)
            return true;
        if (cp < 0x11232)
            return false;
        if (cp < 0x11234)
            return true;
        if (cp === 0x11234)
            return true;
        if (cp === 0x11235)
            return true;
        if (cp < 0x11236)
            return false;
        if (cp < 0x11238)
            return true;
        return false;
    }
    if (cp < 0x11a33) {
        if (cp < 0x115af) {
            if (cp < 0x11435) {
                if (cp < 0x1133e) {
                    if (cp === 0x1123e)
                        return true;
                    if (cp === 0x112df)
                        return true;
                    if (cp < 0x112e0)
                        return false;
                    if (cp < 0x112e3)
                        return true;
                    if (cp < 0x112e3)
                        return false;
                    if (cp < 0x112eb)
                        return true;
                    if (cp < 0x112f0)
                        return false;
                    if (cp < 0x112fa)
                        return true;
                    if (cp < 0x11300)
                        return false;
                    if (cp < 0x11302)
                        return true;
                    if (cp < 0x11302)
                        return false;
                    if (cp < 0x11304)
                        return true;
                    if (cp < 0x1133b)
                        return false;
                    if (cp < 0x1133d)
                        return true;
                    return false;
                }
                if (cp < 0x11340)
                    return true;
                if (cp === 0x11340)
                    return true;
                if (cp < 0x11341)
                    return false;
                if (cp < 0x11345)
                    return true;
                if (cp < 0x11347)
                    return false;
                if (cp < 0x11349)
                    return true;
                if (cp < 0x1134b)
                    return false;
                if (cp < 0x1134e)
                    return true;
                if (cp === 0x11357)
                    return true;
                if (cp < 0x11362)
                    return false;
                if (cp < 0x11364)
                    return true;
                if (cp < 0x11366)
                    return false;
                if (cp < 0x1136d)
                    return true;
                if (cp < 0x11370)
                    return false;
                if (cp < 0x11375)
                    return true;
                return false;
            }
            if (cp < 0x114b0) {
                if (cp < 0x11435)
                    return false;
                if (cp < 0x11438)
                    return true;
                if (cp < 0x11438)
                    return false;
                if (cp < 0x11440)
                    return true;
                if (cp < 0x11440)
                    return false;
                if (cp < 0x11442)
                    return true;
                if (cp < 0x11442)
                    return false;
                if (cp < 0x11445)
                    return true;
                if (cp === 0x11445)
                    return true;
                if (cp === 0x11446)
                    return true;
                if (cp < 0x11450)
                    return false;
                if (cp < 0x1145a)
                    return true;
                if (cp === 0x1145e)
                    return true;
                return false;
            }
            if (cp < 0x114b3)
                return true;
            if (cp < 0x114b3)
                return false;
            if (cp < 0x114b9)
                return true;
            if (cp === 0x114b9)
                return true;
            if (cp === 0x114ba)
                return true;
            if (cp < 0x114bb)
                return false;
            if (cp < 0x114bf)
                return true;
            if (cp < 0x114bf)
                return false;
            if (cp < 0x114c1)
                return true;
            if (cp === 0x114c1)
                return true;
            if (cp < 0x114c2)
                return false;
            if (cp < 0x114c4)
                return true;
            if (cp < 0x114d0)
                return false;
            if (cp < 0x114da)
                return true;
            return false;
        }
        if (cp < 0x116ae) {
            if (cp < 0x11633) {
                if (cp < 0x115af)
                    return false;
                if (cp < 0x115b2)
                    return true;
                if (cp < 0x115b2)
                    return false;
                if (cp < 0x115b6)
                    return true;
                if (cp < 0x115b8)
                    return false;
                if (cp < 0x115bc)
                    return true;
                if (cp < 0x115bc)
                    return false;
                if (cp < 0x115be)
                    return true;
                if (cp === 0x115be)
                    return true;
                if (cp < 0x115bf)
                    return false;
                if (cp < 0x115c1)
                    return true;
                if (cp < 0x115dc)
                    return false;
                if (cp < 0x115de)
                    return true;
                if (cp < 0x11630)
                    return false;
                if (cp < 0x11633)
                    return true;
                return false;
            }
            if (cp < 0x1163b)
                return true;
            if (cp < 0x1163b)
                return false;
            if (cp < 0x1163d)
                return true;
            if (cp === 0x1163d)
                return true;
            if (cp === 0x1163e)
                return true;
            if (cp < 0x1163f)
                return false;
            if (cp < 0x11641)
                return true;
            if (cp < 0x11650)
                return false;
            if (cp < 0x1165a)
                return true;
            if (cp === 0x116ab)
                return true;
            if (cp === 0x116ac)
                return true;
            if (cp === 0x116ad)
                return true;
            return false;
        }
        if (cp < 0x11726) {
            if (cp < 0x116ae)
                return false;
            if (cp < 0x116b0)
                return true;
            if (cp < 0x116b0)
                return false;
            if (cp < 0x116b6)
                return true;
            if (cp === 0x116b6)
                return true;
            if (cp === 0x116b7)
                return true;
            if (cp < 0x116c0)
                return false;
            if (cp < 0x116ca)
                return true;
            if (cp < 0x1171d)
                return false;
            if (cp < 0x11720)
                return true;
            if (cp < 0x11720)
                return false;
            if (cp < 0x11722)
                return true;
            if (cp < 0x11722)
                return false;
            if (cp < 0x11726)
                return true;
            return false;
        }
        if (cp === 0x11726)
            return true;
        if (cp < 0x11727)
            return false;
        if (cp < 0x1172c)
            return true;
        if (cp < 0x11730)
            return false;
        if (cp < 0x1173a)
            return true;
        if (cp < 0x1182c)
            return false;
        if (cp < 0x1182f)
            return true;
        if (cp < 0x1182f)
            return false;
        if (cp < 0x11838)
            return true;
        if (cp === 0x11838)
            return true;
        if (cp < 0x11839)
            return false;
        if (cp < 0x1183b)
            return true;
        if (cp < 0x118e0)
            return false;
        if (cp < 0x118ea)
            return true;
        if (cp < 0x11a01)
            return false;
        if (cp < 0x11a0b)
            return true;
        return false;
    }
    if (cp < 0x11d97) {
        if (cp < 0x11ca9) {
            if (cp < 0x11a97) {
                if (cp < 0x11a33)
                    return false;
                if (cp < 0x11a39)
                    return true;
                if (cp === 0x11a39)
                    return true;
                if (cp < 0x11a3b)
                    return false;
                if (cp < 0x11a3f)
                    return true;
                if (cp === 0x11a47)
                    return true;
                if (cp < 0x11a51)
                    return false;
                if (cp < 0x11a57)
                    return true;
                if (cp < 0x11a57)
                    return false;
                if (cp < 0x11a59)
                    return true;
                if (cp < 0x11a59)
                    return false;
                if (cp < 0x11a5c)
                    return true;
                if (cp < 0x11a8a)
                    return false;
                if (cp < 0x11a97)
                    return true;
                return false;
            }
            if (cp === 0x11a97)
                return true;
            if (cp < 0x11a98)
                return false;
            if (cp < 0x11a9a)
                return true;
            if (cp === 0x11c2f)
                return true;
            if (cp < 0x11c30)
                return false;
            if (cp < 0x11c37)
                return true;
            if (cp < 0x11c38)
                return false;
            if (cp < 0x11c3e)
                return true;
            if (cp === 0x11c3e)
                return true;
            if (cp === 0x11c3f)
                return true;
            if (cp < 0x11c50)
                return false;
            if (cp < 0x11c5a)
                return true;
            if (cp < 0x11c92)
                return false;
            if (cp < 0x11ca8)
                return true;
            return false;
        }
        if (cp < 0x11d3c) {
            if (cp === 0x11ca9)
                return true;
            if (cp < 0x11caa)
                return false;
            if (cp < 0x11cb1)
                return true;
            if (cp === 0x11cb1)
                return true;
            if (cp < 0x11cb2)
                return false;
            if (cp < 0x11cb4)
                return true;
            if (cp === 0x11cb4)
                return true;
            if (cp < 0x11cb5)
                return false;
            if (cp < 0x11cb7)
                return true;
            if (cp < 0x11d31)
                return false;
            if (cp < 0x11d37)
                return true;
            if (cp === 0x11d3a)
                return true;
            return false;
        }
        if (cp < 0x11d3e)
            return true;
        if (cp < 0x11d3f)
            return false;
        if (cp < 0x11d46)
            return true;
        if (cp === 0x11d47)
            return true;
        if (cp < 0x11d50)
            return false;
        if (cp < 0x11d5a)
            return true;
        if (cp < 0x11d8a)
            return false;
        if (cp < 0x11d8f)
            return true;
        if (cp < 0x11d90)
            return false;
        if (cp < 0x11d92)
            return true;
        if (cp < 0x11d93)
            return false;
        if (cp < 0x11d95)
            return true;
        if (cp === 0x11d95)
            return true;
        if (cp === 0x11d96)
            return true;
        return false;
    }
    if (cp < 0x1d242) {
        if (cp < 0x16f51) {
            if (cp === 0x11d97)
                return true;
            if (cp < 0x11da0)
                return false;
            if (cp < 0x11daa)
                return true;
            if (cp < 0x11ef3)
                return false;
            if (cp < 0x11ef5)
                return true;
            if (cp < 0x11ef5)
                return false;
            if (cp < 0x11ef7)
                return true;
            if (cp < 0x16a60)
                return false;
            if (cp < 0x16a6a)
                return true;
            if (cp < 0x16af0)
                return false;
            if (cp < 0x16af5)
                return true;
            if (cp < 0x16b30)
                return false;
            if (cp < 0x16b37)
                return true;
            if (cp < 0x16b50)
                return false;
            if (cp < 0x16b5a)
                return true;
            return false;
        }
        if (cp < 0x16f7f)
            return true;
        if (cp < 0x16f8f)
            return false;
        if (cp < 0x16f93)
            return true;
        if (cp < 0x1bc9d)
            return false;
        if (cp < 0x1bc9f)
            return true;
        if (cp < 0x1d165)
            return false;
        if (cp < 0x1d167)
            return true;
        if (cp < 0x1d167)
            return false;
        if (cp < 0x1d16a)
            return true;
        if (cp < 0x1d16d)
            return false;
        if (cp < 0x1d173)
            return true;
        if (cp < 0x1d17b)
            return false;
        if (cp < 0x1d183)
            return true;
        if (cp < 0x1d185)
            return false;
        if (cp < 0x1d18c)
            return true;
        if (cp < 0x1d1aa)
            return false;
        if (cp < 0x1d1ae)
            return true;
        return false;
    }
    if (cp < 0x1e000) {
        if (cp < 0x1d242)
            return false;
        if (cp < 0x1d245)
            return true;
        if (cp < 0x1d7ce)
            return false;
        if (cp < 0x1d800)
            return true;
        if (cp < 0x1da00)
            return false;
        if (cp < 0x1da37)
            return true;
        if (cp < 0x1da3b)
            return false;
        if (cp < 0x1da6d)
            return true;
        if (cp === 0x1da75)
            return true;
        if (cp === 0x1da84)
            return true;
        if (cp < 0x1da9b)
            return false;
        if (cp < 0x1daa0)
            return true;
        if (cp < 0x1daa1)
            return false;
        if (cp < 0x1dab0)
            return true;
        return false;
    }
    if (cp < 0x1e007)
        return true;
    if (cp < 0x1e008)
        return false;
    if (cp < 0x1e019)
        return true;
    if (cp < 0x1e01b)
        return false;
    if (cp < 0x1e022)
        return true;
    if (cp < 0x1e023)
        return false;
    if (cp < 0x1e025)
        return true;
    if (cp < 0x1e026)
        return false;
    if (cp < 0x1e02b)
        return true;
    if (cp < 0x1e8d0)
        return false;
    if (cp < 0x1e8d7)
        return true;
    if (cp < 0x1e944)
        return false;
    if (cp < 0x1e94b)
        return true;
    if (cp < 0x1e950)
        return false;
    if (cp < 0x1e95a)
        return true;
    if (cp < 0xe0100)
        return false;
    if (cp < 0xe01f0)
        return true;
    return false;
}

const PropertyData = {
    $LONE: new Set([
        "ASCII",
        "ASCII_Hex_Digit",
        "AHex",
        "Alphabetic",
        "Alpha",
        "Any",
        "Assigned",
        "Bidi_Control",
        "Bidi_C",
        "Bidi_Mirrored",
        "Bidi_M",
        "Case_Ignorable",
        "CI",
        "Cased",
        "Changes_When_Casefolded",
        "CWCF",
        "Changes_When_Casemapped",
        "CWCM",
        "Changes_When_Lowercased",
        "CWL",
        "Changes_When_NFKC_Casefolded",
        "CWKCF",
        "Changes_When_Titlecased",
        "CWT",
        "Changes_When_Uppercased",
        "CWU",
        "Dash",
        "Default_Ignorable_Code_Point",
        "DI",
        "Deprecated",
        "Dep",
        "Diacritic",
        "Dia",
        "Emoji",
        "Emoji_Component",
        "Emoji_Modifier",
        "Emoji_Modifier_Base",
        "Emoji_Presentation",
        "Extender",
        "Ext",
        "Grapheme_Base",
        "Gr_Base",
        "Grapheme_Extend",
        "Gr_Ext",
        "Hex_Digit",
        "Hex",
        "IDS_Binary_Operator",
        "IDSB",
        "IDS_Trinary_Operator",
        "IDST",
        "ID_Continue",
        "IDC",
        "ID_Start",
        "IDS",
        "Ideographic",
        "Ideo",
        "Join_Control",
        "Join_C",
        "Logical_Order_Exception",
        "LOE",
        "Lowercase",
        "Lower",
        "Math",
        "Noncharacter_Code_Point",
        "NChar",
        "Pattern_Syntax",
        "Pat_Syn",
        "Pattern_White_Space",
        "Pat_WS",
        "Quotation_Mark",
        "QMark",
        "Radical",
        "Regional_Indicator",
        "RI",
        "Sentence_Terminal",
        "STerm",
        "Soft_Dotted",
        "SD",
        "Terminal_Punctuation",
        "Term",
        "Unified_Ideograph",
        "UIdeo",
        "Uppercase",
        "Upper",
        "Variation_Selector",
        "VS",
        "White_Space",
        "space",
        "XID_Continue",
        "XIDC",
        "XID_Start",
        "XIDS",
    ]),
    General_Category: new Set([
        "Cased_Letter",
        "LC",
        "Close_Punctuation",
        "Pe",
        "Connector_Punctuation",
        "Pc",
        "Control",
        "Cc",
        "cntrl",
        "Currency_Symbol",
        "Sc",
        "Dash_Punctuation",
        "Pd",
        "Decimal_Number",
        "Nd",
        "digit",
        "Enclosing_Mark",
        "Me",
        "Final_Punctuation",
        "Pf",
        "Format",
        "Cf",
        "Initial_Punctuation",
        "Pi",
        "Letter",
        "L",
        "Letter_Number",
        "Nl",
        "Line_Separator",
        "Zl",
        "Lowercase_Letter",
        "Ll",
        "Mark",
        "M",
        "Combining_Mark",
        "Math_Symbol",
        "Sm",
        "Modifier_Letter",
        "Lm",
        "Modifier_Symbol",
        "Sk",
        "Nonspacing_Mark",
        "Mn",
        "Number",
        "N",
        "Open_Punctuation",
        "Ps",
        "Other",
        "C",
        "Other_Letter",
        "Lo",
        "Other_Number",
        "No",
        "Other_Punctuation",
        "Po",
        "Other_Symbol",
        "So",
        "Paragraph_Separator",
        "Zp",
        "Private_Use",
        "Co",
        "Punctuation",
        "P",
        "punct",
        "Separator",
        "Z",
        "Space_Separator",
        "Zs",
        "Spacing_Mark",
        "Mc",
        "Surrogate",
        "Cs",
        "Symbol",
        "S",
        "Titlecase_Letter",
        "Lt",
        "Unassigned",
        "Cn",
        "Uppercase_Letter",
        "Lu",
    ]),
    Script: new Set([
        "Adlam",
        "Adlm",
        "Ahom",
        "Anatolian_Hieroglyphs",
        "Hluw",
        "Arabic",
        "Arab",
        "Armenian",
        "Armn",
        "Avestan",
        "Avst",
        "Balinese",
        "Bali",
        "Bamum",
        "Bamu",
        "Bassa_Vah",
        "Bass",
        "Batak",
        "Batk",
        "Bengali",
        "Beng",
        "Bhaiksuki",
        "Bhks",
        "Bopomofo",
        "Bopo",
        "Brahmi",
        "Brah",
        "Braille",
        "Brai",
        "Buginese",
        "Bugi",
        "Buhid",
        "Buhd",
        "Canadian_Aboriginal",
        "Cans",
        "Carian",
        "Cari",
        "Caucasian_Albanian",
        "Aghb",
        "Chakma",
        "Cakm",
        "Cham",
        "Cherokee",
        "Cher",
        "Common",
        "Zyyy",
        "Coptic",
        "Copt",
        "Qaac",
        "Cuneiform",
        "Xsux",
        "Cypriot",
        "Cprt",
        "Cyrillic",
        "Cyrl",
        "Deseret",
        "Dsrt",
        "Devanagari",
        "Deva",
        "Duployan",
        "Dupl",
        "Egyptian_Hieroglyphs",
        "Egyp",
        "Elbasan",
        "Elba",
        "Ethiopic",
        "Ethi",
        "Georgian",
        "Geor",
        "Glagolitic",
        "Glag",
        "Gothic",
        "Goth",
        "Grantha",
        "Gran",
        "Greek",
        "Grek",
        "Gujarati",
        "Gujr",
        "Gurmukhi",
        "Guru",
        "Han",
        "Hani",
        "Hangul",
        "Hang",
        "Hanunoo",
        "Hano",
        "Hatran",
        "Hatr",
        "Hebrew",
        "Hebr",
        "Hiragana",
        "Hira",
        "Imperial_Aramaic",
        "Armi",
        "Inherited",
        "Zinh",
        "Qaai",
        "Inscriptional_Pahlavi",
        "Phli",
        "Inscriptional_Parthian",
        "Prti",
        "Javanese",
        "Java",
        "Kaithi",
        "Kthi",
        "Kannada",
        "Knda",
        "Katakana",
        "Kana",
        "Kayah_Li",
        "Kali",
        "Kharoshthi",
        "Khar",
        "Khmer",
        "Khmr",
        "Khojki",
        "Khoj",
        "Khudawadi",
        "Sind",
        "Lao",
        "Laoo",
        "Latin",
        "Latn",
        "Lepcha",
        "Lepc",
        "Limbu",
        "Limb",
        "Linear_A",
        "Lina",
        "Linear_B",
        "Linb",
        "Lisu",
        "Lycian",
        "Lyci",
        "Lydian",
        "Lydi",
        "Mahajani",
        "Mahj",
        "Malayalam",
        "Mlym",
        "Mandaic",
        "Mand",
        "Manichaean",
        "Mani",
        "Marchen",
        "Marc",
        "Masaram_Gondi",
        "Gonm",
        "Meetei_Mayek",
        "Mtei",
        "Mende_Kikakui",
        "Mend",
        "Meroitic_Cursive",
        "Merc",
        "Meroitic_Hieroglyphs",
        "Mero",
        "Miao",
        "Plrd",
        "Modi",
        "Mongolian",
        "Mong",
        "Mro",
        "Mroo",
        "Multani",
        "Mult",
        "Myanmar",
        "Mymr",
        "Nabataean",
        "Nbat",
        "New_Tai_Lue",
        "Talu",
        "Newa",
        "Nko",
        "Nkoo",
        "Nushu",
        "Nshu",
        "Ogham",
        "Ogam",
        "Ol_Chiki",
        "Olck",
        "Old_Hungarian",
        "Hung",
        "Old_Italic",
        "Ital",
        "Old_North_Arabian",
        "Narb",
        "Old_Permic",
        "Perm",
        "Old_Persian",
        "Xpeo",
        "Old_South_Arabian",
        "Sarb",
        "Old_Turkic",
        "Orkh",
        "Oriya",
        "Orya",
        "Osage",
        "Osge",
        "Osmanya",
        "Osma",
        "Pahawh_Hmong",
        "Hmng",
        "Palmyrene",
        "Palm",
        "Pau_Cin_Hau",
        "Pauc",
        "Phags_Pa",
        "Phag",
        "Phoenician",
        "Phnx",
        "Psalter_Pahlavi",
        "Phlp",
        "Rejang",
        "Rjng",
        "Runic",
        "Runr",
        "Samaritan",
        "Samr",
        "Saurashtra",
        "Saur",
        "Sharada",
        "Shrd",
        "Shavian",
        "Shaw",
        "Siddham",
        "Sidd",
        "SignWriting",
        "Sgnw",
        "Sinhala",
        "Sinh",
        "Sora_Sompeng",
        "Sora",
        "Soyombo",
        "Soyo",
        "Sundanese",
        "Sund",
        "Syloti_Nagri",
        "Sylo",
        "Syriac",
        "Syrc",
        "Tagalog",
        "Tglg",
        "Tagbanwa",
        "Tagb",
        "Tai_Le",
        "Tale",
        "Tai_Tham",
        "Lana",
        "Tai_Viet",
        "Tavt",
        "Takri",
        "Takr",
        "Tamil",
        "Taml",
        "Tangut",
        "Tang",
        "Telugu",
        "Telu",
        "Thaana",
        "Thaa",
        "Thai",
        "Tibetan",
        "Tibt",
        "Tifinagh",
        "Tfng",
        "Tirhuta",
        "Tirh",
        "Ugaritic",
        "Ugar",
        "Vai",
        "Vaii",
        "Warang_Citi",
        "Wara",
        "Yi",
        "Yiii",
        "Zanabazar_Square",
        "Zanb",
    ]),
};
PropertyData.gc = PropertyData.General_Category;
PropertyData.sc = PropertyData.Script_Extensions = PropertyData.scx =
    PropertyData.Script;

const Backspace = 0x08;
const CharacterTabulation = 0x09;
const LineFeed = 0x0a;
const LineTabulation = 0x0b;
const FormFeed = 0x0c;
const CarriageReturn = 0x0d;
const ExclamationMark = 0x21;
const DollarSign = 0x24;
const LeftParenthesis = 0x28;
const RightParenthesis = 0x29;
const Asterisk = 0x2a;
const PlusSign = 0x2b;
const Comma = 0x2c;
const HyphenMinus = 0x2d;
const FullStop = 0x2e;
const Solidus = 0x2f;
const DigitZero = 0x30;
const DigitOne = 0x31;
const DigitSeven = 0x37;
const DigitNine = 0x39;
const Colon = 0x3a;
const LessThanSign = 0x3c;
const EqualsSign = 0x3d;
const GreaterThanSign = 0x3e;
const QuestionMark = 0x3f;
const LatinCapitalLetterA = 0x41;
const LatinCapitalLetterB = 0x42;
const LatinCapitalLetterD = 0x44;
const LatinCapitalLetterF = 0x46;
const LatinCapitalLetterP = 0x50;
const LatinCapitalLetterS = 0x53;
const LatinCapitalLetterW = 0x57;
const LatinCapitalLetterZ = 0x5a;
const LowLine = 0x5f;
const LatinSmallLetterA = 0x61;
const LatinSmallLetterB = 0x62;
const LatinSmallLetterC = 0x63;
const LatinSmallLetterD = 0x64;
const LatinSmallLetterF = 0x66;
const LatinSmallLetterG = 0x67;
const LatinSmallLetterI = 0x69;
const LatinSmallLetterK = 0x6b;
const LatinSmallLetterM = 0x6d;
const LatinSmallLetterN = 0x6e;
const LatinSmallLetterP = 0x70;
const LatinSmallLetterR = 0x72;
const LatinSmallLetterS = 0x73;
const LatinSmallLetterT = 0x74;
const LatinSmallLetterU = 0x75;
const LatinSmallLetterV = 0x76;
const LatinSmallLetterW = 0x77;
const LatinSmallLetterX = 0x78;
const LatinSmallLetterY = 0x79;
const LatinSmallLetterZ = 0x7a;
const LeftSquareBracket = 0x5b;
const ReverseSolidus = 0x5c;
const RightSquareBracket = 0x5d;
const CircumflexAccent = 0x5e;
const LeftCurlyBracket = 0x7b;
const VerticalLine = 0x7c;
const RightCurlyBracket = 0x7d;
const ZeroWidthNonJoiner = 0x200c;
const ZeroWidthJoiner = 0x200d;
const LineSeparator = 0x2028;
const ParagraphSeparator = 0x2029;
const MinCodePoint = 0x00;
const MaxCodePoint = 0x10ffff;
function isLatinLetter(code) {
    return ((code >= LatinCapitalLetterA && code <= LatinCapitalLetterZ) ||
        (code >= LatinSmallLetterA && code <= LatinSmallLetterZ));
}
function isDecimalDigit(code) {
    return code >= DigitZero && code <= DigitNine;
}
function isOctalDigit(code) {
    return code >= DigitZero && code <= DigitSeven;
}
function isHexDigit(code) {
    return ((code >= DigitZero && code <= DigitNine) ||
        (code >= LatinCapitalLetterA && code <= LatinCapitalLetterF) ||
        (code >= LatinSmallLetterA && code <= LatinSmallLetterF));
}
function isLineTerminator(code) {
    return (code === LineFeed ||
        code === CarriageReturn ||
        code === LineSeparator ||
        code === ParagraphSeparator);
}
function isValidUnicode(code) {
    return code >= MinCodePoint && code <= MaxCodePoint;
}
function digitToInt(code) {
    if (code >= LatinSmallLetterA && code <= LatinSmallLetterF) {
        return code - LatinSmallLetterA + 10;
    }
    if (code >= LatinCapitalLetterA && code <= LatinCapitalLetterF) {
        return code - LatinCapitalLetterA + 10;
    }
    return code - DigitZero;
}

const legacyImpl = {
    at(s, end, i) {
        return i < end ? s.charCodeAt(i) : -1;
    },
    width(c) {
        return 1;
    },
};
const unicodeImpl = {
    at(s, end, i) {
        return i < end ? s.codePointAt(i) : -1;
    },
    width(c) {
        return c > 0xffff ? 2 : 1;
    },
};
class Reader {
    constructor() {
        this._impl = legacyImpl;
        this._s = "";
        this._i = 0;
        this._end = 0;
        this._cp1 = -1;
        this._w1 = 1;
        this._cp2 = -1;
        this._w2 = 1;
        this._cp3 = -1;
        this._w3 = 1;
        this._cp4 = -1;
    }
    get source() {
        return this._s;
    }
    get index() {
        return this._i;
    }
    get currentCodePoint() {
        return this._cp1;
    }
    get nextCodePoint() {
        return this._cp2;
    }
    get nextCodePoint2() {
        return this._cp3;
    }
    get nextCodePoint3() {
        return this._cp4;
    }
    reset(source, start, end, uFlag) {
        this._impl = uFlag ? unicodeImpl : legacyImpl;
        this._s = source;
        this._end = end;
        this.rewind(start);
    }
    rewind(index) {
        const impl = this._impl;
        this._i = index;
        this._cp1 = impl.at(this._s, this._end, index);
        this._w1 = impl.width(this._cp1);
        this._cp2 = impl.at(this._s, this._end, index + this._w1);
        this._w2 = impl.width(this._cp2);
        this._cp3 = impl.at(this._s, this._end, index + this._w1 + this._w2);
        this._w3 = impl.width(this._cp3);
        this._cp4 = impl.at(this._s, this._end, index + this._w1 + this._w2 + this._w3);
    }
    advance() {
        if (this._cp1 !== -1) {
            const impl = this._impl;
            this._i += this._w1;
            this._cp1 = this._cp2;
            this._w1 = this._w2;
            this._cp2 = this._cp3;
            this._w2 = impl.width(this._cp2);
            this._cp3 = this._cp4;
            this._w3 = impl.width(this._cp3);
            this._cp4 = impl.at(this._s, this._end, this._i + this._w1 + this._w2 + this._w3);
        }
    }
    eat(cp) {
        if (this._cp1 === cp) {
            this.advance();
            return true;
        }
        return false;
    }
    eat2(cp1, cp2) {
        if (this._cp1 === cp1 && this._cp2 === cp2) {
            this.advance();
            this.advance();
            return true;
        }
        return false;
    }
    eat3(cp1, cp2, cp3) {
        if (this._cp1 === cp1 && this._cp2 === cp2 && this._cp3 === cp3) {
            this.advance();
            this.advance();
            this.advance();
            return true;
        }
        return false;
    }
}

class RegExpSyntaxError extends SyntaxError {
    constructor(source, uFlag, index, message) {
        if (source) {
            if (source[0] !== "/") {
                source = `/${source}/${uFlag ? "u" : ""}`;
            }
            source = `: ${source}`;
        }
        super(`Invalid regular expression${source}: ${message}`);
        this.index = index;
    }
}

function isSyntaxCharacter(cp) {
    return (cp === CircumflexAccent ||
        cp === DollarSign ||
        cp === ReverseSolidus ||
        cp === FullStop ||
        cp === Asterisk ||
        cp === PlusSign ||
        cp === QuestionMark ||
        cp === LeftParenthesis ||
        cp === RightParenthesis ||
        cp === LeftSquareBracket ||
        cp === RightSquareBracket ||
        cp === LeftCurlyBracket ||
        cp === RightCurlyBracket ||
        cp === VerticalLine);
}
function isRegExpIdentifierStart(cp) {
    return isIdStart(cp) || cp === DollarSign || cp === LowLine;
}
function isRegExpIdentifierPart(cp) {
    return (isIdContinue(cp) ||
        cp === DollarSign ||
        cp === LowLine ||
        cp === ZeroWidthNonJoiner ||
        cp === ZeroWidthJoiner);
}
function isUnicodePropertyNameCharacter(cp) {
    return isLatinLetter(cp) || cp === LowLine;
}
function isUnicodePropertyValueCharacter(cp) {
    return isUnicodePropertyNameCharacter(cp) || isDecimalDigit(cp);
}
function isValidUnicodeProperty(name, value) {
    return PropertyData.hasOwnProperty(name) && PropertyData[name].has(value);
}
function isValidUnicodePropertyName(name) {
    return PropertyData.$LONE.has(name);
}
class RegExpValidator {
    constructor(options) {
        this._reader = new Reader();
        this._uFlag = false;
        this._nFlag = false;
        this._lastIntValue = 0;
        this._lastMinValue = 0;
        this._lastMaxValue = 0;
        this._lastStrValue = "";
        this._lastKeyValue = "";
        this._lastValValue = "";
        this._lastAssertionIsQuantifiable = false;
        this._numCapturingParens = 0;
        this._groupNames = new Set();
        this._backreferenceNames = new Set();
        this._options = options || {};
    }
    validateLiteral(source, start = 0, end = source.length) {
        this._uFlag = this._nFlag = false;
        this.reset(source, start, end);
        this.onLiteralEnter(start);
        if (this.eat(Solidus) && this.eatRegExpBody() && this.eat(Solidus)) {
            const flagStart = this.index;
            const uFlag = source.indexOf("u", flagStart) !== -1;
            this.validateFlags(source, flagStart, end);
            this.validatePattern(source, start + 1, flagStart - 1, uFlag);
        }
        else if (start >= end) {
            this.raise("Empty");
        }
        else {
            const c = String.fromCodePoint(this.currentCodePoint);
            this.raise(`Unexpected character '${c}'`);
        }
        this.onLiteralLeave(start, end);
    }
    validateFlags(source, start = 0, end = source.length) {
        const existingFlags = new Set();
        let global = false;
        let ignoreCase = false;
        let multiline = false;
        let sticky = false;
        let unicode = false;
        let dotAll = false;
        for (let i = start; i < end; ++i) {
            const flag = source.charCodeAt(i);
            if (existingFlags.has(flag)) {
                this.raise(`Duplicated flag '${source[i]}'`);
            }
            existingFlags.add(flag);
            if (flag === LatinSmallLetterG) {
                global = true;
            }
            else if (flag === LatinSmallLetterI) {
                ignoreCase = true;
            }
            else if (flag === LatinSmallLetterM) {
                multiline = true;
            }
            else if (flag === LatinSmallLetterU && this.ecmaVersion >= 2015) {
                unicode = true;
            }
            else if (flag === LatinSmallLetterY && this.ecmaVersion >= 2015) {
                sticky = true;
            }
            else if (flag === LatinSmallLetterS && this.ecmaVersion >= 2018) {
                dotAll = true;
            }
            else {
                this.raise(`Invalid flag '${source[i]}'`);
            }
        }
        this.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll);
    }
    validatePattern(source, start = 0, end = source.length, uFlag = false) {
        this._uFlag = uFlag && this.ecmaVersion >= 2015;
        this._nFlag = uFlag && this.ecmaVersion >= 2018;
        this.reset(source, start, end);
        this.pattern();
        if (!this._nFlag &&
            this.ecmaVersion >= 2018 &&
            this._groupNames.size > 0) {
            this._nFlag = true;
            this.rewind(start);
            this.pattern();
        }
    }
    get strict() {
        return Boolean(this._options.strict || this._uFlag);
    }
    get ecmaVersion() {
        return this._options.ecmaVersion || 2018;
    }
    onLiteralEnter(start) {
        if (this._options.onLiteralEnter) {
            this._options.onLiteralEnter(start);
        }
    }
    onLiteralLeave(start, end) {
        if (this._options.onLiteralLeave) {
            this._options.onLiteralLeave(start, end);
        }
    }
    onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll) {
        if (this._options.onFlags) {
            this._options.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll);
        }
    }
    onPatternEnter(start) {
        if (this._options.onPatternEnter) {
            this._options.onPatternEnter(start);
        }
    }
    onPatternLeave(start, end) {
        if (this._options.onPatternLeave) {
            this._options.onPatternLeave(start, end);
        }
    }
    onDisjunctionEnter(start) {
        if (this._options.onDisjunctionEnter) {
            this._options.onDisjunctionEnter(start);
        }
    }
    onDisjunctionLeave(start, end) {
        if (this._options.onDisjunctionLeave) {
            this._options.onDisjunctionLeave(start, end);
        }
    }
    onAlternativeEnter(start, index) {
        if (this._options.onAlternativeEnter) {
            this._options.onAlternativeEnter(start, index);
        }
    }
    onAlternativeLeave(start, end, index) {
        if (this._options.onAlternativeLeave) {
            this._options.onAlternativeLeave(start, end, index);
        }
    }
    onGroupEnter(start) {
        if (this._options.onGroupEnter) {
            this._options.onGroupEnter(start);
        }
    }
    onGroupLeave(start, end) {
        if (this._options.onGroupLeave) {
            this._options.onGroupLeave(start, end);
        }
    }
    onCapturingGroupEnter(start, name) {
        if (this._options.onCapturingGroupEnter) {
            this._options.onCapturingGroupEnter(start, name);
        }
    }
    onCapturingGroupLeave(start, end, name) {
        if (this._options.onCapturingGroupLeave) {
            this._options.onCapturingGroupLeave(start, end, name);
        }
    }
    onQuantifier(start, end, min, max, greedy) {
        if (this._options.onQuantifier) {
            this._options.onQuantifier(start, end, min, max, greedy);
        }
    }
    onLookaroundAssertionEnter(start, kind, negate) {
        if (this._options.onLookaroundAssertionEnter) {
            this._options.onLookaroundAssertionEnter(start, kind, negate);
        }
    }
    onLookaroundAssertionLeave(start, end, kind, negate) {
        if (this._options.onLookaroundAssertionLeave) {
            this._options.onLookaroundAssertionLeave(start, end, kind, negate);
        }
    }
    onEdgeAssertion(start, end, kind) {
        if (this._options.onEdgeAssertion) {
            this._options.onEdgeAssertion(start, end, kind);
        }
    }
    onWordBoundaryAssertion(start, end, kind, negate) {
        if (this._options.onWordBoundaryAssertion) {
            this._options.onWordBoundaryAssertion(start, end, kind, negate);
        }
    }
    onAnyCharacterSet(start, end, kind) {
        if (this._options.onAnyCharacterSet) {
            this._options.onAnyCharacterSet(start, end, kind);
        }
    }
    onEscapeCharacterSet(start, end, kind, negate) {
        if (this._options.onEscapeCharacterSet) {
            this._options.onEscapeCharacterSet(start, end, kind, negate);
        }
    }
    onUnicodePropertyCharacterSet(start, end, kind, key, value, negate) {
        if (this._options.onUnicodePropertyCharacterSet) {
            this._options.onUnicodePropertyCharacterSet(start, end, kind, key, value, negate);
        }
    }
    onCharacter(start, end, value) {
        if (this._options.onCharacter) {
            this._options.onCharacter(start, end, value);
        }
    }
    onBackreference(start, end, ref) {
        if (this._options.onBackreference) {
            this._options.onBackreference(start, end, ref);
        }
    }
    onCharacterClassEnter(start, negate) {
        if (this._options.onCharacterClassEnter) {
            this._options.onCharacterClassEnter(start, negate);
        }
    }
    onCharacterClassLeave(start, end, negate) {
        if (this._options.onCharacterClassLeave) {
            this._options.onCharacterClassLeave(start, end, negate);
        }
    }
    onCharacterClassRange(start, end, min, max) {
        if (this._options.onCharacterClassRange) {
            this._options.onCharacterClassRange(start, end, min, max);
        }
    }
    get source() {
        return this._reader.source;
    }
    get index() {
        return this._reader.index;
    }
    get currentCodePoint() {
        return this._reader.currentCodePoint;
    }
    get nextCodePoint() {
        return this._reader.nextCodePoint;
    }
    get nextCodePoint2() {
        return this._reader.nextCodePoint2;
    }
    get nextCodePoint3() {
        return this._reader.nextCodePoint3;
    }
    reset(source, start, end) {
        this._reader.reset(source, start, end, this._uFlag);
    }
    rewind(index) {
        this._reader.rewind(index);
    }
    advance() {
        this._reader.advance();
    }
    eat(cp) {
        return this._reader.eat(cp);
    }
    eat2(cp1, cp2) {
        return this._reader.eat2(cp1, cp2);
    }
    eat3(cp1, cp2, cp3) {
        return this._reader.eat3(cp1, cp2, cp3);
    }
    raise(message) {
        throw new RegExpSyntaxError(this.source, this._uFlag, this.index, message);
    }
    eatRegExpBody() {
        const start = this.index;
        let inClass = false;
        let escaped = false;
        for (;;) {
            const cp = this.currentCodePoint;
            if (cp === -1 || isLineTerminator(cp)) {
                const kind = inClass ? "character class" : "regular expression";
                this.raise(`Unterminated ${kind}`);
            }
            if (escaped) {
                escaped = false;
            }
            else if (cp === ReverseSolidus) {
                escaped = true;
            }
            else if (cp === LeftSquareBracket) {
                inClass = true;
            }
            else if (cp === RightSquareBracket) {
                inClass = false;
            }
            else if ((cp === Solidus && !inClass) ||
                (cp === Asterisk && this.index === start)) {
                break;
            }
            this.advance();
        }
        return this.index !== start;
    }
    pattern() {
        const start = this.index;
        this._numCapturingParens = this.countCapturingParens();
        this._groupNames.clear();
        this._backreferenceNames.clear();
        this.onPatternEnter(start);
        this.disjunction();
        const cp = this.currentCodePoint;
        if (this.currentCodePoint !== -1) {
            if (cp === RightParenthesis) {
                this.raise("Unmatched ')'");
            }
            if (cp === ReverseSolidus) {
                this.raise("\\ at end of pattern");
            }
            if (cp === RightSquareBracket || cp === RightCurlyBracket) {
                this.raise("Lone quantifier brackets");
            }
            const c = String.fromCodePoint(cp);
            this.raise(`Unexpected character '${c}'`);
        }
        for (const name of this._backreferenceNames) {
            if (!this._groupNames.has(name)) {
                this.raise("Invalid named capture referenced");
            }
        }
        this.onPatternLeave(start, this.index);
    }
    countCapturingParens() {
        const start = this.index;
        let inClass = false;
        let escaped = false;
        let count = 0;
        let cp = 0;
        while ((cp = this.currentCodePoint) !== -1) {
            if (escaped) {
                escaped = false;
            }
            else if (cp === ReverseSolidus) {
                escaped = true;
            }
            else if (cp === LeftSquareBracket) {
                inClass = true;
            }
            else if (cp === RightSquareBracket) {
                inClass = false;
            }
            else if (cp === LeftParenthesis &&
                !inClass &&
                (this.nextCodePoint !== QuestionMark ||
                    (this.nextCodePoint2 === LessThanSign &&
                        this.nextCodePoint3 !== EqualsSign &&
                        this.nextCodePoint3 !== ExclamationMark))) {
                count += 1;
            }
            this.advance();
        }
        this.rewind(start);
        return count;
    }
    disjunction() {
        const start = this.index;
        let i = 0;
        this.onDisjunctionEnter(start);
        this.alternative(i++);
        while (this.eat(VerticalLine)) {
            this.alternative(i++);
        }
        if (this.eatQuantifier(true)) {
            this.raise("Nothing to repeat");
        }
        if (this.eat(LeftCurlyBracket)) {
            this.raise("Lone quantifier brackets");
        }
        this.onDisjunctionLeave(start, this.index);
    }
    alternative(i) {
        const start = this.index;
        this.onAlternativeEnter(start, i);
        while (this.currentCodePoint !== -1 && this.eatTerm()) {
        }
        this.onAlternativeLeave(start, this.index, i);
    }
    eatTerm() {
        if (this.eatAssertion()) {
            if (this._lastAssertionIsQuantifiable) {
                this.eatQuantifier();
            }
            return true;
        }
        if (this.strict ? this.eatAtom() : this.eatExtendedAtom()) {
            this.eatQuantifier();
            return true;
        }
        return false;
    }
    eatAssertion() {
        const start = this.index;
        this._lastAssertionIsQuantifiable = false;
        if (this.eat(CircumflexAccent)) {
            this.onEdgeAssertion(start, this.index, "start");
            return true;
        }
        if (this.eat(DollarSign)) {
            this.onEdgeAssertion(start, this.index, "end");
            return true;
        }
        if (this.eat2(ReverseSolidus, LatinCapitalLetterB)) {
            this.onWordBoundaryAssertion(start, this.index, "word", true);
            return true;
        }
        if (this.eat2(ReverseSolidus, LatinSmallLetterB)) {
            this.onWordBoundaryAssertion(start, this.index, "word", false);
            return true;
        }
        if (this.eat2(LeftParenthesis, QuestionMark)) {
            const lookbehind = this.ecmaVersion >= 2018 && this.eat(LessThanSign);
            let negate = false;
            if (this.eat(EqualsSign) || (negate = this.eat(ExclamationMark))) {
                const kind = lookbehind ? "lookbehind" : "lookahead";
                this.onLookaroundAssertionEnter(start, kind, negate);
                this.disjunction();
                if (!this.eat(RightParenthesis)) {
                    this.raise("Unterminated group");
                }
                this._lastAssertionIsQuantifiable = !lookbehind && !this.strict;
                this.onLookaroundAssertionLeave(start, this.index, kind, negate);
                return true;
            }
            this.rewind(start);
        }
        return false;
    }
    eatQuantifier(noError = false) {
        const start = this.index;
        let min = 0;
        let max = 0;
        let greedy = false;
        if (this.eat(Asterisk)) {
            min = 0;
            max = Number.POSITIVE_INFINITY;
        }
        else if (this.eat(PlusSign)) {
            min = 1;
            max = Number.POSITIVE_INFINITY;
        }
        else if (this.eat(QuestionMark)) {
            min = 0;
            max = 1;
        }
        else if (this.eatBracedQuantifier(noError)) {
            min = this._lastMinValue;
            max = this._lastMaxValue;
        }
        else {
            return false;
        }
        greedy = !this.eat(QuestionMark);
        if (!noError) {
            this.onQuantifier(start, this.index, min, max, greedy);
        }
        return true;
    }
    eatBracedQuantifier(noError) {
        const start = this.index;
        if (this.eat(LeftCurlyBracket)) {
            this._lastMinValue = 0;
            this._lastMaxValue = Number.POSITIVE_INFINITY;
            if (this.eatDecimalDigits()) {
                this._lastMinValue = this._lastMaxValue = this._lastIntValue;
                if (this.eat(Comma)) {
                    this._lastMaxValue = this.eatDecimalDigits()
                        ? this._lastIntValue
                        : Number.POSITIVE_INFINITY;
                }
                if (this.eat(RightCurlyBracket)) {
                    if (!noError && this._lastMaxValue < this._lastMinValue) {
                        this.raise("numbers out of order in {} quantifier");
                    }
                    return true;
                }
            }
            if (!noError && this.strict) {
                this.raise("Incomplete quantifier");
            }
            this.rewind(start);
        }
        return false;
    }
    eatAtom() {
        return (this.eatPatternCharacter() ||
            this.eatDot() ||
            this.eatReverseSolidusAtomEscape() ||
            this.eatCharacterClass() ||
            this.eatUncapturingGroup() ||
            this.eatCapturingGroup());
    }
    eatDot() {
        if (this.eat(FullStop)) {
            this.onAnyCharacterSet(this.index - 1, this.index, "any");
            return true;
        }
        return false;
    }
    eatReverseSolidusAtomEscape() {
        const start = this.index;
        if (this.eat(ReverseSolidus)) {
            if (this.eatAtomEscape()) {
                return true;
            }
            this.rewind(start);
        }
        return false;
    }
    eatUncapturingGroup() {
        const start = this.index;
        if (this.eat3(LeftParenthesis, QuestionMark, Colon)) {
            this.onGroupEnter(start);
            this.disjunction();
            if (!this.eat(RightParenthesis)) {
                this.raise("Unterminated group");
            }
            this.onGroupLeave(start, this.index);
            return true;
        }
        return false;
    }
    eatCapturingGroup() {
        const start = this.index;
        if (this.eat(LeftParenthesis)) {
            this._lastStrValue = "";
            if (this.ecmaVersion >= 2018) {
                this.groupSpecifier();
            }
            else if (this.currentCodePoint === QuestionMark) {
                this.raise("Invalid group");
            }
            const name = this._lastStrValue || null;
            this.onCapturingGroupEnter(start, name);
            this.disjunction();
            if (!this.eat(RightParenthesis)) {
                this.raise("Unterminated group");
            }
            this.onCapturingGroupLeave(start, this.index, name);
            return true;
        }
        return false;
    }
    eatExtendedAtom() {
        return (this.eatDot() ||
            this.eatReverseSolidusAtomEscape() ||
            this.eatReverseSolidusFollowedByC() ||
            this.eatCharacterClass() ||
            this.eatUncapturingGroup() ||
            this.eatCapturingGroup() ||
            this.eatInvalidBracedQuantifier() ||
            this.eatExtendedPatternCharacter());
    }
    eatReverseSolidusFollowedByC() {
        if (this.currentCodePoint === ReverseSolidus &&
            this.nextCodePoint === LatinSmallLetterC) {
            this._lastIntValue = this.currentCodePoint;
            this.advance();
            this.onCharacter(this.index - 1, this.index, ReverseSolidus);
            return true;
        }
        return false;
    }
    eatInvalidBracedQuantifier() {
        if (this.eatBracedQuantifier(true)) {
            this.raise("Nothing to repeat");
        }
        return false;
    }
    eatSyntaxCharacter() {
        if (isSyntaxCharacter(this.currentCodePoint)) {
            this._lastIntValue = this.currentCodePoint;
            this.advance();
            return true;
        }
        return false;
    }
    eatPatternCharacter() {
        const start = this.index;
        const cp = this.currentCodePoint;
        if (cp !== -1 && !isSyntaxCharacter(cp)) {
            this.advance();
            this.onCharacter(start, this.index, cp);
            return true;
        }
        return false;
    }
    eatExtendedPatternCharacter() {
        const start = this.index;
        const cp = this.currentCodePoint;
        if (cp !== -1 &&
            cp !== CircumflexAccent &&
            cp !== DollarSign &&
            cp !== ReverseSolidus &&
            cp !== FullStop &&
            cp !== Asterisk &&
            cp !== PlusSign &&
            cp !== QuestionMark &&
            cp !== LeftParenthesis &&
            cp !== RightParenthesis &&
            cp !== LeftSquareBracket &&
            cp !== VerticalLine) {
            this.advance();
            this.onCharacter(start, this.index, cp);
            return true;
        }
        return false;
    }
    groupSpecifier() {
        this._lastStrValue = "";
        if (this.eat(QuestionMark)) {
            if (this.eatGroupName()) {
                if (!this._groupNames.has(this._lastStrValue)) {
                    this._groupNames.add(this._lastStrValue);
                    return;
                }
                this.raise("Duplicate capture group name");
            }
            this.raise("Invalid group");
        }
    }
    eatGroupName() {
        this._lastStrValue = "";
        if (this.eat(LessThanSign)) {
            if (this.eatRegExpIdentifierName() && this.eat(GreaterThanSign)) {
                return true;
            }
            this.raise("Invalid capture group name");
        }
        return false;
    }
    eatRegExpIdentifierName() {
        this._lastStrValue = "";
        if (this.eatRegExpIdentifierStart()) {
            this._lastStrValue += String.fromCodePoint(this._lastIntValue);
            while (this.eatRegExpIdentifierPart()) {
                this._lastStrValue += String.fromCodePoint(this._lastIntValue);
            }
            return true;
        }
        return false;
    }
    eatRegExpIdentifierStart() {
        const start = this.index;
        let cp = this.currentCodePoint;
        this.advance();
        if (cp === ReverseSolidus && this.eatRegExpUnicodeEscapeSequence()) {
            cp = this._lastIntValue;
        }
        if (isRegExpIdentifierStart(cp)) {
            this._lastIntValue = cp;
            return true;
        }
        if (this.index !== start) {
            this.rewind(start);
        }
        return false;
    }
    eatRegExpIdentifierPart() {
        const start = this.index;
        let cp = this.currentCodePoint;
        this.advance();
        if (cp === ReverseSolidus && this.eatRegExpUnicodeEscapeSequence()) {
            cp = this._lastIntValue;
        }
        if (isRegExpIdentifierPart(cp)) {
            this._lastIntValue = cp;
            return true;
        }
        if (this.index !== start) {
            this.rewind(start);
        }
        return false;
    }
    eatAtomEscape() {
        if (this.eatBackreference() ||
            this.eatCharacterClassEscape() ||
            this.eatCharacterEscape() ||
            (this._nFlag && this.eatKGroupName())) {
            return true;
        }
        if (this.strict || this._uFlag) {
            this.raise("Invalid escape");
        }
        return false;
    }
    eatBackreference() {
        const start = this.index;
        if (this.eatDecimalEscape()) {
            const n = this._lastIntValue;
            if (n <= this._numCapturingParens) {
                this.onBackreference(start - 1, this.index, n);
                return true;
            }
            if (this.strict) {
                this.raise("Invalid escape");
            }
            this.rewind(start);
        }
        return false;
    }
    eatKGroupName() {
        const start = this.index;
        if (this.eat(LatinSmallLetterK)) {
            if (this.eatGroupName()) {
                const groupName = this._lastStrValue;
                this._backreferenceNames.add(groupName);
                this.onBackreference(start - 1, this.index, groupName);
                return true;
            }
            this.raise("Invalid named reference");
        }
        return false;
    }
    eatCharacterEscape() {
        const start = this.index;
        if (this.eatControlEscape() ||
            this.eatCControlLetter() ||
            this.eatZero() ||
            this.eatHexEscapeSequence() ||
            this.eatRegExpUnicodeEscapeSequence() ||
            (!this.strict && this.eatLegacyOctalEscapeSequence()) ||
            this.eatIdentityEscape()) {
            this.onCharacter(start - 1, this.index, this._lastIntValue);
            return true;
        }
        return false;
    }
    eatCControlLetter() {
        const start = this.index;
        if (this.eat(LatinSmallLetterC)) {
            if (this.eatControlLetter()) {
                return true;
            }
            this.rewind(start);
        }
        return false;
    }
    eatZero() {
        if (this.currentCodePoint === DigitZero &&
            !isDecimalDigit(this.nextCodePoint)) {
            this._lastIntValue = 0;
            this.advance();
            return true;
        }
        return false;
    }
    eatControlEscape() {
        if (this.eat(LatinSmallLetterT)) {
            this._lastIntValue = CharacterTabulation;
            return true;
        }
        if (this.eat(LatinSmallLetterN)) {
            this._lastIntValue = LineFeed;
            return true;
        }
        if (this.eat(LatinSmallLetterV)) {
            this._lastIntValue = LineTabulation;
            return true;
        }
        if (this.eat(LatinSmallLetterF)) {
            this._lastIntValue = FormFeed;
            return true;
        }
        if (this.eat(LatinSmallLetterR)) {
            this._lastIntValue = CarriageReturn;
            return true;
        }
        return false;
    }
    eatControlLetter() {
        const cp = this.currentCodePoint;
        if (isLatinLetter(cp)) {
            this.advance();
            this._lastIntValue = cp % 0x20;
            return true;
        }
        return false;
    }
    eatRegExpUnicodeEscapeSequence() {
        const start = this.index;
        if (this.eat(LatinSmallLetterU)) {
            if (this.eatFixedHexDigits(4)) {
                const lead = this._lastIntValue;
                if (this._uFlag && lead >= 0xd800 && lead <= 0xdbff) {
                    const leadSurrogateEnd = this.index;
                    if (this.eat(ReverseSolidus) &&
                        this.eat(LatinSmallLetterU) &&
                        this.eatFixedHexDigits(4)) {
                        const trail = this._lastIntValue;
                        if (trail >= 0xdc00 && trail <= 0xdfff) {
                            this._lastIntValue =
                                (lead - 0xd800) * 0x400 +
                                    (trail - 0xdc00) +
                                    0x10000;
                            return true;
                        }
                    }
                    this.rewind(leadSurrogateEnd);
                    this._lastIntValue = lead;
                }
                return true;
            }
            if (this._uFlag &&
                this.eat(LeftCurlyBracket) &&
                this.eatHexDigits() &&
                this.eat(RightCurlyBracket) &&
                isValidUnicode(this._lastIntValue)) {
                return true;
            }
            if (this.strict || this._uFlag) {
                this.raise("Invalid unicode escape");
            }
            this.rewind(start);
        }
        return false;
    }
    eatIdentityEscape() {
        if (this._uFlag) {
            if (this.eatSyntaxCharacter()) {
                return true;
            }
            if (this.eat(Solidus)) {
                this._lastIntValue = Solidus;
                return true;
            }
            return false;
        }
        if (this.isValidIdentityEscape(this.currentCodePoint)) {
            this._lastIntValue = this.currentCodePoint;
            this.advance();
            return true;
        }
        return false;
    }
    isValidIdentityEscape(cp) {
        if (cp === -1) {
            return false;
        }
        if (this.strict) {
            return !isIdContinue(cp);
        }
        return (cp !== LatinSmallLetterC &&
            (!this._nFlag || cp !== LatinSmallLetterK));
    }
    eatDecimalEscape() {
        this._lastIntValue = 0;
        let cp = this.currentCodePoint;
        if (cp >= DigitOne && cp <= DigitNine) {
            do {
                this._lastIntValue = 10 * this._lastIntValue + (cp - DigitZero);
                this.advance();
            } while ((cp = this.currentCodePoint) >= DigitZero &&
                cp <= DigitNine);
            return true;
        }
        return false;
    }
    eatCharacterClassEscape() {
        const start = this.index;
        if (this.eat(LatinSmallLetterD)) {
            this._lastIntValue = -1;
            this.onEscapeCharacterSet(start - 1, this.index, "digit", false);
            return true;
        }
        if (this.eat(LatinCapitalLetterD)) {
            this._lastIntValue = -1;
            this.onEscapeCharacterSet(start - 1, this.index, "digit", true);
            return true;
        }
        if (this.eat(LatinSmallLetterS)) {
            this._lastIntValue = -1;
            this.onEscapeCharacterSet(start - 1, this.index, "space", false);
            return true;
        }
        if (this.eat(LatinCapitalLetterS)) {
            this._lastIntValue = -1;
            this.onEscapeCharacterSet(start - 1, this.index, "space", true);
            return true;
        }
        if (this.eat(LatinSmallLetterW)) {
            this._lastIntValue = -1;
            this.onEscapeCharacterSet(start - 1, this.index, "word", false);
            return true;
        }
        if (this.eat(LatinCapitalLetterW)) {
            this._lastIntValue = -1;
            this.onEscapeCharacterSet(start - 1, this.index, "word", true);
            return true;
        }
        let negate = false;
        if (this._uFlag &&
            this.ecmaVersion >= 2018 &&
            (this.eat(LatinSmallLetterP) ||
                (negate = this.eat(LatinCapitalLetterP)))) {
            this._lastIntValue = -1;
            if (this.eat(LeftCurlyBracket) &&
                this.eatUnicodePropertyValueExpression() &&
                this.eat(RightCurlyBracket)) {
                this.onUnicodePropertyCharacterSet(start - 1, this.index, "property", this._lastKeyValue, this._lastValValue || null, negate);
                return true;
            }
            this.raise("Invalid property name");
        }
        return false;
    }
    eatUnicodePropertyValueExpression() {
        const start = this.index;
        if (this.eatUnicodePropertyName() && this.eat(EqualsSign)) {
            this._lastKeyValue = this._lastStrValue;
            if (this.eatUnicodePropertyValue()) {
                this._lastValValue = this._lastStrValue;
                if (isValidUnicodeProperty(this._lastKeyValue, this._lastValValue)) {
                    return true;
                }
                this.raise("Invalid property name");
            }
        }
        this.rewind(start);
        if (this.eatLoneUnicodePropertyNameOrValue()) {
            const nameOrValue = this._lastStrValue;
            if (isValidUnicodeProperty("General_Category", nameOrValue)) {
                this._lastKeyValue = "General_Category";
                this._lastValValue = nameOrValue;
                return true;
            }
            if (isValidUnicodePropertyName(nameOrValue)) {
                this._lastKeyValue = nameOrValue;
                this._lastValValue = "";
                return true;
            }
            this.raise("Invalid property name");
        }
        return false;
    }
    eatUnicodePropertyName() {
        this._lastStrValue = "";
        while (isUnicodePropertyNameCharacter(this.currentCodePoint)) {
            this._lastStrValue += String.fromCodePoint(this.currentCodePoint);
            this.advance();
        }
        return this._lastStrValue !== "";
    }
    eatUnicodePropertyValue() {
        this._lastStrValue = "";
        while (isUnicodePropertyValueCharacter(this.currentCodePoint)) {
            this._lastStrValue += String.fromCodePoint(this.currentCodePoint);
            this.advance();
        }
        return this._lastStrValue !== "";
    }
    eatLoneUnicodePropertyNameOrValue() {
        return this.eatUnicodePropertyValue();
    }
    eatCharacterClass() {
        const start = this.index;
        if (this.eat(LeftSquareBracket)) {
            const negate = this.eat(CircumflexAccent);
            this.onCharacterClassEnter(start, negate);
            this.classRanges();
            if (!this.eat(RightSquareBracket)) {
                this.raise("Unterminated character class");
            }
            this.onCharacterClassLeave(start, this.index, negate);
            return true;
        }
        return false;
    }
    classRanges() {
        let start = this.index;
        while (this.eatClassAtom()) {
            const left = this._lastIntValue;
            const hyphenStart = this.index;
            if (this.eat(HyphenMinus)) {
                this.onCharacter(hyphenStart, this.index, HyphenMinus);
                if (this.eatClassAtom()) {
                    const right = this._lastIntValue;
                    if (left === -1 || right === -1) {
                        if (this.strict) {
                            this.raise("Invalid character class");
                        }
                    }
                    else if (left > right) {
                        this.raise("Range out of order in character class");
                    }
                    else {
                        this.onCharacterClassRange(start, this.index, left, right);
                    }
                }
            }
            start = this.index;
        }
    }
    eatClassAtom() {
        const start = this.index;
        if (this.eat(ReverseSolidus)) {
            if (this.eatClassEscape()) {
                return true;
            }
            if (this._uFlag) {
                this.raise("Invalid escape");
            }
            this.rewind(start);
        }
        const cp = this.currentCodePoint;
        if (cp !== -1 && cp !== RightSquareBracket) {
            this.advance();
            this._lastIntValue = cp;
            this.onCharacter(start, this.index, cp);
            return true;
        }
        return false;
    }
    eatClassEscape() {
        const start = this.index;
        if (this.eat(LatinSmallLetterB)) {
            this._lastIntValue = Backspace;
            this.onCharacter(start - 1, this.index, Backspace);
            return true;
        }
        if (this._uFlag && this.eat(HyphenMinus)) {
            this._lastIntValue = HyphenMinus;
            this.onCharacter(start - 1, this.index, HyphenMinus);
            return true;
        }
        if (!this._uFlag && this.eat(LatinSmallLetterC)) {
            if (this.eatClassControlLetter()) {
                this.onCharacter(start - 1, this.index, this._lastIntValue);
                return true;
            }
            this.rewind(start);
        }
        return this.eatCharacterClassEscape() || this.eatCharacterEscape();
    }
    eatClassControlLetter() {
        const cp = this.currentCodePoint;
        if (isDecimalDigit(cp) || cp === LowLine) {
            this.advance();
            this._lastIntValue = cp % 0x20;
            return true;
        }
        return false;
    }
    eatHexEscapeSequence() {
        const start = this.index;
        if (this.eat(LatinSmallLetterX)) {
            if (this.eatFixedHexDigits(2)) {
                return true;
            }
            if (this._uFlag) {
                this.raise("Invalid escape");
            }
            this.rewind(start);
        }
        return false;
    }
    eatDecimalDigits() {
        const start = this.index;
        this._lastIntValue = 0;
        while (isDecimalDigit(this.currentCodePoint)) {
            this._lastIntValue =
                10 * this._lastIntValue + digitToInt(this.currentCodePoint);
            this.advance();
        }
        return this.index !== start;
    }
    eatHexDigits() {
        const start = this.index;
        this._lastIntValue = 0;
        while (isHexDigit(this.currentCodePoint)) {
            this._lastIntValue =
                16 * this._lastIntValue + digitToInt(this.currentCodePoint);
            this.advance();
        }
        return this.index !== start;
    }
    eatLegacyOctalEscapeSequence() {
        if (this.eatOctalDigit()) {
            const n1 = this._lastIntValue;
            if (this.eatOctalDigit()) {
                const n2 = this._lastIntValue;
                if (n1 <= 3 && this.eatOctalDigit()) {
                    this._lastIntValue = n1 * 64 + n2 * 8 + this._lastIntValue;
                }
                else {
                    this._lastIntValue = n1 * 8 + n2;
                }
            }
            else {
                this._lastIntValue = n1;
            }
            return true;
        }
        return false;
    }
    eatOctalDigit() {
        const cp = this.currentCodePoint;
        if (isOctalDigit(cp)) {
            this.advance();
            this._lastIntValue = cp - DigitZero;
            return true;
        }
        this._lastIntValue = 0;
        return false;
    }
    eatFixedHexDigits(length) {
        const start = this.index;
        this._lastIntValue = 0;
        for (let i = 0; i < length; ++i) {
            const cp = this.currentCodePoint;
            if (!isHexDigit(cp)) {
                this.rewind(start);
                return false;
            }
            this._lastIntValue = 16 * this._lastIntValue + digitToInt(cp);
            this.advance();
        }
        return true;
    }
}

const DummyPattern = {};
const DummyFlags = {};
const DummyCapturingGroup = {};
class RegExpParserState {
    constructor(options) {
        this._node = DummyPattern;
        this._flags = DummyFlags;
        this._backreferences = [];
        this._capturingGroups = [];
        this.source = "";
        this.strict = Boolean(options && options.strict);
        this.ecmaVersion = (options && options.ecmaVersion) || 2018;
    }
    get pattern() {
        if (this._node.type !== "Pattern") {
            throw new Error("UnknownError");
        }
        return this._node;
    }
    get flags() {
        if (this._flags.type !== "Flags") {
            throw new Error("UnknownError");
        }
        return this._flags;
    }
    onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll) {
        this._flags = {
            type: "Flags",
            parent: null,
            start,
            end,
            raw: this.source.slice(start, end),
            global,
            ignoreCase,
            multiline,
            unicode,
            sticky,
            dotAll,
        };
    }
    onPatternEnter(start) {
        this._node = {
            type: "Pattern",
            parent: null,
            start,
            end: start,
            raw: "",
            alternatives: [],
        };
        this._backreferences.length = 0;
        this._capturingGroups.length = 0;
    }
    onPatternLeave(start, end) {
        this._node.end = end;
        this._node.raw = this.source.slice(start, end);
        for (const reference of this._backreferences) {
            const ref = reference.ref;
            const group = typeof ref === "number"
                ? this._capturingGroups[ref - 1]
                : this._capturingGroups.find(g => g.name === ref);
            reference.resolved = group;
            group.references.push(reference);
        }
    }
    onAlternativeEnter(start) {
        const parent = this._node;
        if (parent.type !== "Assertion" &&
            parent.type !== "CapturingGroup" &&
            parent.type !== "Group" &&
            parent.type !== "Pattern") {
            throw new Error("UnknownError");
        }
        this._node = {
            type: "Alternative",
            parent,
            start,
            end: start,
            raw: "",
            elements: [],
        };
        parent.alternatives.push(this._node);
    }
    onAlternativeLeave(start, end) {
        const node = this._node;
        if (node.type !== "Alternative") {
            throw new Error("UnknownError");
        }
        node.end = end;
        node.raw = this.source.slice(start, end);
        this._node = node.parent;
    }
    onGroupEnter(start) {
        const parent = this._node;
        if (parent.type !== "Alternative") {
            throw new Error("UnknownError");
        }
        this._node = {
            type: "Group",
            parent,
            start,
            end: start,
            raw: "",
            alternatives: [],
        };
        parent.elements.push(this._node);
    }
    onGroupLeave(start, end) {
        const node = this._node;
        if (node.type !== "Group" || node.parent.type !== "Alternative") {
            throw new Error("UnknownError");
        }
        node.end = end;
        node.raw = this.source.slice(start, end);
        this._node = node.parent;
    }
    onCapturingGroupEnter(start, name) {
        const parent = this._node;
        if (parent.type !== "Alternative") {
            throw new Error("UnknownError");
        }
        this._node = {
            type: "CapturingGroup",
            parent,
            start,
            end: start,
            raw: "",
            name,
            alternatives: [],
            references: [],
        };
        parent.elements.push(this._node);
        this._capturingGroups.push(this._node);
    }
    onCapturingGroupLeave(start, end) {
        const node = this._node;
        if (node.type !== "CapturingGroup" ||
            node.parent.type !== "Alternative") {
            throw new Error("UnknownError");
        }
        node.end = end;
        node.raw = this.source.slice(start, end);
        this._node = node.parent;
    }
    onQuantifier(start, end, min, max, greedy) {
        const parent = this._node;
        if (parent.type !== "Alternative") {
            throw new Error("UnknownError");
        }
        const element = parent.elements.pop();
        if (element == null ||
            element.type === "Quantifier" ||
            (element.type === "Assertion" && element.kind !== "lookahead")) {
            throw new Error("UnknownError");
        }
        const node = {
            type: "Quantifier",
            parent,
            start: element.start,
            end,
            raw: this.source.slice(element.start, end),
            min,
            max,
            greedy,
            element,
        };
        parent.elements.push(node);
        element.parent = node;
    }
    onLookaroundAssertionEnter(start, kind, negate) {
        const parent = this._node;
        if (parent.type !== "Alternative") {
            throw new Error("UnknownError");
        }
        this._node = {
            type: "Assertion",
            parent,
            start,
            end: start,
            raw: "",
            kind,
            negate,
            alternatives: [],
        };
        parent.elements.push(this._node);
    }
    onLookaroundAssertionLeave(start, end) {
        const node = this._node;
        if (node.type !== "Assertion" || node.parent.type !== "Alternative") {
            throw new Error("UnknownError");
        }
        node.end = end;
        node.raw = this.source.slice(start, end);
        this._node = node.parent;
    }
    onEdgeAssertion(start, end, kind) {
        const parent = this._node;
        if (parent.type !== "Alternative") {
            throw new Error("UnknownError");
        }
        parent.elements.push({
            type: "Assertion",
            parent,
            start,
            end,
            raw: this.source.slice(start, end),
            kind,
        });
    }
    onWordBoundaryAssertion(start, end, kind, negate) {
        const parent = this._node;
        if (parent.type !== "Alternative") {
            throw new Error("UnknownError");
        }
        parent.elements.push({
            type: "Assertion",
            parent,
            start,
            end,
            raw: this.source.slice(start, end),
            kind,
            negate,
        });
    }
    onAnyCharacterSet(start, end, kind) {
        const parent = this._node;
        if (parent.type !== "Alternative") {
            throw new Error("UnknownError");
        }
        parent.elements.push({
            type: "CharacterSet",
            parent,
            start,
            end,
            raw: this.source.slice(start, end),
            kind,
        });
    }
    onEscapeCharacterSet(start, end, kind, negate) {
        const parent = this._node;
        if (parent.type !== "Alternative" && parent.type !== "CharacterClass") {
            throw new Error("UnknownError");
        }
        parent.elements.push({
            type: "CharacterSet",
            parent,
            start,
            end,
            raw: this.source.slice(start, end),
            kind,
            negate,
        });
    }
    onUnicodePropertyCharacterSet(start, end, kind, key, value, negate) {
        const parent = this._node;
        if (parent.type !== "Alternative" && parent.type !== "CharacterClass") {
            throw new Error("UnknownError");
        }
        parent.elements.push({
            type: "CharacterSet",
            parent,
            start,
            end,
            raw: this.source.slice(start, end),
            kind,
            key,
            value,
            negate,
        });
    }
    onCharacter(start, end, value) {
        const parent = this._node;
        if (parent.type !== "Alternative" && parent.type !== "CharacterClass") {
            throw new Error("UnknownError");
        }
        parent.elements.push({
            type: "Character",
            parent,
            start,
            end,
            raw: this.source.slice(start, end),
            value,
        });
    }
    onBackreference(start, end, ref) {
        const parent = this._node;
        if (parent.type !== "Alternative") {
            throw new Error("UnknownError");
        }
        const node = {
            type: "Backreference",
            parent,
            start,
            end,
            raw: this.source.slice(start, end),
            ref,
            resolved: DummyCapturingGroup,
        };
        parent.elements.push(node);
        this._backreferences.push(node);
    }
    onCharacterClassEnter(start, negate) {
        const parent = this._node;
        if (parent.type !== "Alternative") {
            throw new Error("UnknownError");
        }
        this._node = {
            type: "CharacterClass",
            parent,
            start,
            end: start,
            raw: "",
            negate,
            elements: [],
        };
        parent.elements.push(this._node);
    }
    onCharacterClassLeave(start, end) {
        const node = this._node;
        if (node.type !== "CharacterClass" ||
            node.parent.type !== "Alternative") {
            throw new Error("UnknownError");
        }
        node.end = end;
        node.raw = this.source.slice(start, end);
        this._node = node.parent;
    }
    onCharacterClassRange(start, end) {
        const parent = this._node;
        if (parent.type !== "CharacterClass") {
            throw new Error("UnknownError");
        }
        const elements = parent.elements;
        const max = elements.pop();
        const hyphen = elements.pop();
        const min = elements.pop();
        if (!min ||
            !max ||
            !hyphen ||
            min.type !== "Character" ||
            max.type !== "Character" ||
            hyphen.type !== "Character" ||
            hyphen.value !== HyphenMinus) {
            throw new Error("UnknownError");
        }
        const node = {
            type: "CharacterClassRange",
            parent,
            start,
            end,
            raw: this.source.slice(start, end),
            min,
            max,
        };
        min.parent = node;
        max.parent = node;
        elements.push(node);
    }
}
class RegExpParser {
    constructor(options) {
        this._state = new RegExpParserState(options);
        this._validator = new RegExpValidator(this._state);
    }
    parseLiteral(source, start = 0, end = source.length) {
        this._state.source = source;
        this._validator.validateLiteral(source, start, end);
        const pattern = this._state.pattern;
        const flags = this._state.flags;
        const literal = {
            type: "RegExpLiteral",
            parent: null,
            start,
            end,
            raw: source,
            pattern,
            flags,
        };
        pattern.parent = literal;
        flags.parent = literal;
        return literal;
    }
    parseFlags(source, start = 0, end = source.length) {
        this._state.source = source;
        this._validator.validateFlags(source, start, end);
        return this._state.flags;
    }
    parsePattern(source, start = 0, end = source.length, uFlag = false) {
        this._state.source = source;
        this._validator.validatePattern(source, start, end, uFlag);
        return this._state.pattern;
    }
}

class RegExpVisitor {
    constructor(handlers) {
        this._handlers = handlers;
    }
    visit(node) {
        switch (node.type) {
            case "Alternative":
                this.visitAlternative(node);
                break;
            case "Assertion":
                this.visitAssertion(node);
                break;
            case "Backreference":
                this.visitBackreference(node);
                break;
            case "CapturingGroup":
                this.visitCapturingGroup(node);
                break;
            case "Character":
                this.visitCharacter(node);
                break;
            case "CharacterClass":
                this.visitCharacterClass(node);
                break;
            case "CharacterClassRange":
                this.visitCharacterClassRange(node);
                break;
            case "CharacterSet":
                this.visitCharacterSet(node);
                break;
            case "Flags":
                this.visitFlags(node);
                break;
            case "Group":
                this.visitGroup(node);
                break;
            case "Pattern":
                this.visitPattern(node);
                break;
            case "Quantifier":
                this.visitQuantifier(node);
                break;
            case "RegExpLiteral":
                this.visitRegExpLiteral(node);
                break;
            default:
                throw new Error(`Unknown type: ${node.type}`);
        }
    }
    visitAlternative(node) {
        if (this._handlers.onAlternativeEnter) {
            this._handlers.onAlternativeEnter(node);
        }
        node.elements.forEach(this.visit, this);
        if (this._handlers.onAlternativeLeave) {
            this._handlers.onAlternativeLeave(node);
        }
    }
    visitAssertion(node) {
        if (this._handlers.onAssertionEnter) {
            this._handlers.onAssertionEnter(node);
        }
        if (node.kind === "lookahead" || node.kind === "lookbehind") {
            node.alternatives.forEach(this.visit, this);
        }
        if (this._handlers.onAssertionLeave) {
            this._handlers.onAssertionLeave(node);
        }
    }
    visitBackreference(node) {
        if (this._handlers.onBackreferenceEnter) {
            this._handlers.onBackreferenceEnter(node);
        }
        if (this._handlers.onBackreferenceLeave) {
            this._handlers.onBackreferenceLeave(node);
        }
    }
    visitCapturingGroup(node) {
        if (this._handlers.onCapturingGroupEnter) {
            this._handlers.onCapturingGroupEnter(node);
        }
        node.alternatives.forEach(this.visit, this);
        if (this._handlers.onCapturingGroupLeave) {
            this._handlers.onCapturingGroupLeave(node);
        }
    }
    visitCharacter(node) {
        if (this._handlers.onCharacterEnter) {
            this._handlers.onCharacterEnter(node);
        }
        if (this._handlers.onCharacterLeave) {
            this._handlers.onCharacterLeave(node);
        }
    }
    visitCharacterClass(node) {
        if (this._handlers.onCharacterClassEnter) {
            this._handlers.onCharacterClassEnter(node);
        }
        node.elements.forEach(this.visit, this);
        if (this._handlers.onCharacterClassLeave) {
            this._handlers.onCharacterClassLeave(node);
        }
    }
    visitCharacterClassRange(node) {
        if (this._handlers.onCharacterClassRangeEnter) {
            this._handlers.onCharacterClassRangeEnter(node);
        }
        this.visitCharacter(node.min);
        this.visitCharacter(node.max);
        if (this._handlers.onCharacterClassRangeLeave) {
            this._handlers.onCharacterClassRangeLeave(node);
        }
    }
    visitCharacterSet(node) {
        if (this._handlers.onCharacterSetEnter) {
            this._handlers.onCharacterSetEnter(node);
        }
        if (this._handlers.onCharacterSetLeave) {
            this._handlers.onCharacterSetLeave(node);
        }
    }
    visitFlags(node) {
        if (this._handlers.onFlagsEnter) {
            this._handlers.onFlagsEnter(node);
        }
        if (this._handlers.onFlagsLeave) {
            this._handlers.onFlagsLeave(node);
        }
    }
    visitGroup(node) {
        if (this._handlers.onGroupEnter) {
            this._handlers.onGroupEnter(node);
        }
        node.alternatives.forEach(this.visit, this);
        if (this._handlers.onGroupLeave) {
            this._handlers.onGroupLeave(node);
        }
    }
    visitPattern(node) {
        if (this._handlers.onPatternEnter) {
            this._handlers.onPatternEnter(node);
        }
        node.alternatives.forEach(this.visit, this);
        if (this._handlers.onPatternLeave) {
            this._handlers.onPatternLeave(node);
        }
    }
    visitQuantifier(node) {
        if (this._handlers.onQuantifierEnter) {
            this._handlers.onQuantifierEnter(node);
        }
        this.visit(node.element);
        if (this._handlers.onQuantifierLeave) {
            this._handlers.onQuantifierLeave(node);
        }
    }
    visitRegExpLiteral(node) {
        if (this._handlers.onRegExpLiteralEnter) {
            this._handlers.onRegExpLiteralEnter(node);
        }
        this.visitPattern(node.pattern);
        this.visitFlags(node.flags);
        if (this._handlers.onRegExpLiteralLeave) {
            this._handlers.onRegExpLiteralLeave(node);
        }
    }
}

function parseRegExpLiteral(source, options) {
    return new RegExpParser(options).parseLiteral(String(source));
}
function validateRegExpLiteral(source, options) {
    return new RegExpValidator(options).validateLiteral(source);
}
function visitRegExpAST(node, handlers) {
    new RegExpVisitor(handlers).visit(node);
}

exports.AST = ast;
exports.RegExpParser = RegExpParser;
exports.RegExpValidator = RegExpValidator;
exports.parseRegExpLiteral = parseRegExpLiteral;
exports.validateRegExpLiteral = validateRegExpLiteral;
exports.visitRegExpAST = visitRegExpAST;
//# sourceMappingURL=index.js.map
