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