2016-02-25 21:37:33 +00:00
|
|
|
//modal close button
|
|
|
|
(function(){
|
|
|
|
//π.modalCloseButton = function(closingFunction){
|
|
|
|
// return π.button('pi-modal-close-button', null, null, closingFunction);
|
|
|
|
//};
|
|
|
|
})();
|
|
|
|
|
|
|
|
// globals
|
|
|
|
var body;
|
|
|
|
|
|
|
|
//helper functions
|
2016-02-10 23:21:30 +00:00
|
|
|
function booleanAttributeValue(element, attribute, defaultValue){
|
|
|
|
// returns true if an attribute is present with no value
|
|
|
|
// e.g. booleanAttributeValue(element, 'data-modal', false);
|
|
|
|
if (element.hasAttribute(attribute)) {
|
|
|
|
var value = element.getAttribute(attribute);
|
|
|
|
if (value === '' || value === 'true') {
|
|
|
|
return true;
|
|
|
|
} else if (value === 'false') {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return defaultValue;
|
|
|
|
}
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
function classOnCondition(element, className, condition) {
|
|
|
|
if (condition)
|
|
|
|
$(element).addClass(className);
|
|
|
|
else
|
|
|
|
$(element).removeClass(className);
|
|
|
|
}
|
2016-02-10 23:21:30 +00:00
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
function newDOMElement(tag, className, id){
|
|
|
|
var el = document.createElement(tag);
|
2016-02-10 23:21:30 +00:00
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
if (className) el.className = className;
|
|
|
|
if (id) el.id = id;
|
2016-02-10 23:21:30 +00:00
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
return el;
|
|
|
|
}
|
2016-02-10 23:21:30 +00:00
|
|
|
|
2016-02-25 21:37:33 +00:00
|
|
|
function px(n){
|
|
|
|
return n + 'px';
|
|
|
|
}
|
2016-02-10 23:21:30 +00:00
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
var kub = (function () {
|
|
|
|
var HEADER_HEIGHT;
|
|
|
|
var html, header, mainNav, quickstartButton, hero, encyclopedia, footer, wishField;
|
|
|
|
|
|
|
|
$(document).ready(function () {
|
|
|
|
html = $('html');
|
|
|
|
body = $('body');
|
|
|
|
header = $('header');
|
|
|
|
mainNav = $('#mainNav');
|
|
|
|
wishField = $('#wishField');
|
|
|
|
quickstartButton = $('#quickstartButton');
|
|
|
|
hero = $('#hero');
|
|
|
|
encyclopedia = $('#encyclopedia');
|
|
|
|
footer = $('footer');
|
|
|
|
HEADER_HEIGHT = header.outerHeight();
|
|
|
|
|
|
|
|
resetTheView();
|
|
|
|
|
|
|
|
window.addEventListener('resize', resetTheView);
|
|
|
|
window.addEventListener('scroll', resetTheView);
|
|
|
|
window.addEventListener('keydown', handleKeystrokes);
|
|
|
|
wishField[0].addEventListener('keydown', handleKeystrokes);
|
2016-02-10 23:21:30 +00:00
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
document.onunload = function(){
|
|
|
|
window.removeEventListener('resize', resetTheView);
|
|
|
|
window.removeEventListener('scroll', resetTheView);
|
|
|
|
window.removeEventListener('keydown', handleKeystrokes);
|
|
|
|
wishField[0].removeEventListener('keydown', handleKeystrokes);
|
|
|
|
};
|
2016-02-10 23:21:30 +00:00
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
$('.dropdown').each(function () {
|
|
|
|
var dropdown = $(this);
|
|
|
|
var readout = dropdown.find('.readout');
|
2016-02-10 23:21:30 +00:00
|
|
|
|
2016-02-25 21:37:33 +00:00
|
|
|
dropdown.find('a').each(function(){
|
|
|
|
if (location.href.indexOf(this.href) != -1) {
|
|
|
|
readout.html($(this).html());
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
readout.click(function () {
|
|
|
|
dropdown.toggleClass('on');
|
|
|
|
window.addEventListener('click', closeOpenDropdown);
|
2016-02-11 19:51:31 +00:00
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
function closeOpenDropdown(e) {
|
|
|
|
if (dropdown.hasClass('on') && !(dropdownWasClicked(e))) {
|
|
|
|
dropdown.removeClass('on');
|
|
|
|
window.removeEventListener('click', closeOpenDropdown);
|
|
|
|
}
|
|
|
|
}
|
2016-02-11 19:51:31 +00:00
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
function dropdownWasClicked(e) {
|
|
|
|
return $(e.target).parents('.dropdown').length;
|
|
|
|
}
|
2016-02-11 19:51:31 +00:00
|
|
|
});
|
2016-02-10 23:21:30 +00:00
|
|
|
});
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
setInterval(setFooterType, 10);
|
2016-02-10 23:21:30 +00:00
|
|
|
});
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
function setFooterType() {
|
|
|
|
if (html[0].id == "docs") {
|
|
|
|
var bodyHeight = hero.outerHeight() + encyclopedia.outerHeight();
|
|
|
|
var footerHeight = footer.outerHeight();
|
2016-02-10 23:21:30 +00:00
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
classOnCondition(body, 'fixed', window.innerHeight - footerHeight > bodyHeight);
|
|
|
|
}
|
2016-02-10 23:21:30 +00:00
|
|
|
}
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
function resetTheView() {
|
|
|
|
if (html.hasClass('open-nav')) {
|
|
|
|
toggleMenu();
|
|
|
|
} else {
|
|
|
|
HEADER_HEIGHT = header.outerHeight();
|
2016-02-10 23:21:30 +00:00
|
|
|
}
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
classOnCondition(html, 'flip-nav', window.pageYOffset > 0);
|
2016-02-10 23:21:30 +00:00
|
|
|
}
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
function toggleMenu() {
|
|
|
|
if (window.innerWidth < 800) {
|
2016-02-25 21:37:33 +00:00
|
|
|
pushmenu.show('primary');
|
2016-02-10 23:21:30 +00:00
|
|
|
}
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
else {
|
|
|
|
var newHeight = HEADER_HEIGHT;
|
2016-02-10 23:21:30 +00:00
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
if (!html.hasClass('open-nav')) {
|
|
|
|
newHeight = mainNav.outerHeight();
|
2016-02-10 23:21:30 +00:00
|
|
|
}
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
header.css({height: px(newHeight)});
|
|
|
|
html.toggleClass('open-nav');
|
2016-02-10 23:21:30 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
function submitWish(textfield) {
|
|
|
|
window.location.replace("https://github.com/kubernetes/kubernetes.github.io/issues/new?title=I%20wish%20" +
|
|
|
|
window.location.pathname + "%20" + textfield.value + "&body=I%20wish%20" +
|
|
|
|
window.location.pathname + "%20" + textfield.value);
|
2016-02-10 23:45:57 +00:00
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
textfield.value = '';
|
|
|
|
textfield.blur();
|
2016-02-10 23:45:57 +00:00
|
|
|
}
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
function handleKeystrokes(e) {
|
|
|
|
switch (e.which) {
|
|
|
|
case 13: {
|
|
|
|
if (e.currentTarget === wishField) {
|
|
|
|
submitWish(wishField);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
2016-02-10 23:45:57 +00:00
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
case 27: {
|
|
|
|
if (html.hasClass('open-nav')) {
|
|
|
|
toggleMenu();
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
2016-02-10 23:45:57 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
2016-02-24 23:44:54 +00:00
|
|
|
toggleMenu: toggleMenu
|
2016-02-10 23:45:57 +00:00
|
|
|
};
|
|
|
|
})();
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
|
|
|
|
// accordion
|
2016-02-18 07:19:16 +00:00
|
|
|
(function(){
|
|
|
|
var yah = true;
|
|
|
|
var moving = false;
|
2016-02-24 23:44:54 +00:00
|
|
|
var CSS_BROWSER_HACK_DELAY = 25;
|
2016-02-18 07:19:16 +00:00
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
$(document).ready(function(){
|
2016-02-18 07:19:16 +00:00
|
|
|
// Safari chokes on the animation here, so...
|
|
|
|
if (navigator.userAgent.indexOf('Chrome') == -1 && navigator.userAgent.indexOf('Safari') != -1){
|
2016-02-24 23:44:54 +00:00
|
|
|
var hackStyle = newDOMElement('style');
|
|
|
|
hackStyle.innerHTML = '.pi-accordion .wrapper{transition: none}';
|
|
|
|
body.append(hackStyle);
|
2016-02-18 07:19:16 +00:00
|
|
|
}
|
|
|
|
// Gross.
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
$('.pi-accordion').each(function () {
|
|
|
|
var accordion = this;
|
|
|
|
var content = this.innerHTML;
|
|
|
|
var container = newDOMElement('div', 'container');
|
|
|
|
container.innerHTML = content;
|
|
|
|
$(accordion).empty();
|
|
|
|
accordion.appendChild(container);
|
|
|
|
CollapseBox($(container));
|
2016-02-18 07:19:16 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
setYAH();
|
|
|
|
|
|
|
|
setTimeout(function () {
|
|
|
|
yah = false;
|
|
|
|
}, 500);
|
2016-02-24 23:44:54 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
function CollapseBox(container){
|
|
|
|
container.children('.item').each(function(){
|
|
|
|
// build the TOC DOM
|
|
|
|
// the animated open/close is enabled by having each item's content exist in the flow, at its natural height,
|
|
|
|
// enclosed in a wrapper with height = 0 when closed, and height = contentHeight when open.
|
|
|
|
var item = this;
|
|
|
|
|
|
|
|
// only add content wrappers to containers, not to links
|
|
|
|
var isContainer = item.tagName === 'DIV';
|
2016-02-18 07:19:16 +00:00
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
var titleText = item.getAttribute('data-title');
|
|
|
|
var title = newDOMElement('div', 'title');
|
|
|
|
title.innerHTML = titleText;
|
2016-02-18 07:19:16 +00:00
|
|
|
|
2016-02-25 00:00:51 +00:00
|
|
|
var wrapper, content;
|
2016-02-24 23:44:54 +00:00
|
|
|
|
|
|
|
if (isContainer) {
|
2016-02-25 00:00:51 +00:00
|
|
|
wrapper = newDOMElement('div', 'wrapper');
|
|
|
|
content = newDOMElement('div', 'content');
|
2016-02-24 23:44:54 +00:00
|
|
|
content.innerHTML = item.innerHTML;
|
|
|
|
wrapper.appendChild(content);
|
|
|
|
}
|
|
|
|
|
|
|
|
item.innerHTML = '';
|
|
|
|
item.appendChild(title);
|
|
|
|
|
|
|
|
if (wrapper) {
|
|
|
|
item.appendChild(wrapper);
|
|
|
|
$(wrapper).css({height: 0});
|
|
|
|
}
|
2016-02-18 07:19:16 +00:00
|
|
|
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
$(title).click(function(){
|
2016-02-18 07:19:16 +00:00
|
|
|
if (!yah) {
|
|
|
|
if (moving) return;
|
|
|
|
moving = true;
|
|
|
|
}
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
if (container[0].getAttribute('data-single')) {
|
2016-02-18 07:19:16 +00:00
|
|
|
var openSiblings = item.siblings().filter(function(sib){return sib.hasClass('on');});
|
|
|
|
openSiblings.forEach(function(sibling){
|
|
|
|
toggleItem(sibling);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
setTimeout(function(){
|
2016-02-24 23:44:54 +00:00
|
|
|
if (!isContainer) {
|
2016-02-18 07:19:16 +00:00
|
|
|
moving = false;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
toggleItem(item);
|
2016-02-24 23:44:54 +00:00
|
|
|
}, CSS_BROWSER_HACK_DELAY);
|
|
|
|
});
|
2016-02-18 07:19:16 +00:00
|
|
|
|
|
|
|
function toggleItem(thisItem){
|
2016-02-24 23:44:54 +00:00
|
|
|
var thisWrapper = $(thisItem).find('.wrapper').eq(0);
|
|
|
|
|
|
|
|
if (!thisWrapper) return;
|
|
|
|
|
|
|
|
var contentHeight = thisWrapper.find('.content').eq(0).innerHeight() + 'px';
|
2016-02-18 07:19:16 +00:00
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
if ($(thisItem).hasClass('on')) {
|
2016-02-18 07:19:16 +00:00
|
|
|
thisWrapper.css({height: contentHeight});
|
2016-02-24 23:44:54 +00:00
|
|
|
$(thisItem).removeClass('on');
|
|
|
|
|
2016-02-18 07:19:16 +00:00
|
|
|
setTimeout(function(){
|
|
|
|
thisWrapper.css({height: 0});
|
|
|
|
moving = false;
|
2016-02-24 23:44:54 +00:00
|
|
|
}, CSS_BROWSER_HACK_DELAY);
|
2016-02-18 07:19:16 +00:00
|
|
|
} else {
|
2016-02-24 23:44:54 +00:00
|
|
|
$(item).addClass('on');
|
2016-02-18 07:19:16 +00:00
|
|
|
thisWrapper.css({height: contentHeight});
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
var duration = parseFloat(getComputedStyle(thisWrapper[0]).transitionDuration) * 1000;
|
|
|
|
|
2016-02-18 07:19:16 +00:00
|
|
|
setTimeout(function(){
|
|
|
|
thisWrapper.css({height: ''});
|
|
|
|
moving = false;
|
|
|
|
}, duration);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-02-25 00:00:51 +00:00
|
|
|
if (content) {
|
|
|
|
var innerContainers = $(content).children('.container');
|
|
|
|
if (innerContainers.length > 0) {
|
|
|
|
innerContainers.each(function(){
|
|
|
|
CollapseBox($(this));
|
|
|
|
});
|
|
|
|
}
|
2016-02-18 07:19:16 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
function setYAH() {
|
2016-02-18 08:03:16 +00:00
|
|
|
var pathname = location.href.split('#')[0]; // on page load, make sure the page is YAH even if there's a hash
|
2016-02-18 07:19:16 +00:00
|
|
|
var currentLinks = [];
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
$('.pi-accordion a').each(function () {
|
|
|
|
if (pathname === this.href) currentLinks.push(this);
|
2016-02-18 07:19:16 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
currentLinks.forEach(function (yahLink) {
|
2016-02-24 23:44:54 +00:00
|
|
|
$(yahLink).parents('.item').each(function(){
|
|
|
|
$(this).addClass('on');
|
|
|
|
$(this).find('.wrapper').eq(0).css({height: 'auto'});
|
|
|
|
$(this).find('.content').eq(0).css({opacity: 1});
|
2016-02-18 07:19:16 +00:00
|
|
|
});
|
|
|
|
|
2016-02-24 23:44:54 +00:00
|
|
|
$(yahLink).addClass('yah');
|
2016-02-18 07:19:16 +00:00
|
|
|
yahLink.onclick = function(e){e.preventDefault();};
|
|
|
|
});
|
|
|
|
}
|
|
|
|
})();
|
|
|
|
|
2016-02-10 23:21:30 +00:00
|
|
|
|
2016-02-25 21:37:33 +00:00
|
|
|
var pushmenu = (function(){
|
|
|
|
var allPushMenus = {};
|
|
|
|
|
|
|
|
$(document).ready(function(){
|
|
|
|
$('[data-auto-burger]').each(function(){
|
|
|
|
var container = this;
|
|
|
|
var id = container.getAttribute('data-auto-burger');
|
|
|
|
|
|
|
|
var autoBurger = document.getElementById(id) || newDOMElement('div', 'pi-pushmenu', id);
|
|
|
|
var ul = autoBurger.querySelector('ul') || newDOMElement('ul');
|
|
|
|
|
|
|
|
$(container).find('a[href], button').each(function () {
|
|
|
|
if (!booleanAttributeValue(this, 'data-auto-burger-exclude', false)) {
|
|
|
|
var clone = this.cloneNode(true);
|
|
|
|
clone.id = '';
|
|
|
|
|
|
|
|
if (clone.tagName == "BUTTON") {
|
|
|
|
var aTag = newDOMElement('a');
|
|
|
|
aTag.href = '';
|
|
|
|
aTag.innerHTML = clone.innerHTML;
|
|
|
|
aTag.onclick = clone.onclick;
|
|
|
|
clone = aTag;
|
|
|
|
}
|
|
|
|
var li = newDOMElement('li');
|
|
|
|
li.appendChild(clone);
|
|
|
|
ul.appendChild(li);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
autoBurger.appendChild(ul);
|
|
|
|
body.append(autoBurger);
|
|
|
|
});
|
|
|
|
|
|
|
|
$(".pi-pushmenu").each(function(){
|
|
|
|
allPushMenus[this.id] = PushMenu(this);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
function show(objId) {
|
|
|
|
allPushMenus[objId].expose();
|
|
|
|
}
|
|
|
|
|
|
|
|
// TODO: dismiss on click?
|
|
|
|
// this works:
|
|
|
|
|
|
|
|
//π('.pi-pushmenu li a').forEach(function(a){
|
|
|
|
// a.onclick = function(){
|
|
|
|
// this.parent('.pi-pushmenu').π1('.pi-modal-close-button').click();
|
|
|
|
// console.log("message");
|
|
|
|
// };
|
|
|
|
//});
|
|
|
|
|
|
|
|
|
|
|
|
function PushMenu(el) {
|
|
|
|
var html = document.querySelector('html');
|
|
|
|
|
|
|
|
var overlay = newDOMElement('div', 'overlay');
|
|
|
|
var content = newDOMElement('div', 'content');
|
|
|
|
content.appendChild(el.querySelector('*'));
|
|
|
|
|
|
|
|
var side = el.getAttribute("data-side") || "right";
|
|
|
|
|
|
|
|
var sled = newDOMElement('div', 'sled');
|
|
|
|
$(sled).css(side, 0);
|
|
|
|
|
|
|
|
var topBar = newDOMElement('div', 'top-bar');
|
|
|
|
// TODO: add modal close button to topBar
|
|
|
|
//topBar.fill(π.modalCloseButton(closeMe));
|
|
|
|
|
|
|
|
sled.appendChild(topBar);
|
|
|
|
sled.appendChild(content);
|
|
|
|
|
|
|
|
overlay.appendChild(sled);
|
|
|
|
el.innerHTML = '';
|
|
|
|
el.appendChild(overlay);
|
|
|
|
|
|
|
|
sled.onclick = function(e){
|
|
|
|
e.stopPropagation();
|
|
|
|
};
|
|
|
|
|
|
|
|
overlay.onclick = closeMe;
|
|
|
|
|
|
|
|
window.addEventListener('resize', closeMe);
|
|
|
|
|
|
|
|
function closeMe(e) {
|
|
|
|
var t = e.target;
|
|
|
|
if (t == sled || t == topBar) return;
|
|
|
|
|
|
|
|
$(el).removeClass('on');
|
|
|
|
setTimeout(function(){
|
|
|
|
$(el).css({display: 'none'});
|
|
|
|
|
|
|
|
$(body).removeClass('overlay-on');
|
|
|
|
}, 300);
|
|
|
|
}
|
|
|
|
|
|
|
|
function exposeMe(){
|
|
|
|
$(body).addClass('overlay-on'); // in the default config, kills body scrolling
|
|
|
|
|
|
|
|
$(el).css({
|
|
|
|
display: 'block',
|
|
|
|
zIndex: 999999999
|
|
|
|
});
|
|
|
|
|
|
|
|
setTimeout(function(){
|
|
|
|
$(el).addClass('on');
|
|
|
|
}, 10);
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
expose: exposeMe
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
show: show
|
|
|
|
};
|
|
|
|
})();
|
2016-02-15 21:00:37 +00:00
|
|
|
|
2016-02-25 21:37:33 +00:00
|
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIs+ALWJhc2VDb21wb25lbnRzLmpzIiwic2NyaXB0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJzY3JpcHQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgLy9tb2RhbCBjbG9zZSBidXR0b25cbihmdW5jdGlvbigpe1xuXHQvL8+ALm1vZGFsQ2xvc2VCdXR0b24gPSBmdW5jdGlvbihjbG9zaW5nRnVuY3Rpb24pe1xuXHQvL1x0cmV0dXJuIM+ALmJ1dHRvbigncGktbW9kYWwtY2xvc2UtYnV0dG9uJywgbnVsbCwgbnVsbCwgY2xvc2luZ0Z1bmN0aW9uKTtcblx0Ly99O1xufSkoKTtcbiIsIi8vIGdsb2JhbHNcbnZhciBib2R5O1xuXG4vL2hlbHBlciBmdW5jdGlvbnNcbmZ1bmN0aW9uIGJvb2xlYW5BdHRyaWJ1dGVWYWx1ZShlbGVtZW50LCBhdHRyaWJ1dGUsIGRlZmF1bHRWYWx1ZSl7XG5cdC8vIHJldHVybnMgdHJ1ZSBpZiBhbiBhdHRyaWJ1dGUgaXMgcHJlc2VudCB3aXRoIG5vIHZhbHVlXG5cdC8vIGUuZy4gYm9vbGVhbkF0dHJpYnV0ZVZhbHVlKGVsZW1lbnQsICdkYXRhLW1vZGFsJywgZmFsc2UpO1xuXHRpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0cmlidXRlKSkge1xuXHRcdHZhciB2YWx1ZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSk7XG5cdFx0aWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gJ3RydWUnKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGVsc2UgaWYgKHZhbHVlID09PSAnZmFsc2UnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGRlZmF1bHRWYWx1ZTtcbn1cblxuZnVuY3Rpb24gY2xhc3NPbkNvbmRpdGlvb
|