# 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) $

ADP = peseta andorrana||0|1
AED = Dirham dos Emiratos Árabes Unidos
AFN = Afgani afgano||0
ALL = Lek albanés||0
AMD = Dram armenio||0
ANG = Florín das Antillas Neerlandesas
AOA = Kwanza angoleño
ARP = Peso arxentino (1983-1985)|||1
ARS = Peso arxentino
AUD = Dólar australiano|AU$
AWG = Florín arubeño
AZN = Manat acerbaixano
BAM = Marco convertible de Bosnia e Hercegovina
BBD = Dólar de Barbados
BDT = Taka de Bangladesh
BEC = Franco belga (convertible)|||1
BEF = Franco belga|||1
BEL = Franco belga (financeiro)|||1
BGN = Lev búlgaro
BHD = Dinar de Baréin||3
BIF = Franco burundés||0
BMD = Dólar das Bemudas
BND = Dólar de Brunei
BOB = Boliviano
BOP = Peso boliviano|||1
BOV = MVDOL boliviano|||1
BRB = Cruzeiro novo brasileiro (1967-1986)|||1
BRC = Cruzado brasileiro|||1
BRE = Cruzeiro brasileiro (1990-1993)|||1
BRL = Real brasileiro|R$
BRN = Cruzado novo brasileiro|||1
BRR = Cruzeiro brasileiro|||1
BSD = Dólar das Bahamas
BTN = Ngultrum butanés
BWP = Pula botsuano
BYR = Rublo bielorruso||0
BZD = Dólar beliceño
CAD = Dólar canadiano|CA$
CDF = Franco congolés
CHF = Franco suizo||||5
CLF = Unidades de fomento chilenas||0|1
CLP = Peso chileno||0
CNY = Iuan renminbi chinés|CN¥
COP = Peso colombiano||0
CRC = Colón costarricense||0
CUC = Peso cubano convertible
CUP = Peso cubano
CVE = Escudo caboverdiano
CZK = Coroa checa
DEM = Marco alemán|||1
DJF = Franco xibutiano||0
DKK = Coroa dinamarquesa
DOP = Peso dominicano
DZD = Dinar alxeriano
ECS = Sucre ecuatoriano|||1
ECV = Unidade de valor constante ecuatoriana|||1
EGP = Libra exipcia
ERN = Nakfa eritreo
ESA = Peseta española (conta A)|||1
ESB = Peseta española (conta convertible)|||1
ESP = Peseta española|₧|0|1
ETB = Birr etíope
EUR = Euro|€
FJD = Dólar fixiano
FKP = Libra das Malvinas
FRF = Franco francés|||1
GBP = Libra esterlina|UK£
GEL = Lari xeorxiano
GHS = Cedi de Gana
GIP = Libra de Xibraltar
GMD = Dalasi gambiano
GNF = Franco guineano||0
GNS = Syli guineano|||1
GQE = Ekwele guineana|||1
GRD = Dracma grego|||1
GTQ = Quetzal guatemalteco
GYD = Dólar güianés||0
HKD = Dólar de Hong Kong|HK$
HNL = Lempira hondureño
HRK = Kuna croata
HTG = Gourde haitiano
HUF = Florín húngaro||0
IDR = Rupia indonesia||0
IEP = Libra irlandesa|||1
ILS = Novo shequel israelí|₪
INR = Rupia india|Rs.
IQD = Dinar iraquí||0
IRR = Rial iraniano||0
ISK = Coroa islandesa||0
ITL = Lira italiana||0|1
JMD = Dólar xamaicano
JOD = Dinar xordano||3
JPY = Ien xaponés|JP¥|0
KES = Chelín kenyano
KGS = Som quirguizo
KHR = Riel camboxano
KMF = Franco comoriano||0
KPW = Won norcoreano||0
KRW = Won surcoreano|₩|0
KWD = Dinar kuwaití||3
KYD = Dólar das Illas Caimán
KZT = Tenge casaco
LAK = Kip laosiano||0
LBP = Libra libanesa||0
LKR = Rupia de Sri Lanka
LRD = Dólar liberiano
LSL = Loti de Lesoto
LTL = Litas lituana
LUC = Franco convertible luxemburgués|||1
LUF = Franco luxemburgués||0|1
LUL = Franco financeiro luxemburgués|||1
LVL = Lats letón
LYD = Dinar libio||3
MAD = Dirham marroquí
MAF = Franco marroquí|||1
MDL = Leu moldavo
MGA = Ariary malgaxe||0
MKD = Dinar macedonio
MMK = Kiat birmano||0
MNT = Tugrik mongol||0
MOP = Pataca de Macau
MRO = Ouguiya mauritano||0
MUR = Rupia de Mauricio||0
MVR = Rupia maldiva
MWK = Kwacha de Malaui
MXN = Peso mexicano|MX$
MXP = Peso de prata mexicano (1861-1992)|||1
MXV = Unidade de inversión mexicana|||1
MYR = Ringgit malaio
NAD = Dólar namibio
NGN = Naira nixeriano
NIC = Córdoba nicaragüense|||1
NIO = Córdoba de ouro nicaragüense
NLG = Florín holandés|||1
NOK = Coroa norueguesa
NPR = Rupia nepalesa
NZD = Dólar neozelandés|NZ$
OMR = Rial omaní||3
PAB = Balboa panameño
PEI = Inti peruano|||1
PEN = Sol novo peruano
PES = Sol peruano|||1
PGK = Kina de Papúa Nova Guinea
PHP = Peso filipino
PKR = Rupia paquistaní||0
PLN = Zloty polaco
PTE = Escudo portugués|||1
PYG = Guaraní paraguaio||0
QAR = Rial qatarí
RSD = Dinar serbio||0
RUB = Rublo ruso
RUR = Rublo ruso (1991-1998)|||1
RWF = Franco ruandés||0
SAR = Rial saudita
SBD = Dólar das Illas Salomón
SCR = Rupia de Seixeles
SDG = Libra sudanesa
SEK = Coroa sueca
SGD = Dólar de Singapur
SHP = Libra de Santa Helena
SLL = Leone de Serra Leoa||0
SOS = Chelín somalí||0
SRD = Dólar surinamés
STD = Dobra de San Tomé e Príncipe||0
SUR = Rublo soviético|||1
SVC = Colón salvadoreño|||1
SYP = Libra siria||0
SZL = Lilanxeni de Suacilandia
THB = Baht tailandés|฿
TJS = Somoni taxico
TMT = Manat turcomano
TND = Dinar tunesino||3
TOP = Paʻanga de Tonga
TRY = Lira turca
TTD = Dólar de Trinidade e Tobago
TWD = Novo dólar taiwanés|NT$
TZS = Chelín tanzano||0
UAH = Grivna ucraína
UGX = Chelín ugandés||0
USD = Dólar estadounidense|US$
UYI = Peso en unidades indexadas uruguaio|||1
UYP = Peso uruguaio (1975-1993)|||1
UYU = Peso uruguaio
UZS = Som usbeco||0
VEB = Bolívar venezolano|||1
VEF = Bolívar forte venezolano
VND = Dong vietnamita|₫|0
VUV = Vatu vanuatense||0
WST = Tala samoano
XAF = Franco CFA BEAC|FCFA|0
XAG = Prata|||1
XAU = Ouro|||1
XCD = Dólar Caribe-Leste|EC$
XOF = Franco CFA BCEAO|CFA|0
XPD = Paladio|||1
XPF = Franco CFP|CFPF|0
XPT = Platino|||1
XXX = Unidade monetaria descoñecida ou non válida|||1
YER = Rial iemení||0
ZAR = Rand sudafricano
ZMK = Kwacha zambiano||0
