-- ------------------------------------------------------------

{- |
   Module     : Data.Char.Properties.UnicodeCharProps
   Copyright  : Copyright (C) 2010 - Uwe Schmidt

   Maintainer : Uwe Schmidt (uwe@fh-wedel.de)
   Stability  : stable
   Portability: portable

   Unicode character properties

   don't edit this module
   it's generated from 'http:\/\/www.unicode.org\/Public\/UNIDATA\/UnicodeData.txt'

-}

-- ------------------------------------------------------------

module Data.Char.Properties.UnicodeCharProps
  ( isUnicodeC
  , isUnicodeCc
  , isUnicodeCf
  , isUnicodeCo
  , isUnicodeCs
  , isUnicodeL
  , isUnicodeLl
  , isUnicodeLm
  , isUnicodeLo
  , isUnicodeLt
  , isUnicodeLu
  , isUnicodeM
  , isUnicodeMc
  , isUnicodeMe
  , isUnicodeMn
  , isUnicodeN
  , isUnicodeNd
  , isUnicodeNl
  , isUnicodeNo
  , isUnicodeP
  , isUnicodePc
  , isUnicodePd
  , isUnicodePe
  , isUnicodePf
  , isUnicodePi
  , isUnicodePo
  , isUnicodePs
  , isUnicodeS
  , isUnicodeSc
  , isUnicodeSk
  , isUnicodeSm
  , isUnicodeSo
  , isUnicodeZ
  , isUnicodeZl
  , isUnicodeZp
  , isUnicodeZs
  , charPropUnicodeC
  , charPropUnicodeCc
  , charPropUnicodeCf
  , charPropUnicodeCo
  , charPropUnicodeCs
  , charPropUnicodeL
  , charPropUnicodeLl
  , charPropUnicodeLm
  , charPropUnicodeLo
  , charPropUnicodeLt
  , charPropUnicodeLu
  , charPropUnicodeM
  , charPropUnicodeMc
  , charPropUnicodeMe
  , charPropUnicodeMn
  , charPropUnicodeN
  , charPropUnicodeNd
  , charPropUnicodeNl
  , charPropUnicodeNo
  , charPropUnicodeP
  , charPropUnicodePc
  , charPropUnicodePd
  , charPropUnicodePe
  , charPropUnicodePf
  , charPropUnicodePi
  , charPropUnicodePo
  , charPropUnicodePs
  , charPropUnicodeS
  , charPropUnicodeSc
  , charPropUnicodeSk
  , charPropUnicodeSm
  , charPropUnicodeSo
  , charPropUnicodeZ
  , charPropUnicodeZl
  , charPropUnicodeZp
  , charPropUnicodeZs
  )
where

import Data.Set.CharSet

-- ------------------------------------------------------------

isUnicodeC :: Char -> Bool
isUnicodeC c
  = elemCS c charPropUnicodeC

charPropUnicodeC :: CharSet
charPropUnicodeC
  = [ ('\NUL','\US')
    , ('\DEL','\159')
    , ('\173','\173')
    , ('\1536','\1539')
    , ('\1757','\1757')
    , ('\1807','\1807')
    , ('\6068','\6069')
    , ('\8203','\8207')
    , ('\8234','\8238')
    , ('\8288','\8292')
    , ('\8298','\8303')
    , ('\55296','\55296')
    , ('\56191','\56192')
    , ('\56319','\56320')
    , ('\57343','\57344')
    , ('\63743','\63743')
    , ('\65279','\65279')
    , ('\65529','\65531')
    , ('\69821','\69821')
    , ('\119155','\119162')
    , ('\917505','\917505')
    , ('\917536','\917631')
    , ('\983040','\983040')
    , ('\1048573','\1048573')
    , ('\1048576','\1048576')
    , ('\1114109','\1114109')
    ]

-- ------------------------------------------------------------

isUnicodeCc :: Char -> Bool
isUnicodeCc c
  = elemCS c charPropUnicodeCc

charPropUnicodeCc :: CharSet
charPropUnicodeCc
  = [ ('\NUL','\US')
    , ('\DEL','\159')
    ]

-- ------------------------------------------------------------

isUnicodeCf :: Char -> Bool
isUnicodeCf c
  = elemCS c charPropUnicodeCf

charPropUnicodeCf :: CharSet
charPropUnicodeCf
  = [ ('\173','\173')
    , ('\1536','\1539')
    , ('\1757','\1757')
    , ('\1807','\1807')
    , ('\6068','\6069')
    , ('\8203','\8207')
    , ('\8234','\8238')
    , ('\8288','\8292')
    , ('\8298','\8303')
    , ('\65279','\65279')
    , ('\65529','\65531')
    , ('\69821','\69821')
    , ('\119155','\119162')
    , ('\917505','\917505')
    , ('\917536','\917631')
    ]

-- ------------------------------------------------------------

isUnicodeCo :: Char -> Bool
isUnicodeCo c
  = elemCS c charPropUnicodeCo

charPropUnicodeCo :: CharSet
charPropUnicodeCo
  = [ ('\57344','\57344')
    , ('\63743','\63743')
    , ('\983040','\983040')
    , ('\1048573','\1048573')
    , ('\1048576','\1048576')
    , ('\1114109','\1114109')
    ]

-- ------------------------------------------------------------

isUnicodeCs :: Char -> Bool
isUnicodeCs c
  = elemCS c charPropUnicodeCs

charPropUnicodeCs :: CharSet
charPropUnicodeCs
  = [ ('\55296','\55296')
    , ('\56191','\56192')
    , ('\56319','\56320')
    , ('\57343','\57343')
    ]

-- ------------------------------------------------------------

isUnicodeL :: Char -> Bool
isUnicodeL c
  = elemCS c charPropUnicodeL

charPropUnicodeL :: CharSet
charPropUnicodeL
  = [ ('A','Z')
    , ('a','z')
    , ('\170','\170')
    , ('\181','\181')
    , ('\186','\186')
    , ('\192','\214')
    , ('\216','\246')
    , ('\248','\705')
    , ('\710','\721')
    , ('\736','\740')
    , ('\748','\748')
    , ('\750','\750')
    , ('\880','\884')
    , ('\886','\887')
    , ('\890','\893')
    , ('\902','\902')
    , ('\904','\906')
    , ('\908','\908')
    , ('\910','\929')
    , ('\931','\1013')
    , ('\1015','\1153')
    , ('\1162','\1317')
    , ('\1329','\1366')
    , ('\1369','\1369')
    , ('\1377','\1415')
    , ('\1488','\1514')
    , ('\1520','\1522')
    , ('\1569','\1610')
    , ('\1646','\1647')
    , ('\1649','\1747')
    , ('\1749','\1749')
    , ('\1765','\1766')
    , ('\1774','\1775')
    , ('\1786','\1788')
    , ('\1791','\1791')
    , ('\1808','\1808')
    , ('\1810','\1839')
    , ('\1869','\1957')
    , ('\1969','\1969')
    , ('\1994','\2026')
    , ('\2036','\2037')
    , ('\2042','\2042')
    , ('\2048','\2069')
    , ('\2074','\2074')
    , ('\2084','\2084')
    , ('\2088','\2088')
    , ('\2308','\2361')
    , ('\2365','\2365')
    , ('\2384','\2384')
    , ('\2392','\2401')
    , ('\2417','\2418')
    , ('\2425','\2431')
    , ('\2437','\2444')
    , ('\2447','\2448')
    , ('\2451','\2472')
    , ('\2474','\2480')
    , ('\2482','\2482')
    , ('\2486','\2489')
    , ('\2493','\2493')
    , ('\2510','\2510')
    , ('\2524','\2525')
    , ('\2527','\2529')
    , ('\2544','\2545')
    , ('\2565','\2570')
    , ('\2575','\2576')
    , ('\2579','\2600')
    , ('\2602','\2608')
    , ('\2610','\2611')
    , ('\2613','\2614')
    , ('\2616','\2617')
    , ('\2649','\2652')
    , ('\2654','\2654')
    , ('\2674','\2676')
    , ('\2693','\2701')
    , ('\2703','\2705')
    , ('\2707','\2728')
    , ('\2730','\2736')
    , ('\2738','\2739')
    , ('\2741','\2745')
    , ('\2749','\2749')
    , ('\2768','\2768')
    , ('\2784','\2785')
    , ('\2821','\2828')
    , ('\2831','\2832')
    , ('\2835','\2856')
    , ('\2858','\2864')
    , ('\2866','\2867')
    , ('\2869','\2873')
    , ('\2877','\2877')
    , ('\2908','\2909')
    , ('\2911','\2913')
    , ('\2929','\2929')
    , ('\2947','\2947')
    , ('\2949','\2954')
    , ('\2958','\2960')
    , ('\2962','\2965')
    , ('\2969','\2970')
    , ('\2972','\2972')
    , ('\2974','\2975')
    , ('\2979','\2980')
    , ('\2984','\2986')
    , ('\2990','\3001')
    , ('\3024','\3024')
    , ('\3077','\3084')
    , ('\3086','\3088')
    , ('\3090','\3112')
    , ('\3114','\3123')
    , ('\3125','\3129')
    , ('\3133','\3133')
    , ('\3160','\3161')
    , ('\3168','\3169')
    , ('\3205','\3212')
    , ('\3214','\3216')
    , ('\3218','\3240')
    , ('\3242','\3251')
    , ('\3253','\3257')
    , ('\3261','\3261')
    , ('\3294','\3294')
    , ('\3296','\3297')
    , ('\3333','\3340')
    , ('\3342','\3344')
    , ('\3346','\3368')
    , ('\3370','\3385')
    , ('\3389','\3389')
    , ('\3424','\3425')
    , ('\3450','\3455')
    , ('\3461','\3478')
    , ('\3482','\3505')
    , ('\3507','\3515')
    , ('\3517','\3517')
    , ('\3520','\3526')
    , ('\3585','\3632')
    , ('\3634','\3635')
    , ('\3648','\3654')
    , ('\3713','\3714')
    , ('\3716','\3716')
    , ('\3719','\3720')
    , ('\3722','\3722')
    , ('\3725','\3725')
    , ('\3732','\3735')
    , ('\3737','\3743')
    , ('\3745','\3747')
    , ('\3749','\3749')
    , ('\3751','\3751')
    , ('\3754','\3755')
    , ('\3757','\3760')
    , ('\3762','\3763')
    , ('\3773','\3773')
    , ('\3776','\3780')
    , ('\3782','\3782')
    , ('\3804','\3805')
    , ('\3840','\3840')
    , ('\3904','\3911')
    , ('\3913','\3948')
    , ('\3976','\3979')
    , ('\4096','\4138')
    , ('\4159','\4159')
    , ('\4176','\4181')
    , ('\4186','\4189')
    , ('\4193','\4193')
    , ('\4197','\4198')
    , ('\4206','\4208')
    , ('\4213','\4225')
    , ('\4238','\4238')
    , ('\4256','\4293')
    , ('\4304','\4346')
    , ('\4348','\4348')
    , ('\4352','\4680')
    , ('\4682','\4685')
    , ('\4688','\4694')
    , ('\4696','\4696')
    , ('\4698','\4701')
    , ('\4704','\4744')
    , ('\4746','\4749')
    , ('\4752','\4784')
    , ('\4786','\4789')
    , ('\4792','\4798')
    , ('\4800','\4800')
    , ('\4802','\4805')
    , ('\4808','\4822')
    , ('\4824','\4880')
    , ('\4882','\4885')
    , ('\4888','\4954')
    , ('\4992','\5007')
    , ('\5024','\5108')
    , ('\5121','\5740')
    , ('\5743','\5759')
    , ('\5761','\5786')
    , ('\5792','\5866')
    , ('\5888','\5900')
    , ('\5902','\5905')
    , ('\5920','\5937')
    , ('\5952','\5969')
    , ('\5984','\5996')
    , ('\5998','\6000')
    , ('\6016','\6067')
    , ('\6103','\6103')
    , ('\6108','\6108')
    , ('\6176','\6263')
    , ('\6272','\6312')
    , ('\6314','\6314')
    , ('\6320','\6389')
    , ('\6400','\6428')
    , ('\6480','\6509')
    , ('\6512','\6516')
    , ('\6528','\6571')
    , ('\6593','\6599')
    , ('\6656','\6678')
    , ('\6688','\6740')
    , ('\6823','\6823')
    , ('\6917','\6963')
    , ('\6981','\6987')
    , ('\7043','\7072')
    , ('\7086','\7087')
    , ('\7168','\7203')
    , ('\7245','\7247')
    , ('\7258','\7293')
    , ('\7401','\7404')
    , ('\7406','\7409')
    , ('\7424','\7615')
    , ('\7680','\7957')
    , ('\7960','\7965')
    , ('\7968','\8005')
    , ('\8008','\8013')
    , ('\8016','\8023')
    , ('\8025','\8025')
    , ('\8027','\8027')
    , ('\8029','\8029')
    , ('\8031','\8061')
    , ('\8064','\8116')
    , ('\8118','\8124')
    , ('\8126','\8126')
    , ('\8130','\8132')
    , ('\8134','\8140')
    , ('\8144','\8147')
    , ('\8150','\8155')
    , ('\8160','\8172')
    , ('\8178','\8180')
    , ('\8182','\8188')
    , ('\8305','\8305')
    , ('\8319','\8319')
    , ('\8336','\8340')
    , ('\8450','\8450')
    , ('\8455','\8455')
    , ('\8458','\8467')
    , ('\8469','\8469')
    , ('\8473','\8477')
    , ('\8484','\8484')
    , ('\8486','\8486')
    , ('\8488','\8488')
    , ('\8490','\8493')
    , ('\8495','\8505')
    , ('\8508','\8511')
    , ('\8517','\8521')
    , ('\8526','\8526')
    , ('\8579','\8580')
    , ('\11264','\11310')
    , ('\11312','\11358')
    , ('\11360','\11492')
    , ('\11499','\11502')
    , ('\11520','\11557')
    , ('\11568','\11621')
    , ('\11631','\11631')
    , ('\11648','\11670')
    , ('\11680','\11686')
    , ('\11688','\11694')
    , ('\11696','\11702')
    , ('\11704','\11710')
    , ('\11712','\11718')
    , ('\11720','\11726')
    , ('\11728','\11734')
    , ('\11736','\11742')
    , ('\11823','\11823')
    , ('\12293','\12294')
    , ('\12337','\12341')
    , ('\12347','\12348')
    , ('\12353','\12438')
    , ('\12445','\12447')
    , ('\12449','\12538')
    , ('\12540','\12543')
    , ('\12549','\12589')
    , ('\12593','\12686')
    , ('\12704','\12727')
    , ('\12784','\12799')
    , ('\13312','\13312')
    , ('\19893','\19893')
    , ('\19968','\19968')
    , ('\40907','\40907')
    , ('\40960','\42124')
    , ('\42192','\42237')
    , ('\42240','\42508')
    , ('\42512','\42527')
    , ('\42538','\42539')
    , ('\42560','\42591')
    , ('\42594','\42606')
    , ('\42623','\42647')
    , ('\42656','\42725')
    , ('\42775','\42783')
    , ('\42786','\42888')
    , ('\42891','\42892')
    , ('\43003','\43009')
    , ('\43011','\43013')
    , ('\43015','\43018')
    , ('\43020','\43042')
    , ('\43072','\43123')
    , ('\43138','\43187')
    , ('\43250','\43255')
    , ('\43259','\43259')
    , ('\43274','\43301')
    , ('\43312','\43334')
    , ('\43360','\43388')
    , ('\43396','\43442')
    , ('\43471','\43471')
    , ('\43520','\43560')
    , ('\43584','\43586')
    , ('\43588','\43595')
    , ('\43616','\43638')
    , ('\43642','\43642')
    , ('\43648','\43695')
    , ('\43697','\43697')
    , ('\43701','\43702')
    , ('\43705','\43709')
    , ('\43712','\43712')
    , ('\43714','\43714')
    , ('\43739','\43741')
    , ('\43968','\44002')
    , ('\44032','\44032')
    , ('\55203','\55203')
    , ('\55216','\55238')
    , ('\55243','\55291')
    , ('\63744','\64045')
    , ('\64048','\64109')
    , ('\64112','\64217')
    , ('\64256','\64262')
    , ('\64275','\64279')
    , ('\64285','\64285')
    , ('\64287','\64296')
    , ('\64298','\64310')
    , ('\64312','\64316')
    , ('\64318','\64318')
    , ('\64320','\64321')
    , ('\64323','\64324')
    , ('\64326','\64433')
    , ('\64467','\64829')
    , ('\64848','\64911')
    , ('\64914','\64967')
    , ('\65008','\65019')
    , ('\65136','\65140')
    , ('\65142','\65276')
    , ('\65313','\65338')
    , ('\65345','\65370')
    , ('\65382','\65470')
    , ('\65474','\65479')
    , ('\65482','\65487')
    , ('\65490','\65495')
    , ('\65498','\65500')
    , ('\65536','\65547')
    , ('\65549','\65574')
    , ('\65576','\65594')
    , ('\65596','\65597')
    , ('\65599','\65613')
    , ('\65616','\65629')
    , ('\65664','\65786')
    , ('\66176','\66204')
    , ('\66208','\66256')
    , ('\66304','\66334')
    , ('\66352','\66368')
    , ('\66370','\66377')
    , ('\66432','\66461')
    , ('\66464','\66499')
    , ('\66504','\66511')
    , ('\66560','\66717')
    , ('\67584','\67589')
    , ('\67592','\67592')
    , ('\67594','\67637')
    , ('\67639','\67640')
    , ('\67644','\67644')
    , ('\67647','\67669')
    , ('\67840','\67861')
    , ('\67872','\67897')
    , ('\68096','\68096')
    , ('\68112','\68115')
    , ('\68117','\68119')
    , ('\68121','\68147')
    , ('\68192','\68220')
    , ('\68352','\68405')
    , ('\68416','\68437')
    , ('\68448','\68466')
    , ('\68608','\68680')
    , ('\69763','\69807')
    , ('\73728','\74606')
    , ('\77824','\78894')
    , ('\119808','\119892')
    , ('\119894','\119964')
    , ('\119966','\119967')
    , ('\119970','\119970')
    , ('\119973','\119974')
    , ('\119977','\119980')
    , ('\119982','\119993')
    , ('\119995','\119995')
    , ('\119997','\120003')
    , ('\120005','\120069')
    , ('\120071','\120074')
    , ('\120077','\120084')
    , ('\120086','\120092')
    , ('\120094','\120121')
    , ('\120123','\120126')
    , ('\120128','\120132')
    , ('\120134','\120134')
    , ('\120138','\120144')
    , ('\120146','\120485')
    , ('\120488','\120512')
    , ('\120514','\120538')
    , ('\120540','\120570')
    , ('\120572','\120596')
    , ('\120598','\120628')
    , ('\120630','\120654')
    , ('\120656','\120686')
    , ('\120688','\120712')
    , ('\120714','\120744')
    , ('\120746','\120770')
    , ('\120772','\120779')
    , ('\131072','\131072')
    , ('\173782','\173782')
    , ('\173824','\173824')
    , ('\177972','\177972')
    , ('\194560','\195101')
    ]

-- ------------------------------------------------------------

isUnicodeLl :: Char -> Bool
isUnicodeLl c
  = elemCS c charPropUnicodeLl

charPropUnicodeLl :: CharSet
charPropUnicodeLl
  = [ ('a','z')
    , ('\170','\170')
    , ('\181','\181')
    , ('\186','\186')
    , ('\223','\246')
    , ('\248','\255')
    , ('\257','\257')
    , ('\259','\259')
    , ('\261','\261')
    , ('\263','\263')
    , ('\265','\265')
    , ('\267','\267')
    , ('\269','\269')
    , ('\271','\271')
    , ('\273','\273')
    , ('\275','\275')
    , ('\277','\277')
    , ('\279','\279')
    , ('\281','\281')
    , ('\283','\283')
    , ('\285','\285')
    , ('\287','\287')
    , ('\289','\289')
    , ('\291','\291')
    , ('\293','\293')
    , ('\295','\295')
    , ('\297','\297')
    , ('\299','\299')
    , ('\301','\301')
    , ('\303','\303')
    , ('\305','\305')
    , ('\307','\307')
    , ('\309','\309')
    , ('\311','\312')
    , ('\314','\314')
    , ('\316','\316')
    , ('\318','\318')
    , ('\320','\320')
    , ('\322','\322')
    , ('\324','\324')
    , ('\326','\326')
    , ('\328','\329')
    , ('\331','\331')
    , ('\333','\333')
    , ('\335','\335')
    , ('\337','\337')
    , ('\339','\339')
    , ('\341','\341')
    , ('\343','\343')
    , ('\345','\345')
    , ('\347','\347')
    , ('\349','\349')
    , ('\351','\351')
    , ('\353','\353')
    , ('\355','\355')
    , ('\357','\357')
    , ('\359','\359')
    , ('\361','\361')
    , ('\363','\363')
    , ('\365','\365')
    , ('\367','\367')
    , ('\369','\369')
    , ('\371','\371')
    , ('\373','\373')
    , ('\375','\375')
    , ('\378','\378')
    , ('\380','\380')
    , ('\382','\384')
    , ('\387','\387')
    , ('\389','\389')
    , ('\392','\392')
    , ('\396','\397')
    , ('\402','\402')
    , ('\405','\405')
    , ('\409','\411')
    , ('\414','\414')
    , ('\417','\417')
    , ('\419','\419')
    , ('\421','\421')
    , ('\424','\424')
    , ('\426','\427')
    , ('\429','\429')
    , ('\432','\432')
    , ('\436','\436')
    , ('\438','\438')
    , ('\441','\442')
    , ('\445','\447')
    , ('\454','\454')
    , ('\457','\457')
    , ('\460','\460')
    , ('\462','\462')
    , ('\464','\464')
    , ('\466','\466')
    , ('\468','\468')
    , ('\470','\470')
    , ('\472','\472')
    , ('\474','\474')
    , ('\476','\477')
    , ('\479','\479')
    , ('\481','\481')
    , ('\483','\483')
    , ('\485','\485')
    , ('\487','\487')
    , ('\489','\489')
    , ('\491','\491')
    , ('\493','\493')
    , ('\495','\496')
    , ('\499','\499')
    , ('\501','\501')
    , ('\505','\505')
    , ('\507','\507')
    , ('\509','\509')
    , ('\511','\511')
    , ('\513','\513')
    , ('\515','\515')
    , ('\517','\517')
    , ('\519','\519')
    , ('\521','\521')
    , ('\523','\523')
    , ('\525','\525')
    , ('\527','\527')
    , ('\529','\529')
    , ('\531','\531')
    , ('\533','\533')
    , ('\535','\535')
    , ('\537','\537')
    , ('\539','\539')
    , ('\541','\541')
    , ('\543','\543')
    , ('\545','\545')
    , ('\547','\547')
    , ('\549','\549')
    , ('\551','\551')
    , ('\553','\553')
    , ('\555','\555')
    , ('\557','\557')
    , ('\559','\559')
    , ('\561','\561')
    , ('\563','\569')
    , ('\572','\572')
    , ('\575','\576')
    , ('\578','\578')
    , ('\583','\583')
    , ('\585','\585')
    , ('\587','\587')
    , ('\589','\589')
    , ('\591','\659')
    , ('\661','\687')
    , ('\881','\881')
    , ('\883','\883')
    , ('\887','\887')
    , ('\891','\893')
    , ('\912','\912')
    , ('\940','\974')
    , ('\976','\977')
    , ('\981','\983')
    , ('\985','\985')
    , ('\987','\987')
    , ('\989','\989')
    , ('\991','\991')
    , ('\993','\993')
    , ('\995','\995')
    , ('\997','\997')
    , ('\999','\999')
    , ('\1001','\1001')
    , ('\1003','\1003')
    , ('\1005','\1005')
    , ('\1007','\1011')
    , ('\1013','\1013')
    , ('\1016','\1016')
    , ('\1019','\1020')
    , ('\1072','\1119')
    , ('\1121','\1121')
    , ('\1123','\1123')
    , ('\1125','\1125')
    , ('\1127','\1127')
    , ('\1129','\1129')
    , ('\1131','\1131')
    , ('\1133','\1133')
    , ('\1135','\1135')
    , ('\1137','\1137')
    , ('\1139','\1139')
    , ('\1141','\1141')
    , ('\1143','\1143')
    , ('\1145','\1145')
    , ('\1147','\1147')
    , ('\1149','\1149')
    , ('\1151','\1151')
    , ('\1153','\1153')
    , ('\1163','\1163')
    , ('\1165','\1165')
    , ('\1167','\1167')
    , ('\1169','\1169')
    , ('\1171','\1171')
    , ('\1173','\1173')
    , ('\1175','\1175')
    , ('\1177','\1177')
    , ('\1179','\1179')
    , ('\1181','\1181')
    , ('\1183','\1183')
    , ('\1185','\1185')
    , ('\1187','\1187')
    , ('\1189','\1189')
    , ('\1191','\1191')
    , ('\1193','\1193')
    , ('\1195','\1195')
    , ('\1197','\1197')
    , ('\1199','\1199')
    , ('\1201','\1201')
    , ('\1203','\1203')
    , ('\1205','\1205')
    , ('\1207','\1207')
    , ('\1209','\1209')
    , ('\1211','\1211')
    , ('\1213','\1213')
    , ('\1215','\1215')
    , ('\1218','\1218')
    , ('\1220','\1220')
    , ('\1222','\1222')
    , ('\1224','\1224')
    , ('\1226','\1226')
    , ('\1228','\1228')
    , ('\1230','\1231')
    , ('\1233','\1233')
    , ('\1235','\1235')
    , ('\1237','\1237')
    , ('\1239','\1239')
    , ('\1241','\1241')
    , ('\1243','\1243')
    , ('\1245','\1245')
    , ('\1247','\1247')
    , ('\1249','\1249')
    , ('\1251','\1251')
    , ('\1253','\1253')
    , ('\1255','\1255')
    , ('\1257','\1257')
    , ('\1259','\1259')
    , ('\1261','\1261')
    , ('\1263','\1263')
    , ('\1265','\1265')
    , ('\1267','\1267')
    , ('\1269','\1269')
    , ('\1271','\1271')
    , ('\1273','\1273')
    , ('\1275','\1275')
    , ('\1277','\1277')
    , ('\1279','\1279')
    , ('\1281','\1281')
    , ('\1283','\1283')
    , ('\1285','\1285')
    , ('\1287','\1287')
    , ('\1289','\1289')
    , ('\1291','\1291')
    , ('\1293','\1293')
    , ('\1295','\1295')
    , ('\1297','\1297')
    , ('\1299','\1299')
    , ('\1301','\1301')
    , ('\1303','\1303')
    , ('\1305','\1305')
    , ('\1307','\1307')
    , ('\1309','\1309')
    , ('\1311','\1311')
    , ('\1313','\1313')
    , ('\1315','\1315')
    , ('\1317','\1317')
    , ('\1377','\1415')
    , ('\7424','\7467')
    , ('\7522','\7543')
    , ('\7545','\7578')
    , ('\7681','\7681')
    , ('\7683','\7683')
    , ('\7685','\7685')
    , ('\7687','\7687')
    , ('\7689','\7689')
    , ('\7691','\7691')
    , ('\7693','\7693')
    , ('\7695','\7695')
    , ('\7697','\7697')
    , ('\7699','\7699')
    , ('\7701','\7701')
    , ('\7703','\7703')
    , ('\7705','\7705')
    , ('\7707','\7707')
    , ('\7709','\7709')
    , ('\7711','\7711')
    , ('\7713','\7713')
    , ('\7715','\7715')
    , ('\7717','\7717')
    , ('\7719','\7719')
    , ('\7721','\7721')
    , ('\7723','\7723')
    , ('\7725','\7725')
    , ('\7727','\7727')
    , ('\7729','\7729')
    , ('\7731','\7731')
    , ('\7733','\7733')
    , ('\7735','\7735')
    , ('\7737','\7737')
    , ('\7739','\7739')
    , ('\7741','\7741')
    , ('\7743','\7743')
    , ('\7745','\7745')
    , ('\7747','\7747')
    , ('\7749','\7749')
    , ('\7751','\7751')
    , ('\7753','\7753')
    , ('\7755','\7755')
    , ('\7757','\7757')
    , ('\7759','\7759')
    , ('\7761','\7761')
    , ('\7763','\7763')
    , ('\7765','\7765')
    , ('\7767','\7767')
    , ('\7769','\7769')
    , ('\7771','\7771')
    , ('\7773','\7773')
    , ('\7775','\7775')
    , ('\7777','\7777')
    , ('\7779','\7779')
    , ('\7781','\7781')
    , ('\7783','\7783')
    , ('\7785','\7785')
    , ('\7787','\7787')
    , ('\7789','\7789')
    , ('\7791','\7791')
    , ('\7793','\7793')
    , ('\7795','\7795')
    , ('\7797','\7797')
    , ('\7799','\7799')
    , ('\7801','\7801')
    , ('\7803','\7803')
    , ('\7805','\7805')
    , ('\7807','\7807')
    , ('\7809','\7809')
    , ('\7811','\7811')
    , ('\7813','\7813')
    , ('\7815','\7815')
    , ('\7817','\7817')
    , ('\7819','\7819')
    , ('\7821','\7821')
    , ('\7823','\7823')
    , ('\7825','\7825')
    , ('\7827','\7827')
    , ('\7829','\7837')
    , ('\7839','\7839')
    , ('\7841','\7841')
    , ('\7843','\7843')
    , ('\7845','\7845')
    , ('\7847','\7847')
    , ('\7849','\7849')
    , ('\7851','\7851')
    , ('\7853','\7853')
    , ('\7855','\7855')
    , ('\7857','\7857')
    , ('\7859','\7859')
    , ('\7861','\7861')
    , ('\7863','\7863')
    , ('\7865','\7865')
    , ('\7867','\7867')
    , ('\7869','\7869')
    , ('\7871','\7871')
    , ('\7873','\7873')
    , ('\7875','\7875')
    , ('\7877','\7877')
    , ('\7879','\7879')
    , ('\7881','\7881')
    , ('\7883','\7883')
    , ('\7885','\7885')
    , ('\7887','\7887')
    , ('\7889','\7889')
    , ('\7891','\7891')
    , ('\7893','\7893')
    , ('\7895','\7895')
    , ('\7897','\7897')
    , ('\7899','\7899')
    , ('\7901','\7901')
    , ('\7903','\7903')
    , ('\7905','\7905')
    , ('\7907','\7907')
    , ('\7909','\7909')
    , ('\7911','\7911')
    , ('\7913','\7913')
    , ('\7915','\7915')
    , ('\7917','\7917')
    , ('\7919','\7919')
    , ('\7921','\7921')
    , ('\7923','\7923')
    , ('\7925','\7925')
    , ('\7927','\7927')
    , ('\7929','\7929')
    , ('\7931','\7931')
    , ('\7933','\7933')
    , ('\7935','\7943')
    , ('\7952','\7957')
    , ('\7968','\7975')
    , ('\7984','\7991')
    , ('\8000','\8005')
    , ('\8016','\8023')
    , ('\8032','\8039')
    , ('\8048','\8061')
    , ('\8064','\8071')
    , ('\8080','\8087')
    , ('\8096','\8103')
    , ('\8112','\8116')
    , ('\8118','\8119')
    , ('\8126','\8126')
    , ('\8130','\8132')
    , ('\8134','\8135')
    , ('\8144','\8147')
    , ('\8150','\8151')
    , ('\8160','\8167')
    , ('\8178','\8180')
    , ('\8182','\8183')
    , ('\8458','\8458')
    , ('\8462','\8463')
    , ('\8467','\8467')
    , ('\8495','\8495')
    , ('\8500','\8500')
    , ('\8505','\8505')
    , ('\8508','\8509')
    , ('\8518','\8521')
    , ('\8526','\8526')
    , ('\8580','\8580')
    , ('\11312','\11358')
    , ('\11361','\11361')
    , ('\11365','\11366')
    , ('\11368','\11368')
    , ('\11370','\11370')
    , ('\11372','\11372')
    , ('\11377','\11377')
    , ('\11379','\11380')
    , ('\11382','\11388')
    , ('\11393','\11393')
    , ('\11395','\11395')
    , ('\11397','\11397')
    , ('\11399','\11399')
    , ('\11401','\11401')
    , ('\11403','\11403')
    , ('\11405','\11405')
    , ('\11407','\11407')
    , ('\11409','\11409')
    , ('\11411','\11411')
    , ('\11413','\11413')
    , ('\11415','\11415')
    , ('\11417','\11417')
    , ('\11419','\11419')
    , ('\11421','\11421')
    , ('\11423','\11423')
    , ('\11425','\11425')
    , ('\11427','\11427')
    , ('\11429','\11429')
    , ('\11431','\11431')
    , ('\11433','\11433')
    , ('\11435','\11435')
    , ('\11437','\11437')
    , ('\11439','\11439')
    , ('\11441','\11441')
    , ('\11443','\11443')
    , ('\11445','\11445')
    , ('\11447','\11447')
    , ('\11449','\11449')
    , ('\11451','\11451')
    , ('\11453','\11453')
    , ('\11455','\11455')
    , ('\11457','\11457')
    , ('\11459','\11459')
    , ('\11461','\11461')
    , ('\11463','\11463')
    , ('\11465','\11465')
    , ('\11467','\11467')
    , ('\11469','\11469')
    , ('\11471','\11471')
    , ('\11473','\11473')
    , ('\11475','\11475')
    , ('\11477','\11477')
    , ('\11479','\11479')
    , ('\11481','\11481')
    , ('\11483','\11483')
    , ('\11485','\11485')
    , ('\11487','\11487')
    , ('\11489','\11489')
    , ('\11491','\11492')
    , ('\11500','\11500')
    , ('\11502','\11502')
    , ('\11520','\11557')
    , ('\42561','\42561')
    , ('\42563','\42563')
    , ('\42565','\42565')
    , ('\42567','\42567')
    , ('\42569','\42569')
    , ('\42571','\42571')
    , ('\42573','\42573')
    , ('\42575','\42575')
    , ('\42577','\42577')
    , ('\42579','\42579')
    , ('\42581','\42581')
    , ('\42583','\42583')
    , ('\42585','\42585')
    , ('\42587','\42587')
    , ('\42589','\42589')
    , ('\42591','\42591')
    , ('\42595','\42595')
    , ('\42597','\42597')
    , ('\42599','\42599')
    , ('\42601','\42601')
    , ('\42603','\42603')
    , ('\42605','\42605')
    , ('\42625','\42625')
    , ('\42627','\42627')
    , ('\42629','\42629')
    , ('\42631','\42631')
    , ('\42633','\42633')
    , ('\42635','\42635')
    , ('\42637','\42637')
    , ('\42639','\42639')
    , ('\42641','\42641')
    , ('\42643','\42643')
    , ('\42645','\42645')
    , ('\42647','\42647')
    , ('\42787','\42787')
    , ('\42789','\42789')
    , ('\42791','\42791')
    , ('\42793','\42793')
    , ('\42795','\42795')
    , ('\42797','\42797')
    , ('\42799','\42801')
    , ('\42803','\42803')
    , ('\42805','\42805')
    , ('\42807','\42807')
    , ('\42809','\42809')
    , ('\42811','\42811')
    , ('\42813','\42813')
    , ('\42815','\42815')
    , ('\42817','\42817')
    , ('\42819','\42819')
    , ('\42821','\42821')
    , ('\42823','\42823')
    , ('\42825','\42825')
    , ('\42827','\42827')
    , ('\42829','\42829')
    , ('\42831','\42831')
    , ('\42833','\42833')
    , ('\42835','\42835')
    , ('\42837','\42837')
    , ('\42839','\42839')
    , ('\42841','\42841')
    , ('\42843','\42843')
    , ('\42845','\42845')
    , ('\42847','\42847')
    , ('\42849','\42849')
    , ('\42851','\42851')
    , ('\42853','\42853')
    , ('\42855','\42855')
    , ('\42857','\42857')
    , ('\42859','\42859')
    , ('\42861','\42861')
    , ('\42863','\42863')
    , ('\42865','\42872')
    , ('\42874','\42874')
    , ('\42876','\42876')
    , ('\42879','\42879')
    , ('\42881','\42881')
    , ('\42883','\42883')
    , ('\42885','\42885')
    , ('\42887','\42887')
    , ('\42892','\42892')
    , ('\64256','\64262')
    , ('\64275','\64279')
    , ('\65345','\65370')
    , ('\66600','\66639')
    , ('\119834','\119859')
    , ('\119886','\119892')
    , ('\119894','\119911')
    , ('\119938','\119963')
    , ('\119990','\119993')
    , ('\119995','\119995')
    , ('\119997','\120003')
    , ('\120005','\120015')
    , ('\120042','\120067')
    , ('\120094','\120119')
    , ('\120146','\120171')
    , ('\120198','\120223')
    , ('\120250','\120275')
    , ('\120302','\120327')
    , ('\120354','\120379')
    , ('\120406','\120431')
    , ('\120458','\120485')
    , ('\120514','\120538')
    , ('\120540','\120545')
    , ('\120572','\120596')
    , ('\120598','\120603')
    , ('\120630','\120654')
    , ('\120656','\120661')
    , ('\120688','\120712')
    , ('\120714','\120719')
    , ('\120746','\120770')
    , ('\120772','\120777')
    , ('\120779','\120779')
    ]

-- ------------------------------------------------------------

isUnicodeLm :: Char -> Bool
isUnicodeLm c
  = elemCS c charPropUnicodeLm

charPropUnicodeLm :: CharSet
charPropUnicodeLm
  = [ ('\688','\705')
    , ('\710','\721')
    , ('\736','\740')
    , ('\748','\748')
    , ('\750','\750')
    , ('\884','\884')
    , ('\890','\890')
    , ('\1369','\1369')
    , ('\1600','\1600')
    , ('\1765','\1766')
    , ('\2036','\2037')
    , ('\2042','\2042')
    , ('\2074','\2074')
    , ('\2084','\2084')
    , ('\2088','\2088')
    , ('\2417','\2417')
    , ('\3654','\3654')
    , ('\3782','\3782')
    , ('\4348','\4348')
    , ('\6103','\6103')
    , ('\6211','\6211')
    , ('\6823','\6823')
    , ('\7288','\7293')
    , ('\7468','\7521')
    , ('\7544','\7544')
    , ('\7579','\7615')
    , ('\8305','\8305')
    , ('\8319','\8319')
    , ('\8336','\8340')
    , ('\11389','\11389')
    , ('\11631','\11631')
    , ('\11823','\11823')
    , ('\12293','\12293')
    , ('\12337','\12341')
    , ('\12347','\12347')
    , ('\12445','\12446')
    , ('\12540','\12542')
    , ('\40981','\40981')
    , ('\42232','\42237')
    , ('\42508','\42508')
    , ('\42623','\42623')
    , ('\42775','\42783')
    , ('\42864','\42864')
    , ('\42888','\42888')
    , ('\43471','\43471')
    , ('\43632','\43632')
    , ('\43741','\43741')
    , ('\65392','\65392')
    , ('\65438','\65439')
    ]

-- ------------------------------------------------------------

isUnicodeLo :: Char -> Bool
isUnicodeLo c
  = elemCS c charPropUnicodeLo

charPropUnicodeLo :: CharSet
charPropUnicodeLo
  = [ ('\443','\443')
    , ('\448','\451')
    , ('\660','\660')
    , ('\1488','\1514')
    , ('\1520','\1522')
    , ('\1569','\1599')
    , ('\1601','\1610')
    , ('\1646','\1647')
    , ('\1649','\1747')
    , ('\1749','\1749')
    , ('\1774','\1775')
    , ('\1786','\1788')
    , ('\1791','\1791')
    , ('\1808','\1808')
    , ('\1810','\1839')
    , ('\1869','\1957')
    , ('\1969','\1969')
    , ('\1994','\2026')
    , ('\2048','\2069')
    , ('\2308','\2361')
    , ('\2365','\2365')
    , ('\2384','\2384')
    , ('\2392','\2401')
    , ('\2418','\2418')
    , ('\2425','\2431')
    , ('\2437','\2444')
    , ('\2447','\2448')
    , ('\2451','\2472')
    , ('\2474','\2480')
    , ('\2482','\2482')
    , ('\2486','\2489')
    , ('\2493','\2493')
    , ('\2510','\2510')
    , ('\2524','\2525')
    , ('\2527','\2529')
    , ('\2544','\2545')
    , ('\2565','\2570')
    , ('\2575','\2576')
    , ('\2579','\2600')
    , ('\2602','\2608')
    , ('\2610','\2611')
    , ('\2613','\2614')
    , ('\2616','\2617')
    , ('\2649','\2652')
    , ('\2654','\2654')
    , ('\2674','\2676')
    , ('\2693','\2701')
    , ('\2703','\2705')
    , ('\2707','\2728')
    , ('\2730','\2736')
    , ('\2738','\2739')
    , ('\2741','\2745')
    , ('\2749','\2749')
    , ('\2768','\2768')
    , ('\2784','\2785')
    , ('\2821','\2828')
    , ('\2831','\2832')
    , ('\2835','\2856')
    , ('\2858','\2864')
    , ('\2866','\2867')
    , ('\2869','\2873')
    , ('\2877','\2877')
    , ('\2908','\2909')
    , ('\2911','\2913')
    , ('\2929','\2929')
    , ('\2947','\2947')
    , ('\2949','\2954')
    , ('\2958','\2960')
    , ('\2962','\2965')
    , ('\2969','\2970')
    , ('\2972','\2972')
    , ('\2974','\2975')
    , ('\2979','\2980')
    , ('\2984','\2986')
    , ('\2990','\3001')
    , ('\3024','\3024')
    , ('\3077','\3084')
    , ('\3086','\3088')
    , ('\3090','\3112')
    , ('\3114','\3123')
    , ('\3125','\3129')
    , ('\3133','\3133')
    , ('\3160','\3161')
    , ('\3168','\3169')
    , ('\3205','\3212')
    , ('\3214','\3216')
    , ('\3218','\3240')
    , ('\3242','\3251')
    , ('\3253','\3257')
    , ('\3261','\3261')
    , ('\3294','\3294')
    , ('\3296','\3297')
    , ('\3333','\3340')
    , ('\3342','\3344')
    , ('\3346','\3368')
    , ('\3370','\3385')
    , ('\3389','\3389')
    , ('\3424','\3425')
    , ('\3450','\3455')
    , ('\3461','\3478')
    , ('\3482','\3505')
    , ('\3507','\3515')
    , ('\3517','\3517')
    , ('\3520','\3526')
    , ('\3585','\3632')
    , ('\3634','\3635')
    , ('\3648','\3653')
    , ('\3713','\3714')
    , ('\3716','\3716')
    , ('\3719','\3720')
    , ('\3722','\3722')
    , ('\3725','\3725')
    , ('\3732','\3735')
    , ('\3737','\3743')
    , ('\3745','\3747')
    , ('\3749','\3749')
    , ('\3751','\3751')
    , ('\3754','\3755')
    , ('\3757','\3760')
    , ('\3762','\3763')
    , ('\3773','\3773')
    , ('\3776','\3780')
    , ('\3804','\3805')
    , ('\3840','\3840')
    , ('\3904','\3911')
    , ('\3913','\3948')
    , ('\3976','\3979')
    , ('\4096','\4138')
    , ('\4159','\4159')
    , ('\4176','\4181')
    , ('\4186','\4189')
    , ('\4193','\4193')
    , ('\4197','\4198')
    , ('\4206','\4208')
    , ('\4213','\4225')
    , ('\4238','\4238')
    , ('\4304','\4346')
    , ('\4352','\4680')
    , ('\4682','\4685')
    , ('\4688','\4694')
    , ('\4696','\4696')
    , ('\4698','\4701')
    , ('\4704','\4744')
    , ('\4746','\4749')
    , ('\4752','\4784')
    , ('\4786','\4789')
    , ('\4792','\4798')
    , ('\4800','\4800')
    , ('\4802','\4805')
    , ('\4808','\4822')
    , ('\4824','\4880')
    , ('\4882','\4885')
    , ('\4888','\4954')
    , ('\4992','\5007')
    , ('\5024','\5108')
    , ('\5121','\5740')
    , ('\5743','\5759')
    , ('\5761','\5786')
    , ('\5792','\5866')
    , ('\5888','\5900')
    , ('\5902','\5905')
    , ('\5920','\5937')
    , ('\5952','\5969')
    , ('\5984','\5996')
    , ('\5998','\6000')
    , ('\6016','\6067')
    , ('\6108','\6108')
    , ('\6176','\6210')
    , ('\6212','\6263')
    , ('\6272','\6312')
    , ('\6314','\6314')
    , ('\6320','\6389')
    , ('\6400','\6428')
    , ('\6480','\6509')
    , ('\6512','\6516')
    , ('\6528','\6571')
    , ('\6593','\6599')
    , ('\6656','\6678')
    , ('\6688','\6740')
    , ('\6917','\6963')
    , ('\6981','\6987')
    , ('\7043','\7072')
    , ('\7086','\7087')
    , ('\7168','\7203')
    , ('\7245','\7247')
    , ('\7258','\7287')
    , ('\7401','\7404')
    , ('\7406','\7409')
    , ('\8501','\8504')
    , ('\11568','\11621')
    , ('\11648','\11670')
    , ('\11680','\11686')
    , ('\11688','\11694')
    , ('\11696','\11702')
    , ('\11704','\11710')
    , ('\11712','\11718')
    , ('\11720','\11726')
    , ('\11728','\11734')
    , ('\11736','\11742')
    , ('\12294','\12294')
    , ('\12348','\12348')
    , ('\12353','\12438')
    , ('\12447','\12447')
    , ('\12449','\12538')
    , ('\12543','\12543')
    , ('\12549','\12589')
    , ('\12593','\12686')
    , ('\12704','\12727')
    , ('\12784','\12799')
    , ('\13312','\13312')
    , ('\19893','\19893')
    , ('\19968','\19968')
    , ('\40907','\40907')
    , ('\40960','\40980')
    , ('\40982','\42124')
    , ('\42192','\42231')
    , ('\42240','\42507')
    , ('\42512','\42527')
    , ('\42538','\42539')
    , ('\42606','\42606')
    , ('\42656','\42725')
    , ('\43003','\43009')
    , ('\43011','\43013')
    , ('\43015','\43018')
    , ('\43020','\43042')
    , ('\43072','\43123')
    , ('\43138','\43187')
    , ('\43250','\43255')
    , ('\43259','\43259')
    , ('\43274','\43301')
    , ('\43312','\43334')
    , ('\43360','\43388')
    , ('\43396','\43442')
    , ('\43520','\43560')
    , ('\43584','\43586')
    , ('\43588','\43595')
    , ('\43616','\43631')
    , ('\43633','\43638')
    , ('\43642','\43642')
    , ('\43648','\43695')
    , ('\43697','\43697')
    , ('\43701','\43702')
    , ('\43705','\43709')
    , ('\43712','\43712')
    , ('\43714','\43714')
    , ('\43739','\43740')
    , ('\43968','\44002')
    , ('\44032','\44032')
    , ('\55203','\55203')
    , ('\55216','\55238')
    , ('\55243','\55291')
    , ('\63744','\64045')
    , ('\64048','\64109')
    , ('\64112','\64217')
    , ('\64285','\64285')
    , ('\64287','\64296')
    , ('\64298','\64310')
    , ('\64312','\64316')
    , ('\64318','\64318')
    , ('\64320','\64321')
    , ('\64323','\64324')
    , ('\64326','\64433')
    , ('\64467','\64829')
    , ('\64848','\64911')
    , ('\64914','\64967')
    , ('\65008','\65019')
    , ('\65136','\65140')
    , ('\65142','\65276')
    , ('\65382','\65391')
    , ('\65393','\65437')
    , ('\65440','\65470')
    , ('\65474','\65479')
    , ('\65482','\65487')
    , ('\65490','\65495')
    , ('\65498','\65500')
    , ('\65536','\65547')
    , ('\65549','\65574')
    , ('\65576','\65594')
    , ('\65596','\65597')
    , ('\65599','\65613')
    , ('\65616','\65629')
    , ('\65664','\65786')
    , ('\66176','\66204')
    , ('\66208','\66256')
    , ('\66304','\66334')
    , ('\66352','\66368')
    , ('\66370','\66377')
    , ('\66432','\66461')
    , ('\66464','\66499')
    , ('\66504','\66511')
    , ('\66640','\66717')
    , ('\67584','\67589')
    , ('\67592','\67592')
    , ('\67594','\67637')
    , ('\67639','\67640')
    , ('\67644','\67644')
    , ('\67647','\67669')
    , ('\67840','\67861')
    , ('\67872','\67897')
    , ('\68096','\68096')
    , ('\68112','\68115')
    , ('\68117','\68119')
    , ('\68121','\68147')
    , ('\68192','\68220')
    , ('\68352','\68405')
    , ('\68416','\68437')
    , ('\68448','\68466')
    , ('\68608','\68680')
    , ('\69763','\69807')
    , ('\73728','\74606')
    , ('\77824','\78894')
    , ('\131072','\131072')
    , ('\173782','\173782')
    , ('\173824','\173824')
    , ('\177972','\177972')
    , ('\194560','\195101')
    ]

-- ------------------------------------------------------------

isUnicodeLt :: Char -> Bool
isUnicodeLt c
  = elemCS c charPropUnicodeLt

charPropUnicodeLt :: CharSet
charPropUnicodeLt
  = [ ('\453','\453')
    , ('\456','\456')
    , ('\459','\459')
    , ('\498','\498')
    , ('\8072','\8079')
    , ('\8088','\8095')
    , ('\8104','\8111')
    , ('\8124','\8124')
    , ('\8140','\8140')
    , ('\8188','\8188')
    ]

-- ------------------------------------------------------------

isUnicodeLu :: Char -> Bool
isUnicodeLu c
  = elemCS c charPropUnicodeLu

charPropUnicodeLu :: CharSet
charPropUnicodeLu
  = [ ('A','Z')
    , ('\192','\214')
    , ('\216','\222')
    , ('\256','\256')
    , ('\258','\258')
    , ('\260','\260')
    , ('\262','\262')
    , ('\264','\264')
    , ('\266','\266')
    , ('\268','\268')
    , ('\270','\270')
    , ('\272','\272')
    , ('\274','\274')
    , ('\276','\276')
    , ('\278','\278')
    , ('\280','\280')
    , ('\282','\282')
    , ('\284','\284')
    , ('\286','\286')
    , ('\288','\288')
    , ('\290','\290')
    , ('\292','\292')
    , ('\294','\294')
    , ('\296','\296')
    , ('\298','\298')
    , ('\300','\300')
    , ('\302','\302')
    , ('\304','\304')
    , ('\306','\306')
    , ('\308','\308')
    , ('\310','\310')
    , ('\313','\313')
    , ('\315','\315')
    , ('\317','\317')
    , ('\319','\319')
    , ('\321','\321')
    , ('\323','\323')
    , ('\325','\325')
    , ('\327','\327')
    , ('\330','\330')
    , ('\332','\332')
    , ('\334','\334')
    , ('\336','\336')
    , ('\338','\338')
    , ('\340','\340')
    , ('\342','\342')
    , ('\344','\344')
    , ('\346','\346')
    , ('\348','\348')
    , ('\350','\350')
    , ('\352','\352')
    , ('\354','\354')
    , ('\356','\356')
    , ('\358','\358')
    , ('\360','\360')
    , ('\362','\362')
    , ('\364','\364')
    , ('\366','\366')
    , ('\368','\368')
    , ('\370','\370')
    , ('\372','\372')
    , ('\374','\374')
    , ('\376','\377')
    , ('\379','\379')
    , ('\381','\381')
    , ('\385','\386')
    , ('\388','\388')
    , ('\390','\391')
    , ('\393','\395')
    , ('\398','\401')
    , ('\403','\404')
    , ('\406','\408')
    , ('\412','\413')
    , ('\415','\416')
    , ('\418','\418')
    , ('\420','\420')
    , ('\422','\423')
    , ('\425','\425')
    , ('\428','\428')
    , ('\430','\431')
    , ('\433','\435')
    , ('\437','\437')
    , ('\439','\440')
    , ('\444','\444')
    , ('\452','\452')
    , ('\455','\455')
    , ('\458','\458')
    , ('\461','\461')
    , ('\463','\463')
    , ('\465','\465')
    , ('\467','\467')
    , ('\469','\469')
    , ('\471','\471')
    , ('\473','\473')
    , ('\475','\475')
    , ('\478','\478')
    , ('\480','\480')
    , ('\482','\482')
    , ('\484','\484')
    , ('\486','\486')
    , ('\488','\488')
    , ('\490','\490')
    , ('\492','\492')
    , ('\494','\494')
    , ('\497','\497')
    , ('\500','\500')
    , ('\502','\504')
    , ('\506','\506')
    , ('\508','\508')
    , ('\510','\510')
    , ('\512','\512')
    , ('\514','\514')
    , ('\516','\516')
    , ('\518','\518')
    , ('\520','\520')
    , ('\522','\522')
    , ('\524','\524')
    , ('\526','\526')
    , ('\528','\528')
    , ('\530','\530')
    , ('\532','\532')
    , ('\534','\534')
    , ('\536','\536')
    , ('\538','\538')
    , ('\540','\540')
    , ('\542','\542')
    , ('\544','\544')
    , ('\546','\546')
    , ('\548','\548')
    , ('\550','\550')
    , ('\552','\552')
    , ('\554','\554')
    , ('\556','\556')
    , ('\558','\558')
    , ('\560','\560')
    , ('\562','\562')
    , ('\570','\571')
    , ('\573','\574')
    , ('\577','\577')
    , ('\579','\582')
    , ('\584','\584')
    , ('\586','\586')
    , ('\588','\588')
    , ('\590','\590')
    , ('\880','\880')
    , ('\882','\882')
    , ('\886','\886')
    , ('\902','\902')
    , ('\904','\906')
    , ('\908','\908')
    , ('\910','\911')
    , ('\913','\929')
    , ('\931','\939')
    , ('\975','\975')
    , ('\978','\980')
    , ('\984','\984')
    , ('\986','\986')
    , ('\988','\988')
    , ('\990','\990')
    , ('\992','\992')
    , ('\994','\994')
    , ('\996','\996')
    , ('\998','\998')
    , ('\1000','\1000')
    , ('\1002','\1002')
    , ('\1004','\1004')
    , ('\1006','\1006')
    , ('\1012','\1012')
    , ('\1015','\1015')
    , ('\1017','\1018')
    , ('\1021','\1071')
    , ('\1120','\1120')
    , ('\1122','\1122')
    , ('\1124','\1124')
    , ('\1126','\1126')
    , ('\1128','\1128')
    , ('\1130','\1130')
    , ('\1132','\1132')
    , ('\1134','\1134')
    , ('\1136','\1136')
    , ('\1138','\1138')
    , ('\1140','\1140')
    , ('\1142','\1142')
    , ('\1144','\1144')
    , ('\1146','\1146')
    , ('\1148','\1148')
    , ('\1150','\1150')
    , ('\1152','\1152')
    , ('\1162','\1162')
    , ('\1164','\1164')
    , ('\1166','\1166')
    , ('\1168','\1168')
    , ('\1170','\1170')
    , ('\1172','\1172')
    , ('\1174','\1174')
    , ('\1176','\1176')
    , ('\1178','\1178')
    , ('\1180','\1180')
    , ('\1182','\1182')
    , ('\1184','\1184')
    , ('\1186','\1186')
    , ('\1188','\1188')
    , ('\1190','\1190')
    , ('\1192','\1192')
    , ('\1194','\1194')
    , ('\1196','\1196')
    , ('\1198','\1198')
    , ('\1200','\1200')
    , ('\1202','\1202')
    , ('\1204','\1204')
    , ('\1206','\1206')
    , ('\1208','\1208')
    , ('\1210','\1210')
    , ('\1212','\1212')
    , ('\1214','\1214')
    , ('\1216','\1217')
    , ('\1219','\1219')
    , ('\1221','\1221')
    , ('\1223','\1223')
    , ('\1225','\1225')
    , ('\1227','\1227')
    , ('\1229','\1229')
    , ('\1232','\1232')
    , ('\1234','\1234')
    , ('\1236','\1236')
    , ('\1238','\1238')
    , ('\1240','\1240')
    , ('\1242','\1242')
    , ('\1244','\1244')
    , ('\1246','\1246')
    , ('\1248','\1248')
    , ('\1250','\1250')
    , ('\1252','\1252')
    , ('\1254','\1254')
    , ('\1256','\1256')
    , ('\1258','\1258')
    , ('\1260','\1260')
    , ('\1262','\1262')
    , ('\1264','\1264')
    , ('\1266','\1266')
    , ('\1268','\1268')
    , ('\1270','\1270')
    , ('\1272','\1272')
    , ('\1274','\1274')
    , ('\1276','\1276')
    , ('\1278','\1278')
    , ('\1280','\1280')
    , ('\1282','\1282')
    , ('\1284','\1284')
    , ('\1286','\1286')
    , ('\1288','\1288')
    , ('\1290','\1290')
    , ('\1292','\1292')
    , ('\1294','\1294')
    , ('\1296','\1296')
    , ('\1298','\1298')
    , ('\1300','\1300')
    , ('\1302','\1302')
    , ('\1304','\1304')
    , ('\1306','\1306')
    , ('\1308','\1308')
    , ('\1310','\1310')
    , ('\1312','\1312')
    , ('\1314','\1314')
    , ('\1316','\1316')
    , ('\1329','\1366')
    , ('\4256','\4293')
    , ('\7680','\7680')
    , ('\7682','\7682')
    , ('\7684','\7684')
    , ('\7686','\7686')
    , ('\7688','\7688')
    , ('\7690','\7690')
    , ('\7692','\7692')
    , ('\7694','\7694')
    , ('\7696','\7696')
    , ('\7698','\7698')
    , ('\7700','\7700')
    , ('\7702','\7702')
    , ('\7704','\7704')
    , ('\7706','\7706')
    , ('\7708','\7708')
    , ('\7710','\7710')
    , ('\7712','\7712')
    , ('\7714','\7714')
    , ('\7716','\7716')
    , ('\7718','\7718')
    , ('\7720','\7720')
    , ('\7722','\7722')
    , ('\7724','\7724')
    , ('\7726','\7726')
    , ('\7728','\7728')
    , ('\7730','\7730')
    , ('\7732','\7732')
    , ('\7734','\7734')
    , ('\7736','\7736')
    , ('\7738','\7738')
    , ('\7740','\7740')
    , ('\7742','\7742')
    , ('\7744','\7744')
    , ('\7746','\7746')
    , ('\7748','\7748')
    , ('\7750','\7750')
    , ('\7752','\7752')
    , ('\7754','\7754')
    , ('\7756','\7756')
    , ('\7758','\7758')
    , ('\7760','\7760')
    , ('\7762','\7762')
    , ('\7764','\7764')
    , ('\7766','\7766')
    , ('\7768','\7768')
    , ('\7770','\7770')
    , ('\7772','\7772')
    , ('\7774','\7774')
    , ('\7776','\7776')
    , ('\7778','\7778')
    , ('\7780','\7780')
    , ('\7782','\7782')
    , ('\7784','\7784')
    , ('\7786','\7786')
    , ('\7788','\7788')
    , ('\7790','\7790')
    , ('\7792','\7792')
    , ('\7794','\7794')
    , ('\7796','\7796')
    , ('\7798','\7798')
    , ('\7800','\7800')
    , ('\7802','\7802')
    , ('\7804','\7804')
    , ('\7806','\7806')
    , ('\7808','\7808')
    , ('\7810','\7810')
    , ('\7812','\7812')
    , ('\7814','\7814')
    , ('\7816','\7816')
    , ('\7818','\7818')
    , ('\7820','\7820')
    , ('\7822','\7822')
    , ('\7824','\7824')
    , ('\7826','\7826')
    , ('\7828','\7828')
    , ('\7838','\7838')
    , ('\7840','\7840')
    , ('\7842','\7842')
    , ('\7844','\7844')
    , ('\7846','\7846')
    , ('\7848','\7848')
    , ('\7850','\7850')
    , ('\7852','\7852')
    , ('\7854','\7854')
    , ('\7856','\7856')
    , ('\7858','\7858')
    , ('\7860','\7860')
    , ('\7862','\7862')
    , ('\7864','\7864')
    , ('\7866','\7866')
    , ('\7868','\7868')
    , ('\7870','\7870')
    , ('\7872','\7872')
    , ('\7874','\7874')
    , ('\7876','\7876')
    , ('\7878','\7878')
    , ('\7880','\7880')
    , ('\7882','\7882')
    , ('\7884','\7884')
    , ('\7886','\7886')
    , ('\7888','\7888')
    , ('\7890','\7890')
    , ('\7892','\7892')
    , ('\7894','\7894')
    , ('\7896','\7896')
    , ('\7898','\7898')
    , ('\7900','\7900')
    , ('\7902','\7902')
    , ('\7904','\7904')
    , ('\7906','\7906')
    , ('\7908','\7908')
    , ('\7910','\7910')
    , ('\7912','\7912')
    , ('\7914','\7914')
    , ('\7916','\7916')
    , ('\7918','\7918')
    , ('\7920','\7920')
    , ('\7922','\7922')
    , ('\7924','\7924')
    , ('\7926','\7926')
    , ('\7928','\7928')
    , ('\7930','\7930')
    , ('\7932','\7932')
    , ('\7934','\7934')
    , ('\7944','\7951')
    , ('\7960','\7965')
    , ('\7976','\7983')
    , ('\7992','\7999')
    , ('\8008','\8013')
    , ('\8025','\8025')
    , ('\8027','\8027')
    , ('\8029','\8029')
    , ('\8031','\8031')
    , ('\8040','\8047')
    , ('\8120','\8123')
    , ('\8136','\8139')
    , ('\8152','\8155')
    , ('\8168','\8172')
    , ('\8184','\8187')
    , ('\8450','\8450')
    , ('\8455','\8455')
    , ('\8459','\8461')
    , ('\8464','\8466')
    , ('\8469','\8469')
    , ('\8473','\8477')
    , ('\8484','\8484')
    , ('\8486','\8486')
    , ('\8488','\8488')
    , ('\8490','\8493')
    , ('\8496','\8499')
    , ('\8510','\8511')
    , ('\8517','\8517')
    , ('\8579','\8579')
    , ('\11264','\11310')
    , ('\11360','\11360')
    , ('\11362','\11364')
    , ('\11367','\11367')
    , ('\11369','\11369')
    , ('\11371','\11371')
    , ('\11373','\11376')
    , ('\11378','\11378')
    , ('\11381','\11381')
    , ('\11390','\11392')
    , ('\11394','\11394')
    , ('\11396','\11396')
    , ('\11398','\11398')
    , ('\11400','\11400')
    , ('\11402','\11402')
    , ('\11404','\11404')
    , ('\11406','\11406')
    , ('\11408','\11408')
    , ('\11410','\11410')
    , ('\11412','\11412')
    , ('\11414','\11414')
    , ('\11416','\11416')
    , ('\11418','\11418')
    , ('\11420','\11420')
    , ('\11422','\11422')
    , ('\11424','\11424')
    , ('\11426','\11426')
    , ('\11428','\11428')
    , ('\11430','\11430')
    , ('\11432','\11432')
    , ('\11434','\11434')
    , ('\11436','\11436')
    , ('\11438','\11438')
    , ('\11440','\11440')
    , ('\11442','\11442')
    , ('\11444','\11444')
    , ('\11446','\11446')
    , ('\11448','\11448')
    , ('\11450','\11450')
    , ('\11452','\11452')
    , ('\11454','\11454')
    , ('\11456','\11456')
    , ('\11458','\11458')
    , ('\11460','\11460')
    , ('\11462','\11462')
    , ('\11464','\11464')
    , ('\11466','\11466')
    , ('\11468','\11468')
    , ('\11470','\11470')
    , ('\11472','\11472')
    , ('\11474','\11474')
    , ('\11476','\11476')
    , ('\11478','\11478')
    , ('\11480','\11480')
    , ('\11482','\11482')
    , ('\11484','\11484')
    , ('\11486','\11486')
    , ('\11488','\11488')
    , ('\11490','\11490')
    , ('\11499','\11499')
    , ('\11501','\11501')
    , ('\42560','\42560')
    , ('\42562','\42562')
    , ('\42564','\42564')
    , ('\42566','\42566')
    , ('\42568','\42568')
    , ('\42570','\42570')
    , ('\42572','\42572')
    , ('\42574','\42574')
    , ('\42576','\42576')
    , ('\42578','\42578')
    , ('\42580','\42580')
    , ('\42582','\42582')
    , ('\42584','\42584')
    , ('\42586','\42586')
    , ('\42588','\42588')
    , ('\42590','\42590')
    , ('\42594','\42594')
    , ('\42596','\42596')
    , ('\42598','\42598')
    , ('\42600','\42600')
    , ('\42602','\42602')
    , ('\42604','\42604')
    , ('\42624','\42624')
    , ('\42626','\42626')
    , ('\42628','\42628')
    , ('\42630','\42630')
    , ('\42632','\42632')
    , ('\42634','\42634')
    , ('\42636','\42636')
    , ('\42638','\42638')
    , ('\42640','\42640')
    , ('\42642','\42642')
    , ('\42644','\42644')
    , ('\42646','\42646')
    , ('\42786','\42786')
    , ('\42788','\42788')
    , ('\42790','\42790')
    , ('\42792','\42792')
    , ('\42794','\42794')
    , ('\42796','\42796')
    , ('\42798','\42798')
    , ('\42802','\42802')
    , ('\42804','\42804')
    , ('\42806','\42806')
    , ('\42808','\42808')
    , ('\42810','\42810')
    , ('\42812','\42812')
    , ('\42814','\42814')
    , ('\42816','\42816')
    , ('\42818','\42818')
    , ('\42820','\42820')
    , ('\42822','\42822')
    , ('\42824','\42824')
    , ('\42826','\42826')
    , ('\42828','\42828')
    , ('\42830','\42830')
    , ('\42832','\42832')
    , ('\42834','\42834')
    , ('\42836','\42836')
    , ('\42838','\42838')
    , ('\42840','\42840')
    , ('\42842','\42842')
    , ('\42844','\42844')
    , ('\42846','\42846')
    , ('\42848','\42848')
    , ('\42850','\42850')
    , ('\42852','\42852')
    , ('\42854','\42854')
    , ('\42856','\42856')
    , ('\42858','\42858')
    , ('\42860','\42860')
    , ('\42862','\42862')
    , ('\42873','\42873')
    , ('\42875','\42875')
    , ('\42877','\42878')
    , ('\42880','\42880')
    , ('\42882','\42882')
    , ('\42884','\42884')
    , ('\42886','\42886')
    , ('\42891','\42891')
    , ('\65313','\65338')
    , ('\66560','\66599')
    , ('\119808','\119833')
    , ('\119860','\119885')
    , ('\119912','\119937')
    , ('\119964','\119964')
    , ('\119966','\119967')
    , ('\119970','\119970')
    , ('\119973','\119974')
    , ('\119977','\119980')
    , ('\119982','\119989')
    , ('\120016','\120041')
    , ('\120068','\120069')
    , ('\120071','\120074')
    , ('\120077','\120084')
    , ('\120086','\120092')
    , ('\120120','\120121')
    , ('\120123','\120126')
    , ('\120128','\120132')
    , ('\120134','\120134')
    , ('\120138','\120144')
    , ('\120172','\120197')
    , ('\120224','\120249')
    , ('\120276','\120301')
    , ('\120328','\120353')
    , ('\120380','\120405')
    , ('\120432','\120457')
    , ('\120488','\120512')
    , ('\120546','\120570')
    , ('\120604','\120628')
    , ('\120662','\120686')
    , ('\120720','\120744')
    , ('\120778','\120778')
    ]

-- ------------------------------------------------------------

isUnicodeM :: Char -> Bool
isUnicodeM c
  = elemCS c charPropUnicodeM

charPropUnicodeM :: CharSet
charPropUnicodeM
  = [ ('\768','\879')
    , ('\1155','\1161')
    , ('\1425','\1469')
    , ('\1471','\1471')
    , ('\1473','\1474')
    , ('\1476','\1477')
    , ('\1479','\1479')
    , ('\1552','\1562')
    , ('\1611','\1630')
    , ('\1648','\1648')
    , ('\1750','\1756')
    , ('\1758','\1764')
    , ('\1767','\1768')
    , ('\1770','\1773')
    , ('\1809','\1809')
    , ('\1840','\1866')
    , ('\1958','\1968')
    , ('\2027','\2035')
    , ('\2070','\2073')
    , ('\2075','\2083')
    , ('\2085','\2087')
    , ('\2089','\2093')
    , ('\2304','\2307')
    , ('\2364','\2364')
    , ('\2366','\2382')
    , ('\2385','\2389')
    , ('\2402','\2403')
    , ('\2433','\2435')
    , ('\2492','\2492')
    , ('\2494','\2500')
    , ('\2503','\2504')
    , ('\2507','\2509')
    , ('\2519','\2519')
    , ('\2530','\2531')
    , ('\2561','\2563')
    , ('\2620','\2620')
    , ('\2622','\2626')
    , ('\2631','\2632')
    , ('\2635','\2637')
    , ('\2641','\2641')
    , ('\2672','\2673')
    , ('\2677','\2677')
    , ('\2689','\2691')
    , ('\2748','\2748')
    , ('\2750','\2757')
    , ('\2759','\2761')
    , ('\2763','\2765')
    , ('\2786','\2787')
    , ('\2817','\2819')
    , ('\2876','\2876')
    , ('\2878','\2884')
    , ('\2887','\2888')
    , ('\2891','\2893')
    , ('\2902','\2903')
    , ('\2914','\2915')
    , ('\2946','\2946')
    , ('\3006','\3010')
    , ('\3014','\3016')
    , ('\3018','\3021')
    , ('\3031','\3031')
    , ('\3073','\3075')
    , ('\3134','\3140')
    , ('\3142','\3144')
    , ('\3146','\3149')
    , ('\3157','\3158')
    , ('\3170','\3171')
    , ('\3202','\3203')
    , ('\3260','\3260')
    , ('\3262','\3268')
    , ('\3270','\3272')
    , ('\3274','\3277')
    , ('\3285','\3286')
    , ('\3298','\3299')
    , ('\3330','\3331')
    , ('\3390','\3396')
    , ('\3398','\3400')
    , ('\3402','\3405')
    , ('\3415','\3415')
    , ('\3426','\3427')
    , ('\3458','\3459')
    , ('\3530','\3530')
    , ('\3535','\3540')
    , ('\3542','\3542')
    , ('\3544','\3551')
    , ('\3570','\3571')
    , ('\3633','\3633')
    , ('\3636','\3642')
    , ('\3655','\3662')
    , ('\3761','\3761')
    , ('\3764','\3769')
    , ('\3771','\3772')
    , ('\3784','\3789')
    , ('\3864','\3865')
    , ('\3893','\3893')
    , ('\3895','\3895')
    , ('\3897','\3897')
    , ('\3902','\3903')
    , ('\3953','\3972')
    , ('\3974','\3975')
    , ('\3984','\3991')
    , ('\3993','\4028')
    , ('\4038','\4038')
    , ('\4139','\4158')
    , ('\4182','\4185')
    , ('\4190','\4192')
    , ('\4194','\4196')
    , ('\4199','\4205')
    , ('\4209','\4212')
    , ('\4226','\4237')
    , ('\4239','\4239')
    , ('\4250','\4253')
    , ('\4959','\4959')
    , ('\5906','\5908')
    , ('\5938','\5940')
    , ('\5970','\5971')
    , ('\6002','\6003')
    , ('\6070','\6099')
    , ('\6109','\6109')
    , ('\6155','\6157')
    , ('\6313','\6313')
    , ('\6432','\6443')
    , ('\6448','\6459')
    , ('\6576','\6592')
    , ('\6600','\6601')
    , ('\6679','\6683')
    , ('\6741','\6750')
    , ('\6752','\6780')
    , ('\6783','\6783')
    , ('\6912','\6916')
    , ('\6964','\6980')
    , ('\7019','\7027')
    , ('\7040','\7042')
    , ('\7073','\7082')
    , ('\7204','\7223')
    , ('\7376','\7378')
    , ('\7380','\7400')
    , ('\7405','\7405')
    , ('\7410','\7410')
    , ('\7616','\7654')
    , ('\7677','\7679')
    , ('\8400','\8432')
    , ('\11503','\11505')
    , ('\11744','\11775')
    , ('\12330','\12335')
    , ('\12441','\12442')
    , ('\42607','\42610')
    , ('\42620','\42621')
    , ('\42736','\42737')
    , ('\43010','\43010')
    , ('\43014','\43014')
    , ('\43019','\43019')
    , ('\43043','\43047')
    , ('\43136','\43137')
    , ('\43188','\43204')
    , ('\43232','\43249')
    , ('\43302','\43309')
    , ('\43335','\43347')
    , ('\43392','\43395')
    , ('\43443','\43456')
    , ('\43561','\43574')
    , ('\43587','\43587')
    , ('\43596','\43597')
    , ('\43643','\43643')
    , ('\43696','\43696')
    , ('\43698','\43700')
    , ('\43703','\43704')
    , ('\43710','\43711')
    , ('\43713','\43713')
    , ('\44003','\44010')
    , ('\44012','\44013')
    , ('\64286','\64286')
    , ('\65024','\65039')
    , ('\65056','\65062')
    , ('\66045','\66045')
    , ('\68097','\68099')
    , ('\68101','\68102')
    , ('\68108','\68111')
    , ('\68152','\68154')
    , ('\68159','\68159')
    , ('\69760','\69762')
    , ('\69808','\69818')
    , ('\119141','\119145')
    , ('\119149','\119154')
    , ('\119163','\119170')
    , ('\119173','\119179')
    , ('\119210','\119213')
    , ('\119362','\119364')
    , ('\917760','\917999')
    ]

-- ------------------------------------------------------------

isUnicodeMc :: Char -> Bool
isUnicodeMc c
  = elemCS c charPropUnicodeMc

charPropUnicodeMc :: CharSet
charPropUnicodeMc
  = [ ('\2307','\2307')
    , ('\2366','\2368')
    , ('\2377','\2380')
    , ('\2382','\2382')
    , ('\2434','\2435')
    , ('\2494','\2496')
    , ('\2503','\2504')
    , ('\2507','\2508')
    , ('\2519','\2519')
    , ('\2563','\2563')
    , ('\2622','\2624')
    , ('\2691','\2691')
    , ('\2750','\2752')
    , ('\2761','\2761')
    , ('\2763','\2764')
    , ('\2818','\2819')
    , ('\2878','\2878')
    , ('\2880','\2880')
    , ('\2887','\2888')
    , ('\2891','\2892')
    , ('\2903','\2903')
    , ('\3006','\3007')
    , ('\3009','\3010')
    , ('\3014','\3016')
    , ('\3018','\3020')
    , ('\3031','\3031')
    , ('\3073','\3075')
    , ('\3137','\3140')
    , ('\3202','\3203')
    , ('\3262','\3262')
    , ('\3264','\3268')
    , ('\3271','\3272')
    , ('\3274','\3275')
    , ('\3285','\3286')
    , ('\3330','\3331')
    , ('\3390','\3392')
    , ('\3398','\3400')
    , ('\3402','\3404')
    , ('\3415','\3415')
    , ('\3458','\3459')
    , ('\3535','\3537')
    , ('\3544','\3551')
    , ('\3570','\3571')
    , ('\3902','\3903')
    , ('\3967','\3967')
    , ('\4139','\4140')
    , ('\4145','\4145')
    , ('\4152','\4152')
    , ('\4155','\4156')
    , ('\4182','\4183')
    , ('\4194','\4196')
    , ('\4199','\4205')
    , ('\4227','\4228')
    , ('\4231','\4236')
    , ('\4239','\4239')
    , ('\4250','\4252')
    , ('\6070','\6070')
    , ('\6078','\6085')
    , ('\6087','\6088')
    , ('\6435','\6438')
    , ('\6441','\6443')
    , ('\6448','\6449')
    , ('\6451','\6456')
    , ('\6576','\6592')
    , ('\6600','\6601')
    , ('\6681','\6683')
    , ('\6741','\6741')
    , ('\6743','\6743')
    , ('\6753','\6753')
    , ('\6755','\6756')
    , ('\6765','\6770')
    , ('\6916','\6916')
    , ('\6965','\6965')
    , ('\6971','\6971')
    , ('\6973','\6977')
    , ('\6979','\6980')
    , ('\7042','\7042')
    , ('\7073','\7073')
    , ('\7078','\7079')
    , ('\7082','\7082')
    , ('\7204','\7211')
    , ('\7220','\7221')
    , ('\7393','\7393')
    , ('\7410','\7410')
    , ('\43043','\43044')
    , ('\43047','\43047')
    , ('\43136','\43137')
    , ('\43188','\43203')
    , ('\43346','\43347')
    , ('\43395','\43395')
    , ('\43444','\43445')
    , ('\43450','\43451')
    , ('\43453','\43456')
    , ('\43567','\43568')
    , ('\43571','\43572')
    , ('\43597','\43597')
    , ('\43643','\43643')
    , ('\44003','\44004')
    , ('\44006','\44007')
    , ('\44009','\44010')
    , ('\44012','\44012')
    , ('\69762','\69762')
    , ('\69808','\69810')
    , ('\69815','\69816')
    , ('\119141','\119142')
    , ('\119149','\119154')
    ]

-- ------------------------------------------------------------

isUnicodeMe :: Char -> Bool
isUnicodeMe c
  = elemCS c charPropUnicodeMe

charPropUnicodeMe :: CharSet
charPropUnicodeMe
  = [ ('\1160','\1161')
    , ('\1758','\1758')
    , ('\8413','\8416')
    , ('\8418','\8420')
    , ('\42608','\42610')
    ]

-- ------------------------------------------------------------

isUnicodeMn :: Char -> Bool
isUnicodeMn c
  = elemCS c charPropUnicodeMn

charPropUnicodeMn :: CharSet
charPropUnicodeMn
  = [ ('\768','\879')
    , ('\1155','\1159')
    , ('\1425','\1469')
    , ('\1471','\1471')
    , ('\1473','\1474')
    , ('\1476','\1477')
    , ('\1479','\1479')
    , ('\1552','\1562')
    , ('\1611','\1630')
    , ('\1648','\1648')
    , ('\1750','\1756')
    , ('\1759','\1764')
    , ('\1767','\1768')
    , ('\1770','\1773')
    , ('\1809','\1809')
    , ('\1840','\1866')
    , ('\1958','\1968')
    , ('\2027','\2035')
    , ('\2070','\2073')
    , ('\2075','\2083')
    , ('\2085','\2087')
    , ('\2089','\2093')
    , ('\2304','\2306')
    , ('\2364','\2364')
    , ('\2369','\2376')
    , ('\2381','\2381')
    , ('\2385','\2389')
    , ('\2402','\2403')
    , ('\2433','\2433')
    , ('\2492','\2492')
    , ('\2497','\2500')
    , ('\2509','\2509')
    , ('\2530','\2531')
    , ('\2561','\2562')
    , ('\2620','\2620')
    , ('\2625','\2626')
    , ('\2631','\2632')
    , ('\2635','\2637')
    , ('\2641','\2641')
    , ('\2672','\2673')
    , ('\2677','\2677')
    , ('\2689','\2690')
    , ('\2748','\2748')
    , ('\2753','\2757')
    , ('\2759','\2760')
    , ('\2765','\2765')
    , ('\2786','\2787')
    , ('\2817','\2817')
    , ('\2876','\2876')
    , ('\2879','\2879')
    , ('\2881','\2884')
    , ('\2893','\2893')
    , ('\2902','\2902')
    , ('\2914','\2915')
    , ('\2946','\2946')
    , ('\3008','\3008')
    , ('\3021','\3021')
    , ('\3134','\3136')
    , ('\3142','\3144')
    , ('\3146','\3149')
    , ('\3157','\3158')
    , ('\3170','\3171')
    , ('\3260','\3260')
    , ('\3263','\3263')
    , ('\3270','\3270')
    , ('\3276','\3277')
    , ('\3298','\3299')
    , ('\3393','\3396')
    , ('\3405','\3405')
    , ('\3426','\3427')
    , ('\3530','\3530')
    , ('\3538','\3540')
    , ('\3542','\3542')
    , ('\3633','\3633')
    , ('\3636','\3642')
    , ('\3655','\3662')
    , ('\3761','\3761')
    , ('\3764','\3769')
    , ('\3771','\3772')
    , ('\3784','\3789')
    , ('\3864','\3865')
    , ('\3893','\3893')
    , ('\3895','\3895')
    , ('\3897','\3897')
    , ('\3953','\3966')
    , ('\3968','\3972')
    , ('\3974','\3975')
    , ('\3984','\3991')
    , ('\3993','\4028')
    , ('\4038','\4038')
    , ('\4141','\4144')
    , ('\4146','\4151')
    , ('\4153','\4154')
    , ('\4157','\4158')
    , ('\4184','\4185')
    , ('\4190','\4192')
    , ('\4209','\4212')
    , ('\4226','\4226')
    , ('\4229','\4230')
    , ('\4237','\4237')
    , ('\4253','\4253')
    , ('\4959','\4959')
    , ('\5906','\5908')
    , ('\5938','\5940')
    , ('\5970','\5971')
    , ('\6002','\6003')
    , ('\6071','\6077')
    , ('\6086','\6086')
    , ('\6089','\6099')
    , ('\6109','\6109')
    , ('\6155','\6157')
    , ('\6313','\6313')
    , ('\6432','\6434')
    , ('\6439','\6440')
    , ('\6450','\6450')
    , ('\6457','\6459')
    , ('\6679','\6680')
    , ('\6742','\6742')
    , ('\6744','\6750')
    , ('\6752','\6752')
    , ('\6754','\6754')
    , ('\6757','\6764')
    , ('\6771','\6780')
    , ('\6783','\6783')
    , ('\6912','\6915')
    , ('\6964','\6964')
    , ('\6966','\6970')
    , ('\6972','\6972')
    , ('\6978','\6978')
    , ('\7019','\7027')
    , ('\7040','\7041')
    , ('\7074','\7077')
    , ('\7080','\7081')
    , ('\7212','\7219')
    , ('\7222','\7223')
    , ('\7376','\7378')
    , ('\7380','\7392')
    , ('\7394','\7400')
    , ('\7405','\7405')
    , ('\7616','\7654')
    , ('\7677','\7679')
    , ('\8400','\8412')
    , ('\8417','\8417')
    , ('\8421','\8432')
    , ('\11503','\11505')
    , ('\11744','\11775')
    , ('\12330','\12335')
    , ('\12441','\12442')
    , ('\42607','\42607')
    , ('\42620','\42621')
    , ('\42736','\42737')
    , ('\43010','\43010')
    , ('\43014','\43014')
    , ('\43019','\43019')
    , ('\43045','\43046')
    , ('\43204','\43204')
    , ('\43232','\43249')
    , ('\43302','\43309')
    , ('\43335','\43345')
    , ('\43392','\43394')
    , ('\43443','\43443')
    , ('\43446','\43449')
    , ('\43452','\43452')
    , ('\43561','\43566')
    , ('\43569','\43570')
    , ('\43573','\43574')
    , ('\43587','\43587')
    , ('\43596','\43596')
    , ('\43696','\43696')
    , ('\43698','\43700')
    , ('\43703','\43704')
    , ('\43710','\43711')
    , ('\43713','\43713')
    , ('\44005','\44005')
    , ('\44008','\44008')
    , ('\44013','\44013')
    , ('\64286','\64286')
    , ('\65024','\65039')
    , ('\65056','\65062')
    , ('\66045','\66045')
    , ('\68097','\68099')
    , ('\68101','\68102')
    , ('\68108','\68111')
    , ('\68152','\68154')
    , ('\68159','\68159')
    , ('\69760','\69761')
    , ('\69811','\69814')
    , ('\69817','\69818')
    , ('\119143','\119145')
    , ('\119163','\119170')
    , ('\119173','\119179')
    , ('\119210','\119213')
    , ('\119362','\119364')
    , ('\917760','\917999')
    ]

-- ------------------------------------------------------------

isUnicodeN :: Char -> Bool
isUnicodeN c
  = elemCS c charPropUnicodeN

charPropUnicodeN :: CharSet
charPropUnicodeN
  = [ ('0','9')
    , ('\178','\179')
    , ('\185','\185')
    , ('\188','\190')
    , ('\1632','\1641')
    , ('\1776','\1785')
    , ('\1984','\1993')
    , ('\2406','\2415')
    , ('\2534','\2543')
    , ('\2548','\2553')
    , ('\2662','\2671')
    , ('\2790','\2799')
    , ('\2918','\2927')
    , ('\3046','\3058')
    , ('\3174','\3183')
    , ('\3192','\3198')
    , ('\3302','\3311')
    , ('\3430','\3445')
    , ('\3664','\3673')
    , ('\3792','\3801')
    , ('\3872','\3891')
    , ('\4160','\4169')
    , ('\4240','\4249')
    , ('\4969','\4988')
    , ('\5870','\5872')
    , ('\6112','\6121')
    , ('\6128','\6137')
    , ('\6160','\6169')
    , ('\6470','\6479')
    , ('\6608','\6618')
    , ('\6784','\6793')
    , ('\6800','\6809')
    , ('\6992','\7001')
    , ('\7088','\7097')
    , ('\7232','\7241')
    , ('\7248','\7257')
    , ('\8304','\8304')
    , ('\8308','\8313')
    , ('\8320','\8329')
    , ('\8528','\8578')
    , ('\8581','\8585')
    , ('\9312','\9371')
    , ('\9450','\9471')
    , ('\10102','\10131')
    , ('\11517','\11517')
    , ('\12295','\12295')
    , ('\12321','\12329')
    , ('\12344','\12346')
    , ('\12690','\12693')
    , ('\12832','\12841')
    , ('\12881','\12895')
    , ('\12928','\12937')
    , ('\12977','\12991')
    , ('\42528','\42537')
    , ('\42726','\42735')
    , ('\43056','\43061')
    , ('\43216','\43225')
    , ('\43264','\43273')
    , ('\43472','\43481')
    , ('\43600','\43609')
    , ('\44016','\44025')
    , ('\65296','\65305')
    , ('\65799','\65843')
    , ('\65856','\65912')
    , ('\65930','\65930')
    , ('\66336','\66339')
    , ('\66369','\66369')
    , ('\66378','\66378')
    , ('\66513','\66517')
    , ('\66720','\66729')
    , ('\67672','\67679')
    , ('\67862','\67867')
    , ('\68160','\68167')
    , ('\68221','\68222')
    , ('\68440','\68447')
    , ('\68472','\68479')
    , ('\69216','\69246')
    , ('\74752','\74850')
    , ('\119648','\119665')
    , ('\120782','\120831')
    , ('\127232','\127242')
    ]

-- ------------------------------------------------------------

isUnicodeNd :: Char -> Bool
isUnicodeNd c
  = elemCS c charPropUnicodeNd

charPropUnicodeNd :: CharSet
charPropUnicodeNd
  = [ ('0','9')
    , ('\1632','\1641')
    , ('\1776','\1785')
    , ('\1984','\1993')
    , ('\2406','\2415')
    , ('\2534','\2543')
    , ('\2662','\2671')
    , ('\2790','\2799')
    , ('\2918','\2927')
    , ('\3046','\3055')
    , ('\3174','\3183')
    , ('\3302','\3311')
    , ('\3430','\3439')
    , ('\3664','\3673')
    , ('\3792','\3801')
    , ('\3872','\3881')
    , ('\4160','\4169')
    , ('\4240','\4249')
    , ('\6112','\6121')
    , ('\6160','\6169')
    , ('\6470','\6479')
    , ('\6608','\6618')
    , ('\6784','\6793')
    , ('\6800','\6809')
    , ('\6992','\7001')
    , ('\7088','\7097')
    , ('\7232','\7241')
    , ('\7248','\7257')
    , ('\42528','\42537')
    , ('\43216','\43225')
    , ('\43264','\43273')
    , ('\43472','\43481')
    , ('\43600','\43609')
    , ('\44016','\44025')
    , ('\65296','\65305')
    , ('\66720','\66729')
    , ('\120782','\120831')
    ]

-- ------------------------------------------------------------

isUnicodeNl :: Char -> Bool
isUnicodeNl c
  = elemCS c charPropUnicodeNl

charPropUnicodeNl :: CharSet
charPropUnicodeNl
  = [ ('\5870','\5872')
    , ('\8544','\8578')
    , ('\8581','\8584')
    , ('\12295','\12295')
    , ('\12321','\12329')
    , ('\12344','\12346')
    , ('\42726','\42735')
    , ('\65856','\65908')
    , ('\66369','\66369')
    , ('\66378','\66378')
    , ('\66513','\66517')
    , ('\74752','\74850')
    ]

-- ------------------------------------------------------------

isUnicodeNo :: Char -> Bool
isUnicodeNo c
  = elemCS c charPropUnicodeNo

charPropUnicodeNo :: CharSet
charPropUnicodeNo
  = [ ('\178','\179')
    , ('\185','\185')
    , ('\188','\190')
    , ('\2548','\2553')
    , ('\3056','\3058')
    , ('\3192','\3198')
    , ('\3440','\3445')
    , ('\3882','\3891')
    , ('\4969','\4988')
    , ('\6128','\6137')
    , ('\8304','\8304')
    , ('\8308','\8313')
    , ('\8320','\8329')
    , ('\8528','\8543')
    , ('\8585','\8585')
    , ('\9312','\9371')
    , ('\9450','\9471')
    , ('\10102','\10131')
    , ('\11517','\11517')
    , ('\12690','\12693')
    , ('\12832','\12841')
    , ('\12881','\12895')
    , ('\12928','\12937')
    , ('\12977','\12991')
    , ('\43056','\43061')
    , ('\65799','\65843')
    , ('\65909','\65912')
    , ('\65930','\65930')
    , ('\66336','\66339')
    , ('\67672','\67679')
    , ('\67862','\67867')
    , ('\68160','\68167')
    , ('\68221','\68222')
    , ('\68440','\68447')
    , ('\68472','\68479')
    , ('\69216','\69246')
    , ('\119648','\119665')
    , ('\127232','\127242')
    ]

-- ------------------------------------------------------------

isUnicodeP :: Char -> Bool
isUnicodeP c
  = elemCS c charPropUnicodeP

charPropUnicodeP :: CharSet
charPropUnicodeP
  = [ ('!','#')
    , ('%','*')
    , (',','/')
    , (':',';')
    , ('?','@')
    , ('[',']')
    , ('_','_')
    , ('{','{')
    , ('}','}')
    , ('\161','\161')
    , ('\171','\171')
    , ('\183','\183')
    , ('\187','\187')
    , ('\191','\191')
    , ('\894','\894')
    , ('\903','\903')
    , ('\1370','\1375')
    , ('\1417','\1418')
    , ('\1470','\1470')
    , ('\1472','\1472')
    , ('\1475','\1475')
    , ('\1478','\1478')
    , ('\1523','\1524')
    , ('\1545','\1546')
    , ('\1548','\1549')
    , ('\1563','\1563')
    , ('\1566','\1567')
    , ('\1642','\1645')
    , ('\1748','\1748')
    , ('\1792','\1805')
    , ('\2039','\2041')
    , ('\2096','\2110')
    , ('\2404','\2405')
    , ('\2416','\2416')
    , ('\3572','\3572')
    , ('\3663','\3663')
    , ('\3674','\3675')
    , ('\3844','\3858')
    , ('\3898','\3901')
    , ('\3973','\3973')
    , ('\4048','\4052')
    , ('\4170','\4175')
    , ('\4347','\4347')
    , ('\4961','\4968')
    , ('\5120','\5120')
    , ('\5741','\5742')
    , ('\5787','\5788')
    , ('\5867','\5869')
    , ('\5941','\5942')
    , ('\6100','\6102')
    , ('\6104','\6106')
    , ('\6144','\6154')
    , ('\6468','\6469')
    , ('\6622','\6623')
    , ('\6686','\6687')
    , ('\6816','\6822')
    , ('\6824','\6829')
    , ('\7002','\7008')
    , ('\7227','\7231')
    , ('\7294','\7295')
    , ('\7379','\7379')
    , ('\8208','\8231')
    , ('\8240','\8259')
    , ('\8261','\8273')
    , ('\8275','\8286')
    , ('\8317','\8318')
    , ('\8333','\8334')
    , ('\9001','\9002')
    , ('\10088','\10101')
    , ('\10181','\10182')
    , ('\10214','\10223')
    , ('\10627','\10648')
    , ('\10712','\10715')
    , ('\10748','\10749')
    , ('\11513','\11516')
    , ('\11518','\11519')
    , ('\11776','\11822')
    , ('\11824','\11825')
    , ('\12289','\12291')
    , ('\12296','\12305')
    , ('\12308','\12319')
    , ('\12336','\12336')
    , ('\12349','\12349')
    , ('\12448','\12448')
    , ('\12539','\12539')
    , ('\42238','\42239')
    , ('\42509','\42511')
    , ('\42611','\42611')
    , ('\42622','\42622')
    , ('\42738','\42743')
    , ('\43124','\43127')
    , ('\43214','\43215')
    , ('\43256','\43258')
    , ('\43310','\43311')
    , ('\43359','\43359')
    , ('\43457','\43469')
    , ('\43486','\43487')
    , ('\43612','\43615')
    , ('\43742','\43743')
    , ('\44011','\44011')
    , ('\64830','\64831')
    , ('\65040','\65049')
    , ('\65072','\65106')
    , ('\65108','\65121')
    , ('\65123','\65123')
    , ('\65128','\65128')
    , ('\65130','\65131')
    , ('\65281','\65283')
    , ('\65285','\65290')
    , ('\65292','\65295')
    , ('\65306','\65307')
    , ('\65311','\65312')
    , ('\65339','\65341')
    , ('\65343','\65343')
    , ('\65371','\65371')
    , ('\65373','\65373')
    , ('\65375','\65381')
    , ('\65792','\65793')
    , ('\66463','\66463')
    , ('\66512','\66512')
    , ('\67671','\67671')
    , ('\67871','\67871')
    , ('\67903','\67903')
    , ('\68176','\68184')
    , ('\68223','\68223')
    , ('\68409','\68415')
    , ('\69819','\69820')
    , ('\69822','\69825')
    , ('\74864','\74867')
    ]

-- ------------------------------------------------------------

isUnicodePc :: Char -> Bool
isUnicodePc c
  = elemCS c charPropUnicodePc

charPropUnicodePc :: CharSet
charPropUnicodePc
  = [ ('_','_')
    , ('\8255','\8256')
    , ('\8276','\8276')
    , ('\65075','\65076')
    , ('\65101','\65103')
    , ('\65343','\65343')
    ]

-- ------------------------------------------------------------

isUnicodePd :: Char -> Bool
isUnicodePd c
  = elemCS c charPropUnicodePd

charPropUnicodePd :: CharSet
charPropUnicodePd
  = [ ('-','-')
    , ('\1418','\1418')
    , ('\1470','\1470')
    , ('\5120','\5120')
    , ('\6150','\6150')
    , ('\8208','\8213')
    , ('\11799','\11799')
    , ('\11802','\11802')
    , ('\12316','\12316')
    , ('\12336','\12336')
    , ('\12448','\12448')
    , ('\65073','\65074')
    , ('\65112','\65112')
    , ('\65123','\65123')
    , ('\65293','\65293')
    ]

-- ------------------------------------------------------------

isUnicodePe :: Char -> Bool
isUnicodePe c
  = elemCS c charPropUnicodePe

charPropUnicodePe :: CharSet
charPropUnicodePe
  = [ (')',')')
    , (']',']')
    , ('}','}')
    , ('\3899','\3899')
    , ('\3901','\3901')
    , ('\5788','\5788')
    , ('\8262','\8262')
    , ('\8318','\8318')
    , ('\8334','\8334')
    , ('\9002','\9002')
    , ('\10089','\10089')
    , ('\10091','\10091')
    , ('\10093','\10093')
    , ('\10095','\10095')
    , ('\10097','\10097')
    , ('\10099','\10099')
    , ('\10101','\10101')
    , ('\10182','\10182')
    , ('\10215','\10215')
    , ('\10217','\10217')
    , ('\10219','\10219')
    , ('\10221','\10221')
    , ('\10223','\10223')
    , ('\10628','\10628')
    , ('\10630','\10630')
    , ('\10632','\10632')
    , ('\10634','\10634')
    , ('\10636','\10636')
    , ('\10638','\10638')
    , ('\10640','\10640')
    , ('\10642','\10642')
    , ('\10644','\10644')
    , ('\10646','\10646')
    , ('\10648','\10648')
    , ('\10713','\10713')
    , ('\10715','\10715')
    , ('\10749','\10749')
    , ('\11811','\11811')
    , ('\11813','\11813')
    , ('\11815','\11815')
    , ('\11817','\11817')
    , ('\12297','\12297')
    , ('\12299','\12299')
    , ('\12301','\12301')
    , ('\12303','\12303')
    , ('\12305','\12305')
    , ('\12309','\12309')
    , ('\12311','\12311')
    , ('\12313','\12313')
    , ('\12315','\12315')
    , ('\12318','\12319')
    , ('\64831','\64831')
    , ('\65048','\65048')
    , ('\65078','\65078')
    , ('\65080','\65080')
    , ('\65082','\65082')
    , ('\65084','\65084')
    , ('\65086','\65086')
    , ('\65088','\65088')
    , ('\65090','\65090')
    , ('\65092','\65092')
    , ('\65096','\65096')
    , ('\65114','\65114')
    , ('\65116','\65116')
    , ('\65118','\65118')
    , ('\65289','\65289')
    , ('\65341','\65341')
    , ('\65373','\65373')
    , ('\65376','\65376')
    , ('\65379','\65379')
    ]

-- ------------------------------------------------------------

isUnicodePf :: Char -> Bool
isUnicodePf c
  = elemCS c charPropUnicodePf

charPropUnicodePf :: CharSet
charPropUnicodePf
  = [ ('\187','\187')
    , ('\8217','\8217')
    , ('\8221','\8221')
    , ('\8250','\8250')
    , ('\11779','\11779')
    , ('\11781','\11781')
    , ('\11786','\11786')
    , ('\11789','\11789')
    , ('\11805','\11805')
    , ('\11809','\11809')
    ]

-- ------------------------------------------------------------

isUnicodePi :: Char -> Bool
isUnicodePi c
  = elemCS c charPropUnicodePi

charPropUnicodePi :: CharSet
charPropUnicodePi
  = [ ('\171','\171')
    , ('\8216','\8216')
    , ('\8219','\8220')
    , ('\8223','\8223')
    , ('\8249','\8249')
    , ('\11778','\11778')
    , ('\11780','\11780')
    , ('\11785','\11785')
    , ('\11788','\11788')
    , ('\11804','\11804')
    , ('\11808','\11808')
    ]

-- ------------------------------------------------------------

isUnicodePo :: Char -> Bool
isUnicodePo c
  = elemCS c charPropUnicodePo

charPropUnicodePo :: CharSet
charPropUnicodePo
  = [ ('!','#')
    , ('%','\'')
    , ('*','*')
    , (',',',')
    , ('.','/')
    , (':',';')
    , ('?','@')
    , ('\\','\\')
    , ('\161','\161')
    , ('\183','\183')
    , ('\191','\191')
    , ('\894','\894')
    , ('\903','\903')
    , ('\1370','\1375')
    , ('\1417','\1417')
    , ('\1472','\1472')
    , ('\1475','\1475')
    , ('\1478','\1478')
    , ('\1523','\1524')
    , ('\1545','\1546')
    , ('\1548','\1549')
    , ('\1563','\1563')
    , ('\1566','\1567')
    , ('\1642','\1645')
    , ('\1748','\1748')
    , ('\1792','\1805')
    , ('\2039','\2041')
    , ('\2096','\2110')
    , ('\2404','\2405')
    , ('\2416','\2416')
    , ('\3572','\3572')
    , ('\3663','\3663')
    , ('\3674','\3675')
    , ('\3844','\3858')
    , ('\3973','\3973')
    , ('\4048','\4052')
    , ('\4170','\4175')
    , ('\4347','\4347')
    , ('\4961','\4968')
    , ('\5741','\5742')
    , ('\5867','\5869')
    , ('\5941','\5942')
    , ('\6100','\6102')
    , ('\6104','\6106')
    , ('\6144','\6149')
    , ('\6151','\6154')
    , ('\6468','\6469')
    , ('\6622','\6623')
    , ('\6686','\6687')
    , ('\6816','\6822')
    , ('\6824','\6829')
    , ('\7002','\7008')
    , ('\7227','\7231')
    , ('\7294','\7295')
    , ('\7379','\7379')
    , ('\8214','\8215')
    , ('\8224','\8231')
    , ('\8240','\8248')
    , ('\8251','\8254')
    , ('\8257','\8259')
    , ('\8263','\8273')
    , ('\8275','\8275')
    , ('\8277','\8286')
    , ('\11513','\11516')
    , ('\11518','\11519')
    , ('\11776','\11777')
    , ('\11782','\11784')
    , ('\11787','\11787')
    , ('\11790','\11798')
    , ('\11800','\11801')
    , ('\11803','\11803')
    , ('\11806','\11807')
    , ('\11818','\11822')
    , ('\11824','\11825')
    , ('\12289','\12291')
    , ('\12349','\12349')
    , ('\12539','\12539')
    , ('\42238','\42239')
    , ('\42509','\42511')
    , ('\42611','\42611')
    , ('\42622','\42622')
    , ('\42738','\42743')
    , ('\43124','\43127')
    , ('\43214','\43215')
    , ('\43256','\43258')
    , ('\43310','\43311')
    , ('\43359','\43359')
    , ('\43457','\43469')
    , ('\43486','\43487')
    , ('\43612','\43615')
    , ('\43742','\43743')
    , ('\44011','\44011')
    , ('\65040','\65046')
    , ('\65049','\65049')
    , ('\65072','\65072')
    , ('\65093','\65094')
    , ('\65097','\65100')
    , ('\65104','\65106')
    , ('\65108','\65111')
    , ('\65119','\65121')
    , ('\65128','\65128')
    , ('\65130','\65131')
    , ('\65281','\65283')
    , ('\65285','\65287')
    , ('\65290','\65290')
    , ('\65292','\65292')
    , ('\65294','\65295')
    , ('\65306','\65307')
    , ('\65311','\65312')
    , ('\65340','\65340')
    , ('\65377','\65377')
    , ('\65380','\65381')
    , ('\65792','\65793')
    , ('\66463','\66463')
    , ('\66512','\66512')
    , ('\67671','\67671')
    , ('\67871','\67871')
    , ('\67903','\67903')
    , ('\68176','\68184')
    , ('\68223','\68223')
    , ('\68409','\68415')
    , ('\69819','\69820')
    , ('\69822','\69825')
    , ('\74864','\74867')
    ]

-- ------------------------------------------------------------

isUnicodePs :: Char -> Bool
isUnicodePs c
  = elemCS c charPropUnicodePs

charPropUnicodePs :: CharSet
charPropUnicodePs
  = [ ('(','(')
    , ('[','[')
    , ('{','{')
    , ('\3898','\3898')
    , ('\3900','\3900')
    , ('\5787','\5787')
    , ('\8218','\8218')
    , ('\8222','\8222')
    , ('\8261','\8261')
    , ('\8317','\8317')
    , ('\8333','\8333')
    , ('\9001','\9001')
    , ('\10088','\10088')
    , ('\10090','\10090')
    , ('\10092','\10092')
    , ('\10094','\10094')
    , ('\10096','\10096')
    , ('\10098','\10098')
    , ('\10100','\10100')
    , ('\10181','\10181')
    , ('\10214','\10214')
    , ('\10216','\10216')
    , ('\10218','\10218')
    , ('\10220','\10220')
    , ('\10222','\10222')
    , ('\10627','\10627')
    , ('\10629','\10629')
    , ('\10631','\10631')
    , ('\10633','\10633')
    , ('\10635','\10635')
    , ('\10637','\10637')
    , ('\10639','\10639')
    , ('\10641','\10641')
    , ('\10643','\10643')
    , ('\10645','\10645')
    , ('\10647','\10647')
    , ('\10712','\10712')
    , ('\10714','\10714')
    , ('\10748','\10748')
    , ('\11810','\11810')
    , ('\11812','\11812')
    , ('\11814','\11814')
    , ('\11816','\11816')
    , ('\12296','\12296')
    , ('\12298','\12298')
    , ('\12300','\12300')
    , ('\12302','\12302')
    , ('\12304','\12304')
    , ('\12308','\12308')
    , ('\12310','\12310')
    , ('\12312','\12312')
    , ('\12314','\12314')
    , ('\12317','\12317')
    , ('\64830','\64830')
    , ('\65047','\65047')
    , ('\65077','\65077')
    , ('\65079','\65079')
    , ('\65081','\65081')
    , ('\65083','\65083')
    , ('\65085','\65085')
    , ('\65087','\65087')
    , ('\65089','\65089')
    , ('\65091','\65091')
    , ('\65095','\65095')
    , ('\65113','\65113')
    , ('\65115','\65115')
    , ('\65117','\65117')
    , ('\65288','\65288')
    , ('\65339','\65339')
    , ('\65371','\65371')
    , ('\65375','\65375')
    , ('\65378','\65378')
    ]

-- ------------------------------------------------------------

isUnicodeS :: Char -> Bool
isUnicodeS c
  = elemCS c charPropUnicodeS

charPropUnicodeS :: CharSet
charPropUnicodeS
  = [ ('$','$')
    , ('+','+')
    , ('<','>')
    , ('^','^')
    , ('`','`')
    , ('|','|')
    , ('~','~')
    , ('\162','\169')
    , ('\172','\172')
    , ('\174','\177')
    , ('\180','\180')
    , ('\182','\182')
    , ('\184','\184')
    , ('\215','\215')
    , ('\247','\247')
    , ('\706','\709')
    , ('\722','\735')
    , ('\741','\747')
    , ('\749','\749')
    , ('\751','\767')
    , ('\885','\885')
    , ('\900','\901')
    , ('\1014','\1014')
    , ('\1154','\1154')
    , ('\1542','\1544')
    , ('\1547','\1547')
    , ('\1550','\1551')
    , ('\1769','\1769')
    , ('\1789','\1790')
    , ('\2038','\2038')
    , ('\2546','\2547')
    , ('\2554','\2555')
    , ('\2801','\2801')
    , ('\2928','\2928')
    , ('\3059','\3066')
    , ('\3199','\3199')
    , ('\3313','\3314')
    , ('\3449','\3449')
    , ('\3647','\3647')
    , ('\3841','\3843')
    , ('\3859','\3863')
    , ('\3866','\3871')
    , ('\3892','\3892')
    , ('\3894','\3894')
    , ('\3896','\3896')
    , ('\4030','\4037')
    , ('\4039','\4044')
    , ('\4046','\4047')
    , ('\4053','\4056')
    , ('\4254','\4255')
    , ('\4960','\4960')
    , ('\5008','\5017')
    , ('\6107','\6107')
    , ('\6464','\6464')
    , ('\6624','\6655')
    , ('\7009','\7018')
    , ('\7028','\7036')
    , ('\8125','\8125')
    , ('\8127','\8129')
    , ('\8141','\8143')
    , ('\8157','\8159')
    , ('\8173','\8175')
    , ('\8189','\8190')
    , ('\8260','\8260')
    , ('\8274','\8274')
    , ('\8314','\8316')
    , ('\8330','\8332')
    , ('\8352','\8376')
    , ('\8448','\8449')
    , ('\8451','\8454')
    , ('\8456','\8457')
    , ('\8468','\8468')
    , ('\8470','\8472')
    , ('\8478','\8483')
    , ('\8485','\8485')
    , ('\8487','\8487')
    , ('\8489','\8489')
    , ('\8494','\8494')
    , ('\8506','\8507')
    , ('\8512','\8516')
    , ('\8522','\8525')
    , ('\8527','\8527')
    , ('\8592','\9000')
    , ('\9003','\9192')
    , ('\9216','\9254')
    , ('\9280','\9290')
    , ('\9372','\9449')
    , ('\9472','\9933')
    , ('\9935','\9953')
    , ('\9955','\9955')
    , ('\9960','\9983')
    , ('\9985','\9988')
    , ('\9990','\9993')
    , ('\9996','\10023')
    , ('\10025','\10059')
    , ('\10061','\10061')
    , ('\10063','\10066')
    , ('\10070','\10078')
    , ('\10081','\10087')
    , ('\10132','\10132')
    , ('\10136','\10159')
    , ('\10161','\10174')
    , ('\10176','\10180')
    , ('\10183','\10186')
    , ('\10188','\10188')
    , ('\10192','\10213')
    , ('\10224','\10626')
    , ('\10649','\10711')
    , ('\10716','\10747')
    , ('\10750','\11084')
    , ('\11088','\11097')
    , ('\11493','\11498')
    , ('\11904','\11929')
    , ('\11931','\12019')
    , ('\12032','\12245')
    , ('\12272','\12283')
    , ('\12292','\12292')
    , ('\12306','\12307')
    , ('\12320','\12320')
    , ('\12342','\12343')
    , ('\12350','\12351')
    , ('\12443','\12444')
    , ('\12688','\12689')
    , ('\12694','\12703')
    , ('\12736','\12771')
    , ('\12800','\12830')
    , ('\12842','\12880')
    , ('\12896','\12927')
    , ('\12938','\12976')
    , ('\12992','\13054')
    , ('\13056','\13311')
    , ('\19904','\19967')
    , ('\42128','\42182')
    , ('\42752','\42774')
    , ('\42784','\42785')
    , ('\42889','\42890')
    , ('\43048','\43051')
    , ('\43062','\43065')
    , ('\43639','\43641')
    , ('\64297','\64297')
    , ('\65020','\65021')
    , ('\65122','\65122')
    , ('\65124','\65126')
    , ('\65129','\65129')
    , ('\65284','\65284')
    , ('\65291','\65291')
    , ('\65308','\65310')
    , ('\65342','\65342')
    , ('\65344','\65344')
    , ('\65372','\65372')
    , ('\65374','\65374')
    , ('\65504','\65510')
    , ('\65512','\65518')
    , ('\65532','\65533')
    , ('\65794','\65794')
    , ('\65847','\65855')
    , ('\65913','\65929')
    , ('\65936','\65947')
    , ('\66000','\66044')
    , ('\118784','\119029')
    , ('\119040','\119078')
    , ('\119081','\119140')
    , ('\119146','\119148')
    , ('\119171','\119172')
    , ('\119180','\119209')
    , ('\119214','\119261')
    , ('\119296','\119361')
    , ('\119365','\119365')
    , ('\119552','\119638')
    , ('\120513','\120513')
    , ('\120539','\120539')
    , ('\120571','\120571')
    , ('\120597','\120597')
    , ('\120629','\120629')
    , ('\120655','\120655')
    , ('\120687','\120687')
    , ('\120713','\120713')
    , ('\120745','\120745')
    , ('\120771','\120771')
    , ('\126976','\127019')
    , ('\127024','\127123')
    , ('\127248','\127278')
    , ('\127281','\127281')
    , ('\127293','\127293')
    , ('\127295','\127295')
    , ('\127298','\127298')
    , ('\127302','\127302')
    , ('\127306','\127310')
    , ('\127319','\127319')
    , ('\127327','\127327')
    , ('\127353','\127353')
    , ('\127355','\127356')
    , ('\127359','\127359')
    , ('\127370','\127373')
    , ('\127376','\127376')
    , ('\127488','\127488')
    , ('\127504','\127537')
    , ('\127552','\127560')
    ]

-- ------------------------------------------------------------

isUnicodeSc :: Char -> Bool
isUnicodeSc c
  = elemCS c charPropUnicodeSc

charPropUnicodeSc :: CharSet
charPropUnicodeSc
  = [ ('$','$')
    , ('\162','\165')
    , ('\1547','\1547')
    , ('\2546','\2547')
    , ('\2555','\2555')
    , ('\2801','\2801')
    , ('\3065','\3065')
    , ('\3647','\3647')
    , ('\6107','\6107')
    , ('\8352','\8376')
    , ('\43064','\43064')
    , ('\65020','\65020')
    , ('\65129','\65129')
    , ('\65284','\65284')
    , ('\65504','\65505')
    , ('\65509','\65510')
    ]

-- ------------------------------------------------------------

isUnicodeSk :: Char -> Bool
isUnicodeSk c
  = elemCS c charPropUnicodeSk

charPropUnicodeSk :: CharSet
charPropUnicodeSk
  = [ ('^','^')
    , ('`','`')
    , ('\168','\168')
    , ('\175','\175')
    , ('\180','\180')
    , ('\184','\184')
    , ('\706','\709')
    , ('\722','\735')
    , ('\741','\747')
    , ('\749','\749')
    , ('\751','\767')
    , ('\885','\885')
    , ('\900','\901')
    , ('\8125','\8125')
    , ('\8127','\8129')
    , ('\8141','\8143')
    , ('\8157','\8159')
    , ('\8173','\8175')
    , ('\8189','\8190')
    , ('\12443','\12444')
    , ('\42752','\42774')
    , ('\42784','\42785')
    , ('\42889','\42890')
    , ('\65342','\65342')
    , ('\65344','\65344')
    , ('\65507','\65507')
    ]

-- ------------------------------------------------------------

isUnicodeSm :: Char -> Bool
isUnicodeSm c
  = elemCS c charPropUnicodeSm

charPropUnicodeSm :: CharSet
charPropUnicodeSm
  = [ ('+','+')
    , ('<','>')
    , ('|','|')
    , ('~','~')
    , ('\172','\172')
    , ('\177','\177')
    , ('\215','\215')
    , ('\247','\247')
    , ('\1014','\1014')
    , ('\1542','\1544')
    , ('\8260','\8260')
    , ('\8274','\8274')
    , ('\8314','\8316')
    , ('\8330','\8332')
    , ('\8512','\8516')
    , ('\8523','\8523')
    , ('\8592','\8596')
    , ('\8602','\8603')
    , ('\8608','\8608')
    , ('\8611','\8611')
    , ('\8614','\8614')
    , ('\8622','\8622')
    , ('\8654','\8655')
    , ('\8658','\8658')
    , ('\8660','\8660')
    , ('\8692','\8959')
    , ('\8968','\8971')
    , ('\8992','\8993')
    , ('\9084','\9084')
    , ('\9115','\9139')
    , ('\9180','\9185')
    , ('\9655','\9655')
    , ('\9665','\9665')
    , ('\9720','\9727')
    , ('\9839','\9839')
    , ('\10176','\10180')
    , ('\10183','\10186')
    , ('\10188','\10188')
    , ('\10192','\10213')
    , ('\10224','\10239')
    , ('\10496','\10626')
    , ('\10649','\10711')
    , ('\10716','\10747')
    , ('\10750','\11007')
    , ('\11056','\11076')
    , ('\11079','\11084')
    , ('\64297','\64297')
    , ('\65122','\65122')
    , ('\65124','\65126')
    , ('\65291','\65291')
    , ('\65308','\65310')
    , ('\65372','\65372')
    , ('\65374','\65374')
    , ('\65506','\65506')
    , ('\65513','\65516')
    , ('\120513','\120513')
    , ('\120539','\120539')
    , ('\120571','\120571')
    , ('\120597','\120597')
    , ('\120629','\120629')
    , ('\120655','\120655')
    , ('\120687','\120687')
    , ('\120713','\120713')
    , ('\120745','\120745')
    , ('\120771','\120771')
    ]

-- ------------------------------------------------------------

isUnicodeSo :: Char -> Bool
isUnicodeSo c
  = elemCS c charPropUnicodeSo

charPropUnicodeSo :: CharSet
charPropUnicodeSo
  = [ ('\166','\167')
    , ('\169','\169')
    , ('\174','\174')
    , ('\176','\176')
    , ('\182','\182')
    , ('\1154','\1154')
    , ('\1550','\1551')
    , ('\1769','\1769')
    , ('\1789','\1790')
    , ('\2038','\2038')
    , ('\2554','\2554')
    , ('\2928','\2928')
    , ('\3059','\3064')
    , ('\3066','\3066')
    , ('\3199','\3199')
    , ('\3313','\3314')
    , ('\3449','\3449')
    , ('\3841','\3843')
    , ('\3859','\3863')
    , ('\3866','\3871')
    , ('\3892','\3892')
    , ('\3894','\3894')
    , ('\3896','\3896')
    , ('\4030','\4037')
    , ('\4039','\4044')
    , ('\4046','\4047')
    , ('\4053','\4056')
    , ('\4254','\4255')
    , ('\4960','\4960')
    , ('\5008','\5017')
    , ('\6464','\6464')
    , ('\6624','\6655')
    , ('\7009','\7018')
    , ('\7028','\7036')
    , ('\8448','\8449')
    , ('\8451','\8454')
    , ('\8456','\8457')
    , ('\8468','\8468')
    , ('\8470','\8472')
    , ('\8478','\8483')
    , ('\8485','\8485')
    , ('\8487','\8487')
    , ('\8489','\8489')
    , ('\8494','\8494')
    , ('\8506','\8507')
    , ('\8522','\8522')
    , ('\8524','\8525')
    , ('\8527','\8527')
    , ('\8597','\8601')
    , ('\8604','\8607')
    , ('\8609','\8610')
    , ('\8612','\8613')
    , ('\8615','\8621')
    , ('\8623','\8653')
    , ('\8656','\8657')
    , ('\8659','\8659')
    , ('\8661','\8691')
    , ('\8960','\8967')
    , ('\8972','\8991')
    , ('\8994','\9000')
    , ('\9003','\9083')
    , ('\9085','\9114')
    , ('\9140','\9179')
    , ('\9186','\9192')
    , ('\9216','\9254')
    , ('\9280','\9290')
    , ('\9372','\9449')
    , ('\9472','\9654')
    , ('\9656','\9664')
    , ('\9666','\9719')
    , ('\9728','\9838')
    , ('\9840','\9933')
    , ('\9935','\9953')
    , ('\9955','\9955')
    , ('\9960','\9983')
    , ('\9985','\9988')
    , ('\9990','\9993')
    , ('\9996','\10023')
    , ('\10025','\10059')
    , ('\10061','\10061')
    , ('\10063','\10066')
    , ('\10070','\10078')
    , ('\10081','\10087')
    , ('\10132','\10132')
    , ('\10136','\10159')
    , ('\10161','\10174')
    , ('\10240','\10495')
    , ('\11008','\11055')
    , ('\11077','\11078')
    , ('\11088','\11097')
    , ('\11493','\11498')
    , ('\11904','\11929')
    , ('\11931','\12019')
    , ('\12032','\12245')
    , ('\12272','\12283')
    , ('\12292','\12292')
    , ('\12306','\12307')
    , ('\12320','\12320')
    , ('\12342','\12343')
    , ('\12350','\12351')
    , ('\12688','\12689')
    , ('\12694','\12703')
    , ('\12736','\12771')
    , ('\12800','\12830')
    , ('\12842','\12880')
    , ('\12896','\12927')
    , ('\12938','\12976')
    , ('\12992','\13054')
    , ('\13056','\13311')
    , ('\19904','\19967')
    , ('\42128','\42182')
    , ('\43048','\43051')
    , ('\43062','\43063')
    , ('\43065','\43065')
    , ('\43639','\43641')
    , ('\65021','\65021')
    , ('\65508','\65508')
    , ('\65512','\65512')
    , ('\65517','\65518')
    , ('\65532','\65533')
    , ('\65794','\65794')
    , ('\65847','\65855')
    , ('\65913','\65929')
    , ('\65936','\65947')
    , ('\66000','\66044')
    , ('\118784','\119029')
    , ('\119040','\119078')
    , ('\119081','\119140')
    , ('\119146','\119148')
    , ('\119171','\119172')
    , ('\119180','\119209')
    , ('\119214','\119261')
    , ('\119296','\119361')
    , ('\119365','\119365')
    , ('\119552','\119638')
    , ('\126976','\127019')
    , ('\127024','\127123')
    , ('\127248','\127278')
    , ('\127281','\127281')
    , ('\127293','\127293')
    , ('\127295','\127295')
    , ('\127298','\127298')
    , ('\127302','\127302')
    , ('\127306','\127310')
    , ('\127319','\127319')
    , ('\127327','\127327')
    , ('\127353','\127353')
    , ('\127355','\127356')
    , ('\127359','\127359')
    , ('\127370','\127373')
    , ('\127376','\127376')
    , ('\127488','\127488')
    , ('\127504','\127537')
    , ('\127552','\127560')
    ]

-- ------------------------------------------------------------

isUnicodeZ :: Char -> Bool
isUnicodeZ c
  = elemCS c charPropUnicodeZ

charPropUnicodeZ :: CharSet
charPropUnicodeZ
  = [ (' ',' ')
    , ('\160','\160')
    , ('\5760','\5760')
    , ('\6158','\6158')
    , ('\8192','\8202')
    , ('\8232','\8233')
    , ('\8239','\8239')
    , ('\8287','\8287')
    , ('\12288','\12288')
    ]

-- ------------------------------------------------------------

isUnicodeZl :: Char -> Bool
isUnicodeZl c
  = elemCS c charPropUnicodeZl

charPropUnicodeZl :: CharSet
charPropUnicodeZl
  = [ ('\8232','\8232')
    ]

-- ------------------------------------------------------------

isUnicodeZp :: Char -> Bool
isUnicodeZp c
  = elemCS c charPropUnicodeZp

charPropUnicodeZp :: CharSet
charPropUnicodeZp
  = [ ('\8233','\8233')
    ]

-- ------------------------------------------------------------

isUnicodeZs :: Char -> Bool
isUnicodeZs c
  = elemCS c charPropUnicodeZs

charPropUnicodeZs :: CharSet
charPropUnicodeZs
  = [ (' ',' ')
    , ('\160','\160')
    , ('\5760','\5760')
    , ('\6158','\6158')
    , ('\8192','\8202')
    , ('\8239','\8239')
    , ('\8287','\8287')
    , ('\12288','\12288')
    ]

-- ------------------------------------------------------------