# 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
AED = Dirhamka Isutaga Imaaraatka Carabta
AFN = Afgan Afgan||0
ALL = Lek Albaniya||0
AMD = Daraamka Armeniya
ANG = Galdar Nadarland Antilean
AOA = Kawansada Angola
ARS = Beeso Arjentina
AUD = Doolarka Awstaraaliya|A$
AWG = Foloorin Aruban
AZN = Manaatada Asarbeyjan
BAM = Konfatibal Maak Bosnia-Hersogofina
BBD = Doolarka Barbaadiyaanka|DBB
BDT = Taka Bangledesh
BGN = Lef Bulgariya
BHD = Dinaarka Baxreyn||3
BIF = Farank Burundi||0
BMD = Doolarka Barmuuda
BND = Doollarka Burunel
BOB = Bolifiano Bolifiya
BRL = Real Barasil|R$
BSD = Doolarka Bahamaas|DBS
BTN = Ngultaram Butan
BWP = Buulada Botswana
BYN = Rubalka Belarus
BZD = Doolarka Beelisa
CAD = Doolarka Kanada|CA$
CDF = Farank Kongo
CHF = Farank Iswis
CLP = Beeso Jili||0
CNH = Yuanta Shiinaha (Offshore)|||1
CNY = Yuanta Shiinaha|CN¥
COP = Beeso Kolombiya
CRC = Kolon Kosta Rika|KKR
CUC = Beeso Kuuba Konfatibal
CUP = Beeso Kuuba
CVE = Eskudo Keyb Farde
CZK = Korunada Jeek
DJF = Faran Jabbuuti||0
DKK = Koranka Danishka
DOP = Beeso Dominika
DZD = Dinaarka Aljeriya
EGP = Bowndka Masar
ERN = Nafkada Eritriya
ETB = Birta Itoobbiya
EUR = Yuuroo|€
FJD = Doolarka Fiji
FKP = Bowndka Faalkland Island
GBP = Bowndka Biritishka|£
GEL = Laariga Joorjiya
GHS = Sedi Gana
GIP = Bowndka Gibraltar
GMD = Dalasi Gambiya
GNF = Faranka Gini||0
GTQ = Quetsal Guatemala
GYD = Doolarka Guyanes
HKD = Doollarka Hong Kong|HK$
HNL = Lembira Hondura|LHN
HRK = Kuna Korooshiya
HTG = Goorde Haiti
HUF = Forintiska Hangari
IDR = Rubiah Indonesiya
ILS = Niyuu Shekelka Israaiil|₪
INR = Rubiga Hindiya|₹
IQD = Dinaarka Ciraaq||0
IRR = Riyaalka Iran||0
ISK = Korona Eysland||0
JMD = Doolarka Jamaaika
JOD = Dinaarka Joordan||3
JPY = Yenta Jaban|JP¥|0
KES = Shilingka Kenya
KGS = Soom Kiyrgiystan
KHR = Riyf Cambodiya
KMF = Farank Komora||0
KPW = Wonka Waqooyi Kuuriya||0
KRW = Wonka Koonfur Kuuriya|₩|0
KWD = Dinaarka Kuweyt||3
KYD = Doolarka jasiiradaha Kayman
KZT = Tenge Kasakhstan
LAK = Kib Laoti||0
LBP = Bowndka Lebanon||0
LKR = Rubiga Siri lanka
LRD = Doollarka Liberiya
LYD = Dinaarka Libya||3
MAD = Dirhamka Moroko
MDL = Leeyuu Moldofa
MGA = Ariari Malagasy||0
MKD = Denaarka Masedoniya
MMK = Kayat Mayanmaar||0
MNT = Tugrik Mongoliya
MOP = Bataka Makana
MRO = Oogiya Mawritaniya (1973–2017)||0|1
MUR = Rubiga Mowrishiya
MVR = Rufiya Maldifiya
MWK = Kawajada Malawi
MXN = Beeso Meksikaan|MX$
MYR = Ringit Malayshiya
MZN = Metikalka Mosambik
NAD = Doollarka Namibiya
NGN = Nairada Neyjeeriya
NIO = Nikaragua Kordoba
NOK = Koronka Norway
NPR = Rubiga Nebal
NZD = Doolarka Niyuu Siyalaan|NZ$
OMR = Riyaalka Comaan||3
PAB = Balboa Panama
PEN = Sol Beeru
PGK = Kinada Babua Niyuu Gini
PHP = Biso Filibin
PKR = Rubiga Bakistan
PLN = Solotida Boland
PYG = Guarani Baraguay||0
QAR = Riyaalka Qatar
RON = Liyuu ROmaniya
RSD = Dinaarka Serbiya||0
RUB = Rubalka Ruush
RWF = Farank Ruwanda||0
SAR = Riyaalka Sacuudiga
SBD = Doolarka Jasiiradaha Solomon
SCR = Rubiga Siisalis
SDG = Bowndka Suudaan
SEK = Koronka Isweden
SGD = Doollarka Singabuur
SHP = Bowndka St Helen
SLL = Leonka Sira Leon||0
SOS = Shilingka Soomaaliya|S|0
SRD = Doolarka Surinamees
SSP = Boownka Koonfurta Suudaan
STN = Dobra Sao Tome & Birinsibal
SYP = Bowndka Suuriya||0
SZL = Lilangeenida iswasi
THB = Baatka Tayland
TJS = Somoon Tajikistan
TMT = Manaat Turkmenistan
TND = Dinaarka Tunisiya||3
TOP = Ba’anga Tonga
TRY = Liirada Turkiga|TL
TTD = Doolarka Tirinad iyo Tobago
TWD = Doollarka Taywaanta Cusubta|NT$
TZS = Shilingka Tansaaniya
UAH = Hirfiniyada Yukreeyn
UGX = Shilingka Uganda||0
UYU = Beeso Uruguay
UZS = Soom Usbekistan
VEF = Bolifar Fenesuala (2008–2018)|||1
VES = Bolifar Fenezuela
VND = Dong Fitnaam|₫|0
VUV = Fatu Fanuatu||0
WST = Tala Samao
XAF = Farank CFA ee Bartamaha Afrika|FCFA|0
XCD = Doolaraka Bariga Kaaribyan|EC$
XOF = Faranka CFA Galbeedka Afrika|CFA|0
XPF = Farank CFP|CFPF|0
XXX = Lacag aan la qoon ama aan saxnayn|¤||1
YER = Riyaalka Yemen||0
ZAR = Randka Koonfur Afrika
ZMW = Kawajada Sambiya
