From 9d5a504a396ea7e7999058e5564e11d03a141c31 Mon Sep 17 00:00:00 2001 From: sbalci Date: Sat, 12 Jan 2019 23:24:05 +0300 Subject: [PATCH] updated on 2019-01-12 23:24:05 --- Sources.Rmd | 250 +++++++++++++++++++++++++----------------------- Sources.nb.html | 219 ++++++++++++++++++++++++++++++------------ 2 files changed, 290 insertions(+), 179 deletions(-) diff --git a/Sources.Rmd b/Sources.Rmd index f822c5a..6fd0e05 100644 --- a/Sources.Rmd +++ b/Sources.Rmd @@ -23,20 +23,19 @@ output: toc_float: yes --- -# Introduction - -It is a very common bibliometric study type to retrospectively analyse the number of peer reviewed articles written from a country to view the amount of contribution made in a specific scientific discipline. +# Introduction -These studies require too much effort, since the data is generally behind paywalls and restrictions. +It is a very common bibliometric study type to retrospectively analyse the number of peer reviewed articles written from a country to view the amount of contribution made in a specific scientific discipline. +These studies require too much effort, since the data is generally behind paywalls and restrictions. I have previously contributed to a research to identify the Articles from Turkey Published in Pathology Journals Indexed in International Indexes; which is published here: [Turk Patoloji Derg. 2010, 26(2):107-113 doi: 10.5146/tjpath.2010.01006](http://www.turkjpath.org/summary_en.php3?id=1423) -This study had required manual investigation of many excel files, which was time consuming; also redoing and updating the data and results require a similar amount of effort. +This study had required manual investigation of many `excel` files, which was time consuming; also redoing and updating the data and results require a similar amount of effort. In order to automatize these type of analysis in a reproducable fashion, -I will be using +I will be using the following; [R Markdown](https://rmarkdown.rstudio.com/) , @@ -57,203 +56,191 @@ and [Google Scholar](https://scholar.google.com). -http://opencitations.net/download +--- -https://www.scopus.com/sources -https://www.altmetric.com/top100/2018/ -https://dtd.nlm.nih.gov/ncbi/pubmed/out/doc/2018/ +# Codes for data download +## PubMed -MEDLINE®PubMed® XML Element Descriptions and their Attributes +https://dtd.nlm.nih.gov/ncbi/pubmed/out/doc/2018/ + +- MEDLINE®PubMed® XML Element Descriptions and their Attributes https://www.nlm.nih.gov/bsd/licensee/elements_descriptions.html -Comment Correction Type +- Comment Correction Type https://www.ncbi.nlm.nih.gov/books/NBK3827/#pubmedhelp.Comment_Correction_Type -EDirect Documentation +- EDirect Documentation https://dataguide.nlm.nih.gov/edirect/documentation.html -Entrez Direct: E-utilities on the UNIX Command Line +- Entrez Direct: E-utilities on the UNIX Command Line https://www.ncbi.nlm.nih.gov/books/NBK179288/ -The 9 E-utilities and Associated Parameters +- The 9 E-utilities and Associated Parameters https://dataguide.nlm.nih.gov/eutilities/utilities.html -E-utilities and the History server +- E-utilities and the History server https://dataguide.nlm.nih.gov/eutilities/history.html -EDirect Documentation +- EDirect Documentation https://dataguide.nlm.nih.gov/edirect/documentation.html -NCBI NOW, Lecture 3, Introduction to the Linux Shell +- NCBI NOW, Lecture 3, Introduction to the Linux Shell https://www.youtube.com/watch?v=XgaE4VIaJqI -MEDLINE®/PubMed® XML Data Elements +- MEDLINE®/PubMed® XML Data Elements https://www.nlm.nih.gov/bsd/licensee/data_elements_doc.html -pubmed_180101.dtd Documentation +- pubmed_180101.dtd Documentation https://dtd.nlm.nih.gov/ncbi/pubmed/out/doc/2018/ -Using EDirect to create a local copy of PubMed -https://dataguide.nlm.nih.gov/edirect/archive.html -EDirectCookbook -https://ncbi-hackathons.github.io/EDirectCookbook/ +### Entrez Direct: E-utilities on the UNIX Command Line -Entrez Direct: E-utilities on the UNIX Command Line +- Entrez Direct: E-utilities on the UNIX Command Line https://www.ncbi.nlm.nih.gov/books/NBK179288/ -EDirect Overview +- EDirectCookbook +https://ncbi-hackathons.github.io/EDirectCookbook/ + +- EDirect Overview https://dataguide.nlm.nih.gov/edirect/overview.html -Installing EDirect +- Installing EDirect https://dataguide.nlm.nih.gov/edirect/install.html ---- +### Using EDirect to create a local copy of PubMed -If you want to see the code used in the analysis please click the code button on the right upper corner or throughout the page. +- Using EDirect to create a local copy of PubMed ---- +https://dataguide.nlm.nih.gov/edirect/archive.html -# Feedback -[Serdar Balcı, MD, Pathologist](https://github.com/sbalci) would like to hear your feedback: https://goo.gl/forms/YjGZ5DHgtPlR1RnB3 -This document will be continiously updated and the last update was on `r Sys.Date()`. ---- +``` +https://dataguide.nlm.nih.gov/edirect/archive.html +archive-pubmed -path /Volumes/Agu2018/PubMed ---- -title: "Bibliographic Studies" -subtitle: "Sources Used For Analysis" -author: "Serdar Balcı, MD, Pathologist" -date: '`r format(Sys.Date())`' -output: - html_notebook: - code_folding: hide - fig_caption: yes - highlight: kate - number_sections: yes - theme: cerulean - toc: yes - toc_float: yes - html_document: - code_folding: hide - df_print: kable - highlight: kate - keep_md: yes - number_sections: yes - theme: cerulean - toc: yes - toc_float: yes ---- +caffeinate -# Introduction +esearch -db pubmed -query "breast cancer" | \ +efetch -format uid | \ +fetch-pubmed -path /Volumes/Agu2018/PubMed | \ +xtract -pattern PubmedArticle -element MedlineCitation/PMID ISOAbbreviation Volume Issue PubDate/Year > trial.txt -It is a very common bibliometric study type to retrospectively analyse the number of peer reviewed articles written from a country to view the amount of contribution made in a specific scientific discipline. +esearch -db pubmed -query "Turkey[Affiliation]" \ +-datetype PDAT -mindate 2018 -maxdate 3000 | \ +efetch -format xml > data/Turkey_all2.xml +``` -These studies require too much effort, since the data is generally behind paywalls and restrictions. -I have previously contributed to a research to identify the Articles from Turkey Published in Pathology Journals Indexed in International Indexes; which is published here: [Turk Patoloji Derg. 2010, 26(2):107-113 doi: 10.5146/tjpath.2010.01006](http://www.turkjpath.org/summary_en.php3?id=1423) +### Parser for Pubmed Open-Access XML Subset and MEDLINE XML Dataset -This study had required manual investigation of many excel files, which was time consuming; also redoing and updating the data and results require a similar amount of effort. +- Python XML parser for PubMed Open Access subset and MEDLINE dataset -In order to automatize these type of analysis in a reproducable fashion, -I will be using - -[R Markdown](https://rmarkdown.rstudio.com/) -, -[R Notebook](https://rmarkdown.rstudio.com/r_notebooks.html) -, -[Shiny](https://shiny.rstudio.com/) -and -[Terminal](https://en.0wikipedia.org/wiki/Terminal_(macOS)) -for coding. -I also plan to use other bibliographic tools like -[VOSviewer](http://www.vosviewer.com/). +http://titipata.github.io/pubmed_parser/ +http://github.com/titipata/pubmed_parser -Data will be retrieved from -[PubMed](https://www.ncbi.nlm.nih.gov/pubmed), -[E-direct](https://dataguide.nlm.nih.gov/edirect/overview.html), -[WoS](www.webofknowledge.com/) -and -[Google Scholar](https://scholar.google.com). +### MEDLINEXMLToJSON +https://github.com/ldbib/MEDLINEXMLToJSON -https://www.scopus.com/sources +### Workflow of Pubmed Parser with PySpark -https://www.altmetric.com/top100/2018/ +https://github.com/titipata/pubmed_parser/wiki -https://grid.ac/ +## ORCID -https://dtd.nlm.nih.gov/ncbi/pubmed/out/doc/2018/ +https://orcid.org/content/orcid-public-data-file +https://orcid.org/blog/2019/01/11/free-everyone-always-orcid-public-api-and-data-file -MEDLINE®PubMed® XML Element Descriptions and their Attributes -https://www.nlm.nih.gov/bsd/licensee/elements_descriptions.html -Comment Correction Type -https://www.ncbi.nlm.nih.gov/books/NBK3827/#pubmedhelp.Comment_Correction_Type +- A compendium of taxonomists on ORCID +https://orcid.org/blog/2018/04/06/compendium-taxonomists-orcid -EDirect Documentation -https://dataguide.nlm.nih.gov/edirect/documentation.html +- Vast set of public CVs reveals the world’s most migratory scientists +https://www.sciencemag.org/news/2017/05/vast-set-public-cvs-reveals-world-s-most-migratory-scientists -Entrez Direct: E-utilities on the UNIX Command Line -https://www.ncbi.nlm.nih.gov/books/NBK179288/ -The 9 E-utilities and Associated Parameters -https://dataguide.nlm.nih.gov/eutilities/utilities.html +## Semantic Scholar -E-utilities and the History server -https://dataguide.nlm.nih.gov/eutilities/history.html -EDirect Documentation -https://dataguide.nlm.nih.gov/edirect/documentation.html +``` +Semantic Scholar Open Research Corpus -NCBI NOW, Lecture 3, Introduction to the Linux Shell -https://www.youtube.com/watch?v=XgaE4VIaJqI +https://s3-us-west-2.amazonaws.com/ai2-s2-research-public/open-corpus/index.html -MEDLINE®/PubMed® XML Data Elements -https://www.nlm.nih.gov/bsd/licensee/data_elements_doc.html +aws s3 cp --recursive s3://ai2-s2-research-public/open-corpus/ ~/Volumes/Agu2018/semantic/ -pubmed_180101.dtd Documentation -https://dtd.nlm.nih.gov/ncbi/pubmed/out/doc/2018/ +wget -P /Volumes/Agu2018/semantic -i https://s3-us-west-2.amazonaws.com/ai2-s2-research-public/open-corpus/manifest.txt -Using EDirect to create a local copy of PubMed -https://dataguide.nlm.nih.gov/edirect/archive.html +caffeinate -EDirectCookbook -https://ncbi-hackathons.github.io/EDirectCookbook/ +``` -Entrez Direct: E-utilities on the UNIX Command Line -https://www.ncbi.nlm.nih.gov/books/NBK179288/ -EDirect Overview -https://dataguide.nlm.nih.gov/edirect/overview.html +## Scopus -Installing EDirect -https://dataguide.nlm.nih.gov/edirect/install.html +https://www.scopus.com/sources ---- -If you want to see the code used in the analysis please click the code button on the right upper corner or throughout the page. +## Altmetrics + +https://www.altmetric.com/top100/2018/ + + +## Grid + +https://grid.ac/ + + + +## Cobalmetrics + +https://cobaltmetrics.com/ + +- Toward privacy-preserving altmetrics exploration with Cobaltmetrics and ORCID + +https://medium.com/thunken/toward-privacy-preserving-altmetrics-exploration-with-cobaltmetrics-and-orcid-f5ab6fa7898a + + +## OpenCitations + +http://opencitations.net + +http://opencitations.net/download + +http://opencitations.net/corpus + +https://github.com/opencitations + +- The OpenCitations Data Model +https://figshare.com/articles/Metadata_for_the_OpenCitations_Corpus/3443876 + +- Creating Open Citation Data with BCite +https://semsci.github.io/SemSci2018/papers/1/bcite-semsci2018.html + +https://github.com/opencitations/bcite + --- @@ -263,4 +250,29 @@ If you want to see the code used in the analysis please click the code button on This document will be continiously updated and the last update was on `r Sys.Date()`. ---- \ No newline at end of file +--- + + + +
+ + + +--- diff --git a/Sources.nb.html b/Sources.nb.html index c8f0f37..a424df6 100644 --- a/Sources.nb.html +++ b/Sources.nb.html @@ -11,7 +11,7 @@ - + Bibliographic Studies @@ -2895,7 +2895,7 @@

Bibliographic Studies

Sources Used For Analysis

Serdar Balcı, MD, Pathologist

-

2019-01-11

+

2019-01-12

@@ -2906,78 +2906,177 @@

1 Introduction

It is a very common bibliometric study type to retrospectively analyse the number of peer reviewed articles written from a country to view the amount of contribution made in a specific scientific discipline.

These studies require too much effort, since the data is generally behind paywalls and restrictions.

I have previously contributed to a research to identify the Articles from Turkey Published in Pathology Journals Indexed in International Indexes; which is published here: Turk Patoloji Derg. 2010, 26(2):107-113 doi: 10.5146/tjpath.2010.01006

-

This study had required manual investigation of many excel files, which was time consuming; also redoing and updating the data and results require a similar amount of effort.

-

In order to automatize these type of analysis in a reproducable fashion, I will be using R Markdown , R Notebook , Shiny and Terminal for coding. I also plan to use other bibliographic tools like VOSviewer.

+

This study had required manual investigation of many excel files, which was time consuming; also redoing and updating the data and results require a similar amount of effort.

+

In order to automatize these type of analysis in a reproducable fashion, I will be using the following;
+ R Markdown , R Notebook , Shiny and Terminal for coding. I also plan to use other bibliographic tools like VOSviewer.

Data will be retrieved from PubMed, E-direct, WoS and Google Scholar.

-

http://opencitations.net/download

-

https://www.scopus.com/sources

-

https://www.altmetric.com/top100/2018/

-

https://dtd.nlm.nih.gov/ncbi/pubmed/out/doc/2018/

-

MEDLINE®PubMed® XML Element Descriptions and their Attributes https://www.nlm.nih.gov/bsd/licensee/elements_descriptions.html

-

Comment Correction Type https://www.ncbi.nlm.nih.gov/books/NBK3827/#pubmedhelp.Comment_Correction_Type

-

EDirect Documentation https://dataguide.nlm.nih.gov/edirect/documentation.html

-

Entrez Direct: E-utilities on the UNIX Command Line https://www.ncbi.nlm.nih.gov/books/NBK179288/

-

The 9 E-utilities and Associated Parameters https://dataguide.nlm.nih.gov/eutilities/utilities.html

-

E-utilities and the History server https://dataguide.nlm.nih.gov/eutilities/history.html

-

EDirect Documentation https://dataguide.nlm.nih.gov/edirect/documentation.html

-

NCBI NOW, Lecture 3, Introduction to the Linux Shell https://www.youtube.com/watch?v=XgaE4VIaJqI

-

MEDLINE®/PubMed® XML Data Elements https://www.nlm.nih.gov/bsd/licensee/data_elements_doc.html

-

pubmed_180101.dtd Documentation https://dtd.nlm.nih.gov/ncbi/pubmed/out/doc/2018/

-

Using EDirect to create a local copy of PubMed https://dataguide.nlm.nih.gov/edirect/archive.html

-

EDirectCookbook https://ncbi-hackathons.github.io/EDirectCookbook/

-

Entrez Direct: E-utilities on the UNIX Command Line https://www.ncbi.nlm.nih.gov/books/NBK179288/

-

EDirect Overview https://dataguide.nlm.nih.gov/edirect/overview.html

-

Installing EDirect https://dataguide.nlm.nih.gov/edirect/install.html

-
-

If you want to see the code used in the analysis please click the code button on the right upper corner or throughout the page.


-
-

2 Feedback

-

Serdar Balcı, MD, Pathologist would like to hear your feedback: https://goo.gl/forms/YjGZ5DHgtPlR1RnB3

-

This document will be continiously updated and the last update was on 2019-01-11.

-
+
+

2 Codes for data download

+
+

2.1 PubMed

+

https://dtd.nlm.nih.gov/ncbi/pubmed/out/doc/2018/

+ +
+

2.1.1 Entrez Direct: E-utilities on the UNIX Command Line

+
-
-

3 Introduction

-

It is a very common bibliometric study type to retrospectively analyse the number of peer reviewed articles written from a country to view the amount of contribution made in a specific scientific discipline.

-

These studies require too much effort, since the data is generally behind paywalls and restrictions.

-

I have previously contributed to a research to identify the Articles from Turkey Published in Pathology Journals Indexed in International Indexes; which is published here: Turk Patoloji Derg. 2010, 26(2):107-113 doi: 10.5146/tjpath.2010.01006

-

This study had required manual investigation of many excel files, which was time consuming; also redoing and updating the data and results require a similar amount of effort.

-

In order to automatize these type of analysis in a reproducable fashion, I will be using R Markdown , R Notebook , Shiny and Terminal for coding. I also plan to use other bibliographic tools like VOSviewer.

-

Data will be retrieved from PubMed, E-direct, WoS and Google Scholar.

+
+

2.1.2 Using EDirect to create a local copy of PubMed

+
    +
  • Using EDirect to create a local copy of PubMed
  • +
+

https://dataguide.nlm.nih.gov/edirect/archive.html

+

+https://dataguide.nlm.nih.gov/edirect/archive.html
+
+archive-pubmed -path /Volumes/Agu2018/PubMed
+
+caffeinate
+
+esearch -db pubmed -query "breast cancer" | \
+efetch -format uid | \
+fetch-pubmed -path /Volumes/Agu2018/PubMed | \
+xtract -pattern PubmedArticle -element MedlineCitation/PMID ISOAbbreviation Volume Issue PubDate/Year > trial.txt
+
+esearch -db pubmed -query "Turkey[Affiliation]" \
+-datetype PDAT -mindate 2018 -maxdate 3000 | \
+efetch -format xml > data/Turkey_all2.xml
+
+
+
+

2.1.3 Parser for Pubmed Open-Access XML Subset and MEDLINE XML Dataset

+
    +
  • Python XML parser for PubMed Open Access subset and MEDLINE dataset
  • +
+

http://titipata.github.io/pubmed_parser/
+http://github.com/titipata/pubmed_parser

+
+ +
+

2.1.5 Workflow of Pubmed Parser with PySpark

+

https://github.com/titipata/pubmed_parser/wiki

+
+
+ +
+

2.3 Semantic Scholar

+
Semantic Scholar Open Research Corpus
+
+https://s3-us-west-2.amazonaws.com/ai2-s2-research-public/open-corpus/index.html
+
+aws s3 cp --recursive s3://ai2-s2-research-public/open-corpus/ ~/Volumes/Agu2018/semantic/
+
+wget -P /Volumes/Agu2018/semantic -i https://s3-us-west-2.amazonaws.com/ai2-s2-research-public/open-corpus/manifest.txt
+
+caffeinate
+
+
+ + +
+

2.6 Grid

https://grid.ac/

-

https://dtd.nlm.nih.gov/ncbi/pubmed/out/doc/2018/

-

MEDLINE®PubMed® XML Element Descriptions and their Attributes https://www.nlm.nih.gov/bsd/licensee/elements_descriptions.html

-

Comment Correction Type https://www.ncbi.nlm.nih.gov/books/NBK3827/#pubmedhelp.Comment_Correction_Type

-

EDirect Documentation https://dataguide.nlm.nih.gov/edirect/documentation.html

-

Entrez Direct: E-utilities on the UNIX Command Line https://www.ncbi.nlm.nih.gov/books/NBK179288/

-

The 9 E-utilities and Associated Parameters https://dataguide.nlm.nih.gov/eutilities/utilities.html

-

E-utilities and the History server https://dataguide.nlm.nih.gov/eutilities/history.html

-

EDirect Documentation https://dataguide.nlm.nih.gov/edirect/documentation.html

-

NCBI NOW, Lecture 3, Introduction to the Linux Shell https://www.youtube.com/watch?v=XgaE4VIaJqI

-

MEDLINE®/PubMed® XML Data Elements https://www.nlm.nih.gov/bsd/licensee/data_elements_doc.html

-

pubmed_180101.dtd Documentation https://dtd.nlm.nih.gov/ncbi/pubmed/out/doc/2018/

-

Using EDirect to create a local copy of PubMed https://dataguide.nlm.nih.gov/edirect/archive.html

-

EDirectCookbook https://ncbi-hackathons.github.io/EDirectCookbook/

-

Entrez Direct: E-utilities on the UNIX Command Line https://www.ncbi.nlm.nih.gov/books/NBK179288/

-

EDirect Overview https://dataguide.nlm.nih.gov/edirect/overview.html

-

Installing EDirect https://dataguide.nlm.nih.gov/edirect/install.html

-
-

If you want to see the code used in the analysis please click the code button on the right upper corner or throughout the page.

+
+
+

2.7 Cobalmetrics

+

https://cobaltmetrics.com/

+
    +
  • Toward privacy-preserving altmetrics exploration with Cobaltmetrics and ORCID
  • +
+

https://medium.com/thunken/toward-privacy-preserving-altmetrics-exploration-with-cobaltmetrics-and-orcid-f5ab6fa7898a

+
+ -
-

4 Feedback

+
+
+

3 Feedback

Serdar Balcı, MD, Pathologist would like to hear your feedback: https://goo.gl/forms/YjGZ5DHgtPlR1RnB3

-

This document will be continiously updated and the last update was on 2019-01-11.

+

This document will be continiously updated and the last update was on 2019-01-12.

+
+ +
+ +
+ +
-
LS0tCnRpdGxlOiAiQmlibGlvZ3JhcGhpYyBTdHVkaWVzIgpzdWJ0aXRsZTogIlNvdXJjZXMgVXNlZCBGb3IgQW5hbHlzaXMiCmF1dGhvcjogIlNlcmRhciBCYWxjxLEsIE1ELCBQYXRob2xvZ2lzdCIKZGF0ZTogJ2ByIGZvcm1hdChTeXMuRGF0ZSgpKWAnCm91dHB1dDogCiAgaHRtbF9ub3RlYm9vazogCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGZpZ19jYXB0aW9uOiB5ZXMKICAgIGhpZ2hsaWdodDoga2F0ZQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMKICAgIHRoZW1lOiBjZXJ1bGVhbgogICAgdG9jOiB5ZXMKICAgIHRvY19mbG9hdDogeWVzCiAgaHRtbF9kb2N1bWVudDogCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGRmX3ByaW50OiBrYWJsZQogICAgaGlnaGxpZ2h0OiBrYXRlCiAgICBrZWVwX21kOiB5ZXMKICAgIG51bWJlcl9zZWN0aW9uczogeWVzCiAgICB0aGVtZTogY2VydWxlYW4KICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwotLS0KCiMgSW50cm9kdWN0aW9uCgpJdCBpcyBhIHZlcnkgY29tbW9uIGJpYmxpb21ldHJpYyBzdHVkeSB0eXBlIHRvIHJldHJvc3BlY3RpdmVseSBhbmFseXNlIHRoZSBudW1iZXIgb2YgcGVlciByZXZpZXdlZCBhcnRpY2xlcyB3cml0dGVuIGZyb20gYSBjb3VudHJ5IHRvIHZpZXcgdGhlIGFtb3VudCBvZiBjb250cmlidXRpb24gbWFkZSBpbiBhIHNwZWNpZmljIHNjaWVudGlmaWMgZGlzY2lwbGluZS4KCgpUaGVzZSBzdHVkaWVzIHJlcXVpcmUgdG9vIG11Y2ggZWZmb3J0LCBzaW5jZSB0aGUgZGF0YSBpcyBnZW5lcmFsbHkgYmVoaW5kIHBheXdhbGxzIGFuZCByZXN0cmljdGlvbnMuCgoKSSBoYXZlIHByZXZpb3VzbHkgY29udHJpYnV0ZWQgdG8gYSByZXNlYXJjaCB0byBpZGVudGlmeSB0aGUgQXJ0aWNsZXMgZnJvbSBUdXJrZXkgUHVibGlzaGVkIGluIFBhdGhvbG9neSBKb3VybmFscyBJbmRleGVkIGluIEludGVybmF0aW9uYWwgSW5kZXhlczsgd2hpY2ggaXMgcHVibGlzaGVkIGhlcmU6IFtUdXJrIFBhdG9sb2ppIERlcmcuIDIwMTAsIDI2KDIpOjEwNy0xMTMgZG9pOiAxMC41MTQ2L3RqcGF0aC4yMDEwLjAxMDA2XShodHRwOi8vd3d3LnR1cmtqcGF0aC5vcmcvc3VtbWFyeV9lbi5waHAzP2lkPTE0MjMpIAoKVGhpcyBzdHVkeSBoYWQgcmVxdWlyZWQgbWFudWFsIGludmVzdGlnYXRpb24gb2YgbWFueSBleGNlbCBmaWxlcywgd2hpY2ggd2FzIHRpbWUgY29uc3VtaW5nOyBhbHNvIHJlZG9pbmcgYW5kIHVwZGF0aW5nIHRoZSBkYXRhIGFuZCByZXN1bHRzIHJlcXVpcmUgYSBzaW1pbGFyIGFtb3VudCBvZiBlZmZvcnQuCgpJbiBvcmRlciB0byBhdXRvbWF0aXplIHRoZXNlIHR5cGUgb2YgYW5hbHlzaXMgaW4gYSByZXByb2R1Y2FibGUgZmFzaGlvbiwgCkkgd2lsbCBiZSB1c2luZwo8IS0tIGxpc3Qgb2YgYW5hbHlzaXMgdG9vbHMgLS0+CltSIE1hcmtkb3duXShodHRwczovL3JtYXJrZG93bi5yc3R1ZGlvLmNvbS8pCiwKW1IgTm90ZWJvb2tdKGh0dHBzOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tL3Jfbm90ZWJvb2tzLmh0bWwpCiwKW1NoaW55XShodHRwczovL3NoaW55LnJzdHVkaW8uY29tLykKYW5kCltUZXJtaW5hbF0oaHR0cHM6Ly9lbi4wd2lraXBlZGlhLm9yZy93aWtpL1Rlcm1pbmFsXyhtYWNPUykpCmZvciBjb2RpbmcuIApJIGFsc28gcGxhbiB0byB1c2Ugb3RoZXIgYmlibGlvZ3JhcGhpYyB0b29scyBsaWtlCltWT1N2aWV3ZXJdKGh0dHA6Ly93d3cudm9zdmlld2VyLmNvbS8pLgoKRGF0YSB3aWxsIGJlIHJldHJpZXZlZCBmcm9tIApbUHViTWVkXShodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3B1Ym1lZCksIApbRS1kaXJlY3RdKGh0dHBzOi8vZGF0YWd1aWRlLm5sbS5uaWguZ292L2VkaXJlY3Qvb3ZlcnZpZXcuaHRtbCksCltXb1NdKHd3dy53ZWJvZmtub3dsZWRnZS5jb20vKQphbmQKW0dvb2dsZSBTY2hvbGFyXShodHRwczovL3NjaG9sYXIuZ29vZ2xlLmNvbSkuCgoKaHR0cDovL29wZW5jaXRhdGlvbnMubmV0L2Rvd25sb2FkCgoKCmh0dHBzOi8vd3d3LnNjb3B1cy5jb20vc291cmNlcwoKCmh0dHBzOi8vd3d3LmFsdG1ldHJpYy5jb20vdG9wMTAwLzIwMTgvCgoKCmh0dHBzOi8vZHRkLm5sbS5uaWguZ292L25jYmkvcHVibWVkL291dC9kb2MvMjAxOC8KCgpNRURMSU5Fwq5QdWJNZWTCriBYTUwgRWxlbWVudCBEZXNjcmlwdGlvbnMgYW5kIHRoZWlyIEF0dHJpYnV0ZXMKaHR0cHM6Ly93d3cubmxtLm5paC5nb3YvYnNkL2xpY2Vuc2VlL2VsZW1lbnRzX2Rlc2NyaXB0aW9ucy5odG1sCgpDb21tZW50IENvcnJlY3Rpb24gVHlwZQpodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L2Jvb2tzL05CSzM4MjcvI3B1Ym1lZGhlbHAuQ29tbWVudF9Db3JyZWN0aW9uX1R5cGUKCkVEaXJlY3QgRG9jdW1lbnRhdGlvbgpodHRwczovL2RhdGFndWlkZS5ubG0ubmloLmdvdi9lZGlyZWN0L2RvY3VtZW50YXRpb24uaHRtbAoKRW50cmV6IERpcmVjdDogRS11dGlsaXRpZXMgb24gdGhlIFVOSVggQ29tbWFuZCBMaW5lCmh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvYm9va3MvTkJLMTc5Mjg4LwoKVGhlIDkgRS11dGlsaXRpZXMgYW5kIEFzc29jaWF0ZWQgUGFyYW1ldGVycwpodHRwczovL2RhdGFndWlkZS5ubG0ubmloLmdvdi9ldXRpbGl0aWVzL3V0aWxpdGllcy5odG1sCgpFLXV0aWxpdGllcyBhbmQgdGhlIEhpc3Rvcnkgc2VydmVyCmh0dHBzOi8vZGF0YWd1aWRlLm5sbS5uaWguZ292L2V1dGlsaXRpZXMvaGlzdG9yeS5odG1sCgpFRGlyZWN0IERvY3VtZW50YXRpb24KaHR0cHM6Ly9kYXRhZ3VpZGUubmxtLm5paC5nb3YvZWRpcmVjdC9kb2N1bWVudGF0aW9uLmh0bWwKCk5DQkkgTk9XLCBMZWN0dXJlIDMsIEludHJvZHVjdGlvbiB0byB0aGUgTGludXggU2hlbGwKaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1YZ2FFNFZJYUpxSQoKTUVETElORcKuL1B1Yk1lZMKuIFhNTCBEYXRhIEVsZW1lbnRzCmh0dHBzOi8vd3d3Lm5sbS5uaWguZ292L2JzZC9saWNlbnNlZS9kYXRhX2VsZW1lbnRzX2RvYy5odG1sCgpwdWJtZWRfMTgwMTAxLmR0ZCBEb2N1bWVudGF0aW9uCmh0dHBzOi8vZHRkLm5sbS5uaWguZ292L25jYmkvcHVibWVkL291dC9kb2MvMjAxOC8KClVzaW5nIEVEaXJlY3QgdG8gY3JlYXRlIGEgbG9jYWwgY29weSBvZiBQdWJNZWQKaHR0cHM6Ly9kYXRhZ3VpZGUubmxtLm5paC5nb3YvZWRpcmVjdC9hcmNoaXZlLmh0bWwKCkVEaXJlY3RDb29rYm9vawpodHRwczovL25jYmktaGFja2F0aG9ucy5naXRodWIuaW8vRURpcmVjdENvb2tib29rLwoKRW50cmV6IERpcmVjdDogRS11dGlsaXRpZXMgb24gdGhlIFVOSVggQ29tbWFuZCBMaW5lCmh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvYm9va3MvTkJLMTc5Mjg4LwoKRURpcmVjdCBPdmVydmlldwpodHRwczovL2RhdGFndWlkZS5ubG0ubmloLmdvdi9lZGlyZWN0L292ZXJ2aWV3Lmh0bWwKCkluc3RhbGxpbmcgRURpcmVjdApodHRwczovL2RhdGFndWlkZS5ubG0ubmloLmdvdi9lZGlyZWN0L2luc3RhbGwuaHRtbAoKCi0tLQoKSWYgeW91IHdhbnQgdG8gc2VlIHRoZSBjb2RlIHVzZWQgaW4gdGhlIGFuYWx5c2lzIHBsZWFzZSBjbGljayB0aGUgY29kZSBidXR0b24gb24gdGhlIHJpZ2h0IHVwcGVyIGNvcm5lciBvciB0aHJvdWdob3V0IHRoZSBwYWdlLiAKCi0tLQoKIyBGZWVkYmFjawoKW1NlcmRhciBCYWxjxLEsIE1ELCBQYXRob2xvZ2lzdF0oaHR0cHM6Ly9naXRodWIuY29tL3NiYWxjaSkgd291bGQgbGlrZSB0byBoZWFyIHlvdXIgZmVlZGJhY2s6IGh0dHBzOi8vZ29vLmdsL2Zvcm1zL1lqR1o1REhndFBsUjFSbkIzCgpUaGlzIGRvY3VtZW50IHdpbGwgYmUgY29udGluaW91c2x5IHVwZGF0ZWQgYW5kIHRoZSBsYXN0IHVwZGF0ZSB3YXMgb24gYHIgU3lzLkRhdGUoKWAuCgotLS0KCgoKLS0tCnRpdGxlOiAiQmlibGlvZ3JhcGhpYyBTdHVkaWVzIgpzdWJ0aXRsZTogIlNvdXJjZXMgVXNlZCBGb3IgQW5hbHlzaXMiCmF1dGhvcjogIlNlcmRhciBCYWxjxLEsIE1ELCBQYXRob2xvZ2lzdCIKZGF0ZTogJ2ByIGZvcm1hdChTeXMuRGF0ZSgpKWAnCm91dHB1dDogCiAgaHRtbF9ub3RlYm9vazogCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGZpZ19jYXB0aW9uOiB5ZXMKICAgIGhpZ2hsaWdodDoga2F0ZQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMKICAgIHRoZW1lOiBjZXJ1bGVhbgogICAgdG9jOiB5ZXMKICAgIHRvY19mbG9hdDogeWVzCiAgaHRtbF9kb2N1bWVudDogCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGRmX3ByaW50OiBrYWJsZQogICAgaGlnaGxpZ2h0OiBrYXRlCiAgICBrZWVwX21kOiB5ZXMKICAgIG51bWJlcl9zZWN0aW9uczogeWVzCiAgICB0aGVtZTogY2VydWxlYW4KICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwotLS0KCiMgSW50cm9kdWN0aW9uCgpJdCBpcyBhIHZlcnkgY29tbW9uIGJpYmxpb21ldHJpYyBzdHVkeSB0eXBlIHRvIHJldHJvc3BlY3RpdmVseSBhbmFseXNlIHRoZSBudW1iZXIgb2YgcGVlciByZXZpZXdlZCBhcnRpY2xlcyB3cml0dGVuIGZyb20gYSBjb3VudHJ5IHRvIHZpZXcgdGhlIGFtb3VudCBvZiBjb250cmlidXRpb24gbWFkZSBpbiBhIHNwZWNpZmljIHNjaWVudGlmaWMgZGlzY2lwbGluZS4KCgpUaGVzZSBzdHVkaWVzIHJlcXVpcmUgdG9vIG11Y2ggZWZmb3J0LCBzaW5jZSB0aGUgZGF0YSBpcyBnZW5lcmFsbHkgYmVoaW5kIHBheXdhbGxzIGFuZCByZXN0cmljdGlvbnMuCgoKSSBoYXZlIHByZXZpb3VzbHkgY29udHJpYnV0ZWQgdG8gYSByZXNlYXJjaCB0byBpZGVudGlmeSB0aGUgQXJ0aWNsZXMgZnJvbSBUdXJrZXkgUHVibGlzaGVkIGluIFBhdGhvbG9neSBKb3VybmFscyBJbmRleGVkIGluIEludGVybmF0aW9uYWwgSW5kZXhlczsgd2hpY2ggaXMgcHVibGlzaGVkIGhlcmU6IFtUdXJrIFBhdG9sb2ppIERlcmcuIDIwMTAsIDI2KDIpOjEwNy0xMTMgZG9pOiAxMC41MTQ2L3RqcGF0aC4yMDEwLjAxMDA2XShodHRwOi8vd3d3LnR1cmtqcGF0aC5vcmcvc3VtbWFyeV9lbi5waHAzP2lkPTE0MjMpIAoKVGhpcyBzdHVkeSBoYWQgcmVxdWlyZWQgbWFudWFsIGludmVzdGlnYXRpb24gb2YgbWFueSBleGNlbCBmaWxlcywgd2hpY2ggd2FzIHRpbWUgY29uc3VtaW5nOyBhbHNvIHJlZG9pbmcgYW5kIHVwZGF0aW5nIHRoZSBkYXRhIGFuZCByZXN1bHRzIHJlcXVpcmUgYSBzaW1pbGFyIGFtb3VudCBvZiBlZmZvcnQuCgpJbiBvcmRlciB0byBhdXRvbWF0aXplIHRoZXNlIHR5cGUgb2YgYW5hbHlzaXMgaW4gYSByZXByb2R1Y2FibGUgZmFzaGlvbiwgCkkgd2lsbCBiZSB1c2luZwo8IS0tIGxpc3Qgb2YgYW5hbHlzaXMgdG9vbHMgLS0+CltSIE1hcmtkb3duXShodHRwczovL3JtYXJrZG93bi5yc3R1ZGlvLmNvbS8pCiwKW1IgTm90ZWJvb2tdKGh0dHBzOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tL3Jfbm90ZWJvb2tzLmh0bWwpCiwKW1NoaW55XShodHRwczovL3NoaW55LnJzdHVkaW8uY29tLykKYW5kCltUZXJtaW5hbF0oaHR0cHM6Ly9lbi4wd2lraXBlZGlhLm9yZy93aWtpL1Rlcm1pbmFsXyhtYWNPUykpCmZvciBjb2RpbmcuIApJIGFsc28gcGxhbiB0byB1c2Ugb3RoZXIgYmlibGlvZ3JhcGhpYyB0b29scyBsaWtlCltWT1N2aWV3ZXJdKGh0dHA6Ly93d3cudm9zdmlld2VyLmNvbS8pLgoKRGF0YSB3aWxsIGJlIHJldHJpZXZlZCBmcm9tIApbUHViTWVkXShodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3B1Ym1lZCksIApbRS1kaXJlY3RdKGh0dHBzOi8vZGF0YWd1aWRlLm5sbS5uaWguZ292L2VkaXJlY3Qvb3ZlcnZpZXcuaHRtbCksCltXb1NdKHd3dy53ZWJvZmtub3dsZWRnZS5jb20vKQphbmQKW0dvb2dsZSBTY2hvbGFyXShodHRwczovL3NjaG9sYXIuZ29vZ2xlLmNvbSkuCgoKCmh0dHBzOi8vd3d3LnNjb3B1cy5jb20vc291cmNlcwoKCmh0dHBzOi8vd3d3LmFsdG1ldHJpYy5jb20vdG9wMTAwLzIwMTgvCgoKaHR0cHM6Ly9ncmlkLmFjLwoKCmh0dHBzOi8vZHRkLm5sbS5uaWguZ292L25jYmkvcHVibWVkL291dC9kb2MvMjAxOC8KCgpNRURMSU5Fwq5QdWJNZWTCriBYTUwgRWxlbWVudCBEZXNjcmlwdGlvbnMgYW5kIHRoZWlyIEF0dHJpYnV0ZXMKaHR0cHM6Ly93d3cubmxtLm5paC5nb3YvYnNkL2xpY2Vuc2VlL2VsZW1lbnRzX2Rlc2NyaXB0aW9ucy5odG1sCgpDb21tZW50IENvcnJlY3Rpb24gVHlwZQpodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L2Jvb2tzL05CSzM4MjcvI3B1Ym1lZGhlbHAuQ29tbWVudF9Db3JyZWN0aW9uX1R5cGUKCkVEaXJlY3QgRG9jdW1lbnRhdGlvbgpodHRwczovL2RhdGFndWlkZS5ubG0ubmloLmdvdi9lZGlyZWN0L2RvY3VtZW50YXRpb24uaHRtbAoKRW50cmV6IERpcmVjdDogRS11dGlsaXRpZXMgb24gdGhlIFVOSVggQ29tbWFuZCBMaW5lCmh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvYm9va3MvTkJLMTc5Mjg4LwoKVGhlIDkgRS11dGlsaXRpZXMgYW5kIEFzc29jaWF0ZWQgUGFyYW1ldGVycwpodHRwczovL2RhdGFndWlkZS5ubG0ubmloLmdvdi9ldXRpbGl0aWVzL3V0aWxpdGllcy5odG1sCgpFLXV0aWxpdGllcyBhbmQgdGhlIEhpc3Rvcnkgc2VydmVyCmh0dHBzOi8vZGF0YWd1aWRlLm5sbS5uaWguZ292L2V1dGlsaXRpZXMvaGlzdG9yeS5odG1sCgpFRGlyZWN0IERvY3VtZW50YXRpb24KaHR0cHM6Ly9kYXRhZ3VpZGUubmxtLm5paC5nb3YvZWRpcmVjdC9kb2N1bWVudGF0aW9uLmh0bWwKCk5DQkkgTk9XLCBMZWN0dXJlIDMsIEludHJvZHVjdGlvbiB0byB0aGUgTGludXggU2hlbGwKaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1YZ2FFNFZJYUpxSQoKTUVETElORcKuL1B1Yk1lZMKuIFhNTCBEYXRhIEVsZW1lbnRzCmh0dHBzOi8vd3d3Lm5sbS5uaWguZ292L2JzZC9saWNlbnNlZS9kYXRhX2VsZW1lbnRzX2RvYy5odG1sCgpwdWJtZWRfMTgwMTAxLmR0ZCBEb2N1bWVudGF0aW9uCmh0dHBzOi8vZHRkLm5sbS5uaWguZ292L25jYmkvcHVibWVkL291dC9kb2MvMjAxOC8KClVzaW5nIEVEaXJlY3QgdG8gY3JlYXRlIGEgbG9jYWwgY29weSBvZiBQdWJNZWQKaHR0cHM6Ly9kYXRhZ3VpZGUubmxtLm5paC5nb3YvZWRpcmVjdC9hcmNoaXZlLmh0bWwKCkVEaXJlY3RDb29rYm9vawpodHRwczovL25jYmktaGFja2F0aG9ucy5naXRodWIuaW8vRURpcmVjdENvb2tib29rLwoKRW50cmV6IERpcmVjdDogRS11dGlsaXRpZXMgb24gdGhlIFVOSVggQ29tbWFuZCBMaW5lCmh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvYm9va3MvTkJLMTc5Mjg4LwoKRURpcmVjdCBPdmVydmlldwpodHRwczovL2RhdGFndWlkZS5ubG0ubmloLmdvdi9lZGlyZWN0L292ZXJ2aWV3Lmh0bWwKCkluc3RhbGxpbmcgRURpcmVjdApodHRwczovL2RhdGFndWlkZS5ubG0ubmloLmdvdi9lZGlyZWN0L2luc3RhbGwuaHRtbAoKCi0tLQoKSWYgeW91IHdhbnQgdG8gc2VlIHRoZSBjb2RlIHVzZWQgaW4gdGhlIGFuYWx5c2lzIHBsZWFzZSBjbGljayB0aGUgY29kZSBidXR0b24gb24gdGhlIHJpZ2h0IHVwcGVyIGNvcm5lciBvciB0aHJvdWdob3V0IHRoZSBwYWdlLiAKCi0tLQoKIyBGZWVkYmFjawoKW1NlcmRhciBCYWxjxLEsIE1ELCBQYXRob2xvZ2lzdF0oaHR0cHM6Ly9naXRodWIuY29tL3NiYWxjaSkgd291bGQgbGlrZSB0byBoZWFyIHlvdXIgZmVlZGJhY2s6IGh0dHBzOi8vZ29vLmdsL2Zvcm1zL1lqR1o1REhndFBsUjFSbkIzCgpUaGlzIGRvY3VtZW50IHdpbGwgYmUgY29udGluaW91c2x5IHVwZGF0ZWQgYW5kIHRoZSBsYXN0IHVwZGF0ZSB3YXMgb24gYHIgU3lzLkRhdGUoKWAuCgotLS0=
+
LS0tCnRpdGxlOiAiQmlibGlvZ3JhcGhpYyBTdHVkaWVzIgpzdWJ0aXRsZTogIlNvdXJjZXMgVXNlZCBGb3IgQW5hbHlzaXMiCmF1dGhvcjogIlNlcmRhciBCYWxjxLEsIE1ELCBQYXRob2xvZ2lzdCIKZGF0ZTogJ2ByIGZvcm1hdChTeXMuRGF0ZSgpKWAnCm91dHB1dDogCiAgaHRtbF9ub3RlYm9vazogCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGZpZ19jYXB0aW9uOiB5ZXMKICAgIGhpZ2hsaWdodDoga2F0ZQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMKICAgIHRoZW1lOiBjZXJ1bGVhbgogICAgdG9jOiB5ZXMKICAgIHRvY19mbG9hdDogeWVzCiAgaHRtbF9kb2N1bWVudDogCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGRmX3ByaW50OiBrYWJsZQogICAgaGlnaGxpZ2h0OiBrYXRlCiAgICBrZWVwX21kOiB5ZXMKICAgIG51bWJlcl9zZWN0aW9uczogeWVzCiAgICB0aGVtZTogY2VydWxlYW4KICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwotLS0KCgojIEludHJvZHVjdGlvbgoKSXQgaXMgYSB2ZXJ5IGNvbW1vbiBiaWJsaW9tZXRyaWMgc3R1ZHkgdHlwZSB0byByZXRyb3NwZWN0aXZlbHkgYW5hbHlzZSB0aGUgbnVtYmVyIG9mIHBlZXIgcmV2aWV3ZWQgYXJ0aWNsZXMgd3JpdHRlbiBmcm9tIGEgY291bnRyeSB0byB2aWV3IHRoZSBhbW91bnQgb2YgY29udHJpYnV0aW9uIG1hZGUgaW4gYSBzcGVjaWZpYyBzY2llbnRpZmljIGRpc2NpcGxpbmUuICAKClRoZXNlIHN0dWRpZXMgcmVxdWlyZSB0b28gbXVjaCBlZmZvcnQsIHNpbmNlIHRoZSBkYXRhIGlzIGdlbmVyYWxseSBiZWhpbmQgcGF5d2FsbHMgYW5kIHJlc3RyaWN0aW9ucy4gIAoKSSBoYXZlIHByZXZpb3VzbHkgY29udHJpYnV0ZWQgdG8gYSByZXNlYXJjaCB0byBpZGVudGlmeSB0aGUgQXJ0aWNsZXMgZnJvbSBUdXJrZXkgUHVibGlzaGVkIGluIFBhdGhvbG9neSBKb3VybmFscyBJbmRleGVkIGluIEludGVybmF0aW9uYWwgSW5kZXhlczsgd2hpY2ggaXMgcHVibGlzaGVkIGhlcmU6IFtUdXJrIFBhdG9sb2ppIERlcmcuIDIwMTAsIDI2KDIpOjEwNy0xMTMgZG9pOiAxMC41MTQ2L3RqcGF0aC4yMDEwLjAxMDA2XShodHRwOi8vd3d3LnR1cmtqcGF0aC5vcmcvc3VtbWFyeV9lbi5waHAzP2lkPTE0MjMpIAoKVGhpcyBzdHVkeSBoYWQgcmVxdWlyZWQgbWFudWFsIGludmVzdGlnYXRpb24gb2YgbWFueSBgZXhjZWxgIGZpbGVzLCB3aGljaCB3YXMgdGltZSBjb25zdW1pbmc7IGFsc28gcmVkb2luZyBhbmQgdXBkYXRpbmcgdGhlIGRhdGEgYW5kIHJlc3VsdHMgcmVxdWlyZSBhIHNpbWlsYXIgYW1vdW50IG9mIGVmZm9ydC4KCkluIG9yZGVyIHRvIGF1dG9tYXRpemUgdGhlc2UgdHlwZSBvZiBhbmFseXNpcyBpbiBhIHJlcHJvZHVjYWJsZSBmYXNoaW9uLCAKSSB3aWxsIGJlIHVzaW5nIHRoZSBmb2xsb3dpbmc7ICAKPCEtLSBsaXN0IG9mIGFuYWx5c2lzIHRvb2xzIC0tPgpbUiBNYXJrZG93bl0oaHR0cHM6Ly9ybWFya2Rvd24ucnN0dWRpby5jb20vKQosCltSIE5vdGVib29rXShodHRwczovL3JtYXJrZG93bi5yc3R1ZGlvLmNvbS9yX25vdGVib29rcy5odG1sKQosCltTaGlueV0oaHR0cHM6Ly9zaGlueS5yc3R1ZGlvLmNvbS8pCmFuZApbVGVybWluYWxdKGh0dHBzOi8vZW4uMHdpa2lwZWRpYS5vcmcvd2lraS9UZXJtaW5hbF8obWFjT1MpKQpmb3IgY29kaW5nLiAKSSBhbHNvIHBsYW4gdG8gdXNlIG90aGVyIGJpYmxpb2dyYXBoaWMgdG9vbHMgbGlrZQpbVk9Tdmlld2VyXShodHRwOi8vd3d3LnZvc3ZpZXdlci5jb20vKS4KCkRhdGEgd2lsbCBiZSByZXRyaWV2ZWQgZnJvbSAKW1B1Yk1lZF0oaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9wdWJtZWQpLCAKW0UtZGlyZWN0XShodHRwczovL2RhdGFndWlkZS5ubG0ubmloLmdvdi9lZGlyZWN0L292ZXJ2aWV3Lmh0bWwpLApbV29TXSh3d3cud2Vib2Zrbm93bGVkZ2UuY29tLykKYW5kCltHb29nbGUgU2Nob2xhcl0oaHR0cHM6Ly9zY2hvbGFyLmdvb2dsZS5jb20pLgoKCi0tLQoKCgoKCgoKCiMgQ29kZXMgZm9yIGRhdGEgZG93bmxvYWQKCiMjIFB1Yk1lZAoKaHR0cHM6Ly9kdGQubmxtLm5paC5nb3YvbmNiaS9wdWJtZWQvb3V0L2RvYy8yMDE4LwoKLSBNRURMSU5Fwq5QdWJNZWTCriBYTUwgRWxlbWVudCBEZXNjcmlwdGlvbnMgYW5kIHRoZWlyIEF0dHJpYnV0ZXMKaHR0cHM6Ly93d3cubmxtLm5paC5nb3YvYnNkL2xpY2Vuc2VlL2VsZW1lbnRzX2Rlc2NyaXB0aW9ucy5odG1sCgotIENvbW1lbnQgQ29ycmVjdGlvbiBUeXBlCmh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvYm9va3MvTkJLMzgyNy8jcHVibWVkaGVscC5Db21tZW50X0NvcnJlY3Rpb25fVHlwZQoKLSBFRGlyZWN0IERvY3VtZW50YXRpb24KaHR0cHM6Ly9kYXRhZ3VpZGUubmxtLm5paC5nb3YvZWRpcmVjdC9kb2N1bWVudGF0aW9uLmh0bWwKCi0gRW50cmV6IERpcmVjdDogRS11dGlsaXRpZXMgb24gdGhlIFVOSVggQ29tbWFuZCBMaW5lCmh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvYm9va3MvTkJLMTc5Mjg4LwoKLSBUaGUgOSBFLXV0aWxpdGllcyBhbmQgQXNzb2NpYXRlZCBQYXJhbWV0ZXJzCmh0dHBzOi8vZGF0YWd1aWRlLm5sbS5uaWguZ292L2V1dGlsaXRpZXMvdXRpbGl0aWVzLmh0bWwKCi0gRS11dGlsaXRpZXMgYW5kIHRoZSBIaXN0b3J5IHNlcnZlcgpodHRwczovL2RhdGFndWlkZS5ubG0ubmloLmdvdi9ldXRpbGl0aWVzL2hpc3RvcnkuaHRtbAoKLSBFRGlyZWN0IERvY3VtZW50YXRpb24KaHR0cHM6Ly9kYXRhZ3VpZGUubmxtLm5paC5nb3YvZWRpcmVjdC9kb2N1bWVudGF0aW9uLmh0bWwKCi0gTkNCSSBOT1csIExlY3R1cmUgMywgSW50cm9kdWN0aW9uIHRvIHRoZSBMaW51eCBTaGVsbApodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVhnYUU0VklhSnFJCgotIE1FRExJTkXCri9QdWJNZWTCriBYTUwgRGF0YSBFbGVtZW50cwpodHRwczovL3d3dy5ubG0ubmloLmdvdi9ic2QvbGljZW5zZWUvZGF0YV9lbGVtZW50c19kb2MuaHRtbAoKLSBwdWJtZWRfMTgwMTAxLmR0ZCBEb2N1bWVudGF0aW9uCmh0dHBzOi8vZHRkLm5sbS5uaWguZ292L25jYmkvcHVibWVkL291dC9kb2MvMjAxOC8KCgojIyMgRW50cmV6IERpcmVjdDogRS11dGlsaXRpZXMgb24gdGhlIFVOSVggQ29tbWFuZCBMaW5lCgotIEVudHJleiBEaXJlY3Q6IEUtdXRpbGl0aWVzIG9uIHRoZSBVTklYIENvbW1hbmQgTGluZSAgCmh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvYm9va3MvTkJLMTc5Mjg4LwoKLSBFRGlyZWN0Q29va2Jvb2sKaHR0cHM6Ly9uY2JpLWhhY2thdGhvbnMuZ2l0aHViLmlvL0VEaXJlY3RDb29rYm9vay8KCi0gRURpcmVjdCBPdmVydmlldwpodHRwczovL2RhdGFndWlkZS5ubG0ubmloLmdvdi9lZGlyZWN0L292ZXJ2aWV3Lmh0bWwKCi0gSW5zdGFsbGluZyBFRGlyZWN0Cmh0dHBzOi8vZGF0YWd1aWRlLm5sbS5uaWguZ292L2VkaXJlY3QvaW5zdGFsbC5odG1sCgoKIyMjIFVzaW5nIEVEaXJlY3QgdG8gY3JlYXRlIGEgbG9jYWwgY29weSBvZiBQdWJNZWQKCi0gVXNpbmcgRURpcmVjdCB0byBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mIFB1Yk1lZCAgCgpodHRwczovL2RhdGFndWlkZS5ubG0ubmloLmdvdi9lZGlyZWN0L2FyY2hpdmUuaHRtbAoKCgoKYGBgCgpodHRwczovL2RhdGFndWlkZS5ubG0ubmloLmdvdi9lZGlyZWN0L2FyY2hpdmUuaHRtbAoKYXJjaGl2ZS1wdWJtZWQgLXBhdGggL1ZvbHVtZXMvQWd1MjAxOC9QdWJNZWQKCmNhZmZlaW5hdGUKCmVzZWFyY2ggLWRiIHB1Ym1lZCAtcXVlcnkgImJyZWFzdCBjYW5jZXIiIHwgXAplZmV0Y2ggLWZvcm1hdCB1aWQgfCBcCmZldGNoLXB1Ym1lZCAtcGF0aCAvVm9sdW1lcy9BZ3UyMDE4L1B1Yk1lZCB8IFwKeHRyYWN0IC1wYXR0ZXJuIFB1Ym1lZEFydGljbGUgLWVsZW1lbnQgTWVkbGluZUNpdGF0aW9uL1BNSUQgSVNPQWJicmV2aWF0aW9uIFZvbHVtZSBJc3N1ZSBQdWJEYXRlL1llYXIgPiB0cmlhbC50eHQKCmVzZWFyY2ggLWRiIHB1Ym1lZCAtcXVlcnkgIlR1cmtleVtBZmZpbGlhdGlvbl0iIFwKLWRhdGV0eXBlIFBEQVQgLW1pbmRhdGUgMjAxOCAtbWF4ZGF0ZSAzMDAwIHwgXAplZmV0Y2ggLWZvcm1hdCB4bWwgPiBkYXRhL1R1cmtleV9hbGwyLnhtbAoKYGBgCgoKCiMjIyBQYXJzZXIgZm9yIFB1Ym1lZCBPcGVuLUFjY2VzcyBYTUwgU3Vic2V0IGFuZCBNRURMSU5FIFhNTCBEYXRhc2V0CgotIFB5dGhvbiBYTUwgcGFyc2VyIGZvciBQdWJNZWQgT3BlbiBBY2Nlc3Mgc3Vic2V0IGFuZCBNRURMSU5FIGRhdGFzZXQgIAoKaHR0cDovL3RpdGlwYXRhLmdpdGh1Yi5pby9wdWJtZWRfcGFyc2VyLyAgCmh0dHA6Ly9naXRodWIuY29tL3RpdGlwYXRhL3B1Ym1lZF9wYXJzZXIgIAoKCiMjIyBNRURMSU5FWE1MVG9KU09OCgpodHRwczovL2dpdGh1Yi5jb20vbGRiaWIvTUVETElORVhNTFRvSlNPTgoKCiMjIyBXb3JrZmxvdyBvZiBQdWJtZWQgUGFyc2VyIHdpdGggUHlTcGFyawoKaHR0cHM6Ly9naXRodWIuY29tL3RpdGlwYXRhL3B1Ym1lZF9wYXJzZXIvd2lraQoKCgojIyBPUkNJRAoKaHR0cHM6Ly9vcmNpZC5vcmcvY29udGVudC9vcmNpZC1wdWJsaWMtZGF0YS1maWxlCgpodHRwczovL29yY2lkLm9yZy9ibG9nLzIwMTkvMDEvMTEvZnJlZS1ldmVyeW9uZS1hbHdheXMtb3JjaWQtcHVibGljLWFwaS1hbmQtZGF0YS1maWxlCgoKLSBBIGNvbXBlbmRpdW0gb2YgdGF4b25vbWlzdHMgb24gT1JDSUQgIApodHRwczovL29yY2lkLm9yZy9ibG9nLzIwMTgvMDQvMDYvY29tcGVuZGl1bS10YXhvbm9taXN0cy1vcmNpZAoKLSBWYXN0IHNldCBvZiBwdWJsaWMgQ1ZzIHJldmVhbHMgdGhlIHdvcmxk4oCZcyBtb3N0IG1pZ3JhdG9yeSBzY2llbnRpc3RzICAKaHR0cHM6Ly93d3cuc2NpZW5jZW1hZy5vcmcvbmV3cy8yMDE3LzA1L3Zhc3Qtc2V0LXB1YmxpYy1jdnMtcmV2ZWFscy13b3JsZC1zLW1vc3QtbWlncmF0b3J5LXNjaWVudGlzdHMKCgojIyBTZW1hbnRpYyBTY2hvbGFyCgoKYGBgClNlbWFudGljIFNjaG9sYXIgT3BlbiBSZXNlYXJjaCBDb3JwdXMKCmh0dHBzOi8vczMtdXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vYWkyLXMyLXJlc2VhcmNoLXB1YmxpYy9vcGVuLWNvcnB1cy9pbmRleC5odG1sCgphd3MgczMgY3AgLS1yZWN1cnNpdmUgczM6Ly9haTItczItcmVzZWFyY2gtcHVibGljL29wZW4tY29ycHVzLyB+L1ZvbHVtZXMvQWd1MjAxOC9zZW1hbnRpYy8KCndnZXQgLVAgL1ZvbHVtZXMvQWd1MjAxOC9zZW1hbnRpYyAtaSBodHRwczovL3MzLXVzLXdlc3QtMi5hbWF6b25hd3MuY29tL2FpMi1zMi1yZXNlYXJjaC1wdWJsaWMvb3Blbi1jb3JwdXMvbWFuaWZlc3QudHh0CgpjYWZmZWluYXRlCgpgYGAKCgojIyBTY29wdXMKCmh0dHBzOi8vd3d3LnNjb3B1cy5jb20vc291cmNlcwoKCgojIyBBbHRtZXRyaWNzCgpodHRwczovL3d3dy5hbHRtZXRyaWMuY29tL3RvcDEwMC8yMDE4LwoKCiMjIEdyaWQKCmh0dHBzOi8vZ3JpZC5hYy8KCgoKIyMgQ29iYWxtZXRyaWNzCgpodHRwczovL2NvYmFsdG1ldHJpY3MuY29tLwoKLSBUb3dhcmQgcHJpdmFjeS1wcmVzZXJ2aW5nIGFsdG1ldHJpY3MgZXhwbG9yYXRpb24gd2l0aCBDb2JhbHRtZXRyaWNzIGFuZCBPUkNJRAoKaHR0cHM6Ly9tZWRpdW0uY29tL3RodW5rZW4vdG93YXJkLXByaXZhY3ktcHJlc2VydmluZy1hbHRtZXRyaWNzLWV4cGxvcmF0aW9uLXdpdGgtY29iYWx0bWV0cmljcy1hbmQtb3JjaWQtZjVhYjZmYTc4OThhCgoKIyMgT3BlbkNpdGF0aW9ucwoKaHR0cDovL29wZW5jaXRhdGlvbnMubmV0CgpodHRwOi8vb3BlbmNpdGF0aW9ucy5uZXQvZG93bmxvYWQKCmh0dHA6Ly9vcGVuY2l0YXRpb25zLm5ldC9jb3JwdXMKCmh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY2l0YXRpb25zCgotIFRoZSBPcGVuQ2l0YXRpb25zIERhdGEgTW9kZWwgIApodHRwczovL2ZpZ3NoYXJlLmNvbS9hcnRpY2xlcy9NZXRhZGF0YV9mb3JfdGhlX09wZW5DaXRhdGlvbnNfQ29ycHVzLzM0NDM4NzYKCi0gQ3JlYXRpbmcgT3BlbiBDaXRhdGlvbiBEYXRhIHdpdGggQkNpdGUgIApodHRwczovL3NlbXNjaS5naXRodWIuaW8vU2VtU2NpMjAxOC9wYXBlcnMvMS9iY2l0ZS1zZW1zY2kyMDE4Lmh0bWwKCmh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY2l0YXRpb25zL2JjaXRlCgoKLS0tCgojIEZlZWRiYWNrCgpbU2VyZGFyIEJhbGPEsSwgTUQsIFBhdGhvbG9naXN0XShodHRwczovL2dpdGh1Yi5jb20vc2JhbGNpKSB3b3VsZCBsaWtlIHRvIGhlYXIgeW91ciBmZWVkYmFjazogaHR0cHM6Ly9nb28uZ2wvZm9ybXMvWWpHWjVESGd0UGxSMVJuQjMKClRoaXMgZG9jdW1lbnQgd2lsbCBiZSBjb250aW5pb3VzbHkgdXBkYXRlZCBhbmQgdGhlIGxhc3QgdXBkYXRlIHdhcyBvbiBgciBTeXMuRGF0ZSgpYC4KCi0tLQoKPHNjcmlwdCBpZD0iZHNxLWNvdW50LXNjciIgc3JjPSIvL2h0dHBzLXNiYWxjaS1naXRodWItaW8uZGlzcXVzLmNvbS9jb3VudC5qcyIgYXN5bmM+PC9zY3JpcHQ+Cgo8ZGl2IGlkPSJkaXNxdXNfdGhyZWFkIj48L2Rpdj4KPHNjcmlwdD4KCi8qKgoqICBSRUNPTU1FTkRFRCBDT05GSUdVUkFUSU9OIFZBUklBQkxFUzogRURJVCBBTkQgVU5DT01NRU5UIFRIRSBTRUNUSU9OIEJFTE9XIFRPIElOU0VSVCBEWU5BTUlDIFZBTFVFUyBGUk9NIFlPVVIgUExBVEZPUk0gT1IgQ01TLgoqICBMRUFSTiBXSFkgREVGSU5JTkcgVEhFU0UgVkFSSUFCTEVTIElTIElNUE9SVEFOVDogaHR0cHM6Ly9kaXNxdXMuY29tL2FkbWluL3VuaXZlcnNhbGNvZGUvI2NvbmZpZ3VyYXRpb24tdmFyaWFibGVzKi8KLyoKdmFyIGRpc3F1c19jb25maWcgPSBmdW5jdGlvbiAoKSB7CnRoaXMucGFnZS51cmwgPSBQQUdFX1VSTDsgIC8vIFJlcGxhY2UgUEFHRV9VUkwgd2l0aCB5b3VyIHBhZ2UncyBjYW5vbmljYWwgVVJMIHZhcmlhYmxlCnRoaXMucGFnZS5pZGVudGlmaWVyID0gUEFHRV9JREVOVElGSUVSOyAvLyBSZXBsYWNlIFBBR0VfSURFTlRJRklFUiB3aXRoIHlvdXIgcGFnZSdzIHVuaXF1ZSBpZGVudGlmaWVyIHZhcmlhYmxlCn07CiovCihmdW5jdGlvbigpIHsgLy8gRE9OJ1QgRURJVCBCRUxPVyBUSElTIExJTkUKdmFyIGQgPSBkb2N1bWVudCwgcyA9IGQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CnMuc3JjID0gJ2h0dHBzOi8vaHR0cHMtc2JhbGNpLWdpdGh1Yi1pby5kaXNxdXMuY29tL2VtYmVkLmpzJzsKcy5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGltZXN0YW1wJywgK25ldyBEYXRlKCkpOwooZC5oZWFkIHx8IGQuYm9keSkuYXBwZW5kQ2hpbGQocyk7Cn0pKCk7Cjwvc2NyaXB0Pgo8bm9zY3JpcHQ+UGxlYXNlIGVuYWJsZSBKYXZhU2NyaXB0IHRvIHZpZXcgdGhlIDxhIGhyZWY9Imh0dHBzOi8vZGlzcXVzLmNvbS8/cmVmX25vc2NyaXB0Ij5jb21tZW50cyBwb3dlcmVkIGJ5IERpc3F1cy48L2E+PC9ub3NjcmlwdD4KCi0tLQo=