Objectives
By the end of this assignment, you should:
- understand the concept of “cumulative science”
- be able to identify the type of a variable
- understand how to use the pipe operator (
%>%
)
- understand how to isolate data (
select
, filter
, arrange
)
- understand how to count rows in a data frame (
nrow
)
This assignment is due Thursday, January 30 at noon. Please turn your .html AND .Rmd files into Canvas. Your .Rmd file should knit without an error before turning in the assignment.
The first few excercises we’ll do in lab. They concern a dataset called babynames
. The dataset is included in the “babynames” package.
- Alter the code to select just the
n
column:
select(babynames, name, prop)
- Use the logical operators to manipulate the code below to show: [a] All of the names where prop is greater than or equal to 0.08, [b] All of the children named “Sea” [c] All of the names that have a missing value for n (Hint: this should return an empty data set).
filter(babynames, name == "Garrett")
- Arrange babynames by n. Add prop as a second (tie breaking) variable to arrange on. What is the smallest value of n?
- Use
%>%
to write a sequence of functions that: 1. Filters babynames to just the girls that were born in 2015. 2. Selects the name and n columns. 3. Arranges the results so that the most popular names are near the top.
The next few exercises will focus on data from the Lewis & Frank (2018) replication of the Xu and Tenenbaum 2007 experiment (that we talked about in lecture). We’ll be working with data from the first experiment only. For reference, the journal paper write up of this study can be found here, and you can see the actual experiment that participants saw here.
The data are in a file called lewis_2018_exp1.csv
. We can start by loading the data with the read_csv()
function and saving it to a variable called lf_data
:
lf_data <- read_csv("data/lewis_2018_exp1.csv")
This data frame is tidy, meaning each column is a variable and each row is an observation. In this case, each observation is a unique participant and trial combination. There are six variables in the data and each variable is described below. The first six rows of the data frame are also displayed below.
- exp - Experiment number. Lewis & Frank (2016) had 12 experiments in it; the present dataset only includes the data from the first experiment.
- subids - Subject ID. This is an anonymous id that uniquely identifies every participant in the study.
- trial_num - Each participant completed 12 “trials.” In this case, a trial is a single screen where the participant sees a novel word, one or more examples, and then is asked to click on other examples of the novel word.
- category - There were three different categories of objects: vehicles, vegetables, and animals. Each participant saw some trials from each category.
- condition - This is the variable that we manipulated. It refers to the number of examples of the novel word participants saw at the top of the page. Participants saw either 3 subordinate examples (“three_subordinate”; e.g., 3 dalmations), 3 basic level examples (“three_basic”; e.g. a dalmation, a poodle, and a bernese mountain dog), 3 superordinate examples (“three_superordinate”; e.g. a dalmation, a rabbit, and a horse), or just a single example (“one”; e.g. 1 dalmation).
- proportion_basic_level_responses - This is the variable that we measured. It refers to the proportion (out of 2 possible) of basic level examples that a participant selected.
1 |
1 |
9 |
vehicles |
three_subordinate |
0 |
1 |
2 |
9 |
animals |
three_basic |
1 |
1 |
3 |
9 |
animals |
three_superordinate |
1 |
1 |
4 |
9 |
vehicles |
three_superordinate |
1 |
1 |
5 |
9 |
animals |
three_superordinate |
1 |
1 |
6 |
9 |
vegetables |
three_subordinate |
0 |
- Select the columns
subids
, category
, proportion_basic_level_responses
from the data. Print the first six rows of this data frame.
- Print the first six rows of a data frame that does NOT include the
category
column.
Note: the template for the remaining exercises is blank, and so you will need to add R chunks where appropriate.
- Use logical tests and Boolean operators to return only the rows that contain trials (rows): [a] with category as vegetables, [b] with category as animals and a trial number less than 7, [c] with category as vegetables or animals, [d] with at least one basic level response in the “one” condition.
- The following code selects all trials (rows) where the condition was either “three_subordinate” or “one.” Rewrite this code in a way that uses the
%in%
operator.
filter(lf_data, condition == "three_subordinate" | condition == "one")
- How many trials are there where the category is either vegetables or animals? Use
nrow()
.
- The three following sets of commands are written without the pipe operator (
%>%
). Rewrite each one to include the pipe.
[a]
var1 <- mutate(lf_data, category)
[b]
var1 <- select(lf_data, category)
var2 <- nrow(var1)
[c]
var1 <- filter(lf_data, trial_num == 1)
var2 <- filter(var1, category == "animals")
var3 <- select(var2, trial_num, category)
- The two following sets of commands are written with the pipe operator. Rewrite each one to exclude the pipe.
[a]
lf_data %>%
filter(trial_num < 6) %>%
nrow()
[b]
lf_data %>%
select(subids, category, proportion_basic_level_responses) %>%
filter(subids == 1) %>%
arrange(category)
- Look at the code below. Describe in full sentences what this code does.
lf_data %>%
select(subids, category, condition) %>%
filter(category == "vehicles" & condition != "one") %>%
arrange(-subids)
- On the first day of class, we talked about the “Sally Anne Task” that measures children’s understanding of theory of mind (example videos). Describe four variables that you could measure in this task to assess children’s theory of mind performance. Specifically, describe (1) one qualitative variable, (2) one quantitative - binary variable, (3) one quantitative - numeric, and (4) one quantitative - real variable. For each variable, give a one sentence description of the variable, AND one example value of that variable with units.
- Consider the following claim: “The scientific process is a social endeavor.” To what extent is this statement true or not true? What are the implications of your response for research methods in psychological science? Please respond with a short paragraph.
LS0tCnRpdGxlOiAiQXNzaWdubWVudCAxOiBDdW11bGF0aXZlIFNjaWVuY2UgYW5kIEludHJvIHRvIGRwbHlyIgpzdWJ0aXRsZTogIk1vZGVybiBSZXNlYXJjaCBNZXRob2RzIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIGNzczogLi4vbGFiLmNzcwogICAgaGlnaGxpZ2h0OiBrYXRlCiAgICB0aGVtZTogY29zbW8KICAgIHRvYzogZmFsc2UKICAgIHRvY19mbG9hdDogZmFsc2UKLS0tCgpgYGB7ciBnbG9iYWxfb3B0aW9ucywgaW5jbHVkZSA9IEZ9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KGJhYnluYW1lcykKYGBgCgoKPGJyPgo8YnI+CjxkaXYgaWQ9ImJveGVkdGV4dCI+CgogPGZvbnQgc2l6ZT0iNCI+ICoqT2JqZWN0aXZlcyoqIDwvZm9udD4gCiAKQnkgdGhlIGVuZCBvZiB0aGlzIGFzc2lnbm1lbnQsIHlvdSBzaG91bGQ6CgotIHVuZGVyc3RhbmQgdGhlIGNvbmNlcHQgb2YgImN1bXVsYXRpdmUgc2NpZW5jZSIKLSBiZSBhYmxlIHRvIGlkZW50aWZ5IHRoZSB0eXBlIG9mIGEgdmFyaWFibGUKLSB1bmRlcnN0YW5kIGhvdyB0byB1c2UgdGhlIHBpcGUgb3BlcmF0b3IgKGAlPiVgKQotIHVuZGVyc3RhbmQgaG93IHRvIGlzb2xhdGUgZGF0YSAoIGBzZWxlY3RgLCBgZmlsdGVyYCwgYGFycmFuZ2VgKQotIHVuZGVyc3RhbmQgaG93IHRvIGNvdW50IHJvd3MgaW4gYSBkYXRhIGZyYW1lIChgbnJvd2ApCjwvZGl2PgoKVGhpcyBhc3NpZ25tZW50IGlzIGR1ZSAqKlRodXJzZGF5LCBKYW51YXJ5IDMwIGF0IG5vb24qKi4gUGxlYXNlIHR1cm4geW91ciAuaHRtbCBBTkQgLlJtZCBmaWxlcyBpbnRvIENhbnZhcy4gWW91ciAuUm1kIGZpbGUgc2hvdWxkIGtuaXQgd2l0aG91dCBhbiBlcnJvciBiZWZvcmUgdHVybmluZyBpbiB0aGUgYXNzaWdubWVudC4KClRoZSBmaXJzdCBmZXcgZXhjZXJjaXNlcyB3ZSdsbCBkbyBpbiBsYWIuIFRoZXkgY29uY2VybiBhIGRhdGFzZXQgY2FsbGVkIGBiYWJ5bmFtZXNgLiBUaGUgZGF0YXNldCBpcyBpbmNsdWRlZCBpbiB0aGUgImJhYnluYW1lcyIgcGFja2FnZS4KCjxicj4gCgooMSkgQWx0ZXIgdGhlIGNvZGUgdG8gc2VsZWN0IGp1c3QgdGhlIGBuYCBjb2x1bW46IAoKYGBge3IsIGVjaG8gPSBULCBldmFsID0gRn0gCnNlbGVjdChiYWJ5bmFtZXMsIG5hbWUsIHByb3ApCmBgYAoKPGJyPiAKCigxKSBVc2UgIHRoZSBsb2dpY2FsIG9wZXJhdG9ycyB0byBtYW5pcHVsYXRlIHRoZSBjb2RlIGJlbG93IHRvIHNob3c6ICBbYV0gQWxsIG9mIHRoZSBuYW1lcyB3aGVyZSBwcm9wIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLjA4LCBbYl0gQWxsIG9mIHRoZSBjaGlsZHJlbiBuYW1lZCDigJxTZWHigJ0KW2NdIEFsbCBvZiB0aGUgbmFtZXMgdGhhdCBoYXZlIGEgbWlzc2luZyB2YWx1ZSBmb3IgbiAoSGludDogdGhpcyBzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGRhdGEgc2V0KS4KCmBgYHtyLCBlY2hvID0gVCwgZXZhbCA9IEZ9IApmaWx0ZXIoYmFieW5hbWVzLCBuYW1lID09ICJHYXJyZXR0IikKYGBgCgoKPGJyPiAKCigxKSBBcnJhbmdlIGJhYnluYW1lcyBieSBuLiBBZGQgcHJvcCBhcyBhIHNlY29uZCAodGllIGJyZWFraW5nKSB2YXJpYWJsZSB0byBhcnJhbmdlIG9uLgpXaGF0IGlzIHRoZSBzbWFsbGVzdCB2YWx1ZSBvZiBuPwoKYGBge3IsIGVjaG8gPSBULCBldmFsID0gRn0gCmBgYCAKCjxicj4gCgooMSkgVXNlIGAlPiVgIHRvIHdyaXRlIGEgc2VxdWVuY2Ugb2YgZnVuY3Rpb25zIHRoYXQ6IDEuIEZpbHRlcnMgYmFieW5hbWVzIHRvIGp1c3QgdGhlIGdpcmxzIHRoYXQgd2VyZSBib3JuIGluIDIwMTUuIDIuIFNlbGVjdHMgdGhlIG5hbWUgYW5kIG4gY29sdW1ucy4gMy4gQXJyYW5nZXMgdGhlIHJlc3VsdHMgc28gdGhhdCB0aGUgbW9zdCBwb3B1bGFyIG5hbWVzIGFyZSBuZWFyIHRoZSB0b3AuCgo8YnI+IAoKKioqCgpUaGUgbmV4dCBmZXcgZXhlcmNpc2VzIHdpbGwgZm9jdXMgb24gZGF0YSBmcm9tIHRoZSBMZXdpcyAmIEZyYW5rICgyMDE4KSByZXBsaWNhdGlvbiBvZiB0aGUgWHUgYW5kIFRlbmVuYmF1bSAyMDA3IGV4cGVyaW1lbnQgKHRoYXQgd2UgdGFsa2VkIGFib3V0IGluIGxlY3R1cmUpLiAgIFdlJ2xsIGJlIHdvcmtpbmcgd2l0aCBkYXRhIGZyb20gdGhlIGZpcnN0IGV4cGVyaW1lbnQgb25seS4gIEZvciByZWZlcmVuY2UsIHRoZSBqb3VybmFsIHBhcGVyIHdyaXRlIHVwIG9mIHRoaXMgc3R1ZHkgY2FuIGJlIGZvdW5kIFtoZXJlXShodHRwOi8vd3d3LmFuZHJldy5jbXUuZWR1L3VzZXIvbW9sbHlsZXcvcGFwZXJzL0xGXzIwMTgucGRmKSwgYW5kIHlvdSBjYW4gc2VlIHRoZSBhY3R1YWwgZXhwZXJpbWVudCB0aGF0IHBhcnRpY2lwYW50cyBzYXcgW2hlcmVdKGh0dHBzOi8vbGFuZ2NvZy5zdGFuZm9yZC5lZHUvZXhwdHMvTUxML1hUTUVNL2V4cDEvZXhwMS5odG1sKS4KClRoZSBkYXRhIGFyZSBpbiBhIGZpbGUgY2FsbGVkIGBsZXdpc18yMDE4X2V4cDEuY3N2YC4gV2UgY2FuIHN0YXJ0IGJ5IGxvYWRpbmcgdGhlIGRhdGEgd2l0aCB0aGUgYHJlYWRfY3N2KClgIGZ1bmN0aW9uIGFuZCBzYXZpbmcgaXQgdG8gYSB2YXJpYWJsZSBjYWxsZWQgYGxmX2RhdGFgOgpgYGB7ciwgbWVzc2FnZSA9IEZ9CmxmX2RhdGEgPC0gcmVhZF9jc3YoImRhdGEvbGV3aXNfMjAxOF9leHAxLmNzdiIpCmBgYAoKVGhpcyBkYXRhIGZyYW1lIGlzICp0aWR5KiwgbWVhbmluZyBlYWNoIGNvbHVtbiBpcyBhIHZhcmlhYmxlIGFuZCBlYWNoIHJvdyBpcyBhbiBvYnNlcnZhdGlvbi4gSW4gdGhpcyBjYXNlLCBlYWNoIG9ic2VydmF0aW9uIGlzIGEgdW5pcXVlIHBhcnRpY2lwYW50IGFuZCB0cmlhbCBjb21iaW5hdGlvbi4gVGhlcmUgYXJlIHNpeCB2YXJpYWJsZXMgaW4gdGhlIGRhdGEgYW5kIGVhY2ggdmFyaWFibGUgaXMgZGVzY3JpYmVkIGJlbG93LiBUaGUgZmlyc3Qgc2l4IHJvd3Mgb2YgdGhlIGRhdGEgZnJhbWUgYXJlIGFsc28gZGlzcGxheWVkIGJlbG93LiAKCiogKipleHAqKiAtIEV4cGVyaW1lbnQgbnVtYmVyLiBMZXdpcyAmIEZyYW5rICgyMDE2KSBoYWQgMTIgZXhwZXJpbWVudHMgaW4gaXQ7IHRoZSBwcmVzZW50IGRhdGFzZXQgb25seSBpbmNsdWRlcyB0aGUgZGF0YSBmcm9tIHRoZSBmaXJzdCBleHBlcmltZW50LiAKKiAqKnN1YmlkcyoqIC0gU3ViamVjdCBJRC4gVGhpcyBpcyBhbiBhbm9ueW1vdXMgaWQgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIGV2ZXJ5IHBhcnRpY2lwYW50IGluIHRoZSBzdHVkeS4KKiAqKnRyaWFsX251bSoqIC0gRWFjaCBwYXJ0aWNpcGFudCBjb21wbGV0ZWQgMTIgInRyaWFscy4iIEluIHRoaXMgY2FzZSwgYSB0cmlhbCBpcyBhIHNpbmdsZSBzY3JlZW4gd2hlcmUgdGhlIHBhcnRpY2lwYW50IHNlZXMgYSBub3ZlbCB3b3JkLCBvbmUgb3IgbW9yZSBleGFtcGxlcywgYW5kIHRoZW4gaXMgYXNrZWQgdG8gY2xpY2sgb24gb3RoZXIgZXhhbXBsZXMgb2YgdGhlIG5vdmVsIHdvcmQuCiogKipjYXRlZ29yeSoqIC0gVGhlcmUgd2VyZSB0aHJlZSBkaWZmZXJlbnQgY2F0ZWdvcmllcyBvZiBvYmplY3RzOiB2ZWhpY2xlcywgdmVnZXRhYmxlcywgYW5kIGFuaW1hbHMuIEVhY2ggcGFydGljaXBhbnQgc2F3IHNvbWUgdHJpYWxzIGZyb20gZWFjaCBjYXRlZ29yeS4gCiogKipjb25kaXRpb24qKiAtIFRoaXMgaXMgdGhlIHZhcmlhYmxlIHRoYXQgd2UgbWFuaXB1bGF0ZWQuIEl0IHJlZmVycyB0byB0aGUgbnVtYmVyIG9mIGV4YW1wbGVzIG9mIHRoZSBub3ZlbCB3b3JkIHBhcnRpY2lwYW50cyBzYXcgYXQgdGhlIHRvcCBvZiB0aGUgcGFnZS4gUGFydGljaXBhbnRzIHNhdyBlaXRoZXIgMyBzdWJvcmRpbmF0ZSBleGFtcGxlcyAoInRocmVlX3N1Ym9yZGluYXRlIjsgZS5nLiwgMyBkYWxtYXRpb25zKSwgIDMgYmFzaWMgbGV2ZWwgZXhhbXBsZXMgKCJ0aHJlZV9iYXNpYyI7IGUuZy4gYSBkYWxtYXRpb24sIGEgcG9vZGxlLCBhbmQgYSBiZXJuZXNlIG1vdW50YWluIGRvZyksIDMgc3VwZXJvcmRpbmF0ZSBleGFtcGxlcyAoInRocmVlX3N1cGVyb3JkaW5hdGUiOyBlLmcuIGEgZGFsbWF0aW9uLCBhIHJhYmJpdCwgYW5kIGEgaG9yc2UpLCBvciBqdXN0IGEgc2luZ2xlIGV4YW1wbGUgKCJvbmUiOyBlLmcuIDEgZGFsbWF0aW9uKS4KKiAqKnByb3BvcnRpb25fYmFzaWNfbGV2ZWxfcmVzcG9uc2VzKiogLSBUaGlzIGlzIHRoZSB2YXJpYWJsZSB0aGF0IHdlIG1lYXN1cmVkLiBJdCByZWZlcnMgdG8gdGhlIHByb3BvcnRpb24gKG91dCBvZiAyIHBvc3NpYmxlKSBvZiBiYXNpYyBsZXZlbCBleGFtcGxlcyB0aGF0IGEgcGFydGljaXBhbnQgc2VsZWN0ZWQuIAoKYGBge3IsIGVjaG8gPUZ9CmthYmxlKGhlYWQobGZfZGF0YSkpCmBgYAoKPGJyPiAKCigxKSBTZWxlY3QgdGhlIGNvbHVtbnMgYHN1Ymlkc2AsIGBjYXRlZ29yeWAsIGBwcm9wb3J0aW9uX2Jhc2ljX2xldmVsX3Jlc3BvbnNlc2AgZnJvbSB0aGUgZGF0YS4gUHJpbnQgdGhlIGZpcnN0IHNpeCByb3dzIG9mIHRoaXMgZGF0YSBmcmFtZS4gCgoKCjxicj4gCgooMSkgUHJpbnQgdGhlIGZpcnN0IHNpeCByb3dzIG9mIGEgZGF0YSBmcmFtZSB0aGF0IGRvZXMgTk9UIGluY2x1ZGUgdGhlIGBjYXRlZ29yeWAgY29sdW1uLgoKKk5vdGU6IHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIHJlbWFpbmluZyBleGVyY2lzZXMgaXMgYmxhbmssIGFuZCBzbyB5b3Ugd2lsbCBuZWVkIHRvIGFkZCBSIGNodW5rcyB3aGVyZSBhcHByb3ByaWF0ZS4qCgo8YnI+IAoKKDEpIFVzZSBsb2dpY2FsIHRlc3RzIGFuZCBCb29sZWFuIG9wZXJhdG9ycyB0byByZXR1cm4gb25seSB0aGUgcm93cyB0aGF0IGNvbnRhaW4gdHJpYWxzIChyb3dzKTogW2FdIHdpdGggY2F0ZWdvcnkgYXMgdmVnZXRhYmxlcywgW2JdIHdpdGggY2F0ZWdvcnkgYXMgYW5pbWFscyBhbmQgYSB0cmlhbCBudW1iZXIgbGVzcyB0aGFuIDcsIFtjXSB3aXRoIGNhdGVnb3J5IGFzIHZlZ2V0YWJsZXMgb3IgYW5pbWFscywgIFtkXSB3aXRoIGF0IGxlYXN0IG9uZSBiYXNpYyBsZXZlbCByZXNwb25zZSBpbiB0aGUgIm9uZSIgY29uZGl0aW9uLgoKPGJyPiAKCigxKSBUaGUgZm9sbG93aW5nIGNvZGUgc2VsZWN0cyBhbGwgdHJpYWxzIChyb3dzKSB3aGVyZSB0aGUgY29uZGl0aW9uIHdhcyBlaXRoZXIgInRocmVlX3N1Ym9yZGluYXRlIiBvciAib25lLiIgUmV3cml0ZSB0aGlzIGNvZGUgaW4gYSB3YXkgdGhhdCB1c2VzIHRoZSBgJWluJWAgb3BlcmF0b3IuIAoKYGBge3IsIGV2YWwgPSBGfQpmaWx0ZXIobGZfZGF0YSwgY29uZGl0aW9uID09ICJ0aHJlZV9zdWJvcmRpbmF0ZSIgfCBjb25kaXRpb24gPT0gIm9uZSIpCmBgYAoKPGJyPiAKCigxKSBIb3cgbWFueSB0cmlhbHMgYXJlIHRoZXJlIHdoZXJlIHRoZSBjYXRlZ29yeSBpcyBlaXRoZXIgdmVnZXRhYmxlcyBvciBhbmltYWxzPyBVc2UgYG5yb3coKWAuCgo8YnI+IAoKKDEpIFRoZSB0aHJlZSBmb2xsb3dpbmcgc2V0cyBvZiBjb21tYW5kcyBhcmUgd3JpdHRlbiB3aXRob3V0IHRoZSBwaXBlIG9wZXJhdG9yIChgJT4lYCkuIFJld3JpdGUgZWFjaCBvbmUgdG8gaW5jbHVkZSB0aGUgcGlwZS4gCgpbYV0KYGBge3J9CnZhcjEgPC0gbXV0YXRlKGxmX2RhdGEsIGNhdGVnb3J5KQpgYGAKCltiXQpgYGB7cn0KdmFyMSA8LSBzZWxlY3QobGZfZGF0YSwgY2F0ZWdvcnkpCnZhcjIgPC0gbnJvdyh2YXIxKQpgYGAKCltjXQpgYGB7cn0KdmFyMSA8LSBmaWx0ZXIobGZfZGF0YSwgdHJpYWxfbnVtID09IDEpCnZhcjIgPC0gZmlsdGVyKHZhcjEsIGNhdGVnb3J5ID09ICJhbmltYWxzIikKdmFyMyA8LSBzZWxlY3QodmFyMiwgdHJpYWxfbnVtLCBjYXRlZ29yeSkKYGBgCgo8YnI+IAoKKDEpIFRoZSB0d28gZm9sbG93aW5nIHNldHMgb2YgY29tbWFuZHMgYXJlIHdyaXR0ZW4gd2l0aCB0aGUgcGlwZSBvcGVyYXRvci4gUmV3cml0ZSBlYWNoIG9uZSB0byBleGNsdWRlIHRoZSBwaXBlLiAKClthXQpgYGB7ciwgZXZhbCA9IEZ9CmxmX2RhdGEgJT4lCiAgZmlsdGVyKHRyaWFsX251bSA8IDYpICU+JQogIG5yb3coKQpgYGAKCltiXQpgYGB7ciwgZXZhbCA9IEZ9CmxmX2RhdGEgJT4lCiAgc2VsZWN0KHN1YmlkcywgY2F0ZWdvcnksIHByb3BvcnRpb25fYmFzaWNfbGV2ZWxfcmVzcG9uc2VzKSAlPiUKICBmaWx0ZXIoc3ViaWRzID09IDEpICU+JQogIGFycmFuZ2UoY2F0ZWdvcnkpCmBgYAoKPGJyPiAKCigxKSBMb29rIGF0IHRoZSBjb2RlIGJlbG93LiBEZXNjcmliZSBpbiBmdWxsIHNlbnRlbmNlcyB3aGF0IHRoaXMgY29kZSBkb2VzLgoKYGBge3IsIGV2YWwgPSBGfQpsZl9kYXRhICU+JQogIHNlbGVjdChzdWJpZHMsIGNhdGVnb3J5LCBjb25kaXRpb24pICU+JQogIGZpbHRlcihjYXRlZ29yeSA9PSAidmVoaWNsZXMiICYgY29uZGl0aW9uICE9ICJvbmUiKSAlPiUKICBhcnJhbmdlKC1zdWJpZHMpCmBgYAoKPGJyPiAKCigxKSBPbiB0aGUgZmlyc3QgZGF5IG9mIGNsYXNzLCB3ZSB0YWxrZWQgYWJvdXQgdGhlICJTYWxseSBBbm5lIFRhc2siIHRoYXQgbWVhc3VyZXMgY2hpbGRyZW4ncyB1bmRlcnN0YW5kaW5nIG9mIHRoZW9yeSBvZiBtaW5kIChbZXhhbXBsZSB2aWRlb3NdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9b2F6SzJma1JVMUFdKSkuIERlc2NyaWJlIGZvdXIgdmFyaWFibGVzIHRoYXQgeW91IGNvdWxkIG1lYXN1cmUgaW4gdGhpcyB0YXNrIHRvIGFzc2VzcyBjaGlsZHJlbidzIHRoZW9yeSBvZiBtaW5kIHBlcmZvcm1hbmNlLiBTcGVjaWZpY2FsbHksIGRlc2NyaWJlICgxKSBvbmUgcXVhbGl0YXRpdmUgdmFyaWFibGUsICgyKSBvbmUgcXVhbnRpdGF0aXZlIC0gYmluYXJ5IHZhcmlhYmxlLCAoMykgb25lIHF1YW50aXRhdGl2ZSAtIG51bWVyaWMsIGFuZCAoNCkgb25lIHF1YW50aXRhdGl2ZSAtICByZWFsIHZhcmlhYmxlLiBGb3IgZWFjaCB2YXJpYWJsZSwgZ2l2ZSBhIG9uZSBzZW50ZW5jZSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaWFibGUsIEFORCBvbmUgZXhhbXBsZSB2YWx1ZSBvZiB0aGF0IHZhcmlhYmxlIHdpdGggdW5pdHMuCgo8YnI+IAoKCigxKSBDb25zaWRlciB0aGUgZm9sbG93aW5nIGNsYWltOiAiVGhlIHNjaWVudGlmaWMgcHJvY2VzcyBpcyBhIHNvY2lhbCBlbmRlYXZvci4iIFRvIHdoYXQgZXh0ZW50IGlzIHRoaXMgc3RhdGVtZW50IHRydWUgb3Igbm90IHRydWU/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgeW91ciByZXNwb25zZSBmb3IgcmVzZWFyY2ggbWV0aG9kcyBpbiBwc3ljaG9sb2dpY2FsIHNjaWVuY2U/IFBsZWFzZSByZXNwb25kIHdpdGggYSBzaG9ydCBwYXJhZ3JhcGguIAoK