unicode_gc_m.f90 Source File


Source Code

module forgex_unicode_gc_m
   use :: forgex_segment_m
   implicit none
   private

   public :: unicode_gc_Cn
   public :: unicode_gc_Lu
   public :: unicode_gc_Ll
   public :: unicode_gc_Lt
   public :: unicode_gc_Lm
   public :: unicode_gc_Lo
   public :: unicode_gc_Mn
   public :: unicode_gc_Me
   public :: unicode_gc_Mc
   public :: unicode_gc_Nd
   public :: unicode_gc_Nl
   public :: unicode_gc_No
   public :: unicode_gc_Zs
   public :: unicode_gc_Zl
   public :: unicode_gc_Zp
   public :: unicode_gc_Cc
   public :: unicode_gc_Cf
   public :: unicode_gc_Co
   public :: unicode_gc_Cs
   public :: unicode_gc_Pd
   public :: unicode_gc_Ps
   public :: unicode_gc_Pe
   public :: unicode_gc_Pc
   public :: unicode_gc_Po
   public :: unicode_gc_Sm
   public :: unicode_gc_Sc
   public :: unicode_gc_Sk
   public :: unicode_gc_So
   public :: unicode_gc_Pi
   public :: unicode_gc_Pf

   type(segment_t), parameter :: unicode_gc_Cn(*) = &
   [ &
      segment_t(888, 889), &
      segment_t(896, 899), &
      segment_t(907, 907), &
      segment_t(909, 909), &
      segment_t(930, 930), &
      segment_t(1328, 1328), &
      segment_t(1367, 1368), &
      segment_t(1419, 1420), &
      segment_t(1424, 1424), &
      segment_t(1480, 1487), &
      segment_t(1515, 1518), &
      segment_t(1525, 1535), &
      segment_t(1806, 1806), &
      segment_t(1867, 1868), &
      segment_t(1970, 1983), &
      segment_t(2043, 2044), &
      segment_t(2094, 2095), &
      segment_t(2111, 2111), &
      segment_t(2140, 2141), &
      segment_t(2143, 2143), &
      segment_t(2155, 2159), &
      segment_t(2194, 2198), &
      segment_t(2436, 2436), &
      segment_t(2445, 2446), &
      segment_t(2449, 2450), &
      segment_t(2473, 2473), &
      segment_t(2481, 2481), &
      segment_t(2483, 2485), &
      segment_t(2490, 2491), &
      segment_t(2501, 2502), &
      segment_t(2505, 2506), &
      segment_t(2511, 2518), &
      segment_t(2520, 2523), &
      segment_t(2526, 2526), &
      segment_t(2532, 2533), &
      segment_t(2559, 2560), &
      segment_t(2564, 2564), &
      segment_t(2571, 2574), &
      segment_t(2577, 2578), &
      segment_t(2601, 2601), &
      segment_t(2609, 2609), &
      segment_t(2612, 2612), &
      segment_t(2615, 2615), &
      segment_t(2618, 2619), &
      segment_t(2621, 2621), &
      segment_t(2627, 2630), &
      segment_t(2633, 2634), &
      segment_t(2638, 2640), &
      segment_t(2642, 2648), &
      segment_t(2653, 2653), &
      segment_t(2655, 2661), &
      segment_t(2679, 2688), &
      segment_t(2692, 2692), &
      segment_t(2702, 2702), &
      segment_t(2706, 2706), &
      segment_t(2729, 2729), &
      segment_t(2737, 2737), &
      segment_t(2740, 2740), &
      segment_t(2746, 2747), &
      segment_t(2758, 2758), &
      segment_t(2762, 2762), &
      segment_t(2766, 2767), &
      segment_t(2769, 2783), &
      segment_t(2788, 2789), &
      segment_t(2802, 2808), &
      segment_t(2816, 2816), &
      segment_t(2820, 2820), &
      segment_t(2829, 2830), &
      segment_t(2833, 2834), &
      segment_t(2857, 2857), &
      segment_t(2865, 2865), &
      segment_t(2868, 2868), &
      segment_t(2874, 2875), &
      segment_t(2885, 2886), &
      segment_t(2889, 2890), &
      segment_t(2894, 2900), &
      segment_t(2904, 2907), &
      segment_t(2910, 2910), &
      segment_t(2916, 2917), &
      segment_t(2936, 2945), &
      segment_t(2948, 2948), &
      segment_t(2955, 2957), &
      segment_t(2961, 2961), &
      segment_t(2966, 2968), &
      segment_t(2971, 2971), &
      segment_t(2973, 2973), &
      segment_t(2976, 2978), &
      segment_t(2981, 2983), &
      segment_t(2987, 2989), &
      segment_t(3002, 3005), &
      segment_t(3011, 3013), &
      segment_t(3017, 3017), &
      segment_t(3022, 3023), &
      segment_t(3025, 3030), &
      segment_t(3032, 3045), &
      segment_t(3067, 3071), &
      segment_t(3085, 3085), &
      segment_t(3089, 3089), &
      segment_t(3113, 3113), &
      segment_t(3130, 3131), &
      segment_t(3141, 3141), &
      segment_t(3145, 3145), &
      segment_t(3150, 3156), &
      segment_t(3159, 3159), &
      segment_t(3163, 3163), &
      segment_t(3166, 3167), &
      segment_t(3172, 3173), &
      segment_t(3184, 3190), &
      segment_t(3213, 3213), &
      segment_t(3217, 3217), &
      segment_t(3241, 3241), &
      segment_t(3252, 3252), &
      segment_t(3258, 3259), &
      segment_t(3269, 3269), &
      segment_t(3273, 3273), &
      segment_t(3278, 3284), &
      segment_t(3287, 3291), &
      segment_t(3295, 3295), &
      segment_t(3300, 3301), &
      segment_t(3312, 3312), &
      segment_t(3316, 3327), &
      segment_t(3341, 3341), &
      segment_t(3345, 3345), &
      segment_t(3397, 3397), &
      segment_t(3401, 3401), &
      segment_t(3408, 3411), &
      segment_t(3428, 3429), &
      segment_t(3456, 3456), &
      segment_t(3460, 3460), &
      segment_t(3479, 3481), &
      segment_t(3506, 3506), &
      segment_t(3516, 3516), &
      segment_t(3518, 3519), &
      segment_t(3527, 3529), &
      segment_t(3531, 3534), &
      segment_t(3541, 3541), &
      segment_t(3543, 3543), &
      segment_t(3552, 3557), &
      segment_t(3568, 3569), &
      segment_t(3573, 3584), &
      segment_t(3643, 3646), &
      segment_t(3676, 3712), &
      segment_t(3715, 3715), &
      segment_t(3717, 3717), &
      segment_t(3723, 3723), &
      segment_t(3748, 3748), &
      segment_t(3750, 3750), &
      segment_t(3774, 3775), &
      segment_t(3781, 3781), &
      segment_t(3783, 3783), &
      segment_t(3791, 3791), &
      segment_t(3802, 3803), &
      segment_t(3808, 3839), &
      segment_t(3912, 3912), &
      segment_t(3949, 3952), &
      segment_t(3992, 3992), &
      segment_t(4029, 4029), &
      segment_t(4045, 4045), &
      segment_t(4059, 4095), &
      segment_t(4294, 4294), &
      segment_t(4296, 4300), &
      segment_t(4302, 4303), &
      segment_t(4681, 4681), &
      segment_t(4686, 4687), &
      segment_t(4695, 4695), &
      segment_t(4697, 4697), &
      segment_t(4702, 4703), &
      segment_t(4745, 4745), &
      segment_t(4750, 4751), &
      segment_t(4785, 4785), &
      segment_t(4790, 4791), &
      segment_t(4799, 4799), &
      segment_t(4801, 4801), &
      segment_t(4806, 4807), &
      segment_t(4823, 4823), &
      segment_t(4881, 4881), &
      segment_t(4886, 4887), &
      segment_t(4955, 4956), &
      segment_t(4989, 4991), &
      segment_t(5018, 5023), &
      segment_t(5110, 5111), &
      segment_t(5118, 5119), &
      segment_t(5789, 5791), &
      segment_t(5881, 5887), &
      segment_t(5910, 5918), &
      segment_t(5943, 5951), &
      segment_t(5972, 5983), &
      segment_t(5997, 5997), &
      segment_t(6001, 6001), &
      segment_t(6004, 6015), &
      segment_t(6110, 6111), &
      segment_t(6122, 6127), &
      segment_t(6138, 6143), &
      segment_t(6170, 6175), &
      segment_t(6265, 6271), &
      segment_t(6315, 6319), &
      segment_t(6390, 6399), &
      segment_t(6431, 6431), &
      segment_t(6444, 6447), &
      segment_t(6460, 6463), &
      segment_t(6465, 6467), &
      segment_t(6510, 6511), &
      segment_t(6517, 6527), &
      segment_t(6572, 6575), &
      segment_t(6602, 6607), &
      segment_t(6619, 6621), &
      segment_t(6684, 6685), &
      segment_t(6751, 6751), &
      segment_t(6781, 6782), &
      segment_t(6794, 6799), &
      segment_t(6810, 6815), &
      segment_t(6830, 6831), &
      segment_t(6878, 6879), &
      segment_t(6892, 6911), &
      segment_t(6989, 6989), &
      segment_t(7156, 7163), &
      segment_t(7224, 7226), &
      segment_t(7242, 7244), &
      segment_t(7307, 7311), &
      segment_t(7355, 7356), &
      segment_t(7368, 7375), &
      segment_t(7419, 7423), &
      segment_t(7958, 7959), &
      segment_t(7966, 7967), &
      segment_t(8006, 8007), &
      segment_t(8014, 8015), &
      segment_t(8024, 8024), &
      segment_t(8026, 8026), &
      segment_t(8028, 8028), &
      segment_t(8030, 8030), &
      segment_t(8062, 8063), &
      segment_t(8117, 8117), &
      segment_t(8133, 8133), &
      segment_t(8148, 8149), &
      segment_t(8156, 8156), &
      segment_t(8176, 8177), &
      segment_t(8181, 8181), &
      segment_t(8191, 8191), &
      segment_t(8293, 8293), &
      segment_t(8306, 8307), &
      segment_t(8335, 8335), &
      segment_t(8349, 8351), &
      segment_t(8386, 8399), &
      segment_t(8433, 8447), &
      segment_t(8588, 8591), &
      segment_t(9258, 9279), &
      segment_t(9291, 9311), &
      segment_t(11124, 11125), &
      segment_t(11508, 11512), &
      segment_t(11558, 11558), &
      segment_t(11560, 11564), &
      segment_t(11566, 11567), &
      segment_t(11624, 11630), &
      segment_t(11633, 11646), &
      segment_t(11671, 11679), &
      segment_t(11687, 11687), &
      segment_t(11695, 11695), &
      segment_t(11703, 11703), &
      segment_t(11711, 11711), &
      segment_t(11719, 11719), &
      segment_t(11727, 11727), &
      segment_t(11735, 11735), &
      segment_t(11743, 11743), &
      segment_t(11870, 11903), &
      segment_t(11930, 11930), &
      segment_t(12020, 12031), &
      segment_t(12246, 12271), &
      segment_t(12352, 12352), &
      segment_t(12439, 12440), &
      segment_t(12544, 12548), &
      segment_t(12592, 12592), &
      segment_t(12687, 12687), &
      segment_t(12774, 12782), &
      segment_t(12831, 12831), &
      segment_t(42125, 42127), &
      segment_t(42183, 42191), &
      segment_t(42540, 42559), &
      segment_t(42744, 42751), &
      segment_t(42973, 42992), &
      segment_t(43053, 43055), &
      segment_t(43066, 43071), &
      segment_t(43128, 43135), &
      segment_t(43206, 43213), &
      segment_t(43226, 43231), &
      segment_t(43348, 43358), &
      segment_t(43389, 43391), &
      segment_t(43470, 43470), &
      segment_t(43482, 43485), &
      segment_t(43519, 43519), &
      segment_t(43575, 43583), &
      segment_t(43598, 43599), &
      segment_t(43610, 43611), &
      segment_t(43715, 43738), &
      segment_t(43767, 43776), &
      segment_t(43783, 43784), &
      segment_t(43791, 43792), &
      segment_t(43799, 43807), &
      segment_t(43815, 43815), &
      segment_t(43823, 43823), &
      segment_t(43884, 43887), &
      segment_t(44014, 44015), &
      segment_t(44026, 44031), &
      segment_t(55204, 55215), &
      segment_t(55239, 55242), &
      segment_t(55292, 55295), &
      segment_t(64110, 64111), &
      segment_t(64218, 64255), &
      segment_t(64263, 64274), &
      segment_t(64280, 64284), &
      segment_t(64311, 64311), &
      segment_t(64317, 64317), &
      segment_t(64319, 64319), &
      segment_t(64322, 64322), &
      segment_t(64325, 64325), &
      segment_t(64976, 65007), &
      segment_t(65050, 65055), &
      segment_t(65107, 65107), &
      segment_t(65127, 65127), &
      segment_t(65132, 65135), &
      segment_t(65141, 65141), &
      segment_t(65277, 65278), &
      segment_t(65280, 65280), &
      segment_t(65471, 65473), &
      segment_t(65480, 65481), &
      segment_t(65488, 65489), &
      segment_t(65496, 65497), &
      segment_t(65501, 65503), &
      segment_t(65511, 65511), &
      segment_t(65519, 65528), &
      segment_t(65534, 65535), &
      segment_t(65548, 65548), &
      segment_t(65575, 65575), &
      segment_t(65595, 65595), &
      segment_t(65598, 65598), &
      segment_t(65614, 65615), &
      segment_t(65630, 65663), &
      segment_t(65787, 65791), &
      segment_t(65795, 65798), &
      segment_t(65844, 65846), &
      segment_t(65935, 65935), &
      segment_t(65949, 65951), &
      segment_t(65953, 65999), &
      segment_t(66046, 66175), &
      segment_t(66205, 66207), &
      segment_t(66257, 66271), &
      segment_t(66300, 66303), &
      segment_t(66340, 66348), &
      segment_t(66379, 66383), &
      segment_t(66427, 66431), &
      segment_t(66462, 66462), &
      segment_t(66500, 66503), &
      segment_t(66518, 66559), &
      segment_t(66718, 66719), &
      segment_t(66730, 66735), &
      segment_t(66772, 66775), &
      segment_t(66812, 66815), &
      segment_t(66856, 66863), &
      segment_t(66916, 66926), &
      segment_t(66939, 66939), &
      segment_t(66955, 66955), &
      segment_t(66963, 66963), &
      segment_t(66966, 66966), &
      segment_t(66978, 66978), &
      segment_t(66994, 66994), &
      segment_t(67002, 67002), &
      segment_t(67005, 67007), &
      segment_t(67060, 67071), &
      segment_t(67383, 67391), &
      segment_t(67414, 67423), &
      segment_t(67432, 67455), &
      segment_t(67462, 67462), &
      segment_t(67505, 67505), &
      segment_t(67515, 67583), &
      segment_t(67590, 67591), &
      segment_t(67593, 67593), &
      segment_t(67638, 67638), &
      segment_t(67641, 67643), &
      segment_t(67645, 67646), &
      segment_t(67670, 67670), &
      segment_t(67743, 67750), &
      segment_t(67760, 67807), &
      segment_t(67827, 67827), &
      segment_t(67830, 67834), &
      segment_t(67868, 67870), &
      segment_t(67898, 67902), &
      segment_t(67930, 67967), &
      segment_t(68024, 68027), &
      segment_t(68048, 68049), &
      segment_t(68100, 68100), &
      segment_t(68103, 68107), &
      segment_t(68116, 68116), &
      segment_t(68120, 68120), &
      segment_t(68150, 68151), &
      segment_t(68155, 68158), &
      segment_t(68169, 68175), &
      segment_t(68185, 68191), &
      segment_t(68256, 68287), &
      segment_t(68327, 68330), &
      segment_t(68343, 68351), &
      segment_t(68406, 68408), &
      segment_t(68438, 68439), &
      segment_t(68467, 68471), &
      segment_t(68498, 68504), &
      segment_t(68509, 68520), &
      segment_t(68528, 68607), &
      segment_t(68681, 68735), &
      segment_t(68787, 68799), &
      segment_t(68851, 68857), &
      segment_t(68904, 68911), &
      segment_t(68922, 68927), &
      segment_t(68966, 68968), &
      segment_t(68998, 69005), &
      segment_t(69008, 69215), &
      segment_t(69247, 69247), &
      segment_t(69290, 69290), &
      segment_t(69294, 69295), &
      segment_t(69298, 69313), &
      segment_t(69320, 69327), &
      segment_t(69337, 69369), &
      segment_t(69416, 69423), &
      segment_t(69466, 69487), &
      segment_t(69514, 69551), &
      segment_t(69580, 69599), &
      segment_t(69623, 69631), &
      segment_t(69710, 69713), &
      segment_t(69750, 69758), &
      segment_t(69827, 69836), &
      segment_t(69838, 69839), &
      segment_t(69865, 69871), &
      segment_t(69882, 69887), &
      segment_t(69941, 69941), &
      segment_t(69960, 69967), &
      segment_t(70007, 70015), &
      segment_t(70112, 70112), &
      segment_t(70133, 70143), &
      segment_t(70162, 70162), &
      segment_t(70210, 70271), &
      segment_t(70279, 70279), &
      segment_t(70281, 70281), &
      segment_t(70286, 70286), &
      segment_t(70302, 70302), &
      segment_t(70314, 70319), &
      segment_t(70379, 70383), &
      segment_t(70394, 70399), &
      segment_t(70404, 70404), &
      segment_t(70413, 70414), &
      segment_t(70417, 70418), &
      segment_t(70441, 70441), &
      segment_t(70449, 70449), &
      segment_t(70452, 70452), &
      segment_t(70458, 70458), &
      segment_t(70469, 70470), &
      segment_t(70473, 70474), &
      segment_t(70478, 70479), &
      segment_t(70481, 70486), &
      segment_t(70488, 70492), &
      segment_t(70500, 70501), &
      segment_t(70509, 70511), &
      segment_t(70517, 70527), &
      segment_t(70538, 70538), &
      segment_t(70540, 70541), &
      segment_t(70543, 70543), &
      segment_t(70582, 70582), &
      segment_t(70593, 70593), &
      segment_t(70595, 70596), &
      segment_t(70598, 70598), &
      segment_t(70603, 70603), &
      segment_t(70614, 70614), &
      segment_t(70617, 70624), &
      segment_t(70627, 70655), &
      segment_t(70748, 70748), &
      segment_t(70754, 70783), &
      segment_t(70856, 70863), &
      segment_t(70874, 71039), &
      segment_t(71094, 71095), &
      segment_t(71134, 71167), &
      segment_t(71237, 71247), &
      segment_t(71258, 71263), &
      segment_t(71277, 71295), &
      segment_t(71354, 71359), &
      segment_t(71370, 71375), &
      segment_t(71396, 71423), &
      segment_t(71451, 71452), &
      segment_t(71468, 71471), &
      segment_t(71495, 71679), &
      segment_t(71740, 71839), &
      segment_t(71923, 71934), &
      segment_t(71943, 71944), &
      segment_t(71946, 71947), &
      segment_t(71956, 71956), &
      segment_t(71959, 71959), &
      segment_t(71990, 71990), &
      segment_t(71993, 71994), &
      segment_t(72007, 72015), &
      segment_t(72026, 72095), &
      segment_t(72104, 72105), &
      segment_t(72152, 72153), &
      segment_t(72165, 72191), &
      segment_t(72264, 72271), &
      segment_t(72355, 72367), &
      segment_t(72441, 72447), &
      segment_t(72458, 72543), &
      segment_t(72552, 72639), &
      segment_t(72674, 72687), &
      segment_t(72698, 72703), &
      segment_t(72713, 72713), &
      segment_t(72759, 72759), &
      segment_t(72774, 72783), &
      segment_t(72813, 72815), &
      segment_t(72848, 72849), &
      segment_t(72872, 72872), &
      segment_t(72887, 72959), &
      segment_t(72967, 72967), &
      segment_t(72970, 72970), &
      segment_t(73015, 73017), &
      segment_t(73019, 73019), &
      segment_t(73022, 73022), &
      segment_t(73032, 73039), &
      segment_t(73050, 73055), &
      segment_t(73062, 73062), &
      segment_t(73065, 73065), &
      segment_t(73103, 73103), &
      segment_t(73106, 73106), &
      segment_t(73113, 73119), &
      segment_t(73130, 73135), &
      segment_t(73180, 73183), &
      segment_t(73194, 73439), &
      segment_t(73465, 73471), &
      segment_t(73489, 73489), &
      segment_t(73531, 73533), &
      segment_t(73563, 73647), &
      segment_t(73649, 73663), &
      segment_t(73714, 73726), &
      segment_t(74650, 74751), &
      segment_t(74863, 74863), &
      segment_t(74869, 74879), &
      segment_t(75076, 77711), &
      segment_t(77811, 77823), &
      segment_t(78934, 78943), &
      segment_t(82939, 82943), &
      segment_t(83527, 90367), &
      segment_t(90426, 92159), &
      segment_t(92729, 92735), &
      segment_t(92767, 92767), &
      segment_t(92778, 92781), &
      segment_t(92863, 92863), &
      segment_t(92874, 92879), &
      segment_t(92910, 92911), &
      segment_t(92918, 92927), &
      segment_t(92998, 93007), &
      segment_t(93018, 93018), &
      segment_t(93026, 93026), &
      segment_t(93048, 93052), &
      segment_t(93072, 93503), &
      segment_t(93562, 93759), &
      segment_t(93851, 93855), &
      segment_t(93881, 93882), &
      segment_t(93908, 93951), &
      segment_t(94027, 94030), &
      segment_t(94088, 94094), &
      segment_t(94112, 94175), &
      segment_t(94181, 94191), &
      segment_t(94199, 94207), &
      segment_t(101590, 101630), &
      segment_t(101663, 101759), &
      segment_t(101875, 110575), &
      segment_t(110580, 110580), &
      segment_t(110588, 110588), &
      segment_t(110591, 110591), &
      segment_t(110883, 110897), &
      segment_t(110899, 110927), &
      segment_t(110931, 110932), &
      segment_t(110934, 110947), &
      segment_t(110952, 110959), &
      segment_t(111356, 113663), &
      segment_t(113771, 113775), &
      segment_t(113789, 113791), &
      segment_t(113801, 113807), &
      segment_t(113818, 113819), &
      segment_t(113828, 117759), &
      segment_t(118013, 118015), &
      segment_t(118452, 118457), &
      segment_t(118481, 118495), &
      segment_t(118513, 118527), &
      segment_t(118574, 118575), &
      segment_t(118599, 118607), &
      segment_t(118724, 118783), &
      segment_t(119030, 119039), &
      segment_t(119079, 119080), &
      segment_t(119275, 119295), &
      segment_t(119366, 119487), &
      segment_t(119508, 119519), &
      segment_t(119540, 119551), &
      segment_t(119639, 119647), &
      segment_t(119673, 119807), &
      segment_t(119893, 119893), &
      segment_t(119965, 119965), &
      segment_t(119968, 119969), &
      segment_t(119971, 119972), &
      segment_t(119975, 119976), &
      segment_t(119981, 119981), &
      segment_t(119994, 119994), &
      segment_t(119996, 119996), &
      segment_t(120004, 120004), &
      segment_t(120070, 120070), &
      segment_t(120075, 120076), &
      segment_t(120085, 120085), &
      segment_t(120093, 120093), &
      segment_t(120122, 120122), &
      segment_t(120127, 120127), &
      segment_t(120133, 120133), &
      segment_t(120135, 120137), &
      segment_t(120145, 120145), &
      segment_t(120486, 120487), &
      segment_t(120780, 120781), &
      segment_t(121484, 121498), &
      segment_t(121504, 121504), &
      segment_t(121520, 122623), &
      segment_t(122655, 122660), &
      segment_t(122667, 122879), &
      segment_t(122887, 122887), &
      segment_t(122905, 122906), &
      segment_t(122914, 122914), &
      segment_t(122917, 122917), &
      segment_t(122923, 122927), &
      segment_t(122990, 123022), &
      segment_t(123024, 123135), &
      segment_t(123181, 123183), &
      segment_t(123198, 123199), &
      segment_t(123210, 123213), &
      segment_t(123216, 123535), &
      segment_t(123567, 123583), &
      segment_t(123642, 123646), &
      segment_t(123648, 124111), &
      segment_t(124154, 124367), &
      segment_t(124411, 124414), &
      segment_t(124416, 124607), &
      segment_t(124639, 124639), &
      segment_t(124662, 124669), &
      segment_t(124672, 124895), &
      segment_t(124903, 124903), &
      segment_t(124908, 124908), &
      segment_t(124911, 124911), &
      segment_t(124927, 124927), &
      segment_t(125125, 125126), &
      segment_t(125143, 125183), &
      segment_t(125260, 125263), &
      segment_t(125274, 125277), &
      segment_t(125280, 126064), &
      segment_t(126133, 126208), &
      segment_t(126270, 126463), &
      segment_t(126468, 126468), &
      segment_t(126496, 126496), &
      segment_t(126499, 126499), &
      segment_t(126501, 126502), &
      segment_t(126504, 126504), &
      segment_t(126515, 126515), &
      segment_t(126520, 126520), &
      segment_t(126522, 126522), &
      segment_t(126524, 126529), &
      segment_t(126531, 126534), &
      segment_t(126536, 126536), &
      segment_t(126538, 126538), &
      segment_t(126540, 126540), &
      segment_t(126544, 126544), &
      segment_t(126547, 126547), &
      segment_t(126549, 126550), &
      segment_t(126552, 126552), &
      segment_t(126554, 126554), &
      segment_t(126556, 126556), &
      segment_t(126558, 126558), &
      segment_t(126560, 126560), &
      segment_t(126563, 126563), &
      segment_t(126565, 126566), &
      segment_t(126571, 126571), &
      segment_t(126579, 126579), &
      segment_t(126584, 126584), &
      segment_t(126589, 126589), &
      segment_t(126591, 126591), &
      segment_t(126602, 126602), &
      segment_t(126620, 126624), &
      segment_t(126628, 126628), &
      segment_t(126634, 126634), &
      segment_t(126652, 126703), &
      segment_t(126706, 126975), &
      segment_t(127020, 127023), &
      segment_t(127124, 127135), &
      segment_t(127151, 127152), &
      segment_t(127168, 127168), &
      segment_t(127184, 127184), &
      segment_t(127222, 127231), &
      segment_t(127406, 127461), &
      segment_t(127491, 127503), &
      segment_t(127548, 127551), &
      segment_t(127561, 127567), &
      segment_t(127570, 127583), &
      segment_t(127590, 127743), &
      segment_t(128729, 128731), &
      segment_t(128749, 128751), &
      segment_t(128765, 128767), &
      segment_t(128986, 128991), &
      segment_t(129004, 129007), &
      segment_t(129009, 129023), &
      segment_t(129036, 129039), &
      segment_t(129096, 129103), &
      segment_t(129114, 129119), &
      segment_t(129160, 129167), &
      segment_t(129198, 129199), &
      segment_t(129212, 129215), &
      segment_t(129218, 129231), &
      segment_t(129241, 129279), &
      segment_t(129624, 129631), &
      segment_t(129646, 129647), &
      segment_t(129661, 129663), &
      segment_t(129675, 129677), &
      segment_t(129735, 129735), &
      segment_t(129737, 129740), &
      segment_t(129757, 129758), &
      segment_t(129771, 129774), &
      segment_t(129785, 129791), &
      segment_t(129939, 129939), &
      segment_t(130043, 131071), &
      segment_t(173792, 173823), &
      segment_t(178206, 178207), &
      segment_t(183982, 183983), &
      segment_t(191457, 191471), &
      segment_t(192094, 194559), &
      segment_t(195102, 196607), &
      segment_t(201547, 201551), &
      segment_t(210042, 917504), &
      segment_t(917506, 917535), &
      segment_t(917632, 917759), &
      segment_t(918000, 983039), &
      segment_t(1048574, 1048575), &
      segment_t(1114110, 1114111) &
   ]

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

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

   type(segment_t), parameter :: unicode_gc_Lt(*) = &
   [ &
      segment_t(453, 453), &
      segment_t(456, 456), &
      segment_t(459, 459), &
      segment_t(498, 498), &
      segment_t(8072, 8079), &
      segment_t(8088, 8095), &
      segment_t(8104, 8111), &
      segment_t(8124, 8124), &
      segment_t(8140, 8140), &
      segment_t(8188, 8188) &
   ]

   type(segment_t), parameter :: unicode_gc_Lm(*) = &
   [ &
      segment_t(688, 705), &
      segment_t(710, 721), &
      segment_t(736, 740), &
      segment_t(748, 748), &
      segment_t(750, 750), &
      segment_t(884, 884), &
      segment_t(890, 890), &
      segment_t(1369, 1369), &
      segment_t(1600, 1600), &
      segment_t(1765, 1766), &
      segment_t(2036, 2037), &
      segment_t(2042, 2042), &
      segment_t(2074, 2074), &
      segment_t(2084, 2084), &
      segment_t(2088, 2088), &
      segment_t(2249, 2249), &
      segment_t(2417, 2417), &
      segment_t(3654, 3654), &
      segment_t(3782, 3782), &
      segment_t(4348, 4348), &
      segment_t(6103, 6103), &
      segment_t(6211, 6211), &
      segment_t(6823, 6823), &
      segment_t(7288, 7293), &
      segment_t(7468, 7530), &
      segment_t(7544, 7544), &
      segment_t(7579, 7615), &
      segment_t(8305, 8305), &
      segment_t(8319, 8319), &
      segment_t(8336, 8348), &
      segment_t(11388, 11389), &
      segment_t(11631, 11631), &
      segment_t(11823, 11823), &
      segment_t(12293, 12293), &
      segment_t(12337, 12341), &
      segment_t(12347, 12347), &
      segment_t(12445, 12446), &
      segment_t(12540, 12542), &
      segment_t(40981, 40981), &
      segment_t(42232, 42237), &
      segment_t(42508, 42508), &
      segment_t(42623, 42623), &
      segment_t(42652, 42653), &
      segment_t(42775, 42783), &
      segment_t(42864, 42864), &
      segment_t(42888, 42888), &
      segment_t(42993, 42996), &
      segment_t(43000, 43001), &
      segment_t(43471, 43471), &
      segment_t(43494, 43494), &
      segment_t(43632, 43632), &
      segment_t(43741, 43741), &
      segment_t(43763, 43764), &
      segment_t(43868, 43871), &
      segment_t(43881, 43881), &
      segment_t(65392, 65392), &
      segment_t(65438, 65439), &
      segment_t(67456, 67461), &
      segment_t(67463, 67504), &
      segment_t(67506, 67514), &
      segment_t(68942, 68942), &
      segment_t(68975, 68975), &
      segment_t(69317, 69317), &
      segment_t(73177, 73177), &
      segment_t(92992, 92995), &
      segment_t(93504, 93506), &
      segment_t(93547, 93548), &
      segment_t(94099, 94111), &
      segment_t(94176, 94177), &
      segment_t(94179, 94179), &
      segment_t(94194, 94195), &
      segment_t(110576, 110579), &
      segment_t(110581, 110587), &
      segment_t(110589, 110590), &
      segment_t(122928, 122989), &
      segment_t(123191, 123197), &
      segment_t(124139, 124139), &
      segment_t(124671, 124671), &
      segment_t(125259, 125259) &
   ]

   type(segment_t), parameter :: unicode_gc_Lo(*) = &
   [ &
      segment_t(170, 170), &
      segment_t(186, 186), &
      segment_t(443, 443), &
      segment_t(448, 451), &
      segment_t(660, 661), &
      segment_t(1488, 1514), &
      segment_t(1519, 1522), &
      segment_t(1568, 1599), &
      segment_t(1601, 1610), &
      segment_t(1646, 1647), &
      segment_t(1649, 1747), &
      segment_t(1749, 1749), &
      segment_t(1774, 1775), &
      segment_t(1786, 1788), &
      segment_t(1791, 1791), &
      segment_t(1808, 1808), &
      segment_t(1810, 1839), &
      segment_t(1869, 1957), &
      segment_t(1969, 1969), &
      segment_t(1994, 2026), &
      segment_t(2048, 2069), &
      segment_t(2112, 2136), &
      segment_t(2144, 2154), &
      segment_t(2160, 2183), &
      segment_t(2185, 2191), &
      segment_t(2208, 2248), &
      segment_t(2308, 2361), &
      segment_t(2365, 2365), &
      segment_t(2384, 2384), &
      segment_t(2392, 2401), &
      segment_t(2418, 2432), &
      segment_t(2437, 2444), &
      segment_t(2447, 2448), &
      segment_t(2451, 2472), &
      segment_t(2474, 2480), &
      segment_t(2482, 2482), &
      segment_t(2486, 2489), &
      segment_t(2493, 2493), &
      segment_t(2510, 2510), &
      segment_t(2524, 2525), &
      segment_t(2527, 2529), &
      segment_t(2544, 2545), &
      segment_t(2556, 2556), &
      segment_t(2565, 2570), &
      segment_t(2575, 2576), &
      segment_t(2579, 2600), &
      segment_t(2602, 2608), &
      segment_t(2610, 2611), &
      segment_t(2613, 2614), &
      segment_t(2616, 2617), &
      segment_t(2649, 2652), &
      segment_t(2654, 2654), &
      segment_t(2674, 2676), &
      segment_t(2693, 2701), &
      segment_t(2703, 2705), &
      segment_t(2707, 2728), &
      segment_t(2730, 2736), &
      segment_t(2738, 2739), &
      segment_t(2741, 2745), &
      segment_t(2749, 2749), &
      segment_t(2768, 2768), &
      segment_t(2784, 2785), &
      segment_t(2809, 2809), &
      segment_t(2821, 2828), &
      segment_t(2831, 2832), &
      segment_t(2835, 2856), &
      segment_t(2858, 2864), &
      segment_t(2866, 2867), &
      segment_t(2869, 2873), &
      segment_t(2877, 2877), &
      segment_t(2908, 2909), &
      segment_t(2911, 2913), &
      segment_t(2929, 2929), &
      segment_t(2947, 2947), &
      segment_t(2949, 2954), &
      segment_t(2958, 2960), &
      segment_t(2962, 2965), &
      segment_t(2969, 2970), &
      segment_t(2972, 2972), &
      segment_t(2974, 2975), &
      segment_t(2979, 2980), &
      segment_t(2984, 2986), &
      segment_t(2990, 3001), &
      segment_t(3024, 3024), &
      segment_t(3077, 3084), &
      segment_t(3086, 3088), &
      segment_t(3090, 3112), &
      segment_t(3114, 3129), &
      segment_t(3133, 3133), &
      segment_t(3160, 3162), &
      segment_t(3164, 3165), &
      segment_t(3168, 3169), &
      segment_t(3200, 3200), &
      segment_t(3205, 3212), &
      segment_t(3214, 3216), &
      segment_t(3218, 3240), &
      segment_t(3242, 3251), &
      segment_t(3253, 3257), &
      segment_t(3261, 3261), &
      segment_t(3292, 3294), &
      segment_t(3296, 3297), &
      segment_t(3313, 3314), &
      segment_t(3332, 3340), &
      segment_t(3342, 3344), &
      segment_t(3346, 3386), &
      segment_t(3389, 3389), &
      segment_t(3406, 3406), &
      segment_t(3412, 3414), &
      segment_t(3423, 3425), &
      segment_t(3450, 3455), &
      segment_t(3461, 3478), &
      segment_t(3482, 3505), &
      segment_t(3507, 3515), &
      segment_t(3517, 3517), &
      segment_t(3520, 3526), &
      segment_t(3585, 3632), &
      segment_t(3634, 3635), &
      segment_t(3648, 3653), &
      segment_t(3713, 3714), &
      segment_t(3716, 3716), &
      segment_t(3718, 3722), &
      segment_t(3724, 3747), &
      segment_t(3749, 3749), &
      segment_t(3751, 3760), &
      segment_t(3762, 3763), &
      segment_t(3773, 3773), &
      segment_t(3776, 3780), &
      segment_t(3804, 3807), &
      segment_t(3840, 3840), &
      segment_t(3904, 3911), &
      segment_t(3913, 3948), &
      segment_t(3976, 3980), &
      segment_t(4096, 4138), &
      segment_t(4159, 4159), &
      segment_t(4176, 4181), &
      segment_t(4186, 4189), &
      segment_t(4193, 4193), &
      segment_t(4197, 4198), &
      segment_t(4206, 4208), &
      segment_t(4213, 4225), &
      segment_t(4238, 4238), &
      segment_t(4352, 4680), &
      segment_t(4682, 4685), &
      segment_t(4688, 4694), &
      segment_t(4696, 4696), &
      segment_t(4698, 4701), &
      segment_t(4704, 4744), &
      segment_t(4746, 4749), &
      segment_t(4752, 4784), &
      segment_t(4786, 4789), &
      segment_t(4792, 4798), &
      segment_t(4800, 4800), &
      segment_t(4802, 4805), &
      segment_t(4808, 4822), &
      segment_t(4824, 4880), &
      segment_t(4882, 4885), &
      segment_t(4888, 4954), &
      segment_t(4992, 5007), &
      segment_t(5121, 5740), &
      segment_t(5743, 5759), &
      segment_t(5761, 5786), &
      segment_t(5792, 5866), &
      segment_t(5873, 5880), &
      segment_t(5888, 5905), &
      segment_t(5919, 5937), &
      segment_t(5952, 5969), &
      segment_t(5984, 5996), &
      segment_t(5998, 6000), &
      segment_t(6016, 6067), &
      segment_t(6108, 6108), &
      segment_t(6176, 6210), &
      segment_t(6212, 6264), &
      segment_t(6272, 6276), &
      segment_t(6279, 6312), &
      segment_t(6314, 6314), &
      segment_t(6320, 6389), &
      segment_t(6400, 6430), &
      segment_t(6480, 6509), &
      segment_t(6512, 6516), &
      segment_t(6528, 6571), &
      segment_t(6576, 6601), &
      segment_t(6656, 6678), &
      segment_t(6688, 6740), &
      segment_t(6917, 6963), &
      segment_t(6981, 6988), &
      segment_t(7043, 7072), &
      segment_t(7086, 7087), &
      segment_t(7098, 7141), &
      segment_t(7168, 7203), &
      segment_t(7245, 7247), &
      segment_t(7258, 7287), &
      segment_t(7401, 7404), &
      segment_t(7406, 7411), &
      segment_t(7413, 7414), &
      segment_t(7418, 7418), &
      segment_t(8501, 8504), &
      segment_t(11568, 11623), &
      segment_t(11648, 11670), &
      segment_t(11680, 11686), &
      segment_t(11688, 11694), &
      segment_t(11696, 11702), &
      segment_t(11704, 11710), &
      segment_t(11712, 11718), &
      segment_t(11720, 11726), &
      segment_t(11728, 11734), &
      segment_t(11736, 11742), &
      segment_t(12294, 12294), &
      segment_t(12348, 12348), &
      segment_t(12353, 12438), &
      segment_t(12447, 12447), &
      segment_t(12449, 12538), &
      segment_t(12543, 12543), &
      segment_t(12549, 12591), &
      segment_t(12593, 12686), &
      segment_t(12704, 12735), &
      segment_t(12784, 12799), &
      segment_t(13312, 19903), &
      segment_t(19968, 40980), &
      segment_t(40982, 42124), &
      segment_t(42192, 42231), &
      segment_t(42240, 42507), &
      segment_t(42512, 42527), &
      segment_t(42538, 42539), &
      segment_t(42606, 42606), &
      segment_t(42656, 42725), &
      segment_t(42895, 42895), &
      segment_t(42999, 42999), &
      segment_t(43003, 43009), &
      segment_t(43011, 43013), &
      segment_t(43015, 43018), &
      segment_t(43020, 43042), &
      segment_t(43072, 43123), &
      segment_t(43138, 43187), &
      segment_t(43250, 43255), &
      segment_t(43259, 43259), &
      segment_t(43261, 43262), &
      segment_t(43274, 43301), &
      segment_t(43312, 43334), &
      segment_t(43360, 43388), &
      segment_t(43396, 43442), &
      segment_t(43488, 43492), &
      segment_t(43495, 43503), &
      segment_t(43514, 43518), &
      segment_t(43520, 43560), &
      segment_t(43584, 43586), &
      segment_t(43588, 43595), &
      segment_t(43616, 43631), &
      segment_t(43633, 43638), &
      segment_t(43642, 43642), &
      segment_t(43646, 43695), &
      segment_t(43697, 43697), &
      segment_t(43701, 43702), &
      segment_t(43705, 43709), &
      segment_t(43712, 43712), &
      segment_t(43714, 43714), &
      segment_t(43739, 43740), &
      segment_t(43744, 43754), &
      segment_t(43762, 43762), &
      segment_t(43777, 43782), &
      segment_t(43785, 43790), &
      segment_t(43793, 43798), &
      segment_t(43808, 43814), &
      segment_t(43816, 43822), &
      segment_t(43968, 44002), &
      segment_t(44032, 55203), &
      segment_t(55216, 55238), &
      segment_t(55243, 55291), &
      segment_t(63744, 64109), &
      segment_t(64112, 64217), &
      segment_t(64285, 64285), &
      segment_t(64287, 64296), &
      segment_t(64298, 64310), &
      segment_t(64312, 64316), &
      segment_t(64318, 64318), &
      segment_t(64320, 64321), &
      segment_t(64323, 64324), &
      segment_t(64326, 64433), &
      segment_t(64467, 64829), &
      segment_t(64848, 64911), &
      segment_t(64914, 64967), &
      segment_t(65008, 65019), &
      segment_t(65136, 65140), &
      segment_t(65142, 65276), &
      segment_t(65382, 65391), &
      segment_t(65393, 65437), &
      segment_t(65440, 65470), &
      segment_t(65474, 65479), &
      segment_t(65482, 65487), &
      segment_t(65490, 65495), &
      segment_t(65498, 65500), &
      segment_t(65536, 65547), &
      segment_t(65549, 65574), &
      segment_t(65576, 65594), &
      segment_t(65596, 65597), &
      segment_t(65599, 65613), &
      segment_t(65616, 65629), &
      segment_t(65664, 65786), &
      segment_t(66176, 66204), &
      segment_t(66208, 66256), &
      segment_t(66304, 66335), &
      segment_t(66349, 66368), &
      segment_t(66370, 66377), &
      segment_t(66384, 66421), &
      segment_t(66432, 66461), &
      segment_t(66464, 66499), &
      segment_t(66504, 66511), &
      segment_t(66640, 66717), &
      segment_t(66816, 66855), &
      segment_t(66864, 66915), &
      segment_t(67008, 67059), &
      segment_t(67072, 67382), &
      segment_t(67392, 67413), &
      segment_t(67424, 67431), &
      segment_t(67584, 67589), &
      segment_t(67592, 67592), &
      segment_t(67594, 67637), &
      segment_t(67639, 67640), &
      segment_t(67644, 67644), &
      segment_t(67647, 67669), &
      segment_t(67680, 67702), &
      segment_t(67712, 67742), &
      segment_t(67808, 67826), &
      segment_t(67828, 67829), &
      segment_t(67840, 67861), &
      segment_t(67872, 67897), &
      segment_t(67904, 67929), &
      segment_t(67968, 68023), &
      segment_t(68030, 68031), &
      segment_t(68096, 68096), &
      segment_t(68112, 68115), &
      segment_t(68117, 68119), &
      segment_t(68121, 68149), &
      segment_t(68192, 68220), &
      segment_t(68224, 68252), &
      segment_t(68288, 68295), &
      segment_t(68297, 68324), &
      segment_t(68352, 68405), &
      segment_t(68416, 68437), &
      segment_t(68448, 68466), &
      segment_t(68480, 68497), &
      segment_t(68608, 68680), &
      segment_t(68864, 68899), &
      segment_t(68938, 68941), &
      segment_t(68943, 68943), &
      segment_t(69248, 69289), &
      segment_t(69296, 69297), &
      segment_t(69314, 69316), &
      segment_t(69318, 69319), &
      segment_t(69376, 69404), &
      segment_t(69415, 69415), &
      segment_t(69424, 69445), &
      segment_t(69488, 69505), &
      segment_t(69552, 69572), &
      segment_t(69600, 69622), &
      segment_t(69635, 69687), &
      segment_t(69745, 69746), &
      segment_t(69749, 69749), &
      segment_t(69763, 69807), &
      segment_t(69840, 69864), &
      segment_t(69891, 69926), &
      segment_t(69956, 69956), &
      segment_t(69959, 69959), &
      segment_t(69968, 70002), &
      segment_t(70006, 70006), &
      segment_t(70019, 70066), &
      segment_t(70081, 70084), &
      segment_t(70106, 70106), &
      segment_t(70108, 70108), &
      segment_t(70144, 70161), &
      segment_t(70163, 70187), &
      segment_t(70207, 70208), &
      segment_t(70272, 70278), &
      segment_t(70280, 70280), &
      segment_t(70282, 70285), &
      segment_t(70287, 70301), &
      segment_t(70303, 70312), &
      segment_t(70320, 70366), &
      segment_t(70405, 70412), &
      segment_t(70415, 70416), &
      segment_t(70419, 70440), &
      segment_t(70442, 70448), &
      segment_t(70450, 70451), &
      segment_t(70453, 70457), &
      segment_t(70461, 70461), &
      segment_t(70480, 70480), &
      segment_t(70493, 70497), &
      segment_t(70528, 70537), &
      segment_t(70539, 70539), &
      segment_t(70542, 70542), &
      segment_t(70544, 70581), &
      segment_t(70583, 70583), &
      segment_t(70609, 70609), &
      segment_t(70611, 70611), &
      segment_t(70656, 70708), &
      segment_t(70727, 70730), &
      segment_t(70751, 70753), &
      segment_t(70784, 70831), &
      segment_t(70852, 70853), &
      segment_t(70855, 70855), &
      segment_t(71040, 71086), &
      segment_t(71128, 71131), &
      segment_t(71168, 71215), &
      segment_t(71236, 71236), &
      segment_t(71296, 71338), &
      segment_t(71352, 71352), &
      segment_t(71424, 71450), &
      segment_t(71488, 71494), &
      segment_t(71680, 71723), &
      segment_t(71935, 71942), &
      segment_t(71945, 71945), &
      segment_t(71948, 71955), &
      segment_t(71957, 71958), &
      segment_t(71960, 71983), &
      segment_t(71999, 71999), &
      segment_t(72001, 72001), &
      segment_t(72096, 72103), &
      segment_t(72106, 72144), &
      segment_t(72161, 72161), &
      segment_t(72163, 72163), &
      segment_t(72192, 72192), &
      segment_t(72203, 72242), &
      segment_t(72250, 72250), &
      segment_t(72272, 72272), &
      segment_t(72284, 72329), &
      segment_t(72349, 72349), &
      segment_t(72368, 72440), &
      segment_t(72640, 72672), &
      segment_t(72704, 72712), &
      segment_t(72714, 72750), &
      segment_t(72768, 72768), &
      segment_t(72818, 72847), &
      segment_t(72960, 72966), &
      segment_t(72968, 72969), &
      segment_t(72971, 73008), &
      segment_t(73030, 73030), &
      segment_t(73056, 73061), &
      segment_t(73063, 73064), &
      segment_t(73066, 73097), &
      segment_t(73112, 73112), &
      segment_t(73136, 73176), &
      segment_t(73178, 73179), &
      segment_t(73440, 73458), &
      segment_t(73474, 73474), &
      segment_t(73476, 73488), &
      segment_t(73490, 73523), &
      segment_t(73648, 73648), &
      segment_t(73728, 74649), &
      segment_t(74880, 75075), &
      segment_t(77712, 77808), &
      segment_t(77824, 78895), &
      segment_t(78913, 78918), &
      segment_t(78944, 82938), &
      segment_t(82944, 83526), &
      segment_t(90368, 90397), &
      segment_t(92160, 92728), &
      segment_t(92736, 92766), &
      segment_t(92784, 92862), &
      segment_t(92880, 92909), &
      segment_t(92928, 92975), &
      segment_t(93027, 93047), &
      segment_t(93053, 93071), &
      segment_t(93507, 93546), &
      segment_t(93952, 94026), &
      segment_t(94032, 94032), &
      segment_t(94208, 101589), &
      segment_t(101631, 101662), &
      segment_t(101760, 101874), &
      segment_t(110592, 110882), &
      segment_t(110898, 110898), &
      segment_t(110928, 110930), &
      segment_t(110933, 110933), &
      segment_t(110948, 110951), &
      segment_t(110960, 111355), &
      segment_t(113664, 113770), &
      segment_t(113776, 113788), &
      segment_t(113792, 113800), &
      segment_t(113808, 113817), &
      segment_t(122634, 122634), &
      segment_t(123136, 123180), &
      segment_t(123214, 123214), &
      segment_t(123536, 123565), &
      segment_t(123584, 123627), &
      segment_t(124112, 124138), &
      segment_t(124368, 124397), &
      segment_t(124400, 124400), &
      segment_t(124608, 124638), &
      segment_t(124640, 124642), &
      segment_t(124644, 124645), &
      segment_t(124647, 124653), &
      segment_t(124656, 124660), &
      segment_t(124670, 124670), &
      segment_t(124896, 124902), &
      segment_t(124904, 124907), &
      segment_t(124909, 124910), &
      segment_t(124912, 124926), &
      segment_t(124928, 125124), &
      segment_t(126464, 126467), &
      segment_t(126469, 126495), &
      segment_t(126497, 126498), &
      segment_t(126500, 126500), &
      segment_t(126503, 126503), &
      segment_t(126505, 126514), &
      segment_t(126516, 126519), &
      segment_t(126521, 126521), &
      segment_t(126523, 126523), &
      segment_t(126530, 126530), &
      segment_t(126535, 126535), &
      segment_t(126537, 126537), &
      segment_t(126539, 126539), &
      segment_t(126541, 126543), &
      segment_t(126545, 126546), &
      segment_t(126548, 126548), &
      segment_t(126551, 126551), &
      segment_t(126553, 126553), &
      segment_t(126555, 126555), &
      segment_t(126557, 126557), &
      segment_t(126559, 126559), &
      segment_t(126561, 126562), &
      segment_t(126564, 126564), &
      segment_t(126567, 126570), &
      segment_t(126572, 126578), &
      segment_t(126580, 126583), &
      segment_t(126585, 126588), &
      segment_t(126590, 126590), &
      segment_t(126592, 126601), &
      segment_t(126603, 126619), &
      segment_t(126625, 126627), &
      segment_t(126629, 126633), &
      segment_t(126635, 126651), &
      segment_t(131072, 173791), &
      segment_t(173824, 178205), &
      segment_t(178208, 183981), &
      segment_t(183984, 191456), &
      segment_t(191472, 192093), &
      segment_t(194560, 195101), &
      segment_t(196608, 201546), &
      segment_t(201552, 210041) &
   ]

   type(segment_t), parameter :: unicode_gc_Mn(*) = &
   [ &
      segment_t(768, 879), &
      segment_t(1155, 1159), &
      segment_t(1425, 1469), &
      segment_t(1471, 1471), &
      segment_t(1473, 1474), &
      segment_t(1476, 1477), &
      segment_t(1479, 1479), &
      segment_t(1552, 1562), &
      segment_t(1611, 1631), &
      segment_t(1648, 1648), &
      segment_t(1750, 1756), &
      segment_t(1759, 1764), &
      segment_t(1767, 1768), &
      segment_t(1770, 1773), &
      segment_t(1809, 1809), &
      segment_t(1840, 1866), &
      segment_t(1958, 1968), &
      segment_t(2027, 2035), &
      segment_t(2045, 2045), &
      segment_t(2070, 2073), &
      segment_t(2075, 2083), &
      segment_t(2085, 2087), &
      segment_t(2089, 2093), &
      segment_t(2137, 2139), &
      segment_t(2199, 2207), &
      segment_t(2250, 2273), &
      segment_t(2275, 2306), &
      segment_t(2362, 2362), &
      segment_t(2364, 2364), &
      segment_t(2369, 2376), &
      segment_t(2381, 2381), &
      segment_t(2385, 2391), &
      segment_t(2402, 2403), &
      segment_t(2433, 2433), &
      segment_t(2492, 2492), &
      segment_t(2497, 2500), &
      segment_t(2509, 2509), &
      segment_t(2530, 2531), &
      segment_t(2558, 2558), &
      segment_t(2561, 2562), &
      segment_t(2620, 2620), &
      segment_t(2625, 2626), &
      segment_t(2631, 2632), &
      segment_t(2635, 2637), &
      segment_t(2641, 2641), &
      segment_t(2672, 2673), &
      segment_t(2677, 2677), &
      segment_t(2689, 2690), &
      segment_t(2748, 2748), &
      segment_t(2753, 2757), &
      segment_t(2759, 2760), &
      segment_t(2765, 2765), &
      segment_t(2786, 2787), &
      segment_t(2810, 2815), &
      segment_t(2817, 2817), &
      segment_t(2876, 2876), &
      segment_t(2879, 2879), &
      segment_t(2881, 2884), &
      segment_t(2893, 2893), &
      segment_t(2901, 2902), &
      segment_t(2914, 2915), &
      segment_t(2946, 2946), &
      segment_t(3008, 3008), &
      segment_t(3021, 3021), &
      segment_t(3072, 3072), &
      segment_t(3076, 3076), &
      segment_t(3132, 3132), &
      segment_t(3134, 3136), &
      segment_t(3142, 3144), &
      segment_t(3146, 3149), &
      segment_t(3157, 3158), &
      segment_t(3170, 3171), &
      segment_t(3201, 3201), &
      segment_t(3260, 3260), &
      segment_t(3263, 3263), &
      segment_t(3270, 3270), &
      segment_t(3276, 3277), &
      segment_t(3298, 3299), &
      segment_t(3328, 3329), &
      segment_t(3387, 3388), &
      segment_t(3393, 3396), &
      segment_t(3405, 3405), &
      segment_t(3426, 3427), &
      segment_t(3457, 3457), &
      segment_t(3530, 3530), &
      segment_t(3538, 3540), &
      segment_t(3542, 3542), &
      segment_t(3633, 3633), &
      segment_t(3636, 3642), &
      segment_t(3655, 3662), &
      segment_t(3761, 3761), &
      segment_t(3764, 3772), &
      segment_t(3784, 3790), &
      segment_t(3864, 3865), &
      segment_t(3893, 3893), &
      segment_t(3895, 3895), &
      segment_t(3897, 3897), &
      segment_t(3953, 3966), &
      segment_t(3968, 3972), &
      segment_t(3974, 3975), &
      segment_t(3981, 3991), &
      segment_t(3993, 4028), &
      segment_t(4038, 4038), &
      segment_t(4141, 4144), &
      segment_t(4146, 4151), &
      segment_t(4153, 4154), &
      segment_t(4157, 4158), &
      segment_t(4184, 4185), &
      segment_t(4190, 4192), &
      segment_t(4209, 4212), &
      segment_t(4226, 4226), &
      segment_t(4229, 4230), &
      segment_t(4237, 4237), &
      segment_t(4253, 4253), &
      segment_t(4957, 4959), &
      segment_t(5906, 5908), &
      segment_t(5938, 5939), &
      segment_t(5970, 5971), &
      segment_t(6002, 6003), &
      segment_t(6068, 6069), &
      segment_t(6071, 6077), &
      segment_t(6086, 6086), &
      segment_t(6089, 6099), &
      segment_t(6109, 6109), &
      segment_t(6155, 6157), &
      segment_t(6159, 6159), &
      segment_t(6277, 6278), &
      segment_t(6313, 6313), &
      segment_t(6432, 6434), &
      segment_t(6439, 6440), &
      segment_t(6450, 6450), &
      segment_t(6457, 6459), &
      segment_t(6679, 6680), &
      segment_t(6683, 6683), &
      segment_t(6742, 6742), &
      segment_t(6744, 6750), &
      segment_t(6752, 6752), &
      segment_t(6754, 6754), &
      segment_t(6757, 6764), &
      segment_t(6771, 6780), &
      segment_t(6783, 6783), &
      segment_t(6832, 6845), &
      segment_t(6847, 6877), &
      segment_t(6880, 6891), &
      segment_t(6912, 6915), &
      segment_t(6964, 6964), &
      segment_t(6966, 6970), &
      segment_t(6972, 6972), &
      segment_t(6978, 6978), &
      segment_t(7019, 7027), &
      segment_t(7040, 7041), &
      segment_t(7074, 7077), &
      segment_t(7080, 7081), &
      segment_t(7083, 7085), &
      segment_t(7142, 7142), &
      segment_t(7144, 7145), &
      segment_t(7149, 7149), &
      segment_t(7151, 7153), &
      segment_t(7212, 7219), &
      segment_t(7222, 7223), &
      segment_t(7376, 7378), &
      segment_t(7380, 7392), &
      segment_t(7394, 7400), &
      segment_t(7405, 7405), &
      segment_t(7412, 7412), &
      segment_t(7416, 7417), &
      segment_t(7616, 7679), &
      segment_t(8400, 8412), &
      segment_t(8417, 8417), &
      segment_t(8421, 8432), &
      segment_t(11503, 11505), &
      segment_t(11647, 11647), &
      segment_t(11744, 11775), &
      segment_t(12330, 12333), &
      segment_t(12441, 12442), &
      segment_t(42607, 42607), &
      segment_t(42612, 42621), &
      segment_t(42654, 42655), &
      segment_t(42736, 42737), &
      segment_t(43010, 43010), &
      segment_t(43014, 43014), &
      segment_t(43019, 43019), &
      segment_t(43045, 43046), &
      segment_t(43052, 43052), &
      segment_t(43204, 43205), &
      segment_t(43232, 43249), &
      segment_t(43263, 43263), &
      segment_t(43302, 43309), &
      segment_t(43335, 43345), &
      segment_t(43392, 43394), &
      segment_t(43443, 43443), &
      segment_t(43446, 43449), &
      segment_t(43452, 43453), &
      segment_t(43493, 43493), &
      segment_t(43561, 43566), &
      segment_t(43569, 43570), &
      segment_t(43573, 43574), &
      segment_t(43587, 43587), &
      segment_t(43596, 43596), &
      segment_t(43644, 43644), &
      segment_t(43696, 43696), &
      segment_t(43698, 43700), &
      segment_t(43703, 43704), &
      segment_t(43710, 43711), &
      segment_t(43713, 43713), &
      segment_t(43756, 43757), &
      segment_t(43766, 43766), &
      segment_t(44005, 44005), &
      segment_t(44008, 44008), &
      segment_t(44013, 44013), &
      segment_t(64286, 64286), &
      segment_t(65024, 65039), &
      segment_t(65056, 65071), &
      segment_t(66045, 66045), &
      segment_t(66272, 66272), &
      segment_t(66422, 66426), &
      segment_t(68097, 68099), &
      segment_t(68101, 68102), &
      segment_t(68108, 68111), &
      segment_t(68152, 68154), &
      segment_t(68159, 68159), &
      segment_t(68325, 68326), &
      segment_t(68900, 68903), &
      segment_t(68969, 68973), &
      segment_t(69291, 69292), &
      segment_t(69370, 69375), &
      segment_t(69446, 69456), &
      segment_t(69506, 69509), &
      segment_t(69633, 69633), &
      segment_t(69688, 69702), &
      segment_t(69744, 69744), &
      segment_t(69747, 69748), &
      segment_t(69759, 69761), &
      segment_t(69811, 69814), &
      segment_t(69817, 69818), &
      segment_t(69826, 69826), &
      segment_t(69888, 69890), &
      segment_t(69927, 69931), &
      segment_t(69933, 69940), &
      segment_t(70003, 70003), &
      segment_t(70016, 70017), &
      segment_t(70070, 70078), &
      segment_t(70089, 70092), &
      segment_t(70095, 70095), &
      segment_t(70191, 70193), &
      segment_t(70196, 70196), &
      segment_t(70198, 70199), &
      segment_t(70206, 70206), &
      segment_t(70209, 70209), &
      segment_t(70367, 70367), &
      segment_t(70371, 70378), &
      segment_t(70400, 70401), &
      segment_t(70459, 70460), &
      segment_t(70464, 70464), &
      segment_t(70502, 70508), &
      segment_t(70512, 70516), &
      segment_t(70587, 70592), &
      segment_t(70606, 70606), &
      segment_t(70608, 70608), &
      segment_t(70610, 70610), &
      segment_t(70625, 70626), &
      segment_t(70712, 70719), &
      segment_t(70722, 70724), &
      segment_t(70726, 70726), &
      segment_t(70750, 70750), &
      segment_t(70835, 70840), &
      segment_t(70842, 70842), &
      segment_t(70847, 70848), &
      segment_t(70850, 70851), &
      segment_t(71090, 71093), &
      segment_t(71100, 71101), &
      segment_t(71103, 71104), &
      segment_t(71132, 71133), &
      segment_t(71219, 71226), &
      segment_t(71229, 71229), &
      segment_t(71231, 71232), &
      segment_t(71339, 71339), &
      segment_t(71341, 71341), &
      segment_t(71344, 71349), &
      segment_t(71351, 71351), &
      segment_t(71453, 71453), &
      segment_t(71455, 71455), &
      segment_t(71458, 71461), &
      segment_t(71463, 71467), &
      segment_t(71727, 71735), &
      segment_t(71737, 71738), &
      segment_t(71995, 71996), &
      segment_t(71998, 71998), &
      segment_t(72003, 72003), &
      segment_t(72148, 72151), &
      segment_t(72154, 72155), &
      segment_t(72160, 72160), &
      segment_t(72193, 72202), &
      segment_t(72243, 72248), &
      segment_t(72251, 72254), &
      segment_t(72263, 72263), &
      segment_t(72273, 72278), &
      segment_t(72281, 72283), &
      segment_t(72330, 72342), &
      segment_t(72344, 72345), &
      segment_t(72544, 72544), &
      segment_t(72546, 72548), &
      segment_t(72550, 72550), &
      segment_t(72752, 72758), &
      segment_t(72760, 72765), &
      segment_t(72767, 72767), &
      segment_t(72850, 72871), &
      segment_t(72874, 72880), &
      segment_t(72882, 72883), &
      segment_t(72885, 72886), &
      segment_t(73009, 73014), &
      segment_t(73018, 73018), &
      segment_t(73020, 73021), &
      segment_t(73023, 73029), &
      segment_t(73031, 73031), &
      segment_t(73104, 73105), &
      segment_t(73109, 73109), &
      segment_t(73111, 73111), &
      segment_t(73459, 73460), &
      segment_t(73472, 73473), &
      segment_t(73526, 73530), &
      segment_t(73536, 73536), &
      segment_t(73538, 73538), &
      segment_t(73562, 73562), &
      segment_t(78912, 78912), &
      segment_t(78919, 78933), &
      segment_t(90398, 90409), &
      segment_t(90413, 90415), &
      segment_t(92912, 92916), &
      segment_t(92976, 92982), &
      segment_t(94031, 94031), &
      segment_t(94095, 94098), &
      segment_t(94180, 94180), &
      segment_t(113821, 113822), &
      segment_t(118528, 118573), &
      segment_t(118576, 118598), &
      segment_t(119143, 119145), &
      segment_t(119163, 119170), &
      segment_t(119173, 119179), &
      segment_t(119210, 119213), &
      segment_t(119362, 119364), &
      segment_t(121344, 121398), &
      segment_t(121403, 121452), &
      segment_t(121461, 121461), &
      segment_t(121476, 121476), &
      segment_t(121499, 121503), &
      segment_t(121505, 121519), &
      segment_t(122880, 122886), &
      segment_t(122888, 122904), &
      segment_t(122907, 122913), &
      segment_t(122915, 122916), &
      segment_t(122918, 122922), &
      segment_t(123023, 123023), &
      segment_t(123184, 123190), &
      segment_t(123566, 123566), &
      segment_t(123628, 123631), &
      segment_t(124140, 124143), &
      segment_t(124398, 124399), &
      segment_t(124643, 124643), &
      segment_t(124646, 124646), &
      segment_t(124654, 124655), &
      segment_t(124661, 124661), &
      segment_t(125136, 125142), &
      segment_t(125252, 125258), &
      segment_t(917760, 917999) &
   ]

   type(segment_t), parameter :: unicode_gc_Me(*) = &
   [ &
      segment_t(1160, 1161), &
      segment_t(6846, 6846), &
      segment_t(8413, 8416), &
      segment_t(8418, 8420), &
      segment_t(42608, 42610) &
   ]

   type(segment_t), parameter :: unicode_gc_Mc(*) = &
   [ &
      segment_t(2307, 2307), &
      segment_t(2363, 2363), &
      segment_t(2366, 2368), &
      segment_t(2377, 2380), &
      segment_t(2382, 2383), &
      segment_t(2434, 2435), &
      segment_t(2494, 2496), &
      segment_t(2503, 2504), &
      segment_t(2507, 2508), &
      segment_t(2519, 2519), &
      segment_t(2563, 2563), &
      segment_t(2622, 2624), &
      segment_t(2691, 2691), &
      segment_t(2750, 2752), &
      segment_t(2761, 2761), &
      segment_t(2763, 2764), &
      segment_t(2818, 2819), &
      segment_t(2878, 2878), &
      segment_t(2880, 2880), &
      segment_t(2887, 2888), &
      segment_t(2891, 2892), &
      segment_t(2903, 2903), &
      segment_t(3006, 3007), &
      segment_t(3009, 3010), &
      segment_t(3014, 3016), &
      segment_t(3018, 3020), &
      segment_t(3031, 3031), &
      segment_t(3073, 3075), &
      segment_t(3137, 3140), &
      segment_t(3202, 3203), &
      segment_t(3262, 3262), &
      segment_t(3264, 3268), &
      segment_t(3271, 3272), &
      segment_t(3274, 3275), &
      segment_t(3285, 3286), &
      segment_t(3315, 3315), &
      segment_t(3330, 3331), &
      segment_t(3390, 3392), &
      segment_t(3398, 3400), &
      segment_t(3402, 3404), &
      segment_t(3415, 3415), &
      segment_t(3458, 3459), &
      segment_t(3535, 3537), &
      segment_t(3544, 3551), &
      segment_t(3570, 3571), &
      segment_t(3902, 3903), &
      segment_t(3967, 3967), &
      segment_t(4139, 4140), &
      segment_t(4145, 4145), &
      segment_t(4152, 4152), &
      segment_t(4155, 4156), &
      segment_t(4182, 4183), &
      segment_t(4194, 4196), &
      segment_t(4199, 4205), &
      segment_t(4227, 4228), &
      segment_t(4231, 4236), &
      segment_t(4239, 4239), &
      segment_t(4250, 4252), &
      segment_t(5909, 5909), &
      segment_t(5940, 5940), &
      segment_t(6070, 6070), &
      segment_t(6078, 6085), &
      segment_t(6087, 6088), &
      segment_t(6435, 6438), &
      segment_t(6441, 6443), &
      segment_t(6448, 6449), &
      segment_t(6451, 6456), &
      segment_t(6681, 6682), &
      segment_t(6741, 6741), &
      segment_t(6743, 6743), &
      segment_t(6753, 6753), &
      segment_t(6755, 6756), &
      segment_t(6765, 6770), &
      segment_t(6916, 6916), &
      segment_t(6965, 6965), &
      segment_t(6971, 6971), &
      segment_t(6973, 6977), &
      segment_t(6979, 6980), &
      segment_t(7042, 7042), &
      segment_t(7073, 7073), &
      segment_t(7078, 7079), &
      segment_t(7082, 7082), &
      segment_t(7143, 7143), &
      segment_t(7146, 7148), &
      segment_t(7150, 7150), &
      segment_t(7154, 7155), &
      segment_t(7204, 7211), &
      segment_t(7220, 7221), &
      segment_t(7393, 7393), &
      segment_t(7415, 7415), &
      segment_t(12334, 12335), &
      segment_t(43043, 43044), &
      segment_t(43047, 43047), &
      segment_t(43136, 43137), &
      segment_t(43188, 43203), &
      segment_t(43346, 43347), &
      segment_t(43395, 43395), &
      segment_t(43444, 43445), &
      segment_t(43450, 43451), &
      segment_t(43454, 43456), &
      segment_t(43567, 43568), &
      segment_t(43571, 43572), &
      segment_t(43597, 43597), &
      segment_t(43643, 43643), &
      segment_t(43645, 43645), &
      segment_t(43755, 43755), &
      segment_t(43758, 43759), &
      segment_t(43765, 43765), &
      segment_t(44003, 44004), &
      segment_t(44006, 44007), &
      segment_t(44009, 44010), &
      segment_t(44012, 44012), &
      segment_t(69632, 69632), &
      segment_t(69634, 69634), &
      segment_t(69762, 69762), &
      segment_t(69808, 69810), &
      segment_t(69815, 69816), &
      segment_t(69932, 69932), &
      segment_t(69957, 69958), &
      segment_t(70018, 70018), &
      segment_t(70067, 70069), &
      segment_t(70079, 70080), &
      segment_t(70094, 70094), &
      segment_t(70188, 70190), &
      segment_t(70194, 70195), &
      segment_t(70197, 70197), &
      segment_t(70368, 70370), &
      segment_t(70402, 70403), &
      segment_t(70462, 70463), &
      segment_t(70465, 70468), &
      segment_t(70471, 70472), &
      segment_t(70475, 70477), &
      segment_t(70487, 70487), &
      segment_t(70498, 70499), &
      segment_t(70584, 70586), &
      segment_t(70594, 70594), &
      segment_t(70597, 70597), &
      segment_t(70599, 70602), &
      segment_t(70604, 70605), &
      segment_t(70607, 70607), &
      segment_t(70709, 70711), &
      segment_t(70720, 70721), &
      segment_t(70725, 70725), &
      segment_t(70832, 70834), &
      segment_t(70841, 70841), &
      segment_t(70843, 70846), &
      segment_t(70849, 70849), &
      segment_t(71087, 71089), &
      segment_t(71096, 71099), &
      segment_t(71102, 71102), &
      segment_t(71216, 71218), &
      segment_t(71227, 71228), &
      segment_t(71230, 71230), &
      segment_t(71340, 71340), &
      segment_t(71342, 71343), &
      segment_t(71350, 71350), &
      segment_t(71454, 71454), &
      segment_t(71456, 71457), &
      segment_t(71462, 71462), &
      segment_t(71724, 71726), &
      segment_t(71736, 71736), &
      segment_t(71984, 71989), &
      segment_t(71991, 71992), &
      segment_t(71997, 71997), &
      segment_t(72000, 72000), &
      segment_t(72002, 72002), &
      segment_t(72145, 72147), &
      segment_t(72156, 72159), &
      segment_t(72164, 72164), &
      segment_t(72249, 72249), &
      segment_t(72279, 72280), &
      segment_t(72343, 72343), &
      segment_t(72545, 72545), &
      segment_t(72549, 72549), &
      segment_t(72551, 72551), &
      segment_t(72751, 72751), &
      segment_t(72766, 72766), &
      segment_t(72873, 72873), &
      segment_t(72881, 72881), &
      segment_t(72884, 72884), &
      segment_t(73098, 73102), &
      segment_t(73107, 73108), &
      segment_t(73110, 73110), &
      segment_t(73461, 73462), &
      segment_t(73475, 73475), &
      segment_t(73524, 73525), &
      segment_t(73534, 73535), &
      segment_t(73537, 73537), &
      segment_t(90410, 90412), &
      segment_t(94033, 94087), &
      segment_t(94192, 94193), &
      segment_t(119141, 119142), &
      segment_t(119149, 119154) &
   ]

   type(segment_t), parameter :: unicode_gc_Nd(*) = &
   [ &
      segment_t(48, 57), &
      segment_t(1632, 1641), &
      segment_t(1776, 1785), &
      segment_t(1984, 1993), &
      segment_t(2406, 2415), &
      segment_t(2534, 2543), &
      segment_t(2662, 2671), &
      segment_t(2790, 2799), &
      segment_t(2918, 2927), &
      segment_t(3046, 3055), &
      segment_t(3174, 3183), &
      segment_t(3302, 3311), &
      segment_t(3430, 3439), &
      segment_t(3558, 3567), &
      segment_t(3664, 3673), &
      segment_t(3792, 3801), &
      segment_t(3872, 3881), &
      segment_t(4160, 4169), &
      segment_t(4240, 4249), &
      segment_t(6112, 6121), &
      segment_t(6160, 6169), &
      segment_t(6470, 6479), &
      segment_t(6608, 6617), &
      segment_t(6784, 6793), &
      segment_t(6800, 6809), &
      segment_t(6992, 7001), &
      segment_t(7088, 7097), &
      segment_t(7232, 7241), &
      segment_t(7248, 7257), &
      segment_t(42528, 42537), &
      segment_t(43216, 43225), &
      segment_t(43264, 43273), &
      segment_t(43472, 43481), &
      segment_t(43504, 43513), &
      segment_t(43600, 43609), &
      segment_t(44016, 44025), &
      segment_t(65296, 65305), &
      segment_t(66720, 66729), &
      segment_t(68912, 68921), &
      segment_t(68928, 68937), &
      segment_t(69734, 69743), &
      segment_t(69872, 69881), &
      segment_t(69942, 69951), &
      segment_t(70096, 70105), &
      segment_t(70384, 70393), &
      segment_t(70736, 70745), &
      segment_t(70864, 70873), &
      segment_t(71248, 71257), &
      segment_t(71360, 71369), &
      segment_t(71376, 71395), &
      segment_t(71472, 71481), &
      segment_t(71904, 71913), &
      segment_t(72016, 72025), &
      segment_t(72688, 72697), &
      segment_t(72784, 72793), &
      segment_t(73040, 73049), &
      segment_t(73120, 73129), &
      segment_t(73184, 73193), &
      segment_t(73552, 73561), &
      segment_t(90416, 90425), &
      segment_t(92768, 92777), &
      segment_t(92864, 92873), &
      segment_t(93008, 93017), &
      segment_t(93552, 93561), &
      segment_t(118000, 118009), &
      segment_t(120782, 120831), &
      segment_t(123200, 123209), &
      segment_t(123632, 123641), &
      segment_t(124144, 124153), &
      segment_t(124401, 124410), &
      segment_t(125264, 125273), &
      segment_t(130032, 130041) &
   ]

   type(segment_t), parameter :: unicode_gc_Nl(*) = &
   [ &
      segment_t(5870, 5872), &
      segment_t(8544, 8578), &
      segment_t(8581, 8584), &
      segment_t(12295, 12295), &
      segment_t(12321, 12329), &
      segment_t(12344, 12346), &
      segment_t(42726, 42735), &
      segment_t(65856, 65908), &
      segment_t(66369, 66369), &
      segment_t(66378, 66378), &
      segment_t(66513, 66517), &
      segment_t(74752, 74862), &
      segment_t(94196, 94198) &
   ]

   type(segment_t), parameter :: unicode_gc_No(*) = &
   [ &
      segment_t(178, 179), &
      segment_t(185, 185), &
      segment_t(188, 190), &
      segment_t(2548, 2553), &
      segment_t(2930, 2935), &
      segment_t(3056, 3058), &
      segment_t(3192, 3198), &
      segment_t(3416, 3422), &
      segment_t(3440, 3448), &
      segment_t(3882, 3891), &
      segment_t(4969, 4988), &
      segment_t(6128, 6137), &
      segment_t(6618, 6618), &
      segment_t(8304, 8304), &
      segment_t(8308, 8313), &
      segment_t(8320, 8329), &
      segment_t(8528, 8543), &
      segment_t(8585, 8585), &
      segment_t(9312, 9371), &
      segment_t(9450, 9471), &
      segment_t(10102, 10131), &
      segment_t(11517, 11517), &
      segment_t(12690, 12693), &
      segment_t(12832, 12841), &
      segment_t(12872, 12879), &
      segment_t(12881, 12895), &
      segment_t(12928, 12937), &
      segment_t(12977, 12991), &
      segment_t(43056, 43061), &
      segment_t(65799, 65843), &
      segment_t(65909, 65912), &
      segment_t(65930, 65931), &
      segment_t(66273, 66299), &
      segment_t(66336, 66339), &
      segment_t(67672, 67679), &
      segment_t(67705, 67711), &
      segment_t(67751, 67759), &
      segment_t(67835, 67839), &
      segment_t(67862, 67867), &
      segment_t(68028, 68029), &
      segment_t(68032, 68047), &
      segment_t(68050, 68095), &
      segment_t(68160, 68168), &
      segment_t(68221, 68222), &
      segment_t(68253, 68255), &
      segment_t(68331, 68335), &
      segment_t(68440, 68447), &
      segment_t(68472, 68479), &
      segment_t(68521, 68527), &
      segment_t(68858, 68863), &
      segment_t(69216, 69246), &
      segment_t(69405, 69414), &
      segment_t(69457, 69460), &
      segment_t(69573, 69579), &
      segment_t(69714, 69733), &
      segment_t(70113, 70132), &
      segment_t(71482, 71483), &
      segment_t(71914, 71922), &
      segment_t(72794, 72812), &
      segment_t(73664, 73684), &
      segment_t(93019, 93025), &
      segment_t(93824, 93846), &
      segment_t(119488, 119507), &
      segment_t(119520, 119539), &
      segment_t(119648, 119672), &
      segment_t(125127, 125135), &
      segment_t(126065, 126123), &
      segment_t(126125, 126127), &
      segment_t(126129, 126132), &
      segment_t(126209, 126253), &
      segment_t(126255, 126269), &
      segment_t(127232, 127244) &
   ]

   type(segment_t), parameter :: unicode_gc_Zs(*) = &
   [ &
      segment_t(32, 32), &
      segment_t(160, 160), &
      segment_t(5760, 5760), &
      segment_t(8192, 8202), &
      segment_t(8239, 8239), &
      segment_t(8287, 8287), &
      segment_t(12288, 12288) &
   ]

   type(segment_t), parameter :: unicode_gc_Zl(*) = &
   [ &
      segment_t(8232, 8232) &
   ]

   type(segment_t), parameter :: unicode_gc_Zp(*) = &
   [ &
      segment_t(8233, 8233) &
   ]

   type(segment_t), parameter :: unicode_gc_Cc(*) = &
   [ &
      segment_t(0, 31), &
      segment_t(127, 159) &
   ]

   type(segment_t), parameter :: unicode_gc_Cf(*) = &
   [ &
      segment_t(173, 173), &
      segment_t(1536, 1541), &
      segment_t(1564, 1564), &
      segment_t(1757, 1757), &
      segment_t(1807, 1807), &
      segment_t(2192, 2193), &
      segment_t(2274, 2274), &
      segment_t(6158, 6158), &
      segment_t(8203, 8207), &
      segment_t(8234, 8238), &
      segment_t(8288, 8292), &
      segment_t(8294, 8303), &
      segment_t(65279, 65279), &
      segment_t(65529, 65531), &
      segment_t(69821, 69821), &
      segment_t(69837, 69837), &
      segment_t(78896, 78911), &
      segment_t(113824, 113827), &
      segment_t(119155, 119162), &
      segment_t(917505, 917505), &
      segment_t(917536, 917631) &
   ]

   type(segment_t), parameter :: unicode_gc_Co(*) = &
   [ &
      segment_t(57344, 63743), &
      segment_t(983040, 1048573), &
      segment_t(1048576, 1114109) &
   ]

   type(segment_t), parameter :: unicode_gc_Cs(*) = &
   [ &
      segment_t(55296, 57343) &
   ]

   type(segment_t), parameter :: unicode_gc_Pd(*) = &
   [ &
      segment_t(45, 45), &
      segment_t(1418, 1418), &
      segment_t(1470, 1470), &
      segment_t(5120, 5120), &
      segment_t(6150, 6150), &
      segment_t(8208, 8213), &
      segment_t(11799, 11799), &
      segment_t(11802, 11802), &
      segment_t(11834, 11835), &
      segment_t(11840, 11840), &
      segment_t(11869, 11869), &
      segment_t(12316, 12316), &
      segment_t(12336, 12336), &
      segment_t(12448, 12448), &
      segment_t(65073, 65074), &
      segment_t(65112, 65112), &
      segment_t(65123, 65123), &
      segment_t(65293, 65293), &
      segment_t(68974, 68974), &
      segment_t(69293, 69293) &
   ]

   type(segment_t), parameter :: unicode_gc_Ps(*) = &
   [ &
      segment_t(40, 40), &
      segment_t(91, 91), &
      segment_t(123, 123), &
      segment_t(3898, 3898), &
      segment_t(3900, 3900), &
      segment_t(5787, 5787), &
      segment_t(8218, 8218), &
      segment_t(8222, 8222), &
      segment_t(8261, 8261), &
      segment_t(8317, 8317), &
      segment_t(8333, 8333), &
      segment_t(8968, 8968), &
      segment_t(8970, 8970), &
      segment_t(9001, 9001), &
      segment_t(10088, 10088), &
      segment_t(10090, 10090), &
      segment_t(10092, 10092), &
      segment_t(10094, 10094), &
      segment_t(10096, 10096), &
      segment_t(10098, 10098), &
      segment_t(10100, 10100), &
      segment_t(10181, 10181), &
      segment_t(10214, 10214), &
      segment_t(10216, 10216), &
      segment_t(10218, 10218), &
      segment_t(10220, 10220), &
      segment_t(10222, 10222), &
      segment_t(10627, 10627), &
      segment_t(10629, 10629), &
      segment_t(10631, 10631), &
      segment_t(10633, 10633), &
      segment_t(10635, 10635), &
      segment_t(10637, 10637), &
      segment_t(10639, 10639), &
      segment_t(10641, 10641), &
      segment_t(10643, 10643), &
      segment_t(10645, 10645), &
      segment_t(10647, 10647), &
      segment_t(10712, 10712), &
      segment_t(10714, 10714), &
      segment_t(10748, 10748), &
      segment_t(11810, 11810), &
      segment_t(11812, 11812), &
      segment_t(11814, 11814), &
      segment_t(11816, 11816), &
      segment_t(11842, 11842), &
      segment_t(11861, 11861), &
      segment_t(11863, 11863), &
      segment_t(11865, 11865), &
      segment_t(11867, 11867), &
      segment_t(12296, 12296), &
      segment_t(12298, 12298), &
      segment_t(12300, 12300), &
      segment_t(12302, 12302), &
      segment_t(12304, 12304), &
      segment_t(12308, 12308), &
      segment_t(12310, 12310), &
      segment_t(12312, 12312), &
      segment_t(12314, 12314), &
      segment_t(12317, 12317), &
      segment_t(64831, 64831), &
      segment_t(65047, 65047), &
      segment_t(65077, 65077), &
      segment_t(65079, 65079), &
      segment_t(65081, 65081), &
      segment_t(65083, 65083), &
      segment_t(65085, 65085), &
      segment_t(65087, 65087), &
      segment_t(65089, 65089), &
      segment_t(65091, 65091), &
      segment_t(65095, 65095), &
      segment_t(65113, 65113), &
      segment_t(65115, 65115), &
      segment_t(65117, 65117), &
      segment_t(65288, 65288), &
      segment_t(65339, 65339), &
      segment_t(65371, 65371), &
      segment_t(65375, 65375), &
      segment_t(65378, 65378) &
   ]

   type(segment_t), parameter :: unicode_gc_Pe(*) = &
   [ &
      segment_t(41, 41), &
      segment_t(93, 93), &
      segment_t(125, 125), &
      segment_t(3899, 3899), &
      segment_t(3901, 3901), &
      segment_t(5788, 5788), &
      segment_t(8262, 8262), &
      segment_t(8318, 8318), &
      segment_t(8334, 8334), &
      segment_t(8969, 8969), &
      segment_t(8971, 8971), &
      segment_t(9002, 9002), &
      segment_t(10089, 10089), &
      segment_t(10091, 10091), &
      segment_t(10093, 10093), &
      segment_t(10095, 10095), &
      segment_t(10097, 10097), &
      segment_t(10099, 10099), &
      segment_t(10101, 10101), &
      segment_t(10182, 10182), &
      segment_t(10215, 10215), &
      segment_t(10217, 10217), &
      segment_t(10219, 10219), &
      segment_t(10221, 10221), &
      segment_t(10223, 10223), &
      segment_t(10628, 10628), &
      segment_t(10630, 10630), &
      segment_t(10632, 10632), &
      segment_t(10634, 10634), &
      segment_t(10636, 10636), &
      segment_t(10638, 10638), &
      segment_t(10640, 10640), &
      segment_t(10642, 10642), &
      segment_t(10644, 10644), &
      segment_t(10646, 10646), &
      segment_t(10648, 10648), &
      segment_t(10713, 10713), &
      segment_t(10715, 10715), &
      segment_t(10749, 10749), &
      segment_t(11811, 11811), &
      segment_t(11813, 11813), &
      segment_t(11815, 11815), &
      segment_t(11817, 11817), &
      segment_t(11862, 11862), &
      segment_t(11864, 11864), &
      segment_t(11866, 11866), &
      segment_t(11868, 11868), &
      segment_t(12297, 12297), &
      segment_t(12299, 12299), &
      segment_t(12301, 12301), &
      segment_t(12303, 12303), &
      segment_t(12305, 12305), &
      segment_t(12309, 12309), &
      segment_t(12311, 12311), &
      segment_t(12313, 12313), &
      segment_t(12315, 12315), &
      segment_t(12318, 12319), &
      segment_t(64830, 64830), &
      segment_t(65048, 65048), &
      segment_t(65078, 65078), &
      segment_t(65080, 65080), &
      segment_t(65082, 65082), &
      segment_t(65084, 65084), &
      segment_t(65086, 65086), &
      segment_t(65088, 65088), &
      segment_t(65090, 65090), &
      segment_t(65092, 65092), &
      segment_t(65096, 65096), &
      segment_t(65114, 65114), &
      segment_t(65116, 65116), &
      segment_t(65118, 65118), &
      segment_t(65289, 65289), &
      segment_t(65341, 65341), &
      segment_t(65373, 65373), &
      segment_t(65376, 65376), &
      segment_t(65379, 65379) &
   ]

   type(segment_t), parameter :: unicode_gc_Pc(*) = &
   [ &
      segment_t(95, 95), &
      segment_t(8255, 8256), &
      segment_t(8276, 8276), &
      segment_t(65075, 65076), &
      segment_t(65101, 65103), &
      segment_t(65343, 65343) &
   ]

   type(segment_t), parameter :: unicode_gc_Po(*) = &
   [ &
      segment_t(33, 35), &
      segment_t(37, 39), &
      segment_t(42, 42), &
      segment_t(44, 44), &
      segment_t(46, 47), &
      segment_t(58, 59), &
      segment_t(63, 64), &
      segment_t(92, 92), &
      segment_t(161, 161), &
      segment_t(167, 167), &
      segment_t(182, 183), &
      segment_t(191, 191), &
      segment_t(894, 894), &
      segment_t(903, 903), &
      segment_t(1370, 1375), &
      segment_t(1417, 1417), &
      segment_t(1472, 1472), &
      segment_t(1475, 1475), &
      segment_t(1478, 1478), &
      segment_t(1523, 1524), &
      segment_t(1545, 1546), &
      segment_t(1548, 1549), &
      segment_t(1563, 1563), &
      segment_t(1565, 1567), &
      segment_t(1642, 1645), &
      segment_t(1748, 1748), &
      segment_t(1792, 1805), &
      segment_t(2039, 2041), &
      segment_t(2096, 2110), &
      segment_t(2142, 2142), &
      segment_t(2404, 2405), &
      segment_t(2416, 2416), &
      segment_t(2557, 2557), &
      segment_t(2678, 2678), &
      segment_t(2800, 2800), &
      segment_t(3191, 3191), &
      segment_t(3204, 3204), &
      segment_t(3572, 3572), &
      segment_t(3663, 3663), &
      segment_t(3674, 3675), &
      segment_t(3844, 3858), &
      segment_t(3860, 3860), &
      segment_t(3973, 3973), &
      segment_t(4048, 4052), &
      segment_t(4057, 4058), &
      segment_t(4170, 4175), &
      segment_t(4347, 4347), &
      segment_t(4960, 4968), &
      segment_t(5742, 5742), &
      segment_t(5867, 5869), &
      segment_t(5941, 5942), &
      segment_t(6100, 6102), &
      segment_t(6104, 6106), &
      segment_t(6144, 6149), &
      segment_t(6151, 6154), &
      segment_t(6468, 6469), &
      segment_t(6686, 6687), &
      segment_t(6816, 6822), &
      segment_t(6824, 6829), &
      segment_t(6990, 6991), &
      segment_t(7002, 7008), &
      segment_t(7037, 7039), &
      segment_t(7164, 7167), &
      segment_t(7227, 7231), &
      segment_t(7294, 7295), &
      segment_t(7360, 7367), &
      segment_t(7379, 7379), &
      segment_t(8214, 8215), &
      segment_t(8224, 8231), &
      segment_t(8240, 8248), &
      segment_t(8251, 8254), &
      segment_t(8257, 8259), &
      segment_t(8263, 8273), &
      segment_t(8275, 8275), &
      segment_t(8277, 8286), &
      segment_t(11513, 11516), &
      segment_t(11518, 11519), &
      segment_t(11632, 11632), &
      segment_t(11776, 11777), &
      segment_t(11782, 11784), &
      segment_t(11787, 11787), &
      segment_t(11790, 11798), &
      segment_t(11800, 11801), &
      segment_t(11803, 11803), &
      segment_t(11806, 11807), &
      segment_t(11818, 11822), &
      segment_t(11824, 11833), &
      segment_t(11836, 11839), &
      segment_t(11841, 11841), &
      segment_t(11843, 11855), &
      segment_t(11858, 11860), &
      segment_t(12289, 12291), &
      segment_t(12349, 12349), &
      segment_t(12539, 12539), &
      segment_t(42238, 42239), &
      segment_t(42509, 42511), &
      segment_t(42611, 42611), &
      segment_t(42622, 42622), &
      segment_t(42738, 42743), &
      segment_t(43124, 43127), &
      segment_t(43214, 43215), &
      segment_t(43256, 43258), &
      segment_t(43260, 43260), &
      segment_t(43310, 43311), &
      segment_t(43359, 43359), &
      segment_t(43457, 43469), &
      segment_t(43486, 43487), &
      segment_t(43612, 43615), &
      segment_t(43742, 43743), &
      segment_t(43760, 43761), &
      segment_t(44011, 44011), &
      segment_t(65040, 65046), &
      segment_t(65049, 65049), &
      segment_t(65072, 65072), &
      segment_t(65093, 65094), &
      segment_t(65097, 65100), &
      segment_t(65104, 65106), &
      segment_t(65108, 65111), &
      segment_t(65119, 65121), &
      segment_t(65128, 65128), &
      segment_t(65130, 65131), &
      segment_t(65281, 65283), &
      segment_t(65285, 65287), &
      segment_t(65290, 65290), &
      segment_t(65292, 65292), &
      segment_t(65294, 65295), &
      segment_t(65306, 65307), &
      segment_t(65311, 65312), &
      segment_t(65340, 65340), &
      segment_t(65377, 65377), &
      segment_t(65380, 65381), &
      segment_t(65792, 65794), &
      segment_t(66463, 66463), &
      segment_t(66512, 66512), &
      segment_t(66927, 66927), &
      segment_t(67671, 67671), &
      segment_t(67871, 67871), &
      segment_t(67903, 67903), &
      segment_t(68176, 68184), &
      segment_t(68223, 68223), &
      segment_t(68336, 68342), &
      segment_t(68409, 68415), &
      segment_t(68505, 68508), &
      segment_t(69328, 69328), &
      segment_t(69461, 69465), &
      segment_t(69510, 69513), &
      segment_t(69703, 69709), &
      segment_t(69819, 69820), &
      segment_t(69822, 69825), &
      segment_t(69952, 69955), &
      segment_t(70004, 70005), &
      segment_t(70085, 70088), &
      segment_t(70093, 70093), &
      segment_t(70107, 70107), &
      segment_t(70109, 70111), &
      segment_t(70200, 70205), &
      segment_t(70313, 70313), &
      segment_t(70612, 70613), &
      segment_t(70615, 70616), &
      segment_t(70731, 70735), &
      segment_t(70746, 70747), &
      segment_t(70749, 70749), &
      segment_t(70854, 70854), &
      segment_t(71105, 71127), &
      segment_t(71233, 71235), &
      segment_t(71264, 71276), &
      segment_t(71353, 71353), &
      segment_t(71484, 71486), &
      segment_t(71739, 71739), &
      segment_t(72004, 72006), &
      segment_t(72162, 72162), &
      segment_t(72255, 72262), &
      segment_t(72346, 72348), &
      segment_t(72350, 72354), &
      segment_t(72448, 72457), &
      segment_t(72673, 72673), &
      segment_t(72769, 72773), &
      segment_t(72816, 72817), &
      segment_t(73463, 73464), &
      segment_t(73539, 73551), &
      segment_t(73727, 73727), &
      segment_t(74864, 74868), &
      segment_t(77809, 77810), &
      segment_t(92782, 92783), &
      segment_t(92917, 92917), &
      segment_t(92983, 92987), &
      segment_t(92996, 92996), &
      segment_t(93549, 93551), &
      segment_t(93847, 93850), &
      segment_t(94178, 94178), &
      segment_t(113823, 113823), &
      segment_t(121479, 121483), &
      segment_t(124415, 124415), &
      segment_t(125278, 125279) &
   ]

   type(segment_t), parameter :: unicode_gc_Sm(*) = &
   [ &
      segment_t(43, 43), &
      segment_t(60, 62), &
      segment_t(124, 124), &
      segment_t(126, 126), &
      segment_t(172, 172), &
      segment_t(177, 177), &
      segment_t(215, 215), &
      segment_t(247, 247), &
      segment_t(1014, 1014), &
      segment_t(1542, 1544), &
      segment_t(8260, 8260), &
      segment_t(8274, 8274), &
      segment_t(8314, 8316), &
      segment_t(8330, 8332), &
      segment_t(8472, 8472), &
      segment_t(8512, 8516), &
      segment_t(8523, 8523), &
      segment_t(8592, 8596), &
      segment_t(8602, 8603), &
      segment_t(8608, 8608), &
      segment_t(8611, 8611), &
      segment_t(8614, 8614), &
      segment_t(8622, 8622), &
      segment_t(8654, 8655), &
      segment_t(8658, 8658), &
      segment_t(8660, 8660), &
      segment_t(8692, 8959), &
      segment_t(8992, 8993), &
      segment_t(9084, 9084), &
      segment_t(9115, 9139), &
      segment_t(9180, 9185), &
      segment_t(9655, 9655), &
      segment_t(9665, 9665), &
      segment_t(9720, 9727), &
      segment_t(9839, 9839), &
      segment_t(10176, 10180), &
      segment_t(10183, 10213), &
      segment_t(10224, 10239), &
      segment_t(10496, 10626), &
      segment_t(10649, 10711), &
      segment_t(10716, 10747), &
      segment_t(10750, 11007), &
      segment_t(11056, 11076), &
      segment_t(11079, 11084), &
      segment_t(64297, 64297), &
      segment_t(65122, 65122), &
      segment_t(65124, 65126), &
      segment_t(65291, 65291), &
      segment_t(65308, 65310), &
      segment_t(65372, 65372), &
      segment_t(65374, 65374), &
      segment_t(65506, 65506), &
      segment_t(65513, 65516), &
      segment_t(69006, 69007), &
      segment_t(118512, 118512), &
      segment_t(120513, 120513), &
      segment_t(120539, 120539), &
      segment_t(120571, 120571), &
      segment_t(120597, 120597), &
      segment_t(120629, 120629), &
      segment_t(120655, 120655), &
      segment_t(120687, 120687), &
      segment_t(120713, 120713), &
      segment_t(120745, 120745), &
      segment_t(120771, 120771), &
      segment_t(126704, 126705), &
      segment_t(129232, 129240) &
   ]

   type(segment_t), parameter :: unicode_gc_Sc(*) = &
   [ &
      segment_t(36, 36), &
      segment_t(162, 165), &
      segment_t(1423, 1423), &
      segment_t(1547, 1547), &
      segment_t(2046, 2047), &
      segment_t(2546, 2547), &
      segment_t(2555, 2555), &
      segment_t(2801, 2801), &
      segment_t(3065, 3065), &
      segment_t(3647, 3647), &
      segment_t(6107, 6107), &
      segment_t(8352, 8385), &
      segment_t(43064, 43064), &
      segment_t(65020, 65020), &
      segment_t(65129, 65129), &
      segment_t(65284, 65284), &
      segment_t(65504, 65505), &
      segment_t(65509, 65510), &
      segment_t(73693, 73696), &
      segment_t(123647, 123647), &
      segment_t(126128, 126128) &
   ]

   type(segment_t), parameter :: unicode_gc_Sk(*) = &
   [ &
      segment_t(94, 94), &
      segment_t(96, 96), &
      segment_t(168, 168), &
      segment_t(175, 175), &
      segment_t(180, 180), &
      segment_t(184, 184), &
      segment_t(706, 709), &
      segment_t(722, 735), &
      segment_t(741, 747), &
      segment_t(749, 749), &
      segment_t(751, 767), &
      segment_t(885, 885), &
      segment_t(900, 901), &
      segment_t(2184, 2184), &
      segment_t(8125, 8125), &
      segment_t(8127, 8129), &
      segment_t(8141, 8143), &
      segment_t(8157, 8159), &
      segment_t(8173, 8175), &
      segment_t(8189, 8190), &
      segment_t(12443, 12444), &
      segment_t(42752, 42774), &
      segment_t(42784, 42785), &
      segment_t(42889, 42890), &
      segment_t(43867, 43867), &
      segment_t(43882, 43883), &
      segment_t(64434, 64450), &
      segment_t(65342, 65342), &
      segment_t(65344, 65344), &
      segment_t(65507, 65507), &
      segment_t(127995, 127999) &
   ]

   type(segment_t), parameter :: unicode_gc_So(*) = &
   [ &
      segment_t(166, 166), &
      segment_t(169, 169), &
      segment_t(174, 174), &
      segment_t(176, 176), &
      segment_t(1154, 1154), &
      segment_t(1421, 1422), &
      segment_t(1550, 1551), &
      segment_t(1758, 1758), &
      segment_t(1769, 1769), &
      segment_t(1789, 1790), &
      segment_t(2038, 2038), &
      segment_t(2554, 2554), &
      segment_t(2928, 2928), &
      segment_t(3059, 3064), &
      segment_t(3066, 3066), &
      segment_t(3199, 3199), &
      segment_t(3407, 3407), &
      segment_t(3449, 3449), &
      segment_t(3841, 3843), &
      segment_t(3859, 3859), &
      segment_t(3861, 3863), &
      segment_t(3866, 3871), &
      segment_t(3892, 3892), &
      segment_t(3894, 3894), &
      segment_t(3896, 3896), &
      segment_t(4030, 4037), &
      segment_t(4039, 4044), &
      segment_t(4046, 4047), &
      segment_t(4053, 4056), &
      segment_t(4254, 4255), &
      segment_t(5008, 5017), &
      segment_t(5741, 5741), &
      segment_t(6464, 6464), &
      segment_t(6622, 6655), &
      segment_t(7009, 7018), &
      segment_t(7028, 7036), &
      segment_t(8448, 8449), &
      segment_t(8451, 8454), &
      segment_t(8456, 8457), &
      segment_t(8468, 8468), &
      segment_t(8470, 8471), &
      segment_t(8478, 8483), &
      segment_t(8485, 8485), &
      segment_t(8487, 8487), &
      segment_t(8489, 8489), &
      segment_t(8494, 8494), &
      segment_t(8506, 8507), &
      segment_t(8522, 8522), &
      segment_t(8524, 8525), &
      segment_t(8527, 8527), &
      segment_t(8586, 8587), &
      segment_t(8597, 8601), &
      segment_t(8604, 8607), &
      segment_t(8609, 8610), &
      segment_t(8612, 8613), &
      segment_t(8615, 8621), &
      segment_t(8623, 8653), &
      segment_t(8656, 8657), &
      segment_t(8659, 8659), &
      segment_t(8661, 8691), &
      segment_t(8960, 8967), &
      segment_t(8972, 8991), &
      segment_t(8994, 9000), &
      segment_t(9003, 9083), &
      segment_t(9085, 9114), &
      segment_t(9140, 9179), &
      segment_t(9186, 9257), &
      segment_t(9280, 9290), &
      segment_t(9372, 9449), &
      segment_t(9472, 9654), &
      segment_t(9656, 9664), &
      segment_t(9666, 9719), &
      segment_t(9728, 9838), &
      segment_t(9840, 10087), &
      segment_t(10132, 10175), &
      segment_t(10240, 10495), &
      segment_t(11008, 11055), &
      segment_t(11077, 11078), &
      segment_t(11085, 11123), &
      segment_t(11126, 11263), &
      segment_t(11493, 11498), &
      segment_t(11856, 11857), &
      segment_t(11904, 11929), &
      segment_t(11931, 12019), &
      segment_t(12032, 12245), &
      segment_t(12272, 12287), &
      segment_t(12292, 12292), &
      segment_t(12306, 12307), &
      segment_t(12320, 12320), &
      segment_t(12342, 12343), &
      segment_t(12350, 12351), &
      segment_t(12688, 12689), &
      segment_t(12694, 12703), &
      segment_t(12736, 12773), &
      segment_t(12783, 12783), &
      segment_t(12800, 12830), &
      segment_t(12842, 12871), &
      segment_t(12880, 12880), &
      segment_t(12896, 12927), &
      segment_t(12938, 12976), &
      segment_t(12992, 13311), &
      segment_t(19904, 19967), &
      segment_t(42128, 42182), &
      segment_t(43048, 43051), &
      segment_t(43062, 43063), &
      segment_t(43065, 43065), &
      segment_t(43639, 43641), &
      segment_t(64451, 64466), &
      segment_t(64832, 64847), &
      segment_t(64912, 64913), &
      segment_t(64968, 64975), &
      segment_t(65021, 65023), &
      segment_t(65508, 65508), &
      segment_t(65512, 65512), &
      segment_t(65517, 65518), &
      segment_t(65532, 65533), &
      segment_t(65847, 65855), &
      segment_t(65913, 65929), &
      segment_t(65932, 65934), &
      segment_t(65936, 65948), &
      segment_t(65952, 65952), &
      segment_t(66000, 66044), &
      segment_t(67703, 67704), &
      segment_t(68296, 68296), &
      segment_t(69329, 69336), &
      segment_t(71487, 71487), &
      segment_t(73685, 73692), &
      segment_t(73697, 73713), &
      segment_t(92988, 92991), &
      segment_t(92997, 92997), &
      segment_t(113820, 113820), &
      segment_t(117760, 117999), &
      segment_t(118010, 118012), &
      segment_t(118016, 118451), &
      segment_t(118458, 118480), &
      segment_t(118496, 118511), &
      segment_t(118608, 118723), &
      segment_t(118784, 119029), &
      segment_t(119040, 119078), &
      segment_t(119081, 119140), &
      segment_t(119146, 119148), &
      segment_t(119171, 119172), &
      segment_t(119180, 119209), &
      segment_t(119214, 119274), &
      segment_t(119296, 119361), &
      segment_t(119365, 119365), &
      segment_t(119552, 119638), &
      segment_t(120832, 121343), &
      segment_t(121399, 121402), &
      segment_t(121453, 121460), &
      segment_t(121462, 121475), &
      segment_t(121477, 121478), &
      segment_t(123215, 123215), &
      segment_t(126124, 126124), &
      segment_t(126254, 126254), &
      segment_t(126976, 127019), &
      segment_t(127024, 127123), &
      segment_t(127136, 127150), &
      segment_t(127153, 127167), &
      segment_t(127169, 127183), &
      segment_t(127185, 127221), &
      segment_t(127245, 127405), &
      segment_t(127462, 127490), &
      segment_t(127504, 127547), &
      segment_t(127552, 127560), &
      segment_t(127568, 127569), &
      segment_t(127584, 127589), &
      segment_t(127744, 127994), &
      segment_t(128000, 128728), &
      segment_t(128732, 128748), &
      segment_t(128752, 128764), &
      segment_t(128768, 128985), &
      segment_t(128992, 129003), &
      segment_t(129008, 129008), &
      segment_t(129024, 129035), &
      segment_t(129040, 129095), &
      segment_t(129104, 129113), &
      segment_t(129120, 129159), &
      segment_t(129168, 129197), &
      segment_t(129200, 129211), &
      segment_t(129216, 129217), &
      segment_t(129280, 129623), &
      segment_t(129632, 129645), &
      segment_t(129648, 129660), &
      segment_t(129664, 129674), &
      segment_t(129678, 129734), &
      segment_t(129736, 129736), &
      segment_t(129741, 129756), &
      segment_t(129759, 129770), &
      segment_t(129775, 129784), &
      segment_t(129792, 129938), &
      segment_t(129940, 130031), &
      segment_t(130042, 130042) &
   ]

   type(segment_t), parameter :: unicode_gc_Pi(*) = &
   [ &
      segment_t(171, 171), &
      segment_t(8216, 8216), &
      segment_t(8219, 8220), &
      segment_t(8223, 8223), &
      segment_t(8249, 8249), &
      segment_t(11778, 11778), &
      segment_t(11780, 11780), &
      segment_t(11785, 11785), &
      segment_t(11788, 11788), &
      segment_t(11804, 11804), &
      segment_t(11808, 11808) &
   ]

   type(segment_t), parameter :: unicode_gc_Pf(*) = &
   [ &
      segment_t(187, 187), &
      segment_t(8217, 8217), &
      segment_t(8221, 8221), &
      segment_t(8250, 8250), &
      segment_t(11779, 11779), &
      segment_t(11781, 11781), &
      segment_t(11786, 11786), &
      segment_t(11789, 11789), &
      segment_t(11805, 11805), &
      segment_t(11809, 11809) &
   ]

end module forgex_unicode_gc_m