# Copyright 2012 Google Inc.
# 
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

#
# The key is an ISO4217 currency code, and the value is of the form:
#   display name|symbol|decimal digits|not-used-flag|rounding
# If a symbol is not supplied, the currency code will be used
# If # of decimal digits is omitted, 2 is used
# If a currency is not generally used, not-used-flag=1
# If a currency should be rounded to a multiple of of the least significant
#   digit, rounding will be present
# Trailing empty fields can be omitted

# DO NOT EDIT - GENERATED FROM CLDR DATA:
#  cldrVersion=21.0
#  number=$Revision: 6546 Google $
#  type=root
#  date=$Date: 2012-02-07 13:32:35 -0500 (Tue, 07 Feb 2012) $

AED = Dirham Emiriah Arab Bersatu
AFN = Afghani Afghanistan||0
ALL = Lek Albania||0
AMD = Dram Armenia||0
ANG = Guilder Antillean Netherland
AOA = Kwanza Angola
ARS = Peso Argentina
AUD = Dolar Australia|AU$
AWG = Florin Aruba
AZN = Manat Azerbaijan
BAM = Mark Boleh Tukar Bosnia-Herzegovina
BBD = Dolar Barbados
BDT = Taka Bangladesh
BGN = Lev Bulgaria
BHD = Dinar Bahrain||3
BIF = Franc Burundia||0
BMD = Dolar Bermuda
BND = Dolar Brunei
BOB = Boliviano Bolivia
BRL = Real Brazil|R$
BSD = Dolar Bahamas
BTN = Ngultrum Bhutan
BWP = Pula Botswana
BYR = Ruble Belarus||0
BZD = Dolar Belize
CAD = Dolar Kanada|CA$
CDF = Franc Congo
CHF = Franc Switzerland||||5
CLP = Peso Chile||0
CNY = Yuan Cina|CN¥
COP = Peso Colombia||0
CRC = Colón Costa Rica||0
CUC = Peso Boleh Tukar Cuba
CUP = Peso Cuba
CVE = Escudo Tanjung Verde
CZK = Koruna Republik Czech
DJF = Franc Djibouti||0
DKK = Krone Denmark
DOP = Peso Dominican
DZD = Dinar Algeria
EGP = Paun Mesir
ERN = Nakfa Eritrea
ETB = Birr Ethiopia
EUR = Euro|€
FJD = Dolar Fiji
FKP = Paun Kepulauan Falkland
GBP = Paun Sterling British|UK£
GEL = Lari Georgia
GHS = Cedi Ghana
GIP = Paun Gibraltar
GMD = Dalasi Gambia
GNF = Franc Guinea||0
GTQ = Quetzal Guatemala
GYD = Dolar Guyana||0
HKD = Dolar Hong Kong|HK$
HNL = Lempira Honduras
HRK = Kuna Croatia
HTG = Gourde Haiti
HUF = Forint Hungary||0
IDR = Rupiah Indonesia||0
ILS = Sheqel Baru Israel|₪
INR = Rupee India|Rs.
IQD = Dinar Iraq||0
IRR = Rial Iran||0
ISK = Króna Iceland||0
JMD = Dolar Jamaica
JOD = Dinar Jordan||3
JPY = Yen Jepun|JP¥|0
KES = Syiling Kenya
KGS = Som Kyrgystani
KHR = Riel Kemboja
KMF = Franc Comoria||0
KPW = Won Korea Utara||0
KRW = Won Korea Selatan|₩|0
KWD = Dinar Kuwait||3
KYD = Dolar Kepulauan Cayman
KZT = Tenge Kazakhstan
LAK = Kip Laos||0
LBP = Paun Lubnan||0
LKR = Rupee Sri Lanka
LRD = Dolar Liberia
LSL = Loti Lesotho
LTL = Litas Lithuania
LVL = Lats Latvia
LYD = Dinar Libya||3
MAD = Dirham Maghribi
MDL = Leu Moldova
MGA = Ariary Malagasy||0
MKD = Denar Macedonia
MMK = Kyat Myanma||0
MNT = Tugrik Mongolia||0
MOP = Pataca Macau
MRO = Ouguiya Mauritania||0
MUR = Rupee Mauritia||0
MVR = Rufiyaa Maldives
MWK = Kwacha Malawi
MXN = Peso Mexico|MX$
MYR = Ringgit Malaysia|RM
NAD = Dolar Namibia
NGN = Naira Nigeria
NIO = Córdoba Nicaragua
NOK = Krone Norway
NPR = Rupee Nepal
NZD = Dolar New Zealand|NZ$
OMR = Rial Oman||3
PAB = Balboa Panama
PEN = Nuevo Sol Peru
PGK = Kina Papua New Guinea
PHP = Peso Filipina
PKR = Rupee Pakistan||0
PLN = Zloty Poland
PYG = Guarani Paraguay||0
QAR = Rial Qatar
RSD = Dinar Serbia||0
RUB = Ruble Rusia
RWF = Franc Rwanda||0
SAR = Riyal Saudi
SBD = Dolar Kepulauan Solomon
SCR = Rupee Seychelles
SDG = Paun Sudan
SEK = Krona Sweden
SGD = Dolar Singapura
SHP = Paun Saint Helena
SLL = Leone Sierra Leone||0
SOS = Syiling Somali||0
SRD = Dolar Surinam
STD = São Tomé dan Príncipe Dobra||0
SYP = Paun Syria||0
SZL = Lilangeni Swazi
THB = Baht Thai|฿
TJS = Somoni Tajikistan
TMT = Manat Turkmenistan
TND = Dinar Tunisia||3
TOP = Tongan Paʻanga
TRY = Lira Turki
TTD = Dolar Trinidad dan Tobago
TWD = Dolar Taiwan Baru|NT$
TZS = Syiling Tanzania||0
UAH = Hryvnia Ukraine
UGX = Syiling Uganda||0
USD = Dolar AS|US$
UYU = Peso Uruguay
UZS = Som Uzbekistan||0
VEF = Bolívar Venezuela
VND = Dong Vietnam|₫|0
VUV = Vatu Vanuatu||0
WST = Tala Samoa
XAF = Franc CFA BEAC|FCFA|0
XCD = Dolar Caribbean Timur|EC$
XOF = Franc CFA BCEAO|CFA|0
XPF = Franc CFP|CFPF|0
XXX = Mata Wang Tidak Diketahui|||1
YER = Rial Yaman||0
ZAR = Rand Afrika Selatan
ZMK = Kwacha Zambia||0
