trabajo-afectivo/public/assets/knowledge_base_public-4b0c56de21e11f95b19cfa2a37ec01d62af38367b52fdaf03580cae8a7dfc960.js
2022-04-14 16:34:36 -03:00

2 lines
No EOL
24 KiB (Stored with Git LFS)
JavaScript

window.Zammad={},function(){function e(){}e.generateIcon=function(e,t){return t?'<i data-font="'+t+'">&#x'+e+"</i>":'<svg class="icon icon-'+e+'"><use xlink:href="/assets/images/icons.svg#icon-'+e+'"></use></svg>'},Zammad.Util=e}(),function(){function i(e){e.stopPropagation(),e.preventDefault();var t=document.querySelector(".dropdown-menu"),n=t.classList.toggle("is-open");t.setAttribute&&t.setAttribute("aria-expanded",n?"true":"false"),n?window.addEventListener("click",i):window.removeEventListener("click",i)}document.addEventListener("DOMContentLoaded",function(){document.querySelector('[data-toggle="dropdown"]').addEventListener("click",i),document.querySelector(".dropdown-menu").addEventListener("click",function(e){e.stopPropagation()})})}(),function(){function n(i){this.el=document.createElement("div"),this.render=function(){this.el.innerHTML=this.constructor.template,this.el.querySelector("a").href=this.itemPath()||this.kbPath(),this.el.querySelector(".close").addEventListener("click",this.close.bind(this))},this.kbPath=function(){return document.querySelector("html").dataset.basePath.replace(encodeURIComponent("{locale}"),i)},this.close=function(){this.el.remove()},this.itemPath=function(){var e=document.querySelector("main");if(!e)return null;var t=e.dataset.basePath,n=e.dataset.availableLocales;return t&&n?(n=n.split(","),a.includes(n,i)?t=t.replace(encodeURIComponent("{locale}"),i):null):null},this.render()}function a(){}n.template='<div class="language-banner">'+Zammad.Util.generateIcon("mood-supergood")+' <p class="language-banner-text"> The Knowledge Base is available in your language <a class="button button--small">activate</a> </p> <div class="spacer"></div> <div class="close">'+Zammad.Util.generateIcon("diagonal-cross")+" </div></div>",a.html=function(){return document.querySelector("html")},a.document_languages=function(){return this.html().dataset.availableLocales.split(",")},a.user_languages=function(){var e=navigator.userLanguage||navigator.languages||navigator.language;return Array.isArray(e)?e:e?[e]:[]},a.is_current=function(e){return this.extract_language(this.html().lang)===this.extract_language(e)},a.includes=function(e,t){return t=this.extract_language(t),e.filter(function(e){return this.extract_language(e)===t},this)[0]!==undefined},a.offer_language=function(){return this.includes(this.user_languages(),this.html().lang)?null:this.document_languages().filter(function(e){return this.includes(this.user_languages(),e)},this)[0]},a.extract_language=function(e){return e.split("-")[0]},a.checkIfBetterLanguageAvailable=function(){var e=this.offer_language();e&&this.show(e)},a.show=function(e){var t=new n(e);document.querySelector(".js-wrapper").prepend(t.el)},a.checkIfBetterLanguageAvailable()}(),function(){function t(){}function i(e){this.el=document.createElement("li"),this.render=function(){this.el.classList.add("result"),this.el.innerHTML=this.constructor.template,this.setTitle(e.title,e.tags),this.setSubtitle(e.subtitle),this.setPreview(e.body),this.setURL(e.url),this.setIcon(e.icon,e.type)},this.setTitle=function(e){var t=e||"";this.el.querySelector(".result-title").innerHTML=t},this.setSubtitle=function(e){this.el.querySelector(".result-category").innerHTML=e||""},this.setPreview=function(e){this.el.querySelector(".result-preview").innerHTML=e||""},this.setURL=function(e){this.el.querySelector("a").href=e||"#"},this.setIcon=function(e,t){this.el.querySelector(".result-icon").innerHTML=this.generateIcon(e,t)},this.generateIcon=function(e,t){switch(t){case"KnowledgeBase::Category::Translation":return iconset=document.querySelector("html").dataset.iconset,Zammad.Util.generateIcon(e,iconset);default:return Zammad.Util.generateIcon(e)}},this.render()}function a(e){this.el=document.createElement("li"),this.el.classList.add("search-message"),this.el.textContent=e.text}document.addEventListener("DOMContentLoaded",function(){var e=document.querySelector(".js-search-input");t.bindEvent(e)}),t.lookup=function(e){this.timeoutIdentifier&&clearTimeout(this.timeoutIdentifier),this.clearContainer();var t=this;this.timeoutIdentifier=setTimeout(function(){t.lookupAction(e)},300)},t.lookupAction=function(e){var t={knowledge_base_id:document.querySelector("html").dataset.id,locale:document.querySelector("html").lang,query:e,flavor:"public"};if(""!==e){var n=this;fetch("/api/v1/knowledge_bases/search",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}).then(function(e){return e.json()}).then(function(e){(0===e.details.length?[new a({text:n.container().dataset.emptyPlaceholder})]:e.details.map(function(e){return new i(e)})).forEach(function(e){n.container().appendChild(e.el)})})["catch"](function(e){var t=new a({text:e.message});n.container().appendChild(t.el)})}},t.container=function(){return document.querySelector(".js-search-results")},t.clearContainer=function(){for(var e=this.container();null!==e.firstChild;)e.removeChild(e.firstChild)},t.bindEvent=function(e){e.addEventListener("input",function(){t.lookup(e.value)})},i.template='<a> <span class="result-icon"></span> <h3 class="result-title"></h3> <div class="result-subtitle"> <span class="result-category"></span> <span class="result-preview"></span> </div></a>'}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm51bGwiXSwibmFtZXMiOlsid2luZG93IiwiWmFtbWFkIiwiVXRpbCIsImdlbmVyYXRlSWNvbiIsImljb25OYW1lIiwiaWNvbnNldCIsInRvZ2dsZURyb3Bkb3duIiwiZXZlbnQiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsImVsZW0iLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJvcGVuIiwiY2xhc3NMaXN0IiwidG9nZ2xlIiwic2V0QXR0cmlidXRlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJMYW5ndWFnZUJhbm5lckVsZW1lbnQiLCJ0YXJnZXRMYW5ndWFnZSIsInRoaXMiLCJlbCIsImNyZWF0ZUVsZW1lbnQiLCJyZW5kZXIiLCJpbm5lckhUTUwiLCJjb25zdHJ1Y3RvciIsInRlbXBsYXRlIiwiaHJlZiIsIml0ZW1QYXRoIiwia2JQYXRoIiwiY2xvc2UiLCJiaW5kIiwiZGF0YXNldCIsImJhc2VQYXRoIiwicmVwbGFjZSIsImVuY29kZVVSSUNvbXBvbmVudCIsInJlbW92ZSIsIml0ZW0iLCJwYXRoIiwib2JqZWN0X2xvY2FsZXMiLCJhdmFpbGFibGVMb2NhbGVzIiwic3BsaXQiLCJMYW5ndWFnZURldGVjdG9yIiwiaW5jbHVkZXMiLCJodG1sIiwiZG9jdW1lbnRfbGFuZ3VhZ2VzIiwidXNlcl9sYW5ndWFnZXMiLCJsYW5ndWFnZXMiLCJuYXZpZ2F0b3IiLCJ1c2VyTGFuZ3VhZ2UiLCJsYW5ndWFnZSIsIkFycmF5IiwiaXNBcnJheSIsImlzX2N1cnJlbnQiLCJsb2NhbGUiLCJleHRyYWN0X2xhbmd1YWdlIiwibGFuZyIsImFycmF5IiwiZmlsdGVyIiwidW5kZWZpbmVkIiwib2ZmZXJfbGFuZ3VhZ2UiLCJ2YWx1ZSIsImNoZWNrSWZCZXR0ZXJMYW5ndWFnZUF2YWlsYWJsZSIsImFub3RoZXJfbGFuZ3VhZ2UiLCJzaG93IiwicHJlcGVuZCIsIktub3dsZWRnZUJhc2VTZWFyY2giLCJTZWFyY2hSZXN1bHRFbGVtZW50IiwiZGF0YSIsImFkZCIsInNldFRpdGxlIiwidGl0bGUiLCJ0YWdzIiwic2V0U3VidGl0bGUiLCJzdWJ0aXRsZSIsInNldFByZXZpZXciLCJib2R5Iiwic2V0VVJMIiwidXJsIiwic2V0SWNvbiIsImljb24iLCJ0eXBlIiwidGV4dCIsIlNlYXJjaFJlc3VsdE1lc3NhZ2UiLCJ0ZXh0Q29udGVudCIsImJpbmRFdmVudCIsImxvb2t1cCIsInF1ZXJ5IiwidGltZW91dElkZW50aWZpZXIiLCJjbGVhclRpbWVvdXQiLCJjbGVhckNvbnRhaW5lciIsInNlbGYiLCJzZXRUaW1lb3V0IiwibG9va3VwQWN0aW9uIiwicGFyYW1zIiwia25vd2xlZGdlX2Jhc2VfaWQiLCJpZCIsImZsYXZvciIsImZldGNoIiwibWV0aG9kIiwiaGVhZGVycyIsIkNvbnRlbnQtVHlwZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0aGVuIiwicmVzcCIsImpzb24iLCJkZXRhaWxzIiwibGVuZ3RoIiwiY29udGFpbmVyIiwiZW1wdHlQbGFjZWhvbGRlciIsIm1hcCIsImZvckVhY2giLCJhcHBlbmRDaGlsZCIsImNhdGNoIiwiZXJyb3IiLCJtZXNzYWdlIiwiZmlyc3RDaGlsZCIsInJlbW92ZUNoaWxkIiwiZmllbGQiXSwibWFwcGluZ3MiOiJBQUNBQSxPQUFPQyxPQUFTLEdBRWhCLFdBQ0UsU0FBU0MsS0FFVEEsRUFBS0MsYUFBZSxTQUFTQyxFQUFVQyxHQUNyQyxPQUFJQSxFQUlHLGlCQUFtQkEsRUFBVSxRQUFVRCxFQUFXLE9BSGhELHlCQUEyQkEsRUFBVyxvREFBc0RBLEVBQVcsa0JBTWxISCxPQUFPQyxLQUFPQSxFQVhoQixHQWNDLFdBV0MsU0FBU0ksRUFBZUMsR0FDdEJBLEVBQU1DLGtCQUNORCxFQUFNRSxpQkFFTixJQUFJQyxFQUFPQyxTQUFTQyxjQUFjLGtCQUM5QkMsRUFBT0gsRUFBS0ksVUFBVUMsT0FBTyxXQUU5QkwsRUFBS00sY0FDTk4sRUFBS00sYUFBYSxnQkFBaUJILEVBQU8sT0FBUyxTQUVsREEs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RUFBS1ksUUFJeEM2QyxFQUFvQjJDLFVBQVksV0FDOUIsT0FBT25HLFNBQVNDLGNBQWMsdUJBR2hDdUQsRUFBb0J3QixlQUFpQixXQUduQyxJQUZBLElBQUltQixFQUFZekYsS0FBS3lGLFlBRVcsT0FBekJBLEVBQVVRLFlBQXFCUixFQUFVUyxZQUFZVCxFQUFVUSxhQUd4RW5ELEVBQW9CbUIsVUFBWSxTQUFTa0MsR0FDdkNBLEVBQU12RyxpQkFBaUIsUUFBUyxXQUFja0QsRUFBb0JvQixPQUFPaUMsRUFBTTFELFVBb0RqRk0sRUFBb0J6QyxTQUFXLG9NQXRIakMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHbG9iYWwgbmFtZXNwYWNlXG53aW5kb3cuWmFtbWFkID0ge307XG5cbihmdW5jdGlvbigpe1xuICBmdW5jdGlvbiBVdGlsKCkgeyB9XG5cbiAgVXRpbC5nZW5lcmF0ZUljb24gPSBmdW5jdGlvbihpY29uTmFtZSwgaWNvbnNldCkge1xuICAgIGlmKCFpY29uc2V0KSB7XG4gICAgICByZXR1cm4gJzxzdmcgY2xhc3M9XCJpY29uIGljb24tJyArIGljb25OYW1lICsgJ1wiPjx1c2UgeGxpbms6aHJlZj1cIi9hc3NldHMvaW1hZ2VzL2ljb25zLnN2ZyNpY29uLScgKyBpY29uTmFtZSArICdcIj48L3VzZT48L3N2Zz4nXG4gICAgfVxuXG4gICAgcmV0dXJuICc8aSBkYXRhLWZvbnQ9XCInICsgaWNvbnNldCArICdcIj4mI3gnICsgaWNvbk5hbWUgKyAnPC9pPidcbiAgfVxuXG4gIFphbW1hZC5VdGlsID0gVXRpbDtcbn0pKClcbjtcbihmdW5jdGlvbigpIHtcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgZG9jdW1lbnRcbiAgICAgIC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXScpXG4gICAgICAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0b2dnbGVEcm9wZG93bilcblxuICAgIGRvY3VtZW50XG4gICAgICAucXVlcnlTZWxlY3RvcignLmRyb3Bkb3duLW1lbnUnKVxuICAgICAgLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXZlbnQpIHsgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgfSlcbiAgfSlcblxuICBmdW5jdGlvbiB0b2dnbGVEcm9wZG93bihldmVudCl7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICB2YXIgZWxlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi1tZW51JylcbiAgICB2YXIgb3BlbiA9IGVsZW0uY2xhc3NMaXN0LnRvZ2dsZSgnaXMtb3BlbicpXG5cbiAgICBpZihlbGVtLnNldEF0dHJpYnV0ZSkgLy8gbm90IHN1cHBvcnRlZCBieSBJRTExXG4gICAgICBlbGVtLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIG9wZW4gPyAndHJ1ZScgOiAnZmFsc2UnKVxuXG4gICAgaWYob3Blbikge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdG9nZ2xlRHJvcGRvd24pXG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRvZ2dsZURyb3Bkb3duKVxuICAgIH1cbiAgfVxufSgpKVxuO1xuKGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBMYW5ndWFnZUJhbm5lckVsZW1lbnQodGFyZ2V0TGFuZ3VhZ2UpIHtcbiAgICB0aGlzLmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcblxuICAgIHRoaXMucmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmVsLmlubmVySFRNTCA9IHRoaXMuY29uc3RydWN0b3IudGVtcGxhdGVcbiAgICAgIHRoaXMuZWwucXVlcnlTZWxlY3RvcignYScpLmhyZWYgPSB0aGlzLml0ZW1QYXRoKCkgfHwgdGhpcy5rYlBhdGgoKVxuICAgICAgdGhpcy5lbC5xdWVyeVNlbGVjdG9yKCcuY2xvc2UnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY2xvc2UuYmluZCh0aGlzKSlcbiAgICB9XG5cbiAgICB0aGlzLmtiUGF0aCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGh0bWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdodG1sJylcbiAgICAgIHJldHVybiBodG1sLmRhdGFzZXQuYmFzZVBhdGgucmVwbGFjZShlbmNvZGVVUklDb21wb25lbnQoJ3tsb2NhbGV9JyksIHRhcmdldExhbmd1YWdlKVxuICAgIH1cblxuICAgIHRoaXMuY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuZWwucmVtb3ZlKClcbiAgICB9XG5cbiAgICB0aGlzLml0ZW1QYXRoID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21haW4nKVxuICAgICAgaWYoIWl0ZW0pIHsgcmV0dXJuIG51bGwgfVxuXG4gICAgICB2YXIgcGF0aCA9IGl0ZW0uZGF0YXNldC5iYXNlUGF0aFxuICAgICAgdmFyIG9iamVjdF9sb2NhbGVzID0gaXRlbS5kYXRhc2V0LmF2YWlsYWJsZUxvY2FsZXNcbiAgICAgIGlmKCFwYXRoIHx8ICFvYmplY3RfbG9jYWxlcykgeyByZXR1cm4gbnVsbCB9XG5cbiAgICAgIG9iamVjdF9sb2NhbGVzID0gb2JqZWN0X2xvY2FsZXMuc3BsaXQoJywnKVxuICAgICAgaWYoIUxhbmd1YWdlRGV0ZWN0b3IuaW5jbHVkZXMob2JqZWN0X2xvY2FsZXMsIHRhcmdldExhbmd1YWdlKSkgeyByZXR1cm4gbnVsbCB9XG5cbiAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoZW5jb2RlVVJJQ29tcG9uZW50KCd7bG9jYWxlfScpLCB0YXJnZXRMYW5ndWFnZSlcblxuICAgICAgcmV0dXJuIHBhdGhcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcigpXG4gIH1cblxuICBMYW5ndWFnZUJhbm5lckVsZW1lbnQudGVtcGxhdGUgPSAnPGRpdiBjbGFzcz1cImxhbmd1YWdlLWJhbm5lclwiPicgK1xuICBaYW1tYWQuVXRpbC5nZW5lcmF0ZUljb24oJ21vb2Qtc3VwZXJnb29kJykgK1xuICAnICA8cCBjbGFzcz1cImxhbmd1YWdlLWJhbm5lci10ZXh0XCI+JyArXG4gICcgICAgVGhlIEtub3dsZWRnZSBCYXNlIGlzIGF2YWlsYWJsZSBpbiB5b3VyIGxhbmd1YWdlIDxhIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi0tc21hbGxcIj5hY3RpdmF0ZTwvYT4nICtcbiAgJyAgPC9wPicgK1xuICAnICA8ZGl2IGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+JyArXG4gICcgIDxkaXYgY2xhc3M9XCJjbG9zZVwiPicgK1xuICBaYW1tYWQuVXRpbC5nZW5lcmF0ZUljb24oJ2RpYWdvbmFsLWNyb3NzJykgK1xuICAnICA8L2Rpdj4nICtcbiAgJzwvZGl2Pic7XG5cbiAgZnVuY3Rpb24gTGFuZ3VhZ2VEZXRlY3RvcigpIHsgfVxuXG4gIExhbmd1YWdlRGV0ZWN0b3IuaHRtbCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaHRtbCcpIH1cblxuICBMYW5ndWFnZURldGVjdG9yLmRvY3VtZW50X2xhbmd1YWdlcyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmh0bWwoKS5kYXRhc2V0LmF2YWlsYWJsZUxvY2FsZXMuc3BsaXQoJywnKVxuICB9XG5cbiAgTGFuZ3VhZ2VEZXRlY3Rvci51c2VyX2xhbmd1YWdlcyA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBsYW5ndWFnZXMgPSBuYXZpZ2F0b3IudXNlckxhbmd1YWdlIHx8IG5hdmlnYXRvci5sYW5ndWFnZXMgfHwgbmF2aWdhdG9yLmxhbmd1YWdlXG5cbiAgICBpZihBcnJheS5pc0FycmF5KGxhbmd1YWdlcykpIHtcbiAgICAgIHJldHVybiBsYW5ndWFnZXNcbiAgICB9IGVsc2UgaWYobGFuZ3VhZ2VzKSB7XG4gICAgICByZXR1cm4gW2xhbmd1YWdlc11cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuICB9XG5cbiAgTGFuZ3VhZ2VEZXRlY3Rvci5pc19jdXJyZW50ID0gZnVuY3Rpb24obG9jYWxlKSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0cmFjdF9sYW5ndWFnZSh0aGlzLmh0bWwoKS5sYW5nKSA9PT0gdGhpcy5leHRyYWN0X2xhbmd1YWdlKGxvY2FsZSlcbiAgfVxuXG4gIExhbmd1YWdlRGV0ZWN0b3IuaW5jbHVkZXMgPSBmdW5jdGlvbihhcnJheSwgaXRlbSkge1xuICAgIGl0ZW0gPSB0aGlzLmV4dHJhY3RfbGFuZ3VhZ2UoaXRlbSlcblxuICAgIHJldHVybiBhcnJheS5maWx0ZXIoZnVuY3Rpb24obG9jYWxlKSB7IHJldHVybiB0aGlzLmV4dHJhY3RfbGFuZ3VhZ2UobG9jYWxlKSA9PT0gaXRlbX0sIHRoaXMpWzBdICE9PSB1bmRlZmluZWRcbiAgfVxuXG4gIExhbmd1YWdlRGV0ZWN0b3Iub2ZmZXJfbGFuZ3VhZ2UgPSBmdW5jdGlvbigpIHtcbiAgICBpZih0aGlzLmluY2x1ZGVzKHRoaXMudXNlcl9sYW5ndWFnZXMoKSwgdGhpcy5odG1sKCkubGFuZykpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRvY3VtZW50X2xhbmd1YWdlcygpLmZpbHRlcihmdW5jdGlvbihsYW5nKSB7IHJldHVybiB0aGlzLmluY2x1ZGVzKHRoaXMudXNlcl9sYW5ndWFnZXMoKSwgbGFuZyl9LCB0aGlzKVswXVxuICB9XG5cbiAgTGFuZ3VhZ2VEZXRlY3Rvci5leHRyYWN0X2xhbmd1YWdlID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUuc3BsaXQoJy0nKVswXVxuICB9XG5cbiAgTGFuZ3VhZ2VEZXRlY3Rvci5jaGVja0lmQmV0dGVyTGFuZ3VhZ2VBdmFpbGFibGUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgYW5vdGhlcl9sYW5ndWFnZSA9IHRoaXMub2ZmZXJfbGFuZ3VhZ2UoKVxuXG4gICAgaWYoIWFub3RoZXJfbGFuZ3VhZ2UpIHsgcmV0dXJuIH1cblxuICAgIHRoaXMuc2hvdyhhbm90aGVyX2xhbmd1YWdlKVxuICB9XG5cbiAgTGFuZ3VhZ2VEZXRlY3Rvci5zaG93ID0gZnVuY3Rpb24obGFuZykge1xuICAgIHZhciBlbGVtID0gbmV3IExhbmd1YWdlQmFubmVyRWxlbWVudChsYW5nKVxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy13cmFwcGVyJykucHJlcGVuZChlbGVtLmVsKVxuICB9XG5cbiAgTGFuZ3VhZ2VEZXRlY3Rvci5jaGVja0lmQmV0dGVyTGFuZ3VhZ2VBdmFpbGFibGUoKVxufSgpKVxuO1xuKGZ1bmN0aW9uKCkge1xuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICB2YXIgZWxlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy1zZWFyY2gtaW5wdXQnKVxuICAgIEtub3dsZWRnZUJhc2VTZWFyY2guYmluZEV2ZW50KGVsZW0pXG4gIH0pO1xuXG4gIGZ1bmN0aW9uIEtub3dsZWRnZUJhc2VTZWFyY2goKSB7IH1cblxuICBLbm93bGVkZ2VCYXNlU2VhcmNoLmxvb2t1cCA9IGZ1bmN0aW9uKHF1ZXJ5KSB7XG4gICAgaWYodGhpcy50aW1lb3V0SWRlbnRpZmllcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dElkZW50aWZpZXIpXG4gICAgfVxuXG4gICAgdGhpcy5jbGVhckNvbnRhaW5lcigpXG5cbiAgICB2YXIgc2VsZiA9IHRoaXNcbiAgICB0aGlzLnRpbWVvdXRJZGVudGlmaWVyID0gc2V0VGltZW91dChmdW5jdGlvbihlKSB7IHNlbGYubG9va3VwQWN0aW9uKHF1ZXJ5KSB9LCAzMDApXG4gIH1cblxuICBLbm93bGVkZ2VCYXNlU2VhcmNoLmxvb2t1cEFjdGlvbiA9IGZ1bmN0aW9uKHF1ZXJ5KSB7XG4gICAgdmFyIHBhcmFtcyA9IHtcbiAgICAgIGtub3dsZWRnZV9iYXNlX2lkOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdodG1sJykuZGF0YXNldC5pZCxcbiAgICAgIGxvY2FsZTogZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaHRtbCcpLmxhbmcsXG4gICAgICBxdWVyeTogcXVlcnksXG4gICAgICBmbGF2b3I6ICdwdWJsaWMnXG4gICAgfVxuXG4gICAgaWYocXVlcnkgPT09ICcnKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgc2VsZiA9IHRoaXNcblxuICAgIGZldGNoKCcvYXBpL3YxL2tub3dsZWRnZV9iYXNlcy9zZWFyY2gnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHBhcmFtcylcbiAgICB9KVxuICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzcCkgeyByZXR1cm4gcmVzcC5qc29uKCkgfSlcbiAgICAgIC50aGVuKGZ1bmN0aW9uKGpzb24pIHtcbiAgICAgICAgdmFyIG5ld0VsZW1zXG5cbiAgICAgICAgaWYoanNvbi5kZXRhaWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIG5ld0VsZW1zID0gW25ldyBTZWFyY2hSZXN1bHRNZXNzYWdlKHsgdGV4dDogc2VsZi5jb250YWluZXIoKS5kYXRhc2V0LmVtcHR5UGxhY2Vob2xkZXIgfSldXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3RWxlbXMgPSBqc29uLmRldGFpbHMubWFwKGZ1bmN0aW9uKGVsZW0pIHsgcmV0dXJuIG5ldyBTZWFyY2hSZXN1bHRFbGVtZW50KGVsZW0pfSlcbiAgICAgICAgfVxuXG4gICAgICAgIG5ld0VsZW1zLmZvckVhY2goZnVuY3Rpb24oZWxlbSkgeyBzZWxmLmNvbnRhaW5lcigpLmFwcGVuZENoaWxkKGVsZW0uZWwpIH0gKVxuICAgICAgfSkuY2F0Y2goIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgIHZhciBlbGVtID0gbmV3IFNlYXJjaFJlc3VsdE1lc3NhZ2UoeyB0ZXh0OiBlcnJvci5tZXNzYWdlIH0pXG4gICAgICAgIHNlbGYuY29udGFpbmVyKCkuYXBwZW5kQ2hpbGQoZWxlbS5lbClcbiAgICAgIH0pXG4gIH1cblxuICBLbm93bGVkZ2VCYXNlU2VhcmNoLmNvbnRhaW5lciA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtc2VhcmNoLXJlc3VsdHMnKVxuICB9XG5cbiAgS25vd2xlZGdlQmFzZVNlYXJjaC5jbGVhckNvbnRhaW5lciA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcigpXG5cbiAgICB3aGlsZSAoY29udGFpbmVyLmZpcnN0Q2hpbGQgIT09IG51bGwpIGNvbnRhaW5lci5yZW1vdmVDaGlsZChjb250YWluZXIuZmlyc3RDaGlsZCk7XG4gIH1cblxuICBLbm93bGVkZ2VCYXNlU2VhcmNoLmJpbmRFdmVudCA9IGZ1bmN0aW9uKGZpZWxkKSB7XG4gICAgZmllbGQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbihlKSB7IEtub3dsZWRnZUJhc2VTZWFyY2gubG9va3VwKGZpZWxkLnZhbHVlKX0pXG4gIH1cblxuICBmdW5jdGlvbiBTZWFyY2hSZXN1bHRFbGVtZW50KGRhdGEpIHtcbiAgICB0aGlzLmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuXG4gICAgdGhpcy5yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuZWwuY2xhc3NMaXN0LmFkZCgncmVzdWx0JylcbiAgICAgIHRoaXMuZWwuaW5uZXJIVE1MID0gdGhpcy5jb25zdHJ1Y3Rvci50ZW1wbGF0ZVxuXG4gICAgICB0aGlzLnNldFRpdGxlKGRhdGEudGl0bGUsIGRhdGEudGFncylcbiAgICAgIHRoaXMuc2V0U3VidGl0bGUoZGF0YS5zdWJ0aXRsZSlcbiAgICAgIHRoaXMuc2V0UHJldmlldyhkYXRhLmJvZHkpXG4gICAgICB0aGlzLnNldFVSTChkYXRhLnVybClcbiAgICAgIHRoaXMuc2V0SWNvbihkYXRhLmljb24sIGRhdGEudHlwZSlcbiAgICB9XG5cbiAgICB0aGlzLnNldFRpdGxlID0gZnVuY3Rpb24odGV4dCwgdGFncykge1xuICAgICAgdmFyIHRpdGxlID0gdGV4dCB8fCAnJ1xuXG4gICAgICB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoJy5yZXN1bHQtdGl0bGUnKS5pbm5lckhUTUwgPSB0aXRsZVxuICAgIH1cblxuICAgIHRoaXMuc2V0U3VidGl0bGUgPSBmdW5jdGlvbih0ZXh0KSB7XG4gICAgICB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoJy5yZXN1bHQtY2F0ZWdvcnknKS5pbm5lckhUTUwgPSB0ZXh0IHx8ICcnXG4gICAgfVxuXG4gICAgdGhpcy5zZXRQcmV2aWV3ID0gZnVuY3Rpb24odGV4dCkge1xuICAgICAgdGhpcy5lbC5xdWVyeVNlbGVjdG9yKCcucmVzdWx0LXByZXZpZXcnKS5pbm5lckhUTUwgPSB0ZXh0IHx8ICcnXG4gICAgfVxuXG4gICAgdGhpcy5zZXRVUkwgPSBmdW5jdGlvbih1cmwpIHtcbiAgICAgIHRoaXMuZWwucXVlcnlTZWxlY3RvcignYScpLmhyZWYgPSAgdXJsIHx8ICcjJ1xuICAgIH1cblxuICAgIHRoaXMuc2V0SWNvbiA9IGZ1bmN0aW9uKGljb25OYW1lLCB0eXBlKSB7XG4gICAgICB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoJy5yZXN1bHQtaWNvbicpLmlubmVySFRNTCA9IHRoaXMuZ2VuZXJhdGVJY29uKGljb25OYW1lLCB0eXBlKVxuICAgIH1cblxuICAgIHRoaXMuZ2VuZXJhdGVJY29uID0gZnVuY3Rpb24oaWNvbk5hbWUsIHR5cGUpIHtcbiAgICAgIHN3aXRjaCh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ0tub3dsZWRnZUJhc2U6OkNhdGVnb3J5OjpUcmFuc2xhdGlvbic6XG4gICAgICAgICAgaWNvbnNldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2h0bWwnKS5kYXRhc2V0Lmljb25zZXRcbiAgICAgICAgICByZXR1cm4gWmFtbWFkLlV0aWwuZ2VuZXJhdGVJY29uKGljb25OYW1lLCBpY29uc2V0KVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBaYW1tYWQuVXRpbC5nZW5lcmF0ZUljb24oaWNvbk5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXIoKVxuICB9XG5cbiAgU2VhcmNoUmVzdWx0RWxlbWVudC50ZW1wbGF0ZSA9ICc8YT4nICtcbiAgJyAgPHNwYW4gY2xhc3M9XCJyZXN1bHQtaWNvblwiPjwvc3Bhbj4nICtcbiAgJyAgPGgzIGNsYXNzPVwicmVzdWx0LXRpdGxlXCI+PC9oMz4nICtcbiAgJyAgPGRpdiBjbGFzcz1cInJlc3VsdC1zdWJ0aXRsZVwiPicgK1xuICAnICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0LWNhdGVnb3J5XCI+PC9zcGFuPicgK1xuICAnICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0LXByZXZpZXdcIj48L3NwYW4+JyArXG4gICcgPC9kaXY+JyArXG4gICc8L2E+JztcblxuICBmdW5jdGlvbiBTZWFyY2hSZXN1bHRNZXNzYWdlKGRhdGEpIHtcbiAgICB0aGlzLmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgIHRoaXMuZWwuY2xhc3NMaXN0LmFkZCgnc2VhcmNoLW1lc3NhZ2UnKVxuICAgIHRoaXMuZWwudGV4dENvbnRlbnQgPSBkYXRhLnRleHQ7XG4gIH1cbn0oKSlcbjtcbi8vIEdsb2JhbCBuYW1lc3BhY2UgaGFzIHRvIGJlIHNldHVwIGZpcnN0XG5cbi8vIE1ha2UgdXRpbGl0eSBmdW5jdGlvbnMgYXZhaWxhYmxlIGJlZm9yZSB0aGUgcmVzdCBvZiB0aGUgY29kZSBpcyBsb2FkZWRcblxuXG4vLyBMb2FkIHRoZSByZXN0XG5cbjtcbiJdfQ==