Goal
The goal is to reproduce the calculation reported in Figure 2 in
“Which Teachers Choose a Defined Contribution Pension Plan? Evidence
from the Florida Retirement System” (Chingos and West, 2015) [PDF].
All calculation is based on a person starting working at age 32.
DC Plan
Compute the account balance for someone starting working at age 32,
enrolled in a DC plan and leaving the system after working for
T years where T ranges from 1 to 30.
Parameters
Factors relevant to DC plan
m0: initial salary
a: annual salary increasing rate
contribution: annual contribution rate (including the
matching rate from employer)
ave.r: annual investment return rate
Set some initial parameters.
m0 = 60000
a = 0.03
ave.r = 5 / 100
contribution = 15.6 / 100
T = 30
Code
xValues: Years of Consecutive Service Prior to
Separation (start age = 32). In the Florida paper, this value ranges
from 1 to 30.
yValues: Account balance at age 62.
BalanceDC= function(T, ave.r){
xValues = c(1:T) + 32
yValues = rep(0, T)
for (t in 1:T){
AccountBalance = 0
mT = m0
for(j in 1:t){
anualDeposit = mT * contribution
monthlyDeposit = anualDeposit/12
M = exp(log(1+ave.r)/12)
for (m in 1:12){
AccountBalance = AccountBalance * M + monthlyDeposit
}
mT = mT * (1 + a)
}
AccountBalance = AccountBalance * (1 + ave.r)^(T-t)
yValues[t] = AccountBalance
}
return(data.frame(x=xValues, y=yValues))
}
Plot
test = BalanceDC(T, ave.r)
x = test$x
y = test$y
plot (x, y,
xlab = "Years of Service",
ylab = "Pension Wealth",
main = "Net Present Value of DC Benefits at age 62")

DB Plan
Assume a person starts working at age 32, enrolled in a DC plan and
leeaves the system after working for T years where
T ranges from 1 to 30.
Parameters
Factors relevant to DB plan
m0: initial salary
a: annual salary increasing rate
pension : annual pension income
discount.r: discount rate minus the pension annual
increase rate. For example, if discount rate is 3% but also pension will
increase annually with 3%, then discount.r = 0.
The formula for pension varies from plan to plan. It is
usually equal to the product of the following two quantities (determined
by the plan):
ave.m: average salary. For example, the Florida
teacher’s DB plan defines ave.m to be the average salary
over the last 5 years of the teacher’s career.
pension.percent: pension percentage. For example,
the Florida teacher’s DB plan defines this percentage to be equal to
1.6 times T when T is bigger
than 5 and 0 when T is less than or equal
to 5.
Some initial values
m0 = 60000
a = 0.03
T = 30
pension.percent = 1.6 / 100
Code
xValues: Years of Consecutive Service Prior to
Separation (start age = 32). In the Florida paper, this value ranges
from 1 to 30.
yValues: Net present value (NPV) of the
corresponding pension income
Our calculation involves two steps.
Step 1: compute the annual pension income, which is the product
of ave.m and pension.percent.
Step 2: compute the (expected) NPV of the stream
of pension income from age 63 to age 119 using the Actuarial Life
Table from SSA website; we use the death rate averaged over male and
female. The NPV formula is given below \[
\sum_{\text{age} = 63}^{119} ... = \sum_{t = 63-62}^{(119 - 62)}
\text{annual-pension-income} \times p_t \times v^{t - 0.5}
\] where \(v\) \[
v = \frac{1}{1 + \text{discount.rate}}
\] is the discount factor and \[
\begin{aligned}
p_t = & \mathbb{P}(\text{still alive at age} (62+t) \mid
\text{alive at age } 62) \\
= & \quad \mathbb{P}(\text{surve for a year} \mid \text{alive at
age } 62) \\
& \times \mathbb{P}(\text{surve for a year} \mid \text{alive at age
} 63) \times \\
& \times \cdots \times \mathbb{P}(\text{surve for a year} \mid
\text{alive at age } 62+t-1) \\
= & \prod_{j=1}^t \Big [ 1 - \mathbb{P} \big (\text{die within a
year } \mid \text{alive at age } (62 + j-1) \big ) \Big ].
\end{aligned}
\]
The probabilities in the last row above can be find from the Actuarial Life
Table.
First, compute the probabilities.
data = read.table("mtable.txt", sep="\t")
names(data) = c("Age", "m.prob", "m.lives", "m.exp",
"f.prob", "f.lives", "f.exp")
newdata = data.frame(Age = data$Age,
prob = data$m.prob + data$f.prob)
probs = newdata$prob[newdata$Age >= 62]
rm("data", "newdata")
Then, compute NPV for DB plan.
BalanceDB= function(T, discount.r){
xValues = c(1:T) + 32
yValues = rep(0, T)
if (T < 6) {
return(data.frame(x=xValues, y=yValues))
exit
}
# Compute the annual pension income
pension = rep(0, T)
for (t in 6:T){
# compute ave.m: the average of the last five years' salaries
tmp = tail(1:t, 5)
tmp = tmp - 0.5
ave.m = mean(m0 * (1 + a)^tmp)
# compute pension income
pension[t] = ave.m * pension.percent * t
}
# Compute NPV of pension income
pt = 1
v = 1 / (1 + discount.r)
vt = v^{- 0.5}
for(t in 1:length(probs)){
pt = pt * (1 - probs[t])
vt = vt * v
yValues = yValues + pension * pt * vt
}
return(data.frame(x = xValues, y = yValues))
}
Plot
discount.r = 0.03 - 0.03
# discount.r = 0.07 - 0.03
test = BalanceDB(T, discount.r)
x = test$x
y = test$y
plot(x, y, type="n", yaxt="n",
xlab = "Years of Service",
ylab = "Pension Wealth (in Dollars)",
main = "Net Present Value of DC Benefits at age 62")
lines(x, y, lty = 2)
points(x, y, pty = 2)
ytick = (1:11)*100000
axis(2, at = ytick, las = 2, cex.axis = 0.6,
labels = formatC(ytick, big.mark = ",", format="f", digits = 0))

LS0tCnRpdGxlOiAiUGxhbiBDb21wYXJzaW9uIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRoZW1lOiByZWFkYWJsZQogICAgdG9jOiBUUlVFCiAgICB0b2NfZmxvYXQ6IFRSVUUKLS0tCgojIyBHb2FsCgpUaGUgZ29hbCBpcyB0byByZXByb2R1Y2UgdGhlIGNhbGN1bGF0aW9uIHJlcG9ydGVkIGluIEZpZ3VyZSAyIGluICJXaGljaCBUZWFjaGVycyBDaG9vc2UgYSBEZWZpbmVkIENvbnRyaWJ1dGlvbiBQZW5zaW9uIFBsYW4/ICBFdmlkZW5jZSBmcm9tIHRoZSBGbG9yaWRhIFJldGlyZW1lbnQgU3lzdGVtIiAoW0NoaW5nb3MgYW5kIFdlc3QsIDIwMTVdKGh0dHBzOi8vZXJpYy5lZC5nb3YvP2lkPUVKMTA1ODM1MSkpIFtbUERGXShodHRwczovL3d3dy5oa3MuaGFydmFyZC5lZHUvc2l0ZXMvZGVmYXVsdC9maWxlcy9UYXVibWFuL1BFUEcvcmVzZWFyY2gvUEVQRzEzXzAxLnBkZildLiAKCgpBbGwgY2FsY3VsYXRpb24gaXMgYmFzZWQgb24gYSBwZXJzb24gc3RhcnRpbmcgd29ya2luZyBhdCBhZ2UgMzIuIAoKCiMjIERDIFBsYW4KCkNvbXB1dGUgdGhlIGFjY291bnQgYmFsYW5jZSBmb3Igc29tZW9uZSBzdGFydGluZyB3b3JraW5nIGF0IGFnZSAzMiwgZW5yb2xsZWQgaW4gYSBEQyBwbGFuIGFuZCBsZWF2aW5nIHRoZSBzeXN0ZW0gYWZ0ZXIgd29ya2luZyBmb3IgYFRgIHllYXJzIHdoZXJlIGBUYCByYW5nZXMgZnJvbSAxIHRvIDMwLiAKCiMjIyBQYXJhbWV0ZXJzCgpGYWN0b3JzIHJlbGV2YW50IHRvIERDIHBsYW4KCi0gYG0wYDogaW5pdGlhbCBzYWxhcnkKLSBgYWA6IGFubnVhbCBzYWxhcnkgaW5jcmVhc2luZyByYXRlCi0gYGNvbnRyaWJ1dGlvbmA6IGFubnVhbCBjb250cmlidXRpb24gcmF0ZSAoaW5jbHVkaW5nIHRoZSBtYXRjaGluZyByYXRlIGZyb20gZW1wbG95ZXIpCi0gYGF2ZS5yYDogYW5udWFsIGludmVzdG1lbnQgcmV0dXJuIHJhdGUKClNldCBzb21lIGluaXRpYWwgcGFyYW1ldGVycy4gCgpgYGB7cn0KbTAgPSA2MDAwMAphID0gMC4wMwphdmUuciA9IDUgLyAxMDAKY29udHJpYnV0aW9uID0gMTUuNiAvIDEwMApUID0gMzAKYGBgCgojIyMgQ29kZQoKLSBgeFZhbHVlc2A6IFllYXJzIG9mIENvbnNlY3V0aXZlIFNlcnZpY2UgUHJpb3IgdG8gU2VwYXJhdGlvbiAoc3RhcnQgYWdlID0gMzIpLiBJbiB0aGUgRmxvcmlkYSBwYXBlciwgdGhpcyB2YWx1ZSByYW5nZXMgZnJvbSAxIHRvIDMwLgoKLSBgeVZhbHVlc2A6IEFjY291bnQgYmFsYW5jZSBhdCBhZ2UgNjIuCgoKYGBge3J9CkJhbGFuY2VEQz0gZnVuY3Rpb24oVCwgYXZlLnIpewogIHhWYWx1ZXMgPSBjKDE6VCkgKyAzMgogIHlWYWx1ZXMgPSByZXAoMCwgVCkKICAKICBmb3IgKHQgaW4gMTpUKXsKICAgIEFjY291bnRCYWxhbmNlID0gMAogICAgbVQgPSBtMAogICAgZm9yKGogaW4gMTp0KXsKICAgICAgYW51YWxEZXBvc2l0ID0gbVQgKiBjb250cmlidXRpb24KICAgICAgbW9udGhseURlcG9zaXQgPSBhbnVhbERlcG9zaXQvMTIKICAgIAogICAgICBNID0gZXhwKGxvZygxK2F2ZS5yKS8xMikKICAgICAgZm9yIChtIGluIDE6MTIpewogICAgICAgIEFjY291bnRCYWxhbmNlID0gQWNjb3VudEJhbGFuY2UgKiBNICsgbW9udGhseURlcG9zaXQKICAgICAgfQogICAgICBtVCA9IG1UICogKDEgKyBhKQogICAgfQogICAgCiAgICBBY2NvdW50QmFsYW5jZSA9IEFjY291bnRCYWxhbmNlICogKDEgKyBhdmUucileKFQtdCkgICAgCiAgICB5VmFsdWVzW3RdID0gQWNjb3VudEJhbGFuY2UKICB9CiAgIAogcmV0dXJuKGRhdGEuZnJhbWUoeD14VmFsdWVzLCB5PXlWYWx1ZXMpKQp9CmBgYAoKIyMjIFBsb3QKCgpgYGB7cn0KdGVzdCA9IEJhbGFuY2VEQyhULCBhdmUucikKeCA9IHRlc3QkeAp5ID0gdGVzdCR5CgpwbG90ICh4LCB5LAogICAgICAgIHhsYWIgPSAiWWVhcnMgb2YgU2VydmljZSIsCiAgICAgICAgeWxhYiA9ICJQZW5zaW9uIFdlYWx0aCIsCiAgICAgICAgbWFpbiA9ICJOZXQgUHJlc2VudCBWYWx1ZSBvZiBEQyBCZW5lZml0cyBhdCBhZ2UgNjIiKQpgYGAKCiMjIERCIFBsYW4KCkFzc3VtZSBhIHBlcnNvbiBzdGFydHMgd29ya2luZyBhdCBhZ2UgMzIsIGVucm9sbGVkIGluIGEgREMgcGxhbiBhbmQgbGVlYXZlcyB0aGUgc3lzdGVtIGFmdGVyIHdvcmtpbmcgZm9yIGBUYCB5ZWFycyB3aGVyZSBgVGAgcmFuZ2VzIGZyb20gMSB0byAzMC4KCiMjIyBQYXJhbWV0ZXJzCgpGYWN0b3JzIHJlbGV2YW50IHRvIERCIHBsYW4KCi0gYG0wYDogaW5pdGlhbCBzYWxhcnkKLSBgYWA6IGFubnVhbCBzYWxhcnkgaW5jcmVhc2luZyByYXRlCi0gYHBlbnNpb25gIDogYW5udWFsIHBlbnNpb24gaW5jb21lCi0gYGRpc2NvdW50LnJgOiBkaXNjb3VudCByYXRlIG1pbnVzIHRoZSBwZW5zaW9uIGFubnVhbCBpbmNyZWFzZSByYXRlLiBGb3IgZXhhbXBsZSwgaWYgZGlzY291bnQgcmF0ZSBpcyAzXCUgYnV0IGFsc28gcGVuc2lvbiB3aWxsIGluY3JlYXNlIGFubnVhbGx5IHdpdGggM1wlLCB0aGVuIGBkaXNjb3VudC5yID0gMGAuCgpUaGUgZm9ybXVsYSBmb3IgYHBlbnNpb25gIHZhcmllcyBmcm9tIHBsYW4gdG8gcGxhbi4gSXQgaXMgdXN1YWxseSBlcXVhbCB0byB0aGUgcHJvZHVjdCBvZiB0aGUgZm9sbG93aW5nIHR3byBxdWFudGl0aWVzIChkZXRlcm1pbmVkIGJ5IHRoZSBwbGFuKTogCgotIGBhdmUubWA6IGF2ZXJhZ2Ugc2FsYXJ5LiBGb3IgZXhhbXBsZSwgdGhlIEZsb3JpZGEgdGVhY2hlcidzIERCIHBsYW4gZGVmaW5lcyBgYXZlLm1gIHRvIGJlIHRoZSBhdmVyYWdlIHNhbGFyeSBvdmVyIHRoZSBsYXN0ICoqNSoqIHllYXJzIG9mIHRoZSB0ZWFjaGVyJ3MgY2FyZWVyLiAKCi0gYHBlbnNpb24ucGVyY2VudGA6IHBlbnNpb24gcGVyY2VudGFnZS4gRm9yIGV4YW1wbGUsIHRoZSBGbG9yaWRhIHRlYWNoZXIncyBEQiBwbGFuIGRlZmluZXMgdGhpcyBwZXJjZW50YWdlIHRvIGJlIGVxdWFsIHRvICoqMS42KiogdGltZXMgYFRgIHdoZW4gYFRgIGlzIGJpZ2dlciB0aGFuIDUgYW5kICoqMCoqIHdoZW4gYFRgIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byA1LiAKCgpTb21lIGluaXRpYWwgdmFsdWVzCgpgYGB7cn0KbTAgPSA2MDAwMAphID0gMC4wMwpUID0gMzAKcGVuc2lvbi5wZXJjZW50ID0gMS42IC8gMTAwCmBgYAoKIyMjIENvZGUKCgotIGB4VmFsdWVzYDogWWVhcnMgb2YgQ29uc2VjdXRpdmUgU2VydmljZSBQcmlvciB0byBTZXBhcmF0aW9uIChzdGFydCBhZ2UgPSAzMikuIEluIHRoZSBGbG9yaWRhIHBhcGVyLCB0aGlzIHZhbHVlIHJhbmdlcyBmcm9tIDEgdG8gMzAuCgotIGB5VmFsdWVzYDogTmV0IHByZXNlbnQgdmFsdWUgKE5QVikgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcGVuc2lvbiBpbmNvbWUKCk91ciBjYWxjdWxhdGlvbiBpbnZvbHZlcyB0d28gc3RlcHMuIAoKLSBTdGVwIDE6IGNvbXB1dGUgdGhlIGFubnVhbCBwZW5zaW9uIGluY29tZSwgd2hpY2ggaXMgdGhlIHByb2R1Y3Qgb2YgYGF2ZS5tYCBhbmQgYHBlbnNpb24ucGVyY2VudGAuCgotIFN0ZXAgMjogY29tcHV0ZSB0aGUgKCoqZXhwZWN0ZWQqKikgTlBWIG9mIHRoZSBzdHJlYW0gb2YgcGVuc2lvbiBpbmNvbWUgZnJvbSBhZ2UgNjMgdG8gYWdlIDExOSB1c2luZyB0aGUgW0FjdHVhcmlhbCBMaWZlIFRhYmxlXShodHRwczovL3d3dy5zc2EuZ292L29hY3QvU1RBVFMvdGFibGU0YzYuaHRtbCNmbjEpIGZyb20gU1NBIHdlYnNpdGU7IHdlIHVzZSB0aGUgZGVhdGggcmF0ZSBhdmVyYWdlZCBvdmVyIG1hbGUgYW5kIGZlbWFsZS4gVGhlIE5QViBmb3JtdWxhIGlzIGdpdmVuIGJlbG93CiQkClxzdW1fe1x0ZXh0e2FnZX0gPSA2M31eezExOX0gLi4uICA9IFxzdW1fe3QgPSA2My02Mn1eeygxMTkgLSA2Mil9IFx0ZXh0e2FubnVhbC1wZW5zaW9uLWluY29tZX0gXHRpbWVzIHBfdCBcdGltZXMgdl57dCAtIDAuNX0KJCQKd2hlcmUgJHYkIAokJCAgCnYgPSBcZnJhY3sxfXsxICsgXHRleHR7ZGlzY291bnQucmF0ZX19CiQkCmlzIHRoZSBkaXNjb3VudCBmYWN0b3IgYW5kCiQkClxiZWdpbnthbGlnbmVkfQpwX3QgID0gJiBcbWF0aGJie1B9KFx0ZXh0e3N0aWxsIGFsaXZlIGF0IGFnZX0gKDYyK3QpIFxtaWQgXHRleHR7YWxpdmUgYXQgYWdlIH0gNjIpIFxcCiA9ICYgXHF1YWQgXG1hdGhiYntQfShcdGV4dHtzdXJ2ZSBmb3IgYSB5ZWFyfSBcbWlkICBcdGV4dHthbGl2ZSBhdCBhZ2UgfSA2MikgXFwKICYgXHRpbWVzICBcbWF0aGJie1B9KFx0ZXh0e3N1cnZlIGZvciBhIHllYXJ9IFxtaWQgXHRleHR7YWxpdmUgYXQgYWdlIH0gNjMpIFx0aW1lcyBcXAomIFx0aW1lcyBcY2RvdHMgXHRpbWVzIFxtYXRoYmJ7UH0oXHRleHR7c3VydmUgZm9yIGEgeWVhcn0gXG1pZCBcdGV4dHthbGl2ZSBhdCBhZ2UgfSA2Mit0LTEpIFxcCiAgPSAmIFxwcm9kX3tqPTF9XnQgXEJpZyBbIDEgLSAgXG1hdGhiYntQfSBcYmlnIChcdGV4dHtkaWUgd2l0aGluIGEgeWVhciB9IFxtaWQgXHRleHR7YWxpdmUgYXQgYWdlIH0gKDYyICsgai0xKSBcYmlnICkgXEJpZyBdLgpcZW5ke2FsaWduZWR9CiQkCgpUaGUgcHJvYmFiaWxpdGllcyBpbiB0aGUgbGFzdCByb3cgYWJvdmUgY2FuIGJlIGZpbmQgZnJvbSB0aGUgW0FjdHVhcmlhbCBMaWZlIFRhYmxlXShodHRwczovL3d3dy5zc2EuZ292L29hY3QvU1RBVFMvdGFibGU0YzYuaHRtbCNmbjEpLiAKCgoKCkZpcnN0LCBjb21wdXRlIHRoZSBwcm9iYWJpbGl0aWVzLiAKCmBgYHtyfQpkYXRhID0gcmVhZC50YWJsZSgibXRhYmxlLnR4dCIsIHNlcD0iXHQiKQpuYW1lcyhkYXRhKSA9IGMoIkFnZSIsICJtLnByb2IiLCAibS5saXZlcyIsICJtLmV4cCIsIAogICAgICAgICAgICAgICAgImYucHJvYiIsICJmLmxpdmVzIiwgImYuZXhwIikKbmV3ZGF0YSA9IGRhdGEuZnJhbWUoQWdlID0gZGF0YSRBZ2UsIAogICAgICAgICAgICAgICAgICAgICBwcm9iID0gZGF0YSRtLnByb2IgKyBkYXRhJGYucHJvYikKcHJvYnMgPSBuZXdkYXRhJHByb2JbbmV3ZGF0YSRBZ2UgPj0gNjJdCnJtKCJkYXRhIiwgIm5ld2RhdGEiKQpgYGAKClRoZW4sIGNvbXB1dGUgTlBWIGZvciBEQiBwbGFuLiAKCmBgYHtyfQpCYWxhbmNlREI9IGZ1bmN0aW9uKFQsIGRpc2NvdW50LnIpewogIHhWYWx1ZXMgPSBjKDE6VCkgKyAzMgogIHlWYWx1ZXMgPSByZXAoMCwgVCkKICAKICBpZiAoVCA8IDYpIHsKICAgIHJldHVybihkYXRhLmZyYW1lKHg9eFZhbHVlcywgeT15VmFsdWVzKSkKICAgIGV4aXQKICB9CiAgCiAgIyBDb21wdXRlIHRoZSBhbm51YWwgcGVuc2lvbiBpbmNvbWUgCiAgcGVuc2lvbiA9IHJlcCgwLCBUKQogIGZvciAodCBpbiA2OlQpewogICAgCiAgICAjIGNvbXB1dGUgYXZlLm06IHRoZSBhdmVyYWdlIG9mIHRoZSBsYXN0IGZpdmUgeWVhcnMnIHNhbGFyaWVzCiAgICB0bXAgPSB0YWlsKDE6dCwgNSkKICAgIHRtcCA9IHRtcCAtIDAuNQogICAgYXZlLm0gPSBtZWFuKG0wICogKDEgKyBhKV50bXApCiAgICAKICAgICMgY29tcHV0ZSBwZW5zaW9uIGluY29tZQogICAgcGVuc2lvblt0XSAgPSBhdmUubSAqIHBlbnNpb24ucGVyY2VudCAqIHQKICB9CiAgCiAgIyBDb21wdXRlIE5QViBvZiBwZW5zaW9uIGluY29tZQogIAogIHB0ID0gMSAKICB2ID0gMSAvICgxICsgZGlzY291bnQucikKICB2dCA9IHZeey0gMC41fQogIAogIGZvcih0IGluIDE6bGVuZ3RoKHByb2JzKSl7CiAgICAKICAgIHB0ID0gcHQgKiAoMSAtIHByb2JzW3RdKQogICAgdnQgPSB2dCAqIHYKICAgIHlWYWx1ZXMgPSB5VmFsdWVzICsgcGVuc2lvbiAqIHB0ICogdnQKICB9CiAgIAogcmV0dXJuKGRhdGEuZnJhbWUoeCA9IHhWYWx1ZXMsIHkgPSB5VmFsdWVzKSkKfQpgYGAKCiMjIyBQbG90CgoKYGBge3J9CgpkaXNjb3VudC5yID0gMC4wMyAtIDAuMDMKIyBkaXNjb3VudC5yID0gMC4wNyAtIDAuMDMgCnRlc3QgPSBCYWxhbmNlREIoVCwgZGlzY291bnQucikKeCA9IHRlc3QkeAp5ID0gdGVzdCR5CmBgYAoKYGBge3J9CnBsb3QoeCwgeSwgdHlwZT0ibiIsIHlheHQ9Im4iLCAKICAgICB4bGFiID0gIlllYXJzIG9mIFNlcnZpY2UiLAogICAgIHlsYWIgPSAiUGVuc2lvbiBXZWFsdGggKGluIERvbGxhcnMpIiwKICAgICBtYWluID0gIk5ldCBQcmVzZW50IFZhbHVlIG9mIERDIEJlbmVmaXRzIGF0IGFnZSA2MiIpCmxpbmVzKHgsIHksIGx0eSA9IDIpCnBvaW50cyh4LCB5LCBwdHkgPSAyKQp5dGljayA9ICgxOjExKSoxMDAwMDAKYXhpcygyLCBhdCA9IHl0aWNrLCBsYXMgPSAyLCBjZXguYXhpcyA9IDAuNiwKICAgICBsYWJlbHMgPSBmb3JtYXRDKHl0aWNrLCBiaWcubWFyayA9ICIsIiwgZm9ybWF0PSJmIiwgZGlnaXRzID0gMCkpCmBgYA==