Update Unicode data to 8.0.0.

Change-Id: I556c285e7e8d68553db7b2cde137d23217d5bc34
Reviewed-on: https://code-review.googlesource.com/4090
Reviewed-by: Paul Wankadia <junyer@google.com>
diff --git a/doc/syntax.txt b/doc/syntax.txt
index e9c6ff4..09b7e88 100644
--- a/doc/syntax.txt
+++ b/doc/syntax.txt
@@ -230,105 +230,137 @@
 Zs	space separator
 
 Unicode character class names--scripts:
-Arabic	Arabic
-Armenian	Armenian
-Balinese	Balinese
-Bamum	Bamum
-Batak	Batak
-Bengali	Bengali
-Bopomofo	Bopomofo
-Brahmi	Brahmi
-Braille	Braille
-Buginese	Buginese
-Buhid	Buhid
-Canadian_Aboriginal	Canadian Aboriginal
-Carian	Carian
-Chakma	Chakma
-Cham	Cham
-Cherokee	Cherokee
-Common	characters not specific to one script
-Coptic	Coptic
-Cuneiform	Cuneiform
-Cypriot	Cypriot
-Cyrillic	Cyrillic
-Deseret	Deseret
-Devanagari	Devanagari
-Egyptian_Hieroglyphs	Egyptian Hieroglyphs
-Ethiopic	Ethiopic
-Georgian	Georgian
-Glagolitic	Glagolitic
-Gothic	Gothic
-Greek	Greek
-Gujarati	Gujarati
-Gurmukhi	Gurmukhi
-Han	Han
-Hangul	Hangul
-Hanunoo	Hanunoo
-Hebrew	Hebrew
-Hiragana	Hiragana
-Imperial_Aramaic	Imperial Aramaic
-Inherited	inherit script from previous character
-Inscriptional_Pahlavi	Inscriptional Pahlavi
-Inscriptional_Parthian	Inscriptional Parthian
-Javanese	Javanese
-Kaithi	Kaithi
-Kannada	Kannada
-Katakana	Katakana
-Kayah_Li	Kayah Li
-Kharoshthi	Kharoshthi
-Khmer	Khmer
-Lao	Lao
-Latin	Latin
-Lepcha	Lepcha
-Limbu	Limbu
-Linear_B	Linear B
-Lycian	Lycian
-Lydian	Lydian
-Malayalam	Malayalam
-Mandaic	Mandaic
-Meetei_Mayek	Meetei Mayek
-Meroitic_Cursive	Meroitic Cursive
-Meroitic_Hieroglyphs	Meroitic Hieroglyphs
-Miao	Miao
-Mongolian	Mongolian
-Myanmar	Myanmar
-New_Tai_Lue	New Tai Lue (aka Simplified Tai Lue)
-Nko	Nko
-Ogham	Ogham
-Ol_Chiki	Ol Chiki
-Old_Italic	Old Italic
-Old_Persian	Old Persian
-Old_South_Arabian	Old South Arabian
-Old_Turkic	Old Turkic
-Oriya	Oriya
-Osmanya	Osmanya
-Phags_Pa	'Phags Pa
-Phoenician	Phoenician
-Rejang	Rejang
-Runic	Runic
-Saurashtra	Saurashtra
-Sharada	Sharada
-Shavian	Shavian
-Sinhala	Sinhala
-Sora_Sompeng	Sora Sompeng
-Sundanese	Sundanese
-Syloti_Nagri	Syloti Nagri
-Syriac	Syriac
-Tagalog	Tagalog
-Tagbanwa	Tagbanwa
-Tai_Le	Tai Le
-Tai_Tham	Tai Tham
-Tai_Viet	Tai Viet
-Takri	Takri
-Tamil	Tamil
-Telugu	Telugu
-Thaana	Thaana
-Thai	Thai
-Tibetan	Tibetan
-Tifinagh	Tifinagh
-Ugaritic	Ugaritic
-Vai	Vai
-Yi	Yi
+Ahom
+Anatolian_Hieroglyphs
+Arabic
+Armenian
+Avestan
+Balinese
+Bamum
+Bassa_Vah
+Batak
+Bengali
+Bopomofo
+Brahmi
+Braille
+Buginese
+Buhid
+Canadian_Aboriginal
+Carian
+Caucasian_Albanian
+Chakma
+Cham
+Cherokee
+Common
+Coptic
+Cuneiform
+Cypriot
+Cyrillic
+Deseret
+Devanagari
+Duployan
+Egyptian_Hieroglyphs
+Elbasan
+Ethiopic
+Georgian
+Glagolitic
+Gothic
+Grantha
+Greek
+Gujarati
+Gurmukhi
+Han
+Hangul
+Hanunoo
+Hatran
+Hebrew
+Hiragana
+Imperial_Aramaic
+Inherited
+Inscriptional_Pahlavi
+Inscriptional_Parthian
+Javanese
+Kaithi
+Kannada
+Katakana
+Kayah_Li
+Kharoshthi
+Khmer
+Khojki
+Khudawadi
+Lao
+Latin
+Lepcha
+Limbu
+Linear_A
+Linear_B
+Lisu
+Lycian
+Lydian
+Mahajani
+Malayalam
+Mandaic
+Manichaean
+Meetei_Mayek
+Mende_Kikakui
+Meroitic_Cursive
+Meroitic_Hieroglyphs
+Miao
+Modi
+Mongolian
+Mro
+Multani
+Myanmar
+Nabataean
+New_Tai_Lue
+Nko
+Ogham
+Ol_Chiki
+Old_Hungarian
+Old_Italic
+Old_North_Arabian
+Old_Permic
+Old_Persian
+Old_South_Arabian
+Old_Turkic
+Oriya
+Osmanya
+Pahawh_Hmong
+Palmyrene
+Pau_Cin_Hau
+Phags_Pa
+Phoenician
+Psalter_Pahlavi
+Rejang
+Runic
+Samaritan
+Saurashtra
+Sharada
+Shavian
+Siddham
+SignWriting
+Sinhala
+Sora_Sompeng
+Sundanese
+Syloti_Nagri
+Syriac
+Tagalog
+Tagbanwa
+Tai_Le
+Tai_Tham
+Tai_Viet
+Takri
+Tamil
+Telugu
+Thaana
+Thai
+Tibetan
+Tifinagh
+Tirhuta
+Ugaritic
+Vai
+Warang_Citi
+Yi
 
 Vim character classes:
 \i	identifier character NOT SUPPORTED vim
diff --git a/re2/unicode.py b/re2/unicode.py
index 6dfe87b..4b2240c 100644
--- a/re2/unicode.py
+++ b/re2/unicode.py
@@ -9,7 +9,7 @@
 import urllib2
 
 # Directory or URL where Unicode tables reside.
-_UNICODE_DIR = "http://www.unicode.org/Public/6.3.0/ucd"
+_UNICODE_DIR = "http://www.unicode.org/Public/8.0.0/ucd"
 
 # Largest valid Unicode code value.
 _RUNE_MAX = 0x10FFFF
diff --git a/re2/unicode_casefold.cc b/re2/unicode_casefold.cc
index 2293cc7..91a96b4 100644
--- a/re2/unicode_casefold.cc
+++ b/re2/unicode_casefold.cc
@@ -7,7 +7,7 @@
 namespace re2 {
 
 
-// 1034 groups, 2089 pairs, 289 ranges
+// 1224 groups, 2469 pairs, 314 ranges
 const CaseFold unicode_casefold[] = {
 	{ 65, 90, 32 },
 	{ 97, 106, -32 },
@@ -105,13 +105,16 @@
 	{ 598, 599, -205 },
 	{ 601, 601, -202 },
 	{ 603, 603, -203 },
+	{ 604, 604, 42319 },
 	{ 608, 608, -205 },
+	{ 609, 609, 42315 },
 	{ 611, 611, -207 },
 	{ 613, 613, 42280 },
 	{ 614, 614, 42308 },
 	{ 616, 616, -209 },
 	{ 617, 617, -211 },
 	{ 619, 619, 10743 },
+	{ 620, 620, 42305 },
 	{ 623, 623, -211 },
 	{ 625, 625, 10749 },
 	{ 626, 626, -213 },
@@ -119,15 +122,19 @@
 	{ 637, 637, 10727 },
 	{ 640, 640, -218 },
 	{ 643, 643, -218 },
+	{ 647, 647, 42282 },
 	{ 648, 648, -218 },
 	{ 649, 649, -69 },
 	{ 650, 651, -217 },
 	{ 652, 652, -71 },
 	{ 658, 658, -219 },
+	{ 669, 669, 42261 },
+	{ 670, 670, 42258 },
 	{ 837, 837, 84 },
 	{ 880, 883, EvenOdd },
 	{ 886, 887, EvenOdd },
 	{ 891, 893, 130 },
+	{ 895, 895, 116 },
 	{ 902, 902, 38 },
 	{ 904, 906, 37 },
 	{ 908, 908, 64 },
@@ -168,6 +175,7 @@
 	{ 1008, 1008, -86 },
 	{ 1009, 1009, -80 },
 	{ 1010, 1010, 7 },
+	{ 1011, 1011, -116 },
 	{ 1012, 1012, -92 },
 	{ 1013, 1013, -96 },
 	{ 1015, 1016, OddEven },
@@ -183,12 +191,15 @@
 	{ 1216, 1216, 15 },
 	{ 1217, 1230, OddEven },
 	{ 1231, 1231, -15 },
-	{ 1232, 1319, EvenOdd },
+	{ 1232, 1327, EvenOdd },
 	{ 1329, 1366, 48 },
 	{ 1377, 1414, -48 },
 	{ 4256, 4293, 7264 },
 	{ 4295, 4295, 7264 },
 	{ 4301, 4301, 7264 },
+	{ 5024, 5103, 38864 },
+	{ 5104, 5109, 8 },
+	{ 5112, 5117, -8 },
 	{ 7545, 7545, 35332 },
 	{ 7549, 7549, 3814 },
 	{ 7680, 7776, EvenOdd },
@@ -283,7 +294,7 @@
 	{ 11559, 11559, -7264 },
 	{ 11565, 11565, -7264 },
 	{ 42560, 42605, EvenOdd },
-	{ 42624, 42647, EvenOdd },
+	{ 42624, 42651, EvenOdd },
 	{ 42786, 42799, EvenOdd },
 	{ 42802, 42863, EvenOdd },
 	{ 42873, 42876, OddEven },
@@ -292,16 +303,30 @@
 	{ 42891, 42892, OddEven },
 	{ 42893, 42893, -42280 },
 	{ 42896, 42899, EvenOdd },
-	{ 42912, 42921, EvenOdd },
+	{ 42902, 42921, EvenOdd },
 	{ 42922, 42922, -42308 },
+	{ 42923, 42923, -42319 },
+	{ 42924, 42924, -42315 },
+	{ 42925, 42925, -42305 },
+	{ 42928, 42928, -42258 },
+	{ 42929, 42929, -42282 },
+	{ 42930, 42930, -42261 },
+	{ 42931, 42931, 928 },
+	{ 42932, 42935, EvenOdd },
+	{ 43859, 43859, -928 },
+	{ 43888, 43967, -38864 },
 	{ 65313, 65338, 32 },
 	{ 65345, 65370, -32 },
 	{ 66560, 66599, 40 },
 	{ 66600, 66639, -40 },
+	{ 68736, 68786, 64 },
+	{ 68800, 68850, -64 },
+	{ 71840, 71871, 32 },
+	{ 71872, 71903, -32 },
 };
-const int num_unicode_casefold = 289;
+const int num_unicode_casefold = 314;
 
-// 1034 groups, 1055 pairs, 167 ranges
+// 1224 groups, 1245 pairs, 180 ranges
 const CaseFold unicode_tolower[] = {
 	{ 65, 90, 32 },
 	{ 181, 181, 775 },
@@ -370,6 +395,7 @@
 	{ 837, 837, 116 },
 	{ 880, 882, EvenOddSkip },
 	{ 886, 886, EvenOdd },
+	{ 895, 895, 116 },
 	{ 902, 902, 38 },
 	{ 904, 906, 37 },
 	{ 908, 908, 64 },
@@ -397,11 +423,12 @@
 	{ 1162, 1214, EvenOddSkip },
 	{ 1216, 1216, 15 },
 	{ 1217, 1229, OddEvenSkip },
-	{ 1232, 1318, EvenOddSkip },
+	{ 1232, 1326, EvenOddSkip },
 	{ 1329, 1366, 48 },
 	{ 4256, 4293, 7264 },
 	{ 4295, 4295, 7264 },
 	{ 4301, 4301, 7264 },
+	{ 5112, 5117, -8 },
 	{ 7680, 7828, EvenOddSkip },
 	{ 7835, 7835, -58 },
 	{ 7838, 7838, -7615 },
@@ -457,7 +484,7 @@
 	{ 11499, 11501, OddEvenSkip },
 	{ 11506, 11506, EvenOdd },
 	{ 42560, 42604, EvenOddSkip },
-	{ 42624, 42646, EvenOddSkip },
+	{ 42624, 42650, EvenOddSkip },
 	{ 42786, 42798, EvenOddSkip },
 	{ 42802, 42862, EvenOddSkip },
 	{ 42873, 42875, OddEvenSkip },
@@ -466,12 +493,23 @@
 	{ 42891, 42891, OddEven },
 	{ 42893, 42893, -42280 },
 	{ 42896, 42898, EvenOddSkip },
-	{ 42912, 42920, EvenOddSkip },
+	{ 42902, 42920, EvenOddSkip },
 	{ 42922, 42922, -42308 },
+	{ 42923, 42923, -42319 },
+	{ 42924, 42924, -42315 },
+	{ 42925, 42925, -42305 },
+	{ 42928, 42928, -42258 },
+	{ 42929, 42929, -42282 },
+	{ 42930, 42930, -42261 },
+	{ 42931, 42931, 928 },
+	{ 42932, 42934, EvenOddSkip },
+	{ 43888, 43967, -38864 },
 	{ 65313, 65338, 32 },
 	{ 66560, 66599, 40 },
+	{ 68736, 68786, 64 },
+	{ 71840, 71871, 32 },
 };
-const int num_unicode_tolower = 167;
+const int num_unicode_tolower = 180;
 
 
 
diff --git a/re2/unicode_groups.cc b/re2/unicode_groups.cc
index 0df585e..59087bc 100644
--- a/re2/unicode_groups.cc
+++ b/re2/unicode_groups.cc
@@ -53,6 +53,7 @@
 	{ 11812, 11812 },
 	{ 11814, 11814 },
 	{ 11816, 11816 },
+	{ 11842, 11842 },
 	{ 12296, 12296 },
 	{ 12298, 12298 },
 	{ 12300, 12300 },
@@ -63,7 +64,7 @@
 	{ 12312, 12312 },
 	{ 12314, 12314 },
 	{ 12317, 12317 },
-	{ 64830, 64830 },
+	{ 64831, 64831 },
 	{ 65047, 65047 },
 	{ 65077, 65077 },
 	{ 65079, 65079 },
@@ -97,7 +98,7 @@
 	{ 66369, 66369 },
 	{ 66378, 66378 },
 	{ 66513, 66517 },
-	{ 74752, 74850 },
+	{ 74752, 74862 },
 };
 static const URange16 No_range16[] = {
 	{ 178, 179 },
@@ -132,18 +133,34 @@
 static const URange32 No_range32[] = {
 	{ 65799, 65843 },
 	{ 65909, 65912 },
-	{ 65930, 65930 },
+	{ 65930, 65931 },
+	{ 66273, 66299 },
 	{ 66336, 66339 },
 	{ 67672, 67679 },
+	{ 67705, 67711 },
+	{ 67751, 67759 },
+	{ 67835, 67839 },
 	{ 67862, 67867 },
+	{ 68028, 68029 },
+	{ 68032, 68047 },
+	{ 68050, 68095 },
 	{ 68160, 68167 },
 	{ 68221, 68222 },
+	{ 68253, 68255 },
+	{ 68331, 68335 },
 	{ 68440, 68447 },
 	{ 68472, 68479 },
+	{ 68521, 68527 },
+	{ 68858, 68863 },
 	{ 69216, 69246 },
 	{ 69714, 69733 },
+	{ 70113, 70132 },
+	{ 71482, 71483 },
+	{ 71914, 71922 },
+	{ 93019, 93025 },
 	{ 119648, 119665 },
-	{ 127232, 127242 },
+	{ 125127, 125135 },
+	{ 127232, 127244 },
 };
 static const URange16 Lo_range16[] = {
 	{ 170, 170 },
@@ -168,14 +185,12 @@
 	{ 1994, 2026 },
 	{ 2048, 2069 },
 	{ 2112, 2136 },
-	{ 2208, 2208 },
-	{ 2210, 2220 },
+	{ 2208, 2228 },
 	{ 2308, 2361 },
 	{ 2365, 2365 },
 	{ 2384, 2384 },
 	{ 2392, 2401 },
-	{ 2418, 2423 },
-	{ 2425, 2431 },
+	{ 2418, 2432 },
 	{ 2437, 2444 },
 	{ 2447, 2448 },
 	{ 2451, 2472 },
@@ -206,6 +221,7 @@
 	{ 2749, 2749 },
 	{ 2768, 2768 },
 	{ 2784, 2785 },
+	{ 2809, 2809 },
 	{ 2821, 2828 },
 	{ 2831, 2832 },
 	{ 2835, 2856 },
@@ -230,10 +246,9 @@
 	{ 3077, 3084 },
 	{ 3086, 3088 },
 	{ 3090, 3112 },
-	{ 3114, 3123 },
-	{ 3125, 3129 },
+	{ 3114, 3129 },
 	{ 3133, 3133 },
-	{ 3160, 3161 },
+	{ 3160, 3162 },
 	{ 3168, 3169 },
 	{ 3205, 3212 },
 	{ 3214, 3216 },
@@ -249,7 +264,7 @@
 	{ 3346, 3386 },
 	{ 3389, 3389 },
 	{ 3406, 3406 },
-	{ 3424, 3425 },
+	{ 3423, 3425 },
 	{ 3450, 3455 },
 	{ 3461, 3478 },
 	{ 3482, 3505 },
@@ -306,11 +321,11 @@
 	{ 4882, 4885 },
 	{ 4888, 4954 },
 	{ 4992, 5007 },
-	{ 5024, 5108 },
 	{ 5121, 5740 },
 	{ 5743, 5759 },
 	{ 5761, 5786 },
 	{ 5792, 5866 },
+	{ 5873, 5880 },
 	{ 5888, 5900 },
 	{ 5902, 5905 },
 	{ 5920, 5937 },
@@ -324,11 +339,11 @@
 	{ 6272, 6312 },
 	{ 6314, 6314 },
 	{ 6320, 6389 },
-	{ 6400, 6428 },
+	{ 6400, 6430 },
 	{ 6480, 6509 },
 	{ 6512, 6516 },
 	{ 6528, 6571 },
-	{ 6593, 6599 },
+	{ 6576, 6601 },
 	{ 6656, 6678 },
 	{ 6688, 6740 },
 	{ 6917, 6963 },
@@ -364,7 +379,7 @@
 	{ 12704, 12730 },
 	{ 12784, 12799 },
 	{ 13312, 19893 },
-	{ 19968, 40908 },
+	{ 19968, 40917 },
 	{ 40960, 40980 },
 	{ 40982, 42124 },
 	{ 42192, 42231 },
@@ -373,6 +388,8 @@
 	{ 42538, 42539 },
 	{ 42606, 42606 },
 	{ 42656, 42725 },
+	{ 42895, 42895 },
+	{ 42999, 42999 },
 	{ 43003, 43009 },
 	{ 43011, 43013 },
 	{ 43015, 43018 },
@@ -381,17 +398,21 @@
 	{ 43138, 43187 },
 	{ 43250, 43255 },
 	{ 43259, 43259 },
+	{ 43261, 43261 },
 	{ 43274, 43301 },
 	{ 43312, 43334 },
 	{ 43360, 43388 },
 	{ 43396, 43442 },
+	{ 43488, 43492 },
+	{ 43495, 43503 },
+	{ 43514, 43518 },
 	{ 43520, 43560 },
 	{ 43584, 43586 },
 	{ 43588, 43595 },
 	{ 43616, 43631 },
 	{ 43633, 43638 },
 	{ 43642, 43642 },
-	{ 43648, 43695 },
+	{ 43646, 43695 },
 	{ 43697, 43697 },
 	{ 43701, 43702 },
 	{ 43705, 43709 },
@@ -443,19 +464,29 @@
 	{ 65664, 65786 },
 	{ 66176, 66204 },
 	{ 66208, 66256 },
-	{ 66304, 66334 },
+	{ 66304, 66335 },
 	{ 66352, 66368 },
 	{ 66370, 66377 },
+	{ 66384, 66421 },
 	{ 66432, 66461 },
 	{ 66464, 66499 },
 	{ 66504, 66511 },
 	{ 66640, 66717 },
+	{ 66816, 66855 },
+	{ 66864, 66915 },
+	{ 67072, 67382 },
+	{ 67392, 67413 },
+	{ 67424, 67431 },
 	{ 67584, 67589 },
 	{ 67592, 67592 },
 	{ 67594, 67637 },
 	{ 67639, 67640 },
 	{ 67644, 67644 },
 	{ 67647, 67669 },
+	{ 67680, 67702 },
+	{ 67712, 67742 },
+	{ 67808, 67826 },
+	{ 67828, 67829 },
 	{ 67840, 67861 },
 	{ 67872, 67897 },
 	{ 67968, 68023 },
@@ -465,23 +496,70 @@
 	{ 68117, 68119 },
 	{ 68121, 68147 },
 	{ 68192, 68220 },
+	{ 68224, 68252 },
+	{ 68288, 68295 },
+	{ 68297, 68324 },
 	{ 68352, 68405 },
 	{ 68416, 68437 },
 	{ 68448, 68466 },
+	{ 68480, 68497 },
 	{ 68608, 68680 },
 	{ 69635, 69687 },
 	{ 69763, 69807 },
 	{ 69840, 69864 },
 	{ 69891, 69926 },
+	{ 69968, 70002 },
+	{ 70006, 70006 },
 	{ 70019, 70066 },
 	{ 70081, 70084 },
+	{ 70106, 70106 },
+	{ 70108, 70108 },
+	{ 70144, 70161 },
+	{ 70163, 70187 },
+	{ 70272, 70278 },
+	{ 70280, 70280 },
+	{ 70282, 70285 },
+	{ 70287, 70301 },
+	{ 70303, 70312 },
+	{ 70320, 70366 },
+	{ 70405, 70412 },
+	{ 70415, 70416 },
+	{ 70419, 70440 },
+	{ 70442, 70448 },
+	{ 70450, 70451 },
+	{ 70453, 70457 },
+	{ 70461, 70461 },
+	{ 70480, 70480 },
+	{ 70493, 70497 },
+	{ 70784, 70831 },
+	{ 70852, 70853 },
+	{ 70855, 70855 },
+	{ 71040, 71086 },
+	{ 71128, 71131 },
+	{ 71168, 71215 },
+	{ 71236, 71236 },
 	{ 71296, 71338 },
-	{ 73728, 74606 },
+	{ 71424, 71449 },
+	{ 71935, 71935 },
+	{ 72384, 72440 },
+	{ 73728, 74649 },
+	{ 74880, 75075 },
 	{ 77824, 78894 },
+	{ 82944, 83526 },
 	{ 92160, 92728 },
+	{ 92736, 92766 },
+	{ 92880, 92909 },
+	{ 92928, 92975 },
+	{ 93027, 93047 },
+	{ 93053, 93071 },
 	{ 93952, 94020 },
 	{ 94032, 94032 },
 	{ 110592, 110593 },
+	{ 113664, 113770 },
+	{ 113776, 113788 },
+	{ 113792, 113800 },
+	{ 113808, 113817 },
+	{ 124928, 125124 },
 	{ 126464, 126467 },
 	{ 126469, 126495 },
 	{ 126497, 126498 },
@@ -518,6 +596,7 @@
 	{ 131072, 173782 },
 	{ 173824, 177972 },
 	{ 177984, 178205 },
+	{ 178208, 183969 },
 	{ 194560, 195101 },
 };
 static const URange16 Ll_range16[] = {
@@ -786,7 +865,12 @@
 	{ 1315, 1315 },
 	{ 1317, 1317 },
 	{ 1319, 1319 },
+	{ 1321, 1321 },
+	{ 1323, 1323 },
+	{ 1325, 1325 },
+	{ 1327, 1327 },
 	{ 1377, 1415 },
+	{ 5112, 5117 },
 	{ 7424, 7467 },
 	{ 7531, 7543 },
 	{ 7545, 7578 },
@@ -1044,6 +1128,8 @@
 	{ 42643, 42643 },
 	{ 42645, 42645 },
 	{ 42647, 42647 },
+	{ 42649, 42649 },
+	{ 42651, 42651 },
 	{ 42787, 42787 },
 	{ 42789, 42789 },
 	{ 42791, 42791 },
@@ -1093,19 +1179,31 @@
 	{ 42892, 42892 },
 	{ 42894, 42894 },
 	{ 42897, 42897 },
-	{ 42899, 42899 },
+	{ 42899, 42901 },
+	{ 42903, 42903 },
+	{ 42905, 42905 },
+	{ 42907, 42907 },
+	{ 42909, 42909 },
+	{ 42911, 42911 },
 	{ 42913, 42913 },
 	{ 42915, 42915 },
 	{ 42917, 42917 },
 	{ 42919, 42919 },
 	{ 42921, 42921 },
+	{ 42933, 42933 },
+	{ 42935, 42935 },
 	{ 43002, 43002 },
+	{ 43824, 43866 },
+	{ 43872, 43877 },
+	{ 43888, 43967 },
 	{ 64256, 64262 },
 	{ 64275, 64279 },
 	{ 65345, 65370 },
 };
 static const URange32 Ll_range32[] = {
 	{ 66600, 66639 },
+	{ 68800, 68850 },
+	{ 71872, 71903 },
 	{ 119834, 119859 },
 	{ 119886, 119892 },
 	{ 119894, 119911 },
@@ -1177,18 +1275,22 @@
 	{ 42232, 42237 },
 	{ 42508, 42508 },
 	{ 42623, 42623 },
+	{ 42652, 42653 },
 	{ 42775, 42783 },
 	{ 42864, 42864 },
 	{ 42888, 42888 },
 	{ 43000, 43001 },
 	{ 43471, 43471 },
+	{ 43494, 43494 },
 	{ 43632, 43632 },
 	{ 43741, 43741 },
 	{ 43763, 43764 },
+	{ 43868, 43871 },
 	{ 65392, 65392 },
 	{ 65438, 65439 },
 };
 static const URange32 Lm_range32[] = {
+	{ 92992, 92995 },
 	{ 94099, 94111 },
 };
 static const URange16 Nd_range16[] = {
@@ -1205,6 +1307,7 @@
 	{ 3174, 3183 },
 	{ 3302, 3311 },
 	{ 3430, 3439 },
+	{ 3558, 3567 },
 	{ 3664, 3673 },
 	{ 3792, 3801 },
 	{ 3872, 3881 },
@@ -1224,6 +1327,7 @@
 	{ 43216, 43225 },
 	{ 43264, 43273 },
 	{ 43472, 43481 },
+	{ 43504, 43513 },
 	{ 43600, 43609 },
 	{ 44016, 44025 },
 	{ 65296, 65305 },
@@ -1234,7 +1338,14 @@
 	{ 69872, 69881 },
 	{ 69942, 69951 },
 	{ 70096, 70105 },
+	{ 70384, 70393 },
+	{ 70864, 70873 },
+	{ 71248, 71257 },
 	{ 71360, 71369 },
+	{ 71472, 71481 },
+	{ 71904, 71913 },
+	{ 92768, 92777 },
+	{ 93008, 93017 },
 	{ 120782, 120831 },
 };
 static const URange16 Pc_range16[] = {
@@ -1405,6 +1516,7 @@
 	{ 880, 880 },
 	{ 882, 882 },
 	{ 886, 886 },
+	{ 895, 895 },
 	{ 902, 902 },
 	{ 904, 906 },
 	{ 908, 908 },
@@ -1524,10 +1636,15 @@
 	{ 1314, 1314 },
 	{ 1316, 1316 },
 	{ 1318, 1318 },
+	{ 1320, 1320 },
+	{ 1322, 1322 },
+	{ 1324, 1324 },
+	{ 1326, 1326 },
 	{ 1329, 1366 },
 	{ 4256, 4293 },
 	{ 4295, 4295 },
 	{ 4301, 4301 },
+	{ 5024, 5109 },
 	{ 7680, 7680 },
 	{ 7682, 7682 },
 	{ 7684, 7684 },
@@ -1778,6 +1895,8 @@
 	{ 42642, 42642 },
 	{ 42644, 42644 },
 	{ 42646, 42646 },
+	{ 42648, 42648 },
+	{ 42650, 42650 },
 	{ 42786, 42786 },
 	{ 42788, 42788 },
 	{ 42790, 42790 },
@@ -1827,16 +1946,25 @@
 	{ 42893, 42893 },
 	{ 42896, 42896 },
 	{ 42898, 42898 },
+	{ 42902, 42902 },
+	{ 42904, 42904 },
+	{ 42906, 42906 },
+	{ 42908, 42908 },
+	{ 42910, 42910 },
 	{ 42912, 42912 },
 	{ 42914, 42914 },
 	{ 42916, 42916 },
 	{ 42918, 42918 },
 	{ 42920, 42920 },
-	{ 42922, 42922 },
+	{ 42922, 42925 },
+	{ 42928, 42932 },
+	{ 42934, 42934 },
 	{ 65313, 65338 },
 };
 static const URange32 Lu_range32[] = {
 	{ 66560, 66599 },
+	{ 68736, 68786 },
+	{ 71840, 71871 },
 	{ 119808, 119833 },
 	{ 119860, 119885 },
 	{ 119912, 119937 },
@@ -1891,6 +2019,7 @@
 	{ 11799, 11799 },
 	{ 11802, 11802 },
 	{ 11834, 11835 },
+	{ 11840, 11840 },
 	{ 12316, 12316 },
 	{ 12336, 12336 },
 	{ 12448, 12448 },
@@ -1953,7 +2082,7 @@
 	{ 12313, 12313 },
 	{ 12315, 12315 },
 	{ 12318, 12319 },
-	{ 64831, 64831 },
+	{ 64830, 64830 },
 	{ 65048, 65048 },
 	{ 65078, 65078 },
 	{ 65080, 65080 },
@@ -2068,6 +2197,8 @@
 	{ 11806, 11807 },
 	{ 11818, 11822 },
 	{ 11824, 11833 },
+	{ 11836, 11839 },
+	{ 11841, 11841 },
 	{ 12289, 12291 },
 	{ 12349, 12349 },
 	{ 12539, 12539 },
@@ -2079,6 +2210,7 @@
 	{ 43124, 43127 },
 	{ 43214, 43215 },
 	{ 43256, 43258 },
+	{ 43260, 43260 },
 	{ 43310, 43311 },
 	{ 43359, 43359 },
 	{ 43457, 43469 },
@@ -2112,21 +2244,41 @@
 	{ 65792, 65794 },
 	{ 66463, 66463 },
 	{ 66512, 66512 },
+	{ 66927, 66927 },
 	{ 67671, 67671 },
 	{ 67871, 67871 },
 	{ 67903, 67903 },
 	{ 68176, 68184 },
 	{ 68223, 68223 },
+	{ 68336, 68342 },
 	{ 68409, 68415 },
+	{ 68505, 68508 },
 	{ 69703, 69709 },
 	{ 69819, 69820 },
 	{ 69822, 69825 },
 	{ 69952, 69955 },
-	{ 70085, 70088 },
-	{ 74864, 74867 },
+	{ 70004, 70005 },
+	{ 70085, 70089 },
+	{ 70093, 70093 },
+	{ 70107, 70107 },
+	{ 70109, 70111 },
+	{ 70200, 70205 },
+	{ 70313, 70313 },
+	{ 70854, 70854 },
+	{ 71105, 71127 },
+	{ 71233, 71235 },
+	{ 71484, 71486 },
+	{ 74864, 74868 },
+	{ 92782, 92783 },
+	{ 92917, 92917 },
+	{ 92983, 92987 },
+	{ 92996, 92996 },
+	{ 113823, 113823 },
+	{ 121479, 121483 },
 };
 static const URange16 Me_range16[] = {
 	{ 1160, 1161 },
+	{ 6846, 6846 },
 	{ 8413, 8416 },
 	{ 8418, 8420 },
 	{ 42608, 42610 },
@@ -2135,7 +2287,7 @@
 	{ 0, 31 },
 	{ 127, 159 },
 	{ 173, 173 },
-	{ 1536, 1540 },
+	{ 1536, 1541 },
 	{ 1564, 1564 },
 	{ 1757, 1757 },
 	{ 1807, 1807 },
@@ -2150,6 +2302,7 @@
 };
 static const URange32 C_range32[] = {
 	{ 69821, 69821 },
+	{ 113824, 113827 },
 	{ 119155, 119162 },
 	{ 917505, 917505 },
 	{ 917536, 917631 },
@@ -2221,8 +2374,6 @@
 	{ 6441, 6443 },
 	{ 6448, 6449 },
 	{ 6451, 6456 },
-	{ 6576, 6592 },
-	{ 6600, 6601 },
 	{ 6681, 6682 },
 	{ 6741, 6741 },
 	{ 6743, 6743 },
@@ -2238,7 +2389,6 @@
 	{ 7073, 7073 },
 	{ 7078, 7079 },
 	{ 7082, 7082 },
-	{ 7084, 7085 },
 	{ 7143, 7143 },
 	{ 7146, 7148 },
 	{ 7150, 7150 },
@@ -2261,6 +2411,7 @@
 	{ 43571, 43572 },
 	{ 43597, 43597 },
 	{ 43643, 43643 },
+	{ 43645, 43645 },
 	{ 43755, 43755 },
 	{ 43758, 43759 },
 	{ 43765, 43765 },
@@ -2279,9 +2430,32 @@
 	{ 70018, 70018 },
 	{ 70067, 70069 },
 	{ 70079, 70080 },
+	{ 70188, 70190 },
+	{ 70194, 70195 },
+	{ 70197, 70197 },
+	{ 70368, 70370 },
+	{ 70402, 70403 },
+	{ 70462, 70463 },
+	{ 70465, 70468 },
+	{ 70471, 70472 },
+	{ 70475, 70477 },
+	{ 70487, 70487 },
+	{ 70498, 70499 },
+	{ 70832, 70834 },
+	{ 70841, 70841 },
+	{ 70843, 70846 },
+	{ 70849, 70849 },
+	{ 71087, 71089 },
+	{ 71096, 71099 },
+	{ 71102, 71102 },
+	{ 71216, 71218 },
+	{ 71227, 71228 },
+	{ 71230, 71230 },
 	{ 71340, 71340 },
 	{ 71342, 71343 },
 	{ 71350, 71350 },
+	{ 71456, 71457 },
+	{ 71462, 71462 },
 	{ 94033, 94078 },
 	{ 119141, 119142 },
 	{ 119149, 119154 },
@@ -2310,8 +2484,7 @@
 	{ 2085, 2087 },
 	{ 2089, 2093 },
 	{ 2137, 2139 },
-	{ 2276, 2302 },
-	{ 2304, 2306 },
+	{ 2275, 2306 },
 	{ 2362, 2362 },
 	{ 2364, 2364 },
 	{ 2369, 2376 },
@@ -2347,16 +2520,19 @@
 	{ 2946, 2946 },
 	{ 3008, 3008 },
 	{ 3021, 3021 },
+	{ 3072, 3072 },
 	{ 3134, 3136 },
 	{ 3142, 3144 },
 	{ 3146, 3149 },
 	{ 3157, 3158 },
 	{ 3170, 3171 },
+	{ 3201, 3201 },
 	{ 3260, 3260 },
 	{ 3263, 3263 },
 	{ 3270, 3270 },
 	{ 3276, 3277 },
 	{ 3298, 3299 },
+	{ 3329, 3329 },
 	{ 3393, 3396 },
 	{ 3405, 3405 },
 	{ 3426, 3427 },
@@ -2416,6 +2592,7 @@
 	{ 6757, 6764 },
 	{ 6771, 6780 },
 	{ 6783, 6783 },
+	{ 6832, 6845 },
 	{ 6912, 6915 },
 	{ 6964, 6964 },
 	{ 6966, 6970 },
@@ -2425,7 +2602,7 @@
 	{ 7040, 7041 },
 	{ 7074, 7077 },
 	{ 7080, 7081 },
-	{ 7083, 7083 },
+	{ 7083, 7085 },
 	{ 7142, 7142 },
 	{ 7144, 7145 },
 	{ 7149, 7149 },
@@ -2437,7 +2614,8 @@
 	{ 7394, 7400 },
 	{ 7405, 7405 },
 	{ 7412, 7412 },
-	{ 7616, 7654 },
+	{ 7416, 7417 },
+	{ 7616, 7669 },
 	{ 7676, 7679 },
 	{ 8400, 8412 },
 	{ 8417, 8417 },
@@ -2449,7 +2627,7 @@
 	{ 12441, 12442 },
 	{ 42607, 42607 },
 	{ 42612, 42621 },
-	{ 42655, 42655 },
+	{ 42654, 42655 },
 	{ 42736, 42737 },
 	{ 43010, 43010 },
 	{ 43014, 43014 },
@@ -2463,11 +2641,13 @@
 	{ 43443, 43443 },
 	{ 43446, 43449 },
 	{ 43452, 43452 },
+	{ 43493, 43493 },
 	{ 43561, 43566 },
 	{ 43569, 43570 },
 	{ 43573, 43574 },
 	{ 43587, 43587 },
 	{ 43596, 43596 },
+	{ 43644, 43644 },
 	{ 43696, 43696 },
 	{ 43698, 43700 },
 	{ 43703, 43704 },
@@ -2480,35 +2660,74 @@
 	{ 44013, 44013 },
 	{ 64286, 64286 },
 	{ 65024, 65039 },
-	{ 65056, 65062 },
+	{ 65056, 65071 },
 };
 static const URange32 Mn_range32[] = {
 	{ 66045, 66045 },
+	{ 66272, 66272 },
+	{ 66422, 66426 },
 	{ 68097, 68099 },
 	{ 68101, 68102 },
 	{ 68108, 68111 },
 	{ 68152, 68154 },
 	{ 68159, 68159 },
+	{ 68325, 68326 },
 	{ 69633, 69633 },
 	{ 69688, 69702 },
-	{ 69760, 69761 },
+	{ 69759, 69761 },
 	{ 69811, 69814 },
 	{ 69817, 69818 },
 	{ 69888, 69890 },
 	{ 69927, 69931 },
 	{ 69933, 69940 },
+	{ 70003, 70003 },
 	{ 70016, 70017 },
 	{ 70070, 70078 },
+	{ 70090, 70092 },
+	{ 70191, 70193 },
+	{ 70196, 70196 },
+	{ 70198, 70199 },
+	{ 70367, 70367 },
+	{ 70371, 70378 },
+	{ 70400, 70401 },
+	{ 70460, 70460 },
+	{ 70464, 70464 },
+	{ 70502, 70508 },
+	{ 70512, 70516 },
+	{ 70835, 70840 },
+	{ 70842, 70842 },
+	{ 70847, 70848 },
+	{ 70850, 70851 },
+	{ 71090, 71093 },
+	{ 71100, 71101 },
+	{ 71103, 71104 },
+	{ 71132, 71133 },
+	{ 71219, 71226 },
+	{ 71229, 71229 },
+	{ 71231, 71232 },
 	{ 71339, 71339 },
 	{ 71341, 71341 },
 	{ 71344, 71349 },
 	{ 71351, 71351 },
+	{ 71453, 71455 },
+	{ 71458, 71461 },
+	{ 71463, 71467 },
+	{ 92912, 92916 },
+	{ 92976, 92982 },
 	{ 94095, 94098 },
+	{ 113821, 113822 },
 	{ 119143, 119145 },
 	{ 119163, 119170 },
 	{ 119173, 119179 },
 	{ 119210, 119213 },
 	{ 119362, 119364 },
+	{ 121344, 121398 },
+	{ 121403, 121452 },
+	{ 121461, 121461 },
+	{ 121476, 121476 },
+	{ 121499, 121503 },
+	{ 121505, 121519 },
+	{ 125136, 125142 },
 	{ 917760, 917999 },
 };
 static const URange16 M_range16[] = {
@@ -2535,8 +2754,7 @@
 	{ 2085, 2087 },
 	{ 2089, 2093 },
 	{ 2137, 2139 },
-	{ 2276, 2302 },
-	{ 2304, 2307 },
+	{ 2275, 2307 },
 	{ 2362, 2364 },
 	{ 2366, 2383 },
 	{ 2385, 2391 },
@@ -2574,20 +2792,20 @@
 	{ 3014, 3016 },
 	{ 3018, 3021 },
 	{ 3031, 3031 },
-	{ 3073, 3075 },
+	{ 3072, 3075 },
 	{ 3134, 3140 },
 	{ 3142, 3144 },
 	{ 3146, 3149 },
 	{ 3157, 3158 },
 	{ 3170, 3171 },
-	{ 3202, 3203 },
+	{ 3201, 3203 },
 	{ 3260, 3260 },
 	{ 3262, 3268 },
 	{ 3270, 3272 },
 	{ 3274, 3277 },
 	{ 3285, 3286 },
 	{ 3298, 3299 },
-	{ 3330, 3331 },
+	{ 3329, 3331 },
 	{ 3390, 3396 },
 	{ 3398, 3400 },
 	{ 3402, 3405 },
@@ -2636,12 +2854,11 @@
 	{ 6313, 6313 },
 	{ 6432, 6443 },
 	{ 6448, 6459 },
-	{ 6576, 6592 },
-	{ 6600, 6601 },
 	{ 6679, 6683 },
 	{ 6741, 6750 },
 	{ 6752, 6780 },
 	{ 6783, 6783 },
+	{ 6832, 6846 },
 	{ 6912, 6916 },
 	{ 6964, 6980 },
 	{ 7019, 7027 },
@@ -2653,7 +2870,8 @@
 	{ 7380, 7400 },
 	{ 7405, 7405 },
 	{ 7410, 7412 },
-	{ 7616, 7654 },
+	{ 7416, 7417 },
+	{ 7616, 7669 },
 	{ 7676, 7679 },
 	{ 8400, 8432 },
 	{ 11503, 11505 },
@@ -2663,7 +2881,7 @@
 	{ 12441, 12442 },
 	{ 42607, 42610 },
 	{ 42612, 42621 },
-	{ 42655, 42655 },
+	{ 42654, 42655 },
 	{ 42736, 42737 },
 	{ 43010, 43010 },
 	{ 43014, 43014 },
@@ -2676,10 +2894,11 @@
 	{ 43335, 43347 },
 	{ 43392, 43395 },
 	{ 43443, 43456 },
+	{ 43493, 43493 },
 	{ 43561, 43574 },
 	{ 43587, 43587 },
 	{ 43596, 43597 },
-	{ 43643, 43643 },
+	{ 43643, 43645 },
 	{ 43696, 43696 },
 	{ 43698, 43700 },
 	{ 43703, 43704 },
@@ -2691,32 +2910,64 @@
 	{ 44012, 44013 },
 	{ 64286, 64286 },
 	{ 65024, 65039 },
-	{ 65056, 65062 },
+	{ 65056, 65071 },
 };
 static const URange32 M_range32[] = {
 	{ 66045, 66045 },
+	{ 66272, 66272 },
+	{ 66422, 66426 },
 	{ 68097, 68099 },
 	{ 68101, 68102 },
 	{ 68108, 68111 },
 	{ 68152, 68154 },
 	{ 68159, 68159 },
+	{ 68325, 68326 },
 	{ 69632, 69634 },
 	{ 69688, 69702 },
-	{ 69760, 69762 },
+	{ 69759, 69762 },
 	{ 69808, 69818 },
 	{ 69888, 69890 },
 	{ 69927, 69940 },
+	{ 70003, 70003 },
 	{ 70016, 70018 },
 	{ 70067, 70080 },
+	{ 70090, 70092 },
+	{ 70188, 70199 },
+	{ 70367, 70378 },
+	{ 70400, 70403 },
+	{ 70460, 70460 },
+	{ 70462, 70468 },
+	{ 70471, 70472 },
+	{ 70475, 70477 },
+	{ 70487, 70487 },
+	{ 70498, 70499 },
+	{ 70502, 70508 },
+	{ 70512, 70516 },
+	{ 70832, 70851 },
+	{ 71087, 71093 },
+	{ 71096, 71104 },
+	{ 71132, 71133 },
+	{ 71216, 71232 },
 	{ 71339, 71351 },
+	{ 71453, 71467 },
+	{ 92912, 92916 },
+	{ 92976, 92982 },
 	{ 94033, 94078 },
 	{ 94095, 94098 },
+	{ 113821, 113822 },
 	{ 119141, 119145 },
 	{ 119149, 119154 },
 	{ 119163, 119170 },
 	{ 119173, 119179 },
 	{ 119210, 119213 },
 	{ 119362, 119364 },
+	{ 121344, 121398 },
+	{ 121403, 121452 },
+	{ 121461, 121461 },
+	{ 121476, 121476 },
+	{ 121499, 121503 },
+	{ 121505, 121519 },
+	{ 125136, 125142 },
 	{ 917760, 917999 },
 };
 static const URange16 L_range16[] = {
@@ -2735,13 +2986,14 @@
 	{ 880, 884 },
 	{ 886, 887 },
 	{ 890, 893 },
+	{ 895, 895 },
 	{ 902, 902 },
 	{ 904, 906 },
 	{ 908, 908 },
 	{ 910, 929 },
 	{ 931, 1013 },
 	{ 1015, 1153 },
-	{ 1162, 1319 },
+	{ 1162, 1327 },
 	{ 1329, 1366 },
 	{ 1369, 1369 },
 	{ 1377, 1415 },
@@ -2767,14 +3019,12 @@
 	{ 2084, 2084 },
 	{ 2088, 2088 },
 	{ 2112, 2136 },
-	{ 2208, 2208 },
-	{ 2210, 2220 },
+	{ 2208, 2228 },
 	{ 2308, 2361 },
 	{ 2365, 2365 },
 	{ 2384, 2384 },
 	{ 2392, 2401 },
-	{ 2417, 2423 },
-	{ 2425, 2431 },
+	{ 2417, 2432 },
 	{ 2437, 2444 },
 	{ 2447, 2448 },
 	{ 2451, 2472 },
@@ -2805,6 +3055,7 @@
 	{ 2749, 2749 },
 	{ 2768, 2768 },
 	{ 2784, 2785 },
+	{ 2809, 2809 },
 	{ 2821, 2828 },
 	{ 2831, 2832 },
 	{ 2835, 2856 },
@@ -2829,10 +3080,9 @@
 	{ 3077, 3084 },
 	{ 3086, 3088 },
 	{ 3090, 3112 },
-	{ 3114, 3123 },
-	{ 3125, 3129 },
+	{ 3114, 3129 },
 	{ 3133, 3133 },
-	{ 3160, 3161 },
+	{ 3160, 3162 },
 	{ 3168, 3169 },
 	{ 3205, 3212 },
 	{ 3214, 3216 },
@@ -2848,7 +3098,7 @@
 	{ 3346, 3386 },
 	{ 3389, 3389 },
 	{ 3406, 3406 },
-	{ 3424, 3425 },
+	{ 3423, 3425 },
 	{ 3450, 3455 },
 	{ 3461, 3478 },
 	{ 3482, 3505 },
@@ -2909,11 +3159,13 @@
 	{ 4882, 4885 },
 	{ 4888, 4954 },
 	{ 4992, 5007 },
-	{ 5024, 5108 },
+	{ 5024, 5109 },
+	{ 5112, 5117 },
 	{ 5121, 5740 },
 	{ 5743, 5759 },
 	{ 5761, 5786 },
 	{ 5792, 5866 },
+	{ 5873, 5880 },
 	{ 5888, 5900 },
 	{ 5902, 5905 },
 	{ 5920, 5937 },
@@ -2927,11 +3179,11 @@
 	{ 6272, 6312 },
 	{ 6314, 6314 },
 	{ 6320, 6389 },
-	{ 6400, 6428 },
+	{ 6400, 6430 },
 	{ 6480, 6509 },
 	{ 6512, 6516 },
 	{ 6528, 6571 },
-	{ 6593, 6599 },
+	{ 6576, 6601 },
 	{ 6656, 6678 },
 	{ 6688, 6740 },
 	{ 6823, 6823 },
@@ -3015,21 +3267,20 @@
 	{ 12704, 12730 },
 	{ 12784, 12799 },
 	{ 13312, 19893 },
-	{ 19968, 40908 },
+	{ 19968, 40917 },
 	{ 40960, 42124 },
 	{ 42192, 42237 },
 	{ 42240, 42508 },
 	{ 42512, 42527 },
 	{ 42538, 42539 },
 	{ 42560, 42606 },
-	{ 42623, 42647 },
+	{ 42623, 42653 },
 	{ 42656, 42725 },
 	{ 42775, 42783 },
 	{ 42786, 42888 },
-	{ 42891, 42894 },
-	{ 42896, 42899 },
-	{ 42912, 42922 },
-	{ 43000, 43009 },
+	{ 42891, 42925 },
+	{ 42928, 42935 },
+	{ 42999, 43009 },
 	{ 43011, 43013 },
 	{ 43015, 43018 },
 	{ 43020, 43042 },
@@ -3037,17 +3288,21 @@
 	{ 43138, 43187 },
 	{ 43250, 43255 },
 	{ 43259, 43259 },
+	{ 43261, 43261 },
 	{ 43274, 43301 },
 	{ 43312, 43334 },
 	{ 43360, 43388 },
 	{ 43396, 43442 },
 	{ 43471, 43471 },
+	{ 43488, 43492 },
+	{ 43494, 43503 },
+	{ 43514, 43518 },
 	{ 43520, 43560 },
 	{ 43584, 43586 },
 	{ 43588, 43595 },
 	{ 43616, 43638 },
 	{ 43642, 43642 },
-	{ 43648, 43695 },
+	{ 43646, 43695 },
 	{ 43697, 43697 },
 	{ 43701, 43702 },
 	{ 43705, 43709 },
@@ -3061,7 +3316,9 @@
 	{ 43793, 43798 },
 	{ 43808, 43814 },
 	{ 43816, 43822 },
-	{ 43968, 44002 },
+	{ 43824, 43866 },
+	{ 43868, 43877 },
+	{ 43888, 44002 },
 	{ 44032, 55203 },
 	{ 55216, 55238 },
 	{ 55243, 55291 },
@@ -3101,19 +3358,29 @@
 	{ 65664, 65786 },
 	{ 66176, 66204 },
 	{ 66208, 66256 },
-	{ 66304, 66334 },
+	{ 66304, 66335 },
 	{ 66352, 66368 },
 	{ 66370, 66377 },
+	{ 66384, 66421 },
 	{ 66432, 66461 },
 	{ 66464, 66499 },
 	{ 66504, 66511 },
 	{ 66560, 66717 },
+	{ 66816, 66855 },
+	{ 66864, 66915 },
+	{ 67072, 67382 },
+	{ 67392, 67413 },
+	{ 67424, 67431 },
 	{ 67584, 67589 },
 	{ 67592, 67592 },
 	{ 67594, 67637 },
 	{ 67639, 67640 },
 	{ 67644, 67644 },
 	{ 67647, 67669 },
+	{ 67680, 67702 },
+	{ 67712, 67742 },
+	{ 67808, 67826 },
+	{ 67828, 67829 },
 	{ 67840, 67861 },
 	{ 67872, 67897 },
 	{ 67968, 68023 },
@@ -3123,24 +3390,74 @@
 	{ 68117, 68119 },
 	{ 68121, 68147 },
 	{ 68192, 68220 },
+	{ 68224, 68252 },
+	{ 68288, 68295 },
+	{ 68297, 68324 },
 	{ 68352, 68405 },
 	{ 68416, 68437 },
 	{ 68448, 68466 },
+	{ 68480, 68497 },
 	{ 68608, 68680 },
+	{ 68736, 68786 },
+	{ 68800, 68850 },
 	{ 69635, 69687 },
 	{ 69763, 69807 },
 	{ 69840, 69864 },
 	{ 69891, 69926 },
+	{ 69968, 70002 },
+	{ 70006, 70006 },
 	{ 70019, 70066 },
 	{ 70081, 70084 },
+	{ 70106, 70106 },
+	{ 70108, 70108 },
+	{ 70144, 70161 },
+	{ 70163, 70187 },
+	{ 70272, 70278 },
+	{ 70280, 70280 },
+	{ 70282, 70285 },
+	{ 70287, 70301 },
+	{ 70303, 70312 },
+	{ 70320, 70366 },
+	{ 70405, 70412 },
+	{ 70415, 70416 },
+	{ 70419, 70440 },
+	{ 70442, 70448 },
+	{ 70450, 70451 },
+	{ 70453, 70457 },
+	{ 70461, 70461 },
+	{ 70480, 70480 },
+	{ 70493, 70497 },
+	{ 70784, 70831 },
+	{ 70852, 70853 },
+	{ 70855, 70855 },
+	{ 71040, 71086 },
+	{ 71128, 71131 },
+	{ 71168, 71215 },
+	{ 71236, 71236 },
 	{ 71296, 71338 },
-	{ 73728, 74606 },
+	{ 71424, 71449 },
+	{ 71840, 71903 },
+	{ 71935, 71935 },
+	{ 72384, 72440 },
+	{ 73728, 74649 },
+	{ 74880, 75075 },
 	{ 77824, 78894 },
+	{ 82944, 83526 },
 	{ 92160, 92728 },
+	{ 92736, 92766 },
+	{ 92880, 92909 },
+	{ 92928, 92975 },
+	{ 92992, 92995 },
+	{ 93027, 93047 },
+	{ 93053, 93071 },
 	{ 93952, 94020 },
 	{ 94032, 94032 },
 	{ 94099, 94111 },
 	{ 110592, 110593 },
+	{ 113664, 113770 },
+	{ 113776, 113788 },
+	{ 113792, 113800 },
+	{ 113808, 113817 },
 	{ 119808, 119892 },
 	{ 119894, 119964 },
 	{ 119966, 119967 },
@@ -3171,6 +3488,7 @@
 	{ 120714, 120744 },
 	{ 120746, 120770 },
 	{ 120772, 120779 },
+	{ 124928, 125124 },
 	{ 126464, 126467 },
 	{ 126469, 126495 },
 	{ 126497, 126498 },
@@ -3207,6 +3525,7 @@
 	{ 131072, 173782 },
 	{ 173824, 177972 },
 	{ 177984, 178205 },
+	{ 178208, 183969 },
 	{ 194560, 195101 },
 };
 static const URange16 N_range16[] = {
@@ -3229,6 +3548,7 @@
 	{ 3192, 3198 },
 	{ 3302, 3311 },
 	{ 3430, 3445 },
+	{ 3558, 3567 },
 	{ 3664, 3673 },
 	{ 3792, 3801 },
 	{ 3872, 3891 },
@@ -3271,6 +3591,7 @@
 	{ 43216, 43225 },
 	{ 43264, 43273 },
 	{ 43472, 43481 },
+	{ 43504, 43513 },
 	{ 43600, 43609 },
 	{ 44016, 44025 },
 	{ 65296, 65305 },
@@ -3278,28 +3599,49 @@
 static const URange32 N_range32[] = {
 	{ 65799, 65843 },
 	{ 65856, 65912 },
-	{ 65930, 65930 },
+	{ 65930, 65931 },
+	{ 66273, 66299 },
 	{ 66336, 66339 },
 	{ 66369, 66369 },
 	{ 66378, 66378 },
 	{ 66513, 66517 },
 	{ 66720, 66729 },
 	{ 67672, 67679 },
+	{ 67705, 67711 },
+	{ 67751, 67759 },
+	{ 67835, 67839 },
 	{ 67862, 67867 },
+	{ 68028, 68029 },
+	{ 68032, 68047 },
+	{ 68050, 68095 },
 	{ 68160, 68167 },
 	{ 68221, 68222 },
+	{ 68253, 68255 },
+	{ 68331, 68335 },
 	{ 68440, 68447 },
 	{ 68472, 68479 },
+	{ 68521, 68527 },
+	{ 68858, 68863 },
 	{ 69216, 69246 },
 	{ 69714, 69743 },
 	{ 69872, 69881 },
 	{ 69942, 69951 },
 	{ 70096, 70105 },
+	{ 70113, 70132 },
+	{ 70384, 70393 },
+	{ 70864, 70873 },
+	{ 71248, 71257 },
 	{ 71360, 71369 },
-	{ 74752, 74850 },
+	{ 71472, 71483 },
+	{ 71904, 71922 },
+	{ 74752, 74862 },
+	{ 92768, 92777 },
+	{ 93008, 93017 },
+	{ 93019, 93025 },
 	{ 119648, 119665 },
 	{ 120782, 120831 },
-	{ 127232, 127242 },
+	{ 125127, 125135 },
+	{ 127232, 127244 },
 };
 static const URange16 Sk_range16[] = {
 	{ 94, 94 },
@@ -3325,11 +3667,15 @@
 	{ 42752, 42774 },
 	{ 42784, 42785 },
 	{ 42889, 42890 },
+	{ 43867, 43867 },
 	{ 64434, 64449 },
 	{ 65342, 65342 },
 	{ 65344, 65344 },
 	{ 65507, 65507 },
 };
+static const URange32 Sk_range32[] = {
+	{ 127995, 127999 },
+};
 static const URange16 P_range16[] = {
 	{ 33, 35 },
 	{ 37, 42 },
@@ -3416,7 +3762,7 @@
 	{ 11518, 11519 },
 	{ 11632, 11632 },
 	{ 11776, 11822 },
-	{ 11824, 11835 },
+	{ 11824, 11842 },
 	{ 12289, 12291 },
 	{ 12296, 12305 },
 	{ 12308, 12319 },
@@ -3432,6 +3778,7 @@
 	{ 43124, 43127 },
 	{ 43214, 43215 },
 	{ 43256, 43258 },
+	{ 43260, 43260 },
 	{ 43310, 43311 },
 	{ 43359, 43359 },
 	{ 43457, 43469 },
@@ -3462,18 +3809,37 @@
 	{ 65792, 65794 },
 	{ 66463, 66463 },
 	{ 66512, 66512 },
+	{ 66927, 66927 },
 	{ 67671, 67671 },
 	{ 67871, 67871 },
 	{ 67903, 67903 },
 	{ 68176, 68184 },
 	{ 68223, 68223 },
+	{ 68336, 68342 },
 	{ 68409, 68415 },
+	{ 68505, 68508 },
 	{ 69703, 69709 },
 	{ 69819, 69820 },
 	{ 69822, 69825 },
 	{ 69952, 69955 },
-	{ 70085, 70088 },
-	{ 74864, 74867 },
+	{ 70004, 70005 },
+	{ 70085, 70089 },
+	{ 70093, 70093 },
+	{ 70107, 70107 },
+	{ 70109, 70111 },
+	{ 70200, 70205 },
+	{ 70313, 70313 },
+	{ 70854, 70854 },
+	{ 71105, 71127 },
+	{ 71233, 71235 },
+	{ 71484, 71486 },
+	{ 74864, 74868 },
+	{ 92782, 92783 },
+	{ 92917, 92917 },
+	{ 92983, 92987 },
+	{ 92996, 92996 },
+	{ 113823, 113823 },
+	{ 121479, 121483 },
 };
 static const URange16 S_range16[] = {
 	{ 36, 36 },
@@ -3500,7 +3866,7 @@
 	{ 900, 901 },
 	{ 1014, 1014 },
 	{ 1154, 1154 },
-	{ 1423, 1423 },
+	{ 1421, 1423 },
 	{ 1542, 1544 },
 	{ 1547, 1547 },
 	{ 1550, 1551 },
@@ -3544,7 +3910,7 @@
 	{ 8274, 8274 },
 	{ 8314, 8316 },
 	{ 8330, 8332 },
-	{ 8352, 8378 },
+	{ 8352, 8382 },
 	{ 8448, 8449 },
 	{ 8451, 8454 },
 	{ 8456, 8457 },
@@ -3559,21 +3925,25 @@
 	{ 8512, 8516 },
 	{ 8522, 8525 },
 	{ 8527, 8527 },
+	{ 8586, 8587 },
 	{ 8592, 8967 },
 	{ 8972, 9000 },
-	{ 9003, 9203 },
+	{ 9003, 9210 },
 	{ 9216, 9254 },
 	{ 9280, 9290 },
 	{ 9372, 9449 },
-	{ 9472, 9983 },
-	{ 9985, 10087 },
+	{ 9472, 10087 },
 	{ 10132, 10180 },
 	{ 10183, 10213 },
 	{ 10224, 10626 },
 	{ 10649, 10711 },
 	{ 10716, 10747 },
-	{ 10750, 11084 },
-	{ 11088, 11097 },
+	{ 10750, 11123 },
+	{ 11126, 11157 },
+	{ 11160, 11193 },
+	{ 11197, 11208 },
+	{ 11210, 11217 },
+	{ 11244, 11247 },
 	{ 11493, 11498 },
 	{ 11904, 11929 },
 	{ 11931, 12019 },
@@ -3603,6 +3973,7 @@
 	{ 43048, 43051 },
 	{ 43062, 43065 },
 	{ 43639, 43641 },
+	{ 43867, 43867 },
 	{ 64297, 64297 },
 	{ 64434, 64449 },
 	{ 65020, 65021 },
@@ -3623,15 +3994,23 @@
 static const URange32 S_range32[] = {
 	{ 65847, 65855 },
 	{ 65913, 65929 },
+	{ 65932, 65932 },
 	{ 65936, 65947 },
+	{ 65952, 65952 },
 	{ 66000, 66044 },
+	{ 67703, 67704 },
+	{ 68296, 68296 },
+	{ 71487, 71487 },
+	{ 92988, 92991 },
+	{ 92997, 92997 },
+	{ 113820, 113820 },
 	{ 118784, 119029 },
 	{ 119040, 119078 },
 	{ 119081, 119140 },
 	{ 119146, 119148 },
 	{ 119171, 119172 },
 	{ 119180, 119209 },
-	{ 119214, 119261 },
+	{ 119214, 119272 },
 	{ 119296, 119361 },
 	{ 119365, 119365 },
 	{ 119552, 119638 },
@@ -3645,13 +4024,18 @@
 	{ 120713, 120713 },
 	{ 120745, 120745 },
 	{ 120771, 120771 },
+	{ 120832, 121343 },
+	{ 121399, 121402 },
+	{ 121453, 121460 },
+	{ 121462, 121475 },
+	{ 121477, 121478 },
 	{ 126704, 126705 },
 	{ 126976, 127019 },
 	{ 127024, 127123 },
 	{ 127136, 127150 },
-	{ 127153, 127166 },
+	{ 127153, 127167 },
 	{ 127169, 127183 },
-	{ 127185, 127199 },
+	{ 127185, 127221 },
 	{ 127248, 127278 },
 	{ 127280, 127339 },
 	{ 127344, 127386 },
@@ -3659,24 +4043,21 @@
 	{ 127504, 127546 },
 	{ 127552, 127560 },
 	{ 127568, 127569 },
-	{ 127744, 127776 },
-	{ 127792, 127797 },
-	{ 127799, 127868 },
-	{ 127872, 127891 },
-	{ 127904, 127940 },
-	{ 127942, 127946 },
-	{ 127968, 127984 },
-	{ 128000, 128062 },
-	{ 128064, 128064 },
-	{ 128066, 128247 },
-	{ 128249, 128252 },
-	{ 128256, 128317 },
-	{ 128320, 128323 },
-	{ 128336, 128359 },
-	{ 128507, 128576 },
-	{ 128581, 128591 },
-	{ 128640, 128709 },
+	{ 127744, 128377 },
+	{ 128379, 128419 },
+	{ 128421, 128720 },
+	{ 128736, 128748 },
+	{ 128752, 128755 },
 	{ 128768, 128883 },
+	{ 128896, 128980 },
+	{ 129024, 129035 },
+	{ 129040, 129095 },
+	{ 129104, 129113 },
+	{ 129120, 129159 },
+	{ 129168, 129197 },
+	{ 129296, 129304 },
+	{ 129408, 129412 },
+	{ 129472, 129472 },
 };
 static const URange16 So_range16[] = {
 	{ 166, 166 },
@@ -3684,6 +4065,7 @@
 	{ 174, 174 },
 	{ 176, 176 },
 	{ 1154, 1154 },
+	{ 1421, 1422 },
 	{ 1550, 1551 },
 	{ 1758, 1758 },
 	{ 1769, 1769 },
@@ -3726,6 +4108,7 @@
 	{ 8522, 8522 },
 	{ 8524, 8525 },
 	{ 8527, 8527 },
+	{ 8586, 8587 },
 	{ 8597, 8601 },
 	{ 8604, 8607 },
 	{ 8609, 8610 },
@@ -3741,7 +4124,7 @@
 	{ 9003, 9083 },
 	{ 9085, 9114 },
 	{ 9140, 9179 },
-	{ 9186, 9203 },
+	{ 9186, 9210 },
 	{ 9216, 9254 },
 	{ 9280, 9290 },
 	{ 9372, 9449 },
@@ -3749,13 +4132,17 @@
 	{ 9656, 9664 },
 	{ 9666, 9719 },
 	{ 9728, 9838 },
-	{ 9840, 9983 },
-	{ 9985, 10087 },
+	{ 9840, 10087 },
 	{ 10132, 10175 },
 	{ 10240, 10495 },
 	{ 11008, 11055 },
 	{ 11077, 11078 },
-	{ 11088, 11097 },
+	{ 11085, 11123 },
+	{ 11126, 11157 },
+	{ 11160, 11193 },
+	{ 11197, 11208 },
+	{ 11210, 11217 },
+	{ 11244, 11247 },
 	{ 11493, 11498 },
 	{ 11904, 11929 },
 	{ 11931, 12019 },
@@ -3791,24 +4178,37 @@
 static const URange32 So_range32[] = {
 	{ 65847, 65855 },
 	{ 65913, 65929 },
+	{ 65932, 65932 },
 	{ 65936, 65947 },
+	{ 65952, 65952 },
 	{ 66000, 66044 },
+	{ 67703, 67704 },
+	{ 68296, 68296 },
+	{ 71487, 71487 },
+	{ 92988, 92991 },
+	{ 92997, 92997 },
+	{ 113820, 113820 },
 	{ 118784, 119029 },
 	{ 119040, 119078 },
 	{ 119081, 119140 },
 	{ 119146, 119148 },
 	{ 119171, 119172 },
 	{ 119180, 119209 },
-	{ 119214, 119261 },
+	{ 119214, 119272 },
 	{ 119296, 119361 },
 	{ 119365, 119365 },
 	{ 119552, 119638 },
+	{ 120832, 121343 },
+	{ 121399, 121402 },
+	{ 121453, 121460 },
+	{ 121462, 121475 },
+	{ 121477, 121478 },
 	{ 126976, 127019 },
 	{ 127024, 127123 },
 	{ 127136, 127150 },
-	{ 127153, 127166 },
+	{ 127153, 127167 },
 	{ 127169, 127183 },
-	{ 127185, 127199 },
+	{ 127185, 127221 },
 	{ 127248, 127278 },
 	{ 127280, 127339 },
 	{ 127344, 127386 },
@@ -3816,24 +4216,22 @@
 	{ 127504, 127546 },
 	{ 127552, 127560 },
 	{ 127568, 127569 },
-	{ 127744, 127776 },
-	{ 127792, 127797 },
-	{ 127799, 127868 },
-	{ 127872, 127891 },
-	{ 127904, 127940 },
-	{ 127942, 127946 },
-	{ 127968, 127984 },
-	{ 128000, 128062 },
-	{ 128064, 128064 },
-	{ 128066, 128247 },
-	{ 128249, 128252 },
-	{ 128256, 128317 },
-	{ 128320, 128323 },
-	{ 128336, 128359 },
-	{ 128507, 128576 },
-	{ 128581, 128591 },
-	{ 128640, 128709 },
+	{ 127744, 127994 },
+	{ 128000, 128377 },
+	{ 128379, 128419 },
+	{ 128421, 128720 },
+	{ 128736, 128748 },
+	{ 128752, 128755 },
 	{ 128768, 128883 },
+	{ 128896, 128980 },
+	{ 129024, 129035 },
+	{ 129040, 129095 },
+	{ 129104, 129113 },
+	{ 129120, 129159 },
+	{ 129168, 129197 },
+	{ 129296, 129304 },
+	{ 129408, 129412 },
+	{ 129472, 129472 },
 };
 static const URange16 Sm_range16[] = {
 	{ 43, 43 },
@@ -3914,7 +4312,7 @@
 	{ 3065, 3065 },
 	{ 3647, 3647 },
 	{ 6107, 6107 },
-	{ 8352, 8378 },
+	{ 8352, 8382 },
 	{ 43064, 43064 },
 	{ 65020, 65020 },
 	{ 65129, 65129 },
@@ -3948,7 +4346,7 @@
 };
 static const URange16 Cf_range16[] = {
 	{ 173, 173 },
-	{ 1536, 1540 },
+	{ 1536, 1541 },
 	{ 1564, 1564 },
 	{ 1757, 1757 },
 	{ 1807, 1807 },
@@ -3962,6 +4360,7 @@
 };
 static const URange32 Cf_range32[] = {
 	{ 69821, 69821 },
+	{ 113824, 113827 },
 	{ 119155, 119162 },
 	{ 917505, 917505 },
 	{ 917536, 917631 },
@@ -3985,29 +4384,28 @@
 	{ 1920, 1969 },
 };
 static const URange16 Telugu_range16[] = {
-	{ 3073, 3075 },
+	{ 3072, 3075 },
 	{ 3077, 3084 },
 	{ 3086, 3088 },
 	{ 3090, 3112 },
-	{ 3114, 3123 },
-	{ 3125, 3129 },
+	{ 3114, 3129 },
 	{ 3133, 3140 },
 	{ 3142, 3144 },
 	{ 3146, 3149 },
 	{ 3157, 3158 },
-	{ 3160, 3161 },
+	{ 3160, 3162 },
 	{ 3168, 3171 },
 	{ 3174, 3183 },
 	{ 3192, 3199 },
 };
 static const URange16 Cyrillic_range16[] = {
 	{ 1024, 1156 },
-	{ 1159, 1319 },
+	{ 1159, 1327 },
 	{ 7467, 7467 },
 	{ 7544, 7544 },
 	{ 11744, 11775 },
-	{ 42560, 42647 },
-	{ 42655, 42655 },
+	{ 42560, 42655 },
+	{ 65070, 65071 },
 };
 static const URange16 Hangul_range16[] = {
 	{ 4352, 4607 },
@@ -4068,22 +4466,25 @@
 	{ 1611, 1621 },
 	{ 1648, 1648 },
 	{ 2385, 2386 },
+	{ 6832, 6846 },
 	{ 7376, 7378 },
 	{ 7380, 7392 },
 	{ 7394, 7400 },
 	{ 7405, 7405 },
 	{ 7412, 7412 },
-	{ 7616, 7654 },
+	{ 7416, 7417 },
+	{ 7616, 7669 },
 	{ 7676, 7679 },
 	{ 8204, 8205 },
 	{ 8400, 8432 },
 	{ 12330, 12333 },
 	{ 12441, 12442 },
 	{ 65024, 65039 },
-	{ 65056, 65062 },
+	{ 65056, 65069 },
 };
 static const URange32 Inherited_range32[] = {
 	{ 66045, 66045 },
+	{ 66272, 66272 },
 	{ 119143, 119145 },
 	{ 119163, 119170 },
 	{ 119173, 119179 },
@@ -4092,7 +4493,13 @@
 };
 static const URange32 Meroitic_Cursive_range32[] = {
 	{ 68000, 68023 },
-	{ 68030, 68031 },
+	{ 68028, 68047 },
+	{ 68050, 68095 },
+};
+static const URange32 Ahom_range32[] = {
+	{ 71424, 71449 },
+	{ 71453, 71467 },
+	{ 71472, 71487 },
 };
 static const URange16 Han_range16[] = {
 	{ 11904, 11929 },
@@ -4103,7 +4510,7 @@
 	{ 12321, 12329 },
 	{ 12344, 12347 },
 	{ 13312, 19893 },
-	{ 19968, 40908 },
+	{ 19968, 40917 },
 	{ 63744, 64109 },
 	{ 64112, 64217 },
 };
@@ -4111,14 +4518,18 @@
 	{ 131072, 173782 },
 	{ 173824, 177972 },
 	{ 177984, 178205 },
+	{ 178208, 183969 },
 	{ 194560, 195101 },
 };
+static const URange32 Old_North_Arabian_range32[] = {
+	{ 68224, 68255 },
+};
 static const URange16 Armenian_range16[] = {
 	{ 1329, 1366 },
 	{ 1369, 1375 },
 	{ 1377, 1415 },
 	{ 1418, 1418 },
-	{ 1423, 1423 },
+	{ 1421, 1423 },
 	{ 64275, 64279 },
 };
 static const URange16 Tamil_range16[] = {
@@ -4144,6 +4555,10 @@
 	{ 12549, 12589 },
 	{ 12704, 12730 },
 };
+static const URange32 Bassa_Vah_range32[] = {
+	{ 92880, 92909 },
+	{ 92912, 92917 },
+};
 static const URange16 Sundanese_range16[] = {
 	{ 7040, 7103 },
 	{ 7360, 7367 },
@@ -4153,7 +4568,7 @@
 	{ 5902, 5908 },
 };
 static const URange16 Malayalam_range16[] = {
-	{ 3330, 3331 },
+	{ 3329, 3331 },
 	{ 3333, 3340 },
 	{ 3342, 3344 },
 	{ 3346, 3386 },
@@ -4161,7 +4576,7 @@
 	{ 3398, 3400 },
 	{ 3402, 3406 },
 	{ 3415, 3415 },
-	{ 3424, 3427 },
+	{ 3423, 3427 },
 	{ 3430, 3445 },
 	{ 3449, 3455 },
 };
@@ -4186,12 +4601,20 @@
 	{ 43968, 44013 },
 	{ 44016, 44025 },
 };
+static const URange32 Pahawh_Hmong_range32[] = {
+	{ 92928, 92997 },
+	{ 93008, 93017 },
+	{ 93019, 93025 },
+	{ 93027, 93047 },
+	{ 93053, 93071 },
+};
 static const URange16 Tai_Le_range16[] = {
 	{ 6480, 6509 },
 	{ 6512, 6516 },
 };
 static const URange16 Kayah_Li_range16[] = {
-	{ 43264, 43311 },
+	{ 43264, 43309 },
+	{ 43311, 43311 },
 };
 static const URange16 Buginese_range16[] = {
 	{ 6656, 6683 },
@@ -4215,13 +4638,16 @@
 	{ 6816, 6829 },
 };
 static const URange32 Old_Italic_range32[] = {
-	{ 66304, 66334 },
-	{ 66336, 66339 },
+	{ 66304, 66339 },
 };
 static const URange32 Old_Persian_range32[] = {
 	{ 66464, 66499 },
 	{ 66504, 66517 },
 };
+static const URange32 Warang_Citi_range32[] = {
+	{ 71840, 71922 },
+	{ 71935, 71935 },
+};
 static const URange16 Latin_range16[] = {
 	{ 65, 90 },
 	{ 97, 122 },
@@ -4246,10 +4672,11 @@
 	{ 8544, 8584 },
 	{ 11360, 11391 },
 	{ 42786, 42887 },
-	{ 42891, 42894 },
-	{ 42896, 42899 },
-	{ 42912, 42922 },
-	{ 43000, 43007 },
+	{ 42891, 42925 },
+	{ 42928, 42935 },
+	{ 42999, 43007 },
+	{ 43824, 43866 },
+	{ 43868, 43876 },
 	{ 64256, 64262 },
 	{ 65313, 65338 },
 	{ 65345, 65370 },
@@ -4271,6 +4698,30 @@
 	{ 11559, 11559 },
 	{ 11565, 11565 },
 };
+static const URange32 Grantha_range32[] = {
+	{ 70400, 70403 },
+	{ 70405, 70412 },
+	{ 70415, 70416 },
+	{ 70419, 70440 },
+	{ 70442, 70448 },
+	{ 70450, 70451 },
+	{ 70453, 70457 },
+	{ 70460, 70468 },
+	{ 70471, 70472 },
+	{ 70475, 70477 },
+	{ 70480, 70480 },
+	{ 70487, 70487 },
+	{ 70493, 70499 },
+	{ 70502, 70508 },
+	{ 70512, 70516 },
+};
+static const URange32 Duployan_range32[] = {
+	{ 113664, 113770 },
+	{ 113776, 113788 },
+	{ 113792, 113800 },
+	{ 113808, 113817 },
+	{ 113820, 113823 },
+};
 static const URange16 Batak_range16[] = {
 	{ 7104, 7155 },
 	{ 7164, 7167 },
@@ -4278,9 +4729,8 @@
 static const URange16 Devanagari_range16[] = {
 	{ 2304, 2384 },
 	{ 2387, 2403 },
-	{ 2406, 2423 },
-	{ 2425, 2431 },
-	{ 43232, 43259 },
+	{ 2406, 2431 },
+	{ 43232, 43261 },
 };
 static const URange16 Thai_range16[] = {
 	{ 3585, 3642 },
@@ -4307,10 +4757,14 @@
 static const URange16 Braille_range16[] = {
 	{ 10240, 10495 },
 };
+static const URange32 Anatolian_Hieroglyphs_range32[] = {
+	{ 82944, 83526 },
+};
 static const URange16 Greek_range16[] = {
 	{ 880, 883 },
 	{ 885, 887 },
 	{ 890, 893 },
+	{ 895, 895 },
 	{ 900, 900 },
 	{ 902, 902 },
 	{ 904, 906 },
@@ -4339,14 +4793,20 @@
 	{ 8178, 8180 },
 	{ 8182, 8190 },
 	{ 8486, 8486 },
+	{ 43877, 43877 },
 };
 static const URange32 Greek_range32[] = {
-	{ 65856, 65930 },
+	{ 65856, 65932 },
+	{ 65952, 65952 },
 	{ 119296, 119365 },
 };
 static const URange32 Lycian_range32[] = {
 	{ 66176, 66204 },
 };
+static const URange32 Mende_Kikakui_range32[] = {
+	{ 124928, 125124 },
+	{ 125127, 125142 },
+};
 static const URange16 Tai_Viet_range16[] = {
 	{ 43648, 43714 },
 	{ 43739, 43743 },
@@ -4374,11 +4834,14 @@
 };
 static const URange16 Runic_range16[] = {
 	{ 5792, 5866 },
-	{ 5870, 5872 },
+	{ 5870, 5880 },
 };
 static const URange32 Gothic_range32[] = {
 	{ 66352, 66378 },
 };
+static const URange32 Mahajani_range32[] = {
+	{ 69968, 70006 },
+};
 static const URange16 Katakana_range16[] = {
 	{ 12449, 12538 },
 	{ 12541, 12543 },
@@ -4405,14 +4868,19 @@
 	{ 7248, 7295 },
 };
 static const URange16 Limbu_range16[] = {
-	{ 6400, 6428 },
+	{ 6400, 6430 },
 	{ 6432, 6443 },
 	{ 6448, 6459 },
 	{ 6464, 6464 },
 	{ 6468, 6479 },
 };
+static const URange32 Pau_Cin_Hau_range32[] = {
+	{ 72384, 72440 },
+};
 static const URange16 Cherokee_range16[] = {
-	{ 5024, 5108 },
+	{ 5024, 5109 },
+	{ 5112, 5117 },
+	{ 43888, 43967 },
 };
 static const URange32 Miao_range32[] = {
 	{ 93952, 94020 },
@@ -4436,8 +4904,8 @@
 	{ 2918, 2935 },
 };
 static const URange32 Sharada_range32[] = {
-	{ 70016, 70088 },
-	{ 70096, 70105 },
+	{ 70016, 70093 },
+	{ 70096, 70111 },
 };
 static const URange16 Gujarati_range16[] = {
 	{ 2689, 2691 },
@@ -4453,11 +4921,20 @@
 	{ 2768, 2768 },
 	{ 2784, 2787 },
 	{ 2790, 2801 },
+	{ 2809, 2809 },
+};
+static const URange32 Modi_range32[] = {
+	{ 71168, 71236 },
+	{ 71248, 71257 },
 };
 static const URange32 Inscriptional_Pahlavi_range32[] = {
 	{ 68448, 68466 },
 	{ 68472, 68479 },
 };
+static const URange32 Manichaean_range32[] = {
+	{ 68288, 68326 },
+	{ 68331, 68342 },
+};
 static const URange16 Khmer_range16[] = {
 	{ 6016, 6109 },
 	{ 6112, 6121 },
@@ -4465,14 +4942,24 @@
 	{ 6624, 6655 },
 };
 static const URange32 Cuneiform_range32[] = {
-	{ 73728, 74606 },
-	{ 74752, 74850 },
-	{ 74864, 74867 },
+	{ 73728, 74649 },
+	{ 74752, 74862 },
+	{ 74864, 74868 },
+	{ 74880, 75075 },
+};
+static const URange32 Khudawadi_range32[] = {
+	{ 70320, 70378 },
+	{ 70384, 70393 },
 };
 static const URange16 Mandaic_range16[] = {
 	{ 2112, 2139 },
 	{ 2142, 2142 },
 };
+static const URange32 Hatran_range32[] = {
+	{ 67808, 67826 },
+	{ 67828, 67829 },
+	{ 67835, 67839 },
+};
 static const URange16 Syloti_Nagri_range16[] = {
 	{ 43008, 43051 },
 };
@@ -4490,8 +4977,12 @@
 	{ 67840, 67867 },
 	{ 67871, 67871 },
 };
+static const URange32 Nabataean_range32[] = {
+	{ 67712, 67742 },
+	{ 67751, 67759 },
+};
 static const URange16 Bengali_range16[] = {
-	{ 2433, 2435 },
+	{ 2432, 2435 },
 	{ 2437, 2444 },
 	{ 2447, 2448 },
 	{ 2451, 2472 },
@@ -4544,6 +5035,9 @@
 	{ 43472, 43481 },
 	{ 43486, 43487 },
 };
+static const URange32 Old_Permic_range32[] = {
+	{ 66384, 66426 },
+};
 static const URange16 Phags_Pa_range16[] = {
 	{ 43072, 43127 },
 };
@@ -4556,7 +5050,7 @@
 	{ 67647, 67647 },
 };
 static const URange16 Kannada_range16[] = {
-	{ 3202, 3203 },
+	{ 3201, 3203 },
 	{ 3205, 3212 },
 	{ 3214, 3216 },
 	{ 3218, 3240 },
@@ -4571,6 +5065,10 @@
 	{ 3302, 3311 },
 	{ 3313, 3314 },
 };
+static const URange32 Khojki_range32[] = {
+	{ 70144, 70161 },
+	{ 70163, 70205 },
+};
 static const URange16 Mongolian_range16[] = {
 	{ 6144, 6145 },
 	{ 6148, 6148 },
@@ -4590,11 +5088,19 @@
 	{ 3535, 3540 },
 	{ 3542, 3542 },
 	{ 3544, 3551 },
+	{ 3558, 3567 },
 	{ 3570, 3572 },
 };
+static const URange32 Sinhala_range32[] = {
+	{ 70113, 70132 },
+};
 static const URange32 Brahmi_range32[] = {
 	{ 69632, 69709 },
 	{ 69714, 69743 },
+	{ 69759, 69759 },
+};
+static const URange32 Elbasan_range32[] = {
+	{ 66816, 66855 },
 };
 static const URange32 Deseret_range32[] = {
 	{ 66560, 66639 },
@@ -4603,6 +5109,18 @@
 	{ 43312, 43347 },
 	{ 43359, 43359 },
 };
+static const URange32 SignWriting_range32[] = {
+	{ 120832, 121483 },
+	{ 121499, 121503 },
+	{ 121505, 121519 },
+};
+static const URange32 Multani_range32[] = {
+	{ 70272, 70278 },
+	{ 70280, 70280 },
+	{ 70282, 70285 },
+	{ 70287, 70301 },
+	{ 70303, 70313 },
+};
 static const URange16 Yi_range16[] = {
 	{ 40960, 42124 },
 	{ 42128, 42182 },
@@ -4643,6 +5161,11 @@
 	{ 65616, 65629 },
 	{ 65664, 65786 },
 };
+static const URange32 Linear_A_range32[] = {
+	{ 67072, 67382 },
+	{ 67392, 67413 },
+	{ 67424, 67431 },
+};
 static const URange32 Old_Turkic_range32[] = {
 	{ 68608, 68680 },
 };
@@ -4658,6 +5181,15 @@
 static const URange32 Egyptian_Hieroglyphs_range32[] = {
 	{ 77824, 78894 },
 };
+static const URange32 Caucasian_Albanian_range32[] = {
+	{ 66864, 66915 },
+	{ 66927, 66927 },
+};
+static const URange32 Old_Hungarian_range32[] = {
+	{ 68736, 68786 },
+	{ 68800, 68850 },
+	{ 68858, 68863 },
+};
 static const URange16 Samaritan_range16[] = {
 	{ 2048, 2093 },
 	{ 2096, 2110 },
@@ -4668,6 +5200,18 @@
 static const URange16 Buhid_range16[] = {
 	{ 5952, 5971 },
 };
+static const URange32 Palmyrene_range32[] = {
+	{ 67680, 67711 },
+};
+static const URange32 Tirhuta_range32[] = {
+	{ 70784, 70855 },
+	{ 70864, 70873 },
+};
+static const URange32 Mro_range32[] = {
+	{ 92736, 92766 },
+	{ 92768, 92777 },
+	{ 92782, 92783 },
+};
 static const URange16 Common_range16[] = {
 	{ 0, 64 },
 	{ 91, 96 },
@@ -4684,11 +5228,11 @@
 	{ 901, 901 },
 	{ 903, 903 },
 	{ 1417, 1417 },
+	{ 1541, 1541 },
 	{ 1548, 1548 },
-	{ 1563, 1563 },
+	{ 1563, 1564 },
 	{ 1567, 1567 },
 	{ 1600, 1600 },
-	{ 1632, 1641 },
 	{ 1757, 1757 },
 	{ 2404, 2405 },
 	{ 3647, 3647 },
@@ -4708,21 +5252,24 @@
 	{ 8294, 8304 },
 	{ 8308, 8318 },
 	{ 8320, 8334 },
-	{ 8352, 8378 },
+	{ 8352, 8382 },
 	{ 8448, 8485 },
 	{ 8487, 8489 },
 	{ 8492, 8497 },
 	{ 8499, 8525 },
 	{ 8527, 8543 },
-	{ 8585, 8585 },
-	{ 8592, 9203 },
+	{ 8585, 8587 },
+	{ 8592, 9210 },
 	{ 9216, 9254 },
 	{ 9280, 9290 },
-	{ 9312, 9983 },
-	{ 9985, 10239 },
-	{ 10496, 11084 },
-	{ 11088, 11097 },
-	{ 11776, 11835 },
+	{ 9312, 10239 },
+	{ 10496, 11123 },
+	{ 11126, 11157 },
+	{ 11160, 11193 },
+	{ 11197, 11208 },
+	{ 11210, 11217 },
+	{ 11244, 11247 },
+	{ 11776, 11842 },
 	{ 12272, 12283 },
 	{ 12288, 12292 },
 	{ 12294, 12294 },
@@ -4741,9 +5288,10 @@
 	{ 42752, 42785 },
 	{ 42888, 42890 },
 	{ 43056, 43065 },
+	{ 43310, 43310 },
 	{ 43471, 43471 },
+	{ 43867, 43867 },
 	{ 64830, 64831 },
-	{ 65021, 65021 },
 	{ 65040, 65049 },
 	{ 65072, 65106 },
 	{ 65108, 65126 },
@@ -4764,13 +5312,15 @@
 	{ 65847, 65855 },
 	{ 65936, 65947 },
 	{ 66000, 66044 },
+	{ 66273, 66299 },
+	{ 113824, 113827 },
 	{ 118784, 119029 },
 	{ 119040, 119078 },
 	{ 119081, 119142 },
 	{ 119146, 119162 },
 	{ 119171, 119172 },
 	{ 119180, 119209 },
-	{ 119214, 119261 },
+	{ 119214, 119272 },
 	{ 119552, 119638 },
 	{ 119648, 119665 },
 	{ 119808, 119892 },
@@ -4797,10 +5347,10 @@
 	{ 126976, 127019 },
 	{ 127024, 127123 },
 	{ 127136, 127150 },
-	{ 127153, 127166 },
+	{ 127153, 127167 },
 	{ 127169, 127183 },
-	{ 127185, 127199 },
-	{ 127232, 127242 },
+	{ 127185, 127221 },
+	{ 127232, 127244 },
 	{ 127248, 127278 },
 	{ 127280, 127339 },
 	{ 127344, 127386 },
@@ -4809,24 +5359,21 @@
 	{ 127504, 127546 },
 	{ 127552, 127560 },
 	{ 127568, 127569 },
-	{ 127744, 127776 },
-	{ 127792, 127797 },
-	{ 127799, 127868 },
-	{ 127872, 127891 },
-	{ 127904, 127940 },
-	{ 127942, 127946 },
-	{ 127968, 127984 },
-	{ 128000, 128062 },
-	{ 128064, 128064 },
-	{ 128066, 128247 },
-	{ 128249, 128252 },
-	{ 128256, 128317 },
-	{ 128320, 128323 },
-	{ 128336, 128359 },
-	{ 128507, 128576 },
-	{ 128581, 128591 },
-	{ 128640, 128709 },
+	{ 127744, 128377 },
+	{ 128379, 128419 },
+	{ 128421, 128720 },
+	{ 128736, 128748 },
+	{ 128752, 128755 },
 	{ 128768, 128883 },
+	{ 128896, 128980 },
+	{ 129024, 129035 },
+	{ 129040, 129095 },
+	{ 129104, 129113 },
+	{ 129120, 129159 },
+	{ 129168, 129197 },
+	{ 129296, 129304 },
+	{ 129408, 129412 },
+	{ 129472, 129472 },
 	{ 917505, 917505 },
 	{ 917536, 917631 },
 };
@@ -4843,23 +5390,20 @@
 	{ 1536, 1540 },
 	{ 1542, 1547 },
 	{ 1549, 1562 },
-	{ 1564, 1564 },
 	{ 1566, 1566 },
 	{ 1568, 1599 },
 	{ 1601, 1610 },
-	{ 1622, 1631 },
-	{ 1642, 1647 },
+	{ 1622, 1647 },
 	{ 1649, 1756 },
 	{ 1758, 1791 },
 	{ 1872, 1919 },
-	{ 2208, 2208 },
-	{ 2210, 2220 },
-	{ 2276, 2302 },
+	{ 2208, 2228 },
+	{ 2275, 2303 },
 	{ 64336, 64449 },
 	{ 64467, 64829 },
 	{ 64848, 64911 },
 	{ 64914, 64967 },
-	{ 65008, 65020 },
+	{ 65008, 65021 },
 	{ 65136, 65140 },
 	{ 65142, 65276 },
 };
@@ -4908,7 +5452,12 @@
 };
 static const URange16 Myanmar_range16[] = {
 	{ 4096, 4255 },
-	{ 43616, 43643 },
+	{ 43488, 43518 },
+	{ 43616, 43647 },
+};
+static const URange32 Siddham_range32[] = {
+	{ 71040, 71093 },
+	{ 71096, 71133 },
 };
 static const URange32 Avestan_range32[] = {
 	{ 68352, 68405 },
@@ -4925,127 +5474,159 @@
 	{ 64323, 64324 },
 	{ 64326, 64335 },
 };
+static const URange32 Psalter_Pahlavi_range32[] = {
+	{ 68480, 68497 },
+	{ 68505, 68508 },
+	{ 68521, 68527 },
+};
 static const URange32 Takri_range32[] = {
 	{ 71296, 71351 },
 	{ 71360, 71369 },
 };
-// 3867 16-bit ranges, 723 32-bit ranges
+// 3949 16-bit ranges, 1133 32-bit ranges
 const UGroup unicode_groups[] = {
-	{ "Arabic", +1, Arabic_range16, 22, Arabic_range32, 35 },
+	{ "Ahom", +1, 0, 0, Ahom_range32, 3 },
+	{ "Anatolian_Hieroglyphs", +1, 0, 0, Anatolian_Hieroglyphs_range32, 1 },
+	{ "Arabic", +1, Arabic_range16, 19, Arabic_range32, 35 },
 	{ "Armenian", +1, Armenian_range16, 6, 0, 0 },
 	{ "Avestan", +1, 0, 0, Avestan_range32, 2 },
 	{ "Balinese", +1, Balinese_range16, 2, 0, 0 },
 	{ "Bamum", +1, Bamum_range16, 1, Bamum_range32, 1 },
+	{ "Bassa_Vah", +1, 0, 0, Bassa_Vah_range32, 2 },
 	{ "Batak", +1, Batak_range16, 2, 0, 0 },
 	{ "Bengali", +1, Bengali_range16, 14, 0, 0 },
 	{ "Bopomofo", +1, Bopomofo_range16, 3, 0, 0 },
-	{ "Brahmi", +1, 0, 0, Brahmi_range32, 2 },
+	{ "Brahmi", +1, 0, 0, Brahmi_range32, 3 },
 	{ "Braille", +1, Braille_range16, 1, 0, 0 },
 	{ "Buginese", +1, Buginese_range16, 2, 0, 0 },
 	{ "Buhid", +1, Buhid_range16, 1, 0, 0 },
-	{ "C", +1, C_range16, 15, C_range32, 6 },
+	{ "C", +1, C_range16, 15, C_range32, 7 },
 	{ "Canadian_Aboriginal", +1, Canadian_Aboriginal_range16, 2, 0, 0 },
 	{ "Carian", +1, 0, 0, Carian_range32, 1 },
+	{ "Caucasian_Albanian", +1, 0, 0, Caucasian_Albanian_range32, 2 },
 	{ "Cc", +1, Cc_range16, 2, 0, 0 },
-	{ "Cf", +1, Cf_range16, 12, Cf_range32, 4 },
+	{ "Cf", +1, Cf_range16, 12, Cf_range32, 5 },
 	{ "Chakma", +1, 0, 0, Chakma_range32, 2 },
 	{ "Cham", +1, Cham_range16, 4, 0, 0 },
-	{ "Cherokee", +1, Cherokee_range16, 1, 0, 0 },
+	{ "Cherokee", +1, Cherokee_range16, 3, 0, 0 },
 	{ "Co", +1, Co_range16, 1, Co_range32, 2 },
-	{ "Common", +1, Common_range16, 88, Common_range32, 70 },
+	{ "Common", +1, Common_range16, 92, Common_range32, 69 },
 	{ "Coptic", +1, Coptic_range16, 3, 0, 0 },
 	{ "Cs", +1, Cs_range16, 1, 0, 0 },
-	{ "Cuneiform", +1, 0, 0, Cuneiform_range32, 3 },
+	{ "Cuneiform", +1, 0, 0, Cuneiform_range32, 4 },
 	{ "Cypriot", +1, 0, 0, Cypriot_range32, 6 },
 	{ "Cyrillic", +1, Cyrillic_range16, 7, 0, 0 },
 	{ "Deseret", +1, 0, 0, Deseret_range32, 1 },
-	{ "Devanagari", +1, Devanagari_range16, 5, 0, 0 },
+	{ "Devanagari", +1, Devanagari_range16, 4, 0, 0 },
+	{ "Duployan", +1, 0, 0, Duployan_range32, 5 },
 	{ "Egyptian_Hieroglyphs", +1, 0, 0, Egyptian_Hieroglyphs_range32, 1 },
+	{ "Elbasan", +1, 0, 0, Elbasan_range32, 1 },
 	{ "Ethiopic", +1, Ethiopic_range16, 32, 0, 0 },
 	{ "Georgian", +1, Georgian_range16, 8, 0, 0 },
 	{ "Glagolitic", +1, Glagolitic_range16, 2, 0, 0 },
 	{ "Gothic", +1, 0, 0, Gothic_range32, 1 },
-	{ "Greek", +1, Greek_range16, 31, Greek_range32, 2 },
-	{ "Gujarati", +1, Gujarati_range16, 13, 0, 0 },
+	{ "Grantha", +1, 0, 0, Grantha_range32, 15 },
+	{ "Greek", +1, Greek_range16, 33, Greek_range32, 3 },
+	{ "Gujarati", +1, Gujarati_range16, 14, 0, 0 },
 	{ "Gurmukhi", +1, Gurmukhi_range16, 16, 0, 0 },
-	{ "Han", +1, Han_range16, 11, Han_range32, 4 },
+	{ "Han", +1, Han_range16, 11, Han_range32, 5 },
 	{ "Hangul", +1, Hangul_range16, 14, 0, 0 },
 	{ "Hanunoo", +1, Hanunoo_range16, 1, 0, 0 },
+	{ "Hatran", +1, 0, 0, Hatran_range32, 3 },
 	{ "Hebrew", +1, Hebrew_range16, 9, 0, 0 },
 	{ "Hiragana", +1, Hiragana_range16, 2, Hiragana_range32, 2 },
 	{ "Imperial_Aramaic", +1, 0, 0, Imperial_Aramaic_range32, 2 },
-	{ "Inherited", +1, Inherited_range16, 18, Inherited_range32, 6 },
+	{ "Inherited", +1, Inherited_range16, 20, Inherited_range32, 7 },
 	{ "Inscriptional_Pahlavi", +1, 0, 0, Inscriptional_Pahlavi_range32, 2 },
 	{ "Inscriptional_Parthian", +1, 0, 0, Inscriptional_Parthian_range32, 2 },
 	{ "Javanese", +1, Javanese_range16, 3, 0, 0 },
 	{ "Kaithi", +1, 0, 0, Kaithi_range32, 1 },
 	{ "Kannada", +1, Kannada_range16, 14, 0, 0 },
 	{ "Katakana", +1, Katakana_range16, 7, Katakana_range32, 1 },
-	{ "Kayah_Li", +1, Kayah_Li_range16, 1, 0, 0 },
+	{ "Kayah_Li", +1, Kayah_Li_range16, 2, 0, 0 },
 	{ "Kharoshthi", +1, 0, 0, Kharoshthi_range32, 8 },
 	{ "Khmer", +1, Khmer_range16, 4, 0, 0 },
-	{ "L", +1, L_range16, 370, L_range32, 116 },
+	{ "Khojki", +1, 0, 0, Khojki_range32, 2 },
+	{ "Khudawadi", +1, 0, 0, Khudawadi_range32, 2 },
+	{ "L", +1, L_range16, 376, L_range32, 178 },
 	{ "Lao", +1, Lao_range16, 18, 0, 0 },
-	{ "Latin", +1, Latin_range16, 30, 0, 0 },
+	{ "Latin", +1, Latin_range16, 31, 0, 0 },
 	{ "Lepcha", +1, Lepcha_range16, 3, 0, 0 },
 	{ "Limbu", +1, Limbu_range16, 5, 0, 0 },
+	{ "Linear_A", +1, 0, 0, Linear_A_range32, 3 },
 	{ "Linear_B", +1, 0, 0, Linear_B_range32, 7 },
 	{ "Lisu", +1, Lisu_range16, 1, 0, 0 },
-	{ "Ll", +1, Ll_range16, 582, Ll_range32, 29 },
-	{ "Lm", +1, Lm_range16, 51, Lm_range32, 1 },
-	{ "Lo", +1, Lo_range16, 286, Lo_range32, 85 },
+	{ "Ll", +1, Ll_range16, 599, Ll_range32, 31 },
+	{ "Lm", +1, Lm_range16, 54, Lm_range32, 2 },
+	{ "Lo", +1, Lo_range16, 290, Lo_range32, 143 },
 	{ "Lt", +1, Lt_range16, 10, 0, 0 },
-	{ "Lu", +1, Lu_range16, 576, Lu_range32, 32 },
+	{ "Lu", +1, Lu_range16, 591, Lu_range32, 34 },
 	{ "Lycian", +1, 0, 0, Lycian_range32, 1 },
 	{ "Lydian", +1, 0, 0, Lydian_range32, 2 },
-	{ "M", +1, M_range16, 180, M_range32, 24 },
+	{ "M", +1, M_range16, 180, M_range32, 56 },
+	{ "Mahajani", +1, 0, 0, Mahajani_range32, 1 },
 	{ "Malayalam", +1, Malayalam_range16, 11, 0, 0 },
 	{ "Mandaic", +1, Mandaic_range16, 2, 0, 0 },
-	{ "Mc", +1, Mc_range16, 111, Mc_range32, 15 },
-	{ "Me", +1, Me_range16, 4, 0, 0 },
+	{ "Manichaean", +1, 0, 0, Manichaean_range32, 2 },
+	{ "Mc", +1, Mc_range16, 109, Mc_range32, 38 },
+	{ "Me", +1, Me_range16, 5, 0, 0 },
 	{ "Meetei_Mayek", +1, Meetei_Mayek_range16, 3, 0, 0 },
-	{ "Meroitic_Cursive", +1, 0, 0, Meroitic_Cursive_range32, 2 },
+	{ "Mende_Kikakui", +1, 0, 0, Mende_Kikakui_range32, 2 },
+	{ "Meroitic_Cursive", +1, 0, 0, Meroitic_Cursive_range32, 3 },
 	{ "Meroitic_Hieroglyphs", +1, 0, 0, Meroitic_Hieroglyphs_range32, 1 },
 	{ "Miao", +1, 0, 0, Miao_range32, 3 },
-	{ "Mn", +1, Mn_range16, 194, Mn_range32, 27 },
+	{ "Mn", +1, Mn_range16, 200, Mn_range32, 66 },
+	{ "Modi", +1, 0, 0, Modi_range32, 2 },
 	{ "Mongolian", +1, Mongolian_range16, 6, 0, 0 },
-	{ "Myanmar", +1, Myanmar_range16, 2, 0, 0 },
-	{ "N", +1, N_range16, 64, N_range32, 24 },
-	{ "Nd", +1, Nd_range16, 35, Nd_range32, 7 },
+	{ "Mro", +1, 0, 0, Mro_range32, 3 },
+	{ "Multani", +1, 0, 0, Multani_range32, 5 },
+	{ "Myanmar", +1, Myanmar_range16, 3, 0, 0 },
+	{ "N", +1, N_range16, 66, N_range32, 45 },
+	{ "Nabataean", +1, 0, 0, Nabataean_range32, 2 },
+	{ "Nd", +1, Nd_range16, 37, Nd_range32, 14 },
 	{ "New_Tai_Lue", +1, New_Tai_Lue_range16, 4, 0, 0 },
 	{ "Nko", +1, Nko_range16, 1, 0, 0 },
 	{ "Nl", +1, Nl_range16, 7, Nl_range32, 5 },
-	{ "No", +1, No_range16, 28, No_range32, 14 },
+	{ "No", +1, No_range16, 28, No_range32, 30 },
 	{ "Ogham", +1, Ogham_range16, 1, 0, 0 },
 	{ "Ol_Chiki", +1, Ol_Chiki_range16, 1, 0, 0 },
-	{ "Old_Italic", +1, 0, 0, Old_Italic_range32, 2 },
+	{ "Old_Hungarian", +1, 0, 0, Old_Hungarian_range32, 3 },
+	{ "Old_Italic", +1, 0, 0, Old_Italic_range32, 1 },
+	{ "Old_North_Arabian", +1, 0, 0, Old_North_Arabian_range32, 1 },
+	{ "Old_Permic", +1, 0, 0, Old_Permic_range32, 1 },
 	{ "Old_Persian", +1, 0, 0, Old_Persian_range32, 2 },
 	{ "Old_South_Arabian", +1, 0, 0, Old_South_Arabian_range32, 1 },
 	{ "Old_Turkic", +1, 0, 0, Old_Turkic_range32, 1 },
 	{ "Oriya", +1, Oriya_range16, 14, 0, 0 },
 	{ "Osmanya", +1, 0, 0, Osmanya_range32, 2 },
-	{ "P", +1, P_range16, 126, P_range32, 15 },
+	{ "P", +1, P_range16, 127, P_range32, 34 },
+	{ "Pahawh_Hmong", +1, 0, 0, Pahawh_Hmong_range32, 5 },
+	{ "Palmyrene", +1, 0, 0, Palmyrene_range32, 1 },
+	{ "Pau_Cin_Hau", +1, 0, 0, Pau_Cin_Hau_range32, 1 },
 	{ "Pc", +1, Pc_range16, 6, 0, 0 },
-	{ "Pd", +1, Pd_range16, 16, 0, 0 },
+	{ "Pd", +1, Pd_range16, 17, 0, 0 },
 	{ "Pe", +1, Pe_range16, 72, 0, 0 },
 	{ "Pf", +1, Pf_range16, 10, 0, 0 },
 	{ "Phags_Pa", +1, Phags_Pa_range16, 1, 0, 0 },
 	{ "Phoenician", +1, 0, 0, Phoenician_range32, 2 },
 	{ "Pi", +1, Pi_range16, 11, 0, 0 },
-	{ "Po", +1, Po_range16, 120, Po_range32, 15 },
-	{ "Ps", +1, Ps_range16, 74, 0, 0 },
+	{ "Po", +1, Po_range16, 123, Po_range32, 34 },
+	{ "Ps", +1, Ps_range16, 75, 0, 0 },
+	{ "Psalter_Pahlavi", +1, 0, 0, Psalter_Pahlavi_range32, 3 },
 	{ "Rejang", +1, Rejang_range16, 2, 0, 0 },
 	{ "Runic", +1, Runic_range16, 2, 0, 0 },
-	{ "S", +1, S_range16, 143, S_range32, 56 },
+	{ "S", +1, S_range16, 148, S_range32, 66 },
 	{ "Samaritan", +1, Samaritan_range16, 2, 0, 0 },
 	{ "Saurashtra", +1, Saurashtra_range16, 2, 0, 0 },
 	{ "Sc", +1, Sc_range16, 17, 0, 0 },
 	{ "Sharada", +1, 0, 0, Sharada_range32, 2 },
 	{ "Shavian", +1, 0, 0, Shavian_range32, 1 },
-	{ "Sinhala", +1, Sinhala_range16, 11, 0, 0 },
-	{ "Sk", +1, Sk_range16, 27, 0, 0 },
+	{ "Siddham", +1, 0, 0, Siddham_range32, 2 },
+	{ "SignWriting", +1, 0, 0, SignWriting_range32, 3 },
+	{ "Sinhala", +1, Sinhala_range16, 12, Sinhala_range32, 1 },
+	{ "Sk", +1, Sk_range16, 28, Sk_range32, 1 },
 	{ "Sm", +1, Sm_range16, 53, Sm_range32, 11 },
-	{ "So", +1, So_range16, 108, So_range32, 45 },
+	{ "So", +1, So_range16, 114, So_range32, 56 },
 	{ "Sora_Sompeng", +1, 0, 0, Sora_Sompeng_range32, 2 },
 	{ "Sundanese", +1, Sundanese_range16, 2, 0, 0 },
 	{ "Syloti_Nagri", +1, Syloti_Nagri_range16, 1, 0, 0 },
@@ -5057,20 +5638,22 @@
 	{ "Tai_Viet", +1, Tai_Viet_range16, 2, 0, 0 },
 	{ "Takri", +1, 0, 0, Takri_range32, 2 },
 	{ "Tamil", +1, Tamil_range16, 16, 0, 0 },
-	{ "Telugu", +1, Telugu_range16, 14, 0, 0 },
+	{ "Telugu", +1, Telugu_range16, 13, 0, 0 },
 	{ "Thaana", +1, Thaana_range16, 1, 0, 0 },
 	{ "Thai", +1, Thai_range16, 2, 0, 0 },
 	{ "Tibetan", +1, Tibetan_range16, 7, 0, 0 },
 	{ "Tifinagh", +1, Tifinagh_range16, 3, 0, 0 },
+	{ "Tirhuta", +1, 0, 0, Tirhuta_range32, 2 },
 	{ "Ugaritic", +1, 0, 0, Ugaritic_range32, 2 },
 	{ "Vai", +1, Vai_range16, 1, 0, 0 },
+	{ "Warang_Citi", +1, 0, 0, Warang_Citi_range32, 2 },
 	{ "Yi", +1, Yi_range16, 2, 0, 0 },
 	{ "Z", +1, Z_range16, 8, 0, 0 },
 	{ "Zl", +1, Zl_range16, 1, 0, 0 },
 	{ "Zp", +1, Zp_range16, 1, 0, 0 },
 	{ "Zs", +1, Zs_range16, 7, 0, 0 },
 };
-const int num_unicode_groups = 138;
+const int num_unicode_groups = 167;
 
 
 }  // namespace re2