# 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-13 05:14:13 +0100 (Thu, 13 Feb 2014) $
#  number=$Revision: 9728 $
#  type=root
AED = arabu mara kafoli Diram
AOA = angola Kwanza
AUD = ositirali Dolar|$
BHD = bareyini Dinar||3
BIF = burundi Fraŋ||0
BWP = bɔtisiwana Pula
CAD = kanada Dolar|CA$
CDF = kongole Fraŋ
CHF = suwisi Fraŋ
CNY = siniwa Yuwan|¥
CVE = capivɛrdi Esekudo
DJF = jibuti Fraŋ||0
DZD = alizeri Dinar
EGP = eziputi Livri
ERN = eritere Nafika
ETB = etiopi Bir
EUR = ero|€
GBP = angilɛ Livri Siterlingi|£
GHC = gana Sedi|||1
GMD = gambi Dalasi
GNS = gine Fraŋ|||1
INR = Ɛndu Rupi|Rs.
JPY = zapɔne Yɛn|¥|0
KES = keniya Siling
KMF = komɔri Fraŋ||0
LRD = liberiya Dolar
LSL = lesoto Loti
LYD = libi Dinar||3
MAD = marɔku Diram
MGA = madagasikari Fraŋ||0
MRO = mɔritani Uguwiya||0
MUR = morisi Rupi||0
MWK = malawi Kwaca
MZM = mozanbiki Metikali|||1
NAD = namibi Dolar|$
NGN = nizeriya Nɛra
RWF = ruwanda Fraŋ||0
SAR = sawudiya Riyal
SCR = sesɛli Rupi
SDG = sudani Dinar
SDP = sudani Livri|||1
SHP = Ɛlɛni-Senu Livri
SLL = siyeralewɔni Lewɔni||0
SOS = somali Siling||0
STD = sawotome Dobra||0
SZL = swazilandi Lilangeni
TND = tunizi Dinar||3
TZS = tanzani Siling||0
UGX = uganda Siling||0
USD = ameriki Dolar|$
XAF = sefa Fraŋ (BEAC)|FCFA|0
XOF = sefa Fraŋ (BCEAO)|CFA|0
ZAR = sudafriki Randi
ZMK = zambi Kwaca (1968–2012)||0|1
ZMW = zambi Kwaca
ZWD = zimbabuwe Dolar||0|1
