{"version":3,"names":[],"mappings":"","sources":["detalhes-insight.js"],"sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i\\n

teste

\\n \\n ',\n methods: {\n getList: function getList(lib) {\n return $pnp.sp.web.getList(lib);\n },\n getAreas: function getAreas() {\n var _this = this;\n\n return this.getList(this.areasURL).items.select('Title, TitleEN, Resumo, ResumoEn').top(100).orderBy('Title', true).get().then(function (areas) {\n areas = areas.filter(function (areas) {\n var areasCurrentNoticia = _this.areasNoticia.map(function (area) {\n debugger;\n area.Id == areas.Id;\n return areasCurrentNoticia;\n });\n });\n\n Vue.set(_this, 'areasRelacionadas', areasCurrentNoticia);\n });\n }\n },\n created: function created() {\n this.getAreas();\n }\n});\n\n},{}],2:[function(require,module,exports){\n\"use strict\";\n\n$pnp.setup({\n headers: {\n \"Accept\": \"application/json; odata=verbose\"\n }\n});\n\nrequire(\"../../mixins/translate\");\nrequire(\"./profissionais-relacionados-noticia\");\nrequire('../shareSX');\nrequire('./disclaimer');\nrequire('./areas-relacionadas');\n\nVue.config.devtools = true;\n\nVue.component(\"detalhes-insight\", {\n mixins: [translateMixin],\n data: function data() {\n var listName = \"Noticias\";\n return {\n listName: listName,\n anexosURL: _spPageContextInfo.webServerRelativeUrl + \"Coletaneaminerario\",\n listURL: _spPageContextInfo.webServerRelativeUrl + \"lists/\" + listName,\n insight: [],\n allAnexos: [],\n byLocale: null,\n moment: moment,\n isLoading: false,\n anexosItem: [],\n isMobile: window.innerWidth < 996\n };\n },\n\n template: \"\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n\\n \\n
\\n
\\n \",\n methods: {\n truncateString: function truncateString(value, size) {\n if (value.length > size) {\n return value.slice(0, size).concat('...');\n }\n },\n getLinkUrl: function getLinkUrl(url) {\n return \"\" + _spPageContextInfo.siteAbsoluteUrl + this.anexosURL + \"/\" + url;\n },\n getItem: function getItem() {\n var _this = this;\n\n this.isLoading = true;\n var currentURL = window.location;\n\n if (currentURL.hash) {\n currentURL = currentURL.href.split(/\\/cesconbarrieuinsights\\//gi).reverse()[0].split(\"?\")[0].split(\"#\")[0];\n } else {\n currentURL = currentURL.href.split(/\\/cesconbarrieuinsights\\//gi).reverse()[0].split(\"?\")[0];\n }\n return $pnp.sp.web.getList(this.listURL).items.select(\"*, AuxCategoria/TitleEN, AuxCategoria/Title, Idioma/Decimal, DisclaimerCheck, AuxAreaAtuacao/Title, AuxAreaAtuacao/TitleEN\").filter(\"SeoURL eq '\" + currentURL + \"' and Idioma/Decimal eq '\" + CurrentLanguageDecimal + \"'\").expand(\"AuxCategoria, Idioma, AuxAreaAtuacao, AttachmentFiles\").top(1).get().then(function (result) {\n Vue.set(_this, 'insight', result);\n _this.getAllItems();\n _this.getDocs(result[0].Id);\n _this.isLoading = false;\n }).catch(function (err) {\n _this.isLoading = false;\n _this.threatError(err, 'Erro ao carregar informações do Insight.');\n });\n },\n getAllItems: function getAllItems() {\n var _this2 = this;\n\n return $pnp.sp.web.getList(this.anexosURL).items.orderBy(\"Title\").expand(\"FieldValuesAsHtml\").select(\"*, FieldValuesAsHtml/FileLeafRef, Versao\").filter(\"Versao eq '\" + this.byLocale + \"'\").get().then(function (result) {\n var newResultBaseadInFilter = [];\n if (result) result.map(function (item) {\n if (item.NoticiaId == _this2.insight[0].Id) {\n newResultBaseadInFilter.push(item);\n }\n });\n result = newResultBaseadInFilter;\n Vue.set(_this2, 'allAnexos', result);\n });\n },\n getTitle: function getTitle() {\n var titleInsight = $(\".box-area h2\").text();\n document.title = titleInsight + '| Cescon Barrieu';\n\n if (!this.isMobile) {\n setTimeout(function () {\n var alturaBoxContent = $(\".disp-customizada .box-area\").innerHeight();\n $(\".disp-customizada .box-area\").height(alturaBoxContent - 150);\n }, 500);\n }\n },\n getDocs: function getDocs(id) {\n var _this3 = this;\n\n var item = $pnp.sp.web.getList(this.listURL).items.getById(id);\n item.attachmentFiles.get().then(function (anexos) {\n Vue.set(_this3, 'anexosItem', anexos);\n });\n },\n getAnexo: function getAnexo(linkDoc) {\n if (linkDoc) {\n return linkDoc;\n } else {\n return this.isEnglish ? this.insight[0].LinkDocumentoAntigoEN : this.insight[0].LinkDocumentoAntigo;\n }\n },\n applyShare: function applyShare() {\n var title = $('.share-title').text() || document.title;\n var content = $(\"[class*='ExternalClass']\").text() || document.title;\n $('.share').shareSX({\n showLabels: true,\n showIcons: true,\n showLabelShare: false,\n title: title,\n url: window.location.href,\n content: content,\n types: ['facebook', 'twitter', 'linkedin', 'whatsapp', 'email']\n });\n },\n threatError: function threatError(err, msg) {}\n },\n created: function created() {\n if (this.isEnglish) {\n moment.locale('en-US');\n Vue.set(this, \"byLocale\", \"en\");\n } else {\n moment.locale(\"pt-BR\");\n Vue.set(this, \"byLocale\", \"pt-br\");\n }\n this.getItem().then(this.applyShare).then(this.getTitle);\n }\n});\n\nvar app = new Vue({\n el: \"#detalhes-insight\",\n template: \"\"\n});\n\n},{\"../../mixins/translate\":7,\"../shareSX\":5,\"./areas-relacionadas\":1,\"./disclaimer\":3,\"./profissionais-relacionados-noticia\":4}],3:[function(require,module,exports){\n'use strict';\n\nrequire('../../mixins/translate');\nVue.component('disclaimer', {\n mixins: [translateMixin],\n data: function data() {\n return {\n listURL: _spPageContextInfo.webServerRelativeUrl + '/lists/Disclaimer',\n disclaimer: {}\n };\n },\n\n template: '\\n \\n
\\n
\\n

{{ isEnglish ? disclaimer.DisclaimerEN : disclaimer.Disclaimer }}

\\n
\\n
\\n ',\n methods: {\n getDisclaimer: function getDisclaimer() {\n var _this = this;\n\n return $pnp.sp.web.getList(this.listURL).items.select('Disclaimer, DisclaimerEN').top(1).get().then(function (result) {\n Vue.set(_this, 'disclaimer', result[0]);\n });\n }\n },\n created: function created() {\n this.getDisclaimer();\n }\n});\n\n},{\"../../mixins/translate\":7}],4:[function(require,module,exports){\n\"use strict\";\n\n$pnp.setup({\n headers: {\n \"Accept\": \"application/json; odata=verbose\"\n }\n});\n\nrequire(\"../../mixins/translate\");\nvar spMixin = require('../../mixins/sp-mixin');\nVue.component('profissionais-relacionados-noticia', {\n mixins: [translateMixin, spMixin],\n props: {\n id: { default: 0 }\n },\n data: function data() {\n return {\n listURL: _spPageContextInfo.siteServerRelativeUrl + \"lists/Noticias\",\n profissionaisRelacionados: []\n };\n },\n\n template: \"\\n \\n \\n \\n \",\n methods: {\n getData: function getData() {\n var _this = this;\n\n var web = new $pnp.Web(_spPageContextInfo.siteAbsoluteUrl);\n return web.getList(this.listURL).items.expand(\"AuxProfissionais\").filter(\"SeoURL eq '\" + this.id + \"'\").select(\"*, AuxProfissionais/Id, AuxProfissionais/FullName, AuxProfissionais/SeoURL\").top(5000).get().then(function (noticia) {\n noticia = noticia[0];\n var profissionalRelacionado = noticia.AuxProfissionais.results;\n // mapeia a array de profissionalRelacionado para obter as informações adicionais do profissional\n var promises = profissionalRelacionado.map(function (item) {\n return _this.getInfosProfissional(item).then(function (infoProfissional) {\n item.AuxTipoProfissional = infoProfissional;\n });\n });\n // espera todas as promessas serem resolvidas antes de continuar\n return Promise.all(promises).then(function () {\n Vue.set(_this, 'profissionaisRelacionados', profissionalRelacionado);\n });\n }).then(this.applyEvents);\n },\n getInfosProfissional: function getInfosProfissional(item) {\n return $pnp.sp.web.getList(_spPageContextInfo.siteServerRelativeUrl + \"lists/profissionais\").items.getById(item.Id).select('AuxTipoProfissional/Title, AuxTipoProfissional/TitleEN').expand(\"AuxTipoProfissional\").get().then(function (results) {\n if (results.AuxTipoProfissional.Title && results.AuxTipoProfissional.TitleEN) {\n return {\n Title: results.AuxTipoProfissional.Title,\n TitleEN: results.AuxTipoProfissional.TitleEN\n };\n }\n });\n },\n getDispProfissional: function getDispProfissional(seoURL) {\n return _spPageContextInfo.siteAbsoluteUrl + \"/advogados/\" + seoURL;\n },\n getPicture: function getPicture(img) {\n if (img) {\n return \"\" + img;\n }\n }\n },\n created: function created() {\n this.getData();\n }\n});\n\n},{\"../../mixins/sp-mixin\":6,\"../../mixins/translate\":7}],5:[function(require,module,exports){\n'use strict';\n\n//Plugin de compartilhamento nas redes sociais\nvar ie = window.navigator.userAgent.toString().indexOf('MSIE 9.0') > -1 || window.navigator.userAgent.toString().indexOf('MSIE 10.0') > -1;\njQuery.fn.extend({\n shareSX: function shareSX(option) {\n //if(!option.types.length || !option.url){return false;}\n var isEnglish = CurrentLanguageLCID == 'en-US',\n isMobile = window.innerWidth <= 735,\n titlePopup = '',\n titleEmail = option.title,\n showLabelShare = option.showLabelShare;\n\n var html = '\\n \\n ' + (isEnglish ? 'Share' : 'Compartilhe') + '\\n \\n ';\n //apendando o html no seletor\n\n $(this).html(html);\n\n //montando url's das redes;\n function getShareLink(type) {\n var link = \"\";\n var emailHref = \"\";\n\n //verificando se o link é externo ou relativo;\n if ((option.url || '').indexOf('http') > -1) {\n option.url = option.url;\n } else {\n option.url = _spPageContextInfo.webAbsoluteUrl + option.url;\n }\n\n if (type.toLowerCase() == \"facebook\") {\n if (isMobile) {\n link = 'https://m.facebook.com/sharer/sharer.php?u=' + option.url;\n } else {\n link = 'https://facebook.com/sharer/sharer.php?u=' + option.url;\n }\n } else if (type.toLowerCase() == \"twitter\") {\n if (isMobile) {\n link = 'http://twitter.com/intent/tweet?text=' + _spPageContextInfo.webTitle + ' - ' + option.title + ': ' + option.url;\n } else {\n\n link = 'http://twitter.com/home?status=' + _spPageContextInfo.webTitle + ' - ' + option.title.replace(/&/gim, '%26') + ': ' + option.url.replace(/&/gim, '%26');\n }\n } else if (type.toLowerCase() == \"linkedin\") link = 'https://www.linkedin.com/shareArticle?url=' + option.url.replace(/&/gim, '%26').replace(/=/g, '/') + '&title=' + option.title.replace(/&/gim, '%26');else if (type.toLowerCase() == \"google-plus\") link = 'https://plusone.google.com/_/+1/confirm?hl=pt&url=' + option.url + '&title=' + option.title;else if (type.toLowerCase() == \"whatsapp\") {\n if (isMobile) {\n link = 'whatsapp://send?text=' + encodeURIComponent('' + _spPageContextInfo.webTitle + ' - ' + decodeURIComponent(option.title) + ': ' + option.url);\n } else {\n link = 'https://web.whatsapp.com/send?text=' + encodeURIComponent('' + _spPageContextInfo.webTitle + ' - ' + decodeURIComponent(option.title) + ': ' + option.url);\n }\n //Share via Whatsapp web\n\n } else if (type.toLowerCase() == \"email\") {\n link = getMailToUrl(option.content, titleEmail, encodeURIComponent(option.url));\n }\n return link;\n }\n }\n});\n\n//função para abrir a modal e passar lagura e altura para centralizar\nwindow.PopupCenterDual = function (url, title, w, h, element) {\n if (ie) {\n element.removeAttr('href');\n }\n // Fixes dual-screen position Most browsers Firefox\n var dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left;\n var dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top;\n var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;\n var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;\n\n var left = width / 2 - w / 2 + dualScreenLeft;\n var top = height / 2 - h / 2 + dualScreenTop;\n var newWindow = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left + 'toolbar=no, scrollbars=no, resizable=no, location=no, status=no');\n\n // Puts focus on the newWindow\n /*if (window.focus) {\r\n newWindow.focus();\r\n }*/\n return false;\n};\n\nfunction getMailToUrl(conteudo, titulo, urlShare) {\n var url = \"\";\n var body = '';\n var encodedLineBreak = \"%0A%0A\";\n conteudo = conteudo || titulo;\n titulo = titulo.replace(/[&]/g, '%26');\n\n body = getEmailBody(parseMailBodyContent(conteudo)) + makeUrlAbsolute(urlShare).replace(/&/gim, '%26').replace(/\"/gim, '%22');\n\n return \"mailto:?subject=\" + titulo + \"&body=\" + body;\n}\n\nfunction makeUrlAbsolute(url) {\n if (!url) return window.location.href;\n\n if (url.indexOf('http') > -1) {\n return url;\n } else {\n return _spPageContextInfo.webAbsoluteUrl + encodeURI(url);\n }\n}\n\nfunction parseMailBodyContent(bodyContent) {\n bodyContent = '
' + bodyContent + '
';\n\n var domConteudo = $(bodyContent.replace(/
/g, '\\n
'));\n\n domConteudo.find(\"p\").each(function () {\n var htmlSemQuebra = $(this).html().replace(/\\n/g, '').replace(/
/g, '\\n');\n $(this).html(htmlSemQuebra);\n });\n\n bodyContent = domConteudo.text().replace(/\\n\\n/g, \"\\n\");\n bodyContent = $.trim(domConteudo.text());\n return bodyContent;\n}\n\nfunction getEmailBody(conteudo) {\n var encodedLineBreak = \"%0A%0A\";\n var textoInicio = \"Um conteúdo do site \" + _spPageContextInfo.webTitle + \" foi enviado para você:\";\n var textoLink = \"Clique para ler o conteúdo na íntegra: \";\n var body = '';\n conteudo = conteudo;\n\n if (CurrentLanguageLCID == \"en-US\") {\n textoLink = \"Please click here to access full content: \";\n textoInicio = \"A content from the \" + _spPageContextInfo.webTitle + \" website has been sent to you:\";\n }\n\n conteudo = conteudo.replace(/[&]/g, '%26').replace(/\"/gim, '%22');\n body = textoInicio + encodedLineBreak + truncateText(conteudo, 335) + encodedLineBreak + textoLink;\n\n return body;\n}\n\nfunction truncateText(text, length) {\n if (text.length > length) {\n return text.substring(0, length - 3) + \"...\";\n } else {\n return text;\n }\n}\n\n},{}],6:[function(require,module,exports){\n\"use strict\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar translateMixin = require('./translate');\n\nmodule.exports = {\n mixins: [translateMixin],\n methods: {\n threatError: function threatError(msg, data) {\n console.error(arguments);\n var defaultMsg = !this.isEnglish ? \"Ocorreu um erro\" : \"An error has ocurred\";\n\n return swal({\n title: \"Erro\",\n text: msg || defaultMsg,\n type: \"error\"\n });\n },\n clone: function clone(obj) {\n if (null == obj || \"object\" != (typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj))) return obj;\n return JSON.parse(JSON.stringify(obj));\n },\n getEmptyItem: function getEmptyItem(listFields) {\n return this.clone(listFields);\n },\n validateRequiredField: function validateRequiredField(fields) {\n return !Object.keys(fields).some(function (key) {\n return !fields[key].Value && fields[key].Required;\n });\n },\n getSEOUrl: function getSEOUrl(parametro, url) {\n // parametro - caso esteja sem SEOUrl\n // url - url da página já com SEOUrl, já que tudo depois dela é parametro de SEOUrl ('/linkdapagina/')\n return $pnp.util.getUrlParamByName(parametro) || location.href.split(\"/\" + url + \"/\").reverse()[0].split('#')[0].split('?')[0];\n },\n getInvalidFields: function getInvalidFields(fields) {\n var _this = this;\n\n var msgsErro = [];\n var msgObrigatorio = false;\n\n fields = Object.keys(fields).filter(function (key) {\n var field = fields[key];\n if (field.InternalName === 'Email' && field.Value) {\n var emailValido = _this.validateEmail(field.Value);\n if (!emailValido) {\n msgsErro.push((!_this.isEnglish ? 'O e-mail' : 'The email') + \" \" + field.Value + \" \" + (!_this.isEnglish ? 'é inválido' : 'is invalid'));\n }\n return !emailValido;\n } else if (field.Required) {\n var validation = false;\n if (field.TypeAsString === 'LookupMulti') {\n validation = !(field.Value || []).length;\n } else {\n validation = !field.Value;\n }\n if (validation && msgObrigatorio == false) {\n msgObrigatorio = true;\n //msgsErro.push(`O campo ${field.Title} é obrigatório`)\n msgsErro.push(!_this.isEnglish ? 'Preencha os campos obrigatórios' : 'Fill in the required fields');\n }\n return validation;\n }\n });\n if (msgObrigatorio >= 1) {\n //alert('Preencha os campos obrigatórios'); \n\n }\n return {\n msgsErro: msgsErro,\n fields: fields\n };\n },\n exportVCard: function exportVCard(ID) {\n var F = document.forms[0];\n F.action = \"/_layouts/15/SimbioX.SP2013.SPExporter/ExportToVCard.ashx\";\n F.__VIEWSTATE.name = 'NOVIEWSTATE';\n F.__VIEWSTATE.value = \"List:Profissionais;ID:\" + ID + \";ListURL:;\";\n F.method = 'POST';\n F.onsubmit = function () {};\n F.submit();\n },\n exportPDF: function exportPDF(element, fileName) {\n $(\"#\" + element).show();\n\n /*var cache_width = $(element).width(); //Criado um cache do CSS\r\n var a4 =[ 595.28, 841.89]; // Widht e Height de uma folha a4\r\n // Setar o width da div no formato a4\r\n $(element).width((a4[0]*1.33333) -80).css('max-width','none');\r\n // Aqui ele cria a imagem e cria o pdf\r\n html2canvas(document.querySelector(element)).then(canvas => {\r\n document.body.appendChild(canvas);\r\n var img = canvas.toDataURL(\"image/png\",1.0); \r\n var doc = new jsPDF({unit:'px', format:'a4'});\r\n doc.addImage(img, 'JPEG', 20, 20);\r\n doc.save(`Download de PDF - ${fileName}.pdf`);\r\n //Retorna ao CSS normal\r\n $(element).width(cache_width);\r\n $(element).hide()\r\n });*/\n\n var quotes = document.getElementById(element);\n html2canvas(quotes).then(function (canvas) {\n //! MAKE YOUR PDF\n var pdf = new jsPDF('p', 'pt', 'letter');\n\n for (var i = 0; i <= quotes.clientHeight / 980; i++) {\n //! This is all just html2canvas stuff\n var srcImg = canvas;\n var sX = 0;\n var sY = 980 * i; // start 980 pixels down for every new page\n var sWidth = 980;\n var sHeight = 980;\n var dX = 0;\n var dY = 0;\n var dWidth = 980;\n var dHeight = 980;\n\n window.onePageCanvas = document.createElement(\"canvas\");\n onePageCanvas.setAttribute('width', 980);\n onePageCanvas.setAttribute('height', 980);\n var ctx = onePageCanvas.getContext('2d');\n // details on this usage of this function: \n // https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Using_images#Slicing\n ctx.drawImage(srcImg, sX, sY, sWidth, sHeight, dX, dY, dWidth, dHeight);\n\n // document.body.appendChild(canvas);\n var canvasDataURL = onePageCanvas.toDataURL(\"image/png\", 1.0);\n\n var width = onePageCanvas.width;\n var height = onePageCanvas.clientHeight;\n\n //! If we're on anything other than the first page,\n // add another page\n if (i > 0) {\n pdf.addPage(612, 791); //8.5\" x 11\" in pts (in*72)\n }\n //! now we declare that we're working on that page\n pdf.setPage(i + 1);\n //! now we add content to that page!\n pdf.addImage(canvasDataURL, 'PNG', 10, 10, width * .62, height * .62);\n }\n //! after the for loop is finished running, we save the pdf.\n pdf.save(fileName + \".pdf\");\n $(\"#\" + element).hide();\n });\n },\n validateEmail: function validateEmail() {\n var email = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n var usuario = email.substring(0, email.indexOf(\"@\"));\n var dominio = email.substring(email.indexOf(\"@\") + 1, email.length);\n\n if (usuario.length >= 1 && dominio.length >= 3 && usuario.search(\"@\") == -1 && dominio.search(\"@\") == -1 && usuario.search(\" \") == -1 && dominio.search(\" \") == -1 && dominio.search(\".\") != -1 && dominio.indexOf(\".\") >= 1 && dominio.lastIndexOf(\".\") < dominio.length - 1) {\n return true;\n } else {\n return false;\n }\n }\n },\n data: function data() {\n return {\n letrasAlfabeto: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'],\n meses: [{\n Title: 'Janeiro',\n TitleEN: 'January'\n }, {\n Title: \"Fevereiro\",\n TitleEN: \"February\"\n }, {\n Title: \"Mar\\xE7o\",\n TitleEN: \"March\"\n }, {\n Title: \"Abril\",\n TitleEN: \"April\"\n }, {\n Title: \"Maio\",\n TitleEN: \"May\"\n }, {\n Title: \"Junho\",\n TitleEN: \"June\"\n }, {\n Title: \"Julho\",\n TitleEN: \"July\"\n }, {\n Title: \"Agosto\",\n TitleEN: \"August\"\n }, {\n Title: \"Setembro\",\n TitleEN: \"September\"\n }, {\n Title: \"Outubro\",\n TitleEN: \"October\"\n }, {\n Title: \"Novembro\",\n TitleEN: \"November\"\n }, {\n Title: \"Dezembro\",\n TitleEN: \"December\"\n }]\n };\n }\n};\n\n},{\"./translate\":7}],7:[function(require,module,exports){\n\"use strict\";\n\nwindow.translateMixin = {\n methods: {\n changeLanguage: function changeLanguage(value) {\n if (CurrentLanguageDecimal == value) {\n return null;\n }\n\n var today = new Date();\n var oneYear = new Date(today.getTime() + 365 * 24 * 60 * 60 * 1000);\n var url = window.location.href;\n document.cookie = \"lcid=\" + value + \";path=/;expires=\" + oneYear.toGMTString();\n location.href = url;\n location.reload();\n },\n changePageTitle: function changePageTitle() {\n var _this = this;\n\n return $pnp.sp.web.getList(this.libraryPagesURL).items.getById(this.idCurrentPage).select(\"Id, Title, TitleEN, Descricao, DescricaoEN, IsDisp\").get().then(function (page) {\n Vue.set(_this, 'infosCurrentPage', page);\n if (!page.IsDisp) {\n\n document.title = _this.isEnglish ? 'Loading...' : 'Carregando...';\n if (_this.isEnglish) {\n if (page.Title == null) {\n document.title = _this.currentTitleBrowser;\n } else {\n document.title = page.TitleEN + \" | \" + _this.currentTitleBrowser;\n }\n } else {\n document.title = page.Title + \" | \" + _this.currentTitleBrowser;\n }\n _this.loadedInfosPage = true;\n }\n }).catch(function (err) {\n console.error(\"\" + (err - 'Erro ao carregar informações da biblioteca de páginas.'));\n });\n }\n },\n data: function data() {\n return {\n isEnglish: CurrentLanguageDecimal == 1033,\n currentLang: CurrentLanguageDecimal,\n libraryPagesURL: _spPageContextInfo.serverRequestPath.toLocaleLowerCase().match(/pages/i) ? '/pages' : 'paginas',\n idCurrentPage: _spPageContextInfo.pageItemId,\n infosCurrentPage: {},\n currentTitleBrowser: _spPageContextInfo.webTitle,\n loadedInfosPage: false\n };\n },\n created: function created() {\n if (this.idCurrentPage && !this.loadedInfosPage) {\n this.changePageTitle();\n }\n }\n};\n\n},{}]},{},[2])\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvanMvY29tcG9uZW50cy9pbnRlcm5hcy9hcmVhcy1yZWxhY2lvbmFkYXMuanMiLCJzcmMvanMvY29tcG9uZW50cy9pbnRlcm5hcy9kZXRhbGhlcy1pbnNpZ2h0LmpzIiwic3JjL2pzL2NvbXBvbmVudHMvaW50ZXJuYXMvZGlzY2xhaW1lci5qcyIsInNyYy9qcy9jb21wb25lbnRzL2ludGVybmFzL3Byb2Zpc3Npb25haXMtcmVsYWNpb25hZG9zLW5vdGljaWEuanMiLCJzcmMvanMvY29tcG9uZW50cy9zaGFyZVNYLmpzIiwic3JjL2pzL21peGlucy9zcC1taXhpbi5qcyIsInNyYy9qcy9taXhpbnMvdHJhbnNsYXRlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7QUNBQSxJQUFJLFNBQUosdUJBQW9DO0FBQ2hDLFFBRGdDLGtCQUN6QjtBQUNILGVBQU87QUFDSCxzQkFBYSxtQkFBbUIsb0JBQWhDLHVCQURHO0FBRUgsK0JBQW1CLEVBRmhCO0FBR0gsbUJBQU87QUFISixTQUFQO0FBS0gsS0FQK0I7O0FBUWhDLFdBQU87QUFDSCxzQkFBYztBQUNWLG9CQUFRO0FBREU7QUFEWCxLQVJ5QjtBQWFoQyx5RkFiZ0M7QUFrQmhDLGFBQVM7QUFDTCxlQURLLG1CQUNHLEdBREgsRUFDTztBQUNSLG1CQUFPLEtBQUssRUFBTCxDQUFRLEdBQVIsQ0FBWSxPQUFaLENBQW9CLEdBQXBCLENBQVA7QUFDSCxTQUhJO0FBSUwsZ0JBSkssc0JBSUs7QUFBQTs7QUFDTixtQkFBTyxLQUFLLE9BQUwsQ0FBYSxLQUFLLFFBQWxCLEVBQTRCLEtBQTVCLENBQ0YsTUFERSxxQ0FFRixHQUZFLENBRUUsR0FGRixFQUdGLE9BSEUsVUFHZSxJQUhmLEVBSUYsR0FKRSxHQUlJLElBSkosQ0FJUyxVQUFDLEtBQUQsRUFBVztBQUNuQix3QkFBUSxNQUFNLE1BQU4sQ0FBYSxVQUFDLEtBQUQsRUFBVztB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ekQsQ0FBK0QsUUFBL0QsSUFBMkUsUUFBM0UsR0FBc0YsU0FIcEc7QUFJSCwyQkFBZSxtQkFBbUIsVUFKL0I7QUFLSCw4QkFBa0IsRUFMZjtBQU1ILGlDQUFxQixtQkFBbUIsUUFOckM7QUFPSCw2QkFBaUI7QUFQZCxTQUFQO0FBU0gsS0FsRG1CO0FBbURwQixXQW5Eb0IscUJBbURWO0FBQ04sWUFBRyxLQUFLLGFBQUwsSUFBc0IsQ0FBQyxLQUFLLGVBQS9CLEVBQStDO0FBQzNDLGlCQUFLLGVBQUw7QUFDSDtBQUNKO0FBdkRtQixDQUF4QiIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLG4sdCl7ZnVuY3Rpb24gbyhpLGYpe2lmKCFuW2ldKXtpZighZVtpXSl7dmFyIGM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighZiYmYylyZXR1cm4gYyhpLCEwKTtpZih1KXJldHVybiB1KGksITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIraStcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIHA9bltpXT17ZXhwb3J0czp7fX07ZVtpXVswXS5jYWxsKHAuZXhwb3J0cyxmdW5jdGlvbihyKXt2YXIgbj1lW2ldWzFdW3JdO3JldHVybiBvKG58fHIpfSxwLHAuZXhwb3J0cyxyLGUsbix0KX1yZXR1cm4gbltpXS5leHBvcnRzfWZvcih2YXIgdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGk9MDtpPHQubGVuZ3RoO2krKylvKHRbaV0pO3JldHVybiBvfXJldHVybiByfSkoKSIsIlZ1ZS5jb21wb25lbnQoYGFyZWFzLXJlbGFjaW9uYWRhc2AsIHtcclxuICAgIGRhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYXJlYXNVUkw6IGAke19zcFBhZ2VDb250ZXh0SW5mby53ZWJTZXJ2ZXJSZWxhdGl2ZVVybH1saXN0cy9BcmVhc0F0dWFjYW9gLFxyXG4gICAgICAgICAgICBhcmVhc1JlbGFjaW9uYWRhczogW10sXHJcbiAgICAgICAgICAgIGFyZWFzOiBbXVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBwcm9wczoge1xyXG4gICAgICAgIGFyZWFzTm90aWNpYToge1xyXG4gICAgICAgICAgICBkZWZhdXQ6IG51bGxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8ZWxlbWVudD5cclxuICAgICAgICAgICAgPGgzPnRlc3RlPC9oMz5cclxuICAgICAgICA8L2VsZW1lbnQ+XHJcbiAgICBgLFxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIGdldExpc3QobGliKXtcclxuICAgICAgICAgICAgcmV0dXJuICRwbnAuc3Aud2ViLmdldExpc3QobGliKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldEFyZWFzKCl7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldExpc3QodGhpcy5hcmVhc1VSTCkuaXRlbXNcclxuICAgICAgICAgICAgICAgIC5zZWxlY3QoYFRpdGxlLCBUaXRsZUVOLCBSZXN1bW8sIFJlc3Vtb0VuYClcclxuICAgICAgICAgICAgICAgIC50b3AoMTAwKVxyXG4gICAgICAgICAgICAgICAgLm9yZGVyQnkoYFRpdGxlYCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIC5nZXQoKS50aGVuKChhcmVhcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGFyZWFzID0gYXJlYXMuZmlsdGVyKChhcmVhcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXJlYXNDdXJyZW50Tm90aWNpYSA9IHRoaXMuYXJlYXNOb3RpY2lhLm1hcCgoYXJlYSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEuSWQgPT0gYXJlYXMuSWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmVhc0N1cnJlbnROb3RpY2lhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgVnVlLnNldCh0aGlzLCAnYXJlYXNSZWxhY2lvbmFkYXMnLCBhcmVhc0N1cnJlbnROb3RpY2lhKVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY3JlYXRlZCgpIHtcclxuICAgICAgICB0aGlzLmdldEFyZWFzKClcclxuICAgIH0sXHJcbn0pIiwiJHBucC5zZXR1cCh7XHJcbiAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgXCJBY2NlcHRcIjogXCJhcHBsaWNhdGlvbi9qc29uOyBvZGF0YT12ZXJib3NlXCJcclxuICAgIH1cclxufSk7XHJcblxyXG5yZXF1aXJlKGAuLi8uLi9taXhpbnMvdHJhbnNsYXRlYCk7XHJcbnJlcXVpcmUoYC4vcHJvZmlzc2lvbmFpcy1yZWxhY2lvbmFkb3Mtbm90aWNpYWApO1xyXG5yZXF1aXJlKCcuLi9zaGFyZVNYJyk7XHJcbnJlcXVpcmUoJy4vZGlzY2xhaW1lcicpO1xyXG5yZXF1aXJlKCcuL2FyZWFzLXJlbGFjaW9uYWRhcycpO1xyXG5cclxuVnVlLmNvbmZpZy5kZXZ0b29scyA9IHRydWU7XHJcblxyXG5WdWUuY29tcG9uZW50KGBkZXRhbGhlcy1pbnNpZ2h0YCwge1xyXG4gICAgbWl4aW5zOiBbdHJhbnNsYXRlTWl4aW5dLFxyXG4gICAgZGF0YSgpIHtcclxuICAgICAgICB2YXIgbGlzdE5hbWUgPSBgTm90aWNpYXNgO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGxpc3ROYW1lOiBsaXN0TmFtZSxcclxuICAgICAgICAgICAgYW5leG9zVVJMOiBgJHtfc3BQYWdlQ29udGV4dEluZm8ud2ViU2VydmVyUmVsYXRpdmVVcmx9Q29sZXRhbmVhbWluZXJhcmlvYCxcclxuICAgICAgICAgICAgbGlzdFVSTDogYCR7X3NwUGFnZUNvbnRleHRJbmZvLndlYlNlcnZlclJlbGF0aXZlVXJsfWxpc3RzLyR7bGlzdE5hbWV9YCxcclxuICAgICAgICAgICAgaW5zaWdodDogW10sXHJcbiAgICAgICAgICAgIGFsbEFuZXhvczogW10sXHJcbiAgICAgICAgICAgIGJ5TG9jYWxlOiBudWxsLFxyXG4gICAgICAgICAgICBtb21lbnQ6IG1vbWVudCxcclxuICAgICAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgYW5leG9zSXRlbTogW10sXHJcbiAgICAgICAgICAgIGlzTW9iaWxlOiB3aW5kb3cuaW5uZXJXaWR0aCA8IDk5NlxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgPGVsZW1lbnQ+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpc3AtY3VzdG9taXphZGFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC1hcmVhIGNvbnRhaW5lciBjb2wtMTIgY29sLW1kLTEyIG0tYXV0byBwLTUgYmctd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tYmFjay1zaGFyZSByb3cganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIi9pbnNpZ2h0c1wiIGNsYXNzPVwiYmFjay1wYWdlLWxpbmtcIj4ge3sgaXNFbmdsaXNoID8gJ0JhY2snIDogJ1ZvbHRhcicgfX0gPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOSBjb2wtc20tNSB0ZXh0LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGFyZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImlzTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDI+QWd1YXJkZTwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlclwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkxvYWRpbmcuLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cD5DYXJyZWdhbmRvIGNvbnRlw7pkbzwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlLWlmPVwiaW5zaWdodC5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFyZWEtYXR1YWNhbyBmb250LXdlaWdodC1ib2xkZXIgdGV4dC1wcmltYXJ5IHRleHQtY2VudGVyIGQtYmxvY2sgbWItNFwiIHYtaWY9XCJpbnNpZ2h0WzBdLkF1eEFyZWFBdHVhY2FvLnJlc3VsdHMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaW5zaWdodFswXS5BdXhBcmVhQXR1YWNhby5yZXN1bHRzLmxlbmd0aCA+IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZm9yPVwiKGFyZWFzLCBpbmRleCkgaW4gaW5zaWdodFswXS5BdXhBcmVhQXR1YWNhby5yZXN1bHRzXCI+e3sgaXNFbmdsaXNoID8gYXJlYXMuVGl0bGVFTiA6IGFyZWFzLlRpdGxlIH19PHNwYW4gdi1pZj1cIihpbmRleCsxKSAhPSBpbnNpZ2h0WzBdLkF1eEFyZWFBdHVhY2FvLnJlc3VsdHMubGVuZ3RoXCI+LCA8L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXNFbmdsaXNoID8gaW5zaWdodFswXS5BdXhBcmVhQXR1YWNhby5yZXN1bHRzWzBdLlRpdGxlRU4gOiBpbnNpZ2h0WzBdLkF1eEFyZWFBdHVhY2FvLnJlc3VsdHNbMF0uVGl0bGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgyPnt7IGlzRW5nbGlzaCA/IGluc2lnaHRbMF0uVGl0bGVFTiA6IGluc2lnaHRbMF0uVGl0bGUgfX08L2gyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZSB0ZXh0LWNlbnRlciBkLWJsb2NrIG1iLTMgbXQtMyB0ZXh0LXVwcGVyY2FzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZlcnNpb249XCIxLjFcIiBpZD1cInN2Zy1jYWxlbmRhci1pY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHg9XCIwcHhcIiB5PVwiMHB4XCIgdmlld0JveD1cIjAgMCAxOC4xIDIwLjFcIiBzdHlsZT1cImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTguMSAyMC4xO1wiIHhtbDpzcGFjZT1cInByZXNlcnZlXCI+PHBhdGggZD1cIk00LDloNXY1SDQgTTE2LDE4SDJWN2gxNCBNMTYsMmgtMVYwaC0ydjJINVYwSDN2MkgyQzAuOSwyLDAsMi45LDAsNHYxNGMwLDEuMSwwLjksMiwyLDJoMTRjMS4xLDAsMi0wLjksMi0yVjRDMTgsMi45LDE3LjEsMiwxNiwyelwiPjwvcGF0aD48L3N2Zz4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgdi1pZj1cImluc2lnaHQuQXV4Q2F0ZWdvcmlhXCI+e3sgaXNFbmdsaXNoID8gaW5zaWdodFswXS5BdXhDYXRlZ29yaWEucmVzdWx0c1swXS5UaXRsZUVOIDogaW5zaWdodFswXS5BdXhDYXRlZ29yaWEucmVzdWx0c1swXS5UaXRsZSB9fSAtIDwvc3Ryb25nPjxzcGFuPnt7IG1vbWVudChpbnNpZ2h0WzBdLkRhdGFQdWJsaWNhY2FvKS5mb3JtYXQoJ01NTU0gREQsIFlZWVknKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzPnt7IGlzRW5nbGlzaCA/IGluc2lnaHRbMF0uUmVzdW1vRU4gOiBpbnNpZ2h0WzBdLlJlc3VtbyB9fTwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCJpbnNpZ2h0WzBdLkF1eEFyZWFBdHVhY2FvLnJlc3VsdHMubGVuZ3RoID8gJ3JvdycgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IDpjbGFzcz1cImluc2lnaHRbMF0uQXV4QXJlYUF0dWFjYW8ucmVzdWx0cy5sZW5ndGggPyAnY29sLXNtLTEyJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdW1vLWRldGFsaGVzXCIgdi1odG1sPVwiaXNFbmdsaXNoID8gaW5zaWdodFswXS5EZXNjcmljYW9FTiA6IGluc2lnaHRbMF0uRGVzY3JpY2FvXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFxdWkgZXN0YSBlbnTDo28gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cImFsbEFuZXhvcy5sZW5ndGggXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVsLWFsbC1pdGVtcyByb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWZvcj1cIml0ZW0gaW4gYWxsQW5leG9zXCIgdi1iaW5kOmtleT1cIml0ZW1cIiBjbGFzcz1cImNvbC1zbS0zIG1iLTMganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiaXRlbS5Ob3RpY2lhSWQgPT0gaW5zaWdodFswXS5JZFwiIGNsYXNzPVwiYm94LWFsbC1pdGVtcyBib3JkZXIgcm91bmRlZCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgOmhyZWY9XCJnZXRMaW5rVXJsKGl0ZW0uRmllbGRWYWx1ZXNBc0h0bWwuRmlsZUxlYWZSZWYpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBkZi1idXR0b24tbmV3IHAtM1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0aXRsZT1cIml0ZW0uVGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZlcnNpb249XCIxLjFcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwic3ZnLXBkZi1pY29uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg9XCIwcHhcIiB5PVwiMHB4XCIgdmlld0JveD1cIjAgMCA3NC40IDkwLjNcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA3NC40IDkwLjM7XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNjIuMSwxOC43djE2LjloNC42VjE2LjljMC0wLjgtMC40LTEuNS0wLjktMi4xbC0xNS43LTE0Yy0wLjYtMC41LTEuMy0wLjctMi0wLjdIM0MxLjMsMCwwLDEuMywwLDN2ODMuOWMwLDEuNywxLjMsMywzLDNoNjAuOWMxLjcsMCwzLTEuMywzLTNWNjQuOGgtNC44djIwLjNINC44VjQuOGg0Mi40djEzLjlINjIuMXpcIj48L3BhdGg+PGc+PHBhdGggZD1cIk00Mi4xLDQ2LjVjLTAuMy0wLjEtMC44LTAuMS0xLjctMC4xaC0xLjF2My4zaDEuM2MwLjksMCwxLjUtMC4xLDEuOS0wLjJjMC4zLTAuMSwwLjYtMC4zLDAuNy0wLjZjMC4yLTAuMywwLjMtMC42LDAuMy0wLjljMC0wLjQtMC4xLTAuOC0wLjQtMUM0Mi44LDQ2LjcsNDIuNCw0Ni42LDQyLjEsNDYuNXpcIj48L3BhdGg+PHBhdGggZD1cIk01NC4xLDQ3LjFjLTAuMy0wLjMtMC42LTAuNS0xLjEtMC41Yy0wLjMtMC4xLTEtMC4xLTEuOS0wLjFoLTEuMXY3LjdoMS44YzAuNywwLDEuMSwwLDEuNC0wLjFjMC40LTAuMSwwLjctMC4zLDAuOS0wLjVjMC4zLTAuMiwwLjUtMC42LDAuNi0xLjFjMC4yLTAuNSwwLjItMS4yLDAuMi0yLjFzLTAuMS0xLjYtMC4yLTIuMUM1NC42LDQ3LjcsNTQuNCw0Ny4zLDU0LjEsNDcuMXpcIj48L3BhdGg+PHBhdGggZD1cIk03MC42LDM4LjhIMzIuNGMtMS45LDAtMy40LDEuNS0zLjQsMy40djE2LjJjMCwxLjksMS41LDMuNCwzLjQsMy40aDM4LjFjMS45LDAsMy40LTEuNSwzLjQtMy40VjQyLjFDNzMuOSw0MC4zLDcyLjQsMzguOCw3MC42LDM4Ljh6IE00NS40LDQ5LjhjLTAuMywwLjUtMC42LDAuOS0xLDEuMWMtMC40LDAuMy0wLjgsMC41LTEuMiwwLjZjLTAuNiwwLjEtMS40LDAuMi0yLjQsMC4yaC0xLjV2NC40aC0yLjNWNDQuNWgzLjhjMS40LDAsMi40LDAuMSwyLjgsMC4yYzAuNywwLjIsMS4yLDAuNiwxLjcsMS4xYzAuNCwwLjYsMC43LDEuMywwLjcsMi4zQzQ1LjgsNDguNyw0NS43LDQ5LjMsNDUuNCw0OS44eiBNNTcuMSw1Mi45Yy0wLjMsMC44LTAuNywxLjUtMS4yLDIuMWMtMC40LDAuNC0xLDAuNy0xLjcsMC45Yy0wLjUsMC4yLTEuMiwwLjItMi4xLDAuMmgtNC40VjQ0LjVINTJjMSwwLDEuNywwLjEsMi4yLDAuMmMwLjcsMC4yLDEuMywwLjYsMS44LDEuMWMwLjUsMC41LDAuOSwxLjEsMS4xLDEuOWMwLjMsMC43LDAuNCwxLjcsMC40LDIuN0M1Ny41LDUxLjMsNTcuMyw1Mi4yLDU3LjEsNTIuOXogTTY2LjgsNDYuNGgtNS42djIuOEg2NnYyaC00Ljl2NC45aC0yLjNWNDQuNWg4VjQ2LjR6XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dHJ1bmNhdGVTdHJpbmcoaXRlbS5UaXRsZSwgMTApfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGFuZXhhciBkb2N1bWVudG8gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJpbnNpZ2h0WzBdLkFicmlyRG9jdW1lbnRvID09ICdTaW0nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b21fX2xlZnQgZnVsbFwiIHYtaWY9XCIoaXNFbmdsaXNoID8gaW5zaWdodFswXS5MaW5rRG9jdW1lbnRvRU4gOiBpbnNpZ2h0WzBdLkxpbmtEb2N1bWVudG8pIHx8IChpc0VuZ2xpc2ggPyBpbnNpZ2h0WzBdLkxpbmtEb2N1bWVudG9BbnRpZ29FTiA6IGluc2lnaHRbMF0uTGlua0RvY3VtZW50b0FudGlnbylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIDpocmVmPVwiZ2V0QW5leG8oaXNFbmdsaXNoID8gaW5zaWdodFswXS5MaW5rRG9jdW1lbnRvRU4gOiBpbnNpZ2h0WzBdLkxpbmtEb2N1bWVudG8pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBkZi1idXR0b25cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInN2Zy1wZGYtaWNvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4PVwiMHB4XCIgeT1cIjBweFwiIHZpZXdCb3g9XCIwIDAgNzQuNCA5MC4zXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNzQuNCA5MC4zO1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sOnNwYWNlPVwicHJlc2VydmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYyLjEsMTguN3YxNi45aDQuNlYxNi45YzAtMC44LTAuNC0xLjUtMC45LTIuMWwtMTUuNy0xNGMtMC42LTAuNS0xLjMtMC43LTItMC43SDNDMS4zLDAsMCwxLjMsMCwzdjgzLjljMCwxLjcsMS4zLDMsMywzaDYwLjljMS43LDAsMy0xLjMsMy0zVjY0LjhoLTQuOHYyMC4zSDQuOFY0LjhoNDIuNHYxMy45SDYyLjF6XCI+PC9wYXRoPjxnPjxwYXRoIGQ9XCJNNDIuMSw0Ni41Yy0wLjMtMC4xLTAuOC0wLjEtMS43LTAuMWgtMS4xdjMuM2gxLjNjMC45LDAsMS41LTAuMSwxLjktMC4yYzAuMy0wLjEsMC42LTAuMywwLjctMC42YzAuMi0wLjMsMC4zLTAuNiwwLjMtMC45YzAtMC40LTAuMS0wLjgtMC40LTFDNDIuOCw0Ni43LDQyLjQsNDYuNiw0Mi4xLDQ2LjV6XCI+PC9wYXRoPjxwYXRoIGQ9XCJNNTQuMSw0Ny4xYy0wLjMtMC4zLTAuNi0wLjUtMS4xLTAuNWMtMC4zLTAuMS0xLTAuMS0xLjktMC4xaC0xLjF2Ny43aDEuOGMwLjcsMCwxLjEsMCwxLjQtMC4xYzAuNC0wLjEsMC43LTAuMywwLjktMC41YzAuMy0wLjIsMC41LTAuNiwwLjYtMS4xYzAuMi0wLjUsMC4yLTEuMiwwLjItMi4xcy0wLjEtMS42LTAuMi0yLjFDNTQuNiw0Ny43LDU0LjQsNDcuMyw1NC4xLDQ3LjF6XCI+PC9wYXRoPjxwYXRoIGQ9XCJNNzAuNiwzOC44SDMyLjRjLTEuOSwwLTMuNCwxLjUtMy40LDMuNHYxNi4yYzAsMS45LDEuNSwzLjQsMy40LDMuNGgzOC4xYzEuOSwwLDMuNC0xLjUsMy40LTMuNFY0Mi4xQzczLjksNDAuMyw3Mi40LDM4LjgsNzAuNiwzOC44eiBNNDUuNCw0OS44Yy0wLjMsMC41LTAuNiwwLjktMSwxLjFjLTAuNCwwLjMtMC44LDAuNS0xLjIsMC42Yy0wLjYsMC4xLTEuNCwwLjItMi40LDAuMmgtMS41djQuNGgtMi4zVjQ0LjVoMy44YzEuNCwwLDIuNCwwLjEsMi44LDAuMmMwLjcsMC4yLDEuMiwwLjYsMS43LDEuMWMwLjQsMC42LDAuNywxLjMsMC43LDIuM0M0NS44LDQ4LjcsNDUuNyw0OS4zLDQ1LjQsNDkuOHogTTU3LjEsNTIuOWMtMC4zLDAuOC0wLjcsMS41LTEuMiwyLjFjLTAuNCwwLjQtMSwwLjctMS43LDAuOWMtMC41LDAuMi0xLjIsMC4yLTIuMSwwLjJoLTQuNFY0NC41SDUyYzEsMCwxLjcsMC4xLDIuMiwwLjJjMC43LDAuMiwxLjMsMC42LDEuOCwxLjFjMC41LDAuNSwwLjksMS4xLDEuMSwxLjljMC4zLDAuNywwLjQsMS43LDAuNCwyLjdDNTcuNSw1MS4zLDU3LjMsNTIuMiw1Ny4xLDUyLjl6IE02Ni44LDQ2LjRoLTUuNnYyLjhINjZ2MmgtNC45djQuOWgtMi4zVjQ0LjVoOFY0Ni40elwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAvYW5leGFyIGRvY3VtZW50byAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxkaXYgdi1pZj1cImluc2lnaHRbMF0uQXV4QXJlYUF0dWFjYW8ucmVzdWx0cy5sZW5ndGhcIiBjbGFzcz1cImNvbC1zbS0zIHNpZGViYXItcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxociAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFyZWFzLXJlbGFjaW9uYWRhc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcmVhcy1yZWxhY2lvbmFkYXMgOmFyZWFzLW5vdGljaWE9XCJpbnNpZ2h0WzBdLkF1eEFyZWFBdHVhY2FvLnJlc3VsdHNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pi0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaW5zaWdodFswXS5EaXNjbGFpbWVyQ2hlY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpc2NsYWltZXIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5Pb3BzITwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXJcIiB2LWlmPVwiaXNFbmdsaXNoXCI+VGhpcyBjb250ZW50IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGxhbmd1YWdlIHlvdSBzZWxlY3RlZC4gVmlldyB0aGUgbmV3cyBpbiB5b3V0IGxhbmd1YWdlIDxhIGNsYXNzPVwidGV4dC1wcmltYXJ5XCIgaHJlZj1cIi9pbnNpZ2h0c1wiIHRpdGxlPVwiY2xpY2tpbmcgaGVyZVwiPjx1PmNsaWNraW5nIGhlcmU8L3U+PC9hPi48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHYtZWxzZSBjbGFzcz1cInRleHQtY2VudGVyXCI+RXN0ZSBjb250ZcO6ZG8gbsOjbyBlc3TDoSBkaXNwb27DrXZlbCBubyBpZGlvbWEgc2VsZWNpb25hZG8uIFZlamEgYXMgbm90w61jaWFzIG5vIHNldSBpZGlvbWEgPGEgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIiBocmVmPVwiL2luc2lnaHRzXCIgdGl0bGU9XCJDbGlxdWUgYXF1aSBlIHZlamEgbWFpcyBjb250ZcO6ZG9zIG5vIHNldSBpZGlvbWEuXCI+PHU+Y2xpY2FuZG8gYXF1aTwvdT48L2E+PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9kaXY+ICBcclxuXHJcbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaW5zaWdodC5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDxwcm9maXNzaW9uYWlzLXJlbGFjaW9uYWRvcy1ub3RpY2lhIHYtaWY9XCJpbnNpZ2h0WzBdLkF1eFByb2Zpc3Npb25haXNJZC5yZXN1bHRzLmxlbmd0aCA+IDBcIiA6aWQ9XCJpbnNpZ2h0WzBdLlNlb1VSTFwiLz5cclxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZWxlbWVudD5cclxuICAgIGAsXHJcbiAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgdHJ1bmNhdGVTdHJpbmcodmFsdWUsIHNpemUpe1xyXG4gICAgICAgICAgICBpZih2YWx1ZS5sZW5ndGggPiBzaXplKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zbGljZSgwLCBzaXplKS5jb25jYXQoJy4uLicpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldExpbmtVcmwodXJsKXtcclxuICAgICAgICAgICAgcmV0dXJuIGAke19zcFBhZ2VDb250ZXh0SW5mby5zaXRlQWJzb2x1dGVVcmx9JHt0aGlzLmFuZXhvc1VSTH0vJHt1cmx9YFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0SXRlbSgpIHtcclxuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICB2YXIgY3VycmVudFVSTCA9IHdpbmRvdy5sb2NhdGlvbjtcclxuXHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50VVJMLmhhc2gpIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRVUkwgPSBjdXJyZW50VVJMLmhyZWYuc3BsaXQoL1xcL2Nlc2NvbmJhcnJpZXVpbnNpZ2h0c1xcLy9naSkucmV2ZXJzZSgpWzBdLnNwbGl0KGA/YClbMF0uc3BsaXQoYCNgKVswXVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudFVSTCA9IGN1cnJlbnRVUkwuaHJlZi5zcGxpdCgvXFwvY2VzY29uYmFycmlldWluc2lnaHRzXFwvL2dpKS5yZXZlcnNlKClbMF0uc3BsaXQoYD9gKVswXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiAkcG5wLnNwLndlYi5nZXRMaXN0KHRoaXMubGlzdFVSTCkuaXRlbXNcclxuICAgICAgICAgICAgICAgIC5zZWxlY3QoYCosIEF1eENhdGVnb3JpYS9UaXRsZUVOLCBBdXhDYXRlZ29yaWEvVGl0bGUsIElkaW9tYS9EZWNpbWFsLCBEaXNjbGFpbWVyQ2hlY2ssIEF1eEFyZWFBdHVhY2FvL1RpdGxlLCBBdXhBcmVhQXR1YWNhby9UaXRsZUVOYClcclxuICAgICAgICAgICAgICAgIC5maWx0ZXIoYFNlb1VSTCBlcSAnJHtjdXJyZW50VVJMfScgYW5kIElkaW9tYS9EZWNpbWFsIGVxICcke0N1cnJlbnRMYW5ndWFnZURlY2ltYWx9J2ApXHJcbiAgICAgICAgICAgICAgICAuZXhwYW5kKGBBdXhDYXRlZ29yaWEsIElkaW9tYSwgQXV4QXJlYUF0dWFjYW8sIEF0dGFjaG1lbnRGaWxlc2ApXHJcbiAgICAgICAgICAgICAgICAudG9wKDEpXHJcbiAgICAgICAgICAgICAgICAuZ2V0KCkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgVnVlLnNldCh0aGlzLCAnaW5zaWdodCcsIHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxJdGVtcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RG9jcyhyZXN1bHRbMF0uSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRocmVhdEVycm9yKGVyciwgJ0Vycm8gYW8gY2FycmVnYXIgaW5mb3JtYcOnw7VlcyBkbyBJbnNpZ2h0LicpXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0QWxsSXRlbXMoKXtcclxuICAgICAgICAgICAgcmV0dXJuICRwbnAuc3Aud2ViLmdldExpc3QodGhpcy5hbmV4b3NVUkwpLml0ZW1zICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAub3JkZXJCeShcIlRpdGxlXCIpXHJcbiAgICAgICAgICAgICAgICAuZXhwYW5kKFwiRmllbGRWYWx1ZXNBc0h0bWxcIilcclxuICAgICAgICAgICAgICAgIC5zZWxlY3QoXCIqLCBGaWVsZFZhbHVlc0FzSHRtbC9GaWxlTGVhZlJlZiwgVmVyc2FvXCIpXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGBWZXJzYW8gZXEgJyR7dGhpcy5ieUxvY2FsZX0nYClcclxuICAgICAgICAgICAgICAgIC5nZXQoKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdSZXN1bHRCYXNlYWRJbkZpbHRlciA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdCkgcmVzdWx0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihpdGVtLk5vdGljaWFJZCA9PSB0aGlzLmluc2lnaHRbMF0uSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Jlc3VsdEJhc2VhZEluRmlsdGVyLnB1c2goaXRlbSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ld1Jlc3VsdEJhc2VhZEluRmlsdGVyXHJcbiAgICAgICAgICAgICAgICAgICAgVnVlLnNldCh0aGlzLCAnYWxsQW5leG9zJywgcmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXRUaXRsZSgpIHtcclxuICAgICAgICAgICAgdmFyIHRpdGxlSW5zaWdodCA9ICQoYC5ib3gtYXJlYSBoMmApLnRleHQoKTtcclxuICAgICAgICAgICAgZG9jdW1lbnQudGl0bGUgPSB0aXRsZUluc2lnaHQgKyAnfCBDZXNjb24gQmFycmlldSc7XHJcblxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNNb2JpbGUpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBhbHR1cmFCb3hDb250ZW50ID0gJChgLmRpc3AtY3VzdG9taXphZGEgLmJveC1hcmVhYCkuaW5uZXJIZWlnaHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAkKGAuZGlzcC1jdXN0b21pemFkYSAuYm94LWFyZWFgKS5oZWlnaHQoKGFsdHVyYUJveENvbnRlbnQgLSAxNTApKVxyXG4gICAgICAgICAgICAgICAgfSwgNTAwKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXREb2NzKGlkKSB7XHJcbiAgICAgICAgICAgIHZhciBpdGVtID0gJHBucC5zcC53ZWIuZ2V0TGlzdCh0aGlzLmxpc3RVUkwpLml0ZW1zLmdldEJ5SWQoaWQpO1xyXG4gICAgICAgICAgICBpdGVtLmF0dGFjaG1lbnRGaWxlc1xyXG4gICAgICAgICAgICAgICAgLmdldCgpXHJcbiAgICAgICAgICAgICAgICAudGhlbigoYW5leG9zKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgVnVlLnNldCh0aGlzLCAnYW5leG9zSXRlbScsIGFuZXhvcylcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXRBbmV4byhsaW5rRG9jKSB7XHJcbiAgICAgICAgICAgIGlmIChsaW5rRG9jKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbGlua0RvY1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNFbmdsaXNoID8gdGhpcy5pbnNpZ2h0WzBdLkxpbmtEb2N1bWVudG9BbnRpZ29FTiA6IHRoaXMuaW5zaWdodFswXS5MaW5rRG9jdW1lbnRvQW50aWdvXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGFwcGx5U2hhcmUoKSB7XHJcbiAgICAgICAgICAgIHZhciB0aXRsZSA9ICQoJy5zaGFyZS10aXRsZScpLnRleHQoKSB8fCBkb2N1bWVudC50aXRsZVxyXG4gICAgICAgICAgICB2YXIgY29udGVudCA9ICQoXCJbY2xhc3MqPSdFeHRlcm5hbENsYXNzJ11cIikudGV4dCgpIHx8IGRvY3VtZW50LnRpdGxlXHJcbiAgICAgICAgICAgICQoJy5zaGFyZScpLnNoYXJlU1goe1xyXG4gICAgICAgICAgICAgICAgc2hvd0xhYmVsczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHNob3dJY29uczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHNob3dMYWJlbFNoYXJlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICAgICAgICAgIHVybDogd2luZG93LmxvY2F0aW9uLmhyZWYsXHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiBjb250ZW50LFxyXG4gICAgICAgICAgICAgICAgdHlwZXM6IFsnZmFjZWJvb2snLCAndHdpdHRlcicsICdsaW5rZWRpbicsICd3aGF0c2FwcCcsICdlbWFpbCddXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0aHJlYXRFcnJvcihlcnIsIG1zZykge1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjcmVhdGVkKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRW5nbGlzaCkge1xyXG4gICAgICAgICAgICBtb21lbnQubG9jYWxlKCdlbi1VUycpO1xyXG4gICAgICAgICAgICBWdWUuc2V0KHRoaXMsXCJieUxvY2FsZVwiLCBcImVuXCIpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbW9tZW50LmxvY2FsZShgcHQtQlJgKTtcclxuICAgICAgICAgICAgVnVlLnNldCh0aGlzLFwiYnlMb2NhbGVcIiwgXCJwdC1iclwiKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmdldEl0ZW0oKVxyXG4gICAgICAgIC50aGVuKHRoaXMuYXBwbHlTaGFyZSlcclxuICAgICAgICAudGhlbih0aGlzLmdldFRpdGxlKTsgXHJcbiAgICB9LFxyXG59KTtcclxuXHJcbnZhciBhcHAgPSBuZXcgVnVlKHtcclxuICAgIGVsOiBgI2RldGFsaGVzLWluc2lnaHRgLFxyXG4gICAgdGVtcGxhdGU6IGA8ZGV0YWxoZXMtaW5zaWdodC8+YFxyXG59KSIsInJlcXVpcmUoYC4uLy4uL21peGlucy90cmFuc2xhdGVgKTtcclxuVnVlLmNvbXBvbmVudChgZGlzY2xhaW1lcmAsIHtcclxuICAgIG1peGluczogW3RyYW5zbGF0ZU1peGluXSxcclxuICAgIGRhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbGlzdFVSTDogYCR7X3NwUGFnZUNvbnRleHRJbmZvLndlYlNlcnZlclJlbGF0aXZlVXJsfS9saXN0cy9EaXNjbGFpbWVyYCxcclxuICAgICAgICAgICAgZGlzY2xhaW1lcjoge31cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgdGVtcGxhdGU6YFxyXG4gICAgPGVsZW1lbnQ+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpc2NsYWltZXJcIj5cclxuICAgICAgICAgICAgPGhyIGNsYXNzPVwiYm9yZGVyLXByaW1hcnkgYWxpZ24taXRlbXMtY2VudGVyXCIgLz5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj57eyBpc0VuZ2xpc2ggPyBkaXNjbGFpbWVyLkRpc2NsYWltZXJFTiA6IGRpc2NsYWltZXIuRGlzY2xhaW1lciB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZWxlbWVudD5cclxuICAgIGAsXHJcbiAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgZ2V0RGlzY2xhaW1lcigpe1xyXG4gICAgICAgICAgICByZXR1cm4gJHBucC5zcC53ZWIuZ2V0TGlzdCh0aGlzLmxpc3RVUkwpLml0ZW1zXHJcbiAgICAgICAgICAgICAgICAuc2VsZWN0KGBEaXNjbGFpbWVyLCBEaXNjbGFpbWVyRU5gKVxyXG4gICAgICAgICAgICAgICAgLnRvcCgxKVxyXG4gICAgICAgICAgICAgICAgLmdldCgpLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIFZ1ZS5zZXQodGhpcywgJ2Rpc2NsYWltZXInLCByZXN1bHRbMF0pXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjcmVhdGVkKCkge1xyXG4gICAgICAgIHRoaXMuZ2V0RGlzY2xhaW1lcigpO1xyXG4gICAgfSxcclxufSk7IiwiJHBucC5zZXR1cCh7XHJcbiAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgXCJBY2NlcHRcIjogXCJhcHBsaWNhdGlvbi9qc29uOyBvZGF0YT12ZXJib3NlXCJcclxuICAgIH1cclxufSk7XHJcblxyXG5yZXF1aXJlKGAuLi8uLi9taXhpbnMvdHJhbnNsYXRlYCk7XHJcbnZhciBzcE1peGluID0gcmVxdWlyZSgnLi4vLi4vbWl4aW5zL3NwLW1peGluJyk7XHJcblZ1ZS5jb21wb25lbnQoJ3Byb2Zpc3Npb25haXMtcmVsYWNpb25hZG9zLW5vdGljaWEnLCB7XHJcbiAgICBtaXhpbnM6IFt0cmFuc2xhdGVNaXhpbiwgc3BNaXhpbl0sXHJcbiAgICBwcm9wczoge1xyXG4gICAgICAgIGlkOiB7IGRlZmF1bHQ6IDAgfVxyXG4gICAgfSxcclxuICAgIGRhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbGlzdFVSTDogYCR7X3NwUGFnZUNvbnRleHRJbmZvLnNpdGVTZXJ2ZXJSZWxhdGl2ZVVybH1saXN0cy9Ob3RpY2lhc2AsXHJcbiAgICAgICAgICAgIHByb2Zpc3Npb25haXNSZWxhY2lvbmFkb3M6IFtdXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICA8ZWxlbWVudD5cclxuICAgICAgICA8ZGl2IGNsYXNzPSdwZXNzb2FzIG10LTUgcC0yJz4gXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWF1dG8gY29udGFpbmVyIGJveC1wcm9maXNzaW9uYWlzIG5vdGljaWFcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInRpdGxlLWdyb3VwIHB0LTVcIj57eyBpc0VuZ2xpc2ggPyAnQ29udGFjdHMnIDogJ0NvbnRhdG9zJyB9fTwvaDU+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPSdsaXN0LWd1eXMgcm93Jz5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9J3AtMyBjb2wtMTIgY29sLW1kLTYgbWItMycgdi1mb3I9XCJpdGVtIGluIHByb2Zpc3Npb25haXNSZWxhY2lvbmFkb3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6XCIgQGNsaWNrPVwiZXhwb3J0VkNhcmQoaXRlbS5JZClcIiA6dGl0bGU9XCJpdGVtLkZ1bGxOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGljIGQtbm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgdi1pZj1cIml0ZW0uTGlua0ltYWdlbVwiIDpzcmM9XCJnZXRQaWN0dXJlKGl0ZW0uTGlua0ltYWdlbSlcIiA6YWx0PVwiaXRlbS5GdWxsTmFtZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29sLTEyIHB0LTIgdHh0Jz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDU+e3tpdGVtLkZ1bGxOYW1lfX0gPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4ge3tpc0VuZ2xpc2ggPyBpdGVtLkF1eFRpcG9Qcm9maXNzaW9uYWwuVGl0bGVFTiA6IGl0ZW0uQXV4VGlwb1Byb2Zpc3Npb25hbC5UaXRsZSB9fSA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1hcnJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZlcnNpb249XCIxLjFcIiBpZD1cInN2Zy1hcnJvdy1yb3VuZGVkLWJ1dHRvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB4PVwiMHB4XCIgeT1cIjBweFwiIHZpZXdCb3g9XCIwIDAgMzAuMiAzMC41XCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIj48Y2lyY2xlIGNsYXNzPVwic3ZnLWFycm93LXJvdW5kZWQtYnV0dG9uLTBcIiBjeD1cIjE1XCIgY3k9XCIxNVwiIHI9XCIxNFwiPjwvY2lyY2xlPjxsaW5lIGNsYXNzPVwic3ZnLWFycm93LXJvdW5kZWQtYnV0dG9uLTBcIiB4MT1cIjExLjFcIiB5MT1cIjE1XCIgeDI9XCIxOC4zXCIgeTI9XCIxNVwiPjwvbGluZT48cG9seWxpbmUgY2xhc3M9XCJzdmctYXJyb3ctcm91bmRlZC1idXR0b24tMFwiIHBvaW50cz1cIjE1LjcsMTEuNyAxOC45LDE1IDE1LjcsMTguMyBcIj48L3BvbHlsaW5lPjwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2VsZW1lbnQ+XHJcbiAgICBgLFxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIGdldERhdGEoKSB7XHJcbiAgICAgICAgICAgIHZhciB3ZWIgPSBuZXcgJHBucC5XZWIoX3NwUGFnZUNvbnRleHRJbmZvLnNpdGVBYnNvbHV0ZVVybCk7XHJcbiAgICAgICAgICAgIHJldHVybiB3ZWIuZ2V0TGlzdCh0aGlzLmxpc3RVUkwpLml0ZW1zXHJcbiAgICAgICAgICAgICAgLmV4cGFuZChgQXV4UHJvZmlzc2lvbmFpc2ApXHJcbiAgICAgICAgICAgICAgLmZpbHRlcihgU2VvVVJMIGVxICcke3RoaXMuaWR9J2ApXHJcbiAgICAgICAgICAgICAgLnNlbGVjdChgKiwgQXV4UHJvZmlzc2lvbmFpcy9JZCwgQXV4UHJvZmlzc2lvbmFpcy9GdWxsTmFtZSwgQXV4UHJvZmlzc2lvbmFpcy9TZW9VUkxgKVxyXG4gICAgICAgICAgICAgIC50b3AoNTAwMClcclxuICAgICAgICAgICAgICAuZ2V0KCkudGhlbigobm90aWNpYSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbm90aWNpYSA9IG5vdGljaWFbMF07XHJcbiAgICAgICAgICAgICAgICB2YXIgcHJvZmlzc2lvbmFsUmVsYWNpb25hZG8gPSBub3RpY2lhLkF1eFByb2Zpc3Npb25haXMucmVzdWx0cztcclxuICAgICAgICAgICAgICAgIC8vIG1hcGVpYSBhIGFycmF5IGRlIHByb2Zpc3Npb25hbFJlbGFjaW9uYWRvIHBhcmEgb2J0ZXIgYXMgaW5mb3JtYcOnw7VlcyBhZGljaW9uYWlzIGRvIHByb2Zpc3Npb25hbFxyXG4gICAgICAgICAgICAgICAgdmFyIHByb21pc2VzID0gcHJvZmlzc2lvbmFsUmVsYWNpb25hZG8ubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEluZm9zUHJvZmlzc2lvbmFsKGl0ZW0pLnRoZW4oKGluZm9Qcm9maXNzaW9uYWwpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLkF1eFRpcG9Qcm9maXNzaW9uYWwgPSBpbmZvUHJvZmlzc2lvbmFsO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgLy8gZXNwZXJhIHRvZGFzIGFzIHByb21lc3NhcyBzZXJlbSByZXNvbHZpZGFzIGFudGVzIGRlIGNvbnRpbnVhclxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgVnVlLnNldCh0aGlzLCAncHJvZmlzc2lvbmFpc1JlbGFjaW9uYWRvcycsIHByb2Zpc3Npb25hbFJlbGFjaW9uYWRvKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgLnRoZW4odGhpcy5hcHBseUV2ZW50cyk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIGdldEluZm9zUHJvZmlzc2lvbmFsKGl0ZW0pIHtcclxuICAgICAgICAgICAgcmV0dXJuICRwbnAuc3Aud2ViLmdldExpc3QoYCR7X3NwUGFnZUNvbnRleHRJbmZvLnNpdGVTZXJ2ZXJSZWxhdGl2ZVVybH1saXN0cy9wcm9maXNzaW9uYWlzYClcclxuICAgICAgICAgICAgLml0ZW1zLmdldEJ5SWQoaXRlbS5JZClcclxuICAgICAgICAgICAgLnNlbGVjdCgnQXV4VGlwb1Byb2Zpc3Npb25hbC9UaXRsZSwgQXV4VGlwb1Byb2Zpc3Npb25hbC9UaXRsZUVOJylcclxuICAgICAgICAgICAgLmV4cGFuZChgQXV4VGlwb1Byb2Zpc3Npb25hbGApXHJcbiAgICAgICAgICAgIC5nZXQoKS50aGVuKChyZXN1bHRzKSA9PiB7XHJcbiAgICAgICAgICAgaWYgKHJlc3VsdHMuQXV4VGlwb1Byb2Zpc3Npb25hbC5UaXRsZSAmJiByZXN1bHRzLkF1eFRpcG9Qcm9maXNzaW9uYWwuVGl0bGVFTikge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgVGl0bGU6IHJlc3VsdHMuQXV4VGlwb1Byb2Zpc3Npb25hbC5UaXRsZSwgXHJcbiAgICAgICAgICAgICAgICBUaXRsZUVOOiByZXN1bHRzLkF1eFRpcG9Qcm9maXNzaW9uYWwuVGl0bGVFTlxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgIFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXREaXNwUHJvZmlzc2lvbmFsKHNlb1VSTCl7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtfc3BQYWdlQ29udGV4dEluZm8uc2l0ZUFic29sdXRlVXJsfS9hZHZvZ2Fkb3MvJHtzZW9VUkx9YFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0UGljdHVyZShpbWcpe1xyXG4gICAgICAgICAgICBpZihpbWcpe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2ltZ31gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGNyZWF0ZWQoKSB7XHJcbiAgICAgICAgdGhpcy5nZXREYXRhKClcclxuICAgIH0sXHJcbn0pIiwiLy9QbHVnaW4gZGUgY29tcGFydGlsaGFtZW50byBuYXMgcmVkZXMgc29jaWFpc1xyXG52YXIgaWUgPSAod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9TdHJpbmcoKS5pbmRleE9mKCdNU0lFIDkuMCcpID4gLTEgfHwgd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9TdHJpbmcoKS5pbmRleE9mKCdNU0lFIDEwLjAnKSA+IC0xKTtcclxualF1ZXJ5LmZuLmV4dGVuZCh7XHJcbiAgICBzaGFyZVNYOiBmdW5jdGlvbiAob3B0aW9uKSB7XHJcbiAgICAgICAgLy9pZighb3B0aW9uLnR5cGVzLmxlbmd0aCB8fCAhb3B0aW9uLnVybCl7cmV0dXJuIGZhbHNlO31cclxuICAgICAgICB2YXIgaXNFbmdsaXNoID0gKEN1cnJlbnRMYW5ndWFnZUxDSUQgPT0gJ2VuLVVTJyksXHJcbiAgICAgICAgICAgIGlzTW9iaWxlID0gd2luZG93LmlubmVyV2lkdGggPD0gNzM1LFxyXG4gICAgICAgICAgICB0aXRsZVBvcHVwID0gJycsXHJcbiAgICAgICAgICAgIHRpdGxlRW1haWwgPSBvcHRpb24udGl0bGUsXHJcbiAgICAgICAgICAgIHNob3dMYWJlbFNoYXJlID0gb3B0aW9uLnNob3dMYWJlbFNoYXJlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHZhciBodG1sID0gYFxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXItMyB0ZXh0LXdoaXRlICR7c2hvd0xhYmVsU2hhcmUgPyAnZC1ibG9jaycgOiAnZC1ub25lJ31cIj5cclxuICAgICAgICAgICAgJHtpc0VuZ2xpc2ggPyAnU2hhcmUnIDogJ0NvbXBhcnRpbGhlJ31cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHVsIGNsYXNzPVwic2hhcmUtc29jaWFscyBtYi0wIHAtMCBuYXYganVzdGlmeS1jb250ZW50LWVuZFwiPmA7XHJcblxyXG5cclxuICAgICAgICBpZiAoaWUpIHtcclxuICAgICAgICAgICAgdGl0bGVQb3B1cCA9IG9wdGlvbi50aXRsZSA9IG9wdGlvbi50aXRsZS5yZXBsYWNlKC9bw6HDoMOiw6NdL2csICdhJykucmVwbGFjZSgvW8Opw6jDql0vZywgJ2UnKS5yZXBsYWNlKC9bw7PDssO0w7VdL2csICdvJykucmVwbGFjZSgvW8O6w7nDu10vZywgJ3UnKS5yZXBsYWNlKC9bw6ddL2csICdjJykucmVwbGFjZSgvXFxzL2csICdfJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGl0bGVQb3B1cCA9IG9wdGlvbi50aXRsZSA9IGVuY29kZVVSSShvcHRpb24udGl0bGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvcHRpb24uY29udGVudCA9IG9wdGlvbi5jb250ZW50IHx8ICcnO1xyXG5cclxuICAgICAgICBvcHRpb24udHlwZXMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xyXG4gICAgICAgICAgICB2YXIgb25jbGljayA9ICdQb3B1cENlbnRlckR1YWwoXFwnJyArIGdldFNoYXJlTGluayh0eXBlKSArICdcXCcsXFwnJyArIG9wdGlvbi50aXRsZSArICdcXCcsNjAwLDUwMCwkKHRoaXMpKScsXHJcbiAgICAgICAgICAgICAgICBocmVmID0gJ2phdmFzY3JpcHQ6JyxcclxuICAgICAgICAgICAgICAgIGR5bmFtaWNDbGFzc2VzID0gJyc7XHJcbiAgICAgICAgICAgIGlmIChpZSkge1xyXG5cclxuICAgICAgICAgICAgICAgIGhyZWYgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAob3B0aW9uLmRpc3BsYXlUZXh0ID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbi5kaXNwbGF5VGV4dCA9IG9wdGlvbi50aXRsZVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZS50b0xvd2VyQ2FzZSgpID09ICd3aGF0c2FwcCcgfHwgdHlwZS50b0xvd2VyQ2FzZSgpID09ICdlbWFpbCcpIHtcclxuICAgICAgICAgICAgICAgIG9uY2xpY2sgPSAnJztcclxuICAgICAgICAgICAgICAgIC8vb3B0aW9uLnRpdGxlID0gZW5jb2RlVVJJKG9wdGlvbi50aXRsZSk7XHJcbiAgICAgICAgICAgICAgICBocmVmID0gZ2V0U2hhcmVMaW5rKHR5cGUpXHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICBvcHRpb24uc2hvd0xhYmVscyA9IG9wdGlvbi5zaG93TGFiZWxzID09IHVuZGVmaW5lZCA/IHRydWUgOiBvcHRpb24uc2hvd0xhYmVscztcclxuICAgICAgICAgICAgb3B0aW9uLnNob3dJY29ucyA9IG9wdGlvbi5zaG93SWNvbnMgPT0gdW5kZWZpbmVkID8gdHJ1ZSA6IG9wdGlvbi5zaG93SWNvbnM7XHJcblxyXG4gICAgICAgICAgICBpZiAob3B0aW9uLnNob3dMYWJlbHMpIHtcclxuICAgICAgICAgICAgICAgIGR5bmFtaWNDbGFzc2VzID0gJ3RleHQtYWN0aXZlJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBpY29uQ2xhc3NlcyA9IHR5cGUgPT0gJ2VtYWlsJyA/ICdmYXMgZmEtZW52ZWxvcGUnIDogYGZhYiBmYS0ke3R5cGV9YFxyXG5cclxuICAgICAgICAgICAgZHluYW1pY0NsYXNzZXMgPSBgaWNvbi1hY3RpdmUgJHtpY29uQ2xhc3Nlc30gJHsob3B0aW9uLnNob3dMYWJlbHMgPyAnIHRleHQtYWN0aXZlJyA6ICcnKX1gO1xyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGUudG9Mb3dlckNhc2UoKSA9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBodG1sICs9XHJcbiAgICAgICAgICAgICAgICBgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBvbmNsaWNrPVwiJHtvbmNsaWNrfVwiIGhyZWY9XCIke2hyZWZ9XCIgZGF0YS1pY29uPVwiJHt0eXBlLnRvTG93ZXJDYXNlKCl9XCIgY2xhc3M9XCJuYXYtbGluayB0ZXh0LXdpdGVcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIke2R5bmFtaWNDbGFzc2VzfSB0ZXh0LXdpdGVcIj48L2k+XHJcblx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0PC9saT5gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGh0bWwgKz0gJzwvdWw+JztcclxuICAgICAgICAvL2FwZW5kYW5kbyBvIGh0bWwgbm8gc2VsZXRvclxyXG5cclxuICAgICAgICAkKHRoaXMpLmh0bWwoaHRtbCk7XHJcblxyXG4gICAgICAgIC8vbW9udGFuZG8gdXJsJ3MgZGFzIHJlZGVzO1xyXG4gICAgICAgIGZ1bmN0aW9uIGdldFNoYXJlTGluayh0eXBlKSB7XHJcbiAgICAgICAgICAgIHZhciBsaW5rID0gXCJcIlxyXG4gICAgICAgICAgICB2YXIgZW1haWxIcmVmID0gXCJcIlxyXG5cclxuICAgICAgICAgICAgLy92ZXJpZmljYW5kbyBzZSBvIGxpbmsgw6kgZXh0ZXJubyBvdSByZWxhdGl2bztcclxuICAgICAgICAgICAgaWYgKChvcHRpb24udXJsIHx8ICcnKS5pbmRleE9mKCdodHRwJykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uLnVybCA9IG9wdGlvbi51cmxcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbi51cmwgPSBfc3BQYWdlQ29udGV4dEluZm8ud2ViQWJzb2x1dGVVcmwgKyBvcHRpb24udXJsXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJmYWNlYm9va1wiKVxyXG4gICAgICAgICAgICAgICAgaWYgKGlzTW9iaWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGluayA9ICdodHRwczovL20uZmFjZWJvb2suY29tL3NoYXJlci9zaGFyZXIucGhwP3U9JyArIG9wdGlvbi51cmw7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxpbmsgPSAnaHR0cHM6Ly9mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA/dT0nICsgb3B0aW9uLnVybDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZS50b0xvd2VyQ2FzZSgpID09IFwidHdpdHRlclwiKVxyXG4gICAgICAgICAgICAgICAgaWYgKGlzTW9iaWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGluayA9ICdodHRwOi8vdHdpdHRlci5jb20vaW50ZW50L3R3ZWV0P3RleHQ9Jytfc3BQYWdlQ29udGV4dEluZm8ud2ViVGl0bGUrJyAtICcgKyBvcHRpb24udGl0bGUgKyAnOiAnICsgb3B0aW9uLnVybDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxpbmsgPSAnaHR0cDovL3R3aXR0ZXIuY29tL2hvbWU/c3RhdHVzPScrX3NwUGFnZUNvbnRleHRJbmZvLndlYlRpdGxlKycgLSAnICsgb3B0aW9uLnRpdGxlLnJlcGxhY2UoLyYvZ2ltLCAnJTI2JykgKyAnOiAnICsgb3B0aW9uLnVybC5yZXBsYWNlKC8mL2dpbSwgJyUyNicpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJsaW5rZWRpblwiKVxyXG4gICAgICAgICAgICAgICAgbGluayA9ICdodHRwczovL3d3dy5saW5rZWRpbi5jb20vc2hhcmVBcnRpY2xlP3VybD0nICsgb3B0aW9uLnVybC5yZXBsYWNlKC8mL2dpbSwgJyUyNicpLnJlcGxhY2UoLz0vZywgJy8nKSArICcmdGl0bGU9JyArIG9wdGlvbi50aXRsZS5yZXBsYWNlKC8mL2dpbSwgJyUyNicpXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUudG9Mb3dlckNhc2UoKSA9PSBcImdvb2dsZS1wbHVzXCIpXHJcbiAgICAgICAgICAgICAgICBsaW5rID0gJ2h0dHBzOi8vcGx1c29uZS5nb29nbGUuY29tL18vKzEvY29uZmlybT9obD1wdCZ1cmw9JyArIG9wdGlvbi51cmwgKyAnJnRpdGxlPScgKyBvcHRpb24udGl0bGU7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUudG9Mb3dlckNhc2UoKSA9PSBcIndoYXRzYXBwXCIpXHJcbiAgICAgICAgICAgICAgICBpZiAoaXNNb2JpbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBsaW5rID0gJ3doYXRzYXBwOi8vc2VuZD90ZXh0PScgKyBlbmNvZGVVUklDb21wb25lbnQoJycrX3NwUGFnZUNvbnRleHRJbmZvLndlYlRpdGxlKycgLSAnICsgZGVjb2RlVVJJQ29tcG9uZW50KG9wdGlvbi50aXRsZSkgKyAnOiAnICsgb3B0aW9uLnVybCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxpbmsgPSAnaHR0cHM6Ly93ZWIud2hhdHNhcHAuY29tL3NlbmQ/dGV4dD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KCcnK19zcFBhZ2VDb250ZXh0SW5mby53ZWJUaXRsZSsnIC0gJyArIGRlY29kZVVSSUNvbXBvbmVudChvcHRpb24udGl0bGUpICsgJzogJyArIG9wdGlvbi51cmwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy88YSBocmVmPVwiXCIgZGF0YS1hY3Rpb249XCJzaGFyZS93aGF0c2FwcC9zaGFyZVwiPlNoYXJlIHZpYSBXaGF0c2FwcCB3ZWI8L2E+XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUudG9Mb3dlckNhc2UoKSA9PSBcImVtYWlsXCIpIHtcclxuICAgICAgICAgICAgICAgIGxpbmsgPSBnZXRNYWlsVG9Vcmwob3B0aW9uLmNvbnRlbnQsIHRpdGxlRW1haWwsIGVuY29kZVVSSUNvbXBvbmVudChvcHRpb24udXJsKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGxpbms7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KTtcclxuXHJcbi8vZnVuw6fDo28gcGFyYSBhYnJpciBhIG1vZGFsIGUgcGFzc2FyIGxhZ3VyYSBlIGFsdHVyYSBwYXJhIGNlbnRyYWxpemFyXHJcbndpbmRvdy5Qb3B1cENlbnRlckR1YWwgPSBmdW5jdGlvbiAodXJsLCB0aXRsZSwgdywgaCwgZWxlbWVudCkge1xyXG4gICAgaWYgKGllKSB7XHJcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyKCdocmVmJyk7XHJcbiAgICB9XHJcbiAgICAvLyBGaXhlcyBkdWFsLXNjcmVlbiBwb3NpdGlvbiBNb3N0IGJyb3dzZXJzIEZpcmVmb3hcclxuICAgIHZhciBkdWFsU2NyZWVuTGVmdCA9IHdpbmRvdy5zY3JlZW5MZWZ0ICE9IHVuZGVmaW5lZCA/IHdpbmRvdy5zY3JlZW5MZWZ0IDogc2NyZWVuLmxlZnQ7XHJcbiAgICB2YXIgZHVhbFNjcmVlblRvcCA9IHdpbmRvdy5zY3JlZW5Ub3AgIT0gdW5kZWZpbmVkID8gd2luZG93LnNjcmVlblRvcCA6IHNjcmVlbi50b3A7XHJcbiAgICB2YXIgd2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCA/IHdpbmRvdy5pbm5lcldpZHRoIDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIDogc2NyZWVuLndpZHRoO1xyXG4gICAgdmFyIGhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCA/IHdpbmRvdy5pbm5lckhlaWdodCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IDogc2NyZWVuLmhlaWdodDtcclxuXHJcbiAgICB2YXIgbGVmdCA9ICgod2lkdGggLyAyKSAtICh3IC8gMikpICsgZHVhbFNjcmVlbkxlZnQ7XHJcbiAgICB2YXIgdG9wID0gKChoZWlnaHQgLyAyKSAtIChoIC8gMikpICsgZHVhbFNjcmVlblRvcDtcclxuICAgIHZhciBuZXdXaW5kb3cgPSB3aW5kb3cub3Blbih1cmwsIHRpdGxlLCAnc2Nyb2xsYmFycz15ZXMsIHdpZHRoPScgKyB3ICsgJywgaGVpZ2h0PScgKyBoICsgJywgdG9wPScgKyB0b3AgKyAnLCBsZWZ0PScgKyBsZWZ0ICsgJ3Rvb2xiYXI9bm8sIHNjcm9sbGJhcnM9bm8sIHJlc2l6YWJsZT1ubywgbG9jYXRpb249bm8sIHN0YXR1cz1ubycpO1xyXG5cclxuICAgIC8vIFB1dHMgZm9jdXMgb24gdGhlIG5ld1dpbmRvd1xyXG5cdC8qaWYgKHdpbmRvdy5mb2N1cykge1xyXG5cdG5ld1dpbmRvdy5mb2N1cygpO1xyXG5cdH0qL1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRNYWlsVG9VcmwoY29udGV1ZG8sIHRpdHVsbywgdXJsU2hhcmUpIHtcclxuICAgIHZhciB1cmwgPSBcIlwiO1xyXG4gICAgdmFyIGJvZHkgPSAnJztcclxuICAgIHZhciBlbmNvZGVkTGluZUJyZWFrID0gXCIlMEElMEFcIjtcclxuICAgIGNvbnRldWRvID0gY29udGV1ZG8gfHwgdGl0dWxvO1xyXG4gICAgdGl0dWxvID0gdGl0dWxvLnJlcGxhY2UoL1smXS9nLCAnJTI2JylcclxuXHJcbiAgICBib2R5ID0gZ2V0RW1haWxCb2R5KHBhcnNlTWFpbEJvZHlDb250ZW50KGNvbnRldWRvKSkgKyBtYWtlVXJsQWJzb2x1dGUodXJsU2hhcmUpLnJlcGxhY2UoLyYvZ2ltLCAnJTI2JykucmVwbGFjZSgvXCIvZ2ltLCAnJTIyJyk7XHJcblxyXG5cclxuICAgIHJldHVybiBcIm1haWx0bzo/c3ViamVjdD1cIiArIHRpdHVsbyArIFwiJmJvZHk9XCIgKyBib2R5O1xyXG59XHJcblxyXG5mdW5jdGlvbiBtYWtlVXJsQWJzb2x1dGUodXJsKSB7XHJcbiAgICBpZiAoIXVybCkgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xyXG5cclxuICAgIGlmICh1cmwuaW5kZXhPZignaHR0cCcpID4gLTEpIHtcclxuICAgICAgICByZXR1cm4gdXJsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gX3NwUGFnZUNvbnRleHRJbmZvLndlYkFic29sdXRlVXJsICsgZW5jb2RlVVJJKHVybClcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VNYWlsQm9keUNvbnRlbnQoYm9keUNvbnRlbnQpIHtcclxuICAgIGJvZHlDb250ZW50ID0gJzxkaXY+JyArIGJvZHlDb250ZW50ICsgJzwvZGl2Pic7XHJcblxyXG4gICAgdmFyIGRvbUNvbnRldWRvID0gJChib2R5Q29udGVudC5yZXBsYWNlKC88ZGl2Pi9nLCAnXFxuPGRpdj4nKSk7XHJcblxyXG4gICAgZG9tQ29udGV1ZG8uZmluZChcInBcIikuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGh0bWxTZW1RdWVicmEgPSAkKHRoaXMpLmh0bWwoKS5yZXBsYWNlKC9cXG4vZywgJycpLnJlcGxhY2UoLzxicj4vZywgJ1xcbicpO1xyXG4gICAgICAgICQodGhpcykuaHRtbChodG1sU2VtUXVlYnJhKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGJvZHlDb250ZW50ID0gZG9tQ29udGV1ZG8udGV4dCgpLnJlcGxhY2UoL1xcblxcbi9nLCBcIlxcblwiKTtcclxuICAgIGJvZHlDb250ZW50ID0gJC50cmltKGRvbUNvbnRldWRvLnRleHQoKSk7XHJcbiAgICByZXR1cm4gYm9keUNvbnRlbnQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEVtYWlsQm9keShjb250ZXVkbykge1xyXG4gICAgdmFyIGVuY29kZWRMaW5lQnJlYWsgPSBcIiUwQSUwQVwiO1xyXG4gICAgdmFyIHRleHRvSW5pY2lvID0gXCJVbSBjb250ZcO6ZG8gZG8gc2l0ZSBcIitfc3BQYWdlQ29udGV4dEluZm8ud2ViVGl0bGUrXCIgZm9pIGVudmlhZG8gcGFyYSB2b2PDqjpcIjtcclxuICAgIHZhciB0ZXh0b0xpbmsgPSBcIkNsaXF1ZSBwYXJhIGxlciBvIGNvbnRlw7pkbyBuYSDDrW50ZWdyYTogXCI7XHJcbiAgICB2YXIgYm9keSA9ICcnO1xyXG4gICAgY29udGV1ZG8gPSBjb250ZXVkb1xyXG5cclxuICAgIGlmIChDdXJyZW50TGFuZ3VhZ2VMQ0lEID09IFwiZW4tVVNcIikge1xyXG4gICAgICAgIHRleHRvTGluayA9IFwiUGxlYXNlIGNsaWNrIGhlcmUgdG8gYWNjZXNzIGZ1bGwgY29udGVudDogXCI7XHJcbiAgICAgICAgdGV4dG9JbmljaW8gPSBcIkEgY29udGVudCBmcm9tIHRoZSBcIitfc3BQYWdlQ29udGV4dEluZm8ud2ViVGl0bGUrXCIgd2Vic2l0ZSBoYXMgYmVlbiBzZW50IHRvIHlvdTpcIjtcclxuICAgIH1cclxuXHJcbiAgICBjb250ZXVkbyA9IGNvbnRldWRvLnJlcGxhY2UoL1smXS9nLCAnJTI2JykucmVwbGFjZSgvXCIvZ2ltLCAnJTIyJyk7XHJcbiAgICBib2R5ID0gdGV4dG9JbmljaW8gKyBlbmNvZGVkTGluZUJyZWFrICsgdHJ1bmNhdGVUZXh0KGNvbnRldWRvLCAzMzUpICsgZW5jb2RlZExpbmVCcmVhayArIHRleHRvTGluaztcclxuXHJcbiAgICByZXR1cm4gYm9keTtcclxufVxyXG5cclxuZnVuY3Rpb24gdHJ1bmNhdGVUZXh0KHRleHQsIGxlbmd0aCkge1xyXG4gICAgaWYgKHRleHQubGVuZ3RoID4gbGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRleHQuc3Vic3RyaW5nKDAsIGxlbmd0aCAtIDMpICsgXCIuLi5cIjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0ZXh0O1xyXG4gICAgfVxyXG59XHJcbiIsInZhciB0cmFuc2xhdGVNaXhpbiA9IHJlcXVpcmUoJy4vdHJhbnNsYXRlJyk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHtcclxuICAgIG1peGluczogW3RyYW5zbGF0ZU1peGluXSxcclxuICAgIG1ldGhvZHM6IHtcclxuICAgICAgICB0aHJlYXRFcnJvcihtc2csIGRhdGEpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihhcmd1bWVudHMpO1xyXG4gICAgICAgICAgICB2YXIgZGVmYXVsdE1zZyA9ICF0aGlzLmlzRW5nbGlzaCA/IFwiT2NvcnJldSB1bSBlcnJvXCIgOiBcIkFuIGVycm9yIGhhcyBvY3VycmVkXCJcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBzd2FsKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBcIkVycm9cIixcclxuICAgICAgICAgICAgICAgIHRleHQ6IG1zZyB8fCBkZWZhdWx0TXNnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJlcnJvclwiXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvbmUob2JqKSB7XHJcbiAgICAgICAgICAgIGlmIChudWxsID09IG9iaiB8fCBcIm9iamVjdFwiICE9IHR5cGVvZiBvYmopIHJldHVybiBvYmo7XHJcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0RW1wdHlJdGVtKGxpc3RGaWVsZHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUobGlzdEZpZWxkcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB2YWxpZGF0ZVJlcXVpcmVkRmllbGQoZmllbGRzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhT2JqZWN0LmtleXMoZmllbGRzKS5zb21lKChrZXkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAhZmllbGRzW2tleV0uVmFsdWUgJiYgZmllbGRzW2tleV0uUmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXRTRU9VcmwocGFyYW1ldHJvLCB1cmwpIHtcclxuICAgICAgICAgICAgLy8gcGFyYW1ldHJvIC0gY2FzbyBlc3RlamEgc2VtIFNFT1VybFxyXG4gICAgICAgICAgICAvLyB1cmwgLSB1cmwgZGEgcMOhZ2luYSBqw6EgY29tIFNFT1VybCwgasOhIHF1ZSB0dWRvIGRlcG9pcyBkZWxhIMOpIHBhcmFtZXRybyBkZSBTRU9VcmwgKCcvbGlua2RhcGFnaW5hLycpXHJcbiAgICAgICAgICAgIHJldHVybiAkcG5wLnV0aWwuZ2V0VXJsUGFyYW1CeU5hbWUocGFyYW1ldHJvKSB8fCBsb2NhdGlvbi5ocmVmLnNwbGl0KGAvJHt1cmx9L2ApLnJldmVyc2UoKVswXS5zcGxpdCgnIycpWzBdLnNwbGl0KCc/JylbMF07XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXRJbnZhbGlkRmllbGRzKGZpZWxkcykge1xyXG4gICAgICAgICAgICBsZXQgbXNnc0Vycm8gPSBbXTtcclxuICAgICAgICAgICAgbGV0IG1zZ09icmlnYXRvcmlvID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBmaWVsZHMgPSBPYmplY3Qua2V5cyhmaWVsZHMpLmZpbHRlcigoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZmllbGQgPSBmaWVsZHNba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmIChmaWVsZC5JbnRlcm5hbE5hbWUgPT09ICdFbWFpbCcgJiYgZmllbGQuVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZW1haWxWYWxpZG8gPSB0aGlzLnZhbGlkYXRlRW1haWwoZmllbGQuVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZW1haWxWYWxpZG8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbXNnc0Vycm8ucHVzaChgJHshdGhpcy5pc0VuZ2xpc2ggPyAnTyBlLW1haWwnIDogJ1RoZSBlbWFpbCd9IDxzcGFuIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiPiR7ZmllbGQuVmFsdWV9PC9zcGFuPiAkeyF0aGlzLmlzRW5nbGlzaCA/ICfDqSBpbnbDoWxpZG8nIDogJ2lzIGludmFsaWQnfWApXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhZW1haWxWYWxpZG87XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLlJlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbGlkYXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQuVHlwZUFzU3RyaW5nID09PSAnTG9va3VwTXVsdGknKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb24gPSAhKGZpZWxkLlZhbHVlIHx8IFtdKS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbiA9ICFmaWVsZC5WYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbiAmJiBtc2dPYnJpZ2F0b3JpbyA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtc2dPYnJpZ2F0b3JpbyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vbXNnc0Vycm8ucHVzaChgTyBjYW1wbyAke2ZpZWxkLlRpdGxlfSDDqSBvYnJpZ2F0w7NyaW9gKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtc2dzRXJyby5wdXNoKCF0aGlzLmlzRW5nbGlzaCA/ICdQcmVlbmNoYSBvcyBjYW1wb3Mgb2JyaWdhdMOzcmlvcycgOiAnRmlsbCBpbiB0aGUgcmVxdWlyZWQgZmllbGRzJylcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRpb247XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGlmIChtc2dPYnJpZ2F0b3JpbyA+PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAvL2FsZXJ0KCdQcmVlbmNoYSBvcyBjYW1wb3Mgb2JyaWdhdMOzcmlvcycpOyAgICAgXHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBtc2dzRXJybyxcclxuICAgICAgICAgICAgICAgIGZpZWxkc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBleHBvcnRWQ2FyZChJRCkge1xyXG4gICAgICAgICAgICB2YXIgRiA9IGRvY3VtZW50LmZvcm1zWzBdO1xyXG4gICAgICAgICAgICBGLmFjdGlvbiA9IFwiL19sYXlvdXRzLzE1L1NpbWJpb1guU1AyMDEzLlNQRXhwb3J0ZXIvRXhwb3J0VG9WQ2FyZC5hc2h4XCI7XHJcbiAgICAgICAgICAgIEYuX19WSUVXU1RBVEUubmFtZSA9ICdOT1ZJRVdTVEFURSc7XHJcbiAgICAgICAgICAgIEYuX19WSUVXU1RBVEUudmFsdWUgPSBcIkxpc3Q6UHJvZmlzc2lvbmFpcztJRDpcIiArIElEICsgXCI7TGlzdFVSTDo7XCI7XHJcbiAgICAgICAgICAgIEYubWV0aG9kID0gJ1BPU1QnO1xyXG4gICAgICAgICAgICBGLm9uc3VibWl0ID0gZnVuY3Rpb24oKSB7fTtcclxuICAgICAgICAgICAgRi5zdWJtaXQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGV4cG9ydFBERihlbGVtZW50LCBmaWxlTmFtZSkge1xyXG4gICAgICAgICAgICAkKGAjJHtlbGVtZW50fWApLnNob3coKVxyXG5cclxuICAgICAgICAgICAgLyp2YXIgY2FjaGVfd2lkdGggPSAkKGVsZW1lbnQpLndpZHRoKCk7IC8vQ3JpYWRvIHVtIGNhY2hlIGRvIENTU1xyXG4gICAgICAgICAgICB2YXIgYTQgID1bIDU5NS4yOCwgIDg0MS44OV07IC8vIFdpZGh0IGUgSGVpZ2h0IGRlIHVtYSBmb2xoYSBhNFxyXG5cclxuICAgICAgICAgICAgLy8gU2V0YXIgbyB3aWR0aCBkYSBkaXYgbm8gZm9ybWF0byBhNFxyXG4gICAgICAgICAgICAkKGVsZW1lbnQpLndpZHRoKChhNFswXSoxLjMzMzMzKSAtODApLmNzcygnbWF4LXdpZHRoJywnbm9uZScpO1xyXG4gICAgICAgICAgICAvLyBBcXVpIGVsZSBjcmlhIGEgaW1hZ2VtIGUgY3JpYSBvIHBkZlxyXG4gICAgICAgICAgICBodG1sMmNhbnZhcyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGVsZW1lbnQpKS50aGVuKGNhbnZhcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW1nID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiLDEuMCk7ICBcclxuICAgICAgICAgICAgICAgIHZhciBkb2MgPSBuZXcganNQREYoe3VuaXQ6J3B4JywgZm9ybWF0OidhNCd9KTtcclxuICAgICAgICAgICAgICAgIGRvYy5hZGRJbWFnZShpbWcsICdKUEVHJywgMjAsIDIwKTtcclxuICAgICAgICAgICAgICAgIGRvYy5zYXZlKGBEb3dubG9hZCBkZSBQREYgLSAke2ZpbGVOYW1lfS5wZGZgKTtcclxuICAgICAgICAgICAgICAgIC8vUmV0b3JuYSBhbyBDU1Mgbm9ybWFsXHJcbiAgICAgICAgICAgICAgICAkKGVsZW1lbnQpLndpZHRoKGNhY2hlX3dpZHRoKTtcclxuICAgICAgICAgICAgICAgICQoZWxlbWVudCkuaGlkZSgpXHJcbiAgICAgICAgICAgIH0pOyovXHJcblxyXG4gICAgICAgICAgICB2YXIgcXVvdGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudCk7XHJcbiAgICAgICAgICAgIGh0bWwyY2FudmFzKHF1b3RlcykudGhlbigoY2FudmFzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyEgTUFLRSBZT1VSIFBERlxyXG4gICAgICAgICAgICAgICAgdmFyIHBkZiA9IG5ldyBqc1BERigncCcsICdwdCcsICdsZXR0ZXInKTtcclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBxdW90ZXMuY2xpZW50SGVpZ2h0IC8gOTgwOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyEgVGhpcyBpcyBhbGwganVzdCBodG1sMmNhbnZhcyBzdHVmZlxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBzcmNJbWcgPSBjYW52YXM7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNYID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc1kgPSA5ODAgKiBpOyAvLyBzdGFydCA5ODAgcGl4ZWxzIGRvd24gZm9yIGV2ZXJ5IG5ldyBwYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNXaWR0aCA9IDk4MDtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc0hlaWdodCA9IDk4MDtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZFggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBkWSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRXaWR0aCA9IDk4MDtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZEhlaWdodCA9IDk4MDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9uZVBhZ2VDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIG9uZVBhZ2VDYW52YXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsIDk4MCk7XHJcbiAgICAgICAgICAgICAgICAgICAgb25lUGFnZUNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIDk4MCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGN0eCA9IG9uZVBhZ2VDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBkZXRhaWxzIG9uIHRoaXMgdXNhZ2Ugb2YgdGhpcyBmdW5jdGlvbjogXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0NhbnZhc19BUEkvVHV0b3JpYWwvVXNpbmdfaW1hZ2VzI1NsaWNpbmdcclxuICAgICAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKHNyY0ltZywgc1gsIHNZLCBzV2lkdGgsIHNIZWlnaHQsIGRYLCBkWSwgZFdpZHRoLCBkSGVpZ2h0KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjYW52YXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjYW52YXNEYXRhVVJMID0gb25lUGFnZUNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIiwgMS4wKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoID0gb25lUGFnZUNhbnZhcy53aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gb25lUGFnZUNhbnZhcy5jbGllbnRIZWlnaHQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vISBJZiB3ZSdyZSBvbiBhbnl0aGluZyBvdGhlciB0aGFuIHRoZSBmaXJzdCBwYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZCBhbm90aGVyIHBhZ2VcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGRmLmFkZFBhZ2UoNjEyLCA3OTEpOyAvLzguNVwiIHggMTFcIiBpbiBwdHMgKGluKjcyKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyEgbm93IHdlIGRlY2xhcmUgdGhhdCB3ZSdyZSB3b3JraW5nIG9uIHRoYXQgcGFnZVxyXG4gICAgICAgICAgICAgICAgICAgIHBkZi5zZXRQYWdlKGkgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyEgbm93IHdlIGFkZCBjb250ZW50IHRvIHRoYXQgcGFnZSFcclxuICAgICAgICAgICAgICAgICAgICBwZGYuYWRkSW1hZ2UoY2FudmFzRGF0YVVSTCwgJ1BORycsIDEwLCAxMCwgKHdpZHRoICogLjYyKSwgKGhlaWdodCAqIC42MikpO1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vISBhZnRlciB0aGUgZm9yIGxvb3AgaXMgZmluaXNoZWQgcnVubmluZywgd2Ugc2F2ZSB0aGUgcGRmLlxyXG4gICAgICAgICAgICAgICAgcGRmLnNhdmUoYCR7ZmlsZU5hbWV9LnBkZmApO1xyXG4gICAgICAgICAgICAgICAgJChgIyR7ZWxlbWVudH1gKS5oaWRlKClcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB2YWxpZGF0ZUVtYWlsKGVtYWlsID0gJycpIHtcclxuICAgICAgICAgICAgbGV0IHVzdWFyaW8gPSBlbWFpbC5zdWJzdHJpbmcoMCwgZW1haWwuaW5kZXhPZihcIkBcIikpO1xyXG4gICAgICAgICAgICBsZXQgZG9taW5pbyA9IGVtYWlsLnN1YnN0cmluZyhlbWFpbC5pbmRleE9mKFwiQFwiKSArIDEsIGVtYWlsLmxlbmd0aCk7XHJcblxyXG4gICAgICAgICAgICBpZiAoKHVzdWFyaW8ubGVuZ3RoID49IDEpICYmXHJcbiAgICAgICAgICAgICAgICAoZG9taW5pby5sZW5ndGggPj0gMykgJiZcclxuICAgICAgICAgICAgICAgICh1c3VhcmlvLnNlYXJjaChcIkBcIikgPT0gLTEpICYmXHJcbiAgICAgICAgICAgICAgICAoZG9taW5pby5zZWFyY2goXCJAXCIpID09IC0xKSAmJlxyXG4gICAgICAgICAgICAgICAgKHVzdWFyaW8uc2VhcmNoKFwiIFwiKSA9PSAtMSkgJiZcclxuICAgICAgICAgICAgICAgIChkb21pbmlvLnNlYXJjaChcIiBcIikgPT0gLTEpICYmXHJcbiAgICAgICAgICAgICAgICAoZG9taW5pby5zZWFyY2goXCIuXCIpICE9IC0xKSAmJlxyXG4gICAgICAgICAgICAgICAgKGRvbWluaW8uaW5kZXhPZihcIi5cIikgPj0gMSkgJiZcclxuICAgICAgICAgICAgICAgIChkb21pbmlvLmxhc3RJbmRleE9mKFwiLlwiKSA8IGRvbWluaW8ubGVuZ3RoIC0gMSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGRhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbGV0cmFzQWxmYWJldG86IFsnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywgJ0knLCAnSicsICdLJywgJ0wnLCAnTScsICdOJywgJ08nLCAnUCcsICdRJywgJ1InLCAnUycsICdUJywgJ1UnLCAnVicsICdXJywgJ1gnLCAnWScsICdaJ10sXHJcbiAgICAgICAgICAgIG1lc2VzOiBbe1xyXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlOiAnSmFuZWlybycsXHJcbiAgICAgICAgICAgICAgICAgICAgVGl0bGVFTjogJ0phbnVhcnknXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlOiBgRmV2ZXJlaXJvYCxcclxuICAgICAgICAgICAgICAgICAgICBUaXRsZUVOOiBgRmVicnVhcnlgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlOiBgTWFyw6dvYCxcclxuICAgICAgICAgICAgICAgICAgICBUaXRsZUVOOiBgTWFyY2hgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlOiBgQWJyaWxgLFxyXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlRU46IGBBcHJpbGBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgVGl0bGU6IGBNYWlvYCxcclxuICAgICAgICAgICAgICAgICAgICBUaXRsZUVOOiBgTWF5YFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBUaXRsZTogYEp1bmhvYCxcclxuICAgICAgICAgICAgICAgICAgICBUaXRsZUVOOiBgSnVuZWBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgVGl0bGU6IGBKdWxob2AsXHJcbiAgICAgICAgICAgICAgICAgICAgVGl0bGVFTjogYEp1bHlgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlOiBgQWdvc3RvYCxcclxuICAgICAgICAgICAgICAgICAgICBUaXRsZUVOOiBgQXVndXN0YFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBUaXRsZTogYFNldGVtYnJvYCxcclxuICAgICAgICAgICAgICAgICAgICBUaXRsZUVOOiBgU2VwdGVtYmVyYFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBUaXRsZTogYE91dHVicm9gLFxyXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlRU46IGBPY3RvYmVyYFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBUaXRsZTogYE5vdmVtYnJvYCxcclxuICAgICAgICAgICAgICAgICAgICBUaXRsZUVOOiBgTm92ZW1iZXJgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlOiBgRGV6ZW1icm9gLFxyXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlRU46IGBEZWNlbWJlcmBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbn0iLCJ3aW5kb3cudHJhbnNsYXRlTWl4aW4gPSB7XHJcbiAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgY2hhbmdlTGFuZ3VhZ2UodmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKEN1cnJlbnRMYW5ndWFnZURlY2ltYWwgPT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgICB2YXIgb25lWWVhciA9IG5ldyBEYXRlKHRvZGF5LmdldFRpbWUoKSArIDM2NSAqIDI0ICogNjAgKiA2MCAqIDEwMDApO1xyXG4gICAgICAgICAgICB2YXIgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IFwibGNpZD1cIiArIHZhbHVlICsgXCI7cGF0aD0vO2V4cGlyZXM9XCIgKyBvbmVZZWFyLnRvR01UU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjaGFuZ2VQYWdlVGl0bGUoKXtcclxuICAgICAgICAgICAgcmV0dXJuICRwbnAuc3Aud2ViLmdldExpc3QodGhpcy5saWJyYXJ5UGFnZXNVUkwpLml0ZW1zXHJcbiAgICAgICAgICAgICAgICAuZ2V0QnlJZCh0aGlzLmlkQ3VycmVudFBhZ2UpXHJcbiAgICAgICAgICAgICAgICAuc2VsZWN0KGBJZCwgVGl0bGUsIFRpdGxlRU4sIERlc2NyaWNhbywgRGVzY3JpY2FvRU4sIElzRGlzcGApXHJcbiAgICAgICAgICAgICAgICAuZ2V0KCkudGhlbigocGFnZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIFZ1ZS5zZXQodGhpcywgJ2luZm9zQ3VycmVudFBhZ2UnLCBwYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZighcGFnZS5Jc0Rpc3Ape1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQudGl0bGUgPSB0aGlzLmlzRW5nbGlzaCA/ICdMb2FkaW5nLi4uJzogJ0NhcnJlZ2FuZG8uLi4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmlzRW5nbGlzaCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocGFnZS5UaXRsZSA9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC50aXRsZSA9IHRoaXMuY3VycmVudFRpdGxlQnJvd3NlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnRpdGxlID0gYCR7cGFnZS5UaXRsZUVOfSB8ICR7dGhpcy5jdXJyZW50VGl0bGVCcm93c2VyfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnRpdGxlID0gYCR7cGFnZS5UaXRsZX0gfCAke3RoaXMuY3VycmVudFRpdGxlQnJvd3Nlcn1gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRJbmZvc1BhZ2UgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7ZXJyIC0gJ0Vycm8gYW8gY2FycmVnYXIgaW5mb3JtYcOnw7VlcyBkYSBiaWJsaW90ZWNhIGRlIHDDoWdpbmFzLid9YClcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGRhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXNFbmdsaXNoOiBDdXJyZW50TGFuZ3VhZ2VEZWNpbWFsID09IDEwMzMsXHJcbiAgICAgICAgICAgIGN1cnJlbnRMYW5nOiBDdXJyZW50TGFuZ3VhZ2VEZWNpbWFsLFxyXG4gICAgICAgICAgICBsaWJyYXJ5UGFnZXNVUkw6IF9zcFBhZ2VDb250ZXh0SW5mby5zZXJ2ZXJSZXF1ZXN0UGF0aC50b0xvY2FsZUxvd2VyQ2FzZSgpLm1hdGNoKC9wYWdlcy9pKSA/ICcvcGFnZXMnIDogJ3BhZ2luYXMnLFxyXG4gICAgICAgICAgICBpZEN1cnJlbnRQYWdlOiBfc3BQYWdlQ29udGV4dEluZm8ucGFnZUl0ZW1JZCxcclxuICAgICAgICAgICAgaW5mb3NDdXJyZW50UGFnZToge30sXHJcbiAgICAgICAgICAgIGN1cnJlbnRUaXRsZUJyb3dzZXI6IF9zcFBhZ2VDb250ZXh0SW5mby53ZWJUaXRsZSxcclxuICAgICAgICAgICAgbG9hZGVkSW5mb3NQYWdlOiBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICB9LFxyXG4gICAgY3JlYXRlZCgpIHtcclxuICAgICAgICBpZih0aGlzLmlkQ3VycmVudFBhZ2UgJiYgIXRoaXMubG9hZGVkSW5mb3NQYWdlKXtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VQYWdlVGl0bGUoKVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbn0iXX0=\n"],"file":"detalhes-insight.js"}