# 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 = AED
AFN = افغانی|؋|0
ALL = ALL||0
AMD = AMD
ANG = ANG
AOA = AOA
ARS = ARS
AUD = AUD|A$
AWG = AWG
AZN = AZN
BAM = BAM
BBD = BBD
BDT = BDT
BGN = BGN
BHD = BHD||3
BIF = BIF||0
BMD = BMD
BND = BND
BOB = BOB
BRL = BRL|R$
BSD = BSD
BTN = BTN
BWP = BWP
BYN = BYN
BYR = BYR||0|1
BZD = BZD
CAD = CAD|CA$
CDF = CDF
CHF = CHF
CLP = CLP||0
CNY = CNY|CN¥
COP = COP
CRC = CRC
CUC = CUC
CUP = CUP
CVE = CVE
CZK = CZK
DJF = DJF||0
DKK = DKK
DOP = DOP
DZD = DZD
EGP = EGP
ERN = ERN
ETB = ETB
EUR = EUR|€
FJD = FJD
FKP = FKP
GBP = GBP|£
GEL = GEL
GHS = GHS
GIP = GIP
GMD = GMD
GNF = GNF||0
GTQ = GTQ
GYD = GYD
HKD = HKD|HK$
HNL = HNL
HRK = HRK
HTG = HTG
HUF = HUF
IDR = IDR
ILS = ILS|₪
INR = INR|₹
IQD = IQD||0
IRR = IRR||0
ISK = ISK||0
JMD = JMD
JOD = JOD||3
JPY = JPY|JP¥|0
KES = KES
KGS = KGS
KHR = KHR
KMF = KMF||0
KPW = KPW||0
KRW = KRW|₩|0
KWD = KWD||3
KYD = KYD
KZT = KZT
LAK = LAK||0
LBP = LBP||0
LKR = LKR
LRD = LRD
LTL = LTL|||1
LVL = LVL|||1
LYD = LYD||3
MAD = MAD
MDL = MDL
MGA = MGA||0
MKD = MKD
MMK = MMK||0
MNT = MNT
MOP = MOP
MRO = MRO||0|1
MRU = MRU
MUR = MUR
MVR = MVR
MWK = MWK
MXN = MXN|MX$
MYR = MYR
MZN = MZN
NAD = NAD
NGN = NGN
NIO = NIO
NOK = NOK
NPR = NPR
NZD = NZD|NZ$
OMR = OMR||3
PAB = PAB
PEN = PEN
PGK = PGK
PHP = PHP
PKR = PKR
PLN = PLN
PYG = PYG||0
QAR = QAR
RON = RON
RSD = RSD||0
RUB = RUB
RWF = RWF||0
SAR = SAR
SBD = SBD
SCR = SCR
SDG = SDG
SEK = SEK
SGD = SGD
SHP = SHP
SLL = SLL||0
SOS = SOS||0
SRD = SRD
SSP = SSP
STD = STD||0|1
STN = STN
SYP = SYP||0
SZL = SZL
THB = THB
TJS = TJS
TMT = TMT
TND = TND||3
TOP = TOP
TRY = TRY|TL
TTD = TTD
TWD = TWD|NT$
TZS = TZS
UAH = UAH
UGX = UGX||0
USD = USD|US$
UYU = UYU
UZS = UZS
VEF = VEF|||1
VES = VES
VND = VND|₫|0
VUV = VUV||0
WST = WST
XAF = XAF|FCFA|0
XCD = XCD|EC$
XOF = XOF|CFA|0
XPF = XPF|CFPF|0
XXX = XXX|¤||1
YER = YER||0
ZAR = ZAR
ZMW = ZMW
