@ritterim/platform-ui
Version:
A CSS framework used by Ritter Insurance Marketing (RIM) for our platform of agent tools.
11 lines (9 loc) • 35.8 kB
JavaScript
/*!
Platform UI v1.5.7 | @ritterim/platform-ui
A CSS framework used by Ritter Insurance Marketing (RIM) for our platform of agent tools. (https://style.rimdev.io)
©2022 Ritter Insurance Marketing (https://rimdev.io)
https://github.com/ritterim/platform-ui/issues
Released under the MIT license.
*/
;window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),window.HTMLCollection&&!HTMLCollection.prototype.forEach&&(HTMLCollection.prototype.forEach=Array.prototype.forEach),[Element.prototype,Document.prototype,DocumentFragment.prototype].forEach(function(e){e.hasOwnProperty("prepend")||Object.defineProperty(e,"prepend",{configurable:!0,enumerable:!0,writable:!0,value:function(){var e=Array.prototype.slice.call(arguments),o=document.createDocumentFragment();e.forEach(function(e){var t=e instanceof Node;o.appendChild(t?e:document.createTextNode(String(e)))}),this.insertBefore(o,this.firstChild)}})}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),Element.prototype.closest||(Element.prototype.closest=function(e){var t=this;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}),[Element.prototype,CharacterData.prototype,DocumentType.prototype].forEach(function(e){e.hasOwnProperty("remove")||Object.defineProperty(e,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){null!==this.parentNode&&this.parentNode.removeChild(this)}})});var accordionHeaders=document.querySelectorAll(".accordion__header");accordionHeaders&&accordionHeaders.forEach(function(t){t.addEventListener("click",function(e){e.preventDefault(),t.parentElement.classList.toggle("active")}),t.addEventListener("keydown",function(e){13===e.keyCode&&(e.preventDefault(),t.parentElement.classList.toggle("active"))})});var toggleAside=document.querySelector(".aside-tab");if(toggleAside){var aside=document.querySelector(".platform"),rotateIcon=document.querySelector(".aside-tab i");toggleAside.addEventListener("click",function(){aside.classList.toggle("toggle"),rotateIcon.classList.toggle("rotate-180")})}var bgImgs=document.querySelectorAll(".background-image");bgImgs&&bgImgs.forEach(function(e){var t=e.dataset.backgroundImage,o=e.dataset.backgroundPosition,n=e.dataset.backgroundSize,c=e.dataset.backgroundRepeat;t&&(e.style.backgroundImage="url('".concat(t,"')")),o&&(e.style.backgroundPosition=o),n&&(e.style.backgroundSize=n),c&&(e.style.backgroundRepeat=c)});var closeDrawer=document.querySelectorAll(".drawer__close"),openDrawer=document.querySelectorAll(".drawer__open"),toggleDrawer=function(e){e.classList.toggle("active")};closeDrawer&&closeDrawer.forEach(function(e){e.addEventListener("click",function(){toggleDrawer(document.getElementById(e.dataset.drawer))})}),openDrawer&&openDrawer.forEach(function(e){e.addEventListener("click",function(){toggleDrawer(document.getElementById(e.dataset.drawer))})});var editReadonly=document.querySelector(".js-edit-readonly"),editTextarea=document.querySelector(".js-edit-textarea");editReadonly&&editTextarea&&(editReadonly.addEventListener("click",function(e){e.preventDefault(),document.querySelector(".readonly").removeAttribute("readonly"),document.querySelector(".readonly").focus()}),editTextarea.addEventListener("click",function(e){e.preventDefault(),document.querySelector(".js-textarea").removeAttribute("readonly"),document.querySelector(".js-textarea").focus()}));var bgGradients=document.querySelectorAll(".linear-gradient");bgGradients&&bgGradients.forEach(function(e){var t=e.dataset.gradientDirection,o=e.dataset.gradientStart,n=e.dataset.gradientStop,c=e.dataset.gradientFallback,r=e.dataset.backgroundImage,a=e.dataset.backgroundPosition,i=e.dataset.backgroundSize,l=e.dataset.backgroundRepeat;if(t&&o&&n){c&&(e.style.backgroundColor=c);var d="linear-gradient(".concat(t,", ").concat(o,", ").concat(n,")");e.style.backgroundImage=d,e.classList.contains("background-image")&&(r&&(e.style.backgroundImage="".concat(d,", url(").concat(r,")")),a&&(e.style.backgroundPosition=a),i&&(e.style.backgroundSize=i),l&&(e.style.backgroundRepeat=l))}});var infoBoxes=document.querySelectorAll(".info-box");infoBoxes&&infoBoxes.forEach(function(e){var t=e.querySelector(".toggle-hidden"),o=e.querySelector(".info-box__content"),n=e.querySelectorAll(".info-box__close");t.addEventListener("click",function(e){e.preventDefault(),o.parentElement.classList.toggle("active")}),n.forEach(function(e){e.addEventListener("click",function(){o.parentElement.classList.remove("active")})})});var dropdownMenus=document.querySelectorAll(".dropdown-content"),hasDropdowns=document.querySelectorAll(".dropdown"),openDropdown=function(e){var t=e.closest(".dropdown");t.classList.contains("active")?t.classList.remove("active"):(hasDropdowns.forEach(function(e){e.classList.remove("active")}),t.classList.toggle("active"))};if(hasDropdowns){var links=document.querySelectorAll(".dropdown .dropdown__trigger"),dropdownLinks=document.querySelectorAll(".dropdown__content a");links.forEach(function(t){t.addEventListener("click",function(e){e.stopPropagation(),e.preventDefault(),openDropdown(t)}),t.addEventListener("keydown",function(e){13===e.keyCode&&(e.preventDefault(),openDropdown(t))})}),dropdownLinks.forEach(function(e){e.addEventListener("click",function(e){e.stopPropagation()})})}var menuActions=document.querySelectorAll(".site-menu-mobile-action");menuActions&&menuActions.forEach(function(t){t.addEventListener("click",function(e){e.preventDefault,t.closest(".site-menu-wrapper").querySelector(".site-menu").classList.toggle("active")})});var menuAction=document.querySelector(".mobile-menu-action");if(menuAction){var body=document.querySelector(".platform");menuAction.addEventListener("click",function(){body.classList.toggle("menu-open")})}var closeModalButtons=document.querySelectorAll(".modal__close"),openModalButtons=document.querySelectorAll(".modal__open"),modalClose=function(e){e.classList.remove("active"),document.body.classList.remove("modal-open")},modalOpen=function(e){e.classList.add("active"),document.body.classList.add("modal-open"),e.focus()};closeModalButtons&&closeModalButtons.forEach(function(t){t.addEventListener("click",function(){var e=document.getElementById(t.dataset.modal);modalClose(e)})}),openModalButtons&&openModalButtons.forEach(function(o){o.addEventListener("click",function(){var e=document.getElementById(o.dataset.modal);modalOpen(e)}),document.addEventListener("keydown",function(e){if(27==e.keyCode){var t=document.getElementById(o.dataset.modal);modalClose(t)}})});var tabList=document.querySelector(".tabs");if(tabList){var tabs=document.querySelectorAll(".tab"),mobileTabs=function(e){if(!e.previousElementSibling.checked)return clearUnChecked(),void e.previousElementSibling.setAttribute("checked",!0);e.previousElementSibling.classList.contains("un-checked")?(e.previousElementSibling.classList.remove("un-checked"),e.previousElementSibling.setAttribute("checked",!0)):uncheck(e)},clearUnChecked=function(){tabs.forEach(function(e){e.closest(".tabs").querySelectorAll('input[checked="true"]').forEach(function(e){e.setAttribute("checked",!1)}),e.previousElementSibling.classList.contains("un-checked")&&(e.previousElementSibling.classList.remove("un-checked"),e.previousElementSibling.removeAttribute("checked"))})},uncheck=function(e){e.previousElementSibling.setAttribute("checked",!1),e.previousElementSibling.classList.add("un-checked")},onTabClicked=function(e){e.target.closest(".tabs").classList.contains("unresponsive")||mobileTabs(e.target)},fireMobileTabs=function(){tabs.forEach(function(e){e.addEventListener("click",onTabClicked)})},checkRunTabs=function(){var e=!1;if(tabs.forEach(function(e){e.removeEventListener("click",onTabClicked)}),767.9<(pageWidth=window.innerWidth||document.documentElement.clientWidth))return tabs.forEach(function(e){e.classList.contains("un-checked")&&e.classList.remove("un-checked")}),void(e=!1);!1===e&&(fireMobileTabs(),e=!0)};window.addEventListener("resize",checkRunTabs,!1);var pageWidth=window.innerWidth||document.documentElement.clientWidth;pageWidth<767.9&&checkRunTabs()}var zItems=document.querySelectorAll("[data-z]");zItems&&zItems.forEach(function(e){var t=e.dataset.z;e.style["z-index"]=t});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uanMiLCJhY2NvcmRpb24uanMiLCJhc2lkZS10b2dnbGUuanMiLCJiYWNrZ3JvdW5kLWltYWdlLmpzIiwiZHJhd2VyLmpzIiwiZm9ybXMuanMiLCJncmFkaWVudC5qcyIsImluZm8tYm94LmpzIiwibWVudS5qcyIsIm1vYmlsZS1tZW51LmpzIiwibW9kYWwuanMiLCJ0YWJzLmpzIiwiei1pbmRleC5qcyJdLCJuYW1lcyI6WyJ3aW5kb3ciLCJOb2RlTGlzdCIsInByb3RvdHlwZSIsImZvckVhY2giLCJBcnJheSIsIkhUTUxDb2xsZWN0aW9uIiwiRWxlbWVudCIsIkRvY3VtZW50IiwiRG9jdW1lbnRGcmFnbWVudCIsIml0ZW0iLCJoYXNPd25Qcm9wZXJ0eSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwidmFsdWUiLCJhcmdBcnIiLCJzbGljZSIsImNhbGwiLCJhcmd1bWVudHMiLCJkb2NGcmFnIiwiZG9jdW1lbnQiLCJjcmVhdGVEb2N1bWVudEZyYWdtZW50IiwiYXJnSXRlbSIsImlzTm9kZSIsIk5vZGUiLCJhcHBlbmRDaGlsZCIsImNyZWF0ZVRleHROb2RlIiwiU3RyaW5nIiwidGhpcyIsImluc2VydEJlZm9yZSIsImZpcnN0Q2hpbGQiLCJtYXRjaGVzIiwibXNNYXRjaGVzU2VsZWN0b3IiLCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCJjbG9zZXN0IiwicyIsImVsIiwicGFyZW50RWxlbWVudCIsInBhcmVudE5vZGUiLCJub2RlVHlwZSIsIkNoYXJhY3RlckRhdGEiLCJEb2N1bWVudFR5cGUiLCJyZW1vdmVDaGlsZCIsImFjY29yZGlvbkhlYWRlcnMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiYWNjb3JkaW9uIiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImNsYXNzTGlzdCIsInRvZ2dsZSIsImtleUNvZGUiLCJ0b2dnbGVBc2lkZSIsInF1ZXJ5U2VsZWN0b3IiLCJhc2lkZSIsInJvdGF0ZUljb24iLCJiZ0ltZ3MiLCJlbGVtIiwiaW1nIiwiZGF0YXNldCIsImJhY2tncm91bmRJbWFnZSIsInBvc2l0aW9uIiwiYmFja2dyb3VuZFBvc2l0aW9uIiwic2l6ZSIsImJhY2tncm91bmRTaXplIiwicmVwZWF0IiwiYmFja2dyb3VuZFJlcGVhdCIsInN0eWxlIiwiY29uY2F0IiwiY2xvc2VEcmF3ZXIiLCJvcGVuRHJhd2VyIiwidG9nZ2xlRHJhd2VyIiwiZHJhd2VyIiwiZ2V0RWxlbWVudEJ5SWQiLCJlZGl0UmVhZG9ubHkiLCJlZGl0VGV4dGFyZWEiLCJyZW1vdmVBdHRyaWJ1dGUiLCJmb2N1cyIsImJnR3JhZGllbnRzIiwiZGlyZWN0aW9uIiwiZ3JhZGllbnREaXJlY3Rpb24iLCJzdGFydCIsImdyYWRpZW50U3RhcnQiLCJzdG9wIiwiZ3JhZGllbnRTdG9wIiwiZmFsbGJhY2siLCJncmFkaWVudEZhbGxiYWNrIiwiYmFja2dyb3VuZENvbG9yIiwiZ3JhZGllbnQiLCJjb250YWlucyIsImluZm9Cb3hlcyIsImluZm9Cb3giLCJjb250ZW50IiwiY2xvc2VCdXR0b25zIiwiY2xvc2VCdXR0b24iLCJyZW1vdmUiLCJkcm9wZG93bk1lbnVzIiwiaGFzRHJvcGRvd25zIiwib3BlbkRyb3Bkb3duIiwibWVudUl0ZW0iLCJub2RlIiwibGlua3MiLCJkcm9wZG93bkxpbmtzIiwibGluayIsInN0b3BQcm9wYWdhdGlvbiIsImRyb3Bkb3duTGluayIsIm1lbnVBY3Rpb25zIiwiYWN0aW9uIiwibWVudUFjdGlvbiIsImJvZHkiLCJjbG9zZU1vZGFsQnV0dG9ucyIsIm9wZW5Nb2RhbEJ1dHRvbnMiLCJtb2RhbENsb3NlIiwibW9kYWwiLCJtb2RhbE9wZW4iLCJhZGQiLCJidXR0b24iLCJ0YWJMaXN0IiwidGFicyIsIm1vYmlsZVRhYnMiLCJ0YWIiLCJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwiY2hlY2tlZCIsImNsZWFyVW5DaGVja2VkIiwic2V0QXR0cmlidXRlIiwidW5jaGVjayIsImNoZWNrIiwib25UYWJDbGlja2VkIiwiZXZ0IiwidGFyZ2V0IiwiZmlyZU1vYmlsZVRhYnMiLCJjaGVja1J1blRhYnMiLCJyZXNpemVySGFuZGxlZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJwYWdlV2lkdGgiLCJpbm5lcldpZHRoIiwiZG9jdW1lbnRFbGVtZW50IiwiY2xpZW50V2lkdGgiLCJ6SXRlbXMiLCJ6aW5kZXgiLCJ6Il0sIm1hcHBpbmdzIjoiOzs7Ozs7OzthQUFJQSxPQUFPQyxXQUFhQSxTQUFTQyxVQUFVQyxVQUN6Q0YsU0FBU0MsVUFBVUMsUUFBVUMsTUFBTUYsVUFBVUMsU0FFNUNILE9BQU9LLGlCQUFtQkEsZUFBZUgsVUFBVUMsVUFDcERFLGVBQWVILFVBQVVDLFFBQVVDLE1BQU1GLFVBQVVDLFNBeUJsRCxDQUFDRyxRQUFRSixVQUFXSyxTQUFTTCxVQUFXTSxpQkFBaUJOLFdBckJ0REMsUUFBUSxTQUFVTSxHQUNoQkEsRUFBS0MsZUFBZSxZQUd4QkMsT0FBT0MsZUFBZUgsRUFBTSxVQUFXLENBQ3JDSSxjQUFjLEVBQ2RDLFlBQVksRUFDWkMsVUFBVSxFQUNWQyxNQUFPLFdBQ0wsSUFBSUMsRUFBU2IsTUFBTUYsVUFBVWdCLE1BQU1DLEtBQUtDLFdBQ3RDQyxFQUFVQyxTQUFTQyx5QkFFckJOLEVBQU9kLFFBQVEsU0FBVXFCLEdBQ3ZCLElBQUlDLEVBQVNELGFBQW1CRSxLQUNoQ0wsRUFBUU0sWUFBWUYsRUFBU0QsRUFBVUYsU0FBU00sZUFBZUMsT0FBT0wsT0FHeEVNLEtBQUtDLGFBQWFWLEVBQVNTLEtBQUtFLGlCQU1uQzFCLFFBQVFKLFVBQVUrQixVQUNyQjNCLFFBQVFKLFVBQVUrQixRQUFVM0IsUUFBUUosVUFBVWdDLG1CQUNsQjVCLFFBQVFKLFVBQVVpQyx1QkFHM0M3QixRQUFRSixVQUFVa0MsVUFDckI5QixRQUFRSixVQUFVa0MsUUFBVSxTQUFTQyxHQUNuQyxJQUFJQyxFQUFLUixLQUVULEVBQUcsQ0FDRCxHQUFJUSxFQUFHTCxRQUFRSSxHQUFJLE9BQU9D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QUlDLHVCQUF1QnhFLFVBQVU4QyxPQUFPLGNBQzVDeUIsRUFBSUMsdUJBQXVCN0MsZ0JBQWdCLGVBTzdDaUQsUUFBVSxTQUFDTCxHQUNiQSxFQUFJQyx1QkFBdUJHLGFBQWEsV0FBVyxHQUNuREosRUFBSUMsdUJBQXVCeEUsVUFBVWtFLElBQUksZUFHdkNZLGFBQWUsU0FBQ0MsR0FHZkEsRUFBSUMsT0FBTy9GLFFBQVEsU0FBU2UsVUFBVXdDLFNBQVMsaUJBSWhEOEIsV0FBV1MsRUFBSUMsU0FJZkMsZUFBaUIsV0FDbkJaLEtBQUtySCxRQUFRLFNBQUF1SCxHQUNYQSxFQUFJMUUsaUJBQWlCLFFBQVNpRixpQkFJOUJJLGFBQWUsV0FFakIsSUFBSUMsR0FBaUIsRUFRckIsR0FMQWQsS0FBS3JILFFBQVEsU0FBQXVILEdBQ1hBLEVBQUlhLG9CQUFvQixRQUFTTixnQkFJbkIsT0FEaEJPLFVBQVl4SSxPQUFPeUksWUFBY25ILFNBQVNvSCxnQkFBZ0JDLGFBVXhELE9BUEFuQixLQUFLckgsUUFBUSxTQUFBdUgsR0FDUEEsRUFBSXZFLFVBQVV3QyxTQUFTLGVBQ3pCK0IsRUFBSXZFLFVBQVU4QyxPQUFPLHFCQUl6QnFDLEdBQWlCLElBR00sSUFBbkJBLElBQ0ZGLGlCQUVBRSxHQUFpQixJQUt2QnRJLE9BQU9nRCxpQkFBaUIsU0FBVXFGLGNBQWMsR0FFaEQsSUFBSUcsVUFBWXhJLE9BQU95SSxZQUFjbkgsU0FBU29ILGdCQUFnQkMsWUFFMURILFVBQVksT0FDZEgsZUNuR0osSUFBSU8sT0FBU3RILFNBQVN3QixpQkFBaUIsWUFFcEM4RixRQUNEQSxPQUFPekksUUFBUSxTQUFBTSxHQUNiLElBQUlvSSxFQUFTcEksRUFBS29ELFFBQVFpRixFQUMxQnJJLEVBQUs0RCxNQUFNLFdBQWF3RSIsImZpbGUiOiJwbGF0Zm9ybS11aS5taW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpZiAod2luZG93Lk5vZGVMaXN0ICYmICFOb2RlTGlzdC5wcm90b3R5cGUuZm9yRWFjaCkge1xuICBOb2RlTGlzdC5wcm90b3R5cGUuZm9yRWFjaCA9IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoO1xufVxuaWYod2luZG93LkhUTUxDb2xsZWN0aW9uICYmICFIVE1MQ29sbGVjdGlvbi5wcm90b3R5cGUuZm9yRWFjaCkge1xuICBIVE1MQ29sbGVjdGlvbi5wcm90b3R5cGUuZm9yRWFjaCA9IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoO1xufVxuLy8gU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vanNlcnovanNfcGllY2UvYmxvYi9tYXN0ZXIvRE9NL1BhcmVudE5vZGUvcHJlcGVuZCgpL3ByZXBlbmQoKS5tZFxuKGZ1bmN0aW9uIChhcnIpIHtcbiAgYXJyLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoaXRlbS5oYXNPd25Qcm9wZXJ0eSgncHJlcGVuZCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpdGVtLCAncHJlcGVuZCcsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBwcmVwZW5kKCkge1xuICAgICAgICB2YXIgYXJnQXJyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxcbiAgICAgICAgICBkb2NGcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgICAgICBcbiAgICAgICAgYXJnQXJyLmZvckVhY2goZnVuY3Rpb24gKGFyZ0l0ZW0pIHtcbiAgICAgICAgICB2YXIgaXNOb2RlID0gYXJnSXRlbSBpbnN0YW5jZW9mIE5vZGU7XG4gICAgICAgICAgZG9jRnJhZy5hcHBlbmRDaGlsZChpc05vZGUgPyBhcmdJdGVtIDogZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKGFyZ0l0ZW0pKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5pbnNlcnRCZWZvcmUoZG9jRnJhZywgdGhpcy5maXJzdENoaWxkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59KShbRWxlbWVudC5wcm90b3R5cGUsIERvY3VtZW50LnByb3RvdHlwZSwgRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGVdKTtcblxuaWYgKCFFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzKSB7XG4gIEVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXMgPSBFbGVtZW50LnByb3RvdHlwZS5tc01hdGNoZXNTZWxlY3RvciB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnQucHJvdG90eXBlLndlYmtpdE1hdGNoZXNTZWxlY3Rvcjtcbn1cblxuaWYgKCFFbGVtZW50LnByb3RvdHlwZS5jbG9zZXN0KSB7XG4gIEVsZW1lbnQucHJvdG90eXBlLmNsb3Nlc3QgPSBmdW5jdGlvbihzKSB7XG4gICAgdmFyIGVsID0gdGhpcztcblxuICAgIGRvIHtcbiAgICAgIGlmIChlbC5tYXRjaGVzKHMpKSByZXR1cm4gZWw7XG4gICAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQgfHwgZWwucGFyZW50Tm9kZTtcbiAgICB9IHdoaWxlIChlbCAhPT0gbnVsbCAmJiBlbC5ub2RlVHlwZSA9PT0gMSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG59XG5cbi8vIGZyb206aHR0cHM6Ly9naXRodWIuY29tL2pzZXJ6L2pzX3BpZWNlL2Jsb2IvbWFzdGVyL0RPTS9DaGlsZE5vZGUvcmVtb3ZlKCkvcmVtb3ZlKCkubWRcbihmdW5jdGlvbiAoYXJyKSB7XG4gIGFyci5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgaWYgKGl0ZW0uaGFzT3duUHJvcGVydHkoJ3JlbW92ZScpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpdGVtLCAncmVtb3ZlJywge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufSkoW0VsZW1lbnQucHJvdG90eXBlLCBDaGFyYWN0ZXJEYXRhLnByb3RvdHlwZSwgRG9jdW1lbnRUeXBlLnByb3RvdHlwZV0pOyIsImxldCBhY2NvcmRpb25IZWFkZXJzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmFjY29yZGlvbl9faGVhZGVyJyk7XG5cbmlmKGFjY29yZGlvbkhlYWRlcnMpIHtcbiAgYWNjb3JkaW9uSGVhZGVycy5mb3JFYWNoKGFjY29yZGlvbiA9PiB7XG4gICAgYWNjb3JkaW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBhY2NvcmRpb24ucGFyZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnKTtcbiAgICB9KTtcbiAgICBhY2NvcmRpb24uYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGUgPT4ge1xuICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBhY2NvcmRpb24ucGFyZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG4iLCJsZXQgdG9nZ2xlQXNpZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXNpZGUtdGFiJyk7XG5pZih0b2dnbGVBc2lkZSkge1xuICBsZXQgYXNpZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGxhdGZvcm0nKTtcbiAgbGV0IHJvdGF0ZUljb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXNpZGUtdGFiIGknKTtcblxuICB0b2dnbGVBc2lkZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICBhc2lkZS5jbGFzc0xpc3QudG9nZ2xlKCd0b2dnbGUnKTtcbiAgICByb3RhdGVJY29uLmNsYXNzTGlzdC50b2dnbGUoJ3JvdGF0ZS0xODAnKTtcbiAgfSk7XG59XG4iLCJsZXQgYmdJbWdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmJhY2tncm91bmQtaW1hZ2UnKTtcblxuaWYoYmdJbWdzKSB7XG4gIGJnSW1ncy5mb3JFYWNoKGVsZW0gPT4ge1xuICAgIGNvbnN0IGltZyA9IGVsZW0uZGF0YXNldC5iYWNrZ3JvdW5kSW1hZ2U7XG4gICAgY29uc3QgcG9zaXRpb24gPSBlbGVtLmRhdGFzZXQuYmFja2dyb3VuZFBvc2l0aW9uO1xuICAgIGNvbnN0IHNpemUgPSBlbGVtLmRhdGFzZXQuYmFja2dyb3VuZFNpemU7XG4gICAgY29uc3QgcmVwZWF0ID0gZWxlbS5kYXRhc2V0LmJhY2tncm91bmRSZXBlYXQ7XG4gICAgaWYoaW1nKSB7XG4gICAgICBlbGVtLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoJyR7aW1nfScpYDtcbiAgICB9XG4gICAgaWYocG9zaXRpb24pIHtcbiAgICAgIGVsZW0uc3R5bGUuYmFja2dyb3VuZFBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgfVxuICAgIGlmKHNpemUpIHtcbiAgICAgIGVsZW0uc3R5bGUuYmFja2dyb3VuZFNpemUgPSBzaXplO1xuICAgIH1cbiAgICBpZihyZXBlYXQpIHtcbiAgICAgIGVsZW0uc3R5bGUuYmFja2dyb3VuZFJlcGVhdCA9IHJlcGVhdDtcbiAgICB9XG4gIH0pO1xufVxuIiwibGV0IGNsb3NlRHJhd2VyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRyYXdlcl9fY2xvc2UnKTtcbmxldCBvcGVuRHJhd2VyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRyYXdlcl9fb3BlbicpO1xuXG5sZXQgdG9nZ2xlRHJhd2VyID0gKGRyYXdlcikgPT4ge1xuICBkcmF3ZXIuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJyk7XG59XG5cbmlmKGNsb3NlRHJhd2VyKSB7XG4gIGNsb3NlRHJhd2VyLmZvckVhY2goZHJhd2VyID0+IHtcbiAgICBkcmF3ZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICB0b2dnbGVEcmF3ZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZHJhd2VyLmRhdGFzZXQuZHJhd2VyKSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5pZihvcGVuRHJhd2VyKSB7XG4gIG9wZW5EcmF3ZXIuZm9yRWFjaChkcmF3ZXIgPT4ge1xuICAgIGRyYXdlci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHRvZ2dsZURyYXdlcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkcmF3ZXIuZGF0YXNldC5kcmF3ZXIpKTtcbiAgICB9KTtcbiAgfSk7XG59XG4iLCJsZXQgZWRpdFJlYWRvbmx5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLWVkaXQtcmVhZG9ubHknKTtcbmxldCBlZGl0VGV4dGFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtZWRpdC10ZXh0YXJlYScpO1xuXG5pZihlZGl0UmVhZG9ubHkgJiYgZWRpdFRleHRhcmVhKSB7XG4gIGVkaXRSZWFkb25seS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucmVhZG9ubHknKS5yZW1vdmVBdHRyaWJ1dGUoJ3JlYWRvbmx5Jyk7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnJlYWRvbmx5JykuZm9jdXMoKTtcbiAgfSk7XG5cbiAgZWRpdFRleHRhcmVhLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10ZXh0YXJlYScpLnJlbW92ZUF0dHJpYnV0ZSgncmVhZG9ubHknKTtcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdGV4dGFyZWEnKS5mb2N1cygpO1xuICB9KTtcbn1cbiIsImxldCBiZ0dyYWRpZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5saW5lYXItZ3JhZGllbnQnKTtcblxuaWYoYmdHcmFkaWVudHMpIHtcbiAgYmdHcmFkaWVudHMuZm9yRWFjaChlbGVtID0+IHtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBlbGVtLmRhdGFzZXQuZ3JhZGllbnREaXJlY3Rpb247XG4gICAgY29uc3Qgc3RhcnQgPSBlbGVtLmRhdGFzZXQuZ3JhZGllbnRTdGFydDtcbiAgICBjb25zdCBzdG9wID0gZWxlbS5kYXRhc2V0LmdyYWRpZW50U3RvcDtcbiAgICBjb25zdCBmYWxsYmFjayA9IGVsZW0uZGF0YXNldC5ncmFkaWVudEZhbGxiYWNrO1xuICAgIC8vIGJhY2tncm91bmQgaW1hZ2UgZGF0YSBhdHRyaWJ1dGVzXG4gICAgY29uc3QgaW1nID0gZWxlbS5kYXRhc2V0LmJhY2tncm91bmRJbWFnZTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGVsZW0uZGF0YXNldC5iYWNrZ3JvdW5kUG9zaXRpb247XG4gICAgY29uc3Qgc2l6ZSA9IGVsZW0uZGF0YXNldC5iYWNrZ3JvdW5kU2l6ZTtcbiAgICBjb25zdCByZXBlYXQgPSBlbGVtLmRhdGFzZXQuYmFja2dyb3VuZFJlcGVhdDtcbiAgICBcbiAgICBpZihkaXJlY3Rpb24gJiYgc3RhcnQgJiYgc3RvcCkge1xuICAgICAgaWYoZmFsbGJhY2spIHtcbiAgICAgICAgZWxlbS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBmYWxsYmFjaztcbiAgICAgIH1cbiAgICAgIFxuICAgICAgbGV0IGdyYWRpZW50ID0gYGxpbmVhci1ncmFkaWVudCgke2RpcmVjdGlvbn0sICR7c3RhcnR9LCAke3N0b3B9KWA7XG4gICAgICBlbGVtLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGdyYWRpZW50O1xuXG4gICAgICBpZihlbGVtLmNsYXNzTGlzdC5jb250YWlucygnYmFja2dyb3VuZC1pbWFnZScpKSB7XG4gICAgICAgIGlmKGltZykge1xuICAgICAgICAgIGVsZW0uc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYCR7Z3JhZGllbnR9LCB1cmwoJHtpbWd9KWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYocG9zaXRpb24pIHtcbiAgICAgICAgICBlbGVtLnN0eWxlLmJhY2tncm91bmRQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGlmKHNpemUpIHtcbiAgICAgICAgICBlbGVtLnN0eWxlLmJhY2tncm91bmRTaXplID0gc2l6ZTtcbiAgICAgICAgfVxuICAgICAgICBpZihyZXBlYXQpIHtcbiAgICAgICAgICBlbGVtLnN0eWxlLmJhY2tncm91bmRSZXBlYXQgPSByZXBlYXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuIiwibGV0IGluZm9Cb3hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbmZvLWJveCcpO1xuXG5pZiAoaW5mb0JveGVzKSB7XG4gIGluZm9Cb3hlcy5mb3JFYWNoKChpbmZvQm94KSA9PiB7XG4gICAgY29uc3QgdG9nZ2xlID0gaW5mb0JveC5xdWVyeVNlbGVjdG9yKCcudG9nZ2xlLWhpZGRlbicpO1xuICAgIGNvbnN0IGNvbnRlbnQgPSBpbmZvQm94LnF1ZXJ5U2VsZWN0b3IoJy5pbmZvLWJveF9fY29udGVudCcpO1xuICAgIGNvbnN0IGNsb3NlQnV0dG9ucyA9IGluZm9Cb3gucXVlcnlTZWxlY3RvckFsbCgnLmluZm8tYm94X19jbG9zZScpO1xuXG4gICAgdG9nZ2xlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnRlbnQucGFyZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnKTtcbiAgICB9KTtcblxuICAgIGNsb3NlQnV0dG9ucy5mb3JFYWNoKChjbG9zZUJ1dHRvbikgPT4ge1xuICAgICAgY2xvc2VCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIGNvbnRlbnQucGFyZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbiIsImxldCAgZHJvcGRvd25NZW51cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcm9wZG93bi1jb250ZW50Jyk7XG5sZXQgIGhhc0Ryb3Bkb3ducyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcm9wZG93bicpO1xuXG5sZXQgb3BlbkRyb3Bkb3duID0gKGl0ZW0pID0+IHtcbiAgbGV0IG1lbnVJdGVtID0gaXRlbS5jbG9zZXN0KCcuZHJvcGRvd24nKTtcbiAgaWYobWVudUl0ZW0uY2xhc3NMaXN0LmNvbnRhaW5zKCdhY3RpdmUnKSkge1xuICAgIG1lbnVJdGVtLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpO1xuICB9IGVsc2Uge1xuICAgIGhhc0Ryb3Bkb3ducy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgbm9kZS5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTtcbiAgICB9KTtcbiAgICBtZW51SXRlbS5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnKTtcbiAgfVxufVxuXG5pZihoYXNEcm9wZG93bnMpIHtcbiAgY29uc3QgbGlua3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZHJvcGRvd24gLmRyb3Bkb3duX190cmlnZ2VyJylcbiAgY29uc3QgZHJvcGRvd25MaW5rcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcm9wZG93bl9fY29udGVudCBhJylcblxuICBsaW5rcy5mb3JFYWNoKGxpbmsgPT4ge1xuICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBvcGVuRHJvcGRvd24obGluayk7XG4gICAgfSlcbiAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBlID0+IHtcbiAgICAgIGlmIChlLmtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb3BlbkRyb3Bkb3duKGxpbmspO1xuICAgICAgfVxuICAgIH0pXG4gIH0pO1xuXG4gIGRyb3Bkb3duTGlua3MuZm9yRWFjaChkcm9wZG93bkxpbmsgPT4ge1xuICAgIGRyb3Bkb3duTGluay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4ge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KVxuICB9KTtcbn1cblxubGV0IG1lbnVBY3Rpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNpdGUtbWVudS1tb2JpbGUtYWN0aW9uJyk7XG5cbmlmKG1lbnVBY3Rpb25zKSB7XG4gIG1lbnVBY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICBhY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQ7XG4gICAgICBsZXQgd3JhcHBlciA9IGFjdGlvbi5jbG9zZXN0KCcuc2l0ZS1tZW51LXdyYXBwZXInKTtcbiAgICAgIHdyYXBwZXIucXVlcnlTZWxlY3RvcignLnNpdGUtbWVudScpLmNsYXNzTGlzdC50b2dnbGUoJ2FjdGl2ZScpO1xuICAgIH0pXG4gIH0pXG59XG4iLCJsZXQgbWVudUFjdGlvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tb2JpbGUtbWVudS1hY3Rpb24nKTtcblxuaWYobWVudUFjdGlvbikge1xuICBsZXQgYm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wbGF0Zm9ybScpO1xuICBtZW51QWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgIGJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWVudS1vcGVuJyk7XG4gIH0pO1xufVxuIiwibGV0IGNsb3NlTW9kYWxCdXR0b25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1vZGFsX19jbG9zZScpO1xubGV0IG9wZW5Nb2RhbEJ1dHRvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubW9kYWxfX29wZW4nKTtcblxubGV0IG1vZGFsQ2xvc2UgPSAobW9kYWwpID0+IHtcbiAgbW9kYWwuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7XG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnbW9kYWwtb3BlbicpO1xufVxuXG5sZXQgbW9kYWxPcGVuID0gKG1vZGFsKSA9PiB7XG4gIG1vZGFsLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ21vZGFsLW9wZW4nKTtcbiAgbW9kYWwuZm9jdXMoKTtcbn1cblxuaWYoY2xvc2VNb2RhbEJ1dHRvbnMpIHtcbiAgY2xvc2VNb2RhbEJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4ge1xuICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIGxldCBtb2RhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGJ1dHRvbi5kYXRhc2V0Lm1vZGFsKTtcbiAgICAgIG1vZGFsQ2xvc2UobW9kYWwpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuaWYob3Blbk1vZGFsQnV0dG9ucykge1xuICBvcGVuTW9kYWxCdXR0b25zLmZvckVhY2goYnV0dG9uID0+IHtcbiAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICBsZXQgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChidXR0b24uZGF0YXNldC5tb2RhbCk7XG4gICAgICBtb2RhbE9wZW4obW9kYWwpO1xuICAgIH0pO1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGUgPT4ge1xuICAgICAgaWYgKGUua2V5Q29kZSA9PSAyNykge1xuICAgICAgICBsZXQgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChidXR0b24uZGF0YXNldC5tb2RhbCk7XG4gICAgICAgIG1vZGFsQ2xvc2UobW9kYWwpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cbiIsImNvbnN0IHRhYkxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudGFicycpO1xuXG5pZiAodGFiTGlzdCkge1xuICBjb25zdCB0YWJzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRhYicpOyAgXG5cbiAgbGV0IG1vYmlsZVRhYnMgPSAodGFiKSA9PiB7XG4gICAgLy8gaWYgdGFiIGlucHV0IGlzIGNoZWNrZWRcbiAgICBpZih0YWIucHJldmlvdXNFbGVtZW50U2libGluZy5jaGVja2VkKSB7XG5cbiAgICAgIC8vIGlmIHRoZSBjaGVja2VkIHRhYiBoYXMgdGhlIHVuLWNoZWNrZWQgY2xhc3MgcmVtb3ZlIGl0IGFuZCBzZXQgdGhlIGNoZWNrZWQgYXR0cmlidXRlIHRvIHRydWVcbiAgICAgIGlmKHRhYi5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLmNsYXNzTGlzdC5jb250YWlucygndW4tY2hlY2tlZCcpKSB7XG4gICAgICAgIHRhYi5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLmNsYXNzTGlzdC5yZW1vdmUoJ3VuLWNoZWNrZWQnKTtcbiAgICAgICAgdGFiLnByZXZpb3VzRWxlbWVudFNpYmxpbmcuc2V0QXR0cmlidXRlKCdjaGVja2VkJywgdHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB1bmNoZWNrIHRoZSB0YWJcbiAgICAgICAgdW5jaGVjayh0YWIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjbGVhclVuQ2hlY2tlZCgpO1xuICAgICAgdGFiLnByZXZpb3VzRWxlbWVudFNpYmxpbmcuc2V0QXR0cmlidXRlKCdjaGVja2VkJywgdHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9O1xuXG4gIGxldCBjbGVhclVuQ2hlY2tlZCA9ICgpID0+IHtcbiAgICB0YWJzLmZvckVhY2godGFiID0+ICB7XG4gICAgICBjb25zdCBjaGVja2VkID0gdGFiLmNsb3Nlc3QoJy50YWJzJyk7XG5cbiAgICAgIC8vIHNldHMgYW55IGNoZWNrZWQgcmFkaW8gdG8gZmFsc2VcbiAgICAgIGNoZWNrZWQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbY2hlY2tlZD1cInRydWVcIl0nKS5mb3JFYWNoKGNoZWNrID0+IHtcbiAgICAgICAgY2hlY2suc2V0QXR0cmlidXRlKCdjaGVja2VkJywgZmFsc2UpO1xuICAgICAgfSlcblxuICAgICAgLy8gcmVtb3ZlcyB1bi1jaGVja2VkIGZyb20gYWxsIHRhYnNcbiAgICAgIGlmKHRhYi5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLmNsYXNzTGlzdC5jb250YWlucygndW4tY2hlY2tlZCcpKSB7XG4gICAgICAgIHRhYi5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLmNsYXNzTGlzdC5yZW1vdmUoJ3VuLWNoZWNrZWQnKTtcbiAgICAgICAgdGFiLnByZXZpb3VzRWxlbWVudFNpYmxpbmcucmVtb3ZlQXR0cmlidXRlKCdjaGVja2VkJyk7XG4gICAgICB9XG4gICAgfSlcbiAgfTtcblxuICAvLyBzZXRzIGNoZWNrZWQgYXR0cmlidXRlIHRvIGZhbHNlXG4gIC8vIGFkZHMgY2xhc3MgdG8gaGlkZSB0YWItcGFuZWwgd2l0aCBjc3NcbiAgbGV0IHVuY2hlY2sgPSAodGFiKSA9PiB7XG4gICAgdGFiLnByZXZpb3VzRWxlbWVudFNpYmxpbmcuc2V0QXR0cmlidXRlKCdjaGVja2VkJywgZmFsc2UpO1xuICAgIHRhYi5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLmNsYXNzTGlzdC5hZGQoJ3VuLWNoZWNrZWQnKTtcbiAgfVxuXG4gIGxldCBvblRhYkNsaWNrZWQgPSAoZXZ0KSA9PiB7XG4gICAgLy8gZG8gbm90IHJ1biBpZiBmbGF0IHRhYnMgaGFzIHVucmVzcG9uc2l2ZSBjbGFzc1xuICAgIC8vIHRoaXMgaXMgZm9yIHRhYnMtLWZsYXRcbiAgICBpZihldnQudGFyZ2V0LmNsb3Nlc3QoJy50YWJzJykuY2xhc3NMaXN0LmNvbnRhaW5zKCd1bnJlc3BvbnNpdmUnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjYWxsIG1vYmlsZVRhYnMgZnVuY3Rpb25cbiAgICAgIG1vYmlsZVRhYnMoZXZ0LnRhcmdldCk7XG4gICAgfVxuICB9O1xuXG4gIGxldCBmaXJlTW9iaWxlVGFicyA9ICgpID0+IHtcbiAgICB0YWJzLmZvckVhY2godGFiID0+IHtcbiAgICAgIHRhYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uVGFiQ2xpY2tlZCk7XG4gICAgfSlcbiAgfVxuXG4gIGxldCBjaGVja1J1blRhYnMgPSAoKSA9PiB7XG4gICAgLy8gYm9vbCBjaGVjayB0byBvbmx5IHJ1biBKUyBiZWxvdyA3NjhweFxuICAgIGxldCByZXNpemVySGFuZGxlZCA9IGZhbHNlO1xuXG4gICAgLy8gZW5zdXJlIGNsaWNrIGV2ZW50IG9ubHkgZmlyZXMgb25jZVxuICAgIHRhYnMuZm9yRWFjaCh0YWIgPT4ge1xuICAgICAgdGFiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25UYWJDbGlja2VkKTtcbiAgICB9KVxuXG4gICAgcGFnZVdpZHRoID0gd2luZG93LmlubmVyV2lkdGggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIGlmIChwYWdlV2lkdGggPiA3NjcuOSkge1xuICAgICAgLy8gYWJvdmUgbW9iaWxlIHJlc29sdXRpb25zLCByZW1vdmUgYW55IHVuLWNoZWNrZWQgY2xhc3Mgb24gdGFic1xuICAgICAgdGFicy5mb3JFYWNoKHRhYiA9PiB7XG4gICAgICAgIGlmICh0YWIuY2xhc3NMaXN0LmNvbnRhaW5zKCd1bi1jaGVja2VkJykpIHtcbiAgICAgICAgICB0YWIuY2xhc3NMaXN0LnJlbW92ZSgndW4tY2hlY2tlZCcpO1xuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICByZXNpemVySGFuZGxlZCA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocmVzaXplckhhbmRsZWQgPT09IGZhbHNlICkge1xuICAgICAgICBmaXJlTW9iaWxlVGFicygpO1xuICAgICAgICAvLyBzZXQgYm9vbCB0byB0cnVlIHNvIGZ1bmN0aW9uIG9ubHkgcnVucyBvb25jZVxuICAgICAgICByZXNpemVySGFuZGxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNoZWNrUnVuVGFicywgZmFsc2UpO1xuXG4gIGxldCBwYWdlV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIC8vIHJ1biB0YWJzIEpTIG9uY2Ugb24gcGFnZWxvYWRcbiAgaWYgKHBhZ2VXaWR0aCA8IDc2Ny45KSB7XG4gICAgY2hlY2tSdW5UYWJzKCk7XG4gIH1cbn1cbiIsImxldCB6SXRlbXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS16XScpO1xuXG5pZih6SXRlbXMpIHtcbiAgekl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgbGV0IHppbmRleCA9IGl0ZW0uZGF0YXNldC56O1xuICAgIGl0ZW0uc3R5bGVbJ3otaW5kZXgnXSA9IHppbmRleDtcbiAgfSk7XG59Il19