# *******************************************************************************
# *
# *   Copyright (C) 1995-2001, International Business Machines
# *   Corporation and others.  All Rights Reserved.
# *
# *******************************************************************************
#
# File created by rptp2ucm (compiled on Feb 23 2001)
# from source files 34B003EE.RXMAP100 and 03EE34B0.TXMAP100
#
<code_set_name>               "ibm-1006_X100-2000"
<char_name_mask>              "AXXXX"
<mb_cur_max>                  1
<mb_cur_min>                  1
<uconv_class>                 "SBCS"
<subchar>                     \x1A
<icu:charsetFamily>           "ASCII"
<icu:alias>                   "ibm-1006_STD"

CHARMAP
<U0000> \x00 |0
<U0001> \x01 |0
<U0002> \x02 |0
<U0003> \x03 |0
<U0004> \x04 |0
<U0005> \x05 |0
<U0006> \x06 |0
<U0007> \x07 |0
<U0008> \x08 |0
<U0009> \x09 |0
<U000A> \x0A |0
<U000B> \x0B |0
<U000C> \x0C |0
<U000D> \x0D |0
<U000E> \x0E |0
<U000F> \x0F |0
<U0010> \x10 |0
<U0011> \x11 |0
<U0012> \x12 |0
<U0013> \x13 |0
<U0014> \x14 |0
<U0015> \x15 |0
<U0016> \x16 |0
<U0017> \x17 |0
<U0018> \x18 |0
<U0019> \x19 |0
<U001A> \x1A |0
<U001B> \x1B |0
<U001C> \x1C |0
<U001D> \x1D |0
<U001E> \x1E |0
<U001F> \x1F |0
<U0020> \x20 |0
<U0021> \x21 |0
<U0022> \x22 |0
<U0023> \x23 |0
<U0024> \x24 |0
<U0025> \x25 |0
<U0026> \x26 |0
<U0027> \x27 |0
<U0028> \x28 |0
<U0029> \x29 |0
<U002A> \x2A |0
<U002B> \x2B |0
<U002C> \x2C |0
<U002D> \x2D |0
<U002E> \x2E |0
<U002F> \x2F |0
<U0030> \x30 |0
<U0031> \x31 |0
<U0032> \x32 |0
<U0033> \x33 |0
<U0034> \x34 |0
<U0035> \x35 |0
<U0036> \x36 |0
<U0037> \x37 |0
<U0038> \x38 |0
<U0039> \x39 |0
<U003A> \x3A |0
<U003B> \x3B |0
<U003C> \x3C |0
<U003D> \x3D |0
<U003E> \x3E |0
<U003F> \x3F |0
<U0040> \x40 |0
<U0041> \x41 |0
<U0042> \x42 |0
<U0043> \x43 |0
<U0044> \x44 |0
<U0045> \x45 |0
<U0046> \x46 |0
<U0047> \x47 |0
<U0048> \x48 |0
<U0049> \x49 |0
<U004A> \x4A |0
<U004B> \x4B |0
<U004C> \x4C |0
<U004D> \x4D |0
<U004E> \x4E |0
<U004F> \x4F |0
<U0050> \x50 |0
<U0051> \x51 |0
<U0052> \x52 |0
<U0053> \x53 |0
<U0054> \x54 |0
<U0055> \x55 |0
<U0056> \x56 |0
<U0057> \x57 |0
<U0058> \x58 |0
<U0059> \x59 |0
<U005A> \x5A |0
<U005B> \x5B |0
<U005C> \x5C |0
<U005D> \x5D |0
<U005E> \x5E |0
<U005F> \x5F |0
<U0060> \x60 |0
<U0061> \x61 |0
<U0062> \x62 |0
<U0063> \x63 |0
<U0064> \x64 |0
<U0065> \x65 |0
<U0066> \x66 |0
<U0067> \x67 |0
<U0068> \x68 |0
<U0069> \x69 |0
<U006A> \x6A |0
<U006B> \x6B |0
<U006C> \x6C |0
<U006D> \x6D |0
<U006E> \x6E |0
<U006F> \x6F |0
<U0070> \x70 |0
<U0071> \x71 |0
<U0072> \x72 |0
<U0073> \x73 |0
<U0074> \x74 |0
<U0075> \x75 |0
<U0076> \x76 |0
<U0077> \x77 |0
<U0078> \x78 |0
<U0079> \x79 |0
<U007A> \x7A |0
<U007B> \x7B |0
<U007C> \x7C |0
<U007D> \x7D |0
<U007E> \x7E |0
<U007F> \x7F |0
<U0080> \x80 |0
<U0081> \x81 |0
<U0082> \x82 |0
<U0083> \x83 |0
<U0084> \x84 |0
<U0085> \x85 |0
<U0086> \x86 |0
<U0087> \x87 |0
<U0088> \x88 |0
<U0089> \x89 |0
<U008A> \x8A |0
<U008B> \x8B |0
<U008C> \x8C |0
<U008D> \x8D |0
<U008E> \x8E |0
<U008F> \x8F |0
<U0090> \x90 |0
<U0091> \x91 |0
<U0092> \x92 |0
<U0093> \x93 |0
<U0094> \x94 |0
<U0095> \x95 |0
<U0096> \x96 |0
<U0097> \x97 |0
<U0098> \x98 |0
<U0099> \x99 |0
<U009A> \x9A |0
<U009B> \x9B |0
<U009C> \x9C |0
<U009D> \x9D |0
<U009E> \x9E |0
<U009F> \x9F |0
<U00A0> \xA0 |0
<U00AD> \xAD |0
<U060C> \xAB |0
<U061B> \xAC |0
<U061F> \xAE |0
<U0621> \xF5 |1
<U0622> \xAF |1
<U0624> \xEF |1
<U0627> \xB0 |1
<U0628> \xB3 |1
<U0629> \xB7 |1
<U062A> \xB8 |1
<U062B> \xBC |1
<U062C> \xBE |1
<U062D> \xC2 |1
<U062E> \xC4 |1
<U062F> \xC6 |1
<U0630> \xC8 |1
<U0631> \xC9 |1
<U0632> \xCB |1
<U0633> \xCD |1
<U0634> \xCF |1
<U0635> \xD1 |1
<U0636> \xD3 |1
<U0637> \xD5 |1
<U0638> \xD6 |1
<U0639> \xD7 |1
<U063A> \xDB |1
<U0641> \xDF |1
<U0642> \xE1 |1
<U0644> \xE7 |1
<U0645> \xEA |1
<U0646> \xED |1
<U0648> \xF0 |1
<U0651> \xFE |1
<U0660> \xA1 |1
<U0661> \xA2 |1
<U0662> \xA3 |1
<U0663> \xA4 |1
<U0664> \xA5 |1
<U0665> \xA6 |1
<U0666> \xA7 |1
<U0668> \xA9 |1
<U0669> \xAA |1
<U066A> \x25 |1
<U066B> \x2C |1
<U066C> \x2E |1
<U066D> \x2A |1
<U06F0> \xA1 |0
<U06F1> \xA2 |0
<U06F2> \xA3 |0
<U06F3> \xA4 |0
<U06F4> \xA5 |0
<U06F5> \xA6 |0
<U06F6> \xA7 |0
<U06F7> \xA8 |0
<U06F8> \xA9 |0
<U06F9> \xAA |0
<UFB56> \xB5 |0
<UFB58> \xB6 |0
<UFB66> \xBA |0
<UFB68> \xBB |0
<UFB7A> \xC0 |0
<UFB7C> \xC1 |0
<UFB88> \xC7 |0
<UFB8A> \xCC |0
<UFB8C> \xCA |0
<UFB8E> \xE3 |0
<UFB92> \xE5 |0
<UFB94> \xE6 |0
<UFB9E> \xEC |0
<UFBA6> \xF1 |0
<UFBA8> \xF2 |0
<UFBA9> \xF3 |0
<UFBAA> \xF4 |0
<UFBAE> \xFD |0
<UFBB0> \xFC |0
<UFBFC> \xF9 |0
<UFBFD> \xFA |0
<UFBFE> \xFB |0
<UFE7C> \xFE |0
<UFE7D> \xFF |0
<UFE80> \xF5 |0
<UFE81> \xAF |0
<UFE85> \xEF |0
<UFE86> \xEF |1
<UFE89> \xF6 |0
<UFE8A> \xF7 |0
<UFE8B> \xF8 |0
<UFE8C> \xF8 |1
<UFE8D> \xB0 |0
<UFE8E> \xB1 |0
<UFE8E> \xB2 |3
<UFE8F> \xB3 |0
<UFE90> \xB3 |1
<UFE91> \xB4 |0
<UFE92> \xB4 |1
<UFE93> \xB7 |0
<UFE94> \xB7 |1
<UFE95> \xB8 |0
<UFE96> \xB8 |1
<UFE97> \xB9 |0
<UFE98> \xB9 |1
<UFE99> \xBC |0
<UFE9A> \xBC |1
<UFE9B> \xBD |0
<UFE9C> \xBD |1
<UFE9D> \xBE |0
<UFE9E> \xBE |1
<UFE9F> \xBF |0
<UFEA0> \xBF |1
<UFEA1> \xC2 |0
<UFEA2> \xC2 |1
<UFEA3> \xC3 |0
<UFEA4> \xC3 |1
<UFEA5> \xC4 |0
<UFEA6> \xC4 |1
<UFEA7> \xC5 |0
<UFEA8> \xC5 |1
<UFEA9> \xC6 |0
<UFEAA> \xC6 |1
<UFEAB> \xC8 |0
<UFEAC> \xC8 |1
<UFEAD> \xC9 |0
<UFEAE> \xC9 |1
<UFEAF> \xCB |0
<UFEB0> \xCB |1
<UFEB1> \xCD |0
<UFEB2> \xCD |1
<UFEB3> \xCE |0
<UFEB4> \xCE |1
<UFEB5> \xCF |0
<UFEB6> \xCF |1
<UFEB7> \xD0 |0
<UFEB8> \xD0 |1
<UFEB9> \xD1 |0
<UFEBA> \xD1 |1
<UFEBB> \xD2 |0
<UFEBC> \xD2 |1
<UFEBD> \xD3 |0
<UFEBE> \xD3 |1
<UFEBF> \xD4 |0
<UFEC0> \xD4 |1
<UFEC1> \xD5 |1
<UFEC2> \xD5 |1
<UFEC3> \xD5 |0
<UFEC4> \xD5 |1
<UFEC5> \xD6 |1
<UFEC6> \xD6 |1
<UFEC7> \xD6 |0
<UFEC8> \xD6 |1
<UFEC9> \xD7 |0
<UFECA> \xD8 |0
<UFECB> \xD9 |0
<UFECC> \xDA |0
<UFECD> \xDB |0
<UFECE> \xDC |0
<UFECF> \xDD |0
<UFED0> \xDE |0
<UFED1> \xDF |0
<UFED2> \xDF |1
<UFED3> \xE0 |0
<UFED4> \xE0 |1
<UFED5> \xE1 |0
<UFED6> \xE1 |1
<UFED7> \xE2 |0
<UFED8> \xE2 |1
<UFEDB> \xE4 |0
<UFEDC> \xE4 |1
<UFEDD> \xE7 |0
<UFEDE> \xE7 |1
<UFEDF> \xE8 |0
<UFEE0> \xE9 |0
<UFEE1> \xEA |0
<UFEE2> \xEA |1
<UFEE3> \xEB |0
<UFEE4> \xEB |1
<UFEE5> \xED |0
<UFEE6> \xED |1
<UFEE7> \xEE |0
<UFEE8> \xEE |1
<UFEED> \xF0 |0
<UFEEE> \xF0 |1
<UFF01> \x21 |1
<UFF02> \x22 |1
<UFF03> \x23 |1
<UFF04> \x24 |1
<UFF05> \x25 |1
<UFF06> \x26 |1
<UFF07> \x27 |1
<UFF08> \x28 |1
<UFF09> \x29 |1
<UFF0A> \x2A |1
<UFF0B> \x2B |1
<UFF0C> \x2C |1
<UFF0D> \x2D |1
<UFF0E> \x2E |1
<UFF0F> \x2F |1
<UFF10> \x30 |1
<UFF11> \x31 |1
<UFF12> \x32 |1
<UFF13> \x33 |1
<UFF14> \x34 |1
<UFF15> \x35 |1
<UFF16> \x36 |1
<UFF17> \x37 |1
<UFF18> \x38 |1
<UFF19> \x39 |1
<UFF1A> \x3A |1
<UFF1B> \x3B |1
<UFF1C> \x3C |1
<UFF1D> \x3D |1
<UFF1E> \x3E |1
<UFF1F> \x3F |1
<UFF20> \x40 |1
<UFF21> \x41 |1
<UFF22> \x42 |1
<UFF23> \x43 |1
<UFF24> \x44 |1
<UFF25> \x45 |1
<UFF26> \x46 |1
<UFF27> \x47 |1
<UFF28> \x48 |1
<UFF29> \x49 |1
<UFF2A> \x4A |1
<UFF2B> \x4B |1
<UFF2C> \x4C |1
<UFF2D> \x4D |1
<UFF2E> \x4E |1
<UFF2F> \x4F |1
<UFF30> \x50 |1
<UFF31> \x51 |1
<UFF32> \x52 |1
<UFF33> \x53 |1
<UFF34> \x54 |1
<UFF35> \x55 |1
<UFF36> \x56 |1
<UFF37> \x57 |1
<UFF38> \x58 |1
<UFF39> \x59 |1
<UFF3A> \x5A |1
<UFF3B> \x5B |1
<UFF3C> \x5C |1
<UFF3D> \x5D |1
<UFF3E> \x5E |1
<UFF3F> \x5F |1
<UFF40> \x60 |1
<UFF41> \x61 |1
<UFF42> \x62 |1
<UFF43> \x63 |1
<UFF44> \x64 |1
<UFF45> \x65 |1
<UFF46> \x66 |1
<UFF47> \x67 |1
<UFF48> \x68 |1
<UFF49> \x69 |1
<UFF4A> \x6A |1
<UFF4B> \x6B |1
<UFF4C> \x6C |1
<UFF4D> \x6D |1
<UFF4E> \x6E |1
<UFF4F> \x6F |1
<UFF50> \x70 |1
<UFF51> \x71 |1
<UFF52> \x72 |1
<UFF53> \x73 |1
<UFF54> \x74 |1
<UFF55> \x75 |1
<UFF56> \x76 |1
<UFF57> \x77 |1
<UFF58> \x78 |1
<UFF59> \x79 |1
<UFF5A> \x7A |1
<UFF5B> \x7B |1
<UFF5C> \x7C |1
<UFF5D> \x7D |1
<UFF5E> \x7E |1
END CHARMAP
