#--------------------------------------------------------------------
# Copyright (c) 1999-2001, International Business Machines
# Corporation and others.  All Rights Reserved.
#--------------------------------------------------------------------
# THIS IS A MACHINE-GENERATED FILE
# Tool: dumpICUrules.bat
# Source: \u005cicu4j\u005csrc\u005ccom\u005cibm\u005ctext\u005cresources/Transliterator_Tamil_InterIndic.utf8.txt
# Date: Thu Mar  1 20:03:55 2001
#--------------------------------------------------------------------
# Tamil_InterIndic
#--------------------------------------------------------------------
# Copyright (c) 1999-2001, International Business Machines
# Corporation and others.  All Rights Reserved.
#--------------------------------------------------------------------
# Date: Tue Jan 23 12:42:07 2001
#--------------------------------------------------------------------
# Tamil-InterIndic
#:: NFD (NFC) ;

\u0BC6\u0BBE>\uE04A;# VOWEL SIGN O
\u0BC7\u0BBE>\uE04B;# VOWEL SIGN OO
\u0BC6\u0BD7>\uE04C;# VOWEL SIGN AU
\u0B92\u0BD7>\uE014;# LETTER AU

\u0B82>\uE002;      # SIGN ANUSVARA
\u0B83>\uE003;      # SIGN VISARGA
\u0B85>\uE005;      # LETTER A
\u0B86>\uE006;      # LETTER AA
\u0B87>\uE007;      # LETTER I
\u0B88>\uE008;      # LETTER II
\u0B89>\uE009;      # LETTER U
\u0B8A>\uE00A;      # LETTER UU
\u0B8E>\uE00E;      # LETTER E
\u0B8F>\uE00F;      # LETTER EE
\u0B90>\uE010;      # LETTER AI
\u0B92>\uE012;      # LETTER O
\u0B93>\uE013;      # LETTER OO
\u0B95>\uE015;      # LETTER KA
\u0B99>\uE019;      # LETTER NGA
\u0B9A>\uE01A;      # LETTER CA
\u0B9C>\uE01C;      # LETTER JA
\u0B9E>\uE01E;      # LETTER NYA
\u0B9F>\uE01F;      # LETTER TTA
\u0BA3>\uE023;      # LETTER NNA
\u0BA4>\uE024;      # LETTER TA
\u0BA8>\uE028;      # LETTER NA
\u0BA9>\uE029;      # LETTER NNNA
\u0BAA>\uE02A;      # LETTER PA
\u0BAE>\uE02E;      # LETTER MA
\u0BAF>\uE02F;      # LETTER YA
\u0BB0>\uE030;      # LETTER RA
\u0BB1>\uE031;      # LETTER RRA
\u0BB2>\uE032;      # LETTER LA
\u0BB3>\uE033;      # LETTER LLA
\u0BB4>\uE034;      # LETTER LLLA
\u0BB5>\uE035;      # LETTER VA
\u0BB7>\uE037;      # LETTER SSA
\u0BB8>\uE038;      # LETTER SA
\u0BB9>\uE039;      # LETTER HA
\u0BBE>\uE03E;      # VOWEL SIGN AA
\u0BBF>\uE03F;      # VOWEL SIGN I
\u0BC0>\uE040;      # VOWEL SIGN II
\u0BC1>\uE041;      # VOWEL SIGN U
\u0BC2>\uE042;      # VOWEL SIGN UU
\u0BC6>\uE046;      # VOWEL SIGN E
\u0BC7>\uE047;      # VOWEL SIGN EE
\u0BC8>\uE048;      # VOWEL SIGN AI

\u0BCD>\uE04D;      # SIGN VIRAMA
\u0BD7>\uE057;      # AU LENGTH MARK
\u0BE7>\uE067;      # DIGIT ONE
\u0BE8>\uE068;      # DIGIT TWO
\u0BE9>\uE069;      # DIGIT THREE
\u0BEA>\uE06A;      # DIGIT FOUR
\u0BEB>\uE06B;      # DIGIT FIVE
\u0BEC>\uE06C;      # DIGIT SIX
\u0BED>\uE06D;      # DIGIT SEVEN
\u0BEE>\uE06E;      # DIGIT EIGHT
\u0BEF>\uE06F;      # DIGIT NINE
\u0BF0>\uE067\uE066;          	# UNMAPPED Tamil-InterIndic: NUMBER TEN
\u0BF1>\uE067\uE066\uE066;     	# UNMAPPED Tamil-InterIndic: NUMBER ONE HUNDRED
\u0BF2>\uE067\uE066\uE066\uE066;# UNMAPPED Tamil-InterIndic: NUMBER ONE THOUSAND
0>\ue066;

#    :: NFC (NFD) ;
# eof
