library(tidyverse)
library(openintro)
library(infer)
us_adults <- tibble(
climate_change_affects = c(rep("Yes", 62000), rep("No", 38000))
)
ggplot(us_adults, aes(x = climate_change_affects)) +
geom_bar() +
labs(
x = "", y = "",
title = "Do you think climate change is affecting your local community?"
) +
coord_flip()

us_adults %>%
dplyr::count(climate_change_affects) %>%
dplyr::mutate(p = n /sum(n))
## # A tibble: 2 x 3
## climate_change_affects n p
## <chr> <int> <dbl>
## 1 No 38000 0.38
## 2 Yes 62000 0.62
n <- 60
samp <- us_adults %>%
sample_n(size = n)
Exercise 1
- What percent of the adults in your sample think climate change affects their local community? Hint: Just like we did with the population, we can calculate the proportion of those in this sample who think climate change affects their local community. 53% of the adults in your sample think climate change affects their local community
samp %>%
dplyr::count(climate_change_affects) %>%
dplyr::mutate(p = n /sum(n))
## # A tibble: 2 x 3
## climate_change_affects n p
## <chr> <int> <dbl>
## 1 No 19 0.317
## 2 Yes 41 0.683
Exercise 2
Would you expect another student’s sample proportion to be identical to yours? Would you expect it to be similar? Why or why not? Another students sample proportion I expect would be similar but not identical. This is given that possibly another student’s proportion depends on the selected 60 adults.
samp %>%
specify(response = climate_change_affects, success = "Yes") %>%
generate(reps = 1000, type = "bootstrap") %>%
calculate(stat = "prop") %>%
get_ci(level = 0.95)
## # A tibble: 1 x 2
## lower_ci upper_ci
## <dbl> <dbl>
## 1 0.567 0.8
Exercise 3
In the interpretation above, we used the phrase “95% confident”. What does “95% confidence” mean?
I believe 95% confident can be interpreted as a range. Meaning we are stating we are 95% certain. Also we can interpret as being 95% certain of true population proportion
In this case, you have the rare luxury of knowing the true population proportion (62%) since you have data on the entire population. ### Exercise 4 Does your confidence interval capture the true population proportion of US adults who think climate change affects their local community? If you are working on this lab in a classroom, does your neighbor’s interval capture this value? I believe it would be a similar value. My lower_ci and upper_ci demonstrate [0.4][0.65]
Exercise 5
Each student should have gotten a slightly different confidence interval. What proportion of those intervals would you expect to capture the true population mean? Why?
Different sample of US adults selected is why each student gets slightlt different confidence interval. The general use of the 95% confidence interval certainty is why i would expect captures of the true population mean.
Exercise 6
Given a sample size of 60, 1000 bootstrap samples for each interval, and 50 confidence intervals constructed (the default values for the above app), what proportion of your confidence intervals include the true population proportion? Is this proportion exactly equal to the confidence level? If not, explain why. Make sure to include your plot in your answer.
Good majority of the the confidence interval includes true population. As closely approaching .9 true population proportion is seen. Overall it is safe to assume 95% of the confidence intervals demonstrated would include true population
Exercise 7
Choose a different confidence level than 95%. Would you expect a confidence interval at this level to me wider or narrower than the confidence interval you calculated at the 95% confidence level? Explain your reasoning. I chose a confidence level of 85% and left the defaults sample size: 60, Number of resamples: 1000, Number of confidence intervals 50. I would assume since confidence level is lower, ther interval would be more narrow. You basically have that 15% range of incorrectness in this case. When the precision of the confidence interval increases we could assume true population proportion interval decreases.
Exercise 8
Using code from the infer package and data fromt the one sample you have (samp), find a confidence interval for the proportion of US Adults who think climate change is affecting their local community with a confidence level of your choosing (other than 95%) and interpret it.
Chose 85%. Showing 85% confidence in true proportion of the adults who believe climate change affects in the local community.[0.5][0.667]
samp %>%
specify(response = climate_change_affects, success = "Yes") %>%
generate(reps = 1000, type = "bootstrap") %>%
calculate(stat = "prop") %>%
get_ci(level = 0.85)
## # A tibble: 1 x 2
## lower_ci upper_ci
## <dbl> <dbl>
## 1 0.6 0.767
Exercise 9
Using the app, calculate 50 confidence intervals at the confidence level you chose in the previous question, and plot all intervals on one plot, and calculate the proportion of intervals that include the true population proportion. How does this percentage compare to the confidence level selected for the intervals?
Using the app with 85% confidence level shows the percentage of intervals that include the true population proportion is lower. As we stated before it become more narrow as confidence level decrease.
Exercise 10
Lastly, try one more (different) confidence level. First, state how you expect the width of this interval to compare to previous ones you calculated. Then, calculate the bounds of the interval using the infer package and data from samp and interpret it. Finally, use the app to generate many intervals and calculate the proportion of intervals that are capture the true population proportion.
Ran the app with 98% confidence level. We see our percentage of intervals that include the true population proportion is greater than when we ran as 85% level.
samp %>%
specify(response = climate_change_affects, success = "Yes") %>%
generate(reps = 1000, type = "bootstrap") %>%
calculate(stat = "prop") %>%
get_ci(level = 0.99)
## # A tibble: 1 x 2
## lower_ci upper_ci
## <dbl> <dbl>
## 1 0.517 0.833
Exercise 11
Using the app, experiment with different sample sizes and comment on how the widths of intervals change as sample size changes (increases and decreases).
Upon using different sample size as 50, 60 an 70 w experience very similar outputs with the same confidence level.
As stated before when sample size increases the width of confidence intervals decreases. Similarly, when the sample size decreases, the width of confidence intervals increases.
Exercise 12
Finally, given a sample size (say, 60), how does the width of the interval change as you increase the number of bootstrap samples. Hint: Does changing the number of bootstap samples affect the standard error?
Used as an example boostrap to 2000. We see when we increased the bootstrap the standard error decreases. More precise estimates will lead from larger bootstrap.
LS0tDQp0aXRsZTogIkNvbmZpZGVuY2UgaW50ZXJ2YWxzIC0gTEFCIDUiDQphdXRob3I6ICJKb2huIE1hem9uIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0OiBvcGVuaW50cm86OmxhYl9yZXBvcnQNCi0tLQ0KDQpgYGB7ciBsb2FkLXBhY2thZ2VzLCBtZXNzYWdlPUZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KG9wZW5pbnRybykNCmxpYnJhcnkoaW5mZXIpDQpgYGANCg0KYGBge3J9DQp1c19hZHVsdHMgPC0gdGliYmxlKA0KICBjbGltYXRlX2NoYW5nZV9hZmZlY3RzID0gYyhyZXAoIlllcyIsIDYyMDAwKSwgcmVwKCJObyIsIDM4MDAwKSkNCikNCg0KYGBgDQoNCmBgYHtyfQ0KZ2dwbG90KHVzX2FkdWx0cywgYWVzKHggPSBjbGltYXRlX2NoYW5nZV9hZmZlY3RzKSkgKw0KICBnZW9tX2JhcigpICsNCiAgbGFicygNCiAgICB4ID0gIiIsIHkgPSAiIiwNCiAgICB0aXRsZSA9ICJEbyB5b3UgdGhpbmsgY2xpbWF0ZSBjaGFuZ2UgaXMgYWZmZWN0aW5nIHlvdXIgbG9jYWwgY29tbXVuaXR5PyINCiAgKSArDQogIGNvb3JkX2ZsaXAoKQ0KYGBgDQoNCmBgYHtyfQ0KdXNfYWR1bHRzICU+JQ0KICBkcGx5cjo6Y291bnQoY2xpbWF0ZV9jaGFuZ2VfYWZmZWN0cykgJT4lDQogIGRwbHlyOjptdXRhdGUocCA9IG4gL3N1bShuKSkNCmBgYA0KDQpgYGB7cn0NCm4gPC0gNjANCnNhbXAgPC0gdXNfYWR1bHRzICU+JQ0KICBzYW1wbGVfbihzaXplID0gbikNCg0KYGBgDQoNCiMjIyBFeGVyY2lzZSAxDQoNCjEuICBXaGF0IHBlcmNlbnQgb2YgdGhlIGFkdWx0cyBpbiB5b3VyIHNhbXBsZSB0aGluayBjbGltYXRlIGNoYW5nZSBhZmZlY3RzIHRoZWlyIGxvY2FsIGNvbW11bml0eT8gSGludDogSnVzdCBsaWtlIHdlIGRpZCB3aXRoIHRoZSBwb3B1bGF0aW9uLCB3ZSBjYW4gY2FsY3VsYXRlIHRoZSBwcm9wb3J0aW9uIG9mIHRob3NlIGluIHRoaXMgc2FtcGxlIHdobyB0aGluayBjbGltYXRlIGNoYW5nZSBhZmZlY3RzIHRoZWlyIGxvY2FsIGNvbW11bml0eS4NCjUzJSBvZiB0aGUgYWR1bHRzIGluIHlvdXIgc2FtcGxlIHRoaW5rIGNsaW1hdGUgY2hhbmdlIGFmZmVjdHMgdGhlaXIgbG9jYWwgY29tbXVuaXR5DQoNCmBgYHtyfQ0KDQpzYW1wICU+JQ0KICBkcGx5cjo6Y291bnQoY2xpbWF0ZV9jaGFuZ2VfYWZmZWN0cykgJT4lDQogIGRwbHlyOjptdXRhdGUocCA9IG4gL3N1bShuKSkNCg0KYGBgDQoNCiMjIyBFeGVyY2lzZSAyDQoNCldvdWxkIHlvdSBleHBlY3QgYW5vdGhlciBzdHVkZW504oCZcyBzYW1wbGUgcHJvcG9ydGlvbiB0byBiZSBpZGVudGljYWwgdG8geW91cnM/IFdvdWxkIHlvdSBleHBlY3QgaXQgdG8gYmUgc2ltaWxhcj8gV2h5IG9yIHdoeSBub3Q/DQpBbm90aGVyIHN0dWRlbnRzIHNhbXBsZSBwcm9wb3J0aW9uIEkgZXhwZWN0IHdvdWxkIGJlIHNpbWlsYXIgYnV0IG5vdCBpZGVudGljYWwuIFRoaXMgaXMgZ2l2ZW4gdGhhdCBwb3NzaWJseSBhbm90aGVyIHN0dWRlbnQncyBwcm9wb3J0aW9uIGRlcGVuZHMgb24gdGhlIHNlbGVjdGVkIDYwIGFkdWx0cy4NCg0KDQoNCg0KDQoNCmBgYHtyfQ0Kc2FtcCAlPiUNCiAgc3BlY2lmeShyZXNwb25zZSA9IGNsaW1hdGVfY2hhbmdlX2FmZmVjdHMsIHN1Y2Nlc3MgPSAiWWVzIikgJT4lDQogIGdlbmVyYXRlKHJlcHMgPSAxMDAwLCB0eXBlID0gImJvb3RzdHJhcCIpICU+JQ0KICBjYWxjdWxhdGUoc3RhdCA9ICJwcm9wIikgJT4lDQogIGdldF9jaShsZXZlbCA9IDAuOTUpDQoNCmBgYA0KDQoNCg0KDQojIyMgRXhlcmNpc2UgMw0KDQpJbiB0aGUgaW50ZXJwcmV0YXRpb24gYWJvdmUsIHdlIHVzZWQgdGhlIHBocmFzZSDigJw5NSUgY29uZmlkZW504oCdLiBXaGF0IGRvZXMg4oCcOTUlIGNvbmZpZGVuY2XigJ0gbWVhbj8NCg0KSSBiZWxpZXZlIDk1JSBjb25maWRlbnQgY2FuIGJlIGludGVycHJldGVkIGFzIGEgcmFuZ2UuIE1lYW5pbmcgd2UgYXJlIHN0YXRpbmcgd2UgYXJlIDk1JSBjZXJ0YWluLiBBbHNvIHdlIGNhbiBpbnRlcnByZXQgYXMgYmVpbmcgOTUlIGNlcnRhaW4gb2YgdHJ1ZSBwb3B1bGF0aW9uIHByb3BvcnRpb24NCg0KDQoNCkluIHRoaXMgY2FzZSwgeW91IGhhdmUgdGhlIHJhcmUgbHV4dXJ5IG9mIGtub3dpbmcgdGhlIHRydWUgcG9wdWxhdGlvbiBwcm9wb3J0aW9uICg2MiUpIHNpbmNlIHlvdSBoYXZlIGRhdGEgb24gdGhlIGVudGlyZSBwb3B1bGF0aW9uLg0KIyMjIEV4ZXJjaXNlIDQNCkRvZXMgeW91ciBjb25maWRlbmNlIGludGVydmFsIGNhcHR1cmUgdGhlIHRydWUgcG9wdWxhdGlvbiBwcm9wb3J0aW9uIG9mIFVTIGFkdWx0cyB3aG8gdGhpbmsgY2xpbWF0ZSBjaGFuZ2UgYWZmZWN0cyB0aGVpciBsb2NhbCBjb21tdW5pdHk/IElmIHlvdSBhcmUgd29ya2luZyBvbiB0aGlzIGxhYiBpbiBhIGNsYXNzcm9vbSwgZG9lcyB5b3VyIG5laWdoYm9y4oCZcyBpbnRlcnZhbCBjYXB0dXJlIHRoaXMgdmFsdWU/DQpJIGJlbGlldmUgaXQgd291bGQgYmUgYSBzaW1pbGFyIHZhbHVlLiBNeSBsb3dlcl9jaSBhbmQgdXBwZXJfY2kgZGVtb25zdHJhdGUgWzAuNF1bMC42NV0gDQoNCg0KDQojIyMgRXhlcmNpc2UgNQ0KRWFjaCBzdHVkZW50IHNob3VsZCBoYXZlIGdvdHRlbiBhIHNsaWdodGx5IGRpZmZlcmVudCBjb25maWRlbmNlIGludGVydmFsLiBXaGF0IHByb3BvcnRpb24gb2YgdGhvc2UgaW50ZXJ2YWxzIHdvdWxkIHlvdSBleHBlY3QgdG8gY2FwdHVyZSB0aGUgdHJ1ZSBwb3B1bGF0aW9uIG1lYW4/IFdoeT8NCg0KRGlmZmVyZW50IHNhbXBsZSBvZiBVUyBhZHVsdHMgc2VsZWN0ZWQgaXMgd2h5IGVhY2ggc3R1ZGVudCBnZXRzIHNsaWdodGx0IGRpZmZlcmVudCBjb25maWRlbmNlIGludGVydmFsLg0KVGhlIGdlbmVyYWwgdXNlIG9mIHRoZSA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbCBjZXJ0YWludHkgaXMgd2h5IGkgd291bGQgZXhwZWN0IGNhcHR1cmVzIG9mIHRoZSB0cnVlIHBvcHVsYXRpb24gbWVhbi4NCg0KDQojIyMgRXhlcmNpc2UgNg0KDQpHaXZlbiBhIHNhbXBsZSBzaXplIG9mIDYwLCAxMDAwIGJvb3RzdHJhcCBzYW1wbGVzIGZvciBlYWNoIGludGVydmFsLCBhbmQgNTAgY29uZmlkZW5jZSBpbnRlcnZhbHMgY29uc3RydWN0ZWQgKHRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIGFib3ZlIGFwcCksIHdoYXQgcHJvcG9ydGlvbiBvZiB5b3VyIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGluY2x1ZGUgdGhlIHRydWUgcG9wdWxhdGlvbiBwcm9wb3J0aW9uPyBJcyB0aGlzIHByb3BvcnRpb24gZXhhY3RseSBlcXVhbCB0byB0aGUgY29uZmlkZW5jZSBsZXZlbD8gSWYgbm90LCBleHBsYWluIHdoeS4gTWFrZSBzdXJlIHRvIGluY2x1ZGUgeW91ciBwbG90IGluIHlvdXIgYW5zd2VyLg0KDQoNCkdvb2QgbWFqb3JpdHkgb2YgdGhlIHRoZSBjb25maWRlbmNlIGludGVydmFsIGluY2x1ZGVzIHRydWUgcG9wdWxhdGlvbi4gQXMgY2xvc2VseSBhcHByb2FjaGluZyAuOSB0cnVlIHBvcHVsYXRpb24gcHJvcG9ydGlvbiBpcyBzZWVuLiBPdmVyYWxsIGl0IGlzIHNhZmUgdG8gYXNzdW1lIDk1JSBvZiB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbHMgZGVtb25zdHJhdGVkIHdvdWxkIGluY2x1ZGUgdHJ1ZSBwb3B1bGF0aW9uDQoNCg0KDQojIyMgRXhlcmNpc2UgNw0KDQpDaG9vc2UgYSBkaWZmZXJlbnQgY29uZmlkZW5jZSBsZXZlbCB0aGFuIDk1JS4gV291bGQgeW91IGV4cGVjdCBhIGNvbmZpZGVuY2UgaW50ZXJ2YWwgYXQgdGhpcyBsZXZlbCB0byBtZSB3aWRlciBvciBuYXJyb3dlciB0aGFuIHRoZSBjb25maWRlbmNlIGludGVydmFsIHlvdSBjYWxjdWxhdGVkIGF0IHRoZSA5NSUgY29uZmlkZW5jZSBsZXZlbD8gRXhwbGFpbiB5b3VyIHJlYXNvbmluZy4NCkkgY2hvc2UgYSBjb25maWRlbmNlIGxldmVsIG9mIDg1JSBhbmQgbGVmdCB0aGUgZGVmYXVsdHMgc2FtcGxlIHNpemU6IDYwLCBOdW1iZXIgb2YgcmVzYW1wbGVzOiAxMDAwLCBOdW1iZXIgb2YgY29uZmlkZW5jZSBpbnRlcnZhbHMgNTAuIEkgd291bGQgYXNzdW1lIHNpbmNlIGNvbmZpZGVuY2UgbGV2ZWwgaXMgbG93ZXIsIHRoZXIgaW50ZXJ2YWwgd291bGQgYmUgbW9yZSBuYXJyb3cuIFlvdSBiYXNpY2FsbHkgaGF2ZSB0aGF0IDE1JSByYW5nZSBvZiBpbmNvcnJlY3RuZXNzIGluIHRoaXMgY2FzZS4gV2hlbiB0aGUgcHJlY2lzaW9uIG9mIHRoZSBjb25maWRlbmNlIGludGVydmFsIGluY3JlYXNlcyB3ZSBjb3VsZCBhc3N1bWUgdHJ1ZSBwb3B1bGF0aW9uIHByb3BvcnRpb24gaW50ZXJ2YWwgZGVjcmVhc2VzLg0KDQoNCiMjIyBFeGVyY2lzZSA4DQoNClVzaW5nIGNvZGUgZnJvbSB0aGUgaW5mZXIgcGFja2FnZSBhbmQgZGF0YSBmcm9tdCB0aGUgb25lIHNhbXBsZSB5b3UgaGF2ZSAoc2FtcCksIGZpbmQgYSBjb25maWRlbmNlIGludGVydmFsIGZvciB0aGUgcHJvcG9ydGlvbiBvZiBVUyBBZHVsdHMgd2hvIHRoaW5rIGNsaW1hdGUgY2hhbmdlIGlzIGFmZmVjdGluZyB0aGVpciBsb2NhbCBjb21tdW5pdHkgd2l0aCBhIGNvbmZpZGVuY2UgbGV2ZWwgb2YgeW91ciBjaG9vc2luZyAob3RoZXIgdGhhbiA5NSUpIGFuZCBpbnRlcnByZXQgaXQuDQoNCkNob3NlIDg1JS4gU2hvd2luZyA4NSUgY29uZmlkZW5jZSBpbiB0cnVlIHByb3BvcnRpb24gb2YgdGhlIGFkdWx0cyB3aG8gYmVsaWV2ZSBjbGltYXRlIGNoYW5nZSBhZmZlY3RzIGluIHRoZSBsb2NhbCBjb21tdW5pdHkuWzAuNV1bMC42NjddIA0KYGBge3J9DQpzYW1wICU+JQ0KICBzcGVjaWZ5KHJlc3BvbnNlID0gY2xpbWF0ZV9jaGFuZ2VfYWZmZWN0cywgc3VjY2VzcyA9ICJZZXMiKSAlPiUNCiAgZ2VuZXJhdGUocmVwcyA9IDEwMDAsIHR5cGUgPSAiYm9vdHN0cmFwIikgJT4lDQogIGNhbGN1bGF0ZShzdGF0ID0gInByb3AiKSAlPiUNCiAgZ2V0X2NpKGxldmVsID0gMC44NSkNCg0KDQpgYGANCg0KDQoNCg0KIyMjIEV4ZXJjaXNlIDkNCg0KVXNpbmcgdGhlIGFwcCwgY2FsY3VsYXRlIDUwIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGF0IHRoZSBjb25maWRlbmNlIGxldmVsIHlvdSBjaG9zZSBpbiB0aGUgcHJldmlvdXMgcXVlc3Rpb24sIGFuZCBwbG90IGFsbCBpbnRlcnZhbHMgb24gb25lIHBsb3QsIGFuZCBjYWxjdWxhdGUgdGhlIHByb3BvcnRpb24gb2YgaW50ZXJ2YWxzIHRoYXQgaW5jbHVkZSB0aGUgdHJ1ZSBwb3B1bGF0aW9uIHByb3BvcnRpb24uIEhvdyBkb2VzIHRoaXMgcGVyY2VudGFnZSBjb21wYXJlIHRvIHRoZSBjb25maWRlbmNlIGxldmVsIHNlbGVjdGVkIGZvciB0aGUgaW50ZXJ2YWxzPw0KDQpVc2luZyB0aGUgYXBwIHdpdGggODUlIGNvbmZpZGVuY2UgbGV2ZWwgc2hvd3MgdGhlIHBlcmNlbnRhZ2Ugb2YgaW50ZXJ2YWxzIHRoYXQgaW5jbHVkZSB0aGUgdHJ1ZSBwb3B1bGF0aW9uIHByb3BvcnRpb24gaXMgbG93ZXIuIEFzIHdlIHN0YXRlZCBiZWZvcmUgaXQgYmVjb21lIG1vcmUgbmFycm93IGFzIGNvbmZpZGVuY2UgbGV2ZWwgZGVjcmVhc2UuDQoNCg0KDQoNCiMjIyBFeGVyY2lzZSAxMA0KDQpMYXN0bHksIHRyeSBvbmUgbW9yZSAoZGlmZmVyZW50KSBjb25maWRlbmNlIGxldmVsLiBGaXJzdCwgc3RhdGUgaG93IHlvdSBleHBlY3QgdGhlIHdpZHRoIG9mIHRoaXMgaW50ZXJ2YWwgdG8gY29tcGFyZSB0byBwcmV2aW91cyBvbmVzIHlvdSBjYWxjdWxhdGVkLiBUaGVuLCBjYWxjdWxhdGUgdGhlIGJvdW5kcyBvZiB0aGUgaW50ZXJ2YWwgdXNpbmcgdGhlIGluZmVyIHBhY2thZ2UgYW5kIGRhdGEgZnJvbSBzYW1wIGFuZCBpbnRlcnByZXQgaXQuIEZpbmFsbHksIHVzZSB0aGUgYXBwIHRvIGdlbmVyYXRlIG1hbnkgaW50ZXJ2YWxzIGFuZCBjYWxjdWxhdGUgdGhlIHByb3BvcnRpb24gb2YgaW50ZXJ2YWxzIHRoYXQgYXJlIGNhcHR1cmUgdGhlIHRydWUgcG9wdWxhdGlvbiBwcm9wb3J0aW9uLg0KDQpSYW4gdGhlIGFwcCB3aXRoIDk4JSBjb25maWRlbmNlIGxldmVsLiBXZSBzZWUgb3VyIHBlcmNlbnRhZ2Ugb2YgaW50ZXJ2YWxzIHRoYXQgaW5jbHVkZSB0aGUgdHJ1ZSBwb3B1bGF0aW9uIHByb3BvcnRpb24gaXMgZ3JlYXRlciB0aGFuIHdoZW4gd2UgcmFuIGFzIDg1JSBsZXZlbC4gDQoNCmBgYHtyfQ0Kc2FtcCAlPiUNCiAgc3BlY2lmeShyZXNwb25zZSA9IGNsaW1hdGVfY2hhbmdlX2FmZmVjdHMsIHN1Y2Nlc3MgPSAiWWVzIikgJT4lDQogIGdlbmVyYXRlKHJlcHMgPSAxMDAwLCB0eXBlID0gImJvb3RzdHJhcCIpICU+JQ0KICBjYWxjdWxhdGUoc3RhdCA9ICJwcm9wIikgJT4lDQogIGdldF9jaShsZXZlbCA9IDAuOTkpDQpgYGANCg0KDQoNCiMjIyBFeGVyY2lzZSAxMQ0KVXNpbmcgdGhlIGFwcCwgZXhwZXJpbWVudCB3aXRoIGRpZmZlcmVudCBzYW1wbGUgc2l6ZXMgYW5kIGNvbW1lbnQgb24gaG93IHRoZSB3aWR0aHMgb2YgaW50ZXJ2YWxzIGNoYW5nZSBhcyBzYW1wbGUgc2l6ZSBjaGFuZ2VzIChpbmNyZWFzZXMgYW5kIGRlY3JlYXNlcykuDQoNClVwb24gdXNpbmcgZGlmZmVyZW50IHNhbXBsZSBzaXplIGFzIDUwLCA2MCBhbiA3MCB3IGV4cGVyaWVuY2UgdmVyeSBzaW1pbGFyIG91dHB1dHMgd2l0aCB0aGUgc2FtZSBjb25maWRlbmNlIGxldmVsLiANCg0KQXMgc3RhdGVkIGJlZm9yZSB3aGVuIHNhbXBsZSBzaXplIGluY3JlYXNlcyB0aGUgd2lkdGggb2YgY29uZmlkZW5jZSBpbnRlcnZhbHMgZGVjcmVhc2VzLiBTaW1pbGFybHksIHdoZW4gdGhlIHNhbXBsZSBzaXplIGRlY3JlYXNlcywgdGhlIHdpZHRoIG9mIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGluY3JlYXNlcy4NCg0KIyMjIEV4ZXJjaXNlIDEyDQoNCkZpbmFsbHksIGdpdmVuIGEgc2FtcGxlIHNpemUgKHNheSwgNjApLCBob3cgZG9lcyB0aGUgd2lkdGggb2YgdGhlIGludGVydmFsIGNoYW5nZSBhcyB5b3UgaW5jcmVhc2UgdGhlIG51bWJlciBvZiBib290c3RyYXAgc2FtcGxlcy4gSGludDogRG9lcyBjaGFuZ2luZyB0aGUgbnVtYmVyIG9mIGJvb3RzdGFwIHNhbXBsZXMgYWZmZWN0IHRoZSBzdGFuZGFyZCBlcnJvcj8NCg0KVXNlZCBhcyBhbiBleGFtcGxlIGJvb3N0cmFwIHRvIDIwMDAuIFdlIHNlZSB3aGVuIHdlIGluY3JlYXNlZCB0aGUgYm9vdHN0cmFwIHRoZSBzdGFuZGFyZCBlcnJvciBkZWNyZWFzZXMuIE1vcmUgcHJlY2lzZSBlc3RpbWF0ZXMgd2lsbCBsZWFkIGZyb20gbGFyZ2VyIGJvb3RzdHJhcC4NCg0KDQoNCg0KDQo=