# 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=ses
AED = Laaraw Immaara Margantey Dirham
AOA = Angoola Kwanza
AUD = Ostraali Dollar|$
BHD = Bahareen Dinar||3
BIF = Burundi Fraŋ||0
BWP = Botswaana Pund
CAD = Kanaada Dollar|CA$
CDF = Kongo Fraŋ
CHF = Swisu Fraŋ
CNY = Sinwa Yuan Renminbi|¥
CVE = Kapuver Escudo
DJF = Jibuuti Fraŋ||0
DZD = Alžeeri Dinar
EGP = Misra Pund
ERN = Eritree Nafka
ETB = Ecioopi Birr
EUR = Eero|€
GBP = Britin Pund|£
GHC = Gaana Šiidi|||1
GMD = Gambi Dalasi
GNS = Ginee Fraŋ|||1
INR = Indu Rupii|Rs.
JPY = Jaapoŋ Yen|¥|0
KES = Keeniya Šiiliŋ
KMF = Komoor Fraŋ||0
LRD = Liberia Dollar
LSL = Leezoto Loti
LYD = Liibi Dinar||3
MAD = Maarok Dirham
MGA = Malgaaši Fraŋ||0
MRO = Mooritaani Ugiya||0
MUR = Mooris Rupii||0
MWK = Malaawi Kwaca
MZM = Mozambik Metikal|||1
NAD = Naamibi Dollar|$
NGN = Naajiriya Neera
RWF = Rwanda Fraŋ||0
SAR = Saudiya Riyal
SCR = Seešel Rupii
SDG = Suudaŋ Dinar
SDP = Suudaŋ Pund|||1
SHP = Seŋ Helena Fraŋ
SLL = Leeon||0
SOS = Somaali Šiiliŋ||0
STD = Sao Tome nda Prinsipe Dobra||0
SZL = Lilangeni
TND = Tunizi Dinar||3
TZS = Tanzaani Šiiliŋ||0
UGX = Uganda Šiiliŋ||0
USD = Ameriki Dollar|$
XAF = CFA Fraŋ (BEAC)|FCFA|0
XOF = CFA Fraŋ (BCEAO)|CFA|0
ZAR = Hawasa Afriki Rand
ZMK = Zambi Kwaca (1968–2012)||0|1
ZMW = Zambi Kwaca
ZWD = Zimbabwe Dollar||0|1
