# Copyright 2001-2010 Unicode, Inc.
# 
# Disclaimer
# 
# This source code is provided as is by Unicode, Inc. No claims are
# made as to fitness for any particular purpose. No warranties of any
# kind are expressed or implied. The recipient agrees to determine
# applicability of information provided. If this file has been
# purchased on magnetic or optical media from Unicode, Inc., the
# sole remedy for any claim will be exchange of defective media
# within 90 days of receipt.
# 
# Limitations on Rights to Redistribute This Code
# 
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form
# for internal or external distribution as long as this notice
# remains attached.

### Custom Normalization mappings for UTR#30 
### (http://www.unicode.org/reports/tr30/tr30-4.html)
###
### Created from UTR#30 HanRadicalFolding.txt
###

#### WARNING ####
#### Rule: lines direct content generation.
#### All non-comments will be REMOVED when this file's contents
#### are generated by 'ant gen-utr30-data-files'.
#### Use "# Rule: verbatim" to keep non-comments up until
#### the next "# Rule:" line.
#### WARNING ####

# Rule: verbatim

# CJK Radicals
2E81>5382
2E82>4E5B
2E83>4E5A
2E84>4E59
2E85>4EBB
2E86>5182
2E87>51E0
2E88>5200
2E89>5202
2E8A>535C
2E8B>353E
2E8C>5C0F
2E8D>5C0F
2E8E>5C22
2E8F>5C23
2E90>5C22
2E91>5C23
2E92>5DF3
2E93>5E7A
2E94>5F51
2E95>5F50
2E96>5FC4
2E97>5FC3
2E98>624C
2E99>6535
2E9B>65E1
2E9C>65E5
2E9D>6708
2E9E>6B7A
2E9F>6BCD
2EA0>6C11
2EA1>6C35
2EA2>6C3A
2EA3>706C
2EA4>722B
2EA5>722B
2EA6>4E2C
2EA7>725B
2EA8>72AD
2EA9>738B
2EAA>758B
2EAB>76EE
2EAC>793A
2EAD>793B
2EAE>7AF9
2EAF>7CF9
2EB0>7E9F
2EB1>7F53
2EB2>7F52
2EB3>7F51
2EB4>7F51
2EB5>2626B
2EB6>7F8A
2EB7>7F8A
2EB8>7F8B
2EB9>8002
2EBA>8080
2EBB>807F
2EBC>8089
2EBD>81FC
2EBE>8279
2EBF>8279
2EC0>8279
2EC1>864E
2EC2>8864
2EC3>8980
2EC4>897F
2EC5>89C1
2EC6>89D2
2EC7>278B2
2EC8>8BA0
2EC9>8D1D
2ECA>8DB3
2ECB>8F66
2ECC>8FB6
2ECD>8FB6
2ECE>8FB6
2ECF>9091
2ED0>9485
2ED1>9577
2ED2>9578
2ED3>957F
2ED4>95E8
2ED5>961C
2ED6>961D
2ED7>96E8
2ED8>9752
2ED9>97E6
2EDA>9875
2EDB>98CE
2EDC>98DE
2EDD>98DF
2EDE>2967F
2EDF>98E0
2EE0>9963
2EE1>29810
2EE2>9A6C
2EE3>9AA8
2EE4>9B3C
2EE5>9C7C
2EE6>9E1F
2EE7>9E75
2EE8>9EA6
2EE9>9EC4
2EEA>9EFE
2EEB>6589
2EEC>9F50
2EED>6B6F
2EEE>9F7F
2EEF>9F8D
2EF0>9F99
2EF1>9F9C
2EF2>4E80	
2EF3>9F9F	

# KangXi Radicals (done by kd)
