' + 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("Q2F0YWxvZyA9IGZ1bmN0aW9uKGN0bGcpe3ZhciB0YyA9IHRoaXM7dGMuY3RsZyA9IGN0bGc7IHRjLmdldEh0bWwgPSBmdW5jdGlvbigpe3ZhciBoID0gJycsc291cmNlID0gJyc7aCArPSAnPGRpdiBjbGFzcz0iaXRlbSIgZGF0YS1pZD0iJyArIHRjLmN0bGcuaWQgKyAnIj4nO2ggKz0gJzxkaXYgY2xhc3M9ImluZm8gY2xlYXJmaXgiPic7aCArPSAnPGRpdiBjbGFzcz0ic2hvcHMiPic7Zm9yICh2YXIgaSA9IDA7IGkgPCB0Yy5jdGxnLnNob3BzX2lkcy5sZW5ndGg7IGkrKyl7dmFyIHMgPSBkY29yZWNuZy5zW3RjLmN0bGcuc2hvcHNfaWRzW2ldXTtpZiAocyl7IGggKz0gJzxhIGNsYXNzPSJzaG9wLWxpbmsgcHVsbC1sZWZ0IiBocmVmPSInICsgZGNvcmVjbmcud2Vic2l0ZXVybCArIHMudXJsICsgJyIgZGF0YS10b2dnbGU9InRvb2x0aXAiIHRpdGxlPSInICsgcy5uYW1lICsgJyI+JztoICs9ICc8aW1nIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3JjPSInICsgcy5pbWFnZTUwICsgJyIgYWx0PSIiLz4nO2ggKz0gJzwvYT4nO2lmIChzLndlYnNpdGUgIT0gJycpe3NvdXJjZSArPSAoc291cmNlID09ICcnKT8nJzonLCAnO3NvdXJjZSArPSBzLndlYnNpdGU7fX19aCArPSAnPC9kaXY+JzsgaCArPSAnPGEgY2xhc3M9ImRpc2NvdW50LWxpbmsiIGhyZWY9IicgKyBkY29yZWNuZy53ZWJzaXRldXJsICsgdGMuY3RsZy5kaXNjb3VudF91cmwgKyAnIj48c3Ryb25nPicgKyB0Yy5jdGxnLmRpc2NvdW50X25hbWUgKyAnPC9zdHJvbmc+PGJyLz4oJyArIHRjLmN0bGcuZGF0ZSArICcpPC9hPic7aCArPSAnPC9kaXY+JzsgaCArPSAnPGEgaHJlZj0iJyArIHRjLmN0bGcudXJsICsgJyIgY2xhc3M9ImltYWdlLWxpbmsiIHRhcmdldD0iX2JsYW5rIj4nO2ggKz0gJzxzcGFuIGNsYXNzPSJvdmVyIj4nO2ggKz0gJzxzcGFuIGNsYXNzPSJvcGVuLWNhdGFsb2ctdGV4dCI+0J7RgtC60YDRi9GC0Ywg0LrQsNGC0LDQu9C+0LM8L3NwYW4+JztoICs9ICc8L3NwYW4+JztoICs9ICc8c3BhbiBjbGFzcz0iY2F0YWxvZy1zaXplLXRleHQiPicgKyB0Yy5jdGxnLnRvdGFsUGFnZXMgKyAnICcgKyB0Yy5jdGxnLnRvdGFsUGFnZXNUZXh0ICsgJzwvc3Bhbj4nO2ggKz0gJzxpbWcgc3JjPSInICsgdGMuY3RsZy5pbWFnZTMzNi5zcmMgKyAnIiBkYXRhLWZ3PSInICsgdGMuY3RsZy5pbWFnZWZ1bGwudyArICciIGRhdGEtZmg9IicgKyB0Yy5jdGxnLmltYWdlZnVsbC5oICsgJyIgYWx0PSIiIC8+JztoICs9ICc8L2E+Jzt2YXIgY29sb3JDbGFzcyA9ICcnO3N3aXRjaCh0Yy5jdGxnLmNvbG9yKXtjYXNlIDA6Y29sb3JDbGFzcyA9ICdub3Qtc3RhcnRlZCc7YnJlYWs7Y2FzZSAxOmNvbG9yQ2xhc3MgPSAnZXhwaXJlZCc7YnJlYWs7fWggKz0gJzxkaXYgY2xhc3M9ImRpc2NvdW50LWRheXMgaGlkZGVuLXByaW50JyArICgoY29sb3JDbGFzcyA9PSAnJyk\/Jyc6JyAnICsgY29sb3JDbGFzcykrICciPicgKyB0Yy5jdGxnLmRheXN0aXRsZSArICc8L2Rpdj4nOyBoICs9ICc8L2Rpdj4nOyByZXR1cm4gaDt9O307");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("IENhdGFsb2dzTG9hZGVyID0gZnVuY3Rpb24oY3RsZykgeyB2YXIgdGMgPSB0aGlzOyB0Yy5jID0gY3RsZy5jOyB0Yy51ID0gY3RsZy51OyB0Yy54aHIgPSBmYWxzZTsgdGMueGhySW50ID0gZmFsc2U7IHRjLmxvYWRlZCA9IDA7IHRjLmFsbExvYWRlZCA9IGZhbHNlOyB0Yy5sYyA9ICdsb2FkZXItYm90dG9tJzsgdGMubEhUTUwgPSAnPGRpdiBjbGFzcz0iJyArIHRjLmxjICsgJyIgc3R5bGU9ImRpc3BsYXk6YmxvY2siPjxkaXYgY2xhc3M9ImxvYWRlci1pY29uIj48L2Rpdj48L2Rpdj4nOyB0Yy5scyA9ICcuJyArIHRjLmxjOyB0Yy5kaXNhYmxlQWRzID0gKHRjLmMuYXR0cignZGF0YS1kaXNhYmxlYScpICYmIHRjLmMuYXR0cignZGF0YS1kaXNhYmxlYScpID09ICcxJyk7IGlmICghdGMuZGlzYWJsZUFkcykgeyAgdmFyIGFkID0gIjwhLS0gWWFuZGV4LlJUQiBSLUEtMjE3NDE2Ny0zIC0tPjxkaXYgaWQ9XCJyZXBlYXRfYWRfY2F0YWxvZ3NfMTc5MTg4ODk5NDEzXCI+PC9kaXY+PHNjcmlwdD53aW5kb3cueWFDb250ZXh0Q2IucHVzaCgoKT0+e1lhLkNvbnRleHQuQWR2TWFuYWdlci5yZW5kZXIoe3JlbmRlclRvOiAncmVwZWF0X2FkX2NhdGFsb2dzXzE3OTE4ODg5OTQxMycsYmxvY2tJZDogJ1ItQS0yMTc0MTY3LTMnLHN0YXRJZDogJzM4Mid9KX0pPC8iICsgInNjcmlwdD4iOyB0Yy5hZHNSZXBlYXQgPSAnPGRpdiBjbGFzcz0iaXRlbSBhZHMtaXRlbSBhZHMtaXRlbS1yZXBlYXQtY2F0YWxvZ3MgaGlkZGVuLXByaW50Ij4nICsgYWQgKyAnPC9kaXY+JzsgIH0gdGMubCA9IGZ1bmN0aW9uICgpIHsgaWYgKHRjLmFsbExvYWRlZCkgeyByZXR1cm4gZmFsc2U7IH0gdGMuc2hvd0xvYWRlckJvdHRvbSgpOyB2YXIgcGFyYW1zID0ge307IGlmICghdGMuYy5hdHRyKCdkYXRhLW9mZnNldCcpKSB7IHRjLmMuYXR0cignZGF0YS1vZmZzZXQnLCAwKTsgfSBpZiAodGMuYy5hdHRyKCdkYXRhLWxpbWl0JykpIHsgcGFyYW1zLmxpbWl0ID0gdGMuYy5hdHRyKCdkYXRhLWxpbWl0Jyk7IH0gaWYgKHRjLmMuYXR0cignZGF0YS1vZmZzZXQnKSkgeyBwYXJhbXMub2Zmc2V0ID0gdGMuYy5hdHRyKCdkYXRhLW9mZnNldCcpOyB9IGlmICh0Yy5jLmF0dHIoJ2RhdGEtZGF0ZScpKSB7IHBhcmFtcy5kYXRlID0gdGMuYy5hdHRyKCdkYXRhLWRhdGUnKTsgfSBpZiAodGMuYy5hdHRyKCdkYXRhLXBjYXRlZ29yaWVzX2lkcycpKSB7IHBhcmFtcy5wY2F0ZWdvcmllc19pZHMgPSB0Yy5jLmF0dHIoJ2RhdGEtcGNhdGVnb3JpZXNfaWRzJyk7IH0gaWYgKHRjLmMuYXR0cignZGF0YS1vcmRlcmJ5JykpIHsgcGFyYW1zLm9yZGVyYnkgPSB0Yy5jLmF0dHIoJ2RhdGEtb3JkZXJieScpOyB9IGlmICh0Yy5jLmF0dHIoJ2RhdGEtc2hvcF9pZCcpKSB7IHBhcmFtcy5zaG9wX2lkID0gdGMuYy5hdHRyKCdkYXRhLXNob3BfaWQnKTsgfSBpZiAodGMuYy5hdHRyKCdkYXRhLWNpdHlfaWQnKSkgeyBwYXJhbXMuY2l0eV9pZCA9IHRjLmMuYXR0cignZGF0YS1jaXR5X2lkJyk7IH0gaWYgKHRjLmMuYXR0cignZGF0YS1saXN0X2lkJykpIHsgcGFyYW1zLmxpc3RfaWQgPSB0Yy5jLmF0dHIoJ2RhdGEtbGlzdF9pZCcpOyB9IGlmICh0Yy5jLmF0dHIoJ2RhdGEtY2F0ZWdvcnlfaWQnKSkgeyBwYXJhbXMuY2F0ZWdvcnlfaWQgPSB0Yy5jLmF0dHIoJ2RhdGEtY2F0ZWdvcnlfaWQnKTsgfSBpZiAodGMuYy5hdHRyKCdkYXRhLWRpc2NvdW50X2lkJykpIHsgcGFyYW1zLmRpc2NvdW50X2lkID0gdGMuYy5hdHRyKCdkYXRhLWRpc2NvdW50X2lkJyk7IH0gaWYgKHRjLmMuYXR0cignZGF0YS1zaG93b25ob21lJykpIHsgcGFyYW1zLnNob3dvbmhvbWUgPSB0Yy5jLmF0dHIoJ2RhdGEtc2hvd29uaG9tZScpOyB9IGlmICh0Yy5jLmF0dHIoJ2RhdGEtaGF2ZWFsY29ob2wnKSkgeyBwYXJhbXMuaGF2ZWFsY29ob2wgPSB0Yy5jLmF0dHIoJ2RhdGEtaGF2ZWFsY29ob2wnKTsgfSBpZiAodGMuYy5hdHRyKCdkYXRhLXRpbWUnKSkgeyBwYXJhbXMudGltZSA9IHRjLmMuYXR0cignZGF0YS10aW1lJyk7IH0gJCgnLmxvYWRlci1ib3R0b20tZXJyb3InLHRjLmMpLnJlbW92ZSgpOyB0Yy54aHIgPSBBcGkuZ2V0KHRjLnUsIHBhcmFtcywgZnVuY3Rpb24ocmVzcG9uc2UpeyBpZiAodGMueGhySW50KSB7IGNsZWFySW50ZXJ2YWwodGMueGhySW50KTsgfSB2YXIgcGggPSAnJzsgaWYgKHR5cGVvZiByZXNwb25zZS5lcnJvciAhPSAndW5kZWZpbmVkJykgeyB9IGVsc2UgeyBpZiAocGFyc2VJbnQocmVzcG9uc2UudG90YWxDb3VudCkgPT0gMCkgeyB0Yy5hbGxMb2FkZWQgPSB0cnVlOyB0Yy5jLmFwcGVuZCgnPGRpdiBjbGFzcz0ibWFpbi1hbGVydCBsb2FkZXItYm90dG9tLWVycm9yIHRleHQtY2VudGVyIj7QmtCw0YLQsNC70L7Qs9C4INC90LUg0L3QsNC50LTQtdC90Ys8L2Rpdj4nKTsgfSBlbHNlIHsgaWYgKHRjLmxvYWRlZCA9PSAwKSB7IHRjLmMuaHRtbCgnJyk7IH0gJChyZXNwb25zZS5jYXRhbG9ncykuZWFjaChmdW5jdGlvbihpLGVsKXsgdmFyIGNhdGFsb2cgPSBuZXcgQ2F0YWxvZyhlbCk7IHBoICs9IGNhdGFsb2cuZ2V0SHRtbCgpOyB0Yy5sb2FkZWQgKz0gMTsgaWYgKCF0Yy5kaXNhYmxlQWRzKSB7IHZhciBhZHNSZXBlYXQgPSB0Yy5hZHNSZXBlYXQucmVwbGFjZShuZXcgUmVnRXhwKCdcXFtJRFxcXScsICdnJyksJ2NhdGFsb2ctYWRzLScgKyAobmV3IERhdGUoKS5nZXRVVENNaWxsaXNlY29uZHMoKSArIE1hdGgucmFuZG9tKCkpKTsgaWYgKHRjLmxvYWRlZCA9PSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoNSAtIDMpICsgMykpIHsgcGggKz0gYWRzUmVwZWF0OyB9IGVsc2UgaWYgKHRjLmxvYWRlZCA9PSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoNyAtIDUpICsgNSkpIHsgcGggKz0gYWRzUmVwZWF0OyB9IGVsc2UgaWYgKHRjLmxvYWRlZCA9PSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoMTAgLSA4KSArIDgpKSB7IHBoICs9IGFkc1JlcGVhdDsgfSBlbHNlIGlmICh0Yy5sb2FkZWQgPT0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDEzIC0gMTEpICsgMTEpKSB7IHBoICs9IGFkc1JlcGVhdDsgfSBlbHNlIGlmICh0Yy5sb2FkZWQgPT0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDE1IC0gMTMpICsgMTMpKSB7IHBoICs9IGFkc1JlcGVhdDsgfSBlbHNlIGlmICh0Yy5sb2FkZWQgPT0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDE5IC0gMTcpICsgMTcpKSB7IHBoICs9IGFkc1JlcGVhdDsgfSBlbHNlIGlmICh0Yy5sb2FkZWQgPT0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDIyIC0gMjApICsgMjApKSB7IHBoICs9IGFkc1JlcGVhdDsgfSB9IH0pOyBpZiAoIXRjLmRpc2FibGVBZHMpIHsgaWYgKHRjLmxvYWRlZCA+IDMwKSB7IHBoICs9IHRjLmFkc1JlcGVhdC5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcW0lEXFxdJywgJ2cnKSwnY2F0YWxvZy1hZHMtJyArIChuZXcgRGF0ZSgpLmdldFVUQ01pbGxpc2Vjb25kcygpICsgTWF0aC5yYW5kb20oKSkpOyB9IH0gdGMuYy5hcHBlbmQocGgpOyB0Yy5jLmF0dHIoJ2RhdGEtb2Zmc2V0Jyx0Yy5sb2FkZWQpOyB0Yy5jb3VudERpc2NvdW50c0xvYWRlZChyZXNwb25zZS50b3RhbENvdW50KTsgdGMuYWxsTG9hZGVkID0gKHRjLmxvYWRlZCA+PSByZXNwb25zZS50b3RhbENvdW50KTsgdGMubEFkc2Vuc2UoKTsgfSB9IHRjLmhpZGVMb2FkZXJCb3R0b20oKTsgdGMueGhyID0gZmFsc2U7IH0pOyB9OyB0Yy5sbnAgPSBmdW5jdGlvbigpeyBpZiAodGMueGhyKSB7IHJldHVybiBmYWxzZTsgfSB0Yy5sKCk7IH07IHRjLm9uc2Nyb2xsID0gZnVuY3Rpb24oKXsgdmFyIHBvcyA9ICh0Yy5jLm9mZnNldCgpLnRvcCArIHRjLmMuaGVpZ2h0KCkpIC0gKCQodGhpcykuc2Nyb2xsVG9wKCkgKyAkKHRoaXMpLmhlaWdodCgpKTsgaWYgKHBvcyA8IDcwMCkgeyB0Yy5sbnAoKTsgfSB0Yy5jb3VudERpc2NvdW50c0xvYWRlZCgpOyB9OyB0Yy5zaG93TG9hZGVyQm90dG9tID0gZnVuY3Rpb24gKCkgeyB0Yy5oaWRlTG9hZGVyQm90dG9tKCk7IHRjLmMuYXBwZW5kKHRjLmxIVE1MKTsgdGMubE9iaiA9ICQodGMubHMsdGMuYyk7IHRjLmxpT2JqID0gJCgnLmxvYWRlci1pY29uJyx0Yy5sT2JqKTsgdGMueGhySW50ID0gc2V0VGltZW91dChmdW5jdGlvbigpeyB0Yy5saU9iai5odG1sKCfQt9Cw0LPRgNGD0LfQutCwLi4uJyk7IHRjLnhockludCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgdGMubGlPYmouaHRtbCgn0LLRgdC1INC10YnQtSDQt9Cw0LPRgNGD0LbQsNC10YLRgdGPLi4uJyk7IHRjLnhockludCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgaWYgKHRjLnhocikgeyB0Yy5sT2JqLnJlcGxhY2VXaXRoKCc8ZGl2IGNsYXNzPSJtYWluLWFsZXJ0IGxvYWRlci1ib3R0b20tZXJyb3IgdGV4dC1jZW50ZXIiPtCe0YjQuNCx0LrQsCDRgdC+0LXQtNC40L3QtdC90LjRjyDRgSDRgdC10YDQstC10YDQvtC8Ljxici8+PGEgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBsbnAtYnRuIiBocmVmPSIjIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1yZWZyZXNoIj48L3NwYW4+INCe0LHQvdC+0LLQuNGC0Yw8L2E+PC9kaXY+Jyk7IHRjLnhoci5hYm9ydCgpOyB0Yy54aHIgPSBmYWxzZTsgfSB9LDEwMDAwKTsgfSwxMDAwMCk7IH0sMTAwMCk7IH07IHRjLmhpZGVMb2FkZXJCb3R0b20gPSBmdW5jdGlvbiAoKSB7ICQoJy5sb2FkZXItYm90dG9tJyx0Yy5jKS5yZW1vdmUoKTsgfTsgdGMubEFkc2Vuc2UgPSBmdW5jdGlvbigpeyBpZiAoIXRjLmRpc2FibGVBZHMpIHsgaWYgKCQoJy5hZHNieWdvb2dsZTpub3QoW2RhdGEtYWRzYnlnb29nbGUtc3RhdHVzXSknKS5sZW5ndGgpIHsgJCgnLmFkc2J5Z29vZ2xlOm5vdChbZGF0YS1hZHNieWdvb2dsZS1zdGF0dXNdKScpLmVhY2goZnVuY3Rpb24gKGksIGVsKSB7IGlmICgkKGVsKS53aWR0aCgpID09IDApIHsgJChlbCkucmVtb3ZlKCk7IH0gZWxzZSB7IChhZHNieWdvb2dsZSA9IHdpbmRvdy5hZHNieWdvb2dsZSB8fCBbXSkucHVzaCh7fSk7IH0gfSk7IH0gfSB9OyB0Yy5sbnBDbGljayA9IGZ1bmN0aW9uKGUpeyB0Yy5sbnAoKTsgZS5wcmV2ZW50RGVmYXVsdCgpOyB9OyB0Yy5jb3VudERpc2NvdW50c0xvYWRlZCA9IGZ1bmN0aW9uKHRvdGFsKXsgaWYgKCF0Yy5jZGxjICYmICF0b3RhbCkgeyByZXR1cm47IH0gaWYgKCF0Yy5jZGxjKSB7IHRjLmMuYXBwZW5kKCc8ZGl2IGNsYXNzPSJjZGwiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIHRpdGxlPSLQn9C+0LrQsNC30LDQvdC+INC60LDRgtCw0LvQvtCz0L7Qsi\/QktGB0LXQs9C+INC60LDRgtCw0LvQvtCz0L7QsiI+PHNwYW4gY2xhc3M9ImMiPjA8L3NwYW4+LycgKyB0b3RhbCArICc8L2Rpdj4nKTsgdGMuY2RsT2JqID0gJCgnLmNkbCcsdGMuYyk7IHRjLmNkbGMgPSAkKCcuY2RsIC5jJyx0Yy5jKTsgfSB2YXIgaXRlbXMgPSAkKCcuaXRlbTpub3QoLmFkcy1pdGVtKTpub3QoLmNkbCknLHRjLmMpOyBpZiAoIWl0ZW1zLmxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH0gdmFyIHN0ID0gJCh3aW5kb3cpLnNjcm9sbFRvcCgpOyBpZiAoKHN0ICsgJCh3aW5kb3cpLmhlaWdodCgpKSA8IHRjLmMub2Zmc2V0KCkudG9wKSB7IHRjLmNkbE9iai5jc3MoJ2Rpc3BsYXknLCdub25lJyk7IHJldHVybiBmYWxzZTsgfSB0Yy5jZGxPYmouY3NzKCdkaXNwbGF5JywnJyk7IHZhciBjU2VlbiA9IDA7IGl0ZW1zLmVhY2goZnVuY3Rpb24gKGksIGVsKSB7IHZhciBlbEIgPSAkKGVsKS5vZmZzZXQoKS50b3AgKyAkKGVsKS5oZWlnaHQoKSAvIDI7IHZhciB3aW5CID0gc3QgKyAkKHdpbmRvdykuaGVpZ2h0KCk7IGlmIChlbEIgPCB3aW5CKSB7IGNTZWVuKys7IH0gfSk7IHRjLmNkbGMudGV4dChjU2Vlbik7IH07IHRjLmMuZGF0YSgncGwnLHRjKTsgdGMubCgpOyAkKHdpbmRvdykuc2Nyb2xsKHRjLm9uc2Nyb2xsKTsgJCgnQk9EWScpLm9uKCdjbGljaycsJy5sbnAtYnRuJyx0Yy5sbnBDbGljayk7IH07");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("dmFyIHVybCA9ICcvYXBpdjIvY2F0YWxvZ3MvJzskKCcuY2F0YWxvZ3MnKS5lYWNoKGZ1bmN0aW9uICgpe3ZhciBwbCA9IG5ldyBDYXRhbG9nc0xvYWRlcih7YzogJCh0aGlzKSx1OiB1cmx9KTt9KTt2YXIgY29va2llTmFtZSA9ICdvcGVuY2F0YWxvZ3MnOyQoJ0JPRFknKS5vbignY2xpY2snLCcuY2F0YWxvZ3MgLml0ZW0gLmltYWdlLWxpbmsnLGZ1bmN0aW9uKGUpe3ZhciBvcGVuUGFnZXMgPSAkLmNvb2tpZShjb29raWVOYW1lKTt2YXIgb3BlblBhZ2VzSXRlbXMgPSBvcGVuUGFnZXM\/b3BlblBhZ2VzLnNwbGl0KC8sLyk6W107b3BlblBhZ2VzSXRlbXMucHVzaCgkKHRoaXMpLmF0dHIoJ2hyZWYnKSk7JC5jb29raWUoY29va2llTmFtZSxvcGVuUGFnZXNJdGVtcy5qb2luKCcsJykse3BhdGg6ICcvJyxleHBpcmVzOjF9KTt9KTs=");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 ); })();