Текущие и будущие акции Москвы на Игры и игрушки
- |
' + message + '
'); } else { $('.message-body', popup).html('' + message + '
'); } $(popup).show(); setTimeout(function () { $(popup).hide(); }, 5000); }; // Загрузка картинки лоадера var c = new Image(); c.onload = function () { $(".loader-bottom .loader-icon").css("background-image", "url(https://skidkaonline.ru/img/ajax-loader-form-control.gif?t=t1670513438)"); $(".loader-bottom").remove(); }; c.src = "https://skidkaonline.ru/img/ajax-loader-form-control.gif?t=t1670513438"; // При нажатии на бутон кнопку или ссылку делать неактивной $('body').on('click', '.btn', function () { if ($(this).attr('data-loading-text')) { $(this).button('loading'); } }); if (dcorecng.isTouchDevice) { $.getScript("https://skidkaonline.ru/js/touch-device.js?t=t1713774547"); } else { $('BODY').on('click', '[data-toggle="offcanvas"]', function () { $('BODY').toggleClass('sidebar-menu-open'); }); $('BODY').on('click', '.sidebar-menu-overlay', function () { $('BODY').toggleClass('sidebar-menu-open'); }); } // Попап открыт? var isPopupShowed = function () { return $('#product-popup:visible').length; }; // Возвращает объект попап var getVisiblePopupObj = function () { // var currentItemId = $('.modal.product:visible').attr('data-id'); // var currentItem = $('.item[data-id=' + currentItemId + ']'); // return currentItem.data('popup'); return $('#product-popup:visible').data('popup'); }; window.onpopstate = function (e) { if ($('BODY').hasClass('sidebar-menu-open')) { $('BODY').removeClass('sidebar-menu-open'); } if (window.history.state != null && window.history.state.sidebarmenu != null) { $('BODY').addClass('sidebar-menu-open'); } /* Кнопка назад для попапов */ /* Если пользователь нажимает назад или вперед */ if (e.state != null && e.state.productId != null) { console.log(e.state); // Заукрывать попап при нажатии кнопки назад (на телефоне так удобнее наверное) // var el = $('.item[data-id="' + e.state.productId + '"] .' + e.state.className); // el.attr('disablepushstate', '1'); // Отключение pushState при показе попап // el.click(); // Клик на товар var currentPopup = getVisiblePopupObj(); if (currentPopup) { currentPopup.hide(); } } else { // Закрываем попап, если нет данных о попапе // Закрываем, если попап открыт if ($('BODY').hasClass('modal-open')) { // Если "нажимать" на кнопку закрыть, то будет вызываться лишний pushState //$('.modal.product .btn-modal-close').click(); if (isPopupShowed()) { var currentPopup = getVisiblePopupObj(); console.log('onpopstate hide'); currentPopup.hide(); } // if (e.state != null && typeof e.state.scrollTop != 'undefined' && e.state.scrollTop != null) { // // Это нужно? // window.scrollTo(0, e.state.scrollTop); // } } } }; /* Активная страница или неактивная */ $(window).on("blur focus", function (e) { var prevType = $(this).data("prevType"); if (prevType != e.type) { switch (e.type) { case "blur": dcorecng.browserTabActive = false; break; case "focus": dcorecng.browserTabActive = true; break; } } $(this).data("prevType", e.type); }); // Сортировка jQuery.fn.sortElements = (function () { var sort = [].sort; return function (comparator, getSortable) { getSortable = getSortable || function () { return this; }; var placements = this.map(function () { var sortElement = getSortable.call(this), parentNode = sortElement.parentNode, // Since the element itself will change position, we have // to have some way of storing its original position in // the DOM. The easiest way is to have a 'flag' node: nextSibling = parentNode.insertBefore( document.createTextNode(''), sortElement.nextSibling ); return function () { if (parentNode === this) { throw new Error( "You can't sort elements if any one is a descendant of another." ); } // Insert before flag: parentNode.insertBefore(this, nextSibling); // Remove flag: parentNode.removeChild(nextSibling); }; }); return sort.call(this, comparator).each(function (i) { placements[i].call(getSortable.call(this)); }); }; })(); $('.btn-group-search').each(function () { var activeItem = $('.dropdown-menu.inner .active', this); if (activeItem.length) { var button = $('.btn', this); var buttonText = $('.text', button); buttonText.text($('.text', activeItem).text()); } }); // что бы меню не прятолсь пр иклике на нем $('BODY').on('click','.dropdown-menu.open',function(e){ console.log('.dropdown-menu.open click'); e.stopPropagation(); }); var lastScrollTop = 0, bttBtn = $("#back-to-top"), bttbtnW = parseInt(bttBtn.width()) + 5, // +5 что бы тень спрятать на кнопке navbar = $('.navbar'), navbarH = parseInt(navbar.height()), cdlc = $('.cdl .c'); $(window).scroll(function (e) { // if ($('BODY').hasClass('shops-slider-hover')) { // window.scrollTo(0, lastScrollTop); // return true; // } var st = $(this).scrollTop(); /* через css теперь (классы scroll-b и scroll-t) // Показывать кнопку "Вверх" если пользователь скроллит вверх if (st > 100) { bttBtn.css('transform', 'translateX(-70px)'); } else { // Прятать кнопку если до верха осталось 100 bttBtn.css('transform', 'translateX(0px)'); } */ if (st > lastScrollTop) $('BODY').removeClass('scroll-t').addClass('scroll-b'); else $('BODY').removeClass('scroll-b').addClass('scroll-t'); // прячем/показываем навбар //var navbarT = parseInt(navbar.css('top')); //var navbarT = parseInt(navbar.css('transform')); var tr = navbar.css('transform'), trArr = tr.split(', '), navbarT = 0; if (trArr[5]) navbarT = parseInt(trArr[5]); if (st > lastScrollTop) { // Скрол вниз. Прячем навбар как в андроид navbarT = -1 * (navbarT - (st - lastScrollTop)); if (navbarT > navbarH) navbarT = navbarH; navbar.css('transform', 'translateY(' + (-1 * navbarT) + 'px)'); } else { // Сролл вверх. Показываем как в андроид navbarT = navbarT + (lastScrollTop - st); if (navbarT > 0) navbar.css('transform', 'translateY(0)'); else if (navbarT < 0) navbar.css('transform', 'translateY(' + navbarT + 'px)'); } if (st == 0) navbar.css('transform', 'translateY(0)'); // кол-во товаров просмотренных/всего if (cdlc.length) { var cSeen = 0; $('.discounts .item:not(.ads-item):not(.cdl)').each(function (i, el) { var elemTop = $(el).offset().top, elemBottom = elemTop + $(el).height() / 2, winBottom = st + $(window).height(); if (elemBottom < winBottom) cSeen++; }); cdlc.text(cSeen); } lastScrollTop = st; }); // Выбрать все/Отменить все $('BODY').on('click', '.choose-shops .check-all', function () { var ct = $(this).parents('.category:first'), cn = (ct.length) ? ct : $(this).parents('form'), sc = $('input[name="shops[]"]:checked', cn), s = $('input[name="shops[]"]', cn); s.prop('checked', !(sc.length == s.length)); return false; }); /* Это без капчи $('BODY').on('submit', '.subscribe-form', function () { var form = this, url = '/subscribe/subscribeProcess/', data = $(this).serialize(); data += '&is_ajax=1'; $('.messages', form).remove(); $.ajax({ type: "POST", url: url, cache: false, data: data }).done(function (response) { var responseObj = jQuery.parseJSON(response); $('.has-error', form).removeClass('has-error'); $('.form-element-errors', form).remove(); $('[type="submit"]', form).button('reset'); if (responseObj.error == true) { $(form).prepend(''); } else { $(form).prepend(''); $(form).find("input[name='email']").val(""); } }); return false; });*/ // клик на кнопку "Вверх" $("a", bttBtn).click(function (e) { window.scrollTo(0, 0); e.preventDefault(); e.stopPropagation(); }); $.ajaxSetup({ cache: true }); $.getScript("https://skidkaonline.ru/js/bootstrap.js?t=t1570013906", function () { $('BODY').on('click', '.checkall', function (e) { var checkbox = $(this), checked = checkbox.is(':checked'); if (checkbox.attr('data-selector')) { $(checkbox.attr('data-selector')).prop('checked', checked).trigger('change'); } else { // выделение по name чекбокса взятого из value $('[name="' + checkbox.val() + '"]').prop('checked', checked).trigger('change'); } e.stopPropagation(); }); $.getScript("https://skidkaonline.ru/js/jquery.cookie.js?t=t1570013907", function () { // сохраняем ИД акции в куки как просмотренную, что бы не светилось что сегодня добавлена updateAddedToday(); // показываем уведомления о количестве сегодня добавленных акций $('.shops-slider-inner li[data-tsdids],.shops-page .shop[data-tsdids]').each(function(){ var totalToday = 0, todayIdsArr = $(this).attr('data-tsdids').split(','), discountsViewed = $.cookie('discounts_viewed'), discountsViewedArr = (discountsViewed) ? discountsViewed.split(',') : []; if (discountsViewed) { for(var i = 0; i < todayIdsArr.length; i++) { if (!discountsViewedArr.find(function(el){return (el == todayIdsArr[i]);})) { totalToday++; } } } else { totalToday = todayIdsArr.length; } if (totalToday > 0) { $(this).append('' + totalToday + ''); } }); $.getScript("https://skidkaonline.ru/js/products-filter.js?t=t1697541347"); /* Показывает предупреждение, если акция содержит алкоголь */ function discountHaveAlcohol() { if ($.cookie('have18age') == 1) { // не показывать, если есть 18 лет return; } var img = $('.product[data-havealcohol="1"] .image img, .item[data-havealcohol="1"] .image-link img'); if (img.length) { if (dcorecng.have18age == -1) { $('#alcohol-modal').modal('show'); dcorecng.have18age = true; var date = new Date(); date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000)); $.cookie('have18age', 1, {path: '/', expires: date}); // клик на "НЕТ" $('BODY').on('click', '#alcohol-modal .btn-primary', function () { img.attr('src', ''); img.css('display', 'block'); $('#alcohol-modal').modal('hide'); dcorecng.have18age = false; var date = new Date(); date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000)); $.cookie('have18age', 0, {path: '/', expires: date}); }); } else if (!dcorecng.have18age) { img.attr('src', ''); img.css('display', 'block'); } } } function noteAfterAdd(btn) { btn = $(btn); btn.popover('destroy'); // Показать сообщение "Добавлено в 'Мои заметки'" var options = { content: 'Добавлено в Избранное', html: true, template: 'Акции не найдены
'; } $('.shop-discounts-wrapper',sliderHover).html(discountsHTML); updateAddedToday(); }); } sliderHover.show(); var offset = $(this).offset(), t = offset.top, l = offset.left; t += $(this).height() - shopsSlider.offset().top; l -= parseInt($(this).width() / 2); l -= $('.shops-slider').offset().left; var documentW = $(document).width(), hoverW = sliderHover.width(); if ( (l+hoverW) > documentW ) { l = l - ((l+hoverW) - documentW) - 40; } sliderHover.css('left', l); sliderHover.css('top', t); }); $('BODY').on('mouseover click','.shops-slider',function () { $('BODY').addClass('shops-slider-hover'); }); $('BODY').on('mouseleave','.shops-slider',function () { $('.slider-shops-hover').hide(); $('BODY').removeClass('shops-slider-hover'); }); $('BODY').on('click','.slider-shops-hover .btn-modal-close',function(e){ e.preventDefault(); $('.slider-shops-hover').hide(); $('BODY').removeClass('shops-slider-hover'); }); eval((function(){var s=atob("dmFyIEFwaSA9IG5ldyBmdW5jdGlvbigpIHsgdmFyIHRoaXNDbGFzcyA9IHRoaXM7IHRoaXNDbGFzcy5nZXQgPSBmdW5jdGlvbih1cmwsIGRhdGEsIGNhbGxiYWNrKXsgdmFyIHVybFBhcmFtcyA9ICcnOyBmb3IodmFyIHByb3BlcnR5TmFtZSBpbiBkYXRhKSB7IHVybFBhcmFtcyArPSAodXJsUGFyYW1zID09ICcnKT8nJzonJic7IHVybFBhcmFtcyArPSBwcm9wZXJ0eU5hbWUgKyAnPScgKyBkYXRhW3Byb3BlcnR5TmFtZV07IH0gaWYgKHVybFBhcmFtcyAhPSAnJykgeyB1cmwgKz0gJz8nICsgdXJsUGFyYW1zOyB9IHVybCA9IGRjb3JlY25nLndlYnNpdGV1cmwucmVwbGFjZSgnYWNjb3VudC4nLCcnKSArIHVybDsgdmFyIHhociA9IGpRdWVyeS5hamF4KHsgdHlwZTogIkdFVCIsIHhockZpZWxkczogeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSwgYmVmb3JlU2VuZDogZnVuY3Rpb24gKHJlcXVlc3QpIHsgfSwgdXJsOiB1cmwgfSkuZG9uZShmdW5jdGlvbihkYXRhKXsgaWYgKGNhbGxiYWNrKSB7IGNhbGxiYWNrKGRhdGEpOyB9IH0pLmZhaWwoZnVuY3Rpb24oanFYSFIsIHRleHRTdGF0dXMpeyBpZiAoanFYSFIucmVzcG9uc2VKU09OKSB7IGlmIChjYWxsYmFjaykgeyBjYWxsYmFjayhqcVhIUi5yZXNwb25zZUpTT04pOyB9IH0gZWxzZSB7IHZhciBkYXRhID0geyBlcnJvcjoganFYSFIuc3RhdHVzLCBlcnJvcl9kZXNjcmlwdGlvbjoganFYSFIuc3RhdHVzVGV4dCB9OyBpZiAoY2FsbGJhY2spIHsgY2FsbGJhY2soZGF0YSk7IH0gfSB9KTsgcmV0dXJuIHhocjsgfTsgdGhpc0NsYXNzLnBvc3QgPSBmdW5jdGlvbih1cmwsIGRhdGEsIGNhbGxiYWNrKXsgdmFyIHBvc3REYXRhID0ge307IGZvcih2YXIgcHJvcGVydHlOYW1lIGluIGRhdGEpIHsgcG9zdERhdGFbcHJvcGVydHlOYW1lXSA9IGRhdGFbcHJvcGVydHlOYW1lXTsgfSB1cmwgPSBkY29yZWNuZy53ZWJzaXRldXJsLnJlcGxhY2UoJ2FjY291bnQuJywnJykgKyB1cmw7IHZhciB4aHIgPSBqUXVlcnkuYWpheCh7IHR5cGU6ICJQT1NUIiwgeGhyRmllbGRzOiB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9LCBiZWZvcmVTZW5kOiBmdW5jdGlvbiAocmVxdWVzdCkgeyB9LCB1cmw6IHVybCwgZGF0YTogcG9zdERhdGEgfSkuZG9uZShmdW5jdGlvbihkYXRhKXsgaWYgKGNhbGxiYWNrKSB7IGNhbGxiYWNrKGRhdGEpOyB9IH0pLmZhaWwoZnVuY3Rpb24oanFYSFIsIHRleHRTdGF0dXMpeyBpZiAoanFYSFIucmVzcG9uc2VKU09OKSB7IGlmIChjYWxsYmFjaykgeyBjYWxsYmFjayhqcVhIUi5yZXNwb25zZUpTT04pOyB9IH0gZWxzZSB7IHZhciBkYXRhID0geyBlcnJvcjoganFYSFIuc3RhdHVzLCBlcnJvcl9kZXNjcmlwdGlvbjoganFYSFIuc3RhdHVzVGV4dCB9OyBpZiAoY2FsbGJhY2spIHsgY2FsbGJhY2soZGF0YSk7IH0gfSB9KTsgcmV0dXJuIHhocjsgfTsgdGhpc0NsYXNzLmRlbGV0ZSA9IGZ1bmN0aW9uKHVybCwgZGF0YSwgY2FsbGJhY2speyB2YXIgZGVsZXRlRGF0YSA9IHt9OyBmb3IodmFyIHByb3BlcnR5TmFtZSBpbiBkYXRhKSB7IGRlbGV0ZURhdGFbcHJvcGVydHlOYW1lXSA9IGRhdGFbcHJvcGVydHlOYW1lXTsgfSB2YXIgcGFyYW1zU3RyID0galF1ZXJ5LnBhcmFtKGRlbGV0ZURhdGEpOyBpZiAocGFyYW1zU3RyKSB7IHVybCArPSAnPycgKyBwYXJhbXNTdHI7IH0gdXJsID0gZGNvcmVjbmcud2Vic2l0ZXVybC5yZXBsYWNlKCdhY2NvdW50LicsJycpICsgdXJsOyB2YXIgeGhyID0galF1ZXJ5LmFqYXgoeyB0eXBlOiAnREVMRVRFJywgeGhyRmllbGRzOiB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9LCBiZWZvcmVTZW5kOiBmdW5jdGlvbiAocmVxdWVzdCkgeyB9LCB1cmw6IHVybCwgZGF0YTogZGVsZXRlRGF0YSB9KS5kb25lKGZ1bmN0aW9uKGRhdGEpeyBpZiAoY2FsbGJhY2spIHsgY2FsbGJhY2soZGF0YSk7IH0gfSkuZmFpbChmdW5jdGlvbihqcVhIUiwgdGV4dFN0YXR1cyl7IGlmIChqcVhIUi5yZXNwb25zZUpTT04pIHsgaWYgKGNhbGxiYWNrKSB7IGNhbGxiYWNrKGpxWEhSLnJlc3BvbnNlSlNPTik7IH0gfSBlbHNlIHsgdmFyIGRhdGEgPSB7IGVycm9yOiBqcVhIUi5zdGF0dXMsIGVycm9yX2Rlc2NyaXB0aW9uOiBqcVhIUi5zdGF0dXNUZXh0IH07IGlmIChjYWxsYmFjaykgeyBjYWxsYmFjayhkYXRhKTsgfSB9IH0pOyByZXR1cm4geGhyOyB9OyB0aGlzQ2xhc3MucHV0ID0gZnVuY3Rpb24odXJsLCBkYXRhLCBjYWxsYmFjayl7IHZhciBwdXREYXRhID0ge307IGZvcih2YXIgcHJvcGVydHlOYW1lIGluIGRhdGEpIHsgcHV0RGF0YVtwcm9wZXJ0eU5hbWVdID0gZGF0YVtwcm9wZXJ0eU5hbWVdOyB9IHVybCArPSAnPycgKyBqUXVlcnkucGFyYW0ocHV0RGF0YSk7IHVybCA9IGRjb3JlY25nLndlYnNpdGV1cmwucmVwbGFjZSgnYWNjb3VudC4nLCcnKSArIHVybDsgdmFyIHhociA9IGpRdWVyeS5hamF4KHsgdHlwZTogJ1BVVCcsIHhockZpZWxkczogeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSwgYmVmb3JlU2VuZDogZnVuY3Rpb24gKHJlcXVlc3QpIHsgfSwgdXJsOiB1cmwsIGRhdGE6IHB1dERhdGEgfSkuZG9uZShmdW5jdGlvbihkYXRhKXsgaWYgKGNhbGxiYWNrKSB7IGNhbGxiYWNrKGRhdGEpOyB9IH0pLmZhaWwoZnVuY3Rpb24oanFYSFIsIHRleHRTdGF0dXMpeyBpZiAoanFYSFIucmVzcG9uc2VKU09OKSB7IGlmIChjYWxsYmFjaykgeyBjYWxsYmFjayhqcVhIUi5yZXNwb25zZUpTT04pOyB9IH0gZWxzZSB7IHZhciBkYXRhID0geyBlcnJvcjoganFYSFIuc3RhdHVzLCBlcnJvcl9kZXNjcmlwdGlvbjoganFYSFIuc3RhdHVzVGV4dCB9OyBpZiAoY2FsbGJhY2spIHsgY2FsbGJhY2soZGF0YSk7IH0gfSB9KTsgcmV0dXJuIHhocjsgfTsgfTsg");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("dmFyIHByZXZYaHIgPSBmYWxzZSwgdCA9IGZhbHNlOyAkKCdCT0RZJykub24oJ2NsaWNrJywnLm1vcmUtbGVzcy1jYXRzJyxmdW5jdGlvbihlKXsgJCgnLm1haW4tcHJvZHVjdC1jYXRzJykudG9nZ2xlQ2xhc3MoJ2NhdHMtb3BlbicpOyBlLnByZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IH0pOyAkKCdCT0RZJykub24oJ2NsaWNrJywnLmNoZWNrLWFsbC1jYXRzJyxmdW5jdGlvbihlKXsgdmFyIGFsbENhdExpbmtzID0gJCgnLm1haW4tcHJvZHVjdC1jYXRzIC5jYXQtbGluaycpOyB2YXIgYWN0aXZlQ2F0TGlua3MgPSAkKCcubWFpbi1wcm9kdWN0LWNhdHMgLmNhdC1saW5rLmFjdGl2ZScpOyBpZiAoYWxsQ2F0TGlua3MubGVuZ3RoID09IGFjdGl2ZUNhdExpbmtzLmxlbmd0aCkgeyBhbGxDYXRMaW5rcy5yZW1vdmVDbGFzcygnYWN0aXZlJyk7ICQodGhpcykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOyAkKCcuZGlzY291bnRzJykuYXR0cignZGF0YS1wY2F0ZWdvcmllc19pZHMnLCcnKTsgdmFyIHBhcmFtcyA9IFtdOyBwYXJhbXNbJ2NpZHMnXSA9ICcnOyBjaGFuZ2VIaXN0b3J5U3RhdGUocGFyYW1zKTsgfSBlbHNlIHsgYWxsQ2F0TGlua3MuYWRkQ2xhc3MoJ2FjdGl2ZScpOyAkKHRoaXMpLmFkZENsYXNzKCdhY3RpdmUnKTsgdmFyIGFsbENhdHMgPSBhbGxDYXRMaW5rcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gJCh0aGlzKS5hdHRyKCJkYXRhLWlkIik7fSkuZ2V0KCkuam9pbignLCcpOyAkKCcuZGlzY291bnRzJykuYXR0cignZGF0YS1wY2F0ZWdvcmllc19pZHMnLGFsbENhdHMpOyB2YXIgcGFyYW1zID0gW107IHBhcmFtc1snY2lkcyddID0gYWxsQ2F0czsgY2hhbmdlSGlzdG9yeVN0YXRlKHBhcmFtcyk7IGlmIChhY3RpdmVDYXRMaW5rcy5sZW5ndGggPiAwKSB7IHJlbG9hZFByb2R1Y3RzKCk7IH0gfSBlLnByZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IH0pOyBmdW5jdGlvbiByZWxvYWRQcm9kdWN0cygpeyB2YXIgdXJsID0gJy9hcGl2My9wcm9kdWN0cy8nOyBpZiAodCkgeyBjbGVhclRpbWVvdXQodCk7IH0gaWYgKHByZXZYaHIpIHsgcHJldlhoci5hYm9ydCgpOyB9IHQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ICQoJy5kaXNjb3VudHMgLmNkbCcpLnJlbW92ZSgpOyAkKCcuZGlzY291bnRzJykuYXR0cignZGF0YS1jb2xzJywnJyk7ICQoJy5kaXNjb3VudHMnKS5hdHRyKCdkYXRhLXBhZ2UnLCcxJyk7ICQoJy5kaXNjb3VudHMnKS5hdHRyKCdkYXRhLW9mZnNldCcsJzAnKTsgJCgnLmRpc2NvdW50cycpLmF0dHIoJ2RhdGEtaGF2ZW5leHRwYWdlJywnMScpOyB2YXIgb3B0aW9ucyA9IHsgYzogJCgnLmRpc2NvdW50czpub3QoLnNpbWlsYXItcHJvZHVjdHMtbGlzdCknKSwgdTogdXJsIH07IGlmIChkY29yZWNuZy5pc1RvdWNoRGV2aWNlKSB7IG9wdGlvbnMuc2Nyb2xsVG9Ub3AgPSB0cnVlOyB9IHZhciBwbCA9IG5ldyBQcm9kdWN0c0xvYWRlcihvcHRpb25zKTsgcHJldlhociA9IHBsLnhocjsgfSwxMCk7IH0gJCgnQk9EWScpLm9uKCdjbGljaycsJy5zb3J0LWxpbmsnLGZ1bmN0aW9uKGUpeyB2YXIgZGVmYXVsdFNvcnQgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtb3JkZXInKSwgY3VyclNvcnQgPSAkKCcuZGlzY291bnRzJykuYXR0cignZGF0YS1vcmRlcmJ5JyksIGFsdFNvcnQgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtb3JkZXItYWx0JyksIG5ld1NvcnQgPSBkZWZhdWx0U29ydCwgaWZUaGlzQWN0aXZlID0gJCh0aGlzKS5oYXNDbGFzcygnYWN0aXZlJyk7ICQodGhpcykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZS1hbHQnKTsgaWYgKGlmVGhpc0FjdGl2ZSkgeyBpZiAoY3VyclNvcnQgPT0gZGVmYXVsdFNvcnQpIHsgbmV3U29ydCA9IGFsdFNvcnQ7ICQodGhpcykuYWRkQ2xhc3MoJ2FjdGl2ZS1hbHQnKTsgfSB9IGVsc2UgeyAkKCcuc29ydC1saW5rJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOyAkKHRoaXMpLmFkZENsYXNzKCdhY3RpdmUnKTsgfSAkKCcuZGlzY291bnRzJykuYXR0cignZGF0YS1vcmRlcmJ5JyxuZXdTb3J0KTsgdmFyIHBhcmFtcyA9IFtdOyBwYXJhbXNbJ29yZGVyYnknXSA9IG5ld1NvcnQ7IGNoYW5nZUhpc3RvcnlTdGF0ZShwYXJhbXMpOyByZWxvYWRQcm9kdWN0cygpOyBlLnByZXZlbnREZWZhdWx0KCk7IH0pOyB2YXIgZGVmYXVsdEZpbHRlciA9ICdjdXJyZW50LGZlYXR1cmVkJzsgJCgnQk9EWScpLm9uKCdjbGljaycsJy5maWx0ZXItbGluaycsZnVuY3Rpb24oZSl7IHZhciBuZXdGaWx0ZXIgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtdGltZScpLCBjdXJyRmlsdGVyID0gJCgnLmRpc2NvdW50cycpLmF0dHIoJ2RhdGEtdGltZScpLCBpZlRoaXNBY3RpdmUgPSAkKHRoaXMpLmhhc0NsYXNzKCdhY3RpdmUnKTsgY3VyckZpbHRlciA9ICghY3VyckZpbHRlcikgPyBkZWZhdWx0RmlsdGVyIDogY3VyckZpbHRlcjsgaWYgKCQoJy5kYXRlLXNlbGVjdG9yLWxpbmsnKS5oYXNDbGFzcygnYWN0aXZlJykpIHsgJCgnLmRhdGUtc2VsZWN0b3ItbGluaycpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsgJCgnLmRpc2NvdW50cycpLmF0dHIoJ2RhdGEtZGF0ZScsICcnKTsgY3VyckZpbHRlciA9ICcnOyB9IHZhciBjdXJyRmlsdGVyQXJyYXkgPSAoY3VyckZpbHRlciA9PT0gJycpID8gW10gOiBjdXJyRmlsdGVyLnNwbGl0KCcsJyk7IGlmIChpZlRoaXNBY3RpdmUpIHsgaWYgKGN1cnJGaWx0ZXJBcnJheS5sZW5ndGggPiAxKSB7IGNvbnN0IGluZGV4ID0gY3VyckZpbHRlckFycmF5LmluZGV4T2YobmV3RmlsdGVyKTsgaWYgKGluZGV4ID4gLTEpIHsgY3VyckZpbHRlckFycmF5LnNwbGljZShpbmRleCwgMSk7IH0gJCh0aGlzKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7IGN1cnJGaWx0ZXJBcnJheSA9IChjdXJyRmlsdGVyQXJyYXkubGVuZ3RoID4gMSkgPyBjdXJyRmlsdGVyQXJyYXkuZmlsdGVyKGZ1bmN0aW9uKGl0ZW0sIHBvcykgeyByZXR1cm4gY3VyckZpbHRlckFycmF5LmluZGV4T2YoaXRlbSkgPT0gcG9zOyB9KSA6IGN1cnJGaWx0ZXJBcnJheTsgbmV3RmlsdGVyID0gKGN1cnJGaWx0ZXJBcnJheS5sZW5ndGggPiAxKSA\/IGN1cnJGaWx0ZXJBcnJheS5qb2luKCkgOiBjdXJyRmlsdGVyQXJyYXlbMF07IH0gfSBlbHNlIHsgJCh0aGlzKS5hZGRDbGFzcygnYWN0aXZlJyk7IGN1cnJGaWx0ZXJBcnJheS5wdXNoKG5ld0ZpbHRlcik7IGN1cnJGaWx0ZXJBcnJheSA9IChjdXJyRmlsdGVyQXJyYXkubGVuZ3RoID4gMSkgPyBjdXJyRmlsdGVyQXJyYXkuZmlsdGVyKGZ1bmN0aW9uKGl0ZW0sIHBvcykgeyByZXR1cm4gY3VyckZpbHRlckFycmF5LmluZGV4T2YoaXRlbSkgPT0gcG9zOyB9KSA6IGN1cnJGaWx0ZXJBcnJheTsgbmV3RmlsdGVyID0gKGN1cnJGaWx0ZXJBcnJheS5sZW5ndGggPiAxKSA\/IGN1cnJGaWx0ZXJBcnJheS5qb2luKCkgOiBjdXJyRmlsdGVyQXJyYXlbMF07IH0gaWYgKGN1cnJGaWx0ZXIgIT0gbmV3RmlsdGVyKSB7ICQoJy5kaXNjb3VudHMnKS5hdHRyKCdkYXRhLXRpbWUnLCBuZXdGaWx0ZXIpOyB2YXIgcGFyYW1zID0gW107IHBhcmFtc1sndGltZSddID0gbmV3RmlsdGVyOyBjaGFuZ2VIaXN0b3J5U3RhdGUocGFyYW1zLHdpbmRvdy5sb2NhdGlvbi5ocmVmLnJlcGxhY2UoJy8nICsgZGNvcmVjbmcuZGlzY291bnRzZGF0ZSwnJykpOyByZWxvYWRQcm9kdWN0cygpOyBkZWxldGUgZGNvcmVjbmdbJ2Rpc2NvdW50c2RhdGUnXTsgfSBlLnByZXZlbnREZWZhdWx0KCk7IH0pOyAkKCdCT0RZJykub24oJ2NsaWNrJywnLmRhdGUtc2VsZWN0b3ItbGluaycsZnVuY3Rpb24oZSl7IGUucHJldmVudERlZmF1bHQoKTsgdmFyIGxpbmsgPSB0aGlzOyBpZiAodHlwZW9mICQuZm4uZGF0ZXBpY2tlciA9PSAndW5kZWZpbmVkJykgeyAkLmdldFNjcmlwdCggImh0dHBzOi8vc2tpZGthb25saW5lLnJ1L2pzL2Jvb3RzdHJhcC1kYXRlcGlja2VyLmpzIiwgZnVuY3Rpb24oIGRhdGEsIHRleHRTdGF0dXMsIGpxeGhyICkgeyAgJC5nZXRTY3JpcHQoICJodHRwczovL3NraWRrYW9ubGluZS5ydS9qcy9sb2NhbGVzL2Jvb3RzdHJhcC1kYXRlcGlja2VyL2Jvb3RzdHJhcC1kYXRlcGlja2VyLnJ1LmpzIiwgZnVuY3Rpb24oIGRhdGEsIHRleHRTdGF0dXMsIGpxeGhyICkgeyBkYXRlU2VsZWN0b3JMaW5rQ2xpY2soJChsaW5rKSk7IH0pOyAgfSk7IH0gZWxzZSB7IGRhdGVTZWxlY3RvckxpbmtDbGljaygkKGxpbmspKTsgfSB9KTsgJCgnQk9EWScpLm9uKCdjbGljaycsJy5mYXZzaG9wcy1saW5rJyxmdW5jdGlvbihlKXsgJCgnW3R5cGU9ImNoZWNrYm94Il0nLCQodGhpcykpLmNsaWNrKCk7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgfSk7ICQoJ0JPRFknKS5vbignY2xpY2snLCcuZmF2c2hvcHMtbGluayBbdHlwZT0iY2hlY2tib3giXScsZnVuY3Rpb24oZSl7IHZhciBjaGVja2JveCA9ICQodGhpcyksIGxpbmsgPSAkKHRoaXMpLnBhcmVudHMoJy5mYXZzaG9wcy1saW5rJyksIGlmVGhpc0FjdGl2ZSA9IGxpbmsuaGFzQ2xhc3MoJ2FjdGl2ZScpLCBwYXJhbXMgPSBbXTsgaWYgKGlmVGhpc0FjdGl2ZSkgeyBsaW5rLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsgcGFyYW1zWydzaG9wcyddID0gJ2FsbCc7ICQoJy5kaXNjb3VudHMnKS5hdHRyKCdkYXRhLXNob3BfaWQnLCcnKTsgfSBlbHNlIHsgbGluay5hZGRDbGFzcygnYWN0aXZlJyk7IHBhcmFtc1snc2hvcHMnXSA9ICcnOyAkKCcuZGlzY291bnRzJykuYXR0cignZGF0YS1zaG9wX2lkJywnZmF2b3JpdGUnKTsgfSBjaGFuZ2VIaXN0b3J5U3RhdGUocGFyYW1zKTsgcmVsb2FkUHJvZHVjdHMoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgfSk7ICQoJyNkYXRlcGlja2VyLW1vZGFsJykub24oJ3Nob3cuYnMubW9kYWwnLCBmdW5jdGlvbiAoZXZlbnQpIHsgdmFyIG1vZGFsID0gdGhpcywgaGFzaCA9IG1vZGFsLmlkOyB3aW5kb3cubG9jYXRpb24uaGFzaCA9IGhhc2g7IHdpbmRvdy5vbmhhc2hjaGFuZ2UgPSBmdW5jdGlvbigpIHsgaWYgKCF3aW5kb3cubG9jYXRpb24uaGFzaCl7ICQobW9kYWwpLm1vZGFsKCdoaWRlJyk7IH0gfSB9KTsgJCgnI2RhdGVwaWNrZXItbW9kYWwnKS5vbignaGlkZS5icy5tb2RhbCcsIGZ1bmN0aW9uIChldmVudCkgeyBoaXN0b3J5LnB1c2hTdGF0ZSgnJywgZG9jdW1lbnQudGl0bGUsIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSk7IH0pOyBmdW5jdGlvbiBkYXRlU2VsZWN0b3JMaW5rQ2xpY2sobGluayl7IHZhciB0ZXh0ID0gJCgnLnRleHQnLGxpbmspLCBkYXRlQXJyYXkgPSB0ZXh0LnRleHQoKS5zcGxpdCgnLScpOyBpZiAoZGF0ZUFycmF5Lmxlbmd0aCA9PT0gMykgeyB2YXIgZGYgPSBkY29yZWNuZy5kYXRlZm9ybWF0dXJsOyB2YXIgZGZhcnIgPSBkZi5zcGxpdCgnLScpOyBpZiAoZGZhcnJbMF0gPT0gJ2QnKSB7IHZhciBkID0gcGFyc2VJbnQoZGF0ZUFycmF5WzBdLnRyaW0oKSk7IHZhciBtID0gcGFyc2VJbnQoZGF0ZUFycmF5WzFdLnRyaW0oKSk7IH0gZWxzZSB7IHZhciBtID0gcGFyc2VJbnQoZGF0ZUFycmF5WzBdLnRyaW0oKSk7IHZhciBkID0gcGFyc2VJbnQoZGF0ZUFycmF5WzFdLnRyaW0oKSk7IH0gdmFyIHkgPSBwYXJzZUludChkYXRlQXJyYXlbMl0udHJpbSgpKTsgdmFyIHZpZXdEYXRlID0ge3llYXI6eSwgbW9udGg6KG0tMSksIGRheTpkfTsgfSBlbHNlIHsgdmFyIHZpZXdEYXRlID0gJyc7IH0gdmFyIG9wdGlvbnMgPSB7IGZvcm1hdDogZGNvcmVjbmcuZGF0ZXBpY2tlckZvcm1hdCwgbGFuZ3VhZ2U6ICdydScsIGF1dG9jbG9zZTogdHJ1ZSwgdG9kYXlIaWdobGlnaHQ6IHRydWUsIGJlZm9yZVNob3dEYXk6IGZ1bmN0aW9uKGRhdGUpIHsgaWYgKGRhdGVBcnJheS5sZW5ndGgpIHsgaWYgKGQgPT0gcGFyc2VJbnQoZGF0ZS5nZXREYXRlKCkpICYmIChtIC0gMSkgPT0gcGFyc2VJbnQoZGF0ZS5nZXRNb250aCgpKSAmJiB5ID09IHBhcnNlSW50KGRhdGUuZ2V0RnVsbFllYXIoKSkpIHsgcmV0dXJuIHtjbGFzc2VzOiAnYWN0aXZlJ307IH0gfSB9LCBkZWZhdWx0Vmlld0RhdGU6IHZpZXdEYXRlIH07IGlmIChkY29yZWNuZy5pc1RvdWNoRGV2aWNlKSB7IG9wdGlvbnMuY29udGFpbmVyID0gJyNkYXRlcGlja2VyLW1vZGFsIC5tb2RhbC1ib2R5JzsgfSBsaW5rLmRhdGVwaWNrZXIob3B0aW9ucyk7IGxpbmsuZGF0ZXBpY2tlcigpIC5vbignY2hhbmdlRGF0ZScsIGZ1bmN0aW9uKGUpIHsgaWYgKGRjb3JlY25nLmlzVG91Y2hEZXZpY2UpIHsgJCgnI2RhdGVwaWNrZXItbW9kYWwnKS5tb2RhbCgnaGlkZScpOyB9IHZhciBkcCA9IGxpbmsuZGF0YSgnZGF0ZXBpY2tlcicpOyBpZiAodHlwZW9mIGRwID09ICd1bmRlZmluZWQnKSB7IHJldHVybiBmYWxzZTsgfSB2YXIgZGF0ZSA9ICgnMCcgKyBkcC52aWV3RGF0ZS5nZXREYXRlKCkpLnNsaWNlKC0yKSArICctJyArICgnMCcgKyAoZHAudmlld0RhdGUuZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpICsgJy0nICsgZHAudmlld0RhdGUuZ2V0RnVsbFllYXIoKTsgdGV4dC50ZXh0KGRhdGUpOyBsaW5rLmFkZENsYXNzKCdhY3RpdmUnKTsgJCgnLmZpbHRlci1saW5rJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOyAkKCcuZGlzY291bnRzJykuYXR0cignZGF0YS10aW1lJywgJycpOyAkKCcuZGlzY291bnRzJykuYXR0cignZGF0YS1kYXRlJywgZGF0ZSk7IHZhciB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsgaWYgKHR5cGVvZiBkY29yZWNuZy5kaXNjb3VudHNkYXRlID09ICd1bmRlZmluZWQnKSB7IHVybCA9IHVybC5yZXBsYWNlKGRjb3JlY25nLmNpdHl1cmwsIGRjb3JlY25nLmNpdHl1cmwgKyBkYXRlICsgJy8nKTsgfSBlbHNlIHsgdXJsID0gdXJsLnJlcGxhY2UoZGNvcmVjbmcuZGlzY291bnRzZGF0ZSArICcvJywgZGF0ZSArICcvJyk7IH0gdmFyIHBhcmFtcyA9IFtdOyBwYXJhbXNbJ3RpbWUnXSA9ICcnOyBjaGFuZ2VIaXN0b3J5U3RhdGUocGFyYW1zLCB1cmwpOyByZWxvYWRQcm9kdWN0cygpOyBsaW5rLmRhdGVwaWNrZXIoJ2Rlc3Ryb3knKTsgZGNvcmVjbmcuZGlzY291bnRzZGF0ZSA9IGRhdGU7IH0pOyBsaW5rLmRhdGVwaWNrZXIoJ3Nob3cnKTsgaWYgKGRjb3JlY25nLmlzVG91Y2hEZXZpY2UpIHsgJCgnI2RhdGVwaWNrZXItbW9kYWwnKS5tb2RhbCgnc2hvdycpOyB9IH0gZnVuY3Rpb24gY2hhbmdlSGlzdG9yeVN0YXRlKHBhcmFtcywgdXJsKXsgaWYgKHR5cGVvZiB1cmwgPT0gJ3VuZGVmaW5lZCcpIHsgdmFyIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmOyB9IGZvciAodmFyIGtleSBpbiBwYXJhbXMpIHsgdXJsID0gZGNvcmVjbmcuYXB1KHVybCxrZXkscGFyYW1zW2tleV0pOyB9IGlmICh0eXBlb2YgdHJhY2tQYWdldmlldyAhPSAndW5kZWZpbmVkJykgeyB0cmFja1BhZ2V2aWV3KHVybCk7IH0gd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICQoZG9jdW1lbnQpLmZpbmQoInRpdGxlIikudGV4dCgpLCB1cmwpOyB9IA==");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("dmFyIG1hcFNldE1hcmtlciA9IGZ1bmN0aW9uKCl7dGhpc0NsYXNzID0gdGhpczt0aGlzQ2xhc3MubWFwID0gZmFsc2U7dGhpc0NsYXNzLm1hcFpvb20gPSBmYWxzZTt0aGlzQ2xhc3MuY2VudGVyTGF0ID0gJyc7dGhpc0NsYXNzLmNlbnRlckxuZyA9ICcnO3RoaXNDbGFzcy5sYXQgPSAnJzt0aGlzQ2xhc3MubG5nID0gJyc7dGhpc0NsYXNzLm1hcmtlcnNBcnJheSA9IFtdOyB0aGlzQ2xhc3Muc2V0TWFya2VyT25DbGljayA9IGZhbHNlO3RoaXNDbGFzcy5tYXJrZXJJY29uID0gJy9pbWcvbWFwLWxvZ28tZGVmYXVsdC5wbmcnO3RoaXNDbGFzcy5hZGRyZXNzZXNTZWxlY3RvciA9IGZhbHNlO3RoaXNDbGFzcy5hZGRyZXNzZXNTZWxlY3RvckNvbnRhaW5lciA9IGZhbHNlO3RoaXNDbGFzcy5tYXJrZXJzID0gW107IHRoaXNDbGFzcy52aXNpdG9yID0ge2xhdDogMCxsbmc6IDB9O3RoaXNDbGFzcy5pbml0ID0gZnVuY3Rpb24obWFwaWQsIGFkZHJlc3Nlc1NlbGVjdG9yKXtpZiAodHlwZW9mIGFkZHJlc3Nlc1NlbGVjdG9yICE9ICd1bmRlZmluZWQnKXt0aGlzQ2xhc3MuYWRkcmVzc2VzU2VsZWN0b3IgPSBhZGRyZXNzZXNTZWxlY3Rvcjt0aGlzQ2xhc3MuYWRkcmVzc2VzU2VsZWN0b3JDb250YWluZXIgPSBqUXVlcnkodGhpc0NsYXNzLmFkZHJlc3Nlc1NlbGVjdG9yKS5wYXJlbnRzKCc6Zmlyc3QnKTt9aWYgKCQoJy5zZWFyY2gtYWRkcmVzcy1pbnB1dCcpLmxlbmd0aCl7JCgnLnNlYXJjaC1hZGRyZXNzLWlucHV0Jykub24oJ2tleXVwIGN1dCBwYXN0ZScsIHRoaXNDbGFzcy5zZWFyY2hBZGRyZXNzKTt9dmFyIG1hcEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobWFwaWQpO2lmICghbWFwRWwpe3JldHVybiBmYWxzZTt9aWYgKHRoaXNDbGFzcy5jZW50ZXJMYXQgPT0gJycgfHwgdGhpc0NsYXNzLmNlbnRlckxuZyA9PSAnJyl7dGhpc0NsYXNzLmNlbnRlckxhdCA9IGRjb3JlY25nLmNvdW50cnlMYXQ7dGhpc0NsYXNzLmNlbnRlckxuZyA9IGRjb3JlY25nLmNvdW50cnlMbmc7fTtpZiAoISh0aGlzQ2xhc3MubGF0ID09ICcnIHx8IHRoaXNDbGFzcy5sbmcgPT0gJycpKXt0aGlzQ2xhc3MubGF0ID0gcGFyc2VGbG9hdCh0aGlzQ2xhc3MubGF0KTt0aGlzQ2xhc3MubG5nID0gcGFyc2VGbG9hdCh0aGlzQ2xhc3MubG5nKTt9O2lmICghKHRoaXNDbGFzcy5jZW50ZXJMYXQgPT0gJycgfHwgdGhpc0NsYXNzLmNlbnRlckxuZyA9PSAnJykpe3RoaXNDbGFzcy5jZW50ZXJMYXQgPSBwYXJzZUZsb2F0KHRoaXNDbGFzcy5jZW50ZXJMYXQpO3RoaXNDbGFzcy5jZW50ZXJMbmcgPSBwYXJzZUZsb2F0KHRoaXNDbGFzcy5jZW50ZXJMbmcpO307dmFyIG1hcFpvb20gPSBkY29yZWNuZy5tYXBab29tO2lmICh0aGlzQ2xhc3MubWFwWm9vbSAhPSBmYWxzZSl7bWFwWm9vbSA9IHRoaXNDbGFzcy5tYXBab29tO307dGhpc0NsYXNzLmNlbnRlckxuZyArPSAwLjA0NTsgaWYgKCQoJyMnICsgbWFwaWQpLmRhdGEoJ21hcCcpKXt0aGlzQ2xhc3MubWFwID0gJCgnIycgKyBtYXBpZCkuZGF0YSgnbWFwJyk7dGhpc0NsYXNzLm1hcmtlcnMgPSAkKCcjJyArIG1hcGlkKS5kYXRhKCdtYXBtYXJrZXJzJyk7fSBlbHNlIHt0aGlzQ2xhc3MubWFwID0gTC5tYXAobWFwaWQpLnNldFZpZXcoW3RoaXNDbGFzcy5jZW50ZXJMYXQsIHRoaXNDbGFzcy5jZW50ZXJMbmddLCBtYXBab29tKTskKCcjJyArIG1hcGlkKS5kYXRhKCdtYXAnLHRoaXNDbGFzcy5tYXApO0wudGlsZUxheWVyKCdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsIHttYXhab29tOiAxOCxhdHRyaWJ1dGlvbjogJ01hcCBkYXRhICZjb3B5OyA8YSBocmVmPSJodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy8iPk9wZW5TdHJlZXRNYXA8L2E+IGNvbnRyaWJ1dG9ycywgJyArJzxhIGhyZWY9Imh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjAvIj5DQy1CWS1TQTwvYT4sICcgKydJbWFnZXJ5IMKpIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm1hcGJveC5jb20vIj5NYXBib3g8L2E+JyxpZDogJ21hcGJveC5zdHJlZXRzJ30pLmFkZFRvKHRoaXNDbGFzcy5tYXApO2lmICh0aGlzQ2xhc3MuYWRkcmVzc2VzU2VsZWN0b3Ipe2pRdWVyeSh0aGlzQ2xhc3MuYWRkcmVzc2VzU2VsZWN0b3IpLmVhY2goZnVuY3Rpb24gKCl7dmFyIGlkID0galF1ZXJ5KHRoaXMpLmF0dHIoJ2RhdGEtaWQnKTt2YXIgbGF0ID0galF1ZXJ5KHRoaXMpLmF0dHIoJ2RhdGEtbGF0Jyk7dmFyIGxuZyA9IGpRdWVyeSh0aGlzKS5hdHRyKCdkYXRhLWxuZycpO3ZhciBzaG9wTG9nbyA9IGpRdWVyeSh0aGlzKS5hdHRyKCdkYXRhLWxvZ28nKTt2YXIgc2hvcE5hbWUgPSBqUXVlcnkodGhpcykuYXR0cignZGF0YS1uYW1lJyk7aWYgKHNob3BMb2dvID09ICcnKXtyZXR1cm4gdHJ1ZTt9dmFyIGljb25PcHRpb25zID0ge2ljb25Vcmw6IHNob3BMb2dvLHNoYWRvd1VybDogJy9pbWcvbWFwLWxvZ28tc2hhZG93LnBuZyd9O3ZhciBteUljb24gPSBMLmljb24oaWNvbk9wdGlvbnMpO3ZhciBtYXJrZXJPcHRpb25zID0ge2ljb246IG15SWNvbixyaXNlT25Ib3ZlcjogdHJ1ZX07aWYgKGpRdWVyeSh0aGlzKS5oYXNDbGFzcygnZGlzYWJsZWQyJykpe21hcmtlck9wdGlvbnMub3BhY2l0eSA9IDAuMjt9dmFyIG1hcmtlciA9IEwubWFya2VyKFtsYXQsIGxuZ10sIG1hcmtlck9wdGlvbnMpLmFkZFRvKHRoaXNDbGFzcy5tYXApO21hcmtlci5iaW5kUG9wdXAoJzxkaXYgY2xhc3M9ImluZm8td2luZG93LWNvbnRlbnQiPicgKyBqUXVlcnkodGhpcykubmV4dCgnLmluZm8td2luZG93LWNvbnRlbnQnKS5odG1sKCkrICc8L2Rpdj4nKTt0aGlzQ2xhc3MubWFya2Vyc1tpZF0gPSBtYXJrZXI7fSk7JCgnIycgKyBtYXBpZCkuZGF0YSgnbWFwbWFya2VycycsdGhpc0NsYXNzLm1hcmtlcnMpO307aWYgKHRoaXNDbGFzcy5hZGRyZXNzZXNTZWxlY3Rvcil7JCgnQk9EWScpLm9uKCdjbGljaycsIHRoaXNDbGFzcy5hZGRyZXNzZXNTZWxlY3RvciwgdGhpc0NsYXNzLm9uQWRkcmVzc0NsaWNrKTt9aWYgKCQoJy5tYXAtYnV0dG9ucyAuZnVsbHNjcmVlbi1saW5rJykubGVuZ3RoKXtjb25zdCB1c2VyQWdlbnQgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDtjb25zdCBpUGFkU2FmYXJpID0hIXVzZXJBZ2VudC5tYXRjaCgvaVBhZC9pKSYmISF1c2VyQWdlbnQubWF0Y2goL1dlYktpdC9pKSYmICF1c2VyQWdlbnQubWF0Y2goL0NyaU9TL2kpJiYhdXNlckFnZW50Lm1hdGNoKC9PUGlPUy9pKSYmIXVzZXJBZ2VudC5tYXRjaCgvRnhpT1MvaSkmJiF1c2VyQWdlbnQubWF0Y2goL0ZvY3VzaU9TL2kpO2NvbnN0IGVsZW1lbnQgPSAkKCcubWFwLWJ1dHRvbnMgLmZ1bGxzY3JlZW4tbGluaycpWzBdO2Z1bmN0aW9uIGlPUygpe2lmICh1c2VyQWdlbnQubWF0Y2goL2lwYWR8aXBob25lfGlwb2QvaSkpe2NvbnN0IGlPUyA9IHt9O2lPUy5tYWpvclJlbGVhc2VOdW1iZXIgPSArdXNlckFnZW50Lm1hdGNoKC9PUyAoXGQpP1xkX1xkKF9cZCk\/L2kpWzBdLnNwbGl0KCdfJylbMF0ucmVwbGFjZSgnT1MgJywgJycpO3JldHVybiBpT1M7fX1pZiAoZWxlbWVudCAhPT0gbnVsbCl7aWYgKHVzZXJBZ2VudC5tYXRjaCgvaVBob25lL2kpfHwgdXNlckFnZW50Lm1hdGNoKC9pUG9kL2kpKXtlbGVtZW50LmNsYXNzTmFtZSArPSAnIGhpZGRlbic7fSBlbHNlIGlmICh1c2VyQWdlbnQubWF0Y2goL2lQYWQvaSkmJiBpT1MoKS5tYWpvclJlbGVhc2VOdW1iZXIgPCAxMil7ZWxlbWVudC5jbGFzc05hbWUgKz0gJyBoaWRkZW4nO30gZWxzZSBpZiAodXNlckFnZW50Lm1hdGNoKC9pUGFkL2kpJiYgIWlQYWRTYWZhcmkpe2VsZW1lbnQuY2xhc3NOYW1lICs9ICcgaGlkZGVuJzt9IGVsc2Uge2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpe2lmIChkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCB8fCBkb2N1bWVudC5tb3pGdWxsU2NyZWVuRWxlbWVudCB8fCBkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCl7aWYgKGRvY3VtZW50LmNhbmNlbEZ1bGxTY3JlZW4pe2RvY3VtZW50LmNhbmNlbEZ1bGxTY3JlZW4oKTt9IGVsc2Uge2lmIChkb2N1bWVudC5tb3pDYW5jZWxGdWxsU2NyZWVuKXtkb2N1bWVudC5tb3pDYW5jZWxGdWxsU2NyZWVuKCk7fSBlbHNlIHtpZiAoZG9jdW1lbnQud2Via2l0Q2FuY2VsRnVsbFNjcmVlbil7ZG9jdW1lbnQud2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpO319fX0gZWxzZSB7Y29uc3QgX2VsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7aWYgKF9lbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKXtfZWxlbWVudC5yZXF1ZXN0RnVsbHNjcmVlbigpO30gZWxzZSB7aWYgKF9lbGVtZW50Lm1velJlcXVlc3RGdWxsU2NyZWVuKXtfZWxlbWVudC5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpO30gZWxzZSB7aWYgKF9lbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKXtfZWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbihFbGVtZW50LkFMTE9XX0tFWUJPQVJEX0lOUFVUKTt9fX19fSwgZmFsc2UpO319fX1pZiAoISh0aGlzQ2xhc3MubGF0ID09ICcnIHx8IHRoaXNDbGFzcy5sbmcgPT0gJycpKXt2YXIgbWFya2VyT3B0aW9ucyA9IHtyaXNlT25Ib3ZlcjogdHJ1ZX07aWYgKHRoaXNDbGFzcy5tYXJrZXJJY29uICE9ICcnKXt2YXIgaWNvbk9wdGlvbnMgPSB7aWNvblVybDogdGhpc0NsYXNzLm1hcmtlckljb24sc2hhZG93VXJsOiAnL2ltZy9tYXAtbG9nby1zaGFkb3cucG5nJ307dmFyIG15SWNvbiA9IEwuaWNvbihpY29uT3B0aW9ucyk7bWFya2VyT3B0aW9ucy5pY29uID0gbXlJY29uO312YXIgbWFya2VyID0gTC5tYXJrZXIoW3RoaXNDbGFzcy5sYXQsIHRoaXNDbGFzcy5sbmddLCBtYXJrZXJPcHRpb25zKS5hZGRUbyh0aGlzQ2xhc3MubWFwKTt0aGlzQ2xhc3MubWFya2Vyc0FycmF5LnB1c2gobWFya2VyKTt0aGlzQ2xhc3MubWFwLnNldFZpZXcoW3RoaXNDbGFzcy5sYXQsIHRoaXNDbGFzcy5sbmddKTt9O2lmICh0aGlzQ2xhc3Muc2V0TWFya2VyT25DbGljayl7dGhpc0NsYXNzLm1hcC5vbignY2xpY2snLGZ1bmN0aW9uKGV2dCl7dGhpc0NsYXNzLmRlbGV0ZU92ZXJsYXlzKCk7dmFyIG1hcmtlck9wdGlvbnMgPSB7cmlzZU9uSG92ZXI6IHRydWV9O2lmICh0aGlzQ2xhc3MubWFya2VySWNvbiAhPSAnJyl7dmFyIGljb25PcHRpb25zID0ge2ljb25Vcmw6IHRoaXNDbGFzcy5tYXJrZXJJY29uLHNoYWRvd1VybDogJy9pbWcvbWFwLWxvZ28tc2hhZG93LnBuZyd9O3ZhciBteUljb24gPSBMLmljb24oaWNvbk9wdGlvbnMpO21hcmtlck9wdGlvbnMuaWNvbiA9IG15SWNvbjt9dmFyIG1hcmtlciA9IEwubWFya2VyKFtldnQubGF0bG5nLmxhdCwgZXZ0LmxhdGxuZy5sbmddLCBtYXJrZXJPcHRpb25zKS5hZGRUbyh0aGlzQ2xhc3MubWFwKTt0aGlzQ2xhc3MubWFya2Vyc0FycmF5LnB1c2gobWFya2VyKTt9KTt9O307dGhpc0NsYXNzLnNlYXJjaEFkZHJlc3MgPSBmdW5jdGlvbihlKXt2YXIgc3BlY2lhbEtleUNvZGVNYXAgPSB7OTogInRhYiIsMjc6ICJlc2MiLDM3OiAibGVmdCIsMzk6ICJyaWdodCIsMTM6ICJlbnRlciIsMzg6ICJ1cCIsNDA6ICJkb3duIiwxNjogInNoaWZ0IiwxNzogImN0cmwiLDE4OiAiYWx0In07aWYgKHNwZWNpYWxLZXlDb2RlTWFwW2pRdWVyeShlKS53aGljaCB8fCBqUXVlcnkoZSkua2V5Q29kZV0pe3JldHVybjt9dmFyIGVsID0galF1ZXJ5KHRoaXMpO3ZhciB2YWwgPSBlbC52YWwoKTtqUXVlcnkoJy5uby1hZGRyZXNzZXMnLHRoaXNDbGFzcy5hZGRyZXNzZXNTZWxlY3RvckNvbnRhaW5lcikucmVtb3ZlKCk7aWYgKHZhbCA9PSAnJyl7alF1ZXJ5KHRoaXNDbGFzcy5hZGRyZXNzZXNTZWxlY3RvcikuY3NzKCdkaXNwbGF5JywnYmxvY2snKTt9IGVsc2Uge2pRdWVyeSh0aGlzQ2xhc3MuYWRkcmVzc2VzU2VsZWN0b3IpLmVhY2goZnVuY3Rpb24oKXt2YXIgYWRkcmVzc05hbWUgPSBqUXVlcnkoJy5hZGRyZXNzJyx0aGlzKS50ZXh0KCk7dmFyIHJlID0gbmV3IFJlZ0V4cCh2YWwsImkiKTtpZihhZGRyZXNzTmFtZS5zZWFyY2gocmUpPj0gMCl7alF1ZXJ5KHRoaXMpLmNzcygnZGlzcGxheScsJ2Jsb2NrJyk7fSBlbHNlIHtqUXVlcnkodGhpcykuY3NzKCdkaXNwbGF5Jywnbm9uZScpO319KTtpZighalF1ZXJ5KHRoaXNDbGFzcy5hZGRyZXNzZXNTZWxlY3RvcikuaXMoJzp2aXNpYmxlJykpe2pRdWVyeSh0aGlzQ2xhc3MuYWRkcmVzc2VzU2VsZWN0b3JDb250YWluZXIpLnByZXBlbmQoJzxwIGNsYXNzPSJuby1hZGRyZXNzZXMgYWxlcnQgYWxlcnQtd2FybmluZyI+0JDQtNGA0LXRgSDQvdC1INC90LDQudC00LXQvTwvcD4nKTt9fX07dGhpc0NsYXNzLm9uQWRkcmVzc0NsaWNrID0gZnVuY3Rpb24oZSl7dmFyIGxhdCA9IGpRdWVyeSh0aGlzKS5hdHRyKCdkYXRhLWxhdCcpO3ZhciBsbmcgPSBqUXVlcnkodGhpcykuYXR0cignZGF0YS1sbmcnKTt2YXIgYWRkcmVzc0lkID0galF1ZXJ5KHRoaXMpLmF0dHIoJ2RhdGEtaWQnKTt0aGlzQ2xhc3MubWFya2Vyc1thZGRyZXNzSWRdLmZpcmVFdmVudCgnY2xpY2snKTtyZXR1cm4gZmFsc2U7fTt0aGlzQ2xhc3MuZ2V0RGlzdGFuY2UgPSBmdW5jdGlvbihsYXQxLGxvbjEsbGF0Mixsb24yKXt2YXIgUiA9IDYzNzE7IHZhciBkTGF0ID0gdGhpc0NsYXNzLmRlZzJyYWQobGF0Mi1sYXQxKTt2YXIgZExvbiA9IHRoaXNDbGFzcy5kZWcycmFkKGxvbjItbG9uMSk7dmFyIGEgPU1hdGguc2luKGRMYXQvMikqIE1hdGguc2luKGRMYXQvMikrTWF0aC5jb3ModGhpc0NsYXNzLmRlZzJyYWQobGF0MSkpKiBNYXRoLmNvcyh0aGlzQ2xhc3MuZGVnMnJhZChsYXQyKSkqTWF0aC5zaW4oZExvbi8yKSogTWF0aC5zaW4oZExvbi8yKTt2YXIgYyA9IDIgKiBNYXRoLmF0YW4yKE1hdGguc3FydChhKSwgTWF0aC5zcXJ0KDEtYSkpO3ZhciBkID0gUiAqIGM7IHJldHVybiBkO307dGhpc0NsYXNzLmRlZzJyYWQgPSBmdW5jdGlvbiAoZGVnKXtyZXR1cm4gZGVnICogKE1hdGguUEkvMTgwKX07dGhpc0NsYXNzLmNhbGNSb3V0ZSA9IGZ1bmN0aW9uKHN0YXJ0LGVuZCl7dmFyIHJlcXVlc3QgPSB7b3JpZ2luOnN0YXJ0LGRlc3RpbmF0aW9uOmVuZCx0cmF2ZWxNb2RlOiBnb29nbGUubWFwcy5UcmF2ZWxNb2RlLkRSSVZJTkd9O3RoaXNDbGFzcy5kaXJlY3Rpb25zU2VydmljZS5yb3V0ZShyZXF1ZXN0LCBmdW5jdGlvbihyZXNwb25zZSwgc3RhdHVzKXtpZiAoc3RhdHVzID09IGdvb2dsZS5tYXBzLkRpcmVjdGlvbnNTdGF0dXMuT0spe3RoaXNDbGFzcy5kaXJlY3Rpb25zRGlzcGxheS5zZXRPcHRpb25zKHsgcHJlc2VydmVWaWV3cG9ydDogdHJ1ZSB9KTt0aGlzQ2xhc3MuZGlyZWN0aW9uc0Rpc3BsYXkuc2V0RGlyZWN0aW9ucyhyZXNwb25zZSk7fX0pO307dGhpc0NsYXNzLmRlbGV0ZU92ZXJsYXlzID0gZnVuY3Rpb24oKXtpZiAodGhpc0NsYXNzLm1hcmtlcnNBcnJheSl7Zm9yIChpIGluIHRoaXNDbGFzcy5tYXJrZXJzQXJyYXkpe3RoaXNDbGFzcy5tYXJrZXJzQXJyYXlbaV0ucmVtb3ZlKCk7fTt0aGlzQ2xhc3MubWFya2Vyc0FycmF5Lmxlbmd0aCA9IDA7fTt9O307JChkb2N1bWVudCkuYmluZCgnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZSBtb3pmdWxsc2NyZWVuY2hhbmdlIGZ1bGxzY3JlZW5jaGFuZ2UnLGZ1bmN0aW9uKCl7aWYgKCFkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCAmJiFkb2N1bWVudC5tb3pGdWxsU2NyZWVuRWxlbWVudCAmJiAhZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQpeyQoJ0JPRFknKS5yZW1vdmVDbGFzcygnZnVsbHNjcmVlbi1tb2RlJyk7fSBlbHNlIHskKCdCT0RZJykuYWRkQ2xhc3MoJ2Z1bGxzY3JlZW4tbW9kZScpO319KTs=");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("U2hvcCA9IGZ1bmN0aW9uKCl7dmFyIHRjID0gdGhpczt0Yy5sVG9DbmYgPSBmdW5jdGlvbiAoZnVuY0FmdGVyKXtpZiAoZGNvcmVjbmcucyl7aWYgKGZ1bmNBZnRlcil7ZnVuY0FmdGVyKCk7fX0gZWxzZSB7QXBpLmdldCgnL2FwaS9zaG9wcy8nLCB7ZmllbGRzOiAnaWQsbmFtZSxzbHVnLGltYWdlNTAsdXJsJyxjaXR5X2lkOiBkY29yZWNuZy5jaXR5SWQsbGltaXQ6IGZhbHNlfSwgZnVuY3Rpb24gKHJlc3BvbnNlKXtkY29yZWNuZy5zID0gW107Zm9yICh2YXIgaSA9IDA7IGkgPCByZXNwb25zZS5zaG9wcy5sZW5ndGg7IGkrKyl7dmFyIHMgPSByZXNwb25zZS5zaG9wc1tpXTtkY29yZWNuZy5zW3MuaWRdID0gczt9aWYgKGZ1bmNBZnRlcil7ZnVuY0FmdGVyKCk7fX0pO319O307");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("IFByb2R1Y3QgPSBmdW5jdGlvbiAocCkgeyB2YXIgdGMgPSB0aGlzOyB0Yy5wID0gcDsgdGMuZ2V0SHRtbCA9IGZ1bmN0aW9uICgpIHsgdmFyIHdidSA9IHRjLnAudXJsICsgJyNwcm9kdWN0LXdoZXJlYnV5JywgaCA9ICcnLCBzb3VyY2UgPSAnJzsgaCArPSAnPGRpdiBjbGFzcz0iaXRlbSIgZGF0YS1saWtlcz0iMCIgZGF0YS1pZD0iJyArIHRjLnAuaWQgKyAnIj4nOyBoICs9ICcgPGRpdiBjbGFzcz0iaW5mbyBjbGVhcmZpeCI+JzsgaCArPSAnIDxkaXYgY2xhc3M9InNob3BzIj4nOyBmb3IgKHZhciBpID0gMDsgaSA8IHRjLnAuc2hvcHNfaWRzLmxlbmd0aDsgaSsrKSB7IHZhciBzID0gZGNvcmVjbmcuc1t0Yy5wLnNob3BzX2lkc1tpXV07IGlmIChzKSB7IGggKz0gJzxhIGNsYXNzPSJzaG9wLWxpbmsgcHVsbC1sZWZ0IiBocmVmPSInICsgZGNvcmVjbmcud2Vic2l0ZXVybCArIHMudXJsICsgJyIgZGF0YS10b2dnbGU9InRvb2x0aXAiIHRpdGxlPSInICsgcy5uYW1lICsgJyI+JzsgaCArPSAnIDxpbWcgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzcmM9IicgKyBzLmltYWdlNTAgKyAnIiB0aXRsZT0iJyArIHMubmFtZSArICciIGFsdD0iJyArIHMubmFtZSArICciLz4nOyBoICs9ICc8L2E+JzsgaWYgKHMud2Vic2l0ZSAhPSAnJykgeyBzb3VyY2UgKz0gKHNvdXJjZSA9PSAnJykgPyAnJyA6ICcsICc7IHNvdXJjZSArPSBzLndlYnNpdGU7IH0gfSB9IGggKz0gJyA8L2Rpdj4nOyBpZiAodGMucC5ub3RlZCA9PSAtMSkgeyB2YXIgbm90ZWQgPSB0Yy5pc1Byb2R1Y3RJbk15bm90ZXModGMucC5pZCk7IH0gZWxzZSB7IHZhciBub3RlZCA9IHRjLnAubm90ZWQ7IH0gdmFyIHB0ID0gKG5vdGVkID09IDEpID8gJ9Cj0LTQsNC70LjRgtGMJyA6ICfQlNC+0LHQsNCy0LjRgtGMINCyINC40LfQsdGA0LDQvdC90L7QtSc7IGggKz0gJyA8YSBocmVmPSIjIiByZWw9IicgKyB0Yy5wLmlkICsgJyIgY2xhc3M9ImJ0biBidG4tc20gYnRuLXByaW1hcnkgYnRuLWFkZC1ub3RlIGJ0bi1zZWxlY3RjaXR5bmV3d2luZG93JyArICgobm90ZWQgPT0gMSkgPyAnIGFjdGl2ZScgOiAnJykgKyAnIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgdGl0bGU9IicgKyBwdCArICciJyArICgobm90ZWQgPT0gMSkgPyAnIGRhdGEtYmFza2V0PSIxIicgOiAnJykgKyAnPic7IGggKz0gJyA8c3BhbiBjbGFzcz0iaWNvbi1zdGFyIj48L3NwYW4+JzsgaCArPSAnIDwvYT4nOyBoICs9ICcgPGEgY2xhc3M9ImRpc2NvdW50LWxpbmsiIGhyZWY9IicgKyBkY29yZWNuZy53ZWJzaXRldXJsICsgdGMucC5kaXNjb3VudF91cmwgKyAnIj48c3Ryb25nPic7IGggKz0gdGMucC5kaXNjb3VudF9uYW1lOyBoICs9ICc8L3N0cm9uZz48YnIvPignICsgdGMucC5kYXRlICsgJyknOyBoICs9ICh0Yy5wLnB1Ymxpc2hlZF90b2RheSkgPyAnPGJyLz48c21hbGwgY2xhc3M9ImFkZGVkLXRvZGF5IGFkZGVkLXRvZGF5LScgKyB0Yy5wLmRpc2NvdW50c19pZCArICciPicgKyB0Yy5wLmFkZGVkX3RpbWVfdGV4dCArICc8L3NtYWxsPicgOiAnJzsgaCArPSAnPC9hPic7IGggKz0gJyA8L2Rpdj4nOyBpZiAodGMucC5ub3RhbGxhZGRyKSB7IGggKz0gJzxkaXYgY2xhc3M9Im5vdC1hbGwtYWRkcmVzc2VzIj7QlNC10LnRgdGC0LLRg9C10YIg0L3QtSDQstC+INCy0YHQtdGFINC80LDQs9Cw0LfQuNC90LDRhS4gJyArICc8YSBocmVmPSInICsgd2J1ICsgJyI+0KHQvNC+0YLRgNC10YLRjCDQsNC00YDQtdGB0LA8L2E+PC9kaXY+JzsgfSBoICs9ICcgPGEgaHJlZj0iJyArIHRjLnAudXJsICsgJyIgY2xhc3M9ImltYWdlLWxpbmsiPic7IGggKz0gJyA8c3BhbiBjbGFzcz0ib3ZlciI+Jm5ic3A7PC9zcGFuPic7IGggKz0gJyA8aW1nIHNyYz0iJyArIHRjLnAuaW1hZ2UzMzYuc3JjICsgJyIgZGF0YS1mdz0iJyArIHRjLnAuaW1hZ2VmdWxsLncgKyAnIiBkYXRhLWZoPSInICsgdGMucC5pbWFnZWZ1bGwuaCArICciIGhlaWdodD0iJyArIHRjLnAuaW1hZ2UzMzYuaCArICciIHRpdGxlPSInICsgdGMucC5uYW1lICsgJyIgYWx0PSInICsgdGMucC5uYW1lICsgJyIgLz4nOyBoICs9ICcgPC9hPic7IGlmICh0Yy5wLm5hbWUyKSB7IGggKz0gJzxoMz4nICsgdGMucC5uYW1lMi5yZXBsYWNlKC9cbi9nLCAnPGJyLz4nKTsgaWYgKHRjLnAuYnJhbmRzICYmIHRjLnAuYnJhbmRzLmxlbmd0aCkgeyBoICs9ICcgJyArIHRjLmdldEJyYW5kc0hUTUwodGMucC5icmFuZHMpOyB9IGggKz0gJzwvaDM+JzsgfSBlbHNlIHsgaWYgKHRjLnAuYnJhbmRzICYmIHRjLnAuYnJhbmRzLmxlbmd0aCkgeyBoICs9ICc8aDM+JyArIHRjLmdldEJyYW5kc0hUTUwodGMucC5icmFuZHMpICsgJzwvaDM+JzsgfSB9IGlmICh0Yy5wLnByaWNlYmVmb3JlIHx8IHRjLnAucHJpY2VhZnRlciB8fCB0Yy5wLmRpc2NvdW50X3R5cGUgfHwgdGMucC5kaXNjb3VudCkgeyBoICs9ICcgPGRpdiBjbGFzcz0icHJvZHVjdC1wcmljZXMnICsgKCh0Yy5wLnByaWNlYWZ0ZXIpID8gJycgOiAnIG5vLXByaWNlcycpICsgJyI+JzsgaWYgKHRjLnAucHJpY2VhZnRlcikgeyBoICs9ICcgPHNwYW4gY2xhc3M9InByb2R1Y3QtcHJpY2VhZnRlciI+JyArIHRjLnAucHJpY2VhZnRlcjsgaCArPSAnICcgKyBkY29yZWNuZy5tb25leTsgaCArPSAnPC9zcGFuPic7IGlmIChkY29yZWNuZy5lbmFibGVQcm9kdWN0c1F1YW50aXR5KSB7IGlmICh0Yy5wLnF1YW50aXR5ICYmIHRjLnAucXVhbnRpdHlfdW5pdCkgeyBoICs9ICc8c3BhbiBjbGFzcz0icHJvZHVjdC1xdWFudGl0eS1wcmljZSI+JzsgaCArPSBNYXRoLnJvdW5kKCh0Yy5wLnByaWNlYWZ0ZXIgLyB0Yy5wLnF1YW50aXR5KSAqIDEwMCkgLyAxMDA7IGggKz0gJyAnICsgZGNvcmVjbmcubW9uZXk7IGggKz0gJyAnICsgdGMucC5xdWFudGl0eV91bml0OyBoICs9ICc8L3NwYW4+JzsgfSB9IH0gaWYgKHRjLnAucHJpY2ViZWZvcmUgfHwgdGMucC5kaXNjb3VudF90eXBlIHx8IHRjLnAuZGlzY291bnQpIHsgaCArPSAnIDxzcGFuIGNsYXNzPSJwcm9kdWN0LXByaWNlYmVmb3JlIj4nOyBpZiAodGMucC5wcmljZWJlZm9yZSkgeyBoICs9ICc8c3BhbiBjbGFzcz0icHJvZHVjdC1wcmljZWJlZm9yZS12YWwiPic7IGggKz0gdGMucC5wcmljZWJlZm9yZTsgaCArPSAnPC9zcGFuPic7IGggKz0gJyDRgNGD0LEuJzsgfSBpZiAodGMucC5kaXNjb3VudF90eXBlICE9PSAnJykgeyBoICs9ICcgPHNwYW4gY2xhc3M9InByb2R1Y3QtZGlzY291bnQiPicgKyB0Yy5wLmRpc2NvdW50X3R5cGUgKyAnPC9zcGFuPic7IH0gZWxzZSB7IGlmICh0Yy5wLmRpc2NvdW50KSB7IGggKz0gJyA8c3BhbiBjbGFzcz0icHJvZHVjdC1kaXNjb3VudCI+LScgKyB0Yy5wLmRpc2NvdW50ICsgJyU8L3NwYW4+JzsgfSB9IGggKz0gJzwvc3Bhbj4nOyB9IGlmICh0Yy5wLmRpc2NvdW50X3R5cGUgIT09ICcnKSB7IGggKz0gJyA8c3BhbiBjbGFzcz0icHJvZHVjdC1wcmljZWJlZm9yZSI+JzsgaWYgKHRjLnAuZGlzY291bnRfdHlwZSA9PSAnMSsxJykgeyBoICs9ICcgPHNwYW4gY2xhc3M9InByb2R1Y3QtcHJpY2VhZnRlci10ZXh0Ij4xINC60YPQv9C4ICsgMSDQsdC10YDQuCDQsiDQv9C+0LTQsNGA0L7Qujwvc3Bhbj4nOyB9IGVsc2UgaWYgKHRjLnAuZGlzY291bnRfdHlwZSA9PSAnMisxJykgeyBoICs9ICcgPHNwYW4gY2xhc3M9InByb2R1Y3QtcHJpY2VhZnRlci10ZXh0Ij4yINC60YPQv9C4ICsgMSDQsdC10YDQuCDQsiDQv9C+0LTQsNGA0L7Qujwvc3Bhbj4nOyB9IGggKz0gJzwvc3Bhbj4nOyB9IGggKz0gJyA8L2Rpdj4nOyB9IGlmICh0Yy5wLnBjYXRlZ29yaWVzLmxlbmd0aCkgeyB2YXIgY3VyckNhdHMgPSAkKCcuZGlzY291bnRzJykuYXR0cignZGF0YS1wY2F0ZWdvcmllc19pZHMnKTsgaWYgKGN1cnJDYXRzKSB7IGN1cnJDYXRzID0gY3VyckNhdHMuc3BsaXQoJywnKTsgfSB2YXIgY250U2hvd2VkQ2F0cyA9IDA7ICQodGMucC5wY2F0ZWdvcmllcykuZWFjaChmdW5jdGlvbihpLGVsKXsgaWYgKGVsLmNoaWxkcmVuID09IDAgJiYgY250U2hvd2VkQ2F0cyA8IDMpIHsgY250U2hvd2VkQ2F0cysrOyB2YXIgaXNBY3RpdmUgPSBjdXJyQ2F0cyAmJiBjdXJyQ2F0cy5pbmNsdWRlcyhlbC5pZCk7IHZhciBjYXRTbHVnID0gKGVsICYmIGVsLnNsdWcpID8gU3RyaW5nKGVsLnNsdWcpLnJlcGxhY2UoL1teYS16QS1aMC05Xy1dL2csICcnKSA6ICcnOyB2YXIgY2F0SHJlZiA9IGNhdFNsdWcgPyAoZGNvcmVjbmcuY2l0eXVybCArIGNhdFNsdWcpIDogZGNvcmVjbmcuY2l0eXVybDsgaCArPSAnPGRpdiBjbGFzcz0idGV4dC1sZWZ0IHBzLTEgcHQtMSBwZS0xIj4nOyBoICs9ICc8YSBjbGFzcz0iY2F0LWxpbmsnICsgKGlzQWN0aXZlID8gJyBhY3RpdmUnIDogJycpICsgJyIgaHJlZj0iJyArIGNhdEhyZWYgKyAnIiB0YXJnZXQ9Il9ibGFuayI+JzsgaCArPSAnIDxzcGFuIGNsYXNzPSJtZW51LXRleHQiPicgKyBlbC5uYW1lICsgJzwvc3Bhbj4nOyBoICs9ICcgPHNwYW4gY2xhc3M9Im1lbnUtaWNvbiI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTUiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE1Ij48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE5IDE5SDVWNWg3VjNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03eiIvPjwvc3ZnPjwvc3Bhbj4nOyBoICs9ICc8L2E+JzsgaCArPSAnPC9kaXY+JzsgfSB9KTsgfSBpZiAoc291cmNlICE9ICcnKSB7IGggKz0gJyA8ZGl2IGNsYXNzPSJwcm9kdWN0LXNvdXJjZSBjbGVhcmZpeCI+0JjRgdGC0L7Rh9C90LjQujogJyArIHNvdXJjZSArICc8L2Rpdj4nOyB9IGggKz0gJyA8ZGl2IGNsYXNzPSJwcm9kdWN0LWFjdGlvbnMgaGlkZGVuLXByaW50IGNsZWFyZml4Ij4nOyBpZiAodGMucC5leHRlcm5hbHVybCkgeyBoICs9ICc8YSAnICsgJyB0aXRsZT0i0JrRg9C\/0LjRgtGMIicgKyAncmVsPSJub2ZvbGxvdyIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9IicgKyB0Yy5wLmV4dGVybmFsdXJsICsgJyInICsgJyBvbmNsaWNrPSJpZih0eXBlb2YgdHJhY2tPdXRib3VuZExpbmsgIT09IFwndW5kZWZpbmVkXCcpIHsgdHJhY2tPdXRib3VuZExpbmsoXCcnICsgdGMucC5leHRlcm5hbHVybCArICdcJyk7cmV0dXJuIGZhbHNlOyB9IicgKyAnIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGJ0bi1hZGQtdG8tY2FydCBwdWxsLWxlZnQiPic7IGggKz0gJ9Ca0YPQv9C40YLRjCc7IGggKz0gJzwvYT4nOyB9IGVsc2UgeyAgaCArPSAnPGEgaHJlZj0iJyArIHdidSArICciIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGJ0bi13aGVyZS1idXkgcHVsbC1sZWZ0IiBkYXRhLXRvZ2dsZT0idG9vbHRpcCInOyBoICs9ICcgdGl0bGU9ItCQ0LTRgNC10YHQsCDQvNCw0LPQsNC30LjQvdC+0LIiPic7IGggKz0gJyA8c3BhbiBjbGFzcz0ibWF0ZXJpYWwtaWNvbnMiPnBsYWNlPC9zcGFuPic7IGggKz0gJzwvYT4nOyAgfSBoICs9ICcgPGRpdiBjbGFzcz0icHJvZHVjdC1saWtlJyArICgodGMucC5jb3VudFBsdXMgPiB0Yy5wLmNvdW50TWludXMpID8gJyBnb29kLXByb2R1Y3QnIDogJycpICsgKCh0Yy5wLmNvdW50UGx1cyA8IHRjLnAuY291bnRNaW51cykgPyAnIGJhZC1wcm9kdWN0JyA6ICcnKSArICciPic7IGggKz0gJyA8YSBjbGFzcz0icHVsbC1sZWZ0IG1pbnVzJyArICgodGMucC5saWtlZCA9PSAtMSkgPyAnIGFjdGl2ZScgOiAnJykgKyAnIGJ0bi1sb2dpbm5ld3dpbmRvdyIgZGF0YS10b2dnbGU9InRvb2x0aXAiIHRpdGxlPSLQndC1INC90YDQsNCy0LjRgtGB0Y8iPic7IGggKz0gJyA8c3BhbiBjbGFzcz0ibWF0ZXJpYWwtaWNvbnMiPnRodW1iX2Rvd248L3NwYW4+JzsgaCArPSAnIDxzcGFuIGNsYXNzPSJjb3VudC1saWtlcy1taW51cyI+JyArICgodGMucC5jb3VudE1pbnVzID4gMCkgPyAnLScgOiAnJykgKyB0Yy5wLmNvdW50TWludXMgKyAnPC9zcGFuPic7IGggKz0gJyA8L2E+JzsgaCArPSAnIDxhIGNsYXNzPSJwdWxsLXJpZ2h0IHBsdXMnICsgKCh0Yy5wLmxpa2VkID09IDEpID8gJyBhY3RpdmUnIDogJycpICsgJyBidG4tbG9naW5uZXd3aW5kb3ciIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0aXRsZT0i0J3RgNCw0LLQuNGC0YHRjyI+JzsgaCArPSAnIDxzcGFuIGNsYXNzPSJtYXRlcmlhbC1pY29ucyI+dGh1bWJfdXA8L3NwYW4+JzsgaCArPSAnIDxzcGFuIGNsYXNzPSJjb3VudC1saWtlcy1wbHVzIj4nICsgKCh0Yy5wLmNvdW50UGx1cyA+IDApID8gJysnIDogJycpICsgdGMucC5jb3VudFBsdXMgKyAnPC9zcGFuPic7IGggKz0gJyA8L2E+JzsgaCArPSAnIDwvZGl2Pic7IGggKz0gJyA8YSBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IGNvbW1lbnQtbGluayBoaWRkZW4tcHJpbnQiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBocmVmPSInICsgdGMucC51cmwgKyAnIiB0aXRsZT0i0J7RgtC30YvQstGLIj4nOyBoICs9ICcgPHNwYW4gY2xhc3M9Im1hdGVyaWFsLWljb25zIj5tb2RlX2NvbW1lbnQ8L3NwYW4+JzsgaCArPSAnIDxzcGFuIGNsYXNzPSJjb3VudC1jb21tZW50cyI+JyArIHRjLnAuY29tbWVudHMgKyAnPC9zcGFuPic7IGggKz0gJyA8L2E+JzsgaCArPSAnIDwvZGl2Pic7IGlmIChkY29yZWNuZy5zYyAmJiBkY29yZWNuZy5zYy5sZW5ndGgpIHsgaCArPSAnPGRpdiBjbGFzcz0idGV4dC1yaWdodCI+JzsgaCArPSAnIDxkaXYgY2xhc3M9InNoYXJlLWl0ZW0gaGlkZGVuLXByaW50IiBkYXRhLXNoYXJldXJsPSInICsgdGMucC51cmwgKyAnIiBkYXRhLXNoYXJlZGVzYz0iJyArIHRjLnAuZGVzYyArICciIGRhdGEtc2hhcmVpbWFnZT0iJyArIHRjLnAuaW1hZ2UzMzYuc3JjICsgJyI+JzsgT2JqZWN0LmtleXMoZGNvcmVjbmcuc2MpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyB2YXIgZWwgPSBkY29yZWNuZy5zY1trZXldOyBoICs9ICcgPGEgY2xhc3M9InNoYXJlLWxpbmsgaWNvbi0nICsga2V5ICsgJyIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iJyArIGVsLnVybCArICciIHRhcmdldD0iX2JsYW5rIiAnICsgJ3RpdGxlPSInICsgZWwudGl0bGUgKyAnIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCI+PC9hPic7IH0pOyBoICs9ICcgPC9kaXY+JzsgaCArPSAnPC9kaXY+JzsgfSB2YXIgY29sb3JDbGFzcyA9ICcnOyBzd2l0Y2ggKHRjLnAuY29sb3IpIHsgY2FzZSAwOiBjb2xvckNsYXNzID0gJ25vdC1zdGFydGVkJzsgYnJlYWs7IGNhc2UgMTogY29sb3JDbGFzcyA9ICdleHBpcmVkJzsgYnJlYWs7IH0gaCArPSAnIDxkaXYgY2xhc3M9ImRpc2NvdW50LWRheXMgaGlkZGVuLXByaW50JyArICgoY29sb3JDbGFzcyA9PSAnJykgPyAnJyA6ICcgJyArIGNvbG9yQ2xhc3MpICsgJyI+JyArIHRjLnAuZGF5c3RpdGxlICsgJzwvZGl2Pic7IGggKz0gJzwvZGl2Pic7IHJldHVybiBoOyB9OyB0Yy5nZXRCcmFuZHNIVE1MID0gZnVuY3Rpb24gKGJyYW5kcykgeyB2YXIgaCA9ICcnOyBoICs9ICc8c3BhbiBjbGFzcz0iYnJhbmRzIj4nOyBmb3IgKHZhciBuID0gMDsgbiA8IGJyYW5kcy5sZW5ndGg7IG4rKykgeyBoICs9IChuID4gMCkgPyAnLCAnIDogJyc7IGggKz0gJzxhIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0i0JLRgdC1INGC0L7QstCw0YDRiyDQsdGA0LXQvdC00LAgJyArIGJyYW5kc1tuXS5uYW1lX29yaWcucmVwbGFjZSgnIicsICInIikgKyAnICjQsiDQvdC+0LLQvtC8INC+0LrQvdC1KSIgJyArICdocmVmPSInICsgYnJhbmRzW25dLnVybCArICciPic7IGlmIChicmFuZHNbbl0uaW1hZ2UpIHsgaCArPSAnPGltZyB3aWR0aD0iNTAiIHNyYz0iJyArIGJyYW5kc1tuXS5pbWFnZSArICciIGFsdD0iJyArIGJyYW5kc1tuXS5uYW1lX29yaWcucmVwbGFjZSgnIicsICInIikgKyAnIiAvPic7IH0gZWxzZSB7IGggKz0gYnJhbmRzW25dLm5hbWVfb3JpZyArICcgJyArICcmdHJhZGU7JzsgfSBoICs9ICc8L2E+JzsgfSBoICs9ICc8L3NwYW4+JzsgcmV0dXJuIGg7IH07IHRjLmlzUHJvZHVjdEluTXlub3RlcyA9IGZ1bmN0aW9uIChwcm9kdWN0SWQpIHsgaWYgKCEkLmNvb2tpZShkY29yZWNuZy5ub3Rlc0Nvb2tpZU5hbWUpKSB7IHJldHVybiBmYWxzZTsgfSB2YXIgY3VycmVudFByb2R1Y3RzSWRzID0gJC5jb29raWUoZGNvcmVjbmcubm90ZXNDb29raWVOYW1lKTsgdmFyIGN1cnJlbnRQcm9kdWN0c0lkc0FycmF5ID0gY3VycmVudFByb2R1Y3RzSWRzLnNwbGl0KCcsJyk7IHJldHVybiAoJC5pbkFycmF5KHByb2R1Y3RJZCwgY3VycmVudFByb2R1Y3RzSWRzQXJyYXkpICE9IC0xKTsgfTsgfTsg");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("IFByb2R1Y3RzTG9hZGVyID0gZnVuY3Rpb24ocCkgeyB2YXIgdGMgPSB0aGlzOyB0Yy5jID0gcC5jOyB0Yy51ID0gcC51OyB0Yy54aHIgPSBmYWxzZTsgdGMueGhySW50ID0gZmFsc2U7IHRjLmxvYWRlZCA9IDA7IHRjLnNjcm9sbFRvVG9wID0gKHR5cGVvZiBwLnNjcm9sbFRvVG9wID09ICd1bmRlZmluZWQnKSA\/IGZhbHNlIDogcC5zY3JvbGxUb1RvcDsgdGMuYWxsTG9hZGVkID0gZmFsc2U7IHRjLm1heEN1cnJQYWdlID0gdGMuYy5hdHRyKCdkYXRhLWN1cnJtYXhwYWdlJyk7IHRjLm1heFBlclBhZ2UgPSB0Yy5jLmF0dHIoJ2RhdGEtbWF4cGVycGFnZScpOyB0Yy5sYyA9ICdsb2FkZXItYm90dG9tJzsgdGMubEhUTUwgPSAnPGRpdiBjbGFzcz0iJyArIHRjLmxjICsgJyIgc3R5bGU9ImRpc3BsYXk6YmxvY2siPjxkaXYgY2xhc3M9ImxvYWRlci1pY29uIj48L2Rpdj48L2Rpdj4nOyB0Yy5scyA9ICcuJyArIHRjLmxjOyB0Yy5kaXNhYmxlQWRzID0gKHRjLmMuYXR0cignZGF0YS1kaXNhYmxlYScpICYmIHRjLmMuYXR0cignZGF0YS1kaXNhYmxlYScpID09ICcxJyk7IGlmICghdGMuZGlzYWJsZUFkcykgeyAgdmFyIGFkID0gIjxkaXYgc3R5bGU9XCJtYXJnaW46YXV0bzttaW4taGVpZ2h0OjQwMHB4O292ZXJmbG93OmhpZGRlbjtcIj48c2NyaXB0PnZhciBhZGZveEJpZGRlcnNNYXA9e1wibXlUYXJnZXRcIjpcIjE5ODkyMDBcIixcImFkcml2ZXJcIjpcIjIyMjgzMjJcIixcInNhcGVcIjpcIjIzODExMzNcIixcImNsaWNrc2Nsb3VkXCI6XCIyNzYxNDU0XCIsXCJidXp6b29sYVwiOlwiMjgwNTEwMlwifTt2YXIgYWRVbml0cz1be1wiY29kZVwiOlwiW0lEXVwiLFwic2l6ZXNcIjpbWzMwMCwyNTBdXSxcImJpZHNcIjpbe1wiYmlkZGVyXCI6XCJteVRhcmdldFwiLFwicGFyYW1zXCI6e1wicGxhY2VtZW50SWRcIjpcIjE0NzkxMzNcIn19LHtcImJpZGRlclwiOlwiYWRyaXZlclwiLFwicGFyYW1zXCI6e1wicGxhY2VtZW50SWRcIjpcIjc5OnNraWRrYW9ubGluZV8zMDB4MjUwXzNcIixcImFkZGl0aW9uYWxcIjp7XCJleHRcIjp7XCJxdWVyeVwiOlwiY3VzdG9tPTEwPTc5JmNpZD1cIitsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYWRyY2lkJyl9fX19LHtcImJpZGRlclwiOlwic2FwZVwiLFwicGFyYW1zXCI6e1wicGxhY2VtZW50SWRcIjpcIjg3Njg2MVwifX0se1wiYmlkZGVyXCI6XCJjbGlja3NjbG91ZFwiLFwicGFyYW1zXCI6e1wicGxhY2VtZW50SWRcIjpcIjI2OTVcIn19LHtcImJpZGRlclwiOlwiYnV6em9vbGFcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCIxMjU5NTQ3XCJ9fV19XTt2YXIgdXNlclRpbWVvdXQ9MTUwMDt2YXIgc3luY1BpeGVscz1be2JpZGRlcjonc2FwZScscGl4ZWxzOlsnaHR0cHM6Ly9zc3AtcnRiLnNhcGUucnUvcm1hdGNoLzEnLCdodHRwczovL3NzcC1ydGIuc2FwZS5ydS9ybWF0Y2gvMiddfV07d2luZG93LllhSGVhZGVyQmlkZGluZ1NldHRpbmdzPXtiaWRkZXJzTWFwOmFkZm94QmlkZGVyc01hcCxhZFVuaXRzOmFkVW5pdHMsdGltZW91dDp1c2VyVGltZW91dCxzeW5jUGl4ZWxzOnN5bmNQaXhlbHN9OzwvIiArICJzY3JpcHQ+PGRpdiBpZD1cIltJRF1cIj48L2Rpdj48c2NyaXB0PndpbmRvdy55YUNvbnRleHRDYi5wdXNoKCgpPT57WWEuYWRmb3hDb2RlLmNyZWF0ZSh7b3duZXJJZDo2OTU5ODIsY29udGFpbmVySWQ6J1tJRF0nLHBhcmFtczp7cDE6J2RhcW9yJyxwMjonaXRzcyd9fSl9KTwvIiArICJzY3JpcHQ+PC9kaXY+IjsgdGMuYWRzMSA9ICc8ZGl2IGNsYXNzPSJpdGVtIGFkcy1pdGVtIGFkcy1pdGVtLTEgaGlkZGVuLXByaW50Ij4nICsgYWQgKyAnPC9kaXY+JzsgICB2YXIgYWQgPSAiPGRpdiBzdHlsZT1cIm1hcmdpbjphdXRvO21pbi1oZWlnaHQ6NDAwcHg7b3ZlcmZsb3c6aGlkZGVuO1wiPjxzY3JpcHQ+dmFyIGFkZm94QmlkZGVyc01hcD17XCJteVRhcmdldFwiOlwiMTk4OTIwMFwiLFwiYWRyaXZlclwiOlwiMjIyODMyMlwiLFwic2FwZVwiOlwiMjM4MTEzM1wiLFwiY2xpY2tzY2xvdWRcIjpcIjI3NjE0NTRcIixcImJ1enpvb2xhXCI6XCIyODA1MTAyXCJ9O3ZhciBhZFVuaXRzPVt7XCJjb2RlXCI6XCJbSURdXCIsXCJzaXplc1wiOltbMzAwLDI1MF1dLFwiYmlkc1wiOlt7XCJiaWRkZXJcIjpcIm15VGFyZ2V0XCIsXCJwYXJhbXNcIjp7XCJwbGFjZW1lbnRJZFwiOlwiMTQ3OTEzMVwifX0se1wiYmlkZGVyXCI6XCJhZHJpdmVyXCIsXCJwYXJhbXNcIjp7XCJwbGFjZW1lbnRJZFwiOlwiNzk6c2tpZGthb25saW5lXzMwMHgyNTBfNVwiLFwiYWRkaXRpb25hbFwiOntcImV4dFwiOntcInF1ZXJ5XCI6XCJjdXN0b209MTA9NzkmY2lkPVwiK2xvY2FsU3RvcmFnZS5nZXRJdGVtKCdhZHJjaWQnKX19fX0se1wiYmlkZGVyXCI6XCJzYXBlXCIsXCJwYXJhbXNcIjp7XCJwbGFjZW1lbnRJZFwiOlwiODc2ODYwXCJ9fSx7XCJiaWRkZXJcIjpcImNsaWNrc2Nsb3VkXCIsXCJwYXJhbXNcIjp7XCJwbGFjZW1lbnRJZFwiOlwiMjY5N1wifX0se1wiYmlkZGVyXCI6XCJidXp6b29sYVwiLFwicGFyYW1zXCI6e1wicGxhY2VtZW50SWRcIjpcIjEyNTk1NDZcIn19XX1dO3ZhciB1c2VyVGltZW91dD0xNTAwO3ZhciBzeW5jUGl4ZWxzPVt7YmlkZGVyOidzYXBlJyxwaXhlbHM6WydodHRwczovL3NzcC1ydGIuc2FwZS5ydS9ybWF0Y2gvMScsJ2h0dHBzOi8vc3NwLXJ0Yi5zYXBlLnJ1L3JtYXRjaC8yJ119XTt3aW5kb3cuWWFIZWFkZXJCaWRkaW5nU2V0dGluZ3M9e2JpZGRlcnNNYXA6YWRmb3hCaWRkZXJzTWFwLGFkVW5pdHM6YWRVbml0cyx0aW1lb3V0OnVzZXJUaW1lb3V0LHN5bmNQaXhlbHM6c3luY1BpeGVsc307PC8iICsgInNjcmlwdD48ZGl2IGlkPVwiW0lEXVwiPjwvZGl2PjxzY3JpcHQ+d2luZG93LnlhQ29udGV4dENiLnB1c2goKCk9PntZYS5hZGZveENvZGUuY3JlYXRlKHtvd25lcklkOjY5NTk4Mixjb250YWluZXJJZDonW0lEXScscGFyYW1zOntwMTonZGFxb3EnLHAyOidpdHNyJ319KX0pPC8iICsgInNjcmlwdD48L2Rpdj4iOyB0Yy5hZHMyID0gJzxkaXYgY2xhc3M9Iml0ZW0gYWRzLWl0ZW0gYWRzLWl0ZW0tMiBoaWRkZW4tcHJpbnQiPicgKyBhZCArICc8L2Rpdj4nOyAgIHZhciBhZCA9ICI8ZGl2IHN0eWxlPVwibWFyZ2luOmF1dG87bWluLWhlaWdodDo0MDBweDtvdmVyZmxvdzpoaWRkZW47XCI+PHNjcmlwdD52YXIgYWRmb3hCaWRkZXJzTWFwPXtcIm15VGFyZ2V0XCI6XCIxOTg5MjAwXCIsXCJhZHJpdmVyXCI6XCIyMjI4MzIyXCIsXCJzYXBlXCI6XCIyMzgxMTMzXCIsXCJjbGlja3NjbG91ZFwiOlwiMjc2MTQ1NFwiLFwiYnV6em9vbGFcIjpcIjI4MDUxMDJcIn07dmFyIGFkVW5pdHM9W3tcImNvZGVcIjpcIltJRF1cIixcInNpemVzXCI6W1szMDAsMjUwXV0sXCJiaWRzXCI6W3tcImJpZGRlclwiOlwibXlUYXJnZXRcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCIxNDc5MTI5XCJ9fSx7XCJiaWRkZXJcIjpcImFkcml2ZXJcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCI3OTpza2lka2FvbmxpbmVfMzAweDI1MF82XCIsXCJhZGRpdGlvbmFsXCI6e1wiZXh0XCI6e1wicXVlcnlcIjpcImN1c3RvbT0xMD03OSZjaWQ9XCIrbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FkcmNpZCcpfX19fSx7XCJiaWRkZXJcIjpcInNhcGVcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCI4NzY4NTlcIn19LHtcImJpZGRlclwiOlwiY2xpY2tzY2xvdWRcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCIyNjk4XCJ9fSx7XCJiaWRkZXJcIjpcImJ1enpvb2xhXCIsXCJwYXJhbXNcIjp7XCJwbGFjZW1lbnRJZFwiOlwiMTI1OTU0NVwifX1dfV07dmFyIHVzZXJUaW1lb3V0PTE1MDA7dmFyIHN5bmNQaXhlbHM9W3tiaWRkZXI6J3NhcGUnLHBpeGVsczpbJ2h0dHBzOi8vc3NwLXJ0Yi5zYXBlLnJ1L3JtYXRjaC8xJywnaHR0cHM6Ly9zc3AtcnRiLnNhcGUucnUvcm1hdGNoLzInXX1dO3dpbmRvdy5ZYUhlYWRlckJpZGRpbmdTZXR0aW5ncz17YmlkZGVyc01hcDphZGZveEJpZGRlcnNNYXAsYWRVbml0czphZFVuaXRzLHRpbWVvdXQ6dXNlclRpbWVvdXQsc3luY1BpeGVsczpzeW5jUGl4ZWxzfTs8LyIgKyAic2NyaXB0PjxkaXYgaWQ9XCJbSURdXCI+PC9kaXY+PHNjcmlwdD53aW5kb3cueWFDb250ZXh0Q2IucHVzaCgoKT0+e1lhLmFkZm94Q29kZS5jcmVhdGUoe293bmVySWQ6Njk1OTgyLGNvbnRhaW5lcklkOidbSURdJyxwYXJhbXM6e3AxOidkYXFvcCcscDI6J2l0c3EnfX0pfSk8LyIgKyAic2NyaXB0PjwvZGl2PiI7IHRjLmFkczMgPSAnPGRpdiBjbGFzcz0iaXRlbSBhZHMtaXRlbSBhZHMtaXRlbS0zIGhpZGRlbi1wcmludCI+JyArIGFkICsgJzwvZGl2Pic7ICAgdmFyIGFkID0gIjxkaXYgc3R5bGU9XCJtYXJnaW46YXV0bzttaW4taGVpZ2h0OjQwMHB4O292ZXJmbG93OmhpZGRlbjtcIj48ZGl2IGlkPVwiW0lEXVwiPjwvZGl2PjxzY3JpcHQ+dmFyIGFkZm94QmlkZGVyc01hcCA9IHtcIm15VGFyZ2V0XCI6IFwiMTk4OTIwMFwiLFwiYWRyaXZlclwiOiBcIjIyMjgzMjJcIixcInNhcGVcIjogXCIyMzgxMTMzXCIsXCJjbGlja3NjbG91ZFwiOiBcIjI3NjE0NTRcIn07dmFyIGFkVW5pdHMgPSBbe1wiY29kZVwiOiBcIltJRF1cIixcInNpemVzXCI6IFtbMzAwLDI1MF1dLFwiYmlkc1wiOiBbe1wiYmlkZGVyXCI6IFwibXlUYXJnZXRcIixcInBhcmFtc1wiOiB7XCJwbGFjZW1lbnRJZFwiOiBcIjE0NzYwMjFcIn19LHtcImJpZGRlclwiOiBcImFkcml2ZXJcIixcInBhcmFtc1wiOiB7XCJwbGFjZW1lbnRJZFwiOiBcIjc5OnNraWRrYW9ubGluZV8zMDB4MjUwXCIsXCJhZGRpdGlvbmFsXCI6IHtcImV4dFwiOiB7XCJxdWVyeVwiIDogXCJjdXN0b209MTA9NzkmY2lkPVwiK2xvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYWRyY2lkXCIpfX19fSx7XCJiaWRkZXJcIjogXCJzYXBlXCIsXCJwYXJhbXNcIjoge1wicGxhY2VtZW50SWRcIjogXCI3NjI2MFwifX0se1wiYmlkZGVyXCI6IFwiY2xpY2tzY2xvdWRcIixcInBhcmFtc1wiOiB7XCJwbGFjZW1lbnRJZFwiOiBcIjI1ODJcIn19XX1dO3ZhciB1c2VyVGltZW91dCA9IDE1MDA7d2luZG93LllhSGVhZGVyQmlkZGluZ1NldHRpbmdzID0ge2JpZGRlcnNNYXA6IGFkZm94QmlkZGVyc01hcCxhZFVuaXRzOiBhZFVuaXRzLHRpbWVvdXQ6IHVzZXJUaW1lb3V0LH07d2luZG93LnlhQ29udGV4dENiLnB1c2goKCk9PntZYS5hZGZveENvZGUuY3JlYXRlKHtvd25lcklkOiA2OTU5ODIsY29udGFpbmVySWQ6IFwiW0lEXVwiLHBhcmFtczoge3AxOiBcImRhcGVvXCIscDI6IFwiaXRta1wifX0pfSk8LyIgKyAic2NyaXB0Pgk8L2Rpdj4iOyB0Yy5hZHM0ID0gJzxkaXYgY2xhc3M9Iml0ZW0gYWRzLWl0ZW0gYWRzLWl0ZW0tNCBoaWRkZW4tcHJpbnQiPicgKyBhZCArICc8L2Rpdj4nOyAgIHZhciBhZCA9ICI8ZGl2IHN0eWxlPVwibWFyZ2luOmF1dG87bWluLWhlaWdodDo0MDBweDtvdmVyZmxvdzpoaWRkZW47XCI+PCEtLSBZYW5kZXguUlRCIFItQS0yMTc0MTY3LTE1IC0tPjxkaXYgaWQ9XCJbSURdXCI+PC9kaXY+PHNjcmlwdD53aW5kb3cueWFDb250ZXh0Q2IucHVzaCgoKT0+e1lhLkNvbnRleHQuQWR2TWFuYWdlci5yZW5kZXIoe3JlbmRlclRvOiAnW0lEXScsYmxvY2tJZDogJ1ItQS0yMTc0MTY3LTE1JyxzdGF0SWQ6ICczODInfSl9KTwvIiArICJzY3JpcHQ+PC9kaXY+IjsgdGMuYWRzNSA9ICc8ZGl2IGNsYXNzPSJpdGVtIGFkcy1pdGVtIGFkcy1pdGVtLTUgaGlkZGVuLXByaW50Ij4nICsgYWQgKyAnPC9kaXY+JzsgICB2YXIgYWQgPSAiPGRpdiBzdHlsZT1cIm1hcmdpbjphdXRvO21pbi1oZWlnaHQ6NDAwcHg7b3ZlcmZsb3c6aGlkZGVuO1wiPjwhLS0gWWFuZGV4LlJUQiBSLUEtMjE3NDE2Ny0xNiAtLT48ZGl2IGlkPVwiW0lEXVwiPjwvZGl2PjxzY3JpcHQ+d2luZG93LnlhQ29udGV4dENiLnB1c2goKCk9PntZYS5Db250ZXh0LkFkdk1hbmFnZXIucmVuZGVyKHtyZW5kZXJUbzogJ1tJRF0nLGJsb2NrSWQ6ICdSLUEtMjE3NDE2Ny0xNicsc3RhdElkOiAnMzgyJ30pfSk8LyIgKyAic2NyaXB0PjwvZGl2PiI7IHRjLmFkczYgPSAnPGRpdiBjbGFzcz0iaXRlbSBhZHMtaXRlbSBhZHMtaXRlbS02IGhpZGRlbi1wcmludCI+JyArIGFkICsgJzwvZGl2Pic7ICAgdmFyIGFkID0gIjxkaXYgc3R5bGU9XCJtYXJnaW46YXV0bzttaW4taGVpZ2h0OjE5NjBweDtvdmVyZmxvdzpoaWRkZW47XCI+PGRpdiBjbGFzcz1cImFkcy1pdGVtLXRlc3RcIj48c2NyaXB0PnZhciBhZGZveEJpZGRlcnNNYXA9e1wibXlUYXJnZXRcIjpcIjE5ODkyMDBcIixcImFkcml2ZXJcIjpcIjIyMjgzMjJcIixcInNhcGVcIjpcIjIzODExMzNcIixcImNsaWNrc2Nsb3VkXCI6XCIyNzYxNDU0XCIsXCJidXp6b29sYVwiOlwiMjgwNTEwMlwifTt2YXIgYWRVbml0cz1be1wiY29kZVwiOlwiW0lEMV1cIixcInNpemVzXCI6W1szMDAsMjUwXV0sXCJiaWRzXCI6W3tcImJpZGRlclwiOlwibXlUYXJnZXRcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCIxNDc5MTI3XCJ9fSx7XCJiaWRkZXJcIjpcImFkcml2ZXJcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCI3OTpza2lka2FvbmxpbmVfMzAweDI1MF83XCIsXCJhZGRpdGlvbmFsXCI6e1wiZXh0XCI6e1wicXVlcnlcIjpcImN1c3RvbT0xMD03OSZjaWQ9XCIrbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FkcmNpZCcpfX19fSx7XCJiaWRkZXJcIjpcInNhcGVcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCI4NzY4NThcIn19LHtcImJpZGRlclwiOlwiY2xpY2tzY2xvdWRcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCIyNjk5XCJ9fSx7XCJiaWRkZXJcIjpcImJ1enpvb2xhXCIsXCJwYXJhbXNcIjp7XCJwbGFjZW1lbnRJZFwiOlwiMTI1OTU0NFwifX1dfV07dmFyIHVzZXJUaW1lb3V0PTE1MDA7dmFyIHN5bmNQaXhlbHM9W3tiaWRkZXI6J3NhcGUnLHBpeGVsczpbJ2h0dHBzOi8vc3NwLXJ0Yi5zYXBlLnJ1L3JtYXRjaC8xJywnaHR0cHM6Ly9zc3AtcnRiLnNhcGUucnUvcm1hdGNoLzInXX1dO3dpbmRvdy5ZYUhlYWRlckJpZGRpbmdTZXR0aW5ncz17YmlkZGVyc01hcDphZGZveEJpZGRlcnNNYXAsYWRVbml0czphZFVuaXRzLHRpbWVvdXQ6dXNlclRpbWVvdXQsc3luY1BpeGVsczpzeW5jUGl4ZWxzfTs8LyIgKyAic2NyaXB0PjxkaXYgaWQ9XCJbSUQxXVwiPjwvZGl2PjxzY3JpcHQ+d2luZG93LnlhQ29udGV4dENiLnB1c2goKCk9PntZYS5hZGZveENvZGUuY3JlYXRlKHtvd25lcklkOjY5NTk4Mixjb250YWluZXJJZDonW0lEMV0nLHBhcmFtczp7cDE6J2RhcW9vJyxwMjonaXRybid9fSl9KTwvIiArICJzY3JpcHQ+PC9kaXY+PGRpdiBjbGFzcz1cImFkcy1pdGVtLXRlc3RcIj48c2NyaXB0PnZhciBhZGZveEJpZGRlcnNNYXA9e1wibXlUYXJnZXRcIjpcIjE5ODkyMDBcIixcImFkcml2ZXJcIjpcIjIyMjgzMjJcIixcInNhcGVcIjpcIjIzODExMzNcIixcImNsaWNrc2Nsb3VkXCI6XCIyNzYxNDU0XCIsXCJidXp6b29sYVwiOlwiMjgwNTEwMlwifTt2YXIgYWRVbml0cz1be1wiY29kZVwiOlwiW0lEMl1cIixcInNpemVzXCI6W1szMDAsMjUwXV0sXCJiaWRzXCI6W3tcImJpZGRlclwiOlwibXlUYXJnZXRcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCIxNDc5MTI1XCJ9fSx7XCJiaWRkZXJcIjpcImFkcml2ZXJcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCI3OTpza2lka2FvbmxpbmVfMzAweDI1MF84XCIsXCJhZGRpdGlvbmFsXCI6e1wiZXh0XCI6e1wicXVlcnlcIjpcImN1c3RvbT0xMD03OSZjaWQ9XCIrbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FkcmNpZCcpfX19fSx7XCJiaWRkZXJcIjpcInNhcGVcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCI4NzY4NTdcIn19LHtcImJpZGRlclwiOlwiY2xpY2tzY2xvdWRcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCIyNzAwXCJ9fSx7XCJiaWRkZXJcIjpcImJ1enpvb2xhXCIsXCJwYXJhbXNcIjp7XCJwbGFjZW1lbnRJZFwiOlwiMTI1OTU0M1wifX1dfV07dmFyIHVzZXJUaW1lb3V0PTE1MDA7dmFyIHN5bmNQaXhlbHM9W3tiaWRkZXI6J3NhcGUnLHBpeGVsczpbJ2h0dHBzOi8vc3NwLXJ0Yi5zYXBlLnJ1L3JtYXRjaC8xJywnaHR0cHM6Ly9zc3AtcnRiLnNhcGUucnUvcm1hdGNoLzInXX1dO3dpbmRvdy5ZYUhlYWRlckJpZGRpbmdTZXR0aW5ncz17YmlkZGVyc01hcDphZGZveEJpZGRlcnNNYXAsYWRVbml0czphZFVuaXRzLHRpbWVvdXQ6dXNlclRpbWVvdXQsc3luY1BpeGVsczpzeW5jUGl4ZWxzfTs8LyIgKyAic2NyaXB0PjxkaXYgaWQ9XCJbSUQyXVwiPjwvZGl2PjxzY3JpcHQ+d2luZG93LnlhQ29udGV4dENiLnB1c2goKCk9PntZYS5hZGZveENvZGUuY3JlYXRlKHtvd25lcklkOjY5NTk4Mixjb250YWluZXJJZDonW0lEMl0nLHBhcmFtczp7cDE6J2RhcW9uJyxwMjonaXRybSd9fSl9KTwvIiArICJzY3JpcHQ+PC9kaXY+PGRpdiBjbGFzcz1cImFkcy1pdGVtLXRlc3RcIj48c2NyaXB0PnZhciBhZGZveEJpZGRlcnNNYXA9e1wibXlUYXJnZXRcIjpcIjE5ODkyMDBcIixcImFkcml2ZXJcIjpcIjIyMjgzMjJcIixcInNhcGVcIjpcIjIzODExMzNcIixcImNsaWNrc2Nsb3VkXCI6XCIyNzYxNDU0XCIsXCJidXp6b29sYVwiOlwiMjgwNTEwMlwifTt2YXIgYWRVbml0cz1be1wiY29kZVwiOlwiW0lEM11cIixcInNpemVzXCI6W1szMDAsMjUwXV0sXCJiaWRzXCI6W3tcImJpZGRlclwiOlwibXlUYXJnZXRcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCIxNDc5MTIzXCJ9fSx7XCJiaWRkZXJcIjpcImFkcml2ZXJcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCI3OTpza2lka2FvbmxpbmVfMzAweDI1MF85XCIsXCJhZGRpdGlvbmFsXCI6e1wiZXh0XCI6e1wicXVlcnlcIjpcImN1c3RvbT0xMD03OSZjaWQ9XCIrbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FkcmNpZCcpfX19fSx7XCJiaWRkZXJcIjpcInNhcGVcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCI4NzY4NTZcIn19LHtcImJpZGRlclwiOlwiY2xpY2tzY2xvdWRcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCIyNzAxXCJ9fSx7XCJiaWRkZXJcIjpcImJ1enpvb2xhXCIsXCJwYXJhbXNcIjp7XCJwbGFjZW1lbnRJZFwiOlwiMTI1OTU0MlwifX1dfV07dmFyIHVzZXJUaW1lb3V0PTE1MDA7dmFyIHN5bmNQaXhlbHM9W3tiaWRkZXI6J3NhcGUnLHBpeGVsczpbJ2h0dHBzOi8vc3NwLXJ0Yi5zYXBlLnJ1L3JtYXRjaC8xJywnaHR0cHM6Ly9zc3AtcnRiLnNhcGUucnUvcm1hdGNoLzInXX1dO3dpbmRvdy5ZYUhlYWRlckJpZGRpbmdTZXR0aW5ncz17YmlkZGVyc01hcDphZGZveEJpZGRlcnNNYXAsYWRVbml0czphZFVuaXRzLHRpbWVvdXQ6dXNlclRpbWVvdXQsc3luY1BpeGVsczpzeW5jUGl4ZWxzfTs8LyIgKyAic2NyaXB0PjxkaXYgaWQ9XCJbSUQzXVwiPjwvZGl2PjxzY3JpcHQ+d2luZG93LnlhQ29udGV4dENiLnB1c2goKCk9PntZYS5hZGZveENvZGUuY3JlYXRlKHtvd25lcklkOjY5NTk4Mixjb250YWluZXJJZDonW0lEM10nLHBhcmFtczp7cDE6J2RhcW9tJyxwMjonaXRyayd9fSl9KTwvIiArICJzY3JpcHQ+PC9kaXY+PGRpdiBjbGFzcz1cImFkcy1pdGVtLXRlc3RcIj48c2NyaXB0PnZhciBhZGZveEJpZGRlcnNNYXA9e1wibXlUYXJnZXRcIjpcIjE5ODkyMDBcIixcImFkcml2ZXJcIjpcIjIyMjgzMjJcIixcInNhcGVcIjpcIjIzODExMzNcIixcImNsaWNrc2Nsb3VkXCI6XCIyNzYxNDU0XCIsXCJidXp6b29sYVwiOlwiMjgwNTEwMlwifTt2YXIgYWRVbml0cz1be1wiY29kZVwiOlwiW0lENF1cIixcInNpemVzXCI6W1szMDAsMjUwXV0sXCJiaWRzXCI6W3tcImJpZGRlclwiOlwibXlUYXJnZXRcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCIxNDc5MTIxXCJ9fSx7XCJiaWRkZXJcIjpcImFkcml2ZXJcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCI3OTpza2lka2FvbmxpbmVfMzAweDI1MF8xMFwiLFwiYWRkaXRpb25hbFwiOntcImV4dFwiOntcInF1ZXJ5XCI6XCJjdXN0b209MTA9NzkmY2lkPVwiK2xvY2FsU3RvcmFnZS5nZXRJdGVtKCdhZHJjaWQnKX19fX0se1wiYmlkZGVyXCI6XCJzYXBlXCIsXCJwYXJhbXNcIjp7XCJwbGFjZW1lbnRJZFwiOlwiODc2ODU1XCJ9fSx7XCJiaWRkZXJcIjpcImNsaWNrc2Nsb3VkXCIsXCJwYXJhbXNcIjp7XCJwbGFjZW1lbnRJZFwiOlwiMjcwMlwifX0se1wiYmlkZGVyXCI6XCJidXp6b29sYVwiLFwicGFyYW1zXCI6e1wicGxhY2VtZW50SWRcIjpcIjEyNTk1NDFcIn19XX1dO3ZhciB1c2VyVGltZW91dD0xNTAwO3ZhciBzeW5jUGl4ZWxzPVt7YmlkZGVyOidzYXBlJyxwaXhlbHM6WydodHRwczovL3NzcC1ydGIuc2FwZS5ydS9ybWF0Y2gvMScsJ2h0dHBzOi8vc3NwLXJ0Yi5zYXBlLnJ1L3JtYXRjaC8yJ119XTt3aW5kb3cuWWFIZWFkZXJCaWRkaW5nU2V0dGluZ3M9e2JpZGRlcnNNYXA6YWRmb3hCaWRkZXJzTWFwLGFkVW5pdHM6YWRVbml0cyx0aW1lb3V0OnVzZXJUaW1lb3V0LHN5bmNQaXhlbHM6c3luY1BpeGVsc307PC8iICsgInNjcmlwdD48ZGl2IGlkPVwiW0lENF1cIj48L2Rpdj48c2NyaXB0PndpbmRvdy55YUNvbnRleHRDYi5wdXNoKCgpPT57WWEuYWRmb3hDb2RlLmNyZWF0ZSh7b3duZXJJZDo2OTU5ODIsY29udGFpbmVySWQ6J1tJRDRdJyxwYXJhbXM6e3AxOidkYXBlbycscDI6J2l0bWsnfX0pfSk8LyIgKyAic2NyaXB0PjwvZGl2PjxkaXYgY2xhc3M9XCJhZHMtaXRlbS10ZXN0XCI+PHNjcmlwdD52YXIgYWRmb3hCaWRkZXJzTWFwPXtcIm15VGFyZ2V0XCI6XCIxOTg5MjAwXCIsXCJhZHJpdmVyXCI6XCIyMjI4MzIyXCIsXCJzYXBlXCI6XCIyMzgxMTMzXCIsXCJjbGlja3NjbG91ZFwiOlwiMjc2MTQ1NFwiLFwiYnV6em9vbGFcIjpcIjI4MDUxMDJcIn07dmFyIGFkVW5pdHM9W3tcImNvZGVcIjpcIltJRDVdXCIsXCJzaXplc1wiOltbMzAwLDI1MF1dLFwiYmlkc1wiOlt7XCJiaWRkZXJcIjpcIm15VGFyZ2V0XCIsXCJwYXJhbXNcIjp7XCJwbGFjZW1lbnRJZFwiOlwiMTQ3OTExOVwifX0se1wiYmlkZGVyXCI6XCJhZHJpdmVyXCIsXCJwYXJhbXNcIjp7XCJwbGFjZW1lbnRJZFwiOlwiNzk6c2tpZGthb25saW5lXzMwMHgyNTBfMTFcIixcImFkZGl0aW9uYWxcIjp7XCJleHRcIjp7XCJxdWVyeVwiOlwiY3VzdG9tPTEwPTc5JmNpZD1cIitsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYWRyY2lkJyl9fX19LHtcImJpZGRlclwiOlwic2FwZVwiLFwicGFyYW1zXCI6e1wicGxhY2VtZW50SWRcIjpcIjg3Njg1NFwifX0se1wiYmlkZGVyXCI6XCJjbGlja3NjbG91ZFwiLFwicGFyYW1zXCI6e1wicGxhY2VtZW50SWRcIjpcIjI3MDNcIn19LHtcImJpZGRlclwiOlwiYnV6em9vbGFcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCIxMjU5NTQwXCJ9fV19XTt2YXIgdXNlclRpbWVvdXQ9MTUwMDt2YXIgc3luY1BpeGVscz1be2JpZGRlcjonc2FwZScscGl4ZWxzOlsnaHR0cHM6Ly9zc3AtcnRiLnNhcGUucnUvcm1hdGNoLzEnLCdodHRwczovL3NzcC1ydGIuc2FwZS5ydS9ybWF0Y2gvMiddfV07d2luZG93LllhSGVhZGVyQmlkZGluZ1NldHRpbmdzPXtiaWRkZXJzTWFwOmFkZm94QmlkZGVyc01hcCxhZFVuaXRzOmFkVW5pdHMsdGltZW91dDp1c2VyVGltZW91dCxzeW5jUGl4ZWxzOnN5bmNQaXhlbHN9OzwvIiArICJzY3JpcHQ+PGRpdiBpZD1cIltJRDVdXCI+PC9kaXY+PHNjcmlwdD53aW5kb3cueWFDb250ZXh0Q2IucHVzaCgoKT0+e1lhLmFkZm94Q29kZS5jcmVhdGUoe293bmVySWQ6Njk1OTgyLGNvbnRhaW5lcklkOidbSUQ1XScscGFyYW1zOntwMTonZGFxb2snLHAyOidpdHJoJ319KX0pPC8iICsgInNjcmlwdD48L2Rpdj48ZGl2IGNsYXNzPVwiYWRzLWl0ZW0tdGVzdFwiPjxzY3JpcHQ+dmFyIGFkZm94QmlkZGVyc01hcD17XCJteVRhcmdldFwiOlwiMTk4OTIwMFwiLFwiYWRyaXZlclwiOlwiMjIyODMyMlwiLFwic2FwZVwiOlwiMjM4MTEzM1wiLFwiY2xpY2tzY2xvdWRcIjpcIjI3NjE0NTRcIixcImJ1enpvb2xhXCI6XCIyODA1MTAyXCJ9O3ZhciBhZFVuaXRzPVt7XCJjb2RlXCI6XCJbSUQ2XVwiLFwic2l6ZXNcIjpbWzMwMCwyNTBdXSxcImJpZHNcIjpbe1wiYmlkZGVyXCI6XCJteVRhcmdldFwiLFwicGFyYW1zXCI6e1wicGxhY2VtZW50SWRcIjpcIjE0NzkxMTdcIn19LHtcImJpZGRlclwiOlwiYWRyaXZlclwiLFwicGFyYW1zXCI6e1wicGxhY2VtZW50SWRcIjpcIjc5OnNraWRrYW9ubGluZV8zMDB4MjUwXzEyXCIsXCJhZGRpdGlvbmFsXCI6e1wiZXh0XCI6e1wicXVlcnlcIjpcImN1c3RvbT0xMD03OSZjaWQ9XCIrbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FkcmNpZCcpfX19fSx7XCJiaWRkZXJcIjpcInNhcGVcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCI4NzY4NTNcIn19LHtcImJpZGRlclwiOlwiY2xpY2tzY2xvdWRcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCIyNzA0XCJ9fSx7XCJiaWRkZXJcIjpcImJ1enpvb2xhXCIsXCJwYXJhbXNcIjp7XCJwbGFjZW1lbnRJZFwiOlwiMTI1OTUzOVwifX1dfV07dmFyIHVzZXJUaW1lb3V0PTE1MDA7dmFyIHN5bmNQaXhlbHM9W3tiaWRkZXI6J3NhcGUnLHBpeGVsczpbJ2h0dHBzOi8vc3NwLXJ0Yi5zYXBlLnJ1L3JtYXRjaC8xJywnaHR0cHM6Ly9zc3AtcnRiLnNhcGUucnUvcm1hdGNoLzInXX1dO3dpbmRvdy5ZYUhlYWRlckJpZGRpbmdTZXR0aW5ncz17YmlkZGVyc01hcDphZGZveEJpZGRlcnNNYXAsYWRVbml0czphZFVuaXRzLHRpbWVvdXQ6dXNlclRpbWVvdXQsc3luY1BpeGVsczpzeW5jUGl4ZWxzfTs8LyIgKyAic2NyaXB0PjxkaXYgaWQ9XCJbSUQ2XVwiPjwvZGl2PjxzY3JpcHQ+d2luZG93LnlhQ29udGV4dENiLnB1c2goKCk9PntZYS5hZGZveENvZGUuY3JlYXRlKHtvd25lcklkOjY5NTk4Mixjb250YWluZXJJZDonW0lENl0nLHBhcmFtczp7cDE6J2RhcW9qJyxwMjonaXRyZyd9fSl9KTwvIiArICJzY3JpcHQ+PC9kaXY+PGRpdiBjbGFzcz1cImFkcy1pdGVtLXRlc3RcIj48c2NyaXB0PnZhciBhZGZveEJpZGRlcnNNYXA9e1wibXlUYXJnZXRcIjpcIjE5ODkyMDBcIixcImFkcml2ZXJcIjpcIjIyMjgzMjJcIixcInNhcGVcIjpcIjIzODExMzNcIixcImNsaWNrc2Nsb3VkXCI6XCIyNzYxNDU0XCIsXCJidXp6b29sYVwiOlwiMjgwNTEwMlwifTt2YXIgYWRVbml0cz1be1wiY29kZVwiOlwiW0lEN11cIixcInNpemVzXCI6W1szMDAsMjUwXV0sXCJiaWRzXCI6W3tcImJpZGRlclwiOlwibXlUYXJnZXRcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCIxNDc5MTE1XCJ9fSx7XCJiaWRkZXJcIjpcImFkcml2ZXJcIixcInBhcmFtc1wiOntcInBsYWNlbWVudElkXCI6XCI3OTpza2lka2FvbmxpbmVfMzAweDI1MF8xM1wiLFwiYWRkaXRpb25hbFwiOntcImV4dFwiOntcInF1ZXJ5XCI6XCJjdXN0b209MTA9NzkmY2lkPVwiK2xvY2FsU3RvcmFnZS5nZXRJdGVtKCdhZHJjaWQnKX19fX0se1wiYmlkZGVyXCI6XCJzYXBlXCIsXCJwYXJhbXNcIjp7XCJwbGFjZW1lbnRJZFwiOlwiODc2ODUyXCJ9fSx7XCJiaWRkZXJcIjpcImNsaWNrc2Nsb3VkXCIsXCJwYXJhbXNcIjp7XCJwbGFjZW1lbnRJZFwiOlwiMjcwNVwifX0se1wiYmlkZGVyXCI6XCJidXp6b29sYVwiLFwicGFyYW1zXCI6e1wicGxhY2VtZW50SWRcIjpcIjEyNTk0ODFcIn19XX1dO3ZhciB1c2VyVGltZW91dD0xNTAwO3ZhciBzeW5jUGl4ZWxzPVt7YmlkZGVyOidzYXBlJyxwaXhlbHM6WydodHRwczovL3NzcC1ydGIuc2FwZS5ydS9ybWF0Y2gvMScsJ2h0dHBzOi8vc3NwLXJ0Yi5zYXBlLnJ1L3JtYXRjaC8yJ119XTt3aW5kb3cuWWFIZWFkZXJCaWRkaW5nU2V0dGluZ3M9e2JpZGRlcnNNYXA6YWRmb3hCaWRkZXJzTWFwLGFkVW5pdHM6YWRVbml0cyx0aW1lb3V0OnVzZXJUaW1lb3V0LHN5bmNQaXhlbHM6c3luY1BpeGVsc307PC8iICsgInNjcmlwdD48ZGl2IGlkPVwiW0lEN11cIj48L2Rpdj48c2NyaXB0PndpbmRvdy55YUNvbnRleHRDYi5wdXNoKCgpPT57WWEuYWRmb3hDb2RlLmNyZWF0ZSh7b3duZXJJZDo2OTU5ODIsY29udGFpbmVySWQ6J1tJRDddJyxwYXJhbXM6e3AxOidkYXFvaScscDI6J2l0cmUnfX0pfSk8LyIgKyAic2NyaXB0PjwvZGl2PjwvZGl2PiI7IHRjLmFkczcgPSAnPGRpdiBjbGFzcz0iaXRlbSBhZHMtaXRlbSBhZHMtaXRlbS03IGhpZGRlbi1wcmludCI+JyArIGFkICsgJzwvZGl2Pic7ICAgdmFyIGFkID0gIjwhLS0gWWFuZGV4LlJUQiBSLUEtMjE3NDE2Ny0xOCAtLT48ZGl2IGlkPVwie0lEfVwiIHN0eWxlPVwibWFyZ2luOmF1dG87bWluLWhlaWdodDo2MDBweDtvdmVyZmxvdzpoaWRkZW47XCI+PC9kaXY+PHNjcmlwdD53aW5kb3cueWFDb250ZXh0Q2IucHVzaCgoKT0+e1lhLkNvbnRleHQuQWR2TWFuYWdlci5yZW5kZXIoe3JlbmRlclRvOiAne0lEfScsYmxvY2tJZDogJ1ItQS0yMTc0MTY3LTE4JyxzdGF0SWQ6ICczODInfSl9KTwvIiArICJzY3JpcHQ+IjsgdGMuYWRzUmVwZWF0ID0gJzxkaXYgY2xhc3M9Iml0ZW0gYWRzLWl0ZW0gYWRzLWl0ZW0tcmVwZWF0IGhpZGRlbi1wcmludCI+JyArIGFkICsgJzwvZGl2Pic7ICB9IHRjLmwgPSBmdW5jdGlvbiAoKSB7IGlmICh0Yy5hbGxMb2FkZWQpIHsgcmV0dXJuIGZhbHNlOyB9IHZhciBwID0ge307IGlmICghdGMuYy5hdHRyKCdkYXRhLW9mZnNldCcpKSB7IHRjLmMuYXR0cignZGF0YS1vZmZzZXQnLCAwKTsgfSBpZiAocGFyc2VJbnQodGMuYy5hdHRyKCdkYXRhLW9mZnNldCcpKSA9PT0gMCAmJiB0Yy5tYXhDdXJyUGFnZSA+IDEpIHsgdGMuYy5hdHRyKCdkYXRhLW9mZnNldCcsICh0Yy5tYXhDdXJyUGFnZSAtIDEpICogdGMubWF4UGVyUGFnZSk7IH0gY29uc3QgYXR0cmlidXRlcyA9IFsgJ2RhdGEtbGltaXQnLCAnZGF0YS1vZmZzZXQnLCAnZGF0YS1kYXRlJywgJ2RhdGEtcGNhdGVnb3JpZXNfaWRzJywgJ2RhdGEtb3JkZXJieScsICdkYXRhLXNob3BfaWQnLCAnZGF0YS1jaXR5X2lkJywgJ2RhdGEtbGlzdF9pZCcsICdkYXRhLWNhdGVnb3J5X2lkJywgJ2RhdGEtZGlzY291bnRfaWQnLCAnZGF0YS1icmFuZF9pZCcsICdkYXRhLXNob3dvbmhvbWUnLCAnZGF0YS1oYXZlYWxjb2hvbCcsICdkYXRhLXRpbWUnLCAnZGF0YS1zJyBdOyBhdHRyaWJ1dGVzLmZvckVhY2goYXR0ciA9PiB7IGNvbnN0IHZhbHVlID0gdGMuYy5hdHRyKGF0dHIpOyBpZiAodmFsdWUpIHsgY29uc3Qga2V5ID0gYXR0ci5yZXBsYWNlKCdkYXRhLScsICcnKTsgcFtrZXldID0gdmFsdWU7IH0gfSk7IHAuZmllbGRzID0gJ2lkLG5hbWUsbmFtZTIsc2hvcHNfaWRzLHVybCxub3RlZCxkaXNjb3VudF91cmwsZGlzY291bnRfbmFtZSxkYXRlLG5vdGFsbGFkZHIsaW1hZ2UzMzYsaW1hZ2VmdWxsLGJyYW5kcyc7IHAuZmllbGRzICs9ICcscHJpY2ViZWZvcmUscHJpY2VhZnRlcixkaXNjb3VudF90eXBlLGRpc2NvdW50LGV4dGVybmFsdXJsLGNvdW50UGx1cyxjb3VudE1pbnVzLGNvbW1lbnRzLGRlc2MsY29sb3IsZGF5c3RpdGxlLGxpa2VkLHN0YXJ0ZWRfdG9kYXkscHVibGlzaGVkX3RvZGF5JzsgcC5maWVsZHMgKz0gJyxwY2F0ZWdvcmllcyc7IGlmIChkY29yZWNuZy5lbmFibGVQcm9kdWN0c1F1YW50aXR5KSB7IHAuZmllbGRzICs9ICcscXVhbnRpdHkscXVhbnRpdHlfdW5pdCc7IH0gJCgnLmxvYWRlci1ib3R0b20tZXJyb3InLHRjLmMpLnJlbW92ZSgpOyB0Yy5sb2FkZWQgPSBwYXJzZUludCh0Yy5jLmF0dHIoJ2RhdGEtb2Zmc2V0JykpOyBpZiAoKHBhcnNlSW50KHAub2Zmc2V0KSArIHBhcnNlSW50KHAubGltaXQpKSA+ICh0Yy5tYXhDdXJyUGFnZSAqIHRjLm1heFBlclBhZ2UpKSB7IHAubGltaXQgPSAodGMubWF4Q3VyclBhZ2UgKiB0Yy5tYXhQZXJQYWdlKSAtIHBhcnNlSW50KHAub2Zmc2V0KTsgaWYgKHAubGltaXQgPT0gMCkgeyB0Yy5hbGxMb2FkZWQgPSB0cnVlOyByZXR1cm4gZmFsc2U7IH0gfSB0Yy5zbGIoKTsgaWYgKHRjLnNjcm9sbFRvVG9wKSB7IHZhciBvZmZzZXQgPSAkKCcuZm9ybS1maWx0ZXJzMicpLm9mZnNldCgpOyB3aW5kb3cuc2Nyb2xsVG8oMCxvZmZzZXQudG9wIC0gNTApOyB9IHRjLnhociA9IEFwaS5nZXQodGMudSwgcCwgZnVuY3Rpb24ocmVzcG9uc2UpeyBpZiAodGMueGhySW50KSB7IGNsZWFySW50ZXJ2YWwodGMueGhySW50KTsgfSB2YXIgcGggPSAnJzsgaWYgKHR5cGVvZiByZXNwb25zZS5lcnJvciAhPSAndW5kZWZpbmVkJykgeyB9IGVsc2UgeyBpZiAocGFyc2VJbnQocmVzcG9uc2UudG90YWxDb3VudCkgPT0gMCkgeyB0Yy5hbGxMb2FkZWQgPSB0cnVlOyBpZiAoJCgnLm1haW4tcHJvZHVjdC1jYXRzIC5jYXQtbGluay5hY3RpdmUnKS5sZW5ndGgpIHsgdmFyIGNhdHNUZXh0ID0gJyc7ICQoJy5tYWluLXByb2R1Y3QtY2F0cyAuY2F0LWxpbmsuYWN0aXZlJykuZWFjaChmdW5jdGlvbigpeyBjYXRzVGV4dCArPSAoY2F0c1RleHQgPT0gJycpID8gJycgOiAnLCAnOyBjYXRzVGV4dCArPSAkKCcubWVudS10ZXh0Jyx0aGlzKS50ZXh0KCk7IH0pOyB0Yy5jLmh0bWwoJzxkaXYgY2xhc3M9Im1haW4tYWxlcnQgbG9hZGVyLWJvdHRvbS1lcnJvciB0ZXh0LWNlbnRlciI+0JDQutGG0LjQuCDQvdCwICInICsgY2F0c1RleHQgKyAnIiDQvdC1INC90LDQudC00LXQvdGLLjxici8+PGEgY2xhc3M9IiBidG4gYnRuLXByaW1hcnkgYnRuLXNtIiBocmVmPSInICsgZGNvcmVjbmcuY3VyclVybFdpdGhvdXRDYXRzICsgJyI+0KHQvNC+0YLRgNC10YLRjCDQstGB0LUg0LDQutGG0LjQuCDQvNCw0LPQsNC30LjQvdCwPC9hPjwvZGl2PicpOyB9IGVsc2UgeyB0Yy5jLmh0bWwoJzxkaXYgY2xhc3M9Im1haW4tYWxlcnQgbG9hZGVyLWJvdHRvbS1lcnJvciB0ZXh0LWNlbnRlciI+0JDQutGG0LjQuCDQvdC1INC90LDQudC00LXQvdGLPC9kaXY+Jyk7IH0gdGMuYy5hdHRyKCdzdHlsZScsJycpOyB9IGVsc2UgeyB2YXIgY3VyclN0YXJ0ID0gdGMuYy5hdHRyKCdkYXRhLW1heHBlcnBhZ2UnKSAqICh0Yy5jLmF0dHIoJ2RhdGEtY3Vycm1heHBhZ2UnKSAtIDEpOyBpZiAodGMubG9hZGVkID09IGN1cnJTdGFydCkgeyB0Yy5jLmh0bWwoJycpOyB9ICQocmVzcG9uc2UucHJvZHVjdHMpLmVhY2goZnVuY3Rpb24oaSxlbCl7IHZhciBwcm9kdWN0ID0gbmV3IFByb2R1Y3QoZWwpOyBwaCArPSBwcm9kdWN0LmdldEh0bWwoKTsgdGMubG9hZGVkICs9IDE7IHZhciBwb3NpdGlvbkluQmxvY2sgPSB0Yy5sb2FkZWQgJSAzMDsgaWYgKCF0Yy5kaXNhYmxlQWRzKSB7IGlmIChwb3NpdGlvbkluQmxvY2sgPT09IDMpIHsgcGggKz0gdGMuYWRzMS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcW0lEXFxdJywgJ2cnKSwneWFuZGV4MS0nICsgKG5ldyBEYXRlKCkuZ2V0VVRDTWlsbGlzZWNvbmRzKCkgKyAnLScgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTAwMCkpKTsgfSBlbHNlIGlmIChwb3NpdGlvbkluQmxvY2sgPT09IDYpIHsgcGggKz0gdGMuYWRzMi5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcW0lEXFxdJywgJ2cnKSwneWFuZGV4Mi0nICsgKG5ldyBEYXRlKCkuZ2V0VVRDTWlsbGlzZWNvbmRzKCkgKyAnLScgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTAwMCkpKTsgfSBlbHNlIGlmIChwb3NpdGlvbkluQmxvY2sgPT09IDkpIHsgcGggKz0gdGMuYWRzMy5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcW0lEXFxdJywgJ2cnKSwneWFuZGV4My0nICsgKG5ldyBEYXRlKCkuZ2V0VVRDTWlsbGlzZWNvbmRzKCkgKyAnLScgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTAwMCkpKTsgfSBlbHNlIGlmIChwb3NpdGlvbkluQmxvY2sgPT09IDEyKSB7IHBoICs9IHRjLmFkczQucmVwbGFjZShuZXcgUmVnRXhwKCdcXFtJRFxcXScsICdnJyksJ3lhbmRleDQtJyArIChuZXcgRGF0ZSgpLmdldFVUQ01pbGxpc2Vjb25kcygpICsgJy0nICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMDApKSk7IH0gZWxzZSBpZiAocG9zaXRpb25JbkJsb2NrID09PSAxNSkgeyBwaCArPSB0Yy5hZHM1LnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxbSURcXF0nLCAnZycpLCd5YW5kZXg1LScgKyAobmV3IERhdGUoKS5nZXRVVENNaWxsaXNlY29uZHMoKSArICctJyArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxMDAwKSkpOyB9IGVsc2UgaWYgKHBvc2l0aW9uSW5CbG9jayA9PT0gMTgpIHsgcGggKz0gdGMuYWRzNi5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcW0lEXFxdJywgJ2cnKSwneWFuZGV4Ni0nICsgKG5ldyBEYXRlKCkuZ2V0VVRDTWlsbGlzZWNvbmRzKCkgKyAnLScgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTAwMCkpKTsgfSBlbHNlIGlmIChwb3NpdGlvbkluQmxvY2sgPT09IDAgJiYgdGMubG9hZGVkICE9PSAwKSB7IHZhciBhZDcgPSB0Yy5hZHM3OyBhZDcgPSBhZDcucmVwbGFjZShuZXcgUmVnRXhwKCdcXFtJRDFcXF0nLCAnZycpLCd5YW5kZXg3MS0nICsgKG5ldyBEYXRlKCkuZ2V0VVRDTWlsbGlzZWNvbmRzKCkgKyAnLScgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTAwMCkpKTsgYWQ3ID0gYWQ3LnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxbSUQyXFxdJywgJ2cnKSwneWFuZGV4NzItJyArIChuZXcgRGF0ZSgpLmdldFVUQ01pbGxpc2Vjb25kcygpICsgJy0nICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMDApKSk7IGFkNyA9IGFkNy5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcW0lEM1xcXScsICdnJyksJ3lhbmRleDczLScgKyAobmV3IERhdGUoKS5nZXRVVENNaWxsaXNlY29uZHMoKSArICctJyArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxMDAwKSkpOyBhZDcgPSBhZDcucmVwbGFjZShuZXcgUmVnRXhwKCdcXFtJRDRcXF0nLCAnZycpLCd5YW5kZXg3NC0nICsgKG5ldyBEYXRlKCkuZ2V0VVRDTWlsbGlzZWNvbmRzKCkgKyAnLScgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTAwMCkpKTsgYWQ3ID0gYWQ3LnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxbSUQ1XFxdJywgJ2cnKSwneWFuZGV4NzUtJyArIChuZXcgRGF0ZSgpLmdldFVUQ01pbGxpc2Vjb25kcygpICsgJy0nICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMDApKSk7IGFkNyA9IGFkNy5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcW0lENlxcXScsICdnJyksJ3lhbmRleDc2LScgKyAobmV3IERhdGUoKS5nZXRVVENNaWxsaXNlY29uZHMoKSArICctJyArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxMDAwKSkpOyBhZDcgPSBhZDcucmVwbGFjZShuZXcgUmVnRXhwKCdcXFtJRDdcXF0nLCAnZycpLCd5YW5kZXg3Ny0nICsgKG5ldyBEYXRlKCkuZ2V0VVRDTWlsbGlzZWNvbmRzKCkgKyAnLScgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTAwMCkpKTsgcGggKz0gYWQ3OyB9IH0gfSk7IGlmIChyZXNwb25zZS5jdXJyZW50UGFnZSA9PSAyKSB7ICQod2luZG93KS5yZXNpemUoKTsgfSB0Yy5jLmdyaWQoJ2FwcGVuZCcsICQocGgpKTsgdXBkYXRlQWRkZWRUb2RheSgpOyBpZiAoJC5jb29raWUoJ2NvdW50Y29scycpKSB7ICQoJy5jaGFuZ2UtY29scy1saW5rW2hyZWY9IicgKyAkLmNvb2tpZSgnY291bnRjb2xzJykgKyAnIl0nKS50cmlnZ2VyKCdjbGljaycpOyB9IHRjLmMuYXR0cignZGF0YS1vZmZzZXQnLHRjLmxvYWRlZCk7IHRjLmNkbChyZXNwb25zZS50b3RhbENvdW50KTsgdGMuYWxsTG9hZGVkID0gKHRjLmxvYWRlZCA+PSByZXNwb25zZS50b3RhbENvdW50KTsgdGMubEFkc2Vuc2UoKTsgfSB9IHRjLmhsYigpOyB0Yy54aHIgPSBmYWxzZTsgfSk7IH07IHRjLmxucCA9IGZ1bmN0aW9uKCl7IGlmICh0Yy54aHIpIHsgcmV0dXJuIGZhbHNlOyB9IHRjLmwoKTsgfTsgdGMub25zY3JvbGwgPSBmdW5jdGlvbigpeyB2YXIgcG9wdXAgPSB0Yy5jLnBhcmVudHMoJy5tb2RhbC5wcm9kdWN0Jyk7IGlmIChwb3B1cC5sZW5ndGgpIHsgdmFyIHBvcyA9IHBhcnNlSW50KCQoJy5wcm9kdWN0LWNvbnRhaW5lcicsIHRoaXMpLmhlaWdodCgpIC0gKCQodGhpcykuc2Nyb2xsVG9wKCkgKyAkKHdpbmRvdykuaGVpZ2h0KCkpKTsgfSBlbHNlIHsgdmFyIHBvcyA9IHBhcnNlSW50KCh0Yy5jLm9mZnNldCgpLnRvcCArIHRjLmMuaGVpZ2h0KCkpIC0gKCQodGhpcykuc2Nyb2xsVG9wKCkgKyAkKHRoaXMpLmhlaWdodCgpKSk7IH0gaWYgKHBvcyA8IDI2MDApIHsgdGMubG5wKCk7IH0gdGMuY2RsKCk7IH07IHRjLnNsYiA9IGZ1bmN0aW9uICgpIHsgaWYgKCQoJy5za2VsZXRvbicsdGMuYykubGVuZ3RoKSByZXR1cm47IGlmICh0Yy5sb2FkZWQgPiAwKSB7IHRjLmxIVE1MID0gJzxkaXYgY2xhc3M9IicgKyB0Yy5sYyArICcgZGlzYWJsZS1vdmVybGF5Ij48ZGl2IGNsYXNzPSJsb2FkZXItaWNvbiI+PC9kaXY+PC9kaXY+JzsgfSB0Yy5obGIoKTsgdGMuYy5hcHBlbmQodGMubEhUTUwpOyB0Yy5sT2JqID0gJCh0Yy5scyx0Yy5jKTsgdGMubGlPYmogPSAkKCcubG9hZGVyLWljb24nLHRjLmxPYmopOyB0Yy54aHJJbnQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IHRjLmxpT2JqLmh0bWwoJ9C30LDQs9GA0YPQt9C60LAuLi4nKTsgdGMueGhySW50ID0gc2V0VGltZW91dChmdW5jdGlvbigpeyB0Yy5saU9iai5odG1sKCfQstGB0LUg0LXRidC1INC30LDQs9GA0YPQttCw0LXRgtGB0Y8uLi4nKTsgdGMueGhySW50ID0gc2V0VGltZW91dChmdW5jdGlvbigpeyBpZiAodGMueGhyKSB7IHRjLmxPYmoucmVwbGFjZVdpdGgoJzxkaXYgY2xhc3M9Im1haW4tYWxlcnQgbG9hZGVyLWJvdHRvbS1lcnJvciB0ZXh0LWNlbnRlciI+0J7RiNC40LHQutCwINGB0L7QtdC00LjQvdC10L3QuNGPINGBINGB0LXRgNCy0LXRgNC+0LwuPGJyLz48YSBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IGxucC1idG4iIGhyZWY9IiMiPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXJlZnJlc2giPjwvc3Bhbj4g0J7QsdC90L7QstC40YLRjDwvYT48L2Rpdj4nKTsgdGMueGhyLmFib3J0KCk7IHRjLnhociA9IGZhbHNlOyB9IH0sMTAwMDApOyB9LDEwMDAwKTsgfSwxMDAwKTsgfTsgdGMuaGxiID0gZnVuY3Rpb24gKCkgeyAkKCcubG9hZGVyLWJvdHRvbScsdGMuYykucmVtb3ZlKCk7IH07IHRjLmxBZHNlbnNlID0gZnVuY3Rpb24oKXsgaWYgKCF0Yy5kaXNhYmxlQWRzKSB7IGlmICgkKCcuYWRzYnlnb29nbGU6bm90KFtkYXRhLWFkc2J5Z29vZ2xlLXN0YXR1c10pJykubGVuZ3RoKSB7ICQoJy5hZHNieWdvb2dsZTpub3QoW2RhdGEtYWRzYnlnb29nbGUtc3RhdHVzXSknKS5lYWNoKGZ1bmN0aW9uIChpLCBlbCkgeyBpZiAoJChlbCkud2lkdGgoKSA9PSAwKSB7ICQoZWwpLnJlbW92ZSgpOyB9IGVsc2UgeyAoYWRzYnlnb29nbGUgPSB3aW5kb3cuYWRzYnlnb29nbGUgfHwgW10pLnB1c2goe30pOyB9IH0pOyB9IH0gfTsgdGMubG5wQ2xpY2sgPSBmdW5jdGlvbihlKXsgdGMubG5wKCk7IGUucHJldmVudERlZmF1bHQoKTsgfTsgdGMuY2RsID0gZnVuY3Rpb24odG90YWwpeyBpZiAoIXRjLmNkbGMgJiYgIXRvdGFsKSB7IHJldHVybjsgfSBpZiAoIXRjLmNkbGMpIHsgdGMuYy5hcHBlbmQoJzxkaXYgY2xhc3M9ImNkbCIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgJyArICd0aXRsZT0i0J\/QvtC60LDQt9Cw0L3QviDQsNC60YbQuNC5L9CS0YHQtdCz0L4g0LDQutGG0LjQuSI+PHNwYW4gY2xhc3M9ImMiPjA8L3NwYW4+LycgKyB0b3RhbCArICc8L2Rpdj4nKTsgdGMuY2RsT2JqID0gJCgnLmNkbCcsdGMuYyk7IHRjLmNkbGMgPSAkKCcuY2RsIC5jJyx0Yy5jKTsgfSB2YXIgaXRlbXMgPSAkKCcuaXRlbTpub3QoLmFkcy1pdGVtKTpub3QoLmNkbCknLHRjLmMpOyBpZiAoIWl0ZW1zLmxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH0gdmFyIHN0ID0gJCh3aW5kb3cpLnNjcm9sbFRvcCgpOyBpZiAoKHN0ICsgJCh3aW5kb3cpLmhlaWdodCgpKSA8IHRjLmMub2Zmc2V0KCkudG9wKSB7IHRjLmNkbE9iai5jc3MoJ2Rpc3BsYXknLCdub25lJyk7IHJldHVybiBmYWxzZTsgfSB0Yy5jZGxPYmouY3NzKCdkaXNwbGF5JywnJyk7IGlmICh0eXBlb2YgdGMubWF4Q3VyclBhZ2UgPT0gJ3VuZGVmaW5lZCcpIHsgdmFyIGNTZWVuID0gMDsgfSBlbHNlIHsgdmFyIGNTZWVuID0gKHRjLm1heEN1cnJQYWdlIC0gMSkgKiB0Yy5tYXhQZXJQYWdlOyB9IGl0ZW1zLmVhY2goZnVuY3Rpb24gKGksIGVsKSB7IHZhciBlbEIgPSAkKGVsKS5vZmZzZXQoKS50b3AgKyAkKGVsKS5oZWlnaHQoKSAvIDI7IHZhciB3aW5CID0gc3QgKyAkKHdpbmRvdykuaGVpZ2h0KCk7IGlmIChlbEIgPCB3aW5CKSB7IGNTZWVuKys7IH0gfSk7IHRjLmNkbGMudGV4dChjU2Vlbik7IH07IHRjLmMuZGF0YSgncGwnLHRjKTsgdGMubCgpOyB2YXIgcG9wdXAgPSB0Yy5jLnBhcmVudHMoJy5tb2RhbC5wcm9kdWN0Jyk7IGlmIChwb3B1cC5sZW5ndGgpIHsgdmFyIGlkID0gcG9wdXAuYXR0cignZGF0YS1pZCcpOyAkKCcjcHJvZHVjdC1wb3B1cCcpLnNjcm9sbCh0Yy5vbnNjcm9sbCk7ICQoJ0JPRFknKS5vbignY2xpY2snLCcjcHJvZHVjdC1zaW1pbGFyIC5sbnAtYnRuJyx0Yy5sbnBDbGljayk7IH0gZWxzZSB7ICQod2luZG93KS51bmJpbmQoJ3Njcm9sbC5wcm9kdWN0c0xvYWRlcicpOyAkKHdpbmRvdykuYmluZCgnc2Nyb2xsLnByb2R1Y3RzTG9hZGVyJyx0Yy5vbnNjcm9sbCk7ICQoJ0JPRFknKS5vbignY2xpY2snLCcubG5wLWJ0bicsdGMubG5wQ2xpY2spOyB9IH07ICQoJy5wcm9kdWN0cy1wYWdlciAuY2hhbmdlLWxpbWl0LWxpbmsnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoZSkgeyB2YXIgbmV3TGltaXQgPSAkKHRoaXMpLmF0dHIoJ3JlbCcpLCB1cmwgPSBkY29yZWNuZy5hcHUod2luZG93LmxvY2F0aW9uLmhyZWYsJ2NoYW5nZXBhZ2VsaW1pdCcsbmV3TGltaXQpOyB3aW5kb3cubG9jYXRpb24gPSB1cmw7IGUucHJldmVudERlZmF1bHQoKTsgfSk7");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("ICQuZm4uZ3JpZCA9IGZ1bmN0aW9uIChmdW5jLCBlbGVtZW50cykgeyB2YXIgdGMgPSB0aGlzOyB0Yy5lbGVtZW50cyA9IGVsZW1lbnRzOyB0Yy5jb250YWluZXIgPSAkKHRjKTsgdGMudCA9IGZhbHNlOyB0Yy5lbGVtZW50V2lkdGggPSBwYXJzZUludCgkKCcuaXRlbScsdGMuY29udGFpbmVyKS53aWR0aCgpKTsgdGMucGFkZGluZyA9IHBhcnNlSW50KCQoJy5pdGVtJyx0Yy5jb250YWluZXIpLmNzcygnbWFyZ2luLXJpZ2h0JykpOyB0Yy5zZXRQb3NpdGlvbnMgPSBmdW5jdGlvbihpdGVtcyl7IHRjLmVsZW1lbnRXaWR0aCA9IHBhcnNlSW50KCQoJy5pdGVtJyx0Yy5jb250YWluZXIpLndpZHRoKCkpOyB0Yy5wYWRkaW5nID0gcGFyc2VJbnQoJCgnLml0ZW0nLHRjLmNvbnRhaW5lcikuY3NzKCdtYXJnaW4tcmlnaHQnKSk7IHZhciBjdXJyZW50Q29sID0gMCwgY3VycmVudFJvdyA9IDAsIGNvbHNEYXRhID0gW10sIGNvbnRhaW5lcldpZHRoID0gdGMuY29udGFpbmVyLndpZHRoKCksIGNvbHMgPSBNYXRoLmZsb29yKCAoY29udGFpbmVyV2lkdGgrKHRjLnBhZGRpbmcgKiAyKSkvKHRjLmVsZW1lbnRXaWR0aCsodGMucGFkZGluZykpICkgLSAxOyBpZiAoY29scyA8IDApIHsgY29scyA9IDA7IH0gaWYgKGNvbHMgPT0gMCkgeyAkKGl0ZW1zKS5yZW1vdmVDbGFzcygnc3RhdGljJyk7IGNvbnNvbGUubG9nKCdjb2xzIDAgb3BhY2l0eSAxJyk7ICQoaXRlbXMpLmNzcygnb3BhY2l0eScsJzEnKTsgcmV0dXJuIGZhbHNlOyB9IHZhciBvZmZzZXRMZWZ0ID0gKGNvbnRhaW5lcldpZHRoICsgKHRjLnBhZGRpbmcpIC0gKChjb2xzKzEpICogKHRjLmVsZW1lbnRXaWR0aCsodGMucGFkZGluZykpICkpIC8gMjsgaWYgKHRjLmNvbnRhaW5lci5hdHRyKCdkYXRhLWNvbHMnKSkgeyBjb2xzRGF0YSA9IHRjLmNvbnRhaW5lci5hdHRyKCdkYXRhLWNvbHMnKS5zcGxpdCgnLCcpOyBmb3IodmFyIGkgPSAwOyBpIDwgY29sc0RhdGEubGVuZ3RoOyBpKyspIHsgY29sc0RhdGFbaV0gPSBwYXJzZUludChjb2xzRGF0YVtpXSk7IH0gfSBmb3IodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHsgdmFyIGl0ZW0gPSAkKGl0ZW1zW2ldKTsgaWYgKGl0ZW0uYXR0cignZGF0YS1wb3NpdGlvbmVkJykpIHsgY29udGludWU7IH0gdmFyIGxlZnQgPSAwOyB2YXIgdG9wID0gMDsgaWYgKCFjb2xzRGF0YVtjdXJyZW50Q29sXSkgeyBjb2xzRGF0YVtjdXJyZW50Q29sXSA9IDA7IH0gdmFyIG1pbkNvbCA9IGN1cnJlbnRDb2w7IHZhciBtaW5Db2xIZWlnaHQgPSBjb2xzRGF0YVtjdXJyZW50Q29sXTsgZm9yKHZhciBqID0gMDsgaiA8IGNvbHNEYXRhLmxlbmd0aDsgaisrKSB7IGlmIChtaW5Db2xIZWlnaHQgPiBjb2xzRGF0YVtqXSkgeyBtaW5Db2wgPSBqOyBtaW5Db2xIZWlnaHQgPSBjb2xzRGF0YVtqXTsgfSB9IGxlZnQgPSBtaW5Db2wqKHRjLmVsZW1lbnRXaWR0aCt0Yy5wYWRkaW5nKSArIG9mZnNldExlZnQ7IHRvcCA9IG1pbkNvbEhlaWdodDsgdmFyIGl0ZW1JbWcgPSAkKCcuaW1hZ2UtbGluayBpbWcnLGl0ZW0pOyBpZiAoaXRlbUltZy5sZW5ndGgpIHsgdmFyIGltZ1dpZHRoRnVsbCA9IHBhcnNlSW50KGl0ZW1JbWcuYXR0cignZGF0YS1mdycpKTsgdmFyIGltZ0hlaWdodEZ1bGwgPSBwYXJzZUludChpdGVtSW1nLmF0dHIoJ2RhdGEtZmgnKSk7IHZhciBpbWdXaWR0aEN1cnIgPSBwYXJzZUZsb2F0KGl0ZW0ud2lkdGgoKSk7IHZhciBpbWdIZWlnaHRDdXJyID0gcGFyc2VGbG9hdChpbWdIZWlnaHRGdWxsLyhpbWdXaWR0aEZ1bGwvaW1nV2lkdGhDdXJyKSk7IGl0ZW1JbWcuYXR0cignaGVpZ2h0JyxpbWdIZWlnaHRDdXJyKTsgfSBjb2xzRGF0YVttaW5Db2xdID0gY29sc0RhdGFbbWluQ29sXSArIGl0ZW0uaGVpZ2h0KCkgKyB0Yy5wYWRkaW5nOyBpZiAoY3VycmVudENvbCA9PSBjb2xzKSB7IGN1cnJlbnRDb2wgPSAwOyBjdXJyZW50Um93Kys7IH0gZWxzZSB7IGN1cnJlbnRDb2wrKzsgfSBpZiAoaXRlbS5oYXNDbGFzcygnc3RhdGljJykpIHsgaXRlbS5yZW1vdmVDbGFzcygnc3RhdGljJyk7IH0gY29uc29sZS5sb2coJ2l0ZW0gb3BhY2l0eSAxJyk7IGl0ZW0uY3NzKHsgJ29wYWNpdHknOjEsICdsZWZ0JzogMCwgJ3RvcCc6IDAsICd0cmFuc2Zvcm0nOiAndHJhbnNsYXRlWCgnICsgbGVmdCArICdweCkgdHJhbnNsYXRlWSgnICsgdG9wICsgJ3B4KScsICd3aWR0aCc6ICcnIH0pOyBpdGVtLmF0dHIoJ2RhdGEtcG9zaXRpb25lZCcsMSk7IH0gdmFyIG1heENvbEhlaWdodCA9IGNvbHNEYXRhWzBdOyBmb3IodmFyIGogPSAwOyBqIDwgY29sc0RhdGEubGVuZ3RoOyBqKyspIHsgaWYgKG1heENvbEhlaWdodCA8IGNvbHNEYXRhW2pdKSB7IG1heENvbEhlaWdodCA9IGNvbHNEYXRhW2pdOyB9IH0gdGMuY29udGFpbmVyLmhlaWdodChtYXhDb2xIZWlnaHQpOyB2YXIgZGF0YUNvbHNTdHIgPSBjb2xzRGF0YS5qb2luKCcsJyk7IHRjLmNvbnRhaW5lci5hdHRyKCdkYXRhLWNvbHMnLGRhdGFDb2xzU3RyKTsgJCgnLnN0YXRpYycsdGMuY29udGFpbmVyKS5yZW1vdmUoKTsgfTsgdGMucmVmcmVzaCA9IGZ1bmN0aW9uKCl7IGlmICh0Yy50KSB7IGNsZWFyVGltZW91dCh0Yy50KTsgfSB0Yy50ID0gc2V0VGltZW91dChmdW5jdGlvbigpeyB2YXIgaXRlbXMgPSBbXTsgdGMuY29udGFpbmVyLnJlbW92ZUF0dHIoJ2RhdGEtY29scycpOyB2YXIgZWxlbWVudHMgPSAkKCcuaXRlbScsdGMpOyBlbGVtZW50cy5jc3MoeyAndHJhbnNmb3JtJzonJywgfSk7IGVsZW1lbnRzLnJlbW92ZUF0dHIoJ2RhdGEtcG9zaXRpb25lZCcpOyAkKCcuaXRlbScsdGMpLmVhY2goZnVuY3Rpb24gKCkgeyBpdGVtcy5wdXNoKHRoaXMpOyB9KTsgdGMuc2V0UG9zaXRpb25zKGl0ZW1zKTsgfSwxMDApOyB9OyBpZiAoZnVuYyA9PSAnYXBwZW5kJykgeyBjb25zb2xlLmxvZygnYXBwZW5kIG9wYWNpdHkgMCcpOyB0Yy5lbGVtZW50cy5jc3MoJ29wYWNpdHknLDApOyB0Yy5jb250YWluZXIuYXBwZW5kKHRjLmVsZW1lbnRzKTsgfSBlbHNlIGlmIChmdW5jID09ICdyZWZyZXNoJykgeyB0Yy5yZWZyZXNoKCk7IH0gdmFyIGl0ZW1zID0gW107IHRjLmVsZW1lbnRzLmVhY2goZnVuY3Rpb24gKCkgeyBpdGVtcy5wdXNoKHRoaXMpOyB9KTsgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHRjLnNldFBvc2l0aW9ucyhpdGVtcyk7IH0sMTAwKTsgJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpeyB0Yy5yZWZyZXNoKCk7IH0pOyByZXR1cm4gdGhpczsgfTsg");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("dmFyIGN1cnJQb3B1cFNjcm9sbFRvcCA9IGZhbHNlOyBpZiAoJCgnYm9keScpLmhhc0NsYXNzKCdub3Rlcy1wYWdlJykpIHsgJCgnLmRpc2NvdW50czpub3QoLnNpbWlsYXItcHJvZHVjdHMtbGlzdCknKS5lYWNoKGZ1bmN0aW9uKCl7ICQodGhpcykuZ3JpZCgnYXBwZW5kJywgJCgnLml0ZW0nLCAkKHRoaXMpKSk7IH0pOyB9IGVsc2UgeyBpZiAoJCgnYm9keScpLmhhc0NsYXNzKCdub3Rlcy1wYWdlJykpIHsgdmFyIHVybCA9ICcvYXBpdjIvdXNlcnMvJyArIGRjb3JlY25nLnVzZXIuaWQgKyAnL25vdGVzLyc7IH0gZWxzZSB7IHZhciB1cmwgPSAnL2FwaXYzL3Byb2R1Y3RzLyc7IH07ICQoJy5kaXNjb3VudHM6bm90KC5zaW1pbGFyLXByb2R1Y3RzLWxpc3QpJykuZWFjaChmdW5jdGlvbiAoKSB7IHZhciBwbCA9IG5ldyBQcm9kdWN0c0xvYWRlcih7IGM6ICQodGhpcyksIHU6IHVybCB9KTsgfSk7IH0gdmFyIFByb2R1Y3RQb3B1cCA9IGZ1bmN0aW9uKGVsKXsgdmFyIHRoaXNDbGFzcyA9IHRoaXM7IGlmICh0eXBlb2YgZWwgIT09ICd1bmRlZmluZWQnKSB7IHRoaXNDbGFzcy5lbCA9ICQoZWwpOyB9IGVsc2UgeyB0aGlzQ2xhc3MuZWwgPSBudWxsOyB9IHRoaXNDbGFzcy5sb2FkTGFyZ2VJbWFnZVhIUiA9IGZhbHNlOyB0aGlzQ2xhc3MuaW1nT2JqID0gZmFsc2U7IHRoaXNDbGFzcy5wcm9kdWN0dmlld3NJbnQgPSBmYWxzZTsgdGhpc0NsYXNzLnBhbmVsQ2xpY2tlZCA9IGZhbHNlOyB0aGlzQ2xhc3MuZGVzdHJveSA9IGZ1bmN0aW9uKCkgeyBpZiAodGhpc0NsYXNzLmxvYWRMYXJnZUltYWdlWEhSKSB7IHRoaXNDbGFzcy5sb2FkTGFyZ2VJbWFnZVhIUi5hYm9ydCgpOyB9IHRoaXNDbGFzcy5lbCA9IG51bGw7IHRoaXNDbGFzcy5sb2FkTGFyZ2VJbWFnZVhIUiA9IG51bGw7IHRoaXNDbGFzcy5pbWdPYmouc3JjID0gJyc7IHRoaXNDbGFzcy5pbWdPYmogPSBudWxsOyAkKCcjJyArIHRoaXNDbGFzcy53aGVyZWJ1eVRhYlNlbGVjdG9ySWQpLnJlbW92ZUF0dHIoJ2xvYWRlZCcpOyBpZiAodGhpc0NsYXNzLnByb2R1Y3R2aWV3c0ludCkgY2xlYXJJbnRlcnZhbCh0aGlzQ2xhc3MucHJvZHVjdHZpZXdzSW50KTsgfTsgdGhpc0NsYXNzLmNyZWF0ZVBvcHVwID0gZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9nKCdjcmVhdGVQb3B1cCcpOyB2YXIgaW1nID0gJCgnLmltYWdlLWxpbmsgaW1nJywgdGhpc0NsYXNzLml0ZW0pLCBoMyA9ICQoJ2gzJywgdGhpc0NsYXNzLml0ZW0pLCBwdCA9IGgzLmxlbmd0aCA\/IChoM1swXS5kYXRhc2V0Lm9yaWdIdG1sID8gaDNbMF0uZGF0YXNldC5vcmlnSHRtbCA6IGgzLmh0bWwoKSkgOiAnJywgcHRUID0gaDMubGVuZ3RoID8gKGgzWzBdLmRhdGFzZXQub3JpZ0h0bWwgPyAkKCc8ZGl2PicpLmh0bWwoaDNbMF0uZGF0YXNldC5vcmlnSHRtbCkudGV4dCgpIDogaDMudGV4dCgpKSA6ICcnLCBjb3VudENvbW1lbnRzID0gcGFyc2VJbnQoJCgnLmNvdW50LWNvbW1lbnRzJywgdGhpc0NsYXNzLml0ZW0pLnRleHQoKSk7IHZhciB0b2dnbGVDbGFzcyA9IChjb25kaXRpb24sIGVsZW0sIGNscykgPT4gY29uZGl0aW9uID8gZWxlbS5yZW1vdmVDbGFzcyhjbHMpIDogZWxlbS5hZGRDbGFzcyhjbHMpOyB0b2dnbGVDbGFzcyh0aGlzQ2xhc3MuaXRlbS5wcmV2QWxsKCc6bm90KC5hZHMtaXRlbSk6bm90KC5jZGwpOmZpcnN0JykubGVuZ3RoLCAkKCcucHJvZHVjdC1wcmV2OmZpcnN0JywgdGhpc0NsYXNzLnBvcHVwKSwgJ2Rpc2FibGVkJyk7IHRvZ2dsZUNsYXNzKHRoaXNDbGFzcy5pdGVtLm5leHRBbGwoJzpub3QoLmFkcy1pdGVtKTpub3QoLmNkbCk6Zmlyc3QnKS5sZW5ndGgsICQoJy5wcm9kdWN0LW5leHQ6Zmlyc3QnLCB0aGlzQ2xhc3MucG9wdXApLCAnZGlzYWJsZWQnKTsgdmFyIGluZm9IVE1MID0gWydidG4tYWRkLW5vdGUnLCAncHJvZHVjdC1saWtlJywgJ2luZm8gLnNob3BzJywgJ2luZm8gLmRpc2NvdW50LWxpbmsnXSAubWFwKGNscyA9PiAkKGAuJHtjbHN9YCwgdGhpc0NsYXNzLml0ZW0pLmNsb25lKCkud3JhcCgnPGRpdj4nKS5wYXJlbnQoKS5odG1sKCkpLmpvaW4oJycpOyBpbmZvSFRNTCA9ICc8YSBjbGFzcz0iYnRuIGJ0bi1saW5rIGJ0bi1tb2RhbC1jbG9zZSIgaHJlZj0iIj48c3BhbiBjbGFzcz0ibWF0ZXJpYWwtaWNvbnMgbWF0ZXJpYWwtaWNvbnMtYXJyb3dfYmFja19pb3MiPmFycm93X2JhY2tfaW9zPC9zcGFuPjxzcGFuIGNsYXNzPSJtYXRlcmlhbC1pY29ucyBtYXRlcmlhbC1pY29ucy1jbG9zZSI+Y2xvc2U8L3NwYW4+PC9hPicgKyBpbmZvSFRNTDsgaW5mb0hUTUwgPSBpbmZvSFRNTC5yZXBsYWNlKC9wcm9kdWN0LWxpa2UvZywgJ3Byb2R1Y3QtbGlrZSBwcm9kdWN0LWxpa2UtcG9wdXAnKTsgaW5mb0hUTUwgPSBpbmZvSFRNTC5yZXBsYWNlKC9idG4tYWRkLW5vdGUvZywgJ2J0bi1hZGQtbm90ZSBidG4tYWRkLW5vdGUtcG9wdXAnKTsgJCgnLmluZm8tcG9wdXA6Zmlyc3QnLCB0aGlzQ2xhc3MucG9wdXApLmh0bWwoaW5mb0hUTUwpOyAkKCcuaW5mby1wb3B1cDpmaXJzdCAuZGlzY291bnQtbGluaycsIHRoaXNDbGFzcy5wb3B1cCkuYXBwZW5kKCAnIDxzcGFuIGNsYXNzPSInICsgJCgnLmRpc2NvdW50LWRheXMnLHRoaXNDbGFzcy5pdGVtKS5hdHRyKCdjbGFzcycpLnJlcGxhY2UoJ2Rpc2NvdW50LWRheXMnLCdkaXNjb3VudC1kYXlzLWlubGluZScpICsgJyI+JyArICQoJy5kaXNjb3VudC1kYXlzJyx0aGlzQ2xhc3MuaXRlbSkuaHRtbCgpICsgJzwvc3Bhbj4nICk7IHZhciBub3RBbGxBZGRyID0gJCgnLm5vdC1hbGwtYWRkcmVzc2VzJywgdGhpc0NsYXNzLml0ZW0pOyBpZiAobm90QWxsQWRkci5sZW5ndGgpIHsgJCgnLm5vdC1hbGwtYWRkcmVzc2VzOmZpcnN0JywgdGhpc0NsYXNzLnBvcHVwKS5odG1sKG5vdEFsbEFkZHIuY2xvbmUoKS53cmFwKCc8cD4nKS5wYXJlbnQoKS5odG1sKCkpOyB9ICQoJy5wb3B1cC1pbWc6Zmlyc3QnLCB0aGlzQ2xhc3MucG9wdXApLmF0dHIoeyBzcmM6IGltZy5hdHRyKCdzcmMnKSwgYWx0OiBwdFQsICdkYXRhLXdpZHRoJzogaW1nLmF0dHIoJ2RhdGEtZncnKSwgJ2RhdGEtaGVpZ2h0JzogaW1nLmF0dHIoJ2RhdGEtZmgnKSB9KTsgY29uc29sZS5sb2coJ2ltYWdlIHNyYyBjaGFuZ2VkJyk7ICQoJy5wcm9kdWN0LXRpdGxlOmZpcnN0JywgdGhpc0NsYXNzLnBvcHVwKS5odG1sKHB0KTsgdmFyIGNvbW1lbnRzID0gbmV3IENvbW1lbnRzKCQoJy5hZGQtY29tbWVudC1mb3JtJywgdGhpc0NsYXNzLnBvcHVwKSk7IGNvbW1lbnRzLnVwZGF0ZSh0cnVlKTsgJCgnLnBvcHVwLWNvdW50LWNvbW1lbnRzOmZpcnN0JywgdGhpc0NsYXNzLnBvcHVwKS50ZXh0KGNvdW50Q29tbWVudHMpOyAkKCcucHJvZHVjdC1wcmljZXM6Zmlyc3QnLCB0aGlzQ2xhc3MucG9wdXApLmh0bWwoJycpLmh0bWwoJCgnLnByb2R1Y3QtcHJpY2VzJyx0aGlzQ2xhc3MuaXRlbSkuaHRtbCgpKTsgJCgnLnByb2R1Y3QtYWN0aW9uczpmaXJzdCcsIHRoaXNDbGFzcy5wb3B1cCkuaHRtbCgnJykuaHRtbCgkKCcuYnRuLWFkZC10by1jYXJ0Jyx0aGlzQ2xhc3MuaXRlbSkuY2xvbmUoKS53cmFwKCc8cD4nKS5wYXJlbnQoKS5odG1sKCkpOyB0aGlzQ2xhc3Muc2V0Q2RsKCk7IHRoaXNDbGFzcy5sb2FkTGFyZ2VJbWFnZSgpOyAgdmFyIGh0bWwgPSAnPGRpdiBjbGFzcz0icm93Ij48ZGl2IGNsYXNzPSJjb2wtc20tMTIiPjxkaXYgY2xhc3M9InBhbmVsIj4nOyBodG1sICs9ICc8aDM+0J\/QvtGF0L7QttC40LUg0YLQvtCy0LDRgNGLPC9oMz4nOyBodG1sICs9ICc8ZGl2IGNsYXNzPSJkaXNjb3VudHMgc2ltaWxhci1wcm9kdWN0cy1saXN0IHR3by1jb2xzIiBkYXRhLW9mZnNldD0iMCIgZGF0YS1pdGVtd2lkdGg9IjMzOCI+JzsgaHRtbCArPSAnPC9kaXY+JzsgaHRtbCArPSAnPC9kaXY+PC9kaXY+PC9kaXY+JzsgJCgnIycgKyB0aGlzQ2xhc3Muc3BzSWQpLmh0bWwoaHRtbCk7IHZhciBwbCA9IG5ldyBQcm9kdWN0c0xvYWRlcih7IGM6ICQoYC5wcm9kdWN0W2RhdGEtaWQ9IiR7dGhpc0NsYXNzLml0ZW1JZH0iXSAuc2ltaWxhci1wcm9kdWN0cy1saXN0YCkuYXR0cignZGF0YS1jaXR5X2lkJywgZGNvcmVjbmcuY2l0eUlkKSwgdTogYC9hcGl2My9wcm9kdWN0cy8ke3RoaXNDbGFzcy5pdGVtSWR9L3NpbWlsYXIvYCB9KTsgdGhpc0NsYXNzLnNlbmRQcm9kdWN0Vmlld3MoKTsgfTsgdGhpc0NsYXNzLnNldENkbCA9IGZ1bmN0aW9uKCl7IHZhciBkaXNjb3VudHNDb250YWluZXIgPSAkKCcuZGlzY291bnRzOm5vdCguc2ltaWxhci1wcm9kdWN0cy1saXN0KScpOyAkKCcucG9wdXAtY2RsIC50JywgdGhpc0NsYXNzLnBvcHVwKS50ZXh0KGRpc2NvdW50c0NvbnRhaW5lci5hdHRyKCdkYXRhLXQnKSk7IHZhciBzdGFydEN1cnJQcm9kdWN0SW5kZXggPSBwYXJzZUludChkaXNjb3VudHNDb250YWluZXIuYXR0cignZGF0YS1tYXhwZXJwYWdlJykpICogKHBhcnNlSW50KGRpc2NvdW50c0NvbnRhaW5lci5hdHRyKCdkYXRhLWN1cnJtYXhwYWdlJykpIC0gMSk7ICQoJy5wb3B1cC1jZGwgLmMnLCB0aGlzQ2xhc3MucG9wdXApLnRleHQoJCgnLml0ZW1bZGF0YS1pZD0iJyArIHRoaXNDbGFzcy5pdGVtSWQgKyAnIl0nLGRpc2NvdW50c0NvbnRhaW5lcikgLmluZGV4KCcuZGlzY291bnRzOm5vdCguc2ltaWxhci1wcm9kdWN0cy1saXN0KSAuaXRlbTpub3QoLmFkcy1pdGVtKTpub3QoLmNkbCknKSArIDEgKyBzdGFydEN1cnJQcm9kdWN0SW5kZXgpOyB9OyB0aGlzQ2xhc3MubG9hZExhcmdlSW1hZ2UgPSBmdW5jdGlvbigpeyBjb25zb2xlLmxvZygnbG9hZExhcmdlSW1hZ2UnKTsgdmFyIGltZ1dyYXBwZXIgPSAkKCcuaW1hZ2UnLHRoaXNDbGFzcy5wb3B1cCk7IHZhciBpbWcgPSAkKCdpbWcnLGltZ1dyYXBwZXIpOyB0aGlzQ2xhc3MubG9hZExhcmdlSW1hZ2VYSFIgPSBBcGkuZ2V0KCcvYXBpdjMvcHJvZHVjdHMvJyArIHRoaXNDbGFzcy5pdGVtSWQgKyAnLycsIHsgZmllbGRzOiAnaWQscGNhdGVnb3JpZXMsaW1hZ2VmdWxsLGFkZHJlc3Nlc19pbWFnZSxwaG9uZSxleHRlcm5hbHVybCxwcmljZWJlZm9yZSxwcmljZWFmdGVyLGRpc2NvdW50LGRpc2NvdW50X3R5cGUnICsgKChkY29yZWNuZy5lbmFibGVQcm9kdWN0c1F1YW50aXR5KSA\/ICcscXVhbnRpdHkscXVhbnRpdHlfdW5pdCcgOiAnJykgfSwgZnVuY3Rpb24ocmVzcG9uc2UpeyBjb25zb2xlLmxvZygncHJvZHVjdHMgZGF0YSBsb2FkZWQnKTsgaWYgKHJlc3BvbnNlLmVycm9yKSB7IH0gZWxzZSB7IGlmICh0eXBlb2YgcmVzcG9uc2UucHJvZHVjdCA9PSAndW5kZWZpbmVkJykgeyB9IGVsc2UgeyB0aGlzQ2xhc3MuaW1nT2JqID0gbmV3IEltYWdlKCk7IHRoaXNDbGFzcy5pbWdPYmoub25sb2FkID0gZnVuY3Rpb24gKCkgeyB2YXIgaGlkZGVtSW1nID0gaW1nLmNsb25lKCk7IGhpZGRlbUltZy5jc3MoeyAncG9zaXRpb24nOiAnYWJzb2x1dGUnLCAnbGVmdCc6IDAsICd0b3AnOiAwLCAnei1pbmRleCc6IDEgfSk7IGhpZGRlbUltZy5hdHRyKCdzcmMnLCB0aGlzLnNyYyk7IGhpZGRlbUltZy5hdHRyKCdkYXRhLXdpZHRoJywgaW1nLmF0dHIoJ2RhdGEtZncnKSk7IGhpZGRlbUltZy5hdHRyKCdkYXRhLWhlaWdodCcsIGltZy5hdHRyKCdkYXRhLWZoJykpOyBpbWdXcmFwcGVyLmFwcGVuZChoaWRkZW1JbWcpOyBoaWRkZW1JbWcuYXR0cignc3R5bGUnLCAnJyk7IGlmIChwYXJzZUludChpbWcuaGVpZ2h0KCkpID4gMjApIHsgaGlkZGVtSW1nLmF0dHIoJ3N0eWxlJyxpbWcuYXR0cignc3R5bGUnKSk7IGhpZGRlbUltZy5oZWlnaHQoaW1nLmhlaWdodCgpKTsgfSBpbWcucmVtb3ZlKCk7IHZhciBlbmxhcmdlZEltZyA9ICQoJy5lbmxhcmdlZC1wcm9kdWN0IGltZycsIGltZ1dyYXBwZXIpOyBpZiAoZW5sYXJnZWRJbWcubGVuZ3RoKSB7IGVubGFyZ2VkSW1nLmF0dHIoJ3NyYycsIGhpZGRlbUltZy5hdHRyKCdzcmMnKSk7IH0gaW1nV3JhcHBlci5yZW1vdmVDbGFzcygnaW1hZ2UtbG9hZGluZycpOyBjb25zb2xlLmxvZygnbGFyZ2UgaW1hZ2UgbG9hZGVkJyk7IH07IHRoaXNDbGFzcy5pbWdPYmouc3JjID0gcmVzcG9uc2UucHJvZHVjdC5pbWFnZWZ1bGwuc3JjOyB9IH0gfSk7IH07IHRoaXNDbGFzcy5zZW5kUHJvZHVjdFZpZXdzID0gZnVuY3Rpb24oKXsgQXBpLnBvc3QoJy9hcGl2My9wcm9kdWN0dmlld3MvJywge3Byb2R1Y3RfaWQ6IHRoaXNDbGFzcy5pdGVtSWR9LGZ1bmN0aW9uKHJlc3BvbnNlKXsgY29uc29sZS5sb2coJ3Byb2R1Y3R2aWV3cyBjb21wbGV0ZWQnKTsgY29uc29sZS5sb2cocmVzcG9uc2UpOyB9KTsgfTsgdGhpc0NsYXNzLnNob3cgPSBmdW5jdGlvbigpeyAkKCdCT0RZJykuYWRkQ2xhc3MoJ21vZGFsLW9wZW4nKTsgdGhpc0NsYXNzLnByb2R1Y3R2aWV3c0ludCA9IHNldEludGVydmFsKHRoaXNDbGFzcy5zZW5kUHJvZHVjdFZpZXdzLDEwMTAwKTsgJCgnLmJ0bi1hZGQtbm90ZScpLnBvcG92ZXIoJ2Rlc3Ryb3knKTsgdGhpc0NsYXNzLnBvcHVwLmNzcygnb3BhY2l0eScsMCk7IHRoaXNDbGFzcy5wb3B1cC5hZGRDbGFzcygnYWN0aXZlJyk7IHZhciBpbWcgPSAkKCcjcHJvZHVjdC1vdmVydmlldyAucG9wdXAtaW1nJyk7IHZhciB0YWJQYW5lID0gJCgnI3Byb2R1Y3Qtb3ZlcnZpZXcnKTsgdmFyIHdpbmRvd0hlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKTsgdmFyIG1heFdpZHRoID0gdGFiUGFuZS53aWR0aCgpOyB2YXIgaW1hZ2VSYXRpbyA9IGltZy5hdHRyKCdkYXRhLXdpZHRoJykgLyBpbWcuYXR0cignZGF0YS1oZWlnaHQnKTsgaWYgKCQod2luZG93KS53aWR0aCgpID4gNjAwKSB7IHZhciBuZXdIZWlnaHQgPSBpbWcuYXR0cignZGF0YS1oZWlnaHQnKTsgaWYgKG5ld0hlaWdodCA+IDEwMDApIG5ld0hlaWdodCA9IDEwMDA7IHZhciBuZXdXaWR0aCA9IG5ld0hlaWdodCAqIGltYWdlUmF0aW87IGlmIChuZXdXaWR0aCA+IG1heFdpZHRoKSB7IG5ld1dpZHRoID0gbWF4V2lkdGg7IG5ld0hlaWdodCA9IG5ld1dpZHRoIC8gaW1hZ2VSYXRpbzsgfSB9IGVsc2UgeyB2YXIgbmV3SGVpZ2h0ID0gd2luZG93SGVpZ2h0ICogMC43OyB2YXIgbmV3V2lkdGggPSBuZXdIZWlnaHQgKiBpbWFnZVJhdGlvOyBpZiAobmV3V2lkdGggPiBtYXhXaWR0aCkgeyBuZXdXaWR0aCA9IG1heFdpZHRoOyBuZXdIZWlnaHQgPSBuZXdXaWR0aCAvIGltYWdlUmF0aW87IH0gfSBpbWcuY3NzKHsgaGVpZ2h0OiBuZXdIZWlnaHQgKyAncHgnLCB3aWR0aDogbmV3V2lkdGggKyAncHgnIH0pOyB0aGlzQ2xhc3MucG9wdXAuY3NzKCdvcGFjaXR5JywxKTsgaWYgKHRoaXNDbGFzcy5lbCkgeyB2YXIgZGlzYWJsZXB1c2hzdGF0ZSA9IHRoaXNDbGFzcy5lbC5hdHRyKCdkaXNhYmxlcHVzaHN0YXRlJyk7IGlmICghZGlzYWJsZXB1c2hzdGF0ZSkgeyB2YXIgaGlzdG9yeURhdGEgPSB7fTsgaGlzdG9yeURhdGEuY2xhc3NOYW1lID0gdGhpc0NsYXNzLmVsLmF0dHIoJ2NsYXNzJyk7IGhpc3RvcnlEYXRhLnByb2R1Y3RJZCA9IHRoaXNDbGFzcy5pdGVtSWQ7IGhpc3RvcnlEYXRhLnNjcm9sbFRvcCA9ICQod2luZG93KS5zY3JvbGxUb3AoKTsgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKGhpc3RvcnlEYXRhLCBkZWNvZGVVUklDb21wb25lbnQodGhpc0NsYXNzLml0ZW0uYXR0cignZGF0YS1wcm9kdWN0dGl0bGUnKSksIHRoaXNDbGFzcy51cmwpOyAkKCdbcmVsPWNhbm9uaWNhbF0nKS5hdHRyKCdocmVmJyx0aGlzQ2xhc3MudXJsKTsgfSBlbHNlIHsgdGhpc0NsYXNzLmVsLmF0dHIoJ2Rpc2FibGVwdXNoc3RhdGUnLCcnKTsgfSB9IGlmIChkY29yZWNuZy5jb21tZW50c2d1ZXN0ICYmICQuY29va2llKCdkaXNjb3VudHN1c2VybmFtZScpKSB7ICQoJy5hZGQtY29tbWVudC1mb3JtIFtuYW1lPSJ1c2VybmFtZSJdJykudmFsKCQuY29va2llKCdkaXNjb3VudHN1c2VybmFtZScpKTsgfSB9OyB0aGlzQ2xhc3MuaGlkZSA9IGZ1bmN0aW9uKCl7IHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwgJycsIGRjb3JlY25nLm9yaWdpbmFsU3RhdGUpOyBBcGkucG9zdCgnL2FwaXYzL3Byb2R1Y3R2aWV3cy8nLCB7cHJvZHVjdF9pZDogdGhpc0NsYXNzLml0ZW1JZH0pOyAkKCdCT0RZJykucmVtb3ZlQ2xhc3MoJ21vZGFsLW9wZW4nKTsgdGhpc0NsYXNzLnBvcHVwLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsgaWYgKG15bm90ZXNMaXN0cykgeyBteW5vdGVzTGlzdHMuaGlkZU1vZGFsQ3JlYXRlTmV3TGlzdEZvcm0oKTsgbXlub3Rlc0xpc3RzLmhpZGVMaXN0c0Nob29zZXIoKTsgfSAkKCdbcmVsPWNhbm9uaWNhbF0nKS5hdHRyKCdocmVmJyxkY29yZWNuZy5vcmlnaW5hbFN0YXRlKTsgdGhpc0NsYXNzLmRlc3Ryb3koKTsgfTsgdGhpc0NsYXNzLm9uQ2xvc2VDbGljayA9IGZ1bmN0aW9uKGUpeyB0aGlzQ2xhc3MuaGlkZSgpOyBpZiAodHlwZW9mIGUgIT0gJ3VuZGVmaW5lZCcpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyBlLnN0b3BQcm9wYWdhdGlvbigpOyB9IH07IGlmICh0aGlzQ2xhc3MuZWwpIHsgdGhpc0NsYXNzLnVybCA9ICQodGhpc0NsYXNzLmVsKS5hdHRyKCdocmVmJyk7IHRoaXNDbGFzcy5pdGVtID0gJCh0aGlzQ2xhc3MuZWwpLnBhcmVudHMoJy5pdGVtJyk7IHRoaXNDbGFzcy5kaXNjb3VudHMgPSB0aGlzQ2xhc3MuaXRlbS5wYXJlbnRzKCcuZGlzY291bnRzJyk7IHRoaXNDbGFzcy5pdGVtSWQgPSB0aGlzQ2xhc3MuaXRlbS5hdHRyKCdkYXRhLWlkJyk7IH0gZWxzZSB7IHRoaXNDbGFzcy5pdGVtSWQgPSAkKCcucHJvZHVjdFtkYXRhLWlkXScpLmF0dHIoJ2RhdGEtaWQnKTsgfSB0aGlzQ2xhc3MucG9wdXBTZWxlY3RvcklkID0gJ3Byb2R1Y3QtcG9wdXAnOyB0aGlzQ2xhc3Mub3ZlcnZpZXdUYWJTZWxlY3RvcklkID0gJ3Byb2R1Y3Qtb3ZlcnZpZXcnOyB0aGlzQ2xhc3Mud2hlcmVidXlUYWJTZWxlY3RvcklkID0gJ3Byb2R1Y3Qtd2hlcmVidXknOyB0aGlzQ2xhc3Muc3BzSWQgPSAncHJvZHVjdC1zaW1pbGFyJzsgdGhpc0NsYXNzLnNob3BzbWFwU2VsZWN0b3JJZCA9ICdzaG9wc21hcCc7IHRoaXNDbGFzcy5zaG9wc21hcEFkZHJlc3Nlc0NvbnRhaW5lclNlbGVjdG9yID0gJyNzaG9wc2FkZHJlc3Nlcyc7IHRoaXNDbGFzcy5zaG9wc21hcEFkZHJlc3Nlc1NlbGVjdG9yID0gdGhpc0NsYXNzLnNob3BzbWFwQWRkcmVzc2VzQ29udGFpbmVyU2VsZWN0b3IgKyAnIC5hZGRyZXNzLWxpbmsnOyB0aGlzQ2xhc3MucG9wdXAgPSAkKCcjJyArIHRoaXNDbGFzcy5wb3B1cFNlbGVjdG9ySWQpOyB0aGlzQ2xhc3MucG9wdXAuYXR0cignZGF0YS1pZCcsIHRoaXNDbGFzcy5pdGVtSWQpOyB0aGlzQ2xhc3MucG9wdXAuZGF0YSgncG9wdXAnLHRoaXNDbGFzcyk7IGlmICh0aGlzQ2xhc3MuZWwpIHsgdGhpc0NsYXNzLmNyZWF0ZVBvcHVwKCk7IHRoaXNDbGFzcy5jbG9zZUJ0biA9ICQoJy5idG4tbW9kYWwtY2xvc2UnLHRoaXNDbGFzcy5wb3B1cCk7IHRoaXNDbGFzcy5jbG9zZUJ0bi5vZmYoJ2NsaWNrLm9uQ2xvc2VDbGljaycpLm9uKCdjbGljay5vbkNsb3NlQ2xpY2snLHRoaXNDbGFzcy5vbkNsb3NlQ2xpY2spOyB9ICAkKCdCT0RZJykub2ZmKCdjbGljay53aGVyZWJ1eVRhYlNlbGVjdG9ySWQnKS5vbignY2xpY2sud2hlcmVidXlUYWJTZWxlY3RvcklkJywnW2hyZWZePSIjJyArIHRoaXNDbGFzcy53aGVyZWJ1eVRhYlNlbGVjdG9ySWQgKyAnIl0nLGZ1bmN0aW9uKGUpeyBjb25zb2xlLmxvZygnY2xpY2sud2hlcmVidXlUYWJTZWxlY3RvcklkJyk7IGNvbnNvbGUubG9nKCAnZGNvcmVjbmcubWFwc1NjcmlwdFVybDogJyArIGRjb3JlY25nLm1hcHNTY3JpcHRVcmwgKTsgJCh0aGlzKS50YWIoJ3Nob3cnKTsgdmFyIGFkZHJlc3Nlc0FscmVhZHlMb2FkZWQgPSAkKCcjJyArIHRoaXNDbGFzcy53aGVyZWJ1eVRhYlNlbGVjdG9ySWQpLmF0dHIoJ2xvYWRlZCcpOyBpZiAoYWRkcmVzc2VzQWxyZWFkeUxvYWRlZCkgeyBpZiAobWFwU2V0TWFya2VyT2JqZWN0ID09IGZhbHNlICYmIGRjb3JlY25nLm1hcHNTY3JpcHRVcmwgIT0gJycpIHsgJC5nZXRTY3JpcHQoZGNvcmVjbmcubWFwc1NjcmlwdFVybCxpbml0aWFsaXplTWFwU2V0TWFya2VyKTsgfSBlbHNlIHsgd2luZG93LmluaXRpYWxpemVNYXBTZXRNYXJrZXIoKTsgfSB9IGVsc2UgeyBpZiAoZGNvcmVjbmcubWFwc1NjcmlwdFVybCAhPSAnJykgeyAkKCcjJyArIHRoaXNDbGFzcy53aGVyZWJ1eVRhYlNlbGVjdG9ySWQpIC5odG1sKCc8ZGl2IGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9ImNvbC1zbS0xMiI+PGRpdiBjbGFzcz0ic2hvcHNtYXAtY29udGFpbmVyIj48ZGl2IGNsYXNzPSJzaG9wc21hcCIgaWQ9InNob3BzbWFwIj48L2Rpdj48ZGl2IGNsYXNzPSJzaG9wc2FkZHJlc3NlcyIgaWQ9InNob3BzYWRkcmVzc2VzIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTsgfSBlbHNlIHsgJCgnIycgKyB0aGlzQ2xhc3Mud2hlcmVidXlUYWJTZWxlY3RvcklkKSAuaHRtbCgnPGRpdiBjbGFzcz0icm93Ij48ZGl2IGNsYXNzPSJjb2wtc20tMTIiPjxkaXYgY2xhc3M9InNob3BzbWFwLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0ic2hvcHNhZGRyZXNzZXMgc2hvcHNhZGRyZXNzZXMtbGlzdCIgaWQ9InNob3BzYWRkcmVzc2VzIj48L2Rpdj48L2Rpdj48L2Rpdj4nKTsgfSBBcGkuZ2V0KCcvYXBpL3Byb2R1Y3RzLycgKyB0aGlzQ2xhc3MuaXRlbUlkICsgJy9hZGRyZXNzZXMvP2NpdHlfaWQ9JyArIGRjb3JlY25nLmNpdHlJZCArICcmYWxsPTEnLCB7IH0sIGZ1bmN0aW9uKHJlc3BvbnNlKXsgY29uc29sZS5sb2cocmVzcG9uc2UpOyBpZiAocmVzcG9uc2UuZXJyb3IpIHsgfSBlbHNlIHsgdmFyIGFkZHJlc3Nlc0hUTUwgPSAnJzsgaWYgKHJlc3BvbnNlLnRvdGFsQ291bnQgPiAwKSB7IGlmIChyZXNwb25zZS50b3RhbENvdW50ID4gMykgeyBhZGRyZXNzZXNIVE1MICs9ICc8Zm9ybSByb2xlPSJmb3JtIj4nOyBhZGRyZXNzZXNIVE1MICs9ICcgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+JzsgYWRkcmVzc2VzSFRNTCArPSAnIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIGlucHV0LXNtIHNlYXJjaC1hZGRyZXNzLWlucHV0IiBwbGFjZWhvbGRlcj0i0J\/QvtC40YHQuiDQsNC00YDQtdGB0LAiIC8+JzsgYWRkcmVzc2VzSFRNTCArPSAnIDwvZGl2Pic7IGFkZHJlc3Nlc0hUTUwgKz0gJzwvZm9ybT4nOyB9IGFkZHJlc3Nlc0hUTUwgKz0gJzxkaXYgY2xhc3M9Imxpc3QtZ3JvdXAiPic7IGlmIChkY29yZWNuZy5tYXBzU2NyaXB0VXJsICE9ICcnKSB7IGZvciAodmFyIGtleSBpbiByZXNwb25zZS5hZGRyZXNzZXMpIHsgdmFyIGFkZHJlc3NPYmogPSByZXNwb25zZS5hZGRyZXNzZXNba2V5XTsgdmFyIGRpdkNsYXNzID0gJ2xpc3QtZ3JvdXAtaXRlbSBhZGRyZXNzLWxpbmsnOyB2YXIgdGl0bGUgPSBhZGRyZXNzT2JqLmFkZHJlc3M7IGlmIChhZGRyZXNzT2JqLmFjdGl2ZSA9PSAwKSB7IGRpdkNsYXNzICs9ICcgZGlzYWJsZWQyJzsgdGl0bGUgKz0gJyAo0JDQutGG0LjRjyDQvdC1INC00LXQudGB0YLQstGD0LXRgiDQv9C+INGN0YLQvtC80YMg0LDQtNGA0LXRgdGDKSc7IH0gYWRkcmVzc2VzSFRNTCArPSAnPGEgdGl0bGU9IicgKyB0aXRsZSArICciIGNsYXNzPSInICsgZGl2Q2xhc3MgKyAnIiBkYXRhLWxvZ289IicgKyBhZGRyZXNzT2JqLmltYWdlbWFwICsgJyIgZGF0YS1uYW1lPSInICsgYWRkcmVzc09iai5zaG9wbmFtZSArICciIGRhdGEtaWQ9IicgKyBhZGRyZXNzT2JqLmlkICsgJyIgZGF0YS1sYXQ9IicgKyBhZGRyZXNzT2JqLmxhdCArICciIGRhdGEtbG5nPSInICsgYWRkcmVzc09iai5sbmcgKyAnIj4nOyBhZGRyZXNzZXNIVE1MICs9ICcgPGltZyBzcmM9IicgKyBhZGRyZXNzT2JqLmltYWdlNTAgKyAnIiBhbHQ9IiIgLz4nOyBhZGRyZXNzZXNIVE1MICs9ICcgPHNwYW4gY2xhc3M9ImFkZHJlc3MiPic7IGFkZHJlc3Nlc0hUTUwgKz0gYWRkcmVzc09iai5hZGRyZXNzOyBhZGRyZXNzZXNIVE1MICs9ICcgPC9zcGFuPic7IGFkZHJlc3Nlc0hUTUwgKz0gJyA8c3BhbiBjbGFzcz0iZGlzdGFuY2UiPjwvc3Bhbj4nOyBhZGRyZXNzZXNIVE1MICs9ICc8L2E+JzsgYWRkcmVzc2VzSFRNTCArPSAnPGRpdiBjbGFzcz0iaW5mby13aW5kb3ctY29udGVudCBoaWRkZW4iPic7IGFkZHJlc3Nlc0hUTUwgKz0gJyA8cD48aW1nIHNyYz0iJyArIGFkZHJlc3NPYmouaW1hZ2UxMDAgKyAnIiBhbHQ9IiIgLz48L3A+JzsgYWRkcmVzc2VzSFRNTCArPSAnIDxwPicgKyBhZGRyZXNzT2JqLmFkZHJlc3MgKyAnPC9wPic7IGlmIChhZGRyZXNzT2JqLmFjdGl2ZSA9PSAwKSB7IGFkZHJlc3Nlc0hUTUwgKz0gJzxwIGNsYXNzPSJub3QtYWN0aXZlLXRleHQiPtCQ0LrRhtC40Y8g0L3QtSDQtNC10LnRgdGC0LLRg9C10YIg0L\/QviDRjdGC0L7QvNGDINCw0LTRgNC10YHRgzwvcD4nOyB9IGFkZHJlc3Nlc0hUTUwgKz0gJyA8cD4nICsgYWRkcmVzc09iai5pbmZvLnJlcGxhY2UoLyg\/OlxyXG58XHJ8XG4pL2csIjxici8+IikgKyAnPC9wPic7IHZhciBkYXlzID0gWydtb25kYXknLCd0dWVzZGF5Jywnd2VkbmVzZGF5JywndGh1cnNkYXknLCdmcmlkYXknLCdzYXR1cmRheScsJ3N1bmRheSddOyB2YXIgZ3JvdXBlZERheXMgPSBbXTsgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXlzLmxlbmd0aDsgaSsrKSB7IHZhciBkYXlLZXkgPSBkYXlzW2ldOyBpZiAoIWdyb3VwZWREYXlzW2FkZHJlc3NPYmpbZGF5S2V5XV0pIHsgZ3JvdXBlZERheXNbYWRkcmVzc09ialtkYXlLZXldXSA9IFtdOyB9IGdyb3VwZWREYXlzW2FkZHJlc3NPYmpbZGF5S2V5XV0ucHVzaChkYXlLZXkpOyB9IGZvciAodmFyIHRpbWUgaW4gZ3JvdXBlZERheXMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cGVkRGF5c1t0aW1lXS5sZW5ndGg7IGkrKykgeyB2YXIgZGF5S2V5ID0gZ3JvdXBlZERheXNbdGltZV1baV07IGFkZHJlc3Nlc0hUTUwgKz0gKGkgPT0gMCk\/Jyc6JywnOyBzd2l0Y2goZGF5S2V5KSB7IGNhc2UgJ21vbmRheSc6IGFkZHJlc3Nlc0hUTUwgKz0gItCf0L0iOyBicmVhazsgY2FzZSAndHVlc2RheSc6IGFkZHJlc3Nlc0hUTUwgKz0gItCS0YIiOyBicmVhazsgY2FzZSAnd2VkbmVzZGF5JzogYWRkcmVzc2VzSFRNTCArPSAi0KHRgCI7IGJyZWFrOyBjYXNlICd0aHVyc2RheSc6IGFkZHJlc3Nlc0hUTUwgKz0gItCn0YIiOyBicmVhazsgY2FzZSAnZnJpZGF5JzogYWRkcmVzc2VzSFRNTCArPSAi0J\/RgiI7IGJyZWFrOyBjYXNlICdzYXR1cmRheSc6IGFkZHJlc3Nlc0hUTUwgKz0gItCh0LEiOyBicmVhazsgY2FzZSAnc3VuZGF5JzogYWRkcmVzc2VzSFRNTCArPSAi0JLRgSI7IGJyZWFrOyBkZWZhdWx0OiBhZGRyZXNzZXNIVE1MICs9ICIiOyB9IH0gaWYgKHRpbWUgPT0gJzAnKSB7IGFkZHJlc3Nlc0hUTUwgKz0gIjog0JLRi9GF0L7QtNC90L7QuSI7IH0gZWxzZSBpZiAodGltZSA9PSAnMDA6MDAtMDA6MDAnIHx8IHRpbWUgPT0gJzA6MDAtMDowMCcpIHsgYWRkcmVzc2VzSFRNTCArPSAiOiDQmtGA0YPQs9C70L7RgdGD0YLQvtGH0L3QviI7IH0gZWxzZSB7IGFkZHJlc3Nlc0hUTUwgKz0gIjogIiArIHRpbWU7IH0gYWRkcmVzc2VzSFRNTCArPSAnPGJyLz4nOyB9IGFkZHJlc3Nlc0hUTUwgKz0gJzxwIGNsYXNzPSJub3RlIj4qINGA0LDQt9C80LXRidC10L3QuNC1INC90LXQutC+0YLQvtGA0YvRhSDQvNCw0LPQsNC30LjQvdC+0LIg0L3QsCDQutCw0YDRgtC1INC80L7QttC10YIg0L7RgtC70LjRh9Cw0YLRjNGB0Y8g0L7RgiDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3QvtCz0L48L3A+JzsgYWRkcmVzc2VzSFRNTCArPSAnPC9kaXY+JzsgfSB9IGVsc2UgeyBmb3IgKHZhciBrZXkgaW4gcmVzcG9uc2UuYWRkcmVzc2VzKSB7IHZhciBhZGRyZXNzT2JqID0gcmVzcG9uc2UuYWRkcmVzc2VzW2tleV07IHZhciBkaXZDbGFzcyA9ICdsaXN0LWdyb3VwLWl0ZW0gYWRkcmVzcy1saW5rJywgdGl0bGUgPSBhZGRyZXNzT2JqLmFkZHJlc3MsIG1hcFVybCA9ICdodHRwczovL3lhbmRleC5ydS9tYXBzLz9sbD0nICsgYWRkcmVzc09iai5sbmcgKyAnLCcgKyBhZGRyZXNzT2JqLmxhdCArICcmej0yMCZwdD0nICsgYWRkcmVzc09iai5sbmcgKyAnLCcgKyBhZGRyZXNzT2JqLmxhdCArICcscG0ycmRtJzsgaWYgKGFkZHJlc3NPYmouYWN0aXZlID09IDApIHsgZGl2Q2xhc3MgKz0gJyBkaXNhYmxlZDInOyB0aXRsZSArPSAnICjQkNC60YbQuNGPINC90LUg0LTQtdC50YHRgtCy0YPQtdGCINC\/0L4g0Y3RgtC+0LzRgyDQsNC00YDQtdGB0YMpJzsgfSBhZGRyZXNzZXNIVE1MICs9ICc8YSB0aXRsZT0iJyArIHRpdGxlICsgJyIgY2xhc3M9IicgKyBkaXZDbGFzcyArICciIGhyZWY9IicgKyBtYXBVcmwgKyAnIiB0YXJnZXQ9Il9ibGFuayI+JzsgYWRkcmVzc2VzSFRNTCArPSAnIDxpbWcgc3JjPSInICsgYWRkcmVzc09iai5pbWFnZTUwICsgJyIgYWx0PSIiIC8+JzsgYWRkcmVzc2VzSFRNTCArPSAnIDxzcGFuIGNsYXNzPSJhZGRyZXNzIj4nOyBhZGRyZXNzZXNIVE1MICs9IGFkZHJlc3NPYmouYWRkcmVzczsgaWYgKGFkZHJlc3NPYmouYWN0aXZlID09IDApIHsgYWRkcmVzc2VzSFRNTCArPSAnIDxzbWFsbD4o0LDQutGG0LjRjyDQvdC1INC00LXQudGB0YLQstGD0LXRgiDQv9C+INGN0YLQvtC80YMg0LDQtNGA0LXRgdGDKTwvc21hbGw+JzsgfSBhZGRyZXNzZXNIVE1MICs9ICcgPC9zcGFuPic7IGFkZHJlc3Nlc0hUTUwgKz0gJzwvYT4nOyB9IH0gYWRkcmVzc2VzSFRNTCArPSAnPC9kaXY+JzsgfSBlbHNlIHsgYWRkcmVzc2VzSFRNTCArPSAnPHAgY2xhc3M9Im5vLWFkZHJlc3NlcyI+0JDQtNGA0LXRgdCwINC90LUg0LfQsNC\/0L7Qu9C90LXQvdGLINC00LvRjyDRjdGC0L7Qs9C+INC80LDQs9Cw0LfQuNC90LA8L3A+JzsgfSAkKHRoaXNDbGFzcy5zaG9wc21hcEFkZHJlc3Nlc0NvbnRhaW5lclNlbGVjdG9yKS5odG1sKGFkZHJlc3Nlc0hUTUwpOyAkKCcjJyArIHRoaXNDbGFzcy53aGVyZWJ1eVRhYlNlbGVjdG9ySWQpLmF0dHIoJ2xvYWRlZCcsJzEnKTsgaWYgKG1hcFNldE1hcmtlck9iamVjdCA9PSBmYWxzZSAmJiBkY29yZWNuZy5tYXBzU2NyaXB0VXJsICE9ICcnKSB7ICQuZ2V0U2NyaXB0KGRjb3JlY25nLm1hcHNTY3JpcHRVcmwsaW5pdGlhbGl6ZU1hcFNldE1hcmtlcik7IH0gZWxzZSB7IHdpbmRvdy5pbml0aWFsaXplTWFwU2V0TWFya2VyKCk7IH0gfSB9KTsgfSB9KTsgaWYgKHRoaXNDbGFzcy5lbCkgeyB0aGlzQ2xhc3MucG9wdXAub2ZmKCdjbGljay5wYW5lbENsaWNrZWQnKS5vbignY2xpY2sucGFuZWxDbGlja2VkJyxmdW5jdGlvbigpeyBjb25zb2xlLmxvZygndGhpc0NsYXNzLnBhbmVsQ2xpY2tlZDogJyArIHRoaXNDbGFzcy5wYW5lbENsaWNrZWQpOyBpZiAoIXRoaXNDbGFzcy5wYW5lbENsaWNrZWQpIHsgY29uc29sZS5sb2coJ3RoaXNDbGFzcy5jbG9zZUJ0bi5jbGljaygpJyk7IHRoaXNDbGFzcy5jbG9zZUJ0bi5jbGljaygpOyB9IHRoaXNDbGFzcy5wYW5lbENsaWNrZWQgPSBmYWxzZTsgfSk7IH0gJCgnLnBhbmVsLC5wcm9kdWN0LXByZXYsLnByb2R1Y3QtbmV4dCcsdGhpc0NsYXNzLnBvcHVwKS5vZmYoJ2NsaWNrLnBhbmVsQ2xpY2tlZDInKS5vbignY2xpY2sucGFuZWxDbGlja2VkMicsZnVuY3Rpb24oZSl7IGNvbnNvbGUubG9nKCdDTElDSyAucGFuZWwsLnByb2R1Y3QtcHJldiwucHJvZHVjdC1uZXh0Jyk7IHRoaXNDbGFzcy5wYW5lbENsaWNrZWQgPSB0cnVlOyB9KTsgdGhpc0NsYXNzLnBvcHVwLnNjcm9sbChmdW5jdGlvbiAoKSB7IH0pOyBpZiAodGhpc0NsYXNzLmVsKSB7ICQoJy5wcm9kdWN0LXByZXYnLHRoaXNDbGFzcy5wb3B1cCkub2ZmKCdjbGljay5wcmV2Jykub24oJ2NsaWNrLnByZXYnLGZ1bmN0aW9uKGUpeyB2YXIgcHJldkl0ZW0gPSB0aGlzQ2xhc3MuaXRlbS5wcmV2QWxsKCc6bm90KC5hZHMtaXRlbSk6bm90KC5jZGwpOmZpcnN0Jyk7IGlmIChwcmV2SXRlbS5sZW5ndGgpIHsgJCgnLmltYWdlLWxpbmsnLHByZXZJdGVtKS5jbGljaygpOyB9IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgfSk7ICQoJy5wcm9kdWN0LW5leHQnLHRoaXNDbGFzcy5wb3B1cCkub2ZmKCdjbGljay5uZXh0Jykub24oJ2NsaWNrLm5leHQnLGZ1bmN0aW9uKGUpeyB2YXIgbmV4dEl0ZW0gPSB0aGlzQ2xhc3MuaXRlbS5uZXh0QWxsKCc6bm90KC5hZHMtaXRlbSk6bm90KC5jZGwpOmZpcnN0Jyk7IGlmIChuZXh0SXRlbS5sZW5ndGgpIHsgY3VyclBvcHVwU2Nyb2xsVG9wID0gdGhpc0NsYXNzLnBvcHVwLnNjcm9sbFRvcCgpOyAkKCcuaW1hZ2UtbGluaycsbmV4dEl0ZW0pLmNsaWNrKCk7IH0gaWYgKCF0aGlzQ2xhc3MuaXRlbS5uZXh0QWxsKCc6bm90KC5hZHMtaXRlbSk6bm90KC5jZGwpJykuZXEoMTApLmxlbmd0aCAmJiB0aGlzQ2xhc3MuZGlzY291bnRzLmF0dHIoJ2RhdGEtaGF2ZW5leHRwYWdlJykgPT09ICcxJykgeyB0aGlzQ2xhc3MuZGlzY291bnRzLmRhdGEoJ3BsJykubG5wKCk7IH0gZS5wcmV2ZW50RGVmYXVsdCgpOyBlLnN0b3BQcm9wYWdhdGlvbigpOyB9KTsgdmFyIHN0YXJ0WCA9IDAsIHN0YXJ0WSA9IDAsIGVuZFggPSAwLCBjdXJyZW50RGVnID0gMCwgc3RhcnRUaW1lLCBlbmRUaW1lLCBwb3B1cEltZyA9ICQoJy5wb3B1cC1pbWc6Zmlyc3QnLCB0aGlzQ2xhc3MucG9wdXApLCBzY2FsaW5nID0gZmFsc2U7ICQoJ2JvZHknKS5vZmYoJ3RvdWNoc3RhcnQucG9wdXBJbWcnKS5vbigndG91Y2hzdGFydC5wb3B1cEltZycsIHBvcHVwSW1nLCBmdW5jdGlvbihlKSB7IGlmIChlLm9yaWdpbmFsRXZlbnQudG91Y2hlcy5sZW5ndGggPiAxKSB7IHNjYWxpbmcgPSB0cnVlOyB9IHN0YXJ0WCA9IGUub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLmNsaWVudFg7IHN0YXJ0WSA9IGUub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLmNsaWVudFk7IHN0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOyB9KTsgJCgnQk9EWScpLm9mZigndG91Y2htb3ZlLnBvcHVwSW1nJykub24oJ3RvdWNobW92ZS5wb3B1cEltZycsIHBvcHVwSW1nLCBmdW5jdGlvbihlKSB7IGlmIChzY2FsaW5nKSByZXR1cm47IHZhciBjdXJyZW50UG9wdXAgPSBnZXRWaXNpYmxlUG9wdXBPYmooKTsgaWYgKCFjdXJyZW50UG9wdXApIHJldHVybjsgbGV0IHRvdWNoID0gZS50b3VjaGVzWzBdOyBsZXQgY2hhbmdlID0gc3RhcnRYIC0gdG91Y2guY2xpZW50WDsgZW5kWCA9IGUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WDsgZW5kWSA9IGUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WTsgdmFyIGRpc3RhbmNlTW92ZWRYID0gTWF0aC5hYnMoc3RhcnRYIC0gZW5kWCk7IHZhciBkaXN0YW5jZU1vdmVkWSA9IE1hdGguYWJzKHN0YXJ0WSAtIGVuZFkpOyB2YXIgYW5nbGUgPSBNYXRoLmF0YW4yKGRpc3RhbmNlTW92ZWRZLCBkaXN0YW5jZU1vdmVkWCkgKiAxODAgLyBNYXRoLlBJOyBpZiAoTWF0aC5hYnMoYW5nbGUpIDwgNDUgfHwgTWF0aC5hYnMoYW5nbGUpID4gMTM1KSB7IH0gZWxzZSB7IHJldHVybjsgfSBpZiAoc3RhcnRYID4gZW5kWCkgeyBkaXJlY3Rpb24gPSAibGVmdCI7IH0gZWxzZSB7IGRpcmVjdGlvbiA9ICJyaWdodCI7IH0gcG9wdXBJbWcgPSAkKCcucG9wdXAtaW1nOmZpcnN0JywgY3VycmVudFBvcHVwLnBvcHVwKTsgY3VycmVudERlZyA9IGNoYW5nZSAvIDU7IHBvcHVwSW1nLmNzcygndHJhbnNmb3JtJywgYHJvdGF0ZVkoJHtjdXJyZW50RGVnfWRlZylgKTsgfSk7ICQoJ0JPRFknKS5vZmYoJ3RvdWNoZW5kLnBvcHVwSW1nJykub24oJ3RvdWNoZW5kLnBvcHVwSW1nJywgcG9wdXBJbWcsIGZ1bmN0aW9uKGUpIHsgaWYgKHNjYWxpbmcpIHsgc2NhbGluZyA9IGZhbHNlOyByZXR1cm47IH0gdmFyIGN1cnJlbnRQb3B1cCA9IGdldFZpc2libGVQb3B1cE9iaigpOyBpZiAoIWN1cnJlbnRQb3B1cCkgcmV0dXJuOyBlbmRYID0gZS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRYOyBlbmRZID0gZS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZOyB2YXIgZGlzdGFuY2VNb3ZlZFggPSBNYXRoLmFicyhzdGFydFggLSBlbmRYKTsgdmFyIGRpc3RhbmNlTW92ZWRZID0gTWF0aC5hYnMoc3RhcnRZIC0gZW5kWSk7IGVuZFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsgdmFyIHRpbWVFbGFwc2VkID0gZW5kVGltZSAtIHN0YXJ0VGltZTsgdmFyIHNwZWVkID0gZGlzdGFuY2VNb3ZlZFggLyB0aW1lRWxhcHNlZDsgdmFyIGR1cmF0aW9uID0gMTAwIC8gc3BlZWQ7IGlmIChkdXJhdGlvbiA+IDUwMCkgeyBkdXJhdGlvbiA9IDUwMDsgJCh7ZGVnOiBjdXJyZW50RGVnfSkuYW5pbWF0ZSh7IGRlZzogMCB9LCB7IGR1cmF0aW9uOiBkdXJhdGlvbiwgc3RlcDogZnVuY3Rpb24obm93KSB7IHBvcHVwSW1nLmNzcygndHJhbnNmb3JtJywgYHJvdGF0ZVkoJHtub3d9ZGVnKWApOyB9LCBjb21wbGV0ZTogZnVuY3Rpb24oKSB7IGN1cnJlbnREZWcgPSAwOyB9IH0pOyByZXR1cm47IH0gdmFyIGFuZ2xlID0gTWF0aC5hdGFuMihkaXN0YW5jZU1vdmVkWSwgZGlzdGFuY2VNb3ZlZFgpICogMTgwIC8gTWF0aC5QSTsgaWYgKE1hdGguYWJzKGFuZ2xlKSA8IDQ1IHx8IE1hdGguYWJzKGFuZ2xlKSA+IDEzNSkgeyB9IGVsc2UgeyAkKHtkZWc6IGN1cnJlbnREZWd9KS5hbmltYXRlKHsgZGVnOiAwIH0sIHsgZHVyYXRpb246IGR1cmF0aW9uLCBzdGVwOiBmdW5jdGlvbihub3cpIHsgcG9wdXBJbWcuY3NzKCd0cmFuc2Zvcm0nLCBgcm90YXRlWSgke25vd31kZWcpYCk7IH0sIGNvbXBsZXRlOiBmdW5jdGlvbigpIHsgY3VycmVudERlZyA9IDA7IH0gfSk7IHJldHVybjsgfSBsZXQgZGlyZWN0aW9uOyBpZiAoc3RhcnRYID4gZW5kWCkgeyBkaXJlY3Rpb24gPSAibGVmdCI7IGlmICgkKCcucHJvZHVjdC1uZXh0OmZpcnN0JywgY3VycmVudFBvcHVwLnBvcHVwKS5oYXNDbGFzcygnZGlzYWJsZWQnKSkgZGlzdGFuY2VNb3ZlZFggPSA0OTsgfSBlbHNlIHsgZGlyZWN0aW9uID0gInJpZ2h0IjsgaWYgKCQoJy5wcm9kdWN0LXByZXY6Zmlyc3QnLCBjdXJyZW50UG9wdXAucG9wdXApLmhhc0NsYXNzKCdkaXNhYmxlZCcpKSBkaXN0YW5jZU1vdmVkWCA9IDQ5OyB9IGNvbnNvbGUubG9nKCdkaXJlY3Rpb246ICcgKyBkaXJlY3Rpb24pOyBsZXQgaW5pdGlhbERlZyA9IGN1cnJlbnREZWc7IGxldCBoYWxmRGVnID0gKGRpcmVjdGlvbiA9PT0gImxlZnQiID8gOTAgOiAtOTApOyBsZXQgZmluYWxEZWcgPSAoZGlyZWN0aW9uID09PSAibGVmdCIgPyAxODAgOiAtMTgwKTsgaWYgKGRpc3RhbmNlTW92ZWRYIDwgNTApIHsgJCh7ZGVnOiBpbml0aWFsRGVnfSkuYW5pbWF0ZSh7IGRlZzogMCB9LCB7IGR1cmF0aW9uOiBkdXJhdGlvbiwgc3RlcDogZnVuY3Rpb24obm93KSB7IHBvcHVwSW1nLmNzcygndHJhbnNmb3JtJywgYHJvdGF0ZVkoJHtub3d9ZGVnKWApOyB9LCBjb21wbGV0ZTogZnVuY3Rpb24oKSB7IGN1cnJlbnREZWcgPSAwOyB9IH0pOyByZXR1cm47IH0gJCh7ZGVnOiBpbml0aWFsRGVnfSkuYW5pbWF0ZSh7IGRlZzogaGFsZkRlZyB9LCB7IGR1cmF0aW9uOiBkdXJhdGlvbiwgc3RlcDogZnVuY3Rpb24obm93KSB7IHBvcHVwSW1nLmNzcygndHJhbnNmb3JtJywgYHJvdGF0ZVkoJHtub3d9ZGVnKWApOyB9LCBjb21wbGV0ZTogZnVuY3Rpb24oKSB7IGlmIChkaXJlY3Rpb24gPT09ICJsZWZ0IikgeyAkKCcucHJvZHVjdC1uZXh0JywgdGhpc0NsYXNzLnBvcHVwKS5jbGljaygpOyB9IGVsc2UgeyAkKCcucHJvZHVjdC1wcmV2JywgdGhpc0NsYXNzLnBvcHVwKS5jbGljaygpOyB9ICQoe2RlZzogaGFsZkRlZ30pLmFuaW1hdGUoeyBkZWc6IDAgfSwgeyBkdXJhdGlvbjogZHVyYXRpb24sIHN0ZXA6IGZ1bmN0aW9uKG5vdykgeyB2YXIgY3VycmVudFBvcHVwID0gZ2V0VmlzaWJsZVBvcHVwT2JqKCk7ICQoJy5wb3B1cC1pbWc6Zmlyc3QnLCBjdXJyZW50UG9wdXAucG9wdXApLmNzcygndHJhbnNmb3JtJywgYHJvdGF0ZVkoJHtub3d9ZGVnKWApOyB9LCBjb21wbGV0ZTogZnVuY3Rpb24oKSB7IHZhciBjdXJyZW50UG9wdXAgPSBnZXRWaXNpYmxlUG9wdXBPYmooKTsgJCgnLnBvcHVwLWltZzpmaXJzdCcsIGN1cnJlbnRQb3B1cC5wb3B1cCkuY3NzKCd0cmFuc2Zvcm0nLCAncm90YXRlWSgwZGVnKScpOyAkKCcucG9wdXAtaW1nOmZpcnN0JywgY3VycmVudFBvcHVwLnBvcHVwKS5jc3MoJ2RlZycsIDApOyBjdXJyZW50RGVnID0gMDsgfSB9KTsgfSB9KTsgfSk7IH0gfTsgdmFyIG1hcFNldE1hcmtlck9iamVjdCA9IGZhbHNlOyB3aW5kb3cuaW5pdGlhbGl6ZU1hcFNldE1hcmtlciA9IGZ1bmN0aW9uKCl7IG1hcFNldE1hcmtlck9iamVjdCA9IG5ldyBtYXBTZXRNYXJrZXIoKTsgbWFwU2V0TWFya2VyT2JqZWN0LmNlbnRlckxhdCA9IGRjb3JlY25nLmNpdHlMYXQ7IG1hcFNldE1hcmtlck9iamVjdC5jZW50ZXJMbmcgPSBkY29yZWNuZy5jaXR5TG5nOyB2YXIgY3VycmVudFBvcHVwID0gZ2V0VmlzaWJsZVBvcHVwT2JqKCk7IGlmIChjdXJyZW50UG9wdXApIHsgbWFwU2V0TWFya2VyT2JqZWN0LmluaXQoY3VycmVudFBvcHVwLnNob3BzbWFwU2VsZWN0b3JJZCwgY3VycmVudFBvcHVwLnNob3BzbWFwQWRkcmVzc2VzU2VsZWN0b3IpOyB9IH07ICQoJ0JPRFknKS5rZXlkb3duKGZ1bmN0aW9uKGUpIHsgaWYoZS5rZXlDb2RlID09IDI3KSB7IGlmICgkKCcuY29tbWVudC10ZXh0W2NvbnRlbnRlZGl0YWJsZV0nKS5pcygnOmZvY3VzJykpIHsgfSBlbHNlIHsgdmFyIGN1cnJlbnRQb3B1cCA9IGdldFZpc2libGVQb3B1cE9iaigpOyBpZiAoY3VycmVudFBvcHVwKSB7IGlmICgkKCdCT0RZJykuaGFzQ2xhc3MoJ3BvcHVwLWZ1bGxzY3JlZW5tYXAnKSkgeyBjdXJyZW50UG9wdXAuaGlkZUZ1bGxzY3JlZW5NYXAoKTsgfSBlbHNlIHsgY3VycmVudFBvcHVwLm9uQ2xvc2VDbGljaygpOyB9IH0gfSB9IGVsc2UgaWYoZS5rZXlDb2RlID09IDM3KSB7IGlmICgkKCcuY29tbWVudC10ZXh0W2NvbnRlbnRlZGl0YWJsZV0nKS5pcygnOmZvY3VzJykpIHsgfSBlbHNlIHsgdmFyIGN1cnJlbnRQb3B1cCA9IGdldFZpc2libGVQb3B1cE9iaigpOyBpZiAoY3VycmVudFBvcHVwKSB7IGlmICghJCgnLmFkZC1jb21tZW50LWZvcm0gdGV4dGFyZWEsLmFkZC1jb21tZW50LWZvcm0gaW5wdXQnLCBjdXJyZW50UG9wdXAucG9wdXApLmlzKCc6Zm9jdXMnKSkgeyAkKCcucHJvZHVjdC1wcmV2JywgY3VycmVudFBvcHVwLnBvcHVwKS5jbGljaygpOyB9IH0gfSB9IGVsc2UgaWYoZS5rZXlDb2RlID09IDM5KSB7IGlmICgkKCcuY29tbWVudC10ZXh0W2NvbnRlbnRlZGl0YWJsZV0nKS5pcygnOmZvY3VzJykpIHsgfSBlbHNlIHsgdmFyIGN1cnJlbnRQb3B1cCA9IGdldFZpc2libGVQb3B1cE9iaigpOyBpZiAoY3VycmVudFBvcHVwKSB7IGlmICghJCgnLmFkZC1jb21tZW50LWZvcm0gdGV4dGFyZWEsLmFkZC1jb21tZW50LWZvcm0gaW5wdXQnLCBjdXJyZW50UG9wdXAucG9wdXApLmlzKCc6Zm9jdXMnKSkgeyAkKCcucHJvZHVjdC1uZXh0JywgY3VycmVudFBvcHVwLnBvcHVwKS5jbGljaygpOyB9IH0gfSB9IH0pOyAkKCdCT0RZJykuYXBwZW5kKCc8ZGl2IGNsYXNzPSJtb2RhbC1iYWNrZHJvcCBwcm9kdWN0LW1vZGFsLWJhY2tkcm9wIj48L2Rpdj4nKTsgJCgnQk9EWScpLm9uKCdjbGljaycsJy5pbWFnZS1saW5rLC5idG4td2hlcmUtYnV5LC5pdGVtIC5jb21tZW50LWxpbmssIC5ub3QtYWxsLWFkZHJlc3NlcyBhJyxmdW5jdGlvbihlKXsgaWYgKCQodGhpcykucGFyZW50cygnLnNpbWlsYXItcHJvZHVjdHMtbGlzdCcpLmxlbmd0aCkgeyB3aW5kb3cub3BlbigkKHRoaXMpLmF0dHIoJ2hyZWYnKSk7IHJldHVybiBmYWxzZTsgfSB2YXIgcG9wdXAgPSBnZXRWaXNpYmxlUG9wdXBPYmooKTsgdmFyIG5vdEFsbEFkZHJlc3NlcyA9ICQodGhpcykucGFyZW50cygnLm5vdC1hbGwtYWRkcmVzc2VzJyk7IGlmIChub3RBbGxBZGRyZXNzZXMubGVuZ3RoKSB7IGlmIChwb3B1cCkgeyAkKCdbaHJlZl49IiMnICsgcG9wdXAud2hlcmVidXlUYWJTZWxlY3RvcklkICsgJyJdJykuY2xpY2soKTsgcmV0dXJuIGZhbHNlOyB9IH0gaWYgKHBvcHVwKSB7IHBvcHVwLmRlc3Ryb3koKTsgfSBlbHNlIHsgdmFyIGhpc3RvcnlEYXRhID0ge307IGhpc3RvcnlEYXRhLnNjcm9sbFRvcCA9ICQod2luZG93KS5zY3JvbGxUb3AoKTsgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKGhpc3RvcnlEYXRhLCAkKGRvY3VtZW50KS5maW5kKCJ0aXRsZSIpLnRleHQoKSwgd2luZG93LmxvY2F0aW9uLmhyZWYpOyB9IHZhciBpdGVtT3JQcm9kdWN0ID0gJCh0aGlzKS5wYXJlbnRzKCdbZGF0YS1pZF0nKTsgdmFyIGl0ZW1JZCA9IGl0ZW1PclByb2R1Y3QuYXR0cignZGF0YS1pZCcpOyB2YXIgaXRlbSA9ICQoJy5pdGVtW2RhdGEtaWQ9IicgKyBpdGVtSWQgKyAnIl0nKTsgdmFyIHBvcHVwID0gbmV3IFByb2R1Y3RQb3B1cCh0aGlzKTsgcG9wdXAuc2hvdygpOyBpZiAoY3VyclBvcHVwU2Nyb2xsVG9wICE9PSBmYWxzZSkgeyBwb3B1cC5wb3B1cC5zY3JvbGxUb3AoY3VyclBvcHVwU2Nyb2xsVG9wKTsgY3VyclBvcHVwU2Nyb2xsVG9wID0gZmFsc2U7IH0gdmFyIGFjdGl2ZVRhYiA9IGZhbHNlOyB2YXIgaHJlZlNsaWNlcyA9ICQodGhpcykuYXR0cignaHJlZicpLnNwbGl0KCcjJyk7IGlmIChocmVmU2xpY2VzLmxlbmd0aCA+IDEpIHsgYWN0aXZlVGFiID0gaHJlZlNsaWNlc1sxXTsgfSBpZiAoYWN0aXZlVGFiKSB7ICQoJ1tocmVmPSIjJyArIGFjdGl2ZVRhYiArICciXScscG9wdXAucG9wdXApLnRyaWdnZXIoJ2NsaWNrJyk7IH0gZWxzZSB7ICQoJ1tocmVmPSIjJyArIHBvcHVwLm92ZXJ2aWV3VGFiU2VsZWN0b3JJZCArICciXScscG9wdXAucG9wdXApLnRyaWdnZXIoJ2NsaWNrJyk7IH0gZS5wcmV2ZW50RGVmYXVsdCgpOyBlLnN0b3BQcm9wYWdhdGlvbigpOyB9KTsg");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("aWYgKGRjb3JlY25nLmlzVG91Y2hEZXZpY2UpIHsgJCgnQk9EWScpLm9uKCdjbGljaycsICcucHJvZHVjdCAuaW1hZ2UsLnByb2R1Y3QgLmFkZHJlc3Nlcy1pbWFnZScsIGZ1bmN0aW9uIChlKSB7IHZhciBpbWcgPSAkKCdpbWcnLHRoaXMpOyB2YXIgc3JjID0gaW1nLmF0dHIoJ3NyYycpOyBzcmMgPSBzcmMucmVwbGFjZSgnLTMzNicsJycpOyBpZiAoZGNvcmVjbmcuaXNJU08pIHsgd2luZG93Lm9wZW4oc3JjLCdfc2VsZicpOyB9IGVsc2UgeyB3aW5kb3cub3BlbihzcmMpOyB9IH0pOyB9IGVsc2UgeyB2YXIgbW91c2VvdmVyID0gZmFsc2U7IHZhciBlbmxhcmdlRW5hYmxlZCA9IGZhbHNlOyBmdW5jdGlvbiBzZXRFbmxhcmdlckltYWdlUG9zaXRpb24oZWwsIGUpIHsgdmFyIHcgPSAkKCcuZW5sYXJnZWQtcHJvZHVjdCcpLndpZHRoKCk7IHZhciBvZmZzZXQgPSAkKGVsKS5vZmZzZXQoKTsgdmFyIHkgPSBlLnBhZ2VZIC0gb2Zmc2V0LnRvcCAtICh3LzIpOyB2YXIgeCA9IGUucGFnZVggLSBvZmZzZXQubGVmdCAtICh3LzIpOyAkKCcuZW5sYXJnZWQtcHJvZHVjdCcpLmNzcygndG9wJywgeSk7ICQoJy5lbmxhcmdlZC1wcm9kdWN0JykuY3NzKCdsZWZ0JywgeCk7IHZhciBpbWcgPSAkKCdpbWcnLCBlbCk7IHZhciBpbWdGdWxsV2lkdGggPSBpbWcuYXR0cignZGF0YS13aWR0aCcpOyB2YXIgaW1nRnVsbEhlaWdodCA9IGltZy5hdHRyKCdkYXRhLWhlaWdodCcpOyB2YXIgaW1nV2lkdGggPSBpbWcud2lkdGgoKTsgdmFyIGltZ0hlaWdodCA9IGltZy5oZWlnaHQoKTsgdmFyIG9mZnNldCA9ICQoZWwpLm9mZnNldCgpOyB2YXIgeSA9IGUucGFnZVkgLSBvZmZzZXQudG9wOyB2YXIgeCA9IGUucGFnZVggLSBvZmZzZXQubGVmdDsgdmFyIGNvZWZmID0gaW1nV2lkdGggLyBpbWdGdWxsV2lkdGg7IHggPSB4IC8gY29lZmYgLSAody8yKTsgeSA9IHkgLyBjb2VmZiAtICh3LzIpOyAkKCcuZW5sYXJnZWQtcHJvZHVjdCBpbWcnKS5jc3MoJ3RvcCcsIC15KTsgJCgnLmVubGFyZ2VkLXByb2R1Y3QgaW1nJykuY3NzKCdsZWZ0JywgLXgpOyB9OyAkKCdCT0RZJykub24oJ2NsaWNrJywgJy5wcm9kdWN0IC5pbWFnZSwucHJvZHVjdCAuYWRkcmVzc2VzLWltYWdlJywgZnVuY3Rpb24gKGUpIHsgJCgnLmVubGFyZ2VkLXByb2R1Y3QnKS5yZW1vdmUoKTsgaWYgKGVubGFyZ2VFbmFibGVkKSB7IGVubGFyZ2VFbmFibGVkID0gZmFsc2U7ICQodGhpcykucmVtb3ZlQ2xhc3MoJ2VubGFyZ2UtYWN0aXZlJyk7IH0gZWxzZSB7IGVubGFyZ2VFbmFibGVkID0gdHJ1ZTsgJCh0aGlzKS5hZGRDbGFzcygnZW5sYXJnZS1hY3RpdmUnKTsgdmFyIHggPSBlLnBhZ2VYIC0gdGhpcy5vZmZzZXRMZWZ0ICsgMjAwOyB2YXIgeSA9IGUucGFnZVkgLSB0aGlzLm9mZnNldFRvcDsgaWYgKHkgPD0gMTApIHsgeSA9IDEwOyB9IGlmICh4IDw9IDEwKSB7IHggPSAxMDsgfSB2YXIgaW1nID0gJCgnaW1nJywgdGhpcyk7IHZhciBpbWFnZVNyYyA9IGltZy5hdHRyKCdzcmMnKTsgdmFyIHcgPSBpbWcuYXR0cignZGF0YS13aWR0aCcpOyB2YXIgaCA9IGltZy5hdHRyKCdkYXRhLWhlaWdodCcpOyB2YXIgaHRtbCA9ICcnOyBodG1sICs9ICc8ZGl2IGNsYXNzPSJlbmxhcmdlZC1wcm9kdWN0IiBzdHlsZT0idG9wOicgKyB5ICsgJ3B4O2xlZnQ6JyArIHggKyAncHg7Ij4nOyBodG1sICs9ICc8aW1nIHdpZHRoPSInICsgdyArICciIGhlaWdodD0iJyArIGggKyAnIiBzcmM9IicgKyBpbWFnZVNyYyArICciIGFsdD0iIiAvPic7IGh0bWwgKz0gJzwvZGl2Pic7ICQodGhpcykuYXBwZW5kKGh0bWwpOyBzZXRFbmxhcmdlckltYWdlUG9zaXRpb24odGhpcywgZSk7IH0gfSk7ICQoJ0JPRFknKS5vbignbW91c2VvdmVyJywgJy5wcm9kdWN0IC5pbWFnZSwucHJvZHVjdCAuYWRkcmVzc2VzLWltYWdlJywgZnVuY3Rpb24gKGUpIHsgbW91c2VvdmVyID0gdHJ1ZTsgaWYgKGVubGFyZ2VFbmFibGVkKSB7ICQoJy5lbmxhcmdlZC1wcm9kdWN0Jykuc2hvdygpOyB9IH0pOyAkKCdCT0RZJykub24oJ21vdXNlbGVhdmUnLCAnLnByb2R1Y3QgLmltYWdlLC5wcm9kdWN0IC5hZGRyZXNzZXMtaW1hZ2UnLCBmdW5jdGlvbiAoZSkgeyBtb3VzZW92ZXIgPSBmYWxzZTsgaWYgKGVubGFyZ2VFbmFibGVkKSB7ICQoJy5lbmxhcmdlZC1wcm9kdWN0JykuaGlkZSgpOyB9IH0pOyAkKCdCT0RZJykub24oJ21vdXNlbW92ZScsICcucHJvZHVjdCAuaW1hZ2UsLnByb2R1Y3QgLmFkZHJlc3Nlcy1pbWFnZScsIGZ1bmN0aW9uIChlKSB7IGlmIChlbmxhcmdlRW5hYmxlZCAmJiBtb3VzZW92ZXIpIHsgc2V0RW5sYXJnZXJJbWFnZVBvc2l0aW9uKHRoaXMsIGUpOyB9IH0pOyB9IA==");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("JCgnQk9EWScpLmNsaWNrKGZ1bmN0aW9uKCl7JCgnLnByb2R1Y3QtbGlrZSAucGx1cywucHJvZHVjdC1saWtlIC5taW51cycpLnBvcG92ZXIoJ2Rlc3Ryb3knKTt9KTskKCdCT0RZJykub24oJ2NsaWNrJywnLnByb2R1Y3QtbGlrZSAucGx1cywucHJvZHVjdC1saWtlIC5taW51cycsZnVuY3Rpb24oZSl7aWYgKGRjb3JlY25nLnVzZXJJZCA9PSAwKXtyZXR1cm47fWlmICgkKHRoaXMpLnBhcmVudHMoJy5pdGVtJykubGVuZ3RoKXt2YXIgcHJvZHVjdElkID0gJCh0aGlzKS5wYXJlbnRzKCcuaXRlbScpLmF0dHIoJ2RhdGEtaWQnKTt9IGVsc2Uge3ZhciBwcm9kdWN0SWQgPSAkKHRoaXMpLnBhcmVudHMoJy5wcm9kdWN0JykuYXR0cignZGF0YS1pZCcpO312YXIgY291bnRXcmFwcGVyID0gJCh0aGlzKS5wYXJlbnRzKCcucHJvZHVjdC1saWtlOmZpcnN0Jyk7dmFyIGFjdGl2ZUNsYXNzQnRuID0gJCgnLmFjdGl2ZScsY291bnRXcmFwcGVyKTt2YXIgYWN0aXZlQ2xhc3MgPSAnJztpZiAoYWN0aXZlQ2xhc3NCdG4ubGVuZ3RoKXtpZiAoYWN0aXZlQ2xhc3NCdG4uaGFzQ2xhc3MoJ3BsdXMnKSl7YWN0aXZlQ2xhc3MgPSAncGx1cyc7fSBlbHNlIHthY3RpdmVDbGFzcyA9ICdtaW51cyc7fX1pZiAoJCh0aGlzKS5oYXNDbGFzcygnYWN0aXZlJykpeyQodGhpcykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO30gZWxzZSB7JCgnLmFjdGl2ZScsY291bnRXcmFwcGVyKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7JCh0aGlzKS5hZGRDbGFzcygnYWN0aXZlJyk7fXZhciB1cmwgPSAnL2FwaXYyL3Byb2R1Y3RzLycgKyBwcm9kdWN0SWQ7aWYgKCQodGhpcykuaGFzQ2xhc3MoJ21pbnVzJykpe3VybCArPSAnL2Rpc2xpa2UvJzt9IGVsc2Uge3VybCArPSAnL2xpa2UvJzt9QXBpLnBvc3QodXJsLCB7fSwgZnVuY3Rpb24ocmVzcG9uc2Upe2lmIChyZXNwb25zZS5lcnJvcil7ICQoJy5hY3RpdmUnLGNvdW50V3JhcHBlcikucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO2lmIChhY3RpdmVDbGFzcyl7JCgnLicgKyBhY3RpdmVDbGFzcyxjb3VudFdyYXBwZXIpLmFkZENsYXNzKCdhY3RpdmUnKTt9c2hvd01lc3NhZ2VQb3B1cCgnZXJyb3InLCfQn9GA0L7QuNC30L7RiNC70LAg0L7RiNC40LHQutCwOiAnICsgcmVzcG9uc2UuZXJyb3JfZGVzY3JpcHRpb24pO30gZWxzZSB7dmFyIGNvdW50UGx1cyA9IHJlc3BvbnNlLmNvdW50UGx1czt2YXIgY291bnRNaW51cyA9IHJlc3BvbnNlLmNvdW50TWludXM7JCgnLmNvdW50LWxpa2VzLXBsdXMnLGNvdW50V3JhcHBlcikuaHRtbCggKChjb3VudFBsdXMgPiAwKT8nKycgKyBjb3VudFBsdXM6MCkpOyQoJy5jb3VudC1saWtlcy1taW51cycsY291bnRXcmFwcGVyKS5odG1sKCAoKGNvdW50TWludXMgPiAwKT8nLScgKyBjb3VudE1pbnVzOjApKTskKCcuaXRlbVtkYXRhLWlkPSInICsgcHJvZHVjdElkICsgJyJdIC5wcm9kdWN0LWxpa2UsLnByb2R1Y3RbZGF0YS1pZD0iJyArIHByb2R1Y3RJZCArICciXSAucHJvZHVjdC1saWtlJykuZWFjaChmdW5jdGlvbigpeyQodGhpcykuaHRtbCgkKGNvdW50V3JhcHBlcikuaHRtbCgpKTskKHRoaXMpLnJlbW92ZUNsYXNzKCdnb29kLXByb2R1Y3QgYmFkLXByb2R1Y3QnKTtpZiAoY291bnRQbHVzID4gY291bnRNaW51cyl7JCh0aGlzKS5hZGRDbGFzcygnZ29vZC1wcm9kdWN0Jyk7fWlmIChjb3VudFBsdXMgPCBjb3VudE1pbnVzKXskKHRoaXMpLmFkZENsYXNzKCdiYWQtcHJvZHVjdCcpO319KTskKGNvdW50V3JhcHBlcikucmVtb3ZlQ2xhc3MoJ2dvb2QtcHJvZHVjdCBiYWQtcHJvZHVjdCcpO2lmIChjb3VudFBsdXMgPiBjb3VudE1pbnVzKXskKGNvdW50V3JhcHBlcikuYWRkQ2xhc3MoJ2dvb2QtcHJvZHVjdCcpO31pZiAoY291bnRQbHVzIDwgY291bnRNaW51cyl7JChjb3VudFdyYXBwZXIpLmFkZENsYXNzKCdiYWQtcHJvZHVjdCcpO319fSk7ZS5wcmV2ZW50RGVmYXVsdCgpO30pOyQoJ0JPRFknKS5vbignY2xpY2snLCcuY29tbWVudC1saWtlIC5wbHVzLC5jb21tZW50LWxpa2UgLm1pbnVzJyxmdW5jdGlvbihlKXtpZiAoZGNvcmVjbmcudXNlcklkID09IDApe3JldHVybjt9dmFyIGNvbW1lbnRJdGVtID0gJCh0aGlzKS5wYXJlbnRzKCcubGlzdC1ncm91cC1pdGVtOmZpcnN0Jyk7dmFyIGNvbW1lbnRJZCA9IGNvbW1lbnRJdGVtLmF0dHIoJ2RhdGEtaWQnKTt2YXIgY291bnRXcmFwcGVyID0gJCh0aGlzKS5wYXJlbnRzKCcuY29tbWVudC1saWtlOmZpcnN0Jyk7dmFyIGFjdGl2ZUNsYXNzQnRuID0gJCgnLmFjdGl2ZScsY291bnRXcmFwcGVyKTt2YXIgYWN0aXZlQ2xhc3MgPSAnJztpZiAoYWN0aXZlQ2xhc3NCdG4ubGVuZ3RoKXtpZiAoYWN0aXZlQ2xhc3NCdG4uaGFzQ2xhc3MoJ3BsdXMnKSl7YWN0aXZlQ2xhc3MgPSAncGx1cyc7fSBlbHNlIHthY3RpdmVDbGFzcyA9ICdtaW51cyc7fX1pZiAoJCh0aGlzKS5oYXNDbGFzcygnYWN0aXZlJykpeyQodGhpcykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO30gZWxzZSB7JCgnLmFjdGl2ZScsY291bnRXcmFwcGVyKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7JCh0aGlzKS5hZGRDbGFzcygnYWN0aXZlJyk7fXZhciB1cmwgPSAnL2FwaXYyL2NvbW1lbnRzLycgKyBjb21tZW50SWQ7aWYgKCQodGhpcykuaGFzQ2xhc3MoJ21pbnVzJykpe3VybCArPSAnL2Rpc2xpa2UvJzt9IGVsc2Uge3VybCArPSAnL2xpa2UvJzt9QXBpLnBvc3QodXJsLCB7fSwgZnVuY3Rpb24ocmVzcG9uc2Upe2lmIChyZXNwb25zZS5lcnJvcil7ICQoJy5hY3RpdmUnLGNvdW50V3JhcHBlcikucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO2lmIChhY3RpdmVDbGFzcyl7JCgnLicgKyBhY3RpdmVDbGFzcyxjb3VudFdyYXBwZXIpLmFkZENsYXNzKCdhY3RpdmUnKTt9c2hvd01lc3NhZ2VQb3B1cCgnZXJyb3InLCfQn9GA0L7QuNC30L7RiNC70LAg0L7RiNC40LHQutCwOiAnICsgcmVzcG9uc2UuZXJyb3JfZGVzY3JpcHRpb24pO30gZWxzZSB7dmFyIGNvdW50UGx1cyA9IHJlc3BvbnNlLmNvdW50UGx1czt2YXIgY291bnRNaW51cyA9IHJlc3BvbnNlLmNvdW50TWludXM7JCgnLmNvdW50LWxpa2VzLXBsdXMnLGNvdW50V3JhcHBlcikuaHRtbCggKChjb3VudFBsdXMgPiAwKT8nKycgKyBjb3VudFBsdXM6MCkpOyQoJy5jb3VudC1saWtlcy1taW51cycsY291bnRXcmFwcGVyKS5odG1sKCAoKGNvdW50TWludXMgPiAwKT8nLScgKyBjb3VudE1pbnVzOjApKTskKCcubGlrZXMtc3VtJyxjb3VudFdyYXBwZXIpLmh0bWwoICgoKChjb3VudFBsdXMgLSBjb3VudE1pbnVzKT49IDApPycrJzonJykrIChjb3VudFBsdXMgLSBjb3VudE1pbnVzKSkpO2NvbW1lbnRJdGVtLnJlbW92ZUNsYXNzKCdnb29kLXByb2R1Y3QgYmFkLXByb2R1Y3QgYmFkLXByb2R1Y3QyIGJhZC1wcm9kdWN0MycpO3ZhciBjb21tZW50c09iaiA9IG5ldyBDb21tZW50cyhjb3VudFdyYXBwZXIucGFyZW50cygnLmFkZC1jb21tZW50LWZvcm0nKSk7dmFyIGRpdkNsYXNzID0gY29tbWVudHNPYmouZ2V0TGlrZXNDbGFzc05hbWUoY291bnRQbHVzLGNvdW50TWludXMpO2NvbW1lbnRJdGVtLmFkZENsYXNzKGRpdkNsYXNzKTt9fSk7ZS5wcmV2ZW50RGVmYXVsdCgpO30pO3dpbmRvdy51cGRhdGVEYXRhID0gZnVuY3Rpb24gKCl7aWYgKCFkY29yZWNuZy5icm93c2VyVGFiQWN0aXZlKXtyZXR1cm47fXZhciBjb21tZW50Rm9ybSA9ICQoJy5wcm9kdWN0LWNvbW1lbnRzOnZpc2libGUgLmFkZC1jb21tZW50LWZvcm06dmlzaWJsZScpO2lmIChjb21tZW50Rm9ybS5sZW5ndGgpe3ZhciBjb21tZW50cyA9IG5ldyBDb21tZW50cyhjb21tZW50Rm9ybSk7Y29tbWVudHMudXBkYXRlKCk7fXZhciBwcm9kdWN0SWRzID0gJCgnLml0ZW0nKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gJCh0aGlzKS5hdHRyKCJkYXRhLWlkIik7fSkuZ2V0KCk7aWYgKCFwcm9kdWN0SWRzLmxlbmd0aCl7cHJvZHVjdElkcyA9ICQoJy5wcm9kdWN0JykubWFwKGZ1bmN0aW9uKCl7cmV0dXJuICQodGhpcykuYXR0cigiZGF0YS1pZCIpO30pLmdldCgpO31pZiAocHJvZHVjdElkcy5sZW5ndGgpeyB2YXIgdXJsID0gJy9wcm9kdWN0L2FqYXhnZXRuZXdkYXRhLyc7dmFyIGRhdGEgPSB7aXNfYWpheDogMSxwcm9kdWN0X2lkczogcHJvZHVjdElkc307dXJsICs9ICc\/aXNfYWpheD0xJzt1cmwgKz0gJyZwcm9kdWN0X2lkcz0nICsgcHJvZHVjdElkczskLmFqYXgoe3R5cGU6ICJHRVQiLHVybDogdXJsfSkuZG9uZShmdW5jdGlvbiAocmVzcG9uc2Upe3Jlc3BvbnNlT2JqZWN0ID0galF1ZXJ5LnBhcnNlSlNPTihyZXNwb25zZSk7aWYgKHJlc3BvbnNlT2JqZWN0LnJlc3VsdHMpe3ZhciBpID0gMDtmdW5jdGlvbiBsb2FkUHJvZHVjdERhdGEocmVzdWx0cyl7c2V0VGltZW91dChmdW5jdGlvbiAoKXt2YXIgbHAgPSByZXN1bHRzW2ldLmxwO3ZhciBsbSA9IHJlc3VsdHNbaV0ubG07dmFyIGNvdW50UGx1cyA9IHJlc3VsdHNbaV0uY3A7dmFyIGNvdW50TWludXMgPSByZXN1bHRzW2ldLmNtOyQoJy5pdGVtW2RhdGEtaWQ9IicgKyByZXN1bHRzW2ldLmlkICsgJyJdLC5wcm9kdWN0W2RhdGEtaWQ9IicgKyByZXN1bHRzW2ldLmlkICsgJyJdJykuZWFjaChmdW5jdGlvbiAoKXskKCcucHJvZHVjdC1saWtlIC5jb3VudC1saWtlcy1wbHVzJywgdGhpcykuaHRtbCgoKGNvdW50UGx1cyA+IDApPyAnKycgKyBjb3VudFBsdXMgOiAwKSk7JCgnLnByb2R1Y3QtbGlrZSAuY291bnQtbGlrZXMtbWludXMnLCB0aGlzKS5odG1sKCgoY291bnRNaW51cyA+IDApPyAnLScgKyBjb3VudE1pbnVzIDogMCkpOyQoJy5wcm9kdWN0LWxpa2UnLCB0aGlzKS5yZW1vdmVDbGFzcygnZ29vZC1wcm9kdWN0IGJhZC1wcm9kdWN0Jyk7aWYgKGNvdW50UGx1cyA+IGNvdW50TWludXMpeyQoJy5wcm9kdWN0LWxpa2UnLCB0aGlzKS5hZGRDbGFzcygnZ29vZC1wcm9kdWN0Jyk7fWlmIChjb3VudFBsdXMgPCBjb3VudE1pbnVzKXskKCcucHJvZHVjdC1saWtlJywgdGhpcykuYWRkQ2xhc3MoJ2JhZC1wcm9kdWN0Jyk7fWlmIChscCA9PSAxKXskKCcucHJvZHVjdC1saWtlIC5wbHVzJywgdGhpcykuYWRkQ2xhc3MoJ2FjdGl2ZScpO31pZiAobG0gPT0gMSl7JCgnLnByb2R1Y3QtbGlrZSAubWludXMnLCB0aGlzKS5hZGRDbGFzcygnYWN0aXZlJyk7fWlmICh0eXBlb2YgcmVzdWx0c1tpXS5jb21tZW50cyAhPSAndW5kZWZpbmVkJyl7JCgnLmNvdW50LWNvbW1lbnRzJywgdGhpcykuaHRtbChyZXN1bHRzW2ldLmNvbW1lbnRzKTt9aWYgKHR5cGVvZiByZXN1bHRzW2ldLm1uICE9ICd1bmRlZmluZWQnKXt2YXIgYnRuQWRkTm90ZSA9ICQoJy5idG4tYWRkLW5vdGUnLCB0aGlzKTtpZiAocmVzdWx0c1tpXS5tbiA9PSAwKXtidG5BZGROb3RlLmF0dHIoJ2RhdGEtYmFza2V0JywgJzAnKTtidG5BZGROb3RlLmF0dHIoJ2RhdGEtb3JpZ2luYWwtdGl0bGUnLCAn0JTQvtCx0LDQstC40YLRjCDQsiDQuNC30LHRgNCw0L3QvdC+0LUnKTtidG5BZGROb3RlLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTt9IGVsc2Uge2J0bkFkZE5vdGUuYXR0cignZGF0YS1iYXNrZXQnLCAnMScpO2J0bkFkZE5vdGUuYXR0cignZGF0YS1vcmlnaW5hbC10aXRsZScsICfQo9C00LDQu9C40YLRjCcpO2J0bkFkZE5vdGUuYWRkQ2xhc3MoJ2FjdGl2ZScpO319JCh0aGlzKS5hdHRyKCdkYXRhLWxpa2VzJywgJzEnKTt9KTtpKys7aWYgKGkgPCByZXN1bHRzLmxlbmd0aCl7bG9hZFByb2R1Y3REYXRhKHJlc3VsdHMpO319LCAwKTt9aWYgKHJlc3BvbnNlT2JqZWN0LnJlc3VsdHMubGVuZ3RoKXtsb2FkUHJvZHVjdERhdGEocmVzcG9uc2VPYmplY3QucmVzdWx0cyk7fX19KTt9fTs=");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("ZnVuY3Rpb24gQ29tbWVudHMoZm9ybSkgeyB2YXIgdGhpc0NsYXNzID0gdGhpczsgdGhpc0NsYXNzLmZvcm0gPSBmb3JtOyB0aGlzQ2xhc3MuaXRlbSA9IGZvcm0ucGFyZW50cygnW2RhdGEtc2hvcC1pZF0nKTsgaWYgKCF0aGlzQ2xhc3MuaXRlbS5sZW5ndGgpIHsgdGhpc0NsYXNzLml0ZW0gPSBmb3JtLnBhcmVudHMoJy5wcm9kdWN0W2RhdGEtaWRdJyk7IH0gdGhpc0NsYXNzLml0ZW1JZCA9IHRoaXNDbGFzcy5pdGVtLmF0dHIoJ2RhdGEtaWQnKTsgdGhpc0NsYXNzLnByb2R1Y3RJZCA9IHRoaXNDbGFzcy5pdGVtLmF0dHIoJ2RhdGEtaWQnKTsgdGhpc0NsYXNzLnNob3BJZCA9IHRoaXNDbGFzcy5pdGVtLmF0dHIoJ2RhdGEtc2hvcC1pZCcpOyB0aGlzQ2xhc3MuY29tbWVudHNMaXN0V3JhcHBlciA9ICQoJy5jb21tZW50cy1saXN0Jyx0aGlzQ2xhc3MuaXRlbSk7IHRoaXNDbGFzcy5wYyA9ICQoJy5wcm9kdWN0LWNvbW1lbnRzJyx0aGlzQ2xhc3MuaXRlbSk7IHRoaXNDbGFzcy5jb21tZW50c0Fuc3dlcnMgPSBbXTsgdGhpc0NsYXNzLmxvYWRlZCA9IDA7IHRoaXNDbGFzcy50b3RhbCA9IDA7IHRoaXNDbGFzcy5saW1pdCA9IDEwOyB0aGlzQ2xhc3Mub2Zmc2V0ID0gMDsgdGhpc0NsYXNzLmFkZCA9IGZ1bmN0aW9uKCl7ICQoJy5tZXNzYWdlcycsdGhpc0NsYXNzLmZvcm0pLnJlbW92ZSgpOyB2YXIgY29tbWVudCA9ICQoJ1tuYW1lPSJjb21tZW50Il0nLHRoaXNDbGFzcy5mb3JtKS52YWwoKTsgdmFyIHVzZXJuYW1lRmllbGQgPSAkKCdbbmFtZT11c2VybmFtZV0nLHRoaXNDbGFzcy5mb3JtKTsgdmFyIHBhcmVudEZpZWxkID0gJCgnW25hbWU9cGFyZW50XScsdGhpc0NsYXNzLmZvcm0pOyB2YXIgcmF0aW5nRmllbGQgPSAkKCdbbmFtZT1yYXRpbmddJyx0aGlzQ2xhc3MuZm9ybSk7IHZhciBzaG9wSWRGaWVsZCA9ICQoJ1tuYW1lPXNob3BfaWRdJyx0aGlzQ2xhc3MuZm9ybSk7IHZhciBhZGRyZXNzSWRGaWVsZCA9ICQoJ1tuYW1lPWFkZHJlc3NfaWRdJyx0aGlzQ2xhc3MuZm9ybSk7IHZhciBjb21tZW50RGF0YSA9IHsgY2l0eV9pZDogZGNvcmVjbmcuY2l0eUlkLCBjb21tZW50OiBjb21tZW50IH07IGlmIChkY29yZWNuZy5jb21tZW50c2d1ZXN0KSB7IGNvbW1lbnREYXRhLnVzZXJuYW1lID0gdXNlcm5hbWVGaWVsZC52YWwoKTsgY29tbWVudERhdGEuY29tbWVudHNfaWRzID0gKCQuY29va2llKCdteWNvbW1lbnRzJykpPyQuY29va2llKCdteWNvbW1lbnRzJyk6Jyc7IH0gaWYgKHBhcmVudEZpZWxkLmxlbmd0aCkgeyBjb21tZW50RGF0YS5wYXJlbnQgPSBwYXJlbnRGaWVsZC52YWwoKTsgfSBpZiAocmF0aW5nRmllbGQubGVuZ3RoKSB7IGNvbW1lbnREYXRhLnJhdGluZyA9IHJhdGluZ0ZpZWxkLnZhbCgpOyB9IGlmIChzaG9wSWRGaWVsZC5sZW5ndGgpIHsgY29tbWVudERhdGEuc2hvcF9pZCA9IHNob3BJZEZpZWxkLnZhbCgpOyB9IGlmIChhZGRyZXNzSWRGaWVsZC5sZW5ndGgpIHsgY29tbWVudERhdGEuYWRkcmVzc19pZCA9IGFkZHJlc3NJZEZpZWxkLnZhbCgpOyB9IGlmICh0aGlzQ2xhc3MuaXRlbUlkKSB7IHZhciBhcGlVcmwgPSAnL2FwaXYzL3Byb2R1Y3RzLycgKyB0aGlzQ2xhc3MuaXRlbUlkICsgJy9jb21tZW50cy8nOyB9IGVsc2UgeyB2YXIgYXBpVXJsID0gJy9hcGl2My9zaG9wcy8nICsgdGhpc0NsYXNzLnNob3BJZCArICcvY29tbWVudHMvJzsgfSBBcGkucG9zdChhcGlVcmwsIGNvbW1lbnREYXRhLCBmdW5jdGlvbihyZXNwb25zZSkgeyBpZiAocmVzcG9uc2UuZXJyb3IpIHsgaWYgKHJlc3BvbnNlLmVycm9yID09ICd1bmF1dGhvcml6ZWQnKSB7IH0gZWxzZSB7ICQodGhpc0NsYXNzLmZvcm0pLnByZXBlbmQoJzxkaXYgY2xhc3M9Im1lc3NhZ2VzIj48cCBjbGFzcz0iYWxlcnQtZGFuZ2VyIj4nICsgcmVzcG9uc2UuZXJyb3JfZGVzY3JpcHRpb24gKyAnLiAnICsgKChyZXNwb25zZS5kZXNjcmlwdGlvbl91cmwpPycgPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9IicgKyByZXNwb25zZS5kZXNjcmlwdGlvbl91cmwgKyAnIj7QstC+0LfQvNC+0LbQvdGL0LUg0L\/RgNC40YfQuNC90Ysg0LHQu9C+0LrQuNGA0L7QstC60Lg8L2E+JzonJykgKyAnPC9wPjwvZGl2PicpOyBpZiAodHlwZW9mIHJlc3BvbnNlLm5ld2NvbW1lbnQgIT0gJ3VuZGVmaW5lZCcpIHsgdGhpc0NsYXNzLmFwcGVuZENvbW1lbnQocmVzcG9uc2UubmV3Y29tbWVudCk7ICQodGhpc0NsYXNzLmZvcm0pLmZpbmQoInRleHRhcmVhIikudmFsKCIiKTsgJCgnLm5vLWNvbW1lbnRzJyx0aGlzQ2xhc3MuY29tbWVudHNMaXN0V3JhcHBlcikucmVtb3ZlKCk7IH0gfSB9IGVsc2UgeyB0aGlzQ2xhc3MuYXBwZW5kQ29tbWVudChyZXNwb25zZS5uZXdjb21tZW50KTsgJCh0aGlzQ2xhc3MuZm9ybSkuZmluZCgidGV4dGFyZWEiKS52YWwoIiIpOyBpZiAocmF0aW5nRmllbGQubGVuZ3RoKSB7IHJhdGluZ0ZpZWxkLnZhbCgnJyk7IHZhciByYXRpbmdzV3JhcHBlciA9IHJhdGluZ0ZpZWxkLnBhcmVudHMoJy5yYXRpbmdzLXNlbGVjdGFibGUnKTsgJCgnLnJhdGluZ3Mtc3RhcnMnLHJhdGluZ3NXcmFwcGVyKS5jc3MoJ3dpZHRoJywwKTsgJCgnLnJhdGluZ3Mtc3VtbWFyeScscmF0aW5nc1dyYXBwZXIpLmh0bWwoJycpOyB9IGlmIChhZGRyZXNzSWRGaWVsZC5sZW5ndGgpIHsgdmFyIGJ0bkdyb3VwID0gYWRkcmVzc0lkRmllbGQucGFyZW50cygnLmJ0bi1ncm91cC1zZWFyY2g6Zmlyc3QnKTsgaWYgKCQoJ2xpJyxidG5Hcm91cCkubGVuZ3RoID4gMSkgeyB2YXIgYnV0dG9uID0gJCgnLmJ0bicsIGJ0bkdyb3VwKTsgdmFyIGJ1dHRvblRleHQgPSAkKCcudGV4dCcsIGJ1dHRvbik7IGlmIChidXR0b25UZXh0LmF0dHIoJ2RhdGEtb3JpZ3RleHQnKSkgeyBidXR0b25UZXh0LnRleHQoYnV0dG9uVGV4dC5hdHRyKCdkYXRhLW9yaWd0ZXh0JykpOyB9IGFkZHJlc3NJZEZpZWxkLnZhbCgnJyk7ICQoJ2xpLmFjdGl2ZScsIGJ0bkdyb3VwKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7IH0gfSBpZiAocmVzcG9uc2UubmV3Y29tbWVudC5pc2d1ZXN0KSB7IGlmICh1c2VybmFtZUZpZWxkLnZhbCgpID09ICcnKSB7IHVzZXJuYW1lRmllbGQudmFsKHJlc3BvbnNlLm5ld2NvbW1lbnQudXNlcm5hbWUpOyB9IHZhciBjdXJyZW50VXNlcm5hbWUgPSAoJC5jb29raWUoJ2Rpc2NvdW50c3VzZXJuYW1lJykpPyQuY29va2llKCdkaXNjb3VudHN1c2VybmFtZScpOicnOyBpZiAoY3VycmVudFVzZXJuYW1lICE9IHJlc3BvbnNlLm5ld2NvbW1lbnQudXNlcm5hbWUpIHsgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpOyBkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkgKyAoMzY1KjI0KjYwKjYwKjEwMDApKTsgJC5jb29raWUoJ2Rpc2NvdW50c3VzZXJuYW1lJywgcmVzcG9uc2UubmV3Y29tbWVudC51c2VybmFtZSwge3BhdGg6ICcvJywgZXhwaXJlczogZGF0ZX0pOyAkKCcuYWRkLWNvbW1lbnQtZm9ybSBbbmFtZT0idXNlcm5hbWUiXScpLnZhbChyZXNwb25zZS5uZXdjb21tZW50LnVzZXJuYW1lKTsgfSB2YXIgbXljb21tZW50cyA9ICQuY29va2llKCdteWNvbW1lbnRzJyk7IGlmICghbXljb21tZW50cykgeyBteWNvbW1lbnRzID0gJyc7IH0gbXljb21tZW50cyArPSAobXljb21tZW50cyA9PSAnJyk\/Jyc6JywnOyBteWNvbW1lbnRzICs9IHJlc3BvbnNlLm5ld2NvbW1lbnQuaWQ7IHZhciBkYXRlID0gbmV3IERhdGUoKTsgZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpICsgKDM2NSoyNCo2MCo2MCoxMDAwKSk7ICQuY29va2llKCdteWNvbW1lbnRzJyxteWNvbW1lbnRzLCB7cGF0aDogJy8nLCBleHBpcmVzOiBkYXRlfSk7IH0gd2luZG93LnVwZGF0ZURhdGEoKTsgJCgnLnJlbW92ZS1hbnN3ZXItdG8nKS5jbGljaygpOyB9ICQoJy5idG4tYWRkLWNvbW1lbnQnLHRoaXNDbGFzcy5mb3JtKS5idXR0b24oJ3Jlc2V0Jyk7IGdyZWNhcHRjaGEucmVzZXQoKTsgfSk7IH07IHRoaXNDbGFzcy5mb3JtYXREYXRlID0gZnVuY3Rpb24oZGF0ZVN0cil7IGRhdGVTdHIgPSBkYXRlU3RyLnJlcGxhY2UoLy0vZywgIi8iKTsgdmFyIG1pbGxpc2Vjb25kcyA9IERhdGUucGFyc2UoZGF0ZVN0cik7IHZhciBkID0gbmV3IERhdGUobWlsbGlzZWNvbmRzKTsgdmFyIGNkID0gbmV3IERhdGUoKTsgaWYgKHR5cGVvZiAkLmZuLmRhdGVwaWNrZXIuZGF0ZXNbZGNvcmVjbmcubGFuZ10ubW9udGhzQSAhPSAndW5kZWZpbmVkJykgeyB2YXIgbW9udGggPSAkLmZuLmRhdGVwaWNrZXIuZGF0ZXNbZGNvcmVjbmcubGFuZ10ubW9udGhzQVtkLmdldE1vbnRoKCldOyB9IGVsc2UgeyB2YXIgbW9udGggPSAkLmZuLmRhdGVwaWNrZXIuZGF0ZXNbZGNvcmVjbmcubGFuZ10ubW9udGhzW2QuZ2V0TW9udGgoKV07IH0gdmFyIG1pbnV0ZXMgPSBkLmdldE1pbnV0ZXMoKTsgbWludXRlcyA9IG1pbnV0ZXMgPCAxMCA\/ICcwJyArIG1pbnV0ZXMgOiBtaW51dGVzOyB2YXIgbmV3RGF0ZVN0ciA9IGQuZ2V0RGF0ZSgpICsgJyAnICsgbW9udGg7IHZhciB5ZWFyID0gZC5nZXRGdWxsWWVhcigpOyBpZiAoeWVhciA8IGNkLmdldEZ1bGxZZWFyKCkpIHsgbmV3RGF0ZVN0ciArPSAnICcgKyB5ZWFyOyB9IG5ld0RhdGVTdHIgKz0gJyAnICsgZC5nZXRIb3VycygpICsgJzonICsgbWludXRlczsgcmV0dXJuIG5ld0RhdGVTdHI7IH07IHRoaXNDbGFzcy5nZXRMaWtlc0NsYXNzTmFtZSA9IGZ1bmN0aW9uKGxpa2VzUGx1cyxsaWtlc01pbnVzKXsgdmFyIGRpdkNsYXNzID0gJyc7IGlmIChsaWtlc1BsdXMgPiBsaWtlc01pbnVzKSB7IGRpdkNsYXNzID0gJyBnb29kLXByb2R1Y3QnOyB9IGVsc2UgaWYgKGxpa2VzUGx1cyA8IGxpa2VzTWludXMpIHsgdmFyIGRpZmYgPSBsaWtlc01pbnVzIC0gbGlrZXNQbHVzOyBpZiAoZGlmZiA+PSAxICYmIGRpZmYgPD0gNSkgeyBkaXZDbGFzcyA9ICcgYmFkLXByb2R1Y3QnOyB9IGVsc2UgaWYgKGRpZmYgPj0gNiAmJiBkaWZmIDw9IDEwKSB7IGRpdkNsYXNzID0gJyBiYWQtcHJvZHVjdCBiYWQtcHJvZHVjdDInOyB9IGVsc2UgaWYgKGRpZmYgPiAxMCkgeyBkaXZDbGFzcyA9ICcgYmFkLXByb2R1Y3QgYmFkLXByb2R1Y3QzJzsgfSB9IHJldHVybiBkaXZDbGFzczsgfTsgdGhpc0NsYXNzLmdldENvbW1lbnRIdG1sID0gZnVuY3Rpb24oY29tbWVudERhdGEsc2hvd0Fuc3dlckZvcm0peyBpZiAodHlwZW9mIHNob3dBbnN3ZXJGb3JtID09ICd1bmRlZmluZWQnKSB7IHNob3dBbnN3ZXJGb3JtID0gdHJ1ZTsgfSB2YXIgY29tbWVudFRleHQgPSBjb21tZW50RGF0YS5jb21tZW50OyBjb21tZW50VGV4dCA9IGNvbW1lbnRUZXh0LnJlcGxhY2UoLyg\/OlxyXG58XHJ8XG4pL2csIjxici8+Iik7IHZhciBsaWtlc1BsdXMgPSBwYXJzZUludChjb21tZW50RGF0YS5jb3VudFBsdXMpOyB2YXIgbGlrZXNNaW51cyA9IHBhcnNlSW50KGNvbW1lbnREYXRhLmNvdW50TWludXMpOyB2YXIgZGl2Q2xhc3MgPSB0aGlzQ2xhc3MuZ2V0TGlrZXNDbGFzc05hbWUobGlrZXNQbHVzLGxpa2VzTWludXMpOyBpZiAoY29tbWVudERhdGEucGFyZW50KSB7IGRpdkNsYXNzICs9IChkaXZDbGFzcyA9PSAnJyk\/Jyc6JyAnOyBkaXZDbGFzcyArPSAnIGNvbW1lbnQtYW5zd2VyJzsgfSB2YXIgaHRtbCA9ICc8bGkgY2xhc3M9Imxpc3QtZ3JvdXAtaXRlbScgKyBkaXZDbGFzcyArICciIGRhdGEtaWQ9IicgKyBjb21tZW50RGF0YS5pZCArICciIGlkPSJjLScgKyBjb21tZW50RGF0YS5pZCArICciPic7IGh0bWwgKz0gJzxkaXYgY2xhc3M9ImNvbW1lbnQtaXRlbSI+JzsgdmFyIG15Q29tbWVudCA9IGZhbHNlOyBpZiAoZGNvcmVjbmcudXNlcklkKSB7IG15Q29tbWVudCA9IChkY29yZWNuZy51c2VySWQgPT0gY29tbWVudERhdGEudXNlcnNfaWQpOyB9IGVsc2UgeyB2YXIgbXljb21tZW50cyA9ICgkLmNvb2tpZSgnbXljb21tZW50cycpKT8kLmNvb2tpZSgnbXljb21tZW50cycpOicnOyB2YXIgbWNBcnIgPSBteWNvbW1lbnRzLnNwbGl0KCcsJyk7IGlmICghKCQuaW5BcnJheShjb21tZW50RGF0YS5pZCwgbWNBcnIpID09IC0xKSkgeyBteUNvbW1lbnQgPSB0cnVlOyB9IH0gaHRtbCArPSAnPGRpdiBjbGFzcz0iZHJvcGRvd24gY29tbWVudC1kcm9wZG93biI+JzsgaHRtbCArPSAnIDxhIGhyZWY9IiMiIGNsYXNzPSJidG4gYnRuLWxpbmsgZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iIGFyaWEtaGFzcG9wdXA9InRydWUiPic7IGh0bWwgKz0gJyA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1tZW51LWRvd24iPjwvc3Bhbj4nOyBodG1sICs9ICcgPC9hPic7IGh0bWwgKz0gJyA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodCI+JzsgaWYgKCFteUNvbW1lbnQpIHsgaHRtbCArPSAnIDxsaT48YSBjbGFzcz0icmVwb3J0LWNvbW1lbnQiPtCf0L7QttCw0LvQvtCy0LDRgtGM0YHRjzwvYT48L2xpPic7IH0gaWYgKG15Q29tbWVudCB8fCBkY29yZWNuZy51c2VyLmFkbWluKSB7IGh0bWwgKz0gJyA8bGk+PGEgY2xhc3M9ImRlbGV0ZS1jb21tZW50IGJ0bi1sb2dpbm5ld3dpbmRvdyI+0KPQtNCw0LvQuNGC0Yw8L2E+PC9saT4nOyB9IGlmIChteUNvbW1lbnQgfHwgZGNvcmVjbmcudXNlci5hZG1pbikgeyBodG1sICs9ICcgPGxpPjxhIGNsYXNzPSJjaGFuZ2UtY29tbWVudCBidG4tbG9naW5uZXd3aW5kb3ciPtCY0LfQvNC10L3QuNGC0Yw8L2E+PC9saT4nOyB9IGh0bWwgKz0gJyA8L3VsPic7IGh0bWwgKz0gJzwvZGl2Pic7IGh0bWwgKz0gJzxkaXY+JzsgaHRtbCArPSAnPGRpdiBjbGFzcz0ibWljLWluZm8iPic7IGh0bWwgKz0gJyA8c3Ryb25nPjxzcGFuIGNsYXNzPSJ1biI+JyArIGNvbW1lbnREYXRhLnVzZXJuYW1lICsgKChjb21tZW50RGF0YS5pc2d1ZXN0KT8nIDxzbWFsbD4o0JPQvtGB0YLRjCk8L3NtYWxsPic6JycpICsgJzwvc3Bhbj48L3N0cm9uZz4nOyBpZiAoY29tbWVudERhdGEucmF0aW5nKSB7IHZhciByYXRpbmcgPSBwYXJzZUludChjb21tZW50RGF0YS5yYXRpbmcpOyB2YXIgcGVyY2VudCA9IDA7IGlmIChyYXRpbmcgPiAwKSB7IHBlcmNlbnQgPSAxMDAvKDUvcmF0aW5nKTsgfSBodG1sICs9ICc8ZGl2IGNsYXNzPSJyYXRpbmdzIj4nOyBodG1sICs9ICcgPHNwYW4gY2xhc3M9InJhdGluZ3MtZW1wdHktc3RhcnMiPjxzcGFuIGNsYXNzPSJyYXRpbmdzLXN0YXJzIiBzdHlsZT0id2lkdGg6ICcgKyBwZXJjZW50ICsgJyUiPjwvc3Bhbj48L3NwYW4+JzsgaHRtbCArPSAnIDxzcGFuIGNsYXNzPSJyYXRpbmdzLXN1bW1hcnkiPjwvc3Bhbj4nOyBodG1sICs9ICc8L2Rpdj4nOyB9IGh0bWwgKz0gJyA8L2Rpdj4nOyBodG1sICs9ICc8L2Rpdj4nOyBodG1sICs9ICc8cCBjbGFzcz0iY29tbWVudC10ZXh0Ij4nICsgY29tbWVudFRleHQgKyAnPC9wPic7IGh0bWwgKz0gJzxkaXYgY2xhc3M9Im1pYy1pbmZvIj4nICsgY29tbWVudERhdGEuY3JlYXRlZDsgaWYgKGNvbW1lbnREYXRhLmNoYW5nZWQpIHsgaHRtbCArPSAnICjQuNC30LzQtdC90LXQvdC+KSc7IH0gaHRtbCArPSAnLCAnICsgY29tbWVudERhdGEuY2l0eV9uYW1lOyBpZiAoY29tbWVudERhdGEuYWRkcmVzcykgeyBodG1sICs9ICcsICcgKyBjb21tZW50RGF0YS5hZGRyZXNzOyB9IGh0bWwgKz0gJzwvZGl2Pic7IGh0bWwgKz0gJyA8YSBjbGFzcz0iY29tbWVudC1saW5rIGNvbW1lbnQtYW5zd2VyLWxpbmsiIGRhdGEtY29tbWVudC1pZD0iJyArIGNvbW1lbnREYXRhLmlkICsgJyI+0J7RgtCy0LXRgtC40YLRjDwvYT4nOyB2YXIgYWxsQ29tbWVudEFuc3dlcnMgPSBbXTsgaWYgKCFjb21tZW50RGF0YS5wYXJlbnQpIHsgaWYgKHR5cGVvZiBjb21tZW50RGF0YS5jb21tZW50cyAhPT0gJ3VuZGVmaW5lZCcpIHsgYWxsQ29tbWVudEFuc3dlcnMgPSBjb21tZW50RGF0YS5jb21tZW50czsgaWYgKGFsbENvbW1lbnRBbnN3ZXJzLmxlbmd0aCkgeyBodG1sICs9ICcgPGEgY2xhc3M9ImNvbW1lbnQtbGluayBjb21tZW50LW9wZW4tYW5zd2Vycy1saW5rIiBkYXRhLWNvbW1lbnQtaWQ9IicgKyBjb21tZW50RGF0YS5pZCArICciPicgKyBhbGxDb21tZW50QW5zd2Vycy5sZW5ndGggKyAnINC+0YLQstC10YLQvtCyPC9hPic7IH0gfSB9IGh0bWwgKz0gJzxkaXYgY2xhc3M9ImNvbW1lbnQtbGlrZSI+JzsgaHRtbCArPSAnIDxhIGNsYXNzPSJtaW51cycgKyAoKGNvbW1lbnREYXRhLmxpa2VkID09IC0xKT8nIGFjdGl2ZSc6JycpICsgJyBidG4tbG9naW5uZXd3aW5kb3ciIHRpdGxlPSLQndC1INC90YDQsNCy0LjRgtGB0Y8iPic7IGh0bWwgKz0gJyA8aSBjbGFzcz0ibWF0ZXJpYWwtaWNvbnMiPiYjeEU4REI7PC9pPic7IGh0bWwgKz0gJyA8c3BhbiBjbGFzcz0iY291bnQtbGlrZXMtbWludXMiPicgKyAoKGxpa2VzTWludXMgPiAwKT8nLSc6JycpICsgbGlrZXNNaW51cyArICc8L3NwYW4+JzsgaHRtbCArPSAnIDwvYT4nOyBodG1sICs9ICcgPHNwYW4gY2xhc3M9Imxpa2VzLXN1bSI+JyArICgoKGxpa2VzUGx1cyAtIGxpa2VzTWludXMpID49IDApPycrJzonJykgKyAobGlrZXNQbHVzIC0gbGlrZXNNaW51cykgKyAnPC9zcGFuPic7IGh0bWwgKz0gJyA8YSBjbGFzcz0icGx1cycgKyAoKGNvbW1lbnREYXRhLmxpa2VkID09IDEpPycgYWN0aXZlJzonJykgKyAnIGJ0bi1sb2dpbm5ld3dpbmRvdyIgdGl0bGU9ItCd0YDQsNCy0LjRgtGB0Y8iPic7IGh0bWwgKz0gJyA8aSBjbGFzcz0ibWF0ZXJpYWwtaWNvbnMiPiYjeEU4REM7PC9pPic7IGh0bWwgKz0gJyA8c3BhbiBjbGFzcz0iY291bnQtbGlrZXMtcGx1cyI+JyArICgobGlrZXNQbHVzID4gMCk\/JysnOicnKSArIGxpa2VzUGx1cyArICc8L3NwYW4+JzsgaHRtbCArPSAnIDwvYT4nOyBodG1sICs9ICc8L2Rpdj4nOyBodG1sICs9ICc8L2Rpdj4nOyBpZiAoIWNvbW1lbnREYXRhLnBhcmVudCkgeyBodG1sICs9ICc8ZGl2IGNsYXNzPSJjb21tZW50LWFuc3dlcnMgY2xvc2VkIj4nOyBodG1sICs9ICcgPGRpdiBjbGFzcz0iY29tbWVudC1hbnN3ZXJzLWxpc3QiPic7IGlmIChhbGxDb21tZW50QW5zd2Vycy5sZW5ndGgpIHsgaHRtbCArPSAnPHVsIGNsYXNzPSJsaXN0LWdyb3VwIj4nOyBmb3IgKHZhciBrZXkgaW4gYWxsQ29tbWVudEFuc3dlcnMpIHsgdmFyIGNvbW1lbnRPYmogPSBhbGxDb21tZW50QW5zd2Vyc1trZXldOyBodG1sICs9IHRoaXNDbGFzcy5nZXRDb21tZW50SHRtbChjb21tZW50T2JqLCBmYWxzZSk7IH0gaHRtbCArPSAnPC91bD4nOyB9IGh0bWwgKz0gJyA8L2Rpdj4nOyBpZiAoc2hvd0Fuc3dlckZvcm0pIHsgaHRtbCArPSAnIDxkaXYgY2xhc3M9ImNvbW1lbnQtYW5zd2Vycy1mb3JtIj4nOyB2YXIgcGFyZW50RmllbGQgPSAkKCdbbmFtZT0icGFyZW50Il0nLCAnLmNvbW1lbnQtYW5zd2Vycy1mb3JtLXBsYWNlaG9sZGVyJyk7IHBhcmVudEZpZWxkLnZhbChjb21tZW50RGF0YS5pZCk7IHBhcmVudEZpZWxkLmF0dHIoJ2RhdGEtZGVmYXVsdC12YWwnLGNvbW1lbnREYXRhLmlkKTsgdmFyIGZvcm1IdG1sID0gJCgnLmNvbW1lbnQtYW5zd2Vycy1mb3JtLXBsYWNlaG9sZGVyJykuaHRtbCgpOyBmb3JtSHRtbCA9IGZvcm1IdG1sLnJlcGxhY2UoJ3twcm9kdWN0X2lkfScsdGhpc0NsYXNzLnByb2R1Y3RJZCk7IGh0bWwgKz0gZm9ybUh0bWw7IGh0bWwgKz0gJyA8L2Rpdj4nOyB9IGh0bWwgKz0gJzwvZGl2Pic7IH0gaHRtbCArPSAnPC9saT4nOyByZXR1cm4gaHRtbDsgfTsgdGhpc0NsYXNzLmFwcGVuZENvbW1lbnQgPSBmdW5jdGlvbihjb21tZW50RGF0YSl7IHZhciBodG1sID0gdGhpc0NsYXNzLmdldENvbW1lbnRIdG1sKGNvbW1lbnREYXRhKTsgdmFyIGNvbW1lbnRDb250YWluZXIgPSBmYWxzZTsgdmFyIGNsID0gZmFsc2U7IGlmIChjb21tZW50RGF0YS5wYXJlbnQpIHsgY2wgPSAkKCcubGlzdC1ncm91cC1pdGVtW2RhdGEtaWQ9IicgKyBjb21tZW50RGF0YS5wYXJlbnQgKyAnIl0gLmNvbW1lbnQtYW5zd2Vycy1saXN0Jyk7IGlmICghY2wubGVuZ3RoKSB7IGNsID0gJCgnLmxpc3QtZ3JvdXAtaXRlbVtkYXRhLWlkPSInICsgY29tbWVudERhdGEucGFyZW50ICsgJyJdJykucGFyZW50cygnLmNvbW1lbnQtYW5zd2Vycy1saXN0OmZpcnN0Jyk7IH0gY29tbWVudENvbnRhaW5lciA9ICQoJy5saXN0LWdyb3VwJywgY2wpOyB9IGVsc2UgeyBjbCA9IHRoaXNDbGFzcy5jb21tZW50c0xpc3RXcmFwcGVyOyBjb21tZW50Q29udGFpbmVyID0gJCgnPiAubGlzdC1ncm91cCcsdGhpc0NsYXNzLmNvbW1lbnRzTGlzdFdyYXBwZXIpOyB9IGlmICghY29tbWVudENvbnRhaW5lci5sZW5ndGgpIHsgY2wuYXBwZW5kKCc8dWwgY2xhc3M9Imxpc3QtZ3JvdXAiPjwvdWw+Jyk7IGNvbW1lbnRDb250YWluZXIgPSAkKCc+IC5saXN0LWdyb3VwJywgY2wpOyB9IGNvbW1lbnRDb250YWluZXIuYXBwZW5kKGh0bWwpOyBjbC5hbmltYXRlKHsgc2Nyb2xsVG9wOiBjbFswXS5zY3JvbGxIZWlnaHR9LCAxMCk7IH07IHRoaXNDbGFzcy51cGRhdGVDb21tZW50RWxlbWVudCA9IGZ1bmN0aW9uKGNvbnRhaW5lcixvbGRFbCxuZXdFbCl7IGlmIChvbGRFbC5sZW5ndGgpIHsgJCgnPiAuY29tbWVudC1pdGVtJyxvbGRFbCkuaHRtbCgkKCc+IC5jb21tZW50LWl0ZW0nLG5ld0VsKS5odG1sKCkpOyB9IGVsc2UgeyBjb250YWluZXIuYXBwZW5kKG5ld0VsKTsgfSB9OyB0aGlzQ2xhc3MudXBkYXRlQ29tbWVudHMgPSBmdW5jdGlvbihjb21tZW50c0h0bWwsY2xlYXIpeyBjb25zb2xlLmxvZygndXBkYXRlQ29tbWVudHMnKTsgaWYgKGNsZWFyKSB7IHRoaXNDbGFzcy5jb21tZW50c0xpc3RXcmFwcGVyLmh0bWwoJycpOyB9IHZhciBjbGxnID0gJCgnPiAubGlzdC1ncm91cCcsdGhpc0NsYXNzLmNvbW1lbnRzTGlzdFdyYXBwZXIpOyAkKCcubm8tY29tbWVudHMnLHRoaXNDbGFzcy5jb21tZW50c0xpc3RXcmFwcGVyKS5yZW1vdmUoKTsgaWYgKCFjbGxnLmxlbmd0aCkgeyB0aGlzQ2xhc3MuY29tbWVudHNMaXN0V3JhcHBlci5hcHBlbmQoJzx1bCBjbGFzcz0ibGlzdC1ncm91cCI+PC91bD4nKTsgdmFyIGJ0bk1vcmVIVE1MID0gJzxkaXYgY2xhc3M9InRleHQtY2VudGVyIiBzdHlsZT0icGFkZGluZy10b3A6IDEwcHg7Ij4nOyBidG5Nb3JlSFRNTCArPSAnPHA+PHNtYWxsPtC\/0L7QutCw0LfQsNC90L4gPHNwYW4gY2xhc3M9ImNvbW1lbnRzLWxvYWRlZCI+JyArIHRoaXNDbGFzcy5sb2FkZWQgKyAnPC9zcGFuPiDQuNC3IDxzcGFuIGNsYXNzPSJjb21tZW50cy10b3RhbCI+JyArIHRoaXNDbGFzcy50b3RhbCArICc8L3NwYW4+INC60L7QvNC80LXQvdGC0LDRgNC40LXQsjwvc21hbGw+PC9wPic7IGJ0bk1vcmVIVE1MICs9ICc8YSBzdHlsZT0ibWFyZ2luLXJpZ2h0OjA7IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IGhpZGRlbiBidG4tbG9hZC1tb3JlLWNvbW1lbnRzIGJ0bi1sZyI+0JfQsNCz0YDRg9C30LjRgtGMINC10YnQtSA8c3BhbiBjbGFzcz0iY29tbWVudHMtbGVmdCI+JyArIHRoaXNDbGFzcy5saW1pdCArICc8L3NwYW4+PC9hPic7IGJ0bk1vcmVIVE1MICs9ICc8L2Rpdj4nOyB0aGlzQ2xhc3MuY29tbWVudHNMaXN0V3JhcHBlci5hcHBlbmQoYnRuTW9yZUhUTUwpOyBjbGxnID0gJCgnPiAubGlzdC1ncm91cCcsdGhpc0NsYXNzLmNvbW1lbnRzTGlzdFdyYXBwZXIpOyBjbGxnLmh0bWwoY29tbWVudHNIdG1sKTsgdmFyIHNjcm9sbFRvID0gZmFsc2U7IHZhciBocmVmQXJyID0gd2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoJyMnKTsgaWYgKGhyZWZBcnJbMV0pIHsgdmFyIGNPYmogPSAkKCcjJyArIGhyZWZBcnJbMV0pOyBpZiAoY09iai5sZW5ndGgpIHsgY09iai5hZGRDbGFzcygnaGlnaGxpZ2h0Jyk7IHZhciBjb21tZW50QW5zd2Vyc1dyYXAgPSBjT2JqLnBhcmVudHMoJy5jb21tZW50LWFuc3dlcnM6Zmlyc3QnKTsgaWYgKGNvbW1lbnRBbnN3ZXJzV3JhcC5sZW5ndGgpIHsgY29tbWVudEFuc3dlcnNXcmFwLnJlbW92ZUNsYXNzKCdjbG9zZWQnKTsgfSBzY3JvbGxUbyA9IGNPYmoub2Zmc2V0KCkudG9wIC0gdGhpc0NsYXNzLmNvbW1lbnRzTGlzdFdyYXBwZXIub2Zmc2V0KCkudG9wIC0gNTA7IH0gfSBpZiAoc2Nyb2xsVG8pIHsgaWYgKHRoaXNDbGFzcy5jb21tZW50c0xpc3RXcmFwcGVyLmNzcygnbWF4LWhlaWdodCcpID09ICdub25lJykgeyAkKCJodG1sLCBib2R5IikuYW5pbWF0ZSh7c2Nyb2xsVG9wOiBjT2JqLm9mZnNldCgpLnRvcH0sIDEwKTsgfSBlbHNlIHsgdGhpc0NsYXNzLmNvbW1lbnRzTGlzdFdyYXBwZXIuYW5pbWF0ZSh7c2Nyb2xsVG9wOiBzY3JvbGxUb30sIDEwKTsgfSB9IGlmICghc2Nyb2xsVG8gJiYgdGhpc0NsYXNzLmNvbW1lbnRzTGlzdFdyYXBwZXIuaGVpZ2h0KCkgPCBjbGxnLmhlaWdodCgpKSB7ICQoJy5idG4tc2hvdy1jb21tZW50cycsdGhpc0NsYXNzLmNvbW1lbnRzTGlzdFdyYXBwZXIpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTsgdGhpc0NsYXNzLmNvbW1lbnRzTGlzdFdyYXBwZXIuYWRkQ2xhc3MoJ2NvbW1lbnRzLWhpZGRlbicpOyB0aGlzQ2xhc3MuY29tbWVudHNMaXN0V3JhcHBlci5hbmltYXRlKHsgc2Nyb2xsVG9wOiBjbGxnLmhlaWdodCgpfSwgMCk7IH0gZWxzZSBpZiAoc2Nyb2xsVG8pIHsgdGhpc0NsYXNzLnNjKCk7IH0gfSBlbHNlIHsgJChjb21tZW50c0h0bWwpLmVhY2goZnVuY3Rpb24oaSxlbCl7IHZhciBjb21tZW50SWQgPSAkKGVsKS5hdHRyKCdkYXRhLWlkJyk7IHRoaXNDbGFzcy51cGRhdGVDb21tZW50RWxlbWVudChjbGxnLCQoJy5saXN0LWdyb3VwLWl0ZW1bZGF0YS1pZD0iJyArIGNvbW1lbnRJZCArICciXScpLCQoZWwpKTsgdmFyIGNvbW1lbnRBbnN3ZXJzQ29udGFpbmVyID0gJCgnLmxpc3QtZ3JvdXAtaXRlbVtkYXRhLWlkPSInICsgY29tbWVudElkICsgJyJdIC5jb21tZW50LWFuc3dlcnMtbGlzdCAubGlzdC1ncm91cCcpOyBpZiAoIWNvbW1lbnRBbnN3ZXJzQ29udGFpbmVyLmxlbmd0aCkgeyAkKCcubGlzdC1ncm91cC1pdGVtW2RhdGEtaWQ9IicgKyBjb21tZW50SWQgKyAnIl0gLmNvbW1lbnQtYW5zd2Vycy1saXN0JykuYXBwZW5kKCc8dWwgY2xhc3M9Imxpc3QtZ3JvdXAiPjwvdWw+Jyk7IGNvbW1lbnRBbnN3ZXJzQ29udGFpbmVyID0gJCgnLmxpc3QtZ3JvdXAtaXRlbVtkYXRhLWlkPSInICsgY29tbWVudElkICsgJyJdIC5jb21tZW50LWFuc3dlcnMtbGlzdCAubGlzdC1ncm91cCcpOyB9IHZhciBjaGlsZENvbW1lbnRzID0gJCgnLmNvbW1lbnQtYW5zd2VycyAubGlzdC1ncm91cC1pdGVtJyxlbCk7IGlmIChjaGlsZENvbW1lbnRzLmxlbmd0aCkgeyAkKGNoaWxkQ29tbWVudHMpLmVhY2goZnVuY3Rpb24oaSxlbDIpeyB2YXIgY29tbWVudElkMiA9ICQoZWwyKS5hdHRyKCdkYXRhLWlkJyk7IHRoaXNDbGFzcy51cGRhdGVDb21tZW50RWxlbWVudChjb21tZW50QW5zd2Vyc0NvbnRhaW5lciwkKCcubGlzdC1ncm91cC1pdGVtW2RhdGEtaWQ9IicgKyBjb21tZW50SWQyICsgJyJdJyksJChlbDIpKTsgfSk7IH0gfSk7IH0gdmFyIGJ0bkxvYWRNb3JlID0gJCgnLmJ0bi1sb2FkLW1vcmUtY29tbWVudHMnLHRoaXNDbGFzcy5jb21tZW50c0xpc3RXcmFwcGVyKTsgaWYgKHRoaXNDbGFzcy5sb2FkZWQgPj0gdGhpc0NsYXNzLnRvdGFsKSB7IGJ0bkxvYWRNb3JlLmFkZENsYXNzKCdoaWRkZW4nKTsgfSBlbHNlIHsgYnRuTG9hZE1vcmUucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpOyB9IGlmICgkKCcuY29tbWVudC1kcm9wZG93bicsY2xsZykubGVuZ3RoID4gMSkgeyAkKCcuY29tbWVudC1kcm9wZG93bjpsYXN0JywgY2xsZykuYWRkQ2xhc3MoJ2Ryb3B1cCcpOyB9IH07IHRoaXNDbGFzcy5jbGVhckNvbW1lbnRzID0gZnVuY3Rpb24oKXsgdmFyIGNvbW1lbnRzV3JhcHBlciA9ICQodGhpc0NsYXNzLmZvcm0pLnBhcmVudHMoJy5wcm9kdWN0LWNvbW1lbnRzOmZpcnN0Jyk7ICQoJy5jb21tZW50cy1saXN0Jyxjb21tZW50c1dyYXBwZXIpLmh0bWwoJzxwIGNsYXNzPSJuby1jb21tZW50cyBhbGVydCI+PHNwYW4gY2xhc3M9Im1hdGVyaWFsLWljb25zIj53YXJuaW5nPC9zcGFuPiDQldGJ0ZEg0L3QuCDQvtC00L3QvtCz0L4g0L7RgtC30YvQstCwLiDQkdGD0LTRjNGC0LUg0L\/QtdGA0LLRi9C8LCDQutGC0L4g0L\/QvtC00LXQu9C40YLRgdGPINGB0LLQvtC40Lwg0L7Qv9GL0YLQvtC8ITwvcD4nKTsgfTsgdGhpc0NsYXNzLnNob3dMb2FkZXIgPSBmdW5jdGlvbigpeyB0aGlzQ2xhc3MuY29tbWVudHNMaXN0V3JhcHBlci5hZGRDbGFzcygnbG9hZGluZycpOyB0aGlzQ2xhc3MuY29tbWVudHNMaXN0V3JhcHBlci5hcHBlbmQoJzxkaXYgY2xhc3M9ImxvYWRlci1pY29uIj48L2Rpdj4nKTsgfTsgdGhpc0NsYXNzLmhpZGVMb2FkZXIgPSBmdW5jdGlvbigpeyAkKCcubG9hZGVyLWljb24nLHRoaXNDbGFzcy5jb21tZW50c0xpc3RXcmFwcGVyKS5yZW1vdmUoKTsgdGhpc0NsYXNzLmNvbW1lbnRzTGlzdFdyYXBwZXIucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsgfTsgdGhpc0NsYXNzLnVwZGF0ZSA9IGZ1bmN0aW9uKGNsZWFyKXsgY2xlYXIgPSB0eXBlb2YgY2xlYXIgIT09ICd1bmRlZmluZWQnID8gY2xlYXIgOiBmYWxzZTsgaWYgKGNsZWFyKXsgdGhpc0NsYXNzLmxvYWRlZCA9IDA7IH0gdGhpc0NsYXNzLnNob3dMb2FkZXIoKTsgJCgnLm1lc3NhZ2VzJyx0aGlzQ2xhc3MuZm9ybSkucmVtb3ZlKCk7IHZhciBjb21tZW50c1BhcmFtcyA9IHsgbGltaXQ6IHRoaXNDbGFzcy5saW1pdCwgb2Zmc2V0OiB0aGlzQ2xhc3Mub2Zmc2V0IH07IGNvbW1lbnRzUGFyYW1zLm9yZGVyYnkgPSAkKCcuYWN0aXZlID4gLmNvbW1lbnQtc29ydC1saW5rJyx0aGlzQ2xhc3MuaXRlbSkuYXR0cigncmVsJyk7IGlmICh0aGlzQ2xhc3MuaXRlbUlkKSB7IHZhciBhcGlVcmwgPSAnL2FwaXYzL3Byb2R1Y3RzLycgKyB0aGlzQ2xhc3MuaXRlbUlkICsgJy9jb21tZW50cy8nOyB9IGVsc2UgeyB2YXIgYXBpVXJsID0gJy9hcGl2My9zaG9wcy8nICsgdGhpc0NsYXNzLnNob3BJZCArICcvY29tbWVudHMvJzsgfSBjb25zb2xlLmxvZygnYXBpVXJsOiAnICsgYXBpVXJsKTsgQXBpLmdldChhcGlVcmwsIGNvbW1lbnRzUGFyYW1zLCBmdW5jdGlvbihyZXNwb25zZSkgeyBpZiAodHlwZW9mIHJlc3BvbnNlLmVycm9yICE9ICd1bmRlZmluZWQnKSB7ICQodGhpc0NsYXNzLmZvcm0pLnByZXBlbmQoICc8ZGl2IGNsYXNzPSJtZXNzYWdlcyI+PHAgY2xhc3M9ImFsZXJ0LWRhbmdlciI+JyArIHJlc3BvbnNlLmVycm9yX2Rlc2NyaXB0aW9uICsgJzwvcD48L2Rpdj4nICk7IH0gZWxzZSB7IGlmIChyZXNwb25zZS50b3RhbENvdW50ID4gMCkgeyB0aGlzQ2xhc3MudG90YWwgPSByZXNwb25zZS50b3RhbENvdW50OyB0aGlzQ2xhc3MubG9hZGVkICs9IHJlc3BvbnNlLmNvbW1lbnRzLmxlbmd0aDsgdmFyIGNvbW1lbnRzSHRtbCA9ICcnOyBmb3IgKHZhciBrZXkgaW4gcmVzcG9uc2UuY29tbWVudHMpIHsgdmFyIGNvbW1lbnRPYmogPSByZXNwb25zZS5jb21tZW50c1trZXldOyBjb21tZW50c0h0bWwgKz0gdGhpc0NsYXNzLmdldENvbW1lbnRIdG1sKGNvbW1lbnRPYmopOyB9IHRoaXNDbGFzcy51cGRhdGVDb21tZW50cyhjb21tZW50c0h0bWwsY2xlYXIpOyAkKCcuY29tbWVudHMtbG9hZGVkJyx0aGlzQ2xhc3MuY29tbWVudHNMaXN0V3JhcHBlcikuaHRtbCh0aGlzQ2xhc3MubG9hZGVkKTsgJCgnLmNvbW1lbnRzLXRvdGFsJyx0aGlzQ2xhc3MuY29tbWVudHNMaXN0V3JhcHBlcikuaHRtbCh0aGlzQ2xhc3MudG90YWwpOyAkKCcuY29tbWVudHMtbGVmdCcsdGhpc0NsYXNzLmNvbW1lbnRzTGlzdFdyYXBwZXIpLmh0bWwoKHRoaXNDbGFzcy5saW1pdCA+ICh0aGlzQ2xhc3MudG90YWwgLSB0aGlzQ2xhc3MubG9hZGVkKSkgPyAodGhpc0NsYXNzLnRvdGFsIC0gdGhpc0NsYXNzLmxvYWRlZCkgOiB0aGlzQ2xhc3MubGltaXQpOyB9IGVsc2UgeyB0aGlzQ2xhc3MuY2xlYXJDb21tZW50cygpOyB9IH0gdGhpc0NsYXNzLmhpZGVMb2FkZXIoKTsgfSk7IH07IHRoaXNDbGFzcy5jc2MgPSBmdW5jdGlvbihlKXsgdGhpc0NsYXNzLnNjKCk7IGUucHJldmVudERlZmF1bHQoKTsgfTsgdGhpc0NsYXNzLmNoYyA9IGZ1bmN0aW9uKGUpeyB0aGlzQ2xhc3MuaGMoKTsgZS5wcmV2ZW50RGVmYXVsdCgpOyB9OyB0aGlzQ2xhc3Muc2MgPSBmdW5jdGlvbigpeyBpZiAoJCgnLnNob3ctaGlkZS1jb21tZW50cycpLmlzKCc6dmlzaWJsZScpKSB7IHRoaXNDbGFzcy5jb21tZW50c0xpc3RXcmFwcGVyLmNzcyh7ICdtYXgtaGVpZ2h0JzogJ25vbmUnLCAnb3ZlcmZsb3cnOiAndmlzaWJsZScgfSk7ICQoJy5zaG93LWhpZGUtY29tbWVudHMgLmJ0bi1zaG93LWNvbW1lbnRzJywgdGhpc0NsYXNzLnBjKS5hZGRDbGFzcygnaGlkZGVuJyk7ICQoJy5zaG93LWhpZGUtY29tbWVudHMgLmJ0bi1oaWRlLWNvbW1lbnRzJywgdGhpc0NsYXNzLnBjKS5yZW1vdmVDbGFzcygnaGlkZGVuJyk7IH0gfTsgdGhpc0NsYXNzLmhjID0gZnVuY3Rpb24oKXsgdGhpc0NsYXNzLmNvbW1lbnRzTGlzdFdyYXBwZXIuY3NzKHsgJ21heC1oZWlnaHQnOiAnJywgJ292ZXJmbG93JzogJycgfSk7ICQoJy5zaG93LWhpZGUtY29tbWVudHMgLmJ0bi1zaG93LWNvbW1lbnRzJyx0aGlzQ2xhc3MucGMpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTsgJCgnLnNob3ctaGlkZS1jb21tZW50cyAuYnRuLWhpZGUtY29tbWVudHMnLHRoaXNDbGFzcy5wYykuYWRkQ2xhc3MoJ2hpZGRlbicpOyB9OyB0aGlzQ2xhc3MuY2FuY2VsU2F2ZUNvbW1lbnQgPSBmdW5jdGlvbigpeyBpZiAoJCgnLmNvbW1lbnQtdGV4dFtjb250ZW50ZWRpdGFibGVdJykubGVuZ3RoKSB7ICQoJy5jb21tZW50LXRleHRbY29udGVudGVkaXRhYmxlPSJ0cnVlIl0nKS5lYWNoKGZ1bmN0aW9uIChpLGVsKSB7ICQoZWwpLnJlbW92ZUF0dHIoJ2NvbnRlbnRlZGl0YWJsZScpOyBpZiAoJChlbCkuZGF0YSgncHJldlRleHQnKSkgeyAkKGVsKS50ZXh0KCQoZWwpLmRhdGEoJ3ByZXZUZXh0JykpOyB9IH0pOyB9IH07IHRoaXNDbGFzcy5zYXZlQ29tbWVudCA9IGZ1bmN0aW9uKCl7IGlmICgkKCcuY29tbWVudC10ZXh0W2NvbnRlbnRlZGl0YWJsZV0nKS5sZW5ndGgpIHsgJCgnLmNvbW1lbnQtdGV4dFtjb250ZW50ZWRpdGFibGU9InRydWUiXScpLmVhY2goZnVuY3Rpb24gKGksZWwpIHsgJCgnLmJ0bi1zYXZlLWNvbW1lbnQnLGVsKS5yZW1vdmUoKTsgJCgnLmJ0bi1jYW5jZWwtc2F2ZS1jb21tZW50JyxlbCkucmVtb3ZlKCk7ICQoZWwpLnJlbW92ZUF0dHIoJ2NvbnRlbnRlZGl0YWJsZScpOyBpZiAoJChlbCkuYXR0cignZGF0YS1lZGl0ZWQnKSA9PSAnMScpIHsgdmFyIG5ld1RleHQgPSAkKHRoaXMpLnRleHQoKTsgdmFyIHdyYXBwZXIgPSAkKHRoaXMpLnBhcmVudHMoJ1tkYXRhLWlkXTpmaXJzdCcpOyB2YXIgY29tbWVudElkID0gJCh3cmFwcGVyKS5hdHRyKCdkYXRhLWlkJyk7IHZhciBjb21tZW50RGF0YSA9IHt9OyBjb21tZW50RGF0YS5jb21tZW50ID0gbmV3VGV4dDsgQXBpLnB1dCgnL2FwaXYyL2NvbW1lbnRzLycgKyBjb21tZW50SWQgKyAnLycsIGNvbW1lbnREYXRhLCBmdW5jdGlvbihyZXNwb25zZSkgeyBpZiAocmVzcG9uc2UuZXJyb3IpIHsgaWYgKHJlc3BvbnNlLmVycm9yID09ICd1bmF1dGhvcml6ZWQnKSB7IH0gZWxzZSB7ICQoZWwpLnByZXBlbmQoJzxkaXYgY2xhc3M9Im1lc3NhZ2VzIj48cCBjbGFzcz0iYWxlcnQtZGFuZ2VyIj4nICsgcmVzcG9uc2UuZXJyb3JfZGVzY3JpcHRpb24gKyAnPC9wPjwvZGl2PicpOyB9IH0gZWxzZSB7IHdpbmRvdy51cGRhdGVEYXRhKCk7IH0gfSk7IH0gfSk7IH0gfTsgaWYgKHR5cGVvZiB0aGlzQ2xhc3MucHJvZHVjdElkICE9PSAndW5kZWZpbmVkJykgeyAkKCdCT0RZJykub24oJ2NsaWNrJywgJ1tkYXRhLWlkPSInICsgdGhpc0NsYXNzLnByb2R1Y3RJZCArICciXSAuYnRuLXNob3ctY29tbWVudHMnLCB0aGlzQ2xhc3MuY3NjKTsgJCgnQk9EWScpLm9uKCdjbGljaycsICdbZGF0YS1pZD0iJyArIHRoaXNDbGFzcy5wcm9kdWN0SWQgKyAnIl0gLmJ0bi1oaWRlLWNvbW1lbnRzJywgdGhpc0NsYXNzLmNoYyk7ICQoJ0JPRFknKS5vZmYoJ2NsaWNrLmNvbW1lbnRTb3J0Jykub24oJ2NsaWNrLmNvbW1lbnRTb3J0JywnW2RhdGEtaWQ9IicgKyB0aGlzQ2xhc3MucHJvZHVjdElkICsgJyJdIC5jb21tZW50LXNvcnQtbGluaycsZnVuY3Rpb24oZSkgeyB2YXIgdWwgPSAkKHRoaXMpLnBhcmVudHMoJ3VsOmZpcnN0Jyk7ICQoJ2xpJyx1bCkucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOyAkKHRoaXMpLnBhcmVudHMoJ2xpOmZpcnN0JykuYWRkQ2xhc3MoJ2FjdGl2ZScpOyB2YXIgZHJvcGRvd24gPSAkKHRoaXMpLnBhcmVudHMoJy5kcm9wZG93bjpmaXJzdCcpOyB2YXIgYnRuID0gJCgnPiAuYnRuJyxkcm9wZG93bik7ICQoJy50ZXh0JyxidG4pLnRleHQoJCh0aGlzKS50ZXh0KCkpOyB0aGlzQ2xhc3Mub2Zmc2V0ID0gMDsgdGhpc0NsYXNzLmxvYWRlZCA9IDA7IHRoaXNDbGFzcy51cGRhdGUodHJ1ZSk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IH0pOyB9IGVsc2UgeyAkKCdCT0RZJykub2ZmKCdjbGljaycsJy5zaG9wLXJldmlld3MgLmNvbW1lbnQtc29ydC1saW5rJyk7ICQoJ0JPRFknKS5vbignY2xpY2snLCcuc2hvcC1yZXZpZXdzIC5jb21tZW50LXNvcnQtbGluaycsZnVuY3Rpb24oZSkgeyB2YXIgdWwgPSAkKHRoaXMpLnBhcmVudHMoJ3VsOmZpcnN0Jyk7ICQoJ2xpJyx1bCkucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOyAkKHRoaXMpLnBhcmVudHMoJ2xpOmZpcnN0JykuYWRkQ2xhc3MoJ2FjdGl2ZScpOyB2YXIgZHJvcGRvd24gPSAkKHRoaXMpLnBhcmVudHMoJy5kcm9wZG93bjpmaXJzdCcpOyB2YXIgYnRuID0gJCgnPiAuYnRuJyxkcm9wZG93bik7ICQoJy50ZXh0JyxidG4pLnRleHQoJCh0aGlzKS50ZXh0KCkpOyB0aGlzQ2xhc3MudXBkYXRlKHRydWUpOyB9KTsgfSAkKCdCT0RZJykub2ZmKCdjbGljaycsJy5jb21tZW50cy1saXN0IC5idG4tbG9hZC1tb3JlLWNvbW1lbnRzJyk7ICQoJ0JPRFknKS5vbignY2xpY2snLCcuY29tbWVudHMtbGlzdCAuYnRuLWxvYWQtbW9yZS1jb21tZW50cycsZnVuY3Rpb24oZSkgeyB0aGlzQ2xhc3Mub2Zmc2V0ICs9IHRoaXNDbGFzcy5saW1pdDsgdGhpc0NsYXNzLnVwZGF0ZSgpOyBlLnByZXZlbnREZWZhdWx0KCk7IH0pOyB9OyAkKCdCT0RZJykub24oJ3N1Ym1pdCcsJy5hZGQtY29tbWVudC1mb3JtJyxmdW5jdGlvbihlKXsgZS5wcmV2ZW50RGVmYXVsdCgpOyB2YXIgZm9ybSA9ICQodGhpcyk7IGNvbnNvbGUubG9nKCdhZGQtY29tbWVudC1mb3JtIHN1Ym1pdCcpOyBjb25zb2xlLmxvZyhmb3JtKTsgaWYgKGRjb3JlY25nLmNvbW1lbnRzZ3Vlc3QgfHwgZGNvcmVjbmcudXNlcklkKSB7IHZhciBjb21tZW50cyA9IG5ldyBDb21tZW50cyhmb3JtKTsgY29tbWVudHMuYWRkKCk7IH0gfSk7IGlmICgkKCcuYWRkLWNvbW1lbnQtZm9ybSBbbmFtZT0idXNlcm5hbWUiXScpLmxlbmd0aCAmJiAkKCcuYWRkLWNvbW1lbnQtZm9ybSBbbmFtZT0idXNlcm5hbWUiXScpLnZhbCgpID09ICcnICYmICQuY29va2llKCdkaXNjb3VudHN1c2VybmFtZScpKSB7ICQoJy5hZGQtY29tbWVudC1mb3JtIFtuYW1lPSJ1c2VybmFtZSJdJykudmFsKCQuY29va2llKCdkaXNjb3VudHN1c2VybmFtZScpKTsgfSAkKCdCT0RZJykub24oJ2NsaWNrJywnLmxpc3QtZ3JvdXAtaXRlbSAuY29tbWVudC1vcGVuLWFuc3dlcnMtbGluaycsZnVuY3Rpb24oZSl7IHZhciBjb21tZW50SXRlbSA9ICQodGhpcykucGFyZW50cygnLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdCcpOyB2YXIgcm9vdENvbW1lbnRJdGVtID0gJCh0aGlzKS5wYXJlbnRzKCcubGlzdC1ncm91cC1pdGVtOmxhc3QnKTsgdmFyIGNvbW1lbnRBbnN3ZXJzID0gJCgnLmNvbW1lbnQtYW5zd2VycycsY29tbWVudEl0ZW0pOyB2YXIgZm9ybSA9ICQoJy5hZGQtY29tbWVudC1mb3JtJyxyb290Q29tbWVudEl0ZW0pOyB2YXIgY0lkID0gJCh0aGlzKS5hdHRyKCdkYXRhLWNvbW1lbnQtaWQnKTsgaWYgKGNvbW1lbnRBbnN3ZXJzLmhhc0NsYXNzKCdjbG9zZWQnKSkgeyBjb21tZW50QW5zd2Vycy5yZW1vdmVDbGFzcygnY2xvc2VkJyk7IH0gZWxzZSB7IGNvbW1lbnRBbnN3ZXJzLmFkZENsYXNzKCdjbG9zZWQnKTsgfSB2YXIgcElucCA9ICQoJ1tuYW1lPSJwYXJlbnQiXScsZm9ybSk7IGlmICghcElucC5sZW5ndGgpIHsgZm9ybS5hcHBlbmQoJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhcmVudCIgdmFsdWU9IiIgLz4nKTsgcElucCA9ICQoJ1tuYW1lPSJwYXJlbnQiXScsZm9ybSk7IH0gcElucC52YWwoY0lkKTsgfSk7ICQoJ0JPRFknKS5vbignY2xpY2snLCcubGlzdC1ncm91cC1pdGVtIC5jb21tZW50LWFuc3dlci1saW5rJyxmdW5jdGlvbihlKXsgY29uc29sZS5sb2coJ2NvbW1lbnQtYW5zd2VyLWxpbmsnKTsgY29uc29sZS5sb2codGhpcyk7IHZhciBjSWQgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtY29tbWVudC1pZCcpOyB2YXIgY29tbWVudEl0ZW0gPSAkKHRoaXMpLnBhcmVudHMoJy5saXN0LWdyb3VwLWl0ZW06Zmlyc3QnKTsgdmFyIHJvb3RDb21tZW50SXRlbSA9ICQodGhpcykucGFyZW50cygnLmxpc3QtZ3JvdXAtaXRlbTpsYXN0Jyk7IHZhciBjb21tZW50QW5zd2VycyA9ICQoJy5jb21tZW50LWFuc3dlcnMnLGNvbW1lbnRJdGVtKTsgdmFyIHVuID0gJCgnLnVuOmZpcnN0Jyxjb21tZW50SXRlbSkudGV4dCgpOyB2YXIgY29tbWVudHNXcmFwcGVyID0gJCh0aGlzKS5wYXJlbnRzKCcucHJvZHVjdC1jb21tZW50czpmaXJzdCcpOyB2YXIgZm9ybSA9ICQoJy5hZGQtY29tbWVudC1mb3JtJyxyb290Q29tbWVudEl0ZW0pOyB2YXIgdGV4dGFyZWEgPSAkKCd0ZXh0YXJlYScsZm9ybSk7IGlmIChjb21tZW50QW5zd2Vycy5oYXNDbGFzcygnY2xvc2VkJykpIHsgY29tbWVudEFuc3dlcnMucmVtb3ZlQ2xhc3MoJ2Nsb3NlZCcpOyB9IGlmICghZGNvcmVjbmcuaXNUb3VjaERldmljZSkgeyB0ZXh0YXJlYS5mb2N1cygpOyB9IHZhciB0YVRleHQgPSB0ZXh0YXJlYS52YWwoKTsgdGFUZXh0ID0gdGFUZXh0LnJlcGxhY2UodW4gKyAnLCAnLCAnJyk7IHRhVGV4dCA9IHRhVGV4dC5yZXBsYWNlKHVuICsgJywnLCAnJyk7IHRhVGV4dCA9IHVuICsgJywgJyArIHRhVGV4dDsgdGV4dGFyZWEudmFsKHRhVGV4dCk7IHZhciBwSW5wID0gJCgnW25hbWU9InBhcmVudCJdJyxmb3JtKTsgaWYgKCFwSW5wLmxlbmd0aCkgeyBmb3JtLmFwcGVuZCgnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGFyZW50IiB2YWx1ZT0iIiAvPicpOyBwSW5wID0gJCgnW25hbWU9InBhcmVudCJdJyxmb3JtKTsgfSBwSW5wLnZhbChjSWQpOyB2YXIgYW5zd0luZm8gPSAkKCcuYW5zd2VyLWluZm8nLGZvcm0pOyB2YXIgYW5zd0luZm9IVE1MID0gJ9C+0YLQstC10YIgJzsgYW5zd0luZm9IVE1MICs9ICc8c3Ryb25nPicgKyB1biArICc8L3N0cm9uZz4nICsgJyAnOyBhbnN3SW5mb0hUTUwgKz0gJzxhIGNsYXNzPSJyZW1vdmUtYW5zd2VyLXRvIj5YPC9hPic7IGFuc3dJbmZvLmh0bWwoYW5zd0luZm9IVE1MKTsgZS5wcmV2ZW50RGVmYXVsdCgpOyB9KTsgJCgnQk9EWScpLm9uKCdjbGljaycsJy5hZGQtY29tbWVudC1mb3JtIC5yZW1vdmUtYW5zd2VyLXRvJyxmdW5jdGlvbihlKXsgdmFyIGZvcm0gPSAkKHRoaXMpLnBhcmVudHMoJy5hZGQtY29tbWVudC1mb3JtOmZpcnN0Jyk7IHZhciB0ZXh0YXJlYSA9ICQoJ3RleHRhcmVhJyxmb3JtKTsgdmFyIGFuc3dJbmZvID0gJCgnLmFuc3dlci1pbmZvJyxmb3JtKTsgdmFyIHVuID0gJCgnc3Ryb25nJyxhbnN3SW5mbykudGV4dCgpOyBhbnN3SW5mby5odG1sKCcnKTsgdmFyIHBhcmVudEZpZWxkID0gJCgnW25hbWU9InBhcmVudCJdJyxmb3JtKTsgaWYgKHBhcmVudEZpZWxkLmF0dHIoJ2RhdGEtZGVmYXVsdC12YWwnKSkgeyBwYXJlbnRGaWVsZC52YWwocGFyZW50RmllbGQuYXR0cignZGF0YS1kZWZhdWx0LXZhbCcpKTsgfSBlbHNlIHsgcGFyZW50RmllbGQucmVtb3ZlKCk7IH0gdmFyIHRhVGV4dCA9IHRleHRhcmVhLnZhbCgpOyB0YVRleHQgPSB0YVRleHQucmVwbGFjZSh1biArICcsICcsICcnKTsgdGFUZXh0ID0gdGFUZXh0LnJlcGxhY2UodW4gKyAnLCcsICcnKTsgdGV4dGFyZWEudmFsKHRhVGV4dCk7IGUucHJldmVudERlZmF1bHQoKTsgfSk7ICQoJ0JPRFknKS5vbignY2xpY2snLCcubGlzdC1ncm91cC1pdGVtIC5yZXBvcnQtY29tbWVudCcsZnVuY3Rpb24oZSl7IHZhciByZXBvcnRMaW5rID0gJCh0aGlzKTsgaWYgKHJlcG9ydExpbmsuaGFzQ2xhc3MoJ2Rpc2FibGVkJykpIHsgcmV0dXJuIGZhbHNlOyB9IHZhciBsaSA9IHJlcG9ydExpbmsucGFyZW50cygnbGk6Zmlyc3QnKTsgdmFyIGNvbW1lbnRJdGVtID0gcmVwb3J0TGluay5wYXJlbnRzKCcubGlzdC1ncm91cC1pdGVtOmZpcnN0Jyk7IHZhciBjb21tZW50SWQgPSBjb21tZW50SXRlbS5hdHRyKCdkYXRhLWlkJyk7IHZhciBjb21tZW50RGF0YSA9IHsgY29tbWVudF9pZDogY29tbWVudElkIH07IEFwaS5wb3N0KCcvYXBpL3JlcG9ydGNvbW1lbnQvJywgY29tbWVudERhdGEsIGZ1bmN0aW9uKHJlc3BvbnNlKSB7IH0pOyAkKCcuY29tbWVudC10ZXh0OmZpcnN0Jyxjb21tZW50SXRlbSkgLmFkZENsYXNzKCd0ZXh0LXN1Y2Nlc3MnKSAuaHRtbCgn0JLQsNGI0LAg0LbQsNC70L7QsdCwINC+0YLQv9GA0LDQstC70LXQvdCwLiDQodC\/0LDRgdC40LHQvi4nKTsgY29tbWVudEl0ZW0uYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7ICQobGkpLmFkZENsYXNzKCdkaXNhYmxlZCcpOyBlLnByZXZlbnREZWZhdWx0KCk7IH0pOyAkKCdCT0RZJykub24oJ2NsaWNrJywnLmxpc3QtZ3JvdXAtaXRlbSAuZGVsZXRlLWNvbW1lbnQnLGZ1bmN0aW9uKGUpeyBpZiAoZGNvcmVjbmcudXNlcklkKSB7IHZhciBkZWxldGVMaW5rID0gJCh0aGlzKTsgdmFyIGxpID0gZGVsZXRlTGluay5wYXJlbnRzKCdsaTpmaXJzdCcpOyB2YXIgY29tbWVudEl0ZW0gPSBkZWxldGVMaW5rLnBhcmVudHMoJy5saXN0LWdyb3VwLWl0ZW06Zmlyc3QnKTsgdmFyIGNvbW1lbnRJZCA9IGNvbW1lbnRJdGVtLmF0dHIoJ2RhdGEtaWQnKTsgQXBpLmRlbGV0ZSgnL2FwaS9jb21tZW50cy8nICsgY29tbWVudElkICsgJy8nKTsgJChjb21tZW50SXRlbSkuYWRkQ2xhc3MoJ3RleHQtc3VjY2VzcycpIC5odG1sKCfQmtC+0LzQvNC10L3RgtCw0YDQuNC5INGD0LTQsNC70LXQvS4nKTsgfSBlLnByZXZlbnREZWZhdWx0KCk7IH0pOyAkKCdCT0RZJykub24oJ2NsaWNrJywnLmxpc3QtZ3JvdXAtaXRlbSAuY2hhbmdlLWNvbW1lbnQnLGZ1bmN0aW9uKGUpeyBpZiAoZGNvcmVjbmcudXNlcklkKSB7IHZhciBjaGFuZ2VMaW5rID0gJCh0aGlzKTsgdmFyIGNvbW1lbnRJdGVtID0gY2hhbmdlTGluay5wYXJlbnRzKCcubGlzdC1ncm91cC1pdGVtOmZpcnN0Jyk7IHZhciBjb21tZW50VGV4dCA9ICQoJy5jb21tZW50LXRleHQ6Zmlyc3QnLGNvbW1lbnRJdGVtKTsgY29tbWVudFRleHQuYXR0cignY29udGVudGVkaXRhYmxlJywndHJ1ZScpOyBjb21tZW50VGV4dC5mb2N1cygpOyAkKGNvbW1lbnRUZXh0KS5kYXRhKCdwcmV2VGV4dCcsY29tbWVudFRleHQudGV4dCgpKTsgJChjb21tZW50VGV4dCkuYXBwZW5kKCc8YSBjbGFzcz0iYnRuIGJ0bi1pbmZvIGJ0bi1zbSBidG4tY2FuY2VsLXNhdmUtY29tbWVudCI+0J7RgtC80LXQvdCwPC9hPicpOyAkKGNvbW1lbnRUZXh0KS5hcHBlbmQoJzxhIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGJ0bi1zYXZlLWNvbW1lbnQiPtCh0L7RhdGA0LDQvdC40YLRjDwvYT4nKTsgfSBlLnByZXZlbnREZWZhdWx0KCk7IH0pOyAkKCdCT0RZJykub24oJ2NsaWNrJywnLmJ0bi1zYXZlLWNvbW1lbnQnLGZ1bmN0aW9uKGUpeyB2YXIgY29tbWVudHMgPSBuZXcgQ29tbWVudHMoJCgnLmFkZC1jb21tZW50LWZvcm06Zmlyc3QnKSk7IGNvbW1lbnRzLnNhdmVDb21tZW50KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IGUucHJldmVudERlZmF1bHQoKTsgfSk7ICQoJ0JPRFknKS5vbignY2xpY2snLCcuYnRuLWNhbmNlbC1zYXZlLWNvbW1lbnQnLGZ1bmN0aW9uKGUpeyB2YXIgY29tbWVudHMgPSBuZXcgQ29tbWVudHMoJCgnLmFkZC1jb21tZW50LWZvcm06Zmlyc3QnKSk7IGNvbW1lbnRzLmNhbmNlbFNhdmVDb21tZW50KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IGUucHJldmVudERlZmF1bHQoKTsgfSk7ICQoJ0JPRFknKS5vbigna2V5ZG93biBrZXl1cCcsJy5jb21tZW50LXRleHRbY29udGVudGVkaXRhYmxlPSJ0cnVlIl0nLGZ1bmN0aW9uKGUpeyBpZihlLmtleUNvZGUgPT0gMjcpIHsgdmFyIGNvbW1lbnRzID0gbmV3IENvbW1lbnRzKCQoJy5hZGQtY29tbWVudC1mb3JtOmZpcnN0JykpOyBjb21tZW50cy5jYW5jZWxTYXZlQ29tbWVudCgpOyBlLnN0b3BQcm9wYWdhdGlvbigpOyB9IGVsc2UgeyB2YXIgcHJldlRleHQgPSAkKHRoaXMpLmRhdGEoJ3ByZXZUZXh0Jyk7IGlmIChwcmV2VGV4dCAhPSAkKHRoaXMpLnRleHQoKSkgeyAkKHRoaXMpLmF0dHIoJ2RhdGEtZWRpdGVkJywgJzEnKTsgfSBlbHNlIHsgJCh0aGlzKS5hdHRyKCdkYXRhLWVkaXRlZCcsICcnKTsgfSB9IH0pOyA=");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("KGZ1bmN0aW9uKCQpe3ZhciBjYXJvdXNlbDt2YXIgaW5pdENhcm91c2VsQ2xhc3MgPSBmdW5jdGlvbihvcHRpb25zKXt2YXIgdGhpc0NsYXNzID0gdGhpczt0aGlzQ2xhc3MuY3VzdG9tQmFyRW5hYmxlZCA9ICEoZGNvcmVjbmcuaXNUb3VjaERldmljZSk7IHRoaXNDbGFzcy5jb250YWluZXIgPSAkKG9wdGlvbnMuY29udGFpbmVyU2VsZWN0b3IpO2lmICghdGhpc0NsYXNzLmNvbnRhaW5lci5sZW5ndGgpe3JldHVybjt9dGhpc0NsYXNzLml0ZW1zID0gJCgnPnVsPmxpJyx0aGlzQ2xhc3MuY29udGFpbmVyKTt2YXIgbGFzdEl0ZW0gPSB0aGlzQ2xhc3MuaXRlbXMubGFzdCgpO3RoaXNDbGFzcy51bCA9ICQoJz51bCcsdGhpc0NsYXNzLmNvbnRhaW5lcik7dGhpc0NsYXNzLml0ZW1zLmVhY2goZnVuY3Rpb24oKXt2YXIgdGhpc0l0ZW1IMyA9ICQoJz5oMycsdGhpcyk7aWYgKHRoaXNJdGVtSDMubGVuZ3RoKXt2YXIgY3VycmVudEgzV2lkdGggPSBwYXJzZUludCh0aGlzSXRlbUgzLndpZHRoKCkpO3ZhciBjdXJyZW50TGlDbGFzcyA9ICQodGhpcykuYXR0cignY2xhc3MnKTt2YXIgY2F0ZWdvcnlJdGVtcyA9ICQoJz51bD5saS4nICsgY3VycmVudExpQ2xhc3MsdGhpc0NsYXNzLmNvbnRhaW5lcik7dmFyIGNhdGVnb3J5SXRlbXNXaWR0aCA9IDA7Y2F0ZWdvcnlJdGVtcy5lYWNoKGZ1bmN0aW9uKCl7Y2F0ZWdvcnlJdGVtc1dpZHRoICs9IHBhcnNlSW50KCQodGhpcykud2lkdGgoKSk7Y2F0ZWdvcnlJdGVtc1dpZHRoICs9IHBhcnNlSW50KCQodGhpcykuY3NzKCdtYXJnaW4tcmlnaHQnKSk7fSk7aWYgKGN1cnJlbnRIM1dpZHRoID4gY2F0ZWdvcnlJdGVtc1dpZHRoKXt2YXIgbGFzdENhdGVnb3J5SXRlbSA9IGNhdGVnb3J5SXRlbXMubGFzdCgpO3ZhciBjdXJyZW50TWFyZ2luID0gcGFyc2VJbnQobGFzdENhdGVnb3J5SXRlbS5jc3MoJ21hcmdpbi1yaWdodCcpKTt2YXIgbmV3TWFyZ2luID0gY3VycmVudE1hcmdpbiArIGN1cnJlbnRIM1dpZHRoIC0gY2F0ZWdvcnlJdGVtc1dpZHRoICsgOTtsYXN0Q2F0ZWdvcnlJdGVtLmNzcygnbWFyZ2luLXJpZ2h0JywgbmV3TWFyZ2luKTt9fX0pO3RoaXNDbGFzcy5jYWNsU2l6ZXMgPSBmdW5jdGlvbigpe3RoaXNDbGFzcy5jb250YWluZXJXaWR0aCA9IHBhcnNlSW50KHRoaXNDbGFzcy5jb250YWluZXIud2lkdGgoKSk7dmFyIGl0ZW1XaWR0aCA9IHBhcnNlSW50KHRoaXNDbGFzcy5pdGVtcy53aWR0aCgpKTt2YXIgaXRlbU1hcmdpbkxlZnQgPSBwYXJzZUludCh0aGlzQ2xhc3MuaXRlbXMuY3NzKCdtYXJnaW4tbGVmdCcpKTt2YXIgaXRlbU1hcmdpblJpZ2h0ID0gcGFyc2VJbnQodGhpc0NsYXNzLml0ZW1zLmNzcygnbWFyZ2luLXJpZ2h0JykpO3RoaXNDbGFzcy5pdGVtRnVsbFdpZHRoID0gaXRlbVdpZHRoICsgaXRlbU1hcmdpblJpZ2h0ICsgaXRlbU1hcmdpbkxlZnQ7dmFyIGl0ZW1zV2lkdGggPSAwO3RoaXNDbGFzcy5pdGVtcy5lYWNoKGZ1bmN0aW9uKCl7aXRlbXNXaWR0aCArPSBwYXJzZUludCgkKHRoaXMpLndpZHRoKCkpO2l0ZW1zV2lkdGggKz0gcGFyc2VJbnQoJCh0aGlzKS5jc3MoJ21hcmdpbi1yaWdodCcpKTt9KTt0aGlzQ2xhc3MudWwuY3NzKCd3aWR0aCcsaXRlbXNXaWR0aCk7dGhpc0NsYXNzLml0ZW1zV2lkdGggPSBpdGVtc1dpZHRoO307dGhpc0NsYXNzLmFjdGl2YXRlUHJldkJ0biA9IGZ1bmN0aW9uKCl7aWYgKHRoaXNDbGFzcy5wcmV2QnRuLmxlbmd0aCl7dGhpc0NsYXNzLnByZXZCdG4ucmVtb3ZlQ2xhc3MoJ2luYWN0aXZlJyk7fX07dGhpc0NsYXNzLmFjdGl2YXRlTmV4dEJ0biA9IGZ1bmN0aW9uKCl7aWYgKHRoaXNDbGFzcy5uZXh0QnRuLmxlbmd0aCl7dGhpc0NsYXNzLm5leHRCdG4ucmVtb3ZlQ2xhc3MoJ2luYWN0aXZlJyk7fX07dGhpc0NsYXNzLmRlYWN0aXZhdGVQcmV2QnRuID0gZnVuY3Rpb24oKXtpZiAodGhpc0NsYXNzLnByZXZCdG4ubGVuZ3RoKXt0aGlzQ2xhc3MucHJldkJ0bi5hZGRDbGFzcygnaW5hY3RpdmUnKTt9fTt0aGlzQ2xhc3MuZGVhY3RpdmF0ZU5leHRCdG4gPSBmdW5jdGlvbigpe2lmICh0aGlzQ2xhc3MubmV4dEJ0bi5sZW5ndGgpe3RoaXNDbGFzcy5uZXh0QnRuLmFkZENsYXNzKCdpbmFjdGl2ZScpO319O3RoaXNDbGFzcy5hY3RpdmF0ZVNjcm9sbEJhciA9IGZ1bmN0aW9uKCl7aWYgKHRoaXNDbGFzcy5oc2Nyb2xsYmFyLmxlbmd0aCl7dGhpc0NsYXNzLmhzY3JvbGxiYXIucmVtb3ZlQ2xhc3MoJ2luYWN0aXZlJyk7fX07dGhpc0NsYXNzLm1vdmUgPSBmdW5jdGlvbihwb3Mpe2lmIChwb3MgPj0gdGhpc0NsYXNzLm1heExlZnQpe3BvcyA9IHRoaXNDbGFzcy5tYXhMZWZ0O3RoaXNDbGFzcy5kZWFjdGl2YXRlTmV4dEJ0bigpO2Rjb3JlY25nLm1vdXNlUHJlc3NlZERvd24gPSBmYWxzZTsgfSBlbHNlIHt0aGlzQ2xhc3MuYWN0aXZhdGVOZXh0QnRuKCk7fWlmIChwb3MgPD0gMCl7cG9zID0gMDt0aGlzQ2xhc3MuZGVhY3RpdmF0ZVByZXZCdG4oKTtkY29yZWNuZy5tb3VzZVByZXNzZWREb3duID0gZmFsc2U7IH0gZWxzZSB7dGhpc0NsYXNzLmFjdGl2YXRlUHJldkJ0bigpO31pZiAocG9zICE9IHRoaXNDbGFzcy5jb250YWluZXIuc2Nyb2xsTGVmdCgpKXt0aGlzQ2xhc3MuY29udGFpbmVyLnNjcm9sbExlZnQocG9zKTt9aWYgKHRoaXNDbGFzcy5jdXN0b21CYXJFbmFibGVkKXt2YXIgcGVyY2VudCA9ICgxMDAgLyAodGhpc0NsYXNzLml0ZW1zV2lkdGggLSB0aGlzQ2xhc3MuY29udGFpbmVyV2lkdGgpKSogcG9zO3ZhciBzY3JvbGxCdG5Qb3MgPSAoKHRoaXNDbGFzcy5zY3JvbGxhYmxlU3BhY2UgLyAxMDApKiBwZXJjZW50KTt0aGlzQ2xhc3Muc2Nyb2xsQnRuLmNzcygnbWFyZ2luLWxlZnQnLCBzY3JvbGxCdG5Qb3MgKyAncHgnKTt9fTt0aGlzQ2xhc3MuY2FjbFNpemVzKCk7aWYgKHRoaXNDbGFzcy5jb250YWluZXJXaWR0aCA8IHRoaXNDbGFzcy5pdGVtc1dpZHRoKXt0aGlzQ2xhc3MucHJldkJ0biA9ICQob3B0aW9ucy5wcmV2QnRuKTt0aGlzQ2xhc3MubmV4dEJ0biA9ICQob3B0aW9ucy5uZXh0QnRuKTt0aGlzQ2xhc3MubWF4TGVmdCA9IHRoaXNDbGFzcy5pdGVtc1dpZHRoIC0gdGhpc0NsYXNzLmNvbnRhaW5lcldpZHRoO3ZhciB3YWl0Rm9yU3RhcnQgPSAxMDA7dmFyIHN0YXJ0U3BlZWQgPSAxNTA7IHZhciBib29zdFNwZWVkID0gMC4zOyB2YXIgYm9vc3RNYXggPSA2OyBpZiAodGhpc0NsYXNzLm5leHRCdG4ubGVuZ3RoKXt0aGlzQ2xhc3MuYWN0aXZhdGVOZXh0QnRuKCk7dGhpc0NsYXNzLm5leHRCdG4ub2ZmKCdjbGljaycpO3RoaXNDbGFzcy5uZXh0QnRuLm9uKCdjbGljaycsZnVuY3Rpb24oZSl7dmFyIGN1cnJlbnRMZWZ0ID0gcGFyc2VJbnQodGhpc0NsYXNzLmNvbnRhaW5lci5zY3JvbGxMZWZ0KCkpO3ZhciBuZXh0TGVmdCA9IGN1cnJlbnRMZWZ0ICsgdGhpc0NsYXNzLml0ZW1GdWxsV2lkdGg7dGhpc0NsYXNzLm1vdmUobmV4dExlZnQpO2UucHJldmVudERlZmF1bHQoKTt9KTt2YXIgbmV4dE1vdXNlZG93biA9IGZ1bmN0aW9uKGJvb3N0KXtpZiAoZGNvcmVjbmcubW91c2VQcmVzc2VkRG93bil7c2V0VGltZW91dChmdW5jdGlvbiAoKXt0aGlzQ2xhc3MubmV4dEJ0bi5jbGljaygpO2Jvb3N0ID0gYm9vc3QgKyBib29zdFNwZWVkO2lmIChib29zdCA+IGJvb3N0TWF4KXtib29zdCA9IGJvb3N0TWF4O31uZXh0TW91c2Vkb3duKGJvb3N0KTt9LCBzdGFydFNwZWVkIC8gYm9vc3QpO319O3RoaXNDbGFzcy5uZXh0QnRuLm9mZignbW91c2Vkb3duJyk7dGhpc0NsYXNzLm5leHRCdG4ub24oJ21vdXNlZG93bicsZnVuY3Rpb24oZSl7ZGNvcmVjbmcubW91c2VQcmVzc2VkRG93biA9IHRydWU7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBib29zdCA9IDE7IG5leHRNb3VzZWRvd24oYm9vc3QpO30sd2FpdEZvclN0YXJ0KTt9KTt9O2lmICh0aGlzQ2xhc3MucHJldkJ0bi5sZW5ndGgpe3ZhciBjdXJyZW50TGVmdCA9IHBhcnNlSW50KHRoaXNDbGFzcy5jb250YWluZXIuc2Nyb2xsTGVmdCgpKTtpZiAoY3VycmVudExlZnQgPiAwKXt0aGlzQ2xhc3MuYWN0aXZhdGVQcmV2QnRuKCk7fXRoaXNDbGFzcy5wcmV2QnRuLm9mZignY2xpY2snKTt0aGlzQ2xhc3MucHJldkJ0bi5vbignY2xpY2snLGZ1bmN0aW9uKGUpe3ZhciBjdXJyZW50TGVmdCA9IHBhcnNlSW50KHRoaXNDbGFzcy5jb250YWluZXIuc2Nyb2xsTGVmdCgpKTt2YXIgbmV3UG9zID0gY3VycmVudExlZnQgLSB0aGlzQ2xhc3MuaXRlbUZ1bGxXaWR0aDt0aGlzQ2xhc3MubW92ZShuZXdQb3MpO2UucHJldmVudERlZmF1bHQoKTt9KTt2YXIgcHJldk1vdXNlZG93biA9IGZ1bmN0aW9uKGJvb3N0KXtpZiAoZGNvcmVjbmcubW91c2VQcmVzc2VkRG93bil7c2V0VGltZW91dChmdW5jdGlvbiAoKXt0aGlzQ2xhc3MucHJldkJ0bi5jbGljaygpO2Jvb3N0ID0gYm9vc3QgKyBib29zdFNwZWVkO2lmIChib29zdCA+IGJvb3N0TWF4KXtib29zdCA9IGJvb3N0TWF4O31wcmV2TW91c2Vkb3duKGJvb3N0KTt9LCBzdGFydFNwZWVkIC8gYm9vc3QpO319O3RoaXNDbGFzcy5wcmV2QnRuLm9mZignbW91c2Vkb3duJyk7dGhpc0NsYXNzLnByZXZCdG4ub24oJ21vdXNlZG93bicsZnVuY3Rpb24oZSl7ZGNvcmVjbmcubW91c2VQcmVzc2VkRG93biA9IHRydWU7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBib29zdCA9IDE7IHByZXZNb3VzZWRvd24oYm9vc3QpO30sd2FpdEZvclN0YXJ0KTt9KTt9O3RoaXNDbGFzcy5pbml0U2Nyb2xsQmFyID0gZnVuY3Rpb24oKXtpZiAodGhpc0NsYXNzLmN1c3RvbUJhckVuYWJsZWQpe3RoaXNDbGFzcy5oc2Nyb2xsYmFyID0gJChvcHRpb25zLnNjcm9sbGJhclNlbGVjdG9yKTt0aGlzQ2xhc3Muc2Nyb2xsQnRuID0gJCgnLnNjcm9sbCcsIHRoaXNDbGFzcy5oc2Nyb2xsYmFyKTt0aGlzQ2xhc3MuaHNjcm9sbGJhcldpZHRoID0gcGFyc2VJbnQodGhpc0NsYXNzLmhzY3JvbGxiYXIud2lkdGgoKSk7dGhpc0NsYXNzLnNjcm9sbEJ0bldpZHRoID0gdGhpc0NsYXNzLmNvbnRhaW5lcldpZHRoICogKCgoMTAwIC8gdGhpc0NsYXNzLml0ZW1zV2lkdGgpKiAodGhpc0NsYXNzLmhzY3JvbGxiYXJXaWR0aCkpLyAxMDApO3RoaXNDbGFzcy5zY3JvbGxCdG5QcmVzc2VzID0gZmFsc2U7dGhpc0NsYXNzLnNjcm9sbGFibGVTcGFjZSA9IHRoaXNDbGFzcy5oc2Nyb2xsYmFyV2lkdGggLSB0aGlzQ2xhc3Muc2Nyb2xsQnRuV2lkdGg7dGhpc0NsYXNzLmFjdGl2YXRlU2Nyb2xsQmFyKCk7dGhpc0NsYXNzLnNjcm9sbEJ0bi53aWR0aCh0aGlzQ2xhc3Muc2Nyb2xsQnRuV2lkdGgpO3RoaXNDbGFzcy5zY3JvbGxCdG4ub24oJ2NsaWNrJyxmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpO30pO3RoaXNDbGFzcy5zY3JvbGxCdG4ubW91c2Vkb3duKGZ1bmN0aW9uIChlKXt0aGlzQ2xhc3Muc2Nyb2xsQnRuUHJlc3NlcyA9IHRydWU7dmFyIHNjcm9sbEJ0bkNvb3JkcyA9IHRoaXNDbGFzcy5zY3JvbGxCdG4ub2Zmc2V0KCk7dGhpc0NsYXNzLnNjcm9sbEJ0blNoaWZ0WCA9IGUucGFnZVggLSBzY3JvbGxCdG5Db29yZHMubGVmdDtlLnByZXZlbnREZWZhdWx0KCk7fSk7JChkb2N1bWVudCkubW91c2V1cChmdW5jdGlvbiAoZSl7dGhpc0NsYXNzLnNjcm9sbEJ0blByZXNzZXMgPSBmYWxzZTt9KTskKGRvY3VtZW50KS5tb3VzZW1vdmUoZnVuY3Rpb24gKGUpe2lmICh0aGlzQ2xhc3Muc2Nyb2xsQnRuUHJlc3Nlcyl7dmFyIGhzY3JvbGxiYXJDb29yZHMgPSB0aGlzQ2xhc3MuaHNjcm9sbGJhci5vZmZzZXQoKTt2YXIgbmV3TGVmdCA9IGUucGFnZVggLSB0aGlzQ2xhc3Muc2Nyb2xsQnRuU2hpZnRYIC0gaHNjcm9sbGJhckNvb3Jkcy5sZWZ0O2lmIChuZXdMZWZ0IDwgMCluZXdMZWZ0ID0gMDt2YXIgcmlnaHRFZGdlID0gdGhpc0NsYXNzLmhzY3JvbGxiYXIub3V0ZXJXaWR0aCgpLSB0aGlzQ2xhc3Muc2Nyb2xsQnRuLm91dGVyV2lkdGgoKTtpZiAobmV3TGVmdCA+IHJpZ2h0RWRnZSluZXdMZWZ0ID0gcmlnaHRFZGdlO3ZhciBwZXJjZW50ID0gKDEwMCAvIHRoaXNDbGFzcy5zY3JvbGxhYmxlU3BhY2UpKiBuZXdMZWZ0O2lmIChwZXJjZW50ID4gOTkuNSl7cGVyY2VudCA9IDEwMDt9dmFyIG5ld1BvcyA9ICgoKHRoaXNDbGFzcy5pdGVtc1dpZHRoIC0gdGhpc0NsYXNzLmNvbnRhaW5lcldpZHRoKS8gMTAwKSogcGVyY2VudCk7dGhpc0NsYXNzLm1vdmUobmV3UG9zKTt9fSk7JCh0aGlzQ2xhc3MuaHNjcm9sbGJhcikub24oJ2NsaWNrJyxmdW5jdGlvbihlKXt2YXIgaHNjcm9sbGJhckNvb3JkcyA9IHRoaXNDbGFzcy5oc2Nyb2xsYmFyLm9mZnNldCgpO3ZhciBuZXdMZWZ0ID0gZS5wYWdlWCAtIGhzY3JvbGxiYXJDb29yZHMubGVmdDtpZiAobmV3TGVmdCA8IDApbmV3TGVmdCA9IDA7dmFyIHJpZ2h0RWRnZSA9IHRoaXNDbGFzcy5oc2Nyb2xsYmFyLm91dGVyV2lkdGgoKS0gdGhpc0NsYXNzLnNjcm9sbEJ0bi5vdXRlcldpZHRoKCk7aWYgKG5ld0xlZnQgPiByaWdodEVkZ2UpbmV3TGVmdCA9IHJpZ2h0RWRnZTt2YXIgcGVyY2VudCA9ICgxMDAgLyB0aGlzQ2xhc3Muc2Nyb2xsYWJsZVNwYWNlKSogbmV3TGVmdDtpZiAocGVyY2VudCA+IDk5LjUpe3BlcmNlbnQgPSAxMDA7fXZhciBuZXdQb3MgPSAoKCh0aGlzQ2xhc3MuaXRlbXNXaWR0aCAtIHRoaXNDbGFzcy5jb250YWluZXJXaWR0aCkvIDEwMCkqIHBlcmNlbnQpO3RoaXNDbGFzcy5tb3ZlKG5ld1Bvcyk7fSk7dGhpc0NsYXNzLmNvbnRhaW5lci5vbigna2V5ZG93bicsZnVuY3Rpb24oZSl7dmFyIGRlbHRhID0gKGUua2V5Q29kZSA9PT0gMzkpPyAxMCA6IC0xMDt2YXIgbmV3TGVmdCA9IHBhcnNlSW50KHRoaXNDbGFzcy5zY3JvbGxCdG4uY3NzKCdtYXJnaW4tbGVmdCcpKSsgZGVsdGE7aWYgKG5ld0xlZnQgPCAwKW5ld0xlZnQgPSAwO3ZhciByaWdodEVkZ2UgPSB0aGlzQ2xhc3MuaHNjcm9sbGJhci5vdXRlcldpZHRoKCktIHRoaXNDbGFzcy5zY3JvbGxCdG4ub3V0ZXJXaWR0aCgpO2lmIChuZXdMZWZ0ID4gcmlnaHRFZGdlKW5ld0xlZnQgPSByaWdodEVkZ2U7dmFyIHBlcmNlbnQgPSAoMTAwIC8gdGhpc0NsYXNzLnNjcm9sbGFibGVTcGFjZSkqIG5ld0xlZnQ7aWYgKHBlcmNlbnQgPiA5OS41KXtwZXJjZW50ID0gMTAwO312YXIgbmV3UG9zID0gKCgodGhpc0NsYXNzLml0ZW1zV2lkdGggLSB0aGlzQ2xhc3MuY29udGFpbmVyV2lkdGgpLyAxMDApKiBwZXJjZW50KTt0aGlzQ2xhc3MubW92ZShuZXdQb3MpO30pO3RoaXNDbGFzcy5jb250YWluZXIub24oJ3doZWVsJyxmdW5jdGlvbihlKXt2YXIgaHNjcm9sbGJhckNvb3JkcyA9IHRoaXNDbGFzcy5oc2Nyb2xsYmFyLm9mZnNldCgpO3ZhciBuZXdMZWZ0ID0gcGFyc2VJbnQodGhpc0NsYXNzLnNjcm9sbEJ0bi5jc3MoJ21hcmdpbi1sZWZ0JykpKyBlLm9yaWdpbmFsRXZlbnQuZGVsdGFYO2lmIChuZXdMZWZ0IDwgMCluZXdMZWZ0ID0gMDt2YXIgcmlnaHRFZGdlID0gdGhpc0NsYXNzLmhzY3JvbGxiYXIub3V0ZXJXaWR0aCgpLSB0aGlzQ2xhc3Muc2Nyb2xsQnRuLm91dGVyV2lkdGgoKTtpZiAobmV3TGVmdCA+IHJpZ2h0RWRnZSluZXdMZWZ0ID0gcmlnaHRFZGdlO3ZhciBwZXJjZW50ID0gKDEwMCAvIHRoaXNDbGFzcy5zY3JvbGxhYmxlU3BhY2UpKiBuZXdMZWZ0O2lmIChwZXJjZW50ID4gOTkuNSl7cGVyY2VudCA9IDEwMDt9dmFyIG5ld1BvcyA9ICgoKHRoaXNDbGFzcy5pdGVtc1dpZHRoIC0gdGhpc0NsYXNzLmNvbnRhaW5lcldpZHRoKS8gMTAwKSogcGVyY2VudCk7dGhpc0NsYXNzLm1vdmUobmV3UG9zKTt9KTt9IGVsc2Uge3RoaXNDbGFzcy5jb250YWluZXIuY3NzKCdvdmVyZmxvdy14JywgJ3Njcm9sbCcpO319O3RoaXNDbGFzcy5pbml0U2Nyb2xsQmFyKCk7fTt9OyBjYXJvdXNlbCA9IG5ldyBpbml0Q2Fyb3VzZWxDbGFzcyh7Y29udGFpbmVyU2VsZWN0b3I6ICcjc2hvcHMtY2Fyb3VzZWwnLHNjcm9sbGJhclNlbGVjdG9yOiAnLnNob3BzLXNsaWRlciAuaC1zY3JvbGwtYmFyJyxwcmV2QnRuOiAnLnNob3BzLXNsaWRlciAuamNhcm91c2VsLWNvbnRyb2wtcHJldicsbmV4dEJ0bjogJy5zaG9wcy1zbGlkZXIgLmpjYXJvdXNlbC1jb250cm9sLW5leHQnfSk7Y2Fyb3VzZWwyID0gbmV3IGluaXRDYXJvdXNlbENsYXNzKHtjb250YWluZXJTZWxlY3RvcjogJy5kaXNjb3VudHMtY2Fyb3VzZWwnLHNjcm9sbGJhclNlbGVjdG9yOiAnLmRpc2NvdW50cy1jYXJvdXNlbC1oLXNjcm9sbC1iYXInfSk7dmFyIEZhdm9yaXRlc1Nob3BzID0gZnVuY3Rpb24ob3B0aW9ucyl7dmFyIHRoaXNDbGFzcyA9IHRoaXM7dGhpc0NsYXNzLmNvbnRhaW5lciA9ICQob3B0aW9ucy5jb250YWluZXJTZWxlY3Rvcik7dGhpc0NsYXNzLmZhdlNob3BzQ2xhc3MgPSBvcHRpb25zLmZhdlNob3BzQ2xhc3M7IHRoaXNDbGFzcy5mYXZTaG9wc1NlbGVjdG9yID0gJ2xpLicgKyB0aGlzQ2xhc3MuZmF2U2hvcHNDbGFzczt0aGlzQ2xhc3MuYWRkQnRuc1NlbGVjdG9yID0gb3B0aW9ucy5hZGRCdG5zU2VsZWN0b3I7dGhpc0NsYXNzLnJlbW92ZUJ0bnNTZWxlY3RvciA9IG9wdGlvbnMucmVtb3ZlQnRuc1NlbGVjdG9yO3RoaXNDbGFzcy5hZGRCdG5zID0gJCh0aGlzQ2xhc3MuYWRkQnRuc1NlbGVjdG9yKTsgdGhpc0NsYXNzLnJlbW92ZUJ0bnMgPSAkKHRoaXNDbGFzcy5yZW1vdmVCdG5zU2VsZWN0b3IpOyB0aGlzQ2xhc3MuY2xpY2tBZGRUb0Zhdm9yaXRlcyA9IGZ1bmN0aW9uKGUpe3ZhciBzaG9wSWQgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtc2lkJyk7dGhpc0NsYXNzLmFkZFRvRmF2b3JpdGVzKHNob3BJZCk7ZS5wcmV2ZW50RGVmYXVsdCgpO307dGhpc0NsYXNzLmNsaWNrUmVtb3ZlRnJvbUZhdm9yaXRlcyA9IGZ1bmN0aW9uKGUpe3ZhciBzaG9wSWQgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtc2lkJyk7dGhpc0NsYXNzLnJlbW92ZUZyb21GYXZvcml0ZXMoc2hvcElkKTtlLnByZXZlbnREZWZhdWx0KCk7fTt0aGlzQ2xhc3MuYWRkVG9GYXZvcml0ZXMgPSBmdW5jdGlvbihzaG9wSWQpe2lmIChkY29yZWNuZy51c2VySWQgPT0gMCl7IH0gZWxzZSB7IHZhciBkYXRhID0ge2NpdHlfaWQ6IGRjb3JlY25nLmNpdHlJZCxzaG9wX2lkOiBzaG9wSWR9O0FwaS5wb3N0KCcvYXBpdjIvZmF2b3JpdGVzaG9wcy8nLCBkYXRhLCBmdW5jdGlvbihyZXNwb25zZSl7fSk7dGhpc0NsYXNzLmFkZFNob3BUb1NsaWRlcihzaG9wSWQpO3ZhciBhZGRCdG5zID0gJCh0aGlzQ2xhc3MuYWRkQnRuc1NlbGVjdG9yICsgJ1tkYXRhLXNpZD0iJyArIHNob3BJZCArICciXScpO3ZhciByZW1vdmVCdG5zID0gJCh0aGlzQ2xhc3MucmVtb3ZlQnRuc1NlbGVjdG9yICsgJ1tkYXRhLXNpZD0iJyArIHNob3BJZCArICciXScpO2FkZEJ0bnMuYWRkQ2xhc3MoJ2hpZGRlbicpO3JlbW92ZUJ0bnMucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpO319O3RoaXNDbGFzcy5yZW1vdmVGcm9tRmF2b3JpdGVzID0gZnVuY3Rpb24oc2hvcElkKXtpZiAoZGNvcmVjbmcudXNlcklkID09IDApeyB9IGVsc2UgeyB2YXIgZGF0YSA9IHtjaXR5X2lkOiBkY29yZWNuZy5jaXR5SWQsc2hvcF9pZDogc2hvcElkfTtBcGkuZGVsZXRlKCcvYXBpdjIvZmF2b3JpdGVzaG9wcy8nLCBkYXRhLCBmdW5jdGlvbihyZXNwb25zZSl7fSk7dGhpc0NsYXNzLnJlbW92ZVNob3BGcm9tU2xpZGVyKHNob3BJZCk7fX07dGhpc0NsYXNzLmFkZFNob3BUb1NsaWRlciA9IGZ1bmN0aW9uKHNob3BJZCl7dmFyIGZhdlNob3BzTGkgPSAkKHRoaXNDbGFzcy5mYXZTaG9wc1NlbGVjdG9yICsgJzpsYXN0Jyx0aGlzQ2xhc3MuY29udGFpbmVyKTsgdmFyIHNob3BMaUZhdiA9ICQodGhpc0NsYXNzLmZhdlNob3BzU2VsZWN0b3IgKyAnW2RhdGEtc2lkPSInICsgc2hvcElkICsgJyJdJyx0aGlzQ2xhc3MuY29udGFpbmVyKTtpZiAoIXNob3BMaUZhdi5sZW5ndGgpeyB2YXIgc2hvcExpID0gJCgnW2RhdGEtc2lkPSInICsgc2hvcElkICsgJyJdJywgdGhpc0NsYXNzLmNvbnRhaW5lcik7dmFyIHNob3BDYXRlZ29yeUlkID0gc2hvcExpLmF0dHIoJ2RhdGEtY2lkJyk7dmFyIGh0bWwgPSAnPGxpIGNsYXNzPSInICsgdGhpc0NsYXNzLmZhdlNob3BzQ2xhc3MgKyAnIiBkYXRhLXNpZD0iJyArIHNob3BJZCArICciIGRhdGEtY2lkPSInICsgc2hvcENhdGVnb3J5SWQgKyAnIj4nO2lmICghZmF2U2hvcHNMaS5sZW5ndGgpe2h0bWwgKz0gJzxoMz48YSBocmVmPSInICsgZGNvcmVjbmcud2Vic2l0ZXVybCArIGRjb3JlY25nLmNpdHl1cmxkYXRlICsgJyI+0JvRjtCx0LjQvNGL0LU8L2E+PC9oMz4nO31odG1sICs9ICc8YSBkYXRhLXNpZD0iJyArIHNob3BJZCArICciIHRpdGxlPSLQo9C00LDQu9C40YLRjCDQuNC3INC70Y7QsdC40LzRi9GFIiBocmVmPSIjIiBjbGFzcz0iZGVsZXRlLXNob3AtZnJvbS1mYXZvcml0ZXMiPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLW1pbnVzLXNpZ24iPjwvc3Bhbj48L2E+JztodG1sICs9ICQoJy5pbWFnZScsIHNob3BMaSkuY2xvbmUoKS53cmFwKCc8cD4nKS5wYXJlbnQoKS5odG1sKCk7aHRtbCArPSAkKCcuc2hvcC1kaXNjb3VudHMnLCBzaG9wTGkpLmNsb25lKCkud3JhcCgnPHA+JykucGFyZW50KCkuaHRtbCgpO2h0bWwgKz0gJzwvbGk+JztpZiAoZmF2U2hvcHNMaS5sZW5ndGgpeyAkKGh0bWwpLmluc2VydEFmdGVyKGZhdlNob3BzTGkpO30gZWxzZSB7ICQoJ3VsOmZpcnN0JywgdGhpc0NsYXNzLmNvbnRhaW5lcikucHJlcGVuZChodG1sKTt9c2hvcExpLmFkZENsYXNzKCdoaWRkZW4nKTsgdmFyIGgzID0gJCgnPmgzJyxzaG9wTGkpO2lmIChoMy5sZW5ndGgpeyB2YXIgaDNIVE1MID0gaDMuY2xvbmUoKS53cmFwKCc8cD4nKS5wYXJlbnQoKS5odG1sKCk7dmFyIG5leHRTaG9wSW5DYXRlZ29yeSA9ICQoJ2xpLmMtJyArIHNob3BDYXRlZ29yeUlkICsgJzp2aXNpYmxlOmZpcnN0Jyk7aWYgKG5leHRTaG9wSW5DYXRlZ29yeS5sZW5ndGgpe25leHRTaG9wSW5DYXRlZ29yeS5wcmVwZW5kKGgzSFRNTCk7fX0gZWxzZSB7fX19O3RoaXNDbGFzcy5yZW1vdmVTaG9wRnJvbVNsaWRlciA9IGZ1bmN0aW9uKHNob3BJZCl7dmFyIHNob3BMaUZhdiA9ICQodGhpc0NsYXNzLmZhdlNob3BzU2VsZWN0b3IgKyAnW2RhdGEtc2lkPSInICsgc2hvcElkICsgJyJdJyx0aGlzQ2xhc3MuY29udGFpbmVyKTtpZiAoc2hvcExpRmF2Lmxlbmd0aCl7IGlmICgkKCc+aDMnLHNob3BMaUZhdikubGVuZ3RoKXt2YXIgaDNIdG1sID0gJCgnPmgzJyxzaG9wTGlGYXYpLmNsb25lKCkud3JhcCgnPHA+JykucGFyZW50KCkuaHRtbCgpO3Nob3BMaUZhdi5yZW1vdmUoKTt2YXIgZmF2U2hvcHNMaUZpcnN0ID0gJCh0aGlzQ2xhc3MuZmF2U2hvcHNTZWxlY3RvciArICc6Zmlyc3QnLHRoaXNDbGFzcy5jb250YWluZXIpO2lmIChmYXZTaG9wc0xpRmlyc3QubGVuZ3RoKXtmYXZTaG9wc0xpRmlyc3QucHJlcGVuZChoM0h0bWwpO319IGVsc2Uge3Nob3BMaUZhdi5yZW1vdmUoKTt9dmFyIHNob3BMaSA9ICQoJ1tkYXRhLXNpZD0iJyArIHNob3BJZCArICciXScsdGhpc0NsYXNzLmNvbnRhaW5lcik7c2hvcExpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTt2YXIgYWRkQnRucyA9ICQodGhpc0NsYXNzLmFkZEJ0bnNTZWxlY3RvciArICdbZGF0YS1zaWQ9IicgKyBzaG9wSWQgKyAnIl0nKTt2YXIgcmVtb3ZlQnRucyA9ICQodGhpc0NsYXNzLnJlbW92ZUJ0bnNTZWxlY3RvciArICdbZGF0YS1zaWQ9IicgKyBzaG9wSWQgKyAnIl0nKTthZGRCdG5zLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTtyZW1vdmVCdG5zLmFkZENsYXNzKCdoaWRkZW4nKTt2YXIgc2hvcENhdGVnb3J5SWQgPSBzaG9wTGkuYXR0cignZGF0YS1jaWQnKTt2YXIgaDMgPSAkKCdsaS5jLScgKyBzaG9wQ2F0ZWdvcnlJZCArICc6dmlzaWJsZTpub3QoOmZpcnN0KT5oMycpO2gzLnJlbW92ZSgpO319OyQoJ0JPRFknKS5vbignY2xpY2snLHRoaXNDbGFzcy5hZGRCdG5zU2VsZWN0b3IsdGhpc0NsYXNzLmNsaWNrQWRkVG9GYXZvcml0ZXMpOyQoJ0JPRFknKS5vbignY2xpY2snLHRoaXNDbGFzcy5yZW1vdmVCdG5zU2VsZWN0b3IsdGhpc0NsYXNzLmNsaWNrUmVtb3ZlRnJvbUZhdm9yaXRlcyk7fTt2YXIgZmF2b3JpdGVzU2hvcHMgPSBuZXcgRmF2b3JpdGVzU2hvcHMoe2NvbnRhaW5lclNlbGVjdG9yOiAnI3Nob3BzLWNhcm91c2VsJyxhZGRCdG5zU2VsZWN0b3I6ICcuYWRkLXNob3AtdG8tZmF2b3JpdGVzJywgcmVtb3ZlQnRuc1NlbGVjdG9yOiAnLmRlbGV0ZS1zaG9wLWZyb20tZmF2b3JpdGVzJywgZmF2U2hvcHNDbGFzczogJ2MtMCcgfSk7fShqUXVlcnkpKTs=");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("alF1ZXJ5KCdCT0RZJykub24oJ2tleXVwIGN1dCBwYXN0ZScsJy5zaWRlYmFyIC5zZWFyY2gtc2hvcC1pbnB1dCcsZnVuY3Rpb24oZSl7dmFyIHNwZWNpYWxLZXlDb2RlTWFwID0gezk6ICJ0YWIiLDI3OiAiZXNjIiwzNzogImxlZnQiLDM5OiAicmlnaHQiLDEzOiAiZW50ZXIiLDM4OiAidXAiLDQwOiAiZG93biIsMTY6ICJzaGlmdCIsMTc6ICJjdHJsIiwxODogImFsdCJ9O2lmIChzcGVjaWFsS2V5Q29kZU1hcFtlLndoaWNoIHx8IGUua2V5Q29kZV0pe3JldHVybjt9dmFyIGVsID0galF1ZXJ5KHRoaXMpO3ZhciB2YWwgPSBlbC52YWwoKTt2YXIgc2hvcHNTZWxlY3RvciA9ICcuc2lkZWJhci1tZW51IFtkYXRhLXNob3AtbmFtZV0nO2lmICh2YWwgPT0gJycpe2pRdWVyeShzaG9wc1NlbGVjdG9yKS5jc3MoJ2Rpc3BsYXknLCdibG9jaycpO30gZWxzZSB7alF1ZXJ5KHNob3BzU2VsZWN0b3IpLmVhY2goZnVuY3Rpb24oKXt2YXIgc2hvcE5hbWUgPSBqUXVlcnkodGhpcykuYXR0cignZGF0YS1zaG9wLW5hbWUnKTt2YXIgcmUgPSBuZXcgUmVnRXhwKHZhbCwiaSIpO2lmKHNob3BOYW1lLnNlYXJjaChyZSk+PSAwKXtqUXVlcnkodGhpcykuY3NzKCdkaXNwbGF5JywnYmxvY2snKTt9IGVsc2Uge2pRdWVyeSh0aGlzKS5jc3MoJ2Rpc3BsYXknLCdub25lJyk7fX0pOyQoJy5zaG9wLWNhdGVnb3J5LWNvbGxhcHNlIC5jb2xsYXBzZScpLmNvbGxhcHNlKCdzaG93Jyk7fSQoJy5zaG9wLWNhdGVnb3J5LWNvbGxhcHNlJykuY3NzKCdkaXNwbGF5JywnJyk7JCgnLnNob3AtY2F0ZWdvcnktY29sbGFwc2UnKS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB0b3RhbCA9ICQoJ1tkYXRhLXNob3AtbmFtZV06dmlzaWJsZScsdGhpcykubGVuZ3RoOyQoJy50b3RhbCcsdGhpcykuaHRtbCh0b3RhbCk7aWYgKHRvdGFsID09IDApeyQodGhpcykuY3NzKCdkaXNwbGF5Jywnbm9uZScpO30gZWxzZSB7fX0pOyQoJy5zaG9wcy1saXN0LWNvbnRhaW5lciAubm8tc2hvcHMnKS5yZW1vdmUoKTtpZighJCgnLnNob3AtY2F0ZWdvcnktY29sbGFwc2U6dmlzaWJsZScpLmxlbmd0aCl7alF1ZXJ5KCcuc2hvcHMtbGlzdC1jb250YWluZXInKS5wcmVwZW5kKCc8ZGl2IGNsYXNzPSJjb2wteHMtMTIgbm8tc2hvcHMiPjxwIGNsYXNzPSJhbGVydCBhbGVydC13YXJuaW5nIj7QnNCw0LPQsNC30LjQvdGLINC90LUg0L3QsNC50LTQtdC90Ys8L3A+PC9kaXY+Jyk7fX0pOw==");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("TXlub3Rlc0xpc3RzID0gZnVuY3Rpb24oKXt2YXIgdGMgPSB0aGlzO3RjLmlucHV0TmFtZSA9IGZhbHNlO3RjLm5ld0xpc3RNb2RhbCA9ICQoJy5uZXctbGlzdC1tb2RhbCcpO3RjLnNob3dGb3JtQnRuU2VsZWN0b3IgPSAnLmFkZC1saXN0LWJ0bic7dGMuc2hvd0VkaXRMaXN0Rm9ybUJ0biA9IGZhbHNlOyB0Yy5saXN0TmFtZVNlbGVjdG9yID0gZmFsc2U7IHRjLm5vdGVzTGlzdElkID0gZmFsc2U7IHRjLmFkZExpc3RJZCA9IGZhbHNlOyB0Yy5wcm9kdWN0SWQgPSBmYWxzZTsgdGMuZm9yY2VDcmVhdGUgPSBmYWxzZTsgdGMubGlzdExpbmtCdG4gPSBmYWxzZTsgdGMubm90ZXNMaXN0ID0gZmFsc2U7dGMuc2hvd0xpc3RMaW5rQnRuQ2xpY2sgPSBmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7ZS5zdG9wUHJvcGFnYXRpb24oKTsgaWYgKCQoJy5wb3BvdmVyLmVkaXQtbGlzdC1tb2RhbCcpLmlzKCc6dmlzaWJsZScpKXt0Yy5oaWRlTW9kYWxMaXN0TGluaygpO30gZWxzZSB7dGMubGlzdExpbmtCdG4gPSAkKHRoaXMpO3RjLnNob3dNb2RhbExpc3RMaW5rKCk7fWUucHJldmVudERlZmF1bHQoKTt9O3RjLnNob3dNb2RhbExpc3RMaW5rID0gZnVuY3Rpb24oKXt2YXIgdGVtcGxhdGVIdG1sID0gJzxkaXYgY2xhc3M9InBvcG92ZXIgbGlzdC1saW5rLW1vZGFsIj4nO3RlbXBsYXRlSHRtbCArPSAnPGRpdiBjbGFzcz0iYXJyb3ciPjwvZGl2Pic7dGVtcGxhdGVIdG1sICs9ICc8aDMgY2xhc3M9InBvcG92ZXItaGVhZGVyIj48L2gzPic7dGVtcGxhdGVIdG1sICs9ICc8ZGl2IGNsYXNzPSJwb3BvdmVyLWNvbnRlbnQiPic7dGVtcGxhdGVIdG1sICs9ICc8L2Rpdj4nO3RlbXBsYXRlSHRtbCArPSAnPC9kaXY+Jzt2YXIgY29udGVudEh0bWwgPSAnJztjb250ZW50SHRtbCArPSAnPGRpdiBjbGFzcz0icm93Ij4nO2NvbnRlbnRIdG1sICs9ICc8ZGl2IGNsYXNzPSJjb2wteHMtMTIiPic7Y29udGVudEh0bWwgKz0gJzxpbnB1dCByZWFkb25seSB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIGlucHV0LXNtIGxpc3QtbGluayIgdmFsdWU9IicgKyAkKHRjLmxpc3RMaW5rQnRuKS5hdHRyKCdkYXRhLWxpbmsnKSsgJyIgLz4nO2NvbnRlbnRIdG1sICs9ICc8L2Rpdj4nO2NvbnRlbnRIdG1sICs9ICc8L2Rpdj4nO3ZhciBvcHRpb25zID0ge2NvbnRlbnQ6IGNvbnRlbnRIdG1sLGh0bWw6IHRydWUsdGVtcGxhdGU6IHRlbXBsYXRlSHRtbCxwbGFjZW1lbnQ6ICdib3R0b20nfTskKHRjLmxpc3RMaW5rQnRuKS5wb3BvdmVyKG9wdGlvbnMpOyQodGMubGlzdExpbmtCdG4pLnBvcG92ZXIoJ3Nob3cnKTt0Yy5pbnB1dE5hbWUgPSAkKCcubGlzdC1saW5rLW1vZGFsIC5saXN0LWxpbmsnKTt0Yy5pbnB1dE5hbWUuc2VsZWN0KCk7IH07dGMuc2hvd01vZGFsQ3JlYXRlTmV3TGlzdEZvcm0gPSBmdW5jdGlvbigpe3ZhciB0ZW1wbGF0ZUh0bWwgPSAnPGRpdiBjbGFzcz0icG9wb3ZlciBuZXctbGlzdC1tb2RhbCI+Jzt0ZW1wbGF0ZUh0bWwgKz0gJzxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj4nO3RlbXBsYXRlSHRtbCArPSAnPGgzIGNsYXNzPSJwb3BvdmVyLWhlYWRlciI+PC9oMz4nO3RlbXBsYXRlSHRtbCArPSAnPGRpdiBjbGFzcz0icG9wb3Zlci1jb250ZW50Ij4nO3RlbXBsYXRlSHRtbCArPSAnPC9kaXY+Jzt0ZW1wbGF0ZUh0bWwgKz0gJzwvZGl2Pic7dmFyIGNvbnRlbnRIdG1sID0gJzxmb3JtIGNsYXNzPSJhZGQtbGlzdC1mb3JtIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iIyI+Jztjb250ZW50SHRtbCArPSAnPGRpdiBjbGFzcz0icm93Ij4nO2NvbnRlbnRIdG1sICs9ICc8ZGl2IGNsYXNzPSJjb2wteHMtMTIiPic7Y29udGVudEh0bWwgKz0gJzx0ZXh0YXJlYSBtYXhsZW5ndGg9IjI1NSIgbmFtZT0ibmFtZSIgcGxhY2Vob2xkZXI9ItCd0LDQt9Cy0LDQvdC40LUg0YHQv9C40YHQutCwIiBjbGFzcz0iZm9ybS1jb250cm9sIGlucHV0LXNtIGxpc3QtbmFtZSI+PC90ZXh0YXJlYT4nO2NvbnRlbnRIdG1sICs9ICc8c3BhbiBjbGFzcz0iaGVscC1ibG9jayI+0L3QsNC\/0YDQuNC80LXRgCAi0J\/QvtC00LDRgNC60LgiPC9zcGFuPic7Y29udGVudEh0bWwgKz0gJzwvZGl2Pic7Y29udGVudEh0bWwgKz0gJzwvZGl2Pic7Y29udGVudEh0bWwgKz0gJzxkaXYgY2xhc3M9InJvdyI+Jztjb250ZW50SHRtbCArPSAnPGRpdiBjbGFzcz0iY29sLXhzLTEyIj4nO2NvbnRlbnRIdG1sICs9ICc8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBidG4tc20iIGRhdGEtbG9hZGluZy10ZXh0PSLQlNC+0LHQsNCy0LjRgtGMLi4uIj7QlNC+0LHQsNCy0LjRgtGMPC9idXR0b24+Jztjb250ZW50SHRtbCArPSAnPC9kaXY+Jztjb250ZW50SHRtbCArPSAnPC9kaXY+Jztjb250ZW50SHRtbCArPSAnPC9mb3JtPic7dmFyIG9wdGlvbnMgPSB7Y29udGVudDogY29udGVudEh0bWwsaHRtbDogdHJ1ZSx0ZW1wbGF0ZTogdGVtcGxhdGVIdG1sLHBsYWNlbWVudDogJ2JvdHRvbSd9OyQodGMuc2hvd0Zvcm1CdG5TZWxlY3RvcikucG9wb3ZlcihvcHRpb25zKTskKHRjLnNob3dGb3JtQnRuU2VsZWN0b3IpLnBvcG92ZXIoJ3Nob3cnKTt0Yy5pbnB1dE5hbWUgPSAkKCcuYWRkLWxpc3QtZm9ybSAubGlzdC1uYW1lJyk7aWYgKCFkY29yZWNuZy5pc1RvdWNoRGV2aWNlKXt0Yy5pbnB1dE5hbWUuZm9jdXMoKTsgfX07dGMuc2hvd01vZGFsRWRpdExpc3RGb3JtID0gZnVuY3Rpb24oKXt2YXIgZWRpdGVkTGlzdE5hbWUgPSAkKHRjLmxpc3ROYW1lU2VsZWN0b3IpLnRleHQoKTt2YXIgdGVtcGxhdGVIdG1sID0gJzxkaXYgY2xhc3M9InBvcG92ZXIgZWRpdC1saXN0LW1vZGFsIj4nO3RlbXBsYXRlSHRtbCArPSAnPGRpdiBjbGFzcz0iYXJyb3ciPjwvZGl2Pic7dGVtcGxhdGVIdG1sICs9ICc8aDMgY2xhc3M9InBvcG92ZXItaGVhZGVyIj48L2gzPic7dGVtcGxhdGVIdG1sICs9ICc8ZGl2IGNsYXNzPSJwb3BvdmVyLWNvbnRlbnQiPic7dGVtcGxhdGVIdG1sICs9ICc8L2Rpdj4nO3RlbXBsYXRlSHRtbCArPSAnPC9kaXY+Jzt2YXIgY29udGVudEh0bWwgPSAnPGZvcm0gY2xhc3M9ImVkaXQtbGlzdC1mb3JtIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iIyI+Jztjb250ZW50SHRtbCArPSAnPGRpdiBjbGFzcz0icm93Ij4nO2NvbnRlbnRIdG1sICs9ICc8ZGl2IGNsYXNzPSJjb2wteHMtMTIiPic7Y29udGVudEh0bWwgKz0gJzxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPjx0ZXh0YXJlYSBtYXhsZW5ndGg9IjI1NSIgbmFtZT0ibmFtZSIgcGxhY2Vob2xkZXI9ItCd0LDQt9Cy0LDQvdC40LUg0YHQv9C40YHQutCwIiBjbGFzcz0iZm9ybS1jb250cm9sIGlucHV0LXNtIGxpc3QtbmFtZSI+JyArIGVkaXRlZExpc3ROYW1lICsgJzwvdGV4dGFyZWE+PC9kaXY+Jztjb250ZW50SHRtbCArPSAnPC9kaXY+Jztjb250ZW50SHRtbCArPSAnPC9kaXY+Jztjb250ZW50SHRtbCArPSAnPGRpdiBjbGFzcz0icm93Ij4nO2NvbnRlbnRIdG1sICs9ICc8ZGl2IGNsYXNzPSJjb2wteHMtNCI+Jztjb250ZW50SHRtbCArPSAnPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLXNtIiBkYXRhLWxvYWRpbmctdGV4dD0i0KHQvtGF0YDQsNC90LjRgtGMLi4uIj7QodC+0YXRgNCw0L3QuNGC0Yw8L2J1dHRvbj4nO2NvbnRlbnRIdG1sICs9ICc8L2Rpdj4nO2NvbnRlbnRIdG1sICs9ICc8L2Rpdj4nO2NvbnRlbnRIdG1sICs9ICc8L2Zvcm0+Jzt2YXIgb3B0aW9ucyA9IHtjb250ZW50OiBjb250ZW50SHRtbCxodG1sOiB0cnVlLHRlbXBsYXRlOiB0ZW1wbGF0ZUh0bWwscGxhY2VtZW50OiAnYm90dG9tJ307dGMuc2hvd0VkaXRMaXN0Rm9ybUJ0bi5wb3BvdmVyKG9wdGlvbnMpO3RjLnNob3dFZGl0TGlzdEZvcm1CdG4ucG9wb3Zlcignc2hvdycpO3RjLmlucHV0TmFtZSA9ICQoJy5lZGl0LWxpc3QtZm9ybSAubGlzdC1uYW1lJyk7aWYgKCFkY29yZWNuZy5pc1RvdWNoRGV2aWNlKXt0Yy5pbnB1dE5hbWUuZm9jdXMoKTsgfX07dGMuaGlkZU1vZGFsQ3JlYXRlTmV3TGlzdEZvcm0gPSBmdW5jdGlvbigpeyQodGMuc2hvd0Zvcm1CdG5TZWxlY3RvcikucG9wb3ZlcignZGVzdHJveScpO307dGMuaGlkZU1vZGFsRWRpdExpc3RGb3JtID0gZnVuY3Rpb24oKXskKHRjLnNob3dFZGl0TGlzdEZvcm1CdG4pLnBvcG92ZXIoJ2Rlc3Ryb3knKTt9O3RjLmhpZGVNb2RhbExpc3RMaW5rID0gZnVuY3Rpb24oKXskKHRjLmxpc3RMaW5rQnRuKS5wb3BvdmVyKCdkZXN0cm95Jyk7fTt0Yy5uZXdMaXN0QnRuQ2xpY2sgPSBmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpOyBpZiAoZGNvcmVjbmcudXNlci5pZCl7aWYgKCQoJy5wb3BvdmVyLm5ldy1saXN0LW1vZGFsJykuaXMoJzp2aXNpYmxlJykpe3RjLmhpZGVNb2RhbENyZWF0ZU5ld0xpc3RGb3JtKCk7IH0gZWxzZSB7dGMuc2hvd01vZGFsQ3JlYXRlTmV3TGlzdEZvcm0oKTt9fX07dGMuZWRpdExpc3ROYW1lRnJvbVN1Ym1pdCA9IGZ1bmN0aW9uKGUpe2lmIChkY29yZWNuZy51c2VyLmlkKXt2YXIgdCA9IHRoaXM7JCgnLm1lc3NhZ2VzJywgdCkucmVtb3ZlKCk7dGMuaW5wdXROYW1lID0gJCgnLmVkaXQtbGlzdC1mb3JtIC5saXN0LW5hbWUnKTt2YXIgZGF0YSA9IHtuYW1lOiB0Yy5pbnB1dE5hbWUudmFsKCksZm9yY2VfY3JlYXRlOiAodGMuZm9yY2VDcmVhdGUgPT0gdHJ1ZSk\/MTowIH07QXBpLnB1dCgnL2FwaXYzL3VzZXJzLycgKyBkY29yZWNuZy51c2VyLmlkICsgJy9ub3Rlc2xpc3RzLycgKyB0Yy5ub3Rlc0xpc3RJZCArICcvJywgZGF0YSwgZnVuY3Rpb24gKHJlc3BvbnNlKXskKCcuaGFzLWVycm9yJyx0KS5yZW1vdmVDbGFzcygnaGFzLWVycm9yJyk7JCgnLmZvcm0tZWxlbWVudC1lcnJvcnMnLHQpLnJlbW92ZSgpOyQoJ1t0eXBlPSJzdWJtaXQiXScsdCkuYnV0dG9uKCdyZXNldCcpO2lmIChyZXNwb25zZS5lcnJvcil7aWYgKHJlc3BvbnNlLmVycm9yID09ICdlbXB0eV9uYW1lJyl7dGMuaW5wdXROYW1lLnBhcmVudHMoJy5mb3JtLWdyb3VwOmZpcnN0JykuYWRkQ2xhc3MoJ2hhcy1lcnJvcicpO3RjLmlucHV0TmFtZS5hZnRlcignPHVsIGNsYXNzPSJmb3JtLWVsZW1lbnQtZXJyb3JzIj48bGk+JyArIHJlc3BvbnNlLmVycm9yX2Rlc2NyaXB0aW9uICsgJzwvbGk+PC91bD4nKTt0Yy5pbnB1dE5hbWUuZm9jdXMoKTt9IGVsc2UgaWYgKHJlc3BvbnNlLmVycm9yID09ICdteW5vdGVzX2xpc3RfZHVwbGljYXRlX2RlbGV0ZWQnKXt0Yy5hZGRMaXN0SWQgPSByZXNwb25zZS5saXN0LmlkO3ZhciBtZXNzYWdlSHRtbCA9ICc8ZGl2IGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9ImNvbC14cy0xMiI+PGRpdiBjbGFzcz0ibWVzc2FnZXMiPic7bWVzc2FnZUh0bWwgKz0gJzxwIGNsYXNzPSJhbGVydC13YXJuaW5nIj4nO21lc3NhZ2VIdG1sICs9IHJlc3BvbnNlLmVycm9yX2Rlc2NyaXB0aW9uO21lc3NhZ2VIdG1sICs9ICcgPGEgY2xhc3M9ImJ0biBidG4taW5mbyBidG4teHMgbm90ZXMtbGlzdHMtcmVjb3ZlcnktYnRuIj7QktC+0YHRgdGC0LDQvdC+0LLQuNGC0Yw8L2E+JzttZXNzYWdlSHRtbCArPSAnIDxhIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLXhzIG5vdGVzLWxpc3RzLXJlcGxhY2UtYnRuIj7Ql9Cw0LzQtdC90LjRgtGMPC9hPic7bWVzc2FnZUh0bWwgKz0gJzwvcD4nO21lc3NhZ2VIdG1sICs9ICc8L2Rpdj48L2Rpdj48L2Rpdj4nOyQodCkucHJlcGVuZChtZXNzYWdlSHRtbCk7fSBlbHNlIHskKHQpLnByZXBlbmQoICc8ZGl2IGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9ImNvbC14cy0xMiI+PGRpdiBjbGFzcz0ibWVzc2FnZXMiPjxwIGNsYXNzPSJhbGVydC1kYW5nZXIiPicgKyByZXNwb25zZS5lcnJvcl9kZXNjcmlwdGlvbiArICc8L3A+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7fX0gZWxzZSB7JCh0KS5wcmVwZW5kKCAnPGRpdiBjbGFzcz0icm93Ij48ZGl2IGNsYXNzPSJjb2wteHMtMTIiPjxkaXYgY2xhc3M9Im1lc3NhZ2VzIj48cCBjbGFzcz0iYWxlcnQtc3VjY2VzcyI+JyArIHJlc3BvbnNlLm1lc3NhZ2UgKyAnPC9wPjwvZGl2PjwvZGl2PjwvZGl2PicpOyQodGMubGlzdE5hbWVTZWxlY3RvcikudGV4dChyZXNwb25zZS5saXN0Lm5hbWUpO319KTt0Yy5mb3JjZUNyZWF0ZSA9IGZhbHNlOyB9ZS5wcmV2ZW50RGVmYXVsdCgpO307dGMubmV3TGlzdEZyb21TdWJtaXQgPSBmdW5jdGlvbihlKXtpZiAoZGNvcmVjbmcudXNlci5pZCl7dmFyIHQgPSB0aGlzOyQoJy5tZXNzYWdlcycsIHQpLnJlbW92ZSgpO3RjLmlucHV0TmFtZSA9ICQoJy5hZGQtbGlzdC1mb3JtIC5saXN0LW5hbWUnKTt2YXIgZGF0YSA9IHtuYW1lOiB0Yy5pbnB1dE5hbWUudmFsKCksZm9yY2VfY3JlYXRlOiAodGMuZm9yY2VDcmVhdGUgPT0gdHJ1ZSk\/MTowIH07QXBpLnBvc3QoJy9hcGl2My91c2Vycy8nICsgZGNvcmVjbmcudXNlci5pZCArICcvbm90ZXNsaXN0cy8nLCBkYXRhLCBmdW5jdGlvbiAocmVzcG9uc2UpeyQoJy5oYXMtZXJyb3InLHQpLnJlbW92ZUNsYXNzKCdoYXMtZXJyb3InKTskKCcuZm9ybS1lbGVtZW50LWVycm9ycycsdCkucmVtb3ZlKCk7JCgnW3R5cGU9InN1Ym1pdCJdJyx0KS5idXR0b24oJ3Jlc2V0Jyk7aWYgKHJlc3BvbnNlLmVycm9yKXtpZiAocmVzcG9uc2UuZXJyb3IgPT0gJ2VtcHR5X25hbWUnKXt0Yy5pbnB1dE5hbWUucGFyZW50cygnLmZvcm0tZ3JvdXA6Zmlyc3QnKS5hZGRDbGFzcygnaGFzLWVycm9yJyk7dGMuaW5wdXROYW1lLmFmdGVyKCc8dWwgY2xhc3M9ImZvcm0tZWxlbWVudC1lcnJvcnMiPjxsaT4nICsgcmVzcG9uc2UuZXJyb3JfZGVzY3JpcHRpb24gKyAnPC9saT48L3VsPicpO3RjLmlucHV0TmFtZS5mb2N1cygpO30gZWxzZSBpZiAocmVzcG9uc2UuZXJyb3IgPT0gJ215bm90ZXNfbGlzdF9kdXBsaWNhdGVfZGVsZXRlZCcpe3RjLmFkZExpc3RJZCA9IHJlc3BvbnNlLmxpc3QuaWQ7dmFyIG1lc3NhZ2VIdG1sID0gJzxkaXYgY2xhc3M9InJvdyI+PGRpdiBjbGFzcz0iY29sLXhzLTEyIj48ZGl2IGNsYXNzPSJtZXNzYWdlcyI+JzttZXNzYWdlSHRtbCArPSAnPHAgY2xhc3M9ImFsZXJ0LXdhcm5pbmciPic7bWVzc2FnZUh0bWwgKz0gcmVzcG9uc2UuZXJyb3JfZGVzY3JpcHRpb247bWVzc2FnZUh0bWwgKz0gJyA8YSBjbGFzcz0iYnRuIGJ0bi1pbmZvIGJ0bi14cyBub3Rlcy1saXN0cy1yZWNvdmVyeS1idG4iPtCS0L7RgdGB0YLQsNC90L7QstC40YLRjDwvYT4nO21lc3NhZ2VIdG1sICs9ICcgPGEgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBidG4teHMgbm90ZXMtbGlzdHMtcmVwbGFjZS1idG4iPtCX0LDQvNC10L3QuNGC0Yw8L2E+JzttZXNzYWdlSHRtbCArPSAnPC9wPic7bWVzc2FnZUh0bWwgKz0gJzwvZGl2PjwvZGl2PjwvZGl2Pic7JCh0KS5wcmVwZW5kKG1lc3NhZ2VIdG1sKTt9IGVsc2UgeyQodCkucHJlcGVuZCggJzxkaXYgY2xhc3M9InJvdyI+PGRpdiBjbGFzcz0iY29sLXhzLTEyIj48ZGl2IGNsYXNzPSJtZXNzYWdlcyI+PHAgY2xhc3M9ImFsZXJ0LWRhbmdlciI+JyArIHJlc3BvbnNlLmVycm9yX2Rlc2NyaXB0aW9uICsgJzwvcD48L2Rpdj48L2Rpdj48L2Rpdj4nKTt9fSBlbHNlIHt0Yy5pbnB1dE5hbWUudmFsKCcnKTt0Yy5oaWRlTW9kYWxDcmVhdGVOZXdMaXN0Rm9ybSgpO3RjLmFmdGVyTXlub3Rlc2xpc3RDcmVhdGUocmVzcG9uc2UubGlzdCk7fX0pO3RjLmZvcmNlQ3JlYXRlID0gZmFsc2U7IH1lLnByZXZlbnREZWZhdWx0KCk7fTt0Yy5zaG93TGlzdHNDaG9vc2VyID0gZnVuY3Rpb24ocG9zKXt0Yy5ub3Rlc0xpc3QgPSAkKCcubm90ZXMtbGlzdHMtY2hvb3NlcicpO3RjLmFmdGVyTGlzdHNDaG9vc2VyTG9hZChwb3MpO307dGMuaGlkZUxpc3RzQ2hvb3NlciA9IGZ1bmN0aW9uKCl7aWYgKHRjLm5vdGVzTGlzdCl7dGMubm90ZXNMaXN0LmNzcygnZGlzcGxheScsJ25vbmUnKTsgfX07dGMuYWZ0ZXJMaXN0c0Nob29zZXJMb2FkID0gZnVuY3Rpb24ocG9zKXt2YXIgdCA9IHBvcy50b3A7dmFyIGwgPSBwb3MubGVmdDt2YXIgdyA9IHRjLm5vdGVzTGlzdC53aWR0aCgpO3ZhciB3aW5kb3dXaWR0aCA9ICQod2luZG93KS53aWR0aCgpO2lmICgobCt3KzUwKT4gd2luZG93V2lkdGgpe2wgPSB3aW5kb3dXaWR0aCAtICh3KzUwKTt9dGMubm90ZXNMaXN0LmNzcyh7J2Rpc3BsYXknOiAnYmxvY2snLCd0b3AnOiB0LCdsZWZ0JzogbH0pO2lmICghJCgnW3R5cGU9InJhZGlvIl06Y2hlY2tlZCcsdGMubm90ZXNMaXN0KS5sZW5ndGgpeyQoJ1t0eXBlPSJyYWRpbyJdOmZpcnN0Jyx0Yy5ub3Rlc0xpc3QpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7fX07dGMuYm9keUNsaWNrID0gZnVuY3Rpb24oKXt0Yy5oaWRlTGlzdHNDaG9vc2VyKCk7IHRjLmhpZGVNb2RhbENyZWF0ZU5ld0xpc3RGb3JtKCk7IHRjLmhpZGVNb2RhbEVkaXRMaXN0Rm9ybSgpOyB0Yy5oaWRlTW9kYWxMaXN0TGluaygpOyB9O3RjLm5vdGVzTGlzdHNDbGljayA9IGZ1bmN0aW9uKGUpe2Uuc3RvcFByb3BhZ2F0aW9uKCk7IH07dGMubm90ZXNMaXN0c0Nsb3NlQnRuQ2xpY2sgPSBmdW5jdGlvbihlKXt0Yy5oaWRlTGlzdHNDaG9vc2VyKCk7fTt0Yy5hZGRQcm9kdWN0VG9NeW5vdGVzID0gZnVuY3Rpb24oYnRuKXt0Yy5ub3Rlc0J0biA9ICQoYnRuKTt0Yy5wcm9kdWN0SWQgPSBwYXJzZUludCh0Yy5ub3Rlc0J0bi5hdHRyKCdyZWwnKSk7aWYgKHRjLm5vdGVzQnRuLmF0dHIoJ2RhdGEtYmFza2V0Jyk9PSAnMScpeyB0Yy5kZWxldGVQcm9kdWN0RnJvbU15bm90ZXMoKTt9IGVsc2UgeyBpZiAoZGNvcmVjbmcudXNlci5hc2tMaXN0QmVmb3JlQWRkID09IDEpeyBteW5vdGVzTGlzdHMuc2hvd0xpc3RzQ2hvb3Nlcih7IHRvcDogJChidG4pLm9mZnNldCgpLnRvcCArICQoYnRuKS5oZWlnaHQoKSwgbGVmdDogJChidG4pLm9mZnNldCgpLmxlZnQgKyAkKGJ0bikud2lkdGgoKSx9KTt9IGVsc2UgeyB0Yy5hZGRQcm9kdWN0VG9NeW5vdGVzTGlzdCgpO319fTt0Yy5ub3Rlc0xpc3RzQWRkQnRuQ2xpY2sgPSBmdW5jdGlvbihlKXtpZiAoISQoJ1tuYW1lPSJub3Rlc2xpc3QiXTpjaGVja2VkJykubGVuZ3RoKXskKHRjLnNob3dGb3JtQnRuU2VsZWN0b3IpLmNsaWNrKCk7ICQoJy5hZGQtbGlzdC1mb3JtJykucHJlcGVuZCggJzxkaXYgY2xhc3M9Im1lc3NhZ2VzIj48cCBjbGFzcz0iYWxlcnQtZGFuZ2VyIj7QodC+0LfQtNCw0LnRgtC1INGB0L\/QuNGB0L7QuiDQtNC70Y8g0LTQvtCx0LDQstC70LXQvdC40Y8g0LjQt9Cx0YDQsNC90L3QvtCz0L48L3A+PC9kaXY+Jyk7fSBlbHNlIHt0Yy5hZGRMaXN0SWQgPSAkKCdbbmFtZT0ibm90ZXNsaXN0Il06Y2hlY2tlZCcpLnZhbCgpOyB0Yy5hZGRQcm9kdWN0VG9NeW5vdGVzTGlzdCgpOyB9fTt0Yy5ub3Rlc0xpc3RzUmVwbGFjZUJ0bkNsaWNrID0gZnVuY3Rpb24oZSl7dGMucmVwbGFjZU15bm90ZXNMaXN0KCk7IGUucHJldmVudERlZmF1bHQoKTt9O3RjLnJlcGxhY2VNeW5vdGVzTGlzdCA9IGZ1bmN0aW9uKCl7dGMuZm9yY2VDcmVhdGUgPSB0cnVlOyBpZiAoJCgnLmFkZC1saXN0LWZvcm0nKS5pcygnOnZpc2libGUnKSl7JCgnLmFkZC1saXN0LWZvcm0nKS5zdWJtaXQoKTt9IGVsc2UgeyQoJy5lZGl0LWxpc3QtZm9ybScpLnN1Ym1pdCgpO319O3RjLm5vdGVzTGlzdHNSZWNvdmVyeUJ0bkNsaWNrID0gZnVuY3Rpb24oZSl7dGMucmVjb3ZlcnlNeW5vdGVzTGlzdCgpOyBlLnByZXZlbnREZWZhdWx0KCk7fTt0Yy5yZWNvdmVyeU15bm90ZXNMaXN0ID0gZnVuY3Rpb24oKXt2YXIgZGF0YSA9IHtzdGF0dXM6IDEsfTt2YXIgdCA9ICQoJy5hZGQtbGlzdC1mb3JtJyk7JCgnLm1lc3NhZ2VzJywgdCkucmVtb3ZlKCk7QXBpLnB1dCgnL2FwaXYzL3VzZXJzLycgKyBkY29yZWNuZy51c2VyLmlkICsgJy9ub3Rlc2xpc3RzLycgKyB0Yy5hZGRMaXN0SWQgKyAnLycsIGRhdGEsIGZ1bmN0aW9uIChyZXNwb25zZSl7JCgnLmhhcy1lcnJvcicsdCkucmVtb3ZlQ2xhc3MoJ2hhcy1lcnJvcicpOyQoJy5mb3JtLWVsZW1lbnQtZXJyb3JzJyx0KS5yZW1vdmUoKTskKCdbdHlwZT0ic3VibWl0Il0nLHQpLmJ1dHRvbigncmVzZXQnKTtpZiAocmVzcG9uc2UuZXJyb3IpeyQodCkucHJlcGVuZCggJzxkaXYgY2xhc3M9Im1lc3NhZ2VzIj48cCBjbGFzcz0iYWxlcnQtZGFuZ2VyIj4nICsgcmVzcG9uc2UuZXJyb3JfZGVzY3JpcHRpb24gKyAnPC9wPjwvZGl2PicpO30gZWxzZSB7dGMuaW5wdXROYW1lLnZhbCgnJyk7dGMuaGlkZU1vZGFsQ3JlYXRlTmV3TGlzdEZvcm0oKTt0Yy5hZnRlck15bm90ZXNsaXN0Q3JlYXRlKHJlc3BvbnNlLmxpc3QpO319KTt9O3RjLmFmdGVyTXlub3Rlc2xpc3RDcmVhdGUgPSBmdW5jdGlvbihsaXN0KXtpZiAoJCgnQk9EWScpLmhhc0NsYXNzKCdub3Rlcy1wYWdlJykmJiAhJCgnQk9EWScpLmhhc0NsYXNzKCdsaXN0LXBhZ2UnKSl7d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO30gZWxzZSB7dmFyIG5vdGVzTGlzdHNVbCA9ICQoJy5ub3Rlcy1saXN0cy1jaG9vc2VyIC5ub3Rlcy1saXN0cycpO3ZhciBub3Rlc0xpc3ROZXdMaSA9ICcnO25vdGVzTGlzdE5ld0xpICs9ICc8bGk+Jztub3Rlc0xpc3ROZXdMaSArPSAnPGRpdiBjbGFzcz0icmFkaW8iPjxsYWJlbD48aW5wdXQgbmFtZT0ibm90ZXNsaXN0IiB2YWx1ZT0iJyArIGxpc3QuaWQgKyAnIiB0eXBlPSJyYWRpbyIgLz4gJyArIGxpc3QubmFtZSArICc8L2xhYmVsPjwvZGl2Pic7bm90ZXNMaXN0TmV3TGkgKz0gJzwvbGk+Jztub3Rlc0xpc3RzVWwucHJlcGVuZChub3Rlc0xpc3ROZXdMaSk7JCgnW25hbWU9Im5vdGVzbGlzdCJdJykucHJvcCggImNoZWNrZWQiLCBmYWxzZSk7JCgnW25hbWU9Im5vdGVzbGlzdCJdW3ZhbHVlPSInICsgbGlzdC5pZCArICciXScpLnByb3AoICJjaGVja2VkIiwgdHJ1ZSk7d2luZG93LnVwZGF0ZURhdGEoKTt9fTt0Yy5kZWxldGVQcm9kdWN0RnJvbU15bm90ZXMgPSBmdW5jdGlvbigpe3ZhciBkYXRhID0ge2NpdHlfaWQ6IGRjb3JlY25nLmNpdHlJZCxwcm9kdWN0X2lkOiB0Yy5wcm9kdWN0SWR9O0FwaS5kZWxldGUoJy9hcGl2My91c2Vycy8nICsgZGNvcmVjbmcudXNlci5pZCArICcvbm90ZXMvJywgZGF0YSwgZnVuY3Rpb24gKHJlc3BvbnNlKXtpZiAocmVzcG9uc2UuZXJyb3Ipe30gZWxzZSB7dGMubm90ZXNCdG4uYXR0cignZGF0YS1iYXNrZXQnLCAnMCcpO3RjLm5vdGVzQnRuLmF0dHIoJ2RhdGEtb3JpZ2luYWwtdGl0bGUnLCAn0JTQvtCx0LDQstC40YLRjCDQsiDQuNC30LHRgNCw0L3QvdC+0LUnKTt0Yy5ub3Rlc0J0bi5yZW1vdmVDbGFzcygnYWN0aXZlJyk7JCgnLnRvb2x0aXAgLnRvb2x0aXAtaW5uZXInKS50ZXh0KCfQlNC+0LHQsNCy0LjRgtGMINCyINC40LfQsdGA0LDQvdC90L7QtScpO2lmICgkKCdCT0RZJykuaGFzQ2xhc3MoJ25vdGVzLXBhZ2UnKSYmICEkKCdCT0RZJykuaGFzQ2xhc3MoJ2xpc3QtcGFnZScpKXskKCcuZGlzY291bnRzIC5pdGVtW2RhdGEtaWQ9IicgKyB0Yy5wcm9kdWN0SWQgKyAnIl0nKS5oaWRlKDMwMCwgZnVuY3Rpb24gKCl7JCh0aGlzKS5yZW1vdmUoKTskKHdpbmRvdykucmVzaXplKCk7IH0pO30kKCcubXlub3Rlcy1jb3VudCcpLmh0bWwocmVzcG9uc2UudG90YWxDb3VudCk7dGMubm90ZXNCdG4ucG9wb3ZlcignZGVzdHJveScpO3ZhciBvcHRpb25zID0ge2NvbnRlbnQ6ICfQo9C00LDQu9C10L3QviDQuNC3IDxhIGhyZWY9Ii9teW5vdGVzLyI+0JjQt9Cx0YDQsNC90L3QvtC1PC9hPicsaHRtbDogdHJ1ZSx0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9InBvcG92ZXIgcG9wb3Zlci1ub3RlcyIgcm9sZT0idG9vbHRpcCI+PGRpdiBjbGFzcz0iYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InBvcG92ZXItY29udGVudCI+PC9kaXY+PC9kaXY+JyxwbGFjZW1lbnQ6ICdib3R0b20nfTt0Yy5ub3Rlc0J0bi5wb3BvdmVyKG9wdGlvbnMpO3RjLm5vdGVzQnRuLnBvcG92ZXIoJ3Nob3cnKTtzZXRUaW1lb3V0KGZ1bmN0aW9uICgpe3RjLm5vdGVzQnRuLnBvcG92ZXIoJ2Rlc3Ryb3knKTt9LCAyMDAwKTt9fSk7fTt0Yy5hZGRQcm9kdWN0VG9NeW5vdGVzTGlzdCA9IGZ1bmN0aW9uKCl7dmFyIGRhdGEgPSB7Y2l0eV9pZDogZGNvcmVjbmcuY2l0eUlkLHByb2R1Y3RfaWQ6IHRjLnByb2R1Y3RJZH07aWYgKHRjLmFkZExpc3RJZCAhPSBmYWxzZSl7ZGF0YS5saXN0X2lkID0gdGMuYWRkTGlzdElkO31pZiAoZGNvcmVjbmcudXNlci5hc2tMaXN0QmVmb3JlQWRkID09IDEpe3ZhciBhc2tMaXN0Q2hlY2tib3ggPSAkKCcubm90ZXMtbGlzdHMtY2hvb3NlciBbbmFtZT0iYXNrX2xpc3RfYmVmb3JlX2FkZCJdJyk7aWYgKGFza0xpc3RDaGVja2JveC5sZW5ndGggJiYgYXNrTGlzdENoZWNrYm94LmlzKCc6Y2hlY2tlZCcpKXtkYXRhLmFza19saXN0X2JlZm9yZV9hZGQgPSAwO2Rjb3JlY25nLnVzZXIuYXNrTGlzdEJlZm9yZUFkZCA9IDA7fX1BcGkucG9zdCgnL2FwaXYzL3VzZXJzLycgKyBkY29yZWNuZy51c2VyLmlkICsgJy9ub3Rlcy8nLCBkYXRhLCBmdW5jdGlvbiAocmVzcG9uc2Upe2lmIChyZXNwb25zZS5lcnJvcil7dmFyIG9wdGlvbnMgPSB7Y29udGVudDogJzxwIHN0eWxlPSJjb2xvcjogcmVkIj7QntGI0LjQsdC60LAg0LTQvtCx0LDQstC70LXQvdC40Y8g0LIg0LjQt9Cx0YDQsNC90L3QvtC1PGJyLz4nICsgcmVzcG9uc2UuZXJyb3JfZGVzY3JpcHRpb24gKyAnPC9wPicsaHRtbDogdHJ1ZSx0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9InBvcG92ZXIgcG9wb3Zlci1ub3RlcyIgcm9sZT0idG9vbHRpcCI+PGRpdiBjbGFzcz0iYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InBvcG92ZXItY29udGVudCI+PC9kaXY+PC9kaXY+JyxwbGFjZW1lbnQ6ICdib3R0b20nfTt0Yy5ub3Rlc0J0bi5wb3BvdmVyKG9wdGlvbnMpO3RjLm5vdGVzQnRuLnBvcG92ZXIoJ3Nob3cnKTtzZXRUaW1lb3V0KGZ1bmN0aW9uICgpe3RjLm5vdGVzQnRuLnBvcG92ZXIoJ2Rlc3Ryb3knKTt9LCA1MDAwKTt9IGVsc2Uge3RjLm5vdGVzQnRuLmF0dHIoJ2RhdGEtYmFza2V0JywgJzEnKTt0Yy5ub3Rlc0J0bi5hdHRyKCdkYXRhLW9yaWdpbmFsLXRpdGxlJywgJ9Cj0LTQsNC70LjRgtGMJyk7dGMubm90ZXNCdG4uYWRkQ2xhc3MoJ2FjdGl2ZScpOyQoJy50b29sdGlwIC50b29sdGlwLWlubmVyJykudGV4dCgn0KPQtNCw0LvQuNGC0YwnKTt0Yy5ub3Rlc0J0bi5wb3BvdmVyKCdkZXN0cm95Jyk7dmFyIG9wdGlvbnMgPSB7Y29udGVudDogJ9CU0L7QsdCw0LLQu9C10L3QviDQsiA8YSBocmVmPSIvbXlub3Rlcy8iPtCY0LfQsdGA0LDQvdC90L7QtTwvYT4nLGh0bWw6IHRydWUsdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPSJwb3BvdmVyIHBvcG92ZXItbm90ZXMiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48ZGl2IGNsYXNzPSJwb3BvdmVyLWNvbnRlbnQiPjwvZGl2PjwvZGl2PicscGxhY2VtZW50OiAnYm90dG9tJ307dGMubm90ZXNCdG4ucG9wb3ZlcihvcHRpb25zKTt0Yy5ub3Rlc0J0bi5wb3BvdmVyKCdzaG93Jyk7c2V0VGltZW91dChmdW5jdGlvbiAoKXt0Yy5ub3Rlc0J0bi5wb3BvdmVyKCdkZXN0cm95Jyk7fSwgMjAwMCk7JCgnLm15bm90ZXMtY291bnQnKS5odG1sKHJlc3BvbnNlLnRvdGFsQ291bnQpO310Yy5hZGRMaXN0SWQgPSBmYWxzZTt0Yy5wcm9kdWN0SWQgPSBmYWxzZTtpZiAoZGF0YS5hc2tfbGlzdF9iZWZvcmVfYWRkID09IDApeyQoJy5ub3Rlcy1saXN0cy1jaG9vc2VyJykucmVtb3ZlKCk7fX0pO3RjLmhpZGVMaXN0c0Nob29zZXIoKTt9O3RjLm5vdGVzTGlzdHNFZGl0TmFtZUJ0bkNsaWNrID0gZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2Uuc3RvcFByb3BhZ2F0aW9uKCk7IGlmICgkKCcucG9wb3Zlci5lZGl0LWxpc3QtbW9kYWwnKS5pcygnOnZpc2libGUnKSl7dGMuaGlkZU1vZGFsRWRpdExpc3RGb3JtKCk7fSBlbHNlIHt0Yy5zaG93RWRpdExpc3RGb3JtQnRuID0gJCh0aGlzKTt0Yy5saXN0TmFtZVNlbGVjdG9yID0gJCh0aGlzKS5hdHRyKCdkYXRhLWxpc3QtbmFtZScpO3RjLm5vdGVzTGlzdElkID0gJCh0aGlzKS5hdHRyKCdkYXRhLWxpc3QtaWQnKTt0Yy5zaG93TW9kYWxFZGl0TGlzdEZvcm0oKTt9fTskKCdib2R5Jykub24oJ2NsaWNrJyx0Yy5zaG93Rm9ybUJ0blNlbGVjdG9yLHRjLm5ld0xpc3RCdG5DbGljayk7JCgnYm9keScpLm9uKCdzdWJtaXQnLCcuYWRkLWxpc3QtZm9ybScsdGMubmV3TGlzdEZyb21TdWJtaXQpOyQoJ2JvZHknKS5vbignc3VibWl0JywnLmVkaXQtbGlzdC1mb3JtJyx0Yy5lZGl0TGlzdE5hbWVGcm9tU3VibWl0KTskKCdib2R5Jykub24oJ2NsaWNrJywnLm5vdGVzLWxpc3RzLWNob29zZXInLHRjLm5vdGVzTGlzdHNDbGljayk7JCgnYm9keScpLm9uKCdjbGljaycsJy5ub3Rlcy1saXN0cy1jbG9zZS1idG4nLHRjLm5vdGVzTGlzdHNDbG9zZUJ0bkNsaWNrKTskKCdib2R5Jykub24oJ2NsaWNrJywnLm5vdGVzLWxpc3RzLWFkZC1idG4nLHRjLm5vdGVzTGlzdHNBZGRCdG5DbGljayk7JChkb2N1bWVudCkub24oJ2tleXByZXNzJyxmdW5jdGlvbihlKXtpZihlLndoaWNoID09IDEzKXtpZiAoJCgnLm5vdGVzLWxpc3RzLWFkZC1idG4nKS5pcygnOnZpc2libGUnKSl7JCgnLm5vdGVzLWxpc3RzLWFkZC1idG4nKS5jbGljaygpO319fSk7JCgnYm9keScpLm9uKCdjbGljaycsJy5ub3Rlcy1saXN0cy1yZWNvdmVyeS1idG4nLHRjLm5vdGVzTGlzdHNSZWNvdmVyeUJ0bkNsaWNrKTsgJCgnYm9keScpLm9uKCdjbGljaycsJy5ub3Rlcy1saXN0cy1yZXBsYWNlLWJ0bicsdGMubm90ZXNMaXN0c1JlcGxhY2VCdG5DbGljayk7ICQoJ2JvZHknKS5vbignY2xpY2snLHRjLmJvZHlDbGljayk7JCgnYm9keScpLm9uKCdjbGljaycsJy5uZXctbGlzdC1tb2RhbCwuZWRpdC1saXN0LW1vZGFsLC5saXN0LWxpbmstbW9kYWwnLGZ1bmN0aW9uKGUpe2Uuc3RvcFByb3BhZ2F0aW9uKCk7IH0pOyQoJ2JvZHknKS5vbignY2xpY2snLCcuZWRpdC1saXN0LWJ0bicsdGMubm90ZXNMaXN0c0VkaXROYW1lQnRuQ2xpY2spOyQoJ2JvZHknKS5vbignY2xpY2snLCcubGlzdC1saW5rLWJ0bicsdGMuc2hvd0xpc3RMaW5rQnRuQ2xpY2spO307dmFyIG15bm90ZXNMaXN0cyA9IG5ldyBNeW5vdGVzTGlzdHM7");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("ZnVuY3Rpb24gc2hvcHNTZWxlY3RvckNsYXNzKCl7IHZhciB0YyA9IHRoaXM7IHRjLmNzZWwgPSAnLmNob29zZS1zaG9wcyc7IHRjLnNzbnNlbCA9ICcuc2VsZWN0ZWQtc2hvcHMtZmllbGQnOyB0Yy5zTG9hZGVkID0gZmFsc2U7IHRjLnNGYXZMb2FkZWQgPSBmYWxzZTsgdGMudXJsaGFzaCA9ICdzaG9vc2VzaG9wc29wZW4nOyB0Yy5jaG9vc2VTaG9wQnRuQ2xpY2sgPSBmdW5jdGlvbihlKXsgdmFyIGZvcm0gPSAkKHRoaXMpLnBhcmVudHMoJ2Zvcm0nKTsgdmFyIGlucHV0U2hvcHMgPSAkKCcuc2VsZWN0ZWQtc2hvcHMtZmllbGQnLGZvcm0pOyBpbnB1dFNob3BzLmF0dHIoImRhdGEtcHJldnZhbHVlIiwgaW5wdXRTaG9wcy52YWwoKSk7IHZhciBjaG9vc2VTaG9wcyA9ICQodGMuY3NlbCxmb3JtKTsgaWYgKGNob29zZVNob3BzLmlzKCI6dmlzaWJsZSIpKSB7IHRjLmhpZGVDaG9vc2VTaG9wcygpOyB9IGVsc2UgeyB2YXIgYyA9ICQoJy5jaG9vc2Utc2hvcC13cmFwJyxmb3JtKTsgdmFyIGNpdHlJZCA9ICQodGhpcykuYXR0cignZGF0YS1jaXR5aWQnKTsgaWYgKCFjaXR5SWQpIHsgY2l0eUlkID0gZGNvcmVjbmcuY2l0eUlkOyB9IHRjLmxvYWRTaG9wcyhjLCBjaXR5SWQpOyB0Yy5zaG93Q2hvb3NlU2hvcHMoKTsgfSBlLnByZXZlbnREZWZhdWx0KCk7IH07IHRjLmNhbmNlbEJ0bkNsaWNrID0gZnVuY3Rpb24oZSl7IGlmICgkKHRjLmNzZWwpLmhhc0NsYXNzKCdvcGVuJykpIHsgY29uc29sZS5sb2coJ2NhbmNlbEJ0bkNsaWNrIGhpZGUgbW9kYWwnKTsgdmFyIGZvcm0gPSAkKHRoaXMpLnBhcmVudHMoJ2Zvcm0nKTsgdmFyIHQgPSAkKCcuc2VsZWN0ZWQtc2hvcHMtZmllbGQnLGZvcm0pOyAkKHQpLnZhbCgkKHQpLmF0dHIoImRhdGEtcHJldnZhbHVlIikpOyB0Yy5oaWRlQ2hvb3NlU2hvcHMoKTsgfSB9OyB0Yy5zdWJtaXRCdG5DbGljayA9IGZ1bmN0aW9uKGUpeyBlLnByZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IHZhciBmb3JtID0gJCh0aGlzKS5wYXJlbnRzKCdmb3JtJyk7IHZhciBjID0gJCgnLmNob29zZS1zaG9wLXdyYXAnLGZvcm0pOyB2YXIgdCA9ICQoJy5zZWxlY3RlZC1zaG9wcy1maWVsZCcsYyk7IHZhciBzYyA9ICQoJ2lucHV0W25hbWU9InNob3BzW10iXTpjaGVja2VkJyxjKTsgdmFyIHMgPSAkKCdpbnB1dFtuYW1lPSJzaG9wc1tdIl0nLGMpOyB2YXIgaCA9ICQoIi5jaG9vc2Utc2hvcC1saW5rIC5zZWxlY3RlZC1zaG9wcy1uYW1lIixjKTsgdmFyIHIgPSAnJyxyMiA9ICcnOyBjb25zb2xlLmxvZyh0KTsgY29uc29sZS5sb2coc2MpOyBjb25zb2xlLmxvZyhzKTsgaWYgKHNjLmxlbmd0aCAmJiBzYy5sZW5ndGggPCBzLmxlbmd0aCkgeyB2YXIgbiA9IFtdOyBzYy5lYWNoKGZ1bmN0aW9uICgpIHsgbi5wdXNoKCQodGhpcykudmFsKCkpOyByICs9IChyID09ICcnKT8nJzonLCAnOyByICs9ICQodGhpcykuYXR0cigidGl0bGUiKTsgfSk7IHZhciBmYXZTSXMgPSB0Yy5nZXRGYXZTaG9wc0lkcyhjKTsgdmFyIGRpZmYxID0gJChmYXZTSXMpLm5vdChuKS5nZXQoKTsgdmFyIGRpZmYyID0gJChuKS5ub3QoZmF2U0lzKS5nZXQoKTsgaWYgKGRpZmYxLmxlbmd0aCA9PSAwICYmIGRpZmYyLmxlbmd0aCA9PSAwKSB7IGNvbnNvbGUubG9nKCdmYXZvcml0ZScpOyAkKHQpLnZhbCgiZmF2b3JpdGUiKTsgciA9ICLQktGL0LHRgNCw0YLRjCDQvNCw0LPQsNC30LjQvdGLIjsgcjIgPSAi0JvRjtCx0LjQvNGL0LUg0LzQsNCz0LDQt9C40L3RiyI7IH0gZWxzZSB7IGNvbnNvbGUubG9nKCdzZXQgbjogJyArIG4pOyBjb25zb2xlLmxvZygkKHQpKTsgY29uc29sZS5sb2coJCh0KS52YWwoKSk7ICQodCkudmFsKG4pOyBjb25zb2xlLmxvZygkKHQpLnZhbCgpKTsgcjIgPSByOyB9IH0gZWxzZSB7IGNvbnNvbGUubG9nKCdBTEwnKTsgJCh0KS52YWwoImFsbCIpOyByID0gItCS0YvQsdGA0LDRgtGMINC80LDQs9Cw0LfQuNC90YsiOyByMiA9ICLQktGB0LUg0LzQsNCz0LDQt9C40L3RiyI7IH0gaC50ZXh0KHIyKTsgaC5hdHRyKHsidGl0bGUiOnIsImRhdGEtb3JpZ2luYWwtdGl0bGUiOnJ9KTsgdGMuaGlkZUNob29zZVNob3BzKCk7IH07IHRjLmhpZGVDaG9vc2VTaG9wcyA9IGZ1bmN0aW9uKCl7ICQodGMuY3NlbCkucmVtb3ZlQ2xhc3MoJ29wZW4nKTsgaWYgKGRjb3JlY25nLmlzVG91Y2hEZXZpY2UpIHsgJCgnQk9EWScpLnJlbW92ZUNsYXNzKCdtb2RhbC1vcGVuJyk7IGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCA9PT0gJyMnICsgdGMudXJsaGFzaCkgeyBoaXN0b3J5LmJhY2soKTsgfSB9IH07IHRjLnNob3dDaG9vc2VTaG9wcyA9IGZ1bmN0aW9uKCl7ICQodGMuY3NlbCkuYWRkQ2xhc3MoJ29wZW4nKTsgaWYgKGRjb3JlY25nLmlzVG91Y2hEZXZpY2UpIHsgJCgnQk9EWScpLmFkZENsYXNzKCdtb2RhbC1vcGVuJyk7IGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCAhPT0gJyMnICsgdGMudXJsaGFzaCkgeyB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgJyMnICsgdGMudXJsaGFzaCk7IH0gfSB9OyB0Yy5nZXRTaG9wc0NhdGVnb3J5SFRNTCA9IGZ1bmN0aW9uKGNJLGNOKXsgdmFyIHNob3BzSHRtbCA9ICc8ZGl2IGNsYXNzPSJjYXRlZ29yeSBoaWRkZW4iIGRhdGEtaWQ9IicgKyBjSSArICciPic7IHNob3BzSHRtbCArPSAnPGxhYmVsPic7IHNob3BzSHRtbCArPSAnPGlucHV0IGNoZWNrZWQ9ImNoZWNrZWQiIG5hbWU9InNob3BjYXRlZ29yaWVzW10iIHR5cGU9ImNoZWNrYm94IiB0aXRsZT0i0JLRi9Cx0YDQsNGC0Ywv0J7RgtC80LXQvdC40YLRjCDQstGB0LUg0LzQsNCz0LDQt9C40L3RiyIgLz4gJzsgc2hvcHNIdG1sICs9IGNOOyBzaG9wc0h0bWwgKz0gJzxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLW1pbnVzIHRvb2dsZS1idG4iPjwvc3Bhbj4nOyBzaG9wc0h0bWwgKz0gJzwvbGFiZWw+PHVsPic7IHNob3BzSHRtbCArPSAnPC91bD48L2Rpdj4nOyByZXR1cm4gc2hvcHNIdG1sOyB9OyB0Yy5nZXRTaG9wSFRNTCA9IGZ1bmN0aW9uKHNob3ApeyB2YXIgc2hvcHNIdG1sID0gJzxsaT4nOyBzaG9wc0h0bWwgKz0gJzxsYWJlbCBmb3I9InN1YnNjcmliZS1zaG9wLScgKyBzaG9wLmlkICsgJyIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IicgKyBzaG9wLm5hbWUucmVwbGFjZSgnIicsJycpICsgJyI+Jzsgc2hvcHNIdG1sICs9ICc8aW5wdXQgaWQ9InN1YnNjcmliZS1zaG9wLScgKyBzaG9wLmlkICsgJyIgbmFtZT0ic2hvcHNbXSIgdmFsdWU9IicgKyBzaG9wLmlkICsgJyIgdGl0bGU9IicgKyBzaG9wLm5hbWUucmVwbGFjZSgnIicsJycpICsgJyIgdHlwZT0iY2hlY2tib3giPic7IHNob3BzSHRtbCArPSAnPHNwYW4gY2xhc3M9ImltYWdlIj4gPGltZyBzcmM9IicgKyBzaG9wLmltYWdlICsgJyIgYWx0PSInICsgc2hvcC5uYW1lLnJlcGxhY2UoJyInLCcnKSArICciIHRpdGxlPSInICsgc2hvcC5uYW1lLnJlcGxhY2UoJyInLCcnKSArICciIGhlaWdodD0iMTAwIiB3aWR0aD0iMTAwIj48L3NwYW4+Jzsgc2hvcHNIdG1sICs9IHNob3AubmFtZS5yZXBsYWNlKCciJywnJyk7IHNob3BzSHRtbCArPSAnPC9sYWJlbD4nOyBzaG9wc0h0bWwgKz0gJzwvbGk+JzsgcmV0dXJuIHNob3BzSHRtbDsgfTsgdGMubG9hZEZhdm9yaXRlU2hvcHMgPSBmdW5jdGlvbihjLGNpdHlJZCl7IHRjLnNGYXZMb2FkZWQgPSBmYWxzZTsgdmFyIHNob3BzV3JhcCA9ICQoJy5jaG9vc2Utc2hvcHMgLndyYXAnLGMpOyB2YXIgdXJsMiA9ICcvYXBpdjIvZmF2b3JpdGVzaG9wcy8nOyB2YXIgZGF0YTIgPSB7IGNpdHlfaWQ6IGNpdHlJZCwgbGltaXQ6IDk5OSwgZmllbGRzOiAnaWQsbmFtZSxpbWFnZSxpbWFnZTUwLGNhdGVnb3JpZXNfaWQnIH07IEFwaS5nZXQodXJsMiwgZGF0YTIsIGZ1bmN0aW9uIChyZXNwb25zZTIpIHsgaWYgKHJlc3BvbnNlMi50b3RhbENvdW50ID4gMCkgeyB2YXIgc2hvcHNIdG1sID0gJyc7IGZvciAodmFyIGtleTIgaW4gcmVzcG9uc2UyLnNob3BzKSB7IHNob3BzSHRtbCArPSB0Yy5nZXRTaG9wSFRNTChyZXNwb25zZTIuc2hvcHNba2V5Ml0pOyB9ICQoJy5jYXRlZ29yeVtkYXRhLWlkPSIwIl0nLCBzaG9wc1dyYXApLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTsgJCgnLmNhdGVnb3J5W2RhdGEtaWQ9IjAiXSB1bCcsIHNob3BzV3JhcCkuaHRtbChzaG9wc0h0bWwpOyB9IHRjLnNGYXZMb2FkZWQgPSB0cnVlOyBpZiAodGMuc0xvYWRlZCkgeyB0Yy5zZXRDaGVja2VkKGMpOyB9IH0pOyB9OyB0Yy5sb2FkU2hvcHMgPSBmdW5jdGlvbihjLGNpdHlJZCl7IHZhciBzaG9wc1dyYXAgPSAkKCcuY2hvb3NlLXNob3BzIC53cmFwJyxjKTsgdGMuc0xvYWRlZCA9IGZhbHNlOyB0Yy5zRmF2TG9hZGVkID0gZmFsc2U7IHZhciB1cmwgPSAnL2FwaXYyL2NhdGVnb3JpZXMvJzsgdmFyIGRhdGEgPSB7IGNpdHlfaWQ6IGNpdHlJZCwgbGltaXQ6IDk5OSwgZmllbGRzOiAnaWQsbmFtZScgfTsgc2hvcHNXcmFwLmh0bWwoJycpLmFkZENsYXNzKCdsb2FkZXItaWNvbicpLmF0dHIoJ2RhdGEtY2l0eWlkJywgY2l0eUlkKTsgc2hvcHNXcmFwLmh0bWwoJzxkaXY+PGxhYmVsPjxpbnB1dCBjaGVja2VkPSJjaGVja2VkIiBuYW1lPSJhbGxzaG9wY2F0ZWdvcmllc1tdIiB0eXBlPSJjaGVja2JveCIgdGl0bGU9ItCS0YvQsdGA0LDRgtGML9Ce0YLQvNC10L3QuNGC0Ywg0LLRgdC1INC80LDQs9Cw0LfQuNC90YsiIC8+INCS0YvQsdGA0LDRgtGML9Ce0YLQvNC10L3QuNGC0Ywg0LLRgdC1INC80LDQs9Cw0LfQuNC90Ys8L2xhYmVsPjwvZGl2PicpOyBBcGkuZ2V0KHVybCwgZGF0YSwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7IGlmIChyZXNwb25zZS50b3RhbENvdW50ID4gMCkgeyBzaG9wc1dyYXAuYXBwZW5kKHRjLmdldFNob3BzQ2F0ZWdvcnlIVE1MKDAsJ9Cb0Y7QsdC40LzRi9C1JykpOyB2YXIgbG9hZGVkID0gMDsgZm9yICh2YXIga2V5IGluIHJlc3BvbnNlLmNhdGVnb3JpZXMpIHsgdmFyIGNhdCA9IHJlc3BvbnNlLmNhdGVnb3JpZXNba2V5XTsgdmFyIGNJID0gY2F0LmlkOyB2YXIgY04gPSBjYXQubmFtZTsgc2hvcHNXcmFwLmFwcGVuZCh0Yy5nZXRTaG9wc0NhdGVnb3J5SFRNTChjSSxjTikpOyB2YXIgdXJsMiA9ICcvYXBpdjMvc2hvcHMvJzsgdmFyIGRhdGEyID0geyBjaXR5X2lkOiBjaXR5SWQsIHN0YXR1czogMSwgY2F0ZWdvcnlfaWQ6IGNJLCBsaW1pdDogOTk5LCBmaWVsZHM6ICdpZCxuYW1lLGltYWdlLGltYWdlNTAsY2F0ZWdvcmllc19pZCcgfTsgQXBpLmdldCh1cmwyLCBkYXRhMiwgZnVuY3Rpb24gKHJlc3BvbnNlMikgeyBpZiAocmVzcG9uc2UyLnRvdGFsQ291bnQgPiAwKSB7IHZhciBzaG9wc0h0bWwgPSAnJzsgZm9yICh2YXIga2V5MiBpbiByZXNwb25zZTIuc2hvcHMpIHsgdmFyIGNJID0gcmVzcG9uc2UyLnNob3BzW2tleTJdLmNhdGVnb3JpZXNfaWQ7IHNob3BzSHRtbCArPSB0Yy5nZXRTaG9wSFRNTChyZXNwb25zZTIuc2hvcHNba2V5Ml0pOyB9ICQoJy5jYXRlZ29yeVtkYXRhLWlkPSInICsgY0kgKyAnIl0nLCBzaG9wc1dyYXApLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTsgJCgnLmNhdGVnb3J5W2RhdGEtaWQ9IicgKyBjSSArICciXSB1bCcsIHNob3BzV3JhcCkuaHRtbChzaG9wc0h0bWwpOyB9IGxvYWRlZCsrOyBpZiAocmVzcG9uc2UudG90YWxDb3VudCA9PSBsb2FkZWQpIHsgdGMuc0xvYWRlZCA9IHRydWU7IHRjLmxvYWRGYXZvcml0ZVNob3BzKGMsY2l0eUlkKTsgaWYgKHRjLnNGYXZMb2FkZWQpIHsgdGMuc2V0Q2hlY2tlZChjKTsgfSB9IH0pOyB9IH0gc2hvcHNXcmFwLnJlbW92ZUNsYXNzKCdsb2FkZXItaWNvbicpOyB9KTsgfTsgdGMuZ2V0U2VsZWN0ZWRTaG9wcyA9IGZ1bmN0aW9uKGMpeyByZXR1cm4gJCh0Yy5zc25zZWwsYykudmFsKCk7IH07IHRjLmdldEZhdlNob3BzSWRzID0gZnVuY3Rpb24oYyl7IHZhciB2ID0gW107ICQoJy5jYXRlZ29yeVtkYXRhLWlkPSIwIl0gW25hbWU9InNob3BzW10iXScsYykuZWFjaChmdW5jdGlvbigpeyB2LnB1c2goJCh0aGlzKS52YWwoKSk7IH0pOyByZXR1cm4gdjsgfTsgdGMuc2V0Q2hlY2tlZCA9IGZ1bmN0aW9uKGMpeyB2YXIgZmF2U0lzID0gdGMuZ2V0RmF2U2hvcHNJZHMoYyk7IGZvcih2YXIgaSA9IDA7IGkgPCBmYXZTSXMubGVuZ3RoOyBpKyspIHsgJCgnLmNhdGVnb3J5W2RhdGEtaWQhPSIwIl0gW25hbWU9InNob3BzW10iXVt2YWx1ZT0iJyArIGZhdlNJc1tpXSArICciXScsIGMpLnBhcmVudHMoJ2xpOmZpcnN0JykucmVtb3ZlKCk7IH0gdmFyIHNlbFMgPSB0Yy5nZXRTZWxlY3RlZFNob3BzKGMpOyBpZiAoc2VsUyA9PSAnYWxsJykgeyAkKCdbbmFtZT0ic2hvcHNbXSJdJyxjKS5wcm9wKCJjaGVja2VkIiwgdHJ1ZSk7IH0gZWxzZSBpZiAoc2VsUyA9PSAnZmF2b3JpdGUnKSB7ICQoJy5jYXRlZ29yeVtkYXRhLWlkPSIwIl0gW25hbWU9InNob3BzW10iXScsYykucHJvcCgiY2hlY2tlZCIsIHRydWUpOyB9IGVsc2UgeyB2YXIgc2VsU0FyciA9IHNlbFMuc3BsaXQoJywnKTsgZm9yKHZhciBpID0gMDsgaSA8IHNlbFNBcnIubGVuZ3RoOyBpKyspIHsgJCgnW25hbWU9InNob3BzW10iXVt2YWx1ZT0iJyArIHNlbFNBcnJbaV0gKyAnIl0nLCBjKS5wcm9wKCJjaGVja2VkIiwgdHJ1ZSk7IH0gfSBpZiAoc2VsUyAhPSAnYWxsJykgeyAkKCdbbmFtZT0ic2hvcHNbXSJdOm5vdCg6Y2hlY2tlZCknKS5lYWNoKGZ1bmN0aW9uKCl7IHZhciBjID0gJCh0aGlzKS5wYXJlbnRzKCcuY2F0ZWdvcnk6Zmlyc3QnKTsgJCgnW25hbWU9InNob3BjYXRlZ29yaWVzW10iXScsYykucHJvcCgnY2hlY2tlZCcsZmFsc2UpOyAkKCdbbmFtZT0iYWxsc2hvcGNhdGVnb3JpZXNbXSJdJykucHJvcCgnY2hlY2tlZCcsZmFsc2UpOyB9KTsgfSB9OyB0Yy5zZXRTaG9wc0NhdGVnb3J5Q2hlY2tib3hlcyA9IGZ1bmN0aW9uKGUpeyB2YXIgY24gPSAkKHRoaXMpLnBhcmVudHMoJy5jYXRlZ29yeTpmaXJzdCcpOyB2YXIgcyA9ICQoJ2lucHV0W25hbWU9InNob3BzW10iXScsIGNuKTsgcy5wcm9wKCdjaGVja2VkJywgJCh0aGlzKS5pcygnOmNoZWNrZWQnKSk7IHMudHJpZ2dlcignY2hhbmdlJyk7IH07IHRjLnNldEFsbFNob3BzQ2hlY2tib3hlcyA9IGZ1bmN0aW9uKGUpeyB2YXIgY24gPSAkKHRoaXMpLnBhcmVudHMoJy53cmFwOmZpcnN0Jyk7IHZhciBzID0gJCgnaW5wdXRbbmFtZT0ic2hvcGNhdGVnb3JpZXNbXSJdJywgY24pOyBzLnByb3AoJ2NoZWNrZWQnLCAkKHRoaXMpLmlzKCc6Y2hlY2tlZCcpKTsgcy50cmlnZ2VyKCdjaGFuZ2UnKTsgfTsgJCgnQk9EWScpLm9uKCdjbGljaycsJy5jaG9vc2Utc2hvcC1saW5rJyx0Yy5jaG9vc2VTaG9wQnRuQ2xpY2spOyAkKCdCT0RZJykub24oJ2NsaWNrJyx0Yy5jc2VsICsgJyAuY2FuY2VsLWJ1dHRvbiwgJyArIHRjLmNzZWwgKyAnIC5idG4tbW9kYWwtY2xvc2UnLHRjLmNhbmNlbEJ0bkNsaWNrKTsgJCgnQk9EWScpLm9uKCdjbGljaycsdGMuY3NlbCArICcgLnN1Ym1pdC1idXR0b24nLHRjLnN1Ym1pdEJ0bkNsaWNrKTsgJCgnQk9EWScpLm9uKCdjaGFuZ2UnLHRjLmNzZWwgKyAnIFtuYW1lPSJzaG9wY2F0ZWdvcmllc1tdIl0nLHRjLnNldFNob3BzQ2F0ZWdvcnlDaGVja2JveGVzKTsgJCgnQk9EWScpLm9uKCdjaGFuZ2UnLHRjLmNzZWwgKyAnIFtuYW1lPSJhbGxzaG9wY2F0ZWdvcmllc1tdIl0nLHRjLnNldEFsbFNob3BzQ2hlY2tib3hlcyk7ICQoJ0JPRFknKS5vbignY2xpY2snLHRjLmNhbmNlbEJ0bkNsaWNrKTsgJCgnQk9EWScpLm9uKCdjbGljaycsJy5jaG9vc2Utc2hvcC13cmFwJyxmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpO30pOyAkKHdpbmRvdykub24oJ3BvcHN0YXRlJywgZnVuY3Rpb24gKGUpIHsgaWYgKGRjb3JlY25nLmlzVG91Y2hEZXZpY2UpIHsgJCh0Yy5jc2VsICsgJyAuYnRuLW1vZGFsLWNsb3NlJykudHJpZ2dlcignY2xpY2snKTsgfSB9KTsgJCgnQk9EWScpLm9uKCdrZXl1cCBjdXQgcGFzdGUnLHRjLmNzZWwgKyAnIC5zZWFyY2gtc2hvcHMtaW5wdXQnLGZ1bmN0aW9uKCl7IHZhciBzZWFyY2hUZXh0ID0gJCh0aGlzKS52YWwoKS50b0xvd2VyQ2FzZSgpOyAkKHRjLmNzZWwgKyAiIHVsIGxpIGxhYmVsIikuZWFjaChmdW5jdGlvbigpeyB2YXIgY3VycmVudExpVGV4dCA9ICQodGhpcykudGV4dCgpLnRvTG93ZXJDYXNlKCksIHNob3dDdXJyZW50TGkgPSBjdXJyZW50TGlUZXh0LmluZGV4T2Yoc2VhcmNoVGV4dCkgIT09IC0xOyAkKHRoaXMpLmNsb3Nlc3QoJ2xpJykudG9nZ2xlKHNob3dDdXJyZW50TGkpOyB9KTsgfSk7ICQoJ0JPRFknKS5vbignY2xpY2snLHRjLmNzZWwgKyAnIC5jYXRlZ29yeSBsYWJlbCAudG9vZ2xlLWJ0bicsZnVuY3Rpb24oZSl7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgY29uc29sZS5sb2coIHRjLmNzZWwgKyAnIC5jYXRlZ29yeSBsYWJlbCBDTElDSycgKTsgdmFyIHVsID0gJCh0aGlzKS5wYXJlbnRzKCcuY2F0ZWdvcnk6Zmlyc3QnKS5maW5kKCd1bDpmaXJzdCcpOyBjb25zb2xlLmxvZyggdWwgKTsgaWYgKCQodGhpcykuaGFzQ2xhc3MoJ2dseXBoaWNvbi1taW51cycpKSB7ICQodWwpLmhpZGUoKTsgJCh0aGlzKS5yZW1vdmVDbGFzcygnZ2x5cGhpY29uLW1pbnVzJyk7ICQodGhpcykuYWRkQ2xhc3MoJ2dseXBoaWNvbi1wbHVzJyk7IH0gZWxzZSB7ICQodWwpLnNob3coKTsgJCh0aGlzKS5yZW1vdmVDbGFzcygnZ2x5cGhpY29uLXBsdXMnKTsgJCh0aGlzKS5hZGRDbGFzcygnZ2x5cGhpY29uLW1pbnVzJyk7IH0gfSk7IH07IHZhciBzaG9wc1NlbGVjdG9yID0gbmV3IHNob3BzU2VsZWN0b3JDbGFzcygpOyA=");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("KGZ1bmN0aW9uICgkKSB7IHZhciBjdXN0b21Nb2RhbEhhc2ggPSAnZHJvcGRvd25vcGVuJzsgJCgnQk9EWScpLm9uKCdjbGljaycsICcuYnRuLWdyb3VwLXNlYXJjaCAuZm9ybS1jb250cm9sJywgZnVuY3Rpb24gKGUpIHsgZS5zdG9wUHJvcGFnYXRpb24oKTsgfSk7ICQoJ2JvZHknKS5vbignY2xpY2snLCAnLmJ0bi1ncm91cC1zZWFyY2ggLmRyb3Bkb3duLW1lbnUuaW5uZXI+bGknLCBmdW5jdGlvbiAoZSkgeyBpZiAoJCh0aGlzKS5oYXNDbGFzcygnbm8tcmVzdWx0cycpKSB7IHJldHVybjsgfSBpZiAoJCh0aGlzKS5oYXNDbGFzcygnZGlzYWJsZWQnKSkgeyBlLnN0b3BQcm9wYWdhdGlvbigpOyByZXR1cm47IH0gdmFyIGJ0bkdyb3VwID0gJCh0aGlzKS5wYXJlbnRzKCcuYnRuLWdyb3VwLXNlYXJjaDpmaXJzdCcpLCBpZCA9ICQodGhpcykuYXR0cigncmVsJyksIG5hbWUgPSAkKCcudGV4dCcsIHRoaXMpLnRleHQoKSwgYnV0dG9uID0gJCgnLmJ0bicsIGJ0bkdyb3VwKSwgYnV0dG9uVGV4dCA9ICQoJy50ZXh0JywgYnV0dG9uKTsgaWYgKCFidXR0b25UZXh0LmF0dHIoJ2RhdGEtb3JpZ3RleHQnKSkgeyBidXR0b25UZXh0LmF0dHIoJ2RhdGEtb3JpZ3RleHQnLCBidXR0b25UZXh0LnRleHQoKSk7IH0gYnV0dG9uVGV4dC50ZXh0KG5hbWUpOyAkKCdsaS5hY3RpdmUnLCBidG5Hcm91cCkucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOyAkKHRoaXMpLmFkZENsYXNzKCdhY3RpdmUnKTsgaWYgKCQoYnV0dG9uKS5hdHRyKCdkYXRhLWhpZGRlbmlucHV0JykpIHsgdmFyIGhpZGRlbklucHV0TmFtZSA9ICQoYnV0dG9uKS5hdHRyKCdkYXRhLWhpZGRlbmlucHV0Jyk7IHZhciBoaWRkZW5JbnB1dCA9ICQoJ1tuYW1lPSInICsgaGlkZGVuSW5wdXROYW1lICsgJyJdJyk7ICQoaGlkZGVuSW5wdXQpLnZhbChpZCk7ICQoaGlkZGVuSW5wdXQpLmF0dHIoJ2RhdGEtY2l0eW5hbWUnLCBuYW1lKTsgJChoaWRkZW5JbnB1dCkudHJpZ2dlcignY2hhbmdlJyk7IH0gfSk7ICQoJ0JPRFknKS5vbignY2xpY2snLCAnLmJ0bi1ncm91cC1zZWFyY2ggLmRyb3Bkb3duLXRvZ2dsZScsIGZ1bmN0aW9uIChlKSB7IGNvbnNvbGUubG9nKCdDTElDSyAuYnRuLWdyb3VwLXNlYXJjaCAuZHJvcGRvd24tdG9nZ2xlJyk7IHZhciBidG5Hcm91cCA9ICQodGhpcykucGFyZW50cygnLmJ0bi1ncm91cC1zZWFyY2g6Zmlyc3QnKSwgaW5wdXQgPSAkKCcudHlwZWFoZWFkLC50eXBlYWhlYWQtYXBpJywgYnRuR3JvdXApOyBjb25zb2xlLmxvZyhidG5Hcm91cCk7IGNvbnNvbGUubG9nKGJ0bkdyb3VwKTsgY29uc29sZS5sb2coYnRuR3JvdXAuaGFzQ2xhc3MoJ29wZW4nKSk7IGlmICghYnRuR3JvdXAuaGFzQ2xhc3MoJ29wZW4nKSkgeyB2YXIgZHJvcGRvd25NZW51ID0gJCgnPi5kcm9wZG93bi1tZW51OmZpcnN0JyxidG5Hcm91cCksIHN1Ym1lbnUgPSAkKCc+IC5kcm9wZG93bi1tZW51LmlubmVyJywgZHJvcGRvd25NZW51KSwgd2luZG93SGVpZ2h0ID0gJCh3aW5kb3cpLmhlaWdodCgpLCBzdWJtZW51SGVpZ2h0ID0gTWF0aC5yb3VuZCh3aW5kb3dIZWlnaHQgLyAyKTsgaWYgKGRjb3JlY25nLmlzVG91Y2hEZXZpY2UpIHsgJCgnQk9EWScpLmFkZENsYXNzKCdtb2RhbC1vcGVuJyk7IGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCAhPT0gJyMnICsgY3VzdG9tTW9kYWxIYXNoKSB7IHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBudWxsLCAnIycgKyBjdXN0b21Nb2RhbEhhc2gpOyB9IH0gaWYgKHN1Ym1lbnVIZWlnaHQgPCAxNTApIHsgc3VibWVudUhlaWdodCA9IDE1MDsgfSBzdWJtZW51LmNzcygnbWF4LWhlaWdodCcsIHN1Ym1lbnVIZWlnaHQpOyBpZiAoaW5wdXQuYXR0cignZGF0YS1sb2FkJykgPT0gJzEnKSB7IHByZXZWYWwgPSBmYWxzZTsgaW5wdXQudHJpZ2dlcigna2V5dXAnKTsgaW5wdXQuYXR0cignZGF0YS1sb2FkJywgMCk7IH0gZHJvcGRvd25NZW51LmFkZENsYXNzKCdvcGVuJyk7IGlmIChkY29yZWNuZy5pc1RvdWNoRGV2aWNlICYmICQodGhpcykuYXR0cignZGF0YS1tb2JpbGUnKSkgeyBidG5Hcm91cC5hZGRDbGFzcygnb3BlbicpOyB9IGlmICghZGNvcmVjbmcuaXNUb3VjaERldmljZSkgeyBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgaW5wdXQuZm9jdXMoKTsgfSwgMCk7IH0gfSBlbHNlIHsgaWYgKGRjb3JlY25nLmlzVG91Y2hEZXZpY2UpIHsgJCgnQk9EWScpLnJlbW92ZUNsYXNzKCdtb2RhbC1vcGVuJyk7IGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCA9PT0gJyMnICsgY3VzdG9tTW9kYWxIYXNoKSB7IGhpc3RvcnkuYmFjaygpOyB9IH0gfSB9KTsgdmFyIHhocjsgdmFyIHByZXZWYWw7ICQoJ0JPRFknKS5vbigna2V5dXAgY3V0IHBhc3RlJywgJy50eXBlYWhlYWQsLnR5cGVhaGVhZC1hcGknLCBmdW5jdGlvbiAoJGUpIHsgdmFyIHNwZWNpYWxLZXlDb2RlTWFwID0geyA5OiAidGFiIiwgMjc6ICJlc2MiLCAzNzogImxlZnQiLCAzOTogInJpZ2h0IiwgMTM6ICJlbnRlciIsIDM4OiAidXAiLCA0MDogImRvd24iLCAxNjogInNoaWZ0IiwgMTc6ICJjdHJsIiwgMTg6ICJhbHQiIH07IGlmIChzcGVjaWFsS2V5Q29kZU1hcFskZS53aGljaCB8fCAkZS5rZXlDb2RlXSkgeyByZXR1cm47IH0gdmFyIGlucHV0ID0gJCh0aGlzKTsgdmFyIHNlYXJjaFZhbCA9IGlucHV0LnZhbCgpOyBpZiAocHJldlZhbCA9PT0gc2VhcmNoVmFsKSB7IHJldHVybjsgfSBwcmV2VmFsID0gc2VhcmNoVmFsOyBpZiAoeGhyKSB7IHhoci5hYm9ydCgpOyB9IHZhciBtaW5sZW5ndGggPSBpbnB1dC5hdHRyKCdkYXRhLW1pbmxlbmdodCcpOyBpZiAobWlubGVuZ3RoKSB7IGlmIChzZWFyY2hWYWwubGVuZ3RoID4gMCAmJiBzZWFyY2hWYWwubGVuZ3RoIDwgbWlubGVuZ3RoKSB7IHJldHVybiB0cnVlOyB9IH0gdmFyIGJ0bkdyb3VwID0gaW5wdXQucGFyZW50cygnLmJ0bi1ncm91cC1zZWFyY2g6Zmlyc3QnKTsgdmFyIHQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgaW5wdXQuYWRkQ2xhc3MoJ2xvYWRpbmcnKTsgfSwgMTAwKTsgdmFyIHVybCA9IGRjb3JlY25nLndlYnNpdGV1cmwucmVwbGFjZSgnYWNjb3VudC4nLCAnJykgKyBpbnB1dC5hdHRyKCdkYXRhLWFqYXgtdXJsJyk7IHVybCArPSAnP25hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudChzZWFyY2hWYWwpOyBpZiAoaW5wdXQuYXR0cignZGF0YS1hamF4LXR5cGUnKSkgeyB1cmwgKz0gJyZ0eXBlPScgKyBpbnB1dC5hdHRyKCdkYXRhLWFqYXgtdHlwZScpOyB9IGlmIChpbnB1dC5hdHRyKCdkYXRhLWFqYXgtY2l0eWlkJykpIHsgdXJsICs9ICcmY2l0eV9pZD0nICsgaW5wdXQuYXR0cignZGF0YS1hamF4LWNpdHlpZCcpOyB9IGlmIChpbnB1dC5hdHRyKCdkYXRhLWFqYXgtdXNlcmlkJykpIHsgdXJsICs9ICcmdXNlcl9pZD0nICsgaW5wdXQuYXR0cignZGF0YS1hamF4LXVzZXJpZCcpOyB9IGlmIChpbnB1dC5hdHRyKCdkYXRhLWFqYXgtc3RhdHVzJykpIHsgdXJsICs9ICcmc3RhdHVzPScgKyBpbnB1dC5hdHRyKCdkYXRhLWFqYXgtc3RhdHVzJyk7IH0gaWYgKGlucHV0LmF0dHIoJ2RhdGEtYWpheC1hbGwnKSkgeyB1cmwgKz0gJyZhbGw9JyArIGlucHV0LmF0dHIoJ2RhdGEtYWpheC1hbGwnKTsgfSBpZiAoaW5wdXQuYXR0cignZGF0YS1wYXJhbXMnKSkgeyB2YXIgcGFyYW1zID0gaW5wdXQuYXR0cignZGF0YS1wYXJhbXMnKSwgcGFyYW1zQXJyYXkgPSBwYXJhbXMuc3BsaXQoJyYnKTsgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbXNBcnJheS5sZW5ndGg7IGkrKykgeyB2YXIgcGFyYW1BcnJheSA9IHBhcmFtc0FycmF5W2ldLnNwbGl0KCc9JyksIHBhcmFtID0gcGFyYW1BcnJheVswXSwgdmFsID0gcGFyYW1BcnJheVsxXTsgaWYgKHBhcmFtID09ICdwYXJlbnQnICYmIHNlYXJjaFZhbC5sZW5ndGggPiAwKSB7IGNvbnRpbnVlOyB9IHVybCArPSAnJicgKyBwYXJhbSArICc9JyArIHZhbDsgfSB9IHZhciBzaG93Q2hlY2tib3hlcyA9IChpbnB1dC5hdHRyKCdkYXRhLWNoZWNrYm94ZXMnKSA9PSAnMScpOyB4aHIgPSAkLmFqYXgoeyB0eXBlOiAiR0VUIiwgeGhyRmllbGRzOiB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9LCBiZWZvcmVTZW5kOiBmdW5jdGlvbiAocmVxdWVzdCkgeyB9LCB1cmw6IHVybCB9KS5kb25lKGZ1bmN0aW9uIChyZXNwb25zZSkgeyB2YXIgZHJvcGRvd25Db250YWluZXIgPSAkKCcuZHJvcGRvd24tbWVudS5pbm5lcicsIGJ0bkdyb3VwKTsgaWYgKHJlc3BvbnNlLnBjYXRlZ29yaWVzKSB7IGlmIChyZXNwb25zZS50b3RhbENvdW50ID4gMCkgeyB2YXIgYnRuVGV4dE9iaiA9ICQoJy5idG4gLnRleHQnLCBidG5Hcm91cCk7IGlmIChidG5UZXh0T2JqLmxlbmd0aCkgeyB2YXIgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzU3RyID0gJChidG5UZXh0T2JqKS5hdHRyKCdkYXRhLWlkcycpOyB9IGVsc2UgeyB2YXIgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzU3RyID0gJChpbnB1dCkuYXR0cignZGF0YS1pZHMnKTsgfSB2YXIgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzID0gW107IGlmIChzZWxlY3RlZENhdGVnb3JpZXNJZHNTdHIpIHsgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzID0gc2VsZWN0ZWRDYXRlZ29yaWVzSWRzU3RyLnNwbGl0KCcsJykgfSB2YXIgaXRlbXNIVE1MID0gZGNvcmVjbmcuY2F0ZWdvcmllc0Ryb3Bkb3duLmdldEl0ZW1zSFRNTChyZXNwb25zZS5wY2F0ZWdvcmllcywgc2hvd0NoZWNrYm94ZXMsIHNlbGVjdGVkQ2F0ZWdvcmllc0lkcywgc2VhcmNoVmFsKTsgZHJvcGRvd25Db250YWluZXIuaHRtbChpdGVtc0hUTUwpOyB9IGVsc2UgeyBkcm9wZG93bkNvbnRhaW5lci5odG1sKCI8bGkgY2xhc3M9XCJuby1yZXN1bHRzXCI+PGE+0J3QuNGH0LXQs9C+INC90LUg0L3QsNC50LTQtdC90L48L2E+PC9saT4iKTsgfSB9IGVsc2UgaWYgKHJlc3BvbnNlLnVzZXJzKSB7IGlmIChyZXNwb25zZS50b3RhbENvdW50ID4gMCkgeyB2YXIgdXNlcklkSW5wdXQgPSAkKCdbbmFtZT0idXNlcnNfaWQiXScpOyB2YXIgaXRlbXNIVE1MID0gJyc7IGZvciAodmFyIGkgPSAwOyBpIDwgcmVzcG9uc2UudXNlcnMubGVuZ3RoOyBpKyspIHsgdmFyIHVzZXIgPSByZXNwb25zZS51c2Vyc1tpXTsgdmFyIGl0ZW1IVE1MID0gJyc7IHZhciBpdGVtQ2xhc3MgPSAnJzsgaXRlbUhUTUwgKz0gJzxsaScgKyAoKGl0ZW1DbGFzcyA9PSAnJykgPyAnJyA6ICcgY2xhc3M9IicgKyBpdGVtQ2xhc3MgKyAnIicpICsgJyByZWw9IicgKyB1c2VyLmlkICsgJyI+JzsgaXRlbUhUTUwgKz0gJzxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgdGl0bGU9IicgKyB1c2VyLmVtYWlsICsgJyI+JzsgaXRlbUhUTUwgKz0gJzxzcGFuIGNsYXNzPSJ0ZXh0Ij4nOyBpdGVtSFRNTCArPSB1c2VyLnVzZXJuYW1lOyBpdGVtSFRNTCArPSAnPGJyLz4mbmJzcDs8c21hbGw+JyArIHVzZXIuZW1haWwgKyAnPC9zbWFsbD4nOyBpdGVtSFRNTCArPSAnPC9zcGFuPic7IGl0ZW1IVE1MICs9ICc8L2E+JzsgaXRlbUhUTUwgKz0gJzwvbGk+JzsgaXRlbXNIVE1MICs9IGl0ZW1IVE1MOyB9IGRyb3Bkb3duQ29udGFpbmVyLmh0bWwoaXRlbXNIVE1MKTsgfSBlbHNlIHsgZHJvcGRvd25Db250YWluZXIuaHRtbCgiPGxpIGNsYXNzPVwibm8tcmVzdWx0c1wiPjxhPtCd0LjRh9C10LPQviDQvdC1INC90LDQudC00LXQvdC+PC9hPjwvbGk+Iik7IH0gfSBlbHNlIGlmIChyZXNwb25zZS5icmFuZHMpIHsgaWYgKHJlc3BvbnNlLnRvdGFsQ291bnQgPiAwKSB7IHZhciBidG5UZXh0T2JqID0gJCgnLmJ0biAudGV4dCcsIGJ0bkdyb3VwKTsgdmFyIHNlbGVjdGVkQnJhbmRzSWRzU3RyID0gJChidG5UZXh0T2JqKS5hdHRyKCdkYXRhLWlkcycpOyB2YXIgc2VsZWN0ZWRCcmFuZHNJZHMgPSBbXTsgaWYgKHNlbGVjdGVkQnJhbmRzSWRzU3RyKSB7IHNlbGVjdGVkQnJhbmRzSWRzID0gc2VsZWN0ZWRCcmFuZHNJZHNTdHIuc3BsaXQoJywnKSB9IHZhciBpdGVtc0hUTUwgPSBkY29yZWNuZy5icmFuZHNEcm9wZG93bi5nZXRJdGVtc0hUTUwocmVzcG9uc2UuYnJhbmRzLCBzZWxlY3RlZEJyYW5kc0lkcywgc2VhcmNoVmFsKTsgZHJvcGRvd25Db250YWluZXIuaHRtbChpdGVtc0hUTUwpOyB9IGVsc2UgeyBkcm9wZG93bkNvbnRhaW5lci5odG1sKCI8bGkgY2xhc3M9XCJuby1yZXN1bHRzXCI+PGE+0J3QuNGH0LXQs9C+INC90LUg0L3QsNC50LTQtdC90L48L2E+PC9saT4iKTsgfSB9IGVsc2UgaWYgKHJlc3BvbnNlLmNpdGllcykgeyBpZiAocmVzcG9uc2UudG90YWxDb3VudCA+IDApIHsgdmFyIGJ0blRleHRPYmogPSAkKCcuYnRuIC50ZXh0JywgYnRuR3JvdXApLCBzZWxlY3RlZENpdGllc0lkc1N0ciA9ICQoYnRuVGV4dE9iaikuYXR0cignZGF0YS1pZHMnKTsgc2VsZWN0ZWRDaXRpZXNJZHMgPSBbXTsgaWYgKHNlbGVjdGVkQ2l0aWVzSWRzU3RyKSB7IHNlbGVjdGVkQ2l0aWVzSWRzID0gc2VsZWN0ZWRDaXRpZXNJZHNTdHIuc3BsaXQoJywnKTsgfSB2YXIgaXRlbXNIVE1MID0gZGNvcmVjbmcuY2l0aWVzRHJvcGRvd24uZ2V0SXRlbXNIVE1MKHJlc3BvbnNlLmNpdGllcywgc2VsZWN0ZWRDaXRpZXNJZHMsIHNlYXJjaFZhbCwgaW5wdXQpOyBkcm9wZG93bkNvbnRhaW5lci5odG1sKGl0ZW1zSFRNTCk7IH0gZWxzZSB7IGRyb3Bkb3duQ29udGFpbmVyLmh0bWwoIjxsaSBjbGFzcz1cIm5vLXJlc3VsdHNcIj48YT7QndC40YfQtdCz0L4g0L3QtSDQvdCw0LnQtNC10L3QvjwvYT48L2xpPiIpOyB9IH0gZWxzZSB7IGRyb3Bkb3duQ29udGFpbmVyLmh0bWwocmVzcG9uc2UpOyB9IGNsZWFyVGltZW91dCh0KTsgaW5wdXQucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsgfSk7IH0pOyAkKCcuYnRuLWdyb3VwLXNlYXJjaCcpLmVhY2goZnVuY3Rpb24gKCkgeyB2YXIgYWN0aXZlSXRlbSA9ICQoJy5kcm9wZG93bi1tZW51LmlubmVyIC5hY3RpdmUnLCB0aGlzKTsgaWYgKGFjdGl2ZUl0ZW0ubGVuZ3RoKSB7IGFjdGl2ZUl0ZW0udHJpZ2dlcignY2xpY2snKTsgfSB9KTsgJCh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIGZ1bmN0aW9uIChlKSB7IGlmIChkY29yZWNuZy5pc1RvdWNoRGV2aWNlKSB7ICQoJy5idG4tZ3JvdXAtc2VhcmNoLm9wZW4gLmJ0bi1tb2RhbC1jbG9zZScpLnRyaWdnZXIoJ2NsaWNrJyk7ICQoJy5idG4tZ3JvdXAtdXNlcm5vdGlmaWNhdGlvbnMub3BlbiAuYnRuLW1vZGFsLWNsb3NlJykudHJpZ2dlcignY2xpY2snKTsgfSB9KTsgJCgnQk9EWScpLm9uKCdjbGljaycsICcuYnRuLWdyb3VwLXNlYXJjaCAuYnRuLWZpbHRlci1kaXNjb3VudHMtc2VsZWN0JywgZnVuY3Rpb24gKGUpIHsgdmFyIGJ0bkdyb3VwID0gJCh0aGlzKS5wYXJlbnRzKCcuYnRuLWdyb3VwLXNlYXJjaCcpOyBpbnB1dCA9ICQoJy50eXBlYWhlYWQsLnR5cGVhaGVhZC1hcGknLCBidG5Hcm91cCk7IGlucHV0LmF0dHIoJ2RhdGEtcHJldnZhbHVlJyxpbnB1dC5hdHRyKCdkYXRhLWlkcycpKTsgJChidG5Hcm91cCkudHJpZ2dlcignY2xpY2snKTsgJCgnQk9EWScpLnJlbW92ZUNsYXNzKCdtb2RhbC1vcGVuJyk7IGUucHJldmVudERlZmF1bHQoKTsgfSk7ICQoJ0JPRFknKS5vbignY2xpY2snLCAnLmJ0bi1ncm91cC1zZWFyY2ggLmJ0bi1maWx0ZXItZGlzY291bnRzLWNhbmNlbCcsIGZ1bmN0aW9uIChlKSB7IHZhciB3cmFwcGVyID0gJCh0aGlzKS5wYXJlbnRzKCcuYnRuLWdyb3VwLXNlYXJjaCcpOyAkKCcuYnRuLW1vZGFsLWNsb3NlJyx3cmFwcGVyKS50cmlnZ2VyKCdjbGljaycpOyBlLnByZXZlbnREZWZhdWx0KCk7IH0pOyAkKCdCT0RZJykub24oJ2NsaWNrJywgJy5idG4tbW9kYWwtY2xvc2UnLCBmdW5jdGlvbiAoZSkgeyB2YXIgYnRuR3JvdXAgPSAkKHRoaXMpLnBhcmVudHMoJy5idG4tZ3JvdXAtc2VhcmNoJyk7IGlmICghYnRuR3JvdXAubGVuZ3RoKSB7IGJ0bkdyb3VwID0gJCh0aGlzKS5wYXJlbnRzKCcuYnRuLWdyb3VwLXVzZXJub3RpZmljYXRpb25zJyk7IH0gdmFyIGlucHV0ID0gJCgnLnR5cGVhaGVhZCwudHlwZWFoZWFkLWFwaScsIGJ0bkdyb3VwKTsgaWYgKGlucHV0Lmxlbmd0aCkgeyB2YXIgcHJldlZhbHVlID0gaW5wdXQuYXR0cignZGF0YS1wcmV2dmFsdWUnKTsgaWYgKHByZXZWYWx1ZSkgeyB2YXIgaWRzID0gcHJldlZhbHVlLnNwbGl0KCcsJyk7IHZhciBleGNsdXNpb25TZWxlY3RvciA9ICcucmVtb3ZhYmxlLWl0ZW1bZGF0YS1pZCE9IicgKyBpZHMuam9pbignIl1bZGF0YS1pZCE9IicpICsgJyJdIC5nbHlwaGljb24nOyAkKGV4Y2x1c2lvblNlbGVjdG9yLCBidG5Hcm91cCkudHJpZ2dlcignY2xpY2snKTsgdmFyIGNoZWNrYm94U2VsZWN0b3IgPSAnLnNlbGVjdC10cmVlIFt0eXBlPSJjaGVja2JveCJdOm5vdCg6Y2hlY2tlZClbdmFsdWU9IicgKyBpZHMuam9pbignIl0sIC5zZWxlY3QtdHJlZSBbdHlwZT0iY2hlY2tib3giXTpub3QoOmNoZWNrZWQpW3ZhbHVlPSInKSArICciXSc7IGNvbnNvbGUubG9nKCBjaGVja2JveFNlbGVjdG9yICk7ICQoY2hlY2tib3hTZWxlY3RvcikudHJpZ2dlcignY2xpY2snKTsgfSBlbHNlIHsgJCgnLnJlbW92YWJsZS1pdGVtIC5nbHlwaGljb24nLCBidG5Hcm91cCkudHJpZ2dlcignY2xpY2snKTsgfSB9ICQoJy5kcm9wZG93bi10b2dnbGUnLGJ0bkdyb3VwKS50cmlnZ2VyKCdjbGljaycpOyBlLnByZXZlbnREZWZhdWx0KCk7IH0pOyAkKCdCT0RZJykub24oJ2NsaWNrJywnLmJ0bi1ncm91cC1zZWFyY2ggLmRyb3Bkb3duLW1lbnUub3BlbicsZnVuY3Rpb24oZSl7IGlmIChkY29yZWNuZy5pc1RvdWNoRGV2aWNlKSB7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgfSB9KTsgJCgnQk9EWScpLm9uKCdjbGljaycsJy5jaXRpZXMtZmlsdGVyLWRyb3Bkb3duIC5kcm9wZG93bi1tZW51IGEsLmNsb3NlLXN1Ym1lbnUtb24tc2VsZWN0IC5kcm9wZG93bi1tZW51IGEnLGZ1bmN0aW9uKGUpeyB2YXIgYnRuR3JvdXAgPSAkKHRoaXMpLnBhcmVudHMoJy5idG4tZ3JvdXAtc2VhcmNoOmZpcnN0Jyk7ICQoYnRuR3JvdXApLnRyaWdnZXIoJ2NsaWNrJyk7ICQoJ0JPRFknKS5yZW1vdmVDbGFzcygnbW9kYWwtb3BlbicpOyB9KTsgfSkoalF1ZXJ5KTs=");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("KGZ1bmN0aW9uICgkKSB7ICQoJ0JPRFknKS5vZmYoJ2NsaWNrJywgJy5zZWxlY3QtdHJlZSBsaScpOyAkKCdCT0RZJykub2ZmKCdjbGljaycsICcuc2VsZWN0LXRyZWUgbGkgYScpOyAkKCdCT0RZJykub2ZmKCdjbGljaycsICcuc2VsZWN0LXRyZWUgbGkgYSBzcGFuJyk7ICQoJ0JPRFknKS5vZmYoJ2NsaWNrJywgJy5zZWxlY3QtdHJlZSBbdHlwZT0iY2hlY2tib3giXScpOyAkKCdCT0RZJykub24oJ2NsaWNrJywgJy5zZWxlY3QtdHJlZSBsaSwgLmJ0bi1zZWFyY2gtY2F0ZWdvcmllcyBoNicsIGZ1bmN0aW9uIChlKSB7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgfSk7ICQoJ0JPRFknKS5vbignY2xpY2snLCAnLnNlbGVjdC10cmVlIGxpIGEnLCBmdW5jdGlvbiAoZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IH0pOyB2YXIgQ2F0ZWdvcmllc0Ryb3Bkb3duID0gZnVuY3Rpb24gKCkgeyB0aGlzLmdldENhdGVnb3JpZXNJZHNTdHIgPSBmdW5jdGlvbiAod3JhcHBlciwgcHJvZHVjdEluZGV4KSB7IHZhciBjYXRlZ29yaWVzSW5wdXRzID0gJCgnW25hbWVePSJwcm9kdWN0c1snICsgcHJvZHVjdEluZGV4ICsgJ11bcHJvZHVjdGNhdGVnb3JpZXNdIl0nLCB3cmFwcGVyKTsgdmFyIGNhdGVnb3JpZXNJZHMgPSAnJzsgaWYgKGNhdGVnb3JpZXNJbnB1dHMubGVuZ3RoKSB7IGNhdGVnb3JpZXNJbnB1dHMuZWFjaChmdW5jdGlvbiAoKSB7IGNhdGVnb3JpZXNJZHMgKz0gKGNhdGVnb3JpZXNJZHMgPT0gJycpID8gJycgOiAnLCc7IGNhdGVnb3JpZXNJZHMgKz0gJCh0aGlzKS52YWwoKTsgfSk7IH0gcmV0dXJuIGNhdGVnb3JpZXNJZHM7IH07IHRoaXMuZ2V0Q2F0ZWdvcmllc1RleHQgPSBmdW5jdGlvbiAod3JhcHBlciwgcHJvZHVjdEluZGV4KSB7IHZhciBjYXRlZ29yaWVzSW5wdXRzID0gJCgnW25hbWVePSJwcm9kdWN0c1snICsgcHJvZHVjdEluZGV4ICsgJ11bcHJvZHVjdGNhdGVnb3JpZXNdIl0nLCB3cmFwcGVyKTsgdmFyIGNhdGVnb3JpZXNUZXh0ID0gJyc7IGlmIChjYXRlZ29yaWVzSW5wdXRzLmxlbmd0aCkgeyBjYXRlZ29yaWVzSW5wdXRzLmVhY2goZnVuY3Rpb24gKCkgeyB2YXIgdGV4dCA9ICQodGhpcykuYXR0cignZGF0YS10aXRsZScpOyB2YXIgY2hpbGRyZW5zID0gJCh0aGlzKS5hdHRyKCdkYXRhLWNoaWxkJyk7IGNhdGVnb3JpZXNUZXh0ICs9IChjYXRlZ29yaWVzVGV4dCA9PSAnJykgPyAnJyA6ICcsICc7IGlmIChjaGlsZHJlbnMgPT0gMCkgeyBjYXRlZ29yaWVzVGV4dCArPSAnPHN0cm9uZz4nOyB9IGNhdGVnb3JpZXNUZXh0ICs9IHRleHQ7IGlmIChjaGlsZHJlbnMgPT0gMCkgeyBjYXRlZ29yaWVzVGV4dCArPSAnPC9zdHJvbmc+JzsgfSB9KTsgfSByZXR1cm4gY2F0ZWdvcmllc1RleHQ7IH07IHRoaXMuZ2V0SXRlbXNIVE1MID0gZnVuY3Rpb24gKHBjYXRlZ29yaWVzLCBzaG93Q2hlY2tib3hlcywgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzLCBzZWFyY2hUZXh0KSB7IHZhciBpdGVtc0hUTUwgPSAnJzsgZm9yICh2YXIgaSA9IDA7IGkgPCBwY2F0ZWdvcmllcy5sZW5ndGg7IGkrKykgeyB2YXIgcGNhdGVnb3J5ID0gcGNhdGVnb3JpZXNbaV07IHZhciBoYXZlQ2hpbGRyZW5zID0gKHBjYXRlZ29yeS5jaGlsZGNhdHMgJiYgcGNhdGVnb3J5LmNoaWxkY2F0cy5sZW5ndGgpOyB2YXIgaXRlbUhUTUwgPSAnJzsgdmFyIGl0ZW1DbGFzcyA9ICcnOyB2YXIgc2hvd0NoZWNrYm94ID0gIShwY2F0ZWdvcnkuY2hpbGRyZW4gPiAwICYmICFzaG93Q2hlY2tib3hlcyk7IGlmIChwY2F0ZWdvcnkuY2hpbGRyZW4gPiAwKSB7IGl0ZW1DbGFzcyArPSAoaXRlbUNsYXNzID09ICcnKSA\/ICcnIDogJyAnOyBpdGVtQ2xhc3MgKz0gJ3BhcmVudCc7IH0gaWYgKGhhdmVDaGlsZHJlbnMpIHsgaXRlbUNsYXNzICs9IChpdGVtQ2xhc3MgPT0gJycpID8gJycgOiAnICc7IGl0ZW1DbGFzcyArPSAnb3Blbic7IH0gaXRlbUhUTUwgKz0gJzxsaScgKyAoKGl0ZW1DbGFzcyA9PSAnJykgPyAnJyA6ICcgY2xhc3M9IicgKyBpdGVtQ2xhc3MgKyAnIicpICsgJz4nOyBpdGVtSFRNTCArPSAnPGEgaHJlZj0iamF2YXNjcmlwdDo7IiBkYXRhLXBhcmVudD0iJyArIHBjYXRlZ29yeS5wYXJlbnQgKyAnIiBkYXRhLWlkPSInICsgcGNhdGVnb3J5LmlkICsgJyIgZGF0YS1jaGlsZD0iJyArIHBjYXRlZ29yeS5jaGlsZHJlbiArICciPic7IGlmIChwY2F0ZWdvcnkuY2hpbGRyZW4gPiAwKSB7IGl0ZW1IVE1MICs9ICc8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1wbHVzIj48L3NwYW4+JzsgaXRlbUhUTUwgKz0gJzxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLW1pbnVzIj48L3NwYW4+JzsgfSBlbHNlIHsgaWYgKCFzaG93Q2hlY2tib3gpIHsgaXRlbUhUTUwgKz0gJzxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWVtcHR5Ij48L3NwYW4+JzsgfSB9IGlmIChzaG93Q2hlY2tib3gpIHsgdmFyIGNoZWNrZWQgPSAoc2VsZWN0ZWRDYXRlZ29yaWVzSWRzICYmIChqUXVlcnkuaW5BcnJheShwY2F0ZWdvcnkuaWQsIHNlbGVjdGVkQ2F0ZWdvcmllc0lkcykgIT0gLTEpKTsgaXRlbUhUTUwgKz0gJzxpbnB1dCcgKyAoY2hlY2tlZCA\/ICcgY2hlY2tlZD0iY2hlY2tlZCInIDogJycpICsgJyB0eXBlPSJjaGVja2JveCIgdmFsdWU9IicgKyBwY2F0ZWdvcnkuaWQgKyAnIiAvPic7IH0gdmFyIG5hbWUgPSBwY2F0ZWdvcnkubmFtZTsgaWYgKHNlYXJjaFRleHQpIHsgc2VhcmNoVGV4dCA9IChzZWFyY2hUZXh0ICsgJycpLnJlcGxhY2UoLyhbXFxcLlwrXCpcP1xbXF5cXVwkXChcKVx7XH1cPVwhXDxcPlx8XDpdKS9nLCAiXFwkMSIpOyBuYW1lID0gbmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoIigiICsgc2VhcmNoVGV4dCArICIpIiwgJ2dpJyksICI8Yj4kMTwvYj4iKTsgfSBpdGVtSFRNTCArPSAnPHNwYW4gY2xhc3M9InRleHQiPicgKyBuYW1lICsgJzwvc3Bhbj4nOyBpdGVtSFRNTCArPSAnPC9hPic7IGlmIChoYXZlQ2hpbGRyZW5zKSB7IGl0ZW1IVE1MICs9ICc8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgaW5uZXIiPic7IGl0ZW1IVE1MICs9IGRjb3JlY25nLmNhdGVnb3JpZXNEcm9wZG93bi5nZXRJdGVtc0hUTUwocGNhdGVnb3J5LmNoaWxkY2F0cywgc2hvd0NoZWNrYm94ZXMsIHNlbGVjdGVkQ2F0ZWdvcmllc0lkcywgc2VhcmNoVGV4dCk7IGl0ZW1IVE1MICs9ICc8L3VsPic7IH0gaXRlbUhUTUwgKz0gJzwvbGk+JzsgaXRlbXNIVE1MICs9IGl0ZW1IVE1MOyB9IHJldHVybiBpdGVtc0hUTUw7IH07IH07IGRjb3JlY25nLmNhdGVnb3JpZXNEcm9wZG93biA9IG5ldyBDYXRlZ29yaWVzRHJvcGRvd247ICQoJ0JPRFknKS5vbignY2xpY2snLCAnLnNlbGVjdC10cmVlIGxpIGEgc3BhbicsIGZ1bmN0aW9uIChlKSB7IHZhciBzcGFuID0gJCh0aGlzKTsgdmFyIGEgPSBzcGFuLnBhcmVudCgnYScpOyB2YXIgbGkgPSBhLnBhcmVudCgnbGknKTsgdmFyIHByb2R1Y3RDYXRlZ29yeUlkID0gYS5hdHRyKCdkYXRhLWlkJyk7IHZhciBjaGlsZHJlbiA9IHBhcnNlSW50KGEuYXR0cignZGF0YS1jaGlsZCcpKTsgdmFyIHByb2R1Y3RJdGVtID0gbGkucGFyZW50cygnLnByb2R1Y3QtaXRlbScpOyB2YXIgd3JhcHBlciA9ICQodGhpcykucGFyZW50cygnLmJ0bi1ncm91cC1zZWFyY2g6Zmlyc3QnKTsgaWYgKGNoaWxkcmVuID09IDApIHsgJCgnW3R5cGU9ImNoZWNrYm94Il0nLCBsaSkuY2xpY2soKTsgcmV0dXJuIGZhbHNlOyB9IHZhciBzdWJVbCA9ICQoJ3VsJywgbGkpOyBpZiAoc3ViVWwubGVuZ3RoKSB7IGxpLnRvZ2dsZUNsYXNzKCdvcGVuJyk7IHJldHVybiBmYWxzZTsgfSBlbHNlIHsgbGkuYXBwZW5kKCc8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgaW5uZXIiPjwvdWw+Jyk7IGxpLmFkZENsYXNzKCdvcGVuJyk7IHN1YlVsID0gJCgndWwnLCBsaSk7IH0gaWYgKGNoaWxkcmVuID4gMCkgeyB2YXIgdXJsID0gJy9hcGl2Mi9wY2F0ZWdvcmllcy8nOyB2YXIgZGF0YSA9IHt9OyB2YXIgaW5wdXQgPSAkKCdpbnB1dC50eXBlYWhlYWQtYXBpJywgd3JhcHBlcik7IHZhciBwYXJhbXMgPSBpbnB1dC5hdHRyKCdkYXRhLXBhcmFtcycpOyBpZiAocGFyYW1zKSB7IHZhciBwYXJhbXNBcnJheSA9IHBhcmFtcy5zcGxpdCgnJicpOyBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtc0FycmF5Lmxlbmd0aDsgaSsrKSB7IHZhciBwYXJhbUFycmF5ID0gcGFyYW1zQXJyYXlbaV0uc3BsaXQoJz0nKTsgdmFyIHBhcmFtID0gcGFyYW1BcnJheVswXTsgdmFyIHZhbCA9IHBhcmFtQXJyYXlbMV07IGlmIChwYXJhbSA9PSAncGFyZW50JykgeyB2YWwgPSBwcm9kdWN0Q2F0ZWdvcnlJZDsgfSBkYXRhW3BhcmFtXSA9IHZhbDsgfSB9IHZhciBzaG93Q2hlY2tib3hlcyA9IChpbnB1dC5hdHRyKCdkYXRhLWNoZWNrYm94ZXMnKSA9PSAnMScpOyBzdWJVbC5odG1sKCc8bGkgY2xhc3M9ImxvYWRpbmciPjwvbGk+Jyk7IHZhciBidG5UZXh0T2JqID0gJCgnLmJ0biAudGV4dCcsIHdyYXBwZXIpOyBpZihidG5UZXh0T2JqLmxlbmd0aCkgeyB2YXIgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzU3RyID0gYnRuVGV4dE9iai5hdHRyKCdkYXRhLWlkcycpOyB9IGVsc2UgeyB2YXIgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzU3RyID0gaW5wdXQuYXR0cignZGF0YS1pZHMnKTsgfSB2YXIgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzID0gW107IGlmIChzZWxlY3RlZENhdGVnb3JpZXNJZHNTdHIpIHsgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzID0gc2VsZWN0ZWRDYXRlZ29yaWVzSWRzU3RyLnNwbGl0KCcsJykgfSBBcGkuZ2V0KHVybCwgZGF0YSwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7IGlmIChyZXNwb25zZS50b3RhbENvdW50ID4gMCkgeyBpZiAocmVzcG9uc2UucGNhdGVnb3JpZXMpIHsgdmFyIGl0ZW1zSFRNTCA9ICcnOyB2YXIgc2VhcmNoVGV4dCA9IGZhbHNlOyBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3BvbnNlLnBjYXRlZ29yaWVzLmxlbmd0aDsgaSsrKSB7IHZhciBwY2F0ZWdvcnkgPSByZXNwb25zZS5wY2F0ZWdvcmllc1tpXTsgdmFyIGl0ZW1IVE1MID0gJyc7IHZhciBpdGVtQ2xhc3MgPSAnJzsgdmFyIHNob3dDaGVja2JveCA9ICEocGNhdGVnb3J5LmNoaWxkcmVuID4gMCAmJiAhc2hvd0NoZWNrYm94ZXMpOyBpZiAocGNhdGVnb3J5LmNoaWxkcmVuID4gMCkgeyBpdGVtQ2xhc3MgKz0gKGl0ZW1DbGFzcyA9PSAnJykgPyAnJyA6ICcgJzsgaXRlbUNsYXNzICs9ICdwYXJlbnQnOyB9IGl0ZW1IVE1MICs9ICc8bGknICsgKChpdGVtQ2xhc3MgPT0gJycpID8gJycgOiAnIGNsYXNzPSInICsgaXRlbUNsYXNzICsgJyInKSArICc+JzsgaXRlbUhUTUwgKz0gJzxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgZGF0YS1wYXJlbnQ9IicgKyBwY2F0ZWdvcnkucGFyZW50ICsgJyIgZGF0YS1pZD0iJyArIHBjYXRlZ29yeS5pZCArICciIGRhdGEtY2hpbGQ9IicgKyBwY2F0ZWdvcnkuY2hpbGRyZW4gKyAnIj4nOyBpZiAocGNhdGVnb3J5LmNoaWxkcmVuID4gMCkgeyBpdGVtSFRNTCArPSAnPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcGx1cyI+PC9zcGFuPic7IGl0ZW1IVE1MICs9ICc8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1taW51cyI+PC9zcGFuPic7IH0gZWxzZSB7IGlmICghc2hvd0NoZWNrYm94KSB7IGl0ZW1IVE1MICs9ICc8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1lbXB0eSI+PC9zcGFuPic7IH0gfSBpZiAoc2hvd0NoZWNrYm94KSB7IHZhciBjaGVja2VkID0gKCBzZWxlY3RlZENhdGVnb3JpZXNJZHMgJiYgKGpRdWVyeS5pbkFycmF5KHBjYXRlZ29yeS5pZCwgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzKSAhPSAtMSkgKTsgaXRlbUhUTUwgKz0gJzxpbnB1dCcgKyAoY2hlY2tlZCA\/ICcgY2hlY2tlZD0iY2hlY2tlZCInIDogJycpICsgJyB0eXBlPSJjaGVja2JveCIgdmFsdWU9IicgKyBwY2F0ZWdvcnkuaWQgKyAnIiAvPic7IH0gdmFyIG5hbWUgPSBwY2F0ZWdvcnkubmFtZTsgaWYgKHNlYXJjaFRleHQpIHsgc2VhcmNoVGV4dCA9IChzZWFyY2hUZXh0ICsgJycpLiByZXBsYWNlKC8oW1xcXC5cK1wqXD9cW1xeXF1cJFwoXClce1x9XD1cIVw8XD5cfFw6XSkvZywgIlxcJDEiKTsgbmFtZSA9IG5hbWUucmVwbGFjZShuZXcgUmVnRXhwKCIoIiArIHNlYXJjaFRleHQgKyAiKSIsICdnaScpLCAiPGI+JDE8L2I+Iik7IH0gaXRlbUhUTUwgKz0gJzxzcGFuIGNsYXNzPSJ0ZXh0Ij4nICsgbmFtZSArICc8L3NwYW4+JzsgaXRlbUhUTUwgKz0gJzwvYT4nOyBpdGVtSFRNTCArPSAnPC9saT4nOyBpdGVtc0hUTUwgKz0gaXRlbUhUTUw7IH0gc3ViVWwuaHRtbChpdGVtc0hUTUwpOyB9IH0gZWxzZSB7IHN1YlVsLmh0bWwoICI8bGkgY2xhc3M9XCJuby1yZXN1bHRzXCI+IiArICI8YT7QndC40YfQtdCz0L4g0L3QtSDQvdCw0LnQtNC10L3QvjwvYT4iICsgIjwvbGk+IiApOyB9IH0pOyB9IGUucHJldmVudERlZmF1bHQoKTsgfSk7ICQoJ0JPRFknKS5vbignY2xpY2snLCAnLnNlbGVjdC10cmVlIFt0eXBlPSJjaGVja2JveCJdJywgZnVuY3Rpb24gKGUpIHsgdmFyIGN1cnJlbnRDYXRlZ29yeUlkID0gJCh0aGlzKS52YWwoKTsgdmFyIGN1cnJlbnRDYXRlZ29yeVRpdGxlID0gJCh0aGlzKS5uZXh0KCcudGV4dCcpLnRleHQoKTsgdmFyIGEgPSAkKHRoaXMpLnBhcmVudHMoJ2E6Zmlyc3QnKTsgdmFyIHdyYXBwZXIgPSAkKHRoaXMpLnBhcmVudHMoJy5idG4tZ3JvdXAtc2VhcmNoOmZpcnN0Jyk7IHZhciBwcm9kdWN0V3JhcHBlciA9ICQodGhpcykucGFyZW50cygnLnByb2R1Y3QtaXRlbTpmaXJzdCcpOyBpZiAocHJvZHVjdFdyYXBwZXIubGVuZ3RoKSB7IHZhciBwcm9kdWN0SW5kZXggPSBwcm9kdWN0V3JhcHBlci5hdHRyKCdkYXRhLXByb2R1Y3QnKTsgfSBlbHNlIHsgdmFyIHByb2R1Y3RJbmRleCA9IDA7IH0gaWYgKCQodGhpcykuaXMoJzpjaGVja2VkJykpIHsgJCh3cmFwcGVyKS5hcHBlbmQoJzxpbnB1dCBkYXRhLWNoaWxkPSInICsgYS5hdHRyKCdkYXRhLWNoaWxkJykgKyAnIiBkYXRhLXRpdGxlPSInICsgY3VycmVudENhdGVnb3J5VGl0bGUgKyAnIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSInICsgY3VycmVudENhdGVnb3J5SWQgKyAnIiBuYW1lPSJwcm9kdWN0c1snICsgcHJvZHVjdEluZGV4ICsgJ11bcHJvZHVjdGNhdGVnb3JpZXNdWycgKyBjdXJyZW50Q2F0ZWdvcnlJZCArICddIj4nKTsgJCgnLmRyb3Bkb3duLW1lbnUtcmVtb3ZhYmxlJywgd3JhcHBlcikuYXBwZW5kKCc8c3BhbiBjbGFzcz0icmVtb3ZhYmxlLWl0ZW0iIGRhdGEtaWQ9IicgKyBjdXJyZW50Q2F0ZWdvcnlJZCArICciPicgKyBjdXJyZW50Q2F0ZWdvcnlUaXRsZSArICcgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcmVtb3ZlIiAnICsgJ3RpdGxlPSLQo9C00LDQu9C40YLRjCI+PC9zcGFuPjwvc3Bhbj4nKTsgfSBlbHNlIHsgJCgnW25hbWU9InByb2R1Y3RzWycgKyBwcm9kdWN0SW5kZXggKyAnXVtwcm9kdWN0Y2F0ZWdvcmllc11bJyArIGN1cnJlbnRDYXRlZ29yeUlkICsgJ10iXScpLnJlbW92ZSgpOyAkKCcuZHJvcGRvd24tbWVudS1yZW1vdmFibGUgLnJlbW92YWJsZS1pdGVtW2RhdGEtaWQ9IicgKyBjdXJyZW50Q2F0ZWdvcnlJZCArICciXScpLnJlbW92ZSgpOyB9IHZhciBjYXRlZ29yaWVzSWRzID0gZGNvcmVjbmcuY2F0ZWdvcmllc0Ryb3Bkb3duLmdldENhdGVnb3JpZXNJZHNTdHIod3JhcHBlciwgcHJvZHVjdEluZGV4KTsgdmFyIGNhdGVnb3JpZXNUZXh0ID0gZGNvcmVjbmcuY2F0ZWdvcmllc0Ryb3Bkb3duLmdldENhdGVnb3JpZXNUZXh0KHdyYXBwZXIsIHByb2R1Y3RJbmRleCk7IHZhciBidG5UZXh0T2JqID0gJCgnLmJ0biAudGV4dCcsIHdyYXBwZXIpOyB2YXIgaW5wdXQgPSAkKCcudHlwZWFoZWFkLWFwaScsIHdyYXBwZXIpOyBpZiAoY2F0ZWdvcmllc1RleHQgPT0gJycpIHsgYnRuVGV4dE9iai50ZXh0KGJ0blRleHRPYmouYXR0cignZGF0YS10ZXh0JykpOyB9IGVsc2UgeyBpZiAoIWJ0blRleHRPYmouYXR0cignZGF0YS10ZXh0JykpIHsgYnRuVGV4dE9iai5hdHRyKCdkYXRhLXRleHQnLCBidG5UZXh0T2JqLnRleHQoKSk7IH0gYnRuVGV4dE9iai5odG1sKGNhdGVnb3JpZXNUZXh0KTsgfSBidG5UZXh0T2JqLmF0dHIoJ2RhdGEtaWRzJywgY2F0ZWdvcmllc0lkcyk7IGlucHV0LmF0dHIoJ2RhdGEtaWRzJywgY2F0ZWdvcmllc0lkcyk7IHZhciBvcGVuVHJlZSA9IGZhbHNlOyB2YXIgbGkgPSAkKHRoaXMpLnBhcmVudHMoJ2xpOmZpcnN0Jyk7IGlmIChsaS5oYXNDbGFzcygncGFyZW50JykgJiYgIWxpLmhhc0NsYXNzKCdvcGVuJykpIHsgb3BlblRyZWUgPSB0cnVlOyB9IGlmIChvcGVuVHJlZSkgeyAkKCdzcGFuJywgYSkuY2xpY2soKTsgfSBlLnN0b3BQcm9wYWdhdGlvbigpOyB9KTsgJCgnQk9EWScpLm9uKCdjbGljaycsICcuYnRuLXNlYXJjaC1jYXRlZ29yaWVzIC5yZW1vdmFibGUtaXRlbScsIGZ1bmN0aW9uIChlKSB7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IH0pOyAkKCdCT0RZJykub24oJ2NsaWNrJywgJy5idG4tc2VhcmNoLWNhdGVnb3JpZXMgLnJlbW92YWJsZS1pdGVtIC5nbHlwaGljb24nLCBmdW5jdGlvbiAoZSkgeyB2YXIgcmVtb3ZhYmxlID0gJCh0aGlzKS5wYXJlbnRzKCcucmVtb3ZhYmxlLWl0ZW0nKTsgdmFyIHdyYXBwZXIgPSAkKHRoaXMpLnBhcmVudHMoJy5idG4tZ3JvdXAtc2VhcmNoJyk7IHZhciBwcm9kdWN0V3JhcHBlciA9ICQodGhpcykucGFyZW50cygnLnByb2R1Y3QtaXRlbTpmaXJzdCcpOyBpZiAocHJvZHVjdFdyYXBwZXIubGVuZ3RoKSB7IHZhciBwcm9kdWN0SW5kZXggPSBwcm9kdWN0V3JhcHBlci5hdHRyKCdkYXRhLXByb2R1Y3QnKTsgfSBlbHNlIHsgdmFyIHByb2R1Y3RJbmRleCA9IDA7IH0gdmFyIGNhdGVnb3J5SWQgPSByZW1vdmFibGUuYXR0cignZGF0YS1pZCcpOyB2YXIgY2hlY2tib3ggPSAkKCcuZHJvcGRvd24tbWVudS5pbm5lciBbdHlwZT0iY2hlY2tib3giXVt2YWx1ZT0iJyArIGNhdGVnb3J5SWQgKyAnIl0nLCB3cmFwcGVyKTsgaWYgKGNoZWNrYm94Lmxlbmd0aCkgeyBjaGVja2JveC5wcm9wKCdjaGVja2VkJywgZmFsc2UpOyB9IGVsc2UgeyB9IHZhciBjYXRlZ29yaWVzSW5wdXRzID0gJCgnW25hbWVePSJwcm9kdWN0c1snICsgcHJvZHVjdEluZGV4ICsgJ11bcHJvZHVjdGNhdGVnb3JpZXNdWycgKyBjYXRlZ29yeUlkICsgJ10iXScpOyBjYXRlZ29yaWVzSW5wdXRzLnJlbW92ZSgpOyByZW1vdmFibGUucmVtb3ZlKCk7IHZhciBjYXRlZ29yaWVzSWRzID0gZGNvcmVjbmcuY2F0ZWdvcmllc0Ryb3Bkb3duLmdldENhdGVnb3JpZXNJZHNTdHIod3JhcHBlciwgcHJvZHVjdEluZGV4KTsgdmFyIGNhdGVnb3JpZXNUZXh0ID0gZGNvcmVjbmcuY2F0ZWdvcmllc0Ryb3Bkb3duLmdldENhdGVnb3JpZXNUZXh0KHdyYXBwZXIsIHByb2R1Y3RJbmRleCk7IHZhciBidG5UZXh0T2JqID0gJCgnLmJ0biAudGV4dCcsIHdyYXBwZXIpOyBpZiAoY2F0ZWdvcmllc1RleHQgPT0gJycpIHsgYnRuVGV4dE9iai50ZXh0KGJ0blRleHRPYmouYXR0cignZGF0YS10ZXh0JykpOyB9IGVsc2UgeyBpZiAoIWJ0blRleHRPYmouYXR0cignZGF0YS10ZXh0JykpIHsgYnRuVGV4dE9iai5hdHRyKCdkYXRhLXRleHQnLCBidG5UZXh0T2JqLnRleHQoKSk7IH0gYnRuVGV4dE9iai5odG1sKGNhdGVnb3JpZXNUZXh0KTsgfSBidG5UZXh0T2JqLmF0dHIoJ2RhdGEtaWRzJywgY2F0ZWdvcmllc0lkcyk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IH0pOyAkKCdCT0RZJykub24oJ2NsaWNrJywgJy5idG4tZ3JvdXAtc2VhcmNoIC5idG4tZmlsdGVyLWRpc2NvdW50cy1hcHBseScsIGZ1bmN0aW9uIChlKSB7IGlmICgkKHRoaXMpLmF0dHIoJ2RhdGEtY2F0c2x1ZycpKSB7IHZhciBwYXRobmFtZSA9IGxvY2F0aW9uLnBhdGhuYW1lOyBwYXRobmFtZSA9IHBhdGhuYW1lLnJlcGxhY2UoJy8nICsgJCh0aGlzKS5hdHRyKCdkYXRhLWNhdHNsdWcnKSArICcvJywgJy8nKTsgfSBlbHNlIHsgdmFyIHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7IH0gdmFyIGN1cnJlbnRVcmwgPSBsb2NhdGlvbi5wcm90b2NvbCArICcvJyArICcvJyArIGxvY2F0aW9uLmhvc3QgKyBwYXRobmFtZTsgdmFyIHBhcmFtcyA9ICcnOyBpZiAoZGNvcmVjbmcub3JpZ2luYWxTdGF0ZS5pbmRleE9mKCc\/JykgIT0gLTEpIHsgdmFyIHJlcXVlc3QgPSB7fTsgdmFyIHBhaXJzID0gZGNvcmVjbmcub3JpZ2luYWxTdGF0ZS5zdWJzdHJpbmcoZGNvcmVjbmcub3JpZ2luYWxTdGF0ZS5pbmRleE9mKCc\/JykgKyAxKS5zcGxpdCgnJicpOyBmb3IgKHZhciBpID0gMDsgaSA8IHBhaXJzLmxlbmd0aDsgaSsrKSB7IGlmICghcGFpcnNbaV0pIGNvbnRpbnVlOyB2YXIgcGFpciA9IHBhaXJzW2ldLnNwbGl0KCc9Jyk7IHJlcXVlc3RbZGVjb2RlVVJJQ29tcG9uZW50KHBhaXJbMF0pXSA9IGRlY29kZVVSSUNvbXBvbmVudChwYWlyWzFdKTsgfSBkZWxldGUgcmVxdWVzdFsnY2lkcyddOyBkZWxldGUgcmVxdWVzdFsnc2hvdyddOyBmb3IgKHZhciBrZXkgaW4gcmVxdWVzdCkgeyBwYXJhbXMgKz0gKHBhcmFtcyA9PSAnJykgPyAnJyA6ICcmJzsgcGFyYW1zICs9IGVuY29kZVVSSUNvbXBvbmVudChrZXkpOyBpZiAocmVxdWVzdFtrZXldICE9ICd1bmRlZmluZWQnKSB7IHBhcmFtcyArPSAnPScgKyBlbmNvZGVVUklDb21wb25lbnQocmVxdWVzdFtrZXldKTsgfSB9IH0gdmFyIGNhdGVnb3JpZXNJbnB1dHMgPSAkKCdbbmFtZV49InByb2R1Y3RzWzBdW3Byb2R1Y3RjYXRlZ29yaWVzXSJdJyk7IHZhciBjYXRlZ29yaWVzSWRzID0gJyc7IGlmIChjYXRlZ29yaWVzSW5wdXRzLmxlbmd0aCkgeyB2YXIgY2F0ZWdvcnlJZHNBcnJheSA9IFtdOyBjYXRlZ29yaWVzSW5wdXRzLmVhY2goZnVuY3Rpb24gKCkgeyBpZiAoJC5pbkFycmF5KCQodGhpcykudmFsKCksIGNhdGVnb3J5SWRzQXJyYXkpID09PSAtMSkgY2F0ZWdvcnlJZHNBcnJheS5wdXNoKCQodGhpcykudmFsKCkpOyB9KTsgJChjYXRlZ29yeUlkc0FycmF5KS5lYWNoKGZ1bmN0aW9uIChpLCBlbCkgeyBjYXRlZ29yaWVzSWRzICs9IChjYXRlZ29yaWVzSWRzID09ICcnKSA\/ICcnIDogJywnOyBjYXRlZ29yaWVzSWRzICs9IGVsOyB9KTsgfSBpZiAoY2F0ZWdvcmllc0lkcyAhPSAnJykgeyBwYXJhbXMgKz0gKHBhcmFtcyA9PSAnJykgPyAnJyA6ICcmJzsgcGFyYW1zICs9ICdjaWRzPScgKyBjYXRlZ29yaWVzSWRzOyB9IHZhciB1cmwgPSBjdXJyZW50VXJsOyBpZiAocGFyYW1zICE9ICcnKSB7IHVybCArPSAnPycgKyBwYXJhbXM7IH0gd2luZG93LmxvY2F0aW9uID0gdXJsOyBlLnByZXZlbnREZWZhdWx0KCk7IH0pOyAkKCdCT0RZJykub24oJ2NsaWNrJywgJy5idG4tZ3JvdXAtc2VhcmNoIC5idG4tZmlsdGVyLWRpc2NvdW50cy1jbGVhcicsIGZ1bmN0aW9uIChlKSB7IHZhciBjYXRlZ29yaWVzSW5wdXRzID0gJCgnW25hbWVePSJwcm9kdWN0c1swXVtwcm9kdWN0Y2F0ZWdvcmllc10iXScpOyBjYXRlZ29yaWVzSW5wdXRzLnJlbW92ZSgpOyB2YXIgY3VycmVudFVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpOyBjdXJyZW50VXJsLnNlYXJjaFBhcmFtcy5kZWxldGUoJ2NpZHMnKTsgY3VycmVudFVybC5zZWFyY2hQYXJhbXMuZGVsZXRlKCdzaG93Jyk7IGlmICgkKHRoaXMpLmF0dHIoJ2RhdGEtY2F0c2x1ZycpKSB7IHZhciBwYXRobmFtZSA9IGN1cnJlbnRVcmwucGF0aG5hbWU7IHBhdGhuYW1lID0gcGF0aG5hbWUucmVwbGFjZSgnLycgKyAkKHRoaXMpLmF0dHIoJ2RhdGEtY2F0c2x1ZycpICsgJy8nLCAnLycpOyBjdXJyZW50VXJsLnBhdGhuYW1lID0gcGF0aG5hbWU7IH0gZWxzZSB7IH0gY3VycmVudFVybC5oYXNoID0gJyc7IHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gY3VycmVudFVybC50b1N0cmluZygpOyBlLnByZXZlbnREZWZhdWx0KCk7IH0pOyB9KShqUXVlcnkpOyA=");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("KGZ1bmN0aW9uICgkKXt2YXIgeGhyOyQoJ0JPRFknKS5vbigna2V5dXAgY3V0IHBhc3RlIGlucHV0JywgJy5zZWFyY2ggaW5wdXRbdHlwZT0ic2VhcmNoIl0nLCBmdW5jdGlvbiAoJGUpe3ZhciBzcGVjaWFsS2V5Q29kZU1hcCA9IHs5OiAidGFiIiwyNzogImVzYyIsMzc6ICJsZWZ0IiwzOTogInJpZ2h0IiwzODogInVwIiw0MDogImRvd24iLDE2OiAic2hpZnQiLDE3OiAiY3RybCIsMTg6ICJhbHQifTtpZiAoc3BlY2lhbEtleUNvZGVNYXBbJGUud2hpY2ggfHwgJGUua2V5Q29kZV0pe3JldHVybjt9dmFyIGlucHV0ID0gJCh0aGlzKSxzZWFyY2hDb250YWluZXIgPSAkKHRoaXMpLnBhcmVudHMoJy5zZWFyY2g6Zmlyc3QnKSxyZXN1bHRzQ29udGFpbmVyID0gJCgnLmRyb3Bkb3duLW1lbnUnLHNlYXJjaENvbnRhaW5lciksc2VhcmNoVmFsID0gaW5wdXQudmFsKCkscHJldlNlYXJjaFZhbCA9ICQoJy5kaXNjb3VudHMnKS5hdHRyKCdkYXRhLXMnKTtpZiAoc2VhcmNoVmFsICE9PSAnJyl7dmFyIGVudGVyQ29kZU1hcCA9IHsxMzogImVudGVyIix9O2lmIChlbnRlckNvZGVNYXBbJGUud2hpY2ggfHwgJGUua2V5Q29kZV0pe2lmICh4aHIpeGhyLmFib3J0KCk7dmFyIHVybFRvUmVkaXJlY3QgPSBkY29yZWNuZy5hcHUod2luZG93LmxvY2F0aW9uLmhyZWYsICdzaG93JywgJycpO3VybFRvUmVkaXJlY3QgPSBkY29yZWNuZy5hcHUodXJsVG9SZWRpcmVjdCwgJ2NpZHMnLCAnJyk7dXJsVG9SZWRpcmVjdCA9IGRjb3JlY25nLmFwdSh1cmxUb1JlZGlyZWN0LCAnYnJhbmRfaWQnLCAnJyk7d2luZG93LmxvY2F0aW9uID0gZGNvcmVjbmcuYXB1KHVybFRvUmVkaXJlY3QsICdzJywgJCh0aGlzKS52YWwoKSk7fX1pZiAoIXJlc3VsdHNDb250YWluZXIubGVuZ3RoKXskKHNlYXJjaENvbnRhaW5lcikuYXBwZW5kKCc8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IG11bHRpLXNlYXJjaC1jb250YWluZXIiPjwvZGl2PicpO3Jlc3VsdHNDb250YWluZXIgPSAkKCcuZHJvcGRvd24tbWVudScsc2VhcmNoQ29udGFpbmVyKTt9aWYgKHhocil4aHIuYWJvcnQoKTtpZiAoc2VhcmNoVmFsID09PSAnJyAmJiBwcmV2U2VhcmNoVmFsID09PSAnJyl7c2VhcmNoQ29udGFpbmVyLnJlbW92ZUNsYXNzKCdvcGVuJyk7cmV0dXJuO31pZiAoc2VhcmNoVmFsID09PSAnJyAmJiBwcmV2U2VhcmNoVmFsICE9PSAnJyl7c2VhcmNoQ29udGFpbmVyLnJlbW92ZUNsYXNzKCdvcGVuJyk7JCgnLmRpc2NvdW50cycpLmF0dHIoJ2RhdGEtcycsJycpO3ZhciBwYXJhbXMgPSBbXTtwYXJhbXNbJ3MnXSA9ICcnO2NoYW5nZUhpc3RvcnlTdGF0ZShwYXJhbXMpO3JlbG9hZFByb2R1Y3RzKCk7cmV0dXJuO312YXIgbWlubGVuZ3RoID0gaW5wdXQuYXR0cignZGF0YS1taW5sZW5naHQnKTtpZiAobWlubGVuZ3RoKXtpZiAoc2VhcmNoVmFsLmxlbmd0aCA+IDAgJiYgc2VhcmNoVmFsLmxlbmd0aCA8IG1pbmxlbmd0aCl7cmV0dXJuIHRydWU7fX12YXIgdCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCl7aW5wdXQuYWRkQ2xhc3MoJ2xvYWRpbmcnKTt9LCAxMDApO3ZhciB1cmwgPSBkY29yZWNuZy53ZWJzaXRldXJsLnJlcGxhY2UoJ2FjY291bnQuJywgJycpKyBpbnB1dC5hdHRyKCdkYXRhLWFqYXgtdXJsJyk7dXJsICs9ICc\/bmFtZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHNlYXJjaFZhbCk7dmFyIGRpc2NvdW50cyA9ICQoJy5kaXNjb3VudHMnKTtpZiAoZGlzY291bnRzLmF0dHIoJ2RhdGEtY2l0eV9pZCcpKXt1cmwgKz0gJyZjaXR5X2lkPScgKyBkaXNjb3VudHMuYXR0cignZGF0YS1jaXR5X2lkJyk7fWlmIChkaXNjb3VudHMuYXR0cignZGF0YS1jYXRlZ29yeV9pZCcpKXt1cmwgKz0gJyZjYXRlZ29yeV9pZD0nICsgZGlzY291bnRzLmF0dHIoJ2RhdGEtY2F0ZWdvcnlfaWQnKTt9aWYgKGRpc2NvdW50cy5hdHRyKCdkYXRhLXNob3BfaWQnKSl7dXJsICs9ICcmc2hvcF9pZD0nICsgZGlzY291bnRzLmF0dHIoJ2RhdGEtc2hvcF9pZCcpO31pZiAoZGlzY291bnRzLmF0dHIoJ2RhdGEtZGlzY291bnRfaWQnKSl7dXJsICs9ICcmZGlzY291bnRfaWQ9JyArIGRpc2NvdW50cy5hdHRyKCdkYXRhLWRpc2NvdW50X2lkJyk7fWlmIChkaXNjb3VudHMuYXR0cignZGF0YS1kYXRlJykpe3VybCArPSAnJmRhdGU9JyArIGRpc2NvdW50cy5hdHRyKCdkYXRhLWRhdGUnKTt9aWYgKGRpc2NvdW50cy5hdHRyKCdkYXRhLXRpbWUnKSl7dXJsICs9ICcmdGltZT0nICsgZGlzY291bnRzLmF0dHIoJ2RhdGEtdGltZScpO311cmwgKz0gJyZpc19hamF4PTEnO3hociA9ICQuYWpheCh7dHlwZTogIkdFVCIseGhyRmllbGRzOiB7d2l0aENyZWRlbnRpYWxzOiB0cnVlfSxiZWZvcmVTZW5kOiBmdW5jdGlvbiAocmVxdWVzdCl7fSx1cmw6IHVybH0pLmRvbmUoZnVuY3Rpb24gKHJlc3BvbnNlKXtyZXN1bHRzQ29udGFpbmVyLmh0bWwocmVzcG9uc2UpO3NlYXJjaENvbnRhaW5lci5hZGRDbGFzcygnb3BlbicpO3ZhciB3aW5kb3dIZWlnaHQgPSAkKHdpbmRvdykuaGVpZ2h0KCk7dmFyIHN1Ym1lbnVIZWlnaHQgPSBNYXRoLnJvdW5kKHdpbmRvd0hlaWdodCAvIDIpO2lmIChzdWJtZW51SGVpZ2h0IDwgMTUwKXtzdWJtZW51SGVpZ2h0ID0gMTUwO31yZXN1bHRzQ29udGFpbmVyLmNzcygnbWF4LWhlaWdodCcsIHN1Ym1lbnVIZWlnaHQpO3Jlc3VsdHNDb250YWluZXIuY3NzKCdvdmVyZmxvdy14JywgJ2F1dG8nKTtjbGVhclRpbWVvdXQodCk7aW5wdXQucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTt9KTt9KTskKCdCT0RZJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCRlKXskKCcuc2VhcmNoLm9wZW4nKS5yZW1vdmVDbGFzcygnb3BlbicpO30pOyQoJ0JPRFknKS5vbignY2xpY2snLCAnLnNlYXJjaCcsIGZ1bmN0aW9uICgkZSl7JGUuc3RvcFByb3BhZ2F0aW9uKCk7fSk7fSkoalF1ZXJ5KTs=");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("dmFyIENvbnRlbnRMb2FkVmlhQWpheCA9IGZ1bmN0aW9uKCl7dmFyIHRoaXNDbGFzcyA9IHRoaXM7dGhpc0NsYXNzLnhocnMgPSBbXTt0aGlzQ2xhc3MubG9hZEFsbCA9IGZ1bmN0aW9uKGVsZW1lbnRzKXtlbGVtZW50cy5lYWNoKGZ1bmN0aW9uKGksZWwpe3RoaXNDbGFzcy5sb2FkSXRlbShpLCBlbCk7fSk7fTt0aGlzQ2xhc3MubG9hZEl0ZW0gPSBmdW5jdGlvbihpLCBlbCl7dmFyIHBhdGggPSAkKGVsKS5hdHRyKCdkYXRhLWx2YScpO3ZhciBwYXJhbXMgPSAkKGVsKS5hdHRyKCdkYXRhLWx2YXAnKTt2YXIgb2JqID0gZGNvcmVjbmcuZGVwYXJhbShwYXJhbXMpOyAkKGVsKS5hZGRDbGFzcygnbG9hZGVyLW1pbmktY2VudGVyJyk7dmFyIHhociA9IEFwaS5nZXQocGF0aCwgb2JqLCBmdW5jdGlvbihyZXNwb25zZSl7aWYgKHJlc3BvbnNlLnN1Y2Nlc3MpeyQoZWwpLmh0bWwocmVzcG9uc2UucmVzdWx0KTt9IGVsc2UgeyQoZWwpLmh0bWwocmVzcG9uc2UuZXJyb3JfZGVzY3JpcHRpb24pO30kKGVsKS5yZW1vdmVDbGFzcygnbG9hZGVyLW1pbmktY2VudGVyJyk7dGhpc0NsYXNzLnhocnNbaV0gPSBmYWxzZTskKGVsKS5hcHBlbmQoJyA8YSB0aXRsZT0i0J7QsdC90L7QstC40YLRjCIgY2xhc3M9Imx2YS1ycHYiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1yZWZyZXNoIj48L3NwYW4+PC9hPicpOyB9KTt0aGlzQ2xhc3MueGhyc1tpXSA9IHhocjt9O307dmFyIGx2YSA9IG5ldyBDb250ZW50TG9hZFZpYUFqYXgoKTtsdmEubG9hZEFsbCgkKCdbZGF0YS1sdmFdJykpOyQoJ0JPRFknKS5vbignY2xpY2snLCcubHZhLXJwdicsZnVuY3Rpb24oKXt2YXIgZWwgPSAkKHRoaXMpLnBhcmVudHMoJ1tkYXRhLWx2YV0nKTt2YXIgb2JqID0gZGNvcmVjbmcuZGVwYXJhbSgkKGVsKS5hdHRyKCdkYXRhLWx2YXAnKSk7IG9iai51YyA9IDE7ICQoZWwpLmF0dHIoJ2RhdGEtbHZhcCcsalF1ZXJ5LnBhcmFtKG9iaikpOyBsdmEubG9hZEl0ZW0oMCwgZWwpOyB9KTskKHdpbmRvdykub24oImJlZm9yZXVubG9hZCIsIGZ1bmN0aW9uKCl7Zm9yKCB2YXIgaSA9IDA7IGkgPCBsdmEueGhycy5sZW5ndGg7IGkrKyl7aWYgKGx2YS54aHJzW2ldKXtsdmEueGhyc1tpXS5hYm9ydCgpO319fSk7");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); /* уже не нужно, в фильтре заменил на ссылку. Нужно для админки, перенес в function initDatepicker() { $('.datepicker').datepicker({ format: dcorecng.datepickerFormat, language: 'ru', autoclose: true, todayHighlight: true }); $('.input-daterange input').each(function() { $('.input-daterange').datepicker({ format: dcorecng.datepickerFormat, language: 'ru', todayHighlight: true }); }); dcorecng.dpLoaded = true; // обозначает что datepicker загрузился, нужно в графике в админке } initDatepicker(); */ /* $('BODY').on('click', '#btn-discounts-date', function () { if ($('#form-control-discounts-date').val() != '') { //window.location = dcorecng.websiteurl + dcorecng.cityurl + $('#form-control-discounts-date').val() + '/'; var url = dcorecng.originalState; if (typeof dcorecng.discountsdate == 'undefined') { url = url.replace(dcorecng.cityurl, dcorecng.cityurl + $('#form-control-discounts-date').val() + '/'); } else { url = url.replace(dcorecng.discountsdate + '/', $('#form-control-discounts-date').val() + '/'); } // Удалить параметр time со ссылки url = dcorecng.rpu(url,'time'); window.location = url; } });*/ }); // Timepicker $.getScript("https://skidkaonline.ru/js/bootstrap-timepicker.js?t=t1570013906", function () { $('.timepicker').timepicker({ minuteStep: 5, showMeridian: false, showInputs: false, disableFocus: true }); }); }); dcorecng.loadAdsense(); // Загрузка табов аяксом с задержкой // Загружать только для экранов больше чем 960px if ($(window).width() > 950) { setTimeout(function () { $.ajax({ url: '/ajax/ajaxgetfixedtabshtml/', type: 'POST', data: {is_ajax: 1}, success: function (response) { $('BODY').append(response); // устанавливаем страницу теекущую в контактной форме $('[name="currentpage"]').val(window.location.href); // выбор времени $('.timepicker').timepicker({ minuteStep: 5, showMeridian: false, showInputs: false, disableFocus: true }); if (!$.cookie("subscribe_showed")) { if ($('.fixed-tabs').is(':visible') && $(".subscribe-form").length) { setTimeout(function () { //$(".fixed-tabs").css("left", "12px"); $(".fixed-tabs").css('transform', 'translateX(100px)'); if (!$(".subscribe-form").is(":visible")) { $(".fixed-tabs .subscribe .show-tab-link").click() } $.cookie("subscribe_showed", "1", { expires: 999, path: "/" }) }, 15e3) } } } }); }, 1000); } } /** * Функция, которая отслеживает клики по исходящим ссылк в Analytics. * Эта функция применяет в качестве аргумента строку с действительным URL, после чего использует ее * как ярлык события. Если указать beacon в качестве метода передачи, данные обращений * будут отправляться с использованием метода navigator.sendBeacon в поддерживающих его браузерах. */ var trackOutboundLink = function(url) { }, trackEvent = function(eventCategory, eventAction, value) { }, trackPageview = function(url,params){ params = typeof params !== 'undefined' ? params : {}; }; (function() { var script = document.createElement("script"); script.src = "https://skidkaonline.ru/js/jquery-3.5.1.js"; script.onload = script.onreadystatechange = startScripts; script.async = true; document.body.appendChild( script ); })();