PageSourceSearch

https://orthonebraska.com/wp-content/themes/orthonebraska/js/main.min.js?ver=1790864071

js orthonebraska.com collected 2026-10-02 06:28:17 UTC 59,185 bytes, 4 lines download raw bytes

1!function(){"use strict";function e(e,t,n,r,o,a,i){try{var c=e[a](i),l=c.value}catch(e){return void n(e)}c.done?t(l):Promise.resolve(l).then(r,o)}function t(e,t,n){return t&&function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,a(r.key),r)}}(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function n(e,t,n){return(t=a(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(){
2/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
3var e,t,n="function"==typeof Symbol?Symbol:{},a=n.iterator||"@@iterator",i=n.toStringTag||"@@toStringTag";function c(n,r,a,i){var c=r&&r.prototype instanceof s?r:s,d=Object.create(c.prototype);return o(d,"_invoke",function(n,r,o){var a,i,c,s=0,d=o||[],u=!1,f={p:0,n:0,v:e,a:v,f:v.bind(e,4),d:function(t,n){return a=t,i=0,c=e,f.n=n,l}};function v(n,r){for(i=n,c=r,t=0;!u&&s&&!o&&t<d.length;t++){var o,a=d[t],v=f.p,m=a[2];n>3?(o=m===r)&&(c=a[(i=a[4])?5:(i=3,3)],a[4]=a[5]=e):a[0]<=v&&((o=n<2&&v<a[1])?(i=0,f.v=r,f.n=a[1]):v<m&&(o=n<3||a[0]>r||r>m)&&(a[4]=n,a[5]=r,f.n=m,i=0))}if(o||n>1)return l;throw u=!0,r}return function(o,d,m){if(s>1)throw TypeError("Generator is already running");for(u&&1===d&&v(d,m),i=d,c=m;(t=i<2?e:c)||!u;){a||(i?i<3?(i>1&&(f.n=-1),v(i,c)):f.n=c:f.v=c);try{if(s=2,a){if(i||(o="next"),t=a[o]){if(!(t=t.call(a,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,i<2&&(i=0)}else 1===i&&(t=a.return)&&t.call(a),i<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),i=1);a=e}else if((t=(u=f.n<0)?c:n.call(r,f))!==l)break}catch(t){a=e,i=1,c=t}finally{s=1}}return{value:t,done:u}}}(n,a,i),!0),d}var l={};function s(){}function d(){}function u(){}t=Object.getPrototypeOf;var f=[][a]?t(t([][a]())):(o(t={},a,function(){return this}),t),v=u.prototype=s.prototype=Object.create(f);function m(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,o(e,i,"GeneratorFunction")),e.prototype=Object.create(v),e}return d.prototype=u,o(v,"constructor",u),o(u,"constructor",d),d.displayName="GeneratorFunction",o(u,i,"GeneratorFunction"),o(v),o(v,i,"Generator"),o(v,a,function(){return this}),o(v,"toString",function(){return"[object Generator]"}),(r=function(){return{w:c,m:m}})()}function o(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}o=function(e,t,n,r){function i(t,n){o(e,t,function(e){return this._invoke(t,n,e)})}t?a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(i("next",0),i("throw",1),i("return",2))},o(e,t,n,r)}function a(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}var i=t(function e(t,r,o){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),n(this,"alertElem",void 0),n(this,"cookieName",void 0),n(this,"cookieMaxAge",void 0),this.alertElem=t,this.cookieName=r,this.cookieMaxAge=o||86400},[{key:"init",value:function(){this.alertElem&&(this.cookieName?(this.setUpAlertOpen(),this.setUpAlertClose()):console.log("ERROR: Alert cookie name not provided."))}},{key:"checkForCookie",value:function(){var e=document.cookie.match(new RegExp("(?:^|; )"+this.cookieName.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return e?decodeURIComponent(e[1]):void 0}},{key:"closeAlert",value:function(){this.alertElem.classList.remove("is-active"),document.cookie="".concat(this.cookieName,"=Notified; max-age=").concat(this.cookieMaxAge,"; path=/")}},{key:"setUpAlertOpen",value:function(){null==this.checkForCookie(this.cookieName)&&this.alertElem.classList.add("is-active")}},{key:"setUpAlertClose",value:function(){var e=this,t=this.alertElem.querySelector("[data-alert-close]");t?t.addEventListener("click",function(t){t.preventDefault(),e.closeAlert()}):console.log("ERROR: Alert close button does not exist.")}}]),c=document.getElementById("site-alert");c&&new i(c,"GlobalAlert1",86400).init();document.addEventListener("click",function(e){var t=e.target.closest("[data-scroll-link]");if(t){e.preventDefault();var n=t.getAttribute("href"),r=document.querySelector(n);if(r){var o=r.getBoundingClientRect().top+window.pageYOffset+-80,a=window.matchMedia("(prefers-reduced-motion: reduce)").matches?"auto":"smooth";window.scrollTo({top:o,behavior:a}),r.setAttribute("tabindex","-1"),r.focus({preventScroll:!0})}}}),document.addEventListener("DOMContentLoaded",function(){var e=document.querySelector("#page-header");if(e&&!e.classList.contains("page-header--static")){var t=window.scrollY,n=!1,r=function(){var r=Math.max(0,window.scrollY);if(e.classList.toggle("is-scrolled",r>20),e.classList.toggle("is-scroll-view",r>400),r>400){var o=t-r>10;r>t?e.classList.add("is-scroll-hidden"):o&&e.classList.remove("is-scroll-hidden")}else e.classList.remove("is-scroll-hidden");t=r,n=!1};window.addEventListener("scroll",function(){n||(window.requestAnimationFrame(r),n=!0)},{passive:!0}),r()}}),document.addEventListener("DOMContentLoaded",function(){var e=document.body;document.getElementById("page-header");var t=function(t){var n,r,o,a,i=t.getAttribute("aria-controls"),c=document.getElementById(i);t.setAttribute("aria-expanded",!0),c.hidden=!1,c.focus(),n=c,r=Array.from(n.querySelectorAll('button:not([disabled]), [href], input
3:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])')).filter(function(e){return e.offsetWidth||e.offsetHeight}),o=r[0],a=r[r.length-1],n.addEventListener("keydown",function(e){"Tab"===e.key&&(e.shiftKey?document.activeElement===o&&(e.preventDefault(),a.focus()):document.activeElement===a&&(e.preventDefault(),o.focus()))}),e.classList.add("nav-open")},n=function(t){var n=t.getAttribute("aria-controls"),r=document.getElementById(n),o=document.querySelector('[data-nav-open][aria-controls="'.concat(n,'"]'));o.setAttribute("aria-expanded",!1),r.hidden=!0,o.focus(),e.classList.remove("nav-open")};document.addEventListener("keydown",function(e){if("Escape"===e.key){var t=document.querySelector(".side-nav__panel:not([hidden])");if(t){var r=t.querySelector("[data-nav-close]");n(r)}}}),document.addEventListener("click",function(e){var r=e.target.closest("[data-nav-open], [data-nav-close]");if(r&&r.getAttribute("aria-controls")){if(e.preventDefault(),r.hasAttribute("data-nav-open"))document.querySelectorAll("[data-nav-open]").forEach(function(e){n(e)}),t(r);r.hasAttribute("data-nav-close")&&n(r)}})}),document.addEventListener("DOMContentLoaded",function(){var e=document.querySelector(".section-nav"),t=document.querySelectorAll("[data-page-section]");if(e&&t.length){var n=null,r=new IntersectionObserver(function(t){t.forEach(function(t){if(t.isIntersecting){var r=t.target.id;if(r&&r!==n){e.querySelectorAll("a.active").forEach(function(e){return e.classList.remove("active")});var o=e.querySelector('a[href="#'.concat(r,'"]'));o&&(o.classList.add("active"),n=r)}}})},{root:null,rootMargin:"-100px 0px -70% 0px",threshold:0});t.forEach(function(e){return r.observe(e)})}}),document.addEventListener("DOMContentLoaded",function(){var e=document.querySelector(".cta-header");if(e){var t=function(){var t=Math.max(0,window.scrollY);e.classList.toggle("is-scroll",t>400)};window.addEventListener("scroll",function(){window.requestAnimationFrame(t)},{passive:!0}),t()}}),document.addEventListener("DOMContentLoaded",function(){var e=document.body,t=function(e){return e.matches(".floating-label input, .floating-label textarea, .floating-label select")&&"hidden"!==e.type},n=function(e){t(e.target)&&o(e.target)},r=function(e){t(e.target)&&o(e.target)},o=function(e){var t=e.closest("fieldset");t&&(e.value.trim()||document.activeElement===e?t.classList.remove("is-empty"):t.classList.add("is-empty"))};document.querySelectorAll(".floating-label input, .floating-label textarea, .floating-label select").forEach(o),e.addEventListener("focus",n,!0),e.addEventListener("blur",n,!0),e.addEventListener("input",r,!0),e.addEventListener("change",r,!0)}),document.addEventListener("DOMContentLoaded",function(){if(document.querySelectorAll(".accordion").length>0){var e=document.querySelectorAll(".condition-link-list");e.length>0&&Array.from(e).forEach(function(e){e.addEventListener("click",function(e){if(e.target.classList.contains("condition-open-link")){e.preventDefault();var t=e.target.getAttribute("data-condition-id"),n=document.getElementById("condition-link-"+t),r=n.getAttribute("aria-expanded"),o=window.matchMedia("(prefers-reduced-motion: reduce)").matches?"auto":"smooth";"true"!=r&&n.click(),n.scrollIntoView({behavior:o}),n.focus({preventScroll:!0})}})});var t=document.querySelector(".accordion");function n(e){var t=e.target.closest(".accordion__toggle");if(t){var n="true"==t.getAttribute("aria-expanded"),r=t.getAttribute("aria-controls"),o=document.getElementById(r);t.setAttribute("aria-expanded",!n),o.hidden=n}}t&&t.addEventListener("click",function(e){n(e)})}}),document.addEventListener("DOMContentLoaded",function(){var t=document.getElementById("loadMoreReviews");if(t){var n=document.getElementById("show-more-reviews"),o=document.getElementById("reviewsContainer"),a=o.dataset.reviewSlug,i=parseInt(o.dataset.page,10),c=parseInt(o.dataset.totalPages,10),l=o.dataset.styleString;if(n&&o&&a){var s,d=function(e){var t=parseFloat(e.rating),n=function(e){var t="";switch(!0){case e<1:t="half";break;case e>=1&&e<1.5:t="one";break;case e>=1.5&&e<2:t="one-half";break;case e>=2&&e<2.5:t="two";break;case e>=2.5&&e<3:t="two-half";break;case e>=3&&e<3.5:t="three";break;case e>=3.5&&e<4:t="three-half";break;case e>=4&&e<4.5:t="four";break;case e>=4.5&&e<5:t="four-half";break;case e>=5:t="five"}return t}(t),r=new Date(e.review_timestamp).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"}),o='<article class="review">';return o+='<div class="row">',t&&(o+='<div class="col span2">',o+='<div class="stars">',o+='<img src="'.concat(l,"/img/elem/ratings/stars-").concat(n,'.png" alt="').concat(t,' stars">'),o+="</div>",o+='<div class="review-date">'.concat(r,"</div>"),o+="</div>"),e.comment&&(o+='<div class="col span10">',o+='<div class="review-content">'.concat(e.comment,"</div>"),o+="</div>"),o+="</div>",o+="</article>"};t.addEventListener("click",(s=r().m(function e(){var l,s,u,f,v,m;return r().w(function(e){for(;;)switch(e.p=e.n){case 0:return i++,o.dataset.page=i,n.classList.add("loading"),l="".concat(window.location.protocol,"//").concat(window.location.host,"/wp-admin/admin-ajax.php"),e.p=1,(s=new URLSearchParams({action:"get_additional_reviews",reviewPageCount:i})).append("reviewSlug",a),e.n=2,fetch(l,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:s.toString()});case 2:if((u=e.v).ok){e.n=3;break}throw new Error("HTTP error: ".concat(u.status));case 3:return e.n=4,u.json();case 4:f=e.v,v=f.map(function(e){return d(e)}).join(""),n.classList.remove("loading"),o.insertAdjacentHTML("beforeend",v),i>=c&&(t.style.display="none"),e.n=6;break;case 5:e.p=5,m=e.v,console.error("AJAX error:",m);case 6:return e.p=6,n.classList.remove("loading"),e.f(6);case 7:return e.a(2)}},e,null,[[1,5,6,7]])}),function(){var t=this,n=arguments;return new Promise(function(r,o){var a=s.apply(t,n);function i(t){e(a,r,o,i,c,"next",t)}function c(t){e(a,r,o,i,c,"throw",t)}i(void 0)})}))}}}),function(){if("undefined"!=typeof Weglot){var e=[],t=function(e){var t=e.btn,n=e.menu;
3t.setAttribute("aria-expanded","false"),n.hidden=!0};e=Array.from(document.querySelectorAll("[data-language-switcher]")).map(function(n){var r=n.querySelector("[data-language-switcher-btn]"),o=null==r?void 0:r.getAttribute("aria-controls"),a=o?document.getElementById(o):null,i=n.querySelector("[data-current-language]");if(!r||!a)return null;var c={language_switcher:n,btn:r,menu:a,label:i};return n.hidden=!1,r.addEventListener("click",function(n){n.preventDefault(),function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e.forEach(function(e){e!==n&&t(e)})}(c),function(e){var t=e.btn,n=e.menu,r="true"===t.getAttribute("aria-expanded");t.setAttribute("aria-expanded",String(!r)),n.hidden=r}(c)}),document.addEventListener("click",function(e){n.contains(e.target)||t(c)}),n.addEventListener("keydown",function(e){"Escape"===e.key&&"true"===r.getAttribute("aria-expanded")&&(t(c),r.focus())}),c}).filter(Boolean),e.length&&Weglot.on("languageChanged",function(n,r){var o=Weglot.getLanguageName(n),a=e.find(function(e){return"true"===e.btn.getAttribute("aria-expanded")});e.forEach(function(e){e.label&&(e.label.textContent=o,t(e)),a&&a.btn.focus()})})}}();var l=document.querySelectorAll("button[data-search-term]");l.length&&l.forEach(function(e){e.addEventListener("click",function(e){var t,n=e.target.getAttribute("data-search-term");n&&(null===(t=window.epInstantResults)||void 0===t||t.openModal({search:n}))})})}();
4//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5taW4uanMiLCJzb3VyY2VzIjpbIl9zcmMvX21vZHVsZXMvYWxlcnQuanMiLCJfc3JjL21haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgQWxlcnQge1xuICBhbGVydEVsZW07XG4gIGNvb2tpZU5hbWU7XG4gIGNvb2tpZU1heEFnZTtcblxuICBjb25zdHJ1Y3RvcihhbGVydEVsZW0sIGNvb2tpZU5hbWUsIGNvb2tpZU1heEFnZSkge1xuICAgIHRoaXMuYWxlcnRFbGVtID0gYWxlcnRFbGVtO1xuICAgIHRoaXMuY29va2llTmFtZSA9IGNvb2tpZU5hbWU7XG4gICAgdGhpcy5jb29raWVNYXhBZ2UgPSBjb29raWVNYXhBZ2UgPyBjb29raWVNYXhBZ2UgOiA4NjQwMDtcbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgaWYoICF0aGlzLmFsZXJ0RWxlbSApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiggIXRoaXMuY29va2llTmFtZSApIHtcbiAgICAgIGNvbnNvbGUubG9nKCdFUlJPUjogQWxlcnQgY29va2llIG5hbWUgbm90IHByb3ZpZGVkLicpXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXRVcEFsZXJ0T3BlbigpO1xuICAgIHRoaXMuc2V0VXBBbGVydENsb3NlKCk7XG4gIH1cblxuICBjaGVja0ZvckNvb2tpZSgpIHtcbiAgICBsZXQgbWF0Y2hlcyA9IGRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKFxuICAgICAgXCIoPzpefDsgKVwiICsgdGhpcy5jb29raWVOYW1lLnJlcGxhY2UoLyhbXFwuJD8qfHt9XFwoXFwpXFxbXFxdXFxcXFxcL1xcK15dKS9nLCAnXFxcXCQxJykgKyBcIj0oW147XSopXCJcbiAgICApKTtcbiAgICBcbiAgICByZXR1cm4gbWF0Y2hlcyA/IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaGVzWzFdKSA6
4IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNsb3NlQWxlcnQoKSB7XG4gICAgdGhpcy5hbGVydEVsZW0uY2xhc3NMaXN0LnJlbW92ZSgnaXMtYWN0aXZlJyk7XG4gICAgZG9jdW1lbnQuY29va2llID0gYCR7dGhpcy5jb29raWVOYW1lfT1Ob3RpZmllZDsgbWF4LWFnZT0ke3RoaXMuY29va2llTWF4QWdlfTsgcGF0aD0vYDtcbiAgfVxuXG4gIHNldFVwQWxlcnRPcGVuKCkge1xuICAgIGlmKCB0aGlzLmNoZWNrRm9yQ29va2llKHRoaXMuY29va2llTmFtZSkgPT0gbnVsbCApIHtcbiAgICAgIHRoaXMuYWxlcnRFbGVtLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpO1xuICAgIH1cbiAgfVxuICBcbiAgc2V0VXBBbGVydENsb3NlKCkge1xuICAgIGxldCBhbGVydENsb3NlID0gdGhpcy5hbGVydEVsZW0ucXVlcnlTZWxlY3RvcignW2RhdGEtYWxlcnQtY2xvc2VdJyk7XG5cbiAgICBpZiggIWFsZXJ0Q2xvc2UgKSB7XG4gICAgICBjb25zb2xlLmxvZygnRVJST1I6IEFsZXJ0IGNsb3NlIGJ1dHRvbiBkb2VzIG5vdCBleGlzdC4nKVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGFsZXJ0Q2xvc2UuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5jbG9zZUFsZXJ0KCk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgQWxlcnQgfTsiLCJpbXBvcnQgeyBBbGVydCB9IGZyb20gJy4vX21vZHVsZXMvYWxlcnQuanMnO1xyXG5cclxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBDT05URU5UU1xyXG4gIEFsZXJ0XHJcbiAgU21vb3RoIHNjcm9sbCBhbmNob3IgbGlua3NcclxuICBTdGlja3kgaGVhZGVyXHJcbiAgU2lkZSBuYXZpZ2F0aW9uXHJcbiAgU2VjdGlvbiBuYXZcclxuICBGaXhlZCBDVEFcclxuICBGb3JtIGZsb2F0aW5nIGxhYmVsc1xyXG4gIEFjY29yZGlvblxyXG4gIFJldmlld3NcclxuICBMYW5ndWFnZSBzd2l0Y2hlclxyXG4gIFNlYXJjaCBzdWdnZXN0aW9uIGJ1dHRvbnNcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBBbGVydFxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbmNvbnN0IHNpdGVBbGVydEVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2l0ZS1hbGVydCcpO1xyXG5cclxuaWYoIHNpdGVBbGVydEVsZW0gKSB7XHJcbiAgY29uc3Qgc2l0ZUFsZXJ0ID0gbmV3IEFsZXJ0KHNpdGVBbGVydEVsZW0sICdHbG9iYWxBbGVydDEnLCA4NjQwMCk7XHJcbiAgc2l0ZUFsZXJ0LmluaXQoKTtcclxufVxyXG5cclxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBTbW9vdGggc2Nyb2xsIGFuY2hvciBsaW5rc1xyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XHJcbiAgY29uc3QgY2xpY2tfdGFyZ2V0ID0gZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXNjcm9sbC1saW5rXScpO1xyXG4gIGlmKCAhY2xpY2tfdGFyZ2V0ICkgcmV0dXJuO1xyXG5cclxuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIGNvbnN0IHlPZmZzZXQgPSAtODA7XHJcbiAgbGV0IHNlY3Rpb24gPSBjbGlja190YXJnZXQuZ2V0QXR0cmlidXRlKCdocmVmJyk7XHJcbiAgbGV0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VjdGlvbik7ICAgICAgXHJcblxyXG4gIGlmKCB0YXJnZXQgKSB7XHJcbiAgICBsZXQgdGFyZ2V0UG9zaXRpb24gPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0ICsgeU9mZnNldDtcclxuICAgIGNvbnN0IHByZWZlcnNSZWR1Y2VkTW90aW9uID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlcztcclxuICAgIGNvbnN0IHNjcm9sbEJlaGF2aW9yID0gcHJlZmVyc1JlZHVjZWRNb3Rpb24gPyAnYXV0bycgOiAnc21vb3RoJztcclxuXHJcbiAgICB3aW5kb3cuc2Nyb2xsVG8oe1xyXG4gICAgICB0b3A6IHRhcmdldFBvc2l0aW9uLFxyXG4gICAgICBiZWhhdmlvcjogc2Nyb2xsQmVoYXZpb3JcclxuICAgIH0pO1xyXG5cclxuICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XHJcbiAgICB0YXJnZXQuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xyXG4gIH1cclxufSk7XHJcblxyXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIFN0aWNreSBoZWFkZXJcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkge1xyXG4gIGNvbnN0IHNpdGVfaGVhZGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3BhZ2UtaGVhZGVyJyk7XHJcblxyXG4gIGlmKCAhc2l0ZV9oZWFkZXIgfHwgc2l0ZV9oZWFkZXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdwYWdlLWhlYWRlci0tc3RhdGljJykgKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBjb25zdCBzY3JvbGxlZF90aHJlc2hvbGQgPSAyMDtcclxuICBjb25zdCBoaWRlX3RocmVzaG9sZCA9IDQwMDtcclxuICBjb25zdCBzY3JvbGxfdG9sZXJhbmNlID0gMTA7XHJcblxyXG4gIGxldCBsYXN0X3Njcm9sbF95ID0gd2luZG93LnNjcm9sbFk7XHJcbiAgbGV0IGlzX3RpY2tpbmcgPSBmYWxzZTtcclxuXHJcbiAgY29uc3QgdXBkYXRlX2hlYWRlciA9ICgpID0+IHtcclxuICAgIC8vIGxpbWl0IHRvIDBcclxuICAgIGNvbnN0IGN1cnJlbnRfc2Nyb2xsX3kgPSBNYXRoLm1heCgwLCB3aW5kb3cuc2Nyb2xsWSk7XHJcblxyXG4gICAgLy8gYWRkIGNsYXNzIG9uY2Ugc2Nyb2xsIGlzIHRyaWdnZXJlZFxyXG4gICAgc2l0ZV9oZWFkZXIuY2xhc3NMaXN0LnRvZ2dsZSgnaXMtc2Nyb2xsZWQnLCBjdXJyZW50X3Njcm9sbF95ID4gc2Nyb2xsZWRfdGhyZXNob2xkKTtcclxuXHJcbiAgICAvLyBhZGQgY2xhc3MgcGFzdCB0aGUgaGlkZGVuIHRocmVzaG9sZFxyXG4gICAgc2l0ZV9oZWFkZXIuY2xhc3NMaXN0LnRvZ2dsZSgnaXMtc2Nyb2xsLXZpZXcnLCBjdXJyZW50X3Njcm9sbF95ID4gaGl
4kZV90aHJlc2hvbGQpO1xyXG5cclxuICAgIC8vIGhhbmRsZSByZXZlYWwgLyBoaWRlIGxvZ2ljXHJcbiAgICBpZihjdXJyZW50X3Njcm9sbF95ID4gaGlkZV90aHJlc2hvbGQpIHtcclxuICAgICAgY29uc3QgaXNfc2Nyb2xsaW5nX2Rvd24gPSBjdXJyZW50X3Njcm9sbF95ID4gbGFzdF9zY3JvbGxfeTtcclxuICAgICAgY29uc3QgaXNfc2Nyb2xsaW5nX3VwX2Zhc3QgPSBsYXN0X3Njcm9sbF95IC0gY3VycmVudF9zY3JvbGxfeSA+IHNjcm9sbF90b2xlcmFuY2U7XHJcblxyXG4gICAgICBpZihpc19zY3JvbGxpbmdfZG93bikge1xyXG4gICAgICAgIHNpdGVfaGVhZGVyLmNsYXNzTGlzdC5hZGQoJ2lzLXNjcm9sbC1oaWRkZW4nKTtcclxuICAgICAgfSBlbHNlIGlmKGlzX3Njcm9sbGluZ191cF9mYXN0KSB7XHJcbiAgICAgICAgc2l0ZV9oZWFkZXIuY2xhc3NMaXN0LnJlbW92ZSgnaXMtc2Nyb2xsLWhpZGRlbicpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzaXRlX2hlYWRlci5jbGFzc0xpc3QucmVtb3ZlKCdpcy1zY3JvbGwtaGlkZGVuJyk7XHJcbiAgICB9XHJcblxyXG4gICAgbGFzdF9zY3JvbGxfeSA9IGN1cnJlbnRfc2Nyb2xsX3k7XHJcbiAgICBpc190aWNraW5nID0gZmFsc2U7XHJcbiAgfTtcclxuXHJcbiAgY29uc3Qgb25fc2Nyb2xsID0gKCkgPT4ge1xyXG4gICAgaWYoIWlzX3RpY2tpbmcpIHtcclxuICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGVfaGVhZGVyKTtcclxuICAgICAgaXNfdGlja2luZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLy8gc2Nyb2xsIGxpc3RlbmVyXHJcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uX3Njcm9sbCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xyXG5cclxuICAvLyBpbml0aWFsIGNoZWNrXHJcbiAgdXBkYXRlX2hlYWRlcigpO1xyXG59KTtcclxuXHJcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgU2lkZSBuYXZpZ2F0aW9uXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHtcclxuICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcclxuICBjb25zdCBwYWdlSGVhZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtaGVhZGVyJyk7XHJcblxyXG4gIGxldCB0cmFwX2ZvY3VzID0gKHBhbmVsKSA9PiB7XHJcbiAgICBjb25zdCBmb2N1c2FibGVfZWxlbWVudHMgPSBBcnJheS5mcm9tKHBhbmVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvbjpub3QoW2Rpc2FibGVkXSksIFtocmVmXSwgaW5wdXQ6bm90KFtkaXNhYmxlZF0pLCBzZWxlY3Q6bm90KFtkaXNhYmxlZF0pLCB0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKScpKS5maWx0ZXIoZWxlbSA9PiB7XHJcbiAgICAgIHJldHVybiBlbGVtLm9mZnNldFdpZHRoIHx8IGVsZW0ub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgZmlyc3RfZm9jdXNhYmxlX2l0ZW0gPSBmb2N1c2FibGVfZWxlbWVudHNbMF07XHJcbiAgICBjb25zdCBsYXN0X2ZvY3VzYWJsZV9pdGVtID0gZm9jdXNhYmxlX2VsZW1lbnRzW2ZvY3VzYWJsZV9lbGVtZW50cy5sZW5ndGggLSAxXTtcclxuXHJcbiAgICBwYW5lbC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGUpID0+IHtcclxuICAgICAgaWYgKGUua2V5ICE9PSAnVGFiJykgcmV0dXJuO1xyXG5cclxuICAgICAgaWYgKGUuc2hpZnRLZXkpIHtcclxuICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZmlyc3RfZm9jdXNhYmxlX2l0ZW0pIHtcclxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGxhc3RfZm9jdXNhYmxlX2l0ZW0uZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3RfZm9jdXNhYmxlX2l0ZW0pIHtcclxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGZpcnN0X2ZvY3VzYWJsZV9pdGVtLmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxldCBvcGVuX25hdl9wYW5lbCA9IChvcGVuX2J1dHRvbikgPT4ge1xyXG4gICAgbGV0IGJ1dHRvbl90YXJnZXRfaWQgPSBvcGVuX2J1dHRvbi5nZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnKTtcclxuICAgIGxldCBidXR0b25fdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYnV0dG9uX3RhcmdldF9pZCk7XHJcblxyXG4gICAgb3Blbl9idXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgdHJ1ZSk7XHJcbiAgICBidXR0b25fdGFyZ2V0LmhpZGRlbiA9IGZhbHNlO1xyXG4gICAgYnV0dG9uX3RhcmdldC5mb2N1cygpO1xyXG4gICAgdHJhcF9mb2N1cyhidXR0b25fdGFyZ2V0KTtcclxuXHJcbiAgICBib2R5LmNsYXNzTGlzdC5hZGQoJ25hdi1vcGVuJyk7XHJcbiAgICAvLyBwYWdlSGVhZGVyLmNsYXNzTGlzdC5hZGQoJ3N3aXRjaCcpO1xyXG4gIH1cclxuXHJcbiAgbGV0IGNsb3NlX25hdl9wYW5lbCA9IChjbG9zZV9idXR0b24pID0+IHtcclxuICAgIGxldCBidXR0b25fdGFyZ2V0X2lkID0gY2xvc2VfYnV0dG9uLmdldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpO1xyXG4gICAgbGV0IGJ1dHRvbl90YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChidXR0b25fdGFyZ2V0X2lkKTtcclxuICAgIGxldCBvcGVuX2J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLW5hdi1vcGVuXVthcmlhLWNvbnRyb2xzPVwiJHtidXR0b25fdGFyZ2V0X2lkfVwiXWApO1xyXG5cclxuICAgIG9wZW5fYnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIGZhbHNlKTtcclxuICAgIGJ1dHRvbl90YXJnZXQuaGlkZGVuID0gdHJ1ZTtcclxuICAgIG9wZW5fYnV0dG9uLmZvY3VzKCk7XHJcblxyXG4gICAgYm9keS5jbGFzc0xpc3QucmVtb3ZlKCduYXYtb3BlbicpO1xyXG4gICAgLy8gcGFnZUhlYWRlci5jbGFzc0xpc3QucmVtb3ZlKCdzd2l0Y2gnKTtcclxuICB9XHJcblxyXG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZSkgPT4ge1xyXG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xyXG4gICAgICBjb25zdCBvcGVuX3BhbmVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNpZGUtbmF2X19wYW5lbDpub3QoW2hpZGRlbl0pJyk7XHJcblxyXG4gICAgICBpZiggb3Blbl9wYW5lbCApIHtcclxuICAgICAgICBjb25zdCBjbG9zZV9idXR0b24gPSBvcGVuX3BhbmVsLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLW5hdi1jbG9zZV0nKTtcclxuICAgICAgICBjbG9zZV9uYXZfcGFuZWwoY2xvc2VfYnV0dG9uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBkb2
4N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICBjb25zdCBuYXZfYnV0dG9uID0gZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtbmF2LW9wZW5dLCBbZGF0YS1uYXYtY2xvc2VdJyk7XHJcbiAgICBpZiggIW5hdl9idXR0b24gKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgcGFuZWxfaWQgPSBuYXZfYnV0dG9uLmdldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpO1xyXG4gICAgaWYoICFwYW5lbF9pZCApIHJldHVybjtcclxuXHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBcclxuICAgIC8vIG9wZW4gYnV0dG9uIGFjdGlvbnNcclxuICAgIGlmKCBuYXZfYnV0dG9uLmhhc0F0dHJpYnV0ZSgnZGF0YS1uYXYtb3BlbicpICkge1xyXG4gICAgICBsZXQgbmF2X2J1dHRvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1uYXYtb3Blbl0nKTtcclxuICAgICAgXHJcbiAgICAgIG5hdl9idXR0b25zLmZvckVhY2goKGJ1dHRvbikgPT4ge1xyXG4gICAgICAgIGNsb3NlX25hdl9wYW5lbChidXR0b24pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIG9wZW5fbmF2X3BhbmVsKG5hdl9idXR0b24pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBjbG9zZSBidXR0b24gYWN0aW9uc1xyXG4gICAgaWYoIG5hdl9idXR0b24uaGFzQXR0cmlidXRlKCdkYXRhLW5hdi1jbG9zZScpICkge1xyXG4gICAgICBjbG9zZV9uYXZfcGFuZWwobmF2X2J1dHRvbik7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn0pO1xyXG5cclxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBTZWN0aW9uIG5hdlxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7XHJcbiAgY29uc3Qgc2VjdGlvbk5hdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWN0aW9uLW5hdicpO1xyXG4gIGNvbnN0IHNlY3Rpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtcGFnZS1zZWN0aW9uXScpO1xyXG5cclxuICBpZighc2VjdGlvbk5hdiB8fCAhc2VjdGlvbnMubGVuZ3RoKSByZXR1cm47XHJcblxyXG4gIGxldCBhY3RpdmVJZCA9IG51bGw7XHJcblxyXG4gIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxyXG4gICAgKGVudHJpZXMpID0+IHtcclxuICAgICAgZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHtcclxuICAgICAgICBpZighZW50cnkuaXNJbnRlcnNlY3RpbmcpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgaWQgPSBlbnRyeS50YXJnZXQuaWQ7XHJcbiAgICAgICAgaWYoIWlkIHx8IGlkID09PSBhY3RpdmVJZCkgcmV0dXJuO1xyXG5cclxuICAgICAgICAvLyBSZW1vdmUgcHJldmlvdXMgYWN0aXZlIHN0YXRlXHJcbiAgICAgICAgc2VjdGlvbk5hdlxyXG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJ2EuYWN0aXZlJylcclxuICAgICAgICAgIC5mb3JFYWNoKGEgPT4gYS5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7XHJcblxyXG4gICAgICAgIC8vIEFjdGl2YXRlIG5ldyBsaW5rXHJcbiAgICAgICAgY29uc3QgbmV3QWN0aXZlTGluayA9IHNlY3Rpb25OYXYucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgIGBhW2hyZWY9XCIjJHtpZH1cIl1gXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYobmV3QWN0aXZlTGluaykge1xyXG4gICAgICAgICAgbmV3QWN0aXZlTGluay5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcclxuICAgICAgICAgIGFjdGl2ZUlkID0gaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHJvb3Q6IG51bGwsXHJcbiAgICAgIHJvb3RNYXJnaW46ICctMTAwcHggMHB4IC03MCUgMHB4JyxcclxuICAgICAgdGhyZXNob2xkOiAwXHJcbiAgICB9XHJcbiAgKTtcclxuXHJcbiAgc2VjdGlvbnMuZm9yRWFjaChzZWN0aW9uID0+IG9ic2VydmVyLm9ic2VydmUoc2VjdGlvbikpO1xyXG59KTtcclxuXHJcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgRml4ZWQgQ1RBXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHtcclxuICBjb25zdCBmaXhlZF9jdGEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY3RhLWhlYWRlcicpO1xyXG5cclxuICBpZiggIWZpeGVkX2N0YSApIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGNvbnN0IGhpZGVfdGhyZXNob2xkID0gNDAwO1xyXG5cclxuICBjb25zdCB1cGRhdGVfZml4ZWRfY3RhID0gKCkgPT4ge1xyXG4gICAgLy8gbGltaXQgdG8gMFxyXG4gICAgY29uc3QgY3VycmVudF9zY3JvbGxfeSA9IE1hdGgubWF4KDAsIHdpbmRvdy5zY3JvbGxZKTtcclxuXHJcbiAgICAvLyBhZGQgY2xhc3MgcGFzdCB0aGUgaGlkZGVuIHRocmVzaG9sZFxyXG4gICAgZml4ZWRfY3RhLmNsYXNzTGlzdC50b2dnbGUoJ2lzLXNjcm9sbCcsIGN1cnJlbnRfc2Nyb2xsX3kgPiBoaWRlX3RocmVzaG9sZCk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3Qgb25fc2Nyb2xsID0gKCkgPT4ge1xyXG4gICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGVfZml4ZWRfY3RhKTtcclxuICB9O1xyXG5cclxuICAvLyBzY3JvbGwgbGlzdGVuZXJcclxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25fc2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSk7XHJcblxyXG4gIC8vIGluaXRpYWwgY2hlY2tcclxuICB1cGRhdGVfZml4ZWRfY3RhKCk7XHJcbn0pO1xyXG5cclxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBGb3JtIGZsb2F0aW5nIGxhYmVsc1xyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XHJcbiAgY29uc3QgZm9ybUNvbnRhaW5lciA9IGRvY3VtZW50LmJvZHk7XHJcblxyXG4gIGxldCBpc0Zsb2F0aW5nTGFiZWxGaWVsZCA9IChlbCk9PiB7XHJcbiAgICByZXR1cm4gZWwubWF0Y2hlcygnLmZsb2F0aW5nLWxhYmVsIGlucHV0LCAuZmxvYXRpbmctbGFiZWwgdGV4dGFyZWEsIC5mbG9hdGluZy1sYWJlbCBzZWxlY3QnKSAmJiBlbC50eXBlICE9PSAnaGlkZGVuJztcclxuICB9XHJcblxyXG4gIGxldCBoYW5kbGVGb2N1c0JsdXIgPSAoZSk9PiB7XHJcbiAgICBpZiggIWlzRmxvYXRpbmdMYWJlbEZpZWxkKGUudGFyZ2V0KSApIHJldHVybjtcclxuICAgIHVwZGF0ZUZpZWxkc2V0U3RhdGUoZS50YXJnZXQpO1xyXG4gIH1cclxuXHJcbiAgbGV0IGhhbmRsZUlucHV0Q2hhbmdlID0gKGUpPT4ge1xyXG4gICAgaWYoICFpc0Zsb2F0aW5nTGFiZWxGaWVsZChlLnRhcmdldCkgKSByZXR1cm47XHJcbiAgICB1cGRhdGVGaWVsZHNldFN0YXRlKGUudGFyZ2V0KTtcclxuICB9XHJcblxyXG4gIGxldCB1cGRhdGVGaWVsZHNldFN0YXRlID0gKGZpZWxkKT0+IHtcclxuICAgIGNvbnN0IGZpZWxkc2V0ID0gZmllbGQuY2xvc2VzdCgnZmllbGRzZXQnKTtcclxuICAgIGlmKCFmaWVsZHNldCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHZhbHVlID0gZmllbGQudmFsdWUud
4HJpbSgpO1xyXG4gICAgaWYoIXZhbHVlICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IGZpZWxkKSB7XHJcbiAgICAgIGZpZWxkc2V0LmNsYXNzTGlzdC5hZGQoJ2lzLWVtcHR5Jyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaWVsZHNldC5jbGFzc0xpc3QucmVtb3ZlKCdpcy1lbXB0eScpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gaW5pdGlhbGl6ZSBleGlzdGluZyBmaWVsZHNcclxuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZmxvYXRpbmctbGFiZWwgaW5wdXQsIC5mbG9hdGluZy1sYWJlbCB0ZXh0YXJlYSwgLmZsb2F0aW5nLWxhYmVsIHNlbGVjdCcpLmZvckVhY2godXBkYXRlRmllbGRzZXRTdGF0ZSk7XHJcblxyXG4gIC8vIGV2ZW4gZGVsZWdhdGlvbiBmb3IgZm9jdXMsIGJsdXIsIGlucHV0LCBjaGFuZ2VcclxuICBmb3JtQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgaGFuZGxlRm9jdXNCbHVyLCB0cnVlKTtcclxuICBmb3JtQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBoYW5kbGVGb2N1c0JsdXIsIHRydWUpO1xyXG4gIGZvcm1Db250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBoYW5kbGVJbnB1dENoYW5nZSwgdHJ1ZSk7XHJcbiAgZm9ybUNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBoYW5kbGVJbnB1dENoYW5nZSwgdHJ1ZSk7XHJcbn0pO1xyXG5cclxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBBY2NvcmRpb25cclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgKCkgPT4ge1xyXG4gIGNvbnN0IGFjY29yZGlvblNlY3Rpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmFjY29yZGlvbicpO1xyXG5cclxuICBpZiggYWNjb3JkaW9uU2VjdGlvbnMubGVuZ3RoID4gMCApIHtcclxuICAgIC8vIENvbmRpdGlvbiBsaW5rc1xyXG4gICAgdmFyIGNvbmRpdGlvbkxpbmtTZWN0aW9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNvbmRpdGlvbi1saW5rLWxpc3QnKTtcclxuXHJcbiAgICBpZiggY29uZGl0aW9uTGlua1NlY3Rpb24ubGVuZ3RoID4gMCApIHtcclxuICAgICAgQXJyYXkuZnJvbShjb25kaXRpb25MaW5rU2VjdGlvbikuZm9yRWFjaChzZWN0aW9uID0+IHtcclxuICAgICAgICBzZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICBpZiggZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyggJ2NvbmRpdGlvbi1vcGVuLWxpbmsnICkgKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHZhciBjb25kaXRpb25JRCA9IGV2ZW50LnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29uZGl0aW9uLWlkJyk7XHJcbiAgICAgICAgICAgIHZhciBjb25kaXRpb25CdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uZGl0aW9uLWxpbmstJyArIGNvbmRpdGlvbklEKTtcclxuICAgICAgICAgICAgdmFyIGNvbmRpdGlvblN0YXRlID0gY29uZGl0aW9uQnV0dG9uLmdldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcpO1xyXG4gICAgICAgICAgICBjb25zdCBwcmVmZXJzUmVkdWNlZE1vdGlvbiA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7XHJcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbEJlaGF2aW9yID0gcHJlZmVyc1JlZHVjZWRNb3Rpb24gPyAnYXV0bycgOiAnc21vb3RoJztcclxuICBcclxuICAgICAgICAgICAgaWYoY29uZGl0aW9uU3RhdGUgIT0gXCJ0cnVlXCIpIHtcclxuICAgICAgICAgICAgICBjb25kaXRpb25CdXR0b24uY2xpY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbmRpdGlvbkJ1dHRvbi5zY3JvbGxJbnRvVmlldyh7XHJcbiAgICAgICAgICAgICAgYmVoYXZpb3I6IHNjcm9sbEJlaGF2aW9yXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgY29uZGl0aW9uQnV0dG9uLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWNjb3JkaW9uXHJcbiAgICB2YXIgYWNjb3JkaW9uU2VjdGlvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hY2NvcmRpb24nKTtcclxuICAgIFxyXG4gICAgaWYoIGFjY29yZGlvblNlY3Rpb24gKSB7XHJcbiAgICAgIGFjY29yZGlvblNlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcclxuICAgICAgICBhY2NvcmRpb24oZXZlbnQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgZnVuY3Rpb24gYWNjb3JkaW9uKGV2ZW50KSB7XHJcbiAgICAgIHZhciBidXR0b24gPSBldmVudC50YXJnZXQuY2xvc2VzdCgnLmFjY29yZGlvbl9fdG9nZ2xlJyk7XHJcblxyXG4gICAgICBpZihidXR0b24pIHtcclxuICAgICAgICB2Y
4XIgYnV0dG9uU3RhdGUgPSBidXR0b24uZ2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJykgPT0gJ3RydWUnO1xyXG4gICAgICAgIHZhciB0YXJnZXRJRCA9IGJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnKTtcclxuICAgICAgICB2YXIgYnV0dG9uVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0SUQpO1xyXG5cclxuICAgICAgICBidXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgIWJ1dHRvblN0YXRlKTtcclxuICAgICAgICBidXR0b25UYXJnZXQuaGlkZGVuID0gYnV0dG9uU3RhdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn0pO1xyXG5cclxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBSZXZpZXdzXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHtcclxuICBjb25zdCBtb3JlUmV2aWV3c0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9hZE1vcmVSZXZpZXdzJyk7XHJcblxyXG4gIGlmKCAhbW9yZVJldmlld3NMaW5rICkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgbGV0IGxvYWRlckVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3ctbW9yZS1yZXZpZXdzJyk7XHJcbiAgbGV0IHJldmlld0NvbnRlbnRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpZXdzQ29udGFpbmVyJyk7XHJcbiAgbGV0IHJldmlld19zbHVnID0gcmV2aWV3Q29udGVudEVsLmRhdGFzZXQucmV2aWV3U2x1ZztcclxuICBsZXQgcmV2aWV3UGFnZUNvdW50ID0gcGFyc2VJbnQocmV2aWV3Q29udGVudEVsLmRhdGFzZXQucGFnZSwgMTApO1xyXG4gIGxldCB0b3RhbFBhZ2VzID0gcGFyc2VJbnQocmV2aWV3Q29udGVudEVsLmRhdGFzZXQudG90YWxQYWdlcywgMTApO1xyXG4gIGxldCBzdHlsZV9zdHJpbmcgPSByZXZpZXdDb250ZW50RWwuZGF0YXNldC5zdHlsZVN0cmluZztcclxuXHJcbiAgaWYoICFsb2FkZXJFbCB8fCAhcmV2aWV3Q29udGVudEVsIHx8ICFyZXZpZXdfc2x1ZyApIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGNvbnN0IGdldFN0YXJSYXRpbmcgPSAoeCkgPT4ge1xyXG4gICAgbGV0IHJldFZhbCA9ICcnO1xyXG5cclxuICAgIHN3aXRjaCh0cnVlKSB7XHJcbiAgICAgIGNhc2UgKHggPCAxKTpcclxuICAgICAgICByZXRWYWwgPSdoYWxmJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAoeCA+PSAxICYmIHggPCAxLjUpOlxyXG4gICAgICAgIHJldFZhbCA9J29uZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgKHggPj0gMS41ICYmIHggPCAyICk6XHJcbiAgICAgICAgcmV0VmFsID0nb25lLWhhbGYnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICh4ID49IDIgJiYgeCA8IDIuNSApOlxyXG4gICAgICAgIHJldFZhbCA9J3R3byc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgKHggPj0gMi41ICYmIHggPCAzICk6XHJcbiAgICAgICAgcmV0VmFsID0ndHdvLWhhbGYnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICh4ID49IDMgJiYgeCA8IDMuNSApOlxyXG4gICAgICAgIHJldFZhbCA9J3RocmVlJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAoeCA+PSAzLjUgJiYgeCA8IDQgKTpcclxuICAgICAgICByZXRWYWwgPSd0aHJlZS1oYWxmJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAoeCA+PSA0ICYmIHggPCA0LjUgKTpcclxuICAgICAgICByZXRWYWwgPSdmb3VyJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAoeCA+PSA0LjUgJiYgeCA8IDUgKTpcclxuICAgICAgICByZXRWYWwgPSdmb3VyLWhhbGYnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICh4ID49IDUgKTpcclxuICAgICAgICByZXRWYWwgPSdmaXZlJztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmV0VmFsO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgY3JlYXRlUmV2aWV3SHRtbCA9IChyZXZpZXcpID0+IHtcclxuICAgIGNvbnN0IHJhdGluZyA9IHBhcnNlRmxvYXQocmV2aWV3LnJhdGluZyk7XHJcbiAgICBjb25zdCByYXRpbmdDbGFzcyA9IGdldFN0YXJSYXRpbmcocmF0aW5nKTtcclxuICAgIGNvbnN0IHJldmlld0RhdGUgPSBuZXcgRGF0ZShyZXZpZXcucmV2aWV3X3RpbWVzdGFtcCk7XHJcbiAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gcmV2aWV3RGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLVVTJywge1xyXG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXHJcbiAgICAgIG1vbnRoOiAnbG9uZycsXHJcbiAgICAgIGRheTogJ251bWVyaWMnXHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgbGV0IGh0bWwgPSAnPGFydGljbGUgY2xhc3M9XCJyZXZpZXdcIj4nO1xyXG4gICAgaHRtbCArPSAnPGRpdiBjbGFzcz1cInJvd1wiPic7XHJcbiAgICBcclxuICAgIGlmIChyYXRpbmcpIHtcclxuICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz1cImNvbCBzcGFuMlwiPic7XHJcbiAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9XCJzdGFyc1wiPic7XHJcbiAgICAgIGh0bWwgKz0gYDxpbWcgc3JjPVwiJHtzdHlsZV9zdHJpbmd9L2ltZy9lbGVtL3JhdGluZ3Mvc3RhcnMtJHtyYXRpbmdDbGFzc30ucG5nXCIgYWx0PVwiJHtyYXRpbmd9IHN0YXJzXCI+YDtcclxuICAgICAgaHRtbCArPSAnPC9kaXY+JztcclxuICAgICAgaHRtbCArPSBgPGRpdiBjbGFzcz1cInJldmlldy1kYXRlXCI+JHtmb3JtYXR0ZWREYXRlfTwvZGl2PmA7XHJcbiAgICAgIGh0bWwgKz0gJzwvZGl2Pic7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmIChyZXZpZXcuY29tbWVudCkge1xyXG4gICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPVwiY29sIHNwYW4xMFwiPic7XHJcbiAgICAgIGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJyZXZpZXctY29udGVudFwiPiR7cmV2aWV3LmNvbW1lbnR9PC9kaXY+YDtcclxuICAgICAgaHRtbCArPSAnPC9kaXY+JztcclxuICAgIH1cclxuICAgIFxyXG4gICAgaH
4RtbCArPSAnPC9kaXY+JztcclxuICAgIGh0bWwgKz0gJzwvYXJ0aWNsZT4nO1xyXG4gICAgXHJcbiAgICByZXR1cm4gaHRtbDtcclxuICB9XHJcblxyXG4gIG1vcmVSZXZpZXdzTGluay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGFzeW5jIGZ1bmN0aW9uKCkge1xyXG4gICAgcmV2aWV3UGFnZUNvdW50Kys7XHJcbiAgICByZXZpZXdDb250ZW50RWwuZGF0YXNldC5wYWdlID0gcmV2aWV3UGFnZUNvdW50O1xyXG5cclxuICAgIGxvYWRlckVsLmNsYXNzTGlzdC5hZGQoJ2xvYWRpbmcnKTtcclxuICAgIFxyXG4gICAgY29uc3QgYWpheHVybCA9IGAke3dpbmRvdy5sb2NhdGlvbi5wcm90b2NvbH0vLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L3dwLWFkbWluL2FkbWluLWFqYXgucGhwYDtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBkYXRhID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XHJcbiAgICAgICAgYWN0aW9uOiAnZ2V0X2FkZGl0aW9uYWxfcmV2aWV3cycsXHJcbiAgICAgICAgcmV2aWV3UGFnZUNvdW50OiByZXZpZXdQYWdlQ291bnRcclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyBBZGQgcmV2aWV3IHNsdWdcclxuICAgICAgZGF0YS5hcHBlbmQoJ3Jldmlld1NsdWcnLCByZXZpZXdfc2x1Zyk7XHJcblxyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGFqYXh1cmwsIHtcclxuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGJvZHk6IGRhdGEudG9TdHJpbmcoKVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEhUVFAgZXJyb3I6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCByZXZpZXdzID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgICBjb25zdCByZXZpZXdzSHRtbCA9IHJldmlld3MubWFwKHJldmlldyA9PiBjcmVhdGVSZXZpZXdIdG1sKHJldmlldykpLmpvaW4oJycpO1xyXG5cclxuICAgICAgbG9hZGVyRWwuY2xhc3NMaXN0LnJlbW92ZSgnbG9hZGluZycpO1xyXG4gICAgICByZXZpZXdDb250ZW50RWwuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCByZXZpZXdzSHRtbCk7XHJcblxyXG4gICAgICBpZihyZXZpZXdQYWdlQ291bnQgPj0gdG90YWxQYWdlcykge1xyXG4gICAgICAgIG1vcmVSZXZpZXdzTGluay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0FKQVggZXJyb3I6JywgZXJyb3IpO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgbG9hZGVyRWwuY2xhc3NMaXN0LnJlbW92ZSgnbG9hZGluZycpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59KTtcclxuXHJcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgTGFuZ3VhZ2Ugc3dpdGNoZXJcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4oZnVuY3Rpb24gKCkge1xyXG4gIGlmKCB0eXBlb2YgV2VnbG90ID09PSAndW5kZWZpbmVkJyApIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGxldCBsYW5ndWFnZV9zd2l0Y2hlcnMgPSBbXTtcclxuXHJcbiAgLy8gQ2xvc2UgYWxsIGxhbmd1YWdlIHN3aXRjaGVycyBleGNlcHQgdGhlIG9uZSBwYXNzZWQgaW5cclxuICBjb25zdCBjbG9zZV9hbGxfbGFuZ3VhZ2Vfc3dpdGNoZXJzID0gKGV4Y2VwdCA9IG51bGwpID0+IHtcclxuICAgIGxhbmd1YWdlX3N3aXRjaGVycy5mb3JFYWNoKGluc3RhbmNlID0+IHtcclxuICAgICAgaWYgKGluc3RhbmNlICE9PSBleGNlcHQpIHtcclxuICAgICAgICBjbG9zZV9sYW5ndWFnZV9zd2l0Y2hlcihpbnN0YW5jZSlcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIC8vIGNsb3NlIGxhbmd1YWdlIHN3aXRjaGVyXHJcbiAgY29uc3QgY2xvc2VfbGFuZ3VhZ2Vfc3dpdGNoZXIgPSAoeyBidG4sIG1lbnUgfSkgPT4ge1xyXG4gICAgYnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xyXG4gICAgbWVudS5oaWRkZW4gPSB0cnVlO1xyXG4gIH07XHJcblxyXG4gIC8vIHRvZ2dsZSBsYW5ndWFnZSBzd2l0Y2hlclxyXG4gIGNvbnN0IHRvZ2dsZV9sYW5ndWFnZV9zd2l0Y2hlciA9ICh7IGJ0biwgbWVudSB9KSA9PiB7XHJcbiAgICBjb25zdCBpc0V4cGFuZGVkID0gYnRuLmdldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcpID09PSAndHJ1ZSc7XHJcbiAgICBidG4uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgU3RyaW5nKCFpc0V4cGFuZGVkKSk7XHJcbiAgICBtZW51LmhpZGRlbiA9IGlzRXhwYW5kZWQ7XHJcbiAgfTtcclxuXHJcbiAgLy8gbGFuZ3VhZ2Ugc3dpdGNoZXIgaW5pdFxyXG4gIGNvbnN0IGluaXQgPSAobGFuZ3VhZ2Vfc3dpdGNoZXIpID0+IHtcclxuICAgIGNvbnN0IGJ0biA9IGxhbmd1YWdlX3N3aXRjaGVyLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWxhbmd1YWdlLXN3aXRjaGVyLWJ0bl0nKTtcclxuICAgIGNvbnN0IG1lbnVfaWQgPSBidG4/LmdldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpO1xyXG4gICAgY29uc3QgbWVudSA9IG1lbnVfaWQgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChtZW51X2lkKSA6IG51bGw7XHJcbiAgICBjb25zdCBsYWJlbCA9IGxhbmd1YWdlX3N3aXRjaGVyLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWN1cnJlbnQtbGFuZ3VhZ2VdJyk7XHJcblxyXG4gICAgaWYoIWJ0biB8fCAhbWVudSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3QgaW5zdGFuY2UgPSB7IGxhbmd1YWdlX3N3aXRjaGVyLCBidG4sIG1lbnUsIGxhYmVsIH07XHJcblxyXG4gICAgLy8gc2hvdyBsYW5ndWFnZSBzd2l0Y2hlclxyXG4gICAgbGFuZ3VhZ2Vfc3dpdGNoZXIuaGlkZGVuID0gZmFsc2U7XHJcblxyXG4gICAgLy8gdG9nZ2xlIG1lbnUgb24gYnV0dG9uIGNsaWNrXHJcbiAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICBlLnByZXZlbn
4REZWZhdWx0KCk7XHJcbiAgICAgIGNsb3NlX2FsbF9sYW5ndWFnZV9zd2l0Y2hlcnMoaW5zdGFuY2UpO1xyXG4gICAgICB0b2dnbGVfbGFuZ3VhZ2Vfc3dpdGNoZXIoaW5zdGFuY2UpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gY2xvc2UgbWVudSBvbiBjbGljayBvdXRzaWRlXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgIGlmKCFsYW5ndWFnZV9zd2l0Y2hlci5jb250YWlucyhlLnRhcmdldCkpIHtcclxuICAgICAgICBjbG9zZV9sYW5ndWFnZV9zd2l0Y2hlcihpbnN0YW5jZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIGNsb3NlIG1lbnUgb24gZXNjYXBlIGtleSBwcmVzc1xyXG4gICAgbGFuZ3VhZ2Vfc3dpdGNoZXIuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChlKSA9PiB7XHJcbiAgICAgIGlmKGUua2V5ID09PSAnRXNjYXBlJyAmJiBidG4uZ2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJykgPT09ICd0cnVlJykge1xyXG4gICAgICAgIGNsb3NlX2xhbmd1YWdlX3N3aXRjaGVyKGluc3RhbmNlKTtcclxuICAgICAgICBidG4uZm9jdXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGluc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgLy8gc2V0IHVwIGxhbmd1YWdlIHN3aXRjaGVyIGluc3RhbmNlc1xyXG4gIGxhbmd1YWdlX3N3aXRjaGVycyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtbGFuZ3VhZ2Utc3dpdGNoZXJdJykpXHJcbiAgICAubWFwKGluaXQpXHJcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xyXG5cclxuICBpZighbGFuZ3VhZ2Vfc3dpdGNoZXJzLmxlbmd0aCkgcmV0dXJuO1xyXG4gIFxyXG4gIC8vIHVwZGF0ZSBsYW5ndWFnZSBzd2l0Y2hlciBpbnN0YW5jZXMgb24gV2VnbG90IGxhbmd1YWdlIGNoYW5nZVxyXG4gIFdlZ2xvdC5vbignbGFuZ3VhZ2VDaGFuZ2VkJywgZnVuY3Rpb24obmV3TGFuZywgcHJldkxhbmcpIHtcclxuICAgIGNvbnN0IGxhbmd1YWdlX25hbWUgPSBXZWdsb3QuZ2V0TGFuZ3VhZ2VOYW1lKG5ld0xhbmcpO1xyXG4gICAgY29uc3Qgb3Blbl9sYW5ndWFnZV9zd2l0Y2hlciA9IGxhbmd1YWdlX3N3aXRjaGVycy5maW5kKGluc3RhbmNlID0+IGluc3RhbmNlLmJ0bi5nZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnKSA9PT0gJ3RydWUnKTtcclxuXHJcbiAgICBsYW5ndWFnZV9zd2l0Y2hlcnMuZm9yRWFjaChpbnN0YW5jZSA9PiB7XHJcbiAgICAgIGlmKGluc3RhbmNlLmxhYmVsKSB7XHJcbiAgICAgICAgaW5zdGFuY2UubGFiZWwudGV4dENvbnRlbnQgPSBsYW5ndWFnZV9uYW1lO1xyXG4gICAgICAgIGNsb3NlX2xhbmd1YWdlX3N3aXRjaGVyKGluc3RhbmNlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYob3Blbl9sYW5ndWFnZV9zd2l0Y2hlcikge1xyXG4gICAgICAgIG9wZW5fbGFuZ3VhZ2Vfc3dpdGNoZXIuYnRuLmZvY3VzKClcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG59KSgpO1xyXG5cclxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBTZWFyY2ggc3VnZ2VzdGlvbiBidXR0b25zXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxubGV0IHNlYXJjaF9idXR0b25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uW2RhdGEtc2VhcmNoLXRlcm1dJyk7XHJcblxyXG5pZiggc2VhcmNoX2J1dHRvbnMubGVuZ3RoICkge1xyXG4gIHNlYXJjaF9idXR0b25zLmZvckVhY2goKHNlYXJjaF9idXR0b24pID0+IHtcclxuICAgIHNlYXJjaF9idXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICBsZXQgc2VhcmNoX3Rlcm0gPSBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2VhcmNoLXRlcm0nKTtcclxuXHJcbiAgICAgIGlmKCBzZWFyY2hfdGVybSApIHtcclxuICAgICAgICB3aW5kb3cuZXBJbnN0YW50UmVzdWx0cz8ub3Blbk1vZGFsKHsgc2VhcmNoOiBzZWFyY2hfdGVybSB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSk7XHJcbn0iXSwibmFtZXMiOlsiQWxlcnQiLCJfY3JlYXRlQ2xhc3MiLCJhbGVydEVsZW0iLCJjb29raWVOYW1lIiwiY29va2llTWF4QWdlIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2RlZmluZVByb3BlcnR5IiwidGhpcyIsImtleSIsInZhbHVlIiwic2V0VXBBbGVydE9wZW4iLCJzZXRVcEFsZXJ0Q2xvc2UiLCJjb25zb2xlIiwibG9nIiwibWF0Y2hlcyIsImRvY3VtZW50IiwiY29va2llIiwibWF0Y2giLCJSZWdFeHAiLCJyZXBsYWNlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwidW5kZWZpbmVkIiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwiY29uY2F0IiwiY2hlY2tGb3JDb29raWUiLCJhZGQiLCJfdGhpcyIsImFsZXJ0Q2xvc2UiLCJxdWVyeVNlbGVjdG9yIiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImNsb3NlQWxlcnQiLCJzaXRlQWxlcnRFbGVtIiwiZ2V0RWxlbWVudEJ5SWQiLCJpbml0IiwiZXZlbnQiLCJjbGlja190YXJnZXQiLCJ0YXJnZXQiLCJjbG9zZXN0Iiwic2VjdGlvbiIsImdldEF0dHJpYnV0ZSIsInRhcmdldFBvc2l0aW9uIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidG9wIiwid2luZG93IiwicGFnZVlPZmZzZXQiLCJzY3JvbGxCZWhhdmlvciIsIm1hdGNoTWVkaWEiLCJzY3JvbGxUbyIsImJlaGF2aW9yIiwic2V0QXR0cmlidXRlIiwiZm9jdXMiLCJwcmV2ZW50U2Nyb2xsIiwic2l0ZV9oZWFkZXIiLCJjb250YWlucyIsImxhc3Rfc2Nyb2xsX3kiLCJzY3JvbGxZIiwiaXNfdGlja2luZyIsInVwZGF0ZV9oZWFkZXIiLCJjdXJyZW50X3Njcm9sbF95IiwiTWF0aCIsIm1heCIsInRvZ2dsZSIsImlzX3Njcm9sbGluZ191cF9mYXN0IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwicGFzc2l2ZSIsImJvZHkiLCJvcGVuX25hdl9wYW5lbCIsIm9wZW5fYnV0dG9uIiwicGFuZWwiLCJmb2N1c2FibGVfZWxlbWVudHMiLCJmaXJzdF9mb2N1c2FibGVfaXRlbSIsImxhc3RfZm9jdXNhYmxlX2l0ZW0iLCJidXR0b25fdGFyZ2V0X2lkIiwiYnV0dG9uX3RhcmdldCIsImhpZGRlbiIsIkFycmF5IiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmaWx0ZXIiLCJlbGVtIiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJsZW5ndGgiLCJzaGlmdEtleSIsImFjdGl2ZUVsZW1lbnQiLCJjbG9zZV9uYXZfcGFuZWwiLCJjbG9zZV9idXR0b24iLCJvcGVuX3BhbmVsIiwibmF2X2J1dHRvbiIsImhhc0F0dHJpYnV0ZSIsImZvckVhY2giLCJidXR0b24iLCJzZWN0aW9uTmF2Iiwic2VjdGlvbnMiLCJhY3RpdmVJZCIsIm9ic2VydmVyIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJlbnRyaWVzIiwiZW50cnkiLCJpc0ludGVyc2VjdGluZyIsImlkIiwiYSIsIm5ld0FjdGl2ZUxpbmsiLCJyb290Iiwicm9vdE1hcmdpbiIsInRocmVzaG9sZCIsIm9ic2VydmUiLCJmaXhlZF9jdGEiLCJ1cGRhdGVfZml4ZWRfY3RhIiwiZm9ybUNvbnRhaW5lciIsImlzRmxvYXRpbmdMYWJlbEZpZWxkIiwiZWwiLCJ0eXBlIiwiaGFuZGxlRm9jdXNCbHVyIiwidXBkYXRlRmllbGRzZXRTdGF0ZSIsImhhbmRsZUlucHV0Q2hhbmdlIiwiZmllbGQiLCJmaWVsZHNldCIsInRyaW0iLCJjb25kaXRpb25MaW5rU2VjdGlvbiIsImNvbmRpdGlvbklEIiwiY29uZGl0
4aW9uQnV0dG9uIiwiY29uZGl0aW9uU3RhdGUiLCJjbGljayIsInNjcm9sbEludG9WaWV3IiwiYWNjb3JkaW9uU2VjdGlvbiIsImFjY29yZGlvbiIsImJ1dHRvblN0YXRlIiwidGFyZ2V0SUQiLCJidXR0b25UYXJnZXQiLCJtb3JlUmV2aWV3c0xpbmsiLCJsb2FkZXJFbCIsInJldmlld0NvbnRlbnRFbCIsInJldmlld19zbHVnIiwiZGF0YXNldCIsInJldmlld1NsdWciLCJyZXZpZXdQYWdlQ291bnQiLCJwYXJzZUludCIsInBhZ2UiLCJ0b3RhbFBhZ2VzIiwic3R5bGVfc3RyaW5nIiwic3R5bGVTdHJpbmciLCJjcmVhdGVSZXZpZXdIdG1sIiwicmV2aWV3IiwicmF0aW5nIiwicGFyc2VGbG9hdCIsInJhdGluZ0NsYXNzIiwieCIsInJldFZhbCIsImdldFN0YXJSYXRpbmciLCJmb3JtYXR0ZWREYXRlIiwiRGF0ZSIsInJldmlld190aW1lc3RhbXAiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJ5ZWFyIiwibW9udGgiLCJkYXkiLCJodG1sIiwiY29tbWVudCIsIl9yZWdlbmVyYXRvciIsIm0iLCJfY2FsbGVlIiwiYWpheHVybCIsImRhdGEiLCJyZXNwb25zZSIsInJldmlld3MiLCJyZXZpZXdzSHRtbCIsIl90IiwidyIsIl9jb250ZXh0IiwicCIsIm4iLCJsb2NhdGlvbiIsInByb3RvY29sIiwiaG9zdCIsIlVSTFNlYXJjaFBhcmFtcyIsImFjdGlvbiIsImFwcGVuZCIsImZldGNoIiwibWV0aG9kIiwiaGVhZGVycyIsInRvU3RyaW5nIiwidiIsIm9rIiwiRXJyb3IiLCJzdGF0dXMiLCJqc29uIiwibWFwIiwiam9pbiIsImluc2VydEFkamFjZW50SFRNTCIsInN0eWxlIiwiZGlzcGxheSIsImVycm9yIiwiZiIsIldlZ2xvdCIsImxhbmd1YWdlX3N3aXRjaGVycyIsImNsb3NlX2xhbmd1YWdlX3N3aXRjaGVyIiwiX3JlZjIiLCJidG4iLCJtZW51IiwibGFuZ3VhZ2Vfc3dpdGNoZXIiLCJtZW51X2lkIiwibGFiZWwiLCJpbnN0YW5jZSIsImV4Y2VwdCIsImFyZ3VtZW50cyIsImNsb3NlX2FsbF9sYW5ndWFnZV9zd2l0Y2hlcnMiLCJfcmVmMyIsImlzRXhwYW5kZWQiLCJTdHJpbmciLCJ0b2dnbGVfbGFuZ3VhZ2Vfc3dpdGNoZXIiLCJCb29sZWFuIiwib24iLCJuZXdMYW5nIiwicHJldkxhbmciLCJsYW5ndWFnZV9uYW1lIiwiZ2V0TGFuZ3VhZ2VOYW1lIiwib3Blbl9sYW5ndWFnZV9zd2l0Y2hlciIsImZpbmQiLCJ0ZXh0Q29udGVudCIsInNlYXJjaF9idXR0b25zIiwic2VhcmNoX2J1dHRvbiIsIl93aW5kb3ckZXBJbnN0YW50UmVzdSIsInNlYXJjaF90ZXJtIiwiZXBJbnN0YW50UmVzdWx0cyIsIm9wZW5Nb2RhbCIsInNlYXJjaCJdLCJtYXBwaW5ncyI6Ijs7NHhFQUFNQSxFQVNIQyxFQUpELFNBQUFELEVBQVlFLEVBQVdDLEVBQVlDLGdHQUFjQyxNQUFBTCxHQUFBTSxFQUFBQyxLQUFBLG9CQUFBRCxFQUFBQyxLQUFBLHFCQUFBRCxFQUFBQyxLQUFBLHVCQUMvQ0EsS0FBS0wsVUFBWUEsRUFDakJLLEtBQUtKLFdBQWFBLEVBQ2xCSSxLQUFLSCxhQUFlQSxHQUE4QixLQUNwRCxFQUFDLENBQUEsQ0FBQUksSUFBQSxPQUFBQyxNQUVELFdBQ09GLEtBQUtMLFlBSUxLLEtBQUtKLFlBS1ZJLEtBQUtHLGlCQUNMSCxLQUFLSSxtQkFMSEMsUUFBUUMsSUFBSSwwQ0FNaEIsR0FBQyxDQUFBTCxJQUFBLGlCQUFBQyxNQUVELFdBQ0UsSUFBSUssRUFBVUMsU0FBU0MsT0FBT0MsTUFBTSxJQUFJQyxPQUN0QyxXQUFhWCxLQUFLSixXQUFXZ0IsUUFBUSwrQkFBZ0MsUUFBVSxhQUdqRixPQUFPTCxFQUFVTSxtQkFBbUJOLEVBQVEsU0FBTU8sQ0FDcEQsR0FBQyxDQUFBYixJQUFBLGFBQUFDLE1BRUQsV0FDRUYsS0FBS0wsVUFBVW9CLFVBQVVDLE9BQU8sYUFDaENSLFNBQVNDLE9BQU0sR0FBQVEsT0FBTWpCLEtBQUtKLFd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

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.