# 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
ADP = peseta Andorra||0|1
AED = dirham EAU
AFA = afghani Afghanistan (1927–2002)|||1
AFN = afghani Afghanistan||0
ALK = lek Albania (1946–1965)|||1
ALL = lek Albania||0
AMD = dram Armenia||0
ANG = florin Antilhez nederlandat
AOA = kwanza Angola
AOK = kwanza Angola (1977–1991)|||1
AON = kwanza nevez Angola (1990–2000)|||1
ARM = peso Arcʼhantina (1881–1970)|||1
ARP = peso Arcʼhantina (1983–1985)|||1
ARS = peso Arcʼhantina
ATS = schilling Aostria|||1
AUD = dollar Aostralia|$A
AWG = florin Aruba
AZM = manat Azerbaidjan (1993–2006)|||1
AZN = manat Azerbaidjan
BAD = dinar Bosnia ha Herzegovina (1992–1994)|||1
BAM = mark kemmadus Bosnia ha Herzegovina
BAN = dinar nevez Bosnia ha Herzegovina (1994–1997)|||1
BBD = dollar Barbados
BDT = taka Bangladesh
BEC = lur Belgia (kemmadus)|||1
BEF = lur Belgia|||1
BGM = lev sokialour Bulgaria|||1
BGN = lev Bulgaria
BGO = lev Bulgaria (1879–1952)|||1
BHD = dinar Bahrein||3
BIF = lur Burundi||0
BMD = dollar Bermuda
BND = dollar Brunei
BOB = boliviano Bolivia
BOL = boliviano Bolivia (1863–1963)|||1
BOP = peso Bolivia|||1
BRL = real Brazil
BSD = dollar Bahamas
BTN = ngultrum Bhoutan
BUK = kyat Birmania|||1
BWP = pula Botswana
BYB = roubl nevez Belarus (1994–1999)|||1
BYN = roubl Belarus
BYR = roubl Belarus (2000–2016)||0|1
BZD = dollar Belize
CAD = dollar Kanada|$CA
CDF = lur Kongo
CHE = euro WIR|||1
CHF = lur Suis
CHW = lur WIR|||1
CLE = escudo Chile|||1
CLF = unanenn jediñ Chile||4|1
CLP = peso Chile||0
CNX = dollar Bank poblel Sina|||1
CNY = yuan Sina
COP = peso Kolombia||0
CRC = colón Costa Rica
CSD = dinar Serbia (2002–2006)|||1
CUC = peso kemmadus Kuba
CUP = peso Kuba
CVE = escudo Kab Glas
CYP = lur Kiprenez|||1
CZK = kurunenn Tchek
DDM = mark Alamagn ar Reter|||1
DEM = mark Alamagn|||1
DJF = lur Djibouti||0
DKK = kurunenn Danmark
DOP = peso Dominikan
DZD = dinar Aljeria
EEK = kurunenn Estonia|||1
EGP = lur Egipt
ERN = nakfa Eritrea
ESB = peseta gemmadus Spagn|||1
ESP = peseta Spagn||0|1
ETB = birr Etiopia
EUR = euro|€
FIM = mark Finland|||1
FJD = dollar Fidji
FKP = lur Inizi Falkland
FRF = lur gall|||1
GBP = lur Breizh-Veur|£ RU
GEL = lari Jorjia
GHS = cedi Ghana
GIP = lur Jibraltar
GMD = dalasi Gambia
GNF = lur Ginea||0
GNS = syli Ginea|||1
GQE = ekwele Ginea ar Cʼheheder|||1
GRD = drakm Gres|||1
GTQ = quetzal Guatemala
GWP = peso Ginea-Bissau|||1
GYD = dollar Guyana||0
HKD = dollar Hong Kong|$ HK
HNL = lempira Honduras
HRD = dinar Kroatia|||1
HRK = kuna Kroatia
HTG = gourde Haiti
HUF = forint Hungaria
IDR = roupi Indonezia||0
IEP = lur Iwerzhon|||1
ILP = lur Israel|||1
ILR = shekel Israel (1980–1985)|||1
ILS = shekel nevez Israel
INR = roupi India|₹
IQD = dinar Iraq||0
IRR = rial Iran||0
ISJ = kurunenn Island (1918–1981)|||1
ISK = kurunenn Island||0
ITL = lur Italia||0|1
JMD = dollar Jamaika
JOD = dinar Jordania||3
JPY = yen Japan||0
KES = shilling Kenya
KGS = som Kyrgyzstan
KHR = riel Kambodja
KMF = lur Komorez||0
KPW = won Korea an Norzh||0
KRH = hwan Korea ar Su (1953–1962)|||1
KRO = won Korea ar Su (1945–1953)|||1
KRW = won Korea ar Su||0
KWD = dinar Koweit||3
KYD = dollar Inizi Cayman
KZT = tenge Kazakstan
LAK = kip Laos||0
LBP = lur Liban||0
LKR = roupi Sri Lanka
LRD = dollar Liberia
LSL = loti Lesotho
LTL = litas Lituania|||1
LTT = talonas Lituania|||1
LUC = lur kemmadus Luksembourg|||1
LUF = lur Luksembourg||0|1
LVL = lats Latvia|||1
LVR = roubl Latvia|||1
LYD = dinar Libia||3
MAD = dirham Maroko
MAF = lur Maroko|||1
MCF = lur Monaco|||1
MDL = leu Moldova
MGA = ariary Madagaskar||0
MGF = lur Madagaskar||0|1
MKD = denar Makedonia
MKN = denar Makedonia (1992–1993)|||1
MLF = lur Mali|||1
MMK = kyat Myanmar||0
MNT = tugrik Mongolia||0
MOP = pataca Macau
MRO = ouguiya Maouritania||0
MTL = lira Malta|||1
MTP = lur Malta|||1
MUR = roupi Moris||0
MVP = roupi Maldivez|||1
MVR = rufiyaa Maldivez
MWK = kwacha Malawi
MXN = peso Mecʼhiko|MX$
MXP = peso arcʼhant Mecʼhiko (1861–1992)|||1
MYR = ringgit Malaysia
MZE = escudo Mozambik|||1
MZM = metical Mozambik (1980–2006)|||1
MZN = metical Mozambik
NAD = dollar Namibia
NGN = naira Nigeria
NIC = cordoba Nicaragua (1988–1991)|||1
NIO = cordoba Nicaragua
NLG = florin an Izelvroioù|||1
NOK = kurunenn Norvegia
NPR = roupi Nepal
NZD = dollar Zeland-Nevez|$ ZN
OMR = rial Oman||3
PAB = balboa Panamá
PEN = sol Perou
PES = sol Perou (1863–1965)|||1
PGK = kina Papoua Ginea-Nevez
PHP = peso Filipinez
PKR = roupi Pakistan||0
PLN = zloty Polonia
PLZ = zloty Polonia (1950–1995)|||1
PTE = escudo Portugal|||1
PYG = guarani Paraguay||0
QAR = rial Qatar
RHD = dollar Rodezia|||1
ROL = leu Roumania (1952–2006)|||1
RON = leu Roumania
RSD = dinar Serbia||0
RUB = roubl Rusia
RUR = roubl Rusia (1991–1998)|||1
RWF = lur Rwanda||0
SAR = riyal Arabia Saoudat
SBD = dollar Inizi Salomon
SCR = roupi Sechelez
SDD = dinar Soudan (1992–2007)|||1
SDG = lur Soudan
SDP = lur Soudan (1957–1998)|||1
SEK = kurunenn Sveden
SGD = dollar Singapour
SHP = lur Saint-Helena
SIT = tolar Slovenia|||1
SKK = kurunenn Slovakia|||1
SLL = leone Sierra Leone||0
SOS = shilling Somalia||0
SRD = dollar Surinam
SRG = florin Surinam|||1
SSP = lur Susoudan
STD = dobra São Tomé ha Príncipe||0|1
SUR = roubl soviedel|||1
SVC = colón Salvador|||1
SYP = lur Siria||0
SZL = lilangeni Swaziland
THB = baht Thailand
TJR = roubl Tadjikistan|||1
TJS = somoni Tadjikistan
TMM = manat Turkmenistan (1993–2009)||0|1
TMT = manat Turkmenistan
TND = dinar Tunizia||3
TOP = paʻanga Tonga
TPE = escudo Timor|||1
TRL = lur Turkia (1922–2005)||0|1
TRY = lur Turkia|TL
TTD = dollar Trinidad ha Tobago
TWD = dollar nevez Taiwan
TZS = shilling Tanzania||0
UAH = hryvnia Ukraina
UGS = shilling Ouganda (1966–1987)|||1
UGX = shilling Ouganda||0
USD = dollar SU|$ SU
UYP = peso Uruguay (1975–1993)|||1
UYU = peso Uruguay
UZS = som Ouzbekistan||0
VEB = bolivar Venezuela (1871–2008)|||1
VEF = bolivar Venezuela
VND = dong Viêt Nam||0
VNN = dong Viêt Nam (1978–1985)|||1
VUV = vatu Vanuatu||0
WST = tala Samoa
XAF = lur CFA Kreizafrika|FCFA|0
XAG = arcʼhant|||1
XAU = aour|||1
XBA = unanenn genaoz europat|||1
XBB = unanenn voneiz europat|||1
XBC = unanenn jediñ europat (XBC)|||1
XBD = unanenn jediñ europat (XBD)|||1
XCD = dollar Karib ar reter
XDR = gwirioù tennañ arbennik|||1
XEU = unanenn jediñ europat|||1
XFO = lur aour Frañs|||1
XFU = lur Unaniezh etrebroadel an hentoù-houarn|||1
XOF = lur CFA Afrika ar Cʼhornôg|CFA|0
XPD = palladiom|||1
XPF = lur CFP|CFPF|0
XPT = platin|||1
XTS = kod moneiz amprouiñ|||1
XXX = moneiz dianav|||1
YDD = dinar Yemen|||1
YER = rial Yemen||0
YUM = dinar nevez Yougoslavia (1994–2002)|||1
YUN = dinar kemmadus Yougoslavia (1990–1992)|||1
YUR = dinar adreizhet Yougoslavia (1992–1993)|||1
ZAR = rand Suafrika
ZMK = kwacha Zambia (1968–2012)||0|1
ZMW = kwacha Zambia
ZWD = dollar Zimbabwe (1980–2008)||0|1
ZWL = dollar Zimbabwe (2009)|||1
ZWR = dollar Zimbabwe (2008)|||1
