Loading [MathJax]/jax/output/HTML-CSS/jax.js

Reposted from https://rpubs.com/tbrambor/week2_example

R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

summary(cars)
     speed           dist       
 Min.   : 4.0   Min.   :  2.00  
 1st Qu.:12.0   1st Qu.: 26.00  
 Median :15.0   Median : 36.00  
 Mean   :15.4   Mean   : 42.98  
 3rd Qu.:19.0   3rd Qu.: 56.00  
 Max.   :25.0   Max.   :120.00  

Including Plots

You can also embed plots, for example:

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.

In-line Latex and R code

You can convert the temperature unit from Kelvin to Celsius with the formula

celsius=kelvin273.15 And you can convert the result to Fahrenheit with the formula

fahrenheit=celsius×95+32

For example, degrees Kelvin corresponds to 9 degrees Celsius.

Interactive Visualizations

We can use interactive features as well. Let’s load the required packages first.

HTML Widgets

If your R analysis involves interactive components, you’re probably already familiar with the htmlwidgets library. These, too, are supported in the notebook. Run this chunk to see an interactive graph:

dygraph(nhtemp, main = "New Haven Temperatures") %>% 
  dyRangeSelector(dateWindow = c("1920-01-01", "1960-01-01"))
New Haven Temperatures
48
49
50
51
52
53
54
55
1920
1930
1940
1950

Running Code

One of the goals of the notebook is to provide a seamless environment for interacting with R – that is, you shouldn’t need to reach for the console, even though chunks send code there. To help you see the progress of your chunk – that is, which lines have been executed and which haven’t – RStudio draws an indicator in the editor gutter. Try running this chunk:

Sys.sleep(1); runif(3)
[1] 0.3300791 0.3204190 0.1840232
Sys.sleep(1); runif(3)
[1] 0.03274415 0.87292708 0.17402685
Sys.sleep(1); runif(3)
[1] 0.4474329 0.6614034 0.6329907
Sys.sleep(1); runif(3)
[1] 0.1356127 0.3566102 0.5274826
Sys.sleep(1); runif(3)
[1] 0.2410711 0.3946971 0.5203213

Errors

Sometimes your code will generate errors. Here’s an example:

# Source a file that doesn't exist
source("missing.R")
cannot open file 'missing.R': No such file or directoryError in file(filename, "r", encoding = encoding) : 
  cannot open the connection

Notice that the line that caused the error is highlighted, and you can see the error’s traceback, just as you can in the RStudio console. If an error occurs while you’re running chunks, the error will cause the notebook to stop running, and the cursor will scroll to the point where the error occurred.

R Notebooks

This file is a R Notebook. It is a great way to share your analysis with others because it contains both the html output as well as the .Rmd file with the script to generate that output.

Saving and Sharing

A notebook’s source code is always in an .Rmd file. Whenever you save it, a sidecar .nb.html file is generated. This file contains a rendered copy of the notebook itself. No special viewer is required.

It also contains a copy of the notebook’s source .Rmd file.

To look at the .nb.html file, click Preview in the RStudio editor toolbar. This is a fundamental difference between notebooks and other R Markdown documents; pressing this button doesn’t actually cause any of your code to run, it just shows you the HTML file already prepared. It will automatically update whenever you save the .Rmd file.

If you open the .nb.html file in a web browser, you’ll see an option to download the source. You can also open an .nb.html file in RStudio; when you do this, RStudio will automatically extract the .Rmd file and outputs inside it and open the file in the notebook editor.

Notebooks as R Markdown Documents

A notebook is also an R Markdown document. Try changing the YAML header in this document so that html_document is the first option, then clicking Knit (or just pulling down the Preview) menu. You could also create a PDF from the notebook, a Word document, or even a dashboard.

Publishing

The notebook output is a html file with is easily shareable and can be open in any modern browser - so no R Studio required on the receiving end. R Studio also offers a service called RPubs which let’s you publish documents (and shiny apps) so you can share them with others via a link.

To do so, click the publish button in RStudio and enter a few things (like title and description) to publish the document (and make it publicly available). You need to sign up for RPubs beforehand to be able to do this quickly.

Other output formats

R Notebooks are also R Markdown documents and as such we can choose other output formats. Try to knit the document to html and pdf by choose the down arrow next to the preview button.

You can render the same R Markdown file into several different formats. There are two ways to change a file’s output format.

First, you can click the triangle icon next to “Knit HTML” at the bottom of the pane that displays your R Markdown file. This will open a drop down menu that gives you the choice of rendering as an HTML document or a pdf document.

Second, you can change the output field in the YAML block at the top of your document. For example, this YAML block will create an HTML file:

---
output: html_document
---

This one will create a pdf file:

---
output: pdf_document
---

This one will create a MS Word file:

---
output: word_document
---

And this one will create a Markdown file:

---
output: md_document
---

Specify knitr and pandoc options

Each R Markdown output template is a collection of knitr and pandoc options. You can customize your output by overwriting the default options that come with the template.

For example, the YAML header below overwrites the default code highlight style of the pdf_document template to create a document that uses the zenburn style:

---
title: "Demo"
output:
  pdf_document:
    highlight: zenburn
---

The YAML header below overwrites the default bootstrap CSS theme of the html_document template.

---
title: "Demo"
output:
  html_document:
    theme: spacelab
---

Brand your reports with style sheets

Above, I discussed a way to change the CSS style of your HTML output: you can set the theme option of html_document to one of default, cerulean, journal, flatly, readable, spacelab, united, or cosmo. (Try it out).

But what if you want to customize your CSS in more specific ways? You can do this by writing a .css file for your report and saving it in the same directory as the .Rmd file. To have your report use the CSS, set the css option of html_document to the file name, like this

Custom CSS is an easy way to add branding to your reports. The exercise folder contains a file called faded.css. Try out to change the appearance of your html output.

LS0tCnRpdGxlOiAiRXhhbXBsZSBSZXBvcnQiCmF1dGhvcjogIlRob21hcyBCcmFtYm9yIgpkYXRlOiAnMjAxOC0wOS0xNycKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHllcwogIGh0bWxfZG9jdW1lbnQ6CiAgICBoaWdobGlnaHQ6IHRleHRtYXRlCiAgICB0aGVtZTogc3BhY2VsYWIKICAgIHRvYzogeWVzCiAgcGRmX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKICB3b3JkX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKYWx3YXlzX2FsbG93X2h0bWw6IHllcwotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCmxpYnJhcnkocmV0aWN1bGF0ZSkKYGBgCgpSZXBvc3RlZCBmcm9tIGh0dHBzOi8vcnB1YnMuY29tL3RicmFtYm9yL3dlZWsyX2V4YW1wbGUKCiMjIFIgTWFya2Rvd24KClRoaXMgaXMgYW4gUiBNYXJrZG93biBkb2N1bWVudC4gTWFya2Rvd24gaXMgYSBzaW1wbGUgZm9ybWF0dGluZyBzeW50YXggZm9yIGF1dGhvcmluZyBIVE1MLCBQREYsIGFuZCBNUyBXb3JkIGRvY3VtZW50cy4gRm9yIG1vcmUgZGV0YWlscyBvbiB1c2luZyBSIE1hcmtkb3duIHNlZSA8aHR0cDovL3JtYXJrZG93bi5yc3R1ZGlvLmNvbT4uCgpXaGVuIHlvdSBjbGljayB0aGUgKipLbml0KiogYnV0dG9uIGEgZG9jdW1lbnQgd2lsbCBiZSBnZW5lcmF0ZWQgdGhhdCBpbmNsdWRlcyBib3RoIGNvbnRlbnQgYXMgd2VsbCBhcyB0aGUgb3V0cHV0IG9mIGFueSBlbWJlZGRlZCBSIGNvZGUgY2h1bmtzIHdpdGhpbiB0aGUgZG9jdW1lbnQuIFlvdSBjYW4gZW1iZWQgYW4gUiBjb2RlIGNodW5rIGxpa2UgdGhpczoKCmBgYHtyfQpzdW1tYXJ5KGNhcnMpCmBgYAoKIyMgSW5jbHVkaW5nIFBsb3RzCgpZb3UgY2FuIGFsc28gZW1iZWQgcGxvdHMsIGZvciBleGFtcGxlOgoKYGBge3IsIGVjaG89RkFMU0V9CnBsb3QocHJlc3N1cmUpCmBgYAoKTm90ZSB0aGF0IHRoZSBgZWNobyA9IEZBTFNFYCBwYXJhbWV0ZXIgd2FzIGFkZGVkIHRvIHRoZSBjb2RlIGNodW5rIHRvIHByZXZlbnQgcHJpbnRpbmcgb2YgdGhlIFIgY29kZSB0aGF0IGdlbmVyYXRlZCB0aGUgcGxvdC4KCiMjIEluLWxpbmUgTGF0ZXggYW5kIFIgY29kZQoKWW91IGNhbiBjb252ZXJ0IHRoZSB0ZW1wZXJhdHVyZSB1bml0IGZyb20gS2VsdmluIHRvIENlbHNpdXMgd2l0aCB0aGUgZm9ybXVsYQoKJCQgY2Vsc2l1cyA9IGtlbHZpbiAtIDI3My4xNSAkJApBbmQgeW91IGNhbiBjb252ZXJ0IHRoZSByZXN1bHQgdG8gRmFocmVuaGVpdCB3aXRoIHRoZSBmb3JtdWxhIAoKJCQgZmFocmVuaGVpdCA9IGNlbHNpdXMgXHRpbWVzIFxmcmFjezl9ezV9ICsgMzIgJCQKCmBgYHtyLCBlY2hvID0gRkFMU0UsIHJlc3VsdHMgPSAnaGlkZSd9CmV4YW1wbGVfa2VsdmluIDwtIDI4Mi4xNQpgYGAKCkZvciBleGFtcGxlLCBkZWdyZWVzIEtlbHZpbiBjb3JyZXNwb25kcyB0byBgciBleGFtcGxlX2tlbHZpbiAtIDI3My4xNWAgZGVncmVlcyBDZWxzaXVzLgoKIyMgSW50ZXJhY3RpdmUgVmlzdWFsaXphdGlvbnMKCldlIGNhbiB1c2UgaW50ZXJhY3RpdmUgZmVhdHVyZXMgYXMgd2VsbC4gTGV0J3MgbG9hZCB0aGUgcmVxdWlyZWQgcGFja2FnZXMgZmlyc3QuIAoKYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGluY2x1ZGU9RkFMU0V9CmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShkeWdyYXBocykKbGlicmFyeShsZWFmbGV0KQpgYGAKCiMjIyBIVE1MIFdpZGdldHMKCklmIHlvdXIgUiBhbmFseXNpcyBpbnZvbHZlcyBpbnRlcmFjdGl2ZSBjb21wb25lbnRzLCB5b3UncmUgcHJvYmFibHkgYWxyZWFkeSBmYW1pbGlhciB3aXRoIHRoZSBgaHRtbHdpZGdldHNgIGxpYnJhcnkuIFRoZXNlLCB0b28sIGFyZSBzdXBwb3J0ZWQgaW4gdGhlIG5vdGVib29rLiBSdW4gdGhpcyBjaHVuayB0byBzZWUgYW4gaW50ZXJhY3RpdmUgZ3JhcGg6CgpgYGB7cn0KZHlncmFwaChuaHRlbXAsIG1haW4gPSAiTmV3IEhhdmVuIFRlbXBlcmF0dXJlcyIpICU+JSAKICBkeVJhbmdlU2VsZWN0b3IoZGF0ZVdpbmRvdyA9IGMoIjE5MjAtMDEtMDEiLCAiMTk2MC0wMS0wMSIpKQpgYGAKCiMjIFJ1bm5pbmcgQ29kZQoKT25lIG9mIHRoZSBnb2FscyBvZiB0aGUgbm90ZWJvb2sgaXMgdG8gcHJvdmlkZSBhIHNlYW1sZXNzIGVudmlyb25tZW50IGZvciBpbnRlcmFjdGluZyB3aXRoIFIgLS0gdGhhdCBpcywgeW91IHNob3VsZG4ndCBuZWVkIHRvIHJlYWNoIGZvciB0aGUgY29uc29sZSwgZXZlbiB0aG91Z2ggY2h1bmtzIHNlbmQgY29kZSB0aGVyZS4gVG8gaGVscCB5b3Ugc2VlIHRoZSBwcm9ncmVzcyBvZiB5b3VyIGNodW5rIC0tIHRoYXQgaXMsIHdoaWNoIGxpbmVzIGhhdmUgYmVlbiBleGVjdXRlZCBhbmQgd2hpY2ggaGF2ZW4ndCAtLSBSU3R1ZGlvIGRyYXdzIGFuIGluZGljYXRvciBpbiB0aGUgZWRpdG9yIGd1dHRlci4gVHJ5IHJ1bm5pbmcgdGhpcyBjaHVuazoKCmBgYHtyLCBlY2hvPVRSVUV9ClN5cy5zbGVlcCgxKTsgcnVuaWYoMykKU3lzLnNsZWVwKDEpOyBydW5pZigzKQpTeXMuc2xlZXAoMSk7IHJ1bmlmKDMpClN5cy5zbGVlcCgxKTsgcnVuaWYoMykKU3lzLnNsZWVwKDEpOyBydW5pZigzKQpgYGAKCgoKIyMjIEVycm9ycwoKU29tZXRpbWVzIHlvdXIgY29kZSB3aWxsIGdlbmVyYXRlIGVycm9ycy4gSGVyZSdzIGFuIGV4YW1wbGU6CgpgYGB7ciBlcnJvcnMsIGVycm9yPVRSVUV9CiMgU291cmNlIGEgZmlsZSB0aGF0IGRvZXNuJ3QgZXhpc3QKc291cmNlKCJtaXNzaW5nLlIiKQpgYGAKCk5vdGljZSB0aGF0IHRoZSBsaW5lIHRoYXQgY2F1c2VkIHRoZSBlcnJvciBpcyBoaWdobGlnaHRlZCwgYW5kIHlvdSBjYW4gc2VlIHRoZSBlcnJvcidzIHRyYWNlYmFjaywganVzdCBhcyB5b3UgY2FuIGluIHRoZSBSU3R1ZGlvIGNvbnNvbGUuIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSB5b3UncmUgcnVubmluZyBjaHVua3MsIHRoZSBlcnJvciB3aWxsIGNhdXNlIHRoZSBub3RlYm9vayB0byBzdG9wIHJ1bm5pbmcsIGFuZCB0aGUgY3Vyc29yIHdpbGwgc2Nyb2xsIHRvIHRoZSBwb2ludCB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQuCgojIyBSIE5vdGVib29rcwoKVGhpcyBmaWxlIGlzIGEgW1IgTm90ZWJvb2tdKGh0dHA6Ly9ybWFya2Rvd24ucnN0dWRpby5jb20vcl9ub3RlYm9va3MuaHRtbCkuIEl0IGlzIGEgZ3JlYXQgd2F5IHRvIHNoYXJlIHlvdXIgYW5hbHlzaXMgd2l0aCBvdGhlcnMgYmVjYXVzZSBpdCBjb250YWlucyBib3RoIHRoZSBodG1sIG91dHB1dCBhcyB3ZWxsIGFzIHRoZSAuUm1kIGZpbGUgd2l0aCB0aGUgc2NyaXB0IHRvIGdlbmVyYXRlIHRoYXQgb3V0cHV0LgoKIyMjIFNhdmluZyBhbmQgU2hhcmluZwoKQSBub3RlYm9vaydzIHNvdXJjZSBjb2RlIGlzIGFsd2F5cyBpbiBhbiBgLlJtZGAgZmlsZS4gV2hlbmV2ZXIgeW91IHNhdmUgaXQsIGEgc2lkZWNhciBgLm5iLmh0bWxgIGZpbGUgaXMgZ2VuZXJhdGVkLiBUaGlzIGZpbGUgY29udGFpbnMgYSByZW5kZXJlZCBjb3B5IG9mIHRoZSBub3RlYm9vayBpdHNlbGYuIE5vIHNwZWNpYWwgdmlld2VyIGlzIHJlcXVpcmVkLgoKSXQgYWxzbyBjb250YWlucyBhIGNvcHkgb2YgdGhlIG5vdGVib29rJ3Mgc291cmNlIGAuUm1kYCBmaWxlLgoKVG8gbG9vayBhdCB0aGUgYC5uYi5odG1sYCBmaWxlLCBjbGljayAqUHJldmlldyogaW4gdGhlIFJTdHVkaW8gZWRpdG9yIHRvb2xiYXIuIFRoaXMgaXMgYSBmdW5kYW1lbnRhbCBkaWZmZXJlbmNlIGJldHdlZW4gbm90ZWJvb2tzIGFuZCBvdGhlciBSIE1hcmtkb3duIGRvY3VtZW50czsgcHJlc3NpbmcgdGhpcyBidXR0b24gZG9lc24ndCBhY3R1YWxseSBjYXVzZSBhbnkgb2YgeW91ciBjb2RlIHRvIHJ1biwgaXQganVzdCBzaG93cyB5b3UgdGhlIEhUTUwgZmlsZSBhbHJlYWR5IHByZXBhcmVkLiBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHdoZW5ldmVyIHlvdSBzYXZlIHRoZSBgLlJtZGAgZmlsZS4KCklmIHlvdSBvcGVuIHRoZSBgLm5iLmh0bWxgIGZpbGUgaW4gYSB3ZWIgYnJvd3NlciwgeW91J2xsIHNlZSBhbiBvcHRpb24gdG8gZG93bmxvYWQgdGhlIHNvdXJjZS4gWW91IGNhbiBhbHNvIG9wZW4gYW4gYC5uYi5odG1sYCBmaWxlIGluIFJTdHVkaW87IHdoZW4geW91IGRvIHRoaXMsIFJTdHVkaW8gd2lsbCBhdXRvbWF0aWNhbGx5IGV4dHJhY3QgdGhlIGAuUm1kYCBmaWxlIGFuZCBvdXRwdXRzIGluc2lkZSBpdCBhbmQgb3BlbiB0aGUgZmlsZSBpbiB0aGUgbm90ZWJvb2sgZWRpdG9yLgoKIyMjIE5vdGVib29rcyBhcyBSIE1hcmtkb3duIERvY3VtZW50cwoKQSBub3RlYm9vayBpcyBhbHNvIGFuIFIgTWFya2Rvd24gZG9jdW1lbnQuIFRyeSBjaGFuZ2luZyB0aGUgWUFNTCBoZWFkZXIgaW4gdGhpcyBkb2N1bWVudCBzbyB0aGF0IGBodG1sX2RvY3VtZW50YCBpcyB0aGUgZmlyc3Qgb3B0aW9uLCB0aGVuIGNsaWNraW5nIGBLbml0YCAob3IganVzdCBwdWxsaW5nIGRvd24gdGhlICpQcmV2aWV3KikgbWVudS4gWW91IGNvdWxkIGFsc28gY3JlYXRlIGEgUERGIGZyb20gdGhlIG5vdGVib29rLCBhIFdvcmQgZG9jdW1lbnQsIG9yIGV2ZW4gYSBkYXNoYm9hcmQuIAoKIyMjIFB1Ymxpc2hpbmcKClRoZSBub3RlYm9vayBvdXRwdXQgaXMgYSBodG1sIGZpbGUgd2l0aCBpcyBlYXNpbHkgc2hhcmVhYmxlIGFuZCBjYW4gYmUgb3BlbiBpbiBhbnkgbW9kZXJuIGJyb3dzZXIgLSBzbyBubyBSIFN0dWRpbyByZXF1aXJlZCBvbiB0aGUgcmVjZWl2aW5nIGVuZC4gUiBTdHVkaW8gYWxzbyBvZmZlcnMgYSBzZXJ2aWNlIGNhbGxlZCBbUlB1YnNdKGh0dHA6Ly9ycHVicy5jb20vKSB3aGljaCBsZXQncyB5b3UgcHVibGlzaCBkb2N1bWVudHMgKGFuZCBzaGlueSBhcHBzKSBzbyB5b3UgY2FuIHNoYXJlIHRoZW0gd2l0aCBvdGhlcnMgdmlhIGEgbGluay4KClRvIGRvIHNvLCBjbGljayB0aGUgKipwdWJsaXNoKiogYnV0dG9uIGluIFJTdHVkaW8gYW5kIGVudGVyIGEgZmV3IHRoaW5ncyAobGlrZSB0aXRsZSBhbmQgZGVzY3JpcHRpb24pIHRvIHB1Ymxpc2ggdGhlIGRvY3VtZW50IChhbmQgbWFrZSBpdCBwdWJsaWNseSBhdmFpbGFibGUpLiBZb3UgbmVlZCB0byBzaWduIHVwIGZvciBSUHVicyBiZWZvcmVoYW5kIHRvIGJlIGFibGUgdG8gZG8gdGhpcyBxdWlja2x5LgoKIyMgT3RoZXIgb3V0cHV0IGZvcm1hdHMKClIgTm90ZWJvb2tzIGFyZSBhbHNvIFIgTWFya2Rvd24gZG9jdW1lbnRzIGFuZCBhcyBzdWNoIHdlIGNhbiBjaG9vc2Ugb3RoZXIgb3V0cHV0IGZvcm1hdHMuIFRyeSB0byBrbml0IHRoZSBkb2N1bWVudCB0byBodG1sIGFuZCBwZGYgYnkgY2hvb3NlIHRoZSBkb3duIGFycm93IG5leHQgdG8gdGhlIHByZXZpZXcgYnV0dG9uLgoKWW91IGNhbiByZW5kZXIgdGhlIHNhbWUgUiBNYXJrZG93biBmaWxlIGludG8gc2V2ZXJhbCBkaWZmZXJlbnQgZm9ybWF0cy4gVGhlcmUgYXJlIHR3byB3YXlzIHRvIGNoYW5nZSBhIGZpbGUncyBvdXRwdXQgZm9ybWF0LgoKRmlyc3QsIHlvdSBjYW4gY2xpY2sgdGhlIHRyaWFuZ2xlIGljb24gbmV4dCB0byAiS25pdCBIVE1MIiBhdCB0aGUgYm90dG9tIG9mIHRoZSBwYW5lIHRoYXQgZGlzcGxheXMgeW91ciBSIE1hcmtkb3duIGZpbGUuIFRoaXMgd2lsbCBvcGVuIGEgZHJvcCBkb3duIG1lbnUgdGhhdCBnaXZlcyB5b3UgdGhlIGNob2ljZSBvZiByZW5kZXJpbmcgYXMgYW4gSFRNTCBkb2N1bWVudCBvciBhIHBkZiBkb2N1bWVudC4KClNlY29uZCwgeW91IGNhbiBjaGFuZ2UgdGhlIG91dHB1dCBmaWVsZCBpbiB0aGUgWUFNTCBibG9jayBhdCB0aGUgdG9wIG9mIHlvdXIgZG9jdW1lbnQuIEZvciBleGFtcGxlLCB0aGlzIFlBTUwgYmxvY2sgd2lsbCBjcmVhdGUgYW4gSFRNTCBmaWxlOgoKICAgIC0tLQogICAgb3V0cHV0OiBodG1sX2RvY3VtZW50CiAgICAtLS0KClRoaXMgb25lIHdpbGwgY3JlYXRlIGEgcGRmIGZpbGU6CgogICAgLS0tCiAgICBvdXRwdXQ6IHBkZl9kb2N1bWVudAogICAgLS0tClRoaXMgb25lIHdpbGwgY3JlYXRlIGEgTVMgV29yZCBmaWxlOgoKICAgIC0tLQogICAgb3V0cHV0OiB3b3JkX2RvY3VtZW50CiAgICAtLS0KCkFuZCB0aGlzIG9uZSB3aWxsIGNyZWF0ZSBhIE1hcmtkb3duIGZpbGU6CgogICAgLS0tCiAgICBvdXRwdXQ6IG1kX2RvY3VtZW50CiAgICAtLS0KCiMjIFNwZWNpZnkga25pdHIgYW5kIHBhbmRvYyBvcHRpb25zCgpFYWNoIFIgTWFya2Rvd24gb3V0cHV0IHRlbXBsYXRlIGlzIGEgY29sbGVjdGlvbiBvZiBrbml0ciBhbmQgcGFuZG9jIG9wdGlvbnMuIFlvdSBjYW4gY3VzdG9taXplIHlvdXIgb3V0cHV0IGJ5IG92ZXJ3cml0aW5nIHRoZSBkZWZhdWx0IG9wdGlvbnMgdGhhdCBjb21lIHdpdGggdGhlIHRlbXBsYXRlLgoKRm9yIGV4YW1wbGUsIHRoZSBZQU1MIGhlYWRlciBiZWxvdyBvdmVyd3JpdGVzIHRoZSBkZWZhdWx0IGNvZGUgaGlnaGxpZ2h0IHN0eWxlIG9mIHRoZSBwZGZfZG9jdW1lbnQgdGVtcGxhdGUgdG8gY3JlYXRlIGEgZG9jdW1lbnQgdGhhdCB1c2VzIHRoZSB6ZW5idXJuIHN0eWxlOgoKICAgIC0tLQogICAgdGl0bGU6ICJEZW1vIgogICAgb3V0cHV0OgogICAgICBwZGZfZG9jdW1lbnQ6CiAgICAgICAgaGlnaGxpZ2h0OiB6ZW5idXJuCiAgICAtLS0KClRoZSBZQU1MIGhlYWRlciBiZWxvdyBvdmVyd3JpdGVzIHRoZSBkZWZhdWx0IGJvb3RzdHJhcCBDU1MgdGhlbWUgb2YgdGhlIGh0bWxfZG9jdW1lbnQgdGVtcGxhdGUuCgogICAgLS0tCiAgICB0aXRsZTogIkRlbW8iCiAgICBvdXRwdXQ6CiAgICAgIGh0bWxfZG9jdW1lbnQ6CiAgICAgICAgdGhlbWU6IHNwYWNlbGFiCiAgICAtLS0KCiMjIEJyYW5kIHlvdXIgcmVwb3J0cyB3aXRoIHN0eWxlIHNoZWV0cwoKQWJvdmUsIEkgZGlzY3Vzc2VkIGEgd2F5IHRvIGNoYW5nZSB0aGUgQ1NTIHN0eWxlIG9mIHlvdXIgSFRNTCBvdXRwdXQ6IHlvdSBjYW4gc2V0IHRoZSB0aGVtZSBvcHRpb24gb2YgaHRtbF9kb2N1bWVudCB0byBvbmUgb2YgZGVmYXVsdCwgY2VydWxlYW4sIGpvdXJuYWwsIGZsYXRseSwgcmVhZGFibGUsIHNwYWNlbGFiLCB1bml0ZWQsIG9yIGNvc21vLiAoVHJ5IGl0IG91dCkuCgpCdXQgd2hhdCBpZiB5b3Ugd2FudCB0byBjdXN0b21pemUgeW91ciBDU1MgaW4gbW9yZSBzcGVjaWZpYyB3YXlzPyBZb3UgY2FuIGRvIHRoaXMgYnkgd3JpdGluZyBhIC5jc3MgZmlsZSBmb3IgeW91ciByZXBvcnQgYW5kIHNhdmluZyBpdCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIC5SbWQgZmlsZS4gVG8gaGF2ZSB5b3VyIHJlcG9ydCB1c2UgdGhlIENTUywgc2V0IHRoZSBjc3Mgb3B0aW9uIG9mIGh0bWxfZG9jdW1lbnQgdG8gdGhlIGZpbGUgbmFtZSwgbGlrZSB0aGlzCgotLS0KdGl0bGU6ICJEZW1vIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGNzczogc3R5bGVzLmNzcwotLS0KCkN1c3RvbSBDU1MgaXMgYW4gZWFzeSB3YXkgdG8gYWRkIGJyYW5kaW5nIHRvIHlvdXIgcmVwb3J0cy4gVGhlIGV4ZXJjaXNlIGZvbGRlciBjb250YWlucyBhIGZpbGUgY2FsbGVkIGBmYWRlZC5jc3NgLiBUcnkgb3V0IHRvIGNoYW5nZSB0aGUgYXBwZWFyYW5jZSBvZiB5b3VyIGh0bWwgb3V0cHV0Lgo=