aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog31
-rw-r--r--localedata/ChangeLog5
-rw-r--r--localedata/charmaps/UTF-8133
-rw-r--r--localedata/locales/i18n412
-rw-r--r--nscd/Makefile5
-rw-r--r--nscd/aicache.c11
-rw-r--r--nscd/cache.c13
-rw-r--r--nscd/connections.c47
-rw-r--r--nscd/grpcache.c11
-rw-r--r--nscd/hstcache.c11
-rw-r--r--nscd/initgrcache.c11
-rw-r--r--nscd/mem.c35
-rw-r--r--nscd/nscd.h28
-rw-r--r--nscd/pwdcache.c11
-rw-r--r--nscd/servicescache.c11
15 files changed, 523 insertions, 252 deletions
diff --git a/ChangeLog b/ChangeLog
index 873ddb6808..2d7aac2c7e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,34 @@
+2008-04-15 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #5209]
+ * sysdeps/unix/sysv/linux/times.c: New file.
+
+ [BZ #5381]
+ * nscd/nscd.h: Define enum in_flight, mem_in_flight, and
+ mem_in_flight_list variables. Add new parameter to mempool_alloc
+ prototype.
+ * nscd/mem.c (mempool_alloc): Take additional parameter. Initialize
+ appropriate mem_in_flight element.
+ (gc): Take allocations which have not yet been committed to the
+ database into account.
+ * nscd/cache.c (cache_add): Add new parameter to mempool_alloc call.
+ Reset mem_in_flight before returning.
+ * nscd/connections.c (nscd_run_worker): Initialize mem_in_flight and
+ cue it up in mem_in_flight_list.
+ * nscd/aicache.c: Adjust mempool_alloc call.
+ * nscd/grpcache.c: Likewise.
+ * nscd/hstcache.c: Likewise.
+ * nscd/initgrcache.c: Likewise.
+ * nscd/pwdcache.c: Likewise.
+ * nscd/servicescache.c: Likewise.
+ * nscd/Makefile (nscd-flags): Until ld is fixed, use -fpic instead
+ of -fpie.
+
+ * nscd/connections.c (handle_request): Provide better error message
+ in case SELinux forbids the service.
+
+ * version.h (VERSION): Bump to 2.8.90.
+
2008-04-17 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/dl-osinfo.h: Include fcntl.h.
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index 61f2151bb7..5c9cbf2215 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,8 @@
+2008-04-15 Ulrich Drepper <drepper@redhat.com>
+
+ * charmaps/UTF-8: Update for Unicode v5.1.
+ * locales/i18n: Update for Unicode 5.
+
2008-04-09 Ulrich Drepper <drepper@redhat.com>
* tst-langinfo.sh: Adjust for latest fr_FR locale changes.
diff --git a/localedata/charmaps/UTF-8 b/localedata/charmaps/UTF-8
index 4ace37697e..d4375bbab4 100644
--- a/localedata/charmaps/UTF-8
+++ b/localedata/charmaps/UTF-8
@@ -899,7 +899,6 @@ CHARMAP
<U037C> /xcd/xbc GREEK SMALL DOTTED LUNATE SIGMA SYMBOL
<U037D> /xcd/xbd GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
<U037E> /xcd/xbe GREEK QUESTION MARK
-<U037F> /xcd/xbf GREEK CAPITAL KAI SYMBOL
<U0384> /xce/x84 GREEK TONOS
<U0385> /xce/x85 GREEK DIALYTIKA TONOS
<U0386> /xce/x86 GREEK CAPITAL LETTER ALPHA WITH TONOS
@@ -972,6 +971,7 @@ CHARMAP
<U03CC> /xcf/x8c GREEK SMALL LETTER OMICRON WITH TONOS
<U03CD> /xcf/x8d GREEK SMALL LETTER UPSILON WITH TONOS
<U03CE> /xcf/x8e GREEK SMALL LETTER OMEGA WITH TONOS
+<U03CF> /xcf/x8f GREEK CAPITAL KAI SYMBOL
<U03D0> /xcf/x90 GREEK BETA SYMBOL
<U03D1> /xcf/x91 GREEK THETA SYMBOL
<U03D2> /xcf/x92 GREEK UPSILON WITH HOOK SYMBOL
@@ -9443,71 +9443,71 @@ CHARMAP
<U2D23> /xe2/xb4/xa3 GEORGIAN SMALL LETTER WE
<U2D24> /xe2/xb4/xa4 GEORGIAN SMALL LETTER HAR
<U2D25> /xe2/xb4/xa5 GEORGIAN SMALL LETTER HOE
-<U2D30> /xe2/xb4/xb0 TIFINAGH YA
-<U2D31> /xe2/xb4/xb1 LETTRE TIFINAGHE YAB
-<U2D32> /xe2/xb4/xb2 LETTRE TIFINAGHE YAB SPIRANT
-<U2D33> /xe2/xb4/xb3 LETTRE TIFINAGHE YAG
-<U2D34> /xe2/xb4/xb4 LETTRE TIFINAGHE YAG SPIRANT
-<U2D35> /xe2/xb4/xb5 LETTRE TIFINAGHE YADJ KABYLE
-<U2D36> /xe2/xb4/xb6 LETTRE TIFINAGHE YADJ
-<U2D37> /xe2/xb4/xb7 LETTRE TIFINAGHE YAD
-<U2D38> /xe2/xb4/xb8 LETTRE TIFINAGHE YAD SPIRANT (yadh)
-<U2D39> /xe2/xb4/xb9 LETTRE TIFINAGHE YADD
-<U2D3A> /xe2/xb4/xba LETTRE TIFINAGHE YADD SPIRANT
-<U2D3B> /xe2/xb4/xbb LETTRE TIFINAGHE YEY
-<U2D3C> /xe2/xb4/xbc LETTRE TIFINAGHE YAF
-<U2D3D> /xe2/xb4/xbd LETTRE TIFINAGHE YAK
-<U2D3E> /xe2/xb4/xbe LETTRE TIFINAGHE YAK TOUAREG
-<U2D3F> /xe2/xb4/xbf LETTRE TIFINAGHE YAK SPIRANT
-<U2D40> /xe2/xb5/x80 LETTRE TIFINAGHE YAH (yab touareg)
-<U2D41> /xe2/xb5/x81 LETTRE TIFINAGHE YAH KABYLE
-<U2D42> /xe2/xb5/x82 LETTRE TIFINAGHE YAH TOUAREG
-<U2D43> /xe2/xb5/x83 LETTRE TIFINAGHE YAHH
-<U2D44> /xe2/xb5/x84 LETTRE TIFINAGHE YA’
-<U2D45> /xe2/xb5/x85 LETTRE TIFINAGHE YAKH
-<U2D46> /xe2/xb5/x86 LETTRE TIFINAGHE YAKH TOUAREG (quatre-points en carré touareg)
-<U2D47> /xe2/xb5/x87 LETTRE TIFINAGHE YAQ
-<U2D48> /xe2/xb5/x88 LETTRE TIFINAGHE YAQ TOUAREG
-<U2D49> /xe2/xb5/x89 LETTRE TIFINAGHE YI
-<U2D4A> /xe2/xb5/x8a LETTRE TIFINAGHE YAJ
-<U2D4B> /xe2/xb5/x8b LETTRE TIFINAGHE YAJ DE L’AHAGGAR
-<U2D4C> /xe2/xb5/x8c LETTRE TIFINAGHE YAJ TOUAREG
-<U2D4D> /xe2/xb5/x8d LETTRE TIFINAGHE YAL
-<U2D4E> /xe2/xb5/x8e LETTRE TIFINAGHE YAM
-<U2D4F> /xe2/xb5/x8f LETTRE TIFINAGHE YAN
-<U2D50> /xe2/xb5/x90 LETTRE TIFINAGHE YAGN TOUAREG
-<U2D51> /xe2/xb5/x91 LETTRE TIFINAGHE YANG TOUAREG
-<U2D52> /xe2/xb5/x92 LETTRE TIFINAGHE YAP
-<U2D53> /xe2/xb5/x93 LETTRE TIFINAGHE YOU (yaw touareg)
-<U2D54> /xe2/xb5/x94 LETTRE TIFINAGHE YAR
-<U2D55> /xe2/xb5/x95 LETTRE TIFINAGHE YARR
-<U2D56> /xe2/xb5/x96 LETTRE TIFINAGHE YAGH
-<U2D57> /xe2/xb5/x97 LETTRE TIFINAGHE YAGH TOUAREG
-<U2D58> /xe2/xb5/x98 LETTRE TIFINAGHE YAGH DE L’AÏR (yadj de l’Adrar, cinq-points en quinconce touareg)
-<U2D59> /xe2/xb5/x99 LETTRE TIFINAGHE YAS
-<U2D5A> /xe2/xb5/x9a LETTRE TIFINAGHE YASS
-<U2D5B> /xe2/xb5/x9b LETTRE TIFINAGHE YACH
-<U2D5C> /xe2/xb5/x9c LETTRE TIFINAGHE YAT
-<U2D5D> /xe2/xb5/x9d LETTRE TIFINAGHE YAT SPIRANT (yath)
-<U2D5E> /xe2/xb5/x9e LETTRE TIFINAGHE YATCH
-<U2D5F> /xe2/xb5/x9f LETTRE TIFINAGHE YATT
-<U2D60> /xe2/xb5/xa0 LETTRE TIFINAGHE YAV
-<U2D61> /xe2/xb5/xa1 LETTRE TIFINAGHE YAW
-<U2D62> /xe2/xb5/xa2 LETTRE TIFINAGHE YAY
-<U2D63> /xe2/xb5/xa3 LETTRE TIFINAGHE YAZ
-<U2D64> /xe2/xb5/xa4 LETTRE TIFINAGHE YAZ TAWELLEMET (yaz harpon)
-<U2D65> /xe2/xb5/xa5 LETTRE TIFINAGHE YAZZ
-<U2D6F> /xe2/xb5/xaf LETTRE MODIFICATIVE TIFINAGHE DE LABIO-VÉLARISATION (tamatart)
-<U2D80> /xe2/xb6/x80 ETHIOPIC SYLLALE LOA
-<U2D81> /xe2/xb6/x81 ETHIOPIC SYLLALE MOA
-<U2D82> /xe2/xb6/x82 ETHIOPIC SYLLALE ROA
-<U2D83> /xe2/xb6/x83 ETHIOPIC SYLLALE SOA
-<U2D84> /xe2/xb6/x84 ETHIOPIC SYLLALE SHOA
-<U2D85> /xe2/xb6/x85 ETHIOPIC SYLLALE BOA
-<U2D86> /xe2/xb6/x86 ETHIOPIC SYLLALE TOA
-<U2D87> /xe2/xb6/x87 ETHIOPIC SYLLALE COA
-<U2D88> /xe2/xb6/x88 ETHIOPIC SYLLALE NOA
-<U2D89> /xe2/xb6/x89 ETHIOPIC SYLLALE NYOA
+<U2D30> /xe2/xb4/xb0 TIFINAGH LETTER YA
+<U2D31> /xe2/xb4/xb1 TIFINAGH LETTER YAB
+<U2D32> /xe2/xb4/xb2 TIFINAGH LETTER YABH
+<U2D33> /xe2/xb4/xb3 TIFINAGH LETTER YAG
+<U2D34> /xe2/xb4/xb4 TIFINAGH LETTER YAGHH
+<U2D35> /xe2/xb4/xb5 TIFINAGH LETTER BERBER ACADEMY YAJ
+<U2D36> /xe2/xb4/xb6 TIFINAGH LETTER YAJ
+<U2D37> /xe2/xb4/xb7 TIFINAGH LETTER YAD
+<U2D38> /xe2/xb4/xb8 TIFINAGH LETTER YADH
+<U2D39> /xe2/xb4/xb9 TIFINAGH LETTER YADD
+<U2D3A> /xe2/xb4/xba TIFINAGH LETTER YADDH
+<U2D3B> /xe2/xb4/xbb TIFINAGH LETTER YEY
+<U2D3C> /xe2/xb4/xbc TIFINAGH LETTER YAF
+<U2D3D> /xe2/xb4/xbd TIFINAGH LETTER YAK
+<U2D3E> /xe2/xb4/xbe TIFINAGH LETTER TUAREG YAK
+<U2D3F> /xe2/xb4/xbf TIFINAGH LETTER YAKHH
+<U2D40> /xe2/xb5/x80 TIFINAGH LETTER YAH
+<U2D41> /xe2/xb5/x81 TIFINAGH LETTER BERBER ACADEMY YAH
+<U2D42> /xe2/xb5/x82 TIFINAGH LETTER TUAREG YAH
+<U2D43> /xe2/xb5/x83 TIFINAGH LETTER YAHH
+<U2D44> /xe2/xb5/x84 TIFINAGH LETTER YAA
+<U2D45> /xe2/xb5/x85 TIFINAGH LETTER YAKH
+<U2D46> /xe2/xb5/x86 TIFINAGH LETTER TUAREG YAKH
+<U2D47> /xe2/xb5/x87 TIFINAGH LETTER YAQ
+<U2D48> /xe2/xb5/x88 TIFINAGH LETTER TUAREG YAQ
+<U2D49> /xe2/xb5/x89 TIFINAGH LETTER YI
+<U2D4A> /xe2/xb5/x8a TIFINAGH LETTER YAZH
+<U2D4B> /xe2/xb5/x8b TIFINAGH LETTER AHAGGAR YAZH
+<U2D4C> /xe2/xb5/x8c TIFINAGH LETTER TUAREG YAZH
+<U2D4D> /xe2/xb5/x8d TIFINAGH LETTER YAL
+<U2D4E> /xe2/xb5/x8e TIFINAGH LETTER YAM
+<U2D4F> /xe2/xb5/x8f TIFINAGH LETTER YAN
+<U2D50> /xe2/xb5/x90 TIFINAGH LETTER TUAREG YAGN
+<U2D51> /xe2/xb5/x91 TIFINAGH LETTER TUAREG YANG
+<U2D52> /xe2/xb5/x92 TIFINAGH LETTER YAP
+<U2D53> /xe2/xb5/x93 TIFINAGH LETTER YU
+<U2D54> /xe2/xb5/x94 TIFINAGH LETTER YAR
+<U2D55> /xe2/xb5/x95 TIFINAGH LETTER YARR
+<U2D56> /xe2/xb5/x96 TIFINAGH LETTER YAGH
+<U2D57> /xe2/xb5/x97 TIFINAGH LETTER TUAREG YAGH
+<U2D58> /xe2/xb5/x98 TIFINAGH LETTER AYER YAGH
+<U2D59> /xe2/xb5/x99 TIFINAGH LETTER YAS
+<U2D5A> /xe2/xb5/x9a TIFINAGH LETTER YASS
+<U2D5B> /xe2/xb5/x9b TIFINAGH LETTER YASH
+<U2D5C> /xe2/xb5/x9c TIFINAGH LETTER YAT
+<U2D5D> /xe2/xb5/x9d TIFINAGH LETTER YATH
+<U2D5E> /xe2/xb5/x9e TIFINAGH LETTER YACH
+<U2D5F> /xe2/xb5/x9f TIFINAGH LETTER YATT
+<U2D60> /xe2/xb5/xa0 TIFINAGH LETTER YAV
+<U2D61> /xe2/xb5/xa1 TIFINAGH LETTER YAW
+<U2D62> /xe2/xb5/xa2 TIFINAGH LETTER YAY
+<U2D63> /xe2/xb5/xa3 TIFINAGH LETTER YAZ
+<U2D64> /xe2/xb5/xa4 TIFINAGH LETTER TAWELLEMET YAZ
+<U2D65> /xe2/xb5/xa5 TIFINAGH LETTER YAZZ
+<U2D6F> /xe2/xb5/xaf TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+<U2D80> /xe2/xb6/x80 ETHIOPIC SYLLABLE LOA
+<U2D81> /xe2/xb6/x81 ETHIOPIC SYLLABLE MOA
+<U2D82> /xe2/xb6/x82 ETHIOPIC SYLLABLE ROA
+<U2D83> /xe2/xb6/x83 ETHIOPIC SYLLABLE SOA
+<U2D84> /xe2/xb6/x84 ETHIOPIC SYLLABLE SHOA
+<U2D85> /xe2/xb6/x85 ETHIOPIC SYLLABLE BOA
+<U2D86> /xe2/xb6/x86 ETHIOPIC SYLLABLE TOA
+<U2D87> /xe2/xb6/x87 ETHIOPIC SYLLABLE COA
+<U2D88> /xe2/xb6/x88 ETHIOPIC SYLLABLE NOA
+<U2D89> /xe2/xb6/x89 ETHIOPIC SYLLABLE NYOA
<U2D8A> /xe2/xb6/x8a ETHIOPIC SYLLABLE GLOTTAL OA
<U2D8B> /xe2/xb6/x8b ETHIOPIC SYLLABLE ZOA
<U2D8C> /xe2/xb6/x8c ETHIOPIC SYLLABLE DOA
@@ -26425,7 +26425,6 @@ CHARMAP
<UFFFC> /xef/xbf/xbc OBJECT REPLACEMENT CHARACTER
<UFFFD> /xef/xbf/xbd REPLACEMENT CHARACTER
<U00010000> /xf0/x90/x80/x80 LINEAR B SYLLABLE B008 A
-<U00010000> /xf0/x90/x80/x80 LINEAR B SYLLABLE B008 A
<U00010001> /xf0/x90/x80/x81 LINEAR B SYLLABLE B038 E
<U00010002> /xf0/x90/x80/x82 LINEAR B SYLLABLE B028 I
<U00010003> /xf0/x90/x80/x83 LINEAR B SYLLABLE B061 O
diff --git a/localedata/locales/i18n b/localedata/locales/i18n
index 93ffe90e7e..7287424417 100644
--- a/localedata/locales/i18n
+++ b/localedata/locales/i18n
@@ -2,20 +2,17 @@ escape_char /
comment_char %
LC_IDENTIFICATION
-% This is the ISO/IEC TR 14652 "i18n" definition for
-% the LC_IDENTIFICATION category.
-%
-title "ISO/IEC TR 14652 i18n FDCC-set"
-source "ISO/IEC Copyright Office"
-address "Case postale 56, CH-1211 Geneve 20, Switzerland"
+title ""
+source ""
+address ""
contact ""
email ""
tel ""
fax ""
language ""
-territory "ISO"
-revision "1.0"
-date "2000-01-24"
+territory ""
+revision ""
+date "2008-04-13"
%
category "i18n:2000";LC_IDENTIFICATION
category "i18n:2000";LC_CTYPE
@@ -63,6 +60,7 @@ upper /
<U023A>;<U023B>;<U023D>;<U023E>;/
<U0241>;<U0243>..<U0246>;<U0248>;<U024A>;<U024C>;<U024E>;/
% BASIC GREEK/
+ <U0370>;<U0372>;<U0376>;/
<U0386>;<U0388>..<U038A>;<U038C>;<U038E>;<U038F>;<U0391>..<U03A1>;/
<U03A3>..<U03AB>;<U03D8>..(2)..<U03DE>;/
% GREEK SYMBOLS AND COPTIC/
@@ -73,7 +71,7 @@ upper /
<U0480>;<U048A>..(2)..<U04BE>;<U04C0>;<U04C1>..(2)..<U04CD>;/
<U04D0>..(2)..<U04FE>;/
% CYRILLIC SUPPLEMENT/
- <U0500>..(2)..<U0512>;/
+ <U0500>..(2)..<U0522>;/
% ARMENIAN/
<U0531>..<U0556>;/
% GEORGIAN/
@@ -83,8 +81,8 @@ upper /
<U10A0>..<U10C5>;/
% LATIN EXTENDED ADDITIONAL/
<U1E00>..(2)..<U1E7E>;/
- <U1E80>..(2)..<U1E94>;/
- <U1EA0>..(2)..<U1EF8>;/
+ <U1E80>..(2)..<U1E94>;<U1E9E>;/
+ <U1EA0>..(2)..<U1EFE>;/
% GREEK EXTENDED/
<U1F08>..<U1F0F>;<U1F18>..<U1F1D>;<U1F28>..<U1F2F>;<U1F38>..<U1F3F>;/
<U1F48>..<U1F4D>;<U1F59>..(2)..<U1F5F>;<U1F68>..<U1F6F>;/
@@ -101,9 +99,15 @@ upper /
% GLAGOLITIC/
<U2C00>..<U2C2E>;/
% LATIN EXTENDED-C/
- <U2C60>;<U2C62>..<U2C64>;<U2C67>..(2)..<U2C6B>;<U2C75>;/
+ <U2C60>;<U2C62>..<U2C64>;<U2C67>..(2)..<U2C6B>;<U2C6D>..<U2C6F>;/
+ <U2C72>;<U2C75>;<UA78B>;/
% COPTIC/
<U2C80>..(2)..<U2CE2>;/
+% CYRILLIC SUPPLEMENT 2/
+ <UA640>..(2)..<UA65E>;<UA662>..(2)..<UA66C>;<UA680>..(2)..<UA696>;/
+% LATIN EXTENDED-D/
+ <UA722>..(2)..<UA72E>;<UA732>..(2)..<UA76E>;<UA779>..(2)..<UA77D>;/
+ <UA77E>..(2)..<UA786>;/
% HALFWIDTH AND FULLWIDTH FORMS/
<UFF21>..<UFF3A>;/
% DESERET/
@@ -133,6 +137,7 @@ lower /
% COMBINING DIACRITICAL MARKS/
<U0345>;/
% BASIC GREEK/
+ <U0371>;<U0373>;<U0377>;/
<U037B>..<U037D>;/
<U03AC>..<U03AF>;<U03B1>..<U03CE>;/
% GREEK SYMBOLS AND COPTIC/
@@ -142,13 +147,13 @@ lower /
<U0430>..<U045F>;<U0461>..(2)..<U047F>;/
<U0481>;<U048B>..(2)..<U04BF>;<U04C2>..(2)..<U04CE>;/
<U04CF>;/
- <U04D1>..(2)..<U0513>;/
+ <U04D1>..(2)..<U0523>;/
% ARMENIAN/
<U0561>..<U0586>;/
% PHONETIC EXTENSIONS/
<U1D7D>;/
% LATIN EXTENDED ADDITIONAL/
- <U1E01>..(2)..<U1E95>;<U1E9B>;<U1EA1>..(2)..<U1EF9>;/
+ <U1E01>..(2)..<U1E95>;<U1E9B>..<U1E9D>;<U1E9F>;<U1EA1>..(2)..<U1EFF>;/
% GREEK EXTENDED/
<U1F00>..<U1F07>;<U1F10>..<U1F15>;<U1F20>..<U1F27>;<U1F30>..<U1F37>;/
<U1F40>..<U1F45>;<U1F51>..(2)..<U1F57>;<U1F60>..<U1F67>;<U1F70>..<U1F7D>;/
@@ -158,19 +163,25 @@ lower /
% LETTERLIKE SYMBOLS/
<U214E>;/
% NUMBER FORMS/
- <U2170>..<U217F>;<U2184>;/
+ <U2170>..<U217F>;<U2188>;/
% ENCLOSED ALPHANUMERICS/
<U24D0>..<U24E9>;/
% GLAGOLITIC/
<U2C30>..<U2C5E>;/
% LATIN EXTENDED-C/
- <U2C61>;<U2C65>;<U2C66>..(2)..<U2C6C>;<U2C76>;/
+ <U2C61>;<U2C65>;<U2C66>..(2)..<U2C6C>;<U2C71>;<U2C73>;<U2C74>;/
+ <U2C76>..<U2C7A>;/
% COPTIC/
<U2C81>..(2)..<U2CE3>;/
% GEORGIAN SUPPLEMENT/
% well, there are three georgian blocks defined; one caseless (the one usually/
% used), one defined as uppercase and one as lowercase. defining the lowercase one here/
<U2D00>..<U2D25>;/
+% CYRILLIC SUPPLEMENT 2/
+ <UA641>..(2)..<UA65F>;<UA663>..(2)..<UA66D>;<UA681>..(2)..<UA697>;/
+% LATIN EXTENDED-D/
+ <UA723>..(2)..<UA72F>;<UA730>;<UA731>..(2)..<UA76F>;<UA771>..<UA778>;/
+ <UA77A>..(2)..<UA77C>;<UA77F>..(2)..<UA787>;<UA78C>;/
% HALFWIDTH AND FULLWIDTH FORMS/
<UFF41>..<UFF5A>;/
% DESERET/
@@ -196,7 +207,7 @@ alpha /
% COMBINING DIACRITICAL MARKS/
<U0345>;/
% BASIC GREEK/
- <U037A>..<U037D>;<U0386>;/
+ <U0370>..<U0373>;<U0376>..<U0377>;<U037A>..<U037D>;<U0386>;/
<U0388>..<U038A>;<U038C>;<U038E>..<U03A1>;/
<U03A3>..<U03CE>;/
% GREEK SYMBOLS AND COPTIC/
@@ -204,18 +215,18 @@ alpha /
% CYRILLIC/
<U0400>..<U0481>;<U048A>..<U04FF>;/
% CYRILLIC SUPPLEMENT/
- <U0500>..<U0513>;/
+ <U0500>..<U0523>;/
% ARMENIAN/
<U0531>..<U0556>;<U0559>;<U0561>..<U0587>;/
% HEBREW/
<U05D0>..<U05EA>;<U05F0>..<U05F2>;/
% ARABIC/
- <U0621>..<U063A>;<U0640>..<U064A>;<U066E>..<U066F>;<U0671>..<U06D3>;/
+ <U0621>..<U064A>;<U066E>..<U066F>;<U0671>..<U06D3>;/
<U06D5>;<U06E5>..<U06E6>;<U06EE>..<U06EF>;<U06FA>..<U06FC>;<U06FF>;/
% SYRIAC/
<U0710>;<U0712>..<U072F>;<U074D>..<U074F>;/
% ARABIC SUPPLEMENT/
- <U0750>..<U076D>;/
+ <U0750>..<U077F>;/
% THAANA/
<U0780>..<U07A5>;<U07B1>;/
% NKO/
@@ -238,20 +249,20 @@ alpha /
% ORIYA/
<U0B05>..<U0B0C>;<U0B0F>;<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/
<U0B32>;<U0B33>;<U0B35>..<U0B39>;<U0B3D>;<U0B5C>;<U0B5D>;/
- <U0B5F>..<U0B61>;<U0B71>;/
+ <U0B5F>..<U0B63>;<U0B71>;/
% TAMIL/
<U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;<U0B92>..<U0B95>;<U0B99>;/
<U0B9A>;<U0B9C>;<U0B9E>;<U0B9F>;<U0BA3>;<U0BA4>;<U0BA8>..<U0BAA>;/
<U0BAE>..<U0BB9>;/
% TELUGU/
<U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;<U0C2A>..<U0C33>;/
- <U0C35>..<U0C39>;<U0C60>..<U0C61>;/
+ <U0C35>..<U0C39>;<U0C3D>;<U0C58>..<U0C59>;<U0C60>..<U0C63>;/
% KANNADA/
<U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;<U0CAA>..<U0CB3>;/
<U0CB5>..<U0CB9>;<U0CDE>;<U0CE0>..<U0CE1>;/
% MALAYALAM/
<U0D05>..<U0D0C>;<U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;/
- <U0D60>..<U0D61>;/
+ <U0D3D>;<U0D60>..<U0D63>;/
% SINHALA/
<U0D85>..<U0D96>;<U0D9A>..<U0DB1>;<U0DB3>..<U0DBB>;<U0DBD>;/
<U0DC0>..<U0DC6>;/
@@ -263,9 +274,10 @@ alpha /
<U0EAA>..<U0EAB>;<U0EAD>..<U0EB0>;<U0EB2>..<U0EB3>;<U0EBD>;/
<U0EC0>..<U0EC4>;<U0EC6>;<U0EDC>..<U0EDD>;/
% TIBETAN/
- <U0F00>;<U0F40>..<U0F47>;<U0F49>..<U0F6A>;<U0F88>..<U0F8B>;/
+ <U0F00>;<U0F40>..<U0F47>;<U0F49>..<U0F6C>;<U0F88>..<U0F8B>;/
% MYANMAR/
- <U1000>..<U1021>;<U1023>..<U1027>;<U1029>;<U102A>;<U1050>..<U1055>;/
+ <U1000>..<U102A>;<U1050>..<U1055>;<U105A>..<U105D>;<U1061>;<U0165>;/
+ <U1066>;<U106E>..<U1070>;<U1075>..<U1081>;<U108E>;/
% GEORGIAN/
<U10A0>..<U10C5>;<U10D0>..<U10FA>;<U10FC>;/
% HANGUL JAMO/
@@ -298,7 +310,7 @@ alpha /
% KHMER/
<U1780>..<U17B3>;<U17D7>;<U17DC>;/
% MONGOLIAN/
- <U1820>..<U1877>;<U1880>..<U18A8>;/
+ <U1820>..<U1877>;<U1880>..<U18A8>;<U18AA>;/
% LIMBU/
<U1900>..<U191C>;<U1946>..<U194F>;/
% TAI LE/
@@ -309,10 +321,16 @@ alpha /
<U1A00>..<U1A16>;/
% BALINESE/
<U1B05>..<U1B33>;<U1B45>..<U1B4B>;<U1B50>..<U1B59>;/
+% SUNDANESE/
+ <U1B83>..<U1BA0>;<U1BAE>..<U1BAF>;/
+% LEPCHA/
+ <U1C00>..<U1C23>;<U1C4D>..<U1C4F>;/
+% OL CHIKI/
+ <U1C5A>..<U1C7D>;/
% PHONETIC EXTENSIONS/
<U1D00>..<U1DBF>;/
% LATIN EXTENDED ADDITIONAL/
- <U1E00>..<U1E9B>;<U1EA0>..<U1EF9>;/
+ <U1E00>..<U1E9F>;<U1EA0>..<U1EFF>;/
% GREEK EXTENDED/
<U1F00>..<U1F15>;<U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;/
<U1F50>..<U1F57>;<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;/
@@ -326,13 +344,13 @@ alpha /
<U2126>;<U2128>..<U212D>;<U212F>..<U2139>;/
<U213C>..<U213F>;<U2145>..<U2149>;<U214E>;/
% NUMBER FORMS/
- <U2160>..<U2184>;/
+ <U2160>..<U2188>;/
% ENCLOSED ALPHANUMERICS/
<U249C>..<U24E9>;/
% GLAGOLITIC/
<U2C00>..<U2C2E>;<U2C30>..<U2C5E>;/
% LATIN EXTENDED-C/
- <U2C60>..<U2C6C>;<U2C74>..<U2C77>;/
+ <U2C60>..<U2C6F>;<U2C71>..<U2C7D>;/
% COPTIC/
<U2C80>..<U2CE4>;/
% GEORGIAN SUPPLEMENT/
@@ -350,7 +368,7 @@ alpha /
% KATAKANA/
<U30A1>..<U30FA>;<U30FC>..<U30FF>;/
% BOPOMOFO/
- <U3105>..<U312C>;/
+ <U3105>..<U312D>;/
% HANGUL COMPATIBILITY JAMO/
<U3131>..<U318E>;/
% BOPOMOFO EXTENDED/
@@ -363,12 +381,24 @@ alpha /
<U4E00>..<U9FBB>;/
% YI SYLLABLES/
<UA000>..<UA48C>;/
+% VAI SYLLABLES/
+ <UA500>..<UA60B>;<UA610>..<UA61F>;<UA62A>..<UA62B>;/
+% CYRILLIC SUPPLEMENT 2/
+ <UA640>..<UA65F>;<UA662>..<UA66E>;<UA680>..<UA697>;/
% LATIN EXTENDED-D/
- <UA717>..<UA71A>;/
+ <UA717>..<UA71F>;<UA722>..<UA78C>;<UA7FB>..<UA7FF>;/
% SYLOTI NEGRI/
<UA800>;<UA801>;<UA803>..<UA805>;<UA807>..<UA80A>;<UA80C>..<UA822>;/
% PHAGS PA/
<UA840>..<UA873>;/
+% SAURASHTRA/
+ <UA882>..<UA8B3>;/
+% KAYAH LI/
+ <UA90A>..<UA92D>;/
+% REJANG/
+ <UA930>..<UA946>;/
+% CHAM/
+ <UAA00>..<UAA28>;<UAA40>..<UAA42>;<UAA44>..<UAA4B>;/
% HANGUL SYLLABLES/
<UAC00>..<UD7A3>;/
% CJK COMPATIBILITY IDEOGRAPHS/
@@ -394,6 +424,10 @@ alpha /
<U00010080>..<U000100FA>;/
% ANCIENT GREEK NUMBERS/
<U00010140>..<U00010174>;/
+% LYCIAN/
+ <U00010280>..<U0001029C>;/
+% CARIAN/
+ <U000102A0>..<U000102D0>;/
% OLD ITALIC/
<U00010300>..<U0001031E>;/
% GOTHIC/
@@ -458,11 +492,11 @@ alpha /
% TAMIL/
<U0BE6>..<U0BEF>;/
% TELUGU/
- <U0C66>..<U0C6F>;/
+ <U0C66>..<U0C6F>;<U0C78>..<U0C7F>;/
% KANNADA/
<U0CE6>..<U0CEF>;/
% MALAYALAM/
- <U0D66>..<U0D6F>;/
+ <U0D66>..<U0D75>;<U0D79>..<U0D7F>;/
% THAI/
<U0E50>..<U0E59>;/
% LAO/
@@ -475,6 +509,20 @@ alpha /
<U17E0>..<U17E9>;/
% MONGOLIAN/
<U1810>..<U1819>;/
+% SUNDANESE/
+ <U1BB0>..<U1BB9>;/
+% LEPCHA/
+ <U1C40>..<U1C49>;/
+% OL CHIKI/
+ <U1C50>..<U1C59>;/
+% VAI/
+ <UA620>..<UA629>;/
+% SAURASHTRA/
+ <UA8D0>..<UA8D9>;/
+% KAYAH LI/
+ <UA900>..<UA909>;/
+% CHAM/
+ <UAA50>..<UAA59>;/
% HALFWIDTH AND FULLWIDTH FORMS/
<UFF10>..<UFF19>
@@ -514,57 +562,67 @@ punct /
<U02EF>..<U0344>;<U0346>..<U036F>;<U0374>..<U0375>;<U037E>;/
<U0384>..<U0385>;<U0387>;<U03F6>;<U0482>..<U0486>;<U0488>..<U0489>;/
<U055A>..<U055F>;<U0589>..<U058A>;<U0591>..<U05C7>;<U05F3>..<U05F4>;/
- <U0600>..<U0603>;<U060B>..<U0615>;<U061B>;<U061E>..<U061F>;/
+ <U0600>..<U0603>;<U060B>..<U061B>;<U061E>..<U061F>;/
<U064B>..<U065E>;<U066A>..<U066D>;<U0670>;<U06D4>;<U06D6>..<U06E4>;/
<U06E7>..<U06ED>;<U06FD>..<U06FE>;<U0700>..<U070D>;<U070F>;<U0711>;/
<U0730>..<U074A>;<U07A6>..<U07B0>;<U07EB>..<U07F3>;<U07F6>..<U07F9>;/
<U0901>..<U0903>;<U093C>;<U093E>..<U094D>;<U0951>..<U0954>;/
- <U0962>..<U0965>;<U0970>;<U0981>..<U0983>;<U09BC>;<U09BE>..<U09C4>;/
+ <U0962>..<U0965>;<U0972>;<U0981>..<U0983>;<U09BC>;<U09BE>..<U09C4>;/
<U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;<U09E2>..<U09E3>;/
<U09F2>..<U09FA>;<U0A01>..<U0A03>;<U0A3C>;<U0A3E>..<U0A42>;/
- <U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A70>..<U0A71>;<U0A81>..<U0A83>;/
+ <U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;<U0A70>..<U0A71>;/
+ <U0A75>;<U0A81>..<U0A83>;/
<U0ABC>;<U0ABE>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/
- <U0AE2>..<U0AE3>;<U0AF1>;<U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B43>;/
+ <U0AE2>..<U0AE3>;<U0AF1>;<U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B44>;/
<U0B47>..<U0B48>;<U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B70>;<U0B82>;/
- <U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;/
+ <U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;/
<U0BF0>..<U0BFA>;<U0C01>..<U0C03>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;/
<U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C82>..<U0C83>;<U0CBC>;/
<U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;/
- <U0CE2>..<U0CE3>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D3E>..<U0D43>;/
+ <U0CE2>..<U0CE3>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D3E>..<U0D44>;/
<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D82>..<U0D83>;<U0DCA>;/
<U0DCF>..<U0DD4>;<U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E2F>;/
<U0E3F>;<U0E46>;<U0E4F>;<U0E5A>..<U0E5B>;<U0EB1>;<U0EB4>..<U0EB9>;/
<U0EBB>..<U0EBC>;<U0EC8>..<U0ECD>;<U0F01>..<U0F1F>;<U0F2A>..<U0F3F>;/
<U0F71>..<U0F87>;<U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;/
- <U0FCF>..<U0FD1>;<U102C>..<U1032>;<U1036>..<U1039>;<U104A>..<U104F>;/
- <U1056>..<U1059>;<U10FB>;<U135F>..<U137C>;<U1390>..<U1399>;/
+ <U0FCE>..<U0FD4>;<U102B>..<U103F>;<U104A>..<U104F>;<U1056>..<U1059>;/
+ <U105E>..<U1060>;<U1062>..<U1064>;<U1067>..<U106D>;<U1071>..<U1074>;/
+ <U1082>..<U108D>;<U108F>..<U1099>;<U109E>;<U109F>;/
+ <U10FB>;<U135F>..<U137C>;<U1390>..<U1399>;/
<U166D>..<U166E>;<U169B>..<U169C>;<U16EB>..<U16ED>;<U1712>..<U1714>;/
<U1732>..<U1736>;<U1752>..<U1753>;<U1772>..<U1773>;<U17B4>..<U17D6>;/
<U17D8>..<U17DB>;<U17DD>;<U17F0>..<U17F9>;<U1800>..<U180D>;<U18A9>;/
<U1920>..<U192B>;<U1930>..<U193B>;<U1940>;<U1944>..<U1945>;/
<U19B0>..<U19C0>;<U19C8>..<U19C9>;<U19DE>..<U19FF>;<U1A17>..<U1A1B>;/
<U1A1E>..<U1A1F>;<U1B00>..<U1B04>;<U1B34>..<U1B44>;<U1B5A>..<U1B7C>;/
- <U1DC0>..<U1DCA>;<U1DFE>..<U1DFF>;<U1FBD>;<U1FBF>..<U1FC1>;/
+ <U1B80>..<U1B82>;<U1BA1>..<U1BAA>;<U1C24>..<U1C37>;<U1C3B>..<U1C3F>;/
+ <U1C7E>..<U1C7F>;/
+ <U1DC0>..<U1DE6>;<U1DFE>..<U1DFF>;<U1FBD>;<U1FBF>..<U1FC1>;/
<U1FCD>..<U1FCF>;<U1FDD>..<U1FDF>;<U1FED>..<U1FEF>;<U1FFD>..<U1FFE>;/
- <U2007>;<U200B>..<U2027>;<U202A>..<U205E>;<U2060>..<U2063>;/
+ <U2007>;<U200B>..<U2027>;<U202A>..<U205E>;<U2060>..<U2064>;/
<U206A>..<U2070>;<U2074>..<U207E>;<U2080>..<U208E>;<U20A0>..<U20B5>;/
- <U20D0>..<U20EF>;<U2100>..<U2101>;<U2103>..<U2106>;<U2108>..<U2109>;/
+ <U20D0>..<U20F0>;<U2100>..<U2101>;<U2103>..<U2106>;<U2108>..<U2109>;/
<U2114>;<U2116>..<U2118>;<U211E>..<U2123>;<U2125>;<U2127>;<U212E>;/
<U213A>..<U213B>;<U2140>..<U2144>;<U214A>..<U214D>;<U2153>..<U215F>;/
<U2190>..<U23E7>;<U2400>..<U2426>;<U2440>..<U244A>;<U2460>..<U249B>;/
- <U24EA>..<U269C>;<U26A0>..<U26B2>;<U2701>..<U2704>;<U2706>..<U2709>;/
+ <U24EA>..<U269D>;<U26A0>..<U26C3>;<U2701>..<U2704>;<U2706>..<U2709>;/
<U270C>..<U2727>;<U2729>..<U274B>;<U274D>;<U274F>..<U2752>;<U2756>;/
<U2758>..<U275E>;<U2761>..<U2794>;<U2798>..<U27AF>;<U27B1>..<U27BE>;/
- <U27C0>..<U27CA>;<U27D0>..<U27EB>;<U27F0>..<U2B1A>;<U2B20>..<U2B23>;/
- <U2CE5>..<U2CEA>;<U2CF9>..<U2CFF>;<U2E00>..<U2E17>;<U2E1C>..<U2E1D>;/
+ <U27C0>..<U27CA>;<U27CC>;<U27D0>..<U27EF>;<U27F0>..<U2B4C>;/
+ <U2B50>..<U2B54>;<U2DE0>..<U2DFF>;/
+ <U2CE5>..<U2CEA>;<U2CF9>..<U2CFF>;<U2E00>..<U2E30>;/
<U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U2FFB>;/
<U3001>..<U3004>;<U3008>..<U3020>;<U302A>..<U3030>;<U3036>..<U3037>;/
<U303D>..<U303F>;<U3099>..<U309C>;<U30A0>;<U30FB>;<U3190>..<U319F>;/
<U31C0>..<U31CF>;<U3200>..<U321E>;<U3220>..<U3243>;<U3250>..<U32FE>;/
- <U3300>..<U33FF>;<U4DC0>..<U4DFF>;<UA490>..<UA4C6>;<UA700>..<UA716>;/
+ <U3300>..<U33FF>;<U4DC0>..<U4DFF>;<UA490>..<UA4C6>;<UA60C>..<UA60F>;/
+ <UA66F>..<UA673>;<UA67C>..<UA67F>;<UA700>..<UA716>;/
<UA720>..<UA721>;<UA802>;<UA806>;<UA80B>;<UA823>..<UA82B>;/
- <UA874>..<UA877>;<UE000>..<UF8FF>;<UFB1E>;<UFB29>;<UFD3E>..<UFD3F>;/
- <UFDFC>..<UFDFD>;<UFE00>..<UFE19>;<UFE20>..<UFE23>;<UFE30>..<UFE52>;/
+ <UA874>..<UA877>;<UA880>;<UA881>;<UA8B4>..<UA8C4>;<UA8CE>..<UA8CF>;/
+ <UA92E>..<UA92F>;<UA947>..<UA953>;<UA95F>;<UAA29>..<UAA36>;<UAA43>;/
+ <UAA4C>..<UAA4D>;<UAA5C>..<UAA5F>;/
+ <UE000>..<UF8FF>;<UFB1E>;<UFB29>;<UFD3E>..<UFD3F>;/
+ <UFDFC>..<UFDFD>;<UFE00>..<UFE19>;<UFE20>..<UFE26>;<UFE30>..<UFE52>;/
<UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFEFF>;<UFF01>..<UFF0F>;/
<UFF1A>..<UFF20>;<UFF3B>..<UFF40>;<UFF5B>..<UFF65>;<UFFE0>..<UFFE6>;/
<UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;<U00010100>..<U00010102>;/
@@ -575,7 +633,7 @@ punct /
<U00010A0C>..<U00010A0F>;<U00010A38>..<U00010A3A>;/
<U00010A3F>..<U00010A47>;<U00010A50>..<U00010A58>;/
<U00012470>..<U00012473>;<U0001D000>..<U0001D0F5>;/
- <U0001D100>..<U0001D126>;<U0001D12A>..<U0001D1DD>;/
+ <U0001D100>..<U0001D126>;<U0001D129>..<U0001D1DD>;/
<U0001D200>..<U0001D245>;<U0001D300>..<U0001D356>;/
<U0001D360>..<U0001D371>;<U0001D6C1>;<U0001D6DB>;<U0001D6FB>;<U0001D715>;/
<U0001D735>;<U0001D74F>;<U0001D76F>;<U0001D789>;<U0001D7A9>;<U0001D7C3>;/
@@ -583,52 +641,55 @@ punct /
<U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD>
graph /
- <U0021>..<U007E>;<U00A0>..<U036F>;<U0374>..<U0375>;<U037A>..<U037E>;/
- <U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U03CE>;/
- <U03D0>..<U0486>;<U0488>..<U0513>;<U0531>..<U0556>;<U0559>..<U055F>;/
+ <U0021>..<U007E>;<U00A0>..<U0377>;<U037A>..<U037E>;/
+ <U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U0486>;/
+ <U0488>..<U0523>;<U0531>..<U0556>;<U0559>..<U055F>;/
<U0561>..<U0587>;<U0589>..<U058A>;<U0591>..<U05C7>;<U05D0>..<U05EA>;/
- <U05F0>..<U05F4>;<U0600>..<U0603>;<U060B>..<U0615>;<U061B>;/
- <U061E>..<U061F>;<U0621>..<U063A>;<U0640>..<U065E>;<U0660>..<U070D>;/
- <U070F>..<U074A>;<U074D>..<U076D>;<U0780>..<U07B1>;<U07C0>..<U07FA>;/
- <U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0970>;/
+ <U05F0>..<U05F4>;<U0600>..<U0603>;<U0606>..<U061B>;/
+ <U061E>..<U061F>;<U0621>..<U065E>;<U0660>..<U070D>;/
+ <U070F>..<U074A>;<U074D>..<U07B1>;<U07C0>..<U07FA>;/
+ <U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0972>;/
<U097B>..<U097F>;<U0981>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;/
<U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;/
<U09BC>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CE>;<U09D7>;/
<U09DC>..<U09DD>;<U09DF>..<U09E3>;<U09E6>..<U09FA>;<U0A01>..<U0A03>;/
<U0A05>..<U0A0A>;<U0A0F>..<U0A10>;<U0A13>..<U0A28>;<U0A2A>..<U0A30>;/
<U0A32>..<U0A33>;<U0A35>..<U0A36>;<U0A38>..<U0A39>;<U0A3C>;/
- <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A59>..<U0A5C>;/
- <U0A5E>;<U0A66>..<U0A74>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/
+ <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;/
+ <U0A59>..<U0A5C>;/
+ <U0A5E>;<U0A66>..<U0A75>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/
<U0A8F>..<U0A91>;<U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;<U0AB2>..<U0AB3>;/
<U0AB5>..<U0AB9>;<U0ABC>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/
<U0AD0>;<U0AE0>..<U0AE3>;<U0AE6>..<U0AEF>;<U0AF1>;<U0B01>..<U0B03>;/
<U0B05>..<U0B0C>;<U0B0F>..<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/
- <U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B43>;<U0B47>..<U0B48>;/
- <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B61>;/
+ <U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B44>;<U0B47>..<U0B48>;/
+ <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B63>;/
<U0B66>..<U0B71>;<U0B82>..<U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;/
<U0B92>..<U0B95>;<U0B99>..<U0B9A>;<U0B9C>;<U0B9E>..<U0B9F>;/
<U0BA3>..<U0BA4>;<U0BA8>..<U0BAA>;<U0BAE>..<U0BB9>;<U0BBE>..<U0BC2>;/
- <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;<U0BE6>..<U0BFA>;/
+ <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;<U0BE6>..<U0BFA>;/
<U0C01>..<U0C03>;<U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;/
- <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;/
- <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C60>..<U0C61>;<U0C66>..<U0C6F>;/
+ <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3D>..<U0C44>;<U0C46>..<U0C48>;/
+ <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C58>..<U0C59>;<U0C60>..<U0C63>;/
+ <U0C66>..<U0C6F>;<U0C78>..<U0C7F>;/
<U0C82>..<U0C83>;<U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;/
<U0CAA>..<U0CB3>;<U0CB5>..<U0CB9>;<U0CBC>..<U0CC4>;<U0CC6>..<U0CC8>;/
<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CDE>;<U0CE0>..<U0CE3>;/
<U0CE6>..<U0CEF>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D05>..<U0D0C>;/
- <U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3E>..<U0D43>;/
- <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D61>;/
- <U0D66>..<U0D6F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;<U0D9A>..<U0DB1>;/
+ <U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3D>..<U0D44>;/
+ <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D63>;/
+ <U0D66>..<U0D75>;<U0D79>..<U0D7F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;/
+ <U0D9A>..<U0DB1>;/
<U0DB3>..<U0DBB>;<U0DBD>;<U0DC0>..<U0DC6>;<U0DCA>;<U0DCF>..<U0DD4>;/
<U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E01>..<U0E3A>;/
<U0E3F>..<U0E5B>;<U0E81>..<U0E82>;<U0E84>;<U0E87>..<U0E88>;<U0E8A>;/
<U0E8D>;<U0E94>..<U0E97>;<U0E99>..<U0E9F>;<U0EA1>..<U0EA3>;<U0EA5>;/
<U0EA7>;<U0EAA>..<U0EAB>;<U0EAD>..<U0EB9>;<U0EBB>..<U0EBD>;/
<U0EC0>..<U0EC4>;<U0EC6>;<U0EC8>..<U0ECD>;<U0ED0>..<U0ED9>;/
- <U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6A>;<U0F71>..<U0F8B>;/
- <U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCF>..<U0FD1>;/
- <U1000>..<U1021>;<U1023>..<U1027>;<U1029>..<U102A>;<U102C>..<U1032>;/
- <U1036>..<U1039>;<U1040>..<U1059>;<U10A0>..<U10C5>;<U10D0>..<U10FC>;/
+ <U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6C>;<U0F71>..<U0F8B>;/
+ <U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCE>..<U0FD4>;/
+ <U1000>..<U102A>;<U102B>..<U103F>;<U1040>..<U1099>;<U109E>;<U109F>;/
+ <U10A0>..<U10C5>;<U10D0>..<U10FC>;/
<U1100>..<U1159>;<U115F>..<U11A2>;<U11A8>..<U11F9>;<U1200>..<U1248>;/
<U124A>..<U124D>;<U1250>..<U1256>;<U1258>;<U125A>..<U125D>;/
<U1260>..<U1288>;<U128A>..<U128D>;<U1290>..<U12B0>;<U12B2>..<U12B5>;/
@@ -638,37 +699,43 @@ graph /
<U16A0>..<U16F0>;<U1700>..<U170C>;<U170E>..<U1714>;<U1720>..<U1736>;/
<U1740>..<U1753>;<U1760>..<U176C>;<U176E>..<U1770>;<U1772>..<U1773>;/
<U1780>..<U17DD>;<U17E0>..<U17E9>;<U17F0>..<U17F9>;<U1800>..<U180D>;/
- <U1810>..<U1819>;<U1820>..<U1877>;<U1880>..<U18A9>;<U1900>..<U191C>;/
+ <U1810>..<U1819>;<U1820>..<U1877>;<U1880>..<U18AA>;<U1900>..<U191C>;/
<U1920>..<U192B>;<U1930>..<U193B>;<U1940>;<U1944>..<U196D>;/
<U1970>..<U1974>;<U1980>..<U19A9>;<U19B0>..<U19C9>;<U19D0>..<U19D9>;/
<U19DE>..<U1A1B>;<U1A1E>..<U1A1F>;<U1B00>..<U1B4B>;<U1B50>..<U1B7C>;/
- <U1D00>..<U1DCA>;<U1DFE>..<U1E9B>;<U1EA0>..<U1EF9>;<U1F00>..<U1F15>;/
+ <U1B80>..<U1BAA>;<U1BAE>..<U1BB9>;<U1C00>..<U1C37>;<U1C3B>..<U1C49>;/
+ <U1C4D>..<U1C7F>;/
+ <U1D00>..<U1DE6>;<U1DFE>..<U1E9F>;<U1EA0>..<U1EFF>;<U1F00>..<U1F15>;/
<U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;/
<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/
<U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;/
<U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2007>;<U200B>..<U2027>;/
- <U202A>..<U205E>;<U2060>..<U2063>;<U206A>..<U2071>;<U2074>..<U208E>;/
- <U2090>..<U2094>;<U20A0>..<U20B5>;<U20D0>..<U20EF>;<U2100>..<U214E>;/
- <U2153>..<U2184>;<U2190>..<U23E7>;<U2400>..<U2426>;<U2440>..<U244A>;/
- <U2460>..<U269C>;<U26A0>..<U26B2>;<U2701>..<U2704>;<U2706>..<U2709>;/
+ <U202A>..<U205E>;<U2060>..<U2064>;<U206A>..<U2071>;<U2074>..<U208E>;/
+ <U2090>..<U2094>;<U20A0>..<U20B5>;<U20D0>..<U20F0>;<U2100>..<U214F>;/
+ <U2153>..<U2188>;<U2190>..<U23E7>;<U2400>..<U2426>;<U2440>..<U244A>;/
+ <U2460>..<U269D>;<U26A0>..<U26C3>;<U2701>..<U2704>;<U2706>..<U2709>;/
<U270C>..<U2727>;<U2729>..<U274B>;<U274D>;<U274F>..<U2752>;<U2756>;/
<U2758>..<U275E>;<U2761>..<U2794>;<U2798>..<U27AF>;<U27B1>..<U27BE>;/
- <U27C0>..<U27CA>;<U27D0>..<U27EB>;<U27F0>..<U2B1A>;<U2B20>..<U2B23>;/
- <U2C00>..<U2C2E>;<U2C30>..<U2C5E>;<U2C60>..<U2C6C>;<U2C74>..<U2C77>;/
+ <U27C0>..<U27CA>;<U27CC>;<U27D0>..<U27EF>;<U27F0>..<U2B4C>;/
+ <U2B50>..<U2B54>;/
+ <U2C00>..<U2C2E>;<U2C30>..<U2C5E>;<U2C60>..<U2C6F>;<U2C71>..<U2C7D>;/
<U2C80>..<U2CEA>;<U2CF9>..<U2D25>;<U2D30>..<U2D65>;<U2D6F>;/
<U2D80>..<U2D96>;<U2DA0>..<U2DA6>;<U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;/
<U2DB8>..<U2DBE>;<U2DC0>..<U2DC6>;<U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;/
- <U2DD8>..<U2DDE>;<U2E00>..<U2E17>;<U2E1C>..<U2E1D>;<U2E80>..<U2E99>;/
+ <U2DD8>..<U2DDE>;<U2DE0>..<U2E30>;<U2E80>..<U2E99>;/
<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U2FFB>;<U3001>..<U303F>;/
- <U3041>..<U3096>;<U3099>..<U30FF>;<U3105>..<U312C>;<U3131>..<U318E>;/
+ <U3041>..<U3096>;<U3099>..<U30FF>;<U3105>..<U312D>;<U3131>..<U318E>;/
<U3190>..<U31B7>;<U31C0>..<U31CF>;<U31F0>..<U321E>;<U3220>..<U3243>;/
<U3250>..<U32FE>;<U3300>..<U4DB5>;<U4DC0>..<U9FBB>;<UA000>..<UA48C>;/
- <UA490>..<UA4C6>;<UA700>..<UA71A>;<UA720>..<UA721>;<UA800>..<UA82B>;/
- <UA840>..<UA877>;<UAC00>..<UD7A3>;<UE000>..<UFA2D>;<UFA30>..<UFA6A>;/
+ <UA490>..<UA4C6>;<UA500>..<UA62B>;<UA640>..<UA65F>;<UA662>..<UA673>;/
+ <UA67C>..<UA697>;<UA700>..<UA78C>;<UA7FB>..<UA7FF>;<UA800>..<UA82B>;/
+ <UA840>..<UA877>;<UA880>..<UA8C4>;<UA8CE>..<UA8D9>;<UA900>..<UA953>;/
+ <UA95F>;<UAA00>..<UAA36>;<UAA40>..<UAA4D>;<UAA50>..<UAA59>;/
+ <UAA5C>..<UAA5F>;<UAC00>..<UD7A3>;<UE000>..<UFA2D>;<UFA30>..<UFA6A>;/
<UFA70>..<UFAD9>;<UFB00>..<UFB06>;<UFB13>..<UFB17>;<UFB1D>..<UFB36>;/
<UFB38>..<UFB3C>;<UFB3E>;<UFB40>..<UFB41>;<UFB43>..<UFB44>;/
<UFB46>..<UFBB1>;<UFBD3>..<UFD3F>;<UFD50>..<UFD8F>;<UFD92>..<UFDC7>;/
- <UFDF0>..<UFDFD>;<UFE00>..<UFE19>;<UFE20>..<UFE23>;<UFE30>..<UFE52>;/
+ <UFDF0>..<UFDFD>;<UFE00>..<UFE19>;<UFE20>..<UFE26>;<UFE30>..<UFE52>;/
<UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFE70>..<UFE74>;<UFE76>..<UFEFC>;/
<UFEFF>;<UFF01>..<UFFBE>;<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;/
<UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;/
@@ -677,6 +744,8 @@ graph /
<U0001003F>..<U0001004D>;<U00010050>..<U0001005D>;/
<U00010080>..<U000100FA>;<U00010100>..<U00010102>;/
<U00010107>..<U00010133>;<U00010137>..<U0001018A>;/
+ <U00010190>..<U0001019B>;<U000101D0>..<U000101FD>;/
+ <U00010280>..<U0001029C>;<U000102A0>..<U000102D0>;/
<U00010300>..<U0001031E>;<U00010320>..<U00010323>;/
<U00010330>..<U0001034A>;<U00010380>..<U0001039D>;/
<U0001039F>..<U000103C3>;<U000103C8>..<U000103D5>;/
@@ -690,7 +759,7 @@ graph /
<U00010A50>..<U00010A58>;<U00012000>..<U0001236E>;/
<U00012400>..<U00012462>;<U00012470>..<U00012473>;/
<U0001D000>..<U0001D0F5>;<U0001D100>..<U0001D126>;/
- <U0001D12A>..<U0001D1DD>;<U0001D200>..<U0001D245>;/
+ <U0001D129>..<U0001D1DD>;<U0001D200>..<U0001D245>;/
<U0001D300>..<U0001D356>;<U0001D360>..<U0001D371>;/
<U0001D400>..<U0001D454>;<U0001D456>..<U0001D49C>;/
<U0001D49E>..<U0001D49F>;<U0001D4A2>;<U0001D4A5>..<U0001D4A6>;/
@@ -701,57 +770,61 @@ graph /
<U0001D53B>..<U0001D53E>;<U0001D540>..<U0001D544>;<U0001D546>;/
<U0001D54A>..<U0001D550>;<U0001D552>..<U0001D6A5>;/
<U0001D6A8>..<U0001D7CB>;<U0001D7CE>..<U0001D7FF>;/
+ <U0001F000>..<U0001F02B>;<U0001F030>..<U0001F093>;/
<U00020000>..<U0002A6D6>;<U0002F800>..<U0002FA1D>;<U000E0001>;/
<U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/
<U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD>
print /
- <U0020>..<U007E>;<U00A0>..<U036F>;<U0374>..<U0375>;<U037A>..<U037E>;/
- <U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U03CE>;/
- <U03D0>..<U0486>;<U0488>..<U0513>;<U0531>..<U0556>;<U0559>..<U055F>;/
+ <U0020>..<U007E>;<U00A0>..<U0377>;<U037A>..<U037E>;/
+ <U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U0486>;/
+ <U0488>..<U0523>;<U0531>..<U0556>;<U0559>..<U055F>;/
<U0561>..<U0587>;<U0589>..<U058A>;<U0591>..<U05C7>;<U05D0>..<U05EA>;/
- <U05F0>..<U05F4>;<U0600>..<U0603>;<U060B>..<U0615>;<U061B>;/
- <U061E>..<U061F>;<U0621>..<U063A>;<U0640>..<U065E>;<U0660>..<U070D>;/
- <U070F>..<U074A>;<U074D>..<U076D>;<U0780>..<U07B1>;<U07C0>..<U07FA>;/
- <U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0970>;/
+ <U05F0>..<U05F4>;<U0600>..<U0603>;<U0606>..<U061B>;/
+ <U061E>..<U061F>;<U0621>..<U065E>;<U0660>..<U070D>;/
+ <U070F>..<U074A>;<U074D>..<U07B1>;<U07C0>..<U07FA>;/
+ <U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0972>;/
<U097B>..<U097F>;<U0981>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;/
<U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;/
<U09BC>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CE>;<U09D7>;/
<U09DC>..<U09DD>;<U09DF>..<U09E3>;<U09E6>..<U09FA>;<U0A01>..<U0A03>;/
<U0A05>..<U0A0A>;<U0A0F>..<U0A10>;<U0A13>..<U0A28>;<U0A2A>..<U0A30>;/
<U0A32>..<U0A33>;<U0A35>..<U0A36>;<U0A38>..<U0A39>;<U0A3C>;/
- <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A59>..<U0A5C>;/
- <U0A5E>;<U0A66>..<U0A74>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/
+ <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;/
+ <U0A59>..<U0A5C>;/
+ <U0A5E>;<U0A66>..<U0A75>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/
<U0A8F>..<U0A91>;<U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;<U0AB2>..<U0AB3>;/
<U0AB5>..<U0AB9>;<U0ABC>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/
<U0AD0>;<U0AE0>..<U0AE3>;<U0AE6>..<U0AEF>;<U0AF1>;<U0B01>..<U0B03>;/
<U0B05>..<U0B0C>;<U0B0F>..<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/
- <U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B43>;<U0B47>..<U0B48>;/
- <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B61>;/
+ <U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B44>;<U0B47>..<U0B48>;/
+ <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B63>;/
<U0B66>..<U0B71>;<U0B82>..<U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;/
<U0B92>..<U0B95>;<U0B99>..<U0B9A>;<U0B9C>;<U0B9E>..<U0B9F>;/
<U0BA3>..<U0BA4>;<U0BA8>..<U0BAA>;<U0BAE>..<U0BB9>;<U0BBE>..<U0BC2>;/
- <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;<U0BE6>..<U0BFA>;/
+ <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;<U0BE6>..<U0BFA>;/
<U0C01>..<U0C03>;<U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;/
- <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;/
- <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C60>..<U0C61>;<U0C66>..<U0C6F>;/
+ <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3D>..<U0C44>;<U0C46>..<U0C48>;/
+ <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C58>..<U0C59>;<U0C60>..<U0C63>;/
+ <U0C66>..<U0C6F>;<U0C78>..<U0C7F>;/
<U0C82>..<U0C83>;<U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;/
<U0CAA>..<U0CB3>;<U0CB5>..<U0CB9>;<U0CBC>..<U0CC4>;<U0CC6>..<U0CC8>;/
<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CDE>;<U0CE0>..<U0CE3>;/
<U0CE6>..<U0CEF>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D05>..<U0D0C>;/
- <U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3E>..<U0D43>;/
- <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D61>;/
- <U0D66>..<U0D6F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;<U0D9A>..<U0DB1>;/
+ <U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3D>..<U0D44>;/
+ <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D63>;/
+ <U0D66>..<U0D75>;<U0D79>..<U0D7F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;/
+ <U0D9A>..<U0DB1>;/
<U0DB3>..<U0DBB>;<U0DBD>;<U0DC0>..<U0DC6>;<U0DCA>;<U0DCF>..<U0DD4>;/
<U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E01>..<U0E3A>;/
<U0E3F>..<U0E5B>;<U0E81>..<U0E82>;<U0E84>;<U0E87>..<U0E88>;<U0E8A>;/
<U0E8D>;<U0E94>..<U0E97>;<U0E99>..<U0E9F>;<U0EA1>..<U0EA3>;<U0EA5>;/
<U0EA7>;<U0EAA>..<U0EAB>;<U0EAD>..<U0EB9>;<U0EBB>..<U0EBD>;/
<U0EC0>..<U0EC4>;<U0EC6>;<U0EC8>..<U0ECD>;<U0ED0>..<U0ED9>;/
- <U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6A>;<U0F71>..<U0F8B>;/
- <U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCF>..<U0FD1>;/
- <U1000>..<U1021>;<U1023>..<U1027>;<U1029>..<U102A>;<U102C>..<U1032>;/
- <U1036>..<U1039>;<U1040>..<U1059>;<U10A0>..<U10C5>;<U10D0>..<U10FC>;/
+ <U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6C>;<U0F71>..<U0F8B>;/
+ <U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCE>..<U0FD4>;/
+ <U1000>..<U102A>;<U102B>..<U103F>;<U1040>..<U1099>;<U109E>;<U109F>;/
+ <U10A0>..<U10C5>;<U10D0>..<U10FC>;/
<U1100>..<U1159>;<U115F>..<U11A2>;<U11A8>..<U11F9>;<U1200>..<U1248>;/
<U124A>..<U124D>;<U1250>..<U1256>;<U1258>;<U125A>..<U125D>;/
<U1260>..<U1288>;<U128A>..<U128D>;<U1290>..<U12B0>;<U12B2>..<U12B5>;/
@@ -761,37 +834,45 @@ print /
<U16A0>..<U16F0>;<U1700>..<U170C>;<U170E>..<U1714>;<U1720>..<U1736>;/
<U1740>..<U1753>;<U1760>..<U176C>;<U176E>..<U1770>;<U1772>..<U1773>;/
<U1780>..<U17DD>;<U17E0>..<U17E9>;<U17F0>..<U17F9>;<U1800>..<U180E>;/
- <U1810>..<U1819>;<U1820>..<U1877>;<U1880>..<U18A9>;<U1900>..<U191C>;/
+ <U1810>..<U1819>;<U1820>..<U1877>;<U1880>..<U18AA>;<U1900>..<U191C>;/
<U1920>..<U192B>;<U1930>..<U193B>;<U1940>;<U1944>..<U196D>;/
<U1970>..<U1974>;<U1980>..<U19A9>;<U19B0>..<U19C9>;<U19D0>..<U19D9>;/
<U19DE>..<U1A1B>;<U1A1E>..<U1A1F>;<U1B00>..<U1B4B>;<U1B50>..<U1B7C>;/
- <U1D00>..<U1DCA>;<U1DFE>..<U1E9B>;<U1EA0>..<U1EF9>;<U1F00>..<U1F15>;/
+ <U1B80>..<U1BAA>;<U1BAE>..<U1BB9>;<U1C00>..<U1C37>;<U1C3B>..<U1C49>;/
+ <U1C4D>..<U1C7F>;/
+ <U1D00>..<U1DE6>;<U1DFE>..<U1E9F>;<U1EA0>..<U1EFF>;<U1F00>..<U1F15>;/
<U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;/
<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/
<U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;/
- <U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2000>..<U2027>;<U202A>..<U2063>;/
+ <U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2000>..<U2027>;<U202A>..<U2064>;/
<U206A>..<U2071>;<U2074>..<U208E>;<U2090>..<U2094>;<U20A0>..<U20B5>;/
- <U20D0>..<U20EF>;<U2100>..<U214E>;<U2153>..<U2184>;<U2190>..<U23E7>;/
- <U2400>..<U2426>;<U2440>..<U244A>;<U2460>..<U269C>;<U26A0>..<U26B2>;/
+ <U20D0>..<U20F0>;<U2100>..<U214F>;<U2153>..<U2188>;<U2190>..<U23E7>;/
+ <U2400>..<U2426>;<U2440>..<U244A>;<U2460>..<U269D>;<U26A0>..<U26C3>;/
<U2701>..<U2704>;<U2706>..<U2709>;<U270C>..<U2727>;<U2729>..<U274B>;/
<U274D>;<U274F>..<U2752>;<U2756>;<U2758>..<U275E>;<U2761>..<U2794>;/
- <U2798>..<U27AF>;<U27B1>..<U27BE>;<U27C0>..<U27CA>;<U27D0>..<U27EB>;/
- <U27F0>..<U2B1A>;<U2B20>..<U2B23>;<U2C00>..<U2C2E>;<U2C30>..<U2C5E>;/
- <U2C60>..<U2C6C>;<U2C74>..<U2C77>;<U2C80>..<U2CEA>;<U2CF9>..<U2D25>;/
+ <U2798>..<U27AF>;<U27B1>..<U27BE>;<U27C0>..<U27CA>;<U27CC>;/
+ <U27D0>..<U27EF>;/
+ <U27F0>..<U2B4C>;<U2B50>..<U2B54>;<U2C00>..<U2C2E>;<U2C30>..<U2C5E>;/
+ <U2C60>..<U2C6F>;<U2C71>..<U2C7D>;<U2C80>..<U2CEA>;<U2CF9>..<U2D25>;/
<U2D30>..<U2D65>;<U2D6F>;<U2D80>..<U2D96>;<U2DA0>..<U2DA6>;/
<U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;<U2DB8>..<U2DBE>;<U2DC0>..<U2DC6>;/
- <U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;<U2E00>..<U2E17>;/
- <U2E1C>..<U2E1D>;<U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;/
+ <U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;<U2DE0>..<U2E30>;/
+ <U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;/
<U2FF0>..<U2FFB>;<U3000>..<U303F>;<U3041>..<U3096>;<U3099>..<U30FF>;/
- <U3105>..<U312C>;<U3131>..<U318E>;<U3190>..<U31B7>;<U31C0>..<U31CF>;/
+ <U3105>..<U312D>;<U3131>..<U318E>;<U3190>..<U31B7>;<U31C0>..<U31CF>;/
<U31F0>..<U321E>;<U3220>..<U3243>;<U3250>..<U32FE>;<U3300>..<U4DB5>;/
- <U4DC0>..<U9FBB>;<UA000>..<UA48C>;<UA490>..<UA4C6>;<UA700>..<UA71A>;/
- <UA720>..<UA721>;<UA800>..<UA82B>;<UA840>..<UA877>;<UAC00>..<UD7A3>;/
+ <U4DC0>..<U9FBB>;<UA000>..<UA48C>;<UA490>..<UA4C6>;<UA500>..<UA62B>;/
+ <UA640>..<UA65F>;<UA662>..<UA673>;<UA67C>..<UA697>;<UA700>..<UA78C>;/
+ <UA7FB>..<UA7FF>;<UA800>..<UA82B>;<UA840>..<UA877>;/
+ <UA880>..<UA8C4>;<UA8CE>..<UA8D9>;<UAC00>..<UD7A3>;/
+ <UA840>..<UA877>;<UA880>..<UA8C4>;<UA8CE>..<UA8D9>;<UA900>..<UA953>;/
+ <UA95F>;<UAA00>..<UAA36>;<UAA40>..<UAA4D>;<UAA50>..<UAA59>;/
+ <UAA5C>..<UAA5F>;/
<UE000>..<UFA2D>;<UFA30>..<UFA6A>;<UFA70>..<UFAD9>;<UFB00>..<UFB06>;/
<UFB13>..<UFB17>;<UFB1D>..<UFB36>;<UFB38>..<UFB3C>;<UFB3E>;/
<UFB40>..<UFB41>;<UFB43>..<UFB44>;<UFB46>..<UFBB1>;<UFBD3>..<UFD3F>;/
<UFD50>..<UFD8F>;<UFD92>..<UFDC7>;<UFDF0>..<UFDFD>;<UFE00>..<UFE19>;/
- <UFE20>..<UFE23>;<UFE30>..<UFE52>;<UFE54>..<UFE66>;<UFE68>..<UFE6B>;/
+ <UFE20>..<UFE26>;<UFE30>..<UFE52>;<UFE54>..<UFE66>;<UFE68>..<UFE6B>;/
<UFE70>..<UFE74>;<UFE76>..<UFEFC>;<UFEFF>;<UFF01>..<UFFBE>;/
<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;<UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;/
<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;/
@@ -800,6 +881,8 @@ print /
<U0001003F>..<U0001004D>;<U00010050>..<U0001005D>;/
<U00010080>..<U000100FA>;<U00010100>..<U00010102>;/
<U00010107>..<U00010133>;<U00010137>..<U0001018A>;/
+ <U00010190>..<U0001019B>;<U000101D0>..<U000101FD>;/
+ <U00010280>..<U0001029C>;<U000102A0>..<U000102D0>;/
<U00010300>..<U0001031E>;<U00010320>..<U00010323>;/
<U00010330>..<U0001034A>;<U00010380>..<U0001039D>;/
<U0001039F>..<U000103C3>;<U000103C8>..<U000103D5>;/
@@ -813,7 +896,7 @@ print /
<U00010A50>..<U00010A58>;<U00012000>..<U0001236E>;/
<U00012400>..<U00012462>;<U00012470>..<U00012473>;/
<U0001D000>..<U0001D0F5>;<U0001D100>..<U0001D126>;/
- <U0001D12A>..<U0001D1DD>;<U0001D200>..<U0001D245>;/
+ <U0001D129>..<U0001D1DD>;<U0001D200>..<U0001D245>;/
<U0001D300>..<U0001D356>;<U0001D360>..<U0001D371>;/
<U0001D400>..<U0001D454>;<U0001D456>..<U0001D49C>;/
<U0001D49E>..<U0001D49F>;<U0001D4A2>;<U0001D4A5>..<U0001D4A6>;/
@@ -824,6 +907,7 @@ print /
<U0001D53B>..<U0001D53E>;<U0001D540>..<U0001D544>;<U0001D546>;/
<U0001D54A>..<U0001D550>;<U0001D552>..<U0001D6A5>;/
<U0001D6A8>..<U0001D7CB>;<U0001D7CE>..<U0001D7FF>;/
+ <U0001F000>..<U0001F02B>;<U0001F030>..<U0001F093>;/
<U00020000>..<U0002A6D6>;<U0002F800>..<U0002FA1D>;<U000E0001>;/
<U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/
<U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD>
@@ -844,7 +928,8 @@ toupper /
(<U006D>,<U004D>);(<U006E>,<U004E>);(<U006F>,<U004F>);(<U0070>,<U0050>);/
(<U0071>,<U0051>);(<U0072>,<U0052>);(<U0073>,<U0053>);(<U0074>,<U0054>);/
(<U0075>,<U0055>);(<U0076>,<U0056>);(<U0077>,<U0057>);(<U0078>,<U0058>);/
- (<U0079>,<U0059>);(<U007A>,<U005A>);(<U00B5>,<U039C>);(<U00E0>,<U00C0>);/
+ (<U0079>,<U0059>);(<U007A>,<U005A>);(<U00B5>,<U039C>);(<U00DF>,<U1E9E>);/
+ (<U00E0>,<U00C0>);/
(<U00E1>,<U00C1>);(<U00E2>,<U00C2>);(<U00E3>,<U00C3>);(<U00E4>,<U00C4>);/
(<U00E5>,<U00C5>);(<U00E6>,<U00C6>);(<U00E7>,<U00C7>);(<U00E8>,<U00C8>);/
(<U00E9>,<U00C9>);(<U00EA>,<U00CA>);(<U00EB>,<U00CB>);(<U00EC>,<U00CC>);/
@@ -889,13 +974,16 @@ toupper /
(<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);(<U022F>,<U022E>);/
(<U0231>,<U0230>);(<U0233>,<U0232>);(<U023C>,<U023B>);(<U0242>,<U0241>);/
(<U0247>,<U0246>);(<U0249>,<U0248>);(<U024B>,<U024A>);(<U024D>,<U024C>);/
- (<U024F>,<U024E>);(<U0253>,<U0181>);(<U0254>,<U0186>);(<U0256>,<U0189>);/
+ (<U024F>,<U024E>);(<U0250>,<U2C6F>);(<U0251>,<U2C6D>);(<U0253>,<U0181>);/
+ (<U0254>,<U0186>);(<U0256>,<U0189>);/
(<U0257>,<U018A>);(<U0259>,<U018F>);(<U025B>,<U0190>);(<U0260>,<U0193>);/
(<U0263>,<U0194>);(<U0268>,<U0197>);(<U0269>,<U0196>);(<U026B>,<U2C62>);/
- (<U026F>,<U019C>);(<U0272>,<U019D>);(<U0275>,<U019F>);(<U027D>,<U2C64>);/
+ (<U026F>,<U019C>);(<U0271>,<U2C6E>);(<U0272>,<U019D>);(<U0275>,<U019F>);/
+ (<U027D>,<U2C64>);/
(<U0280>,<U01A6>);(<U0283>,<U01A9>);(<U0288>,<U01AE>);(<U0289>,<U0244>);/
(<U028A>,<U01B1>);(<U028B>,<U01B2>);(<U028C>,<U0245>);(<U0292>,<U01B7>);/
- (<U0345>,<U0399>);(<U037B>,<U03FD>);(<U037C>,<U03FE>);(<U037D>,<U03FF>);/
+ (<U0345>,<U0399>);(<U0371>,<U0370>);(<U0373>,<U0372>);(<U0377>,<U0376>);/
+ (<U037B>,<U03FD>);(<U037C>,<U03FE>);(<U037D>,<U03FF>);/
(<U03AC>,<U0386>);(<U03AD>,<U0388>);(<U03AE>,<U0389>);(<U03AF>,<U038A>);/
(<U03B1>,<U0391>);(<U03B2>,<U0392>);(<U03B3>,<U0393>);(<U03B4>,<U0394>);/
(<U03B5>,<U0395>);(<U03B6>,<U0396>);(<U03B7>,<U0397>);(<U03B8>,<U0398>);/
@@ -943,7 +1031,9 @@ toupper /
(<U04F9>,<U04F8>);(<U04FB>,<U04FA>);(<U04FD>,<U04FC>);(<U04FF>,<U04FE>);/
(<U0501>,<U0500>);(<U0503>,<U0502>);(<U0505>,<U0504>);(<U0507>,<U0506>);/
(<U0509>,<U0508>);(<U050B>,<U050A>);(<U050D>,<U050C>);(<U050F>,<U050E>);/
- (<U0511>,<U0510>);(<U0513>,<U0512>);(<U0561>,<U0531>);(<U0562>,<U0532>);/
+ (<U0511>,<U0510>);(<U0513>,<U0512>);(<U0515>,<U0514>);(<U0517>,<U0516>);/
+ (<U0519>,<U0518>);(<U051B>,<U051A>);(<U051D>,<U051C>);(<U051F>,<U051E>);/
+ (<U0521>,<U0520>);(<U0523>,<U0522>);(<U0561>,<U0531>);(<U0562>,<U0532>);/
(<U0563>,<U0533>);(<U0564>,<U0534>);(<U0565>,<U0535>);(<U0566>,<U0536>);/
(<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);/
(<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);/
@@ -983,7 +1073,8 @@ toupper /
(<U1EDF>,<U1EDE>);(<U1EE1>,<U1EE0>);(<U1EE3>,<U1EE2>);(<U1EE5>,<U1EE4>);/
(<U1EE7>,<U1EE6>);(<U1EE9>,<U1EE8>);(<U1EEB>,<U1EEA>);(<U1EED>,<U1EEC>);/
(<U1EEF>,<U1EEE>);(<U1EF1>,<U1EF0>);(<U1EF3>,<U1EF2>);(<U1EF5>,<U1EF4>);/
- (<U1EF7>,<U1EF6>);(<U1EF9>,<U1EF8>);(<U1F00>,<U1F08>);(<U1F01>,<U1F09>);/
+ (<U1EF7>,<U1EF6>);(<U1EF9>,<U1EF8>);(<U1EFB>,<U1EFA>);(<U1EFD>,<U1EFC>);/
+ (<U1EFF>,<U1EFE>);(<U1F00>,<U1F08>);(<U1F01>,<U1F09>);/
(<U1F02>,<U1F0A>);(<U1F03>,<U1F0B>);(<U1F04>,<U1F0C>);(<U1F05>,<U1F0D>);/
(<U1F06>,<U1F0E>);(<U1F07>,<U1F0F>);(<U1F10>,<U1F18>);(<U1F11>,<U1F19>);/
(<U1F12>,<U1F1A>);(<U1F13>,<U1F1B>);(<U1F14>,<U1F1C>);(<U1F15>,<U1F1D>);/
@@ -1032,6 +1123,7 @@ toupper /
(<U2C59>,<U2C29>);(<U2C5A>,<U2C2A>);(<U2C5B>,<U2C2B>);(<U2C5C>,<U2C2C>);/
(<U2C5D>,<U2C2D>);(<U2C5E>,<U2C2E>);(<U2C61>,<U2C60>);(<U2C65>,<U023A>);/
(<U2C66>,<U023E>);(<U2C68>,<U2C67>);(<U2C6A>,<U2C69>);(<U2C6C>,<U2C6B>);/
+ (<U2C73>,<U2C72>);/
(<U2C76>,<U2C75>);(<U2C81>,<U2C80>);(<U2C83>,<U2C82>);(<U2C85>,<U2C84>);/
(<U2C87>,<U2C86>);(<U2C89>,<U2C88>);(<U2C8B>,<U2C8A>);(<U2C8D>,<U2C8C>);/
(<U2C8F>,<U2C8E>);(<U2C91>,<U2C90>);(<U2C93>,<U2C92>);(<U2C95>,<U2C94>);/
@@ -1139,7 +1231,8 @@ tolower /
(<U0232>,<U0233>);(<U023A>,<U2C65>);(<U023B>,<U023C>);(<U023D>,<U019A>);/
(<U023E>,<U2C66>);(<U0241>,<U0242>);(<U0243>,<U0180>);(<U0244>,<U0289>);/
(<U0245>,<U028C>);(<U0246>,<U0247>);(<U0248>,<U0249>);(<U024A>,<U024B>);/
- (<U024C>,<U024D>);(<U024E>,<U024F>);(<U0386>,<U03AC>);(<U0388>,<U03AD>);/
+ (<U024C>,<U024D>);(<U024E>,<U024F>);(<U0370>,<U0371>);(<U0372>,<U0373>);/
+ (<U0376>,<U0377>);(<U0386>,<U03AC>);(<U0388>,<U03AD>);/
(<U0389>,<U03AE>);(<U038A>,<U03AF>);(<U038C>,<U03CC>);(<U038E>,<U03CD>);/
(<U038F>,<U03CE>);(<U0391>,<U03B1>);(<U0392>,<U03B2>);(<U0393>,<U03B3>);/
(<U0394>,<U03B4>);(<U0395>,<U03B5>);(<U0396>,<U03B6>);(<U0397>,<U03B7>);/
@@ -1186,6 +1279,8 @@ tolower /
(<U04FC>,<U04FD>);(<U04FE>,<U04FF>);(<U0500>,<U0501>);(<U0502>,<U0503>);/
(<U0504>,<U0505>);(<U0506>,<U0507>);(<U0508>,<U0509>);(<U050A>,<U050B>);/
(<U050C>,<U050D>);(<U050E>,<U050F>);(<U0510>,<U0511>);(<U0512>,<U0513>);/
+ (<U0514>,<U0515>);(<U0516>,<U0517>);(<U0518>,<U0519>);(<U051A>,<U051B>);/
+ (<U051C>,<U051D>);(<U051E>,<U051F>);(<U0520>,<U0521>);(<U0522>,<U0523>);/
(<U0531>,<U0561>);(<U0532>,<U0562>);(<U0533>,<U0563>);(<U0534>,<U0564>);/
(<U0535>,<U0565>);(<U0536>,<U0566>);(<U0537>,<U0567>);(<U0538>,<U0568>);/
(<U0539>,<U0569>);(<U053A>,<U056A>);(<U053B>,<U056B>);(<U053C>,<U056C>);/
@@ -1223,7 +1318,8 @@ tolower /
(<U1E78>,<U1E79>);(<U1E7A>,<U1E7B>);(<U1E7C>,<U1E7D>);(<U1E7E>,<U1E7F>);/
(<U1E80>,<U1E81>);(<U1E82>,<U1E83>);(<U1E84>,<U1E85>);(<U1E86>,<U1E87>);/
(<U1E88>,<U1E89>);(<U1E8A>,<U1E8B>);(<U1E8C>,<U1E8D>);(<U1E8E>,<U1E8F>);/
- (<U1E90>,<U1E91>);(<U1E92>,<U1E93>);(<U1E94>,<U1E95>);(<U1EA0>,<U1EA1>);/
+ (<U1E90>,<U1E91>);(<U1E92>,<U1E93>);(<U1E94>,<U1E95>);(<U1E9E>,<U00DF>);/
+ (<U1EA0>,<U1EA1>);/
(<U1EA2>,<U1EA3>);(<U1EA4>,<U1EA5>);(<U1EA6>,<U1EA7>);(<U1EA8>,<U1EA9>);/
(<U1EAA>,<U1EAB>);(<U1EAC>,<U1EAD>);(<U1EAE>,<U1EAF>);(<U1EB0>,<U1EB1>);/
(<U1EB2>,<U1EB3>);(<U1EB4>,<U1EB5>);(<U1EB6>,<U1EB7>);(<U1EB8>,<U1EB9>);/
@@ -1235,6 +1331,7 @@ tolower /
(<U1EE2>,<U1EE3>);(<U1EE4>,<U1EE5>);(<U1EE6>,<U1EE7>);(<U1EE8>,<U1EE9>);/
(<U1EEA>,<U1EEB>);(<U1EEC>,<U1EED>);(<U1EEE>,<U1EEF>);(<U1EF0>,<U1EF1>);/
(<U1EF2>,<U1EF3>);(<U1EF4>,<U1EF5>);(<U1EF6>,<U1EF7>);(<U1EF8>,<U1EF9>);/
+ (<U1EFA>,<U1EFB>);(<U1EFC>,<U1EFD>);(<U1EFE>,<U1EFF>);/
(<U1F08>,<U1F00>);(<U1F09>,<U1F01>);(<U1F0A>,<U1F02>);(<U1F0B>,<U1F03>);/
(<U1F0C>,<U1F04>);(<U1F0D>,<U1F05>);(<U1F0E>,<U1F06>);(<U1F0F>,<U1F07>);/
(<U1F18>,<U1F10>);(<U1F19>,<U1F11>);(<U1F1A>,<U1F12>);(<U1F1B>,<U1F13>);/
@@ -1284,7 +1381,8 @@ tolower /
(<U2C29>,<U2C59>);(<U2C2A>,<U2C5A>);(<U2C2B>,<U2C5B>);(<U2C2C>,<U2C5C>);/
(<U2C2D>,<U2C5D>);(<U2C2E>,<U2C5E>);(<U2C60>,<U2C61>);(<U2C62>,<U026B>);/
(<U2C63>,<U1D7D>);(<U2C64>,<U027D>);(<U2C67>,<U2C68>);(<U2C69>,<U2C6A>);/
- (<U2C6B>,<U2C6C>);(<U2C75>,<U2C76>);(<U2C80>,<U2C81>);(<U2C82>,<U2C83>);/
+ (<U2C6B>,<U2C6C>);(<U2C6D>,<U0251>);(<U2C6E>,<U0271>);(<U2C6F>,<U0250>);/
+ (<U2C72>,<U2C73>);(<U2C75>,<U2C76>);(<U2C80>,<U2C81>);(<U2C82>,<U2C83>);/
(<U2C84>,<U2C85>);(<U2C86>,<U2C87>);(<U2C88>,<U2C89>);(<U2C8A>,<U2C8B>);/
(<U2C8C>,<U2C8D>);(<U2C8E>,<U2C8F>);(<U2C90>,<U2C91>);(<U2C92>,<U2C93>);/
(<U2C94>,<U2C95>);(<U2C96>,<U2C97>);(<U2C98>,<U2C99>);(<U2C9A>,<U2C9B>);/
@@ -1431,7 +1529,9 @@ map "totitle"; /
(<U04F9>,<U04F8>);(<U04FB>,<U04FA>);(<U04FD>,<U04FC>);(<U04FF>,<U04FE>);/
(<U0501>,<U0500>);(<U0503>,<U0502>);(<U0505>,<U0504>);(<U0507>,<U0506>);/
(<U0509>,<U0508>);(<U050B>,<U050A>);(<U050D>,<U050C>);(<U050F>,<U050E>);/
- (<U0511>,<U0510>);(<U0513>,<U0512>);(<U0561>,<U0531>);(<U0562>,<U0532>);/
+ (<U0511>,<U0510>);(<U0513>,<U0512>);(<U0515>,<U0514>);(<U0517>,<U0516>);/
+ (<U0519>,<U0518>);(<U051B>,<U051A>);(<U051D>,<U051C>);(<U051F>,<U051E>);/
+ (<U0521>,<U0520>);(<U0523>,<U0522>);(<U0561>,<U0531>);(<U0562>,<U0532>);/
(<U0563>,<U0533>);(<U0564>,<U0534>);(<U0565>,<U0535>);(<U0566>,<U0536>);/
(<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);/
(<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);/
@@ -1574,35 +1674,40 @@ map "totitle"; /
% That is, all combining characters (level 2+3).
class "combining"; /
<U0300>..<U036F>;<U0483>..<U0486>;<U0488>..<U0489>;<U0591>..<U05BD>;/
- <U05BF>;<U05C1>..<U05C2>;<U05C4>..<U05C5>;<U05C7>;<U0610>..<U0615>;/
+ <U05BF>;<U05C1>..<U05C2>;<U05C4>..<U05C5>;<U05C7>;<U0610>..<U061A>;/
<U064B>..<U065E>;<U0670>;<U06D6>..<U06DC>;<U06DE>..<U06E4>;/
<U06E7>..<U06E8>;<U06EA>..<U06ED>;<U0711>;<U0730>..<U074A>;/
<U07A6>..<U07B0>;<U07EB>..<U07F3>;<U0901>..<U0903>;<U093C>;/
<U093E>..<U094D>;<U0951>..<U0954>;<U0962>..<U0963>;<U0981>..<U0983>;/
<U09BC>;<U09BE>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;/
<U09E2>..<U09E3>;<U0A01>..<U0A03>;<U0A3C>;<U0A3E>..<U0A42>;/
- <U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A70>..<U0A71>;<U0A81>..<U0A83>;/
+ <U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;<U0A70>..<U0A71>;/
+ <U0A75>;<U0A81>..<U0A83>;/
<U0ABC>;<U0ABE>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/
- <U0AE2>..<U0AE3>;<U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B43>;/
+ <U0AE2>..<U0AE3>;<U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B44>;/
<U0B47>..<U0B48>;<U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B82>;/
- <U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;/
+ <U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;/
<U0C01>..<U0C03>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;<U0C4A>..<U0C4D>;/
- <U0C55>..<U0C56>;<U0C82>..<U0C83>;<U0CBC>;<U0CBE>..<U0CC4>;/
+ <U0C55>..<U0C56>;<U0C62>..<U0C63>;<U0C82>..<U0C83>;<U0CBC>;/
+ <U0CBE>..<U0CC4>;/
<U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CE2>..<U0CE3>;/
- <U0D02>..<U0D03>;<U0D3E>..<U0D43>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;/
- <U0D57>;<U0D82>..<U0D83>;<U0DCA>;<U0DCF>..<U0DD4>;<U0DD6>;/
- <U0DD8>..<U0DDF>;<U0DF2>..<U0DF3>;<U0E31>;<U0E34>..<U0E3A>;/
+ <U0D02>..<U0D03>;<U0D3E>..<U0D44>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;/
+ <U0D57>;<U0D62>..<U0D63>;<U0D82>..<U0D83>;<U0DCA>;<U0DCF>..<U0DD4>;/
+ <U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF3>;<U0E31>;<U0E34>..<U0E3A>;/
<U0E47>..<U0E4E>;<U0EB1>;<U0EB4>..<U0EB9>;<U0EBB>..<U0EBC>;/
<U0EC8>..<U0ECD>;<U0F18>..<U0F19>;<U0F35>;<U0F37>;<U0F39>;/
<U0F3E>..<U0F3F>;<U0F71>..<U0F84>;<U0F86>..<U0F87>;<U0F90>..<U0F97>;/
- <U0F99>..<U0FBC>;<U0FC6>;<U102C>..<U1032>;<U1036>..<U1039>;/
- <U1056>..<U1059>;<U135F>;<U1712>..<U1714>;<U1732>..<U1734>;/
+ <U0F99>..<U0FBC>;<U0FC6>;<U102B>..<U103F>;/
+ <U1056>..<U1059>;<U105E>..<U1060>;<U1062>..<U1064>;<U1067>..<U106D>;/
+ <U1071>..<U1074>;<U1082>..<U108D>;<U108F>;/
+ <U135F>;<U1712>..<U1714>;<U1732>..<U1734>;/
<U1752>..<U1753>;<U1772>..<U1773>;<U17B6>..<U17D3>;<U17DD>;/
<U180B>..<U180D>;<U18A9>;<U1920>..<U192B>;<U1930>..<U193B>;/
<U19B0>..<U19C0>;<U19C8>..<U19C9>;<U1A17>..<U1A1B>;<U1B00>..<U1B04>;/
- <U1B34>..<U1B44>;<U1B6B>..<U1B73>;<U1DC0>..<U1DCA>;<U1DFE>..<U1DFF>;/
- <U20D0>..<U20EF>;<U302A>..<U302F>;<U3099>..<U309A>;<UA802>;<UA806>;/
- <UA80B>;<UA823>..<UA827>;<UFB1E>;<UFE00>..<UFE0F>;<UFE20>..<UFE23>;/
+ <U1B34>..<U1B44>;<U1B6B>..<U1B73>;<U1DC0>..<U1DE6>;<U1DFE>..<U1DFF>;/
+ <U20D0>..<U20F0>;<U2DE0>..<U2DFF>;<U302A>..<U302F>;<U3099>..<U309A>;/
+ <UA66F>..<UA672>;<UA67C>;<UA67D>;<UA802>;<UA806>;/
+ <UA80B>;<UA823>..<UA827>;<UFB1E>;<UFE00>..<UFE0F>;<UFE20>..<UFE26>;/
<U00010A01>..<U00010A03>;<U00010A05>..<U00010A06>;/
<U00010A0C>..<U00010A0F>;<U00010A38>..<U00010A3A>;<U00010A3F>;/
<U0001D165>..<U0001D169>;<U0001D16D>..<U0001D172>;/
@@ -1619,20 +1724,25 @@ class "combining_level3"; /
<U0962>..<U0963>;<U0981>..<U0983>;<U09BC>;<U09BE>..<U09C4>;/
<U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;<U09E2>..<U09E3>;/
<U0A01>..<U0A03>;<U0A3C>;<U0A3E>..<U0A42>;<U0A47>..<U0A48>;/
- <U0A4B>..<U0A4D>;<U0A70>..<U0A71>;<U0A81>..<U0A83>;<U0ABC>;/
+ <U0A4B>..<U0A4D>;<U0A51>;<U0A70>..<U0A71>;<U0375>;<U0A81>..<U0A83>;/
+ <U0ABC>;/
<U0ABE>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;<U0AE2>..<U0AE3>;/
- <U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B43>;<U0B47>..<U0B48>;/
+ <U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B44>;<U0B47>..<U0B48>;/
<U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B82>;<U0BBE>..<U0BC2>;/
- <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;<U0C01>..<U0C03>;/
+ <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;<U0C01>..<U0C03>;/
<U0C3E>..<U0C44>;<U0C46>..<U0C48>;<U0C4A>..<U0C4D>;<U0C55>..<U0C56>;/
+ <U0C62>..<U0C63>;/
<U0C82>..<U0C83>;<U0CBC>;<U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;/
<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CE2>..<U0CE3>;<U0D02>..<U0D03>;/
- <U0D3E>..<U0D43>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;/
+ <U0D3E>..<U0D44>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;/
+ <U0D62>..<U0D63>;/
<U0D82>..<U0D83>;<U0DCA>;<U0DCF>..<U0DD4>;<U0DD6>;<U0DD8>..<U0DDF>;/
<U0DF2>..<U0DF3>;<U0E31>;<U0E34>..<U0E3A>;<U0E47>..<U0E4E>;<U0EB1>;/
<U0EB4>..<U0EB9>;<U0EBB>..<U0EBC>;<U0EC8>..<U0ECD>;<U0F3E>..<U0F3F>;/
<U0F71>..<U0F81>;<U0F84>;<U0F90>..<U0F97>;<U0F99>..<U0FBC>;/
- <U102C>..<U1032>;<U1036>..<U1039>;<U1056>..<U1059>;<U1712>..<U1714>;/
+ <U102B>..<U103F>;<U1056>..<U1059>;<U105E>..<U1060>;<U1062>..<U1064>;/
+ <U1067>..<U106D>;/
+ <U1071>..<U1074>;<U1082>..<U108D>;<U108F>;<U1712>..<U1714>;/
<U1732>..<U1734>;<U1752>..<U1753>;<U1772>..<U1773>;<U17B6>..<U17D3>;/
<U180B>..<U180D>;<U1920>..<U192B>;<U1930>..<U1938>;<U19B0>..<U19C0>;/
<U19C8>..<U19C9>;<U1A19>..<U1A1B>;<U1B00>..<U1B04>;<U1B34>..<U1B44>;/
diff --git a/nscd/Makefile b/nscd/Makefile
index f83e40049a..74df824769 100644
--- a/nscd/Makefile
+++ b/nscd/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1998,2000,2002,2003,2004,2005,2006,2007
+# Copyright (C) 1998,2000,2002,2003,2004,2005,2006,2007,2008
# Free Software Foundation, Inc.
# This file is part of the GNU C Library.
@@ -90,7 +90,8 @@ CFLAGS-nscd_initgroups.c = -fexceptions
nscd-cflags = -DIS_IN_nscd=1 -D_FORTIFY_SOURCE=2
ifeq (yesyes,$(have-fpie)$(build-shared))
-nscd-cflags += -fpie
+#nscd-cflags += -fpie
+nscd-cflags += -fpic
endif
ifeq (yes,$(have-ssp))
nscd-cflags += -fstack-protector
diff --git a/nscd/aicache.c b/nscd/aicache.c
index a69a7781d3..2518f80128 100644
--- a/nscd/aicache.c
+++ b/nscd/aicache.c
@@ -1,5 +1,5 @@
/* Cache handling for host lookup.
- Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
@@ -262,7 +262,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
{
dataset = (struct dataset *) mempool_alloc (db,
total
- + req->key_len);
+ + req->key_len,
+ IDX_result_data);
if (dataset == NULL)
++db->head->addfailed;
}
@@ -338,7 +339,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
struct dataset *newp
= (struct dataset *) mempool_alloc (db,
total
- + req->key_len);
+ + req->key_len,
+ IDX_result_data);
if (__builtin_expect (newp != NULL, 1))
{
/* Adjust pointer into the memory block. */
@@ -424,7 +426,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
if (fd != -1)
TEMP_FAILURE_RETRY (send (fd, &notfound, total, MSG_NOSIGNAL));
- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len);
+ dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
+ IDX_result_data);
/* If we cannot permanently store the result, so be it. */
if (dataset != NULL)
{
diff --git a/nscd/cache.c b/nscd/cache.c
index 12c4f01e40..b1dc2c5052 100644
--- a/nscd/cache.c
+++ b/nscd/cache.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 1998, 1999, 2003-2006, 2007 Free Software Foundation, Inc.
+/* Copyright (c) 1998, 1999, 2003-2007, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -155,11 +155,16 @@ cache_add (int type, const void *key, size_t len, struct datahead *packet,
unsigned long int hash = __nis_hash (key, len) % table->head->module;
struct hashentry *newp;
- newp = mempool_alloc (table, sizeof (struct hashentry));
+ newp = mempool_alloc (table, sizeof (struct hashentry), IDX_record_data);
/* If we cannot allocate memory, just do not do anything. */
if (newp == NULL)
{
++table->head->addfailed;
+
+ /* Mark the in-flight memory as unused. */
+ for (enum in_flight idx = 0; idx < IDX_record_data; ++idx)
+ mem_in_flight.block[idx].dbidx = -1;
+
return -1;
}
@@ -215,6 +220,10 @@ cache_add (int type, const void *key, size_t len, struct datahead *packet,
else
next_wakeup = table->wakeup_time;
+ /* Mark the in-flight memory as unused. */
+ for (enum in_flight idx = 0; idx < IDX_last; ++idx)
+ mem_in_flight.block[idx].dbidx = -1;
+
return 0;
}
diff --git a/nscd/connections.c b/nscd/connections.c
index 5da5e5f08a..64c82cb892 100644
--- a/nscd/connections.c
+++ b/nscd/connections.c
@@ -225,6 +225,11 @@ static int sock;
/* Number of times clients had to wait. */
unsigned long int client_queued;
+/* Data structure for recording in-flight memory allocation. */
+__thread struct mem_in_flight mem_in_flight;
+/* Global list of the mem_in_flight variables of all the threads. */
+struct mem_in_flight *mem_in_flight_list;
+
ssize_t
writeall (int fd, const void *buf, size_t len)
@@ -964,7 +969,7 @@ send_ro_fd (struct database_dyn *db, char *key, int fd)
/* Handle new request. */
static void
-handle_request (int fd, request_header *req, void *key, uid_t uid)
+handle_request (int fd, request_header *req, void *key, uid_t uid, pid_t pid)
{
if (__builtin_expect (req->version, NSCD_VERSION) != NSCD_VERSION)
{
@@ -979,7 +984,31 @@ cannot handle old request version %d; current version is %d"),
if (selinux_enabled && nscd_request_avc_has_perm (fd, req->type) != 0)
{
if (debug_level > 0)
- dbg_log (_("request not handled due to missing permission"));
+ {
+#ifdef SO_PEERCRED
+# ifdef PATH_MAX
+ char buf[PATH_MAX];
+# else
+ char buf[4096];
+# endif
+
+ snprintf (buf, sizeof (buf), "/proc/%ld/exe", (long int) pid);
+ ssize_t n = readlink (buf, buf, sizeof (buf) - 1);
+
+ if (n <= 0)
+ dbg_log (_("\
+request from %ld not handled due to missing permission"), (long int) pid);
+ else
+ {
+ buf[n] = '\0';
+ dbg_log (_("\
+request from '%s' [%ld] not handled due to missing permission"),
+ buf, (long int) pid);
+ }
+#else
+ dbg_log (_("request not handled due to missing permission"));
+#endif
+ }
return;
}
@@ -1426,6 +1455,16 @@ nscd_run_worker (void *p)
{
char buf[256];
+ /* Initialize the memory-in-flight list. */
+ for (enum in_flight idx = 0; idx < IDX_last; ++idx)
+ mem_in_flight.block[idx].dbidx = -1;
+ /* And queue this threads structure. */
+ do
+ mem_in_flight.next = mem_in_flight_list;
+ while (atomic_compare_and_exchange_bool_acq (&mem_in_flight_list,
+ &mem_in_flight,
+ mem_in_flight.next) != 0);
+
/* Initial locking. */
pthread_mutex_lock (&readylist_lock);
@@ -1491,6 +1530,8 @@ nscd_run_worker (void *p)
if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &caller, &optlen) == 0)
pid = caller.pid;
}
+#else
+ const pid_t pid = 0;
#endif
/* It should not be possible to crash the nscd with a silly
@@ -1531,7 +1572,7 @@ handle_request: request received (Version = %d)"), req.version);
}
/* Phew, we got all the data, now process it. */
- handle_request (fd, &req, keybuf, uid);
+ handle_request (fd, &req, keybuf, uid, pid);
}
close_and_out:
diff --git a/nscd/grpcache.c b/nscd/grpcache.c
index 002f04fb3e..dbc406fcbd 100644
--- a/nscd/grpcache.c
+++ b/nscd/grpcache.c
@@ -1,5 +1,5 @@
/* Cache handling for group lookup.
- Copyright (C) 1998-2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1998-2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -113,7 +113,8 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
written = TEMP_FAILURE_RETRY (send (fd, &notfound, total,
MSG_NOSIGNAL));
- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len);
+ dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
+ IDX_result_data);
/* If we cannot permanently store the result, so be it. */
if (dataset != NULL)
{
@@ -204,7 +205,8 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
if (he == NULL)
{
- dataset = (struct dataset *) mempool_alloc (db, total + n);
+ dataset = (struct dataset *) mempool_alloc (db, total + n,
+ IDX_result_data);
if (dataset == NULL)
++db->head->addfailed;
}
@@ -274,7 +276,8 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
/* We have to create a new record. Just allocate
appropriate memory and copy it. */
struct dataset *newp
- = (struct dataset *) mempool_alloc (db, total + n);
+ = (struct dataset *) mempool_alloc (db, total + n,
+ IDX_result_data);
if (newp != NULL)
{
/* Adjust pointers into the memory block. */
diff --git a/nscd/hstcache.c b/nscd/hstcache.c
index cc041581e1..b93d418878 100644
--- a/nscd/hstcache.c
+++ b/nscd/hstcache.c
@@ -1,5 +1,5 @@
/* Cache handling for host lookup.
- Copyright (C) 1998-2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1998-2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -121,7 +121,8 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
written = TEMP_FAILURE_RETRY (send (fd, &notfound, total,
MSG_NOSIGNAL));
- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len);
+ dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
+ IDX_result_data);
/* If we cannot permanently store the result, so be it. */
if (dataset != NULL)
{
@@ -226,7 +227,8 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
if (he == NULL && h_addr_list_cnt == 1)
{
dataset = (struct dataset *) mempool_alloc (db,
- total + req->key_len);
+ total + req->key_len,
+ IDX_result_data);
if (dataset == NULL)
++db->head->addfailed;
}
@@ -312,7 +314,8 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
appropriate memory and copy it. */
struct dataset *newp
= (struct dataset *) mempool_alloc (db,
- total + req->key_len);
+ total + req->key_len,
+ IDX_result_data);
if (newp != NULL)
{
/* Adjust pointers into the memory block. */
diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c
index 157cd7860c..4d6513b5d7 100644
--- a/nscd/initgrcache.c
+++ b/nscd/initgrcache.c
@@ -1,5 +1,5 @@
/* Cache handling for host lookup.
- Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2006, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
@@ -197,7 +197,8 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
written = TEMP_FAILURE_RETRY (send (fd, &notfound, total,
MSG_NOSIGNAL));
- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len);
+ dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
+ IDX_result_data);
/* If we cannot permanently store the result, so be it. */
if (dataset != NULL)
{
@@ -259,7 +260,8 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
if (he == NULL)
{
dataset = (struct dataset *) mempool_alloc (db,
- total + req->key_len);
+ total + req->key_len,
+ IDX_result_data);
if (dataset == NULL)
++db->head->addfailed;
}
@@ -329,7 +331,8 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
/* We have to create a new record. Just allocate
appropriate memory and copy it. */
struct dataset *newp
- = (struct dataset *) mempool_alloc (db, total + req->key_len);
+ = (struct dataset *) mempool_alloc (db, total + req->key_len,
+ IDX_result_data);
if (newp != NULL)
{
/* Adjust pointer into the memory block. */
diff --git a/nscd/mem.c b/nscd/mem.c
index 048e3ddd32..14928d633c 100644
--- a/nscd/mem.c
+++ b/nscd/mem.c
@@ -1,5 +1,5 @@
/* Cache memory handling.
- Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2006, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
@@ -197,6 +197,31 @@ gc (struct database_dyn *db)
}
assert (cnt == db->head->nentries);
+ /* Go through the list of in-flight memory blocks. */
+ struct mem_in_flight *mrunp = mem_in_flight_list;
+ while (mrunp != NULL)
+ {
+ /* NB: There can be no race between this test and another thread
+ setting the field to the index we are looking for because
+ this would require the other thread to also have the memlock
+ for the database.
+
+ NB2: we do not have to look at latter blocks (higher indices) if
+ earlier blocks are not in flight. They are always allocated in
+ sequence. */
+ for (enum in_flight idx = IDX_result_data;
+ idx < IDX_last && mrunp->block[idx].dbidx == db - dbs; ++idx)
+ {
+ assert ((char *) mrunp->block[idx].blockaddr > db->data);
+ assert ((char *) mrunp->block[idx].blockaddr
+ + mrunp->block[0].blocklen <= db->data + db->memsize);
+ markrange (mark, (char *) mrunp->block[idx].blockaddr - db->data,
+ mrunp->block[idx].blocklen);
+ }
+
+ mrunp = mrunp->next;
+ }
+
/* Sort the entries by the addresses of the referenced data. All
the entries pointing to the same DATAHEAD object will have the
same key. Stability of the sorting is unimportant. */
@@ -503,7 +528,7 @@ gc (struct database_dyn *db)
void *
-mempool_alloc (struct database_dyn *db, size_t len)
+mempool_alloc (struct database_dyn *db, size_t len, enum in_flight idx)
{
/* Make sure LEN is a multiple of our maximum alignment so we can
keep track of used memory is multiples of this alignment value. */
@@ -567,6 +592,12 @@ mempool_alloc (struct database_dyn *db, size_t len)
db->head->first_free += len;
db->last_alloc_failed = false;
+
+ /* Remember that we have allocated this memory. */
+ assert (idx >= 0 && idx < IDX_last);
+ mem_in_flight.block[idx].dbidx = db - dbs;
+ mem_in_flight.block[idx].blocklen = len;
+ mem_in_flight.block[idx].blockaddr = res;
}
pthread_mutex_unlock (&db->memlock);
diff --git a/nscd/nscd.h b/nscd/nscd.h
index ec2d9454ca..cbea8e1a96 100644
--- a/nscd/nscd.h
+++ b/nscd/nscd.h
@@ -181,6 +181,31 @@ extern uid_t old_uid;
extern gid_t old_gid;
+/* Memory allocation in flight. Each thread can have a limited number
+ of allocation in flight. No need to create dynamic data
+ structures. We use fixed indices. */
+enum in_flight
+ {
+ IDX_result_data = 0,
+ /* Keep the IDX_record_data entry last at all times. */
+ IDX_record_data = 1,
+ IDX_last
+ };
+extern __thread struct mem_in_flight
+{
+ struct
+ {
+ int dbidx;
+ nscd_ssize_t blocklen;
+ void *blockaddr;
+ } block[IDX_last];
+
+ struct mem_in_flight *next;
+} mem_in_flight;
+/* Global list of the mem_in_flight variables of all the threads. */
+extern struct mem_in_flight *mem_in_flight_list;
+
+
/* Prototypes for global functions. */
/* nscd.c */
@@ -271,7 +296,8 @@ extern void readdservbyport (struct database_dyn *db, struct hashentry *he,
struct datahead *dh);
/* mem.c */
-extern void *mempool_alloc (struct database_dyn *db, size_t len);
+extern void *mempool_alloc (struct database_dyn *db, size_t len,
+ enum in_flight idx);
extern void gc (struct database_dyn *db);
diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c
index bc1b6bab2f..e1bf6e9518 100644
--- a/nscd/pwdcache.c
+++ b/nscd/pwdcache.c
@@ -1,5 +1,5 @@
/* Cache handling for passwd lookup.
- Copyright (C) 1998-2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1998-2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -120,7 +120,8 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
written = TEMP_FAILURE_RETRY (send (fd, &notfound, total,
MSG_NOSIGNAL));
- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len);
+ dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
+ IDX_result_data);
/* If we cannot permanently store the result, so be it. */
if (dataset != NULL)
{
@@ -199,7 +200,8 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
if (he == NULL)
{
- dataset = (struct dataset *) mempool_alloc (db, total + n);
+ dataset = (struct dataset *) mempool_alloc (db, total + n,
+ IDX_result_data);
if (dataset == NULL)
++db->head->addfailed;
}
@@ -270,7 +272,8 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
/* We have to create a new record. Just allocate
appropriate memory and copy it. */
struct dataset *newp
- = (struct dataset *) mempool_alloc (db, total + n);
+ = (struct dataset *) mempool_alloc (db, total + n,
+ IDX_result_data);
if (newp != NULL)
{
/* Adjust pointer into the memory block. */
diff --git a/nscd/servicescache.c b/nscd/servicescache.c
index e122cb3f16..164b6e298d 100644
--- a/nscd/servicescache.c
+++ b/nscd/servicescache.c
@@ -1,5 +1,5 @@
/* Cache handling for services lookup.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@drepper.com>, 2007.
@@ -103,7 +103,8 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
written = TEMP_FAILURE_RETRY (send (fd, &notfound, total,
MSG_NOSIGNAL));
- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len);
+ dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
+ IDX_result_data);
/* If we cannot permanently store the result, so be it. */
if (dataset != NULL)
{
@@ -190,7 +191,8 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
if (he == NULL)
{
dataset = (struct dataset *) mempool_alloc (db,
- total + req->key_len);
+ total + req->key_len,
+ IDX_result_data);
if (dataset == NULL)
++db->head->addfailed;
}
@@ -261,7 +263,8 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
/* We have to create a new record. Just allocate
appropriate memory and copy it. */
struct dataset *newp
- = (struct dataset *) mempool_alloc (db, total + req->key_len);
+ = (struct dataset *) mempool_alloc (db, total + req->key_len,
+ IDX_result_data);
if (newp != NULL)
{
/* Adjust pointers into the memory block. */