diff --git a/BibPlots.Rmd b/BibPlots.Rmd
new file mode 100644
index 0000000..7c59d64
--- /dev/null
+++ b/BibPlots.Rmd
@@ -0,0 +1,23 @@
+---
+title: "BibPlots"
+output: html_notebook
+---
+
+### BibPlots
+
+https://cran.r-project.org/web/packages/BibPlots/BibPlots.pdf
+
+- **R package for producing beamplots as a preferred alternative to the h index when assessing single researchers (based on downloads from Web of Science)**
+
+Haunschild, R., Bornmann, L. & Adams, J. Scientometrics (2019) 120: 925.
+https://doi.org/10.1007/s11192-019-03147-3
+https://link.springer.com/article/10.1007/s11192-019-03147-3
+
+
+```{r}
+library("BibPlots")
+
+BibPlots::beamplot(wos_file = "~/PubMed/data/BalciSerdar-B-6401-2011-WOS-OnlyArticles.txt",
+ do_weight = FALSE)
+```
+
diff --git a/BibPlots.nb.html b/BibPlots.nb.html
new file mode 100644
index 0000000..5b0abe6
--- /dev/null
+++ b/BibPlots.nb.html
@@ -0,0 +1,1834 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
LS0tCnRpdGxlOiAiQmliUGxvdHMiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCiMjIyBCaWJQbG90cwoKaHR0cHM6Ly9jcmFuLnItcHJvamVjdC5vcmcvd2ViL3BhY2thZ2VzL0JpYlBsb3RzL0JpYlBsb3RzLnBkZgoKLSAqKlIgcGFja2FnZSBmb3IgcHJvZHVjaW5nIGJlYW1wbG90cyBhcyBhIHByZWZlcnJlZCBhbHRlcm5hdGl2ZSB0byB0aGUgaCBpbmRleCB3aGVuIGFzc2Vzc2luZyBzaW5nbGUgcmVzZWFyY2hlcnMgKGJhc2VkIG9uIGRvd25sb2FkcyBmcm9tIFdlYiBvZiBTY2llbmNlKSoqCgpIYXVuc2NoaWxkLCBSLiwgQm9ybm1hbm4sIEwuICYgQWRhbXMsIEouIFNjaWVudG9tZXRyaWNzICgyMDE5KSAxMjA6IDkyNS4gCmh0dHBzOi8vZG9pLm9yZy8xMC4xMDA3L3MxMTE5Mi0wMTktMDMxNDctMyAKaHR0cHM6Ly9saW5rLnNwcmluZ2VyLmNvbS9hcnRpY2xlLzEwLjEwMDcvczExMTkyLTAxOS0wMzE0Ny0zCgoKYGBge3J9CmxpYnJhcnkoIkJpYlBsb3RzIikKCkJpYlBsb3RzOjpiZWFtcGxvdCh3b3NfZmlsZSA9ICJ+L1B1Yk1lZC9kYXRhL0JhbGNpU2VyZGFyLUItNjQwMS0yMDExLVdPUy1Pbmx5QXJ0aWNsZXMudHh0IiwKICAgICAgICAgICAgICAgICAgIGRvX3dlaWdodCA9IEZBTFNFKQpgYGAKCg==
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Bibliyometri.Rmd b/Bibliyometri.Rmd
new file mode 100644
index 0000000..cb8ceb0
--- /dev/null
+++ b/Bibliyometri.Rmd
@@ -0,0 +1,89 @@
+---
+title: "Bibliyometri"
+output: html_notebook
+---
+
+
+- Web Of Science'dan her zaman tab delimited olarak indir.
+
+
+- Tab delimited dosyaları birleştir.
+cat
+
+https://unix.stackexchange.com/questions/3770/how-to-merge-all-text-files-in-a-directory-into-one
+https://apple.stackexchange.com/questions/80611/merging-multiple-csv-files-without-merging-the-header
+
+
+
+AU: yazar
+AF: yazar açık adları
+TI: title, çalışma başlığı
+SO: source, dergi ismi
+DT: döküman tipleri
+DE: yazarın verdiği anahtar sözcük
+ID: WOS anahtar sözcükler
+AB: abstract varsa
+C1: adresler
+RP: yazışma adresi
+CR: makalenin verdiği referanslar. kayabiliyor.
+
+NF: bu yayın kaç atıf yapmış
+TC: bu yayın kaç atıf almış
+
+PY: yıl
+
+WC: web of science categories (daha geniş kapsamlı)
+SC: subject categories (dergi kategorisi)
+
+kategorilerle analiz için citespace kullan
+
+
+UT: alanı boş olmamalı
+
+UT alanı yoksa, kendin veri oluşturuyorsan tekil WOS: numarası verebilirsin
+
+
+alanlardaki unsurlar WOS'da `;` ile ayrılır. Scopus'da `,` ile ayrılıyor.
+
+
+
+```
+ WC="Information Science & Library Science" AND AD="Turkey"
+```
+
+Vosviewer için tab-delimited text olarak kaydetmek lazım.
+excel tab-limited olarak kaydedince `"` ekliyor. Bunları silmek lazım.
+
+metin içinde Türkçe karakterleri değiştirmek lazım.
+theseraus ya da regex kullanmak lazım
+stop word çıkartmak lazım
+
+
+
+Vosviewer yüklemeyi drive ile dene
+
+
+
+```
+SO="pathology" AND AD="Turkey"
+```
+
+
+citespace
+
+data import export
+wos tab to wos
+
+
+java -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Xss5m -jar CiteSpaceV.jar
+
+java -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Xms1g -Xmx12g -Xss5m -jar CiteSpaceV.jar
+
+
+
+
+
+
+
+
+
diff --git a/Bibliyometri.nb.html b/Bibliyometri.nb.html
new file mode 100644
index 0000000..7bb04d3
--- /dev/null
+++ b/Bibliyometri.nb.html
@@ -0,0 +1,1835 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
https://unix.stackexchange.com/questions/3770/how-to-merge-all-text-files-in-a-directory-into-one https://apple.stackexchange.com/questions/80611/merging-multiple-csv-files-without-merging-the-header
+
AU: yazar AF: yazar açık adları TI: title, çalışma başlığı SO: source, dergi ismi DT: döküman tipleri DE: yazarın verdiği anahtar sözcük ID: WOS anahtar sözcükler AB: abstract varsa C1: adresler RP: yazışma adresi CR: makalenin verdiği referanslar. kayabiliyor.
+
NF: bu yayın kaç atıf yapmış TC: bu yayın kaç atıf almış
+
PY: yıl
+
WC: web of science categories (daha geniş kapsamlı) SC: subject categories (dergi kategorisi)
+
kategorilerle analiz için citespace kullan
+
UT: alanı boş olmamalı
+
UT alanı yoksa, kendin veri oluşturuyorsan tekil WOS: numarası verebilirsin
+
alanlardaki unsurlar WOS’da ;
ile ayrılır. Scopus’da ,
ile ayrılıyor.
+
WC="Information Science & Library Science" AND AD="Turkey"
+
Vosviewer için tab-delimited text olarak kaydetmek lazım. excel tab-limited olarak kaydedince "
ekliyor. Bunları silmek lazım.
+
metin içinde Türkçe karakterleri değiştirmek lazım. theseraus ya da regex kullanmak lazım stop word çıkartmak lazım
+
Vosviewer yüklemeyi drive ile dene
+
SO="pathology" AND AD="Turkey"
+
citespace
+
data import export wos tab to wos
+
java -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Xss5m -jar CiteSpaceV.jar
+
java -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Xms1g -Xmx12g -Xss5m -jar CiteSpaceV.jar
+
+
+
LS0tCnRpdGxlOiAiQmlibGl5b21ldHJpIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgoKLSBXZWIgT2YgU2NpZW5jZSdkYW4gaGVyIHphbWFuIHRhYiBkZWxpbWl0ZWQgb2xhcmFrIGluZGlyLgoKCi0gVGFiIGRlbGltaXRlZCBkb3N5YWxhcsSxIGJpcmxlxZ90aXIuCmNhdAoKaHR0cHM6Ly91bml4LnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8zNzcwL2hvdy10by1tZXJnZS1hbGwtdGV4dC1maWxlcy1pbi1hLWRpcmVjdG9yeS1pbnRvLW9uZQpodHRwczovL2FwcGxlLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy84MDYxMS9tZXJnaW5nLW11bHRpcGxlLWNzdi1maWxlcy13aXRob3V0LW1lcmdpbmctdGhlLWhlYWRlcgoKCgpBVTogeWF6YXIKQUY6IHlhemFyIGHDp8SxayBhZGxhcsSxClRJOiB0aXRsZSwgw6dhbMSxxZ9tYSBiYcWfbMSxxJ/EsQpTTzogc291cmNlLCBkZXJnaSBpc21pCkRUOiBkw7Zrw7xtYW4gdGlwbGVyaQpERTogeWF6YXLEsW4gdmVyZGnEn2kgYW5haHRhciBzw7Z6Y8O8awpJRDogV09TIGFuYWh0YXIgc8O2emPDvGtsZXIKQUI6IGFic3RyYWN0IHZhcnNhCkMxOiBhZHJlc2xlcgpSUDogeWF6xLHFn21hIGFkcmVzaQpDUjogbWFrYWxlbmluIHZlcmRpxJ9pIHJlZmVyYW5zbGFyLiBrYXlhYmlsaXlvci4gCgpORjogYnUgeWF5xLFuIGthw6cgYXTEsWYgeWFwbcSxxZ8KVEM6IGJ1IHlhecSxbiBrYcOnIGF0xLFmIGFsbcSxxZ8KClBZOiB5xLFsCgpXQzogd2ViIG9mIHNjaWVuY2UgY2F0ZWdvcmllcyAoZGFoYSBnZW5pxZ8ga2Fwc2FtbMSxKQpTQzogc3ViamVjdCBjYXRlZ29yaWVzIChkZXJnaSBrYXRlZ29yaXNpKQoKa2F0ZWdvcmlsZXJsZSBhbmFsaXogacOnaW4gY2l0ZXNwYWNlIGt1bGxhbgoKClVUOiBhbGFuxLEgYm/FnyBvbG1hbWFsxLEKClVUIGFsYW7EsSB5b2tzYSwga2VuZGluIHZlcmkgb2x1xZ90dXJ1eW9yc2FuIHRla2lsIFdPUzogbnVtYXJhc8SxIHZlcmViaWxpcnNpbgoKCmFsYW5sYXJkYWtpIHVuc3VybGFyIFdPUydkYSBgO2AgaWxlIGF5csSxbMSxci4gU2NvcHVzJ2RhIGAsYCBpbGUgYXlyxLFsxLF5b3IuCgoKCmBgYAogV0M9IkluZm9ybWF0aW9uIFNjaWVuY2UgJiBMaWJyYXJ5IFNjaWVuY2UiIEFORCBBRD0iVHVya2V5IiAKYGBgCgpWb3N2aWV3ZXIgacOnaW4gdGFiLWRlbGltaXRlZCB0ZXh0IG9sYXJhayBrYXlkZXRtZWsgbGF6xLFtLgpleGNlbCB0YWItbGltaXRlZCBvbGFyYWsga2F5ZGVkaW5jZSBgImAgZWtsaXlvci4gQnVubGFyxLEgc2lsbWVrIGxhesSxbS4KCm1ldGluIGnDp2luZGUgVMO8cmvDp2Uga2FyYWt0ZXJsZXJpIGRlxJ9pxZ90aXJtZWsgbGF6xLFtLgp0aGVzZXJhdXMgeWEgZGEgcmVnZXgga3VsbGFubWFrIGxhesSxbQpzdG9wIHdvcmQgw6fEsWthcnRtYWsgbGF6xLFtCgoKClZvc3ZpZXdlciB5w7xrbGVtZXlpIGRyaXZlIGlsZSBkZW5lCgoKCmBgYApTTz0icGF0aG9sb2d5IiBBTkQgQUQ9IlR1cmtleSIKYGBgCgoKY2l0ZXNwYWNlCgpkYXRhIGltcG9ydCBleHBvcnQKd29zIHRhYiB0byB3b3MKCgpqYXZhIC1EZmlsZS5lbmNvZGluZz1VVEYtOCAtRHVzZXIuY291bnRyeT1VUyAtRHVzZXIubGFuZ3VhZ2U9ZW4gLVhzczVtIC1qYXIgQ2l0ZVNwYWNlVi5qYXIgCgpqYXZhIC1EZmlsZS5lbmNvZGluZz1VVEYtOCAtRHVzZXIuY291bnRyeT1VUyAtRHVzZXIubGFuZ3VhZ2U9ZW4gLVhtczFnIC1YbXgxMmcgLVhzczVtIC1qYXIgQ2l0ZVNwYWNlVi5qYXIgCgoKCgoKCgoKCg==
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PathologyArticlesFromTurkey.Rmd b/PathologyArticlesFromTurkey.Rmd
new file mode 100644
index 0000000..71d1fef
--- /dev/null
+++ b/PathologyArticlesFromTurkey.Rmd
@@ -0,0 +1,168 @@
+---
+title: "Pathology Articles From Turkey"
+description: |
+ Collections and Peeriodicals of selected Pathology Articles From Turkey
+author:
+ - name: Serdar Balcı
+ url: https://www.serdarbalci.com/
+ affiliation: MD Pathologist
+ affiliation_url: https://sbalci.github.io/
+date: "`r Sys.Date()`"
+output: distill::distill_article
+---
+
+```{r library, include=FALSE}
+suppressPackageStartupMessages(library(tidyverse))
+suppressPackageStartupMessages(library(readxl))
+suppressPackageStartupMessages(library(markdown))
+suppressPackageStartupMessages(library(kableExtra))
+suppressPackageStartupMessages(library(tidyRSS))
+```
+
+
+
+```{r setup, include=FALSE}
+knitr::opts_chunk$set(echo = FALSE)
+```
+
+
+
+
+
+
+---
+
+# Pathology Articles From Turkey Peeriodical
+
+https://peeriodicals.com/peeriodicals/pathology-articles-from-turkey
+
+
+---
+
+# RSS Feed From PubMed
+
+```
+(pathology[Affiliation] OR patoloji[Affiliation]) AND (Turk*[Affiliation] OR Türk*[Affiliation])
+```
+
+`r icon::fa("rss")`
+[Click Here for the RSS Link](https://eutils.ncbi.nlm.nih.gov/entrez/eutils/erss.cgi?rss_guid=10UQVR81oEgBsJdu9HkJM34nE3gKkc0-VJoAwxWLhi1d2qRs7u)
+
+
+
+```{r}
+# https://cran.r-project.org/web/packages/tidyRSS/vignettes/tidyrss.html
+PAFT_rss1 <- tidyRSS::tidyfeed("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/erss.cgi?rss_guid=10UQVR81oEgBsJdu9HkJM34nE3gKkc0-VJoAwxWLhi1d2qRs7u")
+```
+
+
+
+```{r}
+PAFT_rss2 <- feedeR::feed.extract("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/erss.cgi?rss_guid=10UQVR81oEgBsJdu9HkJM34nE3gKkc0-VJoAwxWLhi1d2qRs7u")
+```
+
+
+
+
+
+
+---
+
+# PubMed Collection
+
+
+My NCBI » Collections > Pathology Articles From Turkey
+
+`(pathology[Affiliation] OR patoloji[Affiliation]) AND (Turk*[Affiliation] OR Türk*[Affiliation])` AND `WOS Journals with Pathology Topic`
+
+https://www.ncbi.nlm.nih.gov/sites/myncbi/collections/58299810/
+
+
+
+
+
+
+
+
+
+
+
+
Aim
+
To evaluate the retracted articles in PubMed.
+
+
+
+
Analysis
+
A trend graph of retracted articles derived from Europe PMC #RStats #europepmc {europepmc} 📦 #evergreenreviewgraph #research #bibliography #bibliometrics
+
+
+
+
library(europepmc)
+
+
+
+
+
+
+
retractedArticlesPerTotalArticles <-
+ europepmc::epmc_hits_trend(
+ query = "(PUB_TYPE:'Retracted Publication' OR PUB_TYPE:'Retraction of Publication')",
+ period = 1980:2017
+ )
+
+retractedArticlesPerTotalArticles$Affiliation <- "All"
+
+retractedArticlesPerTotalArticles_Turkey <-
+ europepmc::epmc_hits_trend(
+ query = "(AFF:'Turkey') AND (PUB_TYPE:'Retracted Publication' OR PUB_TYPE:'Retraction of Publication')",
+ period = 1980:2017
+ )
+
+retractedArticlesPerTotalArticles_Turkey$Affiliation <- "Turkey"
+
+retractedArticles <- dplyr::bind_rows(
+retractedArticlesPerTotalArticles,
+retractedArticlesPerTotalArticles_Turkey)
+
+
+
+
+
+
+
+
library(ggplot2)
+ggplot(retractedArticles,
+ aes(year,
+ 1000*(query_hits / all_hits),
+ color = Affiliation)
+ ) +
+ geom_point() +
+ geom_line() +
+ xlab("Year published") +
+ ylab("Proportion of Retracted Articles \n data: Europe PMC, 20.10.2019 \n 1000x")
+
+
+
+
+
+
+
myTerm <- rstudioapi::terminalCreate(show = FALSE)
+rstudioapi::terminalSend(
+myTerm,
+"xtract -input data/RetractedPubMed/Retracted_Publication_sb_OR_Retraction_of_Publication_sb_pubmed_result.xml -pattern PubmedArticle -tab \"|\" -sep \";\" -def \"NA\" -element MedlineCitation/PMID ArticleTitle Journal/ISSN ISOAbbreviation PubDate/Year > data/RetractedPubMed/pubmed_result_retracted.csv \n"
+)
+Sys.sleep(1)
+repeat {
+Sys.sleep(0.1)
+if (rstudioapi::terminalBusy(myTerm) == FALSE) {
+print("Code Executed")
+break
+}
+}
+
+
+
+
+
+
+
pubmed_result_retracted <-
+ readr::read_delim(
+ file = here::here("data",
+ "RetractedPubMed",
+ "pubmed_result_retracted.csv"),
+ delim = "|",
+ escape_double = FALSE,
+ col_names = FALSE,
+ trim_ws = TRUE
+ )
+
+
+
Parsed with column specification:
+cols(
+ X1 = col_double(),
+ X2 = col_character(),
+ X3 = col_character(),
+ X4 = col_character(),
+ X5 = col_double()
+)
+
+
+
pubmed_result_retracted <-
+pubmed_result_retracted %>%
+ select(
+ PMID = X1,
+ title = X2,
+ journalISSN = X3,
+ journalName = X4,
+ year = X5
+ )
+
+
+
+
+
+
+
myTerm <- rstudioapi::terminalCreate(show = FALSE)
+rstudioapi::terminalSend(
+myTerm,
+"xtract -input data/currentlyindexed_nlmcatalog_result.xml -pattern NCBICatalogRecord -tab \"|\" -sep \";\" -def \"NA\" -element MedlineTA TitleAlternate BroadJournalHeadingList MeshHeading/DescriptorName ISSN > data/RetractedPubMed/journal_properties.csv \n"
+)
+Sys.sleep(1)
+repeat {
+Sys.sleep(0.1)
+if (rstudioapi::terminalBusy(myTerm) == FALSE) {
+print("Code Executed")
+break
+}
+}
+
+
+
[1] "Code Executed"
+
+
+
+
+
+
+
journal_properties <- readr::read_delim(here::here("data", "RetractedPubMed" , "journal_properties.csv"),
+ "|", escape_double = FALSE, col_names = FALSE,
+ trim_ws = TRUE)
+
+journal_properties <- journal_properties %>%
+ select(journal = X1,
+ topic = X4,
+ ISSN = X5)
+
+
+
+journal_properties <- journal_properties %>%
+ mutate(journalName = str_split(journal, ";")) %>%
+ unnest(cols = c(journalName)) %>%
+ mutate(journalTopic = str_split(topic, ";")) %>%
+ unnest(cols = c(journalTopic)) %>%
+ mutate(journalISSN = str_split(ISSN, ";")) %>%
+ unnest(cols = c(journalISSN)) %>%
+ select(journalName,
+ journalTopic,
+ journalISSN) %>%
+ unique()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This trend graph shows the major topics of the journals that have the most retractions. Data derived from PubMed #RStats #research #bibliography #bibliometrics
+
+
+
+
pubmed_result_retracted %>%
+ filter(journalTopic %in% mostRetractedTopicsOfJournal) %>%
+ filter(year <= 2018 & year >= 1990) %>%
+ select(journalTopic, year) %>%
+ group_by(journalTopic, year) %>%
+ tally() %>%
+ ggplot(
+ aes(year,
+ n,
+ color = journalTopic
+ )
+ ) +
+ geom_point() +
+ geom_line() +
+ xlab("Year published") +
+ ylab("Proportion of Retracted Articles \n data: Europe PMC, 20.10.2019")
+
+
+

+
+
+
+
+
+
+
LS0tCnRpdGxlOiAiUmV0cmFjdGVkIFBhdGhvbG9neSBBcnRpY2xlcyBpbiBQdWJNZWQiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCiMgQWltCgpUbyBldmFsdWF0ZSB0aGUgcmV0cmFjdGVkIGFydGljbGVzIGluIFB1Yk1lZC4KCgoKIyBNYXRlcmlhbHMgYW5kIE1ldGhvZHMKCkRhdGEgZG93bmxvYWRlZCBvbiAyMC4xMC4yMDE5LgoKW2N1cnJlbnRseWluZGV4ZWRfbmxtY2F0YWxvZ19yZXN1bHQueG1sXShodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BvcnRhbC91dGlscy9maWxlX2JhY2tlbmQuY2dpP0RiPW5sbWNhdGFsb2cmSGlzdG9yeUlkPU5DSURfMV8xMjA1OTE0M18xMzAuMTQuMTguNDhfNTU1NV8xNTcxNTk2Mzk2XzgxODg2NjU0MF8wTWV0QTBfU19IU3RvcmUmUXVlcnlLZXk9MSZTb3J0PVB1YkRhdGUmRmlsdGVyPWFsbCZDb21wbGV0ZVJlc3VsdENvdW50PTUyNDQmTW9kZT1maWxlJlZpZXc9eG1sJnAkbD1FbWFpbCZwb3J0YWxTbmFwc2hvdD0lMkZwcm9qZWN0cyUyRmVudHJleiUyRnB1Ym1lZCUyRlB1Yk1lZEdyb3VwQDEuMTQ2JkJhc2VVcmw9JlBvcnROYW1lPWxpdmUmUm9vdFRhZz1OTE1DYXRhbG9nUmVjb3JkU2V0JkRvY1R5cGU9TkxNQ2F0YWxvZ1JlY29yZFNldCUyMFBVQkxJQyUyMCUyMi0lMkYlMkZOTE0lMkYlMkZEVEQlMjBOTE1DYXRhbG9nUmVjb3JkU2V0LCUyMDFzdCUyMEp1bmUlMjAyMDE3JTJGJTJGRU4lMjIlMjAlMjJodHRwczovL3d3dy5ubG0ubmloLmdvdi9kYXRhYmFzZXMvZHRkL25sbWNhdGFsb2dyZWNvcmRzZXRfMTcwNjAxLmR0ZCUyMiZGaWxlTmFtZT0mQ29udGVudFR5cGU9eG1sKQoKCltSZXRyYWN0ZWRfUHVibGljYXRpb25fc2JfT1JfUmV0cmFjdGlvbl9vZl9QdWJsaWNhdGlvbl9zYl9wdWJtZWRfcmVzdWx0LnhtbF0oaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9wb3J0YWwvdXRpbHMvZmlsZV9iYWNrZW5kLmNnaT9EYj1wdWJtZWQmSGlzdG9yeUlkPU5DSURfMV8xMjA1OTE0M18xMzAuMTQuMTguNDhfNTU1NV8xNTcxNTk2Mzk2XzgxODg2NjU0MF8wTWV0QTBfU19IU3RvcmUmUXVlcnlLZXk9MTgmU29ydD0mRmlsdGVyPWFsbCZDb21wbGV0ZVJlc3VsdENvdW50PTE0MDQzJk1vZGU9ZmlsZSZWaWV3PXhtbCZwJGw9RW1haWwmcG9ydGFsU25hcHNob3Q9JTJGcHJvamVjdHMlMkZlbnRyZXolMkZwdWJtZWQlMkZQdWJNZWRHcm91cEAxLjE0NiZCYXNlVXJsPSZQb3J0TmFtZT1saXZlJlJvb3RUYWc9UHVibWVkQXJ0aWNsZVNldCZEb2NUeXBlPVB1Ym1lZEFydGljbGVTZXQlMjBQVUJMSUMlMjAlMjItJTJGJTJGTkxNJTJGJTJGRFREJTIwUHViTWVkQXJ0aWNsZSwlMjAxc3QlMjBKYW51YXJ5JTIwMjAxOSUyRiUyRkVOJTIyJTIwJTIyaHR0cHM6Ly9kdGQubmxtLm5paC5nb3YvbmNiaS9wdWJtZWQvb3V0L3B1Ym1lZF8xOTAxMDEuZHRkJTIyJkZpbGVOYW1lPSZDb250ZW50VHlwZT14bWwpCgoKW1JldHJhY3RlZF9QdWJsaWNhdGlvbl9zYl9PUl9SZXRyYWN0aW9uX29mX1B1YmxpY2F0aW9uX3NiX3RpbWVsaW5lLmNzdl0oaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9wdWJtZWQ/cCRsPUVtYWlsJk1vZGU9ZG93bmxvYWQmdGVybT1SZXRyYWN0ZWQlMjBQdWJsaWNhdGlvbltzYl0lMjBPUiUyMFJldHJhY3Rpb24lMjBvZiUyMFB1YmxpY2F0aW9uW3NiXSZkbGlkPXRpbWVsaW5lJmZpbGVuYW1lPXRpbWVsaW5lLmNzdiZiYmlkPSZwJGRlYnVnb3V0cHV0PW9mZikKCgoKLSBGaW5kIFJldHJhY3Rpb25zIFVzaW5nIFB1Yk1lZCBhbmQgTXkgTkNCSSEKCmh0dHBzOi8vaHNsbmV3cy53b3JkcHJlc3MuY29tLzIwMTMvMDUvMTQvcmV0cmFjdGlvbnMvCgotIENvbW1lbnQgQ29ycmVjdGlvbiBUeXBlCgpodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L2Jvb2tzL05CSzM4MjcvI3B1Ym1lZGhlbHAuQ29tbWVudF9Db3JyZWN0aW9uX1R5cGUKCgoKPiBDb21tZW50IENvcnJlY3Rpb24gVHlwZQo+IAo+IFRoZSBkYXRhIGluIHRoZXNlIGZpZWxkcyBhcmUgY2l0YXRpb25zIHRvIG90aGVyIGFzc29jaWF0ZWQgam91cm5hbCBwdWJsaWNhdGlvbnMsIGUuZy4sIGNvbW1lbnRzIG9yIGVycmF0YS4gT2Z0ZW4gdGhlc2UgbGluayB0byB0aGUgcmVzcGVjdGl2ZSBjaXRhdGlvbi4gQ29tbWVudHMvQ29ycmVjdGlvbnMgZGF0YSBjYW4gYmUgcmV0cmlldmVkIGJ5IHRoZSBzZWFyY2ggdGVybSB0aGF0IGZvbGxvd3MgZWFjaCB0eXBlOgo+IAo+ICAgICBDb21tZW50IGluOiBoYXNjb21tZW50aW4KPiAgICAgQ29tbWVudCBvbjogaGFzY29tbWVudG9uCj4gICAgIENvcnJlY3RlZCBhbmQgcmVwdWJsaXNoZWQgaW46IGhhc2NvcnJlY3RlZHJlcHVibGlzaGVkaW4KPiAgICAgQ29ycmVjdGVkIGFuZCByZXB1Ymxpc2hlZCBmcm9tOiBoYXNjb3JyZWN0ZWRyZXB1Ymxpc2hlZGZyb20KPiAgICAgRGF0YXNldCB1c2UgcmVwb3J0ZWQgaW46IGhhc2Fzc29jaWF0ZWRwdWJsaWNhdGlvbgo+ICAgICBEYXRhc2V0IGRlc2NyaWJlZCBpbjogaGFzYXNzb2NpYXRlZGRhdGFzZXQKPiAgICAgRXJyYXR1bSBpbjogaGFzZXJyYXR1bWluCj4gICAgIEVycmF0dW0gZm9yOiBoYXNlcnJhdHVtZm9yCj4gICAgIEV4cHJlc3Npb24gb2YgY29uY2VybiBpbjogaGFzZXhwcmVzc2lvbm9mY29uY2VybmluCj4gICAgIEV4cHJlc3Npb24gb2YgY29uY2VybiBmb3I6IGhhc2V4cHJlc3Npb25vZmNvbmNlcm5mb3IKPiAgICAgT3JpZ2luYWwgUmVwb3J0IGluOiBoYXNvcmlnaW5hbHJlcG9ydGluCj4gICAgIFJlcHVibGlzaGVkIGluOiBoYXNyZXB1Ymxpc2hlZGluCj4gICAgIFJlcHVibGlzaGVkIGZyb206IGhhc3JlcHVibGlzaGVkZnJvbQo+ICAgICBSZXRyYWN0ZWQgYW5kIHJlcHVibGlzaGVkIGluOiBoYXNyZXRyYWN0ZWRhbmRyZXB1Ymxpc2hlZGluCj4gICAgIFJldHJhY3RlZCBhbmQgcmVwdWJsaXNoZWQgZnJvbTogaGFzcmV0cmFjdGVkYW5kcmVwdWJsaXNoZWRmcm9tCj4gICAgIFJldHJhY3Rpb24gaW46IGhhc3JldHJhY3Rpb25pbgo+ICAgICBSZXRyYWN0aW9uIG9mOiBoYXNyZXRyYWN0aW9ub2YKPiAgICAgU3VtbWFyeSBmb3IgcGF0aWVudHMgaW46IGhhc3N1bW1hcnlmb3JwYXRpZW50c2luCj4gICAgIFVwZGF0ZSBpbjogaGFzdXBkYXRlaW4KPiAgICAgVXBkYXRlIG9mOiBoYXN1cGRhdGVvZgo+IAoKLSBFcnJhdGEsIFJldHJhY3Rpb25zLCBhbmQgT3RoZXIgTGlua2VkIENpdGF0aW9ucyBpbiBQdWJNZWQKCmh0dHBzOi8vd3d3Lm5sbS5uaWguZ292L2JzZC9wb2xpY3kvZXJyYXRhLmh0bWwKCgo8IS0tIE5vdCB1c2VkIC0tPgo8IS0tICMjIERhdGEgcmV0cml2ZWFsIGZyb20gUHViTWVkIHVzaW5nIEVEaXJlY3QgIC0tPgoKPCEtLSBBcnRpY2xlIFBNSUQgZG93bmxvYWRlZCBhcyBgdHh0YC4gLS0+CgpgYGB7ciBTZWFyY2ggUHViTWVkIGRvd25sb2FkIFBNSUQsIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9Cm15VGVybSA8LSByc3R1ZGlvYXBpOjp0ZXJtaW5hbENyZWF0ZShzaG93ID0gRkFMU0UpCnJzdHVkaW9hcGk6OnRlcm1pbmFsU2VuZCgKICAgIG15VGVybSwKICAgICJlc2VhcmNoIC1kYiBwdWJtZWQgLXF1ZXJ5IFwiKHBhdGhvbG9neVtBZmZpbGlhdGlvbl0gT1IgcGF0b2xvamlbQWZmaWxpYXRpb25dKSBBTkQgKFR1cmtleVtBZmZpbGlhdGlvbl0gT1IgVMO8cmtpeWVbQWZmaWxpYXRpb25dKVwiIC1kYXRldHlwZSBQREFUIC1taW5kYXRlIDE4MDAgLW1heGRhdGUgMzAwMCB8IFwgZWZldGNoIC1mb3JtYXQgdWlkID4gZGF0YS9wdWJtZWRfcmVzdWx0X1R1cmtQYXRoX3VpZC50eHQgXG4iCikKU3lzLnNsZWVwKDEpCnJlcGVhdCB7CiAgICBTeXMuc2xlZXAoMC4xKQogICAgaWYgKHJzdHVkaW9hcGk6OnRlcm1pbmFsQnVzeShteVRlcm0pID09IEZBTFNFKSB7CiAgICAgICAgcHJpbnQoIkNvZGUgRXhlY3V0ZWQiKQogICAgICAgIGJyZWFrCiAgICB9Cn0KYGBgCgoKCmBgYHtyIFNlYXJjaCBsb2NhbCBQdWJNZWQgd2l0aCBkb3dubG9hZGVkIFBNSUQgZXh0cmFjdCBkYXRhIGFzIHhtbCwgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KbXlUZXJtIDwtIHJzdHVkaW9hcGk6OnRlcm1pbmFsQ3JlYXRlKHNob3cgPSBGQUxTRSkKcnN0dWRpb2FwaTo6dGVybWluYWxTZW5kKAogICAgbXlUZXJtLAogICAgImNhdCBkYXRhL3B1Ym1lZF9yZXN1bHRfVHVya1BhdGhfdWlkLnR4dCB8IFwgZmV0Y2gtcHVibWVkIC1wYXRoIC9Wb2x1bWVzL0FndTIwMTgvUHViTWVkID4gZGF0YS9wdWJtZWRfcmVzdWx0X1R1cmtQYXRoLnhtbCBcbiIKKQpTeXMuc2xlZXAoMSkKcmVwZWF0IHsKICAgIFN5cy5zbGVlcCgwLjEpCiAgICBpZiAocnN0dWRpb2FwaTo6dGVybWluYWxCdXN5KG15VGVybSkgPT0gRkFMU0UpIHsKICAgICAgICBwcmludCgiQ29kZSBFeGVjdXRlZCIpCiAgICAgICAgYnJlYWsKICAgIH0KfQpgYGAKCgoKIyBBbmFseXNpcwoKCkEgdHJlbmQgZ3JhcGggb2YgcmV0cmFjdGVkIGFydGljbGVzIGRlcml2ZWQgZnJvbSBFdXJvcGUgUE1DICNSU3RhdHMgI2V1cm9wZXBtYyB7ZXVyb3BlcG1jfSDwn5OmICNldmVyZ3JlZW5yZXZpZXdncmFwaCAjcmVzZWFyY2ggI2JpYmxpb2dyYXBoeSAjYmlibGlvbWV0cmljcwoKCgpgYGB7ciBldXJvcGVwbWN9CmxpYnJhcnkoZXVyb3BlcG1jKQpgYGAKCgpgYGB7ciBldXJvcGVwbWMgc2VhcmNofQpyZXRyYWN0ZWRBcnRpY2xlc1BlclRvdGFsQXJ0aWNsZXMgPC0gCiAgICBldXJvcGVwbWM6OmVwbWNfaGl0c190cmVuZCgKICAgIHF1ZXJ5ID0gIihQVUJfVFlQRTonUmV0cmFjdGVkIFB1YmxpY2F0aW9uJyBPUiBQVUJfVFlQRTonUmV0cmFjdGlvbiBvZiBQdWJsaWNhdGlvbicpIiwKICAgIHBlcmlvZCA9IDE5ODA6MjAxNwogICAgKQoKcmV0cmFjdGVkQXJ0aWNsZXNQZXJUb3RhbEFydGljbGVzJEFmZmlsaWF0aW9uIDwtICJBbGwiCgpyZXRyYWN0ZWRBcnRpY2xlc1BlclRvdGFsQXJ0aWNsZXNfVHVya2V5IDwtIAogICAgZXVyb3BlcG1jOjplcG1jX2hpdHNfdHJlbmQoCiAgICBxdWVyeSA9ICIoQUZGOidUdXJrZXknKSBBTkQgKFBVQl9UWVBFOidSZXRyYWN0ZWQgUHVibGljYXRpb24nIE9SIFBVQl9UWVBFOidSZXRyYWN0aW9uIG9mIFB1YmxpY2F0aW9uJykiLAogICAgcGVyaW9kID0gMTk4MDoyMDE3CiAgICApCgpyZXRyYWN0ZWRBcnRpY2xlc1BlclRvdGFsQXJ0aWNsZXNfVHVya2V5JEFmZmlsaWF0aW9uIDwtICJUdXJrZXkiCgpyZXRyYWN0ZWRBcnRpY2xlcyA8LSBkcGx5cjo6YmluZF9yb3dzKApyZXRyYWN0ZWRBcnRpY2xlc1BlclRvdGFsQXJ0aWNsZXMsCnJldHJhY3RlZEFydGljbGVzUGVyVG90YWxBcnRpY2xlc19UdXJrZXkpCgpgYGAKCgoKYGBge3IgZ3JhcGggZXVyb3BlcG1jIHNlYXJjaH0KbGlicmFyeShnZ3Bsb3QyKQpnZ3Bsb3QocmV0cmFjdGVkQXJ0aWNsZXMsIAogICAgICAgYWVzKHllYXIsIAogICAgICAgICAgIDEwMDAqKHF1ZXJ5X2hpdHMgLyBhbGxfaGl0cyksCiAgICAgICAgICAgY29sb3IgPSBBZmZpbGlhdGlvbikKICAgICAgICkgKyAKICBnZW9tX3BvaW50KCkgKyAKICBnZW9tX2xpbmUoKSArCiAgeGxhYigiWWVhciBwdWJsaXNoZWQiKSArIAogIHlsYWIoIlByb3BvcnRpb24gb2YgUmV0cmFjdGVkIEFydGljbGVzIFxuIGRhdGE6IEV1cm9wZSBQTUMsIDIwLjEwLjIwMTkgXG4gMTAwMHgiKQpgYGAKCgoKCgoKCgoKCgoKYGBge3IgZXh0cmFjdCB5ZWFyIGpvdXJuYWwgbmFtZSBmcm9tIHhtbCwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbXlUZXJtIDwtIHJzdHVkaW9hcGk6OnRlcm1pbmFsQ3JlYXRlKHNob3cgPSBGQUxTRSkKcnN0dWRpb2FwaTo6dGVybWluYWxTZW5kKApteVRlcm0sCiJ4dHJhY3QgLWlucHV0IGRhdGEvUmV0cmFjdGVkUHViTWVkL1JldHJhY3RlZF9QdWJsaWNhdGlvbl9zYl9PUl9SZXRyYWN0aW9uX29mX1B1YmxpY2F0aW9uX3NiX3B1Ym1lZF9yZXN1bHQueG1sIC1wYXR0ZXJuIFB1Ym1lZEFydGljbGUgLXRhYiBcInxcIiAtc2VwIFwiO1wiIC1kZWYgXCJOQVwiIC1lbGVtZW50IE1lZGxpbmVDaXRhdGlvbi9QTUlEIEFydGljbGVUaXRsZSBKb3VybmFsL0lTU04gSVNPQWJicmV2aWF0aW9uIFB1YkRhdGUvWWVhciA+IGRhdGEvUmV0cmFjdGVkUHViTWVkL3B1Ym1lZF9yZXN1bHRfcmV0cmFjdGVkLmNzdiBcbiIKKQpTeXMuc2xlZXAoMSkKcmVwZWF0IHsKU3lzLnNsZWVwKDAuMSkKaWYgKHJzdHVkaW9hcGk6OnRlcm1pbmFsQnVzeShteVRlcm0pID09IEZBTFNFKSB7CnByaW50KCJDb2RlIEV4ZWN1dGVkIikKYnJlYWsKfQp9CmBgYAoKCgpgYGB7ciByZWFkIGV4dHJhY3RlZCBkYXRhfQpwdWJtZWRfcmVzdWx0X3JldHJhY3RlZCA8LQogICAgcmVhZHI6OnJlYWRfZGVsaW0oCiAgICAgICAgZmlsZSA9IGhlcmU6OmhlcmUoImRhdGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJSZXRyYWN0ZWRQdWJNZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJwdWJtZWRfcmVzdWx0X3JldHJhY3RlZC5jc3YiKSwKICAgICAgICBkZWxpbSA9ICJ8IiwKICAgICAgICBlc2NhcGVfZG91YmxlID0gRkFMU0UsCiAgICAgICAgY29sX25hbWVzID0gRkFMU0UsCiAgICAgICAgdHJpbV93cyA9IFRSVUUKICAgICkKCnB1Ym1lZF9yZXN1bHRfcmV0cmFjdGVkIDwtIApwdWJtZWRfcmVzdWx0X3JldHJhY3RlZCAlPiUKICAgIHNlbGVjdCgKICAgICAgICBQTUlEID0gWDEsCiAgICAgICAgdGl0bGUgPSBYMiwKICAgICAgICBqb3VybmFsSVNTTiA9IFgzLCAKICAgICAgICBqb3VybmFsTmFtZSA9IFg0LAogICAgICAgIHllYXIgPSBYNQogICAgKQpgYGAKCgoKCgoKYGBge3IgZXh0cmFjdCBqb3VybmFsIG5hbWUgYW5kIHRvcGljcyBmcm9tIHhtbCwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbXlUZXJtIDwtIHJzdHVkaW9hcGk6OnRlcm1pbmFsQ3JlYXRlKHNob3cgPSBGQUxTRSkKcnN0dWRpb2FwaTo6dGVybWluYWxTZW5kKApteVRlcm0sCiJ4dHJhY3QgLWlucHV0IGRhdGEvY3VycmVudGx5aW5kZXhlZF9ubG1jYXRhbG9nX3Jlc3VsdC54bWwgLXBhdHRlcm4gTkNCSUNhdGFsb2dSZWNvcmQgLXRhYiBcInxcIiAtc2VwIFwiO1wiIC1kZWYgXCJOQVwiIC1lbGVtZW50IE1lZGxpbmVUQSBUaXRsZUFsdGVybmF0ZSBCcm9hZEpvdXJuYWxIZWFkaW5nTGlzdCBNZXNoSGVhZGluZy9EZXNjcmlwdG9yTmFtZSBJU1NOID4gZGF0YS9SZXRyYWN0ZWRQdWJNZWQvam91cm5hbF9wcm9wZXJ0aWVzLmNzdiBcbiIKKQpTeXMuc2xlZXAoMSkKcmVwZWF0IHsKU3lzLnNsZWVwKDAuMSkKaWYgKHJzdHVkaW9hcGk6OnRlcm1pbmFsQnVzeShteVRlcm0pID09IEZBTFNFKSB7CnByaW50KCJDb2RlIEV4ZWN1dGVkIikKYnJlYWsKfQp9CmBgYAoKCmBgYHtyIHJlYWQgY2xlYW4gam91cm5hbCBwcm9wZXJ0aWVzfQpqb3VybmFsX3Byb3BlcnRpZXMgPC0gcmVhZHI6OnJlYWRfZGVsaW0oaGVyZTo6aGVyZSgiZGF0YSIsICJSZXRyYWN0ZWRQdWJNZWQiICwgImpvdXJuYWxfcHJvcGVydGllcy5jc3YiKSwgCiAgICAifCIsIGVzY2FwZV9kb3VibGUgPSBGQUxTRSwgY29sX25hbWVzID0gRkFMU0UsIAogICAgdHJpbV93cyA9IFRSVUUpCgpqb3VybmFsX3Byb3BlcnRpZXMgPC0gam91cm5hbF9wcm9wZXJ0aWVzICU+JSAKICAgIHNlbGVjdChqb3VybmFsID0gWDEsCiAgICAgICAgICAgdG9waWMgPSBYNCwKICAgICAgICAgICBJU1NOID0gWDUpCgoKCmpvdXJuYWxfcHJvcGVydGllcyA8LSBqb3VybmFsX3Byb3BlcnRpZXMgJT4lIAogICAgbXV0YXRlKGpvdXJuYWxOYW1lID0gc3RyX3NwbGl0KGpvdXJuYWwsICI7IikpICU+JQogIHVubmVzdChjb2xzID0gYyhqb3VybmFsTmFtZSkpICU+JSAKICAgIG11dGF0ZShqb3VybmFsVG9waWMgPSBzdHJfc3BsaXQodG9waWMsICI7IikpICU+JQogIHVubmVzdChjb2xzID0gYyhqb3VybmFsVG9waWMpKSAlPiUgCiAgICBtdXRhdGUoam91cm5hbElTU04gPSBzdHJfc3BsaXQoSVNTTiwgIjsiKSkgJT4lCiAgdW5uZXN0KGNvbHMgPSBjKGpvdXJuYWxJU1NOKSkgJT4lIAogICAgc2VsZWN0KGpvdXJuYWxOYW1lLAogICAgICAgICAgIGpvdXJuYWxUb3BpYywKICAgICAgICAgICBqb3VybmFsSVNTTikgJT4lIAogICAgdW5pcXVlKCkKCmBgYAoKCgpgYGB7ciBjb21iaW5lIHJldHJhY3RlZCBhcnRpY2xlcyB3aXRoIHRoZWlyIGpvdXJuYWwgaW5mb30KcHVibWVkX3Jlc3VsdF9yZXRyYWN0ZWQgPC0gcHVibWVkX3Jlc3VsdF9yZXRyYWN0ZWQgJT4lIAogICAgbGVmdF9qb2luKGpvdXJuYWxfcHJvcGVydGllcywgYnkgPSBjKCJqb3VybmFsSVNTTiIpKQpgYGAKCgpgYGB7ciBmaW5kIHRoZSBqb3VybmFsIHRvcGljcyBpbiB3aGljaCBtb3N0IHJldHJhY3RlZCBhcnRpY2xlcyB3ZXJlfQpjb21tb25UZXJtcyA8LSBjKCJNZWRpY2luZSIsICJTY2llbmNlIiwgIlJlc2VhcmNoIikKCihwdWJtZWRfcmVzdWx0X3JldHJhY3RlZCAlPiUgCiAgICBzZWxlY3Qoam91cm5hbFRvcGljLCB5ZWFyKSAlPiUgCiAgICBmaWx0ZXIoIWpvdXJuYWxUb3BpYyAlaW4lIGNvbW1vblRlcm1zKSAlPiUgCiAgICAgICAgICAgIGZpbHRlcighaXMubmEoam91cm5hbFRvcGljKSkgJT4lIAogICAgZ3JvdXBfYnkoam91cm5hbFRvcGljKSAlPiUgCiAgICB0YWxseSgpICU+JSAKICAgIGFycmFuZ2UoZGVzYyhuKSkgJT4lIAogICAgaGVhZCgxMCkgJT4lIAogICAgcHVsbChqb3VybmFsVG9waWMpIC0+IG1vc3RSZXRyYWN0ZWRUb3BpY3NPZkpvdXJuYWwpCmBgYAoKCgoKVGhpcyB0cmVuZCBncmFwaCBzaG93cyB0aGUgbWFqb3IgdG9waWNzIG9mIHRoZSBqb3VybmFscyB0aGF0IGhhdmUgdGhlIG1vc3QgcmV0cmFjdGlvbnMuIERhdGEgZGVyaXZlZCBmcm9tIFB1Yk1lZCAjUlN0YXRzICAjcmVzZWFyY2ggI2JpYmxpb2dyYXBoeSAjYmlibGlvbWV0cmljcwoKCmBgYHtyIG1ham9yIHRvcGljcyBvZiB0aGUgam91cm5hbHMgdGhhdCBoYXZlIHRoZSBtb3N0IHJldHJhY3Rpb25zfQpwdWJtZWRfcmVzdWx0X3JldHJhY3RlZCAlPiUgCiAgICBmaWx0ZXIoam91cm5hbFRvcGljICVpbiUgbW9zdFJldHJhY3RlZFRvcGljc09mSm91cm5hbCkgJT4lIAogICAgZmlsdGVyKHllYXIgPD0gMjAxOCAmIHllYXIgPj0gMTk5MCkgJT4lIAogICAgc2VsZWN0KGpvdXJuYWxUb3BpYywgeWVhcikgJT4lIAogICAgZ3JvdXBfYnkoam91cm5hbFRvcGljLCB5ZWFyKSAlPiUgCiAgICB0YWxseSgpICU+JSAKICAgIGdncGxvdCggCiAgICAgICBhZXMoeWVhciwgCiAgICAgICAgICAgbiwKICAgICAgICAgICBjb2xvciA9IGpvdXJuYWxUb3BpYwogICAgICAgICAgICkKICAgICAgICkgKyAKICBnZW9tX3BvaW50KCkgKyAKICBnZW9tX2xpbmUoKSArCiAgeGxhYigiWWVhciBwdWJsaXNoZWQiKSArIAogIHlsYWIoIlByb3BvcnRpb24gb2YgUmV0cmFjdGVkIEFydGljbGVzIFxuIGRhdGE6IEV1cm9wZSBQTUMsIDIwLjEwLjIwMTkiKQpgYGAKCgoKCgoKCgoKCg==
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/RetractedPathologyArticles/Retracted_Articles_Europe_PMC.png b/RetractedPathologyArticles/Retracted_Articles_Europe_PMC.png
new file mode 100644
index 0000000..e7a08b1
Binary files /dev/null and b/RetractedPathologyArticles/Retracted_Articles_Europe_PMC.png differ
diff --git a/RetractedPathologyArticles/Topics_journals_most_retractions.png b/RetractedPathologyArticles/Topics_journals_most_retractions.png
new file mode 100644
index 0000000..cac06d7
Binary files /dev/null and b/RetractedPathologyArticles/Topics_journals_most_retractions.png differ
diff --git a/RetractedPathologyArticles/retracted pathology articles b/RetractedPathologyArticles/retracted pathology articles
new file mode 100644
index 0000000..143e41a
--- /dev/null
+++ b/RetractedPathologyArticles/retracted pathology articles
@@ -0,0 +1,12 @@
+retracted pathology articles
+
+
+Retraction Watch Database User Guide
+
+https://retractionwatch.com/retraction-watch-database-user-guide/
+
+
+National Library of Medicine (NLM) and Retracted Publications
+
+
+https://www.ncbi.nlm.nih.gov/pubmedhealth/PMHT0027066/
\ No newline at end of file
diff --git a/Vosviewer.Rmd b/Vosviewer.Rmd
index f201b90..9fb6838 100644
--- a/Vosviewer.Rmd
+++ b/Vosviewer.Rmd
@@ -1,10 +1,8 @@
---
-title: "Vosviewer"
+title: "VOSviewer"
output: html_notebook
---
-
-
---
# VOSVIEWER
@@ -18,3 +16,175 @@ https://seinecle.github.io/vosviewer-tutorials/
---
+
+```{bash}
+cd ~/PubMed/PedCer3JournalWOS/WOS_rawdata/
+cat *.txt > ~/PubMed/PedCer3JournalWOS/WOS_combined/combinedWOS.txt
+
+```
+
+```
+1. VosViewer haritalarını etkileşimli hale getirmek için aşağıdaki linkte sarı ile işaretli yerlere sunucuya attığınız map ve network dosyalarının adresini yazmanız gerekiyor.
+http://www.vosviewer.com/vosviewer.php?map=http://yunus.hacettepe.edu.tr/~ztaskin/Hacettepe_MedLife/map_coauthor.txt&network=http://yunus.hacettepe.edu.tr/~ztaskin/Hacettepe_MedLife/network_coauthor.txt
+2. VosViewer’ı buradan: http://www.vosviewer.com/ / CiteSpace’i de şuradan http://cluster.ischool.drexel.edu/~cchen/citespace/download/ indirebilirsiniz.
+3. Bir klasöreki çok sayıda txt dosyasını tek seferde birleştirmek için:
+ - Terminal ekranını açın (Başlat > Çalıştır > cmd)
+ - cd koduyla txt dosyalarının yer aldığı klasöre gidin. (cd .. bir üst klasöre gider / cd (dosya adı) yazdığınız dosya adına)
+ - Ardından şu kodu çalıştırın > for %f in (*.txt) do type "%f" >> output.txt
+ - Veriyi excel’de açın. Fazla etiketleri silin. Her dosyanın ilk satırı fazla olacak çünkü. Bazen dönüştürmede duplike de yapabiliyor. Duplikeleri bul ve sil yapabilirsiniz emin olmak için.
+4. CiteSpace’i çalıştıramazsanız aşağıdaki iki kodu terminal ekranından çalıştırmayı deneyebilirsiniz.
+- java -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Xss5m -jar CiteSpaceV.jar
+- java -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Xms1g -Xmx12g -Xss5m -jar CiteSpaceV.jar
+5. DORA deklarasyonunu buradan https://sfdora.org/read/tr/ Leiden Manifesto’yu buradan http://www.leidenmanifesto.org/ okuyabilirsiniz.
+6. PubMed sorgularını VosViewer’da çalıştırmak için send to > file > Medline > Create file patikasını kullanarak veriyi indirebilirsiniz. Sorunsuz çalışıyor.
+```
+
+
+
+```
+/Users/serdarbalciold/PubMed/PedCer3JournalWOS/WOS_combined/combinedWOS2.txt
+VOSviewer'da çalıştırıldı.
+co-occurance, author keywords, full counting, thesaurus
+/Users/serdarbalciold/PubMed/PedCer3JournalWOS/thesaurus_PedCer.txt
+min number of occurenece keyword: 5
+569/12377 keywords meet >5 treshold
+all keywords included in the map
+/Users/serdarbalciold/PubMed/PedCer3JournalWOS/export_selected_keywords.txt
+```
+
+
+
+
+
+
+```{r}
+library(data.table)
+# library(bibliometrix)
+```
+
+
+```{r}
+keywords_PedCer3JournalVOSviewer <- fread(
+ here::here("PedCer3JournalWOS/export_selected_keywords.txt"), sep = "\t")
+View(keywords_PedCer3JournalVOSviewer)
+
+map_PedCer3JournalVOSviewer <- fread(
+ here::here("PedCer3JournalWOS/map_keywords.txt"), sep = "\t")
+View(map_PedCer3JournalVOSviewer)
+
+network_PedCer3JournalVOSviewer <- fread(
+ here::here("PedCer3JournalWOS/network_keywords.txt"), sep = "\t")
+View(network_PedCer3JournalVOSviewer)
+
+# /Users/serdarbalciold/PubMed/PedCer3JournalWOS/keyword.gml
+# /Users/serdarbalciold/PubMed/PedCer3JournalWOS/keyword_pajek_network.net
+# /Users/serdarbalciold/PubMed/PedCer3JournalWOS/network_pajek_partition.clu
+# /Users/serdarbalciold/PubMed/PedCer3JournalWOS/keyword_pajek_vector.vec
+
+
+
+```
+
+
+
+
+
+```{r}
+# biblio <- readLines("~/PubMed/PedCer3JournalWOS/WOS_rawdata/Kitap1.txt")
+# biblio_df_df <- bibliometrix::convert2df(file = biblio, dbsource = "isi", format = "bibtex")
+
+PedCer3Journal <- readr::read_delim(file = "~/PubMed/PedCer3JournalWOS/WOS_combined/combinedWOS2.txt",
+ delim = "\t")
+
+library(tidyverse)
+
+PedCer3JournalID <- PedCer3Journal %>%
+ rowid_to_column() %>%
+ select(documentID = rowid,
+ DOI = DI,
+ WOS = UT,
+ PMID = PM)
+
+```
+
+
+```{r}
+# keywordID
+# keywords_PedCer3JournalVOSviewer$id
+
+# keywordNAME
+# keywords_PedCer3JournalVOSviewer$keyword
+
+keywordsPedCer3Journal <-
+ keywords_PedCer3JournalVOSviewer %>%
+ select(keywordID = id,
+ keywordNAME = keyword)
+
+
+# keywordID
+# map_PedCer3JournalVOSviewer$id
+
+# keywordNAME
+# map_PedCer3JournalVOSviewer$label
+
+mapPedCer3Journal <- map_PedCer3JournalVOSviewer %>%
+ select(keywordID = id,
+ keywordNAME = label,
+ cluster = cluster)
+
+# documentID
+# network_PedCer3JournalVOSviewer$V1
+
+# documentID
+# network_PedCer3JournalVOSviewer$V2
+
+```
+
+
+```{r}
+combined_PedCer3Journal <- PedCer3JournalID %>%
+ full_join(occurancePedCer3Journal, by = "documentID") %>%
+ full_join(mapPedCer3Journal, by = "keywordID")
+```
+
+
+
+```
+I am afraid there is no easy solution for this. In the final step in the ‘Create Map’ wizard, a list of keywords is presented. By right-clicking on this list, it is possible to export the document-keyword relations to a text file. In addition, by saving your keyword map in a VOSviewer map file (using the ‘Save’ button on the ’File’ tab), the relations between keywords and clusters can be obtained. By combining the information from the two files, it is possible to find out which documents belong to which clusters. However, this requires some data analysis to be performed outside VOSviewer. Unfortunately, no easier solution is available at the moment.
+```
+
+```
+If you have multiple Web of Science files (in tab-delimited format), it may be best to merge the files into a single file. The first line in this file will be a header line. The second line will be document 1, the third line will be document 2, and so on.
+```
+
+
+```{r}
+combined_PedCer3Journal %>%
+ filter(cluster == 1) %>%
+ janitor::tabyl(keywordNAME, cluster) %>%
+ janitor::adorn_pct_formatting(rounding = 'half up', digits = 1) %>%
+ knitr::kable()
+
+```
+
+
+
+- import WOS data into R
+
+https://github.com/jessicabeyer/wosr
+
+https://cran.r-project.org/web/packages/wosr/wosr.pdf
+
+https://github.com/alberto-martin/read.wos.R
+
+https://cran.rstudio.com/web/packages/bibliometrix/vignettes/bibliometrix-vignette.html
+
+convert2df(file, dbsource = "isi", format = "plaintext")
+
+
+
+
+
+
+
+
diff --git a/Vosviewer.nb.html b/Vosviewer.nb.html
index 04e750f..5ca0d1b 100644
--- a/Vosviewer.nb.html
+++ b/Vosviewer.nb.html
@@ -7,11 +7,12 @@
+
+
+
@@ -1771,10 +1759,402 @@
VOSVIEWER TUTORIALS Documentation for Vosviewer in multiple languages
https://seinecle.github.io/vosviewer-tutorials/
+
+
+
cd ~/PubMed/PedCer3JournalWOS/WOS_rawdata/
+cat *.txt > ~/PubMed/PedCer3JournalWOS/WOS_combined/combinedWOS.txt
+
+
+
+
+
1. VosViewer haritalarını etkileşimli hale getirmek için aşağıdaki linkte sarı ile işaretli yerlere sunucuya attığınız map ve network dosyalarının adresini yazmanız gerekiyor.
+http://www.vosviewer.com/vosviewer.php?map=http://yunus.hacettepe.edu.tr/~ztaskin/Hacettepe_MedLife/map_coauthor.txt&network=http://yunus.hacettepe.edu.tr/~ztaskin/Hacettepe_MedLife/network_coauthor.txt
+2. VosViewer’ı buradan: http://www.vosviewer.com/ / CiteSpace’i de şuradan http://cluster.ischool.drexel.edu/~cchen/citespace/download/ indirebilirsiniz.
+3. Bir klasöreki çok sayıda txt dosyasını tek seferde birleştirmek için:
+ - Terminal ekranını açın (Başlat > Çalıştır > cmd)
+ - cd koduyla txt dosyalarının yer aldığı klasöre gidin. (cd .. bir üst klasöre gider / cd (dosya adı) yazdığınız dosya adına)
+ - Ardından şu kodu çalıştırın > for %f in (*.txt) do type "%f" >> output.txt
+ - Veriyi excel’de açın. Fazla etiketleri silin. Her dosyanın ilk satırı fazla olacak çünkü. Bazen dönüştürmede duplike de yapabiliyor. Duplikeleri bul ve sil yapabilirsiniz emin olmak için.
+4. CiteSpace’i çalıştıramazsanız aşağıdaki iki kodu terminal ekranından çalıştırmayı deneyebilirsiniz.
+- java -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Xss5m -jar CiteSpaceV.jar
+- java -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Xms1g -Xmx12g -Xss5m -jar CiteSpaceV.jar
+5. DORA deklarasyonunu buradan https://sfdora.org/read/tr/ Leiden Manifesto’yu buradan http://www.leidenmanifesto.org/ okuyabilirsiniz.
+6. PubMed sorgularını VosViewer’da çalıştırmak için send to > file > Medline > Create file patikasını kullanarak veriyi indirebilirsiniz. Sorunsuz çalışıyor.
+
/Users/serdarbalciold/PubMed/PedCer3JournalWOS/WOS_combined/combinedWOS2.txt
+VOSviewer'da çalıştırıldı.
+co-occurance, author keywords, full counting, thesaurus
+/Users/serdarbalciold/PubMed/PedCer3JournalWOS/thesaurus_PedCer.txt
+min number of occurenece keyword: 5
+569/12377 keywords meet >5 treshold
+all keywords included in the map
+/Users/serdarbalciold/PubMed/PedCer3JournalWOS/export_selected_keywords.txt
+
+
+
+
library(data.table)
+
+
+
Registered S3 method overwritten by 'data.table':
+ method from
+ print.data.table
+data.table 1.12.2 using 2 threads (see ?getDTthreads). Latest news: r-datatable.com
+
+
+
# library(bibliometrix)
+
+
+
+
+
+
+
keywords_PedCer3JournalVOSviewer <- fread(
+ here::here("PedCer3JournalWOS/export_selected_keywords.txt"), sep = "\t")
+View(keywords_PedCer3JournalVOSviewer)
+
+map_PedCer3JournalVOSviewer <- fread(
+ here::here("PedCer3JournalWOS/map_keywords.txt"), sep = "\t")
+View(map_PedCer3JournalVOSviewer)
+
+network_PedCer3JournalVOSviewer <- fread(
+ here::here("PedCer3JournalWOS/network_keywords.txt"), sep = "\t")
+View(network_PedCer3JournalVOSviewer)
+
+# /Users/serdarbalciold/PubMed/PedCer3JournalWOS/keyword.gml
+# /Users/serdarbalciold/PubMed/PedCer3JournalWOS/keyword_pajek_network.net
+# /Users/serdarbalciold/PubMed/PedCer3JournalWOS/network_pajek_partition.clu
+# /Users/serdarbalciold/PubMed/PedCer3JournalWOS/keyword_pajek_vector.vec
+
+
+
+
+
+
+
+
# biblio <- readLines("~/PubMed/PedCer3JournalWOS/WOS_rawdata/Kitap1.txt")
+# biblio_df_df <- bibliometrix::convert2df(file = biblio, dbsource = "isi", format = "bibtex")
+
+PedCer3Journal <- readr::read_delim(file = "~/PubMed/PedCer3JournalWOS/WOS_combined/combinedWOS2.txt",
+ delim = "\t")
+
+
+
Parsed with column specification:
+cols(
+ .default = col_character()
+)
+See spec(...) for full column specifications.
+
+
+
library(tidyverse)
+
+
+
── Attaching packages ──────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
+✔ ggplot2 3.2.1 ✔ purrr 0.3.2
+✔ tibble 2.1.3 ✔ dplyr 0.8.3
+✔ tidyr 0.8.99.9000 ✔ stringr 1.4.0
+✔ readr 1.3.1 ✔ forcats 0.4.0
+── Conflicts ─────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
+✖ dplyr::between() masks data.table::between()
+✖ dplyr::filter() masks stats::filter()
+✖ dplyr::first() masks data.table::first()
+✖ dplyr::lag() masks stats::lag()
+✖ dplyr::last() masks data.table::last()
+✖ purrr::transpose() masks data.table::transpose()
+
+
+
PedCer3JournalID <- PedCer3Journal %>%
+ rowid_to_column() %>%
+ select(documentID = rowid,
+ DOI = DI,
+ WOS = UT,
+ PMID = PM)
+
+
+
+
+
+
+
+
# keywordID
+# keywords_PedCer3JournalVOSviewer$id
+
+# keywordNAME
+# keywords_PedCer3JournalVOSviewer$keyword
+
+keywordsPedCer3Journal <-
+ keywords_PedCer3JournalVOSviewer %>%
+ select(keywordID = id,
+ keywordNAME = keyword)
+
+
+# keywordID
+# map_PedCer3JournalVOSviewer$id
+
+# keywordNAME
+# map_PedCer3JournalVOSviewer$label
+
+mapPedCer3Journal <- map_PedCer3JournalVOSviewer %>%
+ select(keywordID = id,
+ keywordNAME = label,
+ cluster = cluster)
+
+# documentID
+# network_PedCer3JournalVOSviewer$V1
+
+# documentID
+# network_PedCer3JournalVOSviewer$V2
+
+
+
+
+
+
+
+
combined_PedCer3Journal <- PedCer3JournalID %>%
+ full_join(occurancePedCer3Journal, by = "documentID") %>%
+ full_join(mapPedCer3Journal, by = "keywordID")
+
+
+
+
I am afraid there is no easy solution for this. In the final step in the ‘Create Map’ wizard, a list of keywords is presented. By right-clicking on this list, it is possible to export the document-keyword relations to a text file. In addition, by saving your keyword map in a VOSviewer map file (using the ‘Save’ button on the ’File’ tab), the relations between keywords and clusters can be obtained. By combining the information from the two files, it is possible to find out which documents belong to which clusters. However, this requires some data analysis to be performed outside VOSviewer. Unfortunately, no easier solution is available at the moment.
+
If you have multiple Web of Science files (in tab-delimited format), it may be best to merge the files into a single file. The first line in this file will be a header line. The second line will be document 1, the third line will be document 2, and so on.
+
+
+
+
+
+
+
+
+
+
+
+asymptomatic |
+500.0% |
+
+
+bowel resection |
+100.0% |
+
+
+colectomy |
+100.0% |
+
+
+colitis |
+100.0% |
+
+
+colon interposition |
+100.0% |
+
+
+colonic atresia |
+100.0% |
+
+
+colostomy |
+100.0% |
+
+
+continence |
+100.0% |
+
+
+emergency |
+4500.0% |
+
+
+enhanced recovery after surgery |
+100.0% |
+
+
+enterostomy |
+100.0% |
+
+
+esophageal lengthening |
+100.0% |
+
+
+esophageal replacement |
+100.0% |
+
+
+extremely low birth weight |
+100.0% |
+
+
+familial adenomatous polyposis |
+100.0% |
+
+
+feeding |
+100.0% |
+
+
+gastric pull-up |
+100.0% |
+
+
+gastric transposition |
+100.0% |
+
+
+gastric tube |
+100.0% |
+
+
+growth |
+100.0% |
+
+
+hypoxia |
+100.0% |
+
+
+inflammatory bowel disease |
+100.0% |
+
+
+ıleostomy |
+100.0% |
+
+
+ınflammatory bowel disease |
+100.0% |
+
+
+ıntestinal malrotation |
+100.0% |
+
+
+ıntestinal perforation |
+100.0% |
+
+
+ıschemia |
+100.0% |
+
+
+jejunostomy |
+100.0% |
+
+
+kids’ ınpatient database |
+100.0% |
+
+
+laparotomy |
+100.0% |
+
+
+length of stay |
+100.0% |
+
+
+long gap esophageal atresia |
+100.0% |
+
+
+malrotation |
+100.0% |
+
+
+nec |
+100.0% |
+
+
+neonatal |
+100.0% |
+
+
+nıcu |
+100.0% |
+
+
+nutrition |
+100.0% |
+
+
+operative technique |
+100.0% |
+
+
+ostomy |
+600.0% |
+
+
+pilonidal disease |
+100.0% |
+
+
+premature |
+100.0% |
+
+
+primary anastomosis |
+100.0% |
+
+
+primary repair |
+100.0% |
+
+
+resection |
+100.0% |
+
+
+restorative proctocolectomy |
+100.0% |
+
+
+small bowel |
+100.0% |
+
+
+spontaneous intestinal perforation |
+100.0% |
+
+
+stricture |
+100.0% |
+
+
+ulcerative colitis |
+100.0% |
+
+
+very low birth weight |
+100.0% |
+
+
+volvulus |
+100.0% |
+
+
+
+
+
+
+
+
+
+
+- import WOS data into R
+
+
https://github.com/jessicabeyer/wosr
+
https://cran.r-project.org/web/packages/wosr/wosr.pdf
+
https://github.com/alberto-martin/read.wos.R
+
https://cran.rstudio.com/web/packages/bibliometrix/vignettes/bibliometrix-vignette.html
+
convert2df(file, dbsource = “isi”, format = “plaintext”)
+
-LS0tCnRpdGxlOiAiVm9zdmlld2VyIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgoKCi0tLQoKIyBWT1NWSUVXRVIKCiMjIFZPU1ZJRVdFUiBUVVRPUklBTFMgRG9jdW1lbnRhdGlvbiBmb3IgVm9zdmlld2VyIGluIG11bHRpcGxlIGxhbmd1YWdlcwoKaHR0cHM6Ly9naXRodWIuY29tL3NlaW5lY2xlL1Zvc3ZpZXdlci10dXRvcmlhbHMKCmh0dHBzOi8vc2VpbmVjbGUuZ2l0aHViLmlvL3Zvc3ZpZXdlci10dXRvcmlhbHMvCgoKLS0tCgo=
+LS0tCnRpdGxlOiAiVk9Tdmlld2VyIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgotLS0KCiMgVk9TVklFV0VSCgojIyBWT1NWSUVXRVIgVFVUT1JJQUxTIERvY3VtZW50YXRpb24gZm9yIFZvc3ZpZXdlciBpbiBtdWx0aXBsZSBsYW5ndWFnZXMKCmh0dHBzOi8vZ2l0aHViLmNvbS9zZWluZWNsZS9Wb3N2aWV3ZXItdHV0b3JpYWxzCgpodHRwczovL3NlaW5lY2xlLmdpdGh1Yi5pby92b3N2aWV3ZXItdHV0b3JpYWxzLwoKCi0tLQoKCmBgYHtiYXNofQpjZCB+L1B1Yk1lZC9QZWRDZXIzSm91cm5hbFdPUy9XT1NfcmF3ZGF0YS8gCmNhdCAqLnR4dCA+IH4vUHViTWVkL1BlZENlcjNKb3VybmFsV09TL1dPU19jb21iaW5lZC9jb21iaW5lZFdPUy50eHQKCmBgYAoKYGBgCjEuIFZvc1ZpZXdlciBoYXJpdGFsYXLEsW7EsSBldGtpbGXFn2ltbGkgaGFsZSBnZXRpcm1layBpw6dpbiBhxZ9hxJ/EsWRha2kgbGlua3RlIHNhcsSxIGlsZSBpxZ9hcmV0bGkgeWVybGVyZSBzdW51Y3V5YSBhdHTEscSfxLFuxLF6IG1hcCB2ZSBuZXR3b3JrIGRvc3lhbGFyxLFuxLFuIGFkcmVzaW5pIHlhem1hbsSxeiBnZXJla2l5b3IuCmh0dHA6Ly93d3cudm9zdmlld2VyLmNvbS92b3N2aWV3ZXIucGhwP21hcD1odHRwOi8veXVudXMuaGFjZXR0ZXBlLmVkdS50ci9+enRhc2tpbi9IYWNldHRlcGVfTWVkTGlmZS9tYXBfY29hdXRob3IudHh0Jm5ldHdvcms9aHR0cDovL3l1bnVzLmhhY2V0dGVwZS5lZHUudHIvfnp0YXNraW4vSGFjZXR0ZXBlX01lZExpZmUvbmV0d29ya19jb2F1dGhvci50eHQKMi4gVm9zVmlld2Vy4oCZxLEgYnVyYWRhbjogaHR0cDovL3d3dy52b3N2aWV3ZXIuY29tLyAvIENpdGVTcGFjZeKAmWkgZGUgxZ91cmFkYW4gaHR0cDovL2NsdXN0ZXIuaXNjaG9vbC5kcmV4ZWwuZWR1L35jY2hlbi9jaXRlc3BhY2UvZG93bmxvYWQvIGluZGlyZWJpbGlyc2luaXouCjMuIEJpciBrbGFzw7ZyZWtpIMOnb2sgc2F5xLFkYSB0eHQgZG9zeWFzxLFuxLEgdGVrIHNlZmVyZGUgYmlybGXFn3Rpcm1layBpw6dpbjoKICAgICAgICAgICAgICAgIC0gVGVybWluYWwgZWtyYW7EsW7EsSBhw6fEsW4gKEJhxZ9sYXQgPiDDh2FsxLHFn3TEsXIgPiBjbWQpCiAgICAgICAgICAgICAgICAtIGNkIGtvZHV5bGEgdHh0IGRvc3lhbGFyxLFuxLFuIHllciBhbGTEscSfxLEga2xhc8O2cmUgZ2lkaW4uIChjZCAuLiBiaXIgw7xzdCBrbGFzw7ZyZSBnaWRlciAvIGNkIChkb3N5YSBhZMSxKSB5YXpkxLHEn8SxbsSxeiBkb3N5YSBhZMSxbmEpCiAgICAgICAgICAgICAgICAtIEFyZMSxbmRhbiDFn3Uga29kdSDDp2FsxLHFn3TEsXLEsW4gPiBmb3IgJWYgaW4gKCoudHh0KSBkbyB0eXBlICIlZiIgPj4gb3V0cHV0LnR4dAogICAgICAgICAgICAgICAgLSBWZXJpeWkgZXhjZWzigJlkZSBhw6fEsW4uIEZhemxhIGV0aWtldGxlcmkgc2lsaW4uIEhlciBkb3N5YW7EsW4gaWxrIHNhdMSxcsSxIGZhemxhIG9sYWNhayDDp8O8bmvDvC4gQmF6ZW4gZMO2bsO8xZ90w7xybWVkZSBkdXBsaWtlIGRlIHlhcGFiaWxpeW9yLiBEdXBsaWtlbGVyaSBidWwgdmUgc2lsIHlhcGFiaWxpcnNpbml6IGVtaW4gb2xtYWsgacOnaW4uCjQuIENpdGVTcGFjZeKAmWkgw6dhbMSxxZ90xLFyYW1henNhbsSxeiBhxZ9hxJ/EsWRha2kgaWtpIGtvZHUgdGVybWluYWwgZWtyYW7EsW5kYW4gw6dhbMSxxZ90xLFybWF5xLEgZGVuZXllYmlsaXJzaW5pei4KLSBqYXZhIC1EZmlsZS5lbmNvZGluZz1VVEYtOCAtRHVzZXIuY291bnRyeT1VUyAtRHVzZXIubGFuZ3VhZ2U9ZW4gLVhzczVtIC1qYXIgQ2l0ZVNwYWNlVi5qYXIKLSBqYXZhIC1EZmlsZS5lbmNvZGluZz1VVEYtOCAtRHVzZXIuY291bnRyeT1VUyAtRHVzZXIubGFuZ3VhZ2U9ZW4gLVhtczFnIC1YbXgxMmcgLVhzczVtIC1qYXIgQ2l0ZVNwYWNlVi5qYXIKNS4gRE9SQSBkZWtsYXJhc3lvbnVudSBidXJhZGFuIGh0dHBzOi8vc2Zkb3JhLm9yZy9yZWFkL3RyLyBMZWlkZW4gTWFuaWZlc3Rv4oCZeXUgYnVyYWRhbiBodHRwOi8vd3d3LmxlaWRlbm1hbmlmZXN0by5vcmcvIG9rdXlhYmlsaXJzaW5pei4KNi4gUHViTWVkIHNvcmd1bGFyxLFuxLEgVm9zVmlld2Vy4oCZZGEgw6dhbMSxxZ90xLFybWFrIGnDp2luIHNlbmQgdG8gPiBmaWxlID4gTWVkbGluZSA+IENyZWF0ZSBmaWxlIHBhdGlrYXPEsW7EsSBrdWxsYW5hcmFrIHZlcml5aSBpbmRpcmViaWxpcnNpbml6LiBTb3J1bnN1eiDDp2FsxLHFn8SxeW9yLgpgYGAKCgoKYGBgCi9Vc2Vycy9zZXJkYXJiYWxjaW9sZC9QdWJNZWQvUGVkQ2VyM0pvdXJuYWxXT1MvV09TX2NvbWJpbmVkL2NvbWJpbmVkV09TMi50eHQgClZPU3ZpZXdlcidkYSDDp2FsxLHFn3TEsXLEsWxkxLEuCmNvLW9jY3VyYW5jZSwgYXV0aG9yIGtleXdvcmRzLCBmdWxsIGNvdW50aW5nLCB0aGVzYXVydXMKL1VzZXJzL3NlcmRhcmJhbGNpb2xkL1B1Yk1lZC9QZWRDZXIzSm91cm5hbFdPUy90aGVzYXVydXNfUGVkQ2VyLnR4dAptaW4gbnVtYmVyIG9mIG9jY3VyZW5lY2Uga2V5d29yZDogNQo1NjkvMTIzNzcga2V5d29yZHMgbWVldCA+NSB0cmVzaG9sZAphbGwga2V5d29yZHMgaW5jbHVkZWQgaW4gdGhlIG1hcAovVXNlcnMvc2VyZGFyYmFsY2lvbGQvUHViTWVkL1BlZENlcjNKb3VybmFsV09TL2V4cG9ydF9zZWxlY3RlZF9rZXl3b3Jkcy50eHQKYGBgCgoKCgoKCmBgYHtyfQpsaWJyYXJ5KGRhdGEudGFibGUpCiMgbGlicmFyeShiaWJsaW9tZXRyaXgpCmBgYAoKCmBgYHtyfQprZXl3b3Jkc19QZWRDZXIzSm91cm5hbFZPU3ZpZXdlciA8LSBmcmVhZCgKICAgIGhlcmU6OmhlcmUoIlBlZENlcjNKb3VybmFsV09TL2V4cG9ydF9zZWxlY3RlZF9rZXl3b3Jkcy50eHQiKSwgc2VwID0gIlx0IikKVmlldyhrZXl3b3Jkc19QZWRDZXIzSm91cm5hbFZPU3ZpZXdlcikKCm1hcF9QZWRDZXIzSm91cm5hbFZPU3ZpZXdlciA8LSBmcmVhZCgKICAgIGhlcmU6OmhlcmUoIlBlZENlcjNKb3VybmFsV09TL21hcF9rZXl3b3Jkcy50eHQiKSwgc2VwID0gIlx0IikKVmlldyhtYXBfUGVkQ2VyM0pvdXJuYWxWT1N2aWV3ZXIpCgpuZXR3b3JrX1BlZENlcjNKb3VybmFsVk9Tdmlld2VyIDwtIGZyZWFkKAogICAgaGVyZTo6aGVyZSgiUGVkQ2VyM0pvdXJuYWxXT1MvbmV0d29ya19rZXl3b3Jkcy50eHQiKSwgc2VwID0gIlx0IikKVmlldyhuZXR3b3JrX1BlZENlcjNKb3VybmFsVk9Tdmlld2VyKQoKIyAvVXNlcnMvc2VyZGFyYmFsY2lvbGQvUHViTWVkL1BlZENlcjNKb3VybmFsV09TL2tleXdvcmQuZ21sCiMgL1VzZXJzL3NlcmRhcmJhbGNpb2xkL1B1Yk1lZC9QZWRDZXIzSm91cm5hbFdPUy9rZXl3b3JkX3BhamVrX25ldHdvcmsubmV0CiMgL1VzZXJzL3NlcmRhcmJhbGNpb2xkL1B1Yk1lZC9QZWRDZXIzSm91cm5hbFdPUy9uZXR3b3JrX3BhamVrX3BhcnRpdGlvbi5jbHUKIyAvVXNlcnMvc2VyZGFyYmFsY2lvbGQvUHViTWVkL1BlZENlcjNKb3VybmFsV09TL2tleXdvcmRfcGFqZWtfdmVjdG9yLnZlYwoKCgpgYGAKCgoKCgpgYGB7cn0KIyBiaWJsaW8gPC0gcmVhZExpbmVzKCJ+L1B1Yk1lZC9QZWRDZXIzSm91cm5hbFdPUy9XT1NfcmF3ZGF0YS9LaXRhcDEudHh0IikKIyBiaWJsaW9fZGZfZGYgPC0gYmlibGlvbWV0cml4Ojpjb252ZXJ0MmRmKGZpbGUgPSBiaWJsaW8sIGRic291cmNlID0gImlzaSIsIGZvcm1hdCA9ICJiaWJ0ZXgiKQoKUGVkQ2VyM0pvdXJuYWwgPC0gcmVhZHI6OnJlYWRfZGVsaW0oZmlsZSA9ICJ+L1B1Yk1lZC9QZWRDZXIzSm91cm5hbFdPUy9XT1NfY29tYmluZWQvY29tYmluZWRXT1MyLnR4dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsaW0gPSAiXHQiKQoKbGlicmFyeSh0aWR5dmVyc2UpCgpQZWRDZXIzSm91cm5hbElEIDwtIFBlZENlcjNKb3VybmFsICU+JSAKICAgIHJvd2lkX3RvX2NvbHVtbigpICU+JSAKICAgIHNlbGVjdChkb2N1bWVudElEID0gcm93aWQsCiAgICAgICAgICAgRE9JID0gREksCiAgICAgICAgICAgV09TID0gVVQsCiAgICAgICAgICAgUE1JRCA9IFBNKQoKYGBgCgoKYGBge3J9CiMga2V5d29yZElECiMga2V5d29yZHNfUGVkQ2VyM0pvdXJuYWxWT1N2aWV3ZXIkaWQKCiMga2V5d29yZE5BTUUKIyBrZXl3b3Jkc19QZWRDZXIzSm91cm5hbFZPU3ZpZXdlciRrZXl3b3JkCgprZXl3b3Jkc1BlZENlcjNKb3VybmFsIDwtIAogICAga2V5d29yZHNfUGVkQ2VyM0pvdXJuYWxWT1N2aWV3ZXIgJT4lIAogICAgc2VsZWN0KGtleXdvcmRJRCA9IGlkLAogICAgICAgICAgIGtleXdvcmROQU1FID0ga2V5d29yZCkKCgojIGtleXdvcmRJRAojIG1hcF9QZWRDZXIzSm91cm5hbFZPU3ZpZXdlciRpZAoKIyBrZXl3b3JkTkFNRQojIG1hcF9QZWRDZXIzSm91cm5hbFZPU3ZpZXdlciRsYWJlbAoKbWFwUGVkQ2VyM0pvdXJuYWwgPC0gbWFwX1BlZENlcjNKb3VybmFsVk9Tdmlld2VyICU+JSAKICAgIHNlbGVjdChrZXl3b3JkSUQgPSBpZCwKICAgICAgICAgICBrZXl3b3JkTkFNRSA9IGxhYmVsLAogICAgICAgICAgIGNsdXN0ZXIgPSBjbHVzdGVyKQoKIyBkb2N1bWVudElECiMgbmV0d29ya19QZWRDZXIzSm91cm5hbFZPU3ZpZXdlciRWMQoKIyBkb2N1bWVudElECiMgbmV0d29ya19QZWRDZXIzSm91cm5hbFZPU3ZpZXdlciRWMgoKYGBgCgoKYGBge3J9CmNvbWJpbmVkX1BlZENlcjNKb3VybmFsIDwtIFBlZENlcjNKb3VybmFsSUQgJT4lIAogICAgZnVsbF9qb2luKG9jY3VyYW5jZVBlZENlcjNKb3VybmFsLCBieSA9ICJkb2N1bWVudElEIikgJT4lIAogICAgZnVsbF9qb2luKG1hcFBlZENlcjNKb3VybmFsLCBieSA9ICJrZXl3b3JkSUQiKQpgYGAKCgoKYGBgCkkgYW0gYWZyYWlkIHRoZXJlIGlzIG5vIGVhc3kgc29sdXRpb24gZm9yIHRoaXMuIEluIHRoZSBmaW5hbCBzdGVwIGluIHRoZSDigJhDcmVhdGUgTWFw4oCZIHdpemFyZCwgYSBsaXN0IG9mIGtleXdvcmRzIGlzIHByZXNlbnRlZC4gQnkgcmlnaHQtY2xpY2tpbmcgb24gdGhpcyBsaXN0LCBpdCBpcyBwb3NzaWJsZSB0byBleHBvcnQgdGhlIGRvY3VtZW50LWtleXdvcmQgcmVsYXRpb25zIHRvIGEgdGV4dCBmaWxlLiBJbiBhZGRpdGlvbiwgYnkgc2F2aW5nIHlvdXIga2V5d29yZCBtYXAgaW4gYSBWT1N2aWV3ZXIgbWFwIGZpbGUgKHVzaW5nIHRoZSDigJhTYXZl4oCZIGJ1dHRvbiBvbiB0aGUg4oCZRmlsZeKAmSB0YWIpLCB0aGUgcmVsYXRpb25zIGJldHdlZW4ga2V5d29yZHMgYW5kIGNsdXN0ZXJzIGNhbiBiZSBvYnRhaW5lZC4gQnkgY29tYmluaW5nIHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSB0d28gZmlsZXMsIGl0IGlzIHBvc3NpYmxlIHRvIGZpbmQgb3V0IHdoaWNoIGRvY3VtZW50cyBiZWxvbmcgdG8gd2hpY2ggY2x1c3RlcnMuIEhvd2V2ZXIsIHRoaXMgcmVxdWlyZXMgc29tZSBkYXRhIGFuYWx5c2lzIHRvIGJlIHBlcmZvcm1lZCBvdXRzaWRlIFZPU3ZpZXdlci4gVW5mb3J0dW5hdGVseSwgbm8gZWFzaWVyIHNvbHV0aW9uIGlzIGF2YWlsYWJsZSBhdCB0aGUgbW9tZW50LgpgYGAKCmBgYApJZiB5b3UgaGF2ZSBtdWx0aXBsZSBXZWIgb2YgU2NpZW5jZSBmaWxlcyAoaW4gdGFiLWRlbGltaXRlZCBmb3JtYXQpLCBpdCBtYXkgYmUgYmVzdCB0byBtZXJnZSB0aGUgZmlsZXMgaW50byBhIHNpbmdsZSBmaWxlLiBUaGUgZmlyc3QgbGluZSBpbiB0aGlzIGZpbGUgd2lsbCBiZSBhIGhlYWRlciBsaW5lLiBUaGUgc2Vjb25kIGxpbmUgd2lsbCBiZSBkb2N1bWVudCAxLCB0aGUgdGhpcmQgbGluZSB3aWxsIGJlIGRvY3VtZW50IDIsIGFuZCBzbyBvbi4KYGBgCgoKYGBge3J9CmNvbWJpbmVkX1BlZENlcjNKb3VybmFsICU+JSAKICAgIGZpbHRlcihjbHVzdGVyID09IDEpICU+JSAKICAgIGphbml0b3I6OnRhYnlsKGtleXdvcmROQU1FLCBjbHVzdGVyKSAlPiUKICBqYW5pdG9yOjphZG9ybl9wY3RfZm9ybWF0dGluZyhyb3VuZGluZyA9ICdoYWxmIHVwJywgZGlnaXRzID0gMSkgJT4lCiAga25pdHI6OmthYmxlKCkKICAgIApgYGAKCgoKLSBpbXBvcnQgV09TIGRhdGEgaW50byBSCgpodHRwczovL2dpdGh1Yi5jb20vamVzc2ljYWJleWVyL3dvc3IKCmh0dHBzOi8vY3Jhbi5yLXByb2plY3Qub3JnL3dlYi9wYWNrYWdlcy93b3NyL3dvc3IucGRmCgpodHRwczovL2dpdGh1Yi5jb20vYWxiZXJ0by1tYXJ0aW4vcmVhZC53b3MuUgoKaHR0cHM6Ly9jcmFuLnJzdHVkaW8uY29tL3dlYi9wYWNrYWdlcy9iaWJsaW9tZXRyaXgvdmlnbmV0dGVzL2JpYmxpb21ldHJpeC12aWduZXR0ZS5odG1sCgpjb252ZXJ0MmRmKGZpbGUsIGRic291cmNlID0gImlzaSIsIGZvcm1hdCA9ICJwbGFpbnRleHQiKQoKCgoKCgoKCg==
@@ -1804,6 +2184,29 @@