socsvn commit: r271972 - in soc2014/ghostmansd/head/lib: libc/locale libc/string libc/unicode libcolldb

ghostmansd at FreeBSD.org ghostmansd at FreeBSD.org
Wed Aug 6 01:01:12 UTC 2014


Author: ghostmansd
Date: Wed Aug  6 01:01:08 2014
New Revision: 271972
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=271972

Log:
  collation database implementation
  
  libcolldb provides both fast and clear interface to work
  with collation-specific data. It is used in the implementation
  of the Unicode Collation Algorithm. I was not sure where to put
  all these files (especially Python's bindings), so I put it
  to lib/libcolldb for some time.
  

Added:
  soc2014/ghostmansd/head/lib/libcolldb/
  soc2014/ghostmansd/head/lib/libcolldb/CLDR.src
  soc2014/ghostmansd/head/lib/libcolldb/DUCET.src
  soc2014/ghostmansd/head/lib/libcolldb/colldb.c
  soc2014/ghostmansd/head/lib/libcolldb/colldb.h
  soc2014/ghostmansd/head/lib/libcolldb/colldb.py
Deleted:
  soc2014/ghostmansd/head/lib/libc/unicode/ducet.h
Modified:
  soc2014/ghostmansd/head/lib/libc/locale/xlocale_private.h
  soc2014/ghostmansd/head/lib/libc/string/wcscoll.c
  soc2014/ghostmansd/head/lib/libc/string/wcsxfrm.c
  soc2014/ghostmansd/head/lib/libc/unicode/ccclass.h
  soc2014/ghostmansd/head/lib/libc/unicode/ucscoll.c
  soc2014/ghostmansd/head/lib/libc/unicode/ucsxfrm.c

Modified: soc2014/ghostmansd/head/lib/libc/locale/xlocale_private.h
==============================================================================
--- soc2014/ghostmansd/head/lib/libc/locale/xlocale_private.h	Wed Aug  6 00:36:04 2014	(r271971)
+++ soc2014/ghostmansd/head/lib/libc/locale/xlocale_private.h	Wed Aug  6 01:01:08 2014	(r271972)
@@ -42,6 +42,8 @@
 
 
 #ifdef _UNICODE_SOURCE
+#include <colldb.h>
+#include <stdint.h>
 #include <unistd.h>
 
 /* Unicode canonicalization. */
@@ -55,20 +57,8 @@
 #define	__UC_NFKC	4
 size_t	__ucsnorm(uint32_t*, const uint32_t*, size_t, int);
 
-/* Unicode collation. */
-struct __collation {
-	uint32_t hash;
-	size_t count;
-	const uint8_t *alternate;
-	const uint32_t *elements;
-};
-size_t	__ucsxfrm(uint32_t*, const uint32_t*, size_t,
-		  const struct __collation*, size_t);
-int	__ucscoll(const uint32_t*, const uint32_t*,
-		  const struct __collation*, size_t);
-
-/* Various helper functions. */
-uint32_t	__uchash(const uint32_t*, size_t);
+size_t	__ucsxfrm(uint32_t*, const uint32_t*, size_t, struct __collation*);
+int	__ucscoll(const uint32_t*, const uint32_t*, struct __collation*);
 #endif
 
 

Modified: soc2014/ghostmansd/head/lib/libc/string/wcscoll.c
==============================================================================
--- soc2014/ghostmansd/head/lib/libc/string/wcscoll.c	Wed Aug  6 00:36:04 2014	(r271971)
+++ soc2014/ghostmansd/head/lib/libc/string/wcscoll.c	Wed Aug  6 01:01:08 2014	(r271972)
@@ -68,13 +68,13 @@
 wcscoll_l(const wchar_t *ws1, const wchar_t *ws2, locale_t locale)
 {
 #ifdef _UNICODE_SOURCE
-	const __unichar_t *ucs1 = (const __unichar_t*)ws1;
-	const __unichar_t *ucs2 = (const __unichar_t*)ws2;
-	const struct __collation *table = 
+	const uint32_t *ucs1 = (const uint32_t*)ws1;
+	const uint32_t *ucs2 = (const uint32_t*)ws2;
+	const struct __collation *colltable = 
 		(const struct __collation*)locale->colltable;
-	size_t count = locale->collsize;
+	size_t collsize = locale->collsize;
 
-	return __ucscoll(ucs1, ucs2, table, size);
+	return __ucscoll(ucs1, ucs2, colltable, collsize);
 
 #else /* !_UNICODE_SOURCE */
 	char *mbs1, *mbs2;

Modified: soc2014/ghostmansd/head/lib/libc/string/wcsxfrm.c
==============================================================================
--- soc2014/ghostmansd/head/lib/libc/string/wcsxfrm.c	Wed Aug  6 00:36:04 2014	(r271971)
+++ soc2014/ghostmansd/head/lib/libc/string/wcsxfrm.c	Wed Aug  6 01:01:08 2014	(r271972)
@@ -43,13 +43,19 @@
 
 static char *__mbsdup(const wchar_t *);
 
-/*
- * Placeholder wcsxfrm() implementation. See wcscoll.c for a description of
- * the logic used.
- */
+
 size_t
 wcsxfrm_l(wchar_t * __restrict dest, const wchar_t * __restrict src, size_t len, locale_t locale)
 {
+#ifdef _UNICODE_SOURCE
+	uint32_t *udst = (uint32_t*)dest;
+	const uint32_t *usrc = (const uint32_t*)src;
+	const struct __collation *colltable = 
+		(const struct __collation*)locale->colltable;
+	size_t collsize = locale->collsize;
+
+	return __ucsxfrm(udst, usrc, len, colltable, collsize);
+#else
 	int prim, sec, l;
 	size_t slen;
 	char *mbsrc, *s, *ss;
@@ -100,7 +106,9 @@
 		*dest = L'\0';
 
 	return (slen);
+#endif
 }
+
 size_t
 wcsxfrm(wchar_t * __restrict dest, const wchar_t * __restrict src, size_t len)
 {

Modified: soc2014/ghostmansd/head/lib/libc/unicode/ccclass.h
==============================================================================
--- soc2014/ghostmansd/head/lib/libc/unicode/ccclass.h	Wed Aug  6 00:36:04 2014	(r271971)
+++ soc2014/ghostmansd/head/lib/libc/unicode/ccclass.h	Wed Aug  6 01:01:08 2014	(r271972)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  */
 
-#include "xlocale_private.h"
+// #include "xlocale_private.h"
 
 
 #define	COMBINING_CLASS_MIN	0x000300

Modified: soc2014/ghostmansd/head/lib/libc/unicode/ucscoll.c
==============================================================================
--- soc2014/ghostmansd/head/lib/libc/unicode/ucscoll.c	Wed Aug  6 00:36:04 2014	(r271971)
+++ soc2014/ghostmansd/head/lib/libc/unicode/ucscoll.c	Wed Aug  6 01:01:08 2014	(r271972)
@@ -31,7 +31,7 @@
 
 int
 __ucscoll(const uint32_t *lhs, const uint32_t *rhs,
-	  const struct __collation* tableptr, size_t tablesize)
+	  const struct __collation_data *colldata, size_t collsize)
 {
 	int error = 0;
 	int result = 0;
@@ -41,8 +41,8 @@
 	uint32_t *rcoll = NULL;
 
 	error = errno;
-	lsize = __ucsxfrm(NULL, lhs, 0, tableptr, tablesize);
-	rsize = __ucsxfrm(NULL, rhs, 0, tableptr, tablesize);
+	lsize = __ucsxfrm(NULL, lhs, 0, colldata, collsize);
+	rsize = __ucsxfrm(NULL, rhs, 0, colldata, collsize);
 	errno = error;
 	lcoll = malloc(lsize * sizeof(uint32_t));
 	rcoll = malloc(rsize * sizeof(uint32_t));

Modified: soc2014/ghostmansd/head/lib/libc/unicode/ucsxfrm.c
==============================================================================
--- soc2014/ghostmansd/head/lib/libc/unicode/ucsxfrm.c	Wed Aug  6 00:36:04 2014	(r271971)
+++ soc2014/ghostmansd/head/lib/libc/unicode/ucsxfrm.c	Wed Aug  6 01:01:08 2014	(r271972)
@@ -27,15 +27,11 @@
 #include <errno.h>
 #include <string.h>
 #include "xlocale_private.h"
-#include "ducet.h"
-
-
-#define	NFD_MAX	18
 
 
 size_t
 __ucsxfrm(uint32_t *buffer, const uint32_t *str, size_t size,
-	  const struct __collation* tableptr, size_t tablesize)
+	  const struct __collation *colldata, size_t collsize)
 {
 	int error = 0;
 	size_t mid = 0;
@@ -46,11 +42,11 @@
 	uint32_t hash = 0;
 	size_t reqsize = 0;
 	size_t normsize = 0;
-	size_t seqmax = NFD_MAX;
 	uint32_t *normstr = NULL;
 	const uint32_t *iter = str;
 	const int init_error = errno;
 	const uint32_t *elements = NULL;
+	size_t seqmax = 18; /* maximal decomposition length */
 	uint32_t generic[6] = {0x00, 0x00, 0x20, 0x01, 0x02, 0x01};
 
 	if ((str == NULL) || ((buffer != NULL) && (size == 0)))
@@ -58,11 +54,11 @@
 		errno = EINVAL;
 		return 0;
 	}
-	if (tableptr == NULL)
+	if (colldata == NULL)
 	{
-		tableptr = DUCET;
-		tablesize = DUCET_SIZE;
-		seqmax = DUCET_SEQ_MAX;
+		colldata = __DUCET_COLLDATA;
+		collsize = __DUCET_COLLSIZE;
+		seqmax = 3; /* max DUCET sequence length */
 	}
 	error = errno;
 	normsize = __ucsnorm(NULL, str, 0, __UC_NFD);
@@ -83,52 +79,73 @@
 
 	while (*iter != 0)
 	{
+
+		/*
+		 * Try to determine if collation table contains a sequence
+		 * which consists from 1 to 18 characters.
+		 * If DUCET is used, maximal count of characters is 3.
+		 */
 		for (shift = 1; shift != seqmax; ++shift)
 		{
 			low = 0;
 			elements = NULL;
-			high = tablesize;
+			high = collsize;
 			if (*(iter + shift - 1) == 0)
 				break;
 			hash = __uchash(iter, shift);
-
-			/* Try to find entry in the given collation table. */
 			while (low <= high)
 			{
 				mid = (low + ((high - low) / 2));
-				if (hash < tableptr[mid].hash)
+				if (hash < colldata[mid].hash)
 					high = (mid - 1);
-				else if (hash > tableptr[mid].hash)
+				else if (hash > colldata[mid].hash)
 					low = (mid + 1);
 				else
 				{
-					count = tableptr[mid].count;
-					elements = tableptr[mid].elements;
+					count = colldata[mid].count;
+					elements = colldata[mid].elements;
 					break;
 				}
 			}
+			if (elements != NULL)
+				break;
+		}
 
-			/* Try to find entry in the DUCET. */
-			if ((elements != NULL) && (tableptr != DUCET))
+		/*
+		 * If collation table does not contain a sequence and
+		 * current collation table is not DUCET, repeat the algorithm
+		 * for DUCET with limit up to 3 characters.
+		 */
+		if ((elements == NULL) && (colldata != __DUCET_COLLDATA))
+		{
+			for (shift = 1; shift != 3; ++shift)
 			{
+				low = 0;
+				elements = NULL;
+				collsize = __DUCET_COLLSIZE;
+				if (*(iter + shift - 1) == 0)
+					break;
+				hash = __uchash(iter, shift);
 				while (low <= high)
 				{
 					mid = (low + ((high - low) / 2));
-					if (hash < DUCET[mid].hash)
+					if (hash < __DUCET_COLLDATA[mid].hash)
 						high = (mid - 1);
-					else if (hash > DUCET[mid].hash)
+					else if (hash > __DUCET_COLLDATA[mid].hash)
 						low = (mid + 1);
 					else
 					{
-						count = DUCET[mid].count;
-						elements = DUCET[mid].elements;
+						count = __DUCET_COLLDATA[mid].count;
+						elements = __DUCET_COLLDATA[mid].elements;
 						break;
 					}
 				}
+				if (elements != NULL)
+					break;
 			}
-			if (elements != NULL)
-				break;
 		}
+
+		/* If no sequence was matched, generate default collation. */
 		if (elements == NULL)
 		{
 			shift = 1;
@@ -153,13 +170,15 @@
 		}
 		else
 			count *= 3;
+
+		/* Write found or generated sequence into the buffer. */
 		if (((reqsize + count) > size) && (buffer != NULL))
 		{
 			size = (size - reqsize - 1);
 			memcpy(buffer, elements, (size * sizeof(uint32_t)));
 			*(buffer + size) = 0;
 			free(normstr);
-			return __ucsxfrm(NULL, str, 0, tableptr, tablesize);
+			return __ucsxfrm(NULL, str, 0, colldata, collsize);
 		}
 		if (buffer != NULL)
 		{

Added: soc2014/ghostmansd/head/lib/libcolldb/CLDR.src
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2014/ghostmansd/head/lib/libcolldb/CLDR.src	Wed Aug  6 01:01:08 2014	(r271972)
@@ -0,0 +1,25152 @@
+# File:        allkeys_CLDR.txt
+# UCA Version: 6.2.0
+# UCD Version: 6.2.0
+# Generated:   2012-09-21, 19:14:26 GMT [MD]
+# For a description of the format and usage, see CollationAuxiliary.html
+
+ at version 6.2.0
+
+0000  ; [.0000.0000.0000.0000] # <NULL>
+0001  ; [.0000.0000.0000.0000] # <START OF HEADING>
+0002  ; [.0000.0000.0000.0000] # <START OF TEXT>
+0003  ; [.0000.0000.0000.0000] # <END OF TEXT>
+0004  ; [.0000.0000.0000.0000] # <END OF TRANSMISSION>
+0005  ; [.0000.0000.0000.0000] # <ENQUIRY>
+0006  ; [.0000.0000.0000.0000] # <ACKNOWLEDGE>
+0007  ; [.0000.0000.0000.0000] # <BELL>
+0008  ; [.0000.0000.0000.0000] # <BACKSPACE>
+000E  ; [.0000.0000.0000.0000] # <SHIFT OUT>
+000F  ; [.0000.0000.0000.0000] # <SHIFT IN>
+0010  ; [.0000.0000.0000.0000] # <DATA LINK ESCAPE>
+0011  ; [.0000.0000.0000.0000] # <DEVICE CONTROL ONE>
+0012  ; [.0000.0000.0000.0000] # <DEVICE CONTROL TWO>
+0013  ; [.0000.0000.0000.0000] # <DEVICE CONTROL THREE>
+0014  ; [.0000.0000.0000.0000] # <DEVICE CONTROL FOUR>
+0015  ; [.0000.0000.0000.0000] # <NEGATIVE ACKNOWLEDGE>
+0016  ; [.0000.0000.0000.0000] # <SYNCHRONOUS IDLE>
+0017  ; [.0000.0000.0000.0000] # <END OF TRANSMISSION BLOCK>
+0018  ; [.0000.0000.0000.0000] # <CANCEL>
+0019  ; [.0000.0000.0000.0000] # <END OF MEDIUM>
+001A  ; [.0000.0000.0000.0000] # <SUBSTITUTE>
+001B  ; [.0000.0000.0000.0000] # <ESCAPE>
+001C  ; [.0000.0000.0000.0000] # <INFORMATION SEPARATOR FOUR>
+001D  ; [.0000.0000.0000.0000] # <INFORMATION SEPARATOR THREE>
+001E  ; [.0000.0000.0000.0000] # <INFORMATION SEPARATOR TWO>
+001F  ; [.0000.0000.0000.0000] # <INFORMATION SEPARATOR ONE>
+007F  ; [.0000.0000.0000.0000] # <DELETE>
+0080  ; [.0000.0000.0000.0000] # <control>
+0081  ; [.0000.0000.0000.0000] # <control>
+0082  ; [.0000.0000.0000.0000] # <BREAK PERMITTED HERE>
+0083  ; [.0000.0000.0000.0000] # <NO BREAK HERE>
+0084  ; [.0000.0000.0000.0000] # <control>
+0086  ; [.0000.0000.0000.0000] # <START OF SELECTED AREA>
+0087  ; [.0000.0000.0000.0000] # <END OF SELECTED AREA>
+0088  ; [.0000.0000.0000.0000] # <CHARACTER TABULATION SET>
+0089  ; [.0000.0000.0000.0000] # <CHARACTER TABULATION WITH JUSTIFICATION>
+008A  ; [.0000.0000.0000.0000] # <LINE TABULATION SET>
+008B  ; [.0000.0000.0000.0000] # <PARTIAL LINE FORWARD>
+008C  ; [.0000.0000.0000.0000] # <PARTIAL LINE BACKWARD>
+008D  ; [.0000.0000.0000.0000] # <REVERSE LINE FEED>
+008E  ; [.0000.0000.0000.0000] # <SINGLE SHIFT TWO>
+008F  ; [.0000.0000.0000.0000] # <SINGLE SHIFT THREE>
+0090  ; [.0000.0000.0000.0000] # <DEVICE CONTROL STRING>
+0091  ; [.0000.0000.0000.0000] # <PRIVATE USE ONE>
+0092  ; [.0000.0000.0000.0000] # <PRIVATE USE TWO>
+0093  ; [.0000.0000.0000.0000] # <SET TRANSMIT STATE>
+0094  ; [.0000.0000.0000.0000] # <CANCEL CHARACTER>
+0095  ; [.0000.0000.0000.0000] # <MESSAGE WAITING>
+0096  ; [.0000.0000.0000.0000] # <START OF GUARDED AREA>
+0097  ; [.0000.0000.0000.0000] # <END OF GUARDED AREA>
+0098  ; [.0000.0000.0000.0000] # <START OF STRING>
+0099  ; [.0000.0000.0000.0000] # <control>
+009A  ; [.0000.0000.0000.0000] # <SINGLE CHARACTER INTRODUCER>
+009B  ; [.0000.0000.0000.0000] # <CONTROL SEQUENCE INTRODUCER>
+009C  ; [.0000.0000.0000.0000] # <STRING TERMINATOR>
+009D  ; [.0000.0000.0000.0000] # <OPERATING SYSTEM COMMAND>
+009E  ; [.0000.0000.0000.0000] # <PRIVACY MESSAGE>
+009F  ; [.0000.0000.0000.0000] # <APPLICATION PROGRAM COMMAND>
+00AD  ; [.0000.0000.0000.0000] # SOFT HYPHEN
+034F  ; [.0000.0000.0000.0000] # COMBINING GRAPHEME JOINER
+0488  ; [.0000.0000.0000.0000] # COMBINING CYRILLIC HUNDRED THOUSANDS SIGN
+0489  ; [.0000.0000.0000.0000] # COMBINING CYRILLIC MILLIONS SIGN
+0591  ; [.0000.0000.0000.0000] # HEBREW ACCENT ETNAHTA
+0592  ; [.0000.0000.0000.0000] # HEBREW ACCENT SEGOL
+0593  ; [.0000.0000.0000.0000] # HEBREW ACCENT SHALSHELET
+0594  ; [.0000.0000.0000.0000] # HEBREW ACCENT ZAQEF QATAN
+0595  ; [.0000.0000.0000.0000] # HEBREW ACCENT ZAQEF GADOL
+0596  ; [.0000.0000.0000.0000] # HEBREW ACCENT TIPEHA
+0597  ; [.0000.0000.0000.0000] # HEBREW ACCENT REVIA
+0598  ; [.0000.0000.0000.0000] # HEBREW ACCENT ZARQA
+0599  ; [.0000.0000.0000.0000] # HEBREW ACCENT PASHTA
+059A  ; [.0000.0000.0000.0000] # HEBREW ACCENT YETIV
+059B  ; [.0000.0000.0000.0000] # HEBREW ACCENT TEVIR
+059C  ; [.0000.0000.0000.0000] # HEBREW ACCENT GERESH
+059D  ; [.0000.0000.0000.0000] # HEBREW ACCENT GERESH MUQDAM
+059E  ; [.0000.0000.0000.0000] # HEBREW ACCENT GERSHAYIM
+059F  ; [.0000.0000.0000.0000] # HEBREW ACCENT QARNEY PARA
+05A0  ; [.0000.0000.0000.0000] # HEBREW ACCENT TELISHA GEDOLA
+05A1  ; [.0000.0000.0000.0000] # HEBREW ACCENT PAZER
+05A2  ; [.0000.0000.0000.0000] # HEBREW ACCENT ATNAH HAFUKH
+05A3  ; [.0000.0000.0000.0000] # HEBREW ACCENT MUNAH
+05A4  ; [.0000.0000.0000.0000] # HEBREW ACCENT MAHAPAKH
+05A5  ; [.0000.0000.0000.0000] # HEBREW ACCENT MERKHA
+05A6  ; [.0000.0000.0000.0000] # HEBREW ACCENT MERKHA KEFULA
+05A7  ; [.0000.0000.0000.0000] # HEBREW ACCENT DARGA
+05A8  ; [.0000.0000.0000.0000] # HEBREW ACCENT QADMA
+05A9  ; [.0000.0000.0000.0000] # HEBREW ACCENT TELISHA QETANA
+05AA  ; [.0000.0000.0000.0000] # HEBREW ACCENT YERAH BEN YOMO
+05AB  ; [.0000.0000.0000.0000] # HEBREW ACCENT OLE
+05AC  ; [.0000.0000.0000.0000] # HEBREW ACCENT ILUY
+05AD  ; [.0000.0000.0000.0000] # HEBREW ACCENT DEHI
+05AE  ; [.0000.0000.0000.0000] # HEBREW ACCENT ZINOR
+05AF  ; [.0000.0000.0000.0000] # HEBREW MARK MASORA CIRCLE
+05BD  ; [.0000.0000.0000.0000] # HEBREW POINT METEG
+05C4  ; [.0000.0000.0000.0000] # HEBREW MARK UPPER DOT
+05C5  ; [.0000.0000.0000.0000] # HEBREW MARK LOWER DOT
+0600  ; [.0000.0000.0000.0000] # ARABIC NUMBER SIGN
+0601  ; [.0000.0000.0000.0000] # ARABIC SIGN SANAH
+0602  ; [.0000.0000.0000.0000] # ARABIC FOOTNOTE MARKER
+0603  ; [.0000.0000.0000.0000] # ARABIC SIGN SAFHA
+0604  ; [.0000.0000.0000.0000] # ARABIC SIGN SAMVAT
+0610  ; [.0000.0000.0000.0000] # ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM
+0611  ; [.0000.0000.0000.0000] # ARABIC SIGN ALAYHE ASSALLAM
+0612  ; [.0000.0000.0000.0000] # ARABIC SIGN RAHMATULLAH ALAYHE
+0613  ; [.0000.0000.0000.0000] # ARABIC SIGN RADI ALLAHOU ANHU
+0614  ; [.0000.0000.0000.0000] # ARABIC SIGN TAKHALLUS
+0615  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH TAH
+0616  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH
+0617  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH ZAIN
+0618  ; [.0000.0000.0000.0000] # ARABIC SMALL FATHA
+0619  ; [.0000.0000.0000.0000] # ARABIC SMALL DAMMA
+061A  ; [.0000.0000.0000.0000] # ARABIC SMALL KASRA
+0640  ; [.0000.0000.0000.0000] # ARABIC TATWEEL
+06D6  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA
+06D7  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA
+06D8  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH MEEM INITIAL FORM
+06D9  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH LAM ALEF
+06DA  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH JEEM
+06DB  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH THREE DOTS
+06DC  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH SEEN
+06DD  ; [.0000.0000.0000.0000] # ARABIC END OF AYAH
+06DF  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH ROUNDED ZERO
+06E0  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO
+06E1  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH DOTLESS HEAD OF KHAH
+06E2  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH MEEM ISOLATED FORM
+06E3  ; [.0000.0000.0000.0000] # ARABIC SMALL LOW SEEN
+06E4  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH MADDA
+06E7  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH YEH
+06E8  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH NOON
+06EA  ; [.0000.0000.0000.0000] # ARABIC EMPTY CENTRE LOW STOP
+06EB  ; [.0000.0000.0000.0000] # ARABIC EMPTY CENTRE HIGH STOP
+06EC  ; [.0000.0000.0000.0000] # ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
+06ED  ; [.0000.0000.0000.0000] # ARABIC SMALL LOW MEEM
+070F  ; [.0000.0000.0000.0000] # SYRIAC ABBREVIATION MARK
+0740  ; [.0000.0000.0000.0000] # SYRIAC FEMININE DOT
+0743  ; [.0000.0000.0000.0000] # SYRIAC TWO VERTICAL DOTS ABOVE
+0744  ; [.0000.0000.0000.0000] # SYRIAC TWO VERTICAL DOTS BELOW
+0747  ; [.0000.0000.0000.0000] # SYRIAC OBLIQUE LINE ABOVE
+0748  ; [.0000.0000.0000.0000] # SYRIAC OBLIQUE LINE BELOW
+0749  ; [.0000.0000.0000.0000] # SYRIAC MUSIC
+074A  ; [.0000.0000.0000.0000] # SYRIAC BARREKH
+07FA  ; [.0000.0000.0000.0000] # NKO LAJANYALAN
+08EA  ; [.0000.0000.0000.0000] # ARABIC TONE ONE DOT ABOVE
+08EB  ; [.0000.0000.0000.0000] # ARABIC TONE TWO DOTS ABOVE
+08EC  ; [.0000.0000.0000.0000] # ARABIC TONE LOOP ABOVE
+08ED  ; [.0000.0000.0000.0000] # ARABIC TONE ONE DOT BELOW
+08EE  ; [.0000.0000.0000.0000] # ARABIC TONE TWO DOTS BELOW
+08EF  ; [.0000.0000.0000.0000] # ARABIC TONE LOOP BELOW
+08F3  ; [.0000.0000.0000.0000] # ARABIC SMALL HIGH WAW
+0951  ; [.0000.0000.0000.0000] # DEVANAGARI STRESS SIGN UDATTA
+0952  ; [.0000.0000.0000.0000] # DEVANAGARI STRESS SIGN ANUDATTA
+0F18  ; [.0000.0000.0000.0000] # TIBETAN ASTROLOGICAL SIGN -KHYUD PA
+0F19  ; [.0000.0000.0000.0000] # TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F35  ; [.0000.0000.0000.0000] # TIBETAN MARK NGAS BZUNG NYI ZLA
+0F37  ; [.0000.0000.0000.0000] # TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F3E  ; [.0000.0000.0000.0000] # TIBETAN SIGN YAR TSHES
+0F3F  ; [.0000.0000.0000.0000] # TIBETAN SIGN MAR TSHES
+0F82  ; [.0000.0000.0000.0000] # TIBETAN SIGN NYI ZLA NAA DA
+0F83  ; [.0000.0000.0000.0000] # TIBETAN SIGN SNA LDAN
+0F86  ; [.0000.0000.0000.0000] # TIBETAN SIGN LCI RTAGS
+0F87  ; [.0000.0000.0000.0000] # TIBETAN SIGN YANG RTAGS
+0FC6  ; [.0000.0000.0000.0000] # TIBETAN SYMBOL PADMA GDAN
+17B4  ; [.0000.0000.0000.0000] # KHMER VOWEL INHERENT AQ
+17B5  ; [.0000.0000.0000.0000] # KHMER VOWEL INHERENT AA
+17D3  ; [.0000.0000.0000.0000] # KHMER SIGN BATHAMASAT
+180A  ; [.0000.0000.0000.0000] # MONGOLIAN NIRUGU
+180B  ; [.0000.0000.0000.0000] # MONGOLIAN FREE VARIATION SELECTOR ONE
+180C  ; [.0000.0000.0000.0000] # MONGOLIAN FREE VARIATION SELECTOR TWO
+180D  ; [.0000.0000.0000.0000] # MONGOLIAN FREE VARIATION SELECTOR THREE
+1A7F  ; [.0000.0000.0000.0000] # TAI THAM COMBINING CRYPTOGRAMMIC DOT
+1B6B  ; [.0000.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING TEGEH
+1B6C  ; [.0000.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING ENDEP
+1B6D  ; [.0000.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING KEMPUL
+1B6E  ; [.0000.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING KEMPLI
+1B6F  ; [.0000.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING JEGOGAN
+1B70  ; [.0000.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN
+1B71  ; [.0000.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN
+1B72  ; [.0000.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING BENDE
+1B73  ; [.0000.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING GONG
+1CD0  ; [.0000.0000.0000.0000] # VEDIC TONE KARSHANA
+1CD1  ; [.0000.0000.0000.0000] # VEDIC TONE SHARA
+1CD2  ; [.0000.0000.0000.0000] # VEDIC TONE PRENKHA
+1CD3  ; [.0000.0000.0000.0000] # VEDIC SIGN NIHSHVASA
+1CD4  ; [.0000.0000.0000.0000] # VEDIC SIGN YAJURVEDIC MIDLINE SVARITA
+1CD5  ; [.0000.0000.0000.0000] # VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA
+1CD6  ; [.0000.0000.0000.0000] # VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA
+1CD7  ; [.0000.0000.0000.0000] # VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA
+1CD8  ; [.0000.0000.0000.0000] # VEDIC TONE CANDRA BELOW
+1CD9  ; [.0000.0000.0000.0000] # VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER
+1CDA  ; [.0000.0000.0000.0000] # VEDIC TONE DOUBLE SVARITA
+1CDB  ; [.0000.0000.0000.0000] # VEDIC TONE TRIPLE SVARITA
+1CDC  ; [.0000.0000.0000.0000] # VEDIC TONE KATHAKA ANUDATTA
+1CDD  ; [.0000.0000.0000.0000] # VEDIC TONE DOT BELOW
+1CDE  ; [.0000.0000.0000.0000] # VEDIC TONE TWO DOTS BELOW
+1CDF  ; [.0000.0000.0000.0000] # VEDIC TONE THREE DOTS BELOW
+1CE0  ; [.0000.0000.0000.0000] # VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
+1CE1  ; [.0000.0000.0000.0000] # VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
+1CE2  ; [.0000.0000.0000.0000] # VEDIC SIGN VISARGA SVARITA
+1CE3  ; [.0000.0000.0000.0000] # VEDIC SIGN VISARGA UDATTA
+1CE4  ; [.0000.0000.0000.0000] # VEDIC SIGN REVERSED VISARGA UDATTA
+1CE5  ; [.0000.0000.0000.0000] # VEDIC SIGN VISARGA ANUDATTA
+1CE6  ; [.0000.0000.0000.0000] # VEDIC SIGN REVERSED VISARGA ANUDATTA
+1CE7  ; [.0000.0000.0000.0000] # VEDIC SIGN VISARGA UDATTA WITH TAIL
+1CE8  ; [.0000.0000.0000.0000] # VEDIC SIGN VISARGA ANUDATTA WITH TAIL
+1CF4  ; [.0000.0000.0000.0000] # VEDIC TONE CANDRA ABOVE
+200B  ; [.0000.0000.0000.0000] # ZERO WIDTH SPACE
+200C  ; [.0000.0000.0000.0000] # ZERO WIDTH NON-JOINER
+200D  ; [.0000.0000.0000.0000] # ZERO WIDTH JOINER
+200E  ; [.0000.0000.0000.0000] # LEFT-TO-RIGHT MARK
+200F  ; [.0000.0000.0000.0000] # RIGHT-TO-LEFT MARK
+202A  ; [.0000.0000.0000.0000] # LEFT-TO-RIGHT EMBEDDING
+202B  ; [.0000.0000.0000.0000] # RIGHT-TO-LEFT EMBEDDING
+202C  ; [.0000.0000.0000.0000] # POP DIRECTIONAL FORMATTING
+202D  ; [.0000.0000.0000.0000] # LEFT-TO-RIGHT OVERRIDE
+202E  ; [.0000.0000.0000.0000] # RIGHT-TO-LEFT OVERRIDE
+2060  ; [.0000.0000.0000.0000] # WORD JOINER
+2061  ; [.0000.0000.0000.0000] # FUNCTION APPLICATION
+2062  ; [.0000.0000.0000.0000] # INVISIBLE TIMES
+2063  ; [.0000.0000.0000.0000] # INVISIBLE SEPARATOR
+2064  ; [.0000.0000.0000.0000] # INVISIBLE PLUS
+206A  ; [.0000.0000.0000.0000] # INHIBIT SYMMETRIC SWAPPING
+206B  ; [.0000.0000.0000.0000] # ACTIVATE SYMMETRIC SWAPPING
+206C  ; [.0000.0000.0000.0000] # INHIBIT ARABIC FORM SHAPING
+206D  ; [.0000.0000.0000.0000] # ACTIVATE ARABIC FORM SHAPING
+206E  ; [.0000.0000.0000.0000] # NATIONAL DIGIT SHAPES
+206F  ; [.0000.0000.0000.0000] # NOMINAL DIGIT SHAPES
+2D7F  ; [.0000.0000.0000.0000] # TIFINAGH CONSONANT JOINER
+A670  ; [.0000.0000.0000.0000] # COMBINING CYRILLIC TEN MILLIONS SIGN
+A671  ; [.0000.0000.0000.0000] # COMBINING CYRILLIC HUNDRED MILLIONS SIGN
+A672  ; [.0000.0000.0000.0000] # COMBINING CYRILLIC THOUSAND MILLIONS SIGN
+A8E0  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI DIGIT ZERO
+A8E1  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI DIGIT ONE
+A8E2  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI DIGIT TWO
+A8E3  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI DIGIT THREE
+A8E4  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI DIGIT FOUR
+A8E5  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI DIGIT FIVE
+A8E6  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI DIGIT SIX
+A8E7  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI DIGIT SEVEN
+A8E8  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI DIGIT EIGHT
+A8E9  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI DIGIT NINE
+A8EA  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI LETTER A
+A8EB  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI LETTER U
+A8EC  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI LETTER KA
+A8ED  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI LETTER NA
+A8EE  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI LETTER PA
+A8EF  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI LETTER RA
+A8F0  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI LETTER VI
+A8F1  ; [.0000.0000.0000.0000] # COMBINING DEVANAGARI SIGN AVAGRAHA
+FE00  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-1
+FE01  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-2
+FE02  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-3
+FE03  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-4
+FE04  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-5
+FE05  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-6
+FE06  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-7
+FE07  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-8
+FE08  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-9
+FE09  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-10
+FE0A  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-11
+FE0B  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-12
+FE0C  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-13
+FE0D  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-14
+FE0E  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-15
+FE0F  ; [.0000.0000.0000.0000] # VARIATION SELECTOR-16
+FE21  ; [.0000.0000.0000.0000] # COMBINING LIGATURE RIGHT HALF
+FE23  ; [.0000.0000.0000.0000] # COMBINING DOUBLE TILDE RIGHT HALF
+FE24  ; [.0000.0000.0000.0000] # COMBINING MACRON LEFT HALF
+FE25  ; [.0000.0000.0000.0000] # COMBINING MACRON RIGHT HALF
+FE26  ; [.0000.0000.0000.0000] # COMBINING CONJOINING MACRON
+FE73  ; [.0000.0000.0000.0000] # ARABIC TAIL FRAGMENT
+FEFF  ; [.0000.0000.0000.0000] # ZERO WIDTH NO-BREAK SPACE
+FFF9  ; [.0000.0000.0000.0000] # INTERLINEAR ANNOTATION ANCHOR
+FFFA  ; [.0000.0000.0000.0000] # INTERLINEAR ANNOTATION SEPARATOR
+FFFB  ; [.0000.0000.0000.0000] # INTERLINEAR ANNOTATION TERMINATOR
+110BD ; [.0000.0000.0000.0000] # KAITHI NUMBER SIGN
+1D165 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING STEM
+1D166 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+1D167 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING TREMOLO-1
+1D168 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING TREMOLO-2
+1D169 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING TREMOLO-3
+1D16D ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING AUGMENTATION DOT
+1D16E ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING FLAG-1
+1D16F ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING FLAG-2
+1D170 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING FLAG-3
+1D171 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING FLAG-4
+1D172 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING FLAG-5
+1D173 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL BEGIN BEAM
+1D174 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL END BEAM
+1D175 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL BEGIN TIE
+1D176 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL END TIE
+1D177 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL BEGIN SLUR
+1D178 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL END SLUR
+1D179 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL BEGIN PHRASE
+1D17A ; [.0000.0000.0000.0000] # MUSICAL SYMBOL END PHRASE
+1D17B ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING ACCENT
+1D17C ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING STACCATO
+1D17D ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING TENUTO
+1D17E ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING STACCATISSIMO
+1D17F ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING MARCATO
+1D180 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING MARCATO-STACCATO
+1D181 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING ACCENT-STACCATO
+1D182 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING LOURE
+1D185 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING DOIT
+1D186 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING RIP
+1D187 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING FLIP
+1D188 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING SMEAR
+1D189 ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING BEND
+1D18A ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING DOUBLE TONGUE
+1D18B ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+1D1AA ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING DOWN BOW
+1D1AB ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING UP BOW
+1D1AC ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING HARMONIC
+1D1AD ; [.0000.0000.0000.0000] # MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+1D242 ; [.0000.0000.0000.0000] # COMBINING GREEK MUSICAL TRISEME
+1D243 ; [.0000.0000.0000.0000] # COMBINING GREEK MUSICAL TETRASEME
+1D244 ; [.0000.0000.0000.0000] # COMBINING GREEK MUSICAL PENTASEME
+E0001 ; [.0000.0000.0000.0000] # LANGUAGE TAG
+E0020 ; [.0000.0000.0000.0000] # TAG SPACE
+E0021 ; [.0000.0000.0000.0000] # TAG EXCLAMATION MARK
+E0022 ; [.0000.0000.0000.0000] # TAG QUOTATION MARK
+E0023 ; [.0000.0000.0000.0000] # TAG NUMBER SIGN
+E0024 ; [.0000.0000.0000.0000] # TAG DOLLAR SIGN
+E0025 ; [.0000.0000.0000.0000] # TAG PERCENT SIGN
+E0026 ; [.0000.0000.0000.0000] # TAG AMPERSAND
+E0027 ; [.0000.0000.0000.0000] # TAG APOSTROPHE
+E0028 ; [.0000.0000.0000.0000] # TAG LEFT PARENTHESIS
+E0029 ; [.0000.0000.0000.0000] # TAG RIGHT PARENTHESIS
+E002A ; [.0000.0000.0000.0000] # TAG ASTERISK
+E002B ; [.0000.0000.0000.0000] # TAG PLUS SIGN
+E002C ; [.0000.0000.0000.0000] # TAG COMMA
+E002D ; [.0000.0000.0000.0000] # TAG HYPHEN-MINUS
+E002E ; [.0000.0000.0000.0000] # TAG FULL STOP
+E002F ; [.0000.0000.0000.0000] # TAG SOLIDUS
+E0030 ; [.0000.0000.0000.0000] # TAG DIGIT ZERO
+E0031 ; [.0000.0000.0000.0000] # TAG DIGIT ONE
+E0032 ; [.0000.0000.0000.0000] # TAG DIGIT TWO
+E0033 ; [.0000.0000.0000.0000] # TAG DIGIT THREE
+E0034 ; [.0000.0000.0000.0000] # TAG DIGIT FOUR
+E0035 ; [.0000.0000.0000.0000] # TAG DIGIT FIVE
+E0036 ; [.0000.0000.0000.0000] # TAG DIGIT SIX
+E0037 ; [.0000.0000.0000.0000] # TAG DIGIT SEVEN
+E0038 ; [.0000.0000.0000.0000] # TAG DIGIT EIGHT
+E0039 ; [.0000.0000.0000.0000] # TAG DIGIT NINE
+E003A ; [.0000.0000.0000.0000] # TAG COLON
+E003B ; [.0000.0000.0000.0000] # TAG SEMICOLON
+E003C ; [.0000.0000.0000.0000] # TAG LESS-THAN SIGN
+E003D ; [.0000.0000.0000.0000] # TAG EQUALS SIGN
+E003E ; [.0000.0000.0000.0000] # TAG GREATER-THAN SIGN
+E003F ; [.0000.0000.0000.0000] # TAG QUESTION MARK
+E0040 ; [.0000.0000.0000.0000] # TAG COMMERCIAL AT
+E0041 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER A
+E0042 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER B
+E0043 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER C
+E0044 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER D
+E0045 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER E
+E0046 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER F
+E0047 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER G
+E0048 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER H
+E0049 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER I
+E004A ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER J
+E004B ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER K
+E004C ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER L
+E004D ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER M
+E004E ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER N
+E004F ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER O
+E0050 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER P
+E0051 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER Q
+E0052 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER R
+E0053 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER S
+E0054 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER T
+E0055 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER U
+E0056 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER V
+E0057 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER W
+E0058 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER X
+E0059 ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER Y
+E005A ; [.0000.0000.0000.0000] # TAG LATIN CAPITAL LETTER Z
+E005B ; [.0000.0000.0000.0000] # TAG LEFT SQUARE BRACKET
+E005C ; [.0000.0000.0000.0000] # TAG REVERSE SOLIDUS
+E005D ; [.0000.0000.0000.0000] # TAG RIGHT SQUARE BRACKET
+E005E ; [.0000.0000.0000.0000] # TAG CIRCUMFLEX ACCENT
+E005F ; [.0000.0000.0000.0000] # TAG LOW LINE
+E0060 ; [.0000.0000.0000.0000] # TAG GRAVE ACCENT
+E0061 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER A
+E0062 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER B
+E0063 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER C
+E0064 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER D
+E0065 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER E
+E0066 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER F
+E0067 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER G
+E0068 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER H
+E0069 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER I
+E006A ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER J
+E006B ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER K
+E006C ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER L
+E006D ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER M
+E006E ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER N
+E006F ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER O
+E0070 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER P
+E0071 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER Q
+E0072 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER R
+E0073 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER S
+E0074 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER T
+E0075 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER U
+E0076 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER V
+E0077 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER W
+E0078 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER X
+E0079 ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER Y
+E007A ; [.0000.0000.0000.0000] # TAG LATIN SMALL LETTER Z
+E007B ; [.0000.0000.0000.0000] # TAG LEFT CURLY BRACKET
+E007C ; [.0000.0000.0000.0000] # TAG VERTICAL LINE
+E007D ; [.0000.0000.0000.0000] # TAG RIGHT CURLY BRACKET
+E007E ; [.0000.0000.0000.0000] # TAG TILDE
+E007F ; [.0000.0000.0000.0000] # CANCEL TAG
+E0100 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-17
+E0101 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-18
+E0102 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-19
+E0103 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-20
+E0104 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-21
+E0105 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-22
+E0106 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-23
+E0107 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-24
+E0108 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-25
+E0109 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-26
+E010A ; [.0000.0000.0000.0000] # VARIATION SELECTOR-27
+E010B ; [.0000.0000.0000.0000] # VARIATION SELECTOR-28
+E010C ; [.0000.0000.0000.0000] # VARIATION SELECTOR-29
+E010D ; [.0000.0000.0000.0000] # VARIATION SELECTOR-30
+E010E ; [.0000.0000.0000.0000] # VARIATION SELECTOR-31
+E010F ; [.0000.0000.0000.0000] # VARIATION SELECTOR-32
+E0110 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-33
+E0111 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-34
+E0112 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-35
+E0113 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-36
+E0114 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-37
+E0115 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-38
+E0116 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-39
+E0117 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-40
+E0118 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-41
+E0119 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-42
+E011A ; [.0000.0000.0000.0000] # VARIATION SELECTOR-43
+E011B ; [.0000.0000.0000.0000] # VARIATION SELECTOR-44
+E011C ; [.0000.0000.0000.0000] # VARIATION SELECTOR-45
+E011D ; [.0000.0000.0000.0000] # VARIATION SELECTOR-46
+E011E ; [.0000.0000.0000.0000] # VARIATION SELECTOR-47
+E011F ; [.0000.0000.0000.0000] # VARIATION SELECTOR-48
+E0120 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-49
+E0121 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-50
+E0122 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-51
+E0123 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-52
+E0124 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-53
+E0125 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-54
+E0126 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-55
+E0127 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-56
+E0128 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-57
+E0129 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-58
+E012A ; [.0000.0000.0000.0000] # VARIATION SELECTOR-59
+E012B ; [.0000.0000.0000.0000] # VARIATION SELECTOR-60
+E012C ; [.0000.0000.0000.0000] # VARIATION SELECTOR-61
+E012D ; [.0000.0000.0000.0000] # VARIATION SELECTOR-62
+E012E ; [.0000.0000.0000.0000] # VARIATION SELECTOR-63
+E012F ; [.0000.0000.0000.0000] # VARIATION SELECTOR-64
+E0130 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-65
+E0131 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-66
+E0132 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-67
+E0133 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-68
+E0134 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-69
+E0135 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-70
+E0136 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-71
+E0137 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-72
+E0138 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-73
+E0139 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-74
+E013A ; [.0000.0000.0000.0000] # VARIATION SELECTOR-75
+E013B ; [.0000.0000.0000.0000] # VARIATION SELECTOR-76
+E013C ; [.0000.0000.0000.0000] # VARIATION SELECTOR-77
+E013D ; [.0000.0000.0000.0000] # VARIATION SELECTOR-78
+E013E ; [.0000.0000.0000.0000] # VARIATION SELECTOR-79
+E013F ; [.0000.0000.0000.0000] # VARIATION SELECTOR-80
+E0140 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-81
+E0141 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-82
+E0142 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-83
+E0143 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-84
+E0144 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-85
+E0145 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-86
+E0146 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-87
+E0147 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-88
+E0148 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-89
+E0149 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-90
+E014A ; [.0000.0000.0000.0000] # VARIATION SELECTOR-91
+E014B ; [.0000.0000.0000.0000] # VARIATION SELECTOR-92
+E014C ; [.0000.0000.0000.0000] # VARIATION SELECTOR-93
+E014D ; [.0000.0000.0000.0000] # VARIATION SELECTOR-94
+E014E ; [.0000.0000.0000.0000] # VARIATION SELECTOR-95
+E014F ; [.0000.0000.0000.0000] # VARIATION SELECTOR-96
+E0150 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-97
+E0151 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-98
+E0152 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-99
+E0153 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-100
+E0154 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-101
+E0155 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-102
+E0156 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-103
+E0157 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-104
+E0158 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-105
+E0159 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-106
+E015A ; [.0000.0000.0000.0000] # VARIATION SELECTOR-107
+E015B ; [.0000.0000.0000.0000] # VARIATION SELECTOR-108
+E015C ; [.0000.0000.0000.0000] # VARIATION SELECTOR-109
+E015D ; [.0000.0000.0000.0000] # VARIATION SELECTOR-110
+E015E ; [.0000.0000.0000.0000] # VARIATION SELECTOR-111
+E015F ; [.0000.0000.0000.0000] # VARIATION SELECTOR-112
+E0160 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-113
+E0161 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-114
+E0162 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-115
+E0163 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-116
+E0164 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-117
+E0165 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-118
+E0166 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-119
+E0167 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-120
+E0168 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-121
+E0169 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-122
+E016A ; [.0000.0000.0000.0000] # VARIATION SELECTOR-123
+E016B ; [.0000.0000.0000.0000] # VARIATION SELECTOR-124
+E016C ; [.0000.0000.0000.0000] # VARIATION SELECTOR-125
+E016D ; [.0000.0000.0000.0000] # VARIATION SELECTOR-126
+E016E ; [.0000.0000.0000.0000] # VARIATION SELECTOR-127
+E016F ; [.0000.0000.0000.0000] # VARIATION SELECTOR-128
+E0170 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-129
+E0171 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-130
+E0172 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-131
+E0173 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-132
+E0174 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-133
+E0175 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-134
+E0176 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-135
+E0177 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-136
+E0178 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-137
+E0179 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-138
+E017A ; [.0000.0000.0000.0000] # VARIATION SELECTOR-139
+E017B ; [.0000.0000.0000.0000] # VARIATION SELECTOR-140
+E017C ; [.0000.0000.0000.0000] # VARIATION SELECTOR-141
+E017D ; [.0000.0000.0000.0000] # VARIATION SELECTOR-142
+E017E ; [.0000.0000.0000.0000] # VARIATION SELECTOR-143
+E017F ; [.0000.0000.0000.0000] # VARIATION SELECTOR-144
+E0180 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-145
+E0181 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-146
+E0182 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-147
+E0183 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-148
+E0184 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-149
+E0185 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-150
+E0186 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-151
+E0187 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-152
+E0188 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-153
+E0189 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-154
+E018A ; [.0000.0000.0000.0000] # VARIATION SELECTOR-155
+E018B ; [.0000.0000.0000.0000] # VARIATION SELECTOR-156
+E018C ; [.0000.0000.0000.0000] # VARIATION SELECTOR-157
+E018D ; [.0000.0000.0000.0000] # VARIATION SELECTOR-158
+E018E ; [.0000.0000.0000.0000] # VARIATION SELECTOR-159
+E018F ; [.0000.0000.0000.0000] # VARIATION SELECTOR-160
+E0190 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-161
+E0191 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-162
+E0192 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-163
+E0193 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-164
+E0194 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-165
+E0195 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-166
+E0196 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-167
+E0197 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-168
+E0198 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-169
+E0199 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-170
+E019A ; [.0000.0000.0000.0000] # VARIATION SELECTOR-171
+E019B ; [.0000.0000.0000.0000] # VARIATION SELECTOR-172
+E019C ; [.0000.0000.0000.0000] # VARIATION SELECTOR-173
+E019D ; [.0000.0000.0000.0000] # VARIATION SELECTOR-174
+E019E ; [.0000.0000.0000.0000] # VARIATION SELECTOR-175
+E019F ; [.0000.0000.0000.0000] # VARIATION SELECTOR-176
+E01A0 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-177
+E01A1 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-178
+E01A2 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-179
+E01A3 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-180
+E01A4 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-181
+E01A5 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-182
+E01A6 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-183
+E01A7 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-184
+E01A8 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-185
+E01A9 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-186
+E01AA ; [.0000.0000.0000.0000] # VARIATION SELECTOR-187
+E01AB ; [.0000.0000.0000.0000] # VARIATION SELECTOR-188
+E01AC ; [.0000.0000.0000.0000] # VARIATION SELECTOR-189
+E01AD ; [.0000.0000.0000.0000] # VARIATION SELECTOR-190
+E01AE ; [.0000.0000.0000.0000] # VARIATION SELECTOR-191
+E01AF ; [.0000.0000.0000.0000] # VARIATION SELECTOR-192
+E01B0 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-193
+E01B1 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-194
+E01B2 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-195
+E01B3 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-196
+E01B4 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-197
+E01B5 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-198
+E01B6 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-199
+E01B7 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-200
+E01B8 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-201
+E01B9 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-202
+E01BA ; [.0000.0000.0000.0000] # VARIATION SELECTOR-203
+E01BB ; [.0000.0000.0000.0000] # VARIATION SELECTOR-204
+E01BC ; [.0000.0000.0000.0000] # VARIATION SELECTOR-205
+E01BD ; [.0000.0000.0000.0000] # VARIATION SELECTOR-206
+E01BE ; [.0000.0000.0000.0000] # VARIATION SELECTOR-207
+E01BF ; [.0000.0000.0000.0000] # VARIATION SELECTOR-208
+E01C0 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-209
+E01C1 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-210
+E01C2 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-211
+E01C3 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-212
+E01C4 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-213
+E01C5 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-214
+E01C6 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-215
+E01C7 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-216
+E01C8 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-217
+E01C9 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-218
+E01CA ; [.0000.0000.0000.0000] # VARIATION SELECTOR-219
+E01CB ; [.0000.0000.0000.0000] # VARIATION SELECTOR-220
+E01CC ; [.0000.0000.0000.0000] # VARIATION SELECTOR-221
+E01CD ; [.0000.0000.0000.0000] # VARIATION SELECTOR-222
+E01CE ; [.0000.0000.0000.0000] # VARIATION SELECTOR-223
+E01CF ; [.0000.0000.0000.0000] # VARIATION SELECTOR-224
+E01D0 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-225
+E01D1 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-226
+E01D2 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-227
+E01D3 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-228
+E01D4 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-229
+E01D5 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-230
+E01D6 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-231
+E01D7 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-232
+E01D8 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-233
+E01D9 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-234
+E01DA ; [.0000.0000.0000.0000] # VARIATION SELECTOR-235
+E01DB ; [.0000.0000.0000.0000] # VARIATION SELECTOR-236
+E01DC ; [.0000.0000.0000.0000] # VARIATION SELECTOR-237
+E01DD ; [.0000.0000.0000.0000] # VARIATION SELECTOR-238
+E01DE ; [.0000.0000.0000.0000] # VARIATION SELECTOR-239
+E01DF ; [.0000.0000.0000.0000] # VARIATION SELECTOR-240
+E01E0 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-241
+E01E1 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-242
+E01E2 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-243
+E01E3 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-244
+E01E4 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-245
+E01E5 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-246
+E01E6 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-247
+E01E7 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-248
+E01E8 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-249
+E01E9 ; [.0000.0000.0000.0000] # VARIATION SELECTOR-250
+E01EA ; [.0000.0000.0000.0000] # VARIATION SELECTOR-251
+E01EB ; [.0000.0000.0000.0000] # VARIATION SELECTOR-252
+E01EC ; [.0000.0000.0000.0000] # VARIATION SELECTOR-253
+E01ED ; [.0000.0000.0000.0000] # VARIATION SELECTOR-254
+E01EE ; [.0000.0000.0000.0000] # VARIATION SELECTOR-255
+E01EF ; [.0000.0000.0000.0000] # VARIATION SELECTOR-256
+0009  ; [*0100.0020.0002.0009] # <CHARACTER TABULATION>
+000A  ; [*0101.0020.0002.000A] # <LINE FEED (LF)>
+000B  ; [*0102.0020.0002.000B] # <LINE TABULATION>
+000C  ; [*0103.0020.0002.000C] # <FORM FEED (FF)>
+000D  ; [*0104.0020.0002.000D] # <CARRIAGE RETURN (CR)>
+0085  ; [*0105.0020.0002.0085] # <NEXT LINE (NEL)>
+180E  ; [*0106.0020.0002.180E] # MONGOLIAN VOWEL SEPARATOR
+2028  ; [*0107.0020.0002.2028] # LINE SEPARATOR
+2029  ; [*0108.0020.0002.2029] # PARAGRAPH SEPARATOR
+0020  ; [*0109.0020.0002.0020] # SPACE
+00A0  ; [*0109.0020.001B.00A0] # NO-BREAK SPACE
+1680  ; [*0109.0020.0004.1680] # OGHAM SPACE MARK
+2000  ; [*0109.0020.0004.2000] # EN QUAD
+2002  ; [*0109.0020.0004.2002] # EN SPACE
+2001  ; [*0109.0020.0004.2001] # EM QUAD
+2003  ; [*0109.0020.0004.2003] # EM SPACE
+2004  ; [*0109.0020.0004.2004] # THREE-PER-EM SPACE
+2005  ; [*0109.0020.0004.2005] # FOUR-PER-EM SPACE
+2006  ; [*0109.0020.0004.2006] # SIX-PER-EM SPACE
+2007  ; [*0109.0020.001B.2007] # FIGURE SPACE
+2008  ; [*0109.0020.0004.2008] # PUNCTUATION SPACE
+2009  ; [*0109.0020.0004.2009] # THIN SPACE
+200A  ; [*0109.0020.0004.200A] # HAIR SPACE
+202F  ; [*0109.0020.001B.202F] # NARROW NO-BREAK SPACE
+205F  ; [*0109.0020.0004.205F] # MEDIUM MATHEMATICAL SPACE
+3000  ; [*0109.0020.0003.3000] # IDEOGRAPHIC SPACE
+203E  ; [*010A.0020.0002.203E] # OVERLINE
+FE49  ; [*010A.0020.0004.FE49] # DASHED OVERLINE
+FE4A  ; [*010A.0020.0004.FE4A] # CENTRELINE OVERLINE
+FE4B  ; [*010A.0020.0004.FE4B] # WAVY OVERLINE
+FE4C  ; [*010A.0020.0004.FE4C] # DOUBLE WAVY OVERLINE
+005F  ; [*010B.0020.0002.005F] # LOW LINE
+FE33  ; [*010B.0020.0016.FE33] # PRESENTATION FORM FOR VERTICAL LOW LINE
+FE34  ; [*010B.0020.0016.FE34] # PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE4D  ; [*010B.0020.0004.FE4D] # DASHED LOW LINE
+FE4E  ; [*010B.0020.0004.FE4E] # CENTRELINE LOW LINE
+FE4F  ; [*010B.0020.0004.FE4F] # WAVY LOW LINE
+FF3F  ; [*010B.0020.0003.FF3F] # FULLWIDTH LOW LINE
+2017  ; [*010C.0020.0002.2017] # DOUBLE LOW LINE
+002D  ; [*010D.0020.0002.002D] # HYPHEN-MINUS
+FE63  ; [*010D.0020.000F.FE63] # SMALL HYPHEN-MINUS
+FF0D  ; [*010D.0020.0003.FF0D] # FULLWIDTH HYPHEN-MINUS
+058A  ; [*010E.0020.0002.058A] # ARMENIAN HYPHEN
+1400  ; [*010F.0020.0002.1400] # CANADIAN SYLLABICS HYPHEN
+1B60  ; [*0110.0020.0002.1B60] # BALINESE PAMENENG
+1806  ; [*0111.0020.0002.1806] # MONGOLIAN TODO SOFT HYPHEN
+1807  ; [*0112.0020.0002.1807] # MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
+2010  ; [*0113.0020.0002.2010] # HYPHEN
+2011  ; [*0113.0020.001B.2011] # NON-BREAKING HYPHEN
+2012  ; [*0114.0020.0002.2012] # FIGURE DASH
+2013  ; [*0115.0020.0002.2013] # EN DASH
+FE32  ; [*0115.0020.0016.FE32] # PRESENTATION FORM FOR VERTICAL EN DASH
+2014  ; [*0116.0020.0002.2014] # EM DASH
+FE31  ; [*0116.0020.0016.FE31] # PRESENTATION FORM FOR VERTICAL EM DASH
+FE58  ; [*0116.0020.000F.FE58] # SMALL EM DASH
+2015  ; [*0117.0020.0002.2015] # HORIZONTAL BAR
+2E3A  ; [*0118.0020.0002.2E3A] # TWO-EM DASH

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-soc-all mailing list