# 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 = Iropiyianí ɔ́ɔ̄ lmarabu
AOA = Iropiyianí e Angola
AUD = Iropiyianí e Austria|A$
BHD = Iropiyianí e Bahareini||3
BIF = Iropiyianí e Burundi||0
BWP = Iropiyianí e Botswana
CAD = Iropiyianí e Kanada|CA$
CDF = Iropiyianí e Kongo
CHF = Iropiyianí e Uswisi
CNY = Iropiyianí e China|CN¥
CVE = Iropiyianí e Kepuvede
DJF = Iropiyianí e Jibuti||0
DZD = Iropiyianí e Algeria
EGP = Iropiyianí e Misri
ERN = Iropiyianí e Eritrea
ETB = Iropiyianí e Uhabeshi
EUR = Iropiyianí e yuro|€
GBP = Iropiyianí e Nkɨ́resa|£
GHC = Iropiyianí e Ghana|||1
GMD = Iropiyianí e Gambia
GNS = Iropiyianí e Gine|||1
INR = Iropiyianí e India|₹
JPY = Iropiyianí e Japani|JP¥|0
KES = Iropiyianí e Kenya|Ksh
KMF = Iropiyianí e Komoro||0
LRD = Iropiyianí e Liberia
LSL = Iropiyianí e Lesoto
LYD = Iropiyianí e Libya||3
MAD = Iropiyianí e Moroko
MGA = Iropiyianí e Bukini||0
MRO = Iropiyianí e Moritania||0
MUR = Iropiyianí e Morisi||0
MWK = Iropiyianí e Malawi
MZM = Iropiyianí e Msumbiji|||1
NAD = Iropiyianí e Namibia
NGN = Iropiyianí e Nijeria
RWF = Iropiyianí e Rwanda||0
SAR = Iropiyianí e Saudi
SCR = Iropiyianí e Shelisheli
SDG = Iropiyianí e Sudani
SHP = Iropiyianí e Santahelena
SLL = Iropiyianí e leoni||0
SOS = Iropiyianí e Somalia||0
STD = Iropiyianí e Saotome||0|1
SZL = Iropiyianí e lilangeni
TND = Iropiyianí e Tunisia||3
TZS = Iropiyianí e Tanzania||0
UGX = Iropiyianí e Uganda||0
USD = Iropiyianí ɔ́ɔ̄ lamarekani|US$
XAF = Iropiyianí e CFA BEAC|FCFA|0
XOF = Iropiyianí e CFA BCEAO|CFA|0
ZAR = Iropiyianí e Afrika Kusini
ZMK = Iropiyianí e Sambia (1968–2012)||0|1
ZMW = Iropiyianí e Sambia
ZWD = Iropiyianí e Simbabwe||0|1
