# Home-runs so far
HR_before <- c(11, 13, 12)
# Average Number of Home-runs per season wanted
wanted_HR <- 20
# Number of seasons
n_seasons <- 4
# Needed Home-runs on season 4
x_4 <- n_seasons*wanted_HR - sum(HR_before)
# Minimum number of Home-runs needed by Robert
x_4
[1] 44
According to the calculations above, Robert must hit 44 home-runs or
better on this season to get an average number of home-runs per season
of at least 20.
# Robert's performance
Robert_HRs <- c(11, 13, 12,44)
# Find mean
mean(Robert_HRs)
[1] 20
sd(Robert_HRs)
[1] 16.02082
max(Robert_HRs)
[1] 44
min(Robert_HRs)
[1] 11
summary(Robert_HRs)
Min. 1st Qu. Median Mean 3rd Qu. Max.
11.00 11.75 12.50 20.00 20.75 44.00
**Question 1* Now, you must complete the problem below which
represents a similar case scenario. You may use the steps that we
executed in Case-scenario 1 as a template for your solution.
This is the sixth season of outfielder Juan Soto in the majors. If
during the first five seasons he received 79, 108,41,145, and 135 walks,
how many does he need on this season for his overall number of walks per
season to be at least 100?
Juan_Soto_Walks = c(79, 108, 41, 145, 135)
Juan_Soto_Walks
[1] 79 108 41 145 135
# 100 = (s1 + s2 + s3 + s4 + s5 + x) / 6
# 100 * 6 - (s1 + s2 + s3 + s4 + s5) = x
100* 6 - sum(Juan_Soto_Walks)
[1] 92
The answer is 92
Case-scenario 2 The average salary of 10 baseball
players is 72,000 dollars a week and the average salary of 4 soccer
players is 84,000. Find the mean salary of all 14 professional
players.
Solution We can easily find the joined mean by adding both mean and
dividing by the total number of people.
Let n1=10 denote the number of baseball players, and y1=72000 their
mean salary. Let n2=4 the number of soccer players and y2=84000 their
mean salary. Then the mean salary of all 16 individuals is:
n1x1+n2x2n1+n2
We can compute this in R as follows
n_1 <- 10
n_2 <- 4
y_1 <- 72000
y_2 <- 84000
# Mean salary overall
salary_ave <- (n_1*y_1 + n_2*y_2)/(n_1+n_2)
salary_ave
[1] 75428.57
Question 2 The average salary of 7 basketball
players is 102,000 dollars a week and the average salary of 9 NFL
players is 91,000. Find the mean salary of all 16 professional
players.
n_basketball_players = 7
n_NFL_players = 9
av_salary_basketball = 102000
av_salary_NFL = 91000
av_salary_all = (n_basketball_players *av_salary_basketball + n_NFL_players * av_salary_NFL) / (n_basketball_players + n_NFL_players)
av_salary_all
[1] 95812.5
Case-scenario 3 The frequency distribution below
lists the number of active players in the Barclays Premier League and
the time left in their contract.
Years Number of players 6 28 5 72 4 201 3 109 2 56 1 34
Find the mean,the median and the standard deviation.
What percentage of the data lies within one standard deviation of the
mean?
What percentage of the data lies within two standard deviations of
the mean?
What percent of the data lies within three standard deviations of the
mean?
Draw a histogram to illustrate the data.
contract_length <- read.table("allcontracts.csv", header = TRUE, sep = ",")
contract_years <- contract_length$years
- To find the mean and the standard deviation
# Mean
contracts_mean <- mean(contract_years)
contracts_mean
[1] 3.458918
# Median
contracts_median <- median(contract_years)
contracts_median
[1] 3
- What percentage of the data lies within one standard deviation of
the mean?
# Find number of observations
contracts_n <- length(contract_years)
# Find standard deviation
contracts_sd <- sd(contract_years)
contracts_w1sd <- sum((contract_years - contracts_mean)/contracts_sd < 1)/ contracts_n
# Percentage of observation within one standard deviation of the mean
contracts_w1sd
[1] 0.8416834
## Difference from empirical
contracts_w1sd - 0.68
[1] 0.1616834
3.What percentage of the data lies within two standard deviations of
the mean?
## Within 2 sd
contracts_w2sd <- sum((contract_years - contracts_mean)/ contracts_sd < 2)/contracts_n
contracts_w2sd
[1] 1
## Difference from empirical
contracts_w2sd - 0.95
[1] 0.05
4.What percent of the data lies within three standard deviations of
the mean?
## Within 3 sd
contracts_w3sd <- sum((contract_years - contracts_mean)/ contracts_sd < 3)/contracts_n
contracts_w3sd
[1] 1
## Difference from empirical
contracts_w3sd - 0.9973
[1] 0.0027
- Draw a histogram
# Create histogram
hist(contract_years,xlab = "Years Left in Contract",col = "green",border = "red", xlim = c(0,8), ylim = c(0,225),
breaks = 5)

Question 3 Use the skills learned in case scenario
number 3 on one the following data sets. You may choose only one
dataset. They are both available in Canvas.
doubles_hit.csv and triples_hit.csv
doubles <- read.table("doubles_hit.csv", header = TRUE, sep = ",")
doublesnumber <- doubles$doubles_hit
#mean and median
mean(doublesnumber)
[1] 23.55
median(doublesnumber)
[1] 23.5
#percentage of data within one standard deviation of the mean
doubles_n = length(doublesnumber)
doubles_sd = sd(doublesnumber)
doubles_w1sd = sum((doublesnumber - mean(doublesnumber))/doubles_sd < 1)/ doubles_n
doubles_w1sd
[1] 0.79
#difference from empirical
doubles_w1sd - 0.68
[1] 0.11
#percentage of data within two standard deviation of the mean
doubles_w2sd = sum((doublesnumber - mean(doublesnumber))/doubles_sd < 2)/ doubles_n
doubles_w2sd
[1] 1
## Difference from empirical
doubles_w2sd - 0.95
[1] 0.05
#percentage of data within three standard deviation of the mean
doubles_w3sd = sum((doublesnumber - mean(doublesnumber))/doubles_sd < 3)/ doubles_n
doubles_w3sd
[1] 1
## Difference from empirical
contracts_w3sd - 0.9973
[1] 0.0027
# Create histogram
hist(doublesnumber, xlab = "Number of Doubles", ylab ="Frequency",col = "green",border = "red", xlim = c(0,55), ylim = c(0,8),
breaks = 35)

This histogram shows how most of players frequent between 5 and 40
doubles historically. Additionally, it looks like no player in this
dataset was able to get beyond 50 doubles.
LS0tCnRpdGxlOiAiSW50cm8gdG8gUiBQYXJ0IDIiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyfQojIEhvbWUtcnVucyBzbyBmYXIKSFJfYmVmb3JlIDwtIGMoMTEsIDEzLCAxMikKIyBBdmVyYWdlIE51bWJlciBvZiBIb21lLXJ1bnMgcGVyIHNlYXNvbiB3YW50ZWQKd2FudGVkX0hSIDwtIDIwCiMgTnVtYmVyIG9mIHNlYXNvbnMKbl9zZWFzb25zIDwtIDQKIyBOZWVkZWQgSG9tZS1ydW5zIG9uIHNlYXNvbiA0CnhfNCA8LSBuX3NlYXNvbnMqd2FudGVkX0hSIC0gc3VtKEhSX2JlZm9yZSkKIyBNaW5pbXVtIG51bWJlciBvZiBIb21lLXJ1bnMgbmVlZGVkIGJ5IFJvYmVydAp4XzQKYGBgCgpBY2NvcmRpbmcgdG8gdGhlIGNhbGN1bGF0aW9ucyBhYm92ZSwgUm9iZXJ0IG11c3QgaGl0IDQ0IGhvbWUtcnVucyBvciBiZXR0ZXIgb24gdGhpcyBzZWFzb24gdG8gZ2V0IGFuIGF2ZXJhZ2UgbnVtYmVyIG9mIGhvbWUtcnVucyBwZXIgc2Vhc29uIG9mIGF0IGxlYXN0IDIwLgoKYGBge3J9CiMgUm9iZXJ0J3MgcGVyZm9ybWFuY2UKUm9iZXJ0X0hScyA8LSBjKDExLCAxMywgMTIsNDQpCiMgRmluZCBtZWFuCm1lYW4oUm9iZXJ0X0hScykKYGBgCgpgYGB7cn0Kc2QoUm9iZXJ0X0hScykKYGBgCgpgYGB7cn0KbWF4KFJvYmVydF9IUnMpCm1pbihSb2JlcnRfSFJzKQpgYGAKCmBgYHtyfQpzdW1tYXJ5KFJvYmVydF9IUnMpCmBgYAoKKipRdWVzdGlvbiAxKgpOb3csIHlvdSBtdXN0IGNvbXBsZXRlIHRoZSBwcm9ibGVtIGJlbG93IHdoaWNoIHJlcHJlc2VudHMgYSBzaW1pbGFyIGNhc2Ugc2NlbmFyaW8uIFlvdSBtYXkgdXNlIHRoZSBzdGVwcyB0aGF0IHdlIGV4ZWN1dGVkIGluIENhc2Utc2NlbmFyaW8gMSBhcyBhIHRlbXBsYXRlIGZvciB5b3VyIHNvbHV0aW9uLgoKVGhpcyBpcyB0aGUgc2l4dGggc2Vhc29uIG9mIG91dGZpZWxkZXIgSnVhbiBTb3RvIGluIHRoZSBtYWpvcnMuIElmIGR1cmluZyB0aGUgZmlyc3QgZml2ZSBzZWFzb25zIGhlIHJlY2VpdmVkIDc5LCAxMDgsNDEsMTQ1LCBhbmQgMTM1IHdhbGtzLCBob3cgbWFueSBkb2VzIGhlIG5lZWQgb24gdGhpcyBzZWFzb24gZm9yIGhpcyBvdmVyYWxsIG51bWJlciBvZiB3YWxrcyBwZXIgc2Vhc29uIHRvIGJlIGF0IGxlYXN0IDEwMD8KCmBgYHtyfQpKdWFuX1NvdG9fV2Fsa3MgPSBjKDc5LCAxMDgsIDQxLCAxNDUsIDEzNSkKSnVhbl9Tb3RvX1dhbGtzCmBgYAoKYGBge3J9CiMgMTAwID0gKHMxICsgczIgKyBzMyArIHM0ICsgczUgKyB4KSAvIDYKIyAxMDAgKiA2IC0gKHMxICsgczIgKyBzMyArIHM0ICsgczUpID0geAoxMDAqIDYgLSBzdW0oSnVhbl9Tb3RvX1dhbGtzKQpgYGAKClRoZSBhbnN3ZXIgaXMgOTIKCgoqKkNhc2Utc2NlbmFyaW8gMioqClRoZSBhdmVyYWdlIHNhbGFyeSBvZiAxMCBiYXNlYmFsbCBwbGF5ZXJzIGlzIDcyLDAwMCBkb2xsYXJzIGEgd2VlayBhbmQgdGhlIGF2ZXJhZ2Ugc2FsYXJ5IG9mIDQgc29jY2VyIHBsYXllcnMgaXMgODQsMDAwLiBGaW5kIHRoZSBtZWFuIHNhbGFyeSBvZiBhbGwgMTQgcHJvZmVzc2lvbmFsIHBsYXllcnMuCgpTb2x1dGlvbgpXZSBjYW4gZWFzaWx5IGZpbmQgdGhlIGpvaW5lZCBtZWFuIGJ5IGFkZGluZyBib3RoIG1lYW4gYW5kIGRpdmlkaW5nIGJ5IHRoZSB0b3RhbCBudW1iZXIgb2YgcGVvcGxlLgoKTGV0IG4xPTEwCiBkZW5vdGUgdGhlIG51bWJlciBvZiBiYXNlYmFsbCBwbGF5ZXJzLCBhbmQgeTE9NzIwMDAKIHRoZWlyIG1lYW4gc2FsYXJ5LiBMZXQgbjI9NAogdGhlIG51bWJlciBvZiBzb2NjZXIgcGxheWVycyBhbmQgeTI9ODQwMDAKIHRoZWlyIG1lYW4gc2FsYXJ5LiBUaGVuIHRoZSBtZWFuIHNhbGFyeSBvZiBhbGwgMTYgaW5kaXZpZHVhbHMgaXM6IG4xeDErbjJ4Mm4xK24yCgpXZSBjYW4gY29tcHV0ZSB0aGlzIGluIFIgYXMgZm9sbG93cwoKYGBge3J9Cm5fMSA8LSAxMApuXzIgPC0gNAp5XzEgPC0gNzIwMDAKeV8yIDwtIDg0MDAwCiMgTWVhbiBzYWxhcnkgb3ZlcmFsbApzYWxhcnlfYXZlIDwtICAobl8xKnlfMSArIG5fMip5XzIpLyhuXzErbl8yKQpzYWxhcnlfYXZlCmBgYAoKKipRdWVzdGlvbiAyKioKVGhlIGF2ZXJhZ2Ugc2FsYXJ5IG9mIDcgYmFza2V0YmFsbCBwbGF5ZXJzIGlzIDEwMiwwMDAgZG9sbGFycyBhIHdlZWsgYW5kIHRoZSBhdmVyYWdlIHNhbGFyeSBvZiA5IE5GTCBwbGF5ZXJzIGlzIDkxLDAwMC4gRmluZCB0aGUgbWVhbiBzYWxhcnkgb2YgYWxsIDE2IHByb2Zlc3Npb25hbCBwbGF5ZXJzLgoKYGBge3J9Cm5fYmFza2V0YmFsbF9wbGF5ZXJzID0gNwpuX05GTF9wbGF5ZXJzID0gOQphdl9zYWxhcnlfYmFza2V0YmFsbCA9IDEwMjAwMAphdl9zYWxhcnlfTkZMID0gOTEwMDAKYXZfc2FsYXJ5X2FsbCA9IChuX2Jhc2tldGJhbGxfcGxheWVycyAqYXZfc2FsYXJ5X2Jhc2tldGJhbGwgKyBuX05GTF9wbGF5ZXJzICogYXZfc2FsYXJ5X05GTCkgLyAobl9iYXNrZXRiYWxsX3BsYXllcnMgKyBuX05GTF9wbGF5ZXJzKQphdl9zYWxhcnlfYWxsCmBgYAoKKipDYXNlLXNjZW5hcmlvIDMqKgpUaGUgZnJlcXVlbmN5IGRpc3RyaWJ1dGlvbiBiZWxvdyBsaXN0cyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBwbGF5ZXJzIGluIHRoZSBCYXJjbGF5cyBQcmVtaWVyIExlYWd1ZSBhbmQgdGhlIHRpbWUgbGVmdCBpbiB0aGVpciBjb250cmFjdC4KClllYXJzCU51bWJlciBvZiBwbGF5ZXJzCjYJICAgIDI4CjUJICAgIDcyCjQJICAgIDIwMQozCSAgICAxMDkKMgkgICAgNTYKMQkgICAgMzQKCkZpbmQgdGhlIG1lYW4sdGhlIG1lZGlhbiBhbmQgdGhlIHN0YW5kYXJkIGRldmlhdGlvbi4KCldoYXQgcGVyY2VudGFnZSBvZiB0aGUgZGF0YSBsaWVzIHdpdGhpbiBvbmUgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIHRoZSBtZWFuPwoKV2hhdCBwZXJjZW50YWdlIG9mIHRoZSBkYXRhIGxpZXMgd2l0aGluIHR3byBzdGFuZGFyZCBkZXZpYXRpb25zIG9mIHRoZSBtZWFuPwoKV2hhdCBwZXJjZW50IG9mIHRoZSBkYXRhIGxpZXMgd2l0aGluIHRocmVlIHN0YW5kYXJkIGRldmlhdGlvbnMgb2YgdGhlIG1lYW4/CgpEcmF3IGEgaGlzdG9ncmFtIHRvIGlsbHVzdHJhdGUgdGhlIGRhdGEuCgoKYGBge3J9CmNvbnRyYWN0X2xlbmd0aCA8LSByZWFkLnRhYmxlKCJhbGxjb250cmFjdHMuY3N2IiwgaGVhZGVyID0gVFJVRSwgc2VwID0gIiwiKQpjb250cmFjdF95ZWFycyA8LSBjb250cmFjdF9sZW5ndGgkeWVhcnMKYGBgCgoxLiBUbyBmaW5kIHRoZSBtZWFuIGFuZCB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uCmBgYHtyfQojIE1lYW4gCmNvbnRyYWN0c19tZWFuICA8LSBtZWFuKGNvbnRyYWN0X3llYXJzKQpjb250cmFjdHNfbWVhbgpgYGAKCmBgYHtyfQojIE1lZGlhbgpjb250cmFjdHNfbWVkaWFuIDwtIG1lZGlhbihjb250cmFjdF95ZWFycykKY29udHJhY3RzX21lZGlhbgpgYGAKCjIuIFdoYXQgcGVyY2VudGFnZSBvZiB0aGUgZGF0YSBsaWVzIHdpdGhpbiBvbmUgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIHRoZSBtZWFuPwpgYGB7cn0KIyBGaW5kIG51bWJlciBvZiBvYnNlcnZhdGlvbnMKY29udHJhY3RzX24gPC0gbGVuZ3RoKGNvbnRyYWN0X3llYXJzKQojIEZpbmQgc3RhbmRhcmQgZGV2aWF0aW9uCmNvbnRyYWN0c19zZCA8LSBzZChjb250cmFjdF95ZWFycykKYGBgCgoKYGBge3J9CmNvbnRyYWN0c193MXNkIDwtIHN1bSgoY29udHJhY3RfeWVhcnMgLSBjb250cmFjdHNfbWVhbikvY29udHJhY3RzX3NkIDwgMSkvIGNvbnRyYWN0c19uCiMgUGVyY2VudGFnZSBvZiBvYnNlcnZhdGlvbiB3aXRoaW4gb25lIHN0YW5kYXJkIGRldmlhdGlvbiBvZiB0aGUgbWVhbgpjb250cmFjdHNfdzFzZApgYGAKCmBgYHtyfQojIyBEaWZmZXJlbmNlIGZyb20gZW1waXJpY2FsIApjb250cmFjdHNfdzFzZCAtIDAuNjgKYGBgCgozLldoYXQgcGVyY2VudGFnZSBvZiB0aGUgZGF0YSBsaWVzIHdpdGhpbiB0d28gc3RhbmRhcmQgZGV2aWF0aW9ucyBvZiB0aGUgbWVhbj8KYGBge3J9CiMjIFdpdGhpbiAyIHNkCmNvbnRyYWN0c193MnNkIDwtIHN1bSgoY29udHJhY3RfeWVhcnMgLSBjb250cmFjdHNfbWVhbikvIGNvbnRyYWN0c19zZCA8IDIpL2NvbnRyYWN0c19uCmNvbnRyYWN0c193MnNkCmBgYAoKYGBge3J9CiMjIERpZmZlcmVuY2UgZnJvbSBlbXBpcmljYWwgCmNvbnRyYWN0c193MnNkIC0gMC45NQpgYGAKCgo0LldoYXQgcGVyY2VudCBvZiB0aGUgZGF0YSBsaWVzIHdpdGhpbiB0aHJlZSBzdGFuZGFyZCBkZXZpYXRpb25zIG9mIHRoZSBtZWFuPwoKYGBge3J9CiMjIFdpdGhpbiAzIHNkIApjb250cmFjdHNfdzNzZCA8LSBzdW0oKGNvbnRyYWN0X3llYXJzIC0gY29udHJhY3RzX21lYW4pLyBjb250cmFjdHNfc2QgPCAzKS9jb250cmFjdHNfbgpjb250cmFjdHNfdzNzZApgYGAKCmBgYHtyfQojIyBEaWZmZXJlbmNlIGZyb20gZW1waXJpY2FsIApjb250cmFjdHNfdzNzZCAtIDAuOTk3MwpgYGAKCjUuIERyYXcgYSBoaXN0b2dyYW0KCmBgYHtyfQojIENyZWF0ZSBoaXN0b2dyYW0KaGlzdChjb250cmFjdF95ZWFycyx4bGFiID0gIlllYXJzIExlZnQgaW4gQ29udHJhY3QiLGNvbCA9ICJncmVlbiIsYm9yZGVyID0gInJlZCIsIHhsaW0gPSBjKDAsOCksIHlsaW0gPSBjKDAsMjI1KSwKICAgYnJlYWtzID0gNSkKYGBgCgoqKlF1ZXN0aW9uIDMqKgpVc2UgdGhlIHNraWxscyBsZWFybmVkIGluIGNhc2Ugc2NlbmFyaW8gbnVtYmVyIDMgb24gb25lIHRoZSBmb2xsb3dpbmcgZGF0YSBzZXRzLiBZb3UgbWF5IGNob29zZSBvbmx5IG9uZSBkYXRhc2V0LiBUaGV5IGFyZSBib3RoIGF2YWlsYWJsZSBpbiBDYW52YXMuCgpkb3VibGVzX2hpdC5jc3YgYW5kIHRyaXBsZXNfaGl0LmNzdgoKYGBge3J9CmRvdWJsZXMgPC0gcmVhZC50YWJsZSgiZG91Ymxlc19oaXQuY3N2IiwgaGVhZGVyID0gVFJVRSwgc2VwID0gIiwiKQpkb3VibGVzbnVtYmVyIDwtIGRvdWJsZXMkZG91Ymxlc19oaXQKYGBgCgpgYGB7cn0KI21lYW4gYW5kIG1lZGlhbiBvZiB0aGlzIGRhdGFzZXQKbWVhbihkb3VibGVzbnVtYmVyKQptZWRpYW4oZG91Ymxlc251bWJlcikKYGBgCgpgYGB7cn0KI3BlcmNlbnRhZ2Ugb2YgZGF0YSB3aXRoaW4gb25lIHN0YW5kYXJkIGRldmlhdGlvbiBvZiB0aGUgbWVhbgpkb3VibGVzX24gPSBsZW5ndGgoZG91Ymxlc251bWJlcikKZG91Ymxlc19zZCA9IHNkKGRvdWJsZXNudW1iZXIpCmRvdWJsZXNfdzFzZCA9IHN1bSgoZG91Ymxlc251bWJlciAtIG1lYW4oZG91Ymxlc251bWJlcikpL2RvdWJsZXNfc2QgPCAxKS8gZG91Ymxlc19uCmRvdWJsZXNfdzFzZApgYGAKCmBgYHtyfQojZGlmZmVyZW5jZSBmcm9tIGVtcGlyaWNhbApkb3VibGVzX3cxc2QgLSAwLjY4CmBgYAoKYGBge3J9CiNwZXJjZW50YWdlIG9mIGRhdGEgd2l0aGluIHR3byBzdGFuZGFyZCBkZXZpYXRpb24gb2YgdGhlIG1lYW4KZG91Ymxlc193MnNkID0gc3VtKChkb3VibGVzbnVtYmVyIC0gbWVhbihkb3VibGVzbnVtYmVyKSkvZG91Ymxlc19zZCA8IDIpLyBkb3VibGVzX24KZG91Ymxlc193MnNkCmBgYAoKYGBge3J9CiMjIERpZmZlcmVuY2UgZnJvbSBlbXBpcmljYWwgCmRvdWJsZXNfdzJzZCAtIDAuOTUKYGBgCgpgYGB7cn0KI3BlcmNlbnRhZ2Ugb2YgZGF0YSB3aXRoaW4gdGhyZWUgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIHRoZSBtZWFuCmRvdWJsZXNfdzNzZCA9IHN1bSgoZG91Ymxlc251bWJlciAtIG1lYW4oZG91Ymxlc251bWJlcikpL2RvdWJsZXNfc2QgPCAzKS8gZG91Ymxlc19uCmRvdWJsZXNfdzNzZApgYGAKCmBgYHtyfQojIyBEaWZmZXJlbmNlIGZyb20gZW1waXJpY2FsIApjb250cmFjdHNfdzNzZCAtIDAuOTk3MwpgYGAKCmBgYHtyfQojIENyZWF0ZSBoaXN0b2dyYW0KaGlzdChkb3VibGVzbnVtYmVyLCB4bGFiID0gIk51bWJlciBvZiBEb3VibGVzIiwgeWxhYiA9IkZyZXF1ZW5jeSIsY29sID0gImdyZWVuIixib3JkZXIgPSAicmVkIiwgeGxpbSA9IGMoMCw1NSksIHlsaW0gPSBjKDAsOCksCiAgIGJyZWFrcyA9IDM1KQpgYGAKVGhpcyBoaXN0b2dyYW0gc2hvd3MgaG93IG1vc3Qgb2YgcGxheWVycyBmcmVxdWVudCBiZXR3ZWVuIDUgYW5kIDQwIGRvdWJsZXMgaGlzdG9yaWNhbGx5LiBBZGRpdGlvbmFsbHksIGl0IGxvb2tzIGxpa2Ugbm8gcGxheWVyIGluIHRoaXMgZGF0YXNldCB3YXMgYWJsZSB0byBnZXQgYmV5b25kIDUwIGRvdWJsZXMuCg==