# 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 = i-Dirham yase-United Arab Emirates
AFN = i-Afghan Afghani||0
ALL = i-Albanian Lek||0
AMD = i-Armenian Dram
ANG = i-Netherlands Antillean Guilder
AOA = i-Angolan Kwanza
ARS = i-Argentina Peso
AUD = i-Austrilian Dollar|A$
AWG = i-Aruban Florin
AZN = i-Azerbaijani Manat
BAM = i-Bosnia-Herzegovina Convertible Mark
BBD = i-Barbadian Dollar
BDT = i-Bangladeshi Taka
BGN = i-Bulgarian Lev
BHD = i-Bahraini Dinar||3
BIF = i-Burundian Franc||0
BMD = i-Bermudan Dollar
BND = i-Brunei Dollar
BOB = i-Bolivian Boliviano
BRL = i-Brazilian Real|R$
BSD = i-Bahamian Dollar
BTN = i-Bhutanese Ngultrum
BWP = i-Botswana Pula
BYN = i-Belarusian Ruble
BYR = i-Belarusian Ruble (2000–2016)||0|1
BZD = i-Belize Dollar
CAD = i-Candian Dollar|CA$
CDF = i-Congolese Franc
CHF = i-Swiss Franc
CLP = i-Chilean Peso||0
CNY = i-Chinese Yuan|CN¥
COP = i-Colombian Peso
CRC = i-Costa Rican Colón
CUC = i-Cuban Convertable Peso
CUP = i-Cuban Peso
CVE = i-Cape Verdean Escudo
CZK = i-Czech Republic Koruna
DJF = i-Djiboutian Franc||0
DKK = i-Danish Krone
DOP = i-Dominican Peso
DZD = i-Algerian Dinar
EGP = i-Egyptian Pound
ERN = i-Eritrean Nakfa
ETB = i-Ethopian Birr
EUR = i-Euro|€
FJD = i-Fijian Dollar
FKP = i-Falkland Islands Pound
GBP = i-British Pound|£
GEL = i-Georgian Lari|₾
GHS = i-Ghanaian Cedi
GIP = i-Gibraltar Pound
GMD = i-Gambian Dalasi
GNF = i-Gunean Franc||0
GTQ = i-Guatemalan Quetzal
GYD = i-Guyanaese Dollar
HKD = i-Hong Kong Dollar|HK$
HNL = i-Honduran Lempira
HRK = i-Croatian Kuna
HTG = i-Haitian Gourde
HUF = i-Hungarian Forint
IDR = i-Indonesian Rupiah
ILS = i-Israeli New Sheqel|₪
INR = i-Indian Rupee|₹
IQD = i-Iraqi Dinar||0
IRR = i-Iranian Rial||0
ISK = i-Icelandic Króna||0
JMD = i-Jamaican Dollar
JOD = i-Jordanian Dinar||3
JPY = i-Japanese Yen|JP¥|0
KES = i-Kenyan Shilling
KGS = i-Kyrgystani Som
KHR = i-Cambodian Riel
KMF = i-Comorian Franc||0
KPW = i-North Korean Won||0
KRW = i-South Korean Won|₩|0
KWD = i-Kuwaiti Dinar||3
KYD = i-Cayman Islands Dollar
KZT = i-Kazakhstani Tenge
LAK = i-Laotian Kip||0
LBP = i-Lebanese Pound||0
LKR = i-Sri Lankan Rupee
LRD = i-Liberian Dollar
LSL = i-Lesotho Loti
LTL = i-Lithuanian Litas|||1
LVL = i-Latvian Lats|||1
LYD = i-Libyan Dinar||3
MAD = i-Moroccan Dirham
MDL = i-Moldovan Leu
MGA = i-Malagasy Ariary||0
MKD = i-Macedonian Denar
MMK = i-Myanma Kyat||0
MNT = i-Mongolian Tugrik
MOP = i-Macanese Pataca
MRO = i-Mauritanian Ouguiya (1973–2017)||0|1
MRU = i-Mauritanian Ouguiya
MUR = i-Mauritian Rupee
MVR = i-Maldivian Rufiyana
MWK = i-Malawian Kwacha
MXN = i-Mexican Peso|MX$
MYR = i-Malaysian Ringgit
MZN = i-Mozambican Metical
NAD = i-Namibian Dollar
NGN = i-Nigerian Naira
NIO = i-Nicaraguan Córdoba
NOK = i-Norwegian Krone
NPR = i-Nepalese Rupee
NZD = i-New Zealand Dollar|NZ$
OMR = i-Omani Rial||3
PAB = i-Panamanian Balboa
PEN = i-Peruvian Nuevo Sol
PGK = i-Papua New Guinean Kina
PHP = i-Philippine Peso
PKR = i-Pakistani Rupee
PLN = i-Polish Zloty
PYG = i-Paraguayan Guarani||0
QAR = i-Qatari Rial
RON = i-Romanian Leu
RSD = i-Serbian Dinar||0
RUB = i-Russian Ruble
RWF = i-Rwandan Franc||0
SAR = i-Saudi Riyal
SBD = i-Solomon Islands Dollar
SCR = i-Seychellois Rupee
SDG = i-Sudanese Pound
SEK = i-Swedish Krona
SGD = i-Singapore Dollar
SHP = i-Saint Helena Pound
SLL = i-Sierra Leonean Leone||0
SOS = i-Somali Shilling||0
SRD = i-Surinamese Dollar
SSP = i-South Sudanese Pound
STD = i-São Tomé kanye ne-Príncipe Dobra (1977–2017)||0|1
STN = i-São Tomé kanye ne-Príncipe Dobra
SYP = i-Syrian Pound||0
SZL = i-Swazi Lilangeni
THB = i-Thai Baht|฿
TJS = i-Tajikistani Somoni
TMT = i-Turkmenistani Manat
TND = i-Tunisian Dinar||3
TOP = i-Tongan Paʻanga
TRY = i-Turkish Lira|TL
TTD = i-Trinidad and Tobago Dollar
TWD = i-New Taiwan Dollar|NT$
TZS = i-Tanzanian Shilling
UAH = i-Ukrainian Hryvnia
UGX = i-Ugandan Shilling||0
USD = i-US Dollar|US$
UYU = i-Uruguayan Peso
UZS = i-Uzbekistan Som
VEF = i-Venezuelan Bolívar (2008–2018)|||1
VES = i-Venezuelan Bolívar
VND = i-Vietnamese Dong|₫|0
VUV = i-Vanuatu Vatu||0
WST = i-Samoan Tala
XAF = i-Central African CFA Franc|FCFA|0
XCD = i-East Caribbean Dollar|EC$
XOF = i-West African CFA Franc|CFA|0
XPF = i-CFP Franc|CFPF|0
XXX = imali engaziwa|¤||1
YER = i-Yemeni Rial||0
ZAR = i-South African Rand|R
ZMK = i-Zambian Kwacha (1968–2012)||0|1
ZMW = i-Zambian Kwacha
