# 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
ADP = ADP||0|1
AED = AED
AFA = AFA|||1
AFN = AFN||0
ALK = ALK|||1
ALL = ALL||0
AMD = AMD
ANG = ANG
AOA = AOA
AOK = AOK|||1
AON = AON|||1
AOR = AOR|||1
ARA = ARA|||1
ARP = ARP|||1
ARS = ARS
ATS = ATS|||1
AUD = AUD|A$
AWG = AWG
AZM = AZM|||1
AZN = манат|ман.
BAD = BAD|||1
BAM = BAM
BBD = BBD
BDT = BDT
BEC = BEC|||1
BEF = BEF|||1
BEL = BEL|||1
BGL = BGL|||1
BGN = BGN
BHD = BHD||3
BIF = BIF||0
BMD = BMD
BND = BND
BOB = BOB
BOP = BOP|||1
BOV = BOV|||1
BRB = BRB|||1
BRC = BRC|||1
BRE = BRE|||1
BRL = BRL|R$
BRN = BRN|||1
BRR = BRR|||1
BSD = BSD
BTN = BTN
BUK = BUK|||1
BWP = BWP
BYB = BYB|||1
BYN = BYN
BYR = BYR||0|1
BZD = BZD
CAD = CAD|CA$
CDF = CDF
CHE = CHE|||1
CHF = CHF
CHW = CHW|||1
CLP = CLP||0
CNH = CNH|||1
CNY = CNY|CN¥
COP = COP
CRC = CRC
CSD = CSD|||1
CSK = CSK|||1
CUC = CUC
CUP = CUP
CVE = CVE
CYP = CYP|||1
CZK = CZK
DDM = DDM|||1
DEM = DEM|||1
DJF = DJF||0
DKK = DKK
DOP = DOP
DZD = DZD
ECS = ECS|||1
EEK = EEK|||1
EGP = EGP
ERN = ERN
ESA = ESA|||1
ESB = ESB|||1
ESP = ESP||0|1
ETB = ETB
EUR = EUR|€
FIM = FIM|||1
FJD = FJD
FKP = FKP
FRF = FRF|||1
GBP = GBP|£
GEK = GEK|||1
GEL = GEL
GHC = GHC|||1
GHS = GHS
GIP = GIP
GMD = GMD
GNF = GNF||0
GNS = GNS|||1
GQE = GQE|||1
GRD = GRD|||1
GTQ = GTQ
GWE = GWE|||1
GWP = GWP|||1
GYD = GYD
HKD = HKD|HK$
HNL = HNL
HRD = HRD|||1
HRK = HRK
HTG = HTG
HUF = HUF
IDR = IDR
IEP = IEP|||1
ILP = ILP|||1
ILR = ILR|||1
ILS = ILS|₪
INR = INR|₹
IQD = IQD||0
IRR = IRR||0
ISJ = ISJ|||1
ISK = ISK||0
ITL = ITL||0|1
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
LSL = LSL
LTL = LTL|||1
LTT = LTT|||1
LUC = LUC|||1
LUF = LUF||0|1
LUL = LUL|||1
LVL = LVL|||1
LVR = LVR|||1
LYD = LYD||3
MAD = MAD
MAF = MAF|||1
MDL = MDL
MGA = MGA||0
MGF = MGF||0|1
MKD = MKD
MKN = MKN|||1
MLF = MLF|||1
MMK = MMK||0
MNT = MNT
MOP = MOP
MRO = MRO||0|1
MRU = MRU
MTP = MTP|||1
MUR = MUR
MVR = MVR
MWK = MWK
MXN = MXN|MX$
MXP = MXP|||1
MYR = MYR
MZE = MZE|||1
MZM = MZM|||1
MZN = MZN
NAD = NAD
NGN = NGN
NIC = NIC|||1
NIO = NIO
NLG = NLG|||1
NOK = NOK
NPR = NPR
NZD = NZD|NZ$
OMR = OMR||3
PAB = PAB
PEI = PEI|||1
PEN = PEN
PES = PES|||1
PGK = PGK
PHP = PHP
PKR = PKR
PLN = PLN
PLZ = PLZ|||1
PTE = PTE|||1
PYG = PYG||0
QAR = QAR
RHD = RHD|||1
ROL = ROL|||1
RON = RON
RSD = RSD||0
RUB = RUB
RUR = RUR|||1
RWF = RWF||0
SAR = SAR
SBD = SBD
SCR = SCR
SDG = SDG
SEK = SEK
SGD = SGD
SHP = SHP
SIT = SIT|||1
SKK = SKK|||1
SLL = SLL||0
SOS = SOS||0
SRD = SRD
SSP = SSP
STD = STD||0|1
STN = STN
SUR = SUR|||1
SVC = SVC|||1
SYP = SYP||0
SZL = SZL
THB = THB
TJR = TJR|||1
TJS = TJS
TMM = TMM||0|1
TMT = TMT
TND = TND||3
TOP = TOP
TPE = TPE|||1
TRL = TRL||0|1
TRY = TRY|TL
TTD = TTD
TWD = TWD|NT$
TZS = TZS
UAH = UAH
UAK = UAK|||1
UGS = UGS|||1
UGX = UGX||0
USD = USD|US$
USN = USN|||1
USS = USS|||1
UYI = UYI||0|1
UYP = UYP|||1
UYU = UYU
UZS = UZS
VEB = VEB|||1
VEF = VEF|||1
VES = VES
VND = VND|₫|0
VNN = VNN|||1
VUV = VUV||0
WST = WST
XAF = XAF|FCFA|0
XAG = XAG|||1
XAU = XAU|||1
XCD = XCD|EC$
XFO = XFO|||1
XFU = XFU|||1
XOF = XOF|CFA|0
XPD = XPD|||1
XPF = XPF|CFPF|0
XPT = XPT|||1
XXX = XXX|¤||1
YDD = YDD|||1
YER = YER||0
YUD = YUD|||1
YUM = YUM|||1
YUN = YUN|||1
ZAL = ZAL|||1
ZAR = ZAR
ZMK = ZMK||0|1
ZMW = ZMW
ZRN = ZRN|||1
ZRZ = ZRZ|||1
ZWD = ZWD||0|1
ZWL = ZWL|||1
ZWR = ZWR|||1
