# 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: 2013-08-29 04:32:04 +0200 (Thu, 29 Aug 2013) $
#  number=$Revision: 9287 $
#  type=root
AED = Dilàm è Yùnaetɛ Alab Emelɛ̀
AOA = Kwanzà è Àŋgolà
AUD = Dɔlà e Ùsɨ̀tɛ̀lɛlìa|$
BHD = Dinà è Balae||3
BIF = Fàlâŋ è Bùlundì||0
BWP = Kpuwlà è Botɨshǔanà
CAD = Dɔlà è Kanadà|CA$
CDF = Fàlâŋ è Kuŋgùlê
CHF = Fàlâŋ è Sues
CNY = Yùwân Lèmembi è Chaenî|¥
CVE = Kàbòvàdianù è Èsùkudò
DJF = Fàlâŋ è Dzìbutì||0
DZD = Dinà è Àdzɛlìa
EGP = Bɔ̀ŋ è Edzì
ERN = Nakafa è Èletɨ̀làe
ETB = Bîi è Etyǒkpìa
EUR = Yulù|€
GBP = Bɔ̀ŋ Sɨ̀telè è Bèletì|£
GHC = Sɛ̀di è Gaanà|||1
GMD = Dàlasì è Gambìa
GNS = Fàlâŋ è Ginè|||1
INR = Lukpì è Endìa|Rs.
JPY = Ghɨ̂n Dzàkpànê|¥|0
KES = Shwɨlà tɨ Kenyà
KMF = Fàlâŋ è Komolìa||0
LRD = Dɔlà Làebɛlìa
LSL = Lɔtì Lèsutù
LYD = Dinà è Lebìa||3
MAD = Dilàm è Mòlokò
MGA = Àlǐalè è Màlàgasì||0
MRO = Ùgueya è Mùlètenyìa||0
MUR = Lukpìi è Mùleshòs||0
MWK = Kwachà è Màlawè
MZM = Mètikà è Mùzàmbî|||1
NAD = Dɔlà è Nàmibìa|$
NGN = Naelà è Gɨ̀anyɨ
RWF = Fàlâŋ è Lùwandà||0
SAR = Leyà è Sàwudì
SCR = Lukpìi è Sɛchɛ̀lɛ̀
SDG = Bɔ̀ŋ è Sùdànê
SHP = Bɔ̀ŋ è Sɛ̀n Èlenà
SLL = Lyɔ̂ŋ||0
SOS = Shwɨlà è Sùmalìa||0
STD = Dɔbàlà è Sàwu Tɔ̀me à Pèlènsipè||0
SZL = Lèlàŋgenè
TND = Dinà è Tùwneshìa||3
TZS = Shwɨlà è Tàanzanyìa||0
UGX = Shwɨlà è Yùgandà||0
USD = Dɔlà è US|$
XAF = CFA Fàlâŋ BEAC|FCFA|0
XOF = CFA Fàlâŋ BCEAO|CFA|0
ZAR = Lân è Afɨlekà ghɨ Emàm ghò
ZMK = Kwachà è Zambìa (1968–2012)||0|1
ZMW = Kwachà è Zambìa
ZWD = Dɔlà è Zìmbagbɛ̀||0|1
