###################
# Copyright (C) 2003, International Business Machines
# Corporation and others.  All Rights Reserved.
# WARNING: This table is generated by filterRFC3454.pl tool. DO NOT EDIT 
#################

# code points from      Table C.1.1 

0020; SPACE

# Total code points 1

###################
# WARNING: This table is generated by filterRFC3454.pl tool. DO NOT EDIT 
#################

# code points from      Table C.1.2 

00A0; NO..BREAK SPACE
1680; OGHAM SPACE MARK
2000; EN QUAD
2001; EM QUAD
2002; EN SPACE
2003; EM SPACE
2004; THREE..PER-EM SPACE
2005; FOUR..PER-EM SPACE
2006; SIX..PER-EM SPACE
2007; FIGURE SPACE
2008; PUNCTUATION SPACE
2009; THIN SPACE
200A; HAIR SPACE
200B; ZERO WIDTH SPACE
202F; NARROW NO..BREAK SPACE
205F; MEDIUM MATHEMATICAL SPACE
3000; IDEOGRAPHIC SPACE

# Total code points 13

###################
# WARNING: This table is generated by filterRFC3454.pl tool. DO NOT EDIT 
#################

# code points from      Table C.2.1 

0000..001F; [CONTROL CHARACTERS]
007F; DELETE

# Total code points 18

###################
# WARNING: This table is generated by filterRFC3454.pl tool. DO NOT EDIT 
#################

# code points from      Table C.2.2 

0080..009F; [CONTROL CHARACTERS]
06DD; ARABIC END OF AYAH
070F; SYRIAC ABBREVIATION MARK
180E; MONGOLIAN VOWEL SEPARATOR
200C; ZERO WIDTH NON..JOINER
200D; ZERO WIDTH JOINER
2028; LINE SEPARATOR
2029; PARAGRAPH SEPARATOR
2060; WORD JOINER
2061; FUNCTION APPLICATION
2062; INVISIBLE TIMES
2063; INVISIBLE SEPARATOR
206A..206F; [CONTROL CHARACTERS]
FEFF; ZERO WIDTH NO..BREAK SPACE
FFF9..FFFC; [CONTROL CHARACTERS]
1D173..1D17A; [MUSICAL CONTROL CHARACTERS]

# Total code points 29

###################
# WARNING: This table is generated by filterRFC3454.pl tool. DO NOT EDIT 
#################

# code points from      Table C.3 

E000..F8FF; [PRIVATE USE, PLANE 0]
F0000..FFFFD; [PRIVATE USE, PLANE 15]
100000..10FFFD; [PRIVATE USE, PLANE 16]

# Total code points 2051

###################
# WARNING: This table is generated by filterRFC3454.pl tool. DO NOT EDIT 
#################

# code points from      Table C.4 

FDD0..FDEF; [NONCHARACTER CODE POINTS]
FFFE..FFFF; [NONCHARACTER CODE POINTS]
1FFFE..1FFFF; [NONCHARACTER CODE POINTS]
2FFFE..2FFFF; [NONCHARACTER CODE POINTS]
3FFFE..3FFFF; [NONCHARACTER CODE POINTS]
4FFFE..4FFFF; [NONCHARACTER CODE POINTS]
5FFFE..5FFFF; [NONCHARACTER CODE POINTS]
6FFFE..6FFFF; [NONCHARACTER CODE POINTS]
7FFFE..7FFFF; [NONCHARACTER CODE POINTS]
8FFFE..8FFFF; [NONCHARACTER CODE POINTS]
9FFFE..9FFFF; [NONCHARACTER CODE POINTS]
AFFFE..AFFFF; [NONCHARACTER CODE POINTS]
BFFFE..BFFFF; [NONCHARACTER CODE POINTS]
CFFFE..CFFFF; [NONCHARACTER CODE POINTS]
DFFFE..DFFFF; [NONCHARACTER CODE POINTS]
EFFFE..EFFFF; [NONCHARACTER CODE POINTS]
FFFFE..FFFFF; [NONCHARACTER CODE POINTS]
10FFFE..10FFFF; [NONCHARACTER CODE POINTS]

# Total code points 18

###################
# WARNING: This table is generated by filterRFC3454.pl tool. DO NOT EDIT 
#################

# code points from      Table C.5 

D800..DFFF; [SURROGATE CODES]

# Total code points 0

###################
# WARNING: This table is generated by filterRFC3454.pl tool. DO NOT EDIT 
#################

# code points from      Table C.6 

FFF9; INTERLINEAR ANNOTATION ANCHOR
FFFA; INTERLINEAR ANNOTATION SEPARATOR
FFFB; INTERLINEAR ANNOTATION TERMINATOR
FFFC; OBJECT REPLACEMENT CHARACTER
FFFD; REPLACEMENT CHARACTER

# Total code points 5

###################
# WARNING: This table is generated by filterRFC3454.pl tool. DO NOT EDIT 
#################

# code points from      Table C.7 

2FF0..2FFB; [IDEOGRAPHIC DESCRIPTION CHARACTERS]

# Total code points 1

###################
# WARNING: This table is generated by filterRFC3454.pl tool. DO NOT EDIT 
#################

# code points from      Table C.8 

0340; COMBINING GRAVE TONE MARK
0341; COMBINING ACUTE TONE MARK
200E; LEFT..TO-RIGHT MARK
200F; RIGHT..TO-LEFT MARK
202A; LEFT..TO-RIGHT EMBEDDING
202B; RIGHT..TO-LEFT EMBEDDING
202C; POP DIRECTIONAL FORMATTING
202D; LEFT..TO-RIGHT OVERRIDE
202E; RIGHT..TO-LEFT OVERRIDE
206A; INHIBIT SYMMETRIC SWAPPING
206B; ACTIVATE SYMMETRIC SWAPPING
206C; INHIBIT ARABIC FORM SHAPING
206D; ACTIVATE ARABIC FORM SHAPING
206E; NATIONAL DIGIT SHAPES
206F; NOMINAL DIGIT SHAPES

# Total code points 9

###################
# WARNING: This table is generated by filterRFC3454.pl tool. DO NOT EDIT 
#################

# code points from      Table C.9 

E0001; LANGUAGE TAG
E0020..E007F; [TAGGING CHARACTERS]

# Total code points 82

