(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["d3v4pp"] = factory(); else root["d3v4pp"] = factory(); })(this, () => { return /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js": /*!*******************************************************************************!*\ !*** ./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js ***! \*******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ isPropValid) /* harmony export */ }); /* harmony import */ var _emotion_memoize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @emotion/memoize */ "./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js"); var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23 var isPropValid = /* #__PURE__ */(0,_emotion_memoize__WEBPACK_IMPORTED_MODULE_0__["default"])(function (prop) { return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 /* o */ && prop.charCodeAt(1) === 110 /* n */ && prop.charCodeAt(2) < 91; } /* Z+1 */ ); /***/ }), /***/ "./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js": /*!*******************************************************************!*\ !*** ./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ memoize) /* harmony export */ }); function memoize(fn) { var cache = Object.create(null); return function (arg) { if (cache[arg] === undefined) cache[arg] = fn(arg); return cache[arg]; }; } /***/ }), /***/ "./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js": /*!*********************************************************************!*\ !*** ./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ unitlessKeys) /* harmony export */ }); var unitlessKeys = { animationIterationCount: 1, aspectRatio: 1, borderImageOutset: 1, borderImageSlice: 1, borderImageWidth: 1, boxFlex: 1, boxFlexGroup: 1, boxOrdinalGroup: 1, columnCount: 1, columns: 1, flex: 1, flexGrow: 1, flexPositive: 1, flexShrink: 1, flexNegative: 1, flexOrder: 1, gridRow: 1, gridRowEnd: 1, gridRowSpan: 1, gridRowStart: 1, gridColumn: 1, gridColumnEnd: 1, gridColumnSpan: 1, gridColumnStart: 1, msGridRow: 1, msGridRowSpan: 1, msGridColumn: 1, msGridColumnSpan: 1, fontWeight: 1, lineHeight: 1, opacity: 1, order: 1, orphans: 1, tabSize: 1, widows: 1, zIndex: 1, zoom: 1, WebkitLineClamp: 1, // SVG-related properties fillOpacity: 1, floodOpacity: 1, stopOpacity: 1, strokeDasharray: 1, strokeDashoffset: 1, strokeMiterlimit: 1, strokeOpacity: 1, strokeWidth: 1 }; /***/ }), /***/ "./node_modules/autosize/dist/autosize.js": /*!************************************************!*\ !*** ./node_modules/autosize/dist/autosize.js ***! \************************************************/ /***/ (function(module, exports) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! autosize 4.0.4 license: MIT http://www.jacklmoore.com/autosize */ (function (global, factory) { if (true) { !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else { var mod; } })(this, function (module, exports) { 'use strict'; var map = typeof Map === "function" ? new Map() : function () { var keys = []; var values = []; return { has: function has(key) { return keys.indexOf(key) > -1; }, get: function get(key) { return values[keys.indexOf(key)]; }, set: function set(key, value) { if (keys.indexOf(key) === -1) { keys.push(key); values.push(value); } }, delete: function _delete(key) { var index = keys.indexOf(key); if (index > -1) { keys.splice(index, 1); values.splice(index, 1); } } }; }(); var createEvent = function createEvent(name) { return new Event(name, { bubbles: true }); }; try { new Event('test'); } catch (e) { // IE does not support `new Event()` createEvent = function createEvent(name) { var evt = document.createEvent('Event'); evt.initEvent(name, true, false); return evt; }; } function assign(ta) { if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return; var heightOffset = null; var clientWidth = null; var cachedHeight = null; function init() { var style = window.getComputedStyle(ta, null); if (style.resize === 'vertical') { ta.style.resize = 'none'; } else if (style.resize === 'both') { ta.style.resize = 'horizontal'; } if (style.boxSizing === 'content-box') { heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)); } else { heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); } // Fix when a textarea is not on document body and heightOffset is Not a Number if (isNaN(heightOffset)) { heightOffset = 0; } update(); } function changeOverflow(value) { { // Chrome/Safari-specific fix: // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space // made available by removing the scrollbar. The following forces the necessary text reflow. var width = ta.style.width; ta.style.width = '0px'; // Force reflow: /* jshint ignore:start */ ta.offsetWidth; /* jshint ignore:end */ ta.style.width = width; } ta.style.overflowY = value; } function getParentOverflows(el) { var arr = []; while (el && el.parentNode && el.parentNode instanceof Element) { if (el.parentNode.scrollTop) { arr.push({ node: el.parentNode, scrollTop: el.parentNode.scrollTop }); } el = el.parentNode; } return arr; } function resize() { if (ta.scrollHeight === 0) { // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM. return; } var overflows = getParentOverflows(ta); var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240) ta.style.height = ''; ta.style.height = ta.scrollHeight + heightOffset + 'px'; // used to check if an update is actually necessary on window.resize clientWidth = ta.clientWidth; // prevents scroll-position jumping overflows.forEach(function (el) { el.node.scrollTop = el.scrollTop; }); if (docTop) { document.documentElement.scrollTop = docTop; } } function update() { resize(); var styleHeight = Math.round(parseFloat(ta.style.height)); var computed = window.getComputedStyle(ta, null); // Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight; // The actual height not matching the style height (set via the resize method) indicates that // the max-height has been exceeded, in which case the overflow should be allowed. if (actualHeight < styleHeight) { if (computed.overflowY === 'hidden') { changeOverflow('scroll'); resize(); actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight; } } else { // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands. if (computed.overflowY !== 'hidden') { changeOverflow('hidden'); resize(); actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight; } } if (cachedHeight !== actualHeight) { cachedHeight = actualHeight; var evt = createEvent('autosize:resized'); try { ta.dispatchEvent(evt); } catch (err) { // Firefox will throw an error on dispatchEvent for a detached element // https://bugzilla.mozilla.org/show_bug.cgi?id=889376 } } } var pageResize = function pageResize() { if (ta.clientWidth !== clientWidth) { update(); } }; var destroy = function (style) { window.removeEventListener('resize', pageResize, false); ta.removeEventListener('input', update, false); ta.removeEventListener('keyup', update, false); ta.removeEventListener('autosize:destroy', destroy, false); ta.removeEventListener('autosize:update', update, false); Object.keys(style).forEach(function (key) { ta.style[key] = style[key]; }); map.delete(ta); }.bind(ta, { height: ta.style.height, resize: ta.style.resize, overflowY: ta.style.overflowY, overflowX: ta.style.overflowX, wordWrap: ta.style.wordWrap }); ta.addEventListener('autosize:destroy', destroy, false); // IE9 does not fire onpropertychange or oninput for deletions, // so binding to onkeyup to catch most of those events. // There is no way that I know of to detect something like 'cut' in IE9. if ('onpropertychange' in ta && 'oninput' in ta) { ta.addEventListener('keyup', update, false); } window.addEventListener('resize', pageResize, false); ta.addEventListener('input', update, false); ta.addEventListener('autosize:update', update, false); ta.style.overflowX = 'hidden'; ta.style.wordWrap = 'break-word'; map.set(ta, { destroy: destroy, update: update }); init(); } function destroy(ta) { var methods = map.get(ta); if (methods) { methods.destroy(); } } function update(ta) { var methods = map.get(ta); if (methods) { methods.update(); } } var autosize = null; // Do nothing in Node.js environment and IE8 (or lower) if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') { autosize = function autosize(el) { return el; }; autosize.destroy = function (el) { return el; }; autosize.update = function (el) { return el; }; } else { autosize = function autosize(el, options) { if (el) { Array.prototype.forEach.call(el.length ? el : [el], function (x) { return assign(x, options); }); } return el; }; autosize.destroy = function (el) { if (el) { Array.prototype.forEach.call(el.length ? el : [el], destroy); } return el; }; autosize.update = function (el) { if (el) { Array.prototype.forEach.call(el.length ? el : [el], update); } return el; }; } exports.default = autosize; module.exports = exports['default']; }); /***/ }), /***/ "./node_modules/computed-style/dist/computedStyle.commonjs.js": /*!********************************************************************!*\ !*** ./node_modules/computed-style/dist/computedStyle.commonjs.js ***! \********************************************************************/ /***/ ((module) => { // DEV: We don't use var but favor parameters since these play nicer with minification function computedStyle(el, prop, getComputedStyle, style) { getComputedStyle = window.getComputedStyle; style = // If we have getComputedStyle getComputedStyle ? // Query it // TODO: From CSS-Query notes, we might need (node, null) for FF getComputedStyle(el) : // Otherwise, we are in IE and use currentStyle el.currentStyle; if (style) { return style [ // Switch to camelCase for CSSOM // DEV: Grabbed from jQuery // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194 // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597 prop.replace(/-(\w)/gi, function (word, letter) { return letter.toUpperCase(); }) ]; } } module.exports = computedStyle; /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./src/sass/d3v4pp.scss": /*!***************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./src/sass/d3v4pp.scss ***! \***************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); ___CSS_LOADER_EXPORT___.push([module.id, "@import url(https://fonts.googleapis.com/css?family=Ubuntu);"]); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .webo { background-color: #0062d6 !important; } .webo-text { color: #0062d6 !important; } .webo-waves .waves-ripple { background-color: #0062d6 !important; } .webo.second { background-color: #0077FA !important; } .webo-text.text-second { color: #0077FA !important; } .webo-waves.waves-second .waves-ripple { background-color: #0077FA !important; } .webo.third { background-color: #09bddd !important; } .webo-text.text-third { color: #09bddd !important; } .webo-waves.waves-third .waves-ripple { background-color: #09bddd !important; } .webo.fourth { background-color: #cbe7fe !important; } .webo-text.text-fourth { color: #cbe7fe !important; } .webo-waves.waves-fourth .waves-ripple { background-color: #cbe7fe !important; } .webo.lighten-5 { background-color: #bbdefb !important; } .webo-text.text-lighten-5 { color: #bbdefb !important; } .webo-waves.waves-lighten-5 .waves-ripple { background-color: #bbdefb !important; } .webo.lighten-4 { background-color: #42a5f5 !important; } .webo-text.text-lighten-4 { color: #42a5f5 !important; } .webo-waves.waves-lighten-4 .waves-ripple { background-color: #42a5f5 !important; } .webo.lighten-3 { background-color: #7986cb !important; } .webo-text.text-lighten-3 { color: #7986cb !important; } .webo-waves.waves-lighten-3 .waves-ripple { background-color: #7986cb !important; } .webo.lighten-2 { background-color: #512da8 !important; } .webo-text.text-lighten-2 { color: #512da8 !important; } .webo-waves.waves-lighten-2 .waves-ripple { background-color: #512da8 !important; } .webo.lighten-1 { background-color: #283593 !important; } .webo-text.text-lighten-1 { color: #283593 !important; } .webo-waves.waves-lighten-1 .waves-ripple { background-color: #283593 !important; } .webo.darken-1 { background-color: #d0181e !important; } .webo-text.text-darken-1 { color: #d0181e !important; } .webo-waves.waves-darken-1 .waves-ripple { background-color: #d0181e !important; } .webo.darken-2 { background-color: #b9151b !important; } .webo-text.text-darken-2 { color: #b9151b !important; } .webo-waves.waves-darken-2 .waves-ripple { background-color: #b9151b !important; } .webo.darken-3 { background-color: #a21318 !important; } .webo-text.text-darken-3 { color: #a21318 !important; } .webo-waves.waves-darken-3 .waves-ripple { background-color: #a21318 !important; } .webo.b- { background-color: #49ce5f !important; } .webo-text.text-b- { color: #49ce5f !important; } .webo-waves.waves-b- .waves-ripple { background-color: #49ce5f !important; } .webo.darken-4 { background-color: #8b1014 !important; } .webo-text.text-darken-4 { color: #8b1014 !important; } .webo-waves.waves-darken-4 .waves-ripple { background-color: #8b1014 !important; } .red { background-color: #f44336 !important; } .red-text { color: #f44336 !important; } .red-waves .waves-ripple { background-color: #f44336 !important; } .red.lighten-5 { background-color: #ffebee !important; } .red-text.text-lighten-5 { color: #ffebee !important; } .red-waves.waves-lighten-5 .waves-ripple { background-color: #ffebee !important; } .red.lighten-4 { background-color: #ffcdd2 !important; } .red-text.text-lighten-4 { color: #ffcdd2 !important; } .red-waves.waves-lighten-4 .waves-ripple { background-color: #ffcdd2 !important; } .red.lighten-3 { background-color: #ef9a9a !important; } .red-text.text-lighten-3 { color: #ef9a9a !important; } .red-waves.waves-lighten-3 .waves-ripple { background-color: #ef9a9a !important; } .red.lighten-2 { background-color: #e57373 !important; } .red-text.text-lighten-2 { color: #e57373 !important; } .red-waves.waves-lighten-2 .waves-ripple { background-color: #e57373 !important; } .red.lighten-1 { background-color: #ef5350 !important; } .red-text.text-lighten-1 { color: #ef5350 !important; } .red-waves.waves-lighten-1 .waves-ripple { background-color: #ef5350 !important; } .red.darken-1 { background-color: #e53935 !important; } .red-text.text-darken-1 { color: #e53935 !important; } .red-waves.waves-darken-1 .waves-ripple { background-color: #e53935 !important; } .red.darken-2 { background-color: #d32f2f !important; } .red-text.text-darken-2 { color: #d32f2f !important; } .red-waves.waves-darken-2 .waves-ripple { background-color: #d32f2f !important; } .red.darken-3 { background-color: #c62828 !important; } .red-text.text-darken-3 { color: #c62828 !important; } .red-waves.waves-darken-3 .waves-ripple { background-color: #c62828 !important; } .red.darken-4 { background-color: #b71c1c !important; } .red-text.text-darken-4 { color: #b71c1c !important; } .red-waves.waves-darken-4 .waves-ripple { background-color: #b71c1c !important; } .red.accent-1 { background-color: #ff8a80 !important; } .red-text.text-accent-1 { color: #ff8a80 !important; } .red-waves.waves-accent-1 .waves-ripple { background-color: #ff8a80 !important; } .red.accent-2 { background-color: #ff5252 !important; } .red-text.text-accent-2 { color: #ff5252 !important; } .red-waves.waves-accent-2 .waves-ripple { background-color: #ff5252 !important; } .red.accent-3 { background-color: #ff1744 !important; } .red-text.text-accent-3 { color: #ff1744 !important; } .red-waves.waves-accent-3 .waves-ripple { background-color: #ff1744 !important; } .red.accent-4 { background-color: #d50000 !important; } .red-text.text-accent-4 { color: #d50000 !important; } .red-waves.waves-accent-4 .waves-ripple { background-color: #d50000 !important; } .pink { background-color: #e91e63 !important; } .pink-text { color: #e91e63 !important; } .pink-waves .waves-ripple { background-color: #e91e63 !important; } .pink.lighten-5 { background-color: #fce4ec !important; } .pink-text.text-lighten-5 { color: #fce4ec !important; } .pink-waves.waves-lighten-5 .waves-ripple { background-color: #fce4ec !important; } .pink.lighten-4 { background-color: #f8bbd0 !important; } .pink-text.text-lighten-4 { color: #f8bbd0 !important; } .pink-waves.waves-lighten-4 .waves-ripple { background-color: #f8bbd0 !important; } .pink.lighten-3 { background-color: #f48fb1 !important; } .pink-text.text-lighten-3 { color: #f48fb1 !important; } .pink-waves.waves-lighten-3 .waves-ripple { background-color: #f48fb1 !important; } .pink.lighten-2 { background-color: #f06292 !important; } .pink-text.text-lighten-2 { color: #f06292 !important; } .pink-waves.waves-lighten-2 .waves-ripple { background-color: #f06292 !important; } .pink.lighten-1 { background-color: #ec407a !important; } .pink-text.text-lighten-1 { color: #ec407a !important; } .pink-waves.waves-lighten-1 .waves-ripple { background-color: #ec407a !important; } .pink.darken-1 { background-color: #d81b60 !important; } .pink-text.text-darken-1 { color: #d81b60 !important; } .pink-waves.waves-darken-1 .waves-ripple { background-color: #d81b60 !important; } .pink.darken-2 { background-color: #c2185b !important; } .pink-text.text-darken-2 { color: #c2185b !important; } .pink-waves.waves-darken-2 .waves-ripple { background-color: #c2185b !important; } .pink.darken-3 { background-color: #ad1457 !important; } .pink-text.text-darken-3 { color: #ad1457 !important; } .pink-waves.waves-darken-3 .waves-ripple { background-color: #ad1457 !important; } .pink.darken-4 { background-color: #880e4f !important; } .pink-text.text-darken-4 { color: #880e4f !important; } .pink-waves.waves-darken-4 .waves-ripple { background-color: #880e4f !important; } .pink.accent-1 { background-color: #ff80ab !important; } .pink-text.text-accent-1 { color: #ff80ab !important; } .pink-waves.waves-accent-1 .waves-ripple { background-color: #ff80ab !important; } .pink.accent-2 { background-color: #ff4081 !important; } .pink-text.text-accent-2 { color: #ff4081 !important; } .pink-waves.waves-accent-2 .waves-ripple { background-color: #ff4081 !important; } .pink.accent-3 { background-color: #f50057 !important; } .pink-text.text-accent-3 { color: #f50057 !important; } .pink-waves.waves-accent-3 .waves-ripple { background-color: #f50057 !important; } .pink.accent-4 { background-color: #c51162 !important; } .pink-text.text-accent-4 { color: #c51162 !important; } .pink-waves.waves-accent-4 .waves-ripple { background-color: #c51162 !important; } .purple { background-color: #9c27b0 !important; } .purple-text { color: #9c27b0 !important; } .purple-waves .waves-ripple { background-color: #9c27b0 !important; } .purple.lighten-5 { background-color: #f3e5f5 !important; } .purple-text.text-lighten-5 { color: #f3e5f5 !important; } .purple-waves.waves-lighten-5 .waves-ripple { background-color: #f3e5f5 !important; } .purple.lighten-4 { background-color: #e1bee7 !important; } .purple-text.text-lighten-4 { color: #e1bee7 !important; } .purple-waves.waves-lighten-4 .waves-ripple { background-color: #e1bee7 !important; } .purple.lighten-3 { background-color: #ce93d8 !important; } .purple-text.text-lighten-3 { color: #ce93d8 !important; } .purple-waves.waves-lighten-3 .waves-ripple { background-color: #ce93d8 !important; } .purple.lighten-2 { background-color: #ba68c8 !important; } .purple-text.text-lighten-2 { color: #ba68c8 !important; } .purple-waves.waves-lighten-2 .waves-ripple { background-color: #ba68c8 !important; } .purple.lighten-1 { background-color: #ab47bc !important; } .purple-text.text-lighten-1 { color: #ab47bc !important; } .purple-waves.waves-lighten-1 .waves-ripple { background-color: #ab47bc !important; } .purple.darken-1 { background-color: #8e24aa !important; } .purple-text.text-darken-1 { color: #8e24aa !important; } .purple-waves.waves-darken-1 .waves-ripple { background-color: #8e24aa !important; } .purple.darken-2 { background-color: #7b1fa2 !important; } .purple-text.text-darken-2 { color: #7b1fa2 !important; } .purple-waves.waves-darken-2 .waves-ripple { background-color: #7b1fa2 !important; } .purple.darken-3 { background-color: #6a1b9a !important; } .purple-text.text-darken-3 { color: #6a1b9a !important; } .purple-waves.waves-darken-3 .waves-ripple { background-color: #6a1b9a !important; } .purple.darken-4 { background-color: #4a148c !important; } .purple-text.text-darken-4 { color: #4a148c !important; } .purple-waves.waves-darken-4 .waves-ripple { background-color: #4a148c !important; } .purple.accent-1 { background-color: #ea80fc !important; } .purple-text.text-accent-1 { color: #ea80fc !important; } .purple-waves.waves-accent-1 .waves-ripple { background-color: #ea80fc !important; } .purple.accent-2 { background-color: #e040fb !important; } .purple-text.text-accent-2 { color: #e040fb !important; } .purple-waves.waves-accent-2 .waves-ripple { background-color: #e040fb !important; } .purple.accent-3 { background-color: #d500f9 !important; } .purple-text.text-accent-3 { color: #d500f9 !important; } .purple-waves.waves-accent-3 .waves-ripple { background-color: #d500f9 !important; } .purple.accent-4 { background-color: #aa00ff !important; } .purple-text.text-accent-4 { color: #aa00ff !important; } .purple-waves.waves-accent-4 .waves-ripple { background-color: #aa00ff !important; } .deep-purple { background-color: #673ab7 !important; } .deep-purple-text { color: #673ab7 !important; } .deep-purple-waves .waves-ripple { background-color: #673ab7 !important; } .deep-purple.lighten-5 { background-color: #ede7f6 !important; } .deep-purple-text.text-lighten-5 { color: #ede7f6 !important; } .deep-purple-waves.waves-lighten-5 .waves-ripple { background-color: #ede7f6 !important; } .deep-purple.lighten-4 { background-color: #d1c4e9 !important; } .deep-purple-text.text-lighten-4 { color: #d1c4e9 !important; } .deep-purple-waves.waves-lighten-4 .waves-ripple { background-color: #d1c4e9 !important; } .deep-purple.lighten-3 { background-color: #b39ddb !important; } .deep-purple-text.text-lighten-3 { color: #b39ddb !important; } .deep-purple-waves.waves-lighten-3 .waves-ripple { background-color: #b39ddb !important; } .deep-purple.lighten-2 { background-color: #9575cd !important; } .deep-purple-text.text-lighten-2 { color: #9575cd !important; } .deep-purple-waves.waves-lighten-2 .waves-ripple { background-color: #9575cd !important; } .deep-purple.lighten-1 { background-color: #7e57c2 !important; } .deep-purple-text.text-lighten-1 { color: #7e57c2 !important; } .deep-purple-waves.waves-lighten-1 .waves-ripple { background-color: #7e57c2 !important; } .deep-purple.darken-1 { background-color: #5e35b1 !important; } .deep-purple-text.text-darken-1 { color: #5e35b1 !important; } .deep-purple-waves.waves-darken-1 .waves-ripple { background-color: #5e35b1 !important; } .deep-purple.darken-2 { background-color: #512da8 !important; } .deep-purple-text.text-darken-2 { color: #512da8 !important; } .deep-purple-waves.waves-darken-2 .waves-ripple { background-color: #512da8 !important; } .deep-purple.darken-3 { background-color: #4527a0 !important; } .deep-purple-text.text-darken-3 { color: #4527a0 !important; } .deep-purple-waves.waves-darken-3 .waves-ripple { background-color: #4527a0 !important; } .deep-purple.darken-4 { background-color: #311b92 !important; } .deep-purple-text.text-darken-4 { color: #311b92 !important; } .deep-purple-waves.waves-darken-4 .waves-ripple { background-color: #311b92 !important; } .deep-purple.accent-1 { background-color: #b388ff !important; } .deep-purple-text.text-accent-1 { color: #b388ff !important; } .deep-purple-waves.waves-accent-1 .waves-ripple { background-color: #b388ff !important; } .deep-purple.accent-2 { background-color: #7c4dff !important; } .deep-purple-text.text-accent-2 { color: #7c4dff !important; } .deep-purple-waves.waves-accent-2 .waves-ripple { background-color: #7c4dff !important; } .deep-purple.accent-3 { background-color: #651fff !important; } .deep-purple-text.text-accent-3 { color: #651fff !important; } .deep-purple-waves.waves-accent-3 .waves-ripple { background-color: #651fff !important; } .deep-purple.accent-4 { background-color: #6200ea !important; } .deep-purple-text.text-accent-4 { color: #6200ea !important; } .deep-purple-waves.waves-accent-4 .waves-ripple { background-color: #6200ea !important; } .indigo { background-color: #3f51b5 !important; } .indigo-text { color: #3f51b5 !important; } .indigo-waves .waves-ripple { background-color: #3f51b5 !important; } .indigo.lighten-5 { background-color: #e8eaf6 !important; } .indigo-text.text-lighten-5 { color: #e8eaf6 !important; } .indigo-waves.waves-lighten-5 .waves-ripple { background-color: #e8eaf6 !important; } .indigo.lighten-4 { background-color: #c5cae9 !important; } .indigo-text.text-lighten-4 { color: #c5cae9 !important; } .indigo-waves.waves-lighten-4 .waves-ripple { background-color: #c5cae9 !important; } .indigo.lighten-3 { background-color: #9fa8da !important; } .indigo-text.text-lighten-3 { color: #9fa8da !important; } .indigo-waves.waves-lighten-3 .waves-ripple { background-color: #9fa8da !important; } .indigo.lighten-2 { background-color: #7986cb !important; } .indigo-text.text-lighten-2 { color: #7986cb !important; } .indigo-waves.waves-lighten-2 .waves-ripple { background-color: #7986cb !important; } .indigo.lighten-1 { background-color: #5c6bc0 !important; } .indigo-text.text-lighten-1 { color: #5c6bc0 !important; } .indigo-waves.waves-lighten-1 .waves-ripple { background-color: #5c6bc0 !important; } .indigo.darken-1 { background-color: #3949ab !important; } .indigo-text.text-darken-1 { color: #3949ab !important; } .indigo-waves.waves-darken-1 .waves-ripple { background-color: #3949ab !important; } .indigo.darken-2 { background-color: #303f9f !important; } .indigo-text.text-darken-2 { color: #303f9f !important; } .indigo-waves.waves-darken-2 .waves-ripple { background-color: #303f9f !important; } .indigo.darken-3 { background-color: #283593 !important; } .indigo-text.text-darken-3 { color: #283593 !important; } .indigo-waves.waves-darken-3 .waves-ripple { background-color: #283593 !important; } .indigo.darken-4 { background-color: #1a237e !important; } .indigo-text.text-darken-4 { color: #1a237e !important; } .indigo-waves.waves-darken-4 .waves-ripple { background-color: #1a237e !important; } .indigo.accent-1 { background-color: #8c9eff !important; } .indigo-text.text-accent-1 { color: #8c9eff !important; } .indigo-waves.waves-accent-1 .waves-ripple { background-color: #8c9eff !important; } .indigo.accent-2 { background-color: #536dfe !important; } .indigo-text.text-accent-2 { color: #536dfe !important; } .indigo-waves.waves-accent-2 .waves-ripple { background-color: #536dfe !important; } .indigo.accent-3 { background-color: #3d5afe !important; } .indigo-text.text-accent-3 { color: #3d5afe !important; } .indigo-waves.waves-accent-3 .waves-ripple { background-color: #3d5afe !important; } .indigo.accent-4 { background-color: #304ffe !important; } .indigo-text.text-accent-4 { color: #304ffe !important; } .indigo-waves.waves-accent-4 .waves-ripple { background-color: #304ffe !important; } .blue { background-color: #2196f3 !important; } .blue-text { color: #2196f3 !important; } .blue-waves .waves-ripple { background-color: #2196f3 !important; } .blue.lighten-5 { background-color: #e3f2fd !important; } .blue-text.text-lighten-5 { color: #e3f2fd !important; } .blue-waves.waves-lighten-5 .waves-ripple { background-color: #e3f2fd !important; } .blue.lighten-4 { background-color: #bbdefb !important; } .blue-text.text-lighten-4 { color: #bbdefb !important; } .blue-waves.waves-lighten-4 .waves-ripple { background-color: #bbdefb !important; } .blue.lighten-3 { background-color: #90caf9 !important; } .blue-text.text-lighten-3 { color: #90caf9 !important; } .blue-waves.waves-lighten-3 .waves-ripple { background-color: #90caf9 !important; } .blue.lighten-2 { background-color: #64b5f6 !important; } .blue-text.text-lighten-2 { color: #64b5f6 !important; } .blue-waves.waves-lighten-2 .waves-ripple { background-color: #64b5f6 !important; } .blue.lighten-1 { background-color: #42a5f5 !important; } .blue-text.text-lighten-1 { color: #42a5f5 !important; } .blue-waves.waves-lighten-1 .waves-ripple { background-color: #42a5f5 !important; } .blue.darken-1 { background-color: #1e88e5 !important; } .blue-text.text-darken-1 { color: #1e88e5 !important; } .blue-waves.waves-darken-1 .waves-ripple { background-color: #1e88e5 !important; } .blue.darken-2 { background-color: #1976d2 !important; } .blue-text.text-darken-2 { color: #1976d2 !important; } .blue-waves.waves-darken-2 .waves-ripple { background-color: #1976d2 !important; } .blue.darken-3 { background-color: #1565c0 !important; } .blue-text.text-darken-3 { color: #1565c0 !important; } .blue-waves.waves-darken-3 .waves-ripple { background-color: #1565c0 !important; } .blue.darken-4 { background-color: #0d47a1 !important; } .blue-text.text-darken-4 { color: #0d47a1 !important; } .blue-waves.waves-darken-4 .waves-ripple { background-color: #0d47a1 !important; } .blue.accent-1 { background-color: #82b1ff !important; } .blue-text.text-accent-1 { color: #82b1ff !important; } .blue-waves.waves-accent-1 .waves-ripple { background-color: #82b1ff !important; } .blue.accent-2 { background-color: #448aff !important; } .blue-text.text-accent-2 { color: #448aff !important; } .blue-waves.waves-accent-2 .waves-ripple { background-color: #448aff !important; } .blue.accent-3 { background-color: #2979ff !important; } .blue-text.text-accent-3 { color: #2979ff !important; } .blue-waves.waves-accent-3 .waves-ripple { background-color: #2979ff !important; } .blue.accent-4 { background-color: #2962ff !important; } .blue-text.text-accent-4 { color: #2962ff !important; } .blue-waves.waves-accent-4 .waves-ripple { background-color: #2962ff !important; } .light-blue { background-color: #03a9f4 !important; } .light-blue-text { color: #03a9f4 !important; } .light-blue-waves .waves-ripple { background-color: #03a9f4 !important; } .light-blue.lighten-5 { background-color: #e1f5fe !important; } .light-blue-text.text-lighten-5 { color: #e1f5fe !important; } .light-blue-waves.waves-lighten-5 .waves-ripple { background-color: #e1f5fe !important; } .light-blue.lighten-4 { background-color: #b3e5fc !important; } .light-blue-text.text-lighten-4 { color: #b3e5fc !important; } .light-blue-waves.waves-lighten-4 .waves-ripple { background-color: #b3e5fc !important; } .light-blue.lighten-3 { background-color: #81d4fa !important; } .light-blue-text.text-lighten-3 { color: #81d4fa !important; } .light-blue-waves.waves-lighten-3 .waves-ripple { background-color: #81d4fa !important; } .light-blue.lighten-2 { background-color: #4fc3f7 !important; } .light-blue-text.text-lighten-2 { color: #4fc3f7 !important; } .light-blue-waves.waves-lighten-2 .waves-ripple { background-color: #4fc3f7 !important; } .light-blue.lighten-1 { background-color: #29b6f6 !important; } .light-blue-text.text-lighten-1 { color: #29b6f6 !important; } .light-blue-waves.waves-lighten-1 .waves-ripple { background-color: #29b6f6 !important; } .light-blue.darken-1 { background-color: #039be5 !important; } .light-blue-text.text-darken-1 { color: #039be5 !important; } .light-blue-waves.waves-darken-1 .waves-ripple { background-color: #039be5 !important; } .light-blue.darken-2 { background-color: #0288d1 !important; } .light-blue-text.text-darken-2 { color: #0288d1 !important; } .light-blue-waves.waves-darken-2 .waves-ripple { background-color: #0288d1 !important; } .light-blue.darken-3 { background-color: #0277bd !important; } .light-blue-text.text-darken-3 { color: #0277bd !important; } .light-blue-waves.waves-darken-3 .waves-ripple { background-color: #0277bd !important; } .light-blue.darken-4 { background-color: #01579b !important; } .light-blue-text.text-darken-4 { color: #01579b !important; } .light-blue-waves.waves-darken-4 .waves-ripple { background-color: #01579b !important; } .light-blue.accent-1 { background-color: #80d8ff !important; } .light-blue-text.text-accent-1 { color: #80d8ff !important; } .light-blue-waves.waves-accent-1 .waves-ripple { background-color: #80d8ff !important; } .light-blue.accent-2 { background-color: #40c4ff !important; } .light-blue-text.text-accent-2 { color: #40c4ff !important; } .light-blue-waves.waves-accent-2 .waves-ripple { background-color: #40c4ff !important; } .light-blue.accent-3 { background-color: #00b0ff !important; } .light-blue-text.text-accent-3 { color: #00b0ff !important; } .light-blue-waves.waves-accent-3 .waves-ripple { background-color: #00b0ff !important; } .light-blue.accent-4 { background-color: #0091ea !important; } .light-blue-text.text-accent-4 { color: #0091ea !important; } .light-blue-waves.waves-accent-4 .waves-ripple { background-color: #0091ea !important; } .cyan { background-color: #00bcd4 !important; } .cyan-text { color: #00bcd4 !important; } .cyan-waves .waves-ripple { background-color: #00bcd4 !important; } .cyan.lighten-5 { background-color: #e0f7fa !important; } .cyan-text.text-lighten-5 { color: #e0f7fa !important; } .cyan-waves.waves-lighten-5 .waves-ripple { background-color: #e0f7fa !important; } .cyan.lighten-4 { background-color: #b2ebf2 !important; } .cyan-text.text-lighten-4 { color: #b2ebf2 !important; } .cyan-waves.waves-lighten-4 .waves-ripple { background-color: #b2ebf2 !important; } .cyan.lighten-3 { background-color: #80deea !important; } .cyan-text.text-lighten-3 { color: #80deea !important; } .cyan-waves.waves-lighten-3 .waves-ripple { background-color: #80deea !important; } .cyan.lighten-2 { background-color: #4dd0e1 !important; } .cyan-text.text-lighten-2 { color: #4dd0e1 !important; } .cyan-waves.waves-lighten-2 .waves-ripple { background-color: #4dd0e1 !important; } .cyan.lighten-1 { background-color: #26c6da !important; } .cyan-text.text-lighten-1 { color: #26c6da !important; } .cyan-waves.waves-lighten-1 .waves-ripple { background-color: #26c6da !important; } .cyan.darken-1 { background-color: #00acc1 !important; } .cyan-text.text-darken-1 { color: #00acc1 !important; } .cyan-waves.waves-darken-1 .waves-ripple { background-color: #00acc1 !important; } .cyan.darken-2 { background-color: #0097a7 !important; } .cyan-text.text-darken-2 { color: #0097a7 !important; } .cyan-waves.waves-darken-2 .waves-ripple { background-color: #0097a7 !important; } .cyan.darken-3 { background-color: #00838f !important; } .cyan-text.text-darken-3 { color: #00838f !important; } .cyan-waves.waves-darken-3 .waves-ripple { background-color: #00838f !important; } .cyan.darken-4 { background-color: #006064 !important; } .cyan-text.text-darken-4 { color: #006064 !important; } .cyan-waves.waves-darken-4 .waves-ripple { background-color: #006064 !important; } .cyan.accent-1 { background-color: #84ffff !important; } .cyan-text.text-accent-1 { color: #84ffff !important; } .cyan-waves.waves-accent-1 .waves-ripple { background-color: #84ffff !important; } .cyan.accent-2 { background-color: #18ffff !important; } .cyan-text.text-accent-2 { color: #18ffff !important; } .cyan-waves.waves-accent-2 .waves-ripple { background-color: #18ffff !important; } .cyan.accent-3 { background-color: #00e5ff !important; } .cyan-text.text-accent-3 { color: #00e5ff !important; } .cyan-waves.waves-accent-3 .waves-ripple { background-color: #00e5ff !important; } .cyan.accent-4 { background-color: #00b8d4 !important; } .cyan-text.text-accent-4 { color: #00b8d4 !important; } .cyan-waves.waves-accent-4 .waves-ripple { background-color: #00b8d4 !important; } .teal { background-color: #009688 !important; } .teal-text { color: #009688 !important; } .teal-waves .waves-ripple { background-color: #009688 !important; } .teal.lighten-5 { background-color: #e0f2f1 !important; } .teal-text.text-lighten-5 { color: #e0f2f1 !important; } .teal-waves.waves-lighten-5 .waves-ripple { background-color: #e0f2f1 !important; } .teal.lighten-4 { background-color: #b2dfdb !important; } .teal-text.text-lighten-4 { color: #b2dfdb !important; } .teal-waves.waves-lighten-4 .waves-ripple { background-color: #b2dfdb !important; } .teal.lighten-3 { background-color: #80cbc4 !important; } .teal-text.text-lighten-3 { color: #80cbc4 !important; } .teal-waves.waves-lighten-3 .waves-ripple { background-color: #80cbc4 !important; } .teal.lighten-2 { background-color: #4db6ac !important; } .teal-text.text-lighten-2 { color: #4db6ac !important; } .teal-waves.waves-lighten-2 .waves-ripple { background-color: #4db6ac !important; } .teal.lighten-1 { background-color: #26a69a !important; } .teal-text.text-lighten-1 { color: #26a69a !important; } .teal-waves.waves-lighten-1 .waves-ripple { background-color: #26a69a !important; } .teal.darken-1 { background-color: #00897b !important; } .teal-text.text-darken-1 { color: #00897b !important; } .teal-waves.waves-darken-1 .waves-ripple { background-color: #00897b !important; } .teal.darken-2 { background-color: #00796b !important; } .teal-text.text-darken-2 { color: #00796b !important; } .teal-waves.waves-darken-2 .waves-ripple { background-color: #00796b !important; } .teal.darken-3 { background-color: #00695c !important; } .teal-text.text-darken-3 { color: #00695c !important; } .teal-waves.waves-darken-3 .waves-ripple { background-color: #00695c !important; } .teal.darken-4 { background-color: #004d40 !important; } .teal-text.text-darken-4 { color: #004d40 !important; } .teal-waves.waves-darken-4 .waves-ripple { background-color: #004d40 !important; } .teal.accent-1 { background-color: #a7ffeb !important; } .teal-text.text-accent-1 { color: #a7ffeb !important; } .teal-waves.waves-accent-1 .waves-ripple { background-color: #a7ffeb !important; } .teal.accent-2 { background-color: #64ffda !important; } .teal-text.text-accent-2 { color: #64ffda !important; } .teal-waves.waves-accent-2 .waves-ripple { background-color: #64ffda !important; } .teal.accent-3 { background-color: #1de9b6 !important; } .teal-text.text-accent-3 { color: #1de9b6 !important; } .teal-waves.waves-accent-3 .waves-ripple { background-color: #1de9b6 !important; } .teal.accent-4 { background-color: #00bfa5 !important; } .teal-text.text-accent-4 { color: #00bfa5 !important; } .teal-waves.waves-accent-4 .waves-ripple { background-color: #00bfa5 !important; } .green { background-color: #4caf50 !important; } .green-text { color: #4caf50 !important; } .green-waves .waves-ripple { background-color: #4caf50 !important; } .green.lighten-5 { background-color: #e8f5e9 !important; } .green-text.text-lighten-5 { color: #e8f5e9 !important; } .green-waves.waves-lighten-5 .waves-ripple { background-color: #e8f5e9 !important; } .green.lighten-4 { background-color: #c8e6c9 !important; } .green-text.text-lighten-4 { color: #c8e6c9 !important; } .green-waves.waves-lighten-4 .waves-ripple { background-color: #c8e6c9 !important; } .green.lighten-3 { background-color: #a5d6a7 !important; } .green-text.text-lighten-3 { color: #a5d6a7 !important; } .green-waves.waves-lighten-3 .waves-ripple { background-color: #a5d6a7 !important; } .green.lighten-2 { background-color: #81c784 !important; } .green-text.text-lighten-2 { color: #81c784 !important; } .green-waves.waves-lighten-2 .waves-ripple { background-color: #81c784 !important; } .green.lighten-1 { background-color: #66bb6a !important; } .green-text.text-lighten-1 { color: #66bb6a !important; } .green-waves.waves-lighten-1 .waves-ripple { background-color: #66bb6a !important; } .green.darken-1 { background-color: #43a047 !important; } .green-text.text-darken-1 { color: #43a047 !important; } .green-waves.waves-darken-1 .waves-ripple { background-color: #43a047 !important; } .green.darken-2 { background-color: #388e3c !important; } .green-text.text-darken-2 { color: #388e3c !important; } .green-waves.waves-darken-2 .waves-ripple { background-color: #388e3c !important; } .green.darken-3 { background-color: #2e7d32 !important; } .green-text.text-darken-3 { color: #2e7d32 !important; } .green-waves.waves-darken-3 .waves-ripple { background-color: #2e7d32 !important; } .green.darken-4 { background-color: #1b5e20 !important; } .green-text.text-darken-4 { color: #1b5e20 !important; } .green-waves.waves-darken-4 .waves-ripple { background-color: #1b5e20 !important; } .green.accent-1 { background-color: #b9f6ca !important; } .green-text.text-accent-1 { color: #b9f6ca !important; } .green-waves.waves-accent-1 .waves-ripple { background-color: #b9f6ca !important; } .green.accent-2 { background-color: #69f0ae !important; } .green-text.text-accent-2 { color: #69f0ae !important; } .green-waves.waves-accent-2 .waves-ripple { background-color: #69f0ae !important; } .green.accent-3 { background-color: #00e676 !important; } .green-text.text-accent-3 { color: #00e676 !important; } .green-waves.waves-accent-3 .waves-ripple { background-color: #00e676 !important; } .green.accent-4 { background-color: #00c853 !important; } .green-text.text-accent-4 { color: #00c853 !important; } .green-waves.waves-accent-4 .waves-ripple { background-color: #00c853 !important; } .light-green { background-color: #8bc34a !important; } .light-green-text { color: #8bc34a !important; } .light-green-waves .waves-ripple { background-color: #8bc34a !important; } .light-green.lighten-5 { background-color: #f1f8e9 !important; } .light-green-text.text-lighten-5 { color: #f1f8e9 !important; } .light-green-waves.waves-lighten-5 .waves-ripple { background-color: #f1f8e9 !important; } .light-green.lighten-4 { background-color: #dcedc8 !important; } .light-green-text.text-lighten-4 { color: #dcedc8 !important; } .light-green-waves.waves-lighten-4 .waves-ripple { background-color: #dcedc8 !important; } .light-green.lighten-3 { background-color: #c5e1a5 !important; } .light-green-text.text-lighten-3 { color: #c5e1a5 !important; } .light-green-waves.waves-lighten-3 .waves-ripple { background-color: #c5e1a5 !important; } .light-green.lighten-2 { background-color: #aed581 !important; } .light-green-text.text-lighten-2 { color: #aed581 !important; } .light-green-waves.waves-lighten-2 .waves-ripple { background-color: #aed581 !important; } .light-green.lighten-1 { background-color: #9ccc65 !important; } .light-green-text.text-lighten-1 { color: #9ccc65 !important; } .light-green-waves.waves-lighten-1 .waves-ripple { background-color: #9ccc65 !important; } .light-green.darken-1 { background-color: #7cb342 !important; } .light-green-text.text-darken-1 { color: #7cb342 !important; } .light-green-waves.waves-darken-1 .waves-ripple { background-color: #7cb342 !important; } .light-green.darken-2 { background-color: #689f38 !important; } .light-green-text.text-darken-2 { color: #689f38 !important; } .light-green-waves.waves-darken-2 .waves-ripple { background-color: #689f38 !important; } .light-green.darken-3 { background-color: #558b2f !important; } .light-green-text.text-darken-3 { color: #558b2f !important; } .light-green-waves.waves-darken-3 .waves-ripple { background-color: #558b2f !important; } .light-green.darken-4 { background-color: #33691e !important; } .light-green-text.text-darken-4 { color: #33691e !important; } .light-green-waves.waves-darken-4 .waves-ripple { background-color: #33691e !important; } .light-green.accent-1 { background-color: #ccff90 !important; } .light-green-text.text-accent-1 { color: #ccff90 !important; } .light-green-waves.waves-accent-1 .waves-ripple { background-color: #ccff90 !important; } .light-green.accent-2 { background-color: #b2ff59 !important; } .light-green-text.text-accent-2 { color: #b2ff59 !important; } .light-green-waves.waves-accent-2 .waves-ripple { background-color: #b2ff59 !important; } .light-green.accent-3 { background-color: #76ff03 !important; } .light-green-text.text-accent-3 { color: #76ff03 !important; } .light-green-waves.waves-accent-3 .waves-ripple { background-color: #76ff03 !important; } .light-green.accent-4 { background-color: #64dd17 !important; } .light-green-text.text-accent-4 { color: #64dd17 !important; } .light-green-waves.waves-accent-4 .waves-ripple { background-color: #64dd17 !important; } .lime { background-color: #cddc39 !important; } .lime-text { color: #cddc39 !important; } .lime-waves .waves-ripple { background-color: #cddc39 !important; } .lime.lighten-5 { background-color: #f9fbe7 !important; } .lime-text.text-lighten-5 { color: #f9fbe7 !important; } .lime-waves.waves-lighten-5 .waves-ripple { background-color: #f9fbe7 !important; } .lime.lighten-4 { background-color: #f0f4c3 !important; } .lime-text.text-lighten-4 { color: #f0f4c3 !important; } .lime-waves.waves-lighten-4 .waves-ripple { background-color: #f0f4c3 !important; } .lime.lighten-3 { background-color: #e6ee9c !important; } .lime-text.text-lighten-3 { color: #e6ee9c !important; } .lime-waves.waves-lighten-3 .waves-ripple { background-color: #e6ee9c !important; } .lime.lighten-2 { background-color: #dce775 !important; } .lime-text.text-lighten-2 { color: #dce775 !important; } .lime-waves.waves-lighten-2 .waves-ripple { background-color: #dce775 !important; } .lime.lighten-1 { background-color: #d4e157 !important; } .lime-text.text-lighten-1 { color: #d4e157 !important; } .lime-waves.waves-lighten-1 .waves-ripple { background-color: #d4e157 !important; } .lime.darken-1 { background-color: #c0ca33 !important; } .lime-text.text-darken-1 { color: #c0ca33 !important; } .lime-waves.waves-darken-1 .waves-ripple { background-color: #c0ca33 !important; } .lime.darken-2 { background-color: #afb42b !important; } .lime-text.text-darken-2 { color: #afb42b !important; } .lime-waves.waves-darken-2 .waves-ripple { background-color: #afb42b !important; } .lime.darken-3 { background-color: #9e9d24 !important; } .lime-text.text-darken-3 { color: #9e9d24 !important; } .lime-waves.waves-darken-3 .waves-ripple { background-color: #9e9d24 !important; } .lime.darken-4 { background-color: #827717 !important; } .lime-text.text-darken-4 { color: #827717 !important; } .lime-waves.waves-darken-4 .waves-ripple { background-color: #827717 !important; } .lime.accent-1 { background-color: #f4ff81 !important; } .lime-text.text-accent-1 { color: #f4ff81 !important; } .lime-waves.waves-accent-1 .waves-ripple { background-color: #f4ff81 !important; } .lime.accent-2 { background-color: #eeff41 !important; } .lime-text.text-accent-2 { color: #eeff41 !important; } .lime-waves.waves-accent-2 .waves-ripple { background-color: #eeff41 !important; } .lime.accent-3 { background-color: #c6ff00 !important; } .lime-text.text-accent-3 { color: #c6ff00 !important; } .lime-waves.waves-accent-3 .waves-ripple { background-color: #c6ff00 !important; } .lime.accent-4 { background-color: #aeea00 !important; } .lime-text.text-accent-4 { color: #aeea00 !important; } .lime-waves.waves-accent-4 .waves-ripple { background-color: #aeea00 !important; } .yellow { background-color: #ffeb3b !important; } .yellow-text { color: #ffeb3b !important; } .yellow-waves .waves-ripple { background-color: #ffeb3b !important; } .yellow.lighten-5 { background-color: #fffde7 !important; } .yellow-text.text-lighten-5 { color: #fffde7 !important; } .yellow-waves.waves-lighten-5 .waves-ripple { background-color: #fffde7 !important; } .yellow.lighten-4 { background-color: #fff9c4 !important; } .yellow-text.text-lighten-4 { color: #fff9c4 !important; } .yellow-waves.waves-lighten-4 .waves-ripple { background-color: #fff9c4 !important; } .yellow.lighten-3 { background-color: #fff59d !important; } .yellow-text.text-lighten-3 { color: #fff59d !important; } .yellow-waves.waves-lighten-3 .waves-ripple { background-color: #fff59d !important; } .yellow.lighten-2 { background-color: #fff176 !important; } .yellow-text.text-lighten-2 { color: #fff176 !important; } .yellow-waves.waves-lighten-2 .waves-ripple { background-color: #fff176 !important; } .yellow.lighten-1 { background-color: #ffee58 !important; } .yellow-text.text-lighten-1 { color: #ffee58 !important; } .yellow-waves.waves-lighten-1 .waves-ripple { background-color: #ffee58 !important; } .yellow.darken-1 { background-color: #fdd835 !important; } .yellow-text.text-darken-1 { color: #fdd835 !important; } .yellow-waves.waves-darken-1 .waves-ripple { background-color: #fdd835 !important; } .yellow.darken-2 { background-color: #fbc02d !important; } .yellow-text.text-darken-2 { color: #fbc02d !important; } .yellow-waves.waves-darken-2 .waves-ripple { background-color: #fbc02d !important; } .yellow.darken-3 { background-color: #f9a825 !important; } .yellow-text.text-darken-3 { color: #f9a825 !important; } .yellow-waves.waves-darken-3 .waves-ripple { background-color: #f9a825 !important; } .yellow.darken-4 { background-color: #f57f17 !important; } .yellow-text.text-darken-4 { color: #f57f17 !important; } .yellow-waves.waves-darken-4 .waves-ripple { background-color: #f57f17 !important; } .yellow.accent-1 { background-color: #ffff8d !important; } .yellow-text.text-accent-1 { color: #ffff8d !important; } .yellow-waves.waves-accent-1 .waves-ripple { background-color: #ffff8d !important; } .yellow.accent-2 { background-color: #ffff00 !important; } .yellow-text.text-accent-2 { color: #ffff00 !important; } .yellow-waves.waves-accent-2 .waves-ripple { background-color: #ffff00 !important; } .yellow.accent-3 { background-color: #ffea00 !important; } .yellow-text.text-accent-3 { color: #ffea00 !important; } .yellow-waves.waves-accent-3 .waves-ripple { background-color: #ffea00 !important; } .yellow.accent-4 { background-color: #ffd600 !important; } .yellow-text.text-accent-4 { color: #ffd600 !important; } .yellow-waves.waves-accent-4 .waves-ripple { background-color: #ffd600 !important; } .amber { background-color: #ffc107 !important; } .amber-text { color: #ffc107 !important; } .amber-waves .waves-ripple { background-color: #ffc107 !important; } .amber.lighten-5 { background-color: #fff8e1 !important; } .amber-text.text-lighten-5 { color: #fff8e1 !important; } .amber-waves.waves-lighten-5 .waves-ripple { background-color: #fff8e1 !important; } .amber.lighten-4 { background-color: #ffecb3 !important; } .amber-text.text-lighten-4 { color: #ffecb3 !important; } .amber-waves.waves-lighten-4 .waves-ripple { background-color: #ffecb3 !important; } .amber.lighten-3 { background-color: #ffe082 !important; } .amber-text.text-lighten-3 { color: #ffe082 !important; } .amber-waves.waves-lighten-3 .waves-ripple { background-color: #ffe082 !important; } .amber.lighten-2 { background-color: #ffd54f !important; } .amber-text.text-lighten-2 { color: #ffd54f !important; } .amber-waves.waves-lighten-2 .waves-ripple { background-color: #ffd54f !important; } .amber.lighten-1 { background-color: #ffca28 !important; } .amber-text.text-lighten-1 { color: #ffca28 !important; } .amber-waves.waves-lighten-1 .waves-ripple { background-color: #ffca28 !important; } .amber.darken-1 { background-color: #ffb300 !important; } .amber-text.text-darken-1 { color: #ffb300 !important; } .amber-waves.waves-darken-1 .waves-ripple { background-color: #ffb300 !important; } .amber.darken-2 { background-color: #ffa000 !important; } .amber-text.text-darken-2 { color: #ffa000 !important; } .amber-waves.waves-darken-2 .waves-ripple { background-color: #ffa000 !important; } .amber.darken-3 { background-color: #ff8f00 !important; } .amber-text.text-darken-3 { color: #ff8f00 !important; } .amber-waves.waves-darken-3 .waves-ripple { background-color: #ff8f00 !important; } .amber.darken-4 { background-color: #ff6f00 !important; } .amber-text.text-darken-4 { color: #ff6f00 !important; } .amber-waves.waves-darken-4 .waves-ripple { background-color: #ff6f00 !important; } .amber.accent-1 { background-color: #ffe57f !important; } .amber-text.text-accent-1 { color: #ffe57f !important; } .amber-waves.waves-accent-1 .waves-ripple { background-color: #ffe57f !important; } .amber.accent-2 { background-color: #ffd740 !important; } .amber-text.text-accent-2 { color: #ffd740 !important; } .amber-waves.waves-accent-2 .waves-ripple { background-color: #ffd740 !important; } .amber.accent-3 { background-color: #ffc400 !important; } .amber-text.text-accent-3 { color: #ffc400 !important; } .amber-waves.waves-accent-3 .waves-ripple { background-color: #ffc400 !important; } .amber.accent-4 { background-color: #ffab00 !important; } .amber-text.text-accent-4 { color: #ffab00 !important; } .amber-waves.waves-accent-4 .waves-ripple { background-color: #ffab00 !important; } .orange { background-color: #ff9800 !important; } .orange-text { color: #ff9800 !important; } .orange-waves .waves-ripple { background-color: #ff9800 !important; } .orange.lighten-5 { background-color: #fff3e0 !important; } .orange-text.text-lighten-5 { color: #fff3e0 !important; } .orange-waves.waves-lighten-5 .waves-ripple { background-color: #fff3e0 !important; } .orange.lighten-4 { background-color: #ffe0b2 !important; } .orange-text.text-lighten-4 { color: #ffe0b2 !important; } .orange-waves.waves-lighten-4 .waves-ripple { background-color: #ffe0b2 !important; } .orange.lighten-3 { background-color: #ffcc80 !important; } .orange-text.text-lighten-3 { color: #ffcc80 !important; } .orange-waves.waves-lighten-3 .waves-ripple { background-color: #ffcc80 !important; } .orange.lighten-2 { background-color: #ffb74d !important; } .orange-text.text-lighten-2 { color: #ffb74d !important; } .orange-waves.waves-lighten-2 .waves-ripple { background-color: #ffb74d !important; } .orange.lighten-1 { background-color: #ffa726 !important; } .orange-text.text-lighten-1 { color: #ffa726 !important; } .orange-waves.waves-lighten-1 .waves-ripple { background-color: #ffa726 !important; } .orange.darken-1 { background-color: #fb8c00 !important; } .orange-text.text-darken-1 { color: #fb8c00 !important; } .orange-waves.waves-darken-1 .waves-ripple { background-color: #fb8c00 !important; } .orange.darken-2 { background-color: #f57c00 !important; } .orange-text.text-darken-2 { color: #f57c00 !important; } .orange-waves.waves-darken-2 .waves-ripple { background-color: #f57c00 !important; } .orange.darken-3 { background-color: #ef6c00 !important; } .orange-text.text-darken-3 { color: #ef6c00 !important; } .orange-waves.waves-darken-3 .waves-ripple { background-color: #ef6c00 !important; } .orange.darken-4 { background-color: #e65100 !important; } .orange-text.text-darken-4 { color: #e65100 !important; } .orange-waves.waves-darken-4 .waves-ripple { background-color: #e65100 !important; } .orange.accent-1 { background-color: #ffd180 !important; } .orange-text.text-accent-1 { color: #ffd180 !important; } .orange-waves.waves-accent-1 .waves-ripple { background-color: #ffd180 !important; } .orange.accent-2 { background-color: #ffab40 !important; } .orange-text.text-accent-2 { color: #ffab40 !important; } .orange-waves.waves-accent-2 .waves-ripple { background-color: #ffab40 !important; } .orange.accent-3 { background-color: #ff9100 !important; } .orange-text.text-accent-3 { color: #ff9100 !important; } .orange-waves.waves-accent-3 .waves-ripple { background-color: #ff9100 !important; } .orange.accent-4 { background-color: #ff6d00 !important; } .orange-text.text-accent-4 { color: #ff6d00 !important; } .orange-waves.waves-accent-4 .waves-ripple { background-color: #ff6d00 !important; } .deep-orange { background-color: #ff5722 !important; } .deep-orange-text { color: #ff5722 !important; } .deep-orange-waves .waves-ripple { background-color: #ff5722 !important; } .deep-orange.lighten-5 { background-color: #fbe9e7 !important; } .deep-orange-text.text-lighten-5 { color: #fbe9e7 !important; } .deep-orange-waves.waves-lighten-5 .waves-ripple { background-color: #fbe9e7 !important; } .deep-orange.lighten-4 { background-color: #ffccbc !important; } .deep-orange-text.text-lighten-4 { color: #ffccbc !important; } .deep-orange-waves.waves-lighten-4 .waves-ripple { background-color: #ffccbc !important; } .deep-orange.lighten-3 { background-color: #ffab91 !important; } .deep-orange-text.text-lighten-3 { color: #ffab91 !important; } .deep-orange-waves.waves-lighten-3 .waves-ripple { background-color: #ffab91 !important; } .deep-orange.lighten-2 { background-color: #ff8a65 !important; } .deep-orange-text.text-lighten-2 { color: #ff8a65 !important; } .deep-orange-waves.waves-lighten-2 .waves-ripple { background-color: #ff8a65 !important; } .deep-orange.lighten-1 { background-color: #ff7043 !important; } .deep-orange-text.text-lighten-1 { color: #ff7043 !important; } .deep-orange-waves.waves-lighten-1 .waves-ripple { background-color: #ff7043 !important; } .deep-orange.darken-1 { background-color: #f4511e !important; } .deep-orange-text.text-darken-1 { color: #f4511e !important; } .deep-orange-waves.waves-darken-1 .waves-ripple { background-color: #f4511e !important; } .deep-orange.darken-2 { background-color: #e64a19 !important; } .deep-orange-text.text-darken-2 { color: #e64a19 !important; } .deep-orange-waves.waves-darken-2 .waves-ripple { background-color: #e64a19 !important; } .deep-orange.darken-3 { background-color: #d84315 !important; } .deep-orange-text.text-darken-3 { color: #d84315 !important; } .deep-orange-waves.waves-darken-3 .waves-ripple { background-color: #d84315 !important; } .deep-orange.darken-4 { background-color: #bf360c !important; } .deep-orange-text.text-darken-4 { color: #bf360c !important; } .deep-orange-waves.waves-darken-4 .waves-ripple { background-color: #bf360c !important; } .deep-orange.accent-1 { background-color: #ff9e80 !important; } .deep-orange-text.text-accent-1 { color: #ff9e80 !important; } .deep-orange-waves.waves-accent-1 .waves-ripple { background-color: #ff9e80 !important; } .deep-orange.accent-2 { background-color: #ff6e40 !important; } .deep-orange-text.text-accent-2 { color: #ff6e40 !important; } .deep-orange-waves.waves-accent-2 .waves-ripple { background-color: #ff6e40 !important; } .deep-orange.accent-3 { background-color: #ff3d00 !important; } .deep-orange-text.text-accent-3 { color: #ff3d00 !important; } .deep-orange-waves.waves-accent-3 .waves-ripple { background-color: #ff3d00 !important; } .deep-orange.accent-4 { background-color: #dd2c00 !important; } .deep-orange-text.text-accent-4 { color: #dd2c00 !important; } .deep-orange-waves.waves-accent-4 .waves-ripple { background-color: #dd2c00 !important; } .brown { background-color: #795548 !important; } .brown-text { color: #795548 !important; } .brown-waves .waves-ripple { background-color: #795548 !important; } .brown.lighten-5 { background-color: #efebe9 !important; } .brown-text.text-lighten-5 { color: #efebe9 !important; } .brown-waves.waves-lighten-5 .waves-ripple { background-color: #efebe9 !important; } .brown.lighten-4 { background-color: #d7ccc8 !important; } .brown-text.text-lighten-4 { color: #d7ccc8 !important; } .brown-waves.waves-lighten-4 .waves-ripple { background-color: #d7ccc8 !important; } .brown.lighten-3 { background-color: #bcaaa4 !important; } .brown-text.text-lighten-3 { color: #bcaaa4 !important; } .brown-waves.waves-lighten-3 .waves-ripple { background-color: #bcaaa4 !important; } .brown.lighten-2 { background-color: #a1887f !important; } .brown-text.text-lighten-2 { color: #a1887f !important; } .brown-waves.waves-lighten-2 .waves-ripple { background-color: #a1887f !important; } .brown.lighten-1 { background-color: #8d6e63 !important; } .brown-text.text-lighten-1 { color: #8d6e63 !important; } .brown-waves.waves-lighten-1 .waves-ripple { background-color: #8d6e63 !important; } .brown.darken-1 { background-color: #6d4c41 !important; } .brown-text.text-darken-1 { color: #6d4c41 !important; } .brown-waves.waves-darken-1 .waves-ripple { background-color: #6d4c41 !important; } .brown.darken-2 { background-color: #5d4037 !important; } .brown-text.text-darken-2 { color: #5d4037 !important; } .brown-waves.waves-darken-2 .waves-ripple { background-color: #5d4037 !important; } .brown.darken-3 { background-color: #4e342e !important; } .brown-text.text-darken-3 { color: #4e342e !important; } .brown-waves.waves-darken-3 .waves-ripple { background-color: #4e342e !important; } .brown.darken-4 { background-color: #3e2723 !important; } .brown-text.text-darken-4 { color: #3e2723 !important; } .brown-waves.waves-darken-4 .waves-ripple { background-color: #3e2723 !important; } .blue-grey { background-color: #607d8b !important; } .blue-grey-text { color: #607d8b !important; } .blue-grey-waves .waves-ripple { background-color: #607d8b !important; } .blue-grey.lighten-5 { background-color: #eceff1 !important; } .blue-grey-text.text-lighten-5 { color: #eceff1 !important; } .blue-grey-waves.waves-lighten-5 .waves-ripple { background-color: #eceff1 !important; } .blue-grey.lighten-4 { background-color: #cfd8dc !important; } .blue-grey-text.text-lighten-4 { color: #cfd8dc !important; } .blue-grey-waves.waves-lighten-4 .waves-ripple { background-color: #cfd8dc !important; } .blue-grey.lighten-3 { background-color: #b0bec5 !important; } .blue-grey-text.text-lighten-3 { color: #b0bec5 !important; } .blue-grey-waves.waves-lighten-3 .waves-ripple { background-color: #b0bec5 !important; } .blue-grey.lighten-2 { background-color: #90a4ae !important; } .blue-grey-text.text-lighten-2 { color: #90a4ae !important; } .blue-grey-waves.waves-lighten-2 .waves-ripple { background-color: #90a4ae !important; } .blue-grey.lighten-1 { background-color: #78909c !important; } .blue-grey-text.text-lighten-1 { color: #78909c !important; } .blue-grey-waves.waves-lighten-1 .waves-ripple { background-color: #78909c !important; } .blue-grey.darken-1 { background-color: #546e7a !important; } .blue-grey-text.text-darken-1 { color: #546e7a !important; } .blue-grey-waves.waves-darken-1 .waves-ripple { background-color: #546e7a !important; } .blue-grey.darken-2 { background-color: #455a64 !important; } .blue-grey-text.text-darken-2 { color: #455a64 !important; } .blue-grey-waves.waves-darken-2 .waves-ripple { background-color: #455a64 !important; } .blue-grey.darken-3 { background-color: #37474f !important; } .blue-grey-text.text-darken-3 { color: #37474f !important; } .blue-grey-waves.waves-darken-3 .waves-ripple { background-color: #37474f !important; } .blue-grey.darken-4 { background-color: #263238 !important; } .blue-grey-text.text-darken-4 { color: #263238 !important; } .blue-grey-waves.waves-darken-4 .waves-ripple { background-color: #263238 !important; } .grey { background-color: #9e9e9e !important; } .grey-text { color: #9e9e9e !important; } .grey-waves .waves-ripple { background-color: #9e9e9e !important; } .grey.lighten-5 { background-color: #fafafa !important; } .grey-text.text-lighten-5 { color: #fafafa !important; } .grey-waves.waves-lighten-5 .waves-ripple { background-color: #fafafa !important; } .grey.lighten-4 { background-color: #f5f5f5 !important; } .grey-text.text-lighten-4 { color: #f5f5f5 !important; } .grey-waves.waves-lighten-4 .waves-ripple { background-color: #f5f5f5 !important; } .grey.lighten-3 { background-color: #eeeeee !important; } .grey-text.text-lighten-3 { color: #eeeeee !important; } .grey-waves.waves-lighten-3 .waves-ripple { background-color: #eeeeee !important; } .grey.lighten-2 { background-color: #e0e0e0 !important; } .grey-text.text-lighten-2 { color: #e0e0e0 !important; } .grey-waves.waves-lighten-2 .waves-ripple { background-color: #e0e0e0 !important; } .grey.lighten-1 { background-color: #bdbdbd !important; } .grey-text.text-lighten-1 { color: #bdbdbd !important; } .grey-waves.waves-lighten-1 .waves-ripple { background-color: #bdbdbd !important; } .grey.darken-1 { background-color: #757575 !important; } .grey-text.text-darken-1 { color: #757575 !important; } .grey-waves.waves-darken-1 .waves-ripple { background-color: #757575 !important; } .grey.darken-2 { background-color: #616161 !important; } .grey-text.text-darken-2 { color: #616161 !important; } .grey-waves.waves-darken-2 .waves-ripple { background-color: #616161 !important; } .grey.darken-3 { background-color: #424242 !important; } .grey-text.text-darken-3 { color: #424242 !important; } .grey-waves.waves-darken-3 .waves-ripple { background-color: #424242 !important; } .grey.darken-4 { background-color: #212121 !important; } .grey-text.text-darken-4 { color: #212121 !important; } .grey-waves.waves-darken-4 .waves-ripple { background-color: #212121 !important; } .black { background-color: #000000 !important; } .black-text { color: #000000 !important; } .white { background-color: #ffffff !important; } .white-text { color: #ffffff !important; } .transparent { background-color: transparent !important; } .transparent-text { color: transparent !important; } /** * prism.js Twilight theme * Based (more or less) on the Twilight theme originally of Textmate fame. * @author Remy Bach */ code[class*=language-], pre[class*=language-] { color: white; background: none; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; text-align: left; text-shadow: 0 -0.1em 0.2em black; white-space: pre; word-spacing: normal; word-break: normal; word-wrap: normal; line-height: 1.5; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; -webkit-hyphens: none; -moz-hyphens: none; -ms-hyphens: none; hyphens: none; } pre[class*=language-], :not(pre) > code[class*=language-] { background: hsl(0, 0%, 8%); /* #141414 */ } /* Code blocks */ pre[class*=language-] { border-radius: 0.5em; border: 0.3em solid hsl(0, 0%, 33%); /* #282A2B */ box-shadow: 1px 1px 0.5em black inset; margin: 0.5em 0; overflow: auto; padding: 1em; } pre[class*=language-]::-moz-selection { /* Firefox */ background: hsl(200, 4%, 16%); /* #282A2B */ } pre[class*=language-]::selection { /* Safari */ background: hsl(200, 4%, 16%); /* #282A2B */ } /* Text Selection colour */ pre[class*=language-]::-moz-selection, pre[class*=language-] ::-moz-selection, code[class*=language-]::-moz-selection, code[class*=language-] ::-moz-selection { text-shadow: none; background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */ } pre[class*=language-]::selection, pre[class*=language-] ::selection, code[class*=language-]::selection, code[class*=language-] ::selection { text-shadow: none; background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */ } /* Inline code */ :not(pre) > code[class*=language-] { border-radius: 0.3em; border: 0.13em solid hsl(0, 0%, 33%); /* #545454 */ box-shadow: 1px 1px 0.3em -0.1em black inset; padding: 0.15em 0.2em 0.05em; white-space: normal; } .token.comment, .token.prolog, .token.doctype, .token.cdata { color: hsl(0, 0%, 47%); /* #777777 */ } .token.punctuation { opacity: 0.7; } .namespace { opacity: 0.7; } .token.tag, .token.boolean, .token.number, .token.deleted { color: hsl(14, 58%, 55%); /* #CF6A4C */ } .token.keyword, .token.property, .token.selector, .token.constant, .token.symbol, .token.builtin { color: hsl(53, 89%, 79%); /* #F9EE98 */ } .token.attr-name, .token.attr-value, .token.string, .token.char, .token.operator, .token.entity, .token.url, .language-css .token.string, .style .token.string, .token.variable, .token.inserted { color: hsl(76, 21%, 52%); /* #8F9D6A */ } .token.atrule { color: hsl(218, 22%, 55%); /* #7587A6 */ } .token.regex, .token.important { color: hsl(42, 75%, 65%); /* #E9C062 */ } .token.important, .token.bold { font-weight: bold; } .token.italic { font-style: italic; } .token.entity { cursor: help; } pre[data-line] { padding: 1em 0 1em 3em; position: relative; } /* Markup */ .language-markup .token.tag, .language-markup .token.attr-name, .language-markup .token.punctuation { color: hsl(33, 33%, 52%); /* #AC885B */ } /* Make the tokens sit above the line highlight so the colours don't look faded. */ .token { position: relative; z-index: 1; } .line-highlight { background: hsla(0, 0%, 33%, 0.25); /* #545454 */ background: linear-gradient(to right, hsla(0, 0%, 33%, 0.1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */ border-bottom: 1px dashed hsl(0, 0%, 33%); /* #545454 */ border-top: 1px dashed hsl(0, 0%, 33%); /* #545454 */ left: 0; line-height: inherit; margin-top: 0.75em; /* Same as .prism’s padding-top */ padding: inherit 0; pointer-events: none; position: absolute; right: 0; white-space: pre; z-index: 0; } .line-highlight:before, .line-highlight[data-end]:after { background-color: hsl(215, 15%, 59%); /* #8794A6 */ border-radius: 999px; box-shadow: 0 1px white; color: hsl(24, 20%, 95%); /* #F5F2F0 */ content: attr(data-start); font: bold 65%/1.5 sans-serif; left: 0.6em; min-width: 1em; padding: 0 0.5em; position: absolute; text-align: center; text-shadow: none; top: 0.4em; vertical-align: 0.3em; } .line-highlight[data-end]:after { bottom: 0.4em; content: attr(data-end); top: auto; } .window { font-family: "Ubuntu", sans-serif; font-size: 17px; width: 600px; margin: 75px auto; background: #2c3e50; height: 350px; border-radius: 5px; display: relative; box-shadow: 10px 10px 10px #888888; } .afterclose { color: #34495e; display: none; text-align: center; } .open { color: #fff; padding: 15px; background: #2ecc71; border-radius: 4px; border: none; } .bash { width: 600px; background: #34495e; height: 310px; border-radius: 5px; top: 40px; display: absolute; color: #fff; text-align: left; } .bash .command::before { content: "user@machine \$ : "; color: #2ecc71; } .bash .resulta::before { content: ">>"; color: #2ecc71; } /* effected by controllers */ .windowmax { width: 100%; margin: auto; background: #2c3e50; height: 1000px; border-radius: 5px; display: relative; } .windowmin { width: 300px; height: 45px; background: #2c3e50; border-radius: 5px; bottom: 0; position: fixed; } .bashmax { display: absolute; width: 100%; background: #34495e; height: 960px; border-radius: 5px; bottom: 0; color: #fff; } /* !--end--! */ .buttons { width: 15px; height: 15px; border-radius: 50%; float: right; margin: 13px 4px; border: none; } .close { background: #e74c3c; } .maximize { background: #f1c40f; } .minimize { background: #2ecc71; } .result { display: none; } .controls { height: 40px; top: 0; } .title { color: #fff; font-weight: bold; padding: 10px; } .material-tooltip { padding: 10px 8px; font-size: 1rem; z-index: 2000; border-radius: 2px; color: #fff; min-height: 36px; line-height: 120%; opacity: 0; position: absolute; text-align: center; max-width: calc(100% - 4px); overflow: hidden; left: 0; top: 0; pointer-events: none; visibility: hidden; background-color: #323232; } .backdrop { position: absolute; opacity: 0; height: 7px; width: 14px; border-radius: 0 0 50% 50%; background-color: #323232; z-index: -1; transform-origin: 50% 0%; visibility: hidden; } .shadow-0 { box-shadow: none !important; } /* 2dp elevation modified*/ .shadow-1, nav, .dropdown-content, .card, .card-panel, .btn-floating, .btn, .btn-small, .btn-large, .collapsible { box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2); } .shadow-1-half, .btn-floating:hover, .btn:hover, .btn-small:hover, .btn-large:hover { box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2); } /* 6dp elevation modified*/ .shadow-2 { box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3); } /* 12dp elevation modified*/ .shadow-3 { box-shadow: 0 8px 17px 2px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2); } /* 16dp elevation */ .shadow-4 { box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -7px rgba(0, 0, 0, 0.2); } /* 24dp elevation */ .shadow-5, .modal { box-shadow: 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12), 0 11px 15px -7px rgba(0, 0, 0, 0.2); } /* 24dp elevation */ .invert-shadow-5 { box-shadow: 38px 0 0 0 rgba(0, 0, 0, 0.14), 46px 0 0 0 rgba(0, 0, 0, 0.12), 15px 0 0 0 rgba(0, 0, 0, 0.2); } .hoverable { transition: box-shadow 0.25s; } .hoverable:hover { box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } /*! * Waves v0.6.0 * http://fian.my.id/Waves * * Copyright 2014 Alfiana E. Sibuea and other contributors * Released under the MIT license * https://github.com/fians/Waves/blob/master/LICENSE */ .waves-effect { position: relative; cursor: pointer; display: inline-block; overflow: hidden; user-select: none; -webkit-tap-highlight-color: transparent; vertical-align: middle; z-index: 1; transition: 0.3s ease-out; } .waves-effect .waves-ripple { position: absolute; border-radius: 50%; width: 20px; height: 20px; margin-top: -10px; margin-left: -10px; opacity: 0; background: rgba(0, 0, 0, 0.2); transition: all 0.7s ease-out; transition-property: transform, opacity; transform: scale(0); pointer-events: none; } .waves-effect.waves-light .waves-ripple { background-color: rgba(255, 255, 255, 0.45); } .waves-effect.waves-red .waves-ripple { background-color: rgba(244, 67, 54, 0.7); } .waves-effect.waves-yellow .waves-ripple { background-color: rgba(255, 235, 59, 0.7); } .waves-effect.waves-orange .waves-ripple { background-color: rgba(255, 152, 0, 0.7); } .waves-effect.waves-purple .waves-ripple { background-color: rgba(156, 39, 176, 0.7); } .waves-effect.waves-green .waves-ripple { background-color: rgba(76, 175, 80, 0.7); } .waves-effect.waves-teal .waves-ripple { background-color: rgba(0, 150, 136, 0.7); } .waves-effect input[type=button], .waves-effect input[type=reset], .waves-effect input[type=submit] { border: 0; font-style: normal; font-size: inherit; text-transform: inherit; background: none; } .waves-effect img { position: relative; z-index: -1; } .waves-notransition { transition: none !important; } .waves-circle { transform: translateZ(0); -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); } .waves-input-wrapper { border-radius: 0.2em; vertical-align: bottom; } .waves-input-wrapper .waves-button-input { position: relative; top: 0; left: 0; z-index: 1; } .waves-circle { text-align: center; width: 2.5em; height: 2.5em; line-height: 2.5em; border-radius: 50%; -webkit-mask-image: none; } .waves-block { display: block; } /* Firefox Bug: link not triggered */ .waves-effect .waves-ripple { z-index: -1; } .modal { position: fixed; left: 0; right: 0; background-color: #fafafa; padding: 0; max-height: 70%; width: 55%; margin: auto; overflow-y: auto; border-radius: 2px; will-change: top, opacity; } .modal:focus { outline: none; } @media only screen and (max-width : 992px) { .modal { width: 80%; } } .modal h1, .modal h2, .modal h3, .modal h4 { margin-top: 0; } .modal .modal-content { padding: 24px; } .modal .modal-close { cursor: pointer; } .modal .modal-footer { border-radius: 0 0 2px 2px; background-color: #fafafa; padding: 4px 6px; height: 56px; width: 100%; text-align: right; } .modal .modal-footer .btn, .modal .modal-footer .btn-small, .modal .modal-footer .btn-large, .modal .modal-footer .btn-flat { margin: 6px 0; } .modal .modal-header { border-radius: 2px 2px 0 0; background-color: #fafafa; padding: 6px 4px; height: 56px; width: 100%; text-align: right; } .modal .modal-header .btn, .modal .modal-header .btn-small, .modal .modal-header .btn-large, .modal .modal-header .btn-flat { margin: 6px 0; } .modal-overlay { position: fixed; z-index: 999; top: -25%; left: 0; bottom: 0; right: 0; height: 125%; width: 100%; background: #000; display: none; will-change: opacity; } .modal.modal-fixed-footer { padding: 0; height: 70%; } .modal.modal-fixed-footer .modal-content { position: absolute; height: calc(100% - 56px); max-height: 100%; width: 100%; overflow-y: auto; } .modal.modal-fixed-footer .modal-footer { border-top: 1px solid rgba(0, 0, 0, 0.1); position: absolute; bottom: 0; } .modal.bottom-sheet { top: auto; bottom: -100%; margin: 0; width: 100%; max-height: 45%; border-radius: 0; will-change: bottom, opacity; } html, body, #root { margin: 0; height: 100%; } * { margin: 0; padding: 0; box-sizing: border-box; } .noselect { -webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Safari */ -khtml-user-select: none; /* Konqueror HTML */ -moz-user-select: none; /* Old versions of Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ user-select: none; /* Non-prefixed version, currently supported by Chrome, Edge, Opera and Firefox */ } ul:not(.browser-default) { padding-left: 0; list-style-type: none; } ul:not(.browser-default) > li { list-style-type: none; } a { color: #039be5; text-decoration: none; -webkit-tap-highlight-color: transparent; } .w-100 { width: 100%; } .right-align { text-align: right; } .center-align { text-align: center; } .v-center { display: flex; align-items: center; } .mb1 { margin-bottom: 10px; } .collection { margin: 0.3333333333rem 0 0.6666666667rem 0; border: 1px solid #e0e0e0; border-radius: 2px; overflow: hidden; position: relative; } .collection .collection-item { background-color: #fff; line-height: 1.5rem; padding: 10px 20px; margin: 0; border-bottom: 1px solid #e0e0e0; } .collection .collection-item.hover:hover { background-color: #ddd; } .collection .collection-item.avatar { min-height: 84px; padding-left: 72px; position: relative; } .collection .collection-item.avatar:not(.circle-clipper) > .circle, .collection .collection-item.avatar :not(.circle-clipper) > .circle { position: absolute; width: 42px; height: 42px; overflow: hidden; left: 15px; display: inline-block; vertical-align: middle; } .collection .collection-item.avatar i.circle { font-size: 18px; line-height: 42px; color: #fff; background-color: #999; text-align: center; } .collection .collection-item.avatar .title { font-size: 16px; } .collection .collection-item.avatar p { margin: 0; } .collection .collection-item.avatar .secondary-content { position: absolute; top: 16px; right: 16px; } .collection .collection-item:last-child { border-bottom: none; } .collection .collection-item.active { background-color: #26a69a; color: #eafaf9; } .collection .collection-item.active .secondary-content { color: #fff; } .collection a.collection-item { display: block; transition: 0.25s; color: #26a69a; } .collection a.collection-item:not(.active):hover { background-color: #ddd; } .collection.with-header .collection-header { background-color: #fff; border-bottom: 1px solid #e0e0e0; padding: 10px 20px; } .collection.with-header .collection-item { padding-left: 30px; } .collection.with-header .collection-item.avatar { padding-left: 72px; } .secondary-content { float: right; color: #26a69a; } .collapsible .collection { margin: 0; border: none; } .modal-overlay { position: fixed; top: 0; left: 0; right: 0; height: 100vh; width: 100vw; padding: 20px 0 20px 0; background-color: rgba(0, 0, 0, 0.5); z-index: 999; display: flex; justify-content: center; } .modal-overlay .innerform { max-width: 650px; } .modal-overlay .innerform form { overflow: hidden; } /********************* Media Query Classes **********************/ @media only screen and (max-width : 600px) { .hide-on-small-only, .hide-on-small-and-down { display: none !important; } } @media only screen and (max-width : 992px) { .hide-on-med-and-down { display: none !important; } } @media only screen and (min-width : 601px) { .hide-on-med-and-up { display: none !important; } } @media only screen and (min-width: 600px) and (max-width: 992px) { .hide-on-med-only { display: none !important; } } @media only screen and (min-width : 993px) { .hide-on-large-only { display: none !important; } } @media only screen and (min-width : 1201px) { .hide-on-extra-large-only { display: none !important; } } @media only screen and (min-width : 1201px) { .show-on-extra-large { display: block !important; } } @media only screen and (min-width : 993px) { .show-on-large { display: block !important; } } @media only screen and (min-width: 600px) and (max-width: 992px) { .show-on-medium { display: block !important; } } @media only screen and (max-width : 600px) { .show-on-small { display: block !important; } } @media only screen and (min-width : 601px) { .show-on-medium-and-up { display: block !important; } } @media only screen and (max-width : 992px) { .show-on-medium-and-down { display: block !important; } } @media only screen and (max-width : 600px) { .center-on-small-only { text-align: center; } } /******************* Utility Classes *******************/ .hide { display: none !important; } .left-align { text-align: left; } .right-align { text-align: right; } .center, .center-align { text-align: center; } .left { float: left !important; } .right { float: right !important; } .no-select { user-select: none; } .circle { border-radius: 50%; } .center-block { display: block; margin-left: auto; margin-right: auto; } .truncate { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .no-padding { padding: 0 !important; } span.badge { min-width: 3rem; padding: 0 6px; margin-left: 14px; text-align: center; font-size: 1rem; line-height: 22px; height: 22px; color: #757575; float: right; box-sizing: border-box; } span.badge.new { font-weight: 300; font-size: 0.8rem; color: #fff; background-color: #26a69a; border-radius: 2px; } span.badge.new:after { content: " new"; } span.badge[data-badge-caption]::after { content: " " attr(data-badge-caption); } nav ul a span.badge { display: inline-block; float: none; margin-left: 4px; line-height: 22px; height: 22px; -webkit-font-smoothing: auto; } .collection-item span.badge { margin-top: calc(0.75rem - 11px); } .collapsible span.badge { margin-left: auto; } .sidenav span.badge { margin-top: 11.5px; } table span.badge { display: inline-block; float: none; margin-left: auto; } .chip { display: inline-block; height: 32px; font-size: 13px; font-weight: 500; color: rgba(0, 0, 0, 0.6); line-height: 32px; padding: 0 12px; border-radius: 16px; background-color: #e4e4e4; margin-bottom: 5px; margin-right: 5px; } .chip:focus { outline: none; background-color: #26a69a; color: #fff; } .chip > img { float: left; margin: 0 8px 0 -12px; height: 32px; width: 32px; border-radius: 50%; } .chip .close { cursor: pointer; float: right; font-size: 16px; line-height: 32px; padding-left: 8px; } .chips { border: none; border-bottom: 1px solid #9e9e9e; box-shadow: none; margin: 0 0 8px 0; min-height: 45px; outline: none; transition: all 0.3s; } .chips.focus { border-bottom: 1px solid #26a69a; box-shadow: 0 1px 0 0 #26a69a; } .chips:hover { cursor: text; } .chips .input { background: none; border: 0; color: rgba(0, 0, 0, 0.6); display: inline-block; font-size: 16px; height: 56px; line-height: 32px; outline: 0; margin: 0; padding: 0 !important; width: 120px !important; } .chips .input:focus { border: 0 !important; box-shadow: none !important; } .chips .autocomplete-content { margin-top: 0; margin-bottom: 0; } .prefix ~ .chips { margin-left: 3rem; width: 92%; width: calc(100% - 3rem); } .chips:empty ~ label { font-size: 0.8rem; transform: translateY(-140%); } .collapsible { border-top: 1px solid #ddd; border-right: 1px solid #ddd; border-left: 1px solid #ddd; margin: 0.3333333333rem 0 0.6666666667rem 0; } .collapsible-header { display: flex; cursor: pointer; -webkit-tap-highlight-color: transparent; line-height: 1.5; padding: 1rem; background-color: #fff; border-bottom: 1px solid #ddd; } .collapsible-header:focus { outline: 0; } .collapsible-header i { width: 2rem; font-size: 1.6rem; display: inline-block; text-align: center; margin-right: 1rem; } .keyboard-focused .collapsible-header:focus { background-color: #eee; } .collapsible-body { display: none; border-bottom: 1px solid #ddd; box-sizing: border-box; padding: 2rem; } .sidenav .collapsible, .sidenav.fixed .collapsible { border: none; box-shadow: none; } .sidenav .collapsible li, .sidenav.fixed .collapsible li { padding: 0; } .sidenav .collapsible-header, .sidenav.fixed .collapsible-header { background-color: transparent; border: none; line-height: inherit; height: inherit; padding: 0 15px; } .sidenav .collapsible-header:hover, .sidenav.fixed .collapsible-header:hover { background-color: rgba(0, 0, 0, 0.05); } .sidenav .collapsible-header i, .sidenav.fixed .collapsible-header i { line-height: inherit; } .sidenav .collapsible-body, .sidenav.fixed .collapsible-body { border: 0; background-color: #fff; } .sidenav .collapsible-body li a, .sidenav.fixed .collapsible-body li a { padding: 0 22.5px 0 30px; } .collapsible.popout { border: none; box-shadow: none; } .collapsible.popout > li { box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); margin: 0 24px; transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94); } .collapsible.popout > li.active { box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); margin: 16px 0; } .collection { margin: 0.3333333333rem 0 0.6666666667rem 0; border: 1px solid #e0e0e0; border-radius: 2px; overflow: hidden; position: relative; } .collection .collection-item { background-color: #fff; line-height: 1.5rem; padding: 10px 20px; margin: 0; border-bottom: 1px solid #e0e0e0; } .collection .collection-item.avatar { min-height: 84px; padding-left: 72px; position: relative; } .collection .collection-item.avatar:not(.circle-clipper) > .circle, .collection .collection-item.avatar :not(.circle-clipper) > .circle { position: absolute; width: 42px; height: 42px; overflow: hidden; left: 15px; display: inline-block; vertical-align: middle; } .collection .collection-item.avatar i.circle { font-size: 18px; line-height: 42px; color: #fff; background-color: #999; text-align: center; } .collection .collection-item.avatar .title { font-size: 16px; } .collection .collection-item.avatar p { margin: 0; } .collection .collection-item.avatar .secondary-content { position: absolute; top: 16px; right: 16px; } .collection .collection-item:last-child { border-bottom: none; } .collection .collection-item.active { background-color: #26a69a; color: #eafaf9; } .collection .collection-item.active .secondary-content { color: #fff; } .collection a.collection-item { display: block; transition: 0.25s; color: #26a69a; } .collection a.collection-item:not(.active):hover { background-color: #ddd; } .collection.with-header .collection-header { background-color: #fff; border-bottom: 1px solid #e0e0e0; padding: 10px 20px; } .collection.with-header .collection-item { padding-left: 30px; } .collection.with-header .collection-item.avatar { padding-left: 72px; } .collection .secondary-content { float: right; color: #26a69a; } select:focus { outline: 1px solid #c9f3ef; } button:focus { outline: none; background-color: #2ab7a9; } label { font-size: 0.8rem; color: #9e9e9e; } /* Text Inputs + Textarea ========================================================================== */ /* Style Placeholders */ ::placeholder { color: #d1d1d1; } /* Text inputs */ input:not([type]), input[type=text]:not(.browser-default), input[type=password]:not(.browser-default), input[type=email]:not(.browser-default), input[type=url]:not(.browser-default), input[type=time]:not(.browser-default), input[type=date]:not(.browser-default), input[type=datetime]:not(.browser-default), input[type=datetime-local]:not(.browser-default), input[type=tel]:not(.browser-default), input[type=number]:not(.browser-default), input[type=search]:not(.browser-default), textarea.textarea { background-color: transparent; border: none; border-bottom: 1px solid #9e9e9e; border-radius: 0; outline: none; height: 56px; width: 100%; font-size: 16px; margin: 0 0 8px 0; padding: 0; box-shadow: none; box-sizing: content-box; transition: box-shadow 0.3s, border 0.3s; } input:not([type]):disabled, input:not([type])[readonly=readonly], input[type=text]:not(.browser-default):disabled, input[type=text]:not(.browser-default)[readonly=readonly], input[type=password]:not(.browser-default):disabled, input[type=password]:not(.browser-default)[readonly=readonly], input[type=email]:not(.browser-default):disabled, input[type=email]:not(.browser-default)[readonly=readonly], input[type=url]:not(.browser-default):disabled, input[type=url]:not(.browser-default)[readonly=readonly], input[type=time]:not(.browser-default):disabled, input[type=time]:not(.browser-default)[readonly=readonly], input[type=date]:not(.browser-default):disabled, input[type=date]:not(.browser-default)[readonly=readonly], input[type=datetime]:not(.browser-default):disabled, input[type=datetime]:not(.browser-default)[readonly=readonly], input[type=datetime-local]:not(.browser-default):disabled, input[type=datetime-local]:not(.browser-default)[readonly=readonly], input[type=tel]:not(.browser-default):disabled, input[type=tel]:not(.browser-default)[readonly=readonly], input[type=number]:not(.browser-default):disabled, input[type=number]:not(.browser-default)[readonly=readonly], input[type=search]:not(.browser-default):disabled, input[type=search]:not(.browser-default)[readonly=readonly], textarea.textarea:disabled, textarea.textarea[readonly=readonly] { color: rgba(0, 0, 0, 0.42); border-bottom: 1px dotted rgba(0, 0, 0, 0.42); } input:not([type]):disabled + label, input:not([type])[readonly=readonly] + label, input[type=text]:not(.browser-default):disabled + label, input[type=text]:not(.browser-default)[readonly=readonly] + label, input[type=password]:not(.browser-default):disabled + label, input[type=password]:not(.browser-default)[readonly=readonly] + label, input[type=email]:not(.browser-default):disabled + label, input[type=email]:not(.browser-default)[readonly=readonly] + label, input[type=url]:not(.browser-default):disabled + label, input[type=url]:not(.browser-default)[readonly=readonly] + label, input[type=time]:not(.browser-default):disabled + label, input[type=time]:not(.browser-default)[readonly=readonly] + label, input[type=date]:not(.browser-default):disabled + label, input[type=date]:not(.browser-default)[readonly=readonly] + label, input[type=datetime]:not(.browser-default):disabled + label, input[type=datetime]:not(.browser-default)[readonly=readonly] + label, input[type=datetime-local]:not(.browser-default):disabled + label, input[type=datetime-local]:not(.browser-default)[readonly=readonly] + label, input[type=tel]:not(.browser-default):disabled + label, input[type=tel]:not(.browser-default)[readonly=readonly] + label, input[type=number]:not(.browser-default):disabled + label, input[type=number]:not(.browser-default)[readonly=readonly] + label, input[type=search]:not(.browser-default):disabled + label, input[type=search]:not(.browser-default)[readonly=readonly] + label, textarea.textarea:disabled + label, textarea.textarea[readonly=readonly] + label { color: rgba(0, 0, 0, 0.42); } input:not([type]):focus:not([readonly]), input[type=text]:not(.browser-default):focus:not([readonly]), input[type=password]:not(.browser-default):focus:not([readonly]), input[type=email]:not(.browser-default):focus:not([readonly]), input[type=url]:not(.browser-default):focus:not([readonly]), input[type=time]:not(.browser-default):focus:not([readonly]), input[type=date]:not(.browser-default):focus:not([readonly]), input[type=datetime]:not(.browser-default):focus:not([readonly]), input[type=datetime-local]:not(.browser-default):focus:not([readonly]), input[type=tel]:not(.browser-default):focus:not([readonly]), input[type=number]:not(.browser-default):focus:not([readonly]), input[type=search]:not(.browser-default):focus:not([readonly]), textarea.textarea:focus:not([readonly]) { border-bottom: 1px solid #26a69a; box-shadow: 0 1px 0 0 #26a69a; } input:not([type]):focus:not([readonly]) + label, input[type=text]:not(.browser-default):focus:not([readonly]) + label, input[type=password]:not(.browser-default):focus:not([readonly]) + label, input[type=email]:not(.browser-default):focus:not([readonly]) + label, input[type=url]:not(.browser-default):focus:not([readonly]) + label, input[type=time]:not(.browser-default):focus:not([readonly]) + label, input[type=date]:not(.browser-default):focus:not([readonly]) + label, input[type=datetime]:not(.browser-default):focus:not([readonly]) + label, input[type=datetime-local]:not(.browser-default):focus:not([readonly]) + label, input[type=tel]:not(.browser-default):focus:not([readonly]) + label, input[type=number]:not(.browser-default):focus:not([readonly]) + label, input[type=search]:not(.browser-default):focus:not([readonly]) + label, textarea.textarea:focus:not([readonly]) + label { color: #26a69a; } input:not([type]):focus.valid ~ label, input[type=text]:not(.browser-default):focus.valid ~ label, input[type=password]:not(.browser-default):focus.valid ~ label, input[type=email]:not(.browser-default):focus.valid ~ label, input[type=url]:not(.browser-default):focus.valid ~ label, input[type=time]:not(.browser-default):focus.valid ~ label, input[type=date]:not(.browser-default):focus.valid ~ label, input[type=datetime]:not(.browser-default):focus.valid ~ label, input[type=datetime-local]:not(.browser-default):focus.valid ~ label, input[type=tel]:not(.browser-default):focus.valid ~ label, input[type=number]:not(.browser-default):focus.valid ~ label, input[type=search]:not(.browser-default):focus.valid ~ label, textarea.textarea:focus.valid ~ label { color: #4caf50; } input:not([type]):focus.invalid ~ label, input[type=text]:not(.browser-default):focus.invalid ~ label, input[type=password]:not(.browser-default):focus.invalid ~ label, input[type=email]:not(.browser-default):focus.invalid ~ label, input[type=url]:not(.browser-default):focus.invalid ~ label, input[type=time]:not(.browser-default):focus.invalid ~ label, input[type=date]:not(.browser-default):focus.invalid ~ label, input[type=datetime]:not(.browser-default):focus.invalid ~ label, input[type=datetime-local]:not(.browser-default):focus.invalid ~ label, input[type=tel]:not(.browser-default):focus.invalid ~ label, input[type=number]:not(.browser-default):focus.invalid ~ label, input[type=search]:not(.browser-default):focus.invalid ~ label, textarea.textarea:focus.invalid ~ label { color: #f44336; } input:not([type]).validate + label, input[type=text]:not(.browser-default).validate + label, input[type=password]:not(.browser-default).validate + label, input[type=email]:not(.browser-default).validate + label, input[type=url]:not(.browser-default).validate + label, input[type=time]:not(.browser-default).validate + label, input[type=date]:not(.browser-default).validate + label, input[type=datetime]:not(.browser-default).validate + label, input[type=datetime-local]:not(.browser-default).validate + label, input[type=tel]:not(.browser-default).validate + label, input[type=number]:not(.browser-default).validate + label, input[type=search]:not(.browser-default).validate + label, textarea.textarea.validate + label { width: 100%; } /* Validation Sass Placeholders */ .select-wrapper.valid > input.select-dropdown, input:not([type]).valid, input:not([type]):focus.valid, input[type=text]:not(.browser-default).valid, input[type=text]:not(.browser-default):focus.valid, input[type=password]:not(.browser-default).valid, input[type=password]:not(.browser-default):focus.valid, input[type=email]:not(.browser-default).valid, input[type=email]:not(.browser-default):focus.valid, input[type=url]:not(.browser-default).valid, input[type=url]:not(.browser-default):focus.valid, input[type=time]:not(.browser-default).valid, input[type=time]:not(.browser-default):focus.valid, input[type=date]:not(.browser-default).valid, input[type=date]:not(.browser-default):focus.valid, input[type=datetime]:not(.browser-default).valid, input[type=datetime]:not(.browser-default):focus.valid, input[type=datetime-local]:not(.browser-default).valid, input[type=datetime-local]:not(.browser-default):focus.valid, input[type=tel]:not(.browser-default).valid, input[type=tel]:not(.browser-default):focus.valid, input[type=number]:not(.browser-default).valid, input[type=number]:not(.browser-default):focus.valid, input[type=search]:not(.browser-default).valid, input[type=search]:not(.browser-default):focus.valid, textarea.textarea.valid, textarea.textarea:focus.valid { border-bottom: 1px solid #4caf50; box-shadow: 0 1px 0 0 #4caf50; } .select-wrapper.invalid > input.select-dropdown, .select-wrapper.invalid > input.select-dropdown:focus, input:not([type]).invalid, input:not([type]):focus.invalid, input[type=text]:not(.browser-default).invalid, input[type=text]:not(.browser-default):focus.invalid, input[type=password]:not(.browser-default).invalid, input[type=password]:not(.browser-default):focus.invalid, input[type=email]:not(.browser-default).invalid, input[type=email]:not(.browser-default):focus.invalid, input[type=url]:not(.browser-default).invalid, input[type=url]:not(.browser-default):focus.invalid, input[type=time]:not(.browser-default).invalid, input[type=time]:not(.browser-default):focus.invalid, input[type=date]:not(.browser-default).invalid, input[type=date]:not(.browser-default):focus.invalid, input[type=datetime]:not(.browser-default).invalid, input[type=datetime]:not(.browser-default):focus.invalid, input[type=datetime-local]:not(.browser-default).invalid, input[type=datetime-local]:not(.browser-default):focus.invalid, input[type=tel]:not(.browser-default).invalid, input[type=tel]:not(.browser-default):focus.invalid, input[type=number]:not(.browser-default).invalid, input[type=number]:not(.browser-default):focus.invalid, input[type=search]:not(.browser-default).invalid, input[type=search]:not(.browser-default):focus.invalid, textarea.textarea.invalid, textarea.textarea:focus.invalid { border-bottom: 1px solid #f44336; box-shadow: 0 1px 0 0 #f44336; } .select-wrapper.valid .helper-text[data-success], .select-wrapper.invalid ~ .helper-text[data-error], input:not([type]).valid ~ .helper-text[data-success], input:not([type]):focus.valid ~ .helper-text[data-success], input:not([type]).invalid ~ .helper-text[data-error], input:not([type]):focus.invalid ~ .helper-text[data-error], input[type=text]:not(.browser-default).valid ~ .helper-text[data-success], input[type=text]:not(.browser-default):focus.valid ~ .helper-text[data-success], input[type=text]:not(.browser-default).invalid ~ .helper-text[data-error], input[type=text]:not(.browser-default):focus.invalid ~ .helper-text[data-error], input[type=password]:not(.browser-default).valid ~ .helper-text[data-success], input[type=password]:not(.browser-default):focus.valid ~ .helper-text[data-success], input[type=password]:not(.browser-default).invalid ~ .helper-text[data-error], input[type=password]:not(.browser-default):focus.invalid ~ .helper-text[data-error], input[type=email]:not(.browser-default).valid ~ .helper-text[data-success], input[type=email]:not(.browser-default):focus.valid ~ .helper-text[data-success], input[type=email]:not(.browser-default).invalid ~ .helper-text[data-error], input[type=email]:not(.browser-default):focus.invalid ~ .helper-text[data-error], input[type=url]:not(.browser-default).valid ~ .helper-text[data-success], input[type=url]:not(.browser-default):focus.valid ~ .helper-text[data-success], input[type=url]:not(.browser-default).invalid ~ .helper-text[data-error], input[type=url]:not(.browser-default):focus.invalid ~ .helper-text[data-error], input[type=time]:not(.browser-default).valid ~ .helper-text[data-success], input[type=time]:not(.browser-default):focus.valid ~ .helper-text[data-success], input[type=time]:not(.browser-default).invalid ~ .helper-text[data-error], input[type=time]:not(.browser-default):focus.invalid ~ .helper-text[data-error], input[type=date]:not(.browser-default).valid ~ .helper-text[data-success], input[type=date]:not(.browser-default):focus.valid ~ .helper-text[data-success], input[type=date]:not(.browser-default).invalid ~ .helper-text[data-error], input[type=date]:not(.browser-default):focus.invalid ~ .helper-text[data-error], input[type=datetime]:not(.browser-default).valid ~ .helper-text[data-success], input[type=datetime]:not(.browser-default):focus.valid ~ .helper-text[data-success], input[type=datetime]:not(.browser-default).invalid ~ .helper-text[data-error], input[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text[data-error], input[type=datetime-local]:not(.browser-default).valid ~ .helper-text[data-success], input[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text[data-success], input[type=datetime-local]:not(.browser-default).invalid ~ .helper-text[data-error], input[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text[data-error], input[type=tel]:not(.browser-default).valid ~ .helper-text[data-success], input[type=tel]:not(.browser-default):focus.valid ~ .helper-text[data-success], input[type=tel]:not(.browser-default).invalid ~ .helper-text[data-error], input[type=tel]:not(.browser-default):focus.invalid ~ .helper-text[data-error], input[type=number]:not(.browser-default).valid ~ .helper-text[data-success], input[type=number]:not(.browser-default):focus.valid ~ .helper-text[data-success], input[type=number]:not(.browser-default).invalid ~ .helper-text[data-error], input[type=number]:not(.browser-default):focus.invalid ~ .helper-text[data-error], input[type=search]:not(.browser-default).valid ~ .helper-text[data-success], input[type=search]:not(.browser-default):focus.valid ~ .helper-text[data-success], input[type=search]:not(.browser-default).invalid ~ .helper-text[data-error], input[type=search]:not(.browser-default):focus.invalid ~ .helper-text[data-error], textarea.textarea.valid ~ .helper-text[data-success], textarea.textarea:focus.valid ~ .helper-text[data-success], textarea.textarea.invalid ~ .helper-text[data-error], textarea.textarea:focus.invalid ~ .helper-text[data-error] { color: transparent; user-select: none; pointer-events: none; } .select-wrapper.valid ~ .helper-text:after, input:not([type]).valid ~ .helper-text:after, input:not([type]):focus.valid ~ .helper-text:after, input[type=text]:not(.browser-default).valid ~ .helper-text:after, input[type=text]:not(.browser-default):focus.valid ~ .helper-text:after, input[type=password]:not(.browser-default).valid ~ .helper-text:after, input[type=password]:not(.browser-default):focus.valid ~ .helper-text:after, input[type=email]:not(.browser-default).valid ~ .helper-text:after, input[type=email]:not(.browser-default):focus.valid ~ .helper-text:after, input[type=url]:not(.browser-default).valid ~ .helper-text:after, input[type=url]:not(.browser-default):focus.valid ~ .helper-text:after, input[type=time]:not(.browser-default).valid ~ .helper-text:after, input[type=time]:not(.browser-default):focus.valid ~ .helper-text:after, input[type=date]:not(.browser-default).valid ~ .helper-text:after, input[type=date]:not(.browser-default):focus.valid ~ .helper-text:after, input[type=datetime]:not(.browser-default).valid ~ .helper-text:after, input[type=datetime]:not(.browser-default):focus.valid ~ .helper-text:after, input[type=datetime-local]:not(.browser-default).valid ~ .helper-text:after, input[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text:after, input[type=tel]:not(.browser-default).valid ~ .helper-text:after, input[type=tel]:not(.browser-default):focus.valid ~ .helper-text:after, input[type=number]:not(.browser-default).valid ~ .helper-text:after, input[type=number]:not(.browser-default):focus.valid ~ .helper-text:after, input[type=search]:not(.browser-default).valid ~ .helper-text:after, input[type=search]:not(.browser-default):focus.valid ~ .helper-text:after, textarea.textarea.valid ~ .helper-text:after, textarea.textarea:focus.valid ~ .helper-text:after { content: attr(data-success); color: #4caf50; } .select-wrapper.invalid ~ .helper-text:after, input:not([type]).invalid ~ .helper-text:after, input:not([type]):focus.invalid ~ .helper-text:after, input[type=text]:not(.browser-default).invalid ~ .helper-text:after, input[type=text]:not(.browser-default):focus.invalid ~ .helper-text:after, input[type=password]:not(.browser-default).invalid ~ .helper-text:after, input[type=password]:not(.browser-default):focus.invalid ~ .helper-text:after, input[type=email]:not(.browser-default).invalid ~ .helper-text:after, input[type=email]:not(.browser-default):focus.invalid ~ .helper-text:after, input[type=url]:not(.browser-default).invalid ~ .helper-text:after, input[type=url]:not(.browser-default):focus.invalid ~ .helper-text:after, input[type=time]:not(.browser-default).invalid ~ .helper-text:after, input[type=time]:not(.browser-default):focus.invalid ~ .helper-text:after, input[type=date]:not(.browser-default).invalid ~ .helper-text:after, input[type=date]:not(.browser-default):focus.invalid ~ .helper-text:after, input[type=datetime]:not(.browser-default).invalid ~ .helper-text:after, input[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text:after, input[type=datetime-local]:not(.browser-default).invalid ~ .helper-text:after, input[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text:after, input[type=tel]:not(.browser-default).invalid ~ .helper-text:after, input[type=tel]:not(.browser-default):focus.invalid ~ .helper-text:after, input[type=number]:not(.browser-default).invalid ~ .helper-text:after, input[type=number]:not(.browser-default):focus.invalid ~ .helper-text:after, input[type=search]:not(.browser-default).invalid ~ .helper-text:after, input[type=search]:not(.browser-default):focus.invalid ~ .helper-text:after, textarea.textarea.invalid ~ .helper-text:after, textarea.textarea:focus.invalid ~ .helper-text:after { content: attr(data-error); color: #f44336; } .select-wrapper + label:after, input:not([type]) + label:after, input[type=text]:not(.browser-default) + label:after, input[type=password]:not(.browser-default) + label:after, input[type=email]:not(.browser-default) + label:after, input[type=url]:not(.browser-default) + label:after, input[type=time]:not(.browser-default) + label:after, input[type=date]:not(.browser-default) + label:after, input[type=datetime]:not(.browser-default) + label:after, input[type=datetime-local]:not(.browser-default) + label:after, input[type=tel]:not(.browser-default) + label:after, input[type=number]:not(.browser-default) + label:after, input[type=search]:not(.browser-default) + label:after, textarea.textarea + label:after { display: block; content: ""; position: absolute; top: 100%; left: 0; opacity: 0; transition: 0.2s opacity ease-out, 0.2s color ease-out; } .input-field { position: relative; margin-top: 1rem; margin-bottom: 1rem; } .input-field.inline { display: inline-block; vertical-align: middle; margin-left: 5px; } .input-field.inline input, .input-field.inline .select-dropdown { margin-bottom: 1rem; } .input-field.col label { left: 0.5rem; } .input-field.col .prefix ~ label, .input-field.col .prefix ~ .validate ~ label { width: calc(100% - 3rem - 1rem); } .input-field > label { color: #9e9e9e; position: absolute; top: 0; left: 0; font-size: 1rem; cursor: text; transition: transform 0.2s ease-out, color 0.2s ease-out; transform-origin: 0% 100%; text-align: initial; transform: translateY(12px); } .input-field > label:not(.label-icon).active { transform: translateY(-14px) scale(0.8); transform-origin: 0 0; } .input-field > input[type]:-webkit-autofill:not(.browser-default):not([type=search]) + label, .input-field > input[type=date]:not(.browser-default) + label, .input-field > input[type=time]:not(.browser-default) + label { transform: translateY(-14px) scale(0.8); transform-origin: 0 0; } .input-field .helper-text { position: relative; min-height: 18px; display: block; font-size: 12px; color: rgba(0, 0, 0, 0.54); } .input-field .helper-text::after { opacity: 1; position: absolute; top: 0; left: 0; } .input-field .prefix { position: absolute; width: 56px; font-size: 2rem; transition: color 0.2s; } .input-field .prefix.active { color: #26a69a; } .input-field .prefix ~ input, .input-field .prefix ~ textarea, .input-field .prefix ~ label, .input-field .prefix ~ .validate ~ label, .input-field .prefix ~ .helper-text, .input-field .prefix ~ .autocomplete-content { margin-left: 3rem; width: 92%; width: calc(100% - 3rem); } .input-field .prefix ~ label { margin-left: 3rem; } @media only screen and (max-width : 992px) { .input-field .prefix ~ input { width: 86%; width: calc(100% - 3rem); } } @media only screen and (max-width : 600px) { .input-field .prefix ~ input { width: 80%; width: calc(100% - 3rem); } } /* Search Field */ .input-field input[type=search] { display: block; line-height: inherit; transition: 0.3s background-color; } .nav-wrapper .input-field input[type=search] { height: inherit; padding-left: 4rem; width: calc(100% - 4rem); border: 0; box-shadow: none; } .input-field input[type=search]:focus:not(.browser-default) { background-color: #fff; border: 0; box-shadow: none; color: #444; } .input-field input[type=search]:focus:not(.browser-default) + label i, .input-field input[type=search]:focus:not(.browser-default) ~ .mdi-navigation-close, .input-field input[type=search]:focus:not(.browser-default) ~ .material-icons { color: #444; } .input-field input[type=search] + .label-icon { transform: none; left: 1rem; } .input-field input[type=search] ~ .mdi-navigation-close, .input-field input[type=search] ~ .material-icons { position: absolute; top: 0; right: 1rem; color: transparent; cursor: pointer; font-size: 2rem; transition: 0.3s color; } /* Textarea */ textarea { width: 100%; height: 56px; background-color: transparent; } textarea.textarea { line-height: normal; overflow-y: hidden; /* prevents scroll bar flash */ padding: 0.8rem 0 0.8rem 0; /* prevents text jump on Enter keypress */ resize: none; min-height: 56px; box-sizing: border-box; } .hiddendiv { visibility: hidden; white-space: pre-wrap; word-wrap: break-word; overflow-wrap: break-word; /* future version of deprecated 'word-wrap' */ padding-top: 1.2rem; /* prevents text jump on Enter keypress */ position: absolute; top: 0; z-index: -1; } /* Autocomplete */ .autocomplete-content li .highlight { color: #444; } .autocomplete-content li img { margin: 5px 15px; } /* Character Counter */ .character-counter { min-height: 18px; } /* Radio Buttons ========================================================================== */ [type=radio]:not(:checked), [type=radio]:checked { position: absolute; opacity: 0; pointer-events: none; } [type=radio]:not(:checked) + span, [type=radio]:checked + span { position: relative; padding-left: 35px; cursor: pointer; display: inline-block; height: 25px; line-height: 25px; font-size: 1rem; transition: 0.28s ease; user-select: none; } [type=radio] + span:before, [type=radio] + span:after { content: ""; position: absolute; left: 0; top: 0; margin: 4px; width: 16px; height: 16px; z-index: 0; transition: 0.28s ease; } /* Unchecked styles */ [type=radio]:not(:checked) + span:before, [type=radio]:not(:checked) + span:after, [type=radio]:checked + span:before, [type=radio]:checked + span:after, [type=radio].with-gap:checked + span:before, [type=radio].with-gap:checked + span:after { border-radius: 50%; } [type=radio]:not(:checked) + span:before, [type=radio]:not(:checked) + span:after { border: 2px solid #5a5a5a; } [type=radio]:not(:checked) + span:after { transform: scale(0); } /* Checked styles */ [type=radio]:checked + span:before { border: 2px solid transparent; } [type=radio]:checked + span:after, [type=radio].with-gap:checked + span:before, [type=radio].with-gap:checked + span:after { border: 2px solid #26a69a; } [type=radio]:checked + span:after, [type=radio].with-gap:checked + span:after { background-color: #26a69a; } [type=radio]:checked + span:after { transform: scale(1.02); } /* Radio With gap */ [type=radio].with-gap:checked + span:after { transform: scale(0.5); } /* Focused styles */ [type=radio].tabbed:focus + span:before { box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); } /* Disabled Radio With gap */ [type=radio].with-gap:disabled:checked + span:before { border: 2px solid rgba(0, 0, 0, 0.42); } [type=radio].with-gap:disabled:checked + span:after { border: none; background-color: rgba(0, 0, 0, 0.42); } /* Disabled style */ [type=radio]:disabled:not(:checked) + span:before, [type=radio]:disabled:checked + span:before { background-color: transparent; border-color: rgba(0, 0, 0, 0.42); } [type=radio]:disabled + span { color: rgba(0, 0, 0, 0.42); } [type=radio]:disabled:not(:checked) + span:before { border-color: rgba(0, 0, 0, 0.42); } [type=radio]:disabled:checked + span:after { background-color: rgba(0, 0, 0, 0.42); border-color: #949494; } /* Checkboxes ========================================================================== */ /* Remove default checkbox */ [type=checkbox]:not(:checked), [type=checkbox]:checked { position: absolute; opacity: 0; pointer-events: none; } [type=checkbox] { /* checkbox aspect */ } [type=checkbox] + span:not(.lever) { position: relative; padding-left: 35px; cursor: pointer; display: inline-block; height: 25px; line-height: 25px; font-size: 1rem; user-select: none; } [type=checkbox] + span:not(.lever):before, [type=checkbox]:not(.filled-in) + span:not(.lever):after { content: ""; position: absolute; top: 0; left: 0; width: 18px; height: 18px; z-index: 0; border: 2px solid #5a5a5a; border-radius: 1px; margin-top: 3px; transition: 0.2s; } [type=checkbox]:not(.filled-in) + span:not(.lever):after { border: 0; transform: scale(0); } [type=checkbox]:not(:checked):disabled + span:not(.lever):before { border: none; background-color: rgba(0, 0, 0, 0.42); } [type=checkbox].tabbed:focus + span:not(.lever):after { transform: scale(1); border: 0; border-radius: 50%; box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); background-color: rgba(0, 0, 0, 0.1); } [type=checkbox]:checked + span:not(.lever):before { top: -4px; left: -5px; width: 12px; height: 22px; border-top: 2px solid transparent; border-left: 2px solid transparent; border-right: 2px solid #26a69a; border-bottom: 2px solid #26a69a; transform: rotate(40deg); backface-visibility: hidden; transform-origin: 100% 100%; } [type=checkbox]:checked:disabled + span:before { border-right: 2px solid rgba(0, 0, 0, 0.42); border-bottom: 2px solid rgba(0, 0, 0, 0.42); } /* Indeterminate checkbox */ [type=checkbox]:indeterminate + span:not(.lever):before { top: -11px; left: -12px; width: 10px; height: 22px; border-top: none; border-left: none; border-right: 2px solid #26a69a; border-bottom: none; transform: rotate(90deg); backface-visibility: hidden; transform-origin: 100% 100%; } [type=checkbox]:indeterminate:disabled + span:not(.lever):before { border-right: 2px solid rgba(0, 0, 0, 0.42); background-color: transparent; } [type=checkbox].filled-in + span:not(.lever):after { border-radius: 2px; } [type=checkbox].filled-in + span:not(.lever):before, [type=checkbox].filled-in + span:not(.lever):after { content: ""; left: 0; position: absolute; /* .1s delay is for check animation */ transition: border 0.25s, background-color 0.25s, width 0.2s 0.1s, height 0.2s 0.1s, top 0.2s 0.1s, left 0.2s 0.1s; z-index: 1; } [type=checkbox].filled-in:not(:checked) + span:not(.lever):before { width: 0; height: 0; border: 3px solid transparent; left: 6px; top: 10px; transform: rotateZ(37deg); transform-origin: 100% 100%; } [type=checkbox].filled-in:not(:checked) + span:not(.lever):after { height: 20px; width: 20px; background-color: transparent; border: 2px solid #5a5a5a; top: 0px; z-index: 0; } [type=checkbox].filled-in:checked + span:not(.lever):before { top: 0; left: 1px; width: 8px; height: 13px; border-top: 2px solid transparent; border-left: 2px solid transparent; border-right: 2px solid #fff; border-bottom: 2px solid #fff; transform: rotateZ(37deg); transform-origin: 100% 100%; } [type=checkbox].filled-in:checked + span:not(.lever):after { top: 0; width: 20px; height: 20px; border: 2px solid #26a69a; background-color: #26a69a; z-index: 0; } [type=checkbox].filled-in.tabbed:focus + span:not(.lever):after { border-radius: 2px; border-color: #5a5a5a; background-color: rgba(0, 0, 0, 0.1); } [type=checkbox].filled-in.tabbed:checked:focus + span:not(.lever):after { border-radius: 2px; background-color: #26a69a; border-color: #26a69a; } [type=checkbox].filled-in:disabled:not(:checked) + span:not(.lever):before { background-color: transparent; border: 2px solid transparent; } [type=checkbox].filled-in:disabled:not(:checked) + span:not(.lever):after { border-color: transparent; background-color: #949494; } [type=checkbox].filled-in:disabled:checked + span:not(.lever):before { background-color: transparent; } [type=checkbox].filled-in:disabled:checked + span:not(.lever):after { background-color: #949494; border-color: #949494; } /* Switch ========================================================================== */ .switch, .switch * { -webkit-tap-highlight-color: transparent; user-select: none; } .switch label { cursor: pointer; } .switch label input[type=checkbox] { opacity: 0; width: 0; height: 0; } .switch label input[type=checkbox]:checked + .lever { background-color: #84c7c1; } .switch label input[type=checkbox]:checked + .lever:before, .switch label input[type=checkbox]:checked + .lever:after { left: 18px; } .switch label input[type=checkbox]:checked + .lever:after { background-color: #26a69a; } .switch label .lever { content: ""; display: inline-block; position: relative; width: 36px; height: 14px; background-color: rgba(0, 0, 0, 0.38); border-radius: 15px; transition: background 0.3s ease; vertical-align: middle; margin: 0 16px; } .switch label .lever:before, .switch label .lever:after { content: ""; position: absolute; display: inline-block; width: 20px; height: 20px; border-radius: 50%; left: 0; top: -3px; transition: left 0.3s ease, background 0.3s ease, box-shadow 0.1s ease, transform 0.1s ease; } .switch label .lever:before { background-color: rgba(38, 166, 154, 0.15); } .switch label .lever:after { background-color: #F1F1F1; box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } input[type=checkbox]:checked:not(:disabled) ~ .lever:active::before, input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::before { transform: scale(2.4); background-color: rgba(38, 166, 154, 0.15); } input[type=checkbox]:not(:disabled) ~ .lever:active:before, input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::before { transform: scale(2.4); background-color: rgba(0, 0, 0, 0.08); } .switch input[type=checkbox][disabled] + .lever { cursor: default; background-color: rgba(0, 0, 0, 0.12); } .switch label input[type=checkbox][disabled] + .lever:after, .switch label input[type=checkbox][disabled]:checked + .lever:after { background-color: #949494; } /* Select Field ========================================================================== */ select { display: none; } select.browser-default { display: block; } select { background-color: rgba(255, 255, 255, 0.9); width: 100%; padding: 5px; border: 1px solid #f2f2f2; border-radius: 2px; height: 56px; } .select-label { position: absolute; } .select-wrapper { position: relative; } .select-wrapper.valid + label, .select-wrapper.invalid + label { width: 100%; pointer-events: none; } .select-wrapper input.select-dropdown { position: relative; cursor: pointer; background-color: transparent; border: none; border-bottom: 1px solid #9e9e9e; outline: none; height: 56px; line-height: 56px; width: 100%; font-size: 16px; margin: 0 0 8px 0; padding: 0; display: block; user-select: none; z-index: 1; } .select-wrapper input.select-dropdown:focus { border-bottom: 1px solid #26a69a; } .select-wrapper .caret { position: absolute; right: 0; top: 0; bottom: 0; margin: auto 0; z-index: 0; fill: rgba(0, 0, 0, 0.87); } .select-wrapper + label { position: absolute; top: -26px; font-size: 0.8rem; } select:disabled { color: rgba(0, 0, 0, 0.42); } .select-wrapper.disabled + label { color: rgba(0, 0, 0, 0.42); } .select-wrapper.disabled .caret { fill: rgba(0, 0, 0, 0.42); } .select-wrapper input.select-dropdown:disabled { color: rgba(0, 0, 0, 0.42); cursor: default; user-select: none; } .select-wrapper i { color: rgba(0, 0, 0, 0.3); } .select-dropdown li.disabled, .select-dropdown li.disabled > span, .select-dropdown li.optgroup { color: rgba(0, 0, 0, 0.3); background-color: transparent; } body.keyboard-focused .select-dropdown.dropdown-content li:focus { background-color: rgba(0, 0, 0, 0.08); } .select-dropdown.dropdown-content li:hover { background-color: rgba(0, 0, 0, 0.08); } .select-dropdown.dropdown-content li.selected { background-color: rgba(0, 0, 0, 0.03); } .prefix ~ .select-wrapper { margin-left: 3rem; width: 92%; width: calc(100% - 3rem); } .prefix ~ label { margin-left: 3rem; } .select-dropdown li img { margin: 5px 15px; float: right; } .select-dropdown li.optgroup.selected > span { color: rgba(0, 0, 0, 0.7); } .select-dropdown li.optgroup > span { color: rgba(0, 0, 0, 0.4); } .select-dropdown li.optgroup ~ li.optgroup-option { padding-left: 1rem; } /* File Input ========================================================================== */ .file-field { position: relative; } .file-field .file-path-wrapper { overflow: hidden; padding-left: 10px; } .file-field input.file-path { width: 100%; } .file-field .btn, .file-field .btn-small, .file-field .btn-large { float: left; height: 56px; line-height: 56px; } .file-field span { cursor: pointer; } .file-field input[type=file] { position: absolute; top: 0; right: 0; left: 0; bottom: 0; width: 100%; margin: 0; padding: 0; font-size: 20px; cursor: pointer; opacity: 0; filter: alpha(opacity=0); } .file-field input[type=file]::-webkit-file-upload-button { display: none; } /* Range ========================================================================== */ .range-field { position: relative; } input[type=range], input[type=range] + .thumb { cursor: pointer; } input[type=range] { position: relative; background-color: transparent; border: none; outline: none; width: 100%; margin: 15px 0; padding: 0; } input[type=range]:focus { outline: none; } input[type=range] + .thumb { position: absolute; top: 10px; left: 0; border: none; height: 0; width: 0; border-radius: 50%; background-color: #26a69a; margin-left: 7px; transform-origin: 50% 50%; transform: rotate(-45deg); } input[type=range] + .thumb .value { display: block; width: 30px; text-align: center; color: #26a69a; font-size: 0; transform: rotate(45deg); } input[type=range] + .thumb.active { border-radius: 50% 50% 50% 0; } input[type=range] + .thumb.active .value { color: #fff; margin-left: -1px; margin-top: 8px; font-size: 10px; } input[type=range] { -webkit-appearance: none; } input[type=range]::-webkit-slider-runnable-track { height: 3px; background: #c2c0c2; border: none; } input[type=range]::-webkit-slider-thumb { border: none; height: 14px; width: 14px; border-radius: 50%; background: #26a69a; transition: box-shadow 0.3s; -webkit-appearance: none; background-color: #26a69a; transform-origin: 50% 50%; margin: -5px 0 0 0; } .keyboard-focused input[type=range]:focus:not(.active)::-webkit-slider-thumb { box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26); } input[type=range] { /* fix for FF unable to apply focus style bug */ border: 1px solid white; /*required for proper track sizing in FF*/ } input[type=range]::-moz-range-track { height: 3px; background: #c2c0c2; border: none; } input[type=range]::-moz-focus-inner { border: 0; } input[type=range]::-moz-range-thumb { border: none; height: 14px; width: 14px; border-radius: 50%; background: #26a69a; transition: box-shadow 0.3s; margin-top: -5px; } input[type=range]:-moz-focusring { outline: 1px solid #fff; outline-offset: -1px; } .keyboard-focused input[type=range]:focus:not(.active)::-moz-range-thumb { box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26); } input[type=range]::-ms-track { height: 3px; background: transparent; border-color: transparent; border-width: 6px 0; /*remove default tick marks*/ color: transparent; } input[type=range]::-ms-fill-lower { background: #777; } input[type=range]::-ms-fill-upper { background: #ddd; } input[type=range]::-ms-thumb { border: none; height: 14px; width: 14px; border-radius: 50%; background: #26a69a; transition: box-shadow 0.3s; } .keyboard-focused input[type=range]:focus:not(.active)::-ms-thumb { box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26); } .parallax { /* Set a specific height */ min-height: 500px; /* Create the parallax scrolling effect */ background-attachment: fixed; background-position: center; background-repeat: no-repeat; background-size: cover; } * { box-sizing: border-box; } body { font-family: sans-serif; } .scene { width: 200px; height: 200px; border: 1px solid #CCC; margin: 80px; perspective: 400px; } .cube { width: 200px; height: 200px; position: relative; transform-style: preserve-3d; transform: translateZ(-400px); transition: transform 1s; } .cube.show-front { transform: translateZ(-10px) rotateY(0deg); } .cube.show-right { transform: translateZ(-10px) rotateY(-90deg); } .cube.show-back { transform: translateZ(-10px) rotateY(-180deg); } .cube.show-left { transform: translateZ(-10px) rotateY(90deg); } .cube.show-top { transform: translateZ(-10px) rotateX(-90deg); } .cube.show-bottom { transform: translateZ(-10px) rotateX(90deg); } .cube__face { position: absolute; width: 200px; height: 200px; border: 2px solid black; line-height: 200px; font-size: 40px; font-weight: bold; color: white; text-align: center; } .cube__face--front { background: hsla(0, 100%, 50%, 0.7); } .cube__face--right { background: hsla(60, 100%, 50%, 0.7); } .cube__face--back { background: hsla(120, 100%, 50%, 0.7); } .cube__face--left { background: hsla(180, 100%, 50%, 0.7); } .cube__face--top { background: hsla(240, 100%, 50%, 0.7); } .cube__face--bottom { background: hsla(300, 100%, 50%, 0.7); } .cube__face--front { transform: rotateY(0deg) translateZ(100px); } .cube__face--right { transform: rotateY(90deg) translateZ(100px); } .cube__face--back { transform: rotateY(180deg) translateZ(100px); } .cube__face--left { transform: rotateY(-90deg) translateZ(100px); } .cube__face--top { transform: rotateX(90deg) translateZ(100px); } .cube__face--bottom { transform: rotateX(-90deg) translateZ(100px); } label { margin-right: 10px; } .container { margin: 0 auto; max-width: 1280px; width: 90%; } @media only screen and (min-width : 601px) { .container { width: 85%; } } @media only screen and (min-width : 993px) { .container { width: 70%; } } .col .row { margin-left: -0.5rem; margin-right: -0.5rem; } .section { padding-top: 1rem; padding-bottom: 1rem; } .section.no-pad { padding: 0; } .section.no-pad-bot { padding-bottom: 0; } .section.no-pad-top { padding-top: 0; } .row { margin-left: auto; margin-right: auto; margin-bottom: 20px; } .row:after { content: ""; display: table; clear: both; } .row .col { float: left; box-sizing: border-box; padding: 0 0.5rem; min-height: 1px; } .row .col[class*=push-], .row .col[class*=pull-] { position: relative; } .row .col.s1 { width: 8.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.s2 { width: 16.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.s3 { width: 25%; margin-left: auto; left: auto; right: auto; } .row .col.s4 { width: 33.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.s5 { width: 41.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.s6 { width: 50%; margin-left: auto; left: auto; right: auto; } .row .col.s7 { width: 58.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.s8 { width: 66.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.s9 { width: 75%; margin-left: auto; left: auto; right: auto; } .row .col.s10 { width: 83.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.s11 { width: 91.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.s12 { width: 100%; margin-left: auto; left: auto; right: auto; } .row .col.offset-s1 { margin-left: 8.3333333333%; } .row .col.pull-s1 { right: 8.3333333333%; } .row .col.push-s1 { left: 8.3333333333%; } .row .col.offset-s2 { margin-left: 16.6666666667%; } .row .col.pull-s2 { right: 16.6666666667%; } .row .col.push-s2 { left: 16.6666666667%; } .row .col.offset-s3 { margin-left: 25%; } .row .col.pull-s3 { right: 25%; } .row .col.push-s3 { left: 25%; } .row .col.offset-s4 { margin-left: 33.3333333333%; } .row .col.pull-s4 { right: 33.3333333333%; } .row .col.push-s4 { left: 33.3333333333%; } .row .col.offset-s5 { margin-left: 41.6666666667%; } .row .col.pull-s5 { right: 41.6666666667%; } .row .col.push-s5 { left: 41.6666666667%; } .row .col.offset-s6 { margin-left: 50%; } .row .col.pull-s6 { right: 50%; } .row .col.push-s6 { left: 50%; } .row .col.offset-s7 { margin-left: 58.3333333333%; } .row .col.pull-s7 { right: 58.3333333333%; } .row .col.push-s7 { left: 58.3333333333%; } .row .col.offset-s8 { margin-left: 66.6666666667%; } .row .col.pull-s8 { right: 66.6666666667%; } .row .col.push-s8 { left: 66.6666666667%; } .row .col.offset-s9 { margin-left: 75%; } .row .col.pull-s9 { right: 75%; } .row .col.push-s9 { left: 75%; } .row .col.offset-s10 { margin-left: 83.3333333333%; } .row .col.pull-s10 { right: 83.3333333333%; } .row .col.push-s10 { left: 83.3333333333%; } .row .col.offset-s11 { margin-left: 91.6666666667%; } .row .col.pull-s11 { right: 91.6666666667%; } .row .col.push-s11 { left: 91.6666666667%; } .row .col.offset-s12 { margin-left: 100%; } .row .col.pull-s12 { right: 100%; } .row .col.push-s12 { left: 100%; } @media only screen and (min-width : 601px) { .row .col.m1 { width: 8.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.m2 { width: 16.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.m3 { width: 25%; margin-left: auto; left: auto; right: auto; } .row .col.m4 { width: 33.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.m5 { width: 41.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.m6 { width: 50%; margin-left: auto; left: auto; right: auto; } .row .col.m7 { width: 58.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.m8 { width: 66.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.m9 { width: 75%; margin-left: auto; left: auto; right: auto; } .row .col.m10 { width: 83.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.m11 { width: 91.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.m12 { width: 100%; margin-left: auto; left: auto; right: auto; } .row .col.offset-m1 { margin-left: 8.3333333333%; } .row .col.pull-m1 { right: 8.3333333333%; } .row .col.push-m1 { left: 8.3333333333%; } .row .col.offset-m2 { margin-left: 16.6666666667%; } .row .col.pull-m2 { right: 16.6666666667%; } .row .col.push-m2 { left: 16.6666666667%; } .row .col.offset-m3 { margin-left: 25%; } .row .col.pull-m3 { right: 25%; } .row .col.push-m3 { left: 25%; } .row .col.offset-m4 { margin-left: 33.3333333333%; } .row .col.pull-m4 { right: 33.3333333333%; } .row .col.push-m4 { left: 33.3333333333%; } .row .col.offset-m5 { margin-left: 41.6666666667%; } .row .col.pull-m5 { right: 41.6666666667%; } .row .col.push-m5 { left: 41.6666666667%; } .row .col.offset-m6 { margin-left: 50%; } .row .col.pull-m6 { right: 50%; } .row .col.push-m6 { left: 50%; } .row .col.offset-m7 { margin-left: 58.3333333333%; } .row .col.pull-m7 { right: 58.3333333333%; } .row .col.push-m7 { left: 58.3333333333%; } .row .col.offset-m8 { margin-left: 66.6666666667%; } .row .col.pull-m8 { right: 66.6666666667%; } .row .col.push-m8 { left: 66.6666666667%; } .row .col.offset-m9 { margin-left: 75%; } .row .col.pull-m9 { right: 75%; } .row .col.push-m9 { left: 75%; } .row .col.offset-m10 { margin-left: 83.3333333333%; } .row .col.pull-m10 { right: 83.3333333333%; } .row .col.push-m10 { left: 83.3333333333%; } .row .col.offset-m11 { margin-left: 91.6666666667%; } .row .col.pull-m11 { right: 91.6666666667%; } .row .col.push-m11 { left: 91.6666666667%; } .row .col.offset-m12 { margin-left: 100%; } .row .col.pull-m12 { right: 100%; } .row .col.push-m12 { left: 100%; } } @media only screen and (min-width : 993px) { .row .col.l1 { width: 8.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.l2 { width: 16.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.l3 { width: 25%; margin-left: auto; left: auto; right: auto; } .row .col.l4 { width: 33.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.l5 { width: 41.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.l6 { width: 50%; margin-left: auto; left: auto; right: auto; } .row .col.l7 { width: 58.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.l8 { width: 66.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.l9 { width: 75%; margin-left: auto; left: auto; right: auto; } .row .col.l10 { width: 83.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.l11 { width: 91.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.l12 { width: 100%; margin-left: auto; left: auto; right: auto; } .row .col.offset-l1 { margin-left: 8.3333333333%; } .row .col.pull-l1 { right: 8.3333333333%; } .row .col.push-l1 { left: 8.3333333333%; } .row .col.offset-l2 { margin-left: 16.6666666667%; } .row .col.pull-l2 { right: 16.6666666667%; } .row .col.push-l2 { left: 16.6666666667%; } .row .col.offset-l3 { margin-left: 25%; } .row .col.pull-l3 { right: 25%; } .row .col.push-l3 { left: 25%; } .row .col.offset-l4 { margin-left: 33.3333333333%; } .row .col.pull-l4 { right: 33.3333333333%; } .row .col.push-l4 { left: 33.3333333333%; } .row .col.offset-l5 { margin-left: 41.6666666667%; } .row .col.pull-l5 { right: 41.6666666667%; } .row .col.push-l5 { left: 41.6666666667%; } .row .col.offset-l6 { margin-left: 50%; } .row .col.pull-l6 { right: 50%; } .row .col.push-l6 { left: 50%; } .row .col.offset-l7 { margin-left: 58.3333333333%; } .row .col.pull-l7 { right: 58.3333333333%; } .row .col.push-l7 { left: 58.3333333333%; } .row .col.offset-l8 { margin-left: 66.6666666667%; } .row .col.pull-l8 { right: 66.6666666667%; } .row .col.push-l8 { left: 66.6666666667%; } .row .col.offset-l9 { margin-left: 75%; } .row .col.pull-l9 { right: 75%; } .row .col.push-l9 { left: 75%; } .row .col.offset-l10 { margin-left: 83.3333333333%; } .row .col.pull-l10 { right: 83.3333333333%; } .row .col.push-l10 { left: 83.3333333333%; } .row .col.offset-l11 { margin-left: 91.6666666667%; } .row .col.pull-l11 { right: 91.6666666667%; } .row .col.push-l11 { left: 91.6666666667%; } .row .col.offset-l12 { margin-left: 100%; } .row .col.pull-l12 { right: 100%; } .row .col.push-l12 { left: 100%; } } @media only screen and (min-width : 1201px) { .row .col.xl1 { width: 8.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.xl2 { width: 16.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.xl3 { width: 25%; margin-left: auto; left: auto; right: auto; } .row .col.xl4 { width: 33.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.xl5 { width: 41.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.xl6 { width: 50%; margin-left: auto; left: auto; right: auto; } .row .col.xl7 { width: 58.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.xl8 { width: 66.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.xl9 { width: 75%; margin-left: auto; left: auto; right: auto; } .row .col.xl10 { width: 83.3333333333%; margin-left: auto; left: auto; right: auto; } .row .col.xl11 { width: 91.6666666667%; margin-left: auto; left: auto; right: auto; } .row .col.xl12 { width: 100%; margin-left: auto; left: auto; right: auto; } .row .col.offset-xl1 { margin-left: 8.3333333333%; } .row .col.pull-xl1 { right: 8.3333333333%; } .row .col.push-xl1 { left: 8.3333333333%; } .row .col.offset-xl2 { margin-left: 16.6666666667%; } .row .col.pull-xl2 { right: 16.6666666667%; } .row .col.push-xl2 { left: 16.6666666667%; } .row .col.offset-xl3 { margin-left: 25%; } .row .col.pull-xl3 { right: 25%; } .row .col.push-xl3 { left: 25%; } .row .col.offset-xl4 { margin-left: 33.3333333333%; } .row .col.pull-xl4 { right: 33.3333333333%; } .row .col.push-xl4 { left: 33.3333333333%; } .row .col.offset-xl5 { margin-left: 41.6666666667%; } .row .col.pull-xl5 { right: 41.6666666667%; } .row .col.push-xl5 { left: 41.6666666667%; } .row .col.offset-xl6 { margin-left: 50%; } .row .col.pull-xl6 { right: 50%; } .row .col.push-xl6 { left: 50%; } .row .col.offset-xl7 { margin-left: 58.3333333333%; } .row .col.pull-xl7 { right: 58.3333333333%; } .row .col.push-xl7 { left: 58.3333333333%; } .row .col.offset-xl8 { margin-left: 66.6666666667%; } .row .col.pull-xl8 { right: 66.6666666667%; } .row .col.push-xl8 { left: 66.6666666667%; } .row .col.offset-xl9 { margin-left: 75%; } .row .col.pull-xl9 { right: 75%; } .row .col.push-xl9 { left: 75%; } .row .col.offset-xl10 { margin-left: 83.3333333333%; } .row .col.pull-xl10 { right: 83.3333333333%; } .row .col.push-xl10 { left: 83.3333333333%; } .row .col.offset-xl11 { margin-left: 91.6666666667%; } .row .col.pull-xl11 { right: 91.6666666667%; } .row .col.push-xl11 { left: 91.6666666667%; } .row .col.offset-xl12 { margin-left: 100%; } .row .col.pull-xl12 { right: 100%; } .row .col.push-xl12 { left: 100%; } } .sidenav { position: fixed; width: 300px; left: 0; top: 0; margin: 0; height: 100%; height: calc(100% + 60px); height: -moz-calc(100%); padding-bottom: 60px; background-color: #fff; z-index: 999; overflow-y: auto; will-change: transform; backface-visibility: hidden; transform: translateX(-105%); transition: transform 1s; } .sidenav.right-aligned { right: 0; left: auto; transform: translateX(100%); } .sidenav .collapsible { margin: 0; } .sidenav li { float: none; } .sidenav li .iconSideLink { display: flex; align-items: center; } .sidenav li .iconSideLink svg { stroke: rgba(0, 0, 0, 0.2); width: 30px; } .sidenav li.active { background-color: rgba(0, 0, 0, 0.05); } .sidenav li.active svg { stroke: white !important; width: 30px; } .sidenav li.last { position: sticky; top: calc(100% - 45px - 35px); } .sidenav li > a { color: rgba(0, 0, 0, 0.87); display: flex; font-size: 14px; font-weight: 700; height: 45px; line-height: 45px; padding: 0 30px; } .sidenav li > a:hover { background-color: rgba(0, 0, 0, 0.05); } .sidenav li > a.btn, .sidenav li > a.btn-small, .sidenav li > a.btn-large, .sidenav li > a.btn-flat, .sidenav li > a.btn-floating { margin: 10px 15px; } .sidenav li > a.btn, .sidenav li > a.btn-small, .sidenav li > a.btn-large, .sidenav li > a.btn-floating { color: #fff; } .sidenav li > a.btn-flat { color: #343434; } .sidenav li > a.btn:hover, .sidenav li > a.btn-small:hover, .sidenav li > a.btn-large:hover { background-color: #414141; } .sidenav li > a.btn-floating:hover { background-color: #343434; } .sidenav li > a > i, .sidenav li > a > [class^=mdi-], .sidenav li > a li > a > [class*=mdi-], .sidenav li > a > i.s-icon { float: left; height: 45px; line-height: 45px; margin: 0 30px 0 0; width: 22.5px; color: rgba(0, 0, 0, 0.54); } .sidenav .divider { margin: 7.5px 0 0 0; } .sidenav .subheader { cursor: initial; pointer-events: none; color: rgba(0, 0, 0, 0.54); font-size: 14px; font-weight: 500; line-height: 45px; } .sidenav .subheader:hover { background-color: transparent; } .sidenav .user-view { position: relative; padding: 30px 30px 0; margin-bottom: 7.5px; } .sidenav .user-view > a { height: auto; padding: 0; } .sidenav .user-view > a:hover { background-color: transparent; } .sidenav .user-view .background { overflow: hidden; position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: -1; } .sidenav .user-view .circle, .sidenav .user-view .name, .sidenav .user-view .email { display: block; } .sidenav .user-view .circle { height: 64px; width: 64px; } .sidenav .user-view .name, .sidenav .user-view .email { font-size: 14px; line-height: 22.5px; } .sidenav .user-view .name { margin-top: 16px; font-weight: 500; } .sidenav .user-view .email { padding-bottom: 16px; font-weight: 400; } .drag-target { height: 100%; width: 10px; position: fixed; top: 0; z-index: 998; } .drag-target.right-aligned { right: 0; } .sidenav.sidenav-fixed { left: 0; transform: translateX(0); position: fixed; } .sidenav.sidenav-fixed.right-aligned { right: 0; left: auto; } @media only screen and (max-width : 992px) { .sidenav.sidenav-fixed { transform: translateX(-105%); } .sidenav.sidenav-fixed.right-aligned { transform: translateX(105%); } .sidenav > a { padding: 0 15px; } .sidenav .user-view { padding: 15px 15px 0; } } .sidenav .collapsible-body > ul:not(.collapsible) > li.active, .sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active { background-color: #90caf9; } .sidenav .collapsible-body > ul:not(.collapsible) > li.active a, .sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active a { color: #fff; } .sidenav .collapsible-body { padding: 0; } .sidenav-overlay { position: fixed; top: 0; left: 0; right: 0; opacity: 0; height: 120vh; background-color: rgba(0, 0, 0, 0.5); z-index: 997; display: none; } .with-side-nav-open { padding-left: 300px; transition: padding 1s; } .btn, .btn-small, .btn-large, .btn-flat { border: none; border-radius: 2px; display: inline-block; height: 36px; line-height: 36px; padding: 0 16px; text-transform: uppercase; vertical-align: middle; -webkit-tap-highlight-color: transparent; } .btn.disabled, .btn-floating.disabled, .btn-large.disabled, .btn-small.disabled, .btn-flat.disabled, .btn:disabled, .btn-floating:disabled, .btn-large:disabled, .btn-small:disabled, .btn-flat:disabled, .btn[disabled], .btn-floating[disabled], .btn-large[disabled], .btn-small[disabled], .btn-flat[disabled] { pointer-events: none; background-color: #DFDFDF !important; box-shadow: none; color: #9F9F9F !important; cursor: default; } .btn.disabled:hover, .btn-floating.disabled:hover, .btn-large.disabled:hover, .btn-small.disabled:hover, .btn-flat.disabled:hover, .btn:disabled:hover, .btn-floating:disabled:hover, .btn-large:disabled:hover, .btn-small:disabled:hover, .btn-flat:disabled:hover, .btn[disabled]:hover, .btn-floating[disabled]:hover, .btn-large[disabled]:hover, .btn-small[disabled]:hover, .btn-flat[disabled]:hover { background-color: #DFDFDF !important; color: #9F9F9F !important; } .btn, .btn-small, .btn-large, .btn-floating, .btn-flat { font-size: 14px; outline: 0; } .btn i, .btn-floating i, .btn-large i, .btn-small i, .btn-flat i { font-size: 1.3rem; line-height: inherit; } .btn:focus, .btn-small:focus, .btn-large:focus, .btn-floating:focus { background-color: #1b1b1b; } .btn, .btn-small, .btn-large { text-decoration: none; color: #fff; background-color: #343434; text-align: center; letter-spacing: 0.5px; transition: background-color 0.2s ease-out; cursor: pointer; } .btn:hover, .btn-small:hover, .btn-large:hover { background-color: #414141; } .btn-floating { display: inline-block; color: #fff; position: relative; overflow: hidden; z-index: 1; width: 40px; height: 40px; line-height: 40px; padding: 0; background-color: #26a69a; border-radius: 50%; transition: background-color 0.3s; cursor: pointer; vertical-align: middle; } .btn-floating:hover { background-color: #26a69a; } .btn-floating:before { border-radius: 0; } .btn-floating.btn-large { width: 56px; height: 56px; padding: 0; } .btn-floating.btn-large.halfway-fab { bottom: 28px; } .btn-floating.btn-large i { line-height: 56px; } .btn-floating.btn-small { width: 32.4px; height: 32.4px; } .btn-floating.btn-small.halfway-fab { bottom: 16.2px; } .btn-floating.btn-small i { line-height: 32.4px; } .btn-floating.halfway-fab { position: absolute; right: 24px; bottom: 20px; } .btn-floating.halfway-fab.left { right: auto; left: 24px; } .btn-floating i { width: inherit; display: inline-block; text-align: center; color: #fff; font-size: 1.6rem; line-height: 40px; } button.btn-floating { border: none; } .fixed-action-btn { position: fixed; right: 23px; bottom: 23px; padding-top: 15px; margin-bottom: 0; z-index: 997; } .fixed-action-btn.active ul { visibility: visible; } .fixed-action-btn.direction-left, .fixed-action-btn.direction-right { padding: 0 0 0 15px; } .fixed-action-btn.direction-left ul, .fixed-action-btn.direction-right ul { text-align: right; right: 64px; top: 50%; transform: translateY(-50%); height: 100%; left: auto; /*width 100% only goes to width of button container */ width: 500px; } .fixed-action-btn.direction-left ul li, .fixed-action-btn.direction-right ul li { display: inline-block; margin: 7.5px 15px 0 0; } .fixed-action-btn.direction-right { padding: 0 15px 0 0; } .fixed-action-btn.direction-right ul { text-align: left; direction: rtl; left: 64px; right: auto; } .fixed-action-btn.direction-right ul li { margin: 7.5px 0 0 15px; } .fixed-action-btn.direction-bottom { padding: 0 0 15px 0; } .fixed-action-btn.direction-bottom ul { top: 64px; bottom: auto; display: flex; flex-direction: column-reverse; } .fixed-action-btn.direction-bottom ul li { margin: 15px 0 0 0; } .fixed-action-btn.toolbar { padding: 0; height: 56px; } .fixed-action-btn.toolbar.active > a i { opacity: 0; } .fixed-action-btn.toolbar ul { display: flex; top: 0; bottom: 0; z-index: 1; } .fixed-action-btn.toolbar ul li { flex: 1; display: inline-block; margin: 0; height: 100%; transition: none; } .fixed-action-btn.toolbar ul li a { display: block; overflow: hidden; position: relative; width: 100%; height: 100%; background-color: transparent; box-shadow: none; color: #fff; line-height: 56px; z-index: 1; } .fixed-action-btn.toolbar ul li a i { line-height: inherit; } .fixed-action-btn ul { left: 0; right: 0; text-align: center; position: absolute; bottom: 64px; margin: 0; visibility: hidden; } .fixed-action-btn ul li { margin-bottom: 15px; } .fixed-action-btn ul a.btn-floating { opacity: 0; } .fixed-action-btn .fab-backdrop { position: absolute; top: 0; left: 0; z-index: -1; width: 40px; height: 40px; background-color: #26a69a; border-radius: 50%; transform: scale(0); } .btn-flat { box-shadow: none; background-color: transparent; color: #343434; cursor: pointer; transition: background-color 0.2s; } .btn-flat:focus, .btn-flat:hover { box-shadow: none; } .btn-flat:focus { background-color: rgba(0, 0, 0, 0.1); } .btn-flat.disabled, .btn-flat.btn-flat[disabled] { background-color: transparent !important; color: #b3b3b3 !important; cursor: default; } .btn-large { height: 54px; line-height: 54px; font-size: 15px; padding: 0 28px; } .btn-large i { font-size: 1.6rem; } .btn-small { height: 32.4px; line-height: 32.4px; font-size: 13px; } .btn-small i { font-size: 1.2rem; } .btn-block { display: block; } .communTabHeader, .tabs.activeTab-2 .tab-header-over2 .tab-header, .tabs.activeTab-2 .tab-header-over1 .tab-header, .tabs.activeTab-2 .tab-header-over0 .tab-header, .tabs.activeTab-1 .tab-header-over2 .tab-header, .tabs.activeTab-1 .tab-header-over1 .tab-header, .tabs.activeTab-1 .tab-header-over0 .tab-header, .tabs.activeTab-0 .tab-header-over2 .tab-header, .tabs.activeTab-0 .tab-header-over1 .tab-header, .tabs.activeTab-0 .tab-header-over0 .tab-header { height: 100px; padding: 40px; } .tabs { min-height: calc(100% - 150px); margin-top: 30px; padding: 0 !important; border-radius: 40px !important; } .tabs .innerpage { min-height: 70VH !important; } .tabs .tabs-header-overlay { display: flex; height: 100px; } .tabs.activeTab-0 .tab-header-over0 { flex: 1; background-color: #80c4fd; border-radius: 40px 0 0 0; } .tabs.activeTab-0 .tab-header-over0 .tab-header { background-color: #cbe7fe; border-radius: 40px 40px 0 0; } .tabs.activeTab-0 .tab-header-over1 { flex: 1; background: linear-gradient(0.25turn, #cbe7fe, #35a2fb); border-radius: 0 0 0 0; } .tabs.activeTab-0 .tab-header-over1 .tab-header { background-color: #80c4fd; border-radius: 0 40px 0 40px; } .tabs.activeTab-0 .tab-header-over2 { flex: 1; background-color: #80c4fd; border-radius: 0 40px 0 0; } .tabs.activeTab-0 .tab-header-over2 .tab-header { background-color: #35a2fb; border-radius: 0 40px 0 40px; } .tabs.activeTab-1 .tab-header-over0 { flex: 1; background-color: #cbe7fe; border-radius: 40px 0 0 0; } .tabs.activeTab-1 .tab-header-over0 .tab-header { background-color: #80c4fd; border-radius: 40px 0 40px 0; } .tabs.activeTab-1 .tab-header-over1 { flex: 1; background: linear-gradient(0.25turn, #80c4fd, #35a2fb); border-radius: 0 0 0 0; } .tabs.activeTab-1 .tab-header-over1 .tab-header { background-color: #cbe7fe; border-radius: 40px 40px 0 0; } .tabs.activeTab-1 .tab-header-over2 { flex: 1; background-color: #cbe7fe; border-radius: 0 40px 0 0; } .tabs.activeTab-1 .tab-header-over2 .tab-header { background-color: #35a2fb; border-radius: 0 40px 0 40px; } .tabs.activeTab-2 .tab-header-over0 { flex: 1; background-color: #35a2fb; border-radius: 40px 0 0 0; } .tabs.activeTab-2 .tab-header-over0 .tab-header { background-color: #80c4fd; border-radius: 40px 0 40px 0; } .tabs.activeTab-2 .tab-header-over1 { flex: 1; background: linear-gradient(0.25turn, #80c4fd, #cbe7fe); border-radius: 0 0 0 0; } .tabs.activeTab-2 .tab-header-over1 .tab-header { background-color: #35a2fb; border-radius: 40px 0 40px 0; } .tabs.activeTab-2 .tab-header-over2 { flex: 1; background-color: #35a2fb; border-radius: 0 40px 0 0; } .tabs.activeTab-2 .tab-header-over2 .tab-header { background-color: #cbe7fe; border-radius: 40px 40px 0 0; } .tabs .tab-content { background-color: #cbe7fe; padding: 10px; border-top: 0; min-height: 70vh; border-radius: 0 0 40px 40px; padding-bottom: 20px; } .loader-overlay { z-index: 999; position: absolute; height: 100vh; width: 100vw; top: 0; left: 0; background-color: rgba(102, 100, 100, 0.603); display: flex; justify-content: center; align-items: center; flex-direction: column; } .loader-overlay .loader { border: 7px solid #f3f3f3; /* Light grey */ border-top: 7px solid #2ea2cc; /* Blue */ border-radius: 50%; width: 70px; height: 70px; animation: spin 2s linear infinite; } .loader-overlay .loader-text { margin-top: 20px; font-size: 25px; color: #2ea2cc; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .card-panel { transition: box-shadow 0.25s; padding: 24px; margin: 0.3333333333rem 0 0.6666666667rem 0; border-radius: 2px; background-color: #fff; } .card { position: relative; margin: 0.3333333333rem 0 0.6666666667rem 0; background-color: #fff; transition: box-shadow 0.25s; border-radius: 2px; } .card .card-title { font-size: 24px; font-weight: 300; } .card .card-title.activator { cursor: pointer; } .card.small, .card.medium, .card.large { position: relative; } .card.small .card-image, .card.medium .card-image, .card.large .card-image { max-height: 60%; overflow: hidden; } .card.small .card-image + .card-content, .card.medium .card-image + .card-content, .card.large .card-image + .card-content { max-height: 40%; } .card.small .card-content, .card.medium .card-content, .card.large .card-content { max-height: 100%; overflow: hidden; } .card.small .card-action, .card.medium .card-action, .card.large .card-action { position: absolute; bottom: 0; left: 0; right: 0; } .card.small { height: 300px; } .card.medium { height: 400px; } .card.large { height: 500px; } .card.horizontal { display: flex; } .card.horizontal.small .card-image, .card.horizontal.medium .card-image, .card.horizontal.large .card-image { height: 100%; max-height: none; overflow: visible; } .card.horizontal.small .card-image img, .card.horizontal.medium .card-image img, .card.horizontal.large .card-image img { height: 100%; } .card.horizontal .card-image { max-width: 50%; } .card.horizontal .card-image img { border-radius: 2px 0 0 2px; max-width: 100%; width: auto; } .card.horizontal .card-stacked { display: flex; flex-direction: column; flex: 1; position: relative; } .card.horizontal .card-stacked .card-content { flex-grow: 1; } .card.sticky-action .card-action { z-index: 2; } .card.sticky-action .card-reveal { z-index: 1; padding-bottom: 64px; } .card .card-image { position: relative; } .card .card-image img { display: block; border-radius: 2px 2px 0 0; position: relative; left: 0; right: 0; top: 0; bottom: 0; width: 100%; } .card .card-image .card-title { color: #fff; position: absolute; bottom: 0; left: 0; max-width: 100%; padding: 24px; } .card .card-content { padding: 24px; border-radius: 0 0 2px 2px; } .card .card-content p { margin: 0; } .card .card-content .card-title { display: block; line-height: 32px; margin-bottom: 8px; } .card .card-content .card-title i { line-height: 32px; } .card .card-action { background-color: inherit; border-top: 1px solid rgba(160, 160, 160, 0.2); position: relative; padding: 16px 24px; } .card .card-action:last-child { border-radius: 0 0 2px 2px; } .card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating) { color: #ffab40; margin-right: 24px; transition: color 0.3s ease; text-transform: uppercase; } .card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating):hover { color: #ffd8a6; } .card .card-reveal { padding: 24px; position: absolute; background-color: #fff; width: 100%; overflow-y: auto; left: 0; top: 100%; height: 100%; z-index: 3; display: none; } .card .card-reveal .card-title { cursor: pointer; display: block; } /* @license Copyright (c) 2014 The Polymer Project Authors. All rights reserved. This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as part of the polymer project is also subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt */ /**************************/ /* STYLES FOR THE SPINNER */ /**************************/ /* * Constants: * STROKEWIDTH = 3px * ARCSIZE = 270 degrees (amount of circle the arc takes up) * ARCTIME = 1333ms (time it takes to expand and contract arc) * ARCSTARTROT = 216 degrees (how much the start location of the arc * should rotate each time, 216 gives us a * 5 pointed star shape (it's 360/5 * 3). * For a 7 pointed star, we might do * 360/7 * 3 = 154.286) * CONTAINERWIDTH = 28px * SHRINK_TIME = 400ms */ .preloader-wrapper { display: inline-block; position: relative; width: 50px; height: 50px; } .preloader-wrapper.small { width: 36px; height: 36px; } .preloader-wrapper.big { width: 64px; height: 64px; } .preloader-wrapper.active { /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */ -webkit-animation: container-rotate 1568ms linear infinite; animation: container-rotate 1568ms linear infinite; } @-webkit-keyframes container-rotate { to { -webkit-transform: rotate(360deg); } } @keyframes container-rotate { to { transform: rotate(360deg); } } .spinner-layer { position: absolute; width: 100%; height: 100%; opacity: 0; border-color: #26a69a; } .spinner-blue, .spinner-blue-only { border-color: #4285f4; } .spinner-red, .spinner-red-only { border-color: #db4437; } .spinner-yellow, .spinner-yellow-only { border-color: #f4b400; } .spinner-green, .spinner-green-only { border-color: #0f9d58; } /** * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee): * * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't * guarantee that the animation will start _exactly_ after that value. So we avoid using * animation-delay and instead set custom keyframes for each color (as redundant as it * seems). * * We write out each animation in full (instead of separating animation-name, * animation-duration, etc.) because under the polyfill, Safari does not recognize those * specific properties properly, treats them as -webkit-animation, and overrides the * other animation rules. See https://github.com/Polymer/platform/issues/53. */ .active .spinner-layer.spinner-blue { /* durations: 4 * ARCTIME */ -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } .active .spinner-layer.spinner-red { /* durations: 4 * ARCTIME */ -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } .active .spinner-layer.spinner-yellow { /* durations: 4 * ARCTIME */ -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } .active .spinner-layer.spinner-green { /* durations: 4 * ARCTIME */ -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } .active .spinner-layer, .active .spinner-layer.spinner-blue-only, .active .spinner-layer.spinner-red-only, .active .spinner-layer.spinner-yellow-only, .active .spinner-layer.spinner-green-only { /* durations: 4 * ARCTIME */ opacity: 1; -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } @-webkit-keyframes fill-unfill-rotate { 12.5% { -webkit-transform: rotate(135deg); } /* 0.5 * ARCSIZE */ 25% { -webkit-transform: rotate(270deg); } /* 1 * ARCSIZE */ 37.5% { -webkit-transform: rotate(405deg); } /* 1.5 * ARCSIZE */ 50% { -webkit-transform: rotate(540deg); } /* 2 * ARCSIZE */ 62.5% { -webkit-transform: rotate(675deg); } /* 2.5 * ARCSIZE */ 75% { -webkit-transform: rotate(810deg); } /* 3 * ARCSIZE */ 87.5% { -webkit-transform: rotate(945deg); } /* 3.5 * ARCSIZE */ to { -webkit-transform: rotate(1080deg); } /* 4 * ARCSIZE */ } @keyframes fill-unfill-rotate { 12.5% { transform: rotate(135deg); } /* 0.5 * ARCSIZE */ 25% { transform: rotate(270deg); } /* 1 * ARCSIZE */ 37.5% { transform: rotate(405deg); } /* 1.5 * ARCSIZE */ 50% { transform: rotate(540deg); } /* 2 * ARCSIZE */ 62.5% { transform: rotate(675deg); } /* 2.5 * ARCSIZE */ 75% { transform: rotate(810deg); } /* 3 * ARCSIZE */ 87.5% { transform: rotate(945deg); } /* 3.5 * ARCSIZE */ to { transform: rotate(1080deg); } /* 4 * ARCSIZE */ } @-webkit-keyframes blue-fade-in-out { from { opacity: 1; } 25% { opacity: 1; } 26% { opacity: 0; } 89% { opacity: 0; } 90% { opacity: 1; } 100% { opacity: 1; } } @keyframes blue-fade-in-out { from { opacity: 1; } 25% { opacity: 1; } 26% { opacity: 0; } 89% { opacity: 0; } 90% { opacity: 1; } 100% { opacity: 1; } } @-webkit-keyframes red-fade-in-out { from { opacity: 0; } 15% { opacity: 0; } 25% { opacity: 1; } 50% { opacity: 1; } 51% { opacity: 0; } } @keyframes red-fade-in-out { from { opacity: 0; } 15% { opacity: 0; } 25% { opacity: 1; } 50% { opacity: 1; } 51% { opacity: 0; } } @-webkit-keyframes yellow-fade-in-out { from { opacity: 0; } 40% { opacity: 0; } 50% { opacity: 1; } 75% { opacity: 1; } 76% { opacity: 0; } } @keyframes yellow-fade-in-out { from { opacity: 0; } 40% { opacity: 0; } 50% { opacity: 1; } 75% { opacity: 1; } 76% { opacity: 0; } } @-webkit-keyframes green-fade-in-out { from { opacity: 0; } 65% { opacity: 0; } 75% { opacity: 1; } 90% { opacity: 1; } 100% { opacity: 0; } } @keyframes green-fade-in-out { from { opacity: 0; } 65% { opacity: 0; } 75% { opacity: 1; } 90% { opacity: 1; } 100% { opacity: 0; } } /** * Patch the gap that appear between the two adjacent div.circle-clipper while the * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11). */ .gap-patch { position: absolute; top: 0; left: 45%; width: 10%; height: 100%; overflow: hidden; border-color: inherit; } .gap-patch .circle { width: 1000%; left: -450%; } .circle-clipper { display: inline-block; position: relative; width: 50%; height: 100%; overflow: hidden; border-color: inherit; } .circle-clipper .circle { width: 200%; height: 100%; border-width: 3px; /* STROKEWIDTH */ border-style: solid; border-color: inherit; border-bottom-color: transparent !important; border-radius: 50%; -webkit-animation: none; animation: none; position: absolute; top: 0; right: 0; bottom: 0; } .circle-clipper.left .circle { left: 0; border-right-color: transparent !important; -webkit-transform: rotate(129deg); transform: rotate(129deg); } .circle-clipper.right .circle { left: -100%; border-left-color: transparent !important; -webkit-transform: rotate(-129deg); transform: rotate(-129deg); } .active .circle-clipper.left .circle { /* duration: ARCTIME */ -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } .active .circle-clipper.right .circle { /* duration: ARCTIME */ -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } @-webkit-keyframes left-spin { from { -webkit-transform: rotate(130deg); } 50% { -webkit-transform: rotate(-5deg); } to { -webkit-transform: rotate(130deg); } } @keyframes left-spin { from { transform: rotate(130deg); } 50% { transform: rotate(-5deg); } to { transform: rotate(130deg); } } @-webkit-keyframes right-spin { from { -webkit-transform: rotate(-130deg); } 50% { -webkit-transform: rotate(5deg); } to { -webkit-transform: rotate(-130deg); } } @keyframes right-spin { from { transform: rotate(-130deg); } 50% { transform: rotate(5deg); } to { transform: rotate(-130deg); } } #spinnerContainer.cooldown { /* duration: SHRINK_TIME */ -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); } @-webkit-keyframes fade-out { from { opacity: 1; } to { opacity: 0; } } @keyframes fade-out { from { opacity: 1; } to { opacity: 0; } } .progress { position: relative; height: 4px; display: block; width: 100%; background-color: #acece6; border-radius: 2px; margin: 0.3333333333rem 0 0.6666666667rem 0; overflow: hidden; } .progress .determinate { position: absolute; top: 0; left: 0; bottom: 0; background-color: #26a69a; transition: width 0.3s linear; } .progress .indeterminate { background-color: #26a69a; } .progress .indeterminate:before { content: ""; position: absolute; background-color: inherit; top: 0; left: 0; bottom: 0; will-change: left, right; animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; } .progress .indeterminate:after { content: ""; position: absolute; background-color: inherit; top: 0; left: 0; bottom: 0; will-change: left, right; animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; animation-delay: 1.15s; } @keyframes indeterminate { 0% { left: -35%; right: 100%; } 60% { left: 100%; right: -90%; } 100% { left: 100%; right: -90%; } } @keyframes indeterminate-short { 0% { left: -200%; right: 100%; } 60% { left: 107%; right: -8%; } 100% { left: 107%; right: -8%; } } .flash-message { position: absolute; padding: 2px 10px; border-radius: 5px; z-index: 99999; right: 0; bottom: 0; font-size: 14px; } .flash-message.info { background-color: #beddbe; border: 1px solid #728f72; } .flash-message.warn { background-color: #f5e6d0; border: 1px solid #ea7d17; } .flash-message.error { background-color: #e5b2bc; border: 1px solid #e33257; } @keyframes messageIn { from { right: 80%; } to { right: 0; } } .pulse { overflow: visible; position: relative; } .pulse::before { content: ""; display: block; position: absolute; width: 100%; height: 100%; top: 0; left: 0; background-color: inherit; border-radius: inherit; transition: opacity 0.3s, transform 0.3s; animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite; } @keyframes pulse-animation { 0% { opacity: 1; transform: scale(1); } 50% { opacity: 0; transform: scale(1.5); } 100% { opacity: 0; transform: scale(1.5); } } .dropdown-content { background-color: #fff; margin: 0; display: flow; min-width: 100px; overflow-y: auto; position: absolute; left: 0; top: 0; z-index: 9999; transform-origin: 0 0; } .dropdown-content:focus { outline: 0; } .dropdown-content li { clear: both; color: rgba(0, 0, 0, 0.87); cursor: pointer; min-height: 50px; line-height: 1.5rem; width: 100%; text-align: left; } .dropdown-content li:hover, .dropdown-content li.active { background-color: #eee; } .dropdown-content li:focus { outline: none; } .dropdown-content li.divider { min-height: 0; height: 1px; } .dropdown-content li > a, .dropdown-content li > span { font-size: 16px; color: #26a69a; display: block; line-height: 22px; padding: 14px 16px; } .dropdown-content li > span > label { top: 1px; left: 0; height: 18px; } .dropdown-content li > a > i { height: inherit; line-height: inherit; float: left; margin: 0 24px 0 0; width: 24px; } body.keyboard-focused .dropdown-content li:focus { background-color: #dadada; } .input-field.col .dropdown-content [type=checkbox] + label { top: 1px; left: 0; height: 18px; transform: none; } .dropdown-trigger { cursor: pointer; } nav { color: #fff; background-color: #90caf9; width: 100%; height: 56px; line-height: 56px; } nav.nav-extended { height: auto; } nav.nav-extended .nav-wrapper { display: flex; align-items: center; min-height: 56px; height: auto; } nav.nav-extended .nav-content { position: relative; line-height: normal; } nav a { color: #fff; } nav i, nav [class^=mdi-], nav [class*=mdi-], nav i.s-icons { display: block; font-size: 24px; height: 56px; line-height: 56px; } nav .nav-wrapper { position: relative; height: 100%; } @media only screen and (min-width : 993px) { nav a.sidenav-trigger { display: none; } } nav .sidenav-trigger { float: left; position: relative; z-index: 1; height: 56px; margin: 0 18px; } nav .sidenav-trigger i { height: 56px; line-height: 56px; } nav .brand-logo { position: absolute; color: #fff; display: inline-block; font-size: 2.1rem; padding: 0; } nav .brand-logo img.circle { height: 32px; width: 32px; } nav .brand-logo.center { left: 50%; transform: translateX(-50%); } @media only screen and (max-width : 992px) { nav .brand-logo { left: 50%; transform: translateX(-50%); } nav .brand-logo.left, nav .brand-logo.right { padding: 0; transform: none; } nav .brand-logo.left { left: 0.5rem; } nav .brand-logo.right { right: 0.5rem; left: auto; } } nav .brand-logo.right { right: 0.5rem; padding: 0; } nav .brand-logo i, nav .brand-logo [class^=mdi-], nav .brand-logo [class*=mdi-], nav .brand-logo i.s-icons { float: left; margin-right: 15px; } nav .nav-title { display: inline-block; font-size: 32px; padding: 28px 0; } nav ul { margin: 0; } nav ul li { transition: background-color 0.3s; float: left; padding: 0; } nav ul li.active { background-color: rgba(0, 0, 0, 0.1); } nav ul a { transition: background-color 0.3s; font-size: 1rem; color: #fff; display: block; padding: 0 15px; cursor: pointer; } nav ul a.btn, nav ul a.btn-small, nav ul a.btn-large, nav ul a.btn-flat, nav ul a.btn-floating { margin-top: -2px; margin-left: 15px; margin-right: 15px; } nav ul a.btn > .material-icons, nav ul a.btn-small > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-flat > .material-icons, nav ul a.btn-floating > .material-icons { height: inherit; line-height: inherit; } nav ul a:hover { background-color: rgba(0, 0, 0, 0.1); } nav ul.left { float: left; } nav form { height: 100%; } nav .input-field { margin: 0; height: 100%; } nav .input-field input { height: 100%; font-size: 1.2rem; border: none; padding-left: 2rem; } nav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid { border: none; box-shadow: none; } nav .input-field label { top: 0; left: 0; } nav .input-field label i { color: rgba(255, 255, 255, 0.7); transition: color 0.3s; } nav .input-field label.active i { color: #fff; } .navbar-fixed { position: relative; height: 56px; z-index: 997; } .navbar-fixed nav { position: fixed; } @media only screen and (min-width : 601px) { nav.nav-extended .nav-wrapper { min-height: 64px; } nav, nav .nav-wrapper i, nav a.sidenav-trigger, nav a.sidenav-trigger i { height: 64px; line-height: 64px; } .navbar-fixed { height: 64px; } }`, "",{"version":3,"sources":["webpack://./src/sass/d3v4pp.scss","webpack://./src/sass/_colors.scss","webpack://./src/sass/_code-dark.scss","webpack://./src/sass/_terminal.scss","webpack://./src/sass/_tooltip.scss","webpack://./src/sass/_shadows.scss","webpack://./src/sass/_waves.scss","webpack://./src/sass/_modal.scss","webpack://./src/sass/_global.scss","webpack://./src/sass/_variables.scss","webpack://./src/sass/_badges.scss","webpack://./src/sass/_chips.scss","webpack://./src/sass/_collapsible.scss","webpack://./src/sass/_collection.scss","webpack://./src/sass/forms/_forms.scss","webpack://./src/sass/forms/_input-fields.scss","webpack://./src/sass/forms/_radio-buttons.scss","webpack://./src/sass/forms/_checkboxes.scss","webpack://./src/sass/forms/_switches.scss","webpack://./src/sass/forms/_select.scss","webpack://./src/sass/forms/_file-input.scss","webpack://./src/sass/forms/_range.scss","webpack://./src/sass/_paralax.scss","webpack://./src/sass/_cube.scss","webpack://./src/sass/_grid.scss","webpack://./src/sass/_sidenav.scss","webpack://./src/sass/_buttons.scss","webpack://./src/sass/_tabs.scss","webpack://./src/sass/_loader.scss","webpack://./src/sass/_cards.scss","webpack://./src/sass/_preloader.scss","webpack://./src/sass/_progress.scss","webpack://./src/sass/_flash-message.scss","webpack://./src/sass/_pulse.scss","webpack://./src/sass/_dropdown.scss","webpack://./src/sass/_navbar.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACKV;EACE,oCAAA;ADFR;;ACIM;EACE,yBAAA;ADDR;;ACGM;EACE,oCAAA;ADAR;;ACGM;EACE,oCAAA;ADAR;;ACEM;EACE,yBAAA;ADCR;;ACCM;EACE,oCAAA;ADER;;ACTM;EACE,oCAAA;ADYR;;ACVM;EACE,yBAAA;ADaR;;ACXM;EACE,oCAAA;ADcR;;ACrBM;EACE,oCAAA;ADwBR;;ACtBM;EACE,yBAAA;ADyBR;;ACvBM;EACE,oCAAA;AD0BR;;ACjCM;EACE,oCAAA;ADoCR;;AClCM;EACE,yBAAA;ADqCR;;ACnCM;EACE,oCAAA;ADsCR;;AC7CM;EACE,oCAAA;ADgDR;;AC9CM;EACE,yBAAA;ADiDR;;AC/CM;EACE,oCAAA;ADkDR;;ACzDM;EACE,oCAAA;AD4DR;;AC1DM;EACE,yBAAA;AD6DR;;AC3DM;EACE,oCAAA;AD8DR;;ACrEM;EACE,oCAAA;ADwER;;ACtEM;EACE,yBAAA;ADyER;;ACvEM;EACE,oCAAA;AD0ER;;ACjFM;EACE,oCAAA;ADoFR;;AClFM;EACE,yBAAA;ADqFR;;ACnFM;EACE,oCAAA;ADsFR;;AC7FM;EACE,oCAAA;ADgGR;;AC9FM;EACE,yBAAA;ADiGR;;AC/FM;EACE,oCAAA;ADkGR;;ACzGM;EACE,oCAAA;AD4GR;;AC1GM;EACE,yBAAA;AD6GR;;AC3GM;EACE,oCAAA;AD8GR;;ACrHM;EACE,oCAAA;ADwHR;;ACtHM;EACE,yBAAA;ADyHR;;ACvHM;EACE,oCAAA;AD0HR;;ACjIM;EACE,oCAAA;ADoIR;;AClIM;EACE,yBAAA;ADqIR;;ACnIM;EACE,oCAAA;ADsIR;;AC7IM;EACE,oCAAA;ADgJR;;AC9IM;EACE,yBAAA;ADiJR;;AC/IM;EACE,oCAAA;ADkJR;;ACnKM;EACE,oCAAA;ADsKR;;ACpKM;EACE,yBAAA;ADuKR;;ACrKM;EACE,oCAAA;ADwKR;;ACrKM;EACE,oCAAA;ADwKR;;ACtKM;EACE,yBAAA;ADyKR;;ACvKM;EACE,oCAAA;AD0KR;;ACjLM;EACE,oCAAA;ADoLR;;AClLM;EACE,yBAAA;ADqLR;;ACnLM;EACE,oCAAA;ADsLR;;AC7LM;EACE,oCAAA;ADgMR;;AC9LM;EACE,yBAAA;ADiMR;;AC/LM;EACE,oCAAA;ADkMR;;ACzMM;EACE,oCAAA;AD4MR;;AC1MM;EACE,yBAAA;AD6MR;;AC3MM;EACE,oCAAA;AD8MR;;ACrNM;EACE,oCAAA;ADwNR;;ACtNM;EACE,yBAAA;ADyNR;;ACvNM;EACE,oCAAA;AD0NR;;ACjOM;EACE,oCAAA;ADoOR;;AClOM;EACE,yBAAA;ADqOR;;ACnOM;EACE,oCAAA;ADsOR;;AC7OM;EACE,oCAAA;ADgPR;;AC9OM;EACE,yBAAA;ADiPR;;AC/OM;EACE,oCAAA;ADkPR;;ACzPM;EACE,oCAAA;AD4PR;;AC1PM;EACE,yBAAA;AD6PR;;AC3PM;EACE,oCAAA;AD8PR;;ACrQM;EACE,oCAAA;ADwQR;;ACtQM;EACE,yBAAA;ADyQR;;ACvQM;EACE,oCAAA;AD0QR;;ACjRM;EACE,oCAAA;ADoRR;;AClRM;EACE,yBAAA;ADqRR;;ACnRM;EACE,oCAAA;ADsRR;;AC7RM;EACE,oCAAA;ADgSR;;AC9RM;EACE,yBAAA;ADiSR;;AC/RM;EACE,oCAAA;ADkSR;;ACzSM;EACE,oCAAA;AD4SR;;AC1SM;EACE,yBAAA;AD6SR;;AC3SM;EACE,oCAAA;AD8SR;;ACrTM;EACE,oCAAA;ADwTR;;ACtTM;EACE,yBAAA;ADyTR;;ACvTM;EACE,oCAAA;AD0TR;;AC3UM;EACE,oCAAA;AD8UR;;AC5UM;EACE,yBAAA;AD+UR;;AC7UM;EACE,oCAAA;ADgVR;;AC7UM;EACE,oCAAA;ADgVR;;AC9UM;EACE,yBAAA;ADiVR;;AC/UM;EACE,oCAAA;ADkVR;;ACzVM;EACE,oCAAA;AD4VR;;AC1VM;EACE,yBAAA;AD6VR;;AC3VM;EACE,oCAAA;AD8VR;;ACrWM;EACE,oCAAA;ADwWR;;ACtWM;EACE,yBAAA;ADyWR;;ACvWM;EACE,oCAAA;AD0WR;;ACjXM;EACE,oCAAA;ADoXR;;AClXM;EACE,yBAAA;ADqXR;;ACnXM;EACE,oCAAA;ADsXR;;AC7XM;EACE,oCAAA;ADgYR;;AC9XM;EACE,yBAAA;ADiYR;;AC/XM;EACE,oCAAA;ADkYR;;ACzYM;EACE,oCAAA;AD4YR;;AC1YM;EACE,yBAAA;AD6YR;;AC3YM;EACE,oCAAA;AD8YR;;ACrZM;EACE,oCAAA;ADwZR;;ACtZM;EACE,yBAAA;ADyZR;;ACvZM;EACE,oCAAA;AD0ZR;;ACjaM;EACE,oCAAA;ADoaR;;AClaM;EACE,yBAAA;ADqaR;;ACnaM;EACE,oCAAA;ADsaR;;AC7aM;EACE,oCAAA;ADgbR;;AC9aM;EACE,yBAAA;ADibR;;AC/aM;EACE,oCAAA;ADkbR;;ACzbM;EACE,oCAAA;AD4bR;;AC1bM;EACE,yBAAA;AD6bR;;AC3bM;EACE,oCAAA;AD8bR;;ACrcM;EACE,oCAAA;ADwcR;;ACtcM;EACE,yBAAA;ADycR;;ACvcM;EACE,oCAAA;AD0cR;;ACjdM;EACE,oCAAA;ADodR;;ACldM;EACE,yBAAA;ADqdR;;ACndM;EACE,oCAAA;ADsdR;;AC7dM;EACE,oCAAA;ADgeR;;AC9dM;EACE,yBAAA;ADieR;;AC/dM;EACE,oCAAA;ADkeR;;ACnfM;EACE,oCAAA;ADsfR;;ACpfM;EACE,yBAAA;ADufR;;ACrfM;EACE,oCAAA;ADwfR;;ACrfM;EACE,oCAAA;ADwfR;;ACtfM;EACE,yBAAA;ADyfR;;ACvfM;EACE,oCAAA;AD0fR;;ACjgBM;EACE,oCAAA;ADogBR;;AClgBM;EACE,yBAAA;ADqgBR;;ACngBM;EACE,oCAAA;ADsgBR;;AC7gBM;EACE,oCAAA;ADghBR;;AC9gBM;EACE,yBAAA;ADihBR;;AC/gBM;EACE,oCAAA;ADkhBR;;ACzhBM;EACE,oCAAA;AD4hBR;;AC1hBM;EACE,yBAAA;AD6hBR;;AC3hBM;EACE,oCAAA;AD8hBR;;ACriBM;EACE,oCAAA;ADwiBR;;ACtiBM;EACE,yBAAA;ADyiBR;;ACviBM;EACE,oCAAA;AD0iBR;;ACjjBM;EACE,oCAAA;ADojBR;;ACljBM;EACE,yBAAA;ADqjBR;;ACnjBM;EACE,oCAAA;ADsjBR;;AC7jBM;EACE,oCAAA;ADgkBR;;AC9jBM;EACE,yBAAA;ADikBR;;AC/jBM;EACE,oCAAA;ADkkBR;;ACzkBM;EACE,oCAAA;AD4kBR;;AC1kBM;EACE,yBAAA;AD6kBR;;AC3kBM;EACE,oCAAA;AD8kBR;;ACrlBM;EACE,oCAAA;ADwlBR;;ACtlBM;EACE,yBAAA;ADylBR;;ACvlBM;EACE,oCAAA;AD0lBR;;ACjmBM;EACE,oCAAA;ADomBR;;AClmBM;EACE,yBAAA;ADqmBR;;ACnmBM;EACE,oCAAA;ADsmBR;;AC7mBM;EACE,oCAAA;ADgnBR;;AC9mBM;EACE,yBAAA;ADinBR;;AC/mBM;EACE,oCAAA;ADknBR;;ACznBM;EACE,oCAAA;AD4nBR;;AC1nBM;EACE,yBAAA;AD6nBR;;AC3nBM;EACE,oCAAA;AD8nBR;;ACroBM;EACE,oCAAA;ADwoBR;;ACtoBM;EACE,yBAAA;ADyoBR;;ACvoBM;EACE,oCAAA;AD0oBR;;AC3pBM;EACE,oCAAA;AD8pBR;;AC5pBM;EACE,yBAAA;AD+pBR;;AC7pBM;EACE,oCAAA;ADgqBR;;AC7pBM;EACE,oCAAA;ADgqBR;;AC9pBM;EACE,yBAAA;ADiqBR;;AC/pBM;EACE,oCAAA;ADkqBR;;ACzqBM;EACE,oCAAA;AD4qBR;;AC1qBM;EACE,yBAAA;AD6qBR;;AC3qBM;EACE,oCAAA;AD8qBR;;ACrrBM;EACE,oCAAA;ADwrBR;;ACtrBM;EACE,yBAAA;ADyrBR;;ACvrBM;EACE,oCAAA;AD0rBR;;ACjsBM;EACE,oCAAA;ADosBR;;AClsBM;EACE,yBAAA;ADqsBR;;ACnsBM;EACE,oCAAA;ADssBR;;AC7sBM;EACE,oCAAA;ADgtBR;;AC9sBM;EACE,yBAAA;ADitBR;;AC/sBM;EACE,oCAAA;ADktBR;;ACztBM;EACE,oCAAA;AD4tBR;;AC1tBM;EACE,yBAAA;AD6tBR;;AC3tBM;EACE,oCAAA;AD8tBR;;ACruBM;EACE,oCAAA;ADwuBR;;ACtuBM;EACE,yBAAA;ADyuBR;;ACvuBM;EACE,oCAAA;AD0uBR;;ACjvBM;EACE,oCAAA;ADovBR;;AClvBM;EACE,yBAAA;ADqvBR;;ACnvBM;EACE,oCAAA;ADsvBR;;AC7vBM;EACE,oCAAA;ADgwBR;;AC9vBM;EACE,yBAAA;ADiwBR;;AC/vBM;EACE,oCAAA;ADkwBR;;ACzwBM;EACE,oCAAA;AD4wBR;;AC1wBM;EACE,yBAAA;AD6wBR;;AC3wBM;EACE,oCAAA;AD8wBR;;ACrxBM;EACE,oCAAA;ADwxBR;;ACtxBM;EACE,yBAAA;ADyxBR;;ACvxBM;EACE,oCAAA;AD0xBR;;ACjyBM;EACE,oCAAA;ADoyBR;;AClyBM;EACE,yBAAA;ADqyBR;;ACnyBM;EACE,oCAAA;ADsyBR;;AC7yBM;EACE,oCAAA;ADgzBR;;AC9yBM;EACE,yBAAA;ADizBR;;AC/yBM;EACE,oCAAA;ADkzBR;;ACn0BM;EACE,oCAAA;ADs0BR;;ACp0BM;EACE,yBAAA;ADu0BR;;ACr0BM;EACE,oCAAA;ADw0BR;;ACr0BM;EACE,oCAAA;ADw0BR;;ACt0BM;EACE,yBAAA;ADy0BR;;ACv0BM;EACE,oCAAA;AD00BR;;ACj1BM;EACE,oCAAA;ADo1BR;;ACl1BM;EACE,yBAAA;ADq1BR;;ACn1BM;EACE,oCAAA;ADs1BR;;AC71BM;EACE,oCAAA;ADg2BR;;AC91BM;EACE,yBAAA;ADi2BR;;AC/1BM;EACE,oCAAA;ADk2BR;;ACz2BM;EACE,oCAAA;AD42BR;;AC12BM;EACE,yBAAA;AD62BR;;AC32BM;EACE,oCAAA;AD82BR;;ACr3BM;EACE,oCAAA;ADw3BR;;ACt3BM;EACE,yBAAA;ADy3BR;;ACv3BM;EACE,oCAAA;AD03BR;;ACj4BM;EACE,oCAAA;ADo4BR;;ACl4BM;EACE,yBAAA;ADq4BR;;ACn4BM;EACE,oCAAA;ADs4BR;;AC74BM;EACE,oCAAA;ADg5BR;;AC94BM;EACE,yBAAA;ADi5BR;;AC/4BM;EACE,oCAAA;ADk5BR;;ACz5BM;EACE,oCAAA;AD45BR;;AC15BM;EACE,yBAAA;AD65BR;;AC35BM;EACE,oCAAA;AD85BR;;ACr6BM;EACE,oCAAA;ADw6BR;;ACt6BM;EACE,yBAAA;ADy6BR;;ACv6BM;EACE,oCAAA;AD06BR;;ACj7BM;EACE,oCAAA;ADo7BR;;ACl7BM;EACE,yBAAA;ADq7BR;;ACn7BM;EACE,oCAAA;ADs7BR;;AC77BM;EACE,oCAAA;ADg8BR;;AC97BM;EACE,yBAAA;ADi8BR;;AC/7BM;EACE,oCAAA;ADk8BR;;ACz8BM;EACE,oCAAA;AD48BR;;AC18BM;EACE,yBAAA;AD68BR;;AC38BM;EACE,oCAAA;AD88BR;;ACr9BM;EACE,oCAAA;ADw9BR;;ACt9BM;EACE,yBAAA;ADy9BR;;ACv9BM;EACE,oCAAA;AD09BR;;AC3+BM;EACE,oCAAA;AD8+BR;;AC5+BM;EACE,yBAAA;AD++BR;;AC7+BM;EACE,oCAAA;ADg/BR;;AC7+BM;EACE,oCAAA;ADg/BR;;AC9+BM;EACE,yBAAA;ADi/BR;;AC/+BM;EACE,oCAAA;ADk/BR;;ACz/BM;EACE,oCAAA;AD4/BR;;AC1/BM;EACE,yBAAA;AD6/BR;;AC3/BM;EACE,oCAAA;AD8/BR;;ACrgCM;EACE,oCAAA;ADwgCR;;ACtgCM;EACE,yBAAA;ADygCR;;ACvgCM;EACE,oCAAA;AD0gCR;;ACjhCM;EACE,oCAAA;ADohCR;;AClhCM;EACE,yBAAA;ADqhCR;;ACnhCM;EACE,oCAAA;ADshCR;;AC7hCM;EACE,oCAAA;ADgiCR;;AC9hCM;EACE,yBAAA;ADiiCR;;AC/hCM;EACE,oCAAA;ADkiCR;;ACziCM;EACE,oCAAA;AD4iCR;;AC1iCM;EACE,yBAAA;AD6iCR;;AC3iCM;EACE,oCAAA;AD8iCR;;ACrjCM;EACE,oCAAA;ADwjCR;;ACtjCM;EACE,yBAAA;ADyjCR;;ACvjCM;EACE,oCAAA;AD0jCR;;ACjkCM;EACE,oCAAA;ADokCR;;AClkCM;EACE,yBAAA;ADqkCR;;ACnkCM;EACE,oCAAA;ADskCR;;AC7kCM;EACE,oCAAA;ADglCR;;AC9kCM;EACE,yBAAA;ADilCR;;AC/kCM;EACE,oCAAA;ADklCR;;ACzlCM;EACE,oCAAA;AD4lCR;;AC1lCM;EACE,yBAAA;AD6lCR;;AC3lCM;EACE,oCAAA;AD8lCR;;ACrmCM;EACE,oCAAA;ADwmCR;;ACtmCM;EACE,yBAAA;ADymCR;;ACvmCM;EACE,oCAAA;AD0mCR;;ACjnCM;EACE,oCAAA;ADonCR;;AClnCM;EACE,yBAAA;ADqnCR;;ACnnCM;EACE,oCAAA;ADsnCR;;AC7nCM;EACE,oCAAA;ADgoCR;;AC9nCM;EACE,yBAAA;ADioCR;;AC/nCM;EACE,oCAAA;ADkoCR;;ACnpCM;EACE,oCAAA;ADspCR;;ACppCM;EACE,yBAAA;ADupCR;;ACrpCM;EACE,oCAAA;ADwpCR;;ACrpCM;EACE,oCAAA;ADwpCR;;ACtpCM;EACE,yBAAA;ADypCR;;ACvpCM;EACE,oCAAA;AD0pCR;;ACjqCM;EACE,oCAAA;ADoqCR;;AClqCM;EACE,yBAAA;ADqqCR;;ACnqCM;EACE,oCAAA;ADsqCR;;AC7qCM;EACE,oCAAA;ADgrCR;;AC9qCM;EACE,yBAAA;ADirCR;;AC/qCM;EACE,oCAAA;ADkrCR;;ACzrCM;EACE,oCAAA;AD4rCR;;AC1rCM;EACE,yBAAA;AD6rCR;;AC3rCM;EACE,oCAAA;AD8rCR;;ACrsCM;EACE,oCAAA;ADwsCR;;ACtsCM;EACE,yBAAA;ADysCR;;ACvsCM;EACE,oCAAA;AD0sCR;;ACjtCM;EACE,oCAAA;ADotCR;;ACltCM;EACE,yBAAA;ADqtCR;;ACntCM;EACE,oCAAA;ADstCR;;AC7tCM;EACE,oCAAA;ADguCR;;AC9tCM;EACE,yBAAA;ADiuCR;;AC/tCM;EACE,oCAAA;ADkuCR;;ACzuCM;EACE,oCAAA;AD4uCR;;AC1uCM;EACE,yBAAA;AD6uCR;;AC3uCM;EACE,oCAAA;AD8uCR;;ACrvCM;EACE,oCAAA;ADwvCR;;ACtvCM;EACE,yBAAA;ADyvCR;;ACvvCM;EACE,oCAAA;AD0vCR;;ACjwCM;EACE,oCAAA;ADowCR;;AClwCM;EACE,yBAAA;ADqwCR;;ACnwCM;EACE,oCAAA;ADswCR;;AC7wCM;EACE,oCAAA;ADgxCR;;AC9wCM;EACE,yBAAA;ADixCR;;AC/wCM;EACE,oCAAA;ADkxCR;;ACzxCM;EACE,oCAAA;AD4xCR;;AC1xCM;EACE,yBAAA;AD6xCR;;AC3xCM;EACE,oCAAA;AD8xCR;;ACryCM;EACE,oCAAA;ADwyCR;;ACtyCM;EACE,yBAAA;ADyyCR;;ACvyCM;EACE,oCAAA;AD0yCR;;AC3zCM;EACE,oCAAA;AD8zCR;;AC5zCM;EACE,yBAAA;AD+zCR;;AC7zCM;EACE,oCAAA;ADg0CR;;AC7zCM;EACE,oCAAA;ADg0CR;;AC9zCM;EACE,yBAAA;ADi0CR;;AC/zCM;EACE,oCAAA;ADk0CR;;ACz0CM;EACE,oCAAA;AD40CR;;AC10CM;EACE,yBAAA;AD60CR;;AC30CM;EACE,oCAAA;AD80CR;;ACr1CM;EACE,oCAAA;ADw1CR;;ACt1CM;EACE,yBAAA;ADy1CR;;ACv1CM;EACE,oCAAA;AD01CR;;ACj2CM;EACE,oCAAA;ADo2CR;;ACl2CM;EACE,yBAAA;ADq2CR;;ACn2CM;EACE,oCAAA;ADs2CR;;AC72CM;EACE,oCAAA;ADg3CR;;AC92CM;EACE,yBAAA;ADi3CR;;AC/2CM;EACE,oCAAA;ADk3CR;;ACz3CM;EACE,oCAAA;AD43CR;;AC13CM;EACE,yBAAA;AD63CR;;AC33CM;EACE,oCAAA;AD83CR;;ACr4CM;EACE,oCAAA;ADw4CR;;ACt4CM;EACE,yBAAA;ADy4CR;;ACv4CM;EACE,oCAAA;AD04CR;;ACj5CM;EACE,oCAAA;ADo5CR;;ACl5CM;EACE,yBAAA;ADq5CR;;ACn5CM;EACE,oCAAA;ADs5CR;;AC75CM;EACE,oCAAA;ADg6CR;;AC95CM;EACE,yBAAA;ADi6CR;;AC/5CM;EACE,oCAAA;ADk6CR;;ACz6CM;EACE,oCAAA;AD46CR;;AC16CM;EACE,yBAAA;AD66CR;;AC36CM;EACE,oCAAA;AD86CR;;ACr7CM;EACE,oCAAA;ADw7CR;;ACt7CM;EACE,yBAAA;ADy7CR;;ACv7CM;EACE,oCAAA;AD07CR;;ACj8CM;EACE,oCAAA;ADo8CR;;ACl8CM;EACE,yBAAA;ADq8CR;;ACn8CM;EACE,oCAAA;ADs8CR;;AC78CM;EACE,oCAAA;ADg9CR;;AC98CM;EACE,yBAAA;ADi9CR;;AC/8CM;EACE,oCAAA;ADk9CR;;ACn+CM;EACE,oCAAA;ADs+CR;;ACp+CM;EACE,yBAAA;ADu+CR;;ACr+CM;EACE,oCAAA;ADw+CR;;ACr+CM;EACE,oCAAA;ADw+CR;;ACt+CM;EACE,yBAAA;ADy+CR;;ACv+CM;EACE,oCAAA;AD0+CR;;ACj/CM;EACE,oCAAA;ADo/CR;;ACl/CM;EACE,yBAAA;ADq/CR;;ACn/CM;EACE,oCAAA;ADs/CR;;AC7/CM;EACE,oCAAA;ADggDR;;AC9/CM;EACE,yBAAA;ADigDR;;AC//CM;EACE,oCAAA;ADkgDR;;ACzgDM;EACE,oCAAA;AD4gDR;;AC1gDM;EACE,yBAAA;AD6gDR;;AC3gDM;EACE,oCAAA;AD8gDR;;ACrhDM;EACE,oCAAA;ADwhDR;;ACthDM;EACE,yBAAA;ADyhDR;;ACvhDM;EACE,oCAAA;AD0hDR;;ACjiDM;EACE,oCAAA;ADoiDR;;ACliDM;EACE,yBAAA;ADqiDR;;ACniDM;EACE,oCAAA;ADsiDR;;AC7iDM;EACE,oCAAA;ADgjDR;;AC9iDM;EACE,yBAAA;ADijDR;;AC/iDM;EACE,oCAAA;ADkjDR;;ACzjDM;EACE,oCAAA;AD4jDR;;AC1jDM;EACE,yBAAA;AD6jDR;;AC3jDM;EACE,oCAAA;AD8jDR;;ACrkDM;EACE,oCAAA;ADwkDR;;ACtkDM;EACE,yBAAA;ADykDR;;ACvkDM;EACE,oCAAA;AD0kDR;;ACjlDM;EACE,oCAAA;ADolDR;;ACllDM;EACE,yBAAA;ADqlDR;;ACnlDM;EACE,oCAAA;ADslDR;;AC7lDM;EACE,oCAAA;ADgmDR;;AC9lDM;EACE,yBAAA;ADimDR;;AC/lDM;EACE,oCAAA;ADkmDR;;ACzmDM;EACE,oCAAA;AD4mDR;;AC1mDM;EACE,yBAAA;AD6mDR;;AC3mDM;EACE,oCAAA;AD8mDR;;ACrnDM;EACE,oCAAA;ADwnDR;;ACtnDM;EACE,yBAAA;ADynDR;;ACvnDM;EACE,oCAAA;AD0nDR;;AC3oDM;EACE,oCAAA;AD8oDR;;AC5oDM;EACE,yBAAA;AD+oDR;;AC7oDM;EACE,oCAAA;ADgpDR;;AC7oDM;EACE,oCAAA;ADgpDR;;AC9oDM;EACE,yBAAA;ADipDR;;AC/oDM;EACE,oCAAA;ADkpDR;;ACzpDM;EACE,oCAAA;AD4pDR;;AC1pDM;EACE,yBAAA;AD6pDR;;AC3pDM;EACE,oCAAA;AD8pDR;;ACrqDM;EACE,oCAAA;ADwqDR;;ACtqDM;EACE,yBAAA;ADyqDR;;ACvqDM;EACE,oCAAA;AD0qDR;;ACjrDM;EACE,oCAAA;ADorDR;;AClrDM;EACE,yBAAA;ADqrDR;;ACnrDM;EACE,oCAAA;ADsrDR;;AC7rDM;EACE,oCAAA;ADgsDR;;AC9rDM;EACE,yBAAA;ADisDR;;AC/rDM;EACE,oCAAA;ADksDR;;ACzsDM;EACE,oCAAA;AD4sDR;;AC1sDM;EACE,yBAAA;AD6sDR;;AC3sDM;EACE,oCAAA;AD8sDR;;ACrtDM;EACE,oCAAA;ADwtDR;;ACttDM;EACE,yBAAA;ADytDR;;ACvtDM;EACE,oCAAA;AD0tDR;;ACjuDM;EACE,oCAAA;ADouDR;;ACluDM;EACE,yBAAA;ADquDR;;ACnuDM;EACE,oCAAA;ADsuDR;;AC7uDM;EACE,oCAAA;ADgvDR;;AC9uDM;EACE,yBAAA;ADivDR;;AC/uDM;EACE,oCAAA;ADkvDR;;ACzvDM;EACE,oCAAA;AD4vDR;;AC1vDM;EACE,yBAAA;AD6vDR;;AC3vDM;EACE,oCAAA;AD8vDR;;ACrwDM;EACE,oCAAA;ADwwDR;;ACtwDM;EACE,yBAAA;ADywDR;;ACvwDM;EACE,oCAAA;AD0wDR;;ACjxDM;EACE,oCAAA;ADoxDR;;AClxDM;EACE,yBAAA;ADqxDR;;ACnxDM;EACE,oCAAA;ADsxDR;;AC7xDM;EACE,oCAAA;ADgyDR;;AC9xDM;EACE,yBAAA;ADiyDR;;AC/xDM;EACE,oCAAA;ADkyDR;;ACnzDM;EACE,oCAAA;ADszDR;;ACpzDM;EACE,yBAAA;ADuzDR;;ACrzDM;EACE,oCAAA;ADwzDR;;ACrzDM;EACE,oCAAA;ADwzDR;;ACtzDM;EACE,yBAAA;ADyzDR;;ACvzDM;EACE,oCAAA;AD0zDR;;ACj0DM;EACE,oCAAA;ADo0DR;;ACl0DM;EACE,yBAAA;ADq0DR;;ACn0DM;EACE,oCAAA;ADs0DR;;AC70DM;EACE,oCAAA;ADg1DR;;AC90DM;EACE,yBAAA;ADi1DR;;AC/0DM;EACE,oCAAA;ADk1DR;;ACz1DM;EACE,oCAAA;AD41DR;;AC11DM;EACE,yBAAA;AD61DR;;AC31DM;EACE,oCAAA;AD81DR;;ACr2DM;EACE,oCAAA;ADw2DR;;ACt2DM;EACE,yBAAA;ADy2DR;;ACv2DM;EACE,oCAAA;AD02DR;;ACj3DM;EACE,oCAAA;ADo3DR;;ACl3DM;EACE,yBAAA;ADq3DR;;ACn3DM;EACE,oCAAA;ADs3DR;;AC73DM;EACE,oCAAA;ADg4DR;;AC93DM;EACE,yBAAA;ADi4DR;;AC/3DM;EACE,oCAAA;ADk4DR;;ACz4DM;EACE,oCAAA;AD44DR;;AC14DM;EACE,yBAAA;AD64DR;;AC34DM;EACE,oCAAA;AD84DR;;ACr5DM;EACE,oCAAA;ADw5DR;;ACt5DM;EACE,yBAAA;ADy5DR;;ACv5DM;EACE,oCAAA;AD05DR;;ACj6DM;EACE,oCAAA;ADo6DR;;ACl6DM;EACE,yBAAA;ADq6DR;;ACn6DM;EACE,oCAAA;ADs6DR;;AC76DM;EACE,oCAAA;ADg7DR;;AC96DM;EACE,yBAAA;ADi7DR;;AC/6DM;EACE,oCAAA;ADk7DR;;ACz7DM;EACE,oCAAA;AD47DR;;AC17DM;EACE,yBAAA;AD67DR;;AC37DM;EACE,oCAAA;AD87DR;;ACr8DM;EACE,oCAAA;ADw8DR;;ACt8DM;EACE,yBAAA;ADy8DR;;ACv8DM;EACE,oCAAA;AD08DR;;AC39DM;EACE,oCAAA;AD89DR;;AC59DM;EACE,yBAAA;AD+9DR;;AC79DM;EACE,oCAAA;ADg+DR;;AC79DM;EACE,oCAAA;ADg+DR;;AC99DM;EACE,yBAAA;ADi+DR;;AC/9DM;EACE,oCAAA;ADk+DR;;ACz+DM;EACE,oCAAA;AD4+DR;;AC1+DM;EACE,yBAAA;AD6+DR;;AC3+DM;EACE,oCAAA;AD8+DR;;ACr/DM;EACE,oCAAA;ADw/DR;;ACt/DM;EACE,yBAAA;ADy/DR;;ACv/DM;EACE,oCAAA;AD0/DR;;ACjgEM;EACE,oCAAA;ADogER;;AClgEM;EACE,yBAAA;ADqgER;;ACngEM;EACE,oCAAA;ADsgER;;AC7gEM;EACE,oCAAA;ADghER;;AC9gEM;EACE,yBAAA;ADihER;;AC/gEM;EACE,oCAAA;ADkhER;;ACzhEM;EACE,oCAAA;AD4hER;;AC1hEM;EACE,yBAAA;AD6hER;;AC3hEM;EACE,oCAAA;AD8hER;;ACriEM;EACE,oCAAA;ADwiER;;ACtiEM;EACE,yBAAA;ADyiER;;ACviEM;EACE,oCAAA;AD0iER;;ACjjEM;EACE,oCAAA;ADojER;;ACljEM;EACE,yBAAA;ADqjER;;ACnjEM;EACE,oCAAA;ADsjER;;AC7jEM;EACE,oCAAA;ADgkER;;AC9jEM;EACE,yBAAA;ADikER;;AC/jEM;EACE,oCAAA;ADkkER;;ACzkEM;EACE,oCAAA;AD4kER;;AC1kEM;EACE,yBAAA;AD6kER;;AC3kEM;EACE,oCAAA;AD8kER;;ACrlEM;EACE,oCAAA;ADwlER;;ACtlEM;EACE,yBAAA;ADylER;;ACvlEM;EACE,oCAAA;AD0lER;;ACjmEM;EACE,oCAAA;ADomER;;AClmEM;EACE,yBAAA;ADqmER;;ACnmEM;EACE,oCAAA;ADsmER;;AC7mEM;EACE,oCAAA;ADgnER;;AC9mEM;EACE,yBAAA;ADinER;;AC/mEM;EACE,oCAAA;ADknER;;ACnoEM;EACE,oCAAA;ADsoER;;ACpoEM;EACE,yBAAA;ADuoER;;ACroEM;EACE,oCAAA;ADwoER;;ACroEM;EACE,oCAAA;ADwoER;;ACtoEM;EACE,yBAAA;ADyoER;;ACvoEM;EACE,oCAAA;AD0oER;;ACjpEM;EACE,oCAAA;ADopER;;AClpEM;EACE,yBAAA;ADqpER;;ACnpEM;EACE,oCAAA;ADspER;;AC7pEM;EACE,oCAAA;ADgqER;;AC9pEM;EACE,yBAAA;ADiqER;;AC/pEM;EACE,oCAAA;ADkqER;;ACzqEM;EACE,oCAAA;AD4qER;;AC1qEM;EACE,yBAAA;AD6qER;;AC3qEM;EACE,oCAAA;AD8qER;;ACrrEM;EACE,oCAAA;ADwrER;;ACtrEM;EACE,yBAAA;ADyrER;;ACvrEM;EACE,oCAAA;AD0rER;;ACjsEM;EACE,oCAAA;ADosER;;AClsEM;EACE,yBAAA;ADqsER;;ACnsEM;EACE,oCAAA;ADssER;;AC7sEM;EACE,oCAAA;ADgtER;;AC9sEM;EACE,yBAAA;ADitER;;AC/sEM;EACE,oCAAA;ADktER;;ACztEM;EACE,oCAAA;AD4tER;;AC1tEM;EACE,yBAAA;AD6tER;;AC3tEM;EACE,oCAAA;AD8tER;;ACruEM;EACE,oCAAA;ADwuER;;ACtuEM;EACE,yBAAA;ADyuER;;ACvuEM;EACE,oCAAA;AD0uER;;ACjvEM;EACE,oCAAA;ADovER;;AClvEM;EACE,yBAAA;ADqvER;;ACnvEM;EACE,oCAAA;ADsvER;;AC7vEM;EACE,oCAAA;ADgwER;;AC9vEM;EACE,yBAAA;ADiwER;;AC/vEM;EACE,oCAAA;ADkwER;;ACzwEM;EACE,oCAAA;AD4wER;;AC1wEM;EACE,yBAAA;AD6wER;;AC3wEM;EACE,oCAAA;AD8wER;;ACrxEM;EACE,oCAAA;ADwxER;;ACtxEM;EACE,yBAAA;ADyxER;;ACvxEM;EACE,oCAAA;AD0xER;;AC3yEM;EACE,oCAAA;AD8yER;;AC5yEM;EACE,yBAAA;AD+yER;;AC7yEM;EACE,oCAAA;ADgzER;;AC7yEM;EACE,oCAAA;ADgzER;;AC9yEM;EACE,yBAAA;ADizER;;AC/yEM;EACE,oCAAA;ADkzER;;ACzzEM;EACE,oCAAA;AD4zER;;AC1zEM;EACE,yBAAA;AD6zER;;AC3zEM;EACE,oCAAA;AD8zER;;ACr0EM;EACE,oCAAA;ADw0ER;;ACt0EM;EACE,yBAAA;ADy0ER;;ACv0EM;EACE,oCAAA;AD00ER;;ACj1EM;EACE,oCAAA;ADo1ER;;ACl1EM;EACE,yBAAA;ADq1ER;;ACn1EM;EACE,oCAAA;ADs1ER;;AC71EM;EACE,oCAAA;ADg2ER;;AC91EM;EACE,yBAAA;ADi2ER;;AC/1EM;EACE,oCAAA;ADk2ER;;ACz2EM;EACE,oCAAA;AD42ER;;AC12EM;EACE,yBAAA;AD62ER;;AC32EM;EACE,oCAAA;AD82ER;;ACr3EM;EACE,oCAAA;ADw3ER;;ACt3EM;EACE,yBAAA;ADy3ER;;ACv3EM;EACE,oCAAA;AD03ER;;ACj4EM;EACE,oCAAA;ADo4ER;;ACl4EM;EACE,yBAAA;ADq4ER;;ACn4EM;EACE,oCAAA;ADs4ER;;AC74EM;EACE,oCAAA;ADg5ER;;AC94EM;EACE,yBAAA;ADi5ER;;AC/4EM;EACE,oCAAA;ADk5ER;;ACz5EM;EACE,oCAAA;AD45ER;;AC15EM;EACE,yBAAA;AD65ER;;AC35EM;EACE,oCAAA;AD85ER;;ACr6EM;EACE,oCAAA;ADw6ER;;ACt6EM;EACE,yBAAA;ADy6ER;;ACv6EM;EACE,oCAAA;AD06ER;;ACj7EM;EACE,oCAAA;ADo7ER;;ACl7EM;EACE,yBAAA;ADq7ER;;ACn7EM;EACE,oCAAA;ADs7ER;;AC77EM;EACE,oCAAA;ADg8ER;;AC97EM;EACE,yBAAA;ADi8ER;;AC/7EM;EACE,oCAAA;ADk8ER;;ACn9EM;EACE,oCAAA;ADs9ER;;ACp9EM;EACE,yBAAA;ADu9ER;;ACr9EM;EACE,oCAAA;ADw9ER;;ACr9EM;EACE,oCAAA;ADw9ER;;ACt9EM;EACE,yBAAA;ADy9ER;;ACv9EM;EACE,oCAAA;AD09ER;;ACj+EM;EACE,oCAAA;ADo+ER;;ACl+EM;EACE,yBAAA;ADq+ER;;ACn+EM;EACE,oCAAA;ADs+ER;;AC7+EM;EACE,oCAAA;ADg/ER;;AC9+EM;EACE,yBAAA;ADi/ER;;AC/+EM;EACE,oCAAA;ADk/ER;;ACz/EM;EACE,oCAAA;AD4/ER;;AC1/EM;EACE,yBAAA;AD6/ER;;AC3/EM;EACE,oCAAA;AD8/ER;;ACrgFM;EACE,oCAAA;ADwgFR;;ACtgFM;EACE,yBAAA;ADygFR;;ACvgFM;EACE,oCAAA;AD0gFR;;ACjhFM;EACE,oCAAA;ADohFR;;AClhFM;EACE,yBAAA;ADqhFR;;ACnhFM;EACE,oCAAA;ADshFR;;AC7hFM;EACE,oCAAA;ADgiFR;;AC9hFM;EACE,yBAAA;ADiiFR;;AC/hFM;EACE,oCAAA;ADkiFR;;ACziFM;EACE,oCAAA;AD4iFR;;AC1iFM;EACE,yBAAA;AD6iFR;;AC3iFM;EACE,oCAAA;AD8iFR;;ACrjFM;EACE,oCAAA;ADwjFR;;ACtjFM;EACE,yBAAA;ADyjFR;;ACvjFM;EACE,oCAAA;AD0jFR;;ACjkFM;EACE,oCAAA;ADokFR;;AClkFM;EACE,yBAAA;ADqkFR;;ACnkFM;EACE,oCAAA;ADskFR;;AC7kFM;EACE,oCAAA;ADglFR;;AC9kFM;EACE,yBAAA;ADilFR;;AC/kFM;EACE,oCAAA;ADklFR;;ACzlFM;EACE,oCAAA;AD4lFR;;AC1lFM;EACE,yBAAA;AD6lFR;;AC3lFM;EACE,oCAAA;AD8lFR;;ACrmFM;EACE,oCAAA;ADwmFR;;ACtmFM;EACE,yBAAA;ADymFR;;ACvmFM;EACE,oCAAA;AD0mFR;;AC3nFM;EACE,oCAAA;AD8nFR;;AC5nFM;EACE,yBAAA;AD+nFR;;AC7nFM;EACE,oCAAA;ADgoFR;;AC7nFM;EACE,oCAAA;ADgoFR;;AC9nFM;EACE,yBAAA;ADioFR;;AC/nFM;EACE,oCAAA;ADkoFR;;ACzoFM;EACE,oCAAA;AD4oFR;;AC1oFM;EACE,yBAAA;AD6oFR;;AC3oFM;EACE,oCAAA;AD8oFR;;ACrpFM;EACE,oCAAA;ADwpFR;;ACtpFM;EACE,yBAAA;ADypFR;;ACvpFM;EACE,oCAAA;AD0pFR;;ACjqFM;EACE,oCAAA;ADoqFR;;AClqFM;EACE,yBAAA;ADqqFR;;ACnqFM;EACE,oCAAA;ADsqFR;;AC7qFM;EACE,oCAAA;ADgrFR;;AC9qFM;EACE,yBAAA;ADirFR;;AC/qFM;EACE,oCAAA;ADkrFR;;ACzrFM;EACE,oCAAA;AD4rFR;;AC1rFM;EACE,yBAAA;AD6rFR;;AC3rFM;EACE,oCAAA;AD8rFR;;ACrsFM;EACE,oCAAA;ADwsFR;;ACtsFM;EACE,yBAAA;ADysFR;;ACvsFM;EACE,oCAAA;AD0sFR;;ACjtFM;EACE,oCAAA;ADotFR;;ACltFM;EACE,yBAAA;ADqtFR;;ACntFM;EACE,oCAAA;ADstFR;;AC7tFM;EACE,oCAAA;ADguFR;;AC9tFM;EACE,yBAAA;ADiuFR;;AC/tFM;EACE,oCAAA;ADkuFR;;ACzuFM;EACE,oCAAA;AD4uFR;;AC1uFM;EACE,yBAAA;AD6uFR;;AC3uFM;EACE,oCAAA;AD8uFR;;ACrvFM;EACE,oCAAA;ADwvFR;;ACtvFM;EACE,yBAAA;ADyvFR;;ACvvFM;EACE,oCAAA;AD0vFR;;ACjwFM;EACE,oCAAA;ADowFR;;AClwFM;EACE,yBAAA;ADqwFR;;ACnwFM;EACE,oCAAA;ADswFR;;AC7wFM;EACE,oCAAA;ADgxFR;;AC9wFM;EACE,yBAAA;ADixFR;;AC/wFM;EACE,oCAAA;ADkxFR;;ACnyFM;EACE,oCAAA;ADsyFR;;ACpyFM;EACE,yBAAA;ADuyFR;;ACryFM;EACE,oCAAA;ADwyFR;;ACryFM;EACE,oCAAA;ADwyFR;;ACtyFM;EACE,yBAAA;ADyyFR;;ACvyFM;EACE,oCAAA;AD0yFR;;ACjzFM;EACE,oCAAA;ADozFR;;AClzFM;EACE,yBAAA;ADqzFR;;ACnzFM;EACE,oCAAA;ADszFR;;AC7zFM;EACE,oCAAA;ADg0FR;;AC9zFM;EACE,yBAAA;ADi0FR;;AC/zFM;EACE,oCAAA;ADk0FR;;ACz0FM;EACE,oCAAA;AD40FR;;AC10FM;EACE,yBAAA;AD60FR;;AC30FM;EACE,oCAAA;AD80FR;;ACr1FM;EACE,oCAAA;ADw1FR;;ACt1FM;EACE,yBAAA;ADy1FR;;ACv1FM;EACE,oCAAA;AD01FR;;ACj2FM;EACE,oCAAA;ADo2FR;;ACl2FM;EACE,yBAAA;ADq2FR;;ACn2FM;EACE,oCAAA;ADs2FR;;AC72FM;EACE,oCAAA;ADg3FR;;AC92FM;EACE,yBAAA;ADi3FR;;AC/2FM;EACE,oCAAA;ADk3FR;;ACz3FM;EACE,oCAAA;AD43FR;;AC13FM;EACE,yBAAA;AD63FR;;AC33FM;EACE,oCAAA;AD83FR;;ACr4FM;EACE,oCAAA;ADw4FR;;ACt4FM;EACE,yBAAA;ADy4FR;;ACv4FM;EACE,oCAAA;AD04FR;;AC35FM;EACE,oCAAA;AD85FR;;AC55FM;EACE,yBAAA;AD+5FR;;AC75FM;EACE,oCAAA;ADg6FR;;AC75FM;EACE,oCAAA;ADg6FR;;AC95FM;EACE,yBAAA;ADi6FR;;AC/5FM;EACE,oCAAA;ADk6FR;;ACz6FM;EACE,oCAAA;AD46FR;;AC16FM;EACE,yBAAA;AD66FR;;AC36FM;EACE,oCAAA;AD86FR;;ACr7FM;EACE,oCAAA;ADw7FR;;ACt7FM;EACE,yBAAA;ADy7FR;;ACv7FM;EACE,oCAAA;AD07FR;;ACj8FM;EACE,oCAAA;ADo8FR;;ACl8FM;EACE,yBAAA;ADq8FR;;ACn8FM;EACE,oCAAA;ADs8FR;;AC78FM;EACE,oCAAA;ADg9FR;;AC98FM;EACE,yBAAA;ADi9FR;;AC/8FM;EACE,oCAAA;ADk9FR;;ACz9FM;EACE,oCAAA;AD49FR;;AC19FM;EACE,yBAAA;AD69FR;;AC39FM;EACE,oCAAA;AD89FR;;ACr+FM;EACE,oCAAA;ADw+FR;;ACt+FM;EACE,yBAAA;ADy+FR;;ACv+FM;EACE,oCAAA;AD0+FR;;ACj/FM;EACE,oCAAA;ADo/FR;;ACl/FM;EACE,yBAAA;ADq/FR;;ACn/FM;EACE,oCAAA;ADs/FR;;AC7/FM;EACE,oCAAA;ADggGR;;AC9/FM;EACE,yBAAA;ADigGR;;AC//FM;EACE,oCAAA;ADkgGR;;ACnhGM;EACE,oCAAA;ADshGR;;ACphGM;EACE,yBAAA;ADuhGR;;ACrhGM;EACE,oCAAA;ADwhGR;;ACrhGM;EACE,oCAAA;ADwhGR;;ACthGM;EACE,yBAAA;ADyhGR;;ACvhGM;EACE,oCAAA;AD0hGR;;ACjiGM;EACE,oCAAA;ADoiGR;;ACliGM;EACE,yBAAA;ADqiGR;;ACniGM;EACE,oCAAA;ADsiGR;;AC7iGM;EACE,oCAAA;ADgjGR;;AC9iGM;EACE,yBAAA;ADijGR;;AC/iGM;EACE,oCAAA;ADkjGR;;ACzjGM;EACE,oCAAA;AD4jGR;;AC1jGM;EACE,yBAAA;AD6jGR;;AC3jGM;EACE,oCAAA;AD8jGR;;ACrkGM;EACE,oCAAA;ADwkGR;;ACtkGM;EACE,yBAAA;ADykGR;;ACvkGM;EACE,oCAAA;AD0kGR;;ACjlGM;EACE,oCAAA;ADolGR;;ACllGM;EACE,yBAAA;ADqlGR;;ACnlGM;EACE,oCAAA;ADslGR;;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","sourcesContent":["@charset \"UTF-8\";\n@import 'https://fonts.googleapis.com/css?family=Ubuntu';\n.webo {\n background-color: #0062d6 !important;\n}\n\n.webo-text {\n color: #0062d6 !important;\n}\n\n.webo-waves .waves-ripple {\n background-color: #0062d6 !important;\n}\n\n.webo.second {\n background-color: #0077FA !important;\n}\n\n.webo-text.text-second {\n color: #0077FA !important;\n}\n\n.webo-waves.waves-second .waves-ripple {\n background-color: #0077FA !important;\n}\n\n.webo.third {\n background-color: #09bddd !important;\n}\n\n.webo-text.text-third {\n color: #09bddd !important;\n}\n\n.webo-waves.waves-third .waves-ripple {\n background-color: #09bddd !important;\n}\n\n.webo.fourth {\n background-color: #cbe7fe !important;\n}\n\n.webo-text.text-fourth {\n color: #cbe7fe !important;\n}\n\n.webo-waves.waves-fourth .waves-ripple {\n background-color: #cbe7fe !important;\n}\n\n.webo.lighten-5 {\n background-color: #bbdefb !important;\n}\n\n.webo-text.text-lighten-5 {\n color: #bbdefb !important;\n}\n\n.webo-waves.waves-lighten-5 .waves-ripple {\n background-color: #bbdefb !important;\n}\n\n.webo.lighten-4 {\n background-color: #42a5f5 !important;\n}\n\n.webo-text.text-lighten-4 {\n color: #42a5f5 !important;\n}\n\n.webo-waves.waves-lighten-4 .waves-ripple {\n background-color: #42a5f5 !important;\n}\n\n.webo.lighten-3 {\n background-color: #7986cb !important;\n}\n\n.webo-text.text-lighten-3 {\n color: #7986cb !important;\n}\n\n.webo-waves.waves-lighten-3 .waves-ripple {\n background-color: #7986cb !important;\n}\n\n.webo.lighten-2 {\n background-color: #512da8 !important;\n}\n\n.webo-text.text-lighten-2 {\n color: #512da8 !important;\n}\n\n.webo-waves.waves-lighten-2 .waves-ripple {\n background-color: #512da8 !important;\n}\n\n.webo.lighten-1 {\n background-color: #283593 !important;\n}\n\n.webo-text.text-lighten-1 {\n color: #283593 !important;\n}\n\n.webo-waves.waves-lighten-1 .waves-ripple {\n background-color: #283593 !important;\n}\n\n.webo.darken-1 {\n background-color: #d0181e !important;\n}\n\n.webo-text.text-darken-1 {\n color: #d0181e !important;\n}\n\n.webo-waves.waves-darken-1 .waves-ripple {\n background-color: #d0181e !important;\n}\n\n.webo.darken-2 {\n background-color: #b9151b !important;\n}\n\n.webo-text.text-darken-2 {\n color: #b9151b !important;\n}\n\n.webo-waves.waves-darken-2 .waves-ripple {\n background-color: #b9151b !important;\n}\n\n.webo.darken-3 {\n background-color: #a21318 !important;\n}\n\n.webo-text.text-darken-3 {\n color: #a21318 !important;\n}\n\n.webo-waves.waves-darken-3 .waves-ripple {\n background-color: #a21318 !important;\n}\n\n.webo.b- {\n background-color: #49ce5f !important;\n}\n\n.webo-text.text-b- {\n color: #49ce5f !important;\n}\n\n.webo-waves.waves-b- .waves-ripple {\n background-color: #49ce5f !important;\n}\n\n.webo.darken-4 {\n background-color: #8b1014 !important;\n}\n\n.webo-text.text-darken-4 {\n color: #8b1014 !important;\n}\n\n.webo-waves.waves-darken-4 .waves-ripple {\n background-color: #8b1014 !important;\n}\n\n.red {\n background-color: #f44336 !important;\n}\n\n.red-text {\n color: #f44336 !important;\n}\n\n.red-waves .waves-ripple {\n background-color: #f44336 !important;\n}\n\n.red.lighten-5 {\n background-color: #ffebee !important;\n}\n\n.red-text.text-lighten-5 {\n color: #ffebee !important;\n}\n\n.red-waves.waves-lighten-5 .waves-ripple {\n background-color: #ffebee !important;\n}\n\n.red.lighten-4 {\n background-color: #ffcdd2 !important;\n}\n\n.red-text.text-lighten-4 {\n color: #ffcdd2 !important;\n}\n\n.red-waves.waves-lighten-4 .waves-ripple {\n background-color: #ffcdd2 !important;\n}\n\n.red.lighten-3 {\n background-color: #ef9a9a !important;\n}\n\n.red-text.text-lighten-3 {\n color: #ef9a9a !important;\n}\n\n.red-waves.waves-lighten-3 .waves-ripple {\n background-color: #ef9a9a !important;\n}\n\n.red.lighten-2 {\n background-color: #e57373 !important;\n}\n\n.red-text.text-lighten-2 {\n color: #e57373 !important;\n}\n\n.red-waves.waves-lighten-2 .waves-ripple {\n background-color: #e57373 !important;\n}\n\n.red.lighten-1 {\n background-color: #ef5350 !important;\n}\n\n.red-text.text-lighten-1 {\n color: #ef5350 !important;\n}\n\n.red-waves.waves-lighten-1 .waves-ripple {\n background-color: #ef5350 !important;\n}\n\n.red.darken-1 {\n background-color: #e53935 !important;\n}\n\n.red-text.text-darken-1 {\n color: #e53935 !important;\n}\n\n.red-waves.waves-darken-1 .waves-ripple {\n background-color: #e53935 !important;\n}\n\n.red.darken-2 {\n background-color: #d32f2f !important;\n}\n\n.red-text.text-darken-2 {\n color: #d32f2f !important;\n}\n\n.red-waves.waves-darken-2 .waves-ripple {\n background-color: #d32f2f !important;\n}\n\n.red.darken-3 {\n background-color: #c62828 !important;\n}\n\n.red-text.text-darken-3 {\n color: #c62828 !important;\n}\n\n.red-waves.waves-darken-3 .waves-ripple {\n background-color: #c62828 !important;\n}\n\n.red.darken-4 {\n background-color: #b71c1c !important;\n}\n\n.red-text.text-darken-4 {\n color: #b71c1c !important;\n}\n\n.red-waves.waves-darken-4 .waves-ripple {\n background-color: #b71c1c !important;\n}\n\n.red.accent-1 {\n background-color: #ff8a80 !important;\n}\n\n.red-text.text-accent-1 {\n color: #ff8a80 !important;\n}\n\n.red-waves.waves-accent-1 .waves-ripple {\n background-color: #ff8a80 !important;\n}\n\n.red.accent-2 {\n background-color: #ff5252 !important;\n}\n\n.red-text.text-accent-2 {\n color: #ff5252 !important;\n}\n\n.red-waves.waves-accent-2 .waves-ripple {\n background-color: #ff5252 !important;\n}\n\n.red.accent-3 {\n background-color: #ff1744 !important;\n}\n\n.red-text.text-accent-3 {\n color: #ff1744 !important;\n}\n\n.red-waves.waves-accent-3 .waves-ripple {\n background-color: #ff1744 !important;\n}\n\n.red.accent-4 {\n background-color: #d50000 !important;\n}\n\n.red-text.text-accent-4 {\n color: #d50000 !important;\n}\n\n.red-waves.waves-accent-4 .waves-ripple {\n background-color: #d50000 !important;\n}\n\n.pink {\n background-color: #e91e63 !important;\n}\n\n.pink-text {\n color: #e91e63 !important;\n}\n\n.pink-waves .waves-ripple {\n background-color: #e91e63 !important;\n}\n\n.pink.lighten-5 {\n background-color: #fce4ec !important;\n}\n\n.pink-text.text-lighten-5 {\n color: #fce4ec !important;\n}\n\n.pink-waves.waves-lighten-5 .waves-ripple {\n background-color: #fce4ec !important;\n}\n\n.pink.lighten-4 {\n background-color: #f8bbd0 !important;\n}\n\n.pink-text.text-lighten-4 {\n color: #f8bbd0 !important;\n}\n\n.pink-waves.waves-lighten-4 .waves-ripple {\n background-color: #f8bbd0 !important;\n}\n\n.pink.lighten-3 {\n background-color: #f48fb1 !important;\n}\n\n.pink-text.text-lighten-3 {\n color: #f48fb1 !important;\n}\n\n.pink-waves.waves-lighten-3 .waves-ripple {\n background-color: #f48fb1 !important;\n}\n\n.pink.lighten-2 {\n background-color: #f06292 !important;\n}\n\n.pink-text.text-lighten-2 {\n color: #f06292 !important;\n}\n\n.pink-waves.waves-lighten-2 .waves-ripple {\n background-color: #f06292 !important;\n}\n\n.pink.lighten-1 {\n background-color: #ec407a !important;\n}\n\n.pink-text.text-lighten-1 {\n color: #ec407a !important;\n}\n\n.pink-waves.waves-lighten-1 .waves-ripple {\n background-color: #ec407a !important;\n}\n\n.pink.darken-1 {\n background-color: #d81b60 !important;\n}\n\n.pink-text.text-darken-1 {\n color: #d81b60 !important;\n}\n\n.pink-waves.waves-darken-1 .waves-ripple {\n background-color: #d81b60 !important;\n}\n\n.pink.darken-2 {\n background-color: #c2185b !important;\n}\n\n.pink-text.text-darken-2 {\n color: #c2185b !important;\n}\n\n.pink-waves.waves-darken-2 .waves-ripple {\n background-color: #c2185b !important;\n}\n\n.pink.darken-3 {\n background-color: #ad1457 !important;\n}\n\n.pink-text.text-darken-3 {\n color: #ad1457 !important;\n}\n\n.pink-waves.waves-darken-3 .waves-ripple {\n background-color: #ad1457 !important;\n}\n\n.pink.darken-4 {\n background-color: #880e4f !important;\n}\n\n.pink-text.text-darken-4 {\n color: #880e4f !important;\n}\n\n.pink-waves.waves-darken-4 .waves-ripple {\n background-color: #880e4f !important;\n}\n\n.pink.accent-1 {\n background-color: #ff80ab !important;\n}\n\n.pink-text.text-accent-1 {\n color: #ff80ab !important;\n}\n\n.pink-waves.waves-accent-1 .waves-ripple {\n background-color: #ff80ab !important;\n}\n\n.pink.accent-2 {\n background-color: #ff4081 !important;\n}\n\n.pink-text.text-accent-2 {\n color: #ff4081 !important;\n}\n\n.pink-waves.waves-accent-2 .waves-ripple {\n background-color: #ff4081 !important;\n}\n\n.pink.accent-3 {\n background-color: #f50057 !important;\n}\n\n.pink-text.text-accent-3 {\n color: #f50057 !important;\n}\n\n.pink-waves.waves-accent-3 .waves-ripple {\n background-color: #f50057 !important;\n}\n\n.pink.accent-4 {\n background-color: #c51162 !important;\n}\n\n.pink-text.text-accent-4 {\n color: #c51162 !important;\n}\n\n.pink-waves.waves-accent-4 .waves-ripple {\n background-color: #c51162 !important;\n}\n\n.purple {\n background-color: #9c27b0 !important;\n}\n\n.purple-text {\n color: #9c27b0 !important;\n}\n\n.purple-waves .waves-ripple {\n background-color: #9c27b0 !important;\n}\n\n.purple.lighten-5 {\n background-color: #f3e5f5 !important;\n}\n\n.purple-text.text-lighten-5 {\n color: #f3e5f5 !important;\n}\n\n.purple-waves.waves-lighten-5 .waves-ripple {\n background-color: #f3e5f5 !important;\n}\n\n.purple.lighten-4 {\n background-color: #e1bee7 !important;\n}\n\n.purple-text.text-lighten-4 {\n color: #e1bee7 !important;\n}\n\n.purple-waves.waves-lighten-4 .waves-ripple {\n background-color: #e1bee7 !important;\n}\n\n.purple.lighten-3 {\n background-color: #ce93d8 !important;\n}\n\n.purple-text.text-lighten-3 {\n color: #ce93d8 !important;\n}\n\n.purple-waves.waves-lighten-3 .waves-ripple {\n background-color: #ce93d8 !important;\n}\n\n.purple.lighten-2 {\n background-color: #ba68c8 !important;\n}\n\n.purple-text.text-lighten-2 {\n color: #ba68c8 !important;\n}\n\n.purple-waves.waves-lighten-2 .waves-ripple {\n background-color: #ba68c8 !important;\n}\n\n.purple.lighten-1 {\n background-color: #ab47bc !important;\n}\n\n.purple-text.text-lighten-1 {\n color: #ab47bc !important;\n}\n\n.purple-waves.waves-lighten-1 .waves-ripple {\n background-color: #ab47bc !important;\n}\n\n.purple.darken-1 {\n background-color: #8e24aa !important;\n}\n\n.purple-text.text-darken-1 {\n color: #8e24aa !important;\n}\n\n.purple-waves.waves-darken-1 .waves-ripple {\n background-color: #8e24aa !important;\n}\n\n.purple.darken-2 {\n background-color: #7b1fa2 !important;\n}\n\n.purple-text.text-darken-2 {\n color: #7b1fa2 !important;\n}\n\n.purple-waves.waves-darken-2 .waves-ripple {\n background-color: #7b1fa2 !important;\n}\n\n.purple.darken-3 {\n background-color: #6a1b9a !important;\n}\n\n.purple-text.text-darken-3 {\n color: #6a1b9a !important;\n}\n\n.purple-waves.waves-darken-3 .waves-ripple {\n background-color: #6a1b9a !important;\n}\n\n.purple.darken-4 {\n background-color: #4a148c !important;\n}\n\n.purple-text.text-darken-4 {\n color: #4a148c !important;\n}\n\n.purple-waves.waves-darken-4 .waves-ripple {\n background-color: #4a148c !important;\n}\n\n.purple.accent-1 {\n background-color: #ea80fc !important;\n}\n\n.purple-text.text-accent-1 {\n color: #ea80fc !important;\n}\n\n.purple-waves.waves-accent-1 .waves-ripple {\n background-color: #ea80fc !important;\n}\n\n.purple.accent-2 {\n background-color: #e040fb !important;\n}\n\n.purple-text.text-accent-2 {\n color: #e040fb !important;\n}\n\n.purple-waves.waves-accent-2 .waves-ripple {\n background-color: #e040fb !important;\n}\n\n.purple.accent-3 {\n background-color: #d500f9 !important;\n}\n\n.purple-text.text-accent-3 {\n color: #d500f9 !important;\n}\n\n.purple-waves.waves-accent-3 .waves-ripple {\n background-color: #d500f9 !important;\n}\n\n.purple.accent-4 {\n background-color: #aa00ff !important;\n}\n\n.purple-text.text-accent-4 {\n color: #aa00ff !important;\n}\n\n.purple-waves.waves-accent-4 .waves-ripple {\n background-color: #aa00ff !important;\n}\n\n.deep-purple {\n background-color: #673ab7 !important;\n}\n\n.deep-purple-text {\n color: #673ab7 !important;\n}\n\n.deep-purple-waves .waves-ripple {\n background-color: #673ab7 !important;\n}\n\n.deep-purple.lighten-5 {\n background-color: #ede7f6 !important;\n}\n\n.deep-purple-text.text-lighten-5 {\n color: #ede7f6 !important;\n}\n\n.deep-purple-waves.waves-lighten-5 .waves-ripple {\n background-color: #ede7f6 !important;\n}\n\n.deep-purple.lighten-4 {\n background-color: #d1c4e9 !important;\n}\n\n.deep-purple-text.text-lighten-4 {\n color: #d1c4e9 !important;\n}\n\n.deep-purple-waves.waves-lighten-4 .waves-ripple {\n background-color: #d1c4e9 !important;\n}\n\n.deep-purple.lighten-3 {\n background-color: #b39ddb !important;\n}\n\n.deep-purple-text.text-lighten-3 {\n color: #b39ddb !important;\n}\n\n.deep-purple-waves.waves-lighten-3 .waves-ripple {\n background-color: #b39ddb !important;\n}\n\n.deep-purple.lighten-2 {\n background-color: #9575cd !important;\n}\n\n.deep-purple-text.text-lighten-2 {\n color: #9575cd !important;\n}\n\n.deep-purple-waves.waves-lighten-2 .waves-ripple {\n background-color: #9575cd !important;\n}\n\n.deep-purple.lighten-1 {\n background-color: #7e57c2 !important;\n}\n\n.deep-purple-text.text-lighten-1 {\n color: #7e57c2 !important;\n}\n\n.deep-purple-waves.waves-lighten-1 .waves-ripple {\n background-color: #7e57c2 !important;\n}\n\n.deep-purple.darken-1 {\n background-color: #5e35b1 !important;\n}\n\n.deep-purple-text.text-darken-1 {\n color: #5e35b1 !important;\n}\n\n.deep-purple-waves.waves-darken-1 .waves-ripple {\n background-color: #5e35b1 !important;\n}\n\n.deep-purple.darken-2 {\n background-color: #512da8 !important;\n}\n\n.deep-purple-text.text-darken-2 {\n color: #512da8 !important;\n}\n\n.deep-purple-waves.waves-darken-2 .waves-ripple {\n background-color: #512da8 !important;\n}\n\n.deep-purple.darken-3 {\n background-color: #4527a0 !important;\n}\n\n.deep-purple-text.text-darken-3 {\n color: #4527a0 !important;\n}\n\n.deep-purple-waves.waves-darken-3 .waves-ripple {\n background-color: #4527a0 !important;\n}\n\n.deep-purple.darken-4 {\n background-color: #311b92 !important;\n}\n\n.deep-purple-text.text-darken-4 {\n color: #311b92 !important;\n}\n\n.deep-purple-waves.waves-darken-4 .waves-ripple {\n background-color: #311b92 !important;\n}\n\n.deep-purple.accent-1 {\n background-color: #b388ff !important;\n}\n\n.deep-purple-text.text-accent-1 {\n color: #b388ff !important;\n}\n\n.deep-purple-waves.waves-accent-1 .waves-ripple {\n background-color: #b388ff !important;\n}\n\n.deep-purple.accent-2 {\n background-color: #7c4dff !important;\n}\n\n.deep-purple-text.text-accent-2 {\n color: #7c4dff !important;\n}\n\n.deep-purple-waves.waves-accent-2 .waves-ripple {\n background-color: #7c4dff !important;\n}\n\n.deep-purple.accent-3 {\n background-color: #651fff !important;\n}\n\n.deep-purple-text.text-accent-3 {\n color: #651fff !important;\n}\n\n.deep-purple-waves.waves-accent-3 .waves-ripple {\n background-color: #651fff !important;\n}\n\n.deep-purple.accent-4 {\n background-color: #6200ea !important;\n}\n\n.deep-purple-text.text-accent-4 {\n color: #6200ea !important;\n}\n\n.deep-purple-waves.waves-accent-4 .waves-ripple {\n background-color: #6200ea !important;\n}\n\n.indigo {\n background-color: #3f51b5 !important;\n}\n\n.indigo-text {\n color: #3f51b5 !important;\n}\n\n.indigo-waves .waves-ripple {\n background-color: #3f51b5 !important;\n}\n\n.indigo.lighten-5 {\n background-color: #e8eaf6 !important;\n}\n\n.indigo-text.text-lighten-5 {\n color: #e8eaf6 !important;\n}\n\n.indigo-waves.waves-lighten-5 .waves-ripple {\n background-color: #e8eaf6 !important;\n}\n\n.indigo.lighten-4 {\n background-color: #c5cae9 !important;\n}\n\n.indigo-text.text-lighten-4 {\n color: #c5cae9 !important;\n}\n\n.indigo-waves.waves-lighten-4 .waves-ripple {\n background-color: #c5cae9 !important;\n}\n\n.indigo.lighten-3 {\n background-color: #9fa8da !important;\n}\n\n.indigo-text.text-lighten-3 {\n color: #9fa8da !important;\n}\n\n.indigo-waves.waves-lighten-3 .waves-ripple {\n background-color: #9fa8da !important;\n}\n\n.indigo.lighten-2 {\n background-color: #7986cb !important;\n}\n\n.indigo-text.text-lighten-2 {\n color: #7986cb !important;\n}\n\n.indigo-waves.waves-lighten-2 .waves-ripple {\n background-color: #7986cb !important;\n}\n\n.indigo.lighten-1 {\n background-color: #5c6bc0 !important;\n}\n\n.indigo-text.text-lighten-1 {\n color: #5c6bc0 !important;\n}\n\n.indigo-waves.waves-lighten-1 .waves-ripple {\n background-color: #5c6bc0 !important;\n}\n\n.indigo.darken-1 {\n background-color: #3949ab !important;\n}\n\n.indigo-text.text-darken-1 {\n color: #3949ab !important;\n}\n\n.indigo-waves.waves-darken-1 .waves-ripple {\n background-color: #3949ab !important;\n}\n\n.indigo.darken-2 {\n background-color: #303f9f !important;\n}\n\n.indigo-text.text-darken-2 {\n color: #303f9f !important;\n}\n\n.indigo-waves.waves-darken-2 .waves-ripple {\n background-color: #303f9f !important;\n}\n\n.indigo.darken-3 {\n background-color: #283593 !important;\n}\n\n.indigo-text.text-darken-3 {\n color: #283593 !important;\n}\n\n.indigo-waves.waves-darken-3 .waves-ripple {\n background-color: #283593 !important;\n}\n\n.indigo.darken-4 {\n background-color: #1a237e !important;\n}\n\n.indigo-text.text-darken-4 {\n color: #1a237e !important;\n}\n\n.indigo-waves.waves-darken-4 .waves-ripple {\n background-color: #1a237e !important;\n}\n\n.indigo.accent-1 {\n background-color: #8c9eff !important;\n}\n\n.indigo-text.text-accent-1 {\n color: #8c9eff !important;\n}\n\n.indigo-waves.waves-accent-1 .waves-ripple {\n background-color: #8c9eff !important;\n}\n\n.indigo.accent-2 {\n background-color: #536dfe !important;\n}\n\n.indigo-text.text-accent-2 {\n color: #536dfe !important;\n}\n\n.indigo-waves.waves-accent-2 .waves-ripple {\n background-color: #536dfe !important;\n}\n\n.indigo.accent-3 {\n background-color: #3d5afe !important;\n}\n\n.indigo-text.text-accent-3 {\n color: #3d5afe !important;\n}\n\n.indigo-waves.waves-accent-3 .waves-ripple {\n background-color: #3d5afe !important;\n}\n\n.indigo.accent-4 {\n background-color: #304ffe !important;\n}\n\n.indigo-text.text-accent-4 {\n color: #304ffe !important;\n}\n\n.indigo-waves.waves-accent-4 .waves-ripple {\n background-color: #304ffe !important;\n}\n\n.blue {\n background-color: #2196f3 !important;\n}\n\n.blue-text {\n color: #2196f3 !important;\n}\n\n.blue-waves .waves-ripple {\n background-color: #2196f3 !important;\n}\n\n.blue.lighten-5 {\n background-color: #e3f2fd !important;\n}\n\n.blue-text.text-lighten-5 {\n color: #e3f2fd !important;\n}\n\n.blue-waves.waves-lighten-5 .waves-ripple {\n background-color: #e3f2fd !important;\n}\n\n.blue.lighten-4 {\n background-color: #bbdefb !important;\n}\n\n.blue-text.text-lighten-4 {\n color: #bbdefb !important;\n}\n\n.blue-waves.waves-lighten-4 .waves-ripple {\n background-color: #bbdefb !important;\n}\n\n.blue.lighten-3 {\n background-color: #90caf9 !important;\n}\n\n.blue-text.text-lighten-3 {\n color: #90caf9 !important;\n}\n\n.blue-waves.waves-lighten-3 .waves-ripple {\n background-color: #90caf9 !important;\n}\n\n.blue.lighten-2 {\n background-color: #64b5f6 !important;\n}\n\n.blue-text.text-lighten-2 {\n color: #64b5f6 !important;\n}\n\n.blue-waves.waves-lighten-2 .waves-ripple {\n background-color: #64b5f6 !important;\n}\n\n.blue.lighten-1 {\n background-color: #42a5f5 !important;\n}\n\n.blue-text.text-lighten-1 {\n color: #42a5f5 !important;\n}\n\n.blue-waves.waves-lighten-1 .waves-ripple {\n background-color: #42a5f5 !important;\n}\n\n.blue.darken-1 {\n background-color: #1e88e5 !important;\n}\n\n.blue-text.text-darken-1 {\n color: #1e88e5 !important;\n}\n\n.blue-waves.waves-darken-1 .waves-ripple {\n background-color: #1e88e5 !important;\n}\n\n.blue.darken-2 {\n background-color: #1976d2 !important;\n}\n\n.blue-text.text-darken-2 {\n color: #1976d2 !important;\n}\n\n.blue-waves.waves-darken-2 .waves-ripple {\n background-color: #1976d2 !important;\n}\n\n.blue.darken-3 {\n background-color: #1565c0 !important;\n}\n\n.blue-text.text-darken-3 {\n color: #1565c0 !important;\n}\n\n.blue-waves.waves-darken-3 .waves-ripple {\n background-color: #1565c0 !important;\n}\n\n.blue.darken-4 {\n background-color: #0d47a1 !important;\n}\n\n.blue-text.text-darken-4 {\n color: #0d47a1 !important;\n}\n\n.blue-waves.waves-darken-4 .waves-ripple {\n background-color: #0d47a1 !important;\n}\n\n.blue.accent-1 {\n background-color: #82b1ff !important;\n}\n\n.blue-text.text-accent-1 {\n color: #82b1ff !important;\n}\n\n.blue-waves.waves-accent-1 .waves-ripple {\n background-color: #82b1ff !important;\n}\n\n.blue.accent-2 {\n background-color: #448aff !important;\n}\n\n.blue-text.text-accent-2 {\n color: #448aff !important;\n}\n\n.blue-waves.waves-accent-2 .waves-ripple {\n background-color: #448aff !important;\n}\n\n.blue.accent-3 {\n background-color: #2979ff !important;\n}\n\n.blue-text.text-accent-3 {\n color: #2979ff !important;\n}\n\n.blue-waves.waves-accent-3 .waves-ripple {\n background-color: #2979ff !important;\n}\n\n.blue.accent-4 {\n background-color: #2962ff !important;\n}\n\n.blue-text.text-accent-4 {\n color: #2962ff !important;\n}\n\n.blue-waves.waves-accent-4 .waves-ripple {\n background-color: #2962ff !important;\n}\n\n.light-blue {\n background-color: #03a9f4 !important;\n}\n\n.light-blue-text {\n color: #03a9f4 !important;\n}\n\n.light-blue-waves .waves-ripple {\n background-color: #03a9f4 !important;\n}\n\n.light-blue.lighten-5 {\n background-color: #e1f5fe !important;\n}\n\n.light-blue-text.text-lighten-5 {\n color: #e1f5fe !important;\n}\n\n.light-blue-waves.waves-lighten-5 .waves-ripple {\n background-color: #e1f5fe !important;\n}\n\n.light-blue.lighten-4 {\n background-color: #b3e5fc !important;\n}\n\n.light-blue-text.text-lighten-4 {\n color: #b3e5fc !important;\n}\n\n.light-blue-waves.waves-lighten-4 .waves-ripple {\n background-color: #b3e5fc !important;\n}\n\n.light-blue.lighten-3 {\n background-color: #81d4fa !important;\n}\n\n.light-blue-text.text-lighten-3 {\n color: #81d4fa !important;\n}\n\n.light-blue-waves.waves-lighten-3 .waves-ripple {\n background-color: #81d4fa !important;\n}\n\n.light-blue.lighten-2 {\n background-color: #4fc3f7 !important;\n}\n\n.light-blue-text.text-lighten-2 {\n color: #4fc3f7 !important;\n}\n\n.light-blue-waves.waves-lighten-2 .waves-ripple {\n background-color: #4fc3f7 !important;\n}\n\n.light-blue.lighten-1 {\n background-color: #29b6f6 !important;\n}\n\n.light-blue-text.text-lighten-1 {\n color: #29b6f6 !important;\n}\n\n.light-blue-waves.waves-lighten-1 .waves-ripple {\n background-color: #29b6f6 !important;\n}\n\n.light-blue.darken-1 {\n background-color: #039be5 !important;\n}\n\n.light-blue-text.text-darken-1 {\n color: #039be5 !important;\n}\n\n.light-blue-waves.waves-darken-1 .waves-ripple {\n background-color: #039be5 !important;\n}\n\n.light-blue.darken-2 {\n background-color: #0288d1 !important;\n}\n\n.light-blue-text.text-darken-2 {\n color: #0288d1 !important;\n}\n\n.light-blue-waves.waves-darken-2 .waves-ripple {\n background-color: #0288d1 !important;\n}\n\n.light-blue.darken-3 {\n background-color: #0277bd !important;\n}\n\n.light-blue-text.text-darken-3 {\n color: #0277bd !important;\n}\n\n.light-blue-waves.waves-darken-3 .waves-ripple {\n background-color: #0277bd !important;\n}\n\n.light-blue.darken-4 {\n background-color: #01579b !important;\n}\n\n.light-blue-text.text-darken-4 {\n color: #01579b !important;\n}\n\n.light-blue-waves.waves-darken-4 .waves-ripple {\n background-color: #01579b !important;\n}\n\n.light-blue.accent-1 {\n background-color: #80d8ff !important;\n}\n\n.light-blue-text.text-accent-1 {\n color: #80d8ff !important;\n}\n\n.light-blue-waves.waves-accent-1 .waves-ripple {\n background-color: #80d8ff !important;\n}\n\n.light-blue.accent-2 {\n background-color: #40c4ff !important;\n}\n\n.light-blue-text.text-accent-2 {\n color: #40c4ff !important;\n}\n\n.light-blue-waves.waves-accent-2 .waves-ripple {\n background-color: #40c4ff !important;\n}\n\n.light-blue.accent-3 {\n background-color: #00b0ff !important;\n}\n\n.light-blue-text.text-accent-3 {\n color: #00b0ff !important;\n}\n\n.light-blue-waves.waves-accent-3 .waves-ripple {\n background-color: #00b0ff !important;\n}\n\n.light-blue.accent-4 {\n background-color: #0091ea !important;\n}\n\n.light-blue-text.text-accent-4 {\n color: #0091ea !important;\n}\n\n.light-blue-waves.waves-accent-4 .waves-ripple {\n background-color: #0091ea !important;\n}\n\n.cyan {\n background-color: #00bcd4 !important;\n}\n\n.cyan-text {\n color: #00bcd4 !important;\n}\n\n.cyan-waves .waves-ripple {\n background-color: #00bcd4 !important;\n}\n\n.cyan.lighten-5 {\n background-color: #e0f7fa !important;\n}\n\n.cyan-text.text-lighten-5 {\n color: #e0f7fa !important;\n}\n\n.cyan-waves.waves-lighten-5 .waves-ripple {\n background-color: #e0f7fa !important;\n}\n\n.cyan.lighten-4 {\n background-color: #b2ebf2 !important;\n}\n\n.cyan-text.text-lighten-4 {\n color: #b2ebf2 !important;\n}\n\n.cyan-waves.waves-lighten-4 .waves-ripple {\n background-color: #b2ebf2 !important;\n}\n\n.cyan.lighten-3 {\n background-color: #80deea !important;\n}\n\n.cyan-text.text-lighten-3 {\n color: #80deea !important;\n}\n\n.cyan-waves.waves-lighten-3 .waves-ripple {\n background-color: #80deea !important;\n}\n\n.cyan.lighten-2 {\n background-color: #4dd0e1 !important;\n}\n\n.cyan-text.text-lighten-2 {\n color: #4dd0e1 !important;\n}\n\n.cyan-waves.waves-lighten-2 .waves-ripple {\n background-color: #4dd0e1 !important;\n}\n\n.cyan.lighten-1 {\n background-color: #26c6da !important;\n}\n\n.cyan-text.text-lighten-1 {\n color: #26c6da !important;\n}\n\n.cyan-waves.waves-lighten-1 .waves-ripple {\n background-color: #26c6da !important;\n}\n\n.cyan.darken-1 {\n background-color: #00acc1 !important;\n}\n\n.cyan-text.text-darken-1 {\n color: #00acc1 !important;\n}\n\n.cyan-waves.waves-darken-1 .waves-ripple {\n background-color: #00acc1 !important;\n}\n\n.cyan.darken-2 {\n background-color: #0097a7 !important;\n}\n\n.cyan-text.text-darken-2 {\n color: #0097a7 !important;\n}\n\n.cyan-waves.waves-darken-2 .waves-ripple {\n background-color: #0097a7 !important;\n}\n\n.cyan.darken-3 {\n background-color: #00838f !important;\n}\n\n.cyan-text.text-darken-3 {\n color: #00838f !important;\n}\n\n.cyan-waves.waves-darken-3 .waves-ripple {\n background-color: #00838f !important;\n}\n\n.cyan.darken-4 {\n background-color: #006064 !important;\n}\n\n.cyan-text.text-darken-4 {\n color: #006064 !important;\n}\n\n.cyan-waves.waves-darken-4 .waves-ripple {\n background-color: #006064 !important;\n}\n\n.cyan.accent-1 {\n background-color: #84ffff !important;\n}\n\n.cyan-text.text-accent-1 {\n color: #84ffff !important;\n}\n\n.cyan-waves.waves-accent-1 .waves-ripple {\n background-color: #84ffff !important;\n}\n\n.cyan.accent-2 {\n background-color: #18ffff !important;\n}\n\n.cyan-text.text-accent-2 {\n color: #18ffff !important;\n}\n\n.cyan-waves.waves-accent-2 .waves-ripple {\n background-color: #18ffff !important;\n}\n\n.cyan.accent-3 {\n background-color: #00e5ff !important;\n}\n\n.cyan-text.text-accent-3 {\n color: #00e5ff !important;\n}\n\n.cyan-waves.waves-accent-3 .waves-ripple {\n background-color: #00e5ff !important;\n}\n\n.cyan.accent-4 {\n background-color: #00b8d4 !important;\n}\n\n.cyan-text.text-accent-4 {\n color: #00b8d4 !important;\n}\n\n.cyan-waves.waves-accent-4 .waves-ripple {\n background-color: #00b8d4 !important;\n}\n\n.teal {\n background-color: #009688 !important;\n}\n\n.teal-text {\n color: #009688 !important;\n}\n\n.teal-waves .waves-ripple {\n background-color: #009688 !important;\n}\n\n.teal.lighten-5 {\n background-color: #e0f2f1 !important;\n}\n\n.teal-text.text-lighten-5 {\n color: #e0f2f1 !important;\n}\n\n.teal-waves.waves-lighten-5 .waves-ripple {\n background-color: #e0f2f1 !important;\n}\n\n.teal.lighten-4 {\n background-color: #b2dfdb !important;\n}\n\n.teal-text.text-lighten-4 {\n color: #b2dfdb !important;\n}\n\n.teal-waves.waves-lighten-4 .waves-ripple {\n background-color: #b2dfdb !important;\n}\n\n.teal.lighten-3 {\n background-color: #80cbc4 !important;\n}\n\n.teal-text.text-lighten-3 {\n color: #80cbc4 !important;\n}\n\n.teal-waves.waves-lighten-3 .waves-ripple {\n background-color: #80cbc4 !important;\n}\n\n.teal.lighten-2 {\n background-color: #4db6ac !important;\n}\n\n.teal-text.text-lighten-2 {\n color: #4db6ac !important;\n}\n\n.teal-waves.waves-lighten-2 .waves-ripple {\n background-color: #4db6ac !important;\n}\n\n.teal.lighten-1 {\n background-color: #26a69a !important;\n}\n\n.teal-text.text-lighten-1 {\n color: #26a69a !important;\n}\n\n.teal-waves.waves-lighten-1 .waves-ripple {\n background-color: #26a69a !important;\n}\n\n.teal.darken-1 {\n background-color: #00897b !important;\n}\n\n.teal-text.text-darken-1 {\n color: #00897b !important;\n}\n\n.teal-waves.waves-darken-1 .waves-ripple {\n background-color: #00897b !important;\n}\n\n.teal.darken-2 {\n background-color: #00796b !important;\n}\n\n.teal-text.text-darken-2 {\n color: #00796b !important;\n}\n\n.teal-waves.waves-darken-2 .waves-ripple {\n background-color: #00796b !important;\n}\n\n.teal.darken-3 {\n background-color: #00695c !important;\n}\n\n.teal-text.text-darken-3 {\n color: #00695c !important;\n}\n\n.teal-waves.waves-darken-3 .waves-ripple {\n background-color: #00695c !important;\n}\n\n.teal.darken-4 {\n background-color: #004d40 !important;\n}\n\n.teal-text.text-darken-4 {\n color: #004d40 !important;\n}\n\n.teal-waves.waves-darken-4 .waves-ripple {\n background-color: #004d40 !important;\n}\n\n.teal.accent-1 {\n background-color: #a7ffeb !important;\n}\n\n.teal-text.text-accent-1 {\n color: #a7ffeb !important;\n}\n\n.teal-waves.waves-accent-1 .waves-ripple {\n background-color: #a7ffeb !important;\n}\n\n.teal.accent-2 {\n background-color: #64ffda !important;\n}\n\n.teal-text.text-accent-2 {\n color: #64ffda !important;\n}\n\n.teal-waves.waves-accent-2 .waves-ripple {\n background-color: #64ffda !important;\n}\n\n.teal.accent-3 {\n background-color: #1de9b6 !important;\n}\n\n.teal-text.text-accent-3 {\n color: #1de9b6 !important;\n}\n\n.teal-waves.waves-accent-3 .waves-ripple {\n background-color: #1de9b6 !important;\n}\n\n.teal.accent-4 {\n background-color: #00bfa5 !important;\n}\n\n.teal-text.text-accent-4 {\n color: #00bfa5 !important;\n}\n\n.teal-waves.waves-accent-4 .waves-ripple {\n background-color: #00bfa5 !important;\n}\n\n.green {\n background-color: #4caf50 !important;\n}\n\n.green-text {\n color: #4caf50 !important;\n}\n\n.green-waves .waves-ripple {\n background-color: #4caf50 !important;\n}\n\n.green.lighten-5 {\n background-color: #e8f5e9 !important;\n}\n\n.green-text.text-lighten-5 {\n color: #e8f5e9 !important;\n}\n\n.green-waves.waves-lighten-5 .waves-ripple {\n background-color: #e8f5e9 !important;\n}\n\n.green.lighten-4 {\n background-color: #c8e6c9 !important;\n}\n\n.green-text.text-lighten-4 {\n color: #c8e6c9 !important;\n}\n\n.green-waves.waves-lighten-4 .waves-ripple {\n background-color: #c8e6c9 !important;\n}\n\n.green.lighten-3 {\n background-color: #a5d6a7 !important;\n}\n\n.green-text.text-lighten-3 {\n color: #a5d6a7 !important;\n}\n\n.green-waves.waves-lighten-3 .waves-ripple {\n background-color: #a5d6a7 !important;\n}\n\n.green.lighten-2 {\n background-color: #81c784 !important;\n}\n\n.green-text.text-lighten-2 {\n color: #81c784 !important;\n}\n\n.green-waves.waves-lighten-2 .waves-ripple {\n background-color: #81c784 !important;\n}\n\n.green.lighten-1 {\n background-color: #66bb6a !important;\n}\n\n.green-text.text-lighten-1 {\n color: #66bb6a !important;\n}\n\n.green-waves.waves-lighten-1 .waves-ripple {\n background-color: #66bb6a !important;\n}\n\n.green.darken-1 {\n background-color: #43a047 !important;\n}\n\n.green-text.text-darken-1 {\n color: #43a047 !important;\n}\n\n.green-waves.waves-darken-1 .waves-ripple {\n background-color: #43a047 !important;\n}\n\n.green.darken-2 {\n background-color: #388e3c !important;\n}\n\n.green-text.text-darken-2 {\n color: #388e3c !important;\n}\n\n.green-waves.waves-darken-2 .waves-ripple {\n background-color: #388e3c !important;\n}\n\n.green.darken-3 {\n background-color: #2e7d32 !important;\n}\n\n.green-text.text-darken-3 {\n color: #2e7d32 !important;\n}\n\n.green-waves.waves-darken-3 .waves-ripple {\n background-color: #2e7d32 !important;\n}\n\n.green.darken-4 {\n background-color: #1b5e20 !important;\n}\n\n.green-text.text-darken-4 {\n color: #1b5e20 !important;\n}\n\n.green-waves.waves-darken-4 .waves-ripple {\n background-color: #1b5e20 !important;\n}\n\n.green.accent-1 {\n background-color: #b9f6ca !important;\n}\n\n.green-text.text-accent-1 {\n color: #b9f6ca !important;\n}\n\n.green-waves.waves-accent-1 .waves-ripple {\n background-color: #b9f6ca !important;\n}\n\n.green.accent-2 {\n background-color: #69f0ae !important;\n}\n\n.green-text.text-accent-2 {\n color: #69f0ae !important;\n}\n\n.green-waves.waves-accent-2 .waves-ripple {\n background-color: #69f0ae !important;\n}\n\n.green.accent-3 {\n background-color: #00e676 !important;\n}\n\n.green-text.text-accent-3 {\n color: #00e676 !important;\n}\n\n.green-waves.waves-accent-3 .waves-ripple {\n background-color: #00e676 !important;\n}\n\n.green.accent-4 {\n background-color: #00c853 !important;\n}\n\n.green-text.text-accent-4 {\n color: #00c853 !important;\n}\n\n.green-waves.waves-accent-4 .waves-ripple {\n background-color: #00c853 !important;\n}\n\n.light-green {\n background-color: #8bc34a !important;\n}\n\n.light-green-text {\n color: #8bc34a !important;\n}\n\n.light-green-waves .waves-ripple {\n background-color: #8bc34a !important;\n}\n\n.light-green.lighten-5 {\n background-color: #f1f8e9 !important;\n}\n\n.light-green-text.text-lighten-5 {\n color: #f1f8e9 !important;\n}\n\n.light-green-waves.waves-lighten-5 .waves-ripple {\n background-color: #f1f8e9 !important;\n}\n\n.light-green.lighten-4 {\n background-color: #dcedc8 !important;\n}\n\n.light-green-text.text-lighten-4 {\n color: #dcedc8 !important;\n}\n\n.light-green-waves.waves-lighten-4 .waves-ripple {\n background-color: #dcedc8 !important;\n}\n\n.light-green.lighten-3 {\n background-color: #c5e1a5 !important;\n}\n\n.light-green-text.text-lighten-3 {\n color: #c5e1a5 !important;\n}\n\n.light-green-waves.waves-lighten-3 .waves-ripple {\n background-color: #c5e1a5 !important;\n}\n\n.light-green.lighten-2 {\n background-color: #aed581 !important;\n}\n\n.light-green-text.text-lighten-2 {\n color: #aed581 !important;\n}\n\n.light-green-waves.waves-lighten-2 .waves-ripple {\n background-color: #aed581 !important;\n}\n\n.light-green.lighten-1 {\n background-color: #9ccc65 !important;\n}\n\n.light-green-text.text-lighten-1 {\n color: #9ccc65 !important;\n}\n\n.light-green-waves.waves-lighten-1 .waves-ripple {\n background-color: #9ccc65 !important;\n}\n\n.light-green.darken-1 {\n background-color: #7cb342 !important;\n}\n\n.light-green-text.text-darken-1 {\n color: #7cb342 !important;\n}\n\n.light-green-waves.waves-darken-1 .waves-ripple {\n background-color: #7cb342 !important;\n}\n\n.light-green.darken-2 {\n background-color: #689f38 !important;\n}\n\n.light-green-text.text-darken-2 {\n color: #689f38 !important;\n}\n\n.light-green-waves.waves-darken-2 .waves-ripple {\n background-color: #689f38 !important;\n}\n\n.light-green.darken-3 {\n background-color: #558b2f !important;\n}\n\n.light-green-text.text-darken-3 {\n color: #558b2f !important;\n}\n\n.light-green-waves.waves-darken-3 .waves-ripple {\n background-color: #558b2f !important;\n}\n\n.light-green.darken-4 {\n background-color: #33691e !important;\n}\n\n.light-green-text.text-darken-4 {\n color: #33691e !important;\n}\n\n.light-green-waves.waves-darken-4 .waves-ripple {\n background-color: #33691e !important;\n}\n\n.light-green.accent-1 {\n background-color: #ccff90 !important;\n}\n\n.light-green-text.text-accent-1 {\n color: #ccff90 !important;\n}\n\n.light-green-waves.waves-accent-1 .waves-ripple {\n background-color: #ccff90 !important;\n}\n\n.light-green.accent-2 {\n background-color: #b2ff59 !important;\n}\n\n.light-green-text.text-accent-2 {\n color: #b2ff59 !important;\n}\n\n.light-green-waves.waves-accent-2 .waves-ripple {\n background-color: #b2ff59 !important;\n}\n\n.light-green.accent-3 {\n background-color: #76ff03 !important;\n}\n\n.light-green-text.text-accent-3 {\n color: #76ff03 !important;\n}\n\n.light-green-waves.waves-accent-3 .waves-ripple {\n background-color: #76ff03 !important;\n}\n\n.light-green.accent-4 {\n background-color: #64dd17 !important;\n}\n\n.light-green-text.text-accent-4 {\n color: #64dd17 !important;\n}\n\n.light-green-waves.waves-accent-4 .waves-ripple {\n background-color: #64dd17 !important;\n}\n\n.lime {\n background-color: #cddc39 !important;\n}\n\n.lime-text {\n color: #cddc39 !important;\n}\n\n.lime-waves .waves-ripple {\n background-color: #cddc39 !important;\n}\n\n.lime.lighten-5 {\n background-color: #f9fbe7 !important;\n}\n\n.lime-text.text-lighten-5 {\n color: #f9fbe7 !important;\n}\n\n.lime-waves.waves-lighten-5 .waves-ripple {\n background-color: #f9fbe7 !important;\n}\n\n.lime.lighten-4 {\n background-color: #f0f4c3 !important;\n}\n\n.lime-text.text-lighten-4 {\n color: #f0f4c3 !important;\n}\n\n.lime-waves.waves-lighten-4 .waves-ripple {\n background-color: #f0f4c3 !important;\n}\n\n.lime.lighten-3 {\n background-color: #e6ee9c !important;\n}\n\n.lime-text.text-lighten-3 {\n color: #e6ee9c !important;\n}\n\n.lime-waves.waves-lighten-3 .waves-ripple {\n background-color: #e6ee9c !important;\n}\n\n.lime.lighten-2 {\n background-color: #dce775 !important;\n}\n\n.lime-text.text-lighten-2 {\n color: #dce775 !important;\n}\n\n.lime-waves.waves-lighten-2 .waves-ripple {\n background-color: #dce775 !important;\n}\n\n.lime.lighten-1 {\n background-color: #d4e157 !important;\n}\n\n.lime-text.text-lighten-1 {\n color: #d4e157 !important;\n}\n\n.lime-waves.waves-lighten-1 .waves-ripple {\n background-color: #d4e157 !important;\n}\n\n.lime.darken-1 {\n background-color: #c0ca33 !important;\n}\n\n.lime-text.text-darken-1 {\n color: #c0ca33 !important;\n}\n\n.lime-waves.waves-darken-1 .waves-ripple {\n background-color: #c0ca33 !important;\n}\n\n.lime.darken-2 {\n background-color: #afb42b !important;\n}\n\n.lime-text.text-darken-2 {\n color: #afb42b !important;\n}\n\n.lime-waves.waves-darken-2 .waves-ripple {\n background-color: #afb42b !important;\n}\n\n.lime.darken-3 {\n background-color: #9e9d24 !important;\n}\n\n.lime-text.text-darken-3 {\n color: #9e9d24 !important;\n}\n\n.lime-waves.waves-darken-3 .waves-ripple {\n background-color: #9e9d24 !important;\n}\n\n.lime.darken-4 {\n background-color: #827717 !important;\n}\n\n.lime-text.text-darken-4 {\n color: #827717 !important;\n}\n\n.lime-waves.waves-darken-4 .waves-ripple {\n background-color: #827717 !important;\n}\n\n.lime.accent-1 {\n background-color: #f4ff81 !important;\n}\n\n.lime-text.text-accent-1 {\n color: #f4ff81 !important;\n}\n\n.lime-waves.waves-accent-1 .waves-ripple {\n background-color: #f4ff81 !important;\n}\n\n.lime.accent-2 {\n background-color: #eeff41 !important;\n}\n\n.lime-text.text-accent-2 {\n color: #eeff41 !important;\n}\n\n.lime-waves.waves-accent-2 .waves-ripple {\n background-color: #eeff41 !important;\n}\n\n.lime.accent-3 {\n background-color: #c6ff00 !important;\n}\n\n.lime-text.text-accent-3 {\n color: #c6ff00 !important;\n}\n\n.lime-waves.waves-accent-3 .waves-ripple {\n background-color: #c6ff00 !important;\n}\n\n.lime.accent-4 {\n background-color: #aeea00 !important;\n}\n\n.lime-text.text-accent-4 {\n color: #aeea00 !important;\n}\n\n.lime-waves.waves-accent-4 .waves-ripple {\n background-color: #aeea00 !important;\n}\n\n.yellow {\n background-color: #ffeb3b !important;\n}\n\n.yellow-text {\n color: #ffeb3b !important;\n}\n\n.yellow-waves .waves-ripple {\n background-color: #ffeb3b !important;\n}\n\n.yellow.lighten-5 {\n background-color: #fffde7 !important;\n}\n\n.yellow-text.text-lighten-5 {\n color: #fffde7 !important;\n}\n\n.yellow-waves.waves-lighten-5 .waves-ripple {\n background-color: #fffde7 !important;\n}\n\n.yellow.lighten-4 {\n background-color: #fff9c4 !important;\n}\n\n.yellow-text.text-lighten-4 {\n color: #fff9c4 !important;\n}\n\n.yellow-waves.waves-lighten-4 .waves-ripple {\n background-color: #fff9c4 !important;\n}\n\n.yellow.lighten-3 {\n background-color: #fff59d !important;\n}\n\n.yellow-text.text-lighten-3 {\n color: #fff59d !important;\n}\n\n.yellow-waves.waves-lighten-3 .waves-ripple {\n background-color: #fff59d !important;\n}\n\n.yellow.lighten-2 {\n background-color: #fff176 !important;\n}\n\n.yellow-text.text-lighten-2 {\n color: #fff176 !important;\n}\n\n.yellow-waves.waves-lighten-2 .waves-ripple {\n background-color: #fff176 !important;\n}\n\n.yellow.lighten-1 {\n background-color: #ffee58 !important;\n}\n\n.yellow-text.text-lighten-1 {\n color: #ffee58 !important;\n}\n\n.yellow-waves.waves-lighten-1 .waves-ripple {\n background-color: #ffee58 !important;\n}\n\n.yellow.darken-1 {\n background-color: #fdd835 !important;\n}\n\n.yellow-text.text-darken-1 {\n color: #fdd835 !important;\n}\n\n.yellow-waves.waves-darken-1 .waves-ripple {\n background-color: #fdd835 !important;\n}\n\n.yellow.darken-2 {\n background-color: #fbc02d !important;\n}\n\n.yellow-text.text-darken-2 {\n color: #fbc02d !important;\n}\n\n.yellow-waves.waves-darken-2 .waves-ripple {\n background-color: #fbc02d !important;\n}\n\n.yellow.darken-3 {\n background-color: #f9a825 !important;\n}\n\n.yellow-text.text-darken-3 {\n color: #f9a825 !important;\n}\n\n.yellow-waves.waves-darken-3 .waves-ripple {\n background-color: #f9a825 !important;\n}\n\n.yellow.darken-4 {\n background-color: #f57f17 !important;\n}\n\n.yellow-text.text-darken-4 {\n color: #f57f17 !important;\n}\n\n.yellow-waves.waves-darken-4 .waves-ripple {\n background-color: #f57f17 !important;\n}\n\n.yellow.accent-1 {\n background-color: #ffff8d !important;\n}\n\n.yellow-text.text-accent-1 {\n color: #ffff8d !important;\n}\n\n.yellow-waves.waves-accent-1 .waves-ripple {\n background-color: #ffff8d !important;\n}\n\n.yellow.accent-2 {\n background-color: #ffff00 !important;\n}\n\n.yellow-text.text-accent-2 {\n color: #ffff00 !important;\n}\n\n.yellow-waves.waves-accent-2 .waves-ripple {\n background-color: #ffff00 !important;\n}\n\n.yellow.accent-3 {\n background-color: #ffea00 !important;\n}\n\n.yellow-text.text-accent-3 {\n color: #ffea00 !important;\n}\n\n.yellow-waves.waves-accent-3 .waves-ripple {\n background-color: #ffea00 !important;\n}\n\n.yellow.accent-4 {\n background-color: #ffd600 !important;\n}\n\n.yellow-text.text-accent-4 {\n color: #ffd600 !important;\n}\n\n.yellow-waves.waves-accent-4 .waves-ripple {\n background-color: #ffd600 !important;\n}\n\n.amber {\n background-color: #ffc107 !important;\n}\n\n.amber-text {\n color: #ffc107 !important;\n}\n\n.amber-waves .waves-ripple {\n background-color: #ffc107 !important;\n}\n\n.amber.lighten-5 {\n background-color: #fff8e1 !important;\n}\n\n.amber-text.text-lighten-5 {\n color: #fff8e1 !important;\n}\n\n.amber-waves.waves-lighten-5 .waves-ripple {\n background-color: #fff8e1 !important;\n}\n\n.amber.lighten-4 {\n background-color: #ffecb3 !important;\n}\n\n.amber-text.text-lighten-4 {\n color: #ffecb3 !important;\n}\n\n.amber-waves.waves-lighten-4 .waves-ripple {\n background-color: #ffecb3 !important;\n}\n\n.amber.lighten-3 {\n background-color: #ffe082 !important;\n}\n\n.amber-text.text-lighten-3 {\n color: #ffe082 !important;\n}\n\n.amber-waves.waves-lighten-3 .waves-ripple {\n background-color: #ffe082 !important;\n}\n\n.amber.lighten-2 {\n background-color: #ffd54f !important;\n}\n\n.amber-text.text-lighten-2 {\n color: #ffd54f !important;\n}\n\n.amber-waves.waves-lighten-2 .waves-ripple {\n background-color: #ffd54f !important;\n}\n\n.amber.lighten-1 {\n background-color: #ffca28 !important;\n}\n\n.amber-text.text-lighten-1 {\n color: #ffca28 !important;\n}\n\n.amber-waves.waves-lighten-1 .waves-ripple {\n background-color: #ffca28 !important;\n}\n\n.amber.darken-1 {\n background-color: #ffb300 !important;\n}\n\n.amber-text.text-darken-1 {\n color: #ffb300 !important;\n}\n\n.amber-waves.waves-darken-1 .waves-ripple {\n background-color: #ffb300 !important;\n}\n\n.amber.darken-2 {\n background-color: #ffa000 !important;\n}\n\n.amber-text.text-darken-2 {\n color: #ffa000 !important;\n}\n\n.amber-waves.waves-darken-2 .waves-ripple {\n background-color: #ffa000 !important;\n}\n\n.amber.darken-3 {\n background-color: #ff8f00 !important;\n}\n\n.amber-text.text-darken-3 {\n color: #ff8f00 !important;\n}\n\n.amber-waves.waves-darken-3 .waves-ripple {\n background-color: #ff8f00 !important;\n}\n\n.amber.darken-4 {\n background-color: #ff6f00 !important;\n}\n\n.amber-text.text-darken-4 {\n color: #ff6f00 !important;\n}\n\n.amber-waves.waves-darken-4 .waves-ripple {\n background-color: #ff6f00 !important;\n}\n\n.amber.accent-1 {\n background-color: #ffe57f !important;\n}\n\n.amber-text.text-accent-1 {\n color: #ffe57f !important;\n}\n\n.amber-waves.waves-accent-1 .waves-ripple {\n background-color: #ffe57f !important;\n}\n\n.amber.accent-2 {\n background-color: #ffd740 !important;\n}\n\n.amber-text.text-accent-2 {\n color: #ffd740 !important;\n}\n\n.amber-waves.waves-accent-2 .waves-ripple {\n background-color: #ffd740 !important;\n}\n\n.amber.accent-3 {\n background-color: #ffc400 !important;\n}\n\n.amber-text.text-accent-3 {\n color: #ffc400 !important;\n}\n\n.amber-waves.waves-accent-3 .waves-ripple {\n background-color: #ffc400 !important;\n}\n\n.amber.accent-4 {\n background-color: #ffab00 !important;\n}\n\n.amber-text.text-accent-4 {\n color: #ffab00 !important;\n}\n\n.amber-waves.waves-accent-4 .waves-ripple {\n background-color: #ffab00 !important;\n}\n\n.orange {\n background-color: #ff9800 !important;\n}\n\n.orange-text {\n color: #ff9800 !important;\n}\n\n.orange-waves .waves-ripple {\n background-color: #ff9800 !important;\n}\n\n.orange.lighten-5 {\n background-color: #fff3e0 !important;\n}\n\n.orange-text.text-lighten-5 {\n color: #fff3e0 !important;\n}\n\n.orange-waves.waves-lighten-5 .waves-ripple {\n background-color: #fff3e0 !important;\n}\n\n.orange.lighten-4 {\n background-color: #ffe0b2 !important;\n}\n\n.orange-text.text-lighten-4 {\n color: #ffe0b2 !important;\n}\n\n.orange-waves.waves-lighten-4 .waves-ripple {\n background-color: #ffe0b2 !important;\n}\n\n.orange.lighten-3 {\n background-color: #ffcc80 !important;\n}\n\n.orange-text.text-lighten-3 {\n color: #ffcc80 !important;\n}\n\n.orange-waves.waves-lighten-3 .waves-ripple {\n background-color: #ffcc80 !important;\n}\n\n.orange.lighten-2 {\n background-color: #ffb74d !important;\n}\n\n.orange-text.text-lighten-2 {\n color: #ffb74d !important;\n}\n\n.orange-waves.waves-lighten-2 .waves-ripple {\n background-color: #ffb74d !important;\n}\n\n.orange.lighten-1 {\n background-color: #ffa726 !important;\n}\n\n.orange-text.text-lighten-1 {\n color: #ffa726 !important;\n}\n\n.orange-waves.waves-lighten-1 .waves-ripple {\n background-color: #ffa726 !important;\n}\n\n.orange.darken-1 {\n background-color: #fb8c00 !important;\n}\n\n.orange-text.text-darken-1 {\n color: #fb8c00 !important;\n}\n\n.orange-waves.waves-darken-1 .waves-ripple {\n background-color: #fb8c00 !important;\n}\n\n.orange.darken-2 {\n background-color: #f57c00 !important;\n}\n\n.orange-text.text-darken-2 {\n color: #f57c00 !important;\n}\n\n.orange-waves.waves-darken-2 .waves-ripple {\n background-color: #f57c00 !important;\n}\n\n.orange.darken-3 {\n background-color: #ef6c00 !important;\n}\n\n.orange-text.text-darken-3 {\n color: #ef6c00 !important;\n}\n\n.orange-waves.waves-darken-3 .waves-ripple {\n background-color: #ef6c00 !important;\n}\n\n.orange.darken-4 {\n background-color: #e65100 !important;\n}\n\n.orange-text.text-darken-4 {\n color: #e65100 !important;\n}\n\n.orange-waves.waves-darken-4 .waves-ripple {\n background-color: #e65100 !important;\n}\n\n.orange.accent-1 {\n background-color: #ffd180 !important;\n}\n\n.orange-text.text-accent-1 {\n color: #ffd180 !important;\n}\n\n.orange-waves.waves-accent-1 .waves-ripple {\n background-color: #ffd180 !important;\n}\n\n.orange.accent-2 {\n background-color: #ffab40 !important;\n}\n\n.orange-text.text-accent-2 {\n color: #ffab40 !important;\n}\n\n.orange-waves.waves-accent-2 .waves-ripple {\n background-color: #ffab40 !important;\n}\n\n.orange.accent-3 {\n background-color: #ff9100 !important;\n}\n\n.orange-text.text-accent-3 {\n color: #ff9100 !important;\n}\n\n.orange-waves.waves-accent-3 .waves-ripple {\n background-color: #ff9100 !important;\n}\n\n.orange.accent-4 {\n background-color: #ff6d00 !important;\n}\n\n.orange-text.text-accent-4 {\n color: #ff6d00 !important;\n}\n\n.orange-waves.waves-accent-4 .waves-ripple {\n background-color: #ff6d00 !important;\n}\n\n.deep-orange {\n background-color: #ff5722 !important;\n}\n\n.deep-orange-text {\n color: #ff5722 !important;\n}\n\n.deep-orange-waves .waves-ripple {\n background-color: #ff5722 !important;\n}\n\n.deep-orange.lighten-5 {\n background-color: #fbe9e7 !important;\n}\n\n.deep-orange-text.text-lighten-5 {\n color: #fbe9e7 !important;\n}\n\n.deep-orange-waves.waves-lighten-5 .waves-ripple {\n background-color: #fbe9e7 !important;\n}\n\n.deep-orange.lighten-4 {\n background-color: #ffccbc !important;\n}\n\n.deep-orange-text.text-lighten-4 {\n color: #ffccbc !important;\n}\n\n.deep-orange-waves.waves-lighten-4 .waves-ripple {\n background-color: #ffccbc !important;\n}\n\n.deep-orange.lighten-3 {\n background-color: #ffab91 !important;\n}\n\n.deep-orange-text.text-lighten-3 {\n color: #ffab91 !important;\n}\n\n.deep-orange-waves.waves-lighten-3 .waves-ripple {\n background-color: #ffab91 !important;\n}\n\n.deep-orange.lighten-2 {\n background-color: #ff8a65 !important;\n}\n\n.deep-orange-text.text-lighten-2 {\n color: #ff8a65 !important;\n}\n\n.deep-orange-waves.waves-lighten-2 .waves-ripple {\n background-color: #ff8a65 !important;\n}\n\n.deep-orange.lighten-1 {\n background-color: #ff7043 !important;\n}\n\n.deep-orange-text.text-lighten-1 {\n color: #ff7043 !important;\n}\n\n.deep-orange-waves.waves-lighten-1 .waves-ripple {\n background-color: #ff7043 !important;\n}\n\n.deep-orange.darken-1 {\n background-color: #f4511e !important;\n}\n\n.deep-orange-text.text-darken-1 {\n color: #f4511e !important;\n}\n\n.deep-orange-waves.waves-darken-1 .waves-ripple {\n background-color: #f4511e !important;\n}\n\n.deep-orange.darken-2 {\n background-color: #e64a19 !important;\n}\n\n.deep-orange-text.text-darken-2 {\n color: #e64a19 !important;\n}\n\n.deep-orange-waves.waves-darken-2 .waves-ripple {\n background-color: #e64a19 !important;\n}\n\n.deep-orange.darken-3 {\n background-color: #d84315 !important;\n}\n\n.deep-orange-text.text-darken-3 {\n color: #d84315 !important;\n}\n\n.deep-orange-waves.waves-darken-3 .waves-ripple {\n background-color: #d84315 !important;\n}\n\n.deep-orange.darken-4 {\n background-color: #bf360c !important;\n}\n\n.deep-orange-text.text-darken-4 {\n color: #bf360c !important;\n}\n\n.deep-orange-waves.waves-darken-4 .waves-ripple {\n background-color: #bf360c !important;\n}\n\n.deep-orange.accent-1 {\n background-color: #ff9e80 !important;\n}\n\n.deep-orange-text.text-accent-1 {\n color: #ff9e80 !important;\n}\n\n.deep-orange-waves.waves-accent-1 .waves-ripple {\n background-color: #ff9e80 !important;\n}\n\n.deep-orange.accent-2 {\n background-color: #ff6e40 !important;\n}\n\n.deep-orange-text.text-accent-2 {\n color: #ff6e40 !important;\n}\n\n.deep-orange-waves.waves-accent-2 .waves-ripple {\n background-color: #ff6e40 !important;\n}\n\n.deep-orange.accent-3 {\n background-color: #ff3d00 !important;\n}\n\n.deep-orange-text.text-accent-3 {\n color: #ff3d00 !important;\n}\n\n.deep-orange-waves.waves-accent-3 .waves-ripple {\n background-color: #ff3d00 !important;\n}\n\n.deep-orange.accent-4 {\n background-color: #dd2c00 !important;\n}\n\n.deep-orange-text.text-accent-4 {\n color: #dd2c00 !important;\n}\n\n.deep-orange-waves.waves-accent-4 .waves-ripple {\n background-color: #dd2c00 !important;\n}\n\n.brown {\n background-color: #795548 !important;\n}\n\n.brown-text {\n color: #795548 !important;\n}\n\n.brown-waves .waves-ripple {\n background-color: #795548 !important;\n}\n\n.brown.lighten-5 {\n background-color: #efebe9 !important;\n}\n\n.brown-text.text-lighten-5 {\n color: #efebe9 !important;\n}\n\n.brown-waves.waves-lighten-5 .waves-ripple {\n background-color: #efebe9 !important;\n}\n\n.brown.lighten-4 {\n background-color: #d7ccc8 !important;\n}\n\n.brown-text.text-lighten-4 {\n color: #d7ccc8 !important;\n}\n\n.brown-waves.waves-lighten-4 .waves-ripple {\n background-color: #d7ccc8 !important;\n}\n\n.brown.lighten-3 {\n background-color: #bcaaa4 !important;\n}\n\n.brown-text.text-lighten-3 {\n color: #bcaaa4 !important;\n}\n\n.brown-waves.waves-lighten-3 .waves-ripple {\n background-color: #bcaaa4 !important;\n}\n\n.brown.lighten-2 {\n background-color: #a1887f !important;\n}\n\n.brown-text.text-lighten-2 {\n color: #a1887f !important;\n}\n\n.brown-waves.waves-lighten-2 .waves-ripple {\n background-color: #a1887f !important;\n}\n\n.brown.lighten-1 {\n background-color: #8d6e63 !important;\n}\n\n.brown-text.text-lighten-1 {\n color: #8d6e63 !important;\n}\n\n.brown-waves.waves-lighten-1 .waves-ripple {\n background-color: #8d6e63 !important;\n}\n\n.brown.darken-1 {\n background-color: #6d4c41 !important;\n}\n\n.brown-text.text-darken-1 {\n color: #6d4c41 !important;\n}\n\n.brown-waves.waves-darken-1 .waves-ripple {\n background-color: #6d4c41 !important;\n}\n\n.brown.darken-2 {\n background-color: #5d4037 !important;\n}\n\n.brown-text.text-darken-2 {\n color: #5d4037 !important;\n}\n\n.brown-waves.waves-darken-2 .waves-ripple {\n background-color: #5d4037 !important;\n}\n\n.brown.darken-3 {\n background-color: #4e342e !important;\n}\n\n.brown-text.text-darken-3 {\n color: #4e342e !important;\n}\n\n.brown-waves.waves-darken-3 .waves-ripple {\n background-color: #4e342e !important;\n}\n\n.brown.darken-4 {\n background-color: #3e2723 !important;\n}\n\n.brown-text.text-darken-4 {\n color: #3e2723 !important;\n}\n\n.brown-waves.waves-darken-4 .waves-ripple {\n background-color: #3e2723 !important;\n}\n\n.blue-grey {\n background-color: #607d8b !important;\n}\n\n.blue-grey-text {\n color: #607d8b !important;\n}\n\n.blue-grey-waves .waves-ripple {\n background-color: #607d8b !important;\n}\n\n.blue-grey.lighten-5 {\n background-color: #eceff1 !important;\n}\n\n.blue-grey-text.text-lighten-5 {\n color: #eceff1 !important;\n}\n\n.blue-grey-waves.waves-lighten-5 .waves-ripple {\n background-color: #eceff1 !important;\n}\n\n.blue-grey.lighten-4 {\n background-color: #cfd8dc !important;\n}\n\n.blue-grey-text.text-lighten-4 {\n color: #cfd8dc !important;\n}\n\n.blue-grey-waves.waves-lighten-4 .waves-ripple {\n background-color: #cfd8dc !important;\n}\n\n.blue-grey.lighten-3 {\n background-color: #b0bec5 !important;\n}\n\n.blue-grey-text.text-lighten-3 {\n color: #b0bec5 !important;\n}\n\n.blue-grey-waves.waves-lighten-3 .waves-ripple {\n background-color: #b0bec5 !important;\n}\n\n.blue-grey.lighten-2 {\n background-color: #90a4ae !important;\n}\n\n.blue-grey-text.text-lighten-2 {\n color: #90a4ae !important;\n}\n\n.blue-grey-waves.waves-lighten-2 .waves-ripple {\n background-color: #90a4ae !important;\n}\n\n.blue-grey.lighten-1 {\n background-color: #78909c !important;\n}\n\n.blue-grey-text.text-lighten-1 {\n color: #78909c !important;\n}\n\n.blue-grey-waves.waves-lighten-1 .waves-ripple {\n background-color: #78909c !important;\n}\n\n.blue-grey.darken-1 {\n background-color: #546e7a !important;\n}\n\n.blue-grey-text.text-darken-1 {\n color: #546e7a !important;\n}\n\n.blue-grey-waves.waves-darken-1 .waves-ripple {\n background-color: #546e7a !important;\n}\n\n.blue-grey.darken-2 {\n background-color: #455a64 !important;\n}\n\n.blue-grey-text.text-darken-2 {\n color: #455a64 !important;\n}\n\n.blue-grey-waves.waves-darken-2 .waves-ripple {\n background-color: #455a64 !important;\n}\n\n.blue-grey.darken-3 {\n background-color: #37474f !important;\n}\n\n.blue-grey-text.text-darken-3 {\n color: #37474f !important;\n}\n\n.blue-grey-waves.waves-darken-3 .waves-ripple {\n background-color: #37474f !important;\n}\n\n.blue-grey.darken-4 {\n background-color: #263238 !important;\n}\n\n.blue-grey-text.text-darken-4 {\n color: #263238 !important;\n}\n\n.blue-grey-waves.waves-darken-4 .waves-ripple {\n background-color: #263238 !important;\n}\n\n.grey {\n background-color: #9e9e9e !important;\n}\n\n.grey-text {\n color: #9e9e9e !important;\n}\n\n.grey-waves .waves-ripple {\n background-color: #9e9e9e !important;\n}\n\n.grey.lighten-5 {\n background-color: #fafafa !important;\n}\n\n.grey-text.text-lighten-5 {\n color: #fafafa !important;\n}\n\n.grey-waves.waves-lighten-5 .waves-ripple {\n background-color: #fafafa !important;\n}\n\n.grey.lighten-4 {\n background-color: #f5f5f5 !important;\n}\n\n.grey-text.text-lighten-4 {\n color: #f5f5f5 !important;\n}\n\n.grey-waves.waves-lighten-4 .waves-ripple {\n background-color: #f5f5f5 !important;\n}\n\n.grey.lighten-3 {\n background-color: #eeeeee !important;\n}\n\n.grey-text.text-lighten-3 {\n color: #eeeeee !important;\n}\n\n.grey-waves.waves-lighten-3 .waves-ripple {\n background-color: #eeeeee !important;\n}\n\n.grey.lighten-2 {\n background-color: #e0e0e0 !important;\n}\n\n.grey-text.text-lighten-2 {\n color: #e0e0e0 !important;\n}\n\n.grey-waves.waves-lighten-2 .waves-ripple {\n background-color: #e0e0e0 !important;\n}\n\n.grey.lighten-1 {\n background-color: #bdbdbd !important;\n}\n\n.grey-text.text-lighten-1 {\n color: #bdbdbd !important;\n}\n\n.grey-waves.waves-lighten-1 .waves-ripple {\n background-color: #bdbdbd !important;\n}\n\n.grey.darken-1 {\n background-color: #757575 !important;\n}\n\n.grey-text.text-darken-1 {\n color: #757575 !important;\n}\n\n.grey-waves.waves-darken-1 .waves-ripple {\n background-color: #757575 !important;\n}\n\n.grey.darken-2 {\n background-color: #616161 !important;\n}\n\n.grey-text.text-darken-2 {\n color: #616161 !important;\n}\n\n.grey-waves.waves-darken-2 .waves-ripple {\n background-color: #616161 !important;\n}\n\n.grey.darken-3 {\n background-color: #424242 !important;\n}\n\n.grey-text.text-darken-3 {\n color: #424242 !important;\n}\n\n.grey-waves.waves-darken-3 .waves-ripple {\n background-color: #424242 !important;\n}\n\n.grey.darken-4 {\n background-color: #212121 !important;\n}\n\n.grey-text.text-darken-4 {\n color: #212121 !important;\n}\n\n.grey-waves.waves-darken-4 .waves-ripple {\n background-color: #212121 !important;\n}\n\n.black {\n background-color: #000000 !important;\n}\n\n.black-text {\n color: #000000 !important;\n}\n\n.white {\n background-color: #ffffff !important;\n}\n\n.white-text {\n color: #ffffff !important;\n}\n\n.transparent {\n background-color: transparent !important;\n}\n\n.transparent-text {\n color: transparent !important;\n}\n\n/**\n * prism.js Twilight theme\n * Based (more or less) on the Twilight theme originally of Textmate fame.\n * @author Remy Bach\n */\ncode[class*=language-],\npre[class*=language-] {\n color: white;\n background: none;\n font-family: Consolas, Monaco, \"Andale Mono\", \"Ubuntu Mono\", monospace;\n text-align: left;\n text-shadow: 0 -0.1em 0.2em black;\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n word-wrap: normal;\n line-height: 1.5;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n -webkit-hyphens: none;\n -moz-hyphens: none;\n -ms-hyphens: none;\n hyphens: none;\n}\n\npre[class*=language-],\n:not(pre) > code[class*=language-] {\n background: hsl(0, 0%, 8%); /* #141414 */\n}\n\n/* Code blocks */\npre[class*=language-] {\n border-radius: 0.5em;\n border: 0.3em solid hsl(0, 0%, 33%); /* #282A2B */\n box-shadow: 1px 1px 0.5em black inset;\n margin: 0.5em 0;\n overflow: auto;\n padding: 1em;\n}\n\npre[class*=language-]::-moz-selection {\n /* Firefox */\n background: hsl(200, 4%, 16%); /* #282A2B */\n}\n\npre[class*=language-]::selection {\n /* Safari */\n background: hsl(200, 4%, 16%); /* #282A2B */\n}\n\n/* Text Selection colour */\npre[class*=language-]::-moz-selection, pre[class*=language-] ::-moz-selection,\ncode[class*=language-]::-moz-selection, code[class*=language-] ::-moz-selection {\n text-shadow: none;\n background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */\n}\n\npre[class*=language-]::selection, pre[class*=language-] ::selection,\ncode[class*=language-]::selection, code[class*=language-] ::selection {\n text-shadow: none;\n background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */\n}\n\n/* Inline code */\n:not(pre) > code[class*=language-] {\n border-radius: 0.3em;\n border: 0.13em solid hsl(0, 0%, 33%); /* #545454 */\n box-shadow: 1px 1px 0.3em -0.1em black inset;\n padding: 0.15em 0.2em 0.05em;\n white-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n color: hsl(0, 0%, 47%); /* #777777 */\n}\n\n.token.punctuation {\n opacity: 0.7;\n}\n\n.namespace {\n opacity: 0.7;\n}\n\n.token.tag,\n.token.boolean,\n.token.number,\n.token.deleted {\n color: hsl(14, 58%, 55%); /* #CF6A4C */\n}\n\n.token.keyword,\n.token.property,\n.token.selector,\n.token.constant,\n.token.symbol,\n.token.builtin {\n color: hsl(53, 89%, 79%); /* #F9EE98 */\n}\n\n.token.attr-name,\n.token.attr-value,\n.token.string,\n.token.char,\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string,\n.token.variable,\n.token.inserted {\n color: hsl(76, 21%, 52%); /* #8F9D6A */\n}\n\n.token.atrule {\n color: hsl(218, 22%, 55%); /* #7587A6 */\n}\n\n.token.regex,\n.token.important {\n color: hsl(42, 75%, 65%); /* #E9C062 */\n}\n\n.token.important,\n.token.bold {\n font-weight: bold;\n}\n\n.token.italic {\n font-style: italic;\n}\n\n.token.entity {\n cursor: help;\n}\n\npre[data-line] {\n padding: 1em 0 1em 3em;\n position: relative;\n}\n\n/* Markup */\n.language-markup .token.tag,\n.language-markup .token.attr-name,\n.language-markup .token.punctuation {\n color: hsl(33, 33%, 52%); /* #AC885B */\n}\n\n/* Make the tokens sit above the line highlight so the colours don't look faded. */\n.token {\n position: relative;\n z-index: 1;\n}\n\n.line-highlight {\n background: hsla(0, 0%, 33%, 0.25); /* #545454 */\n background: linear-gradient(to right, hsla(0, 0%, 33%, 0.1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */\n border-bottom: 1px dashed hsl(0, 0%, 33%); /* #545454 */\n border-top: 1px dashed hsl(0, 0%, 33%); /* #545454 */\n left: 0;\n line-height: inherit;\n margin-top: 0.75em; /* Same as .prism’s padding-top */\n padding: inherit 0;\n pointer-events: none;\n position: absolute;\n right: 0;\n white-space: pre;\n z-index: 0;\n}\n\n.line-highlight:before,\n.line-highlight[data-end]:after {\n background-color: hsl(215, 15%, 59%); /* #8794A6 */\n border-radius: 999px;\n box-shadow: 0 1px white;\n color: hsl(24, 20%, 95%); /* #F5F2F0 */\n content: attr(data-start);\n font: bold 65%/1.5 sans-serif;\n left: 0.6em;\n min-width: 1em;\n padding: 0 0.5em;\n position: absolute;\n text-align: center;\n text-shadow: none;\n top: 0.4em;\n vertical-align: 0.3em;\n}\n\n.line-highlight[data-end]:after {\n bottom: 0.4em;\n content: attr(data-end);\n top: auto;\n}\n\n.window {\n font-family: \"Ubuntu\", sans-serif;\n font-size: 17px;\n width: 600px;\n margin: 75px auto;\n background: #2c3e50;\n height: 350px;\n border-radius: 5px;\n display: relative;\n box-shadow: 10px 10px 10px #888888;\n}\n\n.afterclose {\n color: #34495e;\n display: none;\n text-align: center;\n}\n\n.open {\n color: #fff;\n padding: 15px;\n background: #2ecc71;\n border-radius: 4px;\n border: none;\n}\n\n.bash {\n width: 600px;\n background: #34495e;\n height: 310px;\n border-radius: 5px;\n top: 40px;\n display: absolute;\n color: #fff;\n text-align: left;\n}\n.bash .command::before {\n content: \"user@machine $ : \";\n color: #2ecc71;\n}\n.bash .resulta::before {\n content: \">>\";\n color: #2ecc71;\n}\n\n/* effected by controllers */\n.windowmax {\n width: 100%;\n margin: auto;\n background: #2c3e50;\n height: 1000px;\n border-radius: 5px;\n display: relative;\n}\n\n.windowmin {\n width: 300px;\n height: 45px;\n background: #2c3e50;\n border-radius: 5px;\n bottom: 0;\n position: fixed;\n}\n\n.bashmax {\n display: absolute;\n width: 100%;\n background: #34495e;\n height: 960px;\n border-radius: 5px;\n bottom: 0;\n color: #fff;\n}\n\n/* !--end--! */\n.buttons {\n width: 15px;\n height: 15px;\n border-radius: 50%;\n float: right;\n margin: 13px 4px;\n border: none;\n}\n\n.close {\n background: #e74c3c;\n}\n\n.maximize {\n background: #f1c40f;\n}\n\n.minimize {\n background: #2ecc71;\n}\n\n.result {\n display: none;\n}\n\n.controls {\n height: 40px;\n top: 0;\n}\n\n.title {\n color: #fff;\n font-weight: bold;\n padding: 10px;\n}\n\n.material-tooltip {\n padding: 10px 8px;\n font-size: 1rem;\n z-index: 2000;\n border-radius: 2px;\n color: #fff;\n min-height: 36px;\n line-height: 120%;\n opacity: 0;\n position: absolute;\n text-align: center;\n max-width: calc(100% - 4px);\n overflow: hidden;\n left: 0;\n top: 0;\n pointer-events: none;\n visibility: hidden;\n background-color: #323232;\n}\n\n.backdrop {\n position: absolute;\n opacity: 0;\n height: 7px;\n width: 14px;\n border-radius: 0 0 50% 50%;\n background-color: #323232;\n z-index: -1;\n transform-origin: 50% 0%;\n visibility: hidden;\n}\n\n.shadow-0 {\n box-shadow: none !important;\n}\n\n/* 2dp elevation modified*/\n.shadow-1, nav, .dropdown-content, .card, .card-panel, .btn-floating, .btn, .btn-small, .btn-large, .collapsible {\n box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);\n}\n\n.shadow-1-half, .btn-floating:hover, .btn:hover, .btn-small:hover, .btn-large:hover {\n box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2);\n}\n\n/* 6dp elevation modified*/\n.shadow-2 {\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3);\n}\n\n/* 12dp elevation modified*/\n.shadow-3 {\n box-shadow: 0 8px 17px 2px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2);\n}\n\n/* 16dp elevation */\n.shadow-4 {\n box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -7px rgba(0, 0, 0, 0.2);\n}\n\n/* 24dp elevation */\n.shadow-5, .modal {\n box-shadow: 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12), 0 11px 15px -7px rgba(0, 0, 0, 0.2);\n}\n\n/* 24dp elevation */\n.invert-shadow-5 {\n box-shadow: 38px 0 0 0 rgba(0, 0, 0, 0.14), 46px 0 0 0 rgba(0, 0, 0, 0.12), 15px 0 0 0 rgba(0, 0, 0, 0.2);\n}\n\n.hoverable {\n transition: box-shadow 0.25s;\n}\n.hoverable:hover {\n box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n}\n\n/*!\n * Waves v0.6.0\n * http://fian.my.id/Waves\n *\n * Copyright 2014 Alfiana E. Sibuea and other contributors\n * Released under the MIT license\n * https://github.com/fians/Waves/blob/master/LICENSE\n */\n.waves-effect {\n position: relative;\n cursor: pointer;\n display: inline-block;\n overflow: hidden;\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n vertical-align: middle;\n z-index: 1;\n transition: 0.3s ease-out;\n}\n.waves-effect .waves-ripple {\n position: absolute;\n border-radius: 50%;\n width: 20px;\n height: 20px;\n margin-top: -10px;\n margin-left: -10px;\n opacity: 0;\n background: rgba(0, 0, 0, 0.2);\n transition: all 0.7s ease-out;\n transition-property: transform, opacity;\n transform: scale(0);\n pointer-events: none;\n}\n.waves-effect.waves-light .waves-ripple {\n background-color: rgba(255, 255, 255, 0.45);\n}\n.waves-effect.waves-red .waves-ripple {\n background-color: rgba(244, 67, 54, 0.7);\n}\n.waves-effect.waves-yellow .waves-ripple {\n background-color: rgba(255, 235, 59, 0.7);\n}\n.waves-effect.waves-orange .waves-ripple {\n background-color: rgba(255, 152, 0, 0.7);\n}\n.waves-effect.waves-purple .waves-ripple {\n background-color: rgba(156, 39, 176, 0.7);\n}\n.waves-effect.waves-green .waves-ripple {\n background-color: rgba(76, 175, 80, 0.7);\n}\n.waves-effect.waves-teal .waves-ripple {\n background-color: rgba(0, 150, 136, 0.7);\n}\n.waves-effect input[type=button], .waves-effect input[type=reset], .waves-effect input[type=submit] {\n border: 0;\n font-style: normal;\n font-size: inherit;\n text-transform: inherit;\n background: none;\n}\n.waves-effect img {\n position: relative;\n z-index: -1;\n}\n\n.waves-notransition {\n transition: none !important;\n}\n\n.waves-circle {\n transform: translateZ(0);\n -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%);\n}\n\n.waves-input-wrapper {\n border-radius: 0.2em;\n vertical-align: bottom;\n}\n.waves-input-wrapper .waves-button-input {\n position: relative;\n top: 0;\n left: 0;\n z-index: 1;\n}\n\n.waves-circle {\n text-align: center;\n width: 2.5em;\n height: 2.5em;\n line-height: 2.5em;\n border-radius: 50%;\n -webkit-mask-image: none;\n}\n\n.waves-block {\n display: block;\n}\n\n/* Firefox Bug: link not triggered */\n.waves-effect .waves-ripple {\n z-index: -1;\n}\n\n.modal {\n position: fixed;\n left: 0;\n right: 0;\n background-color: #fafafa;\n padding: 0;\n max-height: 70%;\n width: 55%;\n margin: auto;\n overflow-y: auto;\n border-radius: 2px;\n will-change: top, opacity;\n}\n.modal:focus {\n outline: none;\n}\n@media only screen and (max-width : 992px) {\n .modal {\n width: 80%;\n }\n}\n.modal h1, .modal h2, .modal h3, .modal h4 {\n margin-top: 0;\n}\n.modal .modal-content {\n padding: 24px;\n}\n.modal .modal-close {\n cursor: pointer;\n}\n.modal .modal-footer {\n border-radius: 0 0 2px 2px;\n background-color: #fafafa;\n padding: 4px 6px;\n height: 56px;\n width: 100%;\n text-align: right;\n}\n.modal .modal-footer .btn, .modal .modal-footer .btn-small, .modal .modal-footer .btn-large, .modal .modal-footer .btn-flat {\n margin: 6px 0;\n}\n.modal .modal-header {\n border-radius: 2px 2px 0 0;\n background-color: #fafafa;\n padding: 6px 4px;\n height: 56px;\n width: 100%;\n text-align: right;\n}\n.modal .modal-header .btn, .modal .modal-header .btn-small, .modal .modal-header .btn-large, .modal .modal-header .btn-flat {\n margin: 6px 0;\n}\n\n.modal-overlay {\n position: fixed;\n z-index: 999;\n top: -25%;\n left: 0;\n bottom: 0;\n right: 0;\n height: 125%;\n width: 100%;\n background: #000;\n display: none;\n will-change: opacity;\n}\n\n.modal.modal-fixed-footer {\n padding: 0;\n height: 70%;\n}\n.modal.modal-fixed-footer .modal-content {\n position: absolute;\n height: calc(100% - 56px);\n max-height: 100%;\n width: 100%;\n overflow-y: auto;\n}\n.modal.modal-fixed-footer .modal-footer {\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n position: absolute;\n bottom: 0;\n}\n\n.modal.bottom-sheet {\n top: auto;\n bottom: -100%;\n margin: 0;\n width: 100%;\n max-height: 45%;\n border-radius: 0;\n will-change: bottom, opacity;\n}\n\nhtml,\nbody,\n#root {\n margin: 0;\n height: 100%;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\n.noselect {\n -webkit-touch-callout: none; /* iOS Safari */\n -webkit-user-select: none; /* Safari */\n -khtml-user-select: none; /* Konqueror HTML */\n -moz-user-select: none; /* Old versions of Firefox */\n -ms-user-select: none; /* Internet Explorer/Edge */\n user-select: none;\n /* Non-prefixed version, currently\n supported by Chrome, Edge, Opera and Firefox */\n}\n\nul:not(.browser-default) {\n padding-left: 0;\n list-style-type: none;\n}\nul:not(.browser-default) > li {\n list-style-type: none;\n}\n\na {\n color: #039be5;\n text-decoration: none;\n -webkit-tap-highlight-color: transparent;\n}\n\n.w-100 {\n width: 100%;\n}\n\n.right-align {\n text-align: right;\n}\n\n.center-align {\n text-align: center;\n}\n\n.v-center {\n display: flex;\n align-items: center;\n}\n\n.mb1 {\n margin-bottom: 10px;\n}\n\n.collection {\n margin: 0.3333333333rem 0 0.6666666667rem 0;\n border: 1px solid #e0e0e0;\n border-radius: 2px;\n overflow: hidden;\n position: relative;\n}\n.collection .collection-item {\n background-color: #fff;\n line-height: 1.5rem;\n padding: 10px 20px;\n margin: 0;\n border-bottom: 1px solid #e0e0e0;\n}\n.collection .collection-item.hover:hover {\n background-color: #ddd;\n}\n.collection .collection-item.avatar {\n min-height: 84px;\n padding-left: 72px;\n position: relative;\n}\n.collection .collection-item.avatar:not(.circle-clipper) > .circle,\n.collection .collection-item.avatar :not(.circle-clipper) > .circle {\n position: absolute;\n width: 42px;\n height: 42px;\n overflow: hidden;\n left: 15px;\n display: inline-block;\n vertical-align: middle;\n}\n.collection .collection-item.avatar i.circle {\n font-size: 18px;\n line-height: 42px;\n color: #fff;\n background-color: #999;\n text-align: center;\n}\n.collection .collection-item.avatar .title {\n font-size: 16px;\n}\n.collection .collection-item.avatar p {\n margin: 0;\n}\n.collection .collection-item.avatar .secondary-content {\n position: absolute;\n top: 16px;\n right: 16px;\n}\n.collection .collection-item:last-child {\n border-bottom: none;\n}\n.collection .collection-item.active {\n background-color: #26a69a;\n color: #eafaf9;\n}\n.collection .collection-item.active .secondary-content {\n color: #fff;\n}\n.collection a.collection-item {\n display: block;\n transition: 0.25s;\n color: #26a69a;\n}\n.collection a.collection-item:not(.active):hover {\n background-color: #ddd;\n}\n.collection.with-header .collection-header {\n background-color: #fff;\n border-bottom: 1px solid #e0e0e0;\n padding: 10px 20px;\n}\n.collection.with-header .collection-item {\n padding-left: 30px;\n}\n.collection.with-header .collection-item.avatar {\n padding-left: 72px;\n}\n\n.secondary-content {\n float: right;\n color: #26a69a;\n}\n\n.collapsible .collection {\n margin: 0;\n border: none;\n}\n\n.modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 100vh;\n width: 100vw;\n padding: 20px 0 20px 0;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 999;\n display: flex;\n justify-content: center;\n}\n.modal-overlay .innerform {\n max-width: 650px;\n}\n.modal-overlay .innerform form {\n overflow: hidden;\n}\n\n/*********************\n Media Query Classes\n**********************/\n@media only screen and (max-width : 600px) {\n .hide-on-small-only, .hide-on-small-and-down {\n display: none !important;\n }\n}\n\n@media only screen and (max-width : 992px) {\n .hide-on-med-and-down {\n display: none !important;\n }\n}\n\n@media only screen and (min-width : 601px) {\n .hide-on-med-and-up {\n display: none !important;\n }\n}\n\n@media only screen and (min-width: 600px) and (max-width: 992px) {\n .hide-on-med-only {\n display: none !important;\n }\n}\n\n@media only screen and (min-width : 993px) {\n .hide-on-large-only {\n display: none !important;\n }\n}\n\n@media only screen and (min-width : 1201px) {\n .hide-on-extra-large-only {\n display: none !important;\n }\n}\n\n@media only screen and (min-width : 1201px) {\n .show-on-extra-large {\n display: block !important;\n }\n}\n\n@media only screen and (min-width : 993px) {\n .show-on-large {\n display: block !important;\n }\n}\n\n@media only screen and (min-width: 600px) and (max-width: 992px) {\n .show-on-medium {\n display: block !important;\n }\n}\n\n@media only screen and (max-width : 600px) {\n .show-on-small {\n display: block !important;\n }\n}\n\n@media only screen and (min-width : 601px) {\n .show-on-medium-and-up {\n display: block !important;\n }\n}\n\n@media only screen and (max-width : 992px) {\n .show-on-medium-and-down {\n display: block !important;\n }\n}\n\n@media only screen and (max-width : 600px) {\n .center-on-small-only {\n text-align: center;\n }\n}\n\n/*******************\n Utility Classes\n*******************/\n.hide {\n display: none !important;\n}\n\n.left-align {\n text-align: left;\n}\n\n.right-align {\n text-align: right;\n}\n\n.center, .center-align {\n text-align: center;\n}\n\n.left {\n float: left !important;\n}\n\n.right {\n float: right !important;\n}\n\n.no-select {\n user-select: none;\n}\n\n.circle {\n border-radius: 50%;\n}\n\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n\n.truncate {\n display: block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.no-padding {\n padding: 0 !important;\n}\n\nspan.badge {\n min-width: 3rem;\n padding: 0 6px;\n margin-left: 14px;\n text-align: center;\n font-size: 1rem;\n line-height: 22px;\n height: 22px;\n color: #757575;\n float: right;\n box-sizing: border-box;\n}\nspan.badge.new {\n font-weight: 300;\n font-size: 0.8rem;\n color: #fff;\n background-color: #26a69a;\n border-radius: 2px;\n}\nspan.badge.new:after {\n content: \" new\";\n}\nspan.badge[data-badge-caption]::after {\n content: \" \" attr(data-badge-caption);\n}\n\nnav ul a span.badge {\n display: inline-block;\n float: none;\n margin-left: 4px;\n line-height: 22px;\n height: 22px;\n -webkit-font-smoothing: auto;\n}\n\n.collection-item span.badge {\n margin-top: calc(0.75rem - 11px);\n}\n\n.collapsible span.badge {\n margin-left: auto;\n}\n\n.sidenav span.badge {\n margin-top: 11.5px;\n}\n\ntable span.badge {\n display: inline-block;\n float: none;\n margin-left: auto;\n}\n\n.chip {\n display: inline-block;\n height: 32px;\n font-size: 13px;\n font-weight: 500;\n color: rgba(0, 0, 0, 0.6);\n line-height: 32px;\n padding: 0 12px;\n border-radius: 16px;\n background-color: #e4e4e4;\n margin-bottom: 5px;\n margin-right: 5px;\n}\n.chip:focus {\n outline: none;\n background-color: #26a69a;\n color: #fff;\n}\n.chip > img {\n float: left;\n margin: 0 8px 0 -12px;\n height: 32px;\n width: 32px;\n border-radius: 50%;\n}\n.chip .close {\n cursor: pointer;\n float: right;\n font-size: 16px;\n line-height: 32px;\n padding-left: 8px;\n}\n\n.chips {\n border: none;\n border-bottom: 1px solid #9e9e9e;\n box-shadow: none;\n margin: 0 0 8px 0;\n min-height: 45px;\n outline: none;\n transition: all 0.3s;\n}\n.chips.focus {\n border-bottom: 1px solid #26a69a;\n box-shadow: 0 1px 0 0 #26a69a;\n}\n.chips:hover {\n cursor: text;\n}\n.chips .input {\n background: none;\n border: 0;\n color: rgba(0, 0, 0, 0.6);\n display: inline-block;\n font-size: 16px;\n height: 56px;\n line-height: 32px;\n outline: 0;\n margin: 0;\n padding: 0 !important;\n width: 120px !important;\n}\n.chips .input:focus {\n border: 0 !important;\n box-shadow: none !important;\n}\n.chips .autocomplete-content {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n.prefix ~ .chips {\n margin-left: 3rem;\n width: 92%;\n width: calc(100% - 3rem);\n}\n\n.chips:empty ~ label {\n font-size: 0.8rem;\n transform: translateY(-140%);\n}\n\n.collapsible {\n border-top: 1px solid #ddd;\n border-right: 1px solid #ddd;\n border-left: 1px solid #ddd;\n margin: 0.3333333333rem 0 0.6666666667rem 0;\n}\n\n.collapsible-header {\n display: flex;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n line-height: 1.5;\n padding: 1rem;\n background-color: #fff;\n border-bottom: 1px solid #ddd;\n}\n.collapsible-header:focus {\n outline: 0;\n}\n.collapsible-header i {\n width: 2rem;\n font-size: 1.6rem;\n display: inline-block;\n text-align: center;\n margin-right: 1rem;\n}\n\n.keyboard-focused .collapsible-header:focus {\n background-color: #eee;\n}\n\n.collapsible-body {\n display: none;\n border-bottom: 1px solid #ddd;\n box-sizing: border-box;\n padding: 2rem;\n}\n\n.sidenav .collapsible,\n.sidenav.fixed .collapsible {\n border: none;\n box-shadow: none;\n}\n.sidenav .collapsible li,\n.sidenav.fixed .collapsible li {\n padding: 0;\n}\n.sidenav .collapsible-header,\n.sidenav.fixed .collapsible-header {\n background-color: transparent;\n border: none;\n line-height: inherit;\n height: inherit;\n padding: 0 15px;\n}\n.sidenav .collapsible-header:hover,\n.sidenav.fixed .collapsible-header:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n.sidenav .collapsible-header i,\n.sidenav.fixed .collapsible-header i {\n line-height: inherit;\n}\n.sidenav .collapsible-body,\n.sidenav.fixed .collapsible-body {\n border: 0;\n background-color: #fff;\n}\n.sidenav .collapsible-body li a,\n.sidenav.fixed .collapsible-body li a {\n padding: 0 22.5px 0 30px;\n}\n\n.collapsible.popout {\n border: none;\n box-shadow: none;\n}\n.collapsible.popout > li {\n box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);\n margin: 0 24px;\n transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n.collapsible.popout > li.active {\n box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15);\n margin: 16px 0;\n}\n\n.collection {\n margin: 0.3333333333rem 0 0.6666666667rem 0;\n border: 1px solid #e0e0e0;\n border-radius: 2px;\n overflow: hidden;\n position: relative;\n}\n.collection .collection-item {\n background-color: #fff;\n line-height: 1.5rem;\n padding: 10px 20px;\n margin: 0;\n border-bottom: 1px solid #e0e0e0;\n}\n.collection .collection-item.avatar {\n min-height: 84px;\n padding-left: 72px;\n position: relative;\n}\n.collection .collection-item.avatar:not(.circle-clipper) > .circle,\n.collection .collection-item.avatar :not(.circle-clipper) > .circle {\n position: absolute;\n width: 42px;\n height: 42px;\n overflow: hidden;\n left: 15px;\n display: inline-block;\n vertical-align: middle;\n}\n.collection .collection-item.avatar i.circle {\n font-size: 18px;\n line-height: 42px;\n color: #fff;\n background-color: #999;\n text-align: center;\n}\n.collection .collection-item.avatar .title {\n font-size: 16px;\n}\n.collection .collection-item.avatar p {\n margin: 0;\n}\n.collection .collection-item.avatar .secondary-content {\n position: absolute;\n top: 16px;\n right: 16px;\n}\n.collection .collection-item:last-child {\n border-bottom: none;\n}\n.collection .collection-item.active {\n background-color: #26a69a;\n color: #eafaf9;\n}\n.collection .collection-item.active .secondary-content {\n color: #fff;\n}\n.collection a.collection-item {\n display: block;\n transition: 0.25s;\n color: #26a69a;\n}\n.collection a.collection-item:not(.active):hover {\n background-color: #ddd;\n}\n.collection.with-header .collection-header {\n background-color: #fff;\n border-bottom: 1px solid #e0e0e0;\n padding: 10px 20px;\n}\n.collection.with-header .collection-item {\n padding-left: 30px;\n}\n.collection.with-header .collection-item.avatar {\n padding-left: 72px;\n}\n.collection .secondary-content {\n float: right;\n color: #26a69a;\n}\n\nselect:focus {\n outline: 1px solid #c9f3ef;\n}\n\nbutton:focus {\n outline: none;\n background-color: #2ab7a9;\n}\n\nlabel {\n font-size: 0.8rem;\n color: #9e9e9e;\n}\n\n/* Text Inputs + Textarea\n ========================================================================== */\n/* Style Placeholders */\n::placeholder {\n color: #d1d1d1;\n}\n\n/* Text inputs */\ninput:not([type]),\ninput[type=text]:not(.browser-default),\ninput[type=password]:not(.browser-default),\ninput[type=email]:not(.browser-default),\ninput[type=url]:not(.browser-default),\ninput[type=time]:not(.browser-default),\ninput[type=date]:not(.browser-default),\ninput[type=datetime]:not(.browser-default),\ninput[type=datetime-local]:not(.browser-default),\ninput[type=tel]:not(.browser-default),\ninput[type=number]:not(.browser-default),\ninput[type=search]:not(.browser-default),\ntextarea.textarea {\n background-color: transparent;\n border: none;\n border-bottom: 1px solid #9e9e9e;\n border-radius: 0;\n outline: none;\n height: 56px;\n width: 100%;\n font-size: 16px;\n margin: 0 0 8px 0;\n padding: 0;\n box-shadow: none;\n box-sizing: content-box;\n transition: box-shadow 0.3s, border 0.3s;\n}\ninput:not([type]):disabled, input:not([type])[readonly=readonly],\ninput[type=text]:not(.browser-default):disabled,\ninput[type=text]:not(.browser-default)[readonly=readonly],\ninput[type=password]:not(.browser-default):disabled,\ninput[type=password]:not(.browser-default)[readonly=readonly],\ninput[type=email]:not(.browser-default):disabled,\ninput[type=email]:not(.browser-default)[readonly=readonly],\ninput[type=url]:not(.browser-default):disabled,\ninput[type=url]:not(.browser-default)[readonly=readonly],\ninput[type=time]:not(.browser-default):disabled,\ninput[type=time]:not(.browser-default)[readonly=readonly],\ninput[type=date]:not(.browser-default):disabled,\ninput[type=date]:not(.browser-default)[readonly=readonly],\ninput[type=datetime]:not(.browser-default):disabled,\ninput[type=datetime]:not(.browser-default)[readonly=readonly],\ninput[type=datetime-local]:not(.browser-default):disabled,\ninput[type=datetime-local]:not(.browser-default)[readonly=readonly],\ninput[type=tel]:not(.browser-default):disabled,\ninput[type=tel]:not(.browser-default)[readonly=readonly],\ninput[type=number]:not(.browser-default):disabled,\ninput[type=number]:not(.browser-default)[readonly=readonly],\ninput[type=search]:not(.browser-default):disabled,\ninput[type=search]:not(.browser-default)[readonly=readonly],\ntextarea.textarea:disabled,\ntextarea.textarea[readonly=readonly] {\n color: rgba(0, 0, 0, 0.42);\n border-bottom: 1px dotted rgba(0, 0, 0, 0.42);\n}\ninput:not([type]):disabled + label, input:not([type])[readonly=readonly] + label,\ninput[type=text]:not(.browser-default):disabled + label,\ninput[type=text]:not(.browser-default)[readonly=readonly] + label,\ninput[type=password]:not(.browser-default):disabled + label,\ninput[type=password]:not(.browser-default)[readonly=readonly] + label,\ninput[type=email]:not(.browser-default):disabled + label,\ninput[type=email]:not(.browser-default)[readonly=readonly] + label,\ninput[type=url]:not(.browser-default):disabled + label,\ninput[type=url]:not(.browser-default)[readonly=readonly] + label,\ninput[type=time]:not(.browser-default):disabled + label,\ninput[type=time]:not(.browser-default)[readonly=readonly] + label,\ninput[type=date]:not(.browser-default):disabled + label,\ninput[type=date]:not(.browser-default)[readonly=readonly] + label,\ninput[type=datetime]:not(.browser-default):disabled + label,\ninput[type=datetime]:not(.browser-default)[readonly=readonly] + label,\ninput[type=datetime-local]:not(.browser-default):disabled + label,\ninput[type=datetime-local]:not(.browser-default)[readonly=readonly] + label,\ninput[type=tel]:not(.browser-default):disabled + label,\ninput[type=tel]:not(.browser-default)[readonly=readonly] + label,\ninput[type=number]:not(.browser-default):disabled + label,\ninput[type=number]:not(.browser-default)[readonly=readonly] + label,\ninput[type=search]:not(.browser-default):disabled + label,\ninput[type=search]:not(.browser-default)[readonly=readonly] + label,\ntextarea.textarea:disabled + label,\ntextarea.textarea[readonly=readonly] + label {\n color: rgba(0, 0, 0, 0.42);\n}\ninput:not([type]):focus:not([readonly]),\ninput[type=text]:not(.browser-default):focus:not([readonly]),\ninput[type=password]:not(.browser-default):focus:not([readonly]),\ninput[type=email]:not(.browser-default):focus:not([readonly]),\ninput[type=url]:not(.browser-default):focus:not([readonly]),\ninput[type=time]:not(.browser-default):focus:not([readonly]),\ninput[type=date]:not(.browser-default):focus:not([readonly]),\ninput[type=datetime]:not(.browser-default):focus:not([readonly]),\ninput[type=datetime-local]:not(.browser-default):focus:not([readonly]),\ninput[type=tel]:not(.browser-default):focus:not([readonly]),\ninput[type=number]:not(.browser-default):focus:not([readonly]),\ninput[type=search]:not(.browser-default):focus:not([readonly]),\ntextarea.textarea:focus:not([readonly]) {\n border-bottom: 1px solid #26a69a;\n box-shadow: 0 1px 0 0 #26a69a;\n}\ninput:not([type]):focus:not([readonly]) + label,\ninput[type=text]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=password]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=email]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=url]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=time]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=date]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=datetime]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=datetime-local]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=tel]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=number]:not(.browser-default):focus:not([readonly]) + label,\ninput[type=search]:not(.browser-default):focus:not([readonly]) + label,\ntextarea.textarea:focus:not([readonly]) + label {\n color: #26a69a;\n}\ninput:not([type]):focus.valid ~ label,\ninput[type=text]:not(.browser-default):focus.valid ~ label,\ninput[type=password]:not(.browser-default):focus.valid ~ label,\ninput[type=email]:not(.browser-default):focus.valid ~ label,\ninput[type=url]:not(.browser-default):focus.valid ~ label,\ninput[type=time]:not(.browser-default):focus.valid ~ label,\ninput[type=date]:not(.browser-default):focus.valid ~ label,\ninput[type=datetime]:not(.browser-default):focus.valid ~ label,\ninput[type=datetime-local]:not(.browser-default):focus.valid ~ label,\ninput[type=tel]:not(.browser-default):focus.valid ~ label,\ninput[type=number]:not(.browser-default):focus.valid ~ label,\ninput[type=search]:not(.browser-default):focus.valid ~ label,\ntextarea.textarea:focus.valid ~ label {\n color: #4caf50;\n}\ninput:not([type]):focus.invalid ~ label,\ninput[type=text]:not(.browser-default):focus.invalid ~ label,\ninput[type=password]:not(.browser-default):focus.invalid ~ label,\ninput[type=email]:not(.browser-default):focus.invalid ~ label,\ninput[type=url]:not(.browser-default):focus.invalid ~ label,\ninput[type=time]:not(.browser-default):focus.invalid ~ label,\ninput[type=date]:not(.browser-default):focus.invalid ~ label,\ninput[type=datetime]:not(.browser-default):focus.invalid ~ label,\ninput[type=datetime-local]:not(.browser-default):focus.invalid ~ label,\ninput[type=tel]:not(.browser-default):focus.invalid ~ label,\ninput[type=number]:not(.browser-default):focus.invalid ~ label,\ninput[type=search]:not(.browser-default):focus.invalid ~ label,\ntextarea.textarea:focus.invalid ~ label {\n color: #f44336;\n}\ninput:not([type]).validate + label,\ninput[type=text]:not(.browser-default).validate + label,\ninput[type=password]:not(.browser-default).validate + label,\ninput[type=email]:not(.browser-default).validate + label,\ninput[type=url]:not(.browser-default).validate + label,\ninput[type=time]:not(.browser-default).validate + label,\ninput[type=date]:not(.browser-default).validate + label,\ninput[type=datetime]:not(.browser-default).validate + label,\ninput[type=datetime-local]:not(.browser-default).validate + label,\ninput[type=tel]:not(.browser-default).validate + label,\ninput[type=number]:not(.browser-default).validate + label,\ninput[type=search]:not(.browser-default).validate + label,\ntextarea.textarea.validate + label {\n width: 100%;\n}\n/* Validation Sass Placeholders */\n.select-wrapper.valid > input.select-dropdown, input:not([type]).valid, input:not([type]):focus.valid,\ninput[type=text]:not(.browser-default).valid,\ninput[type=text]:not(.browser-default):focus.valid,\ninput[type=password]:not(.browser-default).valid,\ninput[type=password]:not(.browser-default):focus.valid,\ninput[type=email]:not(.browser-default).valid,\ninput[type=email]:not(.browser-default):focus.valid,\ninput[type=url]:not(.browser-default).valid,\ninput[type=url]:not(.browser-default):focus.valid,\ninput[type=time]:not(.browser-default).valid,\ninput[type=time]:not(.browser-default):focus.valid,\ninput[type=date]:not(.browser-default).valid,\ninput[type=date]:not(.browser-default):focus.valid,\ninput[type=datetime]:not(.browser-default).valid,\ninput[type=datetime]:not(.browser-default):focus.valid,\ninput[type=datetime-local]:not(.browser-default).valid,\ninput[type=datetime-local]:not(.browser-default):focus.valid,\ninput[type=tel]:not(.browser-default).valid,\ninput[type=tel]:not(.browser-default):focus.valid,\ninput[type=number]:not(.browser-default).valid,\ninput[type=number]:not(.browser-default):focus.valid,\ninput[type=search]:not(.browser-default).valid,\ninput[type=search]:not(.browser-default):focus.valid,\ntextarea.textarea.valid,\ntextarea.textarea:focus.valid {\n border-bottom: 1px solid #4caf50;\n box-shadow: 0 1px 0 0 #4caf50;\n}\n\n.select-wrapper.invalid > input.select-dropdown, .select-wrapper.invalid > input.select-dropdown:focus, input:not([type]).invalid, input:not([type]):focus.invalid,\ninput[type=text]:not(.browser-default).invalid,\ninput[type=text]:not(.browser-default):focus.invalid,\ninput[type=password]:not(.browser-default).invalid,\ninput[type=password]:not(.browser-default):focus.invalid,\ninput[type=email]:not(.browser-default).invalid,\ninput[type=email]:not(.browser-default):focus.invalid,\ninput[type=url]:not(.browser-default).invalid,\ninput[type=url]:not(.browser-default):focus.invalid,\ninput[type=time]:not(.browser-default).invalid,\ninput[type=time]:not(.browser-default):focus.invalid,\ninput[type=date]:not(.browser-default).invalid,\ninput[type=date]:not(.browser-default):focus.invalid,\ninput[type=datetime]:not(.browser-default).invalid,\ninput[type=datetime]:not(.browser-default):focus.invalid,\ninput[type=datetime-local]:not(.browser-default).invalid,\ninput[type=datetime-local]:not(.browser-default):focus.invalid,\ninput[type=tel]:not(.browser-default).invalid,\ninput[type=tel]:not(.browser-default):focus.invalid,\ninput[type=number]:not(.browser-default).invalid,\ninput[type=number]:not(.browser-default):focus.invalid,\ninput[type=search]:not(.browser-default).invalid,\ninput[type=search]:not(.browser-default):focus.invalid,\ntextarea.textarea.invalid,\ntextarea.textarea:focus.invalid {\n border-bottom: 1px solid #f44336;\n box-shadow: 0 1px 0 0 #f44336;\n}\n\n.select-wrapper.valid .helper-text[data-success], .select-wrapper.invalid ~ .helper-text[data-error], input:not([type]).valid ~ .helper-text[data-success], input:not([type]):focus.valid ~ .helper-text[data-success], input:not([type]).invalid ~ .helper-text[data-error], input:not([type]):focus.invalid ~ .helper-text[data-error],\ninput[type=text]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=text]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=text]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=text]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=password]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=password]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=password]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=password]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=email]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=email]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=email]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=email]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=url]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=url]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=url]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=url]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=time]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=time]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=time]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=time]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=date]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=date]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=date]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=date]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=datetime]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=datetime]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=datetime]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=datetime-local]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=datetime-local]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=tel]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=tel]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=tel]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=tel]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=number]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=number]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=number]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=number]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ninput[type=search]:not(.browser-default).valid ~ .helper-text[data-success],\ninput[type=search]:not(.browser-default):focus.valid ~ .helper-text[data-success],\ninput[type=search]:not(.browser-default).invalid ~ .helper-text[data-error],\ninput[type=search]:not(.browser-default):focus.invalid ~ .helper-text[data-error],\ntextarea.textarea.valid ~ .helper-text[data-success],\ntextarea.textarea:focus.valid ~ .helper-text[data-success],\ntextarea.textarea.invalid ~ .helper-text[data-error],\ntextarea.textarea:focus.invalid ~ .helper-text[data-error] {\n color: transparent;\n user-select: none;\n pointer-events: none;\n}\n\n.select-wrapper.valid ~ .helper-text:after, input:not([type]).valid ~ .helper-text:after, input:not([type]):focus.valid ~ .helper-text:after,\ninput[type=text]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=text]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=password]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=password]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=email]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=email]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=url]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=url]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=time]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=time]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=date]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=date]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=datetime]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=datetime]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=datetime-local]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=tel]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=tel]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=number]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=number]:not(.browser-default):focus.valid ~ .helper-text:after,\ninput[type=search]:not(.browser-default).valid ~ .helper-text:after,\ninput[type=search]:not(.browser-default):focus.valid ~ .helper-text:after,\ntextarea.textarea.valid ~ .helper-text:after,\ntextarea.textarea:focus.valid ~ .helper-text:after {\n content: attr(data-success);\n color: #4caf50;\n}\n\n.select-wrapper.invalid ~ .helper-text:after, input:not([type]).invalid ~ .helper-text:after, input:not([type]):focus.invalid ~ .helper-text:after,\ninput[type=text]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=text]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=password]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=password]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=email]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=email]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=url]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=url]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=time]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=time]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=date]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=date]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=datetime]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=datetime-local]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=tel]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=tel]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=number]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=number]:not(.browser-default):focus.invalid ~ .helper-text:after,\ninput[type=search]:not(.browser-default).invalid ~ .helper-text:after,\ninput[type=search]:not(.browser-default):focus.invalid ~ .helper-text:after,\ntextarea.textarea.invalid ~ .helper-text:after,\ntextarea.textarea:focus.invalid ~ .helper-text:after {\n content: attr(data-error);\n color: #f44336;\n}\n\n.select-wrapper + label:after, input:not([type]) + label:after,\ninput[type=text]:not(.browser-default) + label:after,\ninput[type=password]:not(.browser-default) + label:after,\ninput[type=email]:not(.browser-default) + label:after,\ninput[type=url]:not(.browser-default) + label:after,\ninput[type=time]:not(.browser-default) + label:after,\ninput[type=date]:not(.browser-default) + label:after,\ninput[type=datetime]:not(.browser-default) + label:after,\ninput[type=datetime-local]:not(.browser-default) + label:after,\ninput[type=tel]:not(.browser-default) + label:after,\ninput[type=number]:not(.browser-default) + label:after,\ninput[type=search]:not(.browser-default) + label:after,\ntextarea.textarea + label:after {\n display: block;\n content: \"\";\n position: absolute;\n top: 100%;\n left: 0;\n opacity: 0;\n transition: 0.2s opacity ease-out, 0.2s color ease-out;\n}\n\n.input-field {\n position: relative;\n margin-top: 1rem;\n margin-bottom: 1rem;\n}\n.input-field.inline {\n display: inline-block;\n vertical-align: middle;\n margin-left: 5px;\n}\n.input-field.inline input,\n.input-field.inline .select-dropdown {\n margin-bottom: 1rem;\n}\n.input-field.col label {\n left: 0.5rem;\n}\n.input-field.col .prefix ~ label,\n.input-field.col .prefix ~ .validate ~ label {\n width: calc(100% - 3rem - 1rem);\n}\n.input-field > label {\n color: #9e9e9e;\n position: absolute;\n top: 0;\n left: 0;\n font-size: 1rem;\n cursor: text;\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n transform-origin: 0% 100%;\n text-align: initial;\n transform: translateY(12px);\n}\n.input-field > label:not(.label-icon).active {\n transform: translateY(-14px) scale(0.8);\n transform-origin: 0 0;\n}\n.input-field > input[type]:-webkit-autofill:not(.browser-default):not([type=search]) + label, .input-field > input[type=date]:not(.browser-default) + label, .input-field > input[type=time]:not(.browser-default) + label {\n transform: translateY(-14px) scale(0.8);\n transform-origin: 0 0;\n}\n.input-field .helper-text {\n position: relative;\n min-height: 18px;\n display: block;\n font-size: 12px;\n color: rgba(0, 0, 0, 0.54);\n}\n.input-field .helper-text::after {\n opacity: 1;\n position: absolute;\n top: 0;\n left: 0;\n}\n.input-field .prefix {\n position: absolute;\n width: 56px;\n font-size: 2rem;\n transition: color 0.2s;\n}\n.input-field .prefix.active {\n color: #26a69a;\n}\n.input-field .prefix ~ input,\n.input-field .prefix ~ textarea,\n.input-field .prefix ~ label,\n.input-field .prefix ~ .validate ~ label,\n.input-field .prefix ~ .helper-text,\n.input-field .prefix ~ .autocomplete-content {\n margin-left: 3rem;\n width: 92%;\n width: calc(100% - 3rem);\n}\n.input-field .prefix ~ label {\n margin-left: 3rem;\n}\n@media only screen and (max-width : 992px) {\n .input-field .prefix ~ input {\n width: 86%;\n width: calc(100% - 3rem);\n }\n}\n@media only screen and (max-width : 600px) {\n .input-field .prefix ~ input {\n width: 80%;\n width: calc(100% - 3rem);\n }\n}\n\n/* Search Field */\n.input-field input[type=search] {\n display: block;\n line-height: inherit;\n transition: 0.3s background-color;\n}\n.nav-wrapper .input-field input[type=search] {\n height: inherit;\n padding-left: 4rem;\n width: calc(100% - 4rem);\n border: 0;\n box-shadow: none;\n}\n.input-field input[type=search]:focus:not(.browser-default) {\n background-color: #fff;\n border: 0;\n box-shadow: none;\n color: #444;\n}\n.input-field input[type=search]:focus:not(.browser-default) + label i, .input-field input[type=search]:focus:not(.browser-default) ~ .mdi-navigation-close, .input-field input[type=search]:focus:not(.browser-default) ~ .material-icons {\n color: #444;\n}\n.input-field input[type=search] + .label-icon {\n transform: none;\n left: 1rem;\n}\n.input-field input[type=search] ~ .mdi-navigation-close, .input-field input[type=search] ~ .material-icons {\n position: absolute;\n top: 0;\n right: 1rem;\n color: transparent;\n cursor: pointer;\n font-size: 2rem;\n transition: 0.3s color;\n}\n\n/* Textarea */\ntextarea {\n width: 100%;\n height: 56px;\n background-color: transparent;\n}\ntextarea.textarea {\n line-height: normal;\n overflow-y: hidden; /* prevents scroll bar flash */\n padding: 0.8rem 0 0.8rem 0; /* prevents text jump on Enter keypress */\n resize: none;\n min-height: 56px;\n box-sizing: border-box;\n}\n\n.hiddendiv {\n visibility: hidden;\n white-space: pre-wrap;\n word-wrap: break-word;\n overflow-wrap: break-word; /* future version of deprecated 'word-wrap' */\n padding-top: 1.2rem; /* prevents text jump on Enter keypress */\n position: absolute;\n top: 0;\n z-index: -1;\n}\n\n/* Autocomplete */\n.autocomplete-content li .highlight {\n color: #444;\n}\n.autocomplete-content li img {\n margin: 5px 15px;\n}\n\n/* Character Counter */\n.character-counter {\n min-height: 18px;\n}\n\n/* Radio Buttons\n ========================================================================== */\n[type=radio]:not(:checked),\n[type=radio]:checked {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n}\n\n[type=radio]:not(:checked) + span,\n[type=radio]:checked + span {\n position: relative;\n padding-left: 35px;\n cursor: pointer;\n display: inline-block;\n height: 25px;\n line-height: 25px;\n font-size: 1rem;\n transition: 0.28s ease;\n user-select: none;\n}\n\n[type=radio] + span:before,\n[type=radio] + span:after {\n content: \"\";\n position: absolute;\n left: 0;\n top: 0;\n margin: 4px;\n width: 16px;\n height: 16px;\n z-index: 0;\n transition: 0.28s ease;\n}\n\n/* Unchecked styles */\n[type=radio]:not(:checked) + span:before,\n[type=radio]:not(:checked) + span:after,\n[type=radio]:checked + span:before,\n[type=radio]:checked + span:after,\n[type=radio].with-gap:checked + span:before,\n[type=radio].with-gap:checked + span:after {\n border-radius: 50%;\n}\n\n[type=radio]:not(:checked) + span:before,\n[type=radio]:not(:checked) + span:after {\n border: 2px solid #5a5a5a;\n}\n\n[type=radio]:not(:checked) + span:after {\n transform: scale(0);\n}\n\n/* Checked styles */\n[type=radio]:checked + span:before {\n border: 2px solid transparent;\n}\n\n[type=radio]:checked + span:after,\n[type=radio].with-gap:checked + span:before,\n[type=radio].with-gap:checked + span:after {\n border: 2px solid #26a69a;\n}\n\n[type=radio]:checked + span:after,\n[type=radio].with-gap:checked + span:after {\n background-color: #26a69a;\n}\n\n[type=radio]:checked + span:after {\n transform: scale(1.02);\n}\n\n/* Radio With gap */\n[type=radio].with-gap:checked + span:after {\n transform: scale(0.5);\n}\n\n/* Focused styles */\n[type=radio].tabbed:focus + span:before {\n box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);\n}\n\n/* Disabled Radio With gap */\n[type=radio].with-gap:disabled:checked + span:before {\n border: 2px solid rgba(0, 0, 0, 0.42);\n}\n\n[type=radio].with-gap:disabled:checked + span:after {\n border: none;\n background-color: rgba(0, 0, 0, 0.42);\n}\n\n/* Disabled style */\n[type=radio]:disabled:not(:checked) + span:before,\n[type=radio]:disabled:checked + span:before {\n background-color: transparent;\n border-color: rgba(0, 0, 0, 0.42);\n}\n\n[type=radio]:disabled + span {\n color: rgba(0, 0, 0, 0.42);\n}\n\n[type=radio]:disabled:not(:checked) + span:before {\n border-color: rgba(0, 0, 0, 0.42);\n}\n\n[type=radio]:disabled:checked + span:after {\n background-color: rgba(0, 0, 0, 0.42);\n border-color: #949494;\n}\n\n/* Checkboxes\n ========================================================================== */\n/* Remove default checkbox */\n[type=checkbox]:not(:checked),\n[type=checkbox]:checked {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n}\n\n[type=checkbox] {\n /* checkbox aspect */\n}\n[type=checkbox] + span:not(.lever) {\n position: relative;\n padding-left: 35px;\n cursor: pointer;\n display: inline-block;\n height: 25px;\n line-height: 25px;\n font-size: 1rem;\n user-select: none;\n}\n[type=checkbox] + span:not(.lever):before, [type=checkbox]:not(.filled-in) + span:not(.lever):after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 18px;\n height: 18px;\n z-index: 0;\n border: 2px solid #5a5a5a;\n border-radius: 1px;\n margin-top: 3px;\n transition: 0.2s;\n}\n[type=checkbox]:not(.filled-in) + span:not(.lever):after {\n border: 0;\n transform: scale(0);\n}\n[type=checkbox]:not(:checked):disabled + span:not(.lever):before {\n border: none;\n background-color: rgba(0, 0, 0, 0.42);\n}\n[type=checkbox].tabbed:focus + span:not(.lever):after {\n transform: scale(1);\n border: 0;\n border-radius: 50%;\n box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n[type=checkbox]:checked + span:not(.lever):before {\n top: -4px;\n left: -5px;\n width: 12px;\n height: 22px;\n border-top: 2px solid transparent;\n border-left: 2px solid transparent;\n border-right: 2px solid #26a69a;\n border-bottom: 2px solid #26a69a;\n transform: rotate(40deg);\n backface-visibility: hidden;\n transform-origin: 100% 100%;\n}\n[type=checkbox]:checked:disabled + span:before {\n border-right: 2px solid rgba(0, 0, 0, 0.42);\n border-bottom: 2px solid rgba(0, 0, 0, 0.42);\n}\n\n/* Indeterminate checkbox */\n[type=checkbox]:indeterminate + span:not(.lever):before {\n top: -11px;\n left: -12px;\n width: 10px;\n height: 22px;\n border-top: none;\n border-left: none;\n border-right: 2px solid #26a69a;\n border-bottom: none;\n transform: rotate(90deg);\n backface-visibility: hidden;\n transform-origin: 100% 100%;\n}\n[type=checkbox]:indeterminate:disabled + span:not(.lever):before {\n border-right: 2px solid rgba(0, 0, 0, 0.42);\n background-color: transparent;\n}\n\n[type=checkbox].filled-in + span:not(.lever):after {\n border-radius: 2px;\n}\n[type=checkbox].filled-in + span:not(.lever):before,\n[type=checkbox].filled-in + span:not(.lever):after {\n content: \"\";\n left: 0;\n position: absolute;\n /* .1s delay is for check animation */\n transition: border 0.25s, background-color 0.25s, width 0.2s 0.1s, height 0.2s 0.1s, top 0.2s 0.1s, left 0.2s 0.1s;\n z-index: 1;\n}\n[type=checkbox].filled-in:not(:checked) + span:not(.lever):before {\n width: 0;\n height: 0;\n border: 3px solid transparent;\n left: 6px;\n top: 10px;\n transform: rotateZ(37deg);\n transform-origin: 100% 100%;\n}\n[type=checkbox].filled-in:not(:checked) + span:not(.lever):after {\n height: 20px;\n width: 20px;\n background-color: transparent;\n border: 2px solid #5a5a5a;\n top: 0px;\n z-index: 0;\n}\n[type=checkbox].filled-in:checked + span:not(.lever):before {\n top: 0;\n left: 1px;\n width: 8px;\n height: 13px;\n border-top: 2px solid transparent;\n border-left: 2px solid transparent;\n border-right: 2px solid #fff;\n border-bottom: 2px solid #fff;\n transform: rotateZ(37deg);\n transform-origin: 100% 100%;\n}\n[type=checkbox].filled-in:checked + span:not(.lever):after {\n top: 0;\n width: 20px;\n height: 20px;\n border: 2px solid #26a69a;\n background-color: #26a69a;\n z-index: 0;\n}\n[type=checkbox].filled-in.tabbed:focus + span:not(.lever):after {\n border-radius: 2px;\n border-color: #5a5a5a;\n background-color: rgba(0, 0, 0, 0.1);\n}\n[type=checkbox].filled-in.tabbed:checked:focus + span:not(.lever):after {\n border-radius: 2px;\n background-color: #26a69a;\n border-color: #26a69a;\n}\n[type=checkbox].filled-in:disabled:not(:checked) + span:not(.lever):before {\n background-color: transparent;\n border: 2px solid transparent;\n}\n[type=checkbox].filled-in:disabled:not(:checked) + span:not(.lever):after {\n border-color: transparent;\n background-color: #949494;\n}\n[type=checkbox].filled-in:disabled:checked + span:not(.lever):before {\n background-color: transparent;\n}\n[type=checkbox].filled-in:disabled:checked + span:not(.lever):after {\n background-color: #949494;\n border-color: #949494;\n}\n\n/* Switch\n ========================================================================== */\n.switch,\n.switch * {\n -webkit-tap-highlight-color: transparent;\n user-select: none;\n}\n\n.switch label {\n cursor: pointer;\n}\n\n.switch label input[type=checkbox] {\n opacity: 0;\n width: 0;\n height: 0;\n}\n.switch label input[type=checkbox]:checked + .lever {\n background-color: #84c7c1;\n}\n.switch label input[type=checkbox]:checked + .lever:before, .switch label input[type=checkbox]:checked + .lever:after {\n left: 18px;\n}\n.switch label input[type=checkbox]:checked + .lever:after {\n background-color: #26a69a;\n}\n\n.switch label .lever {\n content: \"\";\n display: inline-block;\n position: relative;\n width: 36px;\n height: 14px;\n background-color: rgba(0, 0, 0, 0.38);\n border-radius: 15px;\n transition: background 0.3s ease;\n vertical-align: middle;\n margin: 0 16px;\n}\n.switch label .lever:before, .switch label .lever:after {\n content: \"\";\n position: absolute;\n display: inline-block;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n left: 0;\n top: -3px;\n transition: left 0.3s ease, background 0.3s ease, box-shadow 0.1s ease, transform 0.1s ease;\n}\n.switch label .lever:before {\n background-color: rgba(38, 166, 154, 0.15);\n}\n.switch label .lever:after {\n background-color: #F1F1F1;\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\n}\n\ninput[type=checkbox]:checked:not(:disabled) ~ .lever:active::before,\ninput[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::before {\n transform: scale(2.4);\n background-color: rgba(38, 166, 154, 0.15);\n}\n\ninput[type=checkbox]:not(:disabled) ~ .lever:active:before,\ninput[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::before {\n transform: scale(2.4);\n background-color: rgba(0, 0, 0, 0.08);\n}\n\n.switch input[type=checkbox][disabled] + .lever {\n cursor: default;\n background-color: rgba(0, 0, 0, 0.12);\n}\n\n.switch label input[type=checkbox][disabled] + .lever:after,\n.switch label input[type=checkbox][disabled]:checked + .lever:after {\n background-color: #949494;\n}\n\n/* Select Field\n ========================================================================== */\nselect {\n display: none;\n}\n\nselect.browser-default {\n display: block;\n}\n\nselect {\n background-color: rgba(255, 255, 255, 0.9);\n width: 100%;\n padding: 5px;\n border: 1px solid #f2f2f2;\n border-radius: 2px;\n height: 56px;\n}\n\n.select-label {\n position: absolute;\n}\n\n.select-wrapper {\n position: relative;\n}\n.select-wrapper.valid + label, .select-wrapper.invalid + label {\n width: 100%;\n pointer-events: none;\n}\n.select-wrapper input.select-dropdown {\n position: relative;\n cursor: pointer;\n background-color: transparent;\n border: none;\n border-bottom: 1px solid #9e9e9e;\n outline: none;\n height: 56px;\n line-height: 56px;\n width: 100%;\n font-size: 16px;\n margin: 0 0 8px 0;\n padding: 0;\n display: block;\n user-select: none;\n z-index: 1;\n}\n.select-wrapper input.select-dropdown:focus {\n border-bottom: 1px solid #26a69a;\n}\n.select-wrapper .caret {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n margin: auto 0;\n z-index: 0;\n fill: rgba(0, 0, 0, 0.87);\n}\n.select-wrapper + label {\n position: absolute;\n top: -26px;\n font-size: 0.8rem;\n}\n\nselect:disabled {\n color: rgba(0, 0, 0, 0.42);\n}\n\n.select-wrapper.disabled + label {\n color: rgba(0, 0, 0, 0.42);\n}\n.select-wrapper.disabled .caret {\n fill: rgba(0, 0, 0, 0.42);\n}\n\n.select-wrapper input.select-dropdown:disabled {\n color: rgba(0, 0, 0, 0.42);\n cursor: default;\n user-select: none;\n}\n\n.select-wrapper i {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.select-dropdown li.disabled,\n.select-dropdown li.disabled > span,\n.select-dropdown li.optgroup {\n color: rgba(0, 0, 0, 0.3);\n background-color: transparent;\n}\n\nbody.keyboard-focused .select-dropdown.dropdown-content li:focus {\n background-color: rgba(0, 0, 0, 0.08);\n}\n\n.select-dropdown.dropdown-content li:hover {\n background-color: rgba(0, 0, 0, 0.08);\n}\n.select-dropdown.dropdown-content li.selected {\n background-color: rgba(0, 0, 0, 0.03);\n}\n\n.prefix ~ .select-wrapper {\n margin-left: 3rem;\n width: 92%;\n width: calc(100% - 3rem);\n}\n\n.prefix ~ label {\n margin-left: 3rem;\n}\n\n.select-dropdown li img {\n margin: 5px 15px;\n float: right;\n}\n\n.select-dropdown li.optgroup.selected > span {\n color: rgba(0, 0, 0, 0.7);\n}\n.select-dropdown li.optgroup > span {\n color: rgba(0, 0, 0, 0.4);\n}\n.select-dropdown li.optgroup ~ li.optgroup-option {\n padding-left: 1rem;\n}\n\n/* File Input\n ========================================================================== */\n.file-field {\n position: relative;\n}\n.file-field .file-path-wrapper {\n overflow: hidden;\n padding-left: 10px;\n}\n.file-field input.file-path {\n width: 100%;\n}\n.file-field .btn, .file-field .btn-small, .file-field .btn-large {\n float: left;\n height: 56px;\n line-height: 56px;\n}\n.file-field span {\n cursor: pointer;\n}\n.file-field input[type=file] {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n margin: 0;\n padding: 0;\n font-size: 20px;\n cursor: pointer;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.file-field input[type=file]::-webkit-file-upload-button {\n display: none;\n}\n\n/* Range\n ========================================================================== */\n.range-field {\n position: relative;\n}\n\ninput[type=range],\ninput[type=range] + .thumb {\n cursor: pointer;\n}\n\ninput[type=range] {\n position: relative;\n background-color: transparent;\n border: none;\n outline: none;\n width: 100%;\n margin: 15px 0;\n padding: 0;\n}\ninput[type=range]:focus {\n outline: none;\n}\n\ninput[type=range] + .thumb {\n position: absolute;\n top: 10px;\n left: 0;\n border: none;\n height: 0;\n width: 0;\n border-radius: 50%;\n background-color: #26a69a;\n margin-left: 7px;\n transform-origin: 50% 50%;\n transform: rotate(-45deg);\n}\ninput[type=range] + .thumb .value {\n display: block;\n width: 30px;\n text-align: center;\n color: #26a69a;\n font-size: 0;\n transform: rotate(45deg);\n}\ninput[type=range] + .thumb.active {\n border-radius: 50% 50% 50% 0;\n}\ninput[type=range] + .thumb.active .value {\n color: #fff;\n margin-left: -1px;\n margin-top: 8px;\n font-size: 10px;\n}\n\ninput[type=range] {\n -webkit-appearance: none;\n}\n\ninput[type=range]::-webkit-slider-runnable-track {\n height: 3px;\n background: #c2c0c2;\n border: none;\n}\n\ninput[type=range]::-webkit-slider-thumb {\n border: none;\n height: 14px;\n width: 14px;\n border-radius: 50%;\n background: #26a69a;\n transition: box-shadow 0.3s;\n -webkit-appearance: none;\n background-color: #26a69a;\n transform-origin: 50% 50%;\n margin: -5px 0 0 0;\n}\n\n.keyboard-focused input[type=range]:focus:not(.active)::-webkit-slider-thumb {\n box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26);\n}\n\ninput[type=range] {\n /* fix for FF unable to apply focus style bug */\n border: 1px solid white;\n /*required for proper track sizing in FF*/\n}\n\ninput[type=range]::-moz-range-track {\n height: 3px;\n background: #c2c0c2;\n border: none;\n}\n\ninput[type=range]::-moz-focus-inner {\n border: 0;\n}\n\ninput[type=range]::-moz-range-thumb {\n border: none;\n height: 14px;\n width: 14px;\n border-radius: 50%;\n background: #26a69a;\n transition: box-shadow 0.3s;\n margin-top: -5px;\n}\n\ninput[type=range]:-moz-focusring {\n outline: 1px solid #fff;\n outline-offset: -1px;\n}\n\n.keyboard-focused input[type=range]:focus:not(.active)::-moz-range-thumb {\n box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26);\n}\n\ninput[type=range]::-ms-track {\n height: 3px;\n background: transparent;\n border-color: transparent;\n border-width: 6px 0;\n /*remove default tick marks*/\n color: transparent;\n}\n\ninput[type=range]::-ms-fill-lower {\n background: #777;\n}\n\ninput[type=range]::-ms-fill-upper {\n background: #ddd;\n}\n\ninput[type=range]::-ms-thumb {\n border: none;\n height: 14px;\n width: 14px;\n border-radius: 50%;\n background: #26a69a;\n transition: box-shadow 0.3s;\n}\n\n.keyboard-focused input[type=range]:focus:not(.active)::-ms-thumb {\n box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26);\n}\n\n.parallax {\n /* Set a specific height */\n min-height: 500px;\n /* Create the parallax scrolling effect */\n background-attachment: fixed;\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n* {\n box-sizing: border-box;\n}\n\nbody {\n font-family: sans-serif;\n}\n\n.scene {\n width: 200px;\n height: 200px;\n border: 1px solid #CCC;\n margin: 80px;\n perspective: 400px;\n}\n\n.cube {\n width: 200px;\n height: 200px;\n position: relative;\n transform-style: preserve-3d;\n transform: translateZ(-400px);\n transition: transform 1s;\n}\n\n.cube.show-front {\n transform: translateZ(-10px) rotateY(0deg);\n}\n\n.cube.show-right {\n transform: translateZ(-10px) rotateY(-90deg);\n}\n\n.cube.show-back {\n transform: translateZ(-10px) rotateY(-180deg);\n}\n\n.cube.show-left {\n transform: translateZ(-10px) rotateY(90deg);\n}\n\n.cube.show-top {\n transform: translateZ(-10px) rotateX(-90deg);\n}\n\n.cube.show-bottom {\n transform: translateZ(-10px) rotateX(90deg);\n}\n\n.cube__face {\n position: absolute;\n width: 200px;\n height: 200px;\n border: 2px solid black;\n line-height: 200px;\n font-size: 40px;\n font-weight: bold;\n color: white;\n text-align: center;\n}\n\n.cube__face--front {\n background: hsla(0, 100%, 50%, 0.7);\n}\n\n.cube__face--right {\n background: hsla(60, 100%, 50%, 0.7);\n}\n\n.cube__face--back {\n background: hsla(120, 100%, 50%, 0.7);\n}\n\n.cube__face--left {\n background: hsla(180, 100%, 50%, 0.7);\n}\n\n.cube__face--top {\n background: hsla(240, 100%, 50%, 0.7);\n}\n\n.cube__face--bottom {\n background: hsla(300, 100%, 50%, 0.7);\n}\n\n.cube__face--front {\n transform: rotateY(0deg) translateZ(100px);\n}\n\n.cube__face--right {\n transform: rotateY(90deg) translateZ(100px);\n}\n\n.cube__face--back {\n transform: rotateY(180deg) translateZ(100px);\n}\n\n.cube__face--left {\n transform: rotateY(-90deg) translateZ(100px);\n}\n\n.cube__face--top {\n transform: rotateX(90deg) translateZ(100px);\n}\n\n.cube__face--bottom {\n transform: rotateX(-90deg) translateZ(100px);\n}\n\nlabel {\n margin-right: 10px;\n}\n\n.container {\n margin: 0 auto;\n max-width: 1280px;\n width: 90%;\n}\n\n@media only screen and (min-width : 601px) {\n .container {\n width: 85%;\n }\n}\n@media only screen and (min-width : 993px) {\n .container {\n width: 70%;\n }\n}\n.col .row {\n margin-left: -0.5rem;\n margin-right: -0.5rem;\n}\n\n.section {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.section.no-pad {\n padding: 0;\n}\n.section.no-pad-bot {\n padding-bottom: 0;\n}\n.section.no-pad-top {\n padding-top: 0;\n}\n\n.row {\n margin-left: auto;\n margin-right: auto;\n margin-bottom: 20px;\n}\n.row:after {\n content: \"\";\n display: table;\n clear: both;\n}\n.row .col {\n float: left;\n box-sizing: border-box;\n padding: 0 0.5rem;\n min-height: 1px;\n}\n.row .col[class*=push-], .row .col[class*=pull-] {\n position: relative;\n}\n.row .col.s1 {\n width: 8.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s2 {\n width: 16.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s3 {\n width: 25%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s4 {\n width: 33.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s5 {\n width: 41.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s6 {\n width: 50%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s7 {\n width: 58.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s8 {\n width: 66.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s9 {\n width: 75%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s10 {\n width: 83.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s11 {\n width: 91.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.s12 {\n width: 100%;\n margin-left: auto;\n left: auto;\n right: auto;\n}\n.row .col.offset-s1 {\n margin-left: 8.3333333333%;\n}\n.row .col.pull-s1 {\n right: 8.3333333333%;\n}\n.row .col.push-s1 {\n left: 8.3333333333%;\n}\n.row .col.offset-s2 {\n margin-left: 16.6666666667%;\n}\n.row .col.pull-s2 {\n right: 16.6666666667%;\n}\n.row .col.push-s2 {\n left: 16.6666666667%;\n}\n.row .col.offset-s3 {\n margin-left: 25%;\n}\n.row .col.pull-s3 {\n right: 25%;\n}\n.row .col.push-s3 {\n left: 25%;\n}\n.row .col.offset-s4 {\n margin-left: 33.3333333333%;\n}\n.row .col.pull-s4 {\n right: 33.3333333333%;\n}\n.row .col.push-s4 {\n left: 33.3333333333%;\n}\n.row .col.offset-s5 {\n margin-left: 41.6666666667%;\n}\n.row .col.pull-s5 {\n right: 41.6666666667%;\n}\n.row .col.push-s5 {\n left: 41.6666666667%;\n}\n.row .col.offset-s6 {\n margin-left: 50%;\n}\n.row .col.pull-s6 {\n right: 50%;\n}\n.row .col.push-s6 {\n left: 50%;\n}\n.row .col.offset-s7 {\n margin-left: 58.3333333333%;\n}\n.row .col.pull-s7 {\n right: 58.3333333333%;\n}\n.row .col.push-s7 {\n left: 58.3333333333%;\n}\n.row .col.offset-s8 {\n margin-left: 66.6666666667%;\n}\n.row .col.pull-s8 {\n right: 66.6666666667%;\n}\n.row .col.push-s8 {\n left: 66.6666666667%;\n}\n.row .col.offset-s9 {\n margin-left: 75%;\n}\n.row .col.pull-s9 {\n right: 75%;\n}\n.row .col.push-s9 {\n left: 75%;\n}\n.row .col.offset-s10 {\n margin-left: 83.3333333333%;\n}\n.row .col.pull-s10 {\n right: 83.3333333333%;\n}\n.row .col.push-s10 {\n left: 83.3333333333%;\n}\n.row .col.offset-s11 {\n margin-left: 91.6666666667%;\n}\n.row .col.pull-s11 {\n right: 91.6666666667%;\n}\n.row .col.push-s11 {\n left: 91.6666666667%;\n}\n.row .col.offset-s12 {\n margin-left: 100%;\n}\n.row .col.pull-s12 {\n right: 100%;\n}\n.row .col.push-s12 {\n left: 100%;\n}\n@media only screen and (min-width : 601px) {\n .row .col.m1 {\n width: 8.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m2 {\n width: 16.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m3 {\n width: 25%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m4 {\n width: 33.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m5 {\n width: 41.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m6 {\n width: 50%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m7 {\n width: 58.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m8 {\n width: 66.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m9 {\n width: 75%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m10 {\n width: 83.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m11 {\n width: 91.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.m12 {\n width: 100%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.offset-m1 {\n margin-left: 8.3333333333%;\n }\n .row .col.pull-m1 {\n right: 8.3333333333%;\n }\n .row .col.push-m1 {\n left: 8.3333333333%;\n }\n .row .col.offset-m2 {\n margin-left: 16.6666666667%;\n }\n .row .col.pull-m2 {\n right: 16.6666666667%;\n }\n .row .col.push-m2 {\n left: 16.6666666667%;\n }\n .row .col.offset-m3 {\n margin-left: 25%;\n }\n .row .col.pull-m3 {\n right: 25%;\n }\n .row .col.push-m3 {\n left: 25%;\n }\n .row .col.offset-m4 {\n margin-left: 33.3333333333%;\n }\n .row .col.pull-m4 {\n right: 33.3333333333%;\n }\n .row .col.push-m4 {\n left: 33.3333333333%;\n }\n .row .col.offset-m5 {\n margin-left: 41.6666666667%;\n }\n .row .col.pull-m5 {\n right: 41.6666666667%;\n }\n .row .col.push-m5 {\n left: 41.6666666667%;\n }\n .row .col.offset-m6 {\n margin-left: 50%;\n }\n .row .col.pull-m6 {\n right: 50%;\n }\n .row .col.push-m6 {\n left: 50%;\n }\n .row .col.offset-m7 {\n margin-left: 58.3333333333%;\n }\n .row .col.pull-m7 {\n right: 58.3333333333%;\n }\n .row .col.push-m7 {\n left: 58.3333333333%;\n }\n .row .col.offset-m8 {\n margin-left: 66.6666666667%;\n }\n .row .col.pull-m8 {\n right: 66.6666666667%;\n }\n .row .col.push-m8 {\n left: 66.6666666667%;\n }\n .row .col.offset-m9 {\n margin-left: 75%;\n }\n .row .col.pull-m9 {\n right: 75%;\n }\n .row .col.push-m9 {\n left: 75%;\n }\n .row .col.offset-m10 {\n margin-left: 83.3333333333%;\n }\n .row .col.pull-m10 {\n right: 83.3333333333%;\n }\n .row .col.push-m10 {\n left: 83.3333333333%;\n }\n .row .col.offset-m11 {\n margin-left: 91.6666666667%;\n }\n .row .col.pull-m11 {\n right: 91.6666666667%;\n }\n .row .col.push-m11 {\n left: 91.6666666667%;\n }\n .row .col.offset-m12 {\n margin-left: 100%;\n }\n .row .col.pull-m12 {\n right: 100%;\n }\n .row .col.push-m12 {\n left: 100%;\n }\n}\n@media only screen and (min-width : 993px) {\n .row .col.l1 {\n width: 8.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l2 {\n width: 16.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l3 {\n width: 25%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l4 {\n width: 33.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l5 {\n width: 41.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l6 {\n width: 50%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l7 {\n width: 58.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l8 {\n width: 66.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l9 {\n width: 75%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l10 {\n width: 83.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l11 {\n width: 91.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.l12 {\n width: 100%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.offset-l1 {\n margin-left: 8.3333333333%;\n }\n .row .col.pull-l1 {\n right: 8.3333333333%;\n }\n .row .col.push-l1 {\n left: 8.3333333333%;\n }\n .row .col.offset-l2 {\n margin-left: 16.6666666667%;\n }\n .row .col.pull-l2 {\n right: 16.6666666667%;\n }\n .row .col.push-l2 {\n left: 16.6666666667%;\n }\n .row .col.offset-l3 {\n margin-left: 25%;\n }\n .row .col.pull-l3 {\n right: 25%;\n }\n .row .col.push-l3 {\n left: 25%;\n }\n .row .col.offset-l4 {\n margin-left: 33.3333333333%;\n }\n .row .col.pull-l4 {\n right: 33.3333333333%;\n }\n .row .col.push-l4 {\n left: 33.3333333333%;\n }\n .row .col.offset-l5 {\n margin-left: 41.6666666667%;\n }\n .row .col.pull-l5 {\n right: 41.6666666667%;\n }\n .row .col.push-l5 {\n left: 41.6666666667%;\n }\n .row .col.offset-l6 {\n margin-left: 50%;\n }\n .row .col.pull-l6 {\n right: 50%;\n }\n .row .col.push-l6 {\n left: 50%;\n }\n .row .col.offset-l7 {\n margin-left: 58.3333333333%;\n }\n .row .col.pull-l7 {\n right: 58.3333333333%;\n }\n .row .col.push-l7 {\n left: 58.3333333333%;\n }\n .row .col.offset-l8 {\n margin-left: 66.6666666667%;\n }\n .row .col.pull-l8 {\n right: 66.6666666667%;\n }\n .row .col.push-l8 {\n left: 66.6666666667%;\n }\n .row .col.offset-l9 {\n margin-left: 75%;\n }\n .row .col.pull-l9 {\n right: 75%;\n }\n .row .col.push-l9 {\n left: 75%;\n }\n .row .col.offset-l10 {\n margin-left: 83.3333333333%;\n }\n .row .col.pull-l10 {\n right: 83.3333333333%;\n }\n .row .col.push-l10 {\n left: 83.3333333333%;\n }\n .row .col.offset-l11 {\n margin-left: 91.6666666667%;\n }\n .row .col.pull-l11 {\n right: 91.6666666667%;\n }\n .row .col.push-l11 {\n left: 91.6666666667%;\n }\n .row .col.offset-l12 {\n margin-left: 100%;\n }\n .row .col.pull-l12 {\n right: 100%;\n }\n .row .col.push-l12 {\n left: 100%;\n }\n}\n@media only screen and (min-width : 1201px) {\n .row .col.xl1 {\n width: 8.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl2 {\n width: 16.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl3 {\n width: 25%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl4 {\n width: 33.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl5 {\n width: 41.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl6 {\n width: 50%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl7 {\n width: 58.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl8 {\n width: 66.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl9 {\n width: 75%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl10 {\n width: 83.3333333333%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl11 {\n width: 91.6666666667%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.xl12 {\n width: 100%;\n margin-left: auto;\n left: auto;\n right: auto;\n }\n .row .col.offset-xl1 {\n margin-left: 8.3333333333%;\n }\n .row .col.pull-xl1 {\n right: 8.3333333333%;\n }\n .row .col.push-xl1 {\n left: 8.3333333333%;\n }\n .row .col.offset-xl2 {\n margin-left: 16.6666666667%;\n }\n .row .col.pull-xl2 {\n right: 16.6666666667%;\n }\n .row .col.push-xl2 {\n left: 16.6666666667%;\n }\n .row .col.offset-xl3 {\n margin-left: 25%;\n }\n .row .col.pull-xl3 {\n right: 25%;\n }\n .row .col.push-xl3 {\n left: 25%;\n }\n .row .col.offset-xl4 {\n margin-left: 33.3333333333%;\n }\n .row .col.pull-xl4 {\n right: 33.3333333333%;\n }\n .row .col.push-xl4 {\n left: 33.3333333333%;\n }\n .row .col.offset-xl5 {\n margin-left: 41.6666666667%;\n }\n .row .col.pull-xl5 {\n right: 41.6666666667%;\n }\n .row .col.push-xl5 {\n left: 41.6666666667%;\n }\n .row .col.offset-xl6 {\n margin-left: 50%;\n }\n .row .col.pull-xl6 {\n right: 50%;\n }\n .row .col.push-xl6 {\n left: 50%;\n }\n .row .col.offset-xl7 {\n margin-left: 58.3333333333%;\n }\n .row .col.pull-xl7 {\n right: 58.3333333333%;\n }\n .row .col.push-xl7 {\n left: 58.3333333333%;\n }\n .row .col.offset-xl8 {\n margin-left: 66.6666666667%;\n }\n .row .col.pull-xl8 {\n right: 66.6666666667%;\n }\n .row .col.push-xl8 {\n left: 66.6666666667%;\n }\n .row .col.offset-xl9 {\n margin-left: 75%;\n }\n .row .col.pull-xl9 {\n right: 75%;\n }\n .row .col.push-xl9 {\n left: 75%;\n }\n .row .col.offset-xl10 {\n margin-left: 83.3333333333%;\n }\n .row .col.pull-xl10 {\n right: 83.3333333333%;\n }\n .row .col.push-xl10 {\n left: 83.3333333333%;\n }\n .row .col.offset-xl11 {\n margin-left: 91.6666666667%;\n }\n .row .col.pull-xl11 {\n right: 91.6666666667%;\n }\n .row .col.push-xl11 {\n left: 91.6666666667%;\n }\n .row .col.offset-xl12 {\n margin-left: 100%;\n }\n .row .col.pull-xl12 {\n right: 100%;\n }\n .row .col.push-xl12 {\n left: 100%;\n }\n}\n\n.sidenav {\n position: fixed;\n width: 300px;\n left: 0;\n top: 0;\n margin: 0;\n height: 100%;\n height: calc(100% + 60px);\n height: -moz-calc(100%);\n padding-bottom: 60px;\n background-color: #fff;\n z-index: 999;\n overflow-y: auto;\n will-change: transform;\n backface-visibility: hidden;\n transform: translateX(-105%);\n transition: transform 1s;\n}\n.sidenav.right-aligned {\n right: 0;\n left: auto;\n transform: translateX(100%);\n}\n.sidenav .collapsible {\n margin: 0;\n}\n.sidenav li {\n float: none;\n}\n.sidenav li .iconSideLink {\n display: flex;\n align-items: center;\n}\n.sidenav li .iconSideLink svg {\n stroke: rgba(0, 0, 0, 0.2);\n width: 30px;\n}\n.sidenav li.active {\n background-color: rgba(0, 0, 0, 0.05);\n}\n.sidenav li.active svg {\n stroke: white !important;\n width: 30px;\n}\n.sidenav li.last {\n position: sticky;\n top: calc(100% - 45px - 35px);\n}\n.sidenav li > a {\n color: rgba(0, 0, 0, 0.87);\n display: flex;\n font-size: 14px;\n font-weight: 700;\n height: 45px;\n line-height: 45px;\n padding: 0 30px;\n}\n.sidenav li > a:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n.sidenav li > a.btn, .sidenav li > a.btn-small, .sidenav li > a.btn-large, .sidenav li > a.btn-flat, .sidenav li > a.btn-floating {\n margin: 10px 15px;\n}\n.sidenav li > a.btn, .sidenav li > a.btn-small, .sidenav li > a.btn-large, .sidenav li > a.btn-floating {\n color: #fff;\n}\n.sidenav li > a.btn-flat {\n color: #343434;\n}\n.sidenav li > a.btn:hover, .sidenav li > a.btn-small:hover, .sidenav li > a.btn-large:hover {\n background-color: #414141;\n}\n.sidenav li > a.btn-floating:hover {\n background-color: #343434;\n}\n.sidenav li > a > i, .sidenav li > a > [class^=mdi-],\n.sidenav li > a li > a > [class*=mdi-], .sidenav li > a > i.s-icon {\n float: left;\n height: 45px;\n line-height: 45px;\n margin: 0 30px 0 0;\n width: 22.5px;\n color: rgba(0, 0, 0, 0.54);\n}\n.sidenav .divider {\n margin: 7.5px 0 0 0;\n}\n.sidenav .subheader {\n cursor: initial;\n pointer-events: none;\n color: rgba(0, 0, 0, 0.54);\n font-size: 14px;\n font-weight: 500;\n line-height: 45px;\n}\n.sidenav .subheader:hover {\n background-color: transparent;\n}\n.sidenav .user-view {\n position: relative;\n padding: 30px 30px 0;\n margin-bottom: 7.5px;\n}\n.sidenav .user-view > a {\n height: auto;\n padding: 0;\n}\n.sidenav .user-view > a:hover {\n background-color: transparent;\n}\n.sidenav .user-view .background {\n overflow: hidden;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n}\n.sidenav .user-view .circle,\n.sidenav .user-view .name,\n.sidenav .user-view .email {\n display: block;\n}\n.sidenav .user-view .circle {\n height: 64px;\n width: 64px;\n}\n.sidenav .user-view .name,\n.sidenav .user-view .email {\n font-size: 14px;\n line-height: 22.5px;\n}\n.sidenav .user-view .name {\n margin-top: 16px;\n font-weight: 500;\n}\n.sidenav .user-view .email {\n padding-bottom: 16px;\n font-weight: 400;\n}\n\n.drag-target {\n height: 100%;\n width: 10px;\n position: fixed;\n top: 0;\n z-index: 998;\n}\n.drag-target.right-aligned {\n right: 0;\n}\n\n.sidenav.sidenav-fixed {\n left: 0;\n transform: translateX(0);\n position: fixed;\n}\n.sidenav.sidenav-fixed.right-aligned {\n right: 0;\n left: auto;\n}\n\n@media only screen and (max-width : 992px) {\n .sidenav.sidenav-fixed {\n transform: translateX(-105%);\n }\n .sidenav.sidenav-fixed.right-aligned {\n transform: translateX(105%);\n }\n .sidenav > a {\n padding: 0 15px;\n }\n .sidenav .user-view {\n padding: 15px 15px 0;\n }\n}\n.sidenav .collapsible-body > ul:not(.collapsible) > li.active,\n.sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active {\n background-color: #90caf9;\n}\n.sidenav .collapsible-body > ul:not(.collapsible) > li.active a,\n.sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active a {\n color: #fff;\n}\n\n.sidenav .collapsible-body {\n padding: 0;\n}\n\n.sidenav-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n opacity: 0;\n height: 120vh;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 997;\n display: none;\n}\n\n.with-side-nav-open {\n padding-left: 300px;\n transition: padding 1s;\n}\n\n.btn, .btn-small, .btn-large,\n.btn-flat {\n border: none;\n border-radius: 2px;\n display: inline-block;\n height: 36px;\n line-height: 36px;\n padding: 0 16px;\n text-transform: uppercase;\n vertical-align: middle;\n -webkit-tap-highlight-color: transparent;\n}\n\n.btn.disabled,\n.btn-floating.disabled,\n.btn-large.disabled,\n.btn-small.disabled,\n.btn-flat.disabled,\n.btn:disabled,\n.btn-floating:disabled,\n.btn-large:disabled,\n.btn-small:disabled,\n.btn-flat:disabled,\n.btn[disabled],\n.btn-floating[disabled],\n.btn-large[disabled],\n.btn-small[disabled],\n.btn-flat[disabled] {\n pointer-events: none;\n background-color: #DFDFDF !important;\n box-shadow: none;\n color: #9F9F9F !important;\n cursor: default;\n}\n.btn.disabled:hover,\n.btn-floating.disabled:hover,\n.btn-large.disabled:hover,\n.btn-small.disabled:hover,\n.btn-flat.disabled:hover,\n.btn:disabled:hover,\n.btn-floating:disabled:hover,\n.btn-large:disabled:hover,\n.btn-small:disabled:hover,\n.btn-flat:disabled:hover,\n.btn[disabled]:hover,\n.btn-floating[disabled]:hover,\n.btn-large[disabled]:hover,\n.btn-small[disabled]:hover,\n.btn-flat[disabled]:hover {\n background-color: #DFDFDF !important;\n color: #9F9F9F !important;\n}\n\n.btn,\n.btn-small,\n.btn-large,\n.btn-floating,\n.btn-flat {\n font-size: 14px;\n outline: 0;\n}\n.btn i,\n.btn-floating i,\n.btn-large i,\n.btn-small i,\n.btn-flat i {\n font-size: 1.3rem;\n line-height: inherit;\n}\n\n.btn:focus, .btn-small:focus, .btn-large:focus,\n.btn-floating:focus {\n background-color: #1b1b1b;\n}\n\n.btn, .btn-small, .btn-large {\n text-decoration: none;\n color: #fff;\n background-color: #343434;\n text-align: center;\n letter-spacing: 0.5px;\n transition: background-color 0.2s ease-out;\n cursor: pointer;\n}\n.btn:hover, .btn-small:hover, .btn-large:hover {\n background-color: #414141;\n}\n\n.btn-floating {\n display: inline-block;\n color: #fff;\n position: relative;\n overflow: hidden;\n z-index: 1;\n width: 40px;\n height: 40px;\n line-height: 40px;\n padding: 0;\n background-color: #26a69a;\n border-radius: 50%;\n transition: background-color 0.3s;\n cursor: pointer;\n vertical-align: middle;\n}\n.btn-floating:hover {\n background-color: #26a69a;\n}\n.btn-floating:before {\n border-radius: 0;\n}\n.btn-floating.btn-large {\n width: 56px;\n height: 56px;\n padding: 0;\n}\n.btn-floating.btn-large.halfway-fab {\n bottom: 28px;\n}\n.btn-floating.btn-large i {\n line-height: 56px;\n}\n.btn-floating.btn-small {\n width: 32.4px;\n height: 32.4px;\n}\n.btn-floating.btn-small.halfway-fab {\n bottom: 16.2px;\n}\n.btn-floating.btn-small i {\n line-height: 32.4px;\n}\n.btn-floating.halfway-fab {\n position: absolute;\n right: 24px;\n bottom: 20px;\n}\n.btn-floating.halfway-fab.left {\n right: auto;\n left: 24px;\n}\n.btn-floating i {\n width: inherit;\n display: inline-block;\n text-align: center;\n color: #fff;\n font-size: 1.6rem;\n line-height: 40px;\n}\n\nbutton.btn-floating {\n border: none;\n}\n\n.fixed-action-btn {\n position: fixed;\n right: 23px;\n bottom: 23px;\n padding-top: 15px;\n margin-bottom: 0;\n z-index: 997;\n}\n.fixed-action-btn.active ul {\n visibility: visible;\n}\n.fixed-action-btn.direction-left, .fixed-action-btn.direction-right {\n padding: 0 0 0 15px;\n}\n.fixed-action-btn.direction-left ul, .fixed-action-btn.direction-right ul {\n text-align: right;\n right: 64px;\n top: 50%;\n transform: translateY(-50%);\n height: 100%;\n left: auto;\n /*width 100% only goes to width of button container */\n width: 500px;\n}\n.fixed-action-btn.direction-left ul li, .fixed-action-btn.direction-right ul li {\n display: inline-block;\n margin: 7.5px 15px 0 0;\n}\n.fixed-action-btn.direction-right {\n padding: 0 15px 0 0;\n}\n.fixed-action-btn.direction-right ul {\n text-align: left;\n direction: rtl;\n left: 64px;\n right: auto;\n}\n.fixed-action-btn.direction-right ul li {\n margin: 7.5px 0 0 15px;\n}\n.fixed-action-btn.direction-bottom {\n padding: 0 0 15px 0;\n}\n.fixed-action-btn.direction-bottom ul {\n top: 64px;\n bottom: auto;\n display: flex;\n flex-direction: column-reverse;\n}\n.fixed-action-btn.direction-bottom ul li {\n margin: 15px 0 0 0;\n}\n.fixed-action-btn.toolbar {\n padding: 0;\n height: 56px;\n}\n.fixed-action-btn.toolbar.active > a i {\n opacity: 0;\n}\n.fixed-action-btn.toolbar ul {\n display: flex;\n top: 0;\n bottom: 0;\n z-index: 1;\n}\n.fixed-action-btn.toolbar ul li {\n flex: 1;\n display: inline-block;\n margin: 0;\n height: 100%;\n transition: none;\n}\n.fixed-action-btn.toolbar ul li a {\n display: block;\n overflow: hidden;\n position: relative;\n width: 100%;\n height: 100%;\n background-color: transparent;\n box-shadow: none;\n color: #fff;\n line-height: 56px;\n z-index: 1;\n}\n.fixed-action-btn.toolbar ul li a i {\n line-height: inherit;\n}\n.fixed-action-btn ul {\n left: 0;\n right: 0;\n text-align: center;\n position: absolute;\n bottom: 64px;\n margin: 0;\n visibility: hidden;\n}\n.fixed-action-btn ul li {\n margin-bottom: 15px;\n}\n.fixed-action-btn ul a.btn-floating {\n opacity: 0;\n}\n.fixed-action-btn .fab-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n z-index: -1;\n width: 40px;\n height: 40px;\n background-color: #26a69a;\n border-radius: 50%;\n transform: scale(0);\n}\n\n.btn-flat {\n box-shadow: none;\n background-color: transparent;\n color: #343434;\n cursor: pointer;\n transition: background-color 0.2s;\n}\n.btn-flat:focus, .btn-flat:hover {\n box-shadow: none;\n}\n.btn-flat:focus {\n background-color: rgba(0, 0, 0, 0.1);\n}\n.btn-flat.disabled, .btn-flat.btn-flat[disabled] {\n background-color: transparent !important;\n color: #b3b3b3 !important;\n cursor: default;\n}\n\n.btn-large {\n height: 54px;\n line-height: 54px;\n font-size: 15px;\n padding: 0 28px;\n}\n.btn-large i {\n font-size: 1.6rem;\n}\n\n.btn-small {\n height: 32.4px;\n line-height: 32.4px;\n font-size: 13px;\n}\n.btn-small i {\n font-size: 1.2rem;\n}\n\n.btn-block {\n display: block;\n}\n\n.communTabHeader, .tabs.activeTab-2 .tab-header-over2 .tab-header, .tabs.activeTab-2 .tab-header-over1 .tab-header, .tabs.activeTab-2 .tab-header-over0 .tab-header, .tabs.activeTab-1 .tab-header-over2 .tab-header, .tabs.activeTab-1 .tab-header-over1 .tab-header, .tabs.activeTab-1 .tab-header-over0 .tab-header, .tabs.activeTab-0 .tab-header-over2 .tab-header, .tabs.activeTab-0 .tab-header-over1 .tab-header, .tabs.activeTab-0 .tab-header-over0 .tab-header {\n height: 100px;\n padding: 40px;\n}\n\n.tabs {\n min-height: calc(100% - 150px);\n margin-top: 30px;\n padding: 0 !important;\n border-radius: 40px !important;\n}\n.tabs .innerpage {\n min-height: 70VH !important;\n}\n.tabs .tabs-header-overlay {\n display: flex;\n height: 100px;\n}\n.tabs.activeTab-0 .tab-header-over0 {\n flex: 1;\n background-color: #80c4fd;\n border-radius: 40px 0 0 0;\n}\n.tabs.activeTab-0 .tab-header-over0 .tab-header {\n background-color: #cbe7fe;\n border-radius: 40px 40px 0 0;\n}\n.tabs.activeTab-0 .tab-header-over1 {\n flex: 1;\n background: linear-gradient(0.25turn, #cbe7fe, #35a2fb);\n border-radius: 0 0 0 0;\n}\n.tabs.activeTab-0 .tab-header-over1 .tab-header {\n background-color: #80c4fd;\n border-radius: 0 40px 0 40px;\n}\n.tabs.activeTab-0 .tab-header-over2 {\n flex: 1;\n background-color: #80c4fd;\n border-radius: 0 40px 0 0;\n}\n.tabs.activeTab-0 .tab-header-over2 .tab-header {\n background-color: #35a2fb;\n border-radius: 0 40px 0 40px;\n}\n.tabs.activeTab-1 .tab-header-over0 {\n flex: 1;\n background-color: #cbe7fe;\n border-radius: 40px 0 0 0;\n}\n.tabs.activeTab-1 .tab-header-over0 .tab-header {\n background-color: #80c4fd;\n border-radius: 40px 0 40px 0;\n}\n.tabs.activeTab-1 .tab-header-over1 {\n flex: 1;\n background: linear-gradient(0.25turn, #80c4fd, #35a2fb);\n border-radius: 0 0 0 0;\n}\n.tabs.activeTab-1 .tab-header-over1 .tab-header {\n background-color: #cbe7fe;\n border-radius: 40px 40px 0 0;\n}\n.tabs.activeTab-1 .tab-header-over2 {\n flex: 1;\n background-color: #cbe7fe;\n border-radius: 0 40px 0 0;\n}\n.tabs.activeTab-1 .tab-header-over2 .tab-header {\n background-color: #35a2fb;\n border-radius: 0 40px 0 40px;\n}\n.tabs.activeTab-2 .tab-header-over0 {\n flex: 1;\n background-color: #35a2fb;\n border-radius: 40px 0 0 0;\n}\n.tabs.activeTab-2 .tab-header-over0 .tab-header {\n background-color: #80c4fd;\n border-radius: 40px 0 40px 0;\n}\n.tabs.activeTab-2 .tab-header-over1 {\n flex: 1;\n background: linear-gradient(0.25turn, #80c4fd, #cbe7fe);\n border-radius: 0 0 0 0;\n}\n.tabs.activeTab-2 .tab-header-over1 .tab-header {\n background-color: #35a2fb;\n border-radius: 40px 0 40px 0;\n}\n.tabs.activeTab-2 .tab-header-over2 {\n flex: 1;\n background-color: #35a2fb;\n border-radius: 0 40px 0 0;\n}\n.tabs.activeTab-2 .tab-header-over2 .tab-header {\n background-color: #cbe7fe;\n border-radius: 40px 40px 0 0;\n}\n.tabs .tab-content {\n background-color: #cbe7fe;\n padding: 10px;\n border-top: 0;\n min-height: 70vh;\n border-radius: 0 0 40px 40px;\n padding-bottom: 20px;\n}\n\n.loader-overlay {\n z-index: 999;\n position: absolute;\n height: 100vh;\n width: 100vw;\n top: 0;\n left: 0;\n background-color: rgba(102, 100, 100, 0.603);\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n}\n.loader-overlay .loader {\n border: 7px solid #f3f3f3; /* Light grey */\n border-top: 7px solid #2ea2cc; /* Blue */\n border-radius: 50%;\n width: 70px;\n height: 70px;\n animation: spin 2s linear infinite;\n}\n.loader-overlay .loader-text {\n margin-top: 20px;\n font-size: 25px;\n color: #2ea2cc;\n}\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.card-panel {\n transition: box-shadow 0.25s;\n padding: 24px;\n margin: 0.3333333333rem 0 0.6666666667rem 0;\n border-radius: 2px;\n background-color: #fff;\n}\n\n.card {\n position: relative;\n margin: 0.3333333333rem 0 0.6666666667rem 0;\n background-color: #fff;\n transition: box-shadow 0.25s;\n border-radius: 2px;\n}\n.card .card-title {\n font-size: 24px;\n font-weight: 300;\n}\n.card .card-title.activator {\n cursor: pointer;\n}\n.card.small, .card.medium, .card.large {\n position: relative;\n}\n.card.small .card-image, .card.medium .card-image, .card.large .card-image {\n max-height: 60%;\n overflow: hidden;\n}\n.card.small .card-image + .card-content, .card.medium .card-image + .card-content, .card.large .card-image + .card-content {\n max-height: 40%;\n}\n.card.small .card-content, .card.medium .card-content, .card.large .card-content {\n max-height: 100%;\n overflow: hidden;\n}\n.card.small .card-action, .card.medium .card-action, .card.large .card-action {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n}\n.card.small {\n height: 300px;\n}\n.card.medium {\n height: 400px;\n}\n.card.large {\n height: 500px;\n}\n.card.horizontal {\n display: flex;\n}\n.card.horizontal.small .card-image, .card.horizontal.medium .card-image, .card.horizontal.large .card-image {\n height: 100%;\n max-height: none;\n overflow: visible;\n}\n.card.horizontal.small .card-image img, .card.horizontal.medium .card-image img, .card.horizontal.large .card-image img {\n height: 100%;\n}\n.card.horizontal .card-image {\n max-width: 50%;\n}\n.card.horizontal .card-image img {\n border-radius: 2px 0 0 2px;\n max-width: 100%;\n width: auto;\n}\n.card.horizontal .card-stacked {\n display: flex;\n flex-direction: column;\n flex: 1;\n position: relative;\n}\n.card.horizontal .card-stacked .card-content {\n flex-grow: 1;\n}\n.card.sticky-action .card-action {\n z-index: 2;\n}\n.card.sticky-action .card-reveal {\n z-index: 1;\n padding-bottom: 64px;\n}\n.card .card-image {\n position: relative;\n}\n.card .card-image img {\n display: block;\n border-radius: 2px 2px 0 0;\n position: relative;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n width: 100%;\n}\n.card .card-image .card-title {\n color: #fff;\n position: absolute;\n bottom: 0;\n left: 0;\n max-width: 100%;\n padding: 24px;\n}\n.card .card-content {\n padding: 24px;\n border-radius: 0 0 2px 2px;\n}\n.card .card-content p {\n margin: 0;\n}\n.card .card-content .card-title {\n display: block;\n line-height: 32px;\n margin-bottom: 8px;\n}\n.card .card-content .card-title i {\n line-height: 32px;\n}\n.card .card-action {\n background-color: inherit;\n border-top: 1px solid rgba(160, 160, 160, 0.2);\n position: relative;\n padding: 16px 24px;\n}\n.card .card-action:last-child {\n border-radius: 0 0 2px 2px;\n}\n.card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating) {\n color: #ffab40;\n margin-right: 24px;\n transition: color 0.3s ease;\n text-transform: uppercase;\n}\n.card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating):hover {\n color: #ffd8a6;\n}\n.card .card-reveal {\n padding: 24px;\n position: absolute;\n background-color: #fff;\n width: 100%;\n overflow-y: auto;\n left: 0;\n top: 100%;\n height: 100%;\n z-index: 3;\n display: none;\n}\n.card .card-reveal .card-title {\n cursor: pointer;\n display: block;\n}\n\n/*\n @license\n Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n Code distributed by Google as part of the polymer project is also\n subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n/**************************/\n/* STYLES FOR THE SPINNER */\n/**************************/\n/*\n * Constants:\n * STROKEWIDTH = 3px\n * ARCSIZE = 270 degrees (amount of circle the arc takes up)\n * ARCTIME = 1333ms (time it takes to expand and contract arc)\n * ARCSTARTROT = 216 degrees (how much the start location of the arc\n * should rotate each time, 216 gives us a\n * 5 pointed star shape (it's 360/5 * 3).\n * For a 7 pointed star, we might do\n * 360/7 * 3 = 154.286)\n * CONTAINERWIDTH = 28px\n * SHRINK_TIME = 400ms\n */\n.preloader-wrapper {\n display: inline-block;\n position: relative;\n width: 50px;\n height: 50px;\n}\n.preloader-wrapper.small {\n width: 36px;\n height: 36px;\n}\n.preloader-wrapper.big {\n width: 64px;\n height: 64px;\n}\n.preloader-wrapper.active {\n /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */\n -webkit-animation: container-rotate 1568ms linear infinite;\n animation: container-rotate 1568ms linear infinite;\n}\n\n@-webkit-keyframes container-rotate {\n to {\n -webkit-transform: rotate(360deg);\n }\n}\n@keyframes container-rotate {\n to {\n transform: rotate(360deg);\n }\n}\n.spinner-layer {\n position: absolute;\n width: 100%;\n height: 100%;\n opacity: 0;\n border-color: #26a69a;\n}\n\n.spinner-blue,\n.spinner-blue-only {\n border-color: #4285f4;\n}\n\n.spinner-red,\n.spinner-red-only {\n border-color: #db4437;\n}\n\n.spinner-yellow,\n.spinner-yellow-only {\n border-color: #f4b400;\n}\n\n.spinner-green,\n.spinner-green-only {\n border-color: #0f9d58;\n}\n\n/**\n * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee):\n *\n * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't\n * guarantee that the animation will start _exactly_ after that value. So we avoid using\n * animation-delay and instead set custom keyframes for each color (as redundant as it\n * seems).\n *\n * We write out each animation in full (instead of separating animation-name,\n * animation-duration, etc.) because under the polyfill, Safari does not recognize those\n * specific properties properly, treats them as -webkit-animation, and overrides the\n * other animation rules. See https://github.com/Polymer/platform/issues/53.\n */\n.active .spinner-layer.spinner-blue {\n /* durations: 4 * ARCTIME */\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n.active .spinner-layer.spinner-red {\n /* durations: 4 * ARCTIME */\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n.active .spinner-layer.spinner-yellow {\n /* durations: 4 * ARCTIME */\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n.active .spinner-layer.spinner-green {\n /* durations: 4 * ARCTIME */\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n.active .spinner-layer,\n.active .spinner-layer.spinner-blue-only,\n.active .spinner-layer.spinner-red-only,\n.active .spinner-layer.spinner-yellow-only,\n.active .spinner-layer.spinner-green-only {\n /* durations: 4 * ARCTIME */\n opacity: 1;\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n@-webkit-keyframes fill-unfill-rotate {\n 12.5% {\n -webkit-transform: rotate(135deg);\n } /* 0.5 * ARCSIZE */\n 25% {\n -webkit-transform: rotate(270deg);\n } /* 1 * ARCSIZE */\n 37.5% {\n -webkit-transform: rotate(405deg);\n } /* 1.5 * ARCSIZE */\n 50% {\n -webkit-transform: rotate(540deg);\n } /* 2 * ARCSIZE */\n 62.5% {\n -webkit-transform: rotate(675deg);\n } /* 2.5 * ARCSIZE */\n 75% {\n -webkit-transform: rotate(810deg);\n } /* 3 * ARCSIZE */\n 87.5% {\n -webkit-transform: rotate(945deg);\n } /* 3.5 * ARCSIZE */\n to {\n -webkit-transform: rotate(1080deg);\n } /* 4 * ARCSIZE */\n}\n@keyframes fill-unfill-rotate {\n 12.5% {\n transform: rotate(135deg);\n } /* 0.5 * ARCSIZE */\n 25% {\n transform: rotate(270deg);\n } /* 1 * ARCSIZE */\n 37.5% {\n transform: rotate(405deg);\n } /* 1.5 * ARCSIZE */\n 50% {\n transform: rotate(540deg);\n } /* 2 * ARCSIZE */\n 62.5% {\n transform: rotate(675deg);\n } /* 2.5 * ARCSIZE */\n 75% {\n transform: rotate(810deg);\n } /* 3 * ARCSIZE */\n 87.5% {\n transform: rotate(945deg);\n } /* 3.5 * ARCSIZE */\n to {\n transform: rotate(1080deg);\n } /* 4 * ARCSIZE */\n}\n@-webkit-keyframes blue-fade-in-out {\n from {\n opacity: 1;\n }\n 25% {\n opacity: 1;\n }\n 26% {\n opacity: 0;\n }\n 89% {\n opacity: 0;\n }\n 90% {\n opacity: 1;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes blue-fade-in-out {\n from {\n opacity: 1;\n }\n 25% {\n opacity: 1;\n }\n 26% {\n opacity: 0;\n }\n 89% {\n opacity: 0;\n }\n 90% {\n opacity: 1;\n }\n 100% {\n opacity: 1;\n }\n}\n@-webkit-keyframes red-fade-in-out {\n from {\n opacity: 0;\n }\n 15% {\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 50% {\n opacity: 1;\n }\n 51% {\n opacity: 0;\n }\n}\n@keyframes red-fade-in-out {\n from {\n opacity: 0;\n }\n 15% {\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 50% {\n opacity: 1;\n }\n 51% {\n opacity: 0;\n }\n}\n@-webkit-keyframes yellow-fade-in-out {\n from {\n opacity: 0;\n }\n 40% {\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 75% {\n opacity: 1;\n }\n 76% {\n opacity: 0;\n }\n}\n@keyframes yellow-fade-in-out {\n from {\n opacity: 0;\n }\n 40% {\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 75% {\n opacity: 1;\n }\n 76% {\n opacity: 0;\n }\n}\n@-webkit-keyframes green-fade-in-out {\n from {\n opacity: 0;\n }\n 65% {\n opacity: 0;\n }\n 75% {\n opacity: 1;\n }\n 90% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n@keyframes green-fade-in-out {\n from {\n opacity: 0;\n }\n 65% {\n opacity: 0;\n }\n 75% {\n opacity: 1;\n }\n 90% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n/**\n * Patch the gap that appear between the two adjacent div.circle-clipper while the\n * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11).\n */\n.gap-patch {\n position: absolute;\n top: 0;\n left: 45%;\n width: 10%;\n height: 100%;\n overflow: hidden;\n border-color: inherit;\n}\n\n.gap-patch .circle {\n width: 1000%;\n left: -450%;\n}\n\n.circle-clipper {\n display: inline-block;\n position: relative;\n width: 50%;\n height: 100%;\n overflow: hidden;\n border-color: inherit;\n}\n.circle-clipper .circle {\n width: 200%;\n height: 100%;\n border-width: 3px; /* STROKEWIDTH */\n border-style: solid;\n border-color: inherit;\n border-bottom-color: transparent !important;\n border-radius: 50%;\n -webkit-animation: none;\n animation: none;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n}\n.circle-clipper.left .circle {\n left: 0;\n border-right-color: transparent !important;\n -webkit-transform: rotate(129deg);\n transform: rotate(129deg);\n}\n.circle-clipper.right .circle {\n left: -100%;\n border-left-color: transparent !important;\n -webkit-transform: rotate(-129deg);\n transform: rotate(-129deg);\n}\n\n.active .circle-clipper.left .circle {\n /* duration: ARCTIME */\n -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n.active .circle-clipper.right .circle {\n /* duration: ARCTIME */\n -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n\n@-webkit-keyframes left-spin {\n from {\n -webkit-transform: rotate(130deg);\n }\n 50% {\n -webkit-transform: rotate(-5deg);\n }\n to {\n -webkit-transform: rotate(130deg);\n }\n}\n@keyframes left-spin {\n from {\n transform: rotate(130deg);\n }\n 50% {\n transform: rotate(-5deg);\n }\n to {\n transform: rotate(130deg);\n }\n}\n@-webkit-keyframes right-spin {\n from {\n -webkit-transform: rotate(-130deg);\n }\n 50% {\n -webkit-transform: rotate(5deg);\n }\n to {\n -webkit-transform: rotate(-130deg);\n }\n}\n@keyframes right-spin {\n from {\n transform: rotate(-130deg);\n }\n 50% {\n transform: rotate(5deg);\n }\n to {\n transform: rotate(-130deg);\n }\n}\n#spinnerContainer.cooldown {\n /* duration: SHRINK_TIME */\n -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);\n animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@-webkit-keyframes fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n.progress {\n position: relative;\n height: 4px;\n display: block;\n width: 100%;\n background-color: #acece6;\n border-radius: 2px;\n margin: 0.3333333333rem 0 0.6666666667rem 0;\n overflow: hidden;\n}\n.progress .determinate {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n background-color: #26a69a;\n transition: width 0.3s linear;\n}\n.progress .indeterminate {\n background-color: #26a69a;\n}\n.progress .indeterminate:before {\n content: \"\";\n position: absolute;\n background-color: inherit;\n top: 0;\n left: 0;\n bottom: 0;\n will-change: left, right;\n animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;\n}\n.progress .indeterminate:after {\n content: \"\";\n position: absolute;\n background-color: inherit;\n top: 0;\n left: 0;\n bottom: 0;\n will-change: left, right;\n animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;\n animation-delay: 1.15s;\n}\n\n@keyframes indeterminate {\n 0% {\n left: -35%;\n right: 100%;\n }\n 60% {\n left: 100%;\n right: -90%;\n }\n 100% {\n left: 100%;\n right: -90%;\n }\n}\n@keyframes indeterminate-short {\n 0% {\n left: -200%;\n right: 100%;\n }\n 60% {\n left: 107%;\n right: -8%;\n }\n 100% {\n left: 107%;\n right: -8%;\n }\n}\n.flash-message {\n position: absolute;\n padding: 2px 10px;\n border-radius: 5px;\n z-index: 99999;\n right: 0;\n bottom: 0;\n font-size: 14px;\n}\n.flash-message.info {\n background-color: #beddbe;\n border: 1px solid #728f72;\n}\n.flash-message.warn {\n background-color: #f5e6d0;\n border: 1px solid #ea7d17;\n}\n.flash-message.error {\n background-color: #e5b2bc;\n border: 1px solid #e33257;\n}\n\n@keyframes messageIn {\n from {\n right: 80%;\n }\n to {\n right: 0;\n }\n}\n.pulse {\n overflow: visible;\n position: relative;\n}\n.pulse::before {\n content: \"\";\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n background-color: inherit;\n border-radius: inherit;\n transition: opacity 0.3s, transform 0.3s;\n animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;\n}\n\n@keyframes pulse-animation {\n 0% {\n opacity: 1;\n transform: scale(1);\n }\n 50% {\n opacity: 0;\n transform: scale(1.5);\n }\n 100% {\n opacity: 0;\n transform: scale(1.5);\n }\n}\n.dropdown-content {\n background-color: #fff;\n margin: 0;\n display: flow;\n min-width: 100px;\n overflow-y: auto;\n position: absolute;\n left: 0;\n top: 0;\n z-index: 9999;\n transform-origin: 0 0;\n}\n.dropdown-content:focus {\n outline: 0;\n}\n.dropdown-content li {\n clear: both;\n color: rgba(0, 0, 0, 0.87);\n cursor: pointer;\n min-height: 50px;\n line-height: 1.5rem;\n width: 100%;\n text-align: left;\n}\n.dropdown-content li:hover, .dropdown-content li.active {\n background-color: #eee;\n}\n.dropdown-content li:focus {\n outline: none;\n}\n.dropdown-content li.divider {\n min-height: 0;\n height: 1px;\n}\n.dropdown-content li > a, .dropdown-content li > span {\n font-size: 16px;\n color: #26a69a;\n display: block;\n line-height: 22px;\n padding: 14px 16px;\n}\n.dropdown-content li > span > label {\n top: 1px;\n left: 0;\n height: 18px;\n}\n.dropdown-content li > a > i {\n height: inherit;\n line-height: inherit;\n float: left;\n margin: 0 24px 0 0;\n width: 24px;\n}\n\nbody.keyboard-focused .dropdown-content li:focus {\n background-color: #dadada;\n}\n\n.input-field.col .dropdown-content [type=checkbox] + label {\n top: 1px;\n left: 0;\n height: 18px;\n transform: none;\n}\n\n.dropdown-trigger {\n cursor: pointer;\n}\n\nnav {\n color: #fff;\n background-color: #90caf9;\n width: 100%;\n height: 56px;\n line-height: 56px;\n}\nnav.nav-extended {\n height: auto;\n}\nnav.nav-extended .nav-wrapper {\n display: flex;\n align-items: center;\n min-height: 56px;\n height: auto;\n}\nnav.nav-extended .nav-content {\n position: relative;\n line-height: normal;\n}\nnav a {\n color: #fff;\n}\nnav i,\nnav [class^=mdi-], nav [class*=mdi-],\nnav i.s-icons {\n display: block;\n font-size: 24px;\n height: 56px;\n line-height: 56px;\n}\nnav .nav-wrapper {\n position: relative;\n height: 100%;\n}\n@media only screen and (min-width : 993px) {\n nav a.sidenav-trigger {\n display: none;\n }\n}\nnav .sidenav-trigger {\n float: left;\n position: relative;\n z-index: 1;\n height: 56px;\n margin: 0 18px;\n}\nnav .sidenav-trigger i {\n height: 56px;\n line-height: 56px;\n}\nnav .brand-logo {\n position: absolute;\n color: #fff;\n display: inline-block;\n font-size: 2.1rem;\n padding: 0;\n}\nnav .brand-logo img.circle {\n height: 32px;\n width: 32px;\n}\nnav .brand-logo.center {\n left: 50%;\n transform: translateX(-50%);\n}\n@media only screen and (max-width : 992px) {\n nav .brand-logo {\n left: 50%;\n transform: translateX(-50%);\n }\n nav .brand-logo.left, nav .brand-logo.right {\n padding: 0;\n transform: none;\n }\n nav .brand-logo.left {\n left: 0.5rem;\n }\n nav .brand-logo.right {\n right: 0.5rem;\n left: auto;\n }\n}\nnav .brand-logo.right {\n right: 0.5rem;\n padding: 0;\n}\nnav .brand-logo i,\nnav .brand-logo [class^=mdi-], nav .brand-logo [class*=mdi-],\nnav .brand-logo i.s-icons {\n float: left;\n margin-right: 15px;\n}\nnav .nav-title {\n display: inline-block;\n font-size: 32px;\n padding: 28px 0;\n}\nnav ul {\n margin: 0;\n}\nnav ul li {\n transition: background-color 0.3s;\n float: left;\n padding: 0;\n}\nnav ul li.active {\n background-color: rgba(0, 0, 0, 0.1);\n}\nnav ul a {\n transition: background-color 0.3s;\n font-size: 1rem;\n color: #fff;\n display: block;\n padding: 0 15px;\n cursor: pointer;\n}\nnav ul a.btn, nav ul a.btn-small, nav ul a.btn-large, nav ul a.btn-flat, nav ul a.btn-floating {\n margin-top: -2px;\n margin-left: 15px;\n margin-right: 15px;\n}\nnav ul a.btn > .material-icons, nav ul a.btn-small > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-flat > .material-icons, nav ul a.btn-floating > .material-icons {\n height: inherit;\n line-height: inherit;\n}\nnav ul a:hover {\n background-color: rgba(0, 0, 0, 0.1);\n}\nnav ul.left {\n float: left;\n}\nnav form {\n height: 100%;\n}\nnav .input-field {\n margin: 0;\n height: 100%;\n}\nnav .input-field input {\n height: 100%;\n font-size: 1.2rem;\n border: none;\n padding-left: 2rem;\n}\nnav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid {\n border: none;\n box-shadow: none;\n}\nnav .input-field label {\n top: 0;\n left: 0;\n}\nnav .input-field label i {\n color: rgba(255, 255, 255, 0.7);\n transition: color 0.3s;\n}\nnav .input-field label.active i {\n color: #fff;\n}\n\n.navbar-fixed {\n position: relative;\n height: 56px;\n z-index: 997;\n}\n.navbar-fixed nav {\n position: fixed;\n}\n\n@media only screen and (min-width : 601px) {\n nav.nav-extended .nav-wrapper {\n min-height: 64px;\n }\n nav, nav .nav-wrapper i, nav a.sidenav-trigger, nav a.sidenav-trigger i {\n height: 64px;\n line-height: 64px;\n }\n .navbar-fixed {\n height: 64px;\n }\n}","@import \"./colorsVars\";\r\n\r\n@each $color_name, $color in $colors {\r\n @each $color_type, $color_value in $color {\r\n @if $color_type == \"base\" {\r\n .#{$color_name} {\r\n background-color: $color_value !important;\r\n }\r\n .#{$color_name}-text {\r\n color: $color_value !important;\r\n }\r\n .#{$color_name}-waves .waves-ripple {\r\n background-color: $color_value !important;\r\n }\r\n } @else {\r\n .#{$color_name}.#{$color_type} {\r\n background-color: $color_value !important;\r\n }\r\n .#{$color_name}-text.text-#{$color_type} {\r\n color: $color_value !important;\r\n }\r\n .#{$color_name}-waves.waves-#{$color_type} .waves-ripple {\r\n background-color: $color_value !important;\r\n }\r\n }\r\n }\r\n}\r\n\r\n// ShadeVars classes\r\n$shades: (\r\n \"black\": #000000,\r\n \"white\": #ffffff,\r\n \"transparent\": transparent\r\n);\r\n// Shade classes\r\n@each $color, $color_value in $shades {\r\n .#{$color} {\r\n background-color: $color_value !important;\r\n }\r\n .#{$color}-text {\r\n color: $color_value !important;\r\n }\r\n}\r\n\r\n\r\n\r\n// usage: color(\"name_of_color\", \"type_of_color\")\r\n// to avoid to repeating map-get($colors, ...)\r\n\r\n@function color($color, $type) {\r\n @if map-has-key($colors, $color) {\r\n $curr_color: map-get($colors, $color);\r\n @if map-has-key($curr_color, $type) {\r\n @return map-get($curr_color, $type);\r\n }\r\n }\r\n @warn \"Unknown `#{$color}` - `#{$type}` in $colors.\";\r\n @return null;\r\n}\r\n","/**\r\n * prism.js Twilight theme\r\n * Based (more or less) on the Twilight theme originally of Textmate fame.\r\n * @author Remy Bach\r\n */\r\n code[class*=\"language-\"],\r\n pre[class*=\"language-\"] {\r\n\t color: white;\r\n\t background: none;\r\n\t font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\r\n\t text-align: left;\r\n\t text-shadow: 0 -.1em .2em black;\r\n\t white-space: pre;\r\n\t word-spacing: normal;\r\n\t word-break: normal;\r\n\t word-wrap: normal;\r\n\t line-height: 1.5;\r\n \r\n\t -moz-tab-size: 4;\r\n\t -o-tab-size: 4;\r\n\t tab-size: 4;\r\n \r\n\t -webkit-hyphens: none;\r\n\t -moz-hyphens: none;\r\n\t -ms-hyphens: none;\r\n\t hyphens: none;\r\n }\r\n \r\n pre[class*=\"language-\"],\r\n :not(pre) > code[class*=\"language-\"] {\r\n\t background: hsl(0, 0%, 8%); /* #141414 */\r\n }\r\n \r\n /* Code blocks */\r\n pre[class*=\"language-\"] {\r\n\t border-radius: .5em;\r\n\t border: .3em solid hsl(0, 0%, 33%); /* #282A2B */\r\n\t box-shadow: 1px 1px .5em black inset;\r\n\t margin: .5em 0;\r\n\t overflow: auto;\r\n\t padding: 1em;\r\n }\r\n \r\n pre[class*=\"language-\"]::-moz-selection {\r\n\t /* Firefox */\r\n\t background: hsl(200, 4%, 16%); /* #282A2B */\r\n }\r\n \r\n pre[class*=\"language-\"]::selection {\r\n\t /* Safari */\r\n\t background: hsl(200, 4%, 16%); /* #282A2B */\r\n }\r\n \r\n /* Text Selection colour */\r\n pre[class*=\"language-\"]::-moz-selection, pre[class*=\"language-\"] ::-moz-selection,\r\n code[class*=\"language-\"]::-moz-selection, code[class*=\"language-\"] ::-moz-selection {\r\n\t text-shadow: none;\r\n\t background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */\r\n }\r\n \r\n pre[class*=\"language-\"]::selection, pre[class*=\"language-\"] ::selection,\r\n code[class*=\"language-\"]::selection, code[class*=\"language-\"] ::selection {\r\n\t text-shadow: none;\r\n\t background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */\r\n }\r\n \r\n /* Inline code */\r\n :not(pre) > code[class*=\"language-\"] {\r\n\t border-radius: .3em;\r\n\t border: .13em solid hsl(0, 0%, 33%); /* #545454 */\r\n\t box-shadow: 1px 1px .3em -.1em black inset;\r\n\t padding: .15em .2em .05em;\r\n\t white-space: normal;\r\n }\r\n \r\n .token.comment,\r\n .token.prolog,\r\n .token.doctype,\r\n .token.cdata {\r\n\t color: hsl(0, 0%, 47%); /* #777777 */\r\n }\r\n \r\n .token.punctuation {\r\n\t opacity: .7;\r\n }\r\n \r\n .namespace {\r\n\t opacity: .7;\r\n }\r\n \r\n .token.tag,\r\n .token.boolean,\r\n .token.number,\r\n .token.deleted {\r\n\t color: hsl(14, 58%, 55%); /* #CF6A4C */\r\n }\r\n \r\n .token.keyword,\r\n .token.property,\r\n .token.selector,\r\n .token.constant,\r\n .token.symbol,\r\n .token.builtin {\r\n\t color: hsl(53, 89%, 79%); /* #F9EE98 */\r\n }\r\n \r\n .token.attr-name,\r\n .token.attr-value,\r\n .token.string,\r\n .token.char,\r\n .token.operator,\r\n .token.entity,\r\n .token.url,\r\n .language-css .token.string,\r\n .style .token.string,\r\n .token.variable,\r\n .token.inserted {\r\n\t color: hsl(76, 21%, 52%); /* #8F9D6A */\r\n }\r\n \r\n .token.atrule {\r\n\t color: hsl(218, 22%, 55%); /* #7587A6 */\r\n }\r\n \r\n .token.regex,\r\n .token.important {\r\n\t color: hsl(42, 75%, 65%); /* #E9C062 */\r\n }\r\n \r\n .token.important,\r\n .token.bold {\r\n\t font-weight: bold;\r\n }\r\n .token.italic {\r\n\t font-style: italic;\r\n }\r\n \r\n .token.entity {\r\n\t cursor: help;\r\n }\r\n \r\n pre[data-line] {\r\n\t padding: 1em 0 1em 3em;\r\n\t position: relative;\r\n }\r\n \r\n /* Markup */\r\n .language-markup .token.tag,\r\n .language-markup .token.attr-name,\r\n .language-markup .token.punctuation {\r\n\t color: hsl(33, 33%, 52%); /* #AC885B */\r\n }\r\n \r\n /* Make the tokens sit above the line highlight so the colours don't look faded. */\r\n .token {\r\n\t position: relative;\r\n\t z-index: 1;\r\n }\r\n \r\n .line-highlight {\r\n\t background: hsla(0, 0%, 33%, 0.25); /* #545454 */\r\n\t background: linear-gradient(to right, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */\r\n\t border-bottom: 1px dashed hsl(0, 0%, 33%); /* #545454 */\r\n\t border-top: 1px dashed hsl(0, 0%, 33%); /* #545454 */\r\n\t left: 0;\r\n\t line-height: inherit;\r\n\t margin-top: 0.75em; /* Same as .prism’s padding-top */\r\n\t padding: inherit 0;\r\n\t pointer-events: none;\r\n\t position: absolute;\r\n\t right: 0;\r\n\t white-space: pre;\r\n\t z-index: 0;\r\n }\r\n \r\n .line-highlight:before,\r\n .line-highlight[data-end]:after {\r\n\t background-color: hsl(215, 15%, 59%); /* #8794A6 */\r\n\t border-radius: 999px;\r\n\t box-shadow: 0 1px white;\r\n\t color: hsl(24, 20%, 95%); /* #F5F2F0 */\r\n\t content: attr(data-start);\r\n\t font: bold 65%/1.5 sans-serif;\r\n\t left: .6em;\r\n\t min-width: 1em;\r\n\t padding: 0 .5em;\r\n\t position: absolute;\r\n\t text-align: center;\r\n\t text-shadow: none;\r\n\t top: .4em;\r\n\t vertical-align: .3em;\r\n }\r\n \r\n .line-highlight[data-end]:after {\r\n\t bottom: .4em;\r\n\t content: attr(data-end);\r\n\t top: auto;\r\n }\r\n ","@import 'https://fonts.googleapis.com/css?family=Ubuntu';\r\n\r\n\r\n\r\n.window {\r\n font-family: 'Ubuntu', sans-serif; \r\n font-size : 17px ;\r\n width : 600px ; \r\n margin : 75px auto ; \r\n background : #2c3e50; \r\n height : 350px ; \r\n border-radius : 5px ;\r\n display : relative ; \r\n box-shadow: 10px 10px 10px #888888;\r\n}\r\n\r\n.afterclose {\r\n color : #34495e ; \r\n display: none ; \r\n text-align: center ; \r\n}\r\n\r\n.open {\r\n color : #fff ; \r\n padding : 15px ; \r\n background: #2ecc71 ; \r\n border-radius: 4px ; \r\n border: none ; \r\n}\r\n\r\n.bash {\r\n width : 600px ; \r\n background : #34495e; \r\n height : 310px ; \r\n border-radius : 5px ;\r\n top: 40px;\r\n display : absolute; \r\n color : #fff ;\r\n text-align: left;\r\n .command{\r\n &::before{\r\n content: \"user@machine $ : \";\r\n color: #2ecc71;\r\n }\r\n\r\n }\r\n .resulta{\r\n &::before{\r\n content: \">>\";\r\n color: #2ecc71;\r\n }\r\n\r\n }\r\n}\r\n\r\n/* effected by controllers */\r\n\r\n.windowmax {\r\n width : 100% ; \r\n margin : auto ; \r\n background : #2c3e50; \r\n height : 1000px; \r\n border-radius : 5px ;\r\n display : relative ; \r\n}\r\n\r\n.windowmin {\r\n width : 300px ; \r\n height : 45px ;\r\n background : #2c3e50; \r\n border-radius : 5px ; \r\n bottom : 0 ; \r\n position: fixed;\r\n}\r\n\r\n.bashmax {\r\n display : absolute ; \r\n width : 100% ; \r\n background : #34495e; \r\n height : 960px ; \r\n border-radius : 5px ;\r\n bottom: 0;\r\n color : #fff ;\r\n}\r\n\r\n/* !--end--! */\r\n\r\n.buttons {\r\n width : 15px ;\r\n height : 15px ; \r\n border-radius : 50% ;\r\n float : right ; \r\n margin : 13px 4px;\r\n border: none ; \r\n}\r\n\r\n.close {\r\n background : #e74c3c ;\r\n}\r\n\r\n.maximize{\r\n background : #f1c40f ;\r\n}\r\n\r\n.minimize{\r\n background : #2ecc71 ;\r\n}\r\n\r\n.result {\r\n display : none ;\r\n}\r\n\r\n.controls {\r\n height : 40px ; \r\n top : 0 ; \r\n}\r\n\r\n.title {\r\n color : #fff ; \r\n font-weight: bold ; \r\n padding : 10px;\r\n}\r\n",".material-tooltip {\r\n padding: 10px 8px;\r\n font-size: 1rem;\r\n z-index: 2000;\r\n border-radius: 2px;\r\n color: #fff;\r\n min-height: 36px;\r\n line-height: 120%;\r\n opacity: 0;\r\n position: absolute;\r\n text-align: center;\r\n max-width: calc(100% - 4px);\r\n overflow: hidden;\r\n left: 0;\r\n top: 0;\r\n pointer-events: none;\r\n visibility: hidden;\r\n background-color: #323232;\r\n}\r\n\r\n.backdrop {\r\n position: absolute;\r\n opacity: 0;\r\n height: 7px;\r\n width: 14px;\r\n border-radius: 0 0 50% 50%;\r\n background-color: #323232;\r\n z-index: -1;\r\n transform-origin: 50% 0%;\r\n visibility: hidden;\r\n}\r\n","// Z-levels\r\n.shadow-0 {\r\n box-shadow: none !important;\r\n}\r\n\r\n/* 2dp elevation modified*/\r\n.shadow-1 {\r\n box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),\r\n 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);\r\n}\r\n.shadow-1-half {\r\n box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12),\r\n 0 3px 1px -1px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n/* 6dp elevation modified*/\r\n.shadow-2 {\r\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12),\r\n 0 2px 4px -1px rgba(0, 0, 0, 0.3);\r\n}\r\n\r\n/* 12dp elevation modified*/\r\n.shadow-3 {\r\n box-shadow: 0 8px 17px 2px rgba(0, 0, 0, 0.14),\r\n 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n/* 16dp elevation */\r\n.shadow-4 {\r\n box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14),\r\n 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -7px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n/* 24dp elevation */\r\n.shadow-5 {\r\n box-shadow: 0 24px 38px 3px rgba(0, 0, 0, 0.14),\r\n 0 9px 46px 8px rgba(0, 0, 0, 0.12), 0 11px 15px -7px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n/* 24dp elevation */\r\n.invert-shadow-5 {\r\n box-shadow: \r\n 38px 0 0 0 rgba(0, 0, 0, 0.14),\r\n 46px 0 0 0 rgba(0, 0, 0, 0.12), \r\n 15px 0 0 0 rgba(0, 0, 0, 0.2);\r\n }\r\n\r\n.hoverable {\r\n transition: box-shadow 0.25s;\r\n\r\n &:hover {\r\n box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2),\r\n 0 6px 20px 0 rgba(0, 0, 0, 0.19);\r\n }\r\n}\r\n","\r\n/*!\r\n * Waves v0.6.0\r\n * http://fian.my.id/Waves\r\n *\r\n * Copyright 2014 Alfiana E. Sibuea and other contributors\r\n * Released under the MIT license\r\n * https://github.com/fians/Waves/blob/master/LICENSE\r\n */\r\n\r\n\r\n.waves-effect {\r\n position: relative;\r\n cursor: pointer;\r\n display: inline-block;\r\n overflow: hidden;\r\n user-select: none;\r\n -webkit-tap-highlight-color: transparent;\r\n vertical-align: middle;\r\n z-index: 1;\r\n transition: .3s ease-out;\r\n\r\n .waves-ripple {\r\n position: absolute;\r\n border-radius: 50%;\r\n width: 20px;\r\n height: 20px;\r\n margin-top:-10px;\r\n margin-left:-10px;\r\n opacity: 0;\r\n\r\n background: rgba(0,0,0,0.2);\r\n transition: all 0.7s ease-out;\r\n transition-property: transform, opacity;\r\n transform: scale(0);\r\n pointer-events: none;\r\n }\r\n\r\n // Waves Colors\r\n &.waves-light .waves-ripple {\r\n background-color: rgba(255, 255, 255, 0.45);\r\n }\r\n &.waves-red .waves-ripple {\r\n background-color: rgba(244, 67, 54, .70);\r\n }\r\n &.waves-yellow .waves-ripple {\r\n background-color: rgba(255, 235, 59, .70);\r\n }\r\n &.waves-orange .waves-ripple {\r\n background-color: rgba(255, 152, 0, .70);\r\n }\r\n &.waves-purple .waves-ripple {\r\n background-color: rgba(156, 39, 176, 0.70);\r\n }\r\n &.waves-green .waves-ripple {\r\n background-color: rgba(76, 175, 80, 0.70);\r\n }\r\n &.waves-teal .waves-ripple {\r\n background-color: rgba(0, 150, 136, 0.70);\r\n }\r\n\r\n // Style input button bug.\r\n input[type=\"button\"], input[type=\"reset\"], input[type=\"submit\"] {\r\n border: 0;\r\n font-style: normal;\r\n font-size: inherit;\r\n text-transform: inherit;\r\n background: none;\r\n }\r\n\r\n img {\r\n position: relative;\r\n z-index: -1;\r\n }\r\n}\r\n\r\n.waves-notransition {\r\n transition: none #{\"!important\"};\r\n}\r\n\r\n.waves-circle {\r\n transform: translateZ(0);\r\n -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%);\r\n}\r\n\r\n.waves-input-wrapper {\r\n border-radius: 0.2em;\r\n vertical-align: bottom;\r\n\r\n .waves-button-input {\r\n position: relative;\r\n top: 0;\r\n left: 0;\r\n z-index: 1;\r\n }\r\n}\r\n\r\n.waves-circle {\r\n text-align: center;\r\n width: 2.5em;\r\n height: 2.5em;\r\n line-height: 2.5em;\r\n border-radius: 50%;\r\n -webkit-mask-image: none;\r\n}\r\n\r\n.waves-block {\r\n display: block;\r\n}\r\n\r\n/* Firefox Bug: link not triggered */\r\n.waves-effect .waves-ripple {\r\n z-index: -1;\r\n}",".modal {\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n @extend .shadow-5;\r\n\r\n //display: none;\r\n position: fixed;\r\n left: 0;\r\n right: 0;\r\n background-color: #fafafa;\r\n padding: 0;\r\n max-height: 70%;\r\n width: 55%;\r\n margin: auto;\r\n overflow-y: auto;\r\n\r\n border-radius: 2px;\r\n will-change: top, opacity;\r\n\r\n @media #{$medium-and-down} {\r\n width: 80%;\r\n }\r\n\r\n h1,h2,h3,h4 {\r\n margin-top: 0;\r\n }\r\n\r\n .modal-content {\r\n padding: 24px;\r\n }\r\n .modal-close {\r\n cursor: pointer;\r\n }\r\n\r\n .modal-footer {\r\n border-radius: 0 0 2px 2px;\r\n background-color: #fafafa;\r\n padding: 4px 6px;\r\n height: 56px;\r\n width: 100%;\r\n text-align: right;\r\n\r\n .btn, .btn-flat {\r\n margin: 6px 0;\r\n }\r\n }\r\n .modal-header {\r\n border-radius: 2px 2px 0 0 ;\r\n background-color: #fafafa;\r\n padding: 6px 4px;\r\n height: 56px;\r\n width: 100%;\r\n text-align: right;\r\n\r\n .btn, .btn-flat {\r\n margin: 6px 0;\r\n }\r\n }\r\n}\r\n.modal-overlay {\r\n position: fixed;\r\n z-index: 999;\r\n top: -25%;\r\n left: 0;\r\n bottom: 0;\r\n right: 0;\r\n height: 125%;\r\n width: 100%;\r\n background: #000;\r\n display: none;\r\n\r\n will-change: opacity;\r\n}\r\n\r\n// Modal with fixed action footer\r\n.modal.modal-fixed-footer {\r\n padding: 0;\r\n height: 70%;\r\n\r\n .modal-content {\r\n position: absolute;\r\n height: calc(100% - 56px);\r\n max-height: 100%;\r\n width: 100%;\r\n overflow-y: auto;\r\n }\r\n\r\n .modal-footer {\r\n border-top: 1px solid rgba(0,0,0,.1);\r\n position: absolute;\r\n bottom: 0;\r\n }\r\n}\r\n\r\n// Modal Bottom Sheet Style\r\n.modal.bottom-sheet {\r\n top: auto;\r\n bottom: -100%;\r\n margin: 0;\r\n width: 100%;\r\n max-height: 45%;\r\n border-radius: 0;\r\n will-change: bottom, opacity;\r\n}\r\n","html,\r\nbody,\r\n#root {\r\n margin: 0;\r\n height: 100%;\r\n}\r\n\r\n\r\n* {\r\n margin: 0;\r\n padding: 0;\r\n box-sizing: border-box;\r\n}\r\n\r\n.noselect {\r\n -webkit-touch-callout: none; /* iOS Safari */\r\n -webkit-user-select: none; /* Safari */\r\n -khtml-user-select: none; /* Konqueror HTML */\r\n -moz-user-select: none; /* Old versions of Firefox */\r\n -ms-user-select: none; /* Internet Explorer/Edge */\r\n user-select: none;\r\n /* Non-prefixed version, currently\r\n supported by Chrome, Edge, Opera and Firefox */\r\n}\r\n\r\nul {\r\n &:not(.browser-default) {\r\n padding-left: 0;\r\n list-style-type: none;\r\n\r\n & > li {\r\n list-style-type: none;\r\n }\r\n }\r\n}\r\n\r\na {\r\n\tcolor: $link-color;\r\n\ttext-decoration: none;\r\n\r\n // Gets rid of tap active state\r\n -webkit-tap-highlight-color: transparent;\r\n}\r\n\r\n.w-100 {\r\n width: 100%;\r\n}\r\n\r\n.right-align {\r\n text-align: right;\r\n}\r\n.center-align{\r\n text-align: center;\r\n}\r\n\r\n.v-center {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n\r\n.mb1 {\r\n margin-bottom: 10px;\r\n}\r\n\r\n\r\n// Collections\r\n.collection {\r\n margin: $element-top-margin 0 $element-bottom-margin 0;\r\n border: 1px solid $collection-border-color;\r\n border-radius: 2px;\r\n overflow: hidden;\r\n position: relative;\r\n .collection-item {\r\n background-color: $collection-bg-color;\r\n line-height: $collection-line-height;\r\n padding: 10px 20px;\r\n margin: 0;\r\n border-bottom: 1px solid $collection-border-color;\r\n\r\n &.hover {\r\n &:hover {\r\n background-color: $collection-hover-bg-color;\r\n }\r\n }\r\n\r\n // Avatar Collection\r\n &.avatar {\r\n min-height: 84px;\r\n padding-left: 72px;\r\n position: relative;\r\n\r\n\r\n // Don't style circles inside preloader classes.\r\n &:not(.circle-clipper) > .circle,\r\n :not(.circle-clipper) > .circle {\r\n position: absolute;\r\n width: 42px;\r\n height: 42px;\r\n overflow: hidden;\r\n left: 15px;\r\n display: inline-block;\r\n vertical-align: middle;\r\n }\r\n\r\n i.circle {\r\n font-size: 18px;\r\n line-height: 42px;\r\n color: #fff;\r\n background-color: #999;\r\n text-align: center;\r\n }\r\n\r\n\r\n .title {\r\n font-size: 16px;\r\n }\r\n\r\n p {\r\n margin: 0;\r\n }\r\n\r\n .secondary-content {\r\n position: absolute;\r\n top: 16px;\r\n right: 16px;\r\n }\r\n\r\n }\r\n\r\n\r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n\r\n &.active {\r\n background-color: $collection-active-bg-color;\r\n color: $collection-active-color;\r\n\r\n .secondary-content {\r\n color: #fff;\r\n }\r\n }\r\n }\r\n\r\n a.collection-item {\r\n display: block;\r\n transition: .25s;\r\n color: $collection-link-color;\r\n\r\n &:not(.active) {\r\n &:hover {\r\n background-color: $collection-hover-bg-color;\r\n }\r\n }\r\n }\r\n\r\n &.with-header {\r\n .collection-header {\r\n background-color: $collection-bg-color;\r\n border-bottom: 1px solid $collection-border-color;\r\n padding: 10px 20px;\r\n }\r\n\r\n .collection-item {\r\n padding-left: 30px;\r\n }\r\n\r\n .collection-item.avatar {\r\n padding-left: 72px;\r\n }\r\n }\r\n\r\n}\r\n\r\n// Made less specific to allow easier overriding\r\n.secondary-content {\r\n float: right;\r\n color: $secondary-color;\r\n}\r\n\r\n.collapsible .collection {\r\n margin: 0;\r\n border: none;\r\n}\r\n\r\n\r\n.modal-overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n height: 100vh;\r\n width: 100vw;\r\n padding: 20px 0 20px 0;\r\n background-color: rgba(0, 0, 0, .5);\r\n z-index: 999;\r\n display: flex;\r\n justify-content: center;\r\n //align-items: center;\r\n .innerform{\r\n max-width: 650px;\r\n form{\r\n overflow: hidden;\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/*********************\r\n Media Query Classes\r\n**********************/\r\n.hide-on-small-only, .hide-on-small-and-down {\r\n @media #{$small-and-down} {\r\n display: none !important;\r\n }\r\n}\r\n.hide-on-med-and-down {\r\n @media #{$medium-and-down} {\r\n display: none !important;\r\n }\r\n}\r\n.hide-on-med-and-up {\r\n @media #{$medium-and-up} {\r\n display: none !important;\r\n }\r\n}\r\n.hide-on-med-only {\r\n @media only screen and (min-width: $small-screen) and (max-width: $medium-screen) {\r\n display: none !important;\r\n }\r\n}\r\n.hide-on-large-only {\r\n @media #{$large-and-up} {\r\n display: none !important;\r\n }\r\n}\r\n.hide-on-extra-large-only {\r\n @media #{$extra-large-and-up} {\r\n display: none !important;\r\n }\r\n}\r\n.show-on-extra-large {\r\n @media #{$extra-large-and-up} {\r\n display: block !important;\r\n }\r\n}\r\n.show-on-large {\r\n @media #{$large-and-up} {\r\n display: block !important;\r\n }\r\n}\r\n.show-on-medium {\r\n @media only screen and (min-width: $small-screen) and (max-width: $medium-screen) {\r\n display: block !important;\r\n }\r\n}\r\n.show-on-small {\r\n @media #{$small-and-down} {\r\n display: block !important;\r\n }\r\n}\r\n.show-on-medium-and-up {\r\n @media #{$medium-and-up} {\r\n display: block !important;\r\n }\r\n}\r\n.show-on-medium-and-down {\r\n @media #{$medium-and-down} {\r\n display: block !important;\r\n }\r\n}\r\n\r\n\r\n// Center text on mobile\r\n.center-on-small-only {\r\n @media #{$small-and-down} {\r\n text-align: center;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/*******************\r\n Utility Classes\r\n*******************/\r\n\r\n.hide {\r\n display: none !important;\r\n}\r\n\r\n// Text Align\r\n.left-align {\r\n text-align: left;\r\n}\r\n.right-align {\r\n text-align: right\r\n}\r\n.center, .center-align {\r\n text-align: center;\r\n}\r\n\r\n.left {\r\n float: left !important;\r\n}\r\n.right {\r\n float: right !important;\r\n}\r\n\r\n// No Text Select\r\n.no-select {\r\n user-select: none;\r\n}\r\n\r\n.circle {\r\n border-radius: 50%;\r\n}\r\n\r\n.center-block {\r\n display: block;\r\n margin-left: auto;\r\n margin-right: auto;\r\n}\r\n\r\n.truncate {\r\n display: block;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n.no-padding {\r\n padding: 0 !important;\r\n}\r\n","@use \"sass:math\";\r\n$primary-color: color(\"blue\", \"lighten-3\") !default;\r\n$primary-color-light: lighten($primary-color, 15%) !default;\r\n$primary-color-dark: darken($primary-color, 15%) !default;\r\n\r\n$secondary-color: color(\"teal\", \"lighten-1\") !default;\r\n$success-color: color(\"green\", \"base\") !default;\r\n$error-color: color(\"red\", \"base\") !default;\r\n$link-color: color(\"light-blue\", \"darken-1\") !default;\r\n\r\n\r\n\r\n// 2. Badges\r\n// ==========================================================================\r\n\r\n$badge-bg-color: $secondary-color !default;\r\n$badge-height: 22px !default;\r\n\r\n\r\n\r\n// 7. Chips\r\n// ==========================================================================\r\n\r\n$chip-bg-color: #e4e4e4 !default;\r\n$chip-border-color: #9e9e9e !default;\r\n$chip-selected-color: #26a69a !default;\r\n$chip-margin: 5px !default;\r\n\r\n\r\n// 16. Spinners | Loaders\r\n// ==========================================================================\r\n\r\n$spinner-default-color: $secondary-color !default;\r\n\r\n// 24. Progress Bar\r\n// ==========================================================================\r\n\r\n$progress-bar-color: $secondary-color !default;\r\n\r\n\r\n\r\n\r\n\r\n//inputs\r\n\r\n$input-height: 56px;\r\n\r\n// 6. Collapsible\r\n// ==========================================================================\r\n\r\n$collapsible-height: 3rem !default;\r\n$collapsible-line-height: $collapsible-height !default;\r\n$collapsible-header-color: #fff !default;\r\n$collapsible-border-color: #ddd !default;\r\n\r\n// 10. Forms\r\n// ==========================================================================\r\n\r\n// Text Inputs + Textarea\r\n$input-height: 3rem !default;\r\n$input-border-color: color(\"grey\", \"base\") !default;\r\n$input-border: 1px solid $input-border-color !default;\r\n$input-background: #fff !default;\r\n$input-error-color: $error-color !default;\r\n$input-success-color: $success-color !default;\r\n$input-focus-color: $secondary-color !default;\r\n$input-font-size: 16px !default;\r\n$input-margin-bottom: 8px;\r\n$input-margin: 0 0 $input-margin-bottom 0 !default;\r\n$input-padding: 0 !default;\r\n$label-font-size: .8rem !default;\r\n$input-disabled-color: rgba(0,0,0, .42) !default;\r\n$input-disabled-solid-color: #949494 !default;\r\n$input-disabled-border: 1px dotted $input-disabled-color !default;\r\n$input-invalid-border: 1px solid $input-error-color !default;\r\n$input-icon-size: 2rem;\r\n$placeholder-text-color: lighten($input-border-color, 20%) !default;\r\n\r\n// Radio Buttons\r\n$radio-fill-color: $secondary-color !default;\r\n$radio-empty-color: #5a5a5a !default;\r\n$radio-border: 2px solid $radio-fill-color !default;\r\n\r\n// Range\r\n$range-height: 14px !default;\r\n$range-width: 14px !default;\r\n$track-height: 3px !default;\r\n\r\n// Select\r\n$select-border: 1px solid #f2f2f2 !default;\r\n$select-background: rgba(255, 255, 255, 0.90) !default;\r\n$select-focus: 1px solid lighten($secondary-color, 47%) !default;\r\n$select-option-hover: rgba(0,0,0,.08) !default;\r\n$select-option-focus: rgba(0,0,0,.08) !default;\r\n$select-option-selected: rgba(0,0,0,.03) !default;\r\n$select-padding: 5px !default;\r\n$select-radius: 2px !default;\r\n$select-disabled-color: rgba(0,0,0,.3) !default;\r\n\r\n// Switches\r\n$switch-bg-color: $secondary-color !default;\r\n$switch-checked-lever-bg: desaturate(lighten($switch-bg-color, 25%), 25%) !default;\r\n$switch-unchecked-bg: #F1F1F1 !default;\r\n$switch-unchecked-lever-bg: rgba(0,0,0,.38) !default;\r\n$switch-radius: 15px !default;\r\n\r\n// 11. Global\r\n// ==========================================================================\r\n\r\n// Media Query Ranges\r\n$small-screen-up: 601px !default;\r\n$medium-screen-up: 993px !default;\r\n$large-screen-up: 1201px !default;\r\n$small-screen: 600px !default;\r\n$medium-screen: 992px !default;\r\n$large-screen: 1200px !default;\r\n\r\n$medium-and-up: \"only screen and (min-width : #{$small-screen-up})\" !default;\r\n$large-and-up: \"only screen and (min-width : #{$medium-screen-up})\" !default;\r\n$extra-large-and-up: \"only screen and (min-width : #{$large-screen-up})\" !default;\r\n$small-and-down: \"only screen and (max-width : #{$small-screen})\" !default;\r\n$medium-and-down: \"only screen and (max-width : #{$medium-screen})\" !default;\r\n$medium-only: \"only screen and (min-width : #{$small-screen-up}) and (max-width : #{$medium-screen})\" !default;\r\n\r\n\r\n\r\n// 12. Grid\r\n// ==========================================================================\r\n\r\n$num-cols: 12 !default;\r\n$gutter-width: 1rem !default;\r\n$element-top-margin: math.div($gutter-width, 3) !default;\r\n$element-bottom-margin: math.div($gutter-width * 2, 3) !default;\r\n\r\n// 13. Navigation Bar\r\n// ==========================================================================\r\n\r\n$navbar-height: 64px !default;\r\n$navbar-line-height: $navbar-height !default;\r\n$navbar-height-mobile: 56px !default;\r\n$navbar-line-height-mobile: $navbar-height-mobile !default;\r\n$navbar-font-size: 1rem !default;\r\n$navbar-font-color: #fff !default;\r\n$navbar-brand-font-size: 2.1rem !default;\r\n\r\n\r\n// 14. Side Navigation\r\n// ==========================================================================\r\n$button-raised-color: #fff !default;\r\n$button-flat-color: #343434 !default;\r\n$button-raised-background: #343434 !default;\r\n$primary-color:#343434 !default;\r\n\r\n\r\n \r\n$sidenav-width: 300px !default;\r\n$sidenav-font-size: 14px !default;\r\n$sidenav-font-color: rgba(0,0,0,.87) !default;\r\n$sidenav-bg-color: #fff !default;\r\n$sidenav-padding: 15px !default;\r\n$sidenav-item-height: 45px !default;\r\n$sidenav-line-height: $sidenav-item-height !default;\r\n\r\n\r\n\r\n\r\n\r\n\r\n// 3. Buttons\r\n// ==========================================================================\r\n\r\n$primary-color: green !default;\r\n$primary-color-light: lighten($primary-color, 15%) !default;\r\n$primary-color-dark: darken($primary-color, 15%) !default;\r\n$secondary-color: red !default;\r\n\r\n\r\n// Shared styles\r\n$button-border: none !default;\r\n$button-background-focus: lighten($secondary-color, 4%) !default;\r\n$button-font-size: 14px !default;\r\n$button-icon-font-size: 1.3rem !default;\r\n$button-height: 36px !default;\r\n$button-padding: 0 16px !default;\r\n$button-radius: 2px !default;\r\n\r\n// Disabled styles\r\n$button-disabled-background: #DFDFDF !default;\r\n$button-disabled-color: #9F9F9F !default;\r\n\r\n// Raised buttons\r\n$button-raised-background: $secondary-color !default;\r\n$button-raised-background-hover: lighten($button-raised-background, 5%) !default;\r\n$button-raised-color: #fff !default;\r\n\r\n// Large buttons\r\n$button-large-font-size: 15px !default;\r\n$button-large-icon-font-size: 1.6rem !default;\r\n$button-large-height: $button-height * 1.5 !default;\r\n$button-floating-large-size: 56px !default;\r\n\r\n// Small buttons\r\n$button-small-font-size: 13px !default;\r\n$button-small-icon-font-size: 1.2rem !default;\r\n$button-small-height: $button-height * .9 !default;\r\n$button-floating-small-size: $button-height * .9 !default;\r\n\r\n// Flat buttons\r\n$button-flat-color: #343434 !default;\r\n$button-flat-disabled-color: lighten(#999, 10%) !default;\r\n\r\n// Floating buttons\r\n$button-floating-background: $secondary-color !default;\r\n$button-floating-background-hover: $button-floating-background !default;\r\n$button-floating-color: #fff !default;\r\n$button-floating-size: 40px !default;\r\n$button-floating-radius: 50% !default;\r\n\r\n\r\n\r\n\r\n// 4. Cards\r\n// ==========================================================================\r\n\r\n$card-padding: 24px !default;\r\n$card-bg-color: #fff !default;\r\n$card-link-color: color(\"orange\", \"accent-2\") !default;\r\n$card-link-color-light: lighten($card-link-color, 20%) !default;\r\n\r\n\r\n\r\n\r\n\r\n\r\n// 23. Collections\r\n// ==========================================================================\r\n\r\n$collection-border-color: #e0e0e0 !default;\r\n$collection-bg-color: #fff !default;\r\n$collection-active-bg-color: $secondary-color !default;\r\n$collection-active-color: lighten($secondary-color, 55%) !default;\r\n$collection-hover-bg-color: #ddd !default;\r\n$collection-link-color: $secondary-color !default;\r\n$collection-line-height: 1.5rem !default;\r\n\r\n\r\n\r\n\r\n\r\n// 9. Dropdown\r\n// ==========================================================================\r\n\r\n$dropdown-bg-color: #fff !default;\r\n$dropdown-hover-bg-color: #eee !default;\r\n$dropdown-color: $secondary-color !default;\r\n$dropdown-item-height: 50px !default;\r\n\r\n\r\n$off-black: rgba(0, 0, 0, 0.87) !default;","// Badges\r\nspan.badge {\r\n min-width: 3rem;\r\n padding: 0 6px;\r\n margin-left: 14px;\r\n text-align: center;\r\n font-size: 1rem;\r\n line-height: $badge-height;\r\n height: $badge-height;\r\n color: color('grey', 'darken-1');\r\n float: right;\r\n box-sizing: border-box;\r\n\r\n &.new {\r\n font-weight: 300;\r\n font-size: 0.8rem;\r\n color: #fff;\r\n background-color: $badge-bg-color;\r\n border-radius: 2px;\r\n }\r\n\r\n &.new:after {\r\n content: \" new\";\r\n }\r\n\r\n &[data-badge-caption]::after {\r\n content: \" \" attr(data-badge-caption);\r\n }\r\n}\r\n\r\n// Special cases\r\nnav ul a span.badge {\r\n display: inline-block;\r\n float: none;\r\n margin-left: 4px;\r\n line-height: $badge-height;\r\n height: $badge-height;\r\n -webkit-font-smoothing: auto;\r\n}\r\n\r\n// Line height centering\r\n.collection-item span.badge {\r\n margin-top: calc(calc($collection-line-height / 2) - calc($badge-height / 2));\r\n}\r\n\r\n.collapsible span.badge {\r\n margin-left: auto;\r\n}\r\n\r\n.sidenav span.badge {\r\n margin-top: calc(calc($sidenav-line-height / 2) - calc($badge-height / 2));\r\n}\r\n\r\ntable span.badge {\r\n display: inline-block;\r\n float: none;\r\n margin-left: auto;\r\n}\r\n",".chip {\r\n &:focus {\r\n outline: none;\r\n background-color: $chip-selected-color;\r\n color: #fff;\r\n }\r\n\r\n display: inline-block;\r\n height: 32px;\r\n font-size: 13px;\r\n font-weight: 500;\r\n color: rgba(0,0,0,.6);\r\n line-height: 32px;\r\n padding: 0 12px;\r\n border-radius: 16px;\r\n background-color: $chip-bg-color;\r\n margin-bottom: $chip-margin;\r\n margin-right: $chip-margin;\r\n\r\n > img {\r\n float: left;\r\n margin: 0 8px 0 -12px;\r\n height: 32px;\r\n width: 32px;\r\n border-radius: 50%;\r\n }\r\n\r\n .close {\r\n cursor: pointer;\r\n float: right;\r\n font-size: 16px;\r\n line-height: 32px;\r\n padding-left: 8px;\r\n }\r\n}\r\n\r\n.chips {\r\n border: none;\r\n border-bottom: 1px solid $chip-border-color;\r\n box-shadow: none;\r\n margin: $input-margin;\r\n min-height: 45px;\r\n outline: none;\r\n transition: all .3s;\r\n\r\n &.focus {\r\n border-bottom: 1px solid $chip-selected-color;\r\n box-shadow: 0 1px 0 0 $chip-selected-color;\r\n }\r\n\r\n &:hover {\r\n cursor: text;\r\n }\r\n\r\n .input {\r\n background: none;\r\n border: 0;\r\n color: rgba(0,0,0,.6);\r\n display: inline-block;\r\n font-size: $input-font-size;\r\n height: $input-height;\r\n line-height: 32px;\r\n outline: 0;\r\n margin: 0;\r\n padding: 0 !important;\r\n width: 120px !important;\r\n }\r\n\r\n .input:focus {\r\n border: 0 !important;\r\n box-shadow: none !important;\r\n }\r\n\r\n // Autocomplete\r\n .autocomplete-content {\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n }\r\n}\r\n\r\n// Form prefix\r\n.prefix ~ .chips {\r\n margin-left: 3rem;\r\n width: 92%;\r\n width: calc(100% - 3rem);\r\n}\r\n.chips:empty ~ label {\r\n font-size: 0.8rem;\r\n transform: translateY(-140%);\r\n}\r\n",".collapsible {\r\n border-top: 1px solid $collapsible-border-color;\r\n border-right: 1px solid $collapsible-border-color;\r\n border-left: 1px solid $collapsible-border-color;\r\n margin: $element-top-margin 0 $element-bottom-margin 0;\r\n @extend .shadow-1;\r\n}\r\n\r\n.collapsible-header {\r\n &:focus {\r\n outline: 0\r\n }\r\n\r\n display: flex;\r\n cursor: pointer;\r\n -webkit-tap-highlight-color: transparent;\r\n line-height: 1.5;\r\n padding: 1rem;\r\n background-color: $collapsible-header-color;\r\n border-bottom: 1px solid $collapsible-border-color;\r\n\r\n i {\r\n width: 2rem;\r\n font-size: 1.6rem;\r\n display: inline-block;\r\n text-align: center;\r\n margin-right: 1rem;\r\n }\r\n}\r\n.keyboard-focused .collapsible-header:focus {\r\n background-color: #eee;\r\n}\r\n\r\n.collapsible-body {\r\n display: none;\r\n border-bottom: 1px solid $collapsible-border-color;\r\n box-sizing: border-box;\r\n padding: 2rem;\r\n}\r\n\r\n// Sidenav collapsible styling\r\n.sidenav,\r\n.sidenav.fixed {\r\n\r\n .collapsible {\r\n border: none;\r\n box-shadow: none;\r\n\r\n li { padding: 0; }\r\n }\r\n\r\n .collapsible-header {\r\n background-color: transparent;\r\n border: none;\r\n line-height: inherit;\r\n height: inherit;\r\n padding: 0 $sidenav-padding;\r\n\r\n &:hover { background-color: rgba(0,0,0,.05); }\r\n i { line-height: inherit; }\r\n }\r\n\r\n .collapsible-body {\r\n border: 0;\r\n background-color: $collapsible-header-color;\r\n\r\n li a {\r\n padding: 0 (7.5px + $sidenav-padding)\r\n 0 (15px + $sidenav-padding);\r\n }\r\n }\r\n\r\n}\r\n\r\n// Popout Collapsible\r\n\r\n.collapsible.popout {\r\n border: none;\r\n box-shadow: none;\r\n > li {\r\n box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);\r\n // transform: scaleX(.92);\r\n margin: 0 24px;\r\n transition: margin .35s cubic-bezier(0.250, 0.460, 0.450, 0.940);\r\n }\r\n > li.active {\r\n box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15);\r\n margin: 16px 0;\r\n // transform: scaleX(1);\r\n }\r\n}\r\n","// 23. Collections - variables\r\n// ==========================================================================\r\n\r\n$collection-border-color: #e0e0e0 !default;\r\n$collection-bg-color: #fff !default;\r\n$collection-active-bg-color: $secondary-color !default;\r\n$collection-active-color: lighten($secondary-color, 55%) !default;\r\n$collection-hover-bg-color: #ddd !default;\r\n$collection-link-color: $secondary-color !default;\r\n$collection-line-height: 1.5rem !default;\r\n// 23. Collections\r\n// ==========================================================================\r\n\r\n.collection {\r\n margin: $element-top-margin 0 $element-bottom-margin 0;\r\n border: 1px solid $collection-border-color;\r\n border-radius: 2px;\r\n overflow: hidden;\r\n position: relative;\r\n \r\n .collection-item {\r\n background-color: $collection-bg-color;\r\n line-height: $collection-line-height;\r\n padding: 10px 20px;\r\n margin: 0;\r\n border-bottom: 1px solid $collection-border-color;\r\n \r\n // Avatar Collection\r\n &.avatar {\r\n min-height: 84px;\r\n padding-left: 72px;\r\n position: relative;\r\n \r\n // Don't style circles inside preloader classes.\r\n &:not(.circle-clipper) > .circle,\r\n :not(.circle-clipper) > .circle {\r\n position: absolute;\r\n width: 42px;\r\n height: 42px;\r\n overflow: hidden;\r\n left: 15px;\r\n display: inline-block;\r\n vertical-align: middle;\r\n }\r\n i.circle {\r\n font-size: 18px;\r\n line-height: 42px;\r\n color: #fff;\r\n background-color: #999;\r\n text-align: center;\r\n }\r\n \r\n \r\n .title {\r\n font-size: 16px;\r\n }\r\n \r\n p {\r\n margin: 0;\r\n }\r\n \r\n .secondary-content {\r\n position: absolute;\r\n top: 16px;\r\n right: 16px;\r\n }\r\n \r\n }\r\n \r\n \r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n \r\n &.active {\r\n background-color: $collection-active-bg-color;\r\n color: $collection-active-color;\r\n \r\n .secondary-content {\r\n color: #fff;\r\n }\r\n }\r\n }\r\n a.collection-item{\r\n display: block;\r\n transition: .25s;\r\n color: $collection-link-color;\r\n &:not(.active) {\r\n &:hover {\r\n background-color: $collection-hover-bg-color;\r\n }\r\n }\r\n }\r\n \r\n &.with-header {\r\n .collection-header {\r\n background-color: $collection-bg-color;\r\n border-bottom: 1px solid $collection-border-color;\r\n padding: 10px 20px;\r\n }\r\n .collection-item {\r\n padding-left: 30px;\r\n }\r\n .collection-item.avatar {\r\n padding-left: 72px;\r\n }\r\n }\r\n .secondary-content {\r\n float: right;\r\n color: $secondary-color;\r\n }\r\n }","// Remove Focus Boxes\r\nselect:focus {\r\n outline: $select-focus;\r\n}\r\n\r\nbutton:focus {\r\n outline: none;\r\n background-color: $button-background-focus;\r\n}\r\n\r\nlabel {\r\n font-size: $label-font-size;\r\n color: $input-border-color;\r\n}\r\n\r\n@import 'input-fields';\r\n@import 'radio-buttons';\r\n@import 'checkboxes';\r\n@import 'switches';\r\n@import 'select';\r\n@import 'file-input';\r\n@import 'range';\r\n","/* Text Inputs + Textarea\r\n ========================================================================== */\r\n\r\n/* Style Placeholders */\r\n@use \"sass:math\";\r\n::placeholder {\r\n color: $placeholder-text-color;\r\n}\r\n\r\n/* Text inputs */\r\n\r\ninput:not([type]),\r\ninput[type=text]:not(.browser-default),\r\ninput[type=password]:not(.browser-default),\r\ninput[type=email]:not(.browser-default),\r\ninput[type=url]:not(.browser-default),\r\ninput[type=time]:not(.browser-default),\r\ninput[type=date]:not(.browser-default),\r\ninput[type=datetime]:not(.browser-default),\r\ninput[type=datetime-local]:not(.browser-default),\r\ninput[type=tel]:not(.browser-default),\r\ninput[type=number]:not(.browser-default),\r\ninput[type=search]:not(.browser-default),\r\ntextarea.textarea {\r\n\r\n // General Styles\r\n background-color: transparent;\r\n border: none;\r\n border-bottom: $input-border;\r\n border-radius: 0;\r\n outline: none;\r\n height: $input-height;\r\n width: 100%;\r\n font-size: $input-font-size;\r\n margin: $input-margin;\r\n padding: $input-padding;\r\n box-shadow: none;\r\n box-sizing: content-box;\r\n transition: box-shadow .3s, border .3s;\r\n\r\n // Disabled input style\r\n &:disabled,\r\n &[readonly=\"readonly\"] {\r\n color: $input-disabled-color;\r\n border-bottom: $input-disabled-border;\r\n }\r\n\r\n // Disabled label style\r\n &:disabled+label,\r\n &[readonly=\"readonly\"]+label {\r\n color: $input-disabled-color;\r\n }\r\n\r\n // Focused input style\r\n &:focus:not([readonly]) {\r\n border-bottom: 1px solid $input-focus-color;\r\n box-shadow: 0 1px 0 0 $input-focus-color;\r\n }\r\n\r\n // Focused label style\r\n &:focus:not([readonly])+label {\r\n color: $input-focus-color;\r\n }\r\n\r\n // Hide helper text on data message\r\n &.valid ~ .helper-text[data-success],\r\n &:focus.valid ~ .helper-text[data-success],\r\n &.invalid ~ .helper-text[data-error],\r\n &:focus.invalid ~ .helper-text[data-error] {\r\n @extend %hidden-text;\r\n }\r\n\r\n // Valid Input Style\r\n &.valid,\r\n &:focus.valid {\r\n @extend %valid-input-style;\r\n }\r\n\r\n // Custom Success Message\r\n &.valid ~ .helper-text:after,\r\n &:focus.valid ~ .helper-text:after {\r\n @extend %custom-success-message;\r\n }\r\n &:focus.valid ~ label {\r\n color: $input-success-color;\r\n }\r\n\r\n // Invalid Input Style\r\n &.invalid,\r\n &:focus.invalid {\r\n @extend %invalid-input-style;\r\n }\r\n\r\n // Custom Error message\r\n &.invalid ~ .helper-text:after,\r\n &:focus.invalid ~ .helper-text:after {\r\n @extend %custom-error-message;\r\n }\r\n &:focus.invalid ~ label {\r\n color: $input-error-color;\r\n }\r\n\r\n // Full width label when using validate for error messages\r\n &.validate + label {\r\n width: 100%;\r\n }\r\n\r\n // Form Message Shared Styles\r\n & + label:after {\r\n @extend %input-after-style;\r\n }\r\n}\r\n\r\n\r\n/* Validation Sass Placeholders */\r\n%valid-input-style {\r\n border-bottom: 1px solid $input-success-color;\r\n box-shadow: 0 1px 0 0 $input-success-color;\r\n}\r\n%invalid-input-style {\r\n border-bottom: $input-invalid-border;\r\n box-shadow: 0 1px 0 0 $input-error-color;\r\n}\r\n%hidden-text {\r\n color: transparent;\r\n user-select: none;\r\n pointer-events: none;\r\n}\r\n%custom-success-message {\r\n content: attr(data-success);\r\n color: $input-success-color;\r\n}\r\n%custom-error-message {\r\n content: attr(data-error);\r\n color: $input-error-color;\r\n}\r\n%input-after-style {\r\n display: block;\r\n content: \"\";\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n opacity: 0;\r\n transition: .2s opacity ease-out, .2s color ease-out;\r\n}\r\n\r\n\r\n// Styling for input field wrapper\r\n.input-field {\r\n // Inline styles\r\n &.inline {\r\n display: inline-block;\r\n vertical-align: middle;\r\n margin-left: 5px;\r\n\r\n input,\r\n .select-dropdown {\r\n margin-bottom: 1rem;\r\n }\r\n }\r\n\r\n // Gutter spacing\r\n &.col {\r\n label {\r\n left: math.div($gutter-width, 2);\r\n }\r\n\r\n .prefix ~ label,\r\n .prefix ~ .validate ~ label {\r\n width: calc(100% - 3rem - #{$gutter-width});\r\n }\r\n }\r\n\r\n position: relative;\r\n margin-top: 1rem;\r\n margin-bottom: 1rem;\r\n\r\n & > label {\r\n color: $input-border-color;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n font-size: 1rem;\r\n cursor: text;\r\n transition: transform .2s ease-out, color .2s ease-out;\r\n transform-origin: 0% 100%;\r\n text-align: initial;\r\n transform: translateY(12px);\r\n\r\n &:not(.label-icon).active {\r\n transform: translateY(-14px) scale(.8);\r\n transform-origin: 0 0;\r\n }\r\n }\r\n\r\n // Autofill + date + time inputs\r\n & > input[type]:-webkit-autofill:not(.browser-default):not([type=\"search\"]) + label,\r\n & > input[type=date]:not(.browser-default) + label,\r\n & > input[type=time]:not(.browser-default) + label {\r\n transform: translateY(-14px) scale(.8);\r\n transform-origin: 0 0;\r\n }\r\n\r\n .helper-text {\r\n &::after {\r\n opacity: 1;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n }\r\n\r\n position: relative;\r\n min-height: 18px;\r\n display: block;\r\n font-size: 12px;\r\n color: rgba(0,0,0,.54);\r\n }\r\n\r\n // Prefix Icons\r\n .prefix {\r\n position: absolute;\r\n width: $input-height;\r\n font-size: $input-icon-size;\r\n transition: color .2s;\r\n // top: ($input-height - $input-icon-size) / 2;\r\n\r\n &.active { color: $input-focus-color; }\r\n }\r\n\r\n .prefix ~ input,\r\n .prefix ~ textarea,\r\n .prefix ~ label,\r\n .prefix ~ .validate ~ label,\r\n .prefix ~ .helper-text,\r\n .prefix ~ .autocomplete-content {\r\n margin-left: 3rem;\r\n width: 92%;\r\n width: calc(100% - 3rem);\r\n }\r\n\r\n .prefix ~ label { margin-left: 3rem; }\r\n\r\n @media #{$medium-and-down} {\r\n .prefix ~ input {\r\n width: 86%;\r\n width: calc(100% - 3rem);\r\n }\r\n }\r\n\r\n @media #{$small-and-down} {\r\n .prefix ~ input {\r\n width: 80%;\r\n width: calc(100% - 3rem);\r\n }\r\n }\r\n}\r\n\r\n\r\n/* Search Field */\r\n\r\n.input-field input[type=search] {\r\n display: block;\r\n line-height: inherit;\r\n transition: .3s background-color;\r\n\r\n .nav-wrapper & {\r\n height: inherit;\r\n padding-left: 4rem;\r\n width: calc(100% - 4rem);\r\n border: 0;\r\n box-shadow: none;\r\n }\r\n\r\n &:focus:not(.browser-default) {\r\n background-color: $input-background;\r\n border: 0;\r\n box-shadow: none;\r\n color: #444;\r\n\r\n & + label i,\r\n & ~ .mdi-navigation-close,\r\n & ~ .material-icons {\r\n color: #444;\r\n }\r\n }\r\n\r\n & + .label-icon {\r\n transform: none;\r\n left: 1rem;\r\n }\r\n\r\n & ~ .mdi-navigation-close,\r\n & ~ .material-icons {\r\n position: absolute;\r\n top: 0;\r\n right: 1rem;\r\n color: transparent;\r\n cursor: pointer;\r\n font-size: $input-icon-size;\r\n transition: .3s color;\r\n }\r\n}\r\n\r\n\r\n/* Textarea */\r\n\r\n// Default textarea\r\ntextarea {\r\n width: 100%;\r\n height: $input-height;\r\n background-color: transparent;\r\n\r\n &.textarea {\r\n line-height: normal;\r\n overflow-y: hidden; /* prevents scroll bar flash */\r\n padding: .8rem 0 .8rem 0; /* prevents text jump on Enter keypress */\r\n resize: none;\r\n min-height: $input-height;\r\n box-sizing: border-box;\r\n }\r\n}\r\n\r\n// For textarea autoresize\r\n\r\n.hiddendiv {\r\n visibility: hidden;\r\n white-space: pre-wrap;\r\n word-wrap: break-word;\r\n overflow-wrap: break-word; /* future version of deprecated 'word-wrap' */\r\n padding-top: 1.2rem; /* prevents text jump on Enter keypress */\r\n\r\n // Reduces repaints\r\n position: absolute;\r\n top: 0;\r\n z-index: -1;\r\n}\r\n\r\n\r\n/* Autocomplete */\r\n.autocomplete-content {\r\n li {\r\n .highlight { color: #444; }\r\n\r\n img {\r\n // height: $dropdown-item-height - 10;\r\n // width: $dropdown-item-height - 10;\r\n margin: 5px 15px;\r\n }\r\n }\r\n}\r\n\r\n/* Character Counter */\r\n.character-counter {\r\n min-height: 18px;\r\n}\r\n","/* Radio Buttons\r\n ========================================================================== */\r\n\r\n// Remove default Radio Buttons\r\n[type=\"radio\"]:not(:checked),\r\n[type=\"radio\"]:checked {\r\n position: absolute;\r\n opacity: 0;\r\n pointer-events: none;\r\n}\r\n\r\n[type=\"radio\"]:not(:checked) + span,\r\n[type=\"radio\"]:checked + span {\r\n position: relative;\r\n padding-left: 35px;\r\n cursor: pointer;\r\n display: inline-block;\r\n height: 25px;\r\n line-height: 25px;\r\n font-size: 1rem;\r\n transition: .28s ease;\r\n user-select: none;\r\n}\r\n\r\n[type=\"radio\"] + span:before,\r\n[type=\"radio\"] + span:after {\r\n content: '';\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n margin: 4px;\r\n width: 16px;\r\n height: 16px;\r\n z-index: 0;\r\n transition: .28s ease;\r\n}\r\n\r\n/* Unchecked styles */\r\n[type=\"radio\"]:not(:checked) + span:before,\r\n[type=\"radio\"]:not(:checked) + span:after,\r\n[type=\"radio\"]:checked + span:before,\r\n[type=\"radio\"]:checked + span:after,\r\n[type=\"radio\"].with-gap:checked + span:before,\r\n[type=\"radio\"].with-gap:checked + span:after {\r\n border-radius: 50%;\r\n}\r\n\r\n[type=\"radio\"]:not(:checked) + span:before,\r\n[type=\"radio\"]:not(:checked) + span:after {\r\n border: 2px solid $radio-empty-color;\r\n}\r\n\r\n[type=\"radio\"]:not(:checked) + span:after {\r\n transform: scale(0);\r\n}\r\n\r\n/* Checked styles */\r\n[type=\"radio\"]:checked + span:before {\r\n border: 2px solid transparent;\r\n}\r\n\r\n[type=\"radio\"]:checked + span:after,\r\n[type=\"radio\"].with-gap:checked + span:before,\r\n[type=\"radio\"].with-gap:checked + span:after {\r\n border: $radio-border;\r\n}\r\n\r\n[type=\"radio\"]:checked + span:after,\r\n[type=\"radio\"].with-gap:checked + span:after {\r\n background-color: $radio-fill-color;\r\n}\r\n\r\n[type=\"radio\"]:checked + span:after {\r\n transform: scale(1.02);\r\n}\r\n\r\n/* Radio With gap */\r\n[type=\"radio\"].with-gap:checked + span:after {\r\n transform: scale(.5);\r\n}\r\n\r\n/* Focused styles */\r\n[type=\"radio\"].tabbed:focus + span:before {\r\n box-shadow: 0 0 0 10px rgba(0,0,0,.1);\r\n}\r\n\r\n/* Disabled Radio With gap */\r\n[type=\"radio\"].with-gap:disabled:checked + span:before {\r\n border: 2px solid $input-disabled-color;\r\n}\r\n\r\n[type=\"radio\"].with-gap:disabled:checked + span:after {\r\n border: none;\r\n background-color: $input-disabled-color;\r\n}\r\n\r\n/* Disabled style */\r\n[type=\"radio\"]:disabled:not(:checked) + span:before,\r\n[type=\"radio\"]:disabled:checked + span:before {\r\n background-color: transparent;\r\n border-color: $input-disabled-color;\r\n}\r\n\r\n[type=\"radio\"]:disabled + span {\r\n color: $input-disabled-color;\r\n}\r\n\r\n[type=\"radio\"]:disabled:not(:checked) + span:before {\r\n border-color: $input-disabled-color;\r\n}\r\n\r\n[type=\"radio\"]:disabled:checked + span:after {\r\n background-color: $input-disabled-color;\r\n border-color: $input-disabled-solid-color;\r\n}\r\n","/* Checkboxes\r\n ========================================================================== */\r\n\r\n/* Remove default checkbox */\r\n[type=\"checkbox\"]:not(:checked),\r\n[type=\"checkbox\"]:checked {\r\n position: absolute;\r\n opacity: 0;\r\n pointer-events: none;\r\n}\r\n\r\n// Checkbox Styles\r\n[type=\"checkbox\"] {\r\n // Text Label Style\r\n + span:not(.lever) {\r\n position: relative;\r\n padding-left: 35px;\r\n cursor: pointer;\r\n display: inline-block;\r\n height: 25px;\r\n line-height: 25px;\r\n font-size: 1rem;\r\n user-select: none;\r\n }\r\n\r\n /* checkbox aspect */\r\n + span:not(.lever):before,\r\n &:not(.filled-in) + span:not(.lever):after {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 18px;\r\n height: 18px;\r\n z-index: 0;\r\n border: 2px solid $radio-empty-color;\r\n border-radius: 1px;\r\n margin-top: 3px;\r\n transition: .2s;\r\n }\r\n\r\n &:not(.filled-in) + span:not(.lever):after {\r\n border: 0;\r\n transform: scale(0);\r\n }\r\n\r\n &:not(:checked):disabled + span:not(.lever):before {\r\n border: none;\r\n background-color: $input-disabled-color;\r\n }\r\n\r\n // Focused styles\r\n &.tabbed:focus + span:not(.lever):after {\r\n transform: scale(1);\r\n border: 0;\r\n border-radius: 50%;\r\n box-shadow: 0 0 0 10px rgba(0,0,0,.1);\r\n background-color: rgba(0,0,0,.1);\r\n }\r\n}\r\n\r\n[type=\"checkbox\"]:checked {\r\n + span:not(.lever):before {\r\n top: -4px;\r\n left: -5px;\r\n width: 12px;\r\n height: 22px;\r\n border-top: 2px solid transparent;\r\n border-left: 2px solid transparent;\r\n border-right: $radio-border;\r\n border-bottom: $radio-border;\r\n transform: rotate(40deg);\r\n backface-visibility: hidden;\r\n transform-origin: 100% 100%;\r\n }\r\n\r\n &:disabled + span:before {\r\n border-right: 2px solid $input-disabled-color;\r\n border-bottom: 2px solid $input-disabled-color;\r\n }\r\n}\r\n\r\n/* Indeterminate checkbox */\r\n[type=\"checkbox\"]:indeterminate {\r\n + span:not(.lever):before {\r\n top: -11px;\r\n left: -12px;\r\n width: 10px;\r\n height: 22px;\r\n border-top: none;\r\n border-left: none;\r\n border-right: $radio-border;\r\n border-bottom: none;\r\n transform: rotate(90deg);\r\n backface-visibility: hidden;\r\n transform-origin: 100% 100%;\r\n }\r\n\r\n // Disabled indeterminate\r\n &:disabled + span:not(.lever):before {\r\n border-right: 2px solid $input-disabled-color;\r\n background-color: transparent;\r\n }\r\n}\r\n\r\n// Filled in Style\r\n[type=\"checkbox\"].filled-in {\r\n // General\r\n + span:not(.lever):after {\r\n border-radius: 2px;\r\n }\r\n\r\n + span:not(.lever):before,\r\n + span:not(.lever):after {\r\n content: '';\r\n left: 0;\r\n position: absolute;\r\n /* .1s delay is for check animation */\r\n transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;\r\n z-index: 1;\r\n }\r\n\r\n // Unchecked style\r\n &:not(:checked) + span:not(.lever):before {\r\n width: 0;\r\n height: 0;\r\n border: 3px solid transparent;\r\n left: 6px;\r\n top: 10px;\r\n transform: rotateZ(37deg);\r\n transform-origin: 100% 100%;\r\n }\r\n\r\n &:not(:checked) + span:not(.lever):after {\r\n height: 20px;\r\n width: 20px;\r\n background-color: transparent;\r\n border: 2px solid $radio-empty-color;\r\n top: 0px;\r\n z-index: 0;\r\n }\r\n\r\n // Checked style\r\n &:checked {\r\n + span:not(.lever):before {\r\n top: 0;\r\n left: 1px;\r\n width: 8px;\r\n height: 13px;\r\n border-top: 2px solid transparent;\r\n border-left: 2px solid transparent;\r\n border-right: 2px solid $input-background;\r\n border-bottom: 2px solid $input-background;\r\n transform: rotateZ(37deg);\r\n transform-origin: 100% 100%;\r\n }\r\n\r\n + span:not(.lever):after {\r\n top: 0;\r\n width: 20px;\r\n height: 20px;\r\n border: 2px solid $secondary-color;\r\n background-color: $secondary-color;\r\n z-index: 0;\r\n }\r\n }\r\n\r\n // Focused styles\r\n &.tabbed:focus + span:not(.lever):after {\r\n border-radius: 2px;\r\n border-color: $radio-empty-color;\r\n background-color: rgba(0,0,0,.1);\r\n }\r\n\r\n &.tabbed:checked:focus + span:not(.lever):after {\r\n border-radius: 2px;\r\n background-color: $secondary-color;\r\n border-color: $secondary-color;\r\n }\r\n\r\n // Disabled style\r\n &:disabled:not(:checked) + span:not(.lever):before {\r\n background-color: transparent;\r\n border: 2px solid transparent;\r\n }\r\n\r\n &:disabled:not(:checked) + span:not(.lever):after {\r\n border-color: transparent;\r\n background-color: $input-disabled-solid-color;\r\n }\r\n\r\n &:disabled:checked + span:not(.lever):before {\r\n background-color: transparent;\r\n }\r\n\r\n &:disabled:checked + span:not(.lever):after {\r\n background-color: $input-disabled-solid-color;\r\n border-color: $input-disabled-solid-color;\r\n }\r\n}\r\n","/* Switch\r\n ========================================================================== */\r\n\r\n.switch,\r\n.switch * {\r\n -webkit-tap-highlight-color: transparent;\r\n user-select: none;\r\n}\r\n\r\n.switch label {\r\n cursor: pointer;\r\n}\r\n\r\n.switch label input[type=checkbox] {\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n\r\n &:checked + .lever {\r\n background-color: $switch-checked-lever-bg;\r\n\r\n &:before, &:after {\r\n left: 18px;\r\n }\r\n\r\n &:after {\r\n background-color: $switch-bg-color;\r\n }\r\n }\r\n}\r\n\r\n.switch label .lever {\r\n content: \"\";\r\n display: inline-block;\r\n position: relative;\r\n width: 36px;\r\n height: 14px;\r\n background-color: $switch-unchecked-lever-bg;\r\n border-radius: $switch-radius;\r\n //margin-right: 10px;\r\n transition: background 0.3s ease;\r\n vertical-align: middle;\r\n margin: 0 16px;\r\n\r\n &:before, &:after {\r\n content: \"\";\r\n position: absolute;\r\n display: inline-block;\r\n width: 20px;\r\n height: 20px;\r\n border-radius: 50%;\r\n left: 0;\r\n top: -3px;\r\n transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease;\r\n }\r\n\r\n &:before {\r\n background-color: transparentize($switch-bg-color, .85);\r\n }\r\n\r\n &:after {\r\n background-color: $switch-unchecked-bg;\r\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\r\n }\r\n}\r\n\r\n// Switch active style\r\ninput[type=checkbox]:checked:not(:disabled) ~ .lever:active::before,\r\ninput[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::before {\r\n transform: scale(2.4);\r\n background-color: transparentize($switch-bg-color, .85);\r\n}\r\n\r\ninput[type=checkbox]:not(:disabled) ~ .lever:active:before,\r\ninput[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::before {\r\n transform: scale(2.4);\r\n background-color: rgba(0,0,0,.08);\r\n}\r\n\r\n// Disabled Styles\r\n.switch input[type=checkbox][disabled] + .lever {\r\n cursor: default;\r\n background-color: rgba(0,0,0,.12);\r\n}\r\n\r\n.switch label input[type=checkbox][disabled] + .lever:after,\r\n.switch label input[type=checkbox][disabled]:checked + .lever:after {\r\n background-color: $input-disabled-solid-color;\r\n}\r\n","/* Select Field\r\n ========================================================================== */\r\n\r\nselect { display: none; }\r\nselect.browser-default { display: block; }\r\n\r\nselect {\r\n background-color: $select-background;\r\n width: 100%;\r\n padding: $select-padding;\r\n border: $select-border;\r\n border-radius: $select-radius;\r\n height: $input-height;\r\n}\r\n\r\n.select-label {\r\n position: absolute;\r\n}\r\n\r\n.select-wrapper {\r\n &.valid .helper-text[data-success],\r\n &.invalid ~ .helper-text[data-error] {\r\n @extend %hidden-text;\r\n }\r\n\r\n &.valid {\r\n & > input.select-dropdown {\r\n @extend %valid-input-style;\r\n }\r\n\r\n & ~ .helper-text:after {\r\n @extend %custom-success-message;\r\n }\r\n }\r\n\r\n &.invalid {\r\n & > input.select-dropdown,\r\n & > input.select-dropdown:focus {\r\n @extend %invalid-input-style;\r\n }\r\n\r\n & ~ .helper-text:after {\r\n @extend %custom-error-message;\r\n }\r\n }\r\n\r\n &.valid + label,\r\n &.invalid + label {\r\n width: 100%;\r\n pointer-events: none;\r\n }\r\n\r\n & + label:after {\r\n @extend %input-after-style;\r\n }\r\n\r\n position: relative;\r\n\r\n input.select-dropdown {\r\n &:focus {\r\n border-bottom: 1px solid $input-focus-color;\r\n }\r\n position: relative;\r\n cursor: pointer;\r\n background-color: transparent;\r\n border: none;\r\n border-bottom: $input-border;\r\n outline: none;\r\n height: $input-height;\r\n line-height: $input-height;\r\n width: 100%;\r\n font-size: $input-font-size;\r\n margin: $input-margin;\r\n padding: 0;\r\n display: block;\r\n user-select:none;\r\n z-index: 1;\r\n }\r\n\r\n .caret {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n margin: auto 0;\r\n z-index: 0;\r\n fill: rgba(0,0,0,.87);\r\n }\r\n\r\n & + label {\r\n position: absolute;\r\n top: -26px;\r\n font-size: $label-font-size;\r\n }\r\n}\r\n\r\n// Disabled styles\r\nselect:disabled {\r\n color: $input-disabled-color;\r\n}\r\n\r\n.select-wrapper.disabled {\r\n + label {\r\n color: $input-disabled-color;\r\n }\r\n .caret {\r\n fill: $input-disabled-color;\r\n }\r\n}\r\n\r\n.select-wrapper input.select-dropdown:disabled {\r\n color: $input-disabled-color;\r\n cursor: default;\r\n user-select: none;\r\n}\r\n\r\n.select-wrapper i {\r\n color: $select-disabled-color;\r\n}\r\n\r\n.select-dropdown li.disabled,\r\n.select-dropdown li.disabled > span,\r\n.select-dropdown li.optgroup {\r\n color: $select-disabled-color;\r\n background-color: transparent;\r\n}\r\n\r\nbody.keyboard-focused {\r\n .select-dropdown.dropdown-content li:focus {\r\n background-color: $select-option-focus;\r\n }\r\n}\r\n\r\n.select-dropdown.dropdown-content {\r\n li {\r\n &:hover {\r\n background-color: $select-option-hover;\r\n }\r\n\r\n &.selected {\r\n background-color: $select-option-selected;\r\n }\r\n }\r\n}\r\n\r\n// Prefix Icons\r\n.prefix ~ .select-wrapper {\r\n margin-left: 3rem;\r\n width: 92%;\r\n width: calc(100% - 3rem);\r\n}\r\n\r\n.prefix ~ label { margin-left: 3rem; }\r\n\r\n// Icons\r\n.select-dropdown li {\r\n img {\r\n // height: $dropdown-item-height - 10;\r\n // width: $dropdown-item-height - 10;\r\n margin: 5px 15px;\r\n float: right;\r\n }\r\n}\r\n\r\n// Optgroup styles\r\n.select-dropdown li.optgroup {\r\n // border-top: 1px solid $dropdown-hover-bg-color;\r\n\r\n &.selected > span {\r\n color: rgba(0, 0, 0, .7);\r\n }\r\n\r\n & > span {\r\n color: rgba(0, 0, 0, .4);\r\n }\r\n\r\n & ~ li.optgroup-option {\r\n padding-left: 1rem;\r\n }\r\n}\r\n","/* File Input\r\n ========================================================================== */\r\n\r\n.file-field {\r\n position: relative;\r\n\r\n .file-path-wrapper {\r\n overflow: hidden;\r\n padding-left: 10px;\r\n }\r\n\r\n input.file-path { width: 100%; }\r\n\r\n .btn {\r\n float: left;\r\n height: $input-height;\r\n line-height: $input-height;\r\n }\r\n\r\n span {\r\n cursor: pointer;\r\n }\r\n\r\n input[type=file] {\r\n\r\n // Needed to override webkit button\r\n &::-webkit-file-upload-button {\r\n display: none;\r\n }\r\n\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n left: 0;\r\n bottom: 0;\r\n width: 100%;\r\n margin: 0;\r\n padding: 0;\r\n font-size: 20px;\r\n cursor: pointer;\r\n opacity: 0;\r\n filter: alpha(opacity=0);\r\n }\r\n}\r\n","/* Range\r\n ========================================================================== */\r\n\r\n.range-field {\r\n position: relative;\r\n}\r\n\r\ninput[type=range],\r\ninput[type=range] + .thumb {\r\n // @extend .no-select;\r\n cursor: pointer;\r\n}\r\n\r\ninput[type=range] {\r\n position: relative;\r\n background-color: transparent;\r\n border: none;\r\n outline: none;\r\n width: 100%;\r\n margin: 15px 0;\r\n padding: 0;\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n}\r\n\r\ninput[type=range] + .thumb {\r\n position: absolute;\r\n top: 10px;\r\n left: 0;\r\n border: none;\r\n height: 0;\r\n width: 0;\r\n border-radius: 50%;\r\n background-color: $radio-fill-color;\r\n margin-left: 7px;\r\n\r\n transform-origin: 50% 50%;\r\n transform: rotate(-45deg);\r\n\r\n .value {\r\n display: block;\r\n width: 30px;\r\n text-align: center;\r\n color: $radio-fill-color;\r\n font-size: 0;\r\n transform: rotate(45deg);\r\n }\r\n\r\n &.active {\r\n border-radius: 50% 50% 50% 0;\r\n\r\n .value {\r\n color: $input-background;\r\n margin-left: -1px;\r\n margin-top: 8px;\r\n font-size: 10px;\r\n }\r\n }\r\n}\r\n\r\n// Shared\r\n@mixin range-track {\r\n height: $track-height;\r\n background: #c2c0c2;\r\n border: none;\r\n}\r\n\r\n@mixin range-thumb {\r\n border: none;\r\n height: $range-height;\r\n width: $range-width;\r\n border-radius: 50%;\r\n background: $radio-fill-color;\r\n transition: box-shadow .3s;\r\n}\r\n\r\n// WebKit\r\ninput[type=range] {\r\n -webkit-appearance: none;\r\n}\r\n\r\ninput[type=range]::-webkit-slider-runnable-track {\r\n @include range-track;\r\n}\r\n\r\ninput[type=range]::-webkit-slider-thumb {\r\n @include range-thumb;\r\n -webkit-appearance: none;\r\n background-color: $radio-fill-color;\r\n transform-origin: 50% 50%;\r\n margin: -5px 0 0 0;\r\n\r\n}\r\n\r\n.keyboard-focused input[type=range]:focus:not(.active)::-webkit-slider-thumb {\r\n box-shadow: 0 0 0 10px rgba($radio-fill-color, .26);\r\n}\r\n\r\n// FireFox\r\ninput[type=range] {\r\n /* fix for FF unable to apply focus style bug */\r\n border: 1px solid white;\r\n\r\n /*required for proper track sizing in FF*/\r\n}\r\n\r\ninput[type=range]::-moz-range-track {\r\n @include range-track;\r\n}\r\n\r\ninput[type=range]::-moz-focus-inner {\r\n border: 0;\r\n}\r\n\r\ninput[type=range]::-moz-range-thumb {\r\n @include range-thumb;\r\n margin-top: -5px;\r\n}\r\n\r\n// hide the outline behind the border\r\ninput[type=range]:-moz-focusring {\r\n outline: 1px solid #fff;\r\n outline-offset: -1px;\r\n}\r\n\r\n.keyboard-focused input[type=range]:focus:not(.active)::-moz-range-thumb {\r\n box-shadow: 0 0 0 10px rgba($radio-fill-color, .26);\r\n}\r\n\r\n// IE 10+\r\ninput[type=range]::-ms-track {\r\n height: $track-height;\r\n\r\n // remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead\r\n background: transparent;\r\n\r\n // leave room for the larger thumb to overflow with a transparent border */\r\n border-color: transparent;\r\n border-width: 6px 0;\r\n\r\n /*remove default tick marks*/\r\n color: transparent;\r\n}\r\n\r\ninput[type=range]::-ms-fill-lower {\r\n background: #777;\r\n}\r\n\r\ninput[type=range]::-ms-fill-upper {\r\n background: #ddd;\r\n}\r\n\r\ninput[type=range]::-ms-thumb {\r\n @include range-thumb;\r\n}\r\n\r\n.keyboard-focused input[type=range]:focus:not(.active)::-ms-thumb {\r\n box-shadow: 0 0 0 10px rgba($radio-fill-color, .26);\r\n}\r\n",".parallax {\r\n\r\n /* Set a specific height */\r\n min-height: 500px;\r\n\r\n /* Create the parallax scrolling effect */\r\n background-attachment: fixed;\r\n background-position: center;\r\n background-repeat: no-repeat;\r\n background-size: cover;\r\n}","$cube-height:200px;\r\n* { box-sizing: border-box; }\r\n\r\nbody { font-family: sans-serif; }\r\n\r\n.scene {\r\n width: $cube-height;\r\n height: $cube-height;\r\n border: 1px solid #CCC;\r\n margin: 80px;\r\n perspective: 400px;\r\n}\r\n\r\n.cube {\r\n width: $cube-height;\r\n height: $cube-height;\r\n position: relative;\r\n transform-style: preserve-3d;\r\n transform: translateZ(-400px);\r\n transition: transform 1s;\r\n}\r\n\r\n.cube.show-front { transform: translateZ(-10px) rotateY( 0deg); }\r\n.cube.show-right { transform: translateZ(-10px) rotateY( -90deg); }\r\n.cube.show-back { transform: translateZ(-10px) rotateY(-180deg); }\r\n.cube.show-left { transform: translateZ(-10px) rotateY( 90deg); }\r\n.cube.show-top { transform: translateZ(-10px) rotateX( -90deg); }\r\n.cube.show-bottom { transform: translateZ(-10px) rotateX( 90deg); }\r\n\r\n.cube__face {\r\n position: absolute;\r\n width: $cube-height;\r\n height: $cube-height;\r\n border: 2px solid black;\r\n line-height: $cube-height;\r\n font-size: 40px;\r\n font-weight: bold;\r\n color: white;\r\n text-align: center;\r\n}\r\n\r\n.cube__face--front { background: hsla( 0, 100%, 50%, 0.7); }\r\n.cube__face--right { background: hsla( 60, 100%, 50%, 0.7); }\r\n.cube__face--back { background: hsla(120, 100%, 50%, 0.7); }\r\n.cube__face--left { background: hsla(180, 100%, 50%, 0.7); }\r\n.cube__face--top { background: hsla(240, 100%, 50%, 0.7); }\r\n.cube__face--bottom { background: hsla(300, 100%, 50%, 0.7); }\r\n\r\n.cube__face--front { transform: rotateY( 0deg) translateZ(100px); }\r\n.cube__face--right { transform: rotateY( 90deg) translateZ(100px); }\r\n.cube__face--back { transform: rotateY(180deg) translateZ(100px); }\r\n.cube__face--left { transform: rotateY(-90deg) translateZ(100px); }\r\n.cube__face--top { transform: rotateX( 90deg) translateZ(100px); }\r\n.cube__face--bottom { transform: rotateX(-90deg) translateZ(100px); }\r\n\r\nlabel { margin-right: 10px; }","@use \"sass:math\";\r\n.container {\r\n margin: 0 auto;\r\n max-width: 1280px;\r\n width: 90%;\r\n}\r\n@media #{$medium-and-up} {\r\n .container {\r\n width: 85%;\r\n }\r\n}\r\n@media #{$large-and-up} {\r\n .container {\r\n width: 70%;\r\n }\r\n}\r\n.col .row {\r\n margin-left: math.div(-1 * $gutter-width , 2);\r\n margin-right: math.div(-1 * $gutter-width , 2);\r\n}\r\n\r\n.section {\r\n padding-top: 1rem;\r\n padding-bottom: 1rem;\r\n\r\n &.no-pad {\r\n padding: 0;\r\n }\r\n &.no-pad-bot {\r\n padding-bottom: 0;\r\n }\r\n &.no-pad-top {\r\n padding-top: 0;\r\n }\r\n}\r\n\r\n\r\n// Mixins to eliminate code repitition\r\n@mixin reset-offset {\r\n margin-left: auto;\r\n left: auto;\r\n right: auto;\r\n}\r\n@mixin grid-classes($size, $i, $perc) {\r\n &.offset-#{$size}#{$i} {\r\n margin-left: $perc;\r\n }\r\n &.pull-#{$size}#{$i} {\r\n right: $perc;\r\n }\r\n &.push-#{$size}#{$i} {\r\n left: $perc;\r\n }\r\n}\r\n\r\n\r\n.row {\r\n margin-left: auto;\r\n margin-right: auto;\r\n margin-bottom: 20px;\r\n\r\n // Clear floating children\r\n &:after {\r\n content: \"\";\r\n display: table;\r\n clear: both;\r\n }\r\n\r\n .col {\r\n float: left;\r\n box-sizing: border-box;\r\n padding: 0 math.div($gutter-width , 2);\r\n min-height: 1px;\r\n\r\n &[class*=\"push-\"],\r\n &[class*=\"pull-\"] {\r\n position: relative;\r\n }\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n &.s#{$i} {\r\n width: $perc;\r\n @include reset-offset;\r\n }\r\n $i: $i + 1;\r\n }\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n @include grid-classes(\"s\", $i, $perc);\r\n $i: $i + 1;\r\n }\r\n\r\n @media #{$medium-and-up} {\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n &.m#{$i} {\r\n width: $perc;\r\n @include reset-offset;\r\n }\r\n $i: $i + 1\r\n }\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n @include grid-classes(\"m\", $i, $perc);\r\n $i: $i + 1;\r\n }\r\n }\r\n\r\n @media #{$large-and-up} {\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n &.l#{$i} {\r\n width: $perc;\r\n @include reset-offset;\r\n }\r\n $i: $i + 1;\r\n }\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n @include grid-classes(\"l\", $i, $perc);\r\n $i: $i + 1;\r\n }\r\n }\r\n\r\n @media #{$extra-large-and-up} {\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n &.xl#{$i} {\r\n width: $perc;\r\n @include reset-offset;\r\n }\r\n $i: $i + 1;\r\n }\r\n\r\n $i: 1;\r\n @while $i <= $num-cols {\r\n $perc: unquote(math.div(100 , math.div($num-cols , $i)) + \"%\");\r\n @include grid-classes(\"xl\", $i, $perc);\r\n $i: $i + 1;\r\n }\r\n }\r\n }\r\n}\r\n","@use \"sass:math\";\r\nsvg{\r\n //fill:red;\r\n}\r\n.sidenav {\r\n position: fixed;\r\n width: $sidenav-width;\r\n left: 0;\r\n top: 0;\r\n margin: 0;\r\n //transform: translateX(-100%);\r\n height: 100%;\r\n height: calc(100% + 60px);\r\n height: -moz-calc(100%); //Temporary Firefox Fix\r\n padding-bottom: 60px;\r\n background-color: $sidenav-bg-color;\r\n z-index: 999;\r\n overflow-y: auto;\r\n will-change: transform;\r\n backface-visibility: hidden;\r\n transform: translateX(-105%);\r\n transition: transform 1s;\r\n\r\n //@extend .shadow-1;\r\n\r\n // Right Align\r\n &.right-aligned {\r\n right: 0;\r\n //transform: translateX(105%);\r\n left: auto;\r\n transform: translateX(100%);\r\n }\r\n\r\n .collapsible {\r\n margin: 0;\r\n }\r\n\r\n\r\n li {\r\n float: none;\r\n //line-height: $sidenav-line-height;\r\n // margin: 15px 0;\r\n // height: 45px;\r\n .iconSideLink {\r\n display: flex;\r\n align-items: center;\r\n \r\n svg {\r\n //stroke:rgba(0, 0, 0, 0.2);\r\n // fill: white;\r\n stroke:rgba(0, 0, 0, 0.2);\r\n width: 30px;\r\n }\r\n \r\n }\r\n &.active {\r\n background-color: rgba(0, 0, 0, 0.05);\r\n svg {\r\n stroke: white!important;\r\n //fill: white!important;\r\n width: 30px;\r\n }\r\n }\r\n\r\n &.last {\r\n position: sticky;\r\n top: calc(100% - #{$sidenav-item-height} - 35px);\r\n }\r\n }\r\n\r\n li > a {\r\n color: $sidenav-font-color;\r\n display: flex;\r\n font-size: $sidenav-font-size;\r\n font-weight: 700;\r\n height: $sidenav-item-height;\r\n line-height: $sidenav-line-height;\r\n padding: 0 ($sidenav-padding * 2);\r\n\r\n &:hover {\r\n background-color: rgba(0, 0, 0, 0.05);\r\n }\r\n\r\n &.btn,\r\n &.btn-large,\r\n &.btn-flat,\r\n &.btn-floating {\r\n margin: 10px 15px;\r\n }\r\n\r\n &.btn,\r\n &.btn-large,\r\n &.btn-floating {\r\n color: $button-raised-color;\r\n }\r\n\r\n &.btn-flat {\r\n color: $button-flat-color;\r\n }\r\n\r\n &.btn:hover,\r\n &.btn-large:hover {\r\n background-color: lighten($button-raised-background, 5%);\r\n }\r\n\r\n &.btn-floating:hover {\r\n background-color: $button-raised-background;\r\n }\r\n\r\n & > i,\r\n & > [class^=\"mdi-\"],\r\n li > a > [class*=\"mdi-\"],\r\n & > i.s-icon {\r\n float: left;\r\n height: $sidenav-item-height;\r\n line-height: $sidenav-line-height;\r\n margin: 0 ($sidenav-padding * 2) 0 0;\r\n width: math.div($sidenav-item-height, 2);\r\n color: rgba(0, 0, 0, 0.54);\r\n }\r\n }\r\n\r\n .divider {\r\n margin: math.div($sidenav-padding, 2) 0 0 0;\r\n }\r\n\r\n .subheader {\r\n &:hover {\r\n background-color: transparent;\r\n }\r\n\r\n cursor: initial;\r\n pointer-events: none;\r\n color: rgba(0, 0, 0, 0.54);\r\n font-size: $sidenav-font-size;\r\n font-weight: 500;\r\n line-height: $sidenav-line-height;\r\n }\r\n\r\n .user-view {\r\n position: relative;\r\n padding: ($sidenav-padding * 2) ($sidenav-padding * 2) 0;\r\n margin-bottom: math.div($sidenav-padding, 2);\r\n\r\n & > a {\r\n &:hover {\r\n background-color: transparent;\r\n }\r\n\r\n height: auto;\r\n padding: 0;\r\n }\r\n\r\n .background {\r\n overflow: hidden;\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: -1;\r\n }\r\n\r\n .circle,\r\n .name,\r\n .email {\r\n display: block;\r\n }\r\n\r\n .circle {\r\n height: 64px;\r\n width: 64px;\r\n }\r\n\r\n .name,\r\n .email {\r\n font-size: $sidenav-font-size;\r\n line-height: math.div($sidenav-line-height, 2);\r\n }\r\n\r\n .name {\r\n margin-top: 16px;\r\n font-weight: 500;\r\n }\r\n\r\n .email {\r\n padding-bottom: 16px;\r\n font-weight: 400;\r\n }\r\n }\r\n}\r\n\r\n// Touch interaction\r\n.drag-target {\r\n // Right Align\r\n &.right-aligned {\r\n right: 0;\r\n }\r\n\r\n height: 100%;\r\n width: 10px;\r\n position: fixed;\r\n top: 0;\r\n z-index: 998;\r\n}\r\n\r\n// Fixed Sidenav shown\r\n.sidenav.sidenav-fixed {\r\n // Right Align\r\n &.right-aligned {\r\n right: 0;\r\n left: auto;\r\n }\r\n\r\n left: 0;\r\n transform: translateX(0);\r\n position: fixed;\r\n}\r\n\r\n// Fixed Sidenav hide on smaller\r\n@media #{$medium-and-down} {\r\n .sidenav {\r\n &.sidenav-fixed {\r\n transform: translateX(-105%);\r\n\r\n &.right-aligned {\r\n transform: translateX(105%);\r\n }\r\n }\r\n\r\n > a {\r\n padding: 0 $sidenav-padding;\r\n }\r\n\r\n .user-view {\r\n padding: $sidenav-padding $sidenav-padding 0;\r\n }\r\n }\r\n}\r\n\r\n.sidenav .collapsible-body > ul:not(.collapsible) > li.active,\r\n.sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active {\r\n background-color: $primary-color;\r\n\r\n a {\r\n color: $sidenav-bg-color;\r\n }\r\n}\r\n\r\n.sidenav .collapsible-body {\r\n padding: 0;\r\n}\r\n\r\n.sidenav-overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n opacity: 0;\r\n height: 120vh;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n z-index: 997;\r\n display: none;\r\n}\r\n\r\n\r\n\r\n\r\n .with-side-nav-open{\r\n padding-left: 300px;\r\n transition: padding 1s;\r\n }\r\n","// shared styles\r\n\r\n.btn,\r\n.btn-flat {\r\n border: $button-border;\r\n border-radius: $button-radius;\r\n display: inline-block;\r\n height: $button-height;\r\n line-height: $button-height;\r\n padding: $button-padding;\r\n text-transform: uppercase;\r\n vertical-align: middle;\r\n -webkit-tap-highlight-color: transparent; // Gets rid of tap active state\r\n}\r\n\r\n// Disabled shared style\r\n.btn.disabled,\r\n.btn-floating.disabled,\r\n.btn-large.disabled,\r\n.btn-small.disabled,\r\n.btn-flat.disabled,\r\n.btn:disabled,\r\n.btn-floating:disabled,\r\n.btn-large:disabled,\r\n.btn-small:disabled,\r\n.btn-flat:disabled,\r\n.btn[disabled],\r\n.btn-floating[disabled],\r\n.btn-large[disabled],\r\n.btn-small[disabled],\r\n.btn-flat[disabled] {\r\n pointer-events: none;\r\n background-color: $button-disabled-background !important;\r\n box-shadow: none;\r\n color: $button-disabled-color !important;\r\n cursor: default;\r\n &:hover {\r\n background-color: $button-disabled-background !important;\r\n color: $button-disabled-color !important;\r\n }\r\n}\r\n\r\n// Shared icon styles\r\n.btn,\r\n.btn-floating,\r\n.btn-large,\r\n.btn-small,\r\n.btn-flat {\r\n font-size: $button-font-size;\r\n outline: 0;\r\n i {\r\n font-size: $button-icon-font-size;\r\n line-height: inherit;\r\n }\r\n}\r\n\r\n// Shared focus button style\r\n.btn,\r\n.btn-floating {\r\n &:focus {\r\n background-color: darken($button-raised-background, 10%);\r\n }\r\n}\r\n\r\n// Raised Button\r\n.btn {\r\n text-decoration: none;\r\n color: $button-raised-color;\r\n background-color: $button-raised-background;\r\n text-align: center;\r\n letter-spacing: .5px;\r\n @extend .shadow-1;\r\n transition: background-color .2s ease-out;\r\n cursor: pointer;\r\n &:hover {\r\n background-color: $button-raised-background-hover;\r\n @extend .shadow-1-half;\r\n }\r\n}\r\n\r\n// Floating button\r\n.btn-floating {\r\n &:hover {\r\n background-color: $button-floating-background-hover;\r\n @extend .shadow-1-half;\r\n }\r\n &:before {\r\n border-radius: 0;\r\n }\r\n &.btn-large {\r\n &.halfway-fab {\r\n bottom: calc($button-floating-large-size / 2);\r\n }\r\n width: $button-floating-large-size;\r\n height: $button-floating-large-size;\r\n padding: 0;\r\n i {\r\n line-height: $button-floating-large-size;\r\n }\r\n }\r\n\r\n &.btn-small {\r\n &.halfway-fab {\r\n bottom: calc($button-floating-small-size / 2);\r\n }\r\n width: $button-floating-small-size;\r\n height: $button-floating-small-size;\r\n i {\r\n line-height: $button-floating-small-size;\r\n }\r\n }\r\n\r\n &.halfway-fab {\r\n &.left {\r\n right: auto;\r\n left: 24px;\r\n }\r\n position: absolute;\r\n right: 24px;\r\n bottom: calc($button-floating-size / 2);\r\n }\r\n display: inline-block;\r\n color: $button-floating-color;\r\n position: relative;\r\n overflow: hidden;\r\n z-index: 1;\r\n width: $button-floating-size;\r\n height: $button-floating-size;\r\n line-height: $button-floating-size;\r\n padding: 0;\r\n background-color: $button-floating-background;\r\n border-radius: $button-floating-radius;\r\n @extend .shadow-1;\r\n transition: background-color .3s;\r\n cursor: pointer;\r\n vertical-align: middle;\r\n i {\r\n width: inherit;\r\n display: inline-block;\r\n text-align: center;\r\n color: $button-floating-color;\r\n font-size: $button-large-icon-font-size;\r\n line-height: $button-floating-size;\r\n }\r\n}\r\n\r\n// button fix\r\nbutton.btn-floating {\r\n border: $button-border;\r\n}\r\n\r\n// Fixed Action Button\r\n.fixed-action-btn {\r\n &.active {\r\n ul {\r\n visibility: visible;\r\n }\r\n }\r\n\r\n // Directions\r\n &.direction-left,\r\n &.direction-right {\r\n padding: 0 0 0 15px;\r\n ul {\r\n text-align: right;\r\n right: 64px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n height: 100%;\r\n left: auto;\r\n /*width 100% only goes to width of button container */\r\n width: 500px;\r\n li {\r\n display: inline-block;\r\n margin: 7.5px 15px 0 0;\r\n }\r\n }\r\n }\r\n &.direction-right {\r\n padding: 0 15px 0 0;\r\n ul {\r\n text-align: left;\r\n direction: rtl;\r\n left: 64px;\r\n right: auto;\r\n li {\r\n margin: 7.5px 0 0 15px;\r\n }\r\n }\r\n }\r\n &.direction-bottom {\r\n padding: 0 0 15px 0;\r\n ul {\r\n top: 64px;\r\n bottom: auto;\r\n display: flex;\r\n flex-direction: column-reverse;\r\n li {\r\n margin: 15px 0 0 0;\r\n }\r\n }\r\n }\r\n &.toolbar {\r\n &.active {\r\n &>a i {\r\n opacity: 0;\r\n }\r\n }\r\n padding: 0;\r\n height: $button-floating-large-size;\r\n ul {\r\n display: flex;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 1;\r\n li {\r\n flex: 1;\r\n display: inline-block;\r\n margin: 0;\r\n height: 100%;\r\n transition: none;\r\n a {\r\n display: block;\r\n overflow: hidden;\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n background-color: transparent;\r\n box-shadow: none;\r\n color: #fff;\r\n line-height: $button-floating-large-size;\r\n z-index: 1;\r\n i {\r\n line-height: inherit;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n position: fixed;\r\n right: 23px;\r\n bottom: 23px;\r\n padding-top: 15px;\r\n margin-bottom: 0;\r\n z-index: 997;\r\n ul {\r\n left: 0;\r\n right: 0;\r\n text-align: center;\r\n position: absolute;\r\n bottom: 64px;\r\n margin: 0;\r\n visibility: hidden;\r\n li {\r\n margin-bottom: 15px;\r\n }\r\n a.btn-floating {\r\n opacity: 0;\r\n }\r\n }\r\n .fab-backdrop {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n z-index: -1;\r\n width: $button-floating-size;\r\n height: $button-floating-size;\r\n background-color: $button-floating-background;\r\n border-radius: $button-floating-radius;\r\n transform: scale(0);\r\n }\r\n}\r\n\r\n// Flat button\r\n.btn-flat {\r\n box-shadow: none;\r\n background-color: transparent;\r\n color: $button-flat-color;\r\n cursor: pointer;\r\n transition: background-color .2s;\r\n &:focus,\r\n &:hover {\r\n box-shadow: none;\r\n }\r\n &:focus {\r\n background-color: rgba(0, 0, 0, .1);\r\n }\r\n &.disabled,\r\n &.btn-flat[disabled] {\r\n background-color: transparent !important;\r\n color: $button-flat-disabled-color !important;\r\n cursor: default;\r\n }\r\n}\r\n\r\n// Large button\r\n.btn-large {\r\n @extend .btn;\r\n height: $button-large-height;\r\n line-height: $button-large-height;\r\n font-size: $button-large-font-size;\r\n padding: 0 28px;\r\n\r\n i {\r\n font-size: $button-large-icon-font-size;\r\n }\r\n}\r\n\r\n// Small button\r\n.btn-small {\r\n @extend .btn;\r\n height: $button-small-height;\r\n line-height: $button-small-height;\r\n font-size: $button-small-font-size;\r\n i {\r\n font-size: $button-small-icon-font-size;\r\n }\r\n}\r\n\r\n// Block button\r\n.btn-block {\r\n display: block;\r\n}\r\n","$mainColor:#0062d6;\r\n$othermain:#034d82;\r\n$secondColor:#0077FA;\r\n$thirdColor:#09bddd;\r\n$forthColor:#cbe7fe;\r\n\r\n$tab1: $forthColor;\r\n$tab2: darken($forthColor,15%);\r\n$tab3: darken($forthColor,30%);\r\n\r\n.communTabHeader {\r\n height: 100px;\r\n padding: 40px;\r\n}\r\n\r\n.tabs {\r\n min-height: calc(100% - 150px);\r\n margin-top: 30px;\r\n padding:0!important;\r\n border-radius: 40px!important;\r\n.innerpage{\r\n min-height: 70VH!important;\r\n}\r\n .tabs-header-overlay {\r\n display: flex;\r\n height: 100px;\r\n }\r\n\r\n &.activeTab-0 {\r\n .tab-header-over0 {\r\n flex: 1;\r\n background-color: $tab2;\r\n border-radius: 40px 0 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab1;\r\n border-radius: 40px 40px 0 0;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n\r\n .tab-header-over1 {\r\n flex: 1;\r\n background: linear-gradient(0.25turn, $tab1, $tab3);\r\n border-radius: 0 0 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab2;\r\n border-radius: 0 40px 0 40px;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n\r\n .tab-header-over2 {\r\n flex: 1;\r\n background-color: $tab2;\r\n border-radius: 0 40px 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab3;\r\n border-radius: 0 40px 0 40px;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n }\r\n\r\n &.activeTab-1 {\r\n .tab-header-over0 {\r\n flex: 1;\r\n background-color: $tab1;\r\n //linear-gradient(0.25turn, $tab1, $tab1);\r\n //linear-gradient(0.25turn, $tab1, $tab1);\r\n border-radius: 40px 0 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab2;\r\n // border-radius: 40px 40px 0 0;\r\n border-radius: 40px 0 40px 0;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n\r\n .tab-header-over1 {\r\n flex: 1;\r\n background: linear-gradient(0.25turn, $tab2, $tab3);\r\n //$tab2;\r\n //border-radius: 40px 0 0;\r\n border-radius: 0 0 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab1;\r\n border-radius: 40px 40px 0 0;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n\r\n .tab-header-over2 {\r\n flex: 1;\r\n background-color: $tab1;\r\n border-radius: 0 40px 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab3;\r\n border-radius: 0 40px 0 40px;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n }\r\n\r\n\r\n &.activeTab-2 {\r\n .tab-header-over0 {\r\n flex: 1;\r\n background-color: $tab3;\r\n //linear-gradient(0.25turn, $tab1, $tab1);\r\n //linear-gradient(0.25turn, $tab1, $tab1);\r\n border-radius: 40px 0 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab2;\r\n // border-radius: 40px 40px 0 0;\r\n border-radius: 40px 0 40px 0;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n\r\n .tab-header-over1 {\r\n flex: 1;\r\n background: linear-gradient(0.25turn, $tab2, $tab1);\r\n //$tab2;\r\n //border-radius: 40px 0 0;\r\n border-radius: 0 0 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab3;\r\n border-radius: 40px 0 40px 0;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n\r\n .tab-header-over2 {\r\n flex: 1;\r\n background-color: $tab3;\r\n border-radius: 0 40px 0 0;\r\n\r\n .tab-header {\r\n background-color: $tab1;\r\n border-radius: 40px 40px 0 0;\r\n @extend .communTabHeader;\r\n }\r\n }\r\n }\r\n\r\n .tab-content {\r\n background-color: $tab1;\r\n padding: 10px;\r\n //border: 1px solid rgb(207, 205, 205);\r\n border-top: 0;\r\n min-height: 70vh;\r\n border-radius: 0 0 40px 40px;\r\n padding-bottom: 20px;\r\n \r\n }\r\n}\r\n\r\n// .tabs {\r\n// // display: flex;\r\n// // flex-direction: column;\r\n// .tabs-header-overlay {\r\n// display: flex;\r\n// height: 100px;\r\n\r\n// .tab-header-over {\r\n// flex: 1;\r\n// background-color: hotpink;\r\n// border-radius: 0 40px 0 0;\r\n// &.active {\r\n// background-color: rgb(155, 152, 153);\r\n// border-radius: 40px 0 0 0;\r\n// }\r\n// .tab-header {\r\n// &.active {\r\n// background-color: hotpink;\r\n// border-radius: 40px 40px 0 0;\r\n// }\r\n// border-radius: 0px 40px 0 40px;\r\n// padding: 40px;\r\n// background-color: rgb(155, 152, 153);\r\n// }\r\n// }\r\n// }\r\n\r\n// .tab-content {\r\n// background-color: hotpink;\r\n// padding: 10px;\r\n// border: 1px solid rgb(207, 205, 205);\r\n// border-top: 0;\r\n// }\r\n// }\r\n",".loader-overlay {\r\n z-index: 999;\r\n position: absolute;\r\n height: 100vh;\r\n width: 100vw;\r\n top: 0;\r\n left: 0;\r\n background-color: rgba(102, 100, 100, 0.603);\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n flex-direction: column;\r\n .loader {\r\n border: 7px solid #f3f3f3; /* Light grey */\r\n border-top: 7px solid #2ea2cc; /* Blue */\r\n border-radius: 50%;\r\n width: 70px;\r\n height: 70px;\r\n animation: spin 2s linear infinite;\r\n }\r\n .loader-text{\r\n margin-top: 20px;\r\n font-size: 25px;\r\n color: #2ea2cc;\r\n }\r\n\r\n @keyframes spin {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n}\r\n","\r\n\r\n.card-panel {\r\n transition: box-shadow .25s;\r\n padding: $card-padding;\r\n margin: $element-top-margin 0 $element-bottom-margin 0;\r\n border-radius: 2px;\r\n @extend .shadow-1;\r\n background-color: $card-bg-color;\r\n}\r\n\r\n.card {\r\n position: relative;\r\n margin: $element-top-margin 0 $element-bottom-margin 0;\r\n background-color: $card-bg-color;\r\n transition: box-shadow .25s;\r\n border-radius: 2px;\r\n @extend .shadow-1;\r\n\r\n\r\n .card-title {\r\n font-size: 24px;\r\n font-weight: 300;\r\n &.activator {\r\n cursor: pointer;\r\n }\r\n }\r\n\r\n // Card Sizes\r\n &.small, &.medium, &.large {\r\n position: relative;\r\n\r\n .card-image {\r\n max-height: 60%;\r\n overflow: hidden;\r\n }\r\n .card-image + .card-content {\r\n max-height: 40%;\r\n }\r\n .card-content {\r\n max-height: 100%;\r\n overflow: hidden;\r\n }\r\n .card-action {\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n }\r\n }\r\n\r\n &.small {\r\n height: 300px;\r\n }\r\n\r\n &.medium {\r\n height: 400px;\r\n }\r\n\r\n &.large {\r\n height: 500px;\r\n }\r\n\r\n // Horizontal Cards\r\n &.horizontal {\r\n &.small, &.medium, &.large {\r\n .card-image {\r\n height: 100%;\r\n max-height: none;\r\n overflow: visible;\r\n\r\n img {\r\n height: 100%;\r\n }\r\n }\r\n }\r\n\r\n display: flex;\r\n\r\n .card-image {\r\n max-width: 50%;\r\n img {\r\n border-radius: 2px 0 0 2px;\r\n max-width: 100%;\r\n width: auto;\r\n }\r\n }\r\n\r\n .card-stacked {\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1;\r\n position: relative;\r\n\r\n .card-content {\r\n flex-grow: 1;\r\n }\r\n }\r\n }\r\n\r\n // Sticky Action Section\r\n &.sticky-action {\r\n .card-action {\r\n z-index: 2;\r\n }\r\n\r\n .card-reveal {\r\n z-index: 1;\r\n padding-bottom: 64px;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n .card-image {\r\n position: relative;\r\n\r\n // Image background for content\r\n img {\r\n display: block;\r\n border-radius: 2px 2px 0 0;\r\n position: relative;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n width: 100%;\r\n }\r\n\r\n .card-title {\r\n color: $card-bg-color;\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n max-width: 100%;\r\n padding: $card-padding;\r\n }\r\n }\r\n\r\n .card-content {\r\n padding: $card-padding;\r\n border-radius: 0 0 2px 2px;\r\n\r\n p {\r\n margin: 0;\r\n }\r\n .card-title {\r\n display: block;\r\n line-height: 32px;\r\n margin-bottom: 8px;\r\n\r\n i {\r\n line-height: 32px;\r\n }\r\n }\r\n }\r\n\r\n .card-action {\r\n &:last-child {\r\n border-radius: 0 0 2px 2px;\r\n }\r\n background-color: inherit; // Use inherit to inherit color classes\r\n border-top: 1px solid rgba(160,160,160,.2);\r\n position: relative;\r\n padding: 16px $card-padding;\r\n\r\n a:not(.btn):not(.btn-large):not(.btn-floating) {\r\n color: $card-link-color;\r\n margin-right: $card-padding;\r\n transition: color .3s ease;\r\n text-transform: uppercase;\r\n\r\n &:hover { color: $card-link-color-light; }\r\n }\r\n }\r\n\r\n .card-reveal {\r\n padding: $card-padding;\r\n position: absolute;\r\n background-color: $card-bg-color;\r\n width: 100%;\r\n overflow-y: auto;\r\n left: 0;\r\n top: 100%;\r\n height: 100%;\r\n z-index: 3;\r\n display: none;\r\n\r\n .card-title {\r\n cursor: pointer;\r\n display: block;\r\n }\r\n }\r\n}\r\n","/*\r\n @license\r\n Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\r\n This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\r\n The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\r\n The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\r\n Code distributed by Google as part of the polymer project is also\r\n subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\r\n */\r\n\r\n/**************************/\r\n/* STYLES FOR THE SPINNER */\r\n/**************************/\r\n\r\n/*\r\n * Constants:\r\n * STROKEWIDTH = 3px\r\n * ARCSIZE = 270 degrees (amount of circle the arc takes up)\r\n * ARCTIME = 1333ms (time it takes to expand and contract arc)\r\n * ARCSTARTROT = 216 degrees (how much the start location of the arc\r\n * should rotate each time, 216 gives us a\r\n * 5 pointed star shape (it's 360/5 * 3).\r\n * For a 7 pointed star, we might do\r\n * 360/7 * 3 = 154.286)\r\n * CONTAINERWIDTH = 28px\r\n * SHRINK_TIME = 400ms\r\n */\r\n\r\n\r\n.preloader-wrapper {\r\n display: inline-block;\r\n position: relative;\r\n width: 50px;\r\n height: 50px;\r\n\r\n &.small {\r\n width: 36px;\r\n height: 36px;\r\n }\r\n\r\n &.big {\r\n width: 64px;\r\n height: 64px;\r\n }\r\n\r\n &.active {\r\n /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */\r\n -webkit-animation: container-rotate 1568ms linear infinite;\r\n animation: container-rotate 1568ms linear infinite;\r\n }\r\n}\r\n\r\n@-webkit-keyframes container-rotate {\r\n to { -webkit-transform: rotate(360deg) }\r\n}\r\n\r\n@keyframes container-rotate {\r\n to { transform: rotate(360deg) }\r\n}\r\n\r\n.spinner-layer {\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n opacity: 0;\r\n border-color: $spinner-default-color;\r\n}\r\n\r\n.spinner-blue,\r\n.spinner-blue-only {\r\n border-color: #4285f4;\r\n}\r\n\r\n.spinner-red,\r\n.spinner-red-only {\r\n border-color: #db4437;\r\n}\r\n\r\n.spinner-yellow,\r\n.spinner-yellow-only {\r\n border-color: #f4b400;\r\n}\r\n\r\n.spinner-green,\r\n.spinner-green-only {\r\n border-color: #0f9d58;\r\n}\r\n\r\n/**\r\n * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee):\r\n *\r\n * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't\r\n * guarantee that the animation will start _exactly_ after that value. So we avoid using\r\n * animation-delay and instead set custom keyframes for each color (as redundant as it\r\n * seems).\r\n *\r\n * We write out each animation in full (instead of separating animation-name,\r\n * animation-duration, etc.) because under the polyfill, Safari does not recognize those\r\n * specific properties properly, treats them as -webkit-animation, and overrides the\r\n * other animation rules. See https://github.com/Polymer/platform/issues/53.\r\n */\r\n.active .spinner-layer.spinner-blue {\r\n /* durations: 4 * ARCTIME */\r\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n}\r\n\r\n.active .spinner-layer.spinner-red {\r\n /* durations: 4 * ARCTIME */\r\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n}\r\n\r\n.active .spinner-layer.spinner-yellow {\r\n /* durations: 4 * ARCTIME */\r\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n}\r\n\r\n.active .spinner-layer.spinner-green {\r\n /* durations: 4 * ARCTIME */\r\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n}\r\n\r\n.active .spinner-layer,\r\n.active .spinner-layer.spinner-blue-only,\r\n.active .spinner-layer.spinner-red-only,\r\n.active .spinner-layer.spinner-yellow-only,\r\n.active .spinner-layer.spinner-green-only {\r\n /* durations: 4 * ARCTIME */\r\n opacity: 1;\r\n -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n}\r\n\r\n@-webkit-keyframes fill-unfill-rotate {\r\n 12.5% { -webkit-transform: rotate(135deg); } /* 0.5 * ARCSIZE */\r\n 25% { -webkit-transform: rotate(270deg); } /* 1 * ARCSIZE */\r\n 37.5% { -webkit-transform: rotate(405deg); } /* 1.5 * ARCSIZE */\r\n 50% { -webkit-transform: rotate(540deg); } /* 2 * ARCSIZE */\r\n 62.5% { -webkit-transform: rotate(675deg); } /* 2.5 * ARCSIZE */\r\n 75% { -webkit-transform: rotate(810deg); } /* 3 * ARCSIZE */\r\n 87.5% { -webkit-transform: rotate(945deg); } /* 3.5 * ARCSIZE */\r\n to { -webkit-transform: rotate(1080deg); } /* 4 * ARCSIZE */\r\n}\r\n\r\n@keyframes fill-unfill-rotate {\r\n 12.5% { transform: rotate(135deg); } /* 0.5 * ARCSIZE */\r\n 25% { transform: rotate(270deg); } /* 1 * ARCSIZE */\r\n 37.5% { transform: rotate(405deg); } /* 1.5 * ARCSIZE */\r\n 50% { transform: rotate(540deg); } /* 2 * ARCSIZE */\r\n 62.5% { transform: rotate(675deg); } /* 2.5 * ARCSIZE */\r\n 75% { transform: rotate(810deg); } /* 3 * ARCSIZE */\r\n 87.5% { transform: rotate(945deg); } /* 3.5 * ARCSIZE */\r\n to { transform: rotate(1080deg); } /* 4 * ARCSIZE */\r\n}\r\n\r\n@-webkit-keyframes blue-fade-in-out {\r\n from { opacity: 1; }\r\n 25% { opacity: 1; }\r\n 26% { opacity: 0; }\r\n 89% { opacity: 0; }\r\n 90% { opacity: 1; }\r\n 100% { opacity: 1; }\r\n}\r\n\r\n@keyframes blue-fade-in-out {\r\n from { opacity: 1; }\r\n 25% { opacity: 1; }\r\n 26% { opacity: 0; }\r\n 89% { opacity: 0; }\r\n 90% { opacity: 1; }\r\n 100% { opacity: 1; }\r\n}\r\n\r\n@-webkit-keyframes red-fade-in-out {\r\n from { opacity: 0; }\r\n 15% { opacity: 0; }\r\n 25% { opacity: 1; }\r\n 50% { opacity: 1; }\r\n 51% { opacity: 0; }\r\n}\r\n\r\n@keyframes red-fade-in-out {\r\n from { opacity: 0; }\r\n 15% { opacity: 0; }\r\n 25% { opacity: 1; }\r\n 50% { opacity: 1; }\r\n 51% { opacity: 0; }\r\n}\r\n\r\n@-webkit-keyframes yellow-fade-in-out {\r\n from { opacity: 0; }\r\n 40% { opacity: 0; }\r\n 50% { opacity: 1; }\r\n 75% { opacity: 1; }\r\n 76% { opacity: 0; }\r\n}\r\n\r\n@keyframes yellow-fade-in-out {\r\n from { opacity: 0; }\r\n 40% { opacity: 0; }\r\n 50% { opacity: 1; }\r\n 75% { opacity: 1; }\r\n 76% { opacity: 0; }\r\n}\r\n\r\n@-webkit-keyframes green-fade-in-out {\r\n from { opacity: 0; }\r\n 65% { opacity: 0; }\r\n 75% { opacity: 1; }\r\n 90% { opacity: 1; }\r\n 100% { opacity: 0; }\r\n}\r\n\r\n@keyframes green-fade-in-out {\r\n from { opacity: 0; }\r\n 65% { opacity: 0; }\r\n 75% { opacity: 1; }\r\n 90% { opacity: 1; }\r\n 100% { opacity: 0; }\r\n}\r\n\r\n/**\r\n * Patch the gap that appear between the two adjacent div.circle-clipper while the\r\n * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11).\r\n */\r\n.gap-patch {\r\n position: absolute;\r\n top: 0;\r\n left: 45%;\r\n width: 10%;\r\n height: 100%;\r\n overflow: hidden;\r\n border-color: inherit;\r\n}\r\n\r\n.gap-patch .circle {\r\n width: 1000%;\r\n left: -450%;\r\n}\r\n\r\n.circle-clipper {\r\n display: inline-block;\r\n position: relative;\r\n width: 50%;\r\n height: 100%;\r\n overflow: hidden;\r\n border-color: inherit;\r\n\r\n .circle {\r\n width: 200%;\r\n height: 100%;\r\n border-width: 3px; /* STROKEWIDTH */\r\n border-style: solid;\r\n border-color: inherit;\r\n border-bottom-color: transparent !important;\r\n border-radius: 50%;\r\n -webkit-animation: none;\r\n animation: none;\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n }\r\n\r\n &.left .circle {\r\n left: 0;\r\n border-right-color: transparent !important;\r\n -webkit-transform: rotate(129deg);\r\n transform: rotate(129deg);\r\n }\r\n &.right .circle {\r\n left: -100%;\r\n border-left-color: transparent !important;\r\n -webkit-transform: rotate(-129deg);\r\n transform: rotate(-129deg);\r\n }\r\n}\r\n\r\n\r\n\r\n.active .circle-clipper.left .circle {\r\n /* duration: ARCTIME */\r\n -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n}\r\n\r\n.active .circle-clipper.right .circle {\r\n /* duration: ARCTIME */\r\n -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;\r\n}\r\n\r\n@-webkit-keyframes left-spin {\r\n from { -webkit-transform: rotate(130deg); }\r\n 50% { -webkit-transform: rotate(-5deg); }\r\n to { -webkit-transform: rotate(130deg); }\r\n}\r\n\r\n@keyframes left-spin {\r\n from { transform: rotate(130deg); }\r\n 50% { transform: rotate(-5deg); }\r\n to { transform: rotate(130deg); }\r\n}\r\n\r\n@-webkit-keyframes right-spin {\r\n from { -webkit-transform: rotate(-130deg); }\r\n 50% { -webkit-transform: rotate(5deg); }\r\n to { -webkit-transform: rotate(-130deg); }\r\n}\r\n\r\n@keyframes right-spin {\r\n from { transform: rotate(-130deg); }\r\n 50% { transform: rotate(5deg); }\r\n to { transform: rotate(-130deg); }\r\n}\r\n\r\n#spinnerContainer.cooldown {\r\n /* duration: SHRINK_TIME */\r\n -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0.0, 0.2, 1);\r\n animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0.0, 0.2, 1);\r\n}\r\n\r\n@-webkit-keyframes fade-out {\r\n from { opacity: 1; }\r\n to { opacity: 0; }\r\n}\r\n\r\n@keyframes fade-out {\r\n from { opacity: 1; }\r\n to { opacity: 0; }\r\n}\r\n","\r\n// Progress Bar\r\n.progress {\r\n position: relative;\r\n height: 4px;\r\n display: block;\r\n width: 100%;\r\n background-color: lighten($progress-bar-color, 40%);\r\n border-radius: 2px;\r\n margin: $element-top-margin 0 $element-bottom-margin 0;\r\n overflow: hidden;\r\n .determinate {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n background-color: $progress-bar-color;\r\n transition: width .3s linear;\r\n }\r\n .indeterminate {\r\n background-color: $progress-bar-color;\r\n &:before {\r\n content: '';\r\n position: absolute;\r\n background-color: inherit;\r\n top: 0;\r\n left:0;\r\n bottom: 0;\r\n will-change: left, right;\r\n // Custom bezier\r\n animation: indeterminate 2.1s cubic-bezier(0.650, 0.815, 0.735, 0.395) infinite;\r\n\r\n }\r\n &:after {\r\n content: '';\r\n position: absolute;\r\n background-color: inherit;\r\n top: 0;\r\n left:0;\r\n bottom: 0;\r\n will-change: left, right;\r\n // Custom bezier\r\n animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.840, 0.440, 1.000) infinite;\r\n animation-delay: 1.15s;\r\n }\r\n }\r\n}\r\n@keyframes indeterminate {\r\n 0% {\r\n left: -35%;\r\n right:100%;\r\n }\r\n 60% {\r\n left: 100%;\r\n right: -90%;\r\n }\r\n 100% {\r\n left: 100%;\r\n right: -90%;\r\n }\r\n}\r\n\r\n@keyframes indeterminate-short {\r\n 0% {\r\n left: -200%;\r\n right: 100%;\r\n }\r\n 60% {\r\n left: 107%;\r\n right: -8%;\r\n }\r\n 100% {\r\n left: 107%;\r\n right: -8%;\r\n }\r\n}\r\n\r\n",".flash-message {\r\n position: absolute;\r\n padding: 2px 10px;\r\n border-radius: 5px;\r\n z-index: 99999;\r\n right: 0;\r\n bottom: 0;\r\n font-size: 14px;\r\n\r\n\r\n &.info {\r\n background-color: #beddbe;\r\n border: 1px solid #728f72;\r\n }\r\n\r\n &.warn {\r\n background-color: #f5e6d0;\r\n border: 1px solid #ea7d17;\r\n }\r\n &.error {\r\n background-color: #e5b2bc;\r\n border: 1px solid #e33257;\r\n }\r\n}\r\n\r\n@keyframes messageIn {\r\n from {\r\n right: 80%;\r\n }\r\n\r\n to {\r\n right: 0;\r\n\r\n }\r\n}",".pulse {\r\n &::before {\r\n content: '';\r\n display: block;\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n top: 0;\r\n left: 0;\r\n background-color: inherit;\r\n border-radius: inherit;\r\n transition: opacity .3s, transform .3s;\r\n animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;\r\n //z-index: -1;\r\n }\r\n\r\n overflow: visible;\r\n position: relative;\r\n}\r\n\r\n@keyframes pulse-animation {\r\n 0% {\r\n opacity: 1;\r\n transform: scale(1);\r\n }\r\n 50% {\r\n opacity: 0;\r\n transform: scale(1.5);\r\n }\r\n 100% {\r\n opacity: 0;\r\n transform: scale(1.5);\r\n }\r\n}\r\n",".dropdown-content {\r\n &:focus {\r\n outline: 0;\r\n }\r\n\r\n\r\n @extend .shadow-1;\r\n background-color: $dropdown-bg-color;\r\n margin: 0;\r\n display: flow;\r\n min-width: 100px;\r\n overflow-y: auto;\r\n //opacity: 0;\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n z-index: 9999; // TODO: Check if this doesn't break other things\r\n transform-origin: 0 0;\r\n\r\n\r\n li {\r\n &:hover, &.active {\r\n background-color: $dropdown-hover-bg-color;\r\n }\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &.divider {\r\n min-height: 0;\r\n height: 1px;\r\n }\r\n\r\n & > a, & > span {\r\n font-size: 16px;\r\n color: $dropdown-color;\r\n display: block;\r\n line-height: 22px;\r\n padding: calc(($dropdown-item-height - 22px) / 2) 16px;\r\n }\r\n\r\n & > span > label {\r\n top: 1px;\r\n left: 0;\r\n height: 18px;\r\n }\r\n\r\n // Icon alignment override\r\n & > a > i {\r\n height: inherit;\r\n line-height: inherit;\r\n float: left;\r\n margin: 0 24px 0 0;\r\n width: 24px;\r\n }\r\n\r\n\r\n clear: both;\r\n color: $off-black;\r\n cursor: pointer;\r\n min-height: $dropdown-item-height;\r\n line-height: 1.5rem;\r\n width: 100%;\r\n text-align: left;\r\n }\r\n}\r\n\r\nbody.keyboard-focused {\r\n .dropdown-content li:focus {\r\n background-color: darken($dropdown-hover-bg-color, 8%);\r\n }\r\n}\r\n\r\n// Input field specificity bugfix\r\n.input-field.col .dropdown-content [type=\"checkbox\"] + label {\r\n top: 1px;\r\n left: 0;\r\n height: 18px;\r\n transform: none;\r\n}\r\n\r\n.dropdown-trigger {\r\n cursor: pointer;\r\n}","nav {\r\n &.nav-extended {\r\n height: auto;\r\n\r\n .nav-wrapper {\r\n display: flex;\r\n align-items: center;\r\n min-height: $navbar-height-mobile;\r\n height: auto;\r\n }\r\n\r\n .nav-content {\r\n position: relative;\r\n line-height: normal;\r\n }\r\n }\r\n\r\n color: $navbar-font-color;\r\n @extend .shadow-1;\r\n background-color: $primary-color;\r\n width: 100%;\r\n height: $navbar-height-mobile;\r\n line-height: $navbar-line-height-mobile;\r\n\r\n a { color: $navbar-font-color; }\r\n\r\n i,\r\n [class^=\"mdi-\"], [class*=\"mdi-\"],\r\n i.s-icons {\r\n display: block;\r\n font-size: 24px;\r\n height: $navbar-height-mobile;\r\n line-height: $navbar-line-height-mobile;\r\n }\r\n\r\n .nav-wrapper {\r\n position: relative;\r\n height: 100%;\r\n }\r\n\r\n @media #{$large-and-up} {\r\n a.sidenav-trigger { display: none; }\r\n }\r\n\r\n\r\n // Collapse button\r\n .sidenav-trigger {\r\n float: left;\r\n position: relative;\r\n z-index: 1;\r\n height: $navbar-height-mobile;\r\n margin: 0 18px;\r\n\r\n i {\r\n height: $navbar-height-mobile;\r\n line-height: $navbar-line-height-mobile;\r\n }\r\n }\r\n\r\n\r\n // Logo\r\n .brand-logo {\r\n position: absolute;\r\n color: $navbar-font-color;\r\n display: inline-block;\r\n font-size: $navbar-brand-font-size;\r\n padding: 0;\r\n img.circle {\r\n height: 32px;\r\n width: 32px;\r\n }\r\n\r\n &.center {\r\n left: 50%;\r\n transform: translateX(-50%);\r\n }\r\n\r\n @media #{$medium-and-down} {\r\n left: 50%;\r\n transform: translateX(-50%);\r\n\r\n &.left, &.right {\r\n padding: 0;\r\n transform: none;\r\n }\r\n\r\n &.left { left: 0.5rem; }\r\n &.right {\r\n right: 0.5rem;\r\n left: auto;\r\n }\r\n }\r\n\r\n &.right {\r\n right: 0.5rem;\r\n padding: 0;\r\n }\r\n\r\n i,\r\n [class^=\"mdi-\"], [class*=\"mdi-\"],\r\n i.s-icons {\r\n float: left;\r\n margin-right: 15px;\r\n }\r\n }\r\n\r\n\r\n // Title\r\n .nav-title {\r\n display: inline-block;\r\n font-size: 32px;\r\n padding: 28px 0;\r\n }\r\n\r\n\r\n // Navbar Links\r\n ul {\r\n margin: 0;\r\n\r\n li {\r\n transition: background-color .3s;\r\n float: left;\r\n padding: 0;\r\n\r\n &.active {\r\n background-color: rgba(0,0,0,.1);\r\n }\r\n }\r\n a {\r\n transition: background-color .3s;\r\n font-size: $navbar-font-size;\r\n color: $navbar-font-color;\r\n display: block;\r\n padding: 0 15px;\r\n cursor: pointer;\r\n\r\n &.btn, &.btn-large, &.btn-flat, &.btn-floating {\r\n margin-top: -2px;\r\n margin-left: 15px;\r\n margin-right: 15px;\r\n\r\n & > .material-icons {\r\n height: inherit;\r\n line-height: inherit;\r\n }\r\n }\r\n\r\n &:hover {\r\n background-color: rgba(0,0,0,.1);\r\n }\r\n }\r\n\r\n &.left {\r\n float: left;\r\n }\r\n }\r\n\r\n // Navbar Search Form\r\n form {\r\n height: 100%;\r\n }\r\n\r\n .input-field {\r\n margin: 0;\r\n height: 100%;\r\n\r\n input {\r\n height: 100%;\r\n font-size: 1.2rem;\r\n border: none;\r\n padding-left: 2rem;\r\n\r\n &:focus, &[type=text]:valid, &[type=password]:valid,\r\n &[type=email]:valid, &[type=url]:valid, &[type=date]:valid {\r\n border: none;\r\n box-shadow: none;\r\n }\r\n }\r\n\r\n label {\r\n top: 0;\r\n left: 0;\r\n\r\n i {\r\n color: rgba(255,255,255,.7);\r\n transition: color .3s;\r\n }\r\n &.active i { color: $navbar-font-color; }\r\n }\r\n }\r\n}\r\n\r\n// Fixed Navbar\r\n.navbar-fixed {\r\n position: relative;\r\n height: $navbar-height-mobile;\r\n z-index: 997;\r\n\r\n nav {\r\n position: fixed;\r\n }\r\n}\r\n@media #{$medium-and-up} {\r\n nav.nav-extended .nav-wrapper {\r\n min-height: $navbar-height;\r\n }\r\n nav, nav .nav-wrapper i, nav a.sidenav-trigger, nav a.sidenav-trigger i {\r\n height: $navbar-height;\r\n line-height: $navbar-line-height;\r\n }\r\n .navbar-fixed {\r\n height: $navbar-height;\r\n }\r\n}\r\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/runtime/api.js": /*!*****************************************************!*\ !*** ./node_modules/css-loader/dist/runtime/api.js ***! \*****************************************************/ /***/ ((module) => { "use strict"; /* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ module.exports = function (cssWithMappingToString) { var list = []; // return the list of modules as css string list.toString = function toString() { return this.map(function (item) { var content = ""; var needLayer = typeof item[5] !== "undefined"; if (item[4]) { content += "@supports (".concat(item[4], ") {"); } if (item[2]) { content += "@media ".concat(item[2], " {"); } if (needLayer) { content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {"); } content += cssWithMappingToString(item); if (needLayer) { content += "}"; } if (item[2]) { content += "}"; } if (item[4]) { content += "}"; } return content; }).join(""); }; // import a list of modules into the list list.i = function i(modules, media, dedupe, supports, layer) { if (typeof modules === "string") { modules = [[null, modules, undefined]]; } var alreadyImportedModules = {}; if (dedupe) { for (var k = 0; k < this.length; k++) { var id = this[k][0]; if (id != null) { alreadyImportedModules[id] = true; } } } for (var _k = 0; _k < modules.length; _k++) { var item = [].concat(modules[_k]); if (dedupe && alreadyImportedModules[item[0]]) { continue; } if (typeof layer !== "undefined") { if (typeof item[5] === "undefined") { item[5] = layer; } else { item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); item[5] = layer; } } if (media) { if (!item[2]) { item[2] = media; } else { item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); item[2] = media; } } if (supports) { if (!item[4]) { item[4] = "".concat(supports); } else { item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); item[4] = supports; } } list.push(item); } }; return list; }; /***/ }), /***/ "./node_modules/css-loader/dist/runtime/sourceMaps.js": /*!************************************************************!*\ !*** ./node_modules/css-loader/dist/runtime/sourceMaps.js ***! \************************************************************/ /***/ ((module) => { "use strict"; module.exports = function (item) { var content = item[1]; var cssMapping = item[3]; if (!cssMapping) { return content; } if (typeof btoa === "function") { var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping)))); var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); var sourceMapping = "/*# ".concat(data, " */"); return [content].concat([sourceMapping]).join("\n"); } return [content].join("\n"); }; /***/ }), /***/ "./node_modules/deepmerge/dist/cjs.js": /*!********************************************!*\ !*** ./node_modules/deepmerge/dist/cjs.js ***! \********************************************/ /***/ ((module) => { "use strict"; var isMergeableObject = function isMergeableObject(value) { return isNonNullObject(value) && !isSpecial(value) }; function isNonNullObject(value) { return !!value && typeof value === 'object' } function isSpecial(value) { var stringValue = Object.prototype.toString.call(value); return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value) } // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25 var canUseSymbol = typeof Symbol === 'function' && Symbol.for; var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7; function isReactElement(value) { return value.$$typeof === REACT_ELEMENT_TYPE } function emptyTarget(val) { return Array.isArray(val) ? [] : {} } function cloneUnlessOtherwiseSpecified(value, options) { return (options.clone !== false && options.isMergeableObject(value)) ? deepmerge(emptyTarget(value), value, options) : value } function defaultArrayMerge(target, source, options) { return target.concat(source).map(function(element) { return cloneUnlessOtherwiseSpecified(element, options) }) } function getMergeFunction(key, options) { if (!options.customMerge) { return deepmerge } var customMerge = options.customMerge(key); return typeof customMerge === 'function' ? customMerge : deepmerge } function getEnumerableOwnPropertySymbols(target) { return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) { return Object.propertyIsEnumerable.call(target, symbol) }) : [] } function getKeys(target) { return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)) } function propertyIsOnObject(object, property) { try { return property in object } catch(_) { return false } } // Protects from prototype poisoning and unexpected merging up the prototype chain. function propertyIsUnsafe(target, key) { return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet, && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain, && Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable. } function mergeObject(target, source, options) { var destination = {}; if (options.isMergeableObject(target)) { getKeys(target).forEach(function(key) { destination[key] = cloneUnlessOtherwiseSpecified(target[key], options); }); } getKeys(source).forEach(function(key) { if (propertyIsUnsafe(target, key)) { return } if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) { destination[key] = getMergeFunction(key, options)(target[key], source[key], options); } else { destination[key] = cloneUnlessOtherwiseSpecified(source[key], options); } }); return destination } function deepmerge(target, source, options) { options = options || {}; options.arrayMerge = options.arrayMerge || defaultArrayMerge; options.isMergeableObject = options.isMergeableObject || isMergeableObject; // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge() // implementations can use it. The caller may not replace it. options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified; var sourceIsArray = Array.isArray(source); var targetIsArray = Array.isArray(target); var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; if (!sourceAndTargetTypesMatch) { return cloneUnlessOtherwiseSpecified(source, options) } else if (sourceIsArray) { return options.arrayMerge(target, source, options) } else { return mergeObject(target, source, options) } } deepmerge.all = function deepmergeAll(array, options) { if (!Array.isArray(array)) { throw new Error('first argument should be an array') } return array.reduce(function(prev, next) { return deepmerge(prev, next, options) }, {}) }; var deepmerge_1 = deepmerge; module.exports = deepmerge_1; /***/ }), /***/ "./node_modules/object-assign/index.js": /*!*********************************************!*\ !*** ./node_modules/object-assign/index.js ***! \*********************************************/ /***/ ((module) => { "use strict"; /* object-assign (c) Sindre Sorhus @license MIT */ /* eslint-disable no-unused-vars */ var getOwnPropertySymbols = Object.getOwnPropertySymbols; var hasOwnProperty = Object.prototype.hasOwnProperty; var propIsEnumerable = Object.prototype.propertyIsEnumerable; function toObject(val) { if (val === null || val === undefined) { throw new TypeError('Object.assign cannot be called with null or undefined'); } return Object(val); } function shouldUseNative() { try { if (!Object.assign) { return false; } // Detect buggy property enumeration order in older V8 versions. // https://bugs.chromium.org/p/v8/issues/detail?id=4118 var test1 = new String('abc'); // eslint-disable-line no-new-wrappers test1[5] = 'de'; if (Object.getOwnPropertyNames(test1)[0] === '5') { return false; } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 var test2 = {}; for (var i = 0; i < 10; i++) { test2['_' + String.fromCharCode(i)] = i; } var order2 = Object.getOwnPropertyNames(test2).map(function (n) { return test2[n]; }); if (order2.join('') !== '0123456789') { return false; } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 var test3 = {}; 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { test3[letter] = letter; }); if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') { return false; } return true; } catch (err) { // We don't expect any of the above to throw, but better to be safe. return false; } } module.exports = shouldUseNative() ? Object.assign : function (target, source) { var from; var to = toObject(target); var symbols; for (var s = 1; s < arguments.length; s++) { from = Object(arguments[s]); for (var key in from) { if (hasOwnProperty.call(from, key)) { to[key] = from[key]; } } if (getOwnPropertySymbols) { symbols = getOwnPropertySymbols(from); for (var i = 0; i < symbols.length; i++) { if (propIsEnumerable.call(from, symbols[i])) { to[symbols[i]] = from[symbols[i]]; } } } } return to; }; /***/ }), /***/ "./node_modules/prop-types/checkPropTypes.js": /*!***************************************************!*\ !*** ./node_modules/prop-types/checkPropTypes.js ***! \***************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var printWarning = function() {}; if (true) { var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "./node_modules/prop-types/lib/ReactPropTypesSecret.js"); var loggedTypeFailures = {}; var has = __webpack_require__(/*! ./lib/has */ "./node_modules/prop-types/lib/has.js"); printWarning = function(text) { var message = 'Warning: ' + text; if (typeof console !== 'undefined') { console.error(message); } try { // --- Welcome to debugging React --- // This error was thrown as a convenience so that you can use this stack // to find the callsite that caused this warning to fire. throw new Error(message); } catch (x) { /**/ } }; } /** * Assert that the values match with the type specs. * Error messages are memorized and will only be shown once. * * @param {object} typeSpecs Map of name to a ReactPropType * @param {object} values Runtime values that need to be type-checked * @param {string} location e.g. "prop", "context", "child context" * @param {string} componentName Name of the component for error messages. * @param {?Function} getStack Returns the component stack. * @private */ function checkPropTypes(typeSpecs, values, location, componentName, getStack) { if (true) { for (var typeSpecName in typeSpecs) { if (has(typeSpecs, typeSpecName)) { var error; // Prop type validation may throw. In case they do, we don't want to // fail the render phase where it didn't fail before. So we log it. // After these have been cleaned up, we'll let them throw. try { // This is intentionally an invariant that gets caught. It's the same // behavior as without this statement except with a better message. if (typeof typeSpecs[typeSpecName] !== 'function') { var err = Error( (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.' ); err.name = 'Invariant Violation'; throw err; } error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); } catch (ex) { error = ex; } if (error && !(error instanceof Error)) { printWarning( (componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).' ); } if (error instanceof Error && !(error.message in loggedTypeFailures)) { // Only monitor this failure once because there tends to be a lot of the // same error. loggedTypeFailures[error.message] = true; var stack = getStack ? getStack() : ''; printWarning( 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') ); } } } } } /** * Resets warning cache when testing. * * @private */ checkPropTypes.resetWarningCache = function() { if (true) { loggedTypeFailures = {}; } } module.exports = checkPropTypes; /***/ }), /***/ "./node_modules/prop-types/factoryWithTypeCheckers.js": /*!************************************************************!*\ !*** ./node_modules/prop-types/factoryWithTypeCheckers.js ***! \************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var ReactIs = __webpack_require__(/*! react-is */ "./node_modules/react-is/index.js"); var assign = __webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js"); var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "./node_modules/prop-types/lib/ReactPropTypesSecret.js"); var has = __webpack_require__(/*! ./lib/has */ "./node_modules/prop-types/lib/has.js"); var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "./node_modules/prop-types/checkPropTypes.js"); var printWarning = function() {}; if (true) { printWarning = function(text) { var message = 'Warning: ' + text; if (typeof console !== 'undefined') { console.error(message); } try { // --- Welcome to debugging React --- // This error was thrown as a convenience so that you can use this stack // to find the callsite that caused this warning to fire. throw new Error(message); } catch (x) {} }; } function emptyFunctionThatReturnsNull() { return null; } module.exports = function(isValidElement, throwOnDirectAccess) { /* global Symbol */ var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. /** * Returns the iterator method function contained on the iterable object. * * Be sure to invoke the function with the iterable as context: * * var iteratorFn = getIteratorFn(myIterable); * if (iteratorFn) { * var iterator = iteratorFn.call(myIterable); * ... * } * * @param {?object} maybeIterable * @return {?function} */ function getIteratorFn(maybeIterable) { var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); if (typeof iteratorFn === 'function') { return iteratorFn; } } /** * Collection of methods that allow declaration and validation of props that are * supplied to React components. Example usage: * * var Props = require('ReactPropTypes'); * var MyArticle = React.createClass({ * propTypes: { * // An optional string prop named "description". * description: Props.string, * * // A required enum prop named "category". * category: Props.oneOf(['News','Photos']).isRequired, * * // A prop named "dialog" that requires an instance of Dialog. * dialog: Props.instanceOf(Dialog).isRequired * }, * render: function() { ... } * }); * * A more formal specification of how these methods are used: * * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) * decl := ReactPropTypes.{type}(.isRequired)? * * Each and every declaration produces a function with the same signature. This * allows the creation of custom validation functions. For example: * * var MyLink = React.createClass({ * propTypes: { * // An optional string or URI prop named "href". * href: function(props, propName, componentName) { * var propValue = props[propName]; * if (propValue != null && typeof propValue !== 'string' && * !(propValue instanceof URI)) { * return new Error( * 'Expected a string or an URI for ' + propName + ' in ' + * componentName * ); * } * } * }, * render: function() {...} * }); * * @internal */ var ANONYMOUS = '<>'; // Important! // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. var ReactPropTypes = { array: createPrimitiveTypeChecker('array'), bigint: createPrimitiveTypeChecker('bigint'), bool: createPrimitiveTypeChecker('boolean'), func: createPrimitiveTypeChecker('function'), number: createPrimitiveTypeChecker('number'), object: createPrimitiveTypeChecker('object'), string: createPrimitiveTypeChecker('string'), symbol: createPrimitiveTypeChecker('symbol'), any: createAnyTypeChecker(), arrayOf: createArrayOfTypeChecker, element: createElementTypeChecker(), elementType: createElementTypeTypeChecker(), instanceOf: createInstanceTypeChecker, node: createNodeChecker(), objectOf: createObjectOfTypeChecker, oneOf: createEnumTypeChecker, oneOfType: createUnionTypeChecker, shape: createShapeTypeChecker, exact: createStrictShapeTypeChecker, }; /** * inlined Object.is polyfill to avoid requiring consumers ship their own * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is */ /*eslint-disable no-self-compare*/ function is(x, y) { // SameValue algorithm if (x === y) { // Steps 1-5, 7-10 // Steps 6.b-6.e: +0 != -0 return x !== 0 || 1 / x === 1 / y; } else { // Step 6.a: NaN == NaN return x !== x && y !== y; } } /*eslint-enable no-self-compare*/ /** * We use an Error-like object for backward compatibility as people may call * PropTypes directly and inspect their output. However, we don't use real * Errors anymore. We don't inspect their stack anyway, and creating them * is prohibitively expensive if they are created too often, such as what * happens in oneOfType() for any type before the one that matched. */ function PropTypeError(message, data) { this.message = message; this.data = data && typeof data === 'object' ? data: {}; this.stack = ''; } // Make `instanceof Error` still work for returned errors. PropTypeError.prototype = Error.prototype; function createChainableTypeChecker(validate) { if (true) { var manualPropTypeCallCache = {}; var manualPropTypeWarningCount = 0; } function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { componentName = componentName || ANONYMOUS; propFullName = propFullName || propName; if (secret !== ReactPropTypesSecret) { if (throwOnDirectAccess) { // New behavior only for users of `prop-types` package var err = new Error( 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types' ); err.name = 'Invariant Violation'; throw err; } else if ( true && typeof console !== 'undefined') { // Old behavior for people using React.PropTypes var cacheKey = componentName + ':' + propName; if ( !manualPropTypeCallCache[cacheKey] && // Avoid spamming the console because they are often not actionable except for lib authors manualPropTypeWarningCount < 3 ) { printWarning( 'You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' ); manualPropTypeCallCache[cacheKey] = true; manualPropTypeWarningCount++; } } } if (props[propName] == null) { if (isRequired) { if (props[propName] === null) { return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); } return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); } return null; } else { return validate(props, propName, componentName, location, propFullName); } } var chainedCheckType = checkType.bind(null, false); chainedCheckType.isRequired = checkType.bind(null, true); return chainedCheckType; } function createPrimitiveTypeChecker(expectedType) { function validate(props, propName, componentName, location, propFullName, secret) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== expectedType) { // `propValue` being instance of, say, date/regexp, pass the 'object' // check, but we can offer a more precise error message here rather than // 'of type `object`'. var preciseType = getPreciseType(propValue); return new PropTypeError( 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), {expectedType: expectedType} ); } return null; } return createChainableTypeChecker(validate); } function createAnyTypeChecker() { return createChainableTypeChecker(emptyFunctionThatReturnsNull); } function createArrayOfTypeChecker(typeChecker) { function validate(props, propName, componentName, location, propFullName) { if (typeof typeChecker !== 'function') { return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); } var propValue = props[propName]; if (!Array.isArray(propValue)) { var propType = getPropType(propValue); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); } for (var i = 0; i < propValue.length; i++) { var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); if (error instanceof Error) { return error; } } return null; } return createChainableTypeChecker(validate); } function createElementTypeChecker() { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; if (!isValidElement(propValue)) { var propType = getPropType(propValue); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); } return null; } return createChainableTypeChecker(validate); } function createElementTypeTypeChecker() { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; if (!ReactIs.isValidElementType(propValue)) { var propType = getPropType(propValue); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); } return null; } return createChainableTypeChecker(validate); } function createInstanceTypeChecker(expectedClass) { function validate(props, propName, componentName, location, propFullName) { if (!(props[propName] instanceof expectedClass)) { var expectedClassName = expectedClass.name || ANONYMOUS; var actualClassName = getClassName(props[propName]); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); } return null; } return createChainableTypeChecker(validate); } function createEnumTypeChecker(expectedValues) { if (!Array.isArray(expectedValues)) { if (true) { if (arguments.length > 1) { printWarning( 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' ); } else { printWarning('Invalid argument supplied to oneOf, expected an array.'); } } return emptyFunctionThatReturnsNull; } function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; for (var i = 0; i < expectedValues.length; i++) { if (is(propValue, expectedValues[i])) { return null; } } var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { var type = getPreciseType(value); if (type === 'symbol') { return String(value); } return value; }); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); } return createChainableTypeChecker(validate); } function createObjectOfTypeChecker(typeChecker) { function validate(props, propName, componentName, location, propFullName) { if (typeof typeChecker !== 'function') { return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); } var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== 'object') { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); } for (var key in propValue) { if (has(propValue, key)) { var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); if (error instanceof Error) { return error; } } } return null; } return createChainableTypeChecker(validate); } function createUnionTypeChecker(arrayOfTypeCheckers) { if (!Array.isArray(arrayOfTypeCheckers)) { true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0; return emptyFunctionThatReturnsNull; } for (var i = 0; i < arrayOfTypeCheckers.length; i++) { var checker = arrayOfTypeCheckers[i]; if (typeof checker !== 'function') { printWarning( 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' ); return emptyFunctionThatReturnsNull; } } function validate(props, propName, componentName, location, propFullName) { var expectedTypes = []; for (var i = 0; i < arrayOfTypeCheckers.length; i++) { var checker = arrayOfTypeCheckers[i]; var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret); if (checkerResult == null) { return null; } if (checkerResult.data && has(checkerResult.data, 'expectedType')) { expectedTypes.push(checkerResult.data.expectedType); } } var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': ''; return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.')); } return createChainableTypeChecker(validate); } function createNodeChecker() { function validate(props, propName, componentName, location, propFullName) { if (!isNode(props[propName])) { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); } return null; } return createChainableTypeChecker(validate); } function invalidValidatorError(componentName, location, propFullName, key, type) { return new PropTypeError( (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.' ); } function createShapeTypeChecker(shapeTypes) { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== 'object') { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); } for (var key in shapeTypes) { var checker = shapeTypes[key]; if (typeof checker !== 'function') { return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); } var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); if (error) { return error; } } return null; } return createChainableTypeChecker(validate); } function createStrictShapeTypeChecker(shapeTypes) { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== 'object') { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); } // We need to check all keys in case some are required but missing from props. var allKeys = assign({}, props[propName], shapeTypes); for (var key in allKeys) { var checker = shapeTypes[key]; if (has(shapeTypes, key) && typeof checker !== 'function') { return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); } if (!checker) { return new PropTypeError( 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') ); } var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); if (error) { return error; } } return null; } return createChainableTypeChecker(validate); } function isNode(propValue) { switch (typeof propValue) { case 'number': case 'string': case 'undefined': return true; case 'boolean': return !propValue; case 'object': if (Array.isArray(propValue)) { return propValue.every(isNode); } if (propValue === null || isValidElement(propValue)) { return true; } var iteratorFn = getIteratorFn(propValue); if (iteratorFn) { var iterator = iteratorFn.call(propValue); var step; if (iteratorFn !== propValue.entries) { while (!(step = iterator.next()).done) { if (!isNode(step.value)) { return false; } } } else { // Iterator will provide entry [k,v] tuples rather than values. while (!(step = iterator.next()).done) { var entry = step.value; if (entry) { if (!isNode(entry[1])) { return false; } } } } } else { return false; } return true; default: return false; } } function isSymbol(propType, propValue) { // Native Symbol. if (propType === 'symbol') { return true; } // falsy value can't be a Symbol if (!propValue) { return false; } // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' if (propValue['@@toStringTag'] === 'Symbol') { return true; } // Fallback for non-spec compliant Symbols which are polyfilled. if (typeof Symbol === 'function' && propValue instanceof Symbol) { return true; } return false; } // Equivalent of `typeof` but with special handling for array and regexp. function getPropType(propValue) { var propType = typeof propValue; if (Array.isArray(propValue)) { return 'array'; } if (propValue instanceof RegExp) { // Old webkits (at least until Android 4.0) return 'function' rather than // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ // passes PropTypes.object. return 'object'; } if (isSymbol(propType, propValue)) { return 'symbol'; } return propType; } // This handles more types than `getPropType`. Only used for error messages. // See `createPrimitiveTypeChecker`. function getPreciseType(propValue) { if (typeof propValue === 'undefined' || propValue === null) { return '' + propValue; } var propType = getPropType(propValue); if (propType === 'object') { if (propValue instanceof Date) { return 'date'; } else if (propValue instanceof RegExp) { return 'regexp'; } } return propType; } // Returns a string that is postfixed to a warning about an invalid type. // For example, "undefined" or "of type array" function getPostfixForTypeWarning(value) { var type = getPreciseType(value); switch (type) { case 'array': case 'object': return 'an ' + type; case 'boolean': case 'date': case 'regexp': return 'a ' + type; default: return type; } } // Returns class name of the object, if any. function getClassName(propValue) { if (!propValue.constructor || !propValue.constructor.name) { return ANONYMOUS; } return propValue.constructor.name; } ReactPropTypes.checkPropTypes = checkPropTypes; ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; ReactPropTypes.PropTypes = ReactPropTypes; return ReactPropTypes; }; /***/ }), /***/ "./node_modules/prop-types/index.js": /*!******************************************!*\ !*** ./node_modules/prop-types/index.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ if (true) { var ReactIs = __webpack_require__(/*! react-is */ "./node_modules/react-is/index.js"); // By explicitly using `prop-types` you are opting into new development behavior. // http://fb.me/prop-types-in-prod var throwOnDirectAccess = true; module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "./node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess); } else {} /***/ }), /***/ "./node_modules/prop-types/lib/ReactPropTypesSecret.js": /*!*************************************************************!*\ !*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***! \*************************************************************/ /***/ ((module) => { "use strict"; /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; module.exports = ReactPropTypesSecret; /***/ }), /***/ "./node_modules/prop-types/lib/has.js": /*!********************************************!*\ !*** ./node_modules/prop-types/lib/has.js ***! \********************************************/ /***/ ((module) => { module.exports = Function.call.bind(Object.prototype.hasOwnProperty); /***/ }), /***/ "./node_modules/react-is/cjs/react-is.development.js": /*!***********************************************************!*\ !*** ./node_modules/react-is/cjs/react-is.development.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; /** @license React v16.13.1 * react-is.development.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ if (true) { (function() { 'use strict'; // The Symbol used to tag the ReactElement-like types. If there is no native Symbol // nor polyfill, then a plain number is used for performance. var hasSymbol = typeof Symbol === 'function' && Symbol.for; var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary // (unstable) APIs that have been removed. Can we remove the symbols? var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; function isValidElementType(type) { return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); } function typeOf(object) { if (typeof object === 'object' && object !== null) { var $$typeof = object.$$typeof; switch ($$typeof) { case REACT_ELEMENT_TYPE: var type = object.type; switch (type) { case REACT_ASYNC_MODE_TYPE: case REACT_CONCURRENT_MODE_TYPE: case REACT_FRAGMENT_TYPE: case REACT_PROFILER_TYPE: case REACT_STRICT_MODE_TYPE: case REACT_SUSPENSE_TYPE: return type; default: var $$typeofType = type && type.$$typeof; switch ($$typeofType) { case REACT_CONTEXT_TYPE: case REACT_FORWARD_REF_TYPE: case REACT_LAZY_TYPE: case REACT_MEMO_TYPE: case REACT_PROVIDER_TYPE: return $$typeofType; default: return $$typeof; } } case REACT_PORTAL_TYPE: return $$typeof; } } return undefined; } // AsyncMode is deprecated along with isAsyncMode var AsyncMode = REACT_ASYNC_MODE_TYPE; var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; var ContextConsumer = REACT_CONTEXT_TYPE; var ContextProvider = REACT_PROVIDER_TYPE; var Element = REACT_ELEMENT_TYPE; var ForwardRef = REACT_FORWARD_REF_TYPE; var Fragment = REACT_FRAGMENT_TYPE; var Lazy = REACT_LAZY_TYPE; var Memo = REACT_MEMO_TYPE; var Portal = REACT_PORTAL_TYPE; var Profiler = REACT_PROFILER_TYPE; var StrictMode = REACT_STRICT_MODE_TYPE; var Suspense = REACT_SUSPENSE_TYPE; var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated function isAsyncMode(object) { { if (!hasWarnedAboutDeprecatedIsAsyncMode) { hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); } } return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; } function isConcurrentMode(object) { return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; } function isContextConsumer(object) { return typeOf(object) === REACT_CONTEXT_TYPE; } function isContextProvider(object) { return typeOf(object) === REACT_PROVIDER_TYPE; } function isElement(object) { return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; } function isForwardRef(object) { return typeOf(object) === REACT_FORWARD_REF_TYPE; } function isFragment(object) { return typeOf(object) === REACT_FRAGMENT_TYPE; } function isLazy(object) { return typeOf(object) === REACT_LAZY_TYPE; } function isMemo(object) { return typeOf(object) === REACT_MEMO_TYPE; } function isPortal(object) { return typeOf(object) === REACT_PORTAL_TYPE; } function isProfiler(object) { return typeOf(object) === REACT_PROFILER_TYPE; } function isStrictMode(object) { return typeOf(object) === REACT_STRICT_MODE_TYPE; } function isSuspense(object) { return typeOf(object) === REACT_SUSPENSE_TYPE; } exports.AsyncMode = AsyncMode; exports.ConcurrentMode = ConcurrentMode; exports.ContextConsumer = ContextConsumer; exports.ContextProvider = ContextProvider; exports.Element = Element; exports.ForwardRef = ForwardRef; exports.Fragment = Fragment; exports.Lazy = Lazy; exports.Memo = Memo; exports.Portal = Portal; exports.Profiler = Profiler; exports.StrictMode = StrictMode; exports.Suspense = Suspense; exports.isAsyncMode = isAsyncMode; exports.isConcurrentMode = isConcurrentMode; exports.isContextConsumer = isContextConsumer; exports.isContextProvider = isContextProvider; exports.isElement = isElement; exports.isForwardRef = isForwardRef; exports.isFragment = isFragment; exports.isLazy = isLazy; exports.isMemo = isMemo; exports.isPortal = isPortal; exports.isProfiler = isProfiler; exports.isStrictMode = isStrictMode; exports.isSuspense = isSuspense; exports.isValidElementType = isValidElementType; exports.typeOf = typeOf; })(); } /***/ }), /***/ "./node_modules/react-is/index.js": /*!****************************************!*\ !*** ./node_modules/react-is/index.js ***! \****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) {} else { module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "./node_modules/react-is/cjs/react-is.development.js"); } /***/ }), /***/ "./node_modules/react/cjs/react.development.js": /*!*****************************************************!*\ !*** ./node_modules/react/cjs/react.development.js ***! \*****************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; /* module decorator */ module = __webpack_require__.nmd(module); /** * @license React * react.development.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ if (true) { (function() { 'use strict'; /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */ if ( typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === 'function' ) { __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); } var ReactVersion = '18.2.0'; // ATTENTION // When adding new symbols to this file, // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols' // The Symbol used to tag the ReactElement-like types. var REACT_ELEMENT_TYPE = Symbol.for('react.element'); var REACT_PORTAL_TYPE = Symbol.for('react.portal'); var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment'); var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode'); var REACT_PROFILER_TYPE = Symbol.for('react.profiler'); var REACT_PROVIDER_TYPE = Symbol.for('react.provider'); var REACT_CONTEXT_TYPE = Symbol.for('react.context'); var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref'); var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense'); var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list'); var REACT_MEMO_TYPE = Symbol.for('react.memo'); var REACT_LAZY_TYPE = Symbol.for('react.lazy'); var REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen'); var MAYBE_ITERATOR_SYMBOL = Symbol.iterator; var FAUX_ITERATOR_SYMBOL = '@@iterator'; function getIteratorFn(maybeIterable) { if (maybeIterable === null || typeof maybeIterable !== 'object') { return null; } var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; if (typeof maybeIterator === 'function') { return maybeIterator; } return null; } /** * Keeps track of the current dispatcher. */ var ReactCurrentDispatcher = { /** * @internal * @type {ReactComponent} */ current: null }; /** * Keeps track of the current batch's configuration such as how long an update * should suspend for if it needs to. */ var ReactCurrentBatchConfig = { transition: null }; var ReactCurrentActQueue = { current: null, // Used to reproduce behavior of `batchedUpdates` in legacy mode. isBatchingLegacy: false, didScheduleLegacyUpdate: false }; /** * Keeps track of the current owner. * * The current owner is the component who should own any components that are * currently being constructed. */ var ReactCurrentOwner = { /** * @internal * @type {ReactComponent} */ current: null }; var ReactDebugCurrentFrame = {}; var currentExtraStackFrame = null; function setExtraStackFrame(stack) { { currentExtraStackFrame = stack; } } { ReactDebugCurrentFrame.setExtraStackFrame = function (stack) { { currentExtraStackFrame = stack; } }; // Stack implementation injected by the current renderer. ReactDebugCurrentFrame.getCurrentStack = null; ReactDebugCurrentFrame.getStackAddendum = function () { var stack = ''; // Add an extra top frame while an element is being validated if (currentExtraStackFrame) { stack += currentExtraStackFrame; } // Delegate to the injected renderer-specific implementation var impl = ReactDebugCurrentFrame.getCurrentStack; if (impl) { stack += impl() || ''; } return stack; }; } // ----------------------------------------------------------------------------- var enableScopeAPI = false; // Experimental Create Event Handle API. var enableCacheElement = false; var enableTransitionTracing = false; // No known bugs, but needs performance testing var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber // stuff. Intended to enable React core members to more easily debug scheduling // issues in DEV builds. var enableDebugTracing = false; // Track which Fiber(s) schedule render work. var ReactSharedInternals = { ReactCurrentDispatcher: ReactCurrentDispatcher, ReactCurrentBatchConfig: ReactCurrentBatchConfig, ReactCurrentOwner: ReactCurrentOwner }; { ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame; ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue; } // by calls to these methods by a Babel plugin. // // In PROD (or in packages without access to React internals), // they are left as they are instead. function warn(format) { { { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } printWarning('warn', format, args); } } } function error(format) { { { for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { args[_key2 - 1] = arguments[_key2]; } printWarning('error', format, args); } } } function printWarning(level, format, args) { // When changing this logic, you might want to also // update consoleWithStackDev.www.js as well. { var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; var stack = ReactDebugCurrentFrame.getStackAddendum(); if (stack !== '') { format += '%s'; args = args.concat([stack]); } // eslint-disable-next-line react-internal/safe-string-coercion var argsWithFormat = args.map(function (item) { return String(item); }); // Careful: RN currently depends on this prefix argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it // breaks IE9: https://github.com/facebook/react/issues/13610 // eslint-disable-next-line react-internal/no-production-logging Function.prototype.apply.call(console[level], console, argsWithFormat); } } var didWarnStateUpdateForUnmountedComponent = {}; function warnNoop(publicInstance, callerName) { { var _constructor = publicInstance.constructor; var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass'; var warningKey = componentName + "." + callerName; if (didWarnStateUpdateForUnmountedComponent[warningKey]) { return; } error("Can't call %s on a component that is not yet mounted. " + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName); didWarnStateUpdateForUnmountedComponent[warningKey] = true; } } /** * This is the abstract API for an update queue. */ var ReactNoopUpdateQueue = { /** * Checks whether or not this composite component is mounted. * @param {ReactClass} publicInstance The instance we want to test. * @return {boolean} True if mounted, false otherwise. * @protected * @final */ isMounted: function (publicInstance) { return false; }, /** * Forces an update. This should only be invoked when it is known with * certainty that we are **not** in a DOM transaction. * * You may want to call this when you know that some deeper aspect of the * component's state has changed but `setState` was not called. * * This will not invoke `shouldComponentUpdate`, but it will invoke * `componentWillUpdate` and `componentDidUpdate`. * * @param {ReactClass} publicInstance The instance that should rerender. * @param {?function} callback Called after component is updated. * @param {?string} callerName name of the calling function in the public API. * @internal */ enqueueForceUpdate: function (publicInstance, callback, callerName) { warnNoop(publicInstance, 'forceUpdate'); }, /** * Replaces all of the state. Always use this or `setState` to mutate state. * You should treat `this.state` as immutable. * * There is no guarantee that `this.state` will be immediately updated, so * accessing `this.state` after calling this method may return the old value. * * @param {ReactClass} publicInstance The instance that should rerender. * @param {object} completeState Next state. * @param {?function} callback Called after component is updated. * @param {?string} callerName name of the calling function in the public API. * @internal */ enqueueReplaceState: function (publicInstance, completeState, callback, callerName) { warnNoop(publicInstance, 'replaceState'); }, /** * Sets a subset of the state. This only exists because _pendingState is * internal. This provides a merging strategy that is not available to deep * properties which is confusing. TODO: Expose pendingState or don't use it * during the merge. * * @param {ReactClass} publicInstance The instance that should rerender. * @param {object} partialState Next partial state to be merged with state. * @param {?function} callback Called after component is updated. * @param {?string} Name of the calling function in the public API. * @internal */ enqueueSetState: function (publicInstance, partialState, callback, callerName) { warnNoop(publicInstance, 'setState'); } }; var assign = Object.assign; var emptyObject = {}; { Object.freeze(emptyObject); } /** * Base class helpers for the updating state of a component. */ function Component(props, context, updater) { this.props = props; this.context = context; // If a component has string refs, we will assign a different object later. this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the // renderer. this.updater = updater || ReactNoopUpdateQueue; } Component.prototype.isReactComponent = {}; /** * Sets a subset of the state. Always use this to mutate * state. You should treat `this.state` as immutable. * * There is no guarantee that `this.state` will be immediately updated, so * accessing `this.state` after calling this method may return the old value. * * There is no guarantee that calls to `setState` will run synchronously, * as they may eventually be batched together. You can provide an optional * callback that will be executed when the call to setState is actually * completed. * * When a function is provided to setState, it will be called at some point in * the future (not synchronously). It will be called with the up to date * component arguments (state, props, context). These values can be different * from this.* because your function may be called after receiveProps but before * shouldComponentUpdate, and this new state, props, and context will not yet be * assigned to this. * * @param {object|function} partialState Next partial state or function to * produce next partial state to be merged with current state. * @param {?function} callback Called after state is updated. * @final * @protected */ Component.prototype.setState = function (partialState, callback) { if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) { throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.'); } this.updater.enqueueSetState(this, partialState, callback, 'setState'); }; /** * Forces an update. This should only be invoked when it is known with * certainty that we are **not** in a DOM transaction. * * You may want to call this when you know that some deeper aspect of the * component's state has changed but `setState` was not called. * * This will not invoke `shouldComponentUpdate`, but it will invoke * `componentWillUpdate` and `componentDidUpdate`. * * @param {?function} callback Called after update is complete. * @final * @protected */ Component.prototype.forceUpdate = function (callback) { this.updater.enqueueForceUpdate(this, callback, 'forceUpdate'); }; /** * Deprecated APIs. These APIs used to exist on classic React classes but since * we would like to deprecate them, we're not going to move them over to this * modern base class. Instead, we define a getter that warns if it's accessed. */ { var deprecatedAPIs = { isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] }; var defineDeprecationWarning = function (methodName, info) { Object.defineProperty(Component.prototype, methodName, { get: function () { warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]); return undefined; } }); }; for (var fnName in deprecatedAPIs) { if (deprecatedAPIs.hasOwnProperty(fnName)) { defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); } } } function ComponentDummy() {} ComponentDummy.prototype = Component.prototype; /** * Convenience component with default shallow equality check for sCU. */ function PureComponent(props, context, updater) { this.props = props; this.context = context; // If a component has string refs, we will assign a different object later. this.refs = emptyObject; this.updater = updater || ReactNoopUpdateQueue; } var pureComponentPrototype = PureComponent.prototype = new ComponentDummy(); pureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods. assign(pureComponentPrototype, Component.prototype); pureComponentPrototype.isPureReactComponent = true; // an immutable object with a single mutable value function createRef() { var refObject = { current: null }; { Object.seal(refObject); } return refObject; } var isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare function isArray(a) { return isArrayImpl(a); } /* * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol * and Temporal.* types. See https://github.com/facebook/react/pull/22064. * * The functions in this module will throw an easier-to-understand, * easier-to-debug exception with a clear errors message message explaining the * problem. (Instead of a confusing exception thrown inside the implementation * of the `value` object). */ // $FlowFixMe only called in DEV, so void return is not possible. function typeName(value) { { // toStringTag is needed for namespaced types like Temporal.Instant var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag; var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object'; return type; } } // $FlowFixMe only called in DEV, so void return is not possible. function willCoercionThrow(value) { { try { testStringCoercion(value); return false; } catch (e) { return true; } } } function testStringCoercion(value) { // If you ended up here by following an exception call stack, here's what's // happened: you supplied an object or symbol value to React (as a prop, key, // DOM attribute, CSS property, string ref, etc.) and when React tried to // coerce it to a string using `'' + value`, an exception was thrown. // // The most common types that will cause this exception are `Symbol` instances // and Temporal objects like `Temporal.Instant`. But any object that has a // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this // exception. (Library authors do this to prevent users from using built-in // numeric operators like `+` or comparison operators like `>=` because custom // methods are needed to perform accurate arithmetic or comparison.) // // To fix the problem, coerce this object or symbol value to a string before // passing it to React. The most reliable way is usually `String(value)`. // // To find which value is throwing, check the browser or debugger console. // Before this exception was thrown, there should be `console.error` output // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the // problem and how that type was used: key, atrribute, input value prop, etc. // In most cases, this console output also shows the component and its // ancestor components where the exception happened. // // eslint-disable-next-line react-internal/safe-string-coercion return '' + value; } function checkKeyStringCoercion(value) { { if (willCoercionThrow(value)) { error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value)); return testStringCoercion(value); // throw (to help callers find troubleshooting comments) } } } function getWrappedName(outerType, innerType, wrapperName) { var displayName = outerType.displayName; if (displayName) { return displayName; } var functionName = innerType.displayName || innerType.name || ''; return functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName; } // Keep in sync with react-reconciler/getComponentNameFromFiber function getContextName(type) { return type.displayName || 'Context'; } // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead. function getComponentNameFromType(type) { if (type == null) { // Host root, text node or just invalid type. return null; } { if (typeof type.tag === 'number') { error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.'); } } if (typeof type === 'function') { return type.displayName || type.name || null; } if (typeof type === 'string') { return type; } switch (type) { case REACT_FRAGMENT_TYPE: return 'Fragment'; case REACT_PORTAL_TYPE: return 'Portal'; case REACT_PROFILER_TYPE: return 'Profiler'; case REACT_STRICT_MODE_TYPE: return 'StrictMode'; case REACT_SUSPENSE_TYPE: return 'Suspense'; case REACT_SUSPENSE_LIST_TYPE: return 'SuspenseList'; } if (typeof type === 'object') { switch (type.$$typeof) { case REACT_CONTEXT_TYPE: var context = type; return getContextName(context) + '.Consumer'; case REACT_PROVIDER_TYPE: var provider = type; return getContextName(provider._context) + '.Provider'; case REACT_FORWARD_REF_TYPE: return getWrappedName(type, type.render, 'ForwardRef'); case REACT_MEMO_TYPE: var outerName = type.displayName || null; if (outerName !== null) { return outerName; } return getComponentNameFromType(type.type) || 'Memo'; case REACT_LAZY_TYPE: { var lazyComponent = type; var payload = lazyComponent._payload; var init = lazyComponent._init; try { return getComponentNameFromType(init(payload)); } catch (x) { return null; } } // eslint-disable-next-line no-fallthrough } } return null; } var hasOwnProperty = Object.prototype.hasOwnProperty; var RESERVED_PROPS = { key: true, ref: true, __self: true, __source: true }; var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs; { didWarnAboutStringRefs = {}; } function hasValidRef(config) { { if (hasOwnProperty.call(config, 'ref')) { var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; if (getter && getter.isReactWarning) { return false; } } } return config.ref !== undefined; } function hasValidKey(config) { { if (hasOwnProperty.call(config, 'key')) { var getter = Object.getOwnPropertyDescriptor(config, 'key').get; if (getter && getter.isReactWarning) { return false; } } } return config.key !== undefined; } function defineKeyPropWarningGetter(props, displayName) { var warnAboutAccessingKey = function () { { if (!specialPropKeyWarningShown) { specialPropKeyWarningShown = true; error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName); } } }; warnAboutAccessingKey.isReactWarning = true; Object.defineProperty(props, 'key', { get: warnAboutAccessingKey, configurable: true }); } function defineRefPropWarningGetter(props, displayName) { var warnAboutAccessingRef = function () { { if (!specialPropRefWarningShown) { specialPropRefWarningShown = true; error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName); } } }; warnAboutAccessingRef.isReactWarning = true; Object.defineProperty(props, 'ref', { get: warnAboutAccessingRef, configurable: true }); } function warnIfStringRefCannotBeAutoConverted(config) { { if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) { var componentName = getComponentNameFromType(ReactCurrentOwner.current.type); if (!didWarnAboutStringRefs[componentName]) { error('Component "%s" contains the string ref "%s". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref); didWarnAboutStringRefs[componentName] = true; } } } } /** * Factory method to create a new React element. This no longer adheres to * the class pattern, so do not use new to call it. Also, instanceof check * will not work. Instead test $$typeof field against Symbol.for('react.element') to check * if something is a React Element. * * @param {*} type * @param {*} props * @param {*} key * @param {string|object} ref * @param {*} owner * @param {*} self A *temporary* helper to detect places where `this` is * different from the `owner` when React.createElement is called, so that we * can warn. We want to get rid of owner and replace string `ref`s with arrow * functions, and as long as `this` and owner are the same, there will be no * change in behavior. * @param {*} source An annotation object (added by a transpiler or otherwise) * indicating filename, line number, and/or other information. * @internal */ var ReactElement = function (type, key, ref, self, source, owner, props) { var element = { // This tag allows us to uniquely identify this as a React Element $$typeof: REACT_ELEMENT_TYPE, // Built-in properties that belong on the element type: type, key: key, ref: ref, props: props, // Record the component responsible for creating this element. _owner: owner }; { // The validation flag is currently mutative. We put it on // an external backing store so that we can freeze the whole object. // This can be replaced with a WeakMap once they are implemented in // commonly used development environments. element._store = {}; // To make comparing ReactElements easier for testing purposes, we make // the validation flag non-enumerable (where possible, which should // include every environment we run tests in), so the test framework // ignores it. Object.defineProperty(element._store, 'validated', { configurable: false, enumerable: false, writable: true, value: false }); // self and source are DEV only properties. Object.defineProperty(element, '_self', { configurable: false, enumerable: false, writable: false, value: self }); // Two elements created in two different places should be considered // equal for testing purposes and therefore we hide it from enumeration. Object.defineProperty(element, '_source', { configurable: false, enumerable: false, writable: false, value: source }); if (Object.freeze) { Object.freeze(element.props); Object.freeze(element); } } return element; }; /** * Create and return a new ReactElement of the given type. * See https://reactjs.org/docs/react-api.html#createelement */ function createElement(type, config, children) { var propName; // Reserved names are extracted var props = {}; var key = null; var ref = null; var self = null; var source = null; if (config != null) { if (hasValidRef(config)) { ref = config.ref; { warnIfStringRefCannotBeAutoConverted(config); } } if (hasValidKey(config)) { { checkKeyStringCoercion(config.key); } key = '' + config.key; } self = config.__self === undefined ? null : config.__self; source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object for (propName in config) { if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { props[propName] = config[propName]; } } } // Children can be more than one argument, and those are transferred onto // the newly allocated props object. var childrenLength = arguments.length - 2; if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 2]; } { if (Object.freeze) { Object.freeze(childArray); } } props.children = childArray; } // Resolve default props if (type && type.defaultProps) { var defaultProps = type.defaultProps; for (propName in defaultProps) { if (props[propName] === undefined) { props[propName] = defaultProps[propName]; } } } { if (key || ref) { var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; if (key) { defineKeyPropWarningGetter(props, displayName); } if (ref) { defineRefPropWarningGetter(props, displayName); } } } return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); } function cloneAndReplaceKey(oldElement, newKey) { var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); return newElement; } /** * Clone and return a new ReactElement using element as the starting point. * See https://reactjs.org/docs/react-api.html#cloneelement */ function cloneElement(element, config, children) { if (element === null || element === undefined) { throw new Error("React.cloneElement(...): The argument must be a React element, but you passed " + element + "."); } var propName; // Original props are copied var props = assign({}, element.props); // Reserved names are extracted var key = element.key; var ref = element.ref; // Self is preserved since the owner is preserved. var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a // transpiler, and the original source is probably a better indicator of the // true owner. var source = element._source; // Owner will be preserved, unless ref is overridden var owner = element._owner; if (config != null) { if (hasValidRef(config)) { // Silently steal the ref from the parent. ref = config.ref; owner = ReactCurrentOwner.current; } if (hasValidKey(config)) { { checkKeyStringCoercion(config.key); } key = '' + config.key; } // Remaining properties override existing props var defaultProps; if (element.type && element.type.defaultProps) { defaultProps = element.type.defaultProps; } for (propName in config) { if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { if (config[propName] === undefined && defaultProps !== undefined) { // Resolve default props props[propName] = defaultProps[propName]; } else { props[propName] = config[propName]; } } } } // Children can be more than one argument, and those are transferred onto // the newly allocated props object. var childrenLength = arguments.length - 2; if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 2]; } props.children = childArray; } return ReactElement(element.type, key, ref, self, source, owner, props); } /** * Verifies the object is a ReactElement. * See https://reactjs.org/docs/react-api.html#isvalidelement * @param {?object} object * @return {boolean} True if `object` is a ReactElement. * @final */ function isValidElement(object) { return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; } var SEPARATOR = '.'; var SUBSEPARATOR = ':'; /** * Escape and wrap key so it is safe to use as a reactid * * @param {string} key to be escaped. * @return {string} the escaped key. */ function escape(key) { var escapeRegex = /[=:]/g; var escaperLookup = { '=': '=0', ':': '=2' }; var escapedString = key.replace(escapeRegex, function (match) { return escaperLookup[match]; }); return '$' + escapedString; } /** * TODO: Test that a single child and an array with one item have the same key * pattern. */ var didWarnAboutMaps = false; var userProvidedKeyEscapeRegex = /\/+/g; function escapeUserProvidedKey(text) { return text.replace(userProvidedKeyEscapeRegex, '$&/'); } /** * Generate a key string that identifies a element within a set. * * @param {*} element A element that could contain a manual key. * @param {number} index Index that is used if a manual key is not provided. * @return {string} */ function getElementKey(element, index) { // Do some typechecking here since we call this blindly. We want to ensure // that we don't block potential future ES APIs. if (typeof element === 'object' && element !== null && element.key != null) { // Explicit key { checkKeyStringCoercion(element.key); } return escape('' + element.key); } // Implicit key determined by the index in the set return index.toString(36); } function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) { var type = typeof children; if (type === 'undefined' || type === 'boolean') { // All of the above are perceived as null. children = null; } var invokeCallback = false; if (children === null) { invokeCallback = true; } else { switch (type) { case 'string': case 'number': invokeCallback = true; break; case 'object': switch (children.$$typeof) { case REACT_ELEMENT_TYPE: case REACT_PORTAL_TYPE: invokeCallback = true; } } } if (invokeCallback) { var _child = children; var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array // so that it's consistent if the number of children grows: var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar; if (isArray(mappedChild)) { var escapedChildKey = ''; if (childKey != null) { escapedChildKey = escapeUserProvidedKey(childKey) + '/'; } mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) { return c; }); } else if (mappedChild != null) { if (isValidElement(mappedChild)) { { // The `if` statement here prevents auto-disabling of the safe // coercion ESLint rule, so we must manually disable it below. // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) { checkKeyStringCoercion(mappedChild.key); } } mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as // traverseAllChildren used to do for objects as children escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number // eslint-disable-next-line react-internal/safe-string-coercion escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey); } array.push(mappedChild); } return 1; } var child; var nextName; var subtreeCount = 0; // Count of children found in the current subtree. var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; if (isArray(children)) { for (var i = 0; i < children.length; i++) { child = children[i]; nextName = nextNamePrefix + getElementKey(child, i); subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback); } } else { var iteratorFn = getIteratorFn(children); if (typeof iteratorFn === 'function') { var iterableChildren = children; { // Warn about using Maps as children if (iteratorFn === iterableChildren.entries) { if (!didWarnAboutMaps) { warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.'); } didWarnAboutMaps = true; } } var iterator = iteratorFn.call(iterableChildren); var step; var ii = 0; while (!(step = iterator.next()).done) { child = step.value; nextName = nextNamePrefix + getElementKey(child, ii++); subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback); } } else if (type === 'object') { // eslint-disable-next-line react-internal/safe-string-coercion var childrenString = String(children); throw new Error("Objects are not valid as a React child (found: " + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + "). " + 'If you meant to render a collection of children, use an array ' + 'instead.'); } } return subtreeCount; } /** * Maps children that are typically specified as `props.children`. * * See https://reactjs.org/docs/react-api.html#reactchildrenmap * * The provided mapFunction(child, index) will be called for each * leaf child. * * @param {?*} children Children tree container. * @param {function(*, int)} func The map function. * @param {*} context Context for mapFunction. * @return {object} Object containing the ordered map of results. */ function mapChildren(children, func, context) { if (children == null) { return children; } var result = []; var count = 0; mapIntoArray(children, result, '', '', function (child) { return func.call(context, child, count++); }); return result; } /** * Count the number of children that are typically specified as * `props.children`. * * See https://reactjs.org/docs/react-api.html#reactchildrencount * * @param {?*} children Children tree container. * @return {number} The number of children. */ function countChildren(children) { var n = 0; mapChildren(children, function () { n++; // Don't return anything }); return n; } /** * Iterates through children that are typically specified as `props.children`. * * See https://reactjs.org/docs/react-api.html#reactchildrenforeach * * The provided forEachFunc(child, index) will be called for each * leaf child. * * @param {?*} children Children tree container. * @param {function(*, int)} forEachFunc * @param {*} forEachContext Context for forEachContext. */ function forEachChildren(children, forEachFunc, forEachContext) { mapChildren(children, function () { forEachFunc.apply(this, arguments); // Don't return anything. }, forEachContext); } /** * Flatten a children object (typically specified as `props.children`) and * return an array with appropriately re-keyed children. * * See https://reactjs.org/docs/react-api.html#reactchildrentoarray */ function toArray(children) { return mapChildren(children, function (child) { return child; }) || []; } /** * Returns the first child in a collection of children and verifies that there * is only one child in the collection. * * See https://reactjs.org/docs/react-api.html#reactchildrenonly * * The current implementation of this function assumes that a single child gets * passed without a wrapper, but the purpose of this helper function is to * abstract away the particular structure of children. * * @param {?object} children Child collection structure. * @return {ReactElement} The first and only `ReactElement` contained in the * structure. */ function onlyChild(children) { if (!isValidElement(children)) { throw new Error('React.Children.only expected to receive a single React element child.'); } return children; } function createContext(defaultValue) { // TODO: Second argument used to be an optional `calculateChangedBits` // function. Warn to reserve for future use? var context = { $$typeof: REACT_CONTEXT_TYPE, // As a workaround to support multiple concurrent renderers, we categorize // some renderers as primary and others as secondary. We only expect // there to be two concurrent renderers at most: React Native (primary) and // Fabric (secondary); React DOM (primary) and React ART (secondary). // Secondary renderers store their context values on separate fields. _currentValue: defaultValue, _currentValue2: defaultValue, // Used to track how many concurrent renderers this context currently // supports within in a single renderer. Such as parallel server rendering. _threadCount: 0, // These are circular Provider: null, Consumer: null, // Add these to use same hidden class in VM as ServerContext _defaultValue: null, _globalName: null }; context.Provider = { $$typeof: REACT_PROVIDER_TYPE, _context: context }; var hasWarnedAboutUsingNestedContextConsumers = false; var hasWarnedAboutUsingConsumerProvider = false; var hasWarnedAboutDisplayNameOnConsumer = false; { // A separate object, but proxies back to the original context object for // backwards compatibility. It has a different $$typeof, so we can properly // warn for the incorrect usage of Context as a Consumer. var Consumer = { $$typeof: REACT_CONTEXT_TYPE, _context: context }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here Object.defineProperties(Consumer, { Provider: { get: function () { if (!hasWarnedAboutUsingConsumerProvider) { hasWarnedAboutUsingConsumerProvider = true; error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?'); } return context.Provider; }, set: function (_Provider) { context.Provider = _Provider; } }, _currentValue: { get: function () { return context._currentValue; }, set: function (_currentValue) { context._currentValue = _currentValue; } }, _currentValue2: { get: function () { return context._currentValue2; }, set: function (_currentValue2) { context._currentValue2 = _currentValue2; } }, _threadCount: { get: function () { return context._threadCount; }, set: function (_threadCount) { context._threadCount = _threadCount; } }, Consumer: { get: function () { if (!hasWarnedAboutUsingNestedContextConsumers) { hasWarnedAboutUsingNestedContextConsumers = true; error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?'); } return context.Consumer; } }, displayName: { get: function () { return context.displayName; }, set: function (displayName) { if (!hasWarnedAboutDisplayNameOnConsumer) { warn('Setting `displayName` on Context.Consumer has no effect. ' + "You should set it directly on the context with Context.displayName = '%s'.", displayName); hasWarnedAboutDisplayNameOnConsumer = true; } } } }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty context.Consumer = Consumer; } { context._currentRenderer = null; context._currentRenderer2 = null; } return context; } var Uninitialized = -1; var Pending = 0; var Resolved = 1; var Rejected = 2; function lazyInitializer(payload) { if (payload._status === Uninitialized) { var ctor = payload._result; var thenable = ctor(); // Transition to the next state. // This might throw either because it's missing or throws. If so, we treat it // as still uninitialized and try again next time. Which is the same as what // happens if the ctor or any wrappers processing the ctor throws. This might // end up fixing it if the resolution was a concurrency bug. thenable.then(function (moduleObject) { if (payload._status === Pending || payload._status === Uninitialized) { // Transition to the next state. var resolved = payload; resolved._status = Resolved; resolved._result = moduleObject; } }, function (error) { if (payload._status === Pending || payload._status === Uninitialized) { // Transition to the next state. var rejected = payload; rejected._status = Rejected; rejected._result = error; } }); if (payload._status === Uninitialized) { // In case, we're still uninitialized, then we're waiting for the thenable // to resolve. Set it as pending in the meantime. var pending = payload; pending._status = Pending; pending._result = thenable; } } if (payload._status === Resolved) { var moduleObject = payload._result; { if (moduleObject === undefined) { error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\n\nYour code should look like: \n ' + // Break up imports to avoid accidentally parsing them as dependencies. 'const MyComponent = lazy(() => imp' + "ort('./MyComponent'))\n\n" + 'Did you accidentally put curly braces around the import?', moduleObject); } } { if (!('default' in moduleObject)) { error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\n\nYour code should look like: \n ' + // Break up imports to avoid accidentally parsing them as dependencies. 'const MyComponent = lazy(() => imp' + "ort('./MyComponent'))", moduleObject); } } return moduleObject.default; } else { throw payload._result; } } function lazy(ctor) { var payload = { // We use these fields to store the result. _status: Uninitialized, _result: ctor }; var lazyType = { $$typeof: REACT_LAZY_TYPE, _payload: payload, _init: lazyInitializer }; { // In production, this would just set it on the object. var defaultProps; var propTypes; // $FlowFixMe Object.defineProperties(lazyType, { defaultProps: { configurable: true, get: function () { return defaultProps; }, set: function (newDefaultProps) { error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.'); defaultProps = newDefaultProps; // Match production behavior more closely: // $FlowFixMe Object.defineProperty(lazyType, 'defaultProps', { enumerable: true }); } }, propTypes: { configurable: true, get: function () { return propTypes; }, set: function (newPropTypes) { error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.'); propTypes = newPropTypes; // Match production behavior more closely: // $FlowFixMe Object.defineProperty(lazyType, 'propTypes', { enumerable: true }); } } }); } return lazyType; } function forwardRef(render) { { if (render != null && render.$$typeof === REACT_MEMO_TYPE) { error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).'); } else if (typeof render !== 'function') { error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render); } else { if (render.length !== 0 && render.length !== 2) { error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.'); } } if (render != null) { if (render.defaultProps != null || render.propTypes != null) { error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?'); } } } var elementType = { $$typeof: REACT_FORWARD_REF_TYPE, render: render }; { var ownName; Object.defineProperty(elementType, 'displayName', { enumerable: false, configurable: true, get: function () { return ownName; }, set: function (name) { ownName = name; // The inner component shouldn't inherit this display name in most cases, // because the component may be used elsewhere. // But it's nice for anonymous functions to inherit the name, // so that our component-stack generation logic will display their frames. // An anonymous function generally suggests a pattern like: // React.forwardRef((props, ref) => {...}); // This kind of inner function is not used elsewhere so the side effect is okay. if (!render.name && !render.displayName) { render.displayName = name; } } }); } return elementType; } var REACT_MODULE_REFERENCE; { REACT_MODULE_REFERENCE = Symbol.for('react.module.reference'); } function isValidElementType(type) { if (typeof type === 'string' || typeof type === 'function') { return true; } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill). if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) { return true; } if (typeof type === 'object' && type !== null) { if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object // types supported by any Flight configuration anywhere since // we don't know which Flight build this will end up being used // with. type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) { return true; } } return false; } function memo(type, compare) { { if (!isValidElementType(type)) { error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type); } } var elementType = { $$typeof: REACT_MEMO_TYPE, type: type, compare: compare === undefined ? null : compare }; { var ownName; Object.defineProperty(elementType, 'displayName', { enumerable: false, configurable: true, get: function () { return ownName; }, set: function (name) { ownName = name; // The inner component shouldn't inherit this display name in most cases, // because the component may be used elsewhere. // But it's nice for anonymous functions to inherit the name, // so that our component-stack generation logic will display their frames. // An anonymous function generally suggests a pattern like: // React.memo((props) => {...}); // This kind of inner function is not used elsewhere so the side effect is okay. if (!type.name && !type.displayName) { type.displayName = name; } } }); } return elementType; } function resolveDispatcher() { var dispatcher = ReactCurrentDispatcher.current; { if (dispatcher === null) { error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\n' + '2. You might be breaking the Rules of Hooks\n' + '3. You might have more than one copy of React in the same app\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.'); } } // Will result in a null access error if accessed outside render phase. We // intentionally don't throw our own error because this is in a hot path. // Also helps ensure this is inlined. return dispatcher; } function useContext(Context) { var dispatcher = resolveDispatcher(); { // TODO: add a more generic warning for invalid values. if (Context._context !== undefined) { var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs // and nobody should be using this in existing code. if (realContext.Consumer === Context) { error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?'); } else if (realContext.Provider === Context) { error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?'); } } } return dispatcher.useContext(Context); } function useState(initialState) { var dispatcher = resolveDispatcher(); return dispatcher.useState(initialState); } function useReducer(reducer, initialArg, init) { var dispatcher = resolveDispatcher(); return dispatcher.useReducer(reducer, initialArg, init); } function useRef(initialValue) { var dispatcher = resolveDispatcher(); return dispatcher.useRef(initialValue); } function useEffect(create, deps) { var dispatcher = resolveDispatcher(); return dispatcher.useEffect(create, deps); } function useInsertionEffect(create, deps) { var dispatcher = resolveDispatcher(); return dispatcher.useInsertionEffect(create, deps); } function useLayoutEffect(create, deps) { var dispatcher = resolveDispatcher(); return dispatcher.useLayoutEffect(create, deps); } function useCallback(callback, deps) { var dispatcher = resolveDispatcher(); return dispatcher.useCallback(callback, deps); } function useMemo(create, deps) { var dispatcher = resolveDispatcher(); return dispatcher.useMemo(create, deps); } function useImperativeHandle(ref, create, deps) { var dispatcher = resolveDispatcher(); return dispatcher.useImperativeHandle(ref, create, deps); } function useDebugValue(value, formatterFn) { { var dispatcher = resolveDispatcher(); return dispatcher.useDebugValue(value, formatterFn); } } function useTransition() { var dispatcher = resolveDispatcher(); return dispatcher.useTransition(); } function useDeferredValue(value) { var dispatcher = resolveDispatcher(); return dispatcher.useDeferredValue(value); } function useId() { var dispatcher = resolveDispatcher(); return dispatcher.useId(); } function useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) { var dispatcher = resolveDispatcher(); return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot); } // Helpers to patch console.logs to avoid logging during side-effect free // replaying on render function. This currently only patches the object // lazily which won't cover if the log function was extracted eagerly. // We could also eagerly patch the method. var disabledDepth = 0; var prevLog; var prevInfo; var prevWarn; var prevError; var prevGroup; var prevGroupCollapsed; var prevGroupEnd; function disabledLog() {} disabledLog.__reactDisabledLog = true; function disableLogs() { { if (disabledDepth === 0) { /* eslint-disable react-internal/no-production-logging */ prevLog = console.log; prevInfo = console.info; prevWarn = console.warn; prevError = console.error; prevGroup = console.group; prevGroupCollapsed = console.groupCollapsed; prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099 var props = { configurable: true, enumerable: true, value: disabledLog, writable: true }; // $FlowFixMe Flow thinks console is immutable. Object.defineProperties(console, { info: props, log: props, warn: props, error: props, group: props, groupCollapsed: props, groupEnd: props }); /* eslint-enable react-internal/no-production-logging */ } disabledDepth++; } } function reenableLogs() { { disabledDepth--; if (disabledDepth === 0) { /* eslint-disable react-internal/no-production-logging */ var props = { configurable: true, enumerable: true, writable: true }; // $FlowFixMe Flow thinks console is immutable. Object.defineProperties(console, { log: assign({}, props, { value: prevLog }), info: assign({}, props, { value: prevInfo }), warn: assign({}, props, { value: prevWarn }), error: assign({}, props, { value: prevError }), group: assign({}, props, { value: prevGroup }), groupCollapsed: assign({}, props, { value: prevGroupCollapsed }), groupEnd: assign({}, props, { value: prevGroupEnd }) }); /* eslint-enable react-internal/no-production-logging */ } if (disabledDepth < 0) { error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.'); } } } var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher; var prefix; function describeBuiltInComponentFrame(name, source, ownerFn) { { if (prefix === undefined) { // Extract the VM specific prefix used by each line. try { throw Error(); } catch (x) { var match = x.stack.trim().match(/\n( *(at )?)/); prefix = match && match[1] || ''; } } // We use the prefix to ensure our stacks line up with native stack frames. return '\n' + prefix + name; } } var reentry = false; var componentFrameCache; { var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map; componentFrameCache = new PossiblyWeakMap(); } function describeNativeComponentFrame(fn, construct) { // If something asked for a stack inside a fake render, it should get ignored. if ( !fn || reentry) { return ''; } { var frame = componentFrameCache.get(fn); if (frame !== undefined) { return frame; } } var control; reentry = true; var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined. Error.prepareStackTrace = undefined; var previousDispatcher; { previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function // for warnings. ReactCurrentDispatcher$1.current = null; disableLogs(); } try { // This should throw. if (construct) { // Something should be setting the props in the constructor. var Fake = function () { throw Error(); }; // $FlowFixMe Object.defineProperty(Fake.prototype, 'props', { set: function () { // We use a throwing setter instead of frozen or non-writable props // because that won't throw in a non-strict mode function. throw Error(); } }); if (typeof Reflect === 'object' && Reflect.construct) { // We construct a different control for this case to include any extra // frames added by the construct call. try { Reflect.construct(Fake, []); } catch (x) { control = x; } Reflect.construct(fn, [], Fake); } else { try { Fake.call(); } catch (x) { control = x; } fn.call(Fake.prototype); } } else { try { throw Error(); } catch (x) { control = x; } fn(); } } catch (sample) { // This is inlined manually because closure doesn't do it for us. if (sample && control && typeof sample.stack === 'string') { // This extracts the first frame from the sample that isn't also in the control. // Skipping one frame that we assume is the frame that calls the two. var sampleLines = sample.stack.split('\n'); var controlLines = control.stack.split('\n'); var s = sampleLines.length - 1; var c = controlLines.length - 1; while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) { // We expect at least one stack frame to be shared. // Typically this will be the root most one. However, stack frames may be // cut off due to maximum stack limits. In this case, one maybe cut off // earlier than the other. We assume that the sample is longer or the same // and there for cut off earlier. So we should find the root most frame in // the sample somewhere in the control. c--; } for (; s >= 1 && c >= 0; s--, c--) { // Next we find the first one that isn't the same which should be the // frame that called our sample function and the control. if (sampleLines[s] !== controlLines[c]) { // In V8, the first line is describing the message but other VMs don't. // If we're about to return the first line, and the control is also on the same // line, that's a pretty good indicator that our sample threw at same line as // the control. I.e. before we entered the sample frame. So we ignore this result. // This can happen if you passed a class to function component, or non-function. if (s !== 1 || c !== 1) { do { s--; c--; // We may still have similar intermediate frames from the construct call. // The next one that isn't the same should be our match though. if (c < 0 || sampleLines[s] !== controlLines[c]) { // V8 adds a "new" prefix for native classes. Let's remove it to make it prettier. var _frame = '\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled "" // but we have a user-provided "displayName" // splice it in to make the stack more readable. if (fn.displayName && _frame.includes('')) { _frame = _frame.replace('', fn.displayName); } { if (typeof fn === 'function') { componentFrameCache.set(fn, _frame); } } // Return the line we found. return _frame; } } while (s >= 1 && c >= 0); } break; } } } } finally { reentry = false; { ReactCurrentDispatcher$1.current = previousDispatcher; reenableLogs(); } Error.prepareStackTrace = previousPrepareStackTrace; } // Fallback to just using the name if we couldn't make it throw. var name = fn ? fn.displayName || fn.name : ''; var syntheticFrame = name ? describeBuiltInComponentFrame(name) : ''; { if (typeof fn === 'function') { componentFrameCache.set(fn, syntheticFrame); } } return syntheticFrame; } function describeFunctionComponentFrame(fn, source, ownerFn) { { return describeNativeComponentFrame(fn, false); } } function shouldConstruct(Component) { var prototype = Component.prototype; return !!(prototype && prototype.isReactComponent); } function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) { if (type == null) { return ''; } if (typeof type === 'function') { { return describeNativeComponentFrame(type, shouldConstruct(type)); } } if (typeof type === 'string') { return describeBuiltInComponentFrame(type); } switch (type) { case REACT_SUSPENSE_TYPE: return describeBuiltInComponentFrame('Suspense'); case REACT_SUSPENSE_LIST_TYPE: return describeBuiltInComponentFrame('SuspenseList'); } if (typeof type === 'object') { switch (type.$$typeof) { case REACT_FORWARD_REF_TYPE: return describeFunctionComponentFrame(type.render); case REACT_MEMO_TYPE: // Memo may contain any component type so we recursively resolve it. return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn); case REACT_LAZY_TYPE: { var lazyComponent = type; var payload = lazyComponent._payload; var init = lazyComponent._init; try { // Lazy may contain any component type so we recursively resolve it. return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn); } catch (x) {} } } } return ''; } var loggedTypeFailures = {}; var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame; function setCurrentlyValidatingElement(element) { { if (element) { var owner = element._owner; var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); ReactDebugCurrentFrame$1.setExtraStackFrame(stack); } else { ReactDebugCurrentFrame$1.setExtraStackFrame(null); } } } function checkPropTypes(typeSpecs, values, location, componentName, element) { { // $FlowFixMe This is okay but Flow doesn't know it. var has = Function.call.bind(hasOwnProperty); for (var typeSpecName in typeSpecs) { if (has(typeSpecs, typeSpecName)) { var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to // fail the render phase where it didn't fail before. So we log it. // After these have been cleaned up, we'll let them throw. try { // This is intentionally an invariant that gets caught. It's the same // behavior as without this statement except with a better message. if (typeof typeSpecs[typeSpecName] !== 'function') { // eslint-disable-next-line react-internal/prod-error-codes var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'); err.name = 'Invariant Violation'; throw err; } error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'); } catch (ex) { error$1 = ex; } if (error$1 && !(error$1 instanceof Error)) { setCurrentlyValidatingElement(element); error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1); setCurrentlyValidatingElement(null); } if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) { // Only monitor this failure once because there tends to be a lot of the // same error. loggedTypeFailures[error$1.message] = true; setCurrentlyValidatingElement(element); error('Failed %s type: %s', location, error$1.message); setCurrentlyValidatingElement(null); } } } } } function setCurrentlyValidatingElement$1(element) { { if (element) { var owner = element._owner; var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); setExtraStackFrame(stack); } else { setExtraStackFrame(null); } } } var propTypesMisspellWarningShown; { propTypesMisspellWarningShown = false; } function getDeclarationErrorAddendum() { if (ReactCurrentOwner.current) { var name = getComponentNameFromType(ReactCurrentOwner.current.type); if (name) { return '\n\nCheck the render method of `' + name + '`.'; } } return ''; } function getSourceInfoErrorAddendum(source) { if (source !== undefined) { var fileName = source.fileName.replace(/^.*[\\\/]/, ''); var lineNumber = source.lineNumber; return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.'; } return ''; } function getSourceInfoErrorAddendumForProps(elementProps) { if (elementProps !== null && elementProps !== undefined) { return getSourceInfoErrorAddendum(elementProps.__source); } return ''; } /** * Warn if there's no key explicitly set on dynamic arrays of children or * object keys are not valid. This allows us to keep track of children between * updates. */ var ownerHasKeyUseWarning = {}; function getCurrentComponentErrorInfo(parentType) { var info = getDeclarationErrorAddendum(); if (!info) { var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; if (parentName) { info = "\n\nCheck the top-level render call using <" + parentName + ">."; } } return info; } /** * Warn if the element doesn't have an explicit key assigned to it. * This element is in an array. The array could grow and shrink or be * reordered. All children that haven't already been validated are required to * have a "key" property assigned to it. Error statuses are cached so a warning * will only be shown once. * * @internal * @param {ReactElement} element Element that requires a key. * @param {*} parentType element's parent's type. */ function validateExplicitKey(element, parentType) { if (!element._store || element._store.validated || element.key != null) { return; } element._store.validated = true; var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { return; } ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a // property, it may be the creator of the child that's responsible for // assigning it a key. var childOwner = ''; if (element && element._owner && element._owner !== ReactCurrentOwner.current) { // Give the component that originally created this child. childOwner = " It was passed a child from " + getComponentNameFromType(element._owner.type) + "."; } { setCurrentlyValidatingElement$1(element); error('Each child in a list should have a unique "key" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner); setCurrentlyValidatingElement$1(null); } } /** * Ensure that every element either is passed in a static location, in an * array with an explicit keys property defined, or in an object literal * with valid key property. * * @internal * @param {ReactNode} node Statically passed child of any type. * @param {*} parentType node's parent's type. */ function validateChildKeys(node, parentType) { if (typeof node !== 'object') { return; } if (isArray(node)) { for (var i = 0; i < node.length; i++) { var child = node[i]; if (isValidElement(child)) { validateExplicitKey(child, parentType); } } } else if (isValidElement(node)) { // This element was passed in a valid location. if (node._store) { node._store.validated = true; } } else if (node) { var iteratorFn = getIteratorFn(node); if (typeof iteratorFn === 'function') { // Entry iterators used to provide implicit keys, // but now we print a separate warning for them later. if (iteratorFn !== node.entries) { var iterator = iteratorFn.call(node); var step; while (!(step = iterator.next()).done) { if (isValidElement(step.value)) { validateExplicitKey(step.value, parentType); } } } } } } /** * Given an element, validate that its props follow the propTypes definition, * provided by the type. * * @param {ReactElement} element */ function validatePropTypes(element) { { var type = element.type; if (type === null || type === undefined || typeof type === 'string') { return; } var propTypes; if (typeof type === 'function') { propTypes = type.propTypes; } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here. // Inner props are checked in the reconciler. type.$$typeof === REACT_MEMO_TYPE)) { propTypes = type.propTypes; } else { return; } if (propTypes) { // Intentionally inside to avoid triggering lazy initializers: var name = getComponentNameFromType(type); checkPropTypes(propTypes, element.props, 'prop', name, element); } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) { propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers: var _name = getComponentNameFromType(type); error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown'); } if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) { error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.'); } } } /** * Given a fragment, validate that it can only be provided with fragment props * @param {ReactElement} fragment */ function validateFragmentProps(fragment) { { var keys = Object.keys(fragment.props); for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (key !== 'children' && key !== 'key') { setCurrentlyValidatingElement$1(fragment); error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key); setCurrentlyValidatingElement$1(null); break; } } if (fragment.ref !== null) { setCurrentlyValidatingElement$1(fragment); error('Invalid attribute `ref` supplied to `React.Fragment`.'); setCurrentlyValidatingElement$1(null); } } } function createElementWithValidation(type, props, children) { var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to // succeed and there will likely be errors in render. if (!validType) { var info = ''; if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports."; } var sourceInfo = getSourceInfoErrorAddendumForProps(props); if (sourceInfo) { info += sourceInfo; } else { info += getDeclarationErrorAddendum(); } var typeString; if (type === null) { typeString = 'null'; } else if (isArray(type)) { typeString = 'array'; } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) { typeString = "<" + (getComponentNameFromType(type.type) || 'Unknown') + " />"; info = ' Did you accidentally export a JSX literal instead of a component?'; } else { typeString = typeof type; } { error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info); } } var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used. // TODO: Drop this when these are no longer allowed as the type argument. if (element == null) { return element; } // Skip key warning if the type isn't valid since our key validation logic // doesn't expect a non-string/function type and can throw confusing errors. // We don't want exception behavior to differ between dev and prod. // (Rendering will throw with a helpful message and as soon as the type is // fixed, the key warnings will appear.) if (validType) { for (var i = 2; i < arguments.length; i++) { validateChildKeys(arguments[i], type); } } if (type === REACT_FRAGMENT_TYPE) { validateFragmentProps(element); } else { validatePropTypes(element); } return element; } var didWarnAboutDeprecatedCreateFactory = false; function createFactoryWithValidation(type) { var validatedFactory = createElementWithValidation.bind(null, type); validatedFactory.type = type; { if (!didWarnAboutDeprecatedCreateFactory) { didWarnAboutDeprecatedCreateFactory = true; warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.'); } // Legacy hook: remove it Object.defineProperty(validatedFactory, 'type', { enumerable: false, get: function () { warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.'); Object.defineProperty(this, 'type', { value: type }); return type; } }); } return validatedFactory; } function cloneElementWithValidation(element, props, children) { var newElement = cloneElement.apply(this, arguments); for (var i = 2; i < arguments.length; i++) { validateChildKeys(arguments[i], newElement.type); } validatePropTypes(newElement); return newElement; } function startTransition(scope, options) { var prevTransition = ReactCurrentBatchConfig.transition; ReactCurrentBatchConfig.transition = {}; var currentTransition = ReactCurrentBatchConfig.transition; { ReactCurrentBatchConfig.transition._updatedFibers = new Set(); } try { scope(); } finally { ReactCurrentBatchConfig.transition = prevTransition; { if (prevTransition === null && currentTransition._updatedFibers) { var updatedFibersCount = currentTransition._updatedFibers.size; if (updatedFibersCount > 10) { warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.'); } currentTransition._updatedFibers.clear(); } } } } var didWarnAboutMessageChannel = false; var enqueueTaskImpl = null; function enqueueTask(task) { if (enqueueTaskImpl === null) { try { // read require off the module object to get around the bundlers. // we don't want them to detect a require and bundle a Node polyfill. var requireString = ('require' + Math.random()).slice(0, 7); var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's // version of setImmediate, bypassing fake timers if any. enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate; } catch (_err) { // we're in a browser // we can't use regular timers because they may still be faked // so we try MessageChannel+postMessage instead enqueueTaskImpl = function (callback) { { if (didWarnAboutMessageChannel === false) { didWarnAboutMessageChannel = true; if (typeof MessageChannel === 'undefined') { error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.'); } } } var channel = new MessageChannel(); channel.port1.onmessage = callback; channel.port2.postMessage(undefined); }; } } return enqueueTaskImpl(task); } var actScopeDepth = 0; var didWarnNoAwaitAct = false; function act(callback) { { // `act` calls can be nested, so we track the depth. This represents the // number of `act` scopes on the stack. var prevActScopeDepth = actScopeDepth; actScopeDepth++; if (ReactCurrentActQueue.current === null) { // This is the outermost `act` scope. Initialize the queue. The reconciler // will detect the queue and use it instead of Scheduler. ReactCurrentActQueue.current = []; } var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy; var result; try { // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only // set to `true` while the given callback is executed, not for updates // triggered during an async event, because this is how the legacy // implementation of `act` behaved. ReactCurrentActQueue.isBatchingLegacy = true; result = callback(); // Replicate behavior of original `act` implementation in legacy mode, // which flushed updates immediately after the scope function exits, even // if it's an async function. if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) { var queue = ReactCurrentActQueue.current; if (queue !== null) { ReactCurrentActQueue.didScheduleLegacyUpdate = false; flushActQueue(queue); } } } catch (error) { popActScope(prevActScopeDepth); throw error; } finally { ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy; } if (result !== null && typeof result === 'object' && typeof result.then === 'function') { var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait // for it to resolve before exiting the current scope. var wasAwaited = false; var thenable = { then: function (resolve, reject) { wasAwaited = true; thenableResult.then(function (returnValue) { popActScope(prevActScopeDepth); if (actScopeDepth === 0) { // We've exited the outermost act scope. Recursively flush the // queue until there's no remaining work. recursivelyFlushAsyncActWork(returnValue, resolve, reject); } else { resolve(returnValue); } }, function (error) { // The callback threw an error. popActScope(prevActScopeDepth); reject(error); }); } }; { if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') { // eslint-disable-next-line no-undef Promise.resolve().then(function () {}).then(function () { if (!wasAwaited) { didWarnNoAwaitAct = true; error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);'); } }); } } return thenable; } else { var returnValue = result; // The callback is not an async function. Exit the current scope // immediately, without awaiting. popActScope(prevActScopeDepth); if (actScopeDepth === 0) { // Exiting the outermost act scope. Flush the queue. var _queue = ReactCurrentActQueue.current; if (_queue !== null) { flushActQueue(_queue); ReactCurrentActQueue.current = null; } // Return a thenable. If the user awaits it, we'll flush again in // case additional work was scheduled by a microtask. var _thenable = { then: function (resolve, reject) { // Confirm we haven't re-entered another `act` scope, in case // the user does something weird like await the thenable // multiple times. if (ReactCurrentActQueue.current === null) { // Recursively flush the queue until there's no remaining work. ReactCurrentActQueue.current = []; recursivelyFlushAsyncActWork(returnValue, resolve, reject); } else { resolve(returnValue); } } }; return _thenable; } else { // Since we're inside a nested `act` scope, the returned thenable // immediately resolves. The outer scope will flush the queue. var _thenable2 = { then: function (resolve, reject) { resolve(returnValue); } }; return _thenable2; } } } } function popActScope(prevActScopeDepth) { { if (prevActScopeDepth !== actScopeDepth - 1) { error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. '); } actScopeDepth = prevActScopeDepth; } } function recursivelyFlushAsyncActWork(returnValue, resolve, reject) { { var queue = ReactCurrentActQueue.current; if (queue !== null) { try { flushActQueue(queue); enqueueTask(function () { if (queue.length === 0) { // No additional work was scheduled. Finish. ReactCurrentActQueue.current = null; resolve(returnValue); } else { // Keep flushing work until there's none left. recursivelyFlushAsyncActWork(returnValue, resolve, reject); } }); } catch (error) { reject(error); } } else { resolve(returnValue); } } } var isFlushing = false; function flushActQueue(queue) { { if (!isFlushing) { // Prevent re-entrance. isFlushing = true; var i = 0; try { for (; i < queue.length; i++) { var callback = queue[i]; do { callback = callback(true); } while (callback !== null); } queue.length = 0; } catch (error) { // If something throws, leave the remaining callbacks on the queue. queue = queue.slice(i + 1); throw error; } finally { isFlushing = false; } } } } var createElement$1 = createElementWithValidation ; var cloneElement$1 = cloneElementWithValidation ; var createFactory = createFactoryWithValidation ; var Children = { map: mapChildren, forEach: forEachChildren, count: countChildren, toArray: toArray, only: onlyChild }; exports.Children = Children; exports.Component = Component; exports.Fragment = REACT_FRAGMENT_TYPE; exports.Profiler = REACT_PROFILER_TYPE; exports.PureComponent = PureComponent; exports.StrictMode = REACT_STRICT_MODE_TYPE; exports.Suspense = REACT_SUSPENSE_TYPE; exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals; exports.cloneElement = cloneElement$1; exports.createContext = createContext; exports.createElement = createElement$1; exports.createFactory = createFactory; exports.createRef = createRef; exports.forwardRef = forwardRef; exports.isValidElement = isValidElement; exports.lazy = lazy; exports.memo = memo; exports.startTransition = startTransition; exports.unstable_act = act; exports.useCallback = useCallback; exports.useContext = useContext; exports.useDebugValue = useDebugValue; exports.useDeferredValue = useDeferredValue; exports.useEffect = useEffect; exports.useId = useId; exports.useImperativeHandle = useImperativeHandle; exports.useInsertionEffect = useInsertionEffect; exports.useLayoutEffect = useLayoutEffect; exports.useMemo = useMemo; exports.useReducer = useReducer; exports.useRef = useRef; exports.useState = useState; exports.useSyncExternalStore = useSyncExternalStore; exports.useTransition = useTransition; exports.version = ReactVersion; /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */ if ( typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === 'function' ) { __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); } })(); } /***/ }), /***/ "./node_modules/react/index.js": /*!*************************************!*\ !*** ./node_modules/react/index.js ***! \*************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) {} else { module.exports = __webpack_require__(/*! ./cjs/react.development.js */ "./node_modules/react/cjs/react.development.js"); } /***/ }), /***/ "./node_modules/shallowequal/index.js": /*!********************************************!*\ !*** ./node_modules/shallowequal/index.js ***! \********************************************/ /***/ ((module) => { // module.exports = function shallowEqual(objA, objB, compare, compareContext) { var ret = compare ? compare.call(compareContext, objA, objB) : void 0; if (ret !== void 0) { return !!ret; } if (objA === objB) { return true; } if (typeof objA !== "object" || !objA || typeof objB !== "object" || !objB) { return false; } var keysA = Object.keys(objA); var keysB = Object.keys(objB); if (keysA.length !== keysB.length) { return false; } var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); // Test for A's keys different from B. for (var idx = 0; idx < keysA.length; idx++) { var key = keysA[idx]; if (!bHasOwnProperty(key)) { return false; } var valueA = objA[key]; var valueB = objB[key]; ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0; if (ret === false || (ret === void 0 && valueA !== valueB)) { return false; } } return true; }; /***/ }), /***/ "./src/sass/d3v4pp.scss": /*!******************************!*\ !*** ./src/sass/d3v4pp.scss ***! \******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_1_use_2_d3v4pp_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./d3v4pp.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./src/sass/d3v4pp.scss"); var options = {}; options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_1_use_2_d3v4pp_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_1_use_2_d3v4pp_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_1_use_2_d3v4pp_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_1_use_2_d3v4pp_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": /*!****************************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! \****************************************************************************/ /***/ ((module) => { "use strict"; var stylesInDOM = []; function getIndexByIdentifier(identifier) { var result = -1; for (var i = 0; i < stylesInDOM.length; i++) { if (stylesInDOM[i].identifier === identifier) { result = i; break; } } return result; } function modulesToDom(list, options) { var idCountMap = {}; var identifiers = []; for (var i = 0; i < list.length; i++) { var item = list[i]; var id = options.base ? item[0] + options.base : item[0]; var count = idCountMap[id] || 0; var identifier = "".concat(id, " ").concat(count); idCountMap[id] = count + 1; var indexByIdentifier = getIndexByIdentifier(identifier); var obj = { css: item[1], media: item[2], sourceMap: item[3], supports: item[4], layer: item[5] }; if (indexByIdentifier !== -1) { stylesInDOM[indexByIdentifier].references++; stylesInDOM[indexByIdentifier].updater(obj); } else { var updater = addElementStyle(obj, options); options.byIndex = i; stylesInDOM.splice(i, 0, { identifier: identifier, updater: updater, references: 1 }); } identifiers.push(identifier); } return identifiers; } function addElementStyle(obj, options) { var api = options.domAPI(options); api.update(obj); var updater = function updater(newObj) { if (newObj) { if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) { return; } api.update(obj = newObj); } else { api.remove(); } }; return updater; } module.exports = function (list, options) { options = options || {}; list = list || []; var lastIdentifiers = modulesToDom(list, options); return function update(newList) { newList = newList || []; for (var i = 0; i < lastIdentifiers.length; i++) { var identifier = lastIdentifiers[i]; var index = getIndexByIdentifier(identifier); stylesInDOM[index].references--; } var newLastIdentifiers = modulesToDom(newList, options); for (var _i = 0; _i < lastIdentifiers.length; _i++) { var _identifier = lastIdentifiers[_i]; var _index = getIndexByIdentifier(_identifier); if (stylesInDOM[_index].references === 0) { stylesInDOM[_index].updater(); stylesInDOM.splice(_index, 1); } } lastIdentifiers = newLastIdentifiers; }; }; /***/ }), /***/ "./node_modules/style-loader/dist/runtime/insertBySelector.js": /*!********************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***! \********************************************************************/ /***/ ((module) => { "use strict"; var memo = {}; /* istanbul ignore next */ function getTarget(target) { if (typeof memo[target] === "undefined") { var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { try { // This will throw an exception if access to iframe is blocked // due to cross-origin restrictions styleTarget = styleTarget.contentDocument.head; } catch (e) { // istanbul ignore next styleTarget = null; } } memo[target] = styleTarget; } return memo[target]; } /* istanbul ignore next */ function insertBySelector(insert, style) { var target = getTarget(insert); if (!target) { throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); } target.appendChild(style); } module.exports = insertBySelector; /***/ }), /***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js": /*!**********************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***! \**********************************************************************/ /***/ ((module) => { "use strict"; /* istanbul ignore next */ function insertStyleElement(options) { var element = document.createElement("style"); options.setAttributes(element, options.attributes); options.insert(element, options.options); return element; } module.exports = insertStyleElement; /***/ }), /***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js": /*!**********************************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***! \**********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* istanbul ignore next */ function setAttributesWithoutAttributes(styleElement) { var nonce = true ? __webpack_require__.nc : 0; if (nonce) { styleElement.setAttribute("nonce", nonce); } } module.exports = setAttributesWithoutAttributes; /***/ }), /***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js": /*!***************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***! \***************************************************************/ /***/ ((module) => { "use strict"; /* istanbul ignore next */ function apply(styleElement, options, obj) { var css = ""; if (obj.supports) { css += "@supports (".concat(obj.supports, ") {"); } if (obj.media) { css += "@media ".concat(obj.media, " {"); } var needLayer = typeof obj.layer !== "undefined"; if (needLayer) { css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {"); } css += obj.css; if (needLayer) { css += "}"; } if (obj.media) { css += "}"; } if (obj.supports) { css += "}"; } var sourceMap = obj.sourceMap; if (sourceMap && typeof btoa !== "undefined") { css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); } // For old IE /* istanbul ignore if */ options.styleTagTransform(css, styleElement, options.options); } function removeStyleElement(styleElement) { // istanbul ignore if if (styleElement.parentNode === null) { return false; } styleElement.parentNode.removeChild(styleElement); } /* istanbul ignore next */ function domAPI(options) { if (typeof document === "undefined") { return { update: function update() {}, remove: function remove() {} }; } var styleElement = options.insertStyleElement(options); return { update: function update(obj) { apply(styleElement, options, obj); }, remove: function remove() { removeStyleElement(styleElement); } }; } module.exports = domAPI; /***/ }), /***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js": /*!*********************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***! \*********************************************************************/ /***/ ((module) => { "use strict"; /* istanbul ignore next */ function styleTagTransform(css, styleElement) { if (styleElement.styleSheet) { styleElement.styleSheet.cssText = css; } else { while (styleElement.firstChild) { styleElement.removeChild(styleElement.firstChild); } styleElement.appendChild(document.createTextNode(css)); } } module.exports = styleTagTransform; /***/ }), /***/ "./node_modules/styled-components/dist/styled-components.browser.esm.js": /*!******************************************************************************!*\ !*** ./node_modules/styled-components/dist/styled-components.browser.esm.js ***! \******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ ServerStyleSheet: () => (/* binding */ ut), /* harmony export */ StyleSheetConsumer: () => (/* binding */ je), /* harmony export */ StyleSheetContext: () => (/* binding */ ke), /* harmony export */ StyleSheetManager: () => (/* binding */ Me), /* harmony export */ ThemeConsumer: () => (/* binding */ Ue), /* harmony export */ ThemeContext: () => (/* binding */ He), /* harmony export */ ThemeProvider: () => (/* binding */ Xe), /* harmony export */ __PRIVATE__: () => (/* binding */ pt), /* harmony export */ createGlobalStyle: () => (/* binding */ at), /* harmony export */ css: () => (/* binding */ nt), /* harmony export */ "default": () => (/* binding */ st), /* harmony export */ isStyledComponent: () => (/* binding */ ee), /* harmony export */ keyframes: () => (/* binding */ ct), /* harmony export */ styled: () => (/* binding */ st), /* harmony export */ useTheme: () => (/* binding */ Je), /* harmony export */ version: () => (/* binding */ m), /* harmony export */ withTheme: () => (/* binding */ lt) /* harmony export */ }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs"); /* harmony import */ var _emotion_is_prop_valid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @emotion/is-prop-valid */ "./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var shallowequal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! shallowequal */ "./node_modules/shallowequal/index.js"); /* harmony import */ var shallowequal__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(shallowequal__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! stylis */ "./node_modules/styled-components/node_modules/stylis/src/Enum.js"); /* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! stylis */ "./node_modules/styled-components/node_modules/stylis/src/Middleware.js"); /* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! stylis */ "./node_modules/styled-components/node_modules/stylis/src/Serializer.js"); /* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! stylis */ "./node_modules/styled-components/node_modules/stylis/src/Parser.js"); /* harmony import */ var _emotion_unitless__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @emotion/unitless */ "./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js"); var f="undefined"!=typeof process&&void 0!==process.env&&(process.env.REACT_APP_SC_ATTR||process.env.SC_ATTR)||"data-styled",m="6.0.7",y="undefined"!=typeof window&&"HTMLElement"in window,v=Boolean("boolean"==typeof SC_DISABLE_SPEEDY?SC_DISABLE_SPEEDY:"undefined"!=typeof process&&void 0!==process.env&&void 0!==process.env.REACT_APP_SC_DISABLE_SPEEDY&&""!==process.env.REACT_APP_SC_DISABLE_SPEEDY?"false"!==process.env.REACT_APP_SC_DISABLE_SPEEDY&&process.env.REACT_APP_SC_DISABLE_SPEEDY:"undefined"!=typeof process&&void 0!==process.env&&void 0!==process.env.SC_DISABLE_SPEEDY&&""!==process.env.SC_DISABLE_SPEEDY?"false"!==process.env.SC_DISABLE_SPEEDY&&process.env.SC_DISABLE_SPEEDY:"production"!=="development"),g={},S=/invalid hook call/i,w=new Set,b=function(t,n){if(true){var o=n?' with the id of "'.concat(n,'"'):"",s="The component ".concat(t).concat(o," has been created dynamically.\n")+"You may see this warning because you've called styled inside another component.\nTo resolve this only create new StyledComponents outside of any render method and function component.",i=console.error;try{var a=!0;console.error=function(t){for(var n=[],o=1;o?@[\\\]^`{|}~-]+/g,I=/(^-|-$)/g;function A(e){return e.replace(C,"-").replace(I,"")}var O=/(a)(d)/gi,D=function(e){return String.fromCharCode(e+(e>25?39:97))};function R(e){var t,n="";for(t=Math.abs(e);t>52;t=t/52|0)n=D(t%52)+n;return(D(t%52)+n).replace(O,"$1-$2")}var T,k=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},j=function(e){return k(5381,e)};function x(e){return R(j(e)>>>0)}function V(e){return true&&"string"==typeof e&&e||e.displayName||e.name||"Component"}function M(e){return"string"==typeof e&&( false||e.charAt(0)===e.charAt(0).toLowerCase())}var F="function"==typeof Symbol&&Symbol.for,$=F?Symbol.for("react.memo"):60115,z=F?Symbol.for("react.forward_ref"):60112,B={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},L={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},G={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},Y=((T={})[z]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},T[$]=G,T);function W(e){return("type"in(t=e)&&t.type.$$typeof)===$?G:"$$typeof"in e?Y[e.$$typeof]:B;var t}var q=Object.defineProperty,H=Object.getOwnPropertyNames,U=Object.getOwnPropertySymbols,J=Object.getOwnPropertyDescriptor,X=Object.getPrototypeOf,Z=Object.prototype;function K(e,t,n){if("string"!=typeof t){if(Z){var o=X(t);o&&o!==Z&&K(e,o,n)}var r=H(t);U&&(r=r.concat(U(t)));for(var s=W(e),i=W(t),a=0;a ({})}\n```\n\n',8:'ThemeProvider: Please make your "theme" prop an object.\n\n',9:"Missing document ``\n\n",10:"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\n\n",11:"_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\n\n",12:"It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\`\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\n\n",13:"%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\n\n",14:'ThemeProvider: "theme" prop is required.\n\n',15:"A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to ``, please make sure each plugin is uniquely-named, e.g.\n\n```js\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\n```\n\n",16:"Reached the limit of how many styled components may be created at group %s.\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\nas for instance in your render method then you may be running into this limitation.\n\n",17:"CSSStyleSheet could not be found on HTMLStyleElement.\nHas styled-components' style tag been unmounted or altered by another script?\n",18:"ThemeProvider: Please make sure your useTheme hook is within a ``"}:0;function ae(){for(var e=[],t=0;t=this.groupSizes.length){for(var n=this.groupSizes,o=n.length,r=o;e>=r;)if((r<<=1)<0)throw ce(16,"".concat(e));this.groupSizes=new Uint32Array(r),this.groupSizes.set(n),this.length=r;for(var s=o;s=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],o=this.indexOfGroup(e),r=o+n,s=o;s1073741824))throw ce(16,"".concat(t));return ue.set(e,t),pe.set(t,e),t},fe=function(e,t){ue.set(e,t),pe.set(t,e)},me="style[".concat(f,"][").concat("data-styled-version",'="').concat("6.0.7",'"]'),ye=new RegExp("^".concat(f,'\\.g(\\d+)\\[id="([\\w\\d-]+)"\\].*?"([^"]*)')),ve=function(e,t,n){for(var o,r=n.split(","),s=0,i=r.length;s=0){var n=document.createTextNode(t);return this.element.insertBefore(n,this.nodes[e]||null),this.length++,!0}return!1},e.prototype.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},e.prototype.getRule=function(e){return e0&&(c+="".concat(e,","))}),o+="".concat(i).concat(a,'{content:"').concat(c,'"}').concat("/*!sc*/\n")},s=0;s0?".".concat(t):e},u=c.slice();u.push(function(e){e.type===stylis__WEBPACK_IMPORTED_MODULE_5__.RULESET&&e.value.includes("&")&&(e.props[0]=e.props[0].replace(Ie,n).replace(o,l))}),i.prefix&&u.push(stylis__WEBPACK_IMPORTED_MODULE_6__.prefixer),u.push(stylis__WEBPACK_IMPORTED_MODULE_7__.stringify);var p=function(e,r,s,a){void 0===r&&(r=""),void 0===s&&(s=""),void 0===a&&(a="&"),t=a,n=r,o=new RegExp("\\".concat(n,"\\b"),"g");var c=e.replace(Ae,""),l=stylis__WEBPACK_IMPORTED_MODULE_8__.compile(s||r?"".concat(s," ").concat(r," { ").concat(c," }"):c);i.namespace&&(l=Oe(l,i.namespace));var p=[];return stylis__WEBPACK_IMPORTED_MODULE_7__.serialize(l,stylis__WEBPACK_IMPORTED_MODULE_6__.middleware(u.concat(stylis__WEBPACK_IMPORTED_MODULE_6__.rulesheet(function(e){return p.push(e)})))),p};return p.hash=c.length?c.reduce(function(e,t){return t.name||ce(15),k(e,t.name)},5381).toString():"",p}var Re=new Ce,Te=De(),ke=react__WEBPACK_IMPORTED_MODULE_1___default().createContext({shouldForwardProp:void 0,styleSheet:Re,stylis:Te}),je=ke.Consumer,xe=react__WEBPACK_IMPORTED_MODULE_1___default().createContext(void 0);function Ve(){return (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ke)}function Me(e){var t=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(e.stylisPlugins),n=t[0],r=t[1],c=Ve().styleSheet,l=(0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function(){var t=c;return e.sheet?t=e.sheet:e.target&&(t=t.reconstructWithOptions({target:e.target},!1)),e.disableCSSOMInjection&&(t=t.reconstructWithOptions({useCSSOMInjection:!1})),t},[e.disableCSSOMInjection,e.sheet,e.target,c]),u=(0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function(){return De({options:{namespace:e.namespace,prefix:e.enableVendorPrefixes},plugins:n})},[e.enableVendorPrefixes,e.namespace,n]);return (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function(){shallowequal__WEBPACK_IMPORTED_MODULE_2___default()(n,e.stylisPlugins)||r(e.stylisPlugins)},[e.stylisPlugins]),react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ke.Provider,{value:{shouldForwardProp:e.shouldForwardProp,styleSheet:l,stylis:u}},react__WEBPACK_IMPORTED_MODULE_1___default().createElement(xe.Provider,{value:u},e.children))}var Fe=function(){function e(e,t){var n=this;this.inject=function(e,t){void 0===t&&(t=Te);var o=n.name+t.hash;e.hasNameForId(n.id,o)||e.insertRules(n.id,o,t(n.rules,o,"@keyframes"))},this.name=e,this.id="sc-keyframes-".concat(e),this.rules=t,se(this,function(){throw ce(12,String(n.name))})}return e.prototype.getName=function(e){return void 0===e&&(e=Te),this.name+e.hash},e}(),$e=function(e){return e>="A"&&e<="Z"};function ze(e){for(var t="",n=0;n>>0);if(!t.hasNameForId(this.componentId,s)){var i=n(r,".".concat(s),void 0,this.componentId);t.insertRules(this.componentId,s,i)}o=te(o,s),this.staticRulesId=s}else{for(var a=k(this.baseHash,n.hash),c="",l=0;l>>0);t.hasNameForId(this.componentId,d)||t.insertRules(this.componentId,d,n(c,".".concat(d),void 0,this.componentId)),o=te(o,d)}}return o},e}(),He=react__WEBPACK_IMPORTED_MODULE_1___default().createContext(void 0),Ue=He.Consumer;function Je(){var e=(0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(He);if(!e)throw ce(18);return e}function Xe(e){var n=react__WEBPACK_IMPORTED_MODULE_1___default().useContext(He),r=(0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function(){return function(e,n){if(!e)throw ce(14);if(Q(e)){var o=e(n);if( true&&(null===o||Array.isArray(o)||"object"!=typeof o))throw ce(7);return o}if(Array.isArray(e)||"object"!=typeof e)throw ce(8);return n?(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({},n),e):e}(e.theme,n)},[e.theme,n]);return e.children?react__WEBPACK_IMPORTED_MODULE_1___default().createElement(He.Provider,{value:r},e.children):null}var Ze={},Ke=new Set;function Qe(e,r,s){var i=ee(e),a=e,c=!M(e),p=r.attrs,d=void 0===p?E:p,h=r.componentId,f=void 0===h?function(e,t){var n="string"!=typeof e?"sc":A(e);Ze[n]=(Ze[n]||0)+1;var o="".concat(n,"-").concat(x("6.0.7"+n+Ze[n]));return t?"".concat(t,"-").concat(o):o}(r.displayName,r.parentComponentId):h,m=r.displayName,y=void 0===m?function(e){return M(e)?"styled.".concat(e):"Styled(".concat(V(e),")")}(e):m,v=r.displayName&&r.componentId?"".concat(A(r.displayName),"-").concat(r.componentId):r.componentId||f,g=i&&a.attrs?a.attrs.concat(d).filter(Boolean):d,S=r.shouldForwardProp;if(i&&a.shouldForwardProp){var w=a.shouldForwardProp;if(r.shouldForwardProp){var C=r.shouldForwardProp;S=function(e,t){return w(e,t)&&C(e,t)}}else S=w}var I=new qe(s,v,i?a.componentStyle:void 0);function O(e,r){return function(e,r,s){var i=e.attrs,a=e.componentStyle,c=e.defaultProps,p=e.foldedComponentIds,d=e.styledComponentId,h=e.target,f=react__WEBPACK_IMPORTED_MODULE_1___default().useContext(He),m=Ve(),y=e.shouldForwardProp||m.shouldForwardProp; true&&(0,react__WEBPACK_IMPORTED_MODULE_1__.useDebugValue)(d);var v=function(e,n,o){for(var r,s=(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({},n),{className:void 0,theme:o}),i=0;i` (connect an API like `@emotion/is-prop-valid`) or consider using transient props (`$` prefix for automatic filtering.)')))));var b=function(e,t){var n=Ve(),o=e.generateAndInjectStyles(t,n.styleSheet,n.stylis);return true&&(0,react__WEBPACK_IMPORTED_MODULE_1__.useDebugValue)(o),o}(a,v); true&&e.warnTooManyClasses&&e.warnTooManyClasses(b);var E=te(p,d);return b&&(E+=" "+b),v.className&&(E+=" "+v.className),S[M(g)&&!_.has(g)?"class":"className"]=E,S.ref=s,(0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(g,S)}(D,e,r)} true&&(O.displayName=y);var D=react__WEBPACK_IMPORTED_MODULE_1___default().forwardRef(O);return D.attrs=g,D.componentStyle=I,D.shouldForwardProp=S, true&&(D.displayName=y),D.foldedComponentIds=i?te(a.foldedComponentIds,a.styledComponentId):"",D.styledComponentId=v,D.target=i?a.target:e,Object.defineProperty(D,"defaultProps",{get:function(){return this._foldedDefaultProps},set:function(e){this._foldedDefaultProps=i?function(e){for(var t=[],n=1;n=200)){var s=t?' with the id of "'.concat(t,'"'):"";console.warn("Over ".concat(200," classes were generated for component ").concat(e).concat(s,".\n")+"Consider using the attrs method, together with a style object for frequently changed styles.\nExample:\n const Component = styled.div.attrs(props => ({\n style: {\n background: props.background,\n },\n }))`width: 100%;`\n\n "),o=!0,n={}}}}(y,v)),se(D,function(){return".".concat(D.styledComponentId)}),c&&K(D,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0}),D}function et(e,t){for(var n=[e[0]],o=0,r=t.length;o2&&Ce.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,o)},e}();function at(n){for(var r=[],s=1;s meta tag to the stylesheet, or simply embedding it manually in your index.html section for a simpler app."),t.styleSheet.server&&u(r,e,t.styleSheet,n,t.stylis),react__WEBPACK_IMPORTED_MODULE_1___default().useLayoutEffect(function(){if(!t.styleSheet.server)return u(r,e,t.styleSheet,n,t.stylis),function(){return c.removeStyles(r,t.styleSheet)}},[r,e,t.styleSheet,n,t.stylis]),null};function u(e,n,o,r,s){if(c.isStatic)c.renderStyles(e,g,o,s);else{var i=(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({},n),{theme:P(n,r,l.defaultProps)});c.renderStyles(e,i,o,s)}}return react__WEBPACK_IMPORTED_MODULE_1___default().memo(l)}function ct(t){for(var n=[],o=1;o").concat(t,"")},this.getStyleTags=function(){if(e.sealed)throw ce(2);return e._emitSheetCSS()},this.getStyleElement=function(){var n;if(e.sealed)throw ce(2);var r=((n={})[f]="",n["data-styled-version"]="6.0.7",n.dangerouslySetInnerHTML={__html:e.instance.toString()},n),s=Se();return s&&(r.nonce=s),[react__WEBPACK_IMPORTED_MODULE_1___default().createElement("style",(0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({},r,{key:"sc-0-0"}))]},this.seal=function(){e.sealed=!0},this.instance=new Ce({isServer:!0}),this.sealed=!1}return e.prototype.collectStyles=function(e){if(this.sealed)throw ce(2);return react__WEBPACK_IMPORTED_MODULE_1___default().createElement(Me,{sheet:this.instance},e)},e.prototype.interleaveWithNodeStream=function(e){throw ce(3)},e}(),pt={StyleSheet:Ce,mainSheet:Re}; true&&"undefined"!=typeof navigator&&"ReactNative"===navigator.product&&console.warn("It looks like you've imported 'styled-components' on React Native.\nPerhaps you're looking to import 'styled-components/native'?\nRead more about this at https://www.styled-components.com/docs/basics#react-native");var dt="__sc-".concat(f,"__"); true&&"undefined"!=typeof window&&(window[dt]||(window[dt]=0),1===window[dt]&&console.warn("It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\n\nSee https://s-c.sh/2BAXzed for more info."),window[dt]+=1); //# sourceMappingURL=styled-components.browser.esm.js.map /***/ }), /***/ "./src/DataTable/Cell.ts": /*!*******************************!*\ !*** ./src/DataTable/Cell.ts ***! \*******************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.CellExtended = exports.CellBase = void 0; var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var media_1 = __webpack_require__(/*! ./media */ "./src/DataTable/media.ts"); exports.CellBase = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tbox-sizing: border-box;\n\tline-height: normal;\n\t", ";\n\t", ";\n"], ["\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tbox-sizing: border-box;\n\tline-height: normal;\n\t", ";\n\t", ";\n"])), function (_a) { var theme = _a.theme, headCell = _a.headCell; return theme[headCell ? 'headCells' : 'cells'].style; }, function (_a) { var noPadding = _a.noPadding; return noPadding && 'padding: 0'; }); // Flex calculations exports.CellExtended = (0, styled_components_1.default)(exports.CellBase)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n\tflex-grow: ", ";\n\tflex-shrink: 0;\n\tflex-basis: 0;\n\tmax-width: ", ";\n\tmin-width: ", ";\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n\n\t/* handle hiding cells */\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n"], ["\n\tflex-grow: ", ";\n\tflex-shrink: 0;\n\tflex-basis: 0;\n\tmax-width: ", ";\n\tmin-width: ", ";\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n\n\t/* handle hiding cells */\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n"])), function (_a) { var button = _a.button, grow = _a.grow; return (grow === 0 || button ? 0 : grow || 1); }, function (_a) { var maxWidth = _a.maxWidth; return maxWidth || '100%'; }, function (_a) { var minWidth = _a.minWidth; return minWidth || '100px'; }, function (_a) { var width = _a.width; return width && (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\t\t\tmin-width: ", ";\n\t\t\tmax-width: ", ";\n\t\t"], ["\n\t\t\tmin-width: ", ";\n\t\t\tmax-width: ", ";\n\t\t"])), width, width); }, function (_a) { var right = _a.right; return right && 'justify-content: flex-end'; }, function (_a) { var button = _a.button, center = _a.center; return (center || button) && 'justify-content: center'; }, function (_a) { var compact = _a.compact, button = _a.button; return (compact || button) && 'padding: 0'; }, function (_a) { var hide = _a.hide; return hide && hide === 'sm' && media_1.media.sm(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n display: none;\n "], ["\n display: none;\n "]))); }, function (_a) { var hide = _a.hide; return hide && hide === 'md' && media_1.media.md(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: none;\n "], ["\n display: none;\n "]))); }, function (_a) { var hide = _a.hide; return hide && hide === 'lg' && media_1.media.lg(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n display: none;\n "], ["\n display: none;\n "]))); }, function (_a) { var hide = _a.hide; return hide && Number.isInteger(hide) && media_1.media.custom(hide)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n display: none;\n "], ["\n display: none;\n "]))); }); var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7; /***/ }), /***/ "./src/DataTable/Checkbox.tsx": /*!************************************!*\ !*** ./src/DataTable/Checkbox.tsx ***! \************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts"); var defaultComponentName = 'input'; var calculateBaseStyle = function (disabled) { return (__assign(__assign({ fontSize: '18px' }, (!disabled && { cursor: 'pointer' })), { padding: 0, marginTop: '1px', verticalAlign: 'middle', position: 'relative' })); }; function Checkbox(_a) { var name = _a.name, _b = _a.component, component = _b === void 0 ? defaultComponentName : _b, _c = _a.componentOptions, componentOptions = _c === void 0 ? { style: {} } : _c, _d = _a.indeterminate, indeterminate = _d === void 0 ? false : _d, _e = _a.checked, checked = _e === void 0 ? false : _e, _f = _a.disabled, disabled = _f === void 0 ? false : _f, _g = _a.onClick, onClick = _g === void 0 ? util_1.noop : _g; var setCheckboxRef = function (checkbox) { if (checkbox) { // eslint-disable-next-line no-param-reassign checkbox.indeterminate = indeterminate; } }; var TagName = component; var baseStyle = TagName !== defaultComponentName ? componentOptions.style : calculateBaseStyle(disabled); var resolvedComponentOptions = React.useMemo(function () { return (0, util_1.handleFunctionProps)(componentOptions, indeterminate); }, [componentOptions, indeterminate]); return (React.createElement(TagName // allow this component to fully control these options , __assign({ // allow this component to fully control these options type: "checkbox", ref: setCheckboxRef, style: baseStyle, onClick: disabled ? util_1.noop : onClick, name: name, "aria-label": name, checked: checked, disabled: disabled }, resolvedComponentOptions, { onChange: util_1.noop }))); } exports["default"] = React.memo(Checkbox); /***/ }), /***/ "./src/DataTable/ContextMenu.tsx": /*!***************************************!*\ !*** ./src/DataTable/ContextMenu.tsx ***! \***************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var useRTL_1 = __webpack_require__(/*! ./hooks/useRTL */ "./src/DataTable/hooks/useRTL.ts"); var Title = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tdisplay: flex;\n\talign-items: center;\n\tflex: 1 0 auto;\n\theight: 100%;\n\tcolor: ", ";\n\tfont-size: ", ";\n\tfont-weight: 400;\n"], ["\n\tdisplay: flex;\n\talign-items: center;\n\tflex: 1 0 auto;\n\theight: 100%;\n\tcolor: ", ";\n\tfont-size: ", ";\n\tfont-weight: 400;\n"])), function (_a) { var theme = _a.theme; return theme.contextMenu.fontColor; }, function (_a) { var theme = _a.theme; return theme.contextMenu.fontSize; }); var ContextActions = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tflex-wrap: wrap;\n"], ["\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tflex-wrap: wrap;\n"]))); var ContextMenuStyle = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbox-sizing: inherit;\n\tz-index: 1;\n\talign-items: center;\n\tjustify-content: space-between;\n\tdisplay: flex;\n\t", ";\n\t", ";\n\t", ";\n"], ["\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbox-sizing: inherit;\n\tz-index: 1;\n\talign-items: center;\n\tjustify-content: space-between;\n\tdisplay: flex;\n\t", ";\n\t", ";\n\t", ";\n"])), function (_a) { var rtl = _a.rtl; return rtl && 'direction: rtl'; }, function (_a) { var theme = _a.theme; return theme.contextMenu.style; }, function (_a) { var theme = _a.theme, visible = _a.visible; return visible && theme.contextMenu.activeStyle; }); var generateDefaultContextTitle = function (contextMessage, selectedCount, rtl) { if (selectedCount === 0) { return null; } var datumName = selectedCount === 1 ? contextMessage.singular : contextMessage.plural; // TODO: add mock document rtl tests if (rtl) { return "".concat(selectedCount, " ").concat(contextMessage.message || '', " ").concat(datumName); } return "".concat(selectedCount, " ").concat(datumName, " ").concat(contextMessage.message || ''); }; function ContextMenu(_a) { var contextMessage = _a.contextMessage, contextActions = _a.contextActions, contextComponent = _a.contextComponent, selectedCount = _a.selectedCount, direction = _a.direction; var isRTL = (0, useRTL_1.default)(direction); var visible = selectedCount > 0; if (contextComponent) { return (React.createElement(ContextMenuStyle, { visible: visible }, React.cloneElement(contextComponent, { selectedCount: selectedCount }))); } return (React.createElement(ContextMenuStyle, { visible: visible, rtl: isRTL }, React.createElement(Title, null, generateDefaultContextTitle(contextMessage, selectedCount, isRTL)), React.createElement(ContextActions, null, contextActions))); } exports["default"] = ContextMenu; var templateObject_1, templateObject_2, templateObject_3; /***/ }), /***/ "./src/DataTable/DataTable.tsx": /*!*************************************!*\ !*** ./src/DataTable/DataTable.tsx ***! \*************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var tableReducer_1 = __webpack_require__(/*! ./tableReducer */ "./src/DataTable/tableReducer.ts"); var Table_1 = __webpack_require__(/*! ./Table */ "./src/DataTable/Table.tsx"); var TableHead_1 = __webpack_require__(/*! ./TableHead */ "./src/DataTable/TableHead.tsx"); var TableHeadRow_1 = __webpack_require__(/*! ./TableHeadRow */ "./src/DataTable/TableHeadRow.tsx"); var TableRow_1 = __webpack_require__(/*! ./TableRow */ "./src/DataTable/TableRow.tsx"); var TableCol_1 = __webpack_require__(/*! ./TableCol */ "./src/DataTable/TableCol.tsx"); var TableColCheckbox_1 = __webpack_require__(/*! ./TableColCheckbox */ "./src/DataTable/TableColCheckbox.tsx"); var TableHeader_1 = __webpack_require__(/*! ./TableHeader */ "./src/DataTable/TableHeader.tsx"); var TableSubheader_1 = __webpack_require__(/*! ./TableSubheader */ "./src/DataTable/TableSubheader.tsx"); var TableBody_1 = __webpack_require__(/*! ./TableBody */ "./src/DataTable/TableBody.tsx"); var ResponsiveWrapper_1 = __webpack_require__(/*! ./ResponsiveWrapper */ "./src/DataTable/ResponsiveWrapper.tsx"); var ProgressWrapper_1 = __webpack_require__(/*! ./ProgressWrapper */ "./src/DataTable/ProgressWrapper.tsx"); var TableWrapper_1 = __webpack_require__(/*! ./TableWrapper */ "./src/DataTable/TableWrapper.tsx"); var TableColExpander_1 = __webpack_require__(/*! ./TableColExpander */ "./src/DataTable/TableColExpander.tsx"); var Cell_1 = __webpack_require__(/*! ./Cell */ "./src/DataTable/Cell.ts"); var NoDataWrapper_1 = __webpack_require__(/*! ./NoDataWrapper */ "./src/DataTable/NoDataWrapper.tsx"); var Pagination_1 = __webpack_require__(/*! ./Pagination */ "./src/DataTable/Pagination.tsx"); var useDidUpdateEffect_1 = __webpack_require__(/*! ./hooks/useDidUpdateEffect */ "./src/DataTable/hooks/useDidUpdateEffect.ts"); var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts"); var defaultProps_1 = __webpack_require__(/*! ./defaultProps */ "./src/DataTable/defaultProps.tsx"); var styles_1 = __webpack_require__(/*! ./styles */ "./src/DataTable/styles.ts"); var types_1 = __webpack_require__(/*! ./types */ "./src/DataTable/types.ts"); var useColumns_1 = __webpack_require__(/*! ./hooks/useColumns */ "./src/DataTable/hooks/useColumns.ts"); function DataTable(props) { var _a = props.data, data = _a === void 0 ? defaultProps_1.defaultProps.data : _a, _b = props.columns, columns = _b === void 0 ? defaultProps_1.defaultProps.columns : _b, _c = props.title, title = _c === void 0 ? defaultProps_1.defaultProps.title : _c, _d = props.actions, actions = _d === void 0 ? defaultProps_1.defaultProps.actions : _d, _e = props.keyField, keyField = _e === void 0 ? defaultProps_1.defaultProps.keyField : _e, _f = props.striped, striped = _f === void 0 ? defaultProps_1.defaultProps.striped : _f, _g = props.highlightOnHover, highlightOnHover = _g === void 0 ? defaultProps_1.defaultProps.highlightOnHover : _g, _h = props.pointerOnHover, pointerOnHover = _h === void 0 ? defaultProps_1.defaultProps.pointerOnHover : _h, _j = props.dense, dense = _j === void 0 ? defaultProps_1.defaultProps.dense : _j, _k = props.selectableRows, selectableRows = _k === void 0 ? defaultProps_1.defaultProps.selectableRows : _k, _l = props.selectableRowsSingle, selectableRowsSingle = _l === void 0 ? defaultProps_1.defaultProps.selectableRowsSingle : _l, _m = props.selectableRowsHighlight, selectableRowsHighlight = _m === void 0 ? defaultProps_1.defaultProps.selectableRowsHighlight : _m, _o = props.selectableRowsNoSelectAll, selectableRowsNoSelectAll = _o === void 0 ? defaultProps_1.defaultProps.selectableRowsNoSelectAll : _o, _p = props.selectableRowsVisibleOnly, selectableRowsVisibleOnly = _p === void 0 ? defaultProps_1.defaultProps.selectableRowsVisibleOnly : _p, _q = props.selectableRowSelected, selectableRowSelected = _q === void 0 ? defaultProps_1.defaultProps.selectableRowSelected : _q, _r = props.selectableRowDisabled, selectableRowDisabled = _r === void 0 ? defaultProps_1.defaultProps.selectableRowDisabled : _r, _s = props.selectableRowsComponent, selectableRowsComponent = _s === void 0 ? defaultProps_1.defaultProps.selectableRowsComponent : _s, _t = props.selectableRowsComponentProps, selectableRowsComponentProps = _t === void 0 ? defaultProps_1.defaultProps.selectableRowsComponentProps : _t, _u = props.onRowExpandToggled, onRowExpandToggled = _u === void 0 ? defaultProps_1.defaultProps.onRowExpandToggled : _u, _v = props.onSelectedRowsChange, onSelectedRowsChange = _v === void 0 ? defaultProps_1.defaultProps.onSelectedRowsChange : _v, _w = props.expandableIcon, expandableIcon = _w === void 0 ? defaultProps_1.defaultProps.expandableIcon : _w, _x = props.onChangeRowsPerPage, onChangeRowsPerPage = _x === void 0 ? defaultProps_1.defaultProps.onChangeRowsPerPage : _x, _y = props.onChangePage, onChangePage = _y === void 0 ? defaultProps_1.defaultProps.onChangePage : _y, _z = props.paginationServer, paginationServer = _z === void 0 ? defaultProps_1.defaultProps.paginationServer : _z, _0 = props.paginationServerOptions, paginationServerOptions = _0 === void 0 ? defaultProps_1.defaultProps.paginationServerOptions : _0, _1 = props.paginationTotalRows, paginationTotalRows = _1 === void 0 ? defaultProps_1.defaultProps.paginationTotalRows : _1, _2 = props.paginationDefaultPage, paginationDefaultPage = _2 === void 0 ? defaultProps_1.defaultProps.paginationDefaultPage : _2, _3 = props.paginationResetDefaultPage, paginationResetDefaultPage = _3 === void 0 ? defaultProps_1.defaultProps.paginationResetDefaultPage : _3, _4 = props.paginationPerPage, paginationPerPage = _4 === void 0 ? defaultProps_1.defaultProps.paginationPerPage : _4, _5 = props.paginationRowsPerPageOptions, paginationRowsPerPageOptions = _5 === void 0 ? defaultProps_1.defaultProps.paginationRowsPerPageOptions : _5, _6 = props.paginationIconLastPage, paginationIconLastPage = _6 === void 0 ? defaultProps_1.defaultProps.paginationIconLastPage : _6, _7 = props.paginationIconFirstPage, paginationIconFirstPage = _7 === void 0 ? defaultProps_1.defaultProps.paginationIconFirstPage : _7, _8 = props.paginationIconNext, paginationIconNext = _8 === void 0 ? defaultProps_1.defaultProps.paginationIconNext : _8, _9 = props.paginationIconPrevious, paginationIconPrevious = _9 === void 0 ? defaultProps_1.defaultProps.paginationIconPrevious : _9, _10 = props.paginationComponent, paginationComponent = _10 === void 0 ? defaultProps_1.defaultProps.paginationComponent : _10, _11 = props.paginationComponentOptions, paginationComponentOptions = _11 === void 0 ? defaultProps_1.defaultProps.paginationComponentOptions : _11, _12 = props.responsive, responsive = _12 === void 0 ? defaultProps_1.defaultProps.responsive : _12, _13 = props.progressPending, progressPending = _13 === void 0 ? defaultProps_1.defaultProps.progressPending : _13, _14 = props.progressComponent, progressComponent = _14 === void 0 ? defaultProps_1.defaultProps.progressComponent : _14, _15 = props.persistTableHead, persistTableHead = _15 === void 0 ? defaultProps_1.defaultProps.persistTableHead : _15, _16 = props.noDataComponent, noDataComponent = _16 === void 0 ? defaultProps_1.defaultProps.noDataComponent : _16, _17 = props.disabled, disabled = _17 === void 0 ? defaultProps_1.defaultProps.disabled : _17, _18 = props.noTableHead, noTableHead = _18 === void 0 ? defaultProps_1.defaultProps.noTableHead : _18, _19 = props.noHeader, noHeader = _19 === void 0 ? defaultProps_1.defaultProps.noHeader : _19, _20 = props.fixedHeader, fixedHeader = _20 === void 0 ? defaultProps_1.defaultProps.fixedHeader : _20, _21 = props.fixedHeaderScrollHeight, fixedHeaderScrollHeight = _21 === void 0 ? defaultProps_1.defaultProps.fixedHeaderScrollHeight : _21, _22 = props.pagination, pagination = _22 === void 0 ? defaultProps_1.defaultProps.pagination : _22, _23 = props.subHeader, subHeader = _23 === void 0 ? defaultProps_1.defaultProps.subHeader : _23, _24 = props.subHeaderAlign, subHeaderAlign = _24 === void 0 ? defaultProps_1.defaultProps.subHeaderAlign : _24, _25 = props.subHeaderWrap, subHeaderWrap = _25 === void 0 ? defaultProps_1.defaultProps.subHeaderWrap : _25, _26 = props.subHeaderComponent, subHeaderComponent = _26 === void 0 ? defaultProps_1.defaultProps.subHeaderComponent : _26, _27 = props.noContextMenu, noContextMenu = _27 === void 0 ? defaultProps_1.defaultProps.noContextMenu : _27, _28 = props.contextMessage, contextMessage = _28 === void 0 ? defaultProps_1.defaultProps.contextMessage : _28, _29 = props.contextActions, contextActions = _29 === void 0 ? defaultProps_1.defaultProps.contextActions : _29, _30 = props.contextComponent, contextComponent = _30 === void 0 ? defaultProps_1.defaultProps.contextComponent : _30, _31 = props.expandableRows, expandableRows = _31 === void 0 ? defaultProps_1.defaultProps.expandableRows : _31, _32 = props.onRowClicked, onRowClicked = _32 === void 0 ? defaultProps_1.defaultProps.onRowClicked : _32, _33 = props.onRowDoubleClicked, onRowDoubleClicked = _33 === void 0 ? defaultProps_1.defaultProps.onRowDoubleClicked : _33, _34 = props.onRowMouseEnter, onRowMouseEnter = _34 === void 0 ? defaultProps_1.defaultProps.onRowMouseEnter : _34, _35 = props.onRowMouseLeave, onRowMouseLeave = _35 === void 0 ? defaultProps_1.defaultProps.onRowMouseLeave : _35, _36 = props.sortIcon, sortIcon = _36 === void 0 ? defaultProps_1.defaultProps.sortIcon : _36, _37 = props.onSort, onSort = _37 === void 0 ? defaultProps_1.defaultProps.onSort : _37, _38 = props.sortFunction, sortFunction = _38 === void 0 ? defaultProps_1.defaultProps.sortFunction : _38, _39 = props.sortServer, sortServer = _39 === void 0 ? defaultProps_1.defaultProps.sortServer : _39, _40 = props.expandableRowsComponent, expandableRowsComponent = _40 === void 0 ? defaultProps_1.defaultProps.expandableRowsComponent : _40, _41 = props.expandableRowsComponentProps, expandableRowsComponentProps = _41 === void 0 ? defaultProps_1.defaultProps.expandableRowsComponentProps : _41, _42 = props.expandableRowDisabled, expandableRowDisabled = _42 === void 0 ? defaultProps_1.defaultProps.expandableRowDisabled : _42, _43 = props.expandableRowsHideExpander, expandableRowsHideExpander = _43 === void 0 ? defaultProps_1.defaultProps.expandableRowsHideExpander : _43, _44 = props.expandOnRowClicked, expandOnRowClicked = _44 === void 0 ? defaultProps_1.defaultProps.expandOnRowClicked : _44, _45 = props.expandOnRowDoubleClicked, expandOnRowDoubleClicked = _45 === void 0 ? defaultProps_1.defaultProps.expandOnRowDoubleClicked : _45, _46 = props.expandableRowExpanded, expandableRowExpanded = _46 === void 0 ? defaultProps_1.defaultProps.expandableRowExpanded : _46, _47 = props.expandableInheritConditionalStyles, expandableInheritConditionalStyles = _47 === void 0 ? defaultProps_1.defaultProps.expandableInheritConditionalStyles : _47, _48 = props.defaultSortFieldId, defaultSortFieldId = _48 === void 0 ? defaultProps_1.defaultProps.defaultSortFieldId : _48, _49 = props.defaultSortAsc, defaultSortAsc = _49 === void 0 ? defaultProps_1.defaultProps.defaultSortAsc : _49, _50 = props.clearSelectedRows, clearSelectedRows = _50 === void 0 ? defaultProps_1.defaultProps.clearSelectedRows : _50, _51 = props.conditionalRowStyles, conditionalRowStyles = _51 === void 0 ? defaultProps_1.defaultProps.conditionalRowStyles : _51, _52 = props.theme, theme = _52 === void 0 ? defaultProps_1.defaultProps.theme : _52, _53 = props.customStyles, customStyles = _53 === void 0 ? defaultProps_1.defaultProps.customStyles : _53, _54 = props.direction, direction = _54 === void 0 ? defaultProps_1.defaultProps.direction : _54, _55 = props.onColumnOrderChange, onColumnOrderChange = _55 === void 0 ? defaultProps_1.defaultProps.onColumnOrderChange : _55, className = props.className; var _56 = (0, useColumns_1.default)(columns, onColumnOrderChange, defaultSortFieldId, defaultSortAsc), tableColumns = _56.tableColumns, draggingColumnId = _56.draggingColumnId, handleDragStart = _56.handleDragStart, handleDragEnter = _56.handleDragEnter, handleDragOver = _56.handleDragOver, handleDragLeave = _56.handleDragLeave, handleDragEnd = _56.handleDragEnd, defaultSortDirection = _56.defaultSortDirection, defaultSortColumn = _56.defaultSortColumn; var _57 = React.useReducer(tableReducer_1.tableReducer, { allSelected: false, selectedCount: 0, selectedRows: [], selectedColumn: defaultSortColumn, toggleOnSelectedRowsChange: false, sortDirection: defaultSortDirection, currentPage: paginationDefaultPage, rowsPerPage: paginationPerPage, selectedRowsFlag: false, contextMessage: defaultProps_1.defaultProps.contextMessage, }), _58 = _57[0], rowsPerPage = _58.rowsPerPage, currentPage = _58.currentPage, selectedRows = _58.selectedRows, allSelected = _58.allSelected, selectedCount = _58.selectedCount, selectedColumn = _58.selectedColumn, sortDirection = _58.sortDirection, toggleOnSelectedRowsChange = _58.toggleOnSelectedRowsChange, dispatch = _57[1]; var _59 = paginationServerOptions.persistSelectedOnSort, persistSelectedOnSort = _59 === void 0 ? false : _59, _60 = paginationServerOptions.persistSelectedOnPageChange, persistSelectedOnPageChange = _60 === void 0 ? false : _60; var mergeSelections = !!(paginationServer && (persistSelectedOnPageChange || persistSelectedOnSort)); var enabledPagination = pagination && !progressPending && data.length > 0; var Pagination = paginationComponent || Pagination_1.default; var currentTheme = React.useMemo(function () { return (0, styles_1.createStyles)(customStyles, theme); }, [customStyles, theme]); var wrapperProps = React.useMemo(function () { return (__assign({}, (direction !== 'auto' && { dir: direction }))); }, [direction]); var sortedData = React.useMemo(function () { // server-side sorting bypasses internal sorting if (sortServer) { return data; } if ((selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.sortFunction) && typeof selectedColumn.sortFunction === 'function') { var sortFn_1 = selectedColumn.sortFunction; var customSortFunction = sortDirection === types_1.SortOrder.ASC ? sortFn_1 : function (a, b) { return sortFn_1(a, b) * -1; }; return __spreadArray([], data, true).sort(customSortFunction); } return (0, util_1.sort)(data, selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.selector, sortDirection, sortFunction); }, [sortServer, selectedColumn, sortDirection, data, sortFunction]); var tableRows = React.useMemo(function () { if (pagination && !paginationServer) { // when using client-side pagination we can just slice the rows set var lastIndex = currentPage * rowsPerPage; var firstIndex = lastIndex - rowsPerPage; return sortedData.slice(firstIndex, lastIndex); } return sortedData; }, [currentPage, pagination, paginationServer, rowsPerPage, sortedData]); var handleSort = React.useCallback(function (action) { dispatch(action); }, []); var handleSelectAllRows = React.useCallback(function (action) { dispatch(action); }, []); var handleSelectedRow = React.useCallback(function (action) { dispatch(action); }, []); var handleRowClicked = React.useCallback(function (row, e) { return onRowClicked(row, e); }, [onRowClicked]); var handleRowDoubleClicked = React.useCallback(function (row, e) { return onRowDoubleClicked(row, e); }, [onRowDoubleClicked]); var handleRowMouseEnter = React.useCallback(function (row, e) { return onRowMouseEnter(row, e); }, [onRowMouseEnter]); var handleRowMouseLeave = React.useCallback(function (row, e) { return onRowMouseLeave(row, e); }, [onRowMouseLeave]); var handleChangePage = React.useCallback(function (page) { return dispatch({ type: 'CHANGE_PAGE', page: page, paginationServer: paginationServer, visibleOnly: selectableRowsVisibleOnly, persistSelectedOnPageChange: persistSelectedOnPageChange, }); }, [paginationServer, persistSelectedOnPageChange, selectableRowsVisibleOnly]); var handleChangeRowsPerPage = React.useCallback(function (newRowsPerPage) { var rowCount = paginationTotalRows || tableRows.length; var updatedPage = (0, util_1.getNumberOfPages)(rowCount, newRowsPerPage); var recalculatedPage = (0, util_1.recalculatePage)(currentPage, updatedPage); // update the currentPage for client-side pagination // server - side should be handled by onChangeRowsPerPage if (!paginationServer) { handleChangePage(recalculatedPage); } dispatch({ type: 'CHANGE_ROWS_PER_PAGE', page: recalculatedPage, rowsPerPage: newRowsPerPage }); }, [currentPage, handleChangePage, paginationServer, paginationTotalRows, tableRows.length]); var showTableHead = function () { if (noTableHead) { return false; } if (persistTableHead) { return true; } return sortedData.length > 0 && !progressPending; }; var showHeader = function () { if (noHeader) { return false; } if (title) { return true; } if (actions) { return true; } return false; }; // recalculate the pagination and currentPage if the rows length changes if (pagination && !paginationServer && sortedData.length > 0 && tableRows.length === 0) { var updatedPage = (0, util_1.getNumberOfPages)(sortedData.length, rowsPerPage); var recalculatedPage = (0, util_1.recalculatePage)(currentPage, updatedPage); handleChangePage(recalculatedPage); } (0, useDidUpdateEffect_1.default)(function () { onSelectedRowsChange({ allSelected: allSelected, selectedCount: selectedCount, selectedRows: selectedRows.slice(0) }); // onSelectedRowsChange trigger is controlled by toggleOnSelectedRowsChange state }, [toggleOnSelectedRowsChange]); (0, useDidUpdateEffect_1.default)(function () { onSort(selectedColumn, sortDirection, sortedData.slice(0)); // do not update on sortedData }, [selectedColumn, sortDirection]); (0, useDidUpdateEffect_1.default)(function () { onChangePage(currentPage, paginationTotalRows || sortedData.length); }, [currentPage]); (0, useDidUpdateEffect_1.default)(function () { onChangeRowsPerPage(rowsPerPage, currentPage); }, [rowsPerPage]); (0, useDidUpdateEffect_1.default)(function () { handleChangePage(paginationDefaultPage); }, [paginationDefaultPage, paginationResetDefaultPage]); (0, useDidUpdateEffect_1.default)(function () { if (pagination && paginationServer && paginationTotalRows > 0) { var updatedPage = (0, util_1.getNumberOfPages)(paginationTotalRows, rowsPerPage); var recalculatedPage = (0, util_1.recalculatePage)(currentPage, updatedPage); if (currentPage !== recalculatedPage) { handleChangePage(recalculatedPage); } } }, [paginationTotalRows]); React.useEffect(function () { dispatch({ type: 'CLEAR_SELECTED_ROWS', selectedRowsFlag: clearSelectedRows }); }, [selectableRowsSingle, clearSelectedRows]); React.useEffect(function () { if (!selectableRowSelected) { return; } var preSelectedRows = sortedData.filter(function (row) { return selectableRowSelected(row); }); // if selectableRowsSingle mode then return the first match var selected = selectableRowsSingle ? preSelectedRows.slice(0, 1) : preSelectedRows; dispatch({ type: 'SELECT_MULTIPLE_ROWS', keyField: keyField, selectedRows: selected, totalRows: sortedData.length, mergeSelections: mergeSelections, }); // We only want to update the selectedRowState if data changes // eslint-disable-next-line react-hooks/exhaustive-deps }, [data, selectableRowSelected]); var visibleRows = selectableRowsVisibleOnly ? tableRows : sortedData; var showSelectAll = persistSelectedOnPageChange || selectableRowsSingle || selectableRowsNoSelectAll; return (React.createElement(styled_components_1.ThemeProvider, { theme: currentTheme }, showHeader() && (React.createElement(TableHeader_1.default, { title: title, actions: actions, showMenu: !noContextMenu, selectedCount: selectedCount, direction: direction, contextActions: contextActions, contextComponent: contextComponent, contextMessage: contextMessage })), subHeader && (React.createElement(TableSubheader_1.default, { align: subHeaderAlign, wrapContent: subHeaderWrap }, subHeaderComponent)), React.createElement(ResponsiveWrapper_1.default, __assign({ responsive: responsive, fixedHeader: fixedHeader, fixedHeaderScrollHeight: fixedHeaderScrollHeight, className: className }, wrapperProps), React.createElement(TableWrapper_1.default, null, progressPending && !persistTableHead && React.createElement(ProgressWrapper_1.default, null, progressComponent), React.createElement(Table_1.default, { disabled: disabled, className: "rdt_Table", role: "table" }, showTableHead() && (React.createElement(TableHead_1.default, { className: "rdt_TableHead", role: "rowgroup", fixedHeader: fixedHeader }, React.createElement(TableHeadRow_1.default, { className: "rdt_TableHeadRow", role: "row", dense: dense }, selectableRows && (showSelectAll ? (React.createElement(Cell_1.CellBase, { style: { flex: '0 0 48px' } })) : (React.createElement(TableColCheckbox_1.default, { allSelected: allSelected, selectedRows: selectedRows, selectableRowsComponent: selectableRowsComponent, selectableRowsComponentProps: selectableRowsComponentProps, selectableRowDisabled: selectableRowDisabled, rowData: visibleRows, keyField: keyField, mergeSelections: mergeSelections, onSelectAllRows: handleSelectAllRows }))), expandableRows && !expandableRowsHideExpander && React.createElement(TableColExpander_1.default, null), tableColumns.map(function (column) { return (React.createElement(TableCol_1.default, { key: column.id, column: column, selectedColumn: selectedColumn, disabled: progressPending || sortedData.length === 0, pagination: pagination, paginationServer: paginationServer, persistSelectedOnSort: persistSelectedOnSort, selectableRowsVisibleOnly: selectableRowsVisibleOnly, sortDirection: sortDirection, sortIcon: sortIcon, sortServer: sortServer, onSort: handleSort, onDragStart: handleDragStart, onDragOver: handleDragOver, onDragEnd: handleDragEnd, onDragEnter: handleDragEnter, onDragLeave: handleDragLeave, draggingColumnId: draggingColumnId })); })))), !sortedData.length && !progressPending && React.createElement(NoDataWrapper_1.default, null, noDataComponent), progressPending && persistTableHead && React.createElement(ProgressWrapper_1.default, null, progressComponent), !progressPending && sortedData.length > 0 && (React.createElement(TableBody_1.default, { className: "rdt_TableBody", role: "rowgroup" }, tableRows.map(function (row, i) { var key = (0, util_1.prop)(row, keyField); var id = (0, util_1.isEmpty)(key) ? i : key; var selected = (0, util_1.isRowSelected)(row, selectedRows, keyField); var expanderExpander = !!(expandableRows && expandableRowExpanded && expandableRowExpanded(row)); var expanderDisabled = !!(expandableRows && expandableRowDisabled && expandableRowDisabled(row)); return (React.createElement(TableRow_1.default, { id: id, key: id, keyField: keyField, "data-row-id": id, columns: tableColumns, row: row, rowCount: sortedData.length, rowIndex: i, selectableRows: selectableRows, expandableRows: expandableRows, expandableIcon: expandableIcon, highlightOnHover: highlightOnHover, pointerOnHover: pointerOnHover, dense: dense, expandOnRowClicked: expandOnRowClicked, expandOnRowDoubleClicked: expandOnRowDoubleClicked, expandableRowsComponent: expandableRowsComponent, expandableRowsComponentProps: expandableRowsComponentProps, expandableRowsHideExpander: expandableRowsHideExpander, defaultExpanderDisabled: expanderDisabled, defaultExpanded: expanderExpander, expandableInheritConditionalStyles: expandableInheritConditionalStyles, conditionalRowStyles: conditionalRowStyles, selected: selected, selectableRowsHighlight: selectableRowsHighlight, selectableRowsComponent: selectableRowsComponent, selectableRowsComponentProps: selectableRowsComponentProps, selectableRowDisabled: selectableRowDisabled, selectableRowsSingle: selectableRowsSingle, striped: striped, onRowExpandToggled: onRowExpandToggled, onRowClicked: handleRowClicked, onRowDoubleClicked: handleRowDoubleClicked, onRowMouseEnter: handleRowMouseEnter, onRowMouseLeave: handleRowMouseLeave, onSelectedRow: handleSelectedRow, draggingColumnId: draggingColumnId, onDragStart: handleDragStart, onDragOver: handleDragOver, onDragEnd: handleDragEnd, onDragEnter: handleDragEnter, onDragLeave: handleDragLeave })); })))))), enabledPagination && (React.createElement("div", null, React.createElement(Pagination, { onChangePage: handleChangePage, onChangeRowsPerPage: handleChangeRowsPerPage, rowCount: paginationTotalRows || sortedData.length, currentPage: currentPage, rowsPerPage: rowsPerPage, direction: direction, paginationRowsPerPageOptions: paginationRowsPerPageOptions, paginationIconLastPage: paginationIconLastPage, paginationIconFirstPage: paginationIconFirstPage, paginationIconNext: paginationIconNext, paginationIconPrevious: paginationIconPrevious, paginationComponentOptions: paginationComponentOptions }))))); } exports["default"] = React.memo(DataTable); /***/ }), /***/ "./src/DataTable/ExpanderButton.tsx": /*!******************************************!*\ !*** ./src/DataTable/ExpanderButton.tsx ***! \******************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var ButtonStyle = styled_components_1.default.button(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tdisplay: inline-flex;\n\talign-items: center;\n\tuser-select: none;\n\twhite-space: nowrap;\n\tborder: none;\n\tbackground-color: transparent;\n\t", ";\n"], ["\n\tdisplay: inline-flex;\n\talign-items: center;\n\tuser-select: none;\n\twhite-space: nowrap;\n\tborder: none;\n\tbackground-color: transparent;\n\t", ";\n"])), function (_a) { var theme = _a.theme; return theme.expanderButton.style; }); function ExpanderButton(_a) { var _b = _a.disabled, disabled = _b === void 0 ? false : _b, _c = _a.expanded, expanded = _c === void 0 ? false : _c, expandableIcon = _a.expandableIcon, id = _a.id, row = _a.row, onToggled = _a.onToggled; var icon = expanded ? expandableIcon.expanded : expandableIcon.collapsed; var handleToggle = function () { return onToggled && onToggled(row); }; return (React.createElement(ButtonStyle, { "aria-disabled": disabled, onClick: handleToggle, "data-testid": "expander-button-".concat(id), disabled: disabled, "aria-label": expanded ? 'Collapse Row' : 'Expand Row', role: "button", type: "button" }, icon)); } exports["default"] = ExpanderButton; var templateObject_1; /***/ }), /***/ "./src/DataTable/ExpanderRow.tsx": /*!***************************************!*\ !*** ./src/DataTable/ExpanderRow.tsx ***! \***************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); // @ts-ignore var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var ExpanderRowStyle = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\twidth: 100%;\n\tbox-sizing: border-box;\n\t", ";\n\t", ";\n"], ["\n\twidth: 100%;\n\tbox-sizing: border-box;\n\t", ";\n\t", ";\n"])), function (_a) { var theme = _a.theme; return theme.expanderRow.style; }, function (_a) { var extendedRowStyle = _a.extendedRowStyle; return extendedRowStyle; }); function ExpanderRow(_a) { var data = _a.data, ExpanderComponent = _a.ExpanderComponent, expanderComponentProps = _a.expanderComponentProps, extendedRowStyle = _a.extendedRowStyle, extendedClassNames = _a.extendedClassNames; // we need to strip of rdt_TableRow from extendedClassNames var classNamesSplit = extendedClassNames.split(' ').filter(function (c) { return c !== 'rdt_TableRow'; }); var classNames = __spreadArray(['rdt_ExpanderRow'], classNamesSplit, true).join(' '); return (React.createElement(ExpanderRowStyle, { className: classNames, extendedRowStyle: extendedRowStyle }, React.createElement(ExpanderComponent, __assign({ data: data }, expanderComponentProps)))); } exports["default"] = React.memo(ExpanderRow); var templateObject_1; /***/ }), /***/ "./src/DataTable/NoDataWrapper.tsx": /*!*****************************************!*\ !*** ./src/DataTable/NoDataWrapper.tsx ***! \*****************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var NoDataWrapper = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\t", ";\n"], ["\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\t", ";\n"])), function (_a) { var theme = _a.theme; return theme.noData.style; }); exports["default"] = NoDataWrapper; var templateObject_1; /***/ }), /***/ "./src/DataTable/Pagination.tsx": /*!**************************************!*\ !*** ./src/DataTable/Pagination.tsx ***! \**************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var Select_1 = __webpack_require__(/*! ./Select */ "./src/DataTable/Select.tsx"); var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts"); var useWindowSize_1 = __webpack_require__(/*! ./hooks/useWindowSize */ "./src/DataTable/hooks/useWindowSize.ts"); var useRTL_1 = __webpack_require__(/*! ./hooks/useRTL */ "./src/DataTable/hooks/useRTL.ts"); var media_1 = __webpack_require__(/*! ./media */ "./src/DataTable/media.ts"); var defaultProps_1 = __webpack_require__(/*! ./defaultProps */ "./src/DataTable/defaultProps.tsx"); var defaultComponentOptions = { rowsPerPageText: 'Rows per page:', rangeSeparatorText: 'of', noRowsPerPage: false, selectAllRowsItem: false, selectAllRowsItemText: 'All', }; var PaginationWrapper = styled_components_1.default.nav(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tdisplay: flex;\n\tflex: 1 1 auto;\n\tjustify-content: flex-end;\n\talign-items: center;\n\tbox-sizing: border-box;\n\tpadding-right: 8px;\n\tpadding-left: 8px;\n\twidth: 100%;\n\t", ";\n"], ["\n\tdisplay: flex;\n\tflex: 1 1 auto;\n\tjustify-content: flex-end;\n\talign-items: center;\n\tbox-sizing: border-box;\n\tpadding-right: 8px;\n\tpadding-left: 8px;\n\twidth: 100%;\n\t", ";\n"])), function (_a) { var theme = _a.theme; return theme.pagination.style; }); var Button = styled_components_1.default.button(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\tposition: relative;\n\tdisplay: block;\n\tuser-select: none;\n\tborder: none;\n\t", ";\n\t", ";\n"], ["\n\tposition: relative;\n\tdisplay: block;\n\tuser-select: none;\n\tborder: none;\n\t", ";\n\t", ";\n"])), function (_a) { var theme = _a.theme; return theme.pagination.pageButtonsStyle; }, function (_a) { var isRTL = _a.isRTL; return isRTL && 'transform: scale(-1, -1)'; }); var PageList = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n\tdisplay: flex;\n\talign-items: center;\n\tborder-radius: 4px;\n\twhite-space: nowrap;\n\t", ";\n"], ["\n\tdisplay: flex;\n\talign-items: center;\n\tborder-radius: 4px;\n\twhite-space: nowrap;\n\t", ";\n"])), media_1.media.sm(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n width: 100%;\n justify-content: space-around;\n "], ["\n width: 100%;\n justify-content: space-around;\n "])))); var Span = styled_components_1.default.span(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n\tflex-shrink: 1;\n\tuser-select: none;\n"], ["\n\tflex-shrink: 1;\n\tuser-select: none;\n"]))); var Range = (0, styled_components_1.default)(Span)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n\tmargin: 0 24px;\n"], ["\n\tmargin: 0 24px;\n"]))); var RowLabel = (0, styled_components_1.default)(Span)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n\tmargin: 0 4px;\n"], ["\n\tmargin: 0 4px;\n"]))); function Pagination(_a) { var rowsPerPage = _a.rowsPerPage, rowCount = _a.rowCount, currentPage = _a.currentPage, _b = _a.direction, direction = _b === void 0 ? defaultProps_1.defaultProps.direction : _b, _c = _a.paginationRowsPerPageOptions, paginationRowsPerPageOptions = _c === void 0 ? defaultProps_1.defaultProps.paginationRowsPerPageOptions : _c, _d = _a.paginationIconLastPage, paginationIconLastPage = _d === void 0 ? defaultProps_1.defaultProps.paginationIconLastPage : _d, _e = _a.paginationIconFirstPage, paginationIconFirstPage = _e === void 0 ? defaultProps_1.defaultProps.paginationIconFirstPage : _e, _f = _a.paginationIconNext, paginationIconNext = _f === void 0 ? defaultProps_1.defaultProps.paginationIconNext : _f, _g = _a.paginationIconPrevious, paginationIconPrevious = _g === void 0 ? defaultProps_1.defaultProps.paginationIconPrevious : _g, _h = _a.paginationComponentOptions, paginationComponentOptions = _h === void 0 ? defaultProps_1.defaultProps.paginationComponentOptions : _h, _j = _a.onChangeRowsPerPage, onChangeRowsPerPage = _j === void 0 ? defaultProps_1.defaultProps.onChangeRowsPerPage : _j, _k = _a.onChangePage, onChangePage = _k === void 0 ? defaultProps_1.defaultProps.onChangePage : _k; var windowSize = (0, useWindowSize_1.default)(); var isRTL = (0, useRTL_1.default)(direction); var shouldShow = windowSize.width && windowSize.width > media_1.SMALL; // const isRTL = detectRTL(direction); var numPages = (0, util_1.getNumberOfPages)(rowCount, rowsPerPage); var lastIndex = currentPage * rowsPerPage; var firstIndex = lastIndex - rowsPerPage + 1; var disabledLesser = currentPage === 1; var disabledGreater = currentPage === numPages; var options = __assign(__assign({}, defaultComponentOptions), paginationComponentOptions); var range = currentPage === numPages ? "".concat(firstIndex, "-").concat(rowCount, " ").concat(options.rangeSeparatorText, " ").concat(rowCount) : "".concat(firstIndex, "-").concat(lastIndex, " ").concat(options.rangeSeparatorText, " ").concat(rowCount); var handlePrevious = React.useCallback(function () { return onChangePage(currentPage - 1); }, [currentPage, onChangePage]); var handleNext = React.useCallback(function () { return onChangePage(currentPage + 1); }, [currentPage, onChangePage]); var handleFirst = React.useCallback(function () { return onChangePage(1); }, [onChangePage]); var handleLast = React.useCallback(function () { return onChangePage((0, util_1.getNumberOfPages)(rowCount, rowsPerPage)); }, [onChangePage, rowCount, rowsPerPage]); var handleRowsPerPage = React.useCallback(function (e) { return onChangeRowsPerPage(Number(e.target.value), currentPage); }, [currentPage, onChangeRowsPerPage]); var selectOptions = paginationRowsPerPageOptions.map(function (num) { return (React.createElement("option", { key: num, value: num }, num)); }); if (options.selectAllRowsItem) { selectOptions.push(React.createElement("option", { key: -1, value: rowCount }, options.selectAllRowsItemText)); } var select = (React.createElement(Select_1.default, { onChange: handleRowsPerPage, defaultValue: rowsPerPage, "aria-label": options.rowsPerPageText }, selectOptions)); return (React.createElement(PaginationWrapper, { className: "rdt_Pagination" }, !options.noRowsPerPage && shouldShow && (React.createElement(React.Fragment, null, React.createElement(RowLabel, null, options.rowsPerPageText), select)), shouldShow && React.createElement(Range, null, range), React.createElement(PageList, null, React.createElement(Button, { id: "pagination-first-page", type: "button", "aria-label": "First Page", "aria-disabled": disabledLesser, onClick: handleFirst, disabled: disabledLesser, isRTL: isRTL }, paginationIconFirstPage), React.createElement(Button, { id: "pagination-previous-page", type: "button", "aria-label": "Previous Page", "aria-disabled": disabledLesser, onClick: handlePrevious, disabled: disabledLesser, isRTL: isRTL }, paginationIconPrevious), !options.noRowsPerPage && !shouldShow && select, React.createElement(Button, { id: "pagination-next-page", type: "button", "aria-label": "Next Page", "aria-disabled": disabledGreater, onClick: handleNext, disabled: disabledGreater, isRTL: isRTL }, paginationIconNext), React.createElement(Button, { id: "pagination-last-page", type: "button", "aria-label": "Last Page", "aria-disabled": disabledGreater, onClick: handleLast, disabled: disabledGreater, isRTL: isRTL }, paginationIconLastPage)))); } // export default React.memo(Pagination); exports["default"] = Pagination; var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7; /***/ }), /***/ "./src/DataTable/ProgressWrapper.tsx": /*!*******************************************!*\ !*** ./src/DataTable/ProgressWrapper.tsx ***! \*******************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var ProgressWrapper = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tposition: relative;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\t", ";\n"], ["\n\tposition: relative;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\t", ";\n"])), function (props) { return props.theme.progress.style; }); exports["default"] = ProgressWrapper; var templateObject_1; /***/ }), /***/ "./src/DataTable/ResponsiveWrapper.tsx": /*!*********************************************!*\ !*** ./src/DataTable/ResponsiveWrapper.tsx ***! \*********************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); /* Hack when using layovers/menus that get clipped by overflow-x when a table is responsive due to overflow-xy scroll spec stupidity. Note: The parent element height must be set to 100%! https://www.brunildo.org/test/Overflowxy2.html */ var ResponsiveWrapper = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\tposition: relative;\n\twidth: 100%;\n\tborder-radius: inherit;\n\t", ";\n\n\t", ";\n\n\t", ";\n"], ["\n\tposition: relative;\n\twidth: 100%;\n\tborder-radius: inherit;\n\t", ";\n\n\t", ";\n\n\t", ";\n"])), function (_a) { var responsive = _a.responsive, fixedHeader = _a.fixedHeader; return responsive && (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\t\t\toverflow-x: auto;\n\n\t\t\t// hidden prevents vertical scrolling in firefox when fixedHeader is disabled\n\t\t\toverflow-y: ", ";\n\t\t\tmin-height: 0;\n\t\t"], ["\n\t\t\toverflow-x: auto;\n\n\t\t\t// hidden prevents vertical scrolling in firefox when fixedHeader is disabled\n\t\t\toverflow-y: ", ";\n\t\t\tmin-height: 0;\n\t\t"])), fixedHeader ? 'auto' : 'hidden'); }, function (_a) { var _b = _a.fixedHeader, fixedHeader = _b === void 0 ? false : _b, _c = _a.fixedHeaderScrollHeight, fixedHeaderScrollHeight = _c === void 0 ? '100vh' : _c; return fixedHeader && (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\t\t\tmax-height: ", ";\n\t\t\t-webkit-overflow-scrolling: touch;\n\t\t"], ["\n\t\t\tmax-height: ", ";\n\t\t\t-webkit-overflow-scrolling: touch;\n\t\t"])), fixedHeaderScrollHeight); }, function (_a) { var theme = _a.theme; return theme.responsiveWrapper.style; }); exports["default"] = ResponsiveWrapper; var templateObject_1, templateObject_2, templateObject_3; /***/ }), /***/ "./src/DataTable/Select.tsx": /*!**********************************!*\ !*** ./src/DataTable/Select.tsx ***! \**********************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var Dropdown_1 = __webpack_require__(/*! ./icons/Dropdown */ "./src/DataTable/icons/Dropdown.tsx"); var SelectControl = styled_components_1.default.select(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tcursor: pointer;\n\theight: 24px;\n\tmax-width: 100%;\n\tuser-select: none;\n\tpadding-left: 8px;\n\tpadding-right: 24px;\n\tbox-sizing: content-box;\n\tfont-size: inherit;\n\tcolor: inherit;\n\tborder: none;\n\tbackground-color: transparent;\n\tappearance: none;\n\tdirection: ltr;\n\tflex-shrink: 0;\n\n\t&::-ms-expand {\n\t\tdisplay: none;\n\t}\n\n\t&:disabled::-ms-expand {\n\t\tbackground: #f60;\n\t}\n\n\toption {\n\t\tcolor: initial;\n\t}\n"], ["\n\tcursor: pointer;\n\theight: 24px;\n\tmax-width: 100%;\n\tuser-select: none;\n\tpadding-left: 8px;\n\tpadding-right: 24px;\n\tbox-sizing: content-box;\n\tfont-size: inherit;\n\tcolor: inherit;\n\tborder: none;\n\tbackground-color: transparent;\n\tappearance: none;\n\tdirection: ltr;\n\tflex-shrink: 0;\n\n\t&::-ms-expand {\n\t\tdisplay: none;\n\t}\n\n\t&:disabled::-ms-expand {\n\t\tbackground: #f60;\n\t}\n\n\toption {\n\t\tcolor: initial;\n\t}\n"]))); var SelectWrapper = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\tposition: relative;\n\tflex-shrink: 0;\n\tfont-size: inherit;\n\tcolor: inherit;\n\tmargin-top: 1px;\n\n\tsvg {\n\t\ttop: 0;\n\t\tright: 0;\n\t\tcolor: inherit;\n\t\tposition: absolute;\n\t\tfill: currentColor;\n\t\twidth: 24px;\n\t\theight: 24px;\n\t\tdisplay: inline-block;\n\t\tuser-select: none;\n\t\tpointer-events: none;\n\t}\n"], ["\n\tposition: relative;\n\tflex-shrink: 0;\n\tfont-size: inherit;\n\tcolor: inherit;\n\tmargin-top: 1px;\n\n\tsvg {\n\t\ttop: 0;\n\t\tright: 0;\n\t\tcolor: inherit;\n\t\tposition: absolute;\n\t\tfill: currentColor;\n\t\twidth: 24px;\n\t\theight: 24px;\n\t\tdisplay: inline-block;\n\t\tuser-select: none;\n\t\tpointer-events: none;\n\t}\n"]))); var Select = function (_a) { var defaultValue = _a.defaultValue, onChange = _a.onChange, rest = __rest(_a, ["defaultValue", "onChange"]); return (React.createElement(SelectWrapper, null, React.createElement(SelectControl, __assign({ onChange: onChange, defaultValue: defaultValue }, rest)), React.createElement(Dropdown_1.default, null))); }; exports["default"] = Select; var templateObject_1, templateObject_2; /***/ }), /***/ "./src/DataTable/Table.tsx": /*!*********************************!*\ !*** ./src/DataTable/Table.tsx ***! \*********************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var disabledCSS = (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tpointer-events: none;\n\topacity: 0.4;\n"], ["\n\tpointer-events: none;\n\topacity: 0.4;\n"]))); var TableStyle = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\tposition: relative;\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n\theight: 100%;\n\tmax-width: 100%;\n\t", ";\n\t", ";\n"], ["\n\tposition: relative;\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n\theight: 100%;\n\tmax-width: 100%;\n\t", ";\n\t", ";\n"])), function (_a) { var disabled = _a.disabled; return disabled && disabledCSS; }, function (_a) { var theme = _a.theme; return theme.table.style; }); exports["default"] = TableStyle; var templateObject_1, templateObject_2; /***/ }), /***/ "./src/DataTable/TableBody.tsx": /*!*************************************!*\ !*** ./src/DataTable/TableBody.tsx ***! \*************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var Body = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tdisplay: flex;\n\tflex-direction: column;\n"], ["\n\tdisplay: flex;\n\tflex-direction: column;\n"]))); exports["default"] = Body; var templateObject_1; /***/ }), /***/ "./src/DataTable/TableCell.tsx": /*!*************************************!*\ !*** ./src/DataTable/TableCell.tsx ***! \*************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); // @ts-ignore var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var Cell_1 = __webpack_require__(/*! ./Cell */ "./src/DataTable/Cell.ts"); var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts"); var overflowCSS = (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tdiv:first-child {\n\t\twhite-space: ", ";\n\t\toverflow: ", ";\n\t\ttext-overflow: ellipsis;\n\t}\n"], ["\n\tdiv:first-child {\n\t\twhite-space: ", ";\n\t\toverflow: ", ";\n\t\ttext-overflow: ellipsis;\n\t}\n"])), function (_a) { var wrapCell = _a.wrapCell; return (wrapCell ? 'normal' : 'nowrap'); }, function (_a) { var allowOverflow = _a.allowOverflow; return (allowOverflow ? 'visible' : 'hidden'); }); var CellStyle = (0, styled_components_1.default)(Cell_1.CellExtended).attrs(function (props) { return ({ style: props.style, }); })(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\t", ";\n\t", ";\n\t", ";\n"], ["\n\t", ";\n\t", ";\n\t", ";\n"])), function (_a) { var renderAsCell = _a.renderAsCell; return !renderAsCell && overflowCSS; }, function (_a) { var theme = _a.theme, isDragging = _a.isDragging; return isDragging && theme.cells.draggingStyle; }, function (_a) { var cellStyle = _a.cellStyle; return cellStyle; }); function Cell(_a) { var id = _a.id, column = _a.column, row = _a.row, rowIndex = _a.rowIndex, dataTag = _a.dataTag, isDragging = _a.isDragging, onDragStart = _a.onDragStart, onDragOver = _a.onDragOver, onDragEnd = _a.onDragEnd, onDragEnter = _a.onDragEnter, onDragLeave = _a.onDragLeave; var _b = (0, util_1.getConditionalStyle)(row, column.conditionalCellStyles, ['rdt_TableCell']), style = _b.style, classNames = _b.classNames; return (React.createElement(CellStyle, { id: id, "data-column-id": column.id, role: "cell", className: classNames, "data-tag": dataTag, cellStyle: column.style, renderAsCell: !!column.cell, allowOverflow: column.allowOverflow, button: column.button, center: column.center, compact: column.compact, grow: column.grow, hide: column.hide, maxWidth: column.maxWidth, minWidth: column.minWidth, right: column.right, width: column.width, wrapCell: column.wrap, style: style, isDragging: isDragging, onDragStart: onDragStart, onDragOver: onDragOver, onDragEnd: onDragEnd, onDragEnter: onDragEnter, onDragLeave: onDragLeave }, !column.cell && React.createElement("div", { "data-tag": dataTag }, (0, util_1.getProperty)(row, column.selector, column.format, rowIndex)), column.cell && column.cell(row, rowIndex, column, id))); } exports["default"] = React.memo(Cell); var templateObject_1, templateObject_2; /***/ }), /***/ "./src/DataTable/TableCellCheckbox.tsx": /*!*********************************************!*\ !*** ./src/DataTable/TableCellCheckbox.tsx ***! \*********************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var Cell_1 = __webpack_require__(/*! ./Cell */ "./src/DataTable/Cell.ts"); var Checkbox_1 = __webpack_require__(/*! ./Checkbox */ "./src/DataTable/Checkbox.tsx"); var TableCellCheckboxStyle = (0, styled_components_1.default)(Cell_1.CellBase)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tflex: 0 0 48px;\n\tmin-width: 48px;\n\tjustify-content: center;\n\talign-items: center;\n\tuser-select: none;\n\twhite-space: nowrap;\n"], ["\n\tflex: 0 0 48px;\n\tmin-width: 48px;\n\tjustify-content: center;\n\talign-items: center;\n\tuser-select: none;\n\twhite-space: nowrap;\n"]))); function TableCellCheckbox(_a) { var name = _a.name, keyField = _a.keyField, row = _a.row, rowCount = _a.rowCount, selected = _a.selected, selectableRowsComponent = _a.selectableRowsComponent, selectableRowsComponentProps = _a.selectableRowsComponentProps, selectableRowsSingle = _a.selectableRowsSingle, selectableRowDisabled = _a.selectableRowDisabled, onSelectedRow = _a.onSelectedRow; var disabled = !!(selectableRowDisabled && selectableRowDisabled(row)); var handleOnRowSelected = function () { onSelectedRow({ type: 'SELECT_SINGLE_ROW', row: row, isSelected: selected, keyField: keyField, rowCount: rowCount, singleSelect: selectableRowsSingle, }); }; return (React.createElement(TableCellCheckboxStyle, { onClick: function (e) { return e.stopPropagation(); }, className: "rdt_TableCell", noPadding: true }, React.createElement(Checkbox_1.default, { name: name, component: selectableRowsComponent, componentOptions: selectableRowsComponentProps, checked: selected, "aria-checked": selected, onClick: handleOnRowSelected, disabled: disabled }))); } exports["default"] = TableCellCheckbox; var templateObject_1; /***/ }), /***/ "./src/DataTable/TableCellExpander.tsx": /*!*********************************************!*\ !*** ./src/DataTable/TableCellExpander.tsx ***! \*********************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var Cell_1 = __webpack_require__(/*! ./Cell */ "./src/DataTable/Cell.ts"); var ExpanderButton_1 = __webpack_require__(/*! ./ExpanderButton */ "./src/DataTable/ExpanderButton.tsx"); var CellExpanderStyle = (0, styled_components_1.default)(Cell_1.CellBase)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\twhite-space: nowrap;\n\tfont-weight: 400;\n\tmin-width: 48px;\n\t", ";\n"], ["\n\twhite-space: nowrap;\n\tfont-weight: 400;\n\tmin-width: 48px;\n\t", ";\n"])), function (_a) { var theme = _a.theme; return theme.expanderCell.style; }); function CellExpander(_a) { var row = _a.row, _b = _a.expanded, expanded = _b === void 0 ? false : _b, expandableIcon = _a.expandableIcon, id = _a.id, onToggled = _a.onToggled, _c = _a.disabled, disabled = _c === void 0 ? false : _c; return (React.createElement(CellExpanderStyle, { onClick: function (e) { return e.stopPropagation(); }, noPadding: true }, React.createElement(ExpanderButton_1.default, { id: id, row: row, expanded: expanded, expandableIcon: expandableIcon, disabled: disabled, onToggled: onToggled }))); } exports["default"] = CellExpander; var templateObject_1; /***/ }), /***/ "./src/DataTable/TableCol.tsx": /*!************************************!*\ !*** ./src/DataTable/TableCol.tsx ***! \************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var Cell_1 = __webpack_require__(/*! ./Cell */ "./src/DataTable/Cell.ts"); var NativeSortIcon_1 = __webpack_require__(/*! ./icons/NativeSortIcon */ "./src/DataTable/icons/NativeSortIcon.tsx"); var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts"); var types_1 = __webpack_require__(/*! ./types */ "./src/DataTable/types.ts"); var ColumnStyled = (0, styled_components_1.default)(Cell_1.CellExtended)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\t", ";\n\t", ";\n"], ["\n\t", ";\n\t", ";\n"])), function (_a) { var button = _a.button; return button && 'text-align: center'; }, function (_a) { var theme = _a.theme, isDragging = _a.isDragging; return isDragging && theme.headCells.draggingStyle; }); var sortableCSS = (0, styled_components_1.css)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\tcursor: pointer;\n\tspan.__rdt_custom_sort_icon__ {\n\t\ti,\n\t\tsvg {\n\t\t\ttransform: 'translate3d(0, 0, 0)';\n\t\t\t", ";\n\t\t\tcolor: inherit;\n\t\t\tfont-size: 18px;\n\t\t\theight: 18px;\n\t\t\twidth: 18px;\n\t\t\tbackface-visibility: hidden;\n\t\t\ttransform-style: preserve-3d;\n\t\t\ttransition-duration: 95ms;\n\t\t\ttransition-property: transform;\n\t\t}\n\n\t\t&.asc i,\n\t\t&.asc svg {\n\t\t\ttransform: rotate(180deg);\n\t\t}\n\t}\n\n\t", ";\n"], ["\n\tcursor: pointer;\n\tspan.__rdt_custom_sort_icon__ {\n\t\ti,\n\t\tsvg {\n\t\t\ttransform: 'translate3d(0, 0, 0)';\n\t\t\t", ";\n\t\t\tcolor: inherit;\n\t\t\tfont-size: 18px;\n\t\t\theight: 18px;\n\t\t\twidth: 18px;\n\t\t\tbackface-visibility: hidden;\n\t\t\ttransform-style: preserve-3d;\n\t\t\ttransition-duration: 95ms;\n\t\t\ttransition-property: transform;\n\t\t}\n\n\t\t&.asc i,\n\t\t&.asc svg {\n\t\t\ttransform: rotate(180deg);\n\t\t}\n\t}\n\n\t", ";\n"])), function (_a) { var sortActive = _a.sortActive; return (sortActive ? 'opacity: 1' : 'opacity: 0'); }, function (_a) { var sortActive = _a.sortActive; return !sortActive && (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\topacity: 0.7;\n\n\t\t\t\tspan,\n\t\t\t\tspan.__rdt_custom_sort_icon__ * {\n\t\t\t\t\topacity: 0.7;\n\t\t\t\t}\n\t\t\t}\n\t\t"], ["\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\topacity: 0.7;\n\n\t\t\t\tspan,\n\t\t\t\tspan.__rdt_custom_sort_icon__ * {\n\t\t\t\t\topacity: 0.7;\n\t\t\t\t}\n\t\t\t}\n\t\t"]))); }); var ColumnSortable = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: inherit;\n\theight: 100%;\n\twidth: 100%;\n\toutline: none;\n\tuser-select: none;\n\toverflow: hidden;\n\t", ";\n"], ["\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: inherit;\n\theight: 100%;\n\twidth: 100%;\n\toutline: none;\n\tuser-select: none;\n\toverflow: hidden;\n\t", ";\n"])), function (_a) { var disabled = _a.disabled; return !disabled && sortableCSS; }); var ColumnText = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n"], ["\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n"]))); function TableCol(_a) { var column = _a.column, disabled = _a.disabled, draggingColumnId = _a.draggingColumnId, _b = _a.selectedColumn, selectedColumn = _b === void 0 ? {} : _b, sortDirection = _a.sortDirection, sortIcon = _a.sortIcon, sortServer = _a.sortServer, pagination = _a.pagination, paginationServer = _a.paginationServer, persistSelectedOnSort = _a.persistSelectedOnSort, selectableRowsVisibleOnly = _a.selectableRowsVisibleOnly, onSort = _a.onSort, onDragStart = _a.onDragStart, onDragOver = _a.onDragOver, onDragEnd = _a.onDragEnd, onDragEnter = _a.onDragEnter, onDragLeave = _a.onDragLeave; React.useEffect(function () { if (typeof column.selector === 'string') { console.error("Warning: ".concat(column.selector, " is a string based column selector which has been deprecated as of v7 and will be removed in v8. Instead, use a selector function e.g. row => row[field]...")); } // eslint-disable-next-line react-hooks/exhaustive-deps }, []); var _c = React.useState(false), showTooltip = _c[0], setShowTooltip = _c[1]; var columnRef = React.useRef(null); React.useEffect(function () { if (columnRef.current) { setShowTooltip(columnRef.current.scrollWidth > columnRef.current.clientWidth); } }, [showTooltip]); if (column.omit) { return null; } var handleSortChange = function () { if (!column.sortable && !column.selector) { return; } var direction = sortDirection; if ((0, util_1.equalizeId)(selectedColumn.id, column.id)) { direction = sortDirection === types_1.SortOrder.ASC ? types_1.SortOrder.DESC : types_1.SortOrder.ASC; } onSort({ type: 'SORT_CHANGE', sortDirection: direction, selectedColumn: column, clearSelectedOnSort: (pagination && paginationServer && !persistSelectedOnSort) || sortServer || selectableRowsVisibleOnly, }); }; var handleKeyPress = function (event) { if (event.key === 'Enter') { handleSortChange(); } }; var renderNativeSortIcon = function (sortActive) { return (React.createElement(NativeSortIcon_1.default, { sortActive: sortActive, sortDirection: sortDirection })); }; var renderCustomSortIcon = function () { return (React.createElement("span", { className: [sortDirection, '__rdt_custom_sort_icon__'].join(' ') }, sortIcon)); }; var sortActive = !!(column.sortable && (0, util_1.equalizeId)(selectedColumn.id, column.id)); var disableSort = !column.sortable || disabled; var nativeSortIconLeft = column.sortable && !sortIcon && !column.right; var nativeSortIconRight = column.sortable && !sortIcon && column.right; var customSortIconLeft = column.sortable && sortIcon && !column.right; var customSortIconRight = column.sortable && sortIcon && column.right; return (React.createElement(ColumnStyled, { "data-column-id": column.id, className: "rdt_TableCol", headCell: true, allowOverflow: column.allowOverflow, button: column.button, compact: column.compact, grow: column.grow, hide: column.hide, maxWidth: column.maxWidth, minWidth: column.minWidth, right: column.right, center: column.center, width: column.width, draggable: column.reorder, isDragging: (0, util_1.equalizeId)(column.id, draggingColumnId), onDragStart: onDragStart, onDragOver: onDragOver, onDragEnd: onDragEnd, onDragEnter: onDragEnter, onDragLeave: onDragLeave }, column.name && (React.createElement(ColumnSortable, { "data-column-id": column.id, "data-sort-id": column.id, role: "columnheader", tabIndex: 0, className: "rdt_TableCol_Sortable", onClick: !disableSort ? handleSortChange : undefined, onKeyPress: !disableSort ? handleKeyPress : undefined, sortActive: !disableSort && sortActive, disabled: disableSort }, !disableSort && customSortIconRight && renderCustomSortIcon(), !disableSort && nativeSortIconRight && renderNativeSortIcon(sortActive), typeof column.name === 'string' ? (React.createElement(ColumnText, { title: showTooltip ? column.name : undefined, ref: columnRef, "data-column-id": column.id }, column.name)) : (column.name), !disableSort && customSortIconLeft && renderCustomSortIcon(), !disableSort && nativeSortIconLeft && renderNativeSortIcon(sortActive))))); } exports["default"] = React.memo(TableCol); var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5; /***/ }), /***/ "./src/DataTable/TableColCheckbox.tsx": /*!********************************************!*\ !*** ./src/DataTable/TableColCheckbox.tsx ***! \********************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var Cell_1 = __webpack_require__(/*! ./Cell */ "./src/DataTable/Cell.ts"); var Checkbox_1 = __webpack_require__(/*! ./Checkbox */ "./src/DataTable/Checkbox.tsx"); var ColumnStyle = (0, styled_components_1.default)(Cell_1.CellBase)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tflex: 0 0 48px;\n\tjustify-content: center;\n\talign-items: center;\n\tuser-select: none;\n\twhite-space: nowrap;\n\tfont-size: unset;\n"], ["\n\tflex: 0 0 48px;\n\tjustify-content: center;\n\talign-items: center;\n\tuser-select: none;\n\twhite-space: nowrap;\n\tfont-size: unset;\n"]))); function ColumnCheckbox(_a) { var _b = _a.headCell, headCell = _b === void 0 ? true : _b, rowData = _a.rowData, keyField = _a.keyField, allSelected = _a.allSelected, mergeSelections = _a.mergeSelections, selectedRows = _a.selectedRows, selectableRowsComponent = _a.selectableRowsComponent, selectableRowsComponentProps = _a.selectableRowsComponentProps, selectableRowDisabled = _a.selectableRowDisabled, onSelectAllRows = _a.onSelectAllRows; var indeterminate = selectedRows.length > 0 && !allSelected; var rows = selectableRowDisabled ? rowData.filter(function (row) { return !selectableRowDisabled(row); }) : rowData; var isDisabled = rows.length === 0; // The row count should subtract rows that are disabled var rowCount = Math.min(rowData.length, rows.length); var handleSelectAll = function () { onSelectAllRows({ type: 'SELECT_ALL_ROWS', rows: rows, rowCount: rowCount, mergeSelections: mergeSelections, keyField: keyField, }); }; return (React.createElement(ColumnStyle, { className: "rdt_TableCol", headCell: headCell, noPadding: true }, React.createElement(Checkbox_1.default, { name: "select-all-rows", component: selectableRowsComponent, componentOptions: selectableRowsComponentProps, onClick: handleSelectAll, checked: allSelected, indeterminate: indeterminate, disabled: isDisabled }))); } exports["default"] = ColumnCheckbox; var templateObject_1; /***/ }), /***/ "./src/DataTable/TableColExpander.tsx": /*!********************************************!*\ !*** ./src/DataTable/TableColExpander.tsx ***! \********************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var Cell_1 = __webpack_require__(/*! ./Cell */ "./src/DataTable/Cell.ts"); var ColumnExpander = (0, styled_components_1.default)(Cell_1.CellBase)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\twhite-space: nowrap;\n\t", ";\n"], ["\n\twhite-space: nowrap;\n\t", ";\n"])), function (_a) { var theme = _a.theme; return theme.expanderCell.style; }); exports["default"] = ColumnExpander; var templateObject_1; /***/ }), /***/ "./src/DataTable/TableHead.tsx": /*!*************************************!*\ !*** ./src/DataTable/TableHead.tsx ***! \*************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var fixedCSS = (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tposition: sticky;\n\tposition: -webkit-sticky; /* Safari */\n\ttop: 0;\n\tz-index: 1;\n"], ["\n\tposition: sticky;\n\tposition: -webkit-sticky; /* Safari */\n\ttop: 0;\n\tz-index: 1;\n"]))); var Head = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\tdisplay: flex;\n\twidth: 100%;\n\t", ";\n\t", ";\n"], ["\n\tdisplay: flex;\n\twidth: 100%;\n\t", ";\n\t", ";\n"])), function (_a) { var fixedHeader = _a.fixedHeader; return fixedHeader && fixedCSS; }, function (_a) { var theme = _a.theme; return theme.head.style; }); exports["default"] = Head; var templateObject_1, templateObject_2; /***/ }), /***/ "./src/DataTable/TableHeadRow.tsx": /*!****************************************!*\ !*** ./src/DataTable/TableHeadRow.tsx ***! \****************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var HeadRow = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tdisplay: flex;\n\talign-items: stretch;\n\twidth: 100%;\n\t", ";\n\t", ";\n"], ["\n\tdisplay: flex;\n\talign-items: stretch;\n\twidth: 100%;\n\t", ";\n\t", ";\n"])), function (_a) { var theme = _a.theme; return theme.headRow.style; }, function (_a) { var dense = _a.dense, theme = _a.theme; return dense && theme.headRow.denseStyle; }); exports["default"] = HeadRow; var templateObject_1; /***/ }), /***/ "./src/DataTable/TableHeader.tsx": /*!***************************************!*\ !*** ./src/DataTable/TableHeader.tsx ***! \***************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var ContextMenu_1 = __webpack_require__(/*! ./ContextMenu */ "./src/DataTable/ContextMenu.tsx"); var HeaderStyle = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tposition: relative;\n\tbox-sizing: border-box;\n\toverflow: hidden;\n\tdisplay: flex;\n\tflex: 1 1 auto;\n\talign-items: center;\n\tjustify-content: space-between;\n\twidth: 100%;\n\tflex-wrap: wrap;\n\t", "\n"], ["\n\tposition: relative;\n\tbox-sizing: border-box;\n\toverflow: hidden;\n\tdisplay: flex;\n\tflex: 1 1 auto;\n\talign-items: center;\n\tjustify-content: space-between;\n\twidth: 100%;\n\tflex-wrap: wrap;\n\t", "\n"])), function (_a) { var theme = _a.theme; return theme.header.style; }); var Title = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\tflex: 1 0 auto;\n\tcolor: ", ";\n\tfont-size: ", ";\n\tfont-weight: 400;\n"], ["\n\tflex: 1 0 auto;\n\tcolor: ", ";\n\tfont-size: ", ";\n\tfont-weight: 400;\n"])), function (_a) { var theme = _a.theme; return theme.header.fontColor; }, function (_a) { var theme = _a.theme; return theme.header.fontSize; }); var Actions = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\tflex: 1 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\n\t> * {\n\t\tmargin-left: 5px;\n\t}\n"], ["\n\tflex: 1 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\n\t> * {\n\t\tmargin-left: 5px;\n\t}\n"]))); var Header = function (_a) { var title = _a.title, _b = _a.actions, actions = _b === void 0 ? null : _b, contextMessage = _a.contextMessage, contextActions = _a.contextActions, contextComponent = _a.contextComponent, selectedCount = _a.selectedCount, direction = _a.direction, _c = _a.showMenu, showMenu = _c === void 0 ? true : _c; return (React.createElement(HeaderStyle, { className: "rdt_TableHeader", role: "heading", "aria-level": 1 }, React.createElement(Title, null, title), actions && React.createElement(Actions, null, actions), showMenu && (React.createElement(ContextMenu_1.default, { contextMessage: contextMessage, contextActions: contextActions, contextComponent: contextComponent, direction: direction, selectedCount: selectedCount })))); }; exports["default"] = Header; var templateObject_1, templateObject_2, templateObject_3; /***/ }), /***/ "./src/DataTable/TableRow.tsx": /*!************************************!*\ !*** ./src/DataTable/TableRow.tsx ***! \************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var TableCell_1 = __webpack_require__(/*! ./TableCell */ "./src/DataTable/TableCell.tsx"); var TableCellCheckbox_1 = __webpack_require__(/*! ./TableCellCheckbox */ "./src/DataTable/TableCellCheckbox.tsx"); var TableCellExpander_1 = __webpack_require__(/*! ./TableCellExpander */ "./src/DataTable/TableCellExpander.tsx"); var ExpanderRow_1 = __webpack_require__(/*! ./ExpanderRow */ "./src/DataTable/ExpanderRow.tsx"); var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./src/DataTable/constants.ts"); var highlightCSS = (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\t&:hover {\n\t\t", ";\n\t}\n"], ["\n\t&:hover {\n\t\t", ";\n\t}\n"])), function (_a) { var highlightOnHover = _a.highlightOnHover, theme = _a.theme; return highlightOnHover && theme.rows.highlightOnHoverStyle; }); var pointerCSS = (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\t&:hover {\n\t\tcursor: pointer;\n\t}\n"], ["\n\t&:hover {\n\t\tcursor: pointer;\n\t}\n"]))); var TableRowStyle = styled_components_1.default.div.attrs(function (props) { return ({ style: props.style, }); })(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\tdisplay: flex;\n\talign-items: stretch;\n\talign-content: stretch;\n\twidth: 100%;\n\tbox-sizing: border-box;\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n"], ["\n\tdisplay: flex;\n\talign-items: stretch;\n\talign-content: stretch;\n\twidth: 100%;\n\tbox-sizing: border-box;\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n\t", ";\n"])), function (_a) { var theme = _a.theme; return theme.rows.style; }, function (_a) { var dense = _a.dense, theme = _a.theme; return dense && theme.rows.denseStyle; }, function (_a) { var striped = _a.striped, theme = _a.theme; return striped && theme.rows.stripedStyle; }, function (_a) { var highlightOnHover = _a.highlightOnHover; return highlightOnHover && highlightCSS; }, function (_a) { var pointerOnHover = _a.pointerOnHover; return pointerOnHover && pointerCSS; }, function (_a) { var selected = _a.selected, theme = _a.theme; return selected && theme.rows.selectedHighlightStyle; }); function Row(_a) { var _b = _a.columns, columns = _b === void 0 ? [] : _b, _c = _a.conditionalRowStyles, conditionalRowStyles = _c === void 0 ? [] : _c, _d = _a.defaultExpanded, defaultExpanded = _d === void 0 ? false : _d, _e = _a.defaultExpanderDisabled, defaultExpanderDisabled = _e === void 0 ? false : _e, _f = _a.dense, dense = _f === void 0 ? false : _f, expandableIcon = _a.expandableIcon, _g = _a.expandableRows, expandableRows = _g === void 0 ? false : _g, expandableRowsComponent = _a.expandableRowsComponent, expandableRowsComponentProps = _a.expandableRowsComponentProps, expandableRowsHideExpander = _a.expandableRowsHideExpander, _h = _a.expandOnRowClicked, expandOnRowClicked = _h === void 0 ? false : _h, _j = _a.expandOnRowDoubleClicked, expandOnRowDoubleClicked = _j === void 0 ? false : _j, _k = _a.highlightOnHover, highlightOnHover = _k === void 0 ? false : _k, id = _a.id, expandableInheritConditionalStyles = _a.expandableInheritConditionalStyles, keyField = _a.keyField, _l = _a.onRowClicked, onRowClicked = _l === void 0 ? util_1.noop : _l, _m = _a.onRowDoubleClicked, onRowDoubleClicked = _m === void 0 ? util_1.noop : _m, _o = _a.onRowMouseEnter, onRowMouseEnter = _o === void 0 ? util_1.noop : _o, _p = _a.onRowMouseLeave, onRowMouseLeave = _p === void 0 ? util_1.noop : _p, _q = _a.onRowExpandToggled, onRowExpandToggled = _q === void 0 ? util_1.noop : _q, _r = _a.onSelectedRow, onSelectedRow = _r === void 0 ? util_1.noop : _r, _s = _a.pointerOnHover, pointerOnHover = _s === void 0 ? false : _s, row = _a.row, rowCount = _a.rowCount, rowIndex = _a.rowIndex, _t = _a.selectableRowDisabled, selectableRowDisabled = _t === void 0 ? null : _t, _u = _a.selectableRows, selectableRows = _u === void 0 ? false : _u, selectableRowsComponent = _a.selectableRowsComponent, selectableRowsComponentProps = _a.selectableRowsComponentProps, _v = _a.selectableRowsHighlight, selectableRowsHighlight = _v === void 0 ? false : _v, _w = _a.selectableRowsSingle, selectableRowsSingle = _w === void 0 ? false : _w, selected = _a.selected, _x = _a.striped, striped = _x === void 0 ? false : _x, draggingColumnId = _a.draggingColumnId, onDragStart = _a.onDragStart, onDragOver = _a.onDragOver, onDragEnd = _a.onDragEnd, onDragEnter = _a.onDragEnter, onDragLeave = _a.onDragLeave; var _y = React.useState(defaultExpanded), expanded = _y[0], setExpanded = _y[1]; React.useEffect(function () { setExpanded(defaultExpanded); }, [defaultExpanded]); var handleExpanded = React.useCallback(function () { setExpanded(!expanded); onRowExpandToggled(!expanded, row); }, [expanded, onRowExpandToggled, row]); var showPointer = pointerOnHover || (expandableRows && (expandOnRowClicked || expandOnRowDoubleClicked)); var handleRowClick = React.useCallback(function (e) { // use event delegation allow events to propagate only when the element with data-tag STOP_PROP_TAG is present if (e.target && e.target.getAttribute('data-tag') === constants_1.STOP_PROP_TAG) { onRowClicked(row, e); if (!defaultExpanderDisabled && expandableRows && expandOnRowClicked) { handleExpanded(); } } }, [defaultExpanderDisabled, expandOnRowClicked, expandableRows, handleExpanded, onRowClicked, row]); var handleRowDoubleClick = React.useCallback(function (e) { if (e.target && e.target.getAttribute('data-tag') === constants_1.STOP_PROP_TAG) { onRowDoubleClicked(row, e); if (!defaultExpanderDisabled && expandableRows && expandOnRowDoubleClicked) { handleExpanded(); } } }, [defaultExpanderDisabled, expandOnRowDoubleClicked, expandableRows, handleExpanded, onRowDoubleClicked, row]); var handleRowMouseEnter = React.useCallback(function (e) { onRowMouseEnter(row, e); }, [onRowMouseEnter, row]); var handleRowMouseLeave = React.useCallback(function (e) { onRowMouseLeave(row, e); }, [onRowMouseLeave, row]); var rowKeyField = (0, util_1.prop)(row, keyField); var _z = (0, util_1.getConditionalStyle)(row, conditionalRowStyles, ['rdt_TableRow']), style = _z.style, classNames = _z.classNames; var highlightSelected = selectableRowsHighlight && selected; var inheritStyles = expandableInheritConditionalStyles ? style : {}; var isStriped = striped && (0, util_1.isOdd)(rowIndex); return (React.createElement(React.Fragment, null, React.createElement(TableRowStyle, { id: "row-".concat(id), role: "row", striped: isStriped, highlightOnHover: highlightOnHover, pointerOnHover: !defaultExpanderDisabled && showPointer, dense: dense, onClick: handleRowClick, onDoubleClick: handleRowDoubleClick, onMouseEnter: handleRowMouseEnter, onMouseLeave: handleRowMouseLeave, className: classNames, selected: highlightSelected, style: style }, selectableRows && (React.createElement(TableCellCheckbox_1.default, { name: "select-row-".concat(rowKeyField), keyField: keyField, row: row, rowCount: rowCount, selected: selected, selectableRowsComponent: selectableRowsComponent, selectableRowsComponentProps: selectableRowsComponentProps, selectableRowDisabled: selectableRowDisabled, selectableRowsSingle: selectableRowsSingle, onSelectedRow: onSelectedRow })), expandableRows && !expandableRowsHideExpander && (React.createElement(TableCellExpander_1.default, { id: rowKeyField, expandableIcon: expandableIcon, expanded: expanded, row: row, onToggled: handleExpanded, disabled: defaultExpanderDisabled })), columns.map(function (column) { if (column.omit) { return null; } return (React.createElement(TableCell_1.default, { id: "cell-".concat(column.id, "-").concat(rowKeyField), key: "cell-".concat(column.id, "-").concat(rowKeyField), // apply a tag that Row will use to stop event propagation when TableCell is clicked dataTag: column.ignoreRowClick || column.button ? null : constants_1.STOP_PROP_TAG, column: column, row: row, rowIndex: rowIndex, isDragging: (0, util_1.equalizeId)(draggingColumnId, column.id), onDragStart: onDragStart, onDragOver: onDragOver, onDragEnd: onDragEnd, onDragEnter: onDragEnter, onDragLeave: onDragLeave })); })), expandableRows && expanded && (React.createElement(ExpanderRow_1.default, { key: "expander-".concat(rowKeyField), data: row, extendedRowStyle: inheritStyles, extendedClassNames: classNames, ExpanderComponent: expandableRowsComponent, expanderComponentProps: expandableRowsComponentProps })))); } exports["default"] = Row; var templateObject_1, templateObject_2, templateObject_3; /***/ }), /***/ "./src/DataTable/TableSubheader.tsx": /*!******************************************!*\ !*** ./src/DataTable/TableSubheader.tsx ***! \******************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var alignMap = { left: 'flex-start', right: 'flex-end', center: 'center', }; var SubheaderWrapper = styled_components_1.default.header(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tposition: relative;\n\tdisplay: flex;\n\tflex: 1 1 auto;\n\tbox-sizing: border-box;\n\talign-items: center;\n\tpadding: 4px 16px 4px 24px;\n\twidth: 100%;\n\tjustify-content: ", ";\n\tflex-wrap: ", ";\n\t", "\n"], ["\n\tposition: relative;\n\tdisplay: flex;\n\tflex: 1 1 auto;\n\tbox-sizing: border-box;\n\talign-items: center;\n\tpadding: 4px 16px 4px 24px;\n\twidth: 100%;\n\tjustify-content: ", ";\n\tflex-wrap: ", ";\n\t", "\n"])), function (_a) { var align = _a.align; return alignMap[align]; }, function (_a) { var wrapContent = _a.wrapContent; return (wrapContent ? 'wrap' : 'nowrap'); }, function (_a) { var theme = _a.theme; return theme.subHeader.style; }); var Subheader = function (_a) { var _b = _a.align, align = _b === void 0 ? 'right' : _b, _c = _a.wrapContent, wrapContent = _c === void 0 ? true : _c, rest = __rest(_a, ["align", "wrapContent"]); return (React.createElement(SubheaderWrapper, __assign({ align: align, wrapContent: wrapContent }, rest))); }; exports["default"] = Subheader; var templateObject_1; /***/ }), /***/ "./src/DataTable/TableWrapper.tsx": /*!****************************************!*\ !*** ./src/DataTable/TableWrapper.tsx ***! \****************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var Wrapper = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tposition: relative;\n\twidth: 100%;\n\t", ";\n"], ["\n\tposition: relative;\n\twidth: 100%;\n\t", ";\n"])), function (_a) { var theme = _a.theme; return theme.tableWrapper.style; }); exports["default"] = Wrapper; var templateObject_1; /***/ }), /***/ "./src/DataTable/constants.ts": /*!************************************!*\ !*** ./src/DataTable/constants.ts ***! \************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Media = exports.Alignment = exports.Direction = exports.STOP_PROP_TAG = void 0; exports.STOP_PROP_TAG = 'allowRowEvents'; var Direction; (function (Direction) { Direction["LTR"] = "ltr"; Direction["RTL"] = "rtl"; Direction["AUTO"] = "auto"; })(Direction = exports.Direction || (exports.Direction = {})); var Alignment; (function (Alignment) { Alignment["LEFT"] = "left"; Alignment["RIGHT"] = "right"; Alignment["CENTER"] = "center"; })(Alignment = exports.Alignment || (exports.Alignment = {})); var Media; (function (Media) { Media["SM"] = "sm"; Media["MD"] = "md"; Media["LG"] = "lg"; })(Media = exports.Media || (exports.Media = {})); /***/ }), /***/ "./src/DataTable/defaultProps.tsx": /*!****************************************!*\ !*** ./src/DataTable/defaultProps.tsx ***! \****************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.defaultProps = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var FirstPage_1 = __webpack_require__(/*! ./icons/FirstPage */ "./src/DataTable/icons/FirstPage.tsx"); var LastPage_1 = __webpack_require__(/*! ./icons/LastPage */ "./src/DataTable/icons/LastPage.tsx"); var Left_1 = __webpack_require__(/*! ./icons/Left */ "./src/DataTable/icons/Left.tsx"); var Right_1 = __webpack_require__(/*! ./icons/Right */ "./src/DataTable/icons/Right.tsx"); var ExpanderCollapsedIcon_1 = __webpack_require__(/*! ./icons/ExpanderCollapsedIcon */ "./src/DataTable/icons/ExpanderCollapsedIcon.tsx"); var ExpanderExpandedIcon_1 = __webpack_require__(/*! ./icons/ExpanderExpandedIcon */ "./src/DataTable/icons/ExpanderExpandedIcon.tsx"); var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts"); var constants_1 = __webpack_require__(/*! ./constants */ "./src/DataTable/constants.ts"); exports.defaultProps = { columns: [], data: [], title: '', keyField: 'id', selectableRows: false, selectableRowsHighlight: false, selectableRowsNoSelectAll: false, selectableRowSelected: null, selectableRowDisabled: null, selectableRowsComponent: 'input', selectableRowsComponentProps: {}, selectableRowsVisibleOnly: false, selectableRowsSingle: false, clearSelectedRows: false, expandableRows: false, expandableRowDisabled: null, expandableRowExpanded: null, expandOnRowClicked: false, expandableRowsHideExpander: false, expandOnRowDoubleClicked: false, expandableInheritConditionalStyles: false, expandableRowsComponent: function DefaultExpander() { return (React.createElement("div", null, "To add an expander pass in a component instance via ", React.createElement("strong", null, "expandableRowsComponent"), ". You can then access props.data from this component.")); }, expandableIcon: { collapsed: React.createElement(ExpanderCollapsedIcon_1.default, null), expanded: React.createElement(ExpanderExpandedIcon_1.default, null), }, expandableRowsComponentProps: {}, progressPending: false, progressComponent: React.createElement("div", { style: { fontSize: '24px', fontWeight: 700, padding: '24px' } }, "Loading..."), persistTableHead: false, sortIcon: null, sortFunction: null, sortServer: false, striped: false, highlightOnHover: false, pointerOnHover: false, noContextMenu: false, contextMessage: { singular: 'item', plural: 'items', message: 'selected' }, actions: null, contextActions: null, contextComponent: null, defaultSortFieldId: null, defaultSortAsc: true, responsive: true, noDataComponent: React.createElement("div", { style: { padding: '24px' } }, "There are no records to display"), disabled: false, noTableHead: false, noHeader: false, subHeader: false, subHeaderAlign: constants_1.Alignment.RIGHT, subHeaderWrap: true, subHeaderComponent: null, fixedHeader: false, fixedHeaderScrollHeight: '100vh', pagination: false, paginationServer: false, paginationServerOptions: { persistSelectedOnSort: false, persistSelectedOnPageChange: false, }, paginationDefaultPage: 1, paginationResetDefaultPage: false, paginationTotalRows: 0, paginationPerPage: 10, paginationRowsPerPageOptions: [10, 15, 20, 25, 30], paginationComponent: null, paginationComponentOptions: {}, paginationIconFirstPage: React.createElement(FirstPage_1.default, null), paginationIconLastPage: React.createElement(LastPage_1.default, null), paginationIconNext: React.createElement(Right_1.default, null), paginationIconPrevious: React.createElement(Left_1.default, null), dense: false, conditionalRowStyles: [], theme: 'default', customStyles: {}, direction: constants_1.Direction.AUTO, onChangePage: util_1.noop, onChangeRowsPerPage: util_1.noop, onRowClicked: util_1.noop, onRowDoubleClicked: util_1.noop, onRowMouseEnter: util_1.noop, onRowMouseLeave: util_1.noop, onRowExpandToggled: util_1.noop, onSelectedRowsChange: util_1.noop, onSort: util_1.noop, onColumnOrderChange: util_1.noop, }; /***/ }), /***/ "./src/DataTable/hooks/useColumns.ts": /*!*******************************************!*\ !*** ./src/DataTable/hooks/useColumns.ts ***! \*******************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var util_1 = __webpack_require__(/*! ../util */ "./src/DataTable/util.ts"); var useDidUpdateEffect_1 = __webpack_require__(/*! ../hooks/useDidUpdateEffect */ "./src/DataTable/hooks/useDidUpdateEffect.ts"); function useColumns(columns, onColumnOrderChange, defaultSortFieldId, defaultSortAsc) { var _a = React.useState(function () { return (0, util_1.decorateColumns)(columns); }), tableColumns = _a[0], setTableColumns = _a[1]; var _b = React.useState(''), draggingColumnId = _b[0], setDraggingColumn = _b[1]; var sourceColumnId = React.useRef(''); (0, useDidUpdateEffect_1.default)(function () { setTableColumns((0, util_1.decorateColumns)(columns)); }, [columns]); var handleDragStart = React.useCallback(function (e) { var _a, _b, _c; var attributes = e.target.attributes; var id = (_a = attributes.getNamedItem('data-column-id')) === null || _a === void 0 ? void 0 : _a.value; if (id) { sourceColumnId.current = ((_c = (_b = tableColumns[(0, util_1.findColumnIndexById)(tableColumns, id)]) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.toString()) || ''; setDraggingColumn(sourceColumnId.current); } }, [tableColumns]); var handleDragEnter = React.useCallback(function (e) { var _a; var attributes = e.target.attributes; var id = (_a = attributes.getNamedItem('data-column-id')) === null || _a === void 0 ? void 0 : _a.value; if (id && sourceColumnId.current && id !== sourceColumnId.current) { var selectedColIndex = (0, util_1.findColumnIndexById)(tableColumns, sourceColumnId.current); var targetColIndex = (0, util_1.findColumnIndexById)(tableColumns, id); var reorderedCols = __spreadArray([], tableColumns, true); reorderedCols[selectedColIndex] = tableColumns[targetColIndex]; reorderedCols[targetColIndex] = tableColumns[selectedColIndex]; setTableColumns(reorderedCols); onColumnOrderChange(reorderedCols); } }, [onColumnOrderChange, tableColumns]); var handleDragOver = React.useCallback(function (e) { e.preventDefault(); }, []); var handleDragLeave = React.useCallback(function (e) { e.preventDefault(); }, []); var handleDragEnd = React.useCallback(function (e) { e.preventDefault(); sourceColumnId.current = ''; setDraggingColumn(''); }, []); var defaultSortDirection = (0, util_1.getSortDirection)(defaultSortAsc); var defaultSortColumn = React.useMemo(function () { return tableColumns[(0, util_1.findColumnIndexById)(tableColumns, defaultSortFieldId === null || defaultSortFieldId === void 0 ? void 0 : defaultSortFieldId.toString())] || {}; }, [defaultSortFieldId, tableColumns]); return { tableColumns: tableColumns, draggingColumnId: draggingColumnId, handleDragStart: handleDragStart, handleDragEnter: handleDragEnter, handleDragOver: handleDragOver, handleDragLeave: handleDragLeave, handleDragEnd: handleDragEnd, defaultSortDirection: defaultSortDirection, defaultSortColumn: defaultSortColumn, }; } exports["default"] = useColumns; /***/ }), /***/ "./src/DataTable/hooks/useDidUpdateEffect.ts": /*!***************************************************!*\ !*** ./src/DataTable/hooks/useDidUpdateEffect.ts ***! \***************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var useFirstUpdate = function (fn, inputs) { var firstUpdate = React.useRef(true); React.useEffect(function () { if (firstUpdate.current) { firstUpdate.current = false; return; } fn(); // eslint-disable-next-line react-hooks/exhaustive-deps }, inputs); }; exports["default"] = useFirstUpdate; /***/ }), /***/ "./src/DataTable/hooks/useRTL.ts": /*!***************************************!*\ !*** ./src/DataTable/hooks/useRTL.ts ***! \***************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var constants_1 = __webpack_require__(/*! ../constants */ "./src/DataTable/constants.ts"); function useRTL(direction) { if (direction === void 0) { direction = constants_1.Direction.AUTO; } var isClient = typeof window === 'object'; var _a = React.useState(false), isRTL = _a[0], setIsRTL = _a[1]; React.useEffect(function () { if (!isClient) { return; } if (direction === 'auto') { var canUse = false; if (window && window.document) { canUse = true; } // const canUse = !!( window?.document?.createElement ); var bodyRTL = document.getElementsByTagName('BODY')[0]; var htmlTRL = document.getElementsByTagName('HTML')[0]; var hasRTL = bodyRTL.dir === 'rtl' || htmlTRL.dir === 'rtl'; setIsRTL(canUse && hasRTL); return; } setIsRTL(direction === 'rtl'); }, [direction, isClient]); return isRTL; } exports["default"] = useRTL; /***/ }), /***/ "./src/DataTable/hooks/useWindowSize.ts": /*!**********************************************!*\ !*** ./src/DataTable/hooks/useWindowSize.ts ***! \**********************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); // Credit: https://usehooks.com/useWindowSize/ var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var useWindowSize = function () { var isClient = typeof window === 'object'; function getSize() { return { width: isClient ? window.innerWidth : undefined, height: isClient ? window.innerHeight : undefined, }; } var _a = React.useState(getSize), windowSize = _a[0], setWindowSize = _a[1]; React.useEffect(function () { if (!isClient) { return function () { return null; }; } function handleResize() { setWindowSize(getSize()); } window.addEventListener('resize', handleResize); return function () { return window.removeEventListener('resize', handleResize); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return windowSize; }; exports["default"] = useWindowSize; /***/ }), /***/ "./src/DataTable/icons/Dropdown.tsx": /*!******************************************!*\ !*** ./src/DataTable/icons/Dropdown.tsx ***! \******************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); var react_1 = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var DropdownIcon = function () { return (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24" }, react_1.default.createElement("path", { d: "M7 10l5 5 5-5z" }), react_1.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }))); }; exports["default"] = DropdownIcon; /***/ }), /***/ "./src/DataTable/icons/ExpanderCollapsedIcon.tsx": /*!*******************************************************!*\ !*** ./src/DataTable/icons/ExpanderCollapsedIcon.tsx ***! \*******************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); var react_1 = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var ExpanderCollapsedIcon = function () { return (react_1.default.createElement("svg", { fill: "currentColor", height: "24", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" }, react_1.default.createElement("path", { d: "M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z" }), react_1.default.createElement("path", { d: "M0-.25h24v24H0z", fill: "none" }))); }; exports["default"] = ExpanderCollapsedIcon; /***/ }), /***/ "./src/DataTable/icons/ExpanderExpandedIcon.tsx": /*!******************************************************!*\ !*** ./src/DataTable/icons/ExpanderExpandedIcon.tsx ***! \******************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); var react_1 = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var ExpanderExpandedIcon = function () { return (react_1.default.createElement("svg", { fill: "currentColor", height: "24", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" }, react_1.default.createElement("path", { d: "M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z" }), react_1.default.createElement("path", { d: "M0-.75h24v24H0z", fill: "none" }))); }; exports["default"] = ExpanderExpandedIcon; /***/ }), /***/ "./src/DataTable/icons/FirstPage.tsx": /*!*******************************************!*\ !*** ./src/DataTable/icons/FirstPage.tsx ***! \*******************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); var react_1 = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var FirstPage = function () { return (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", "aria-hidden": "true", role: "presentation" }, react_1.default.createElement("path", { d: "M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z" }), react_1.default.createElement("path", { fill: "none", d: "M24 24H0V0h24v24z" }))); }; exports["default"] = FirstPage; /***/ }), /***/ "./src/DataTable/icons/LastPage.tsx": /*!******************************************!*\ !*** ./src/DataTable/icons/LastPage.tsx ***! \******************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); var react_1 = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var LastPage = function () { return (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", "aria-hidden": "true", role: "presentation" }, react_1.default.createElement("path", { d: "M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z" }), react_1.default.createElement("path", { fill: "none", d: "M0 0h24v24H0V0z" }))); }; exports["default"] = LastPage; /***/ }), /***/ "./src/DataTable/icons/Left.tsx": /*!**************************************!*\ !*** ./src/DataTable/icons/Left.tsx ***! \**************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); var react_1 = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var Left = function () { return (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", "aria-hidden": "true", role: "presentation" }, react_1.default.createElement("path", { d: "M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z" }), react_1.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }))); }; exports["default"] = Left; /***/ }), /***/ "./src/DataTable/icons/NativeSortIcon.tsx": /*!************************************************!*\ !*** ./src/DataTable/icons/NativeSortIcon.tsx ***! \************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var react_1 = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); var Icon = styled_components_1.default.span(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\tpadding: 2px;\n\tcolor: inherit;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\t", ";\n\t", ";\n"], ["\n\tpadding: 2px;\n\tcolor: inherit;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\t", ";\n\t", ";\n"])), function (_a) { var sortActive = _a.sortActive; return (sortActive ? 'opacity: 1' : 'opacity: 0'); }, function (_a) { var sortDirection = _a.sortDirection; return sortDirection === 'desc' && 'transform: rotate(180deg)'; }); var NativeSortIcon = function (_a) { var sortActive = _a.sortActive, sortDirection = _a.sortDirection; return (react_1.default.createElement(Icon, { sortActive: sortActive, sortDirection: sortDirection }, "\u25B2")); }; exports["default"] = NativeSortIcon; var templateObject_1; /***/ }), /***/ "./src/DataTable/icons/Right.tsx": /*!***************************************!*\ !*** ./src/DataTable/icons/Right.tsx ***! \***************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); var react_1 = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var Right = function () { return (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", "aria-hidden": "true", role: "presentation" }, react_1.default.createElement("path", { d: "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" }), react_1.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }))); }; exports["default"] = Right; /***/ }), /***/ "./src/DataTable/media.ts": /*!********************************!*\ !*** ./src/DataTable/media.ts ***! \********************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.media = exports.LARGE = exports.MEDIUM = exports.SMALL = void 0; // @ts-ignore var styled_components_1 = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); exports.SMALL = 599; exports.MEDIUM = 959; exports.LARGE = 1280; exports.media = { sm: function (literals) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } return (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\t\t@media screen and (max-width: ", "px) {\n\t\t\t", "\n\t\t}\n\t"], ["\n\t\t@media screen and (max-width: ", "px) {\n\t\t\t", "\n\t\t}\n\t"])), exports.SMALL, styled_components_1.css.apply(void 0, __spreadArray([literals], args, false))); }, md: function (literals) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } return (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n\t\t@media screen and (max-width: ", "px) {\n\t\t\t", "\n\t\t}\n\t"], ["\n\t\t@media screen and (max-width: ", "px) {\n\t\t\t", "\n\t\t}\n\t"])), exports.MEDIUM, styled_components_1.css.apply(void 0, __spreadArray([literals], args, false))); }, lg: function (literals) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } return (0, styled_components_1.css)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n\t\t@media screen and (max-width: ", "px) {\n\t\t\t", "\n\t\t}\n\t"], ["\n\t\t@media screen and (max-width: ", "px) {\n\t\t\t", "\n\t\t}\n\t"])), exports.LARGE, styled_components_1.css.apply(void 0, __spreadArray([literals], args, false))); }, custom: function (value) { return function (literals) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } return (0, styled_components_1.css)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n\t\t\t\t@media screen and (max-width: ", "px) {\n\t\t\t\t\t", "\n\t\t\t\t}\n\t\t\t"], ["\n\t\t\t\t@media screen and (max-width: ", "px) {\n\t\t\t\t\t", "\n\t\t\t\t}\n\t\t\t"])), value, styled_components_1.css.apply(void 0, __spreadArray([literals], args, false))); }; }, }; var templateObject_1, templateObject_2, templateObject_3, templateObject_4; /***/ }), /***/ "./src/DataTable/styles.ts": /*!*********************************!*\ !*** ./src/DataTable/styles.ts ***! \*********************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.createStyles = exports.defaultStyles = void 0; var deepmerge_1 = __webpack_require__(/*! deepmerge */ "./node_modules/deepmerge/dist/cjs.js"); var themes_1 = __webpack_require__(/*! ./themes */ "./src/DataTable/themes.ts"); var defaultStyles = function (theme) { return ({ table: { style: { color: theme.text.primary, backgroundColor: theme.background.default, }, }, tableWrapper: { style: { display: 'table', }, }, responsiveWrapper: { style: {}, }, header: { style: { fontSize: '22px', color: theme.text.primary, backgroundColor: theme.background.default, minHeight: '56px', paddingLeft: '16px', paddingRight: '8px', }, }, subHeader: { style: { backgroundColor: theme.background.default, minHeight: '52px', }, }, head: { style: { color: theme.text.primary, fontSize: '12px', fontWeight: 500, }, }, headRow: { style: { backgroundColor: theme.background.default, minHeight: '52px', borderBottomWidth: '1px', borderBottomColor: theme.divider.default, borderBottomStyle: 'solid', }, denseStyle: { minHeight: '32px', }, }, headCells: { style: { paddingLeft: '16px', paddingRight: '16px', }, draggingStyle: { cursor: 'move', }, }, contextMenu: { style: { backgroundColor: theme.context.background, fontSize: '18px', fontWeight: 400, color: theme.context.text, paddingLeft: '16px', paddingRight: '8px', transform: 'translate3d(0, -100%, 0)', transitionDuration: '125ms', transitionTimingFunction: 'cubic-bezier(0, 0, 0.2, 1)', willChange: 'transform', }, activeStyle: { transform: 'translate3d(0, 0, 0)', }, }, cells: { style: { paddingLeft: '16px', paddingRight: '16px', wordBreak: 'break-word', }, draggingStyle: {}, }, rows: { style: { fontSize: '13px', fontWeight: 400, color: theme.text.primary, backgroundColor: theme.background.default, minHeight: '48px', '&:not(:last-of-type)': { borderBottomStyle: 'solid', borderBottomWidth: '1px', borderBottomColor: theme.divider.default, }, }, denseStyle: { minHeight: '32px', }, selectedHighlightStyle: { // use nth-of-type(n) to override other nth selectors '&:nth-of-type(n)': { color: theme.selected.text, backgroundColor: theme.selected.default, borderBottomColor: theme.background.default, }, }, highlightOnHoverStyle: { color: theme.highlightOnHover.text, backgroundColor: theme.highlightOnHover.default, transitionDuration: '0.15s', transitionProperty: 'background-color', borderBottomColor: theme.background.default, outlineStyle: 'solid', outlineWidth: '1px', outlineColor: theme.background.default, }, stripedStyle: { color: theme.striped.text, backgroundColor: theme.striped.default, }, }, expanderRow: { style: { color: theme.text.primary, backgroundColor: theme.background.default, }, }, expanderCell: { style: { flex: '0 0 48px', }, }, expanderButton: { style: { color: theme.button.default, fill: theme.button.default, backgroundColor: 'transparent', borderRadius: '2px', transition: '0.25s', height: '100%', width: '100%', '&:hover:enabled': { cursor: 'pointer', }, '&:disabled': { color: theme.button.disabled, }, '&:hover:not(:disabled)': { cursor: 'pointer', backgroundColor: theme.button.hover, }, '&:focus': { outline: 'none', backgroundColor: theme.button.focus, }, svg: { margin: 'auto', }, }, }, pagination: { style: { color: theme.text.secondary, fontSize: '13px', minHeight: '56px', backgroundColor: theme.background.default, borderTopStyle: 'solid', borderTopWidth: '1px', borderTopColor: theme.divider.default, }, pageButtonsStyle: { borderRadius: '50%', height: '40px', width: '40px', padding: '8px', margin: 'px', cursor: 'pointer', transition: '0.4s', color: theme.button.default, fill: theme.button.default, backgroundColor: 'transparent', '&:disabled': { cursor: 'unset', color: theme.button.disabled, fill: theme.button.disabled, }, '&:hover:not(:disabled)': { backgroundColor: theme.button.hover, }, '&:focus': { outline: 'none', backgroundColor: theme.button.focus, }, }, }, noData: { style: { display: 'flex', alignItems: 'center', justifyContent: 'center', color: theme.text.primary, backgroundColor: theme.background.default, }, }, progress: { style: { display: 'flex', alignItems: 'center', justifyContent: 'center', color: theme.text.primary, backgroundColor: theme.background.default, }, }, }); }; exports.defaultStyles = defaultStyles; var createStyles = function (customStyles, themeName, inherit) { if (customStyles === void 0) { customStyles = {}; } if (themeName === void 0) { themeName = 'default'; } if (inherit === void 0) { inherit = 'default'; } var themeType = themes_1.defaultThemes[themeName] ? themeName : inherit; return (0, deepmerge_1.default)((0, exports.defaultStyles)(themes_1.defaultThemes[themeType]), customStyles); }; exports.createStyles = createStyles; /***/ }), /***/ "./src/DataTable/tableReducer.ts": /*!***************************************!*\ !*** ./src/DataTable/tableReducer.ts ***! \***************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.tableReducer = void 0; var util_1 = __webpack_require__(/*! ./util */ "./src/DataTable/util.ts"); function tableReducer(state, action) { var toggleOnSelectedRowsChange = !state.toggleOnSelectedRowsChange; switch (action.type) { case 'SELECT_ALL_ROWS': { var keyField_1 = action.keyField, rows_1 = action.rows, rowCount = action.rowCount, mergeSelections = action.mergeSelections; var allChecked = !state.allSelected; var toggleOnSelectedRowsChange_1 = !state.toggleOnSelectedRowsChange; if (mergeSelections) { var selections = allChecked ? __spreadArray(__spreadArray([], state.selectedRows, true), rows_1.filter(function (row) { return !(0, util_1.isRowSelected)(row, state.selectedRows, keyField_1); }), true) : state.selectedRows.filter(function (row) { return !(0, util_1.isRowSelected)(row, rows_1, keyField_1); }); return __assign(__assign({}, state), { allSelected: allChecked, selectedCount: selections.length, selectedRows: selections, toggleOnSelectedRowsChange: toggleOnSelectedRowsChange_1 }); } return __assign(__assign({}, state), { allSelected: allChecked, selectedCount: allChecked ? rowCount : 0, selectedRows: allChecked ? rows_1 : [], toggleOnSelectedRowsChange: toggleOnSelectedRowsChange_1 }); } case 'SELECT_SINGLE_ROW': { var keyField = action.keyField, row = action.row, isSelected = action.isSelected, rowCount = action.rowCount, singleSelect = action.singleSelect; // handle single select mode if (singleSelect) { if (isSelected) { return __assign(__assign({}, state), { selectedCount: 0, allSelected: false, selectedRows: [], toggleOnSelectedRowsChange: toggleOnSelectedRowsChange }); } return __assign(__assign({}, state), { selectedCount: 1, allSelected: false, selectedRows: [row], toggleOnSelectedRowsChange: toggleOnSelectedRowsChange }); } // handle multi select mode if (isSelected) { return __assign(__assign({}, state), { selectedCount: state.selectedRows.length > 0 ? state.selectedRows.length - 1 : 0, allSelected: false, selectedRows: (0, util_1.removeItem)(state.selectedRows, row, keyField), toggleOnSelectedRowsChange: toggleOnSelectedRowsChange }); } return __assign(__assign({}, state), { selectedCount: state.selectedRows.length + 1, allSelected: state.selectedRows.length + 1 === rowCount, selectedRows: (0, util_1.insertItem)(state.selectedRows, row), toggleOnSelectedRowsChange: toggleOnSelectedRowsChange }); } case 'SELECT_MULTIPLE_ROWS': { var keyField_2 = action.keyField, selectedRows = action.selectedRows, totalRows = action.totalRows, mergeSelections = action.mergeSelections; if (mergeSelections) { var selections = __spreadArray(__spreadArray([], state.selectedRows, true), selectedRows.filter(function (row) { return !(0, util_1.isRowSelected)(row, state.selectedRows, keyField_2); }), true); return __assign(__assign({}, state), { selectedCount: selections.length, allSelected: false, selectedRows: selections, toggleOnSelectedRowsChange: toggleOnSelectedRowsChange }); } return __assign(__assign({}, state), { selectedCount: selectedRows.length, allSelected: selectedRows.length === totalRows, selectedRows: selectedRows, toggleOnSelectedRowsChange: toggleOnSelectedRowsChange }); } case 'CLEAR_SELECTED_ROWS': { var selectedRowsFlag = action.selectedRowsFlag; return __assign(__assign({}, state), { allSelected: false, selectedCount: 0, selectedRows: [], selectedRowsFlag: selectedRowsFlag }); } case 'SORT_CHANGE': { var sortDirection = action.sortDirection, selectedColumn = action.selectedColumn, clearSelectedOnSort = action.clearSelectedOnSort; return __assign(__assign(__assign({}, state), { selectedColumn: selectedColumn, sortDirection: sortDirection, currentPage: 1 }), (clearSelectedOnSort && { allSelected: false, selectedCount: 0, selectedRows: [], toggleOnSelectedRowsChange: toggleOnSelectedRowsChange, })); } case 'CHANGE_PAGE': { var page = action.page, paginationServer = action.paginationServer, visibleOnly = action.visibleOnly, persistSelectedOnPageChange = action.persistSelectedOnPageChange; var mergeSelections = paginationServer && persistSelectedOnPageChange; var clearSelectedOnPage = (paginationServer && !persistSelectedOnPageChange) || visibleOnly; return __assign(__assign(__assign(__assign({}, state), { currentPage: page }), (mergeSelections && { allSelected: false, })), (clearSelectedOnPage && { allSelected: false, selectedCount: 0, selectedRows: [], toggleOnSelectedRowsChange: toggleOnSelectedRowsChange, })); } case 'CHANGE_ROWS_PER_PAGE': { var rowsPerPage = action.rowsPerPage, page = action.page; return __assign(__assign({}, state), { currentPage: page, rowsPerPage: rowsPerPage }); } } } exports.tableReducer = tableReducer; /***/ }), /***/ "./src/DataTable/themes.ts": /*!*********************************!*\ !*** ./src/DataTable/themes.ts ***! \*********************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.createTheme = exports.defaultThemes = void 0; var deepmerge_1 = __webpack_require__(/*! deepmerge */ "./node_modules/deepmerge/dist/cjs.js"); var defaultTheme = { text: { primary: 'rgba(0, 0, 0, 0.87)', secondary: 'rgba(0, 0, 0, 0.54)', disabled: 'rgba(0, 0, 0, 0.38)', }, background: { default: '#FFFFFF', }, context: { background: '#e3f2fd', text: 'rgba(0, 0, 0, 0.87)', }, divider: { default: 'rgba(0,0,0,.12)', }, button: { default: 'rgba(0,0,0,.54)', focus: 'rgba(0,0,0,.12)', hover: 'rgba(0,0,0,.12)', disabled: 'rgba(0, 0, 0, .18)', }, selected: { default: '#e3f2fd', text: 'rgba(0, 0, 0, 0.87)', }, highlightOnHover: { default: '#EEEEEE', text: 'rgba(0, 0, 0, 0.87)', }, striped: { default: '#FAFAFA', text: 'rgba(0, 0, 0, 0.87)', }, }; exports.defaultThemes = { default: defaultTheme, light: defaultTheme, dark: { text: { primary: '#FFFFFF', secondary: 'rgba(255, 255, 255, 0.7)', disabled: 'rgba(0,0,0,.12)', }, background: { default: '#424242', }, context: { background: '#E91E63', text: '#FFFFFF', }, divider: { default: 'rgba(81, 81, 81, 1)', }, button: { default: '#FFFFFF', focus: 'rgba(255, 255, 255, .54)', hover: 'rgba(255, 255, 255, .12)', disabled: 'rgba(255, 255, 255, .18)', }, selected: { default: 'rgba(0, 0, 0, .7)', text: '#FFFFFF', }, highlightOnHover: { default: 'rgba(0, 0, 0, .7)', text: '#FFFFFF', }, striped: { default: 'rgba(0, 0, 0, .87)', text: '#FFFFFF', }, }, }; function createTheme(name, customTheme, inherit) { if (name === void 0) { name = 'default'; } if (inherit === void 0) { inherit = 'default'; } if (!exports.defaultThemes[name]) { exports.defaultThemes[name] = (0, deepmerge_1.default)(exports.defaultThemes[inherit], customTheme || {}); } // allow tweaking default or light themes if the theme passed in matches exports.defaultThemes[name] = (0, deepmerge_1.default)(exports.defaultThemes[name], customTheme || {}); return exports.defaultThemes[name]; } exports.createTheme = createTheme; /***/ }), /***/ "./src/DataTable/types.ts": /*!********************************!*\ !*** ./src/DataTable/types.ts ***! \********************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.SortOrder = void 0; var SortOrder; (function (SortOrder) { SortOrder["ASC"] = "asc"; SortOrder["DESC"] = "desc"; })(SortOrder = exports.SortOrder || (exports.SortOrder = {})); /***/ }), /***/ "./src/DataTable/util.ts": /*!*******************************!*\ !*** ./src/DataTable/util.ts ***! \*******************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.equalizeId = exports.findColumnIndexById = exports.isOdd = exports.isRowSelected = exports.getConditionalStyle = exports.noop = exports.recalculatePage = exports.getNumberOfPages = exports.handleFunctionProps = exports.getSortDirection = exports.decorateColumns = exports.removeItem = exports.insertItem = exports.getProperty = exports.parseSelector = exports.sort = exports.isEmpty = exports.prop = void 0; var types_1 = __webpack_require__(/*! ./types */ "./src/DataTable/types.ts"); function prop(obj, key) { return obj[key]; } exports.prop = prop; function isEmpty(field) { if (field === void 0) { field = ''; } if (typeof field === 'number') { return false; } return !field || field.length === 0; } exports.isEmpty = isEmpty; function sort(rows, // TODO: remove string in V8 selector, direction, sortFn) { if (!selector) { return rows; } if (sortFn && typeof sortFn === 'function') { // we must create a new rows reference return sortFn(rows.slice(0), selector, direction); } return rows.slice(0).sort(function (a, b) { var aValue; var bValue; if (typeof selector === 'string') { // @ts-ignore aValue = parseSelector(a, selector); // @ts-ignore bValue = parseSelector(b, selector); } else { aValue = selector(a); bValue = selector(b); } if (direction === 'asc') { if (aValue < bValue) { return -1; } if (aValue > bValue) { return 1; } } if (direction === 'desc') { if (aValue > bValue) { return -1; } if (aValue < bValue) { return 1; } } return 0; }); } exports.sort = sort; // TODO: string based selectors will be removed in v8 // eslint-disable-next-line @typescript-eslint/no-explicit-any function parseSelector(row, selector) { return selector.split('.').reduce(function (acc, part) { // O(n2) when querying for an array (e.g. items[0].name) // Likely, the object depth will be reasonable enough that performance is not a concern var arr = part.match(/[^\]\\[.]+/g); if (arr && arr.length > 1) { for (var i = 0; i < arr.length; i++) { return acc[arr[i]][arr[i + 1]]; } } return acc[part]; }, row); } exports.parseSelector = parseSelector; function getProperty(row, // TODO: remove string type in V8 selector, // unknown allows us to throw an error for JS code format, rowIndex) { if (!selector) { return null; } // TODO: remove string check in V8 if (typeof selector !== 'string' && typeof selector !== 'function') { throw new Error('selector must be a . delimited string eg (my.property) or function (e.g. row => row.field'); } // format will override how the selector is displayed but the original dataset is used for sorting if (format && typeof format === 'function') { return format(row, rowIndex); } if (selector && typeof selector === 'function') { return selector(row, rowIndex); } // TODO: Remove in V8 // @ts-ignore return parseSelector(row, selector); } exports.getProperty = getProperty; function insertItem(array, item, index) { if (array === void 0) { array = []; } if (index === void 0) { index = 0; } return __spreadArray(__spreadArray(__spreadArray([], array.slice(0, index), true), [item], false), array.slice(index), true); } exports.insertItem = insertItem; function removeItem(array, item, keyField) { if (array === void 0) { array = []; } if (keyField === void 0) { keyField = 'id'; } var newArray = array.slice(); var outerField = prop(item, keyField); if (outerField) { newArray.splice(newArray.findIndex(function (a) { var innerField = prop(a, keyField); return innerField === outerField; }), 1); } else { newArray.splice(newArray.findIndex(function (a) { return a === item; }), 1); } return newArray; } exports.removeItem = removeItem; // Make sure columns have unique id's function decorateColumns(columns) { return columns.map(function (column, index) { var decoratedColumn = __assign(__assign({}, column), { sortable: column.sortable || !!column.sortFunction || undefined }); if (!column.id) { decoratedColumn.id = index + 1; return decoratedColumn; } return decoratedColumn; }); } exports.decorateColumns = decorateColumns; function getSortDirection(ascDirection) { if (ascDirection === void 0) { ascDirection = false; } return ascDirection ? types_1.SortOrder.ASC : types_1.SortOrder.DESC; } exports.getSortDirection = getSortDirection; function handleFunctionProps(object) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var newObject; Object.keys(object) .map(function (o) { return object[o]; }) .forEach(function (value, index) { var _a; var oldObject = object; if (typeof value === 'function') { newObject = __assign(__assign({}, oldObject), (_a = {}, _a[Object.keys(object)[index]] = value.apply(void 0, args), _a)); // delete oldObject[value]; } }); return newObject || object; } exports.handleFunctionProps = handleFunctionProps; function getNumberOfPages(rowCount, rowsPerPage) { return Math.ceil(rowCount / rowsPerPage); } exports.getNumberOfPages = getNumberOfPages; function recalculatePage(prevPage, nextPage) { return Math.min(prevPage, nextPage); } exports.recalculatePage = recalculatePage; var noop = function () { return null; }; exports.noop = noop; function getConditionalStyle(row, conditionalRowStyles, baseClassNames) { if (conditionalRowStyles === void 0) { conditionalRowStyles = []; } if (baseClassNames === void 0) { baseClassNames = []; } var rowStyle = {}; var classNames = __spreadArray([], baseClassNames, true); if (conditionalRowStyles.length) { conditionalRowStyles.forEach(function (crs) { if (!crs.when || typeof crs.when !== 'function') { throw new Error('"when" must be defined in the conditional style object and must be function'); } // evaluate the field and if true return a the style to be applied if (crs.when(row)) { rowStyle = crs.style || {}; if (crs.classNames) { classNames = __spreadArray(__spreadArray([], classNames, true), crs.classNames, true); } if (typeof crs.style === 'function') { rowStyle = crs.style(row) || {}; } } }); } return { style: rowStyle, classNames: classNames.join(' ') }; } exports.getConditionalStyle = getConditionalStyle; function isRowSelected(row, selectedRows, keyField) { if (selectedRows === void 0) { selectedRows = []; } if (keyField === void 0) { keyField = 'id'; } // cast row as TableRow because the property is unknown in advance therefore, typescript will throw an error var outerField = prop(row, keyField); if (outerField) { return selectedRows.some(function (r) { var innerField = prop(r, keyField); return innerField === outerField; }); } return selectedRows.some(function (r) { return r === row; }); } exports.isRowSelected = isRowSelected; function isOdd(num) { return num % 2 === 0; } exports.isOdd = isOdd; function findColumnIndexById(columns, id) { if (!id) { return -1; } return columns.findIndex(function (c) { return equalizeId(c.id, id); }); } exports.findColumnIndexById = findColumnIndexById; function equalizeId(a, b) { return a == b; } exports.equalizeId = equalizeId; /***/ }), /***/ "./src/cmps/badge/Badge.tsx": /*!**********************************!*\ !*** ./src/cmps/badge/Badge.tsx ***! \**********************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Badge = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var Badge = /** @class */ (function (_super) { __extends(Badge, _super); function Badge() { return _super !== null && _super.apply(this, arguments) || this; } Badge.prototype.render = function () { return React.createElement("span", __assign({}, this.props, { className: 'badge ' + this.props.className })); }; return Badge; }(React.Component)); exports.Badge = Badge; /***/ }), /***/ "./src/cmps/button/Button.tsx": /*!************************************!*\ !*** ./src/cmps/button/Button.tsx ***! \************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Button = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var Button = /** @class */ (function (_super) { __extends(Button, _super); function Button() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.defaultProps = { duration: 950 }; return _this; } // constructor(props: ButtonProps) { // super(props); // } /** * Initialisation of the wave effect after the component did mount */ Button.prototype.componentDidMount = function () { var _this = this; if (this.el) { //new Waves(this.el, { duration: 950 }); if ('ontouchstart' in window) { this.el.addEventListener('touchstart', function (e) { _this.triggerEffect.bind(_this)(e); }, false); } this.el.addEventListener('mousedown', function (e) { _this.triggerEffect.bind(_this)(e); }, false); } }; Button.prototype.triggerEffect = function (e) { var _this = this; if (this.el) { this.showEffect(e); if ('ontouchstart' in window) { this.el.addEventListener('touchend', function (e) { _this.hideEffect.bind(_this)(e); }, false); this.el.addEventListener('touchcancel', function (e) { _this.hideEffect.bind(_this)(e); }, false); } this.el.addEventListener('mouseup', function (e) { _this.hideEffect.bind(_this)(e); }, false); this.el.addEventListener('mouseleave', function (e) { _this.hideEffect.bind(_this)(e); }, false); this.el.addEventListener('dragend', function (e) { _this.hideEffect.bind(_this)(e); }, false); } }; Button.prototype.isWindow = function (obj) { return obj !== null && obj === obj.window; }; Button.prototype.getWindow = function (elem) { return this.isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView; }; Button.prototype.offset = function () { var _a, _b; var docElem, win, box = { top: 0, left: 0 }, doc = this.el && this.el.ownerDocument; docElem = doc === null || doc === void 0 ? void 0 : doc.documentElement; if (typeof ((_a = this.el) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect) !== typeof undefined) { box = ((_b = this.el) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect()) || { top: 0, left: 0 }; } win = this.getWindow(doc); return { top: box.top + win.pageYOffset - ((docElem === null || docElem === void 0 ? void 0 : docElem.clientTop) || 0), left: box.left + win.pageXOffset - ((docElem === null || docElem === void 0 ? void 0 : docElem.clientLeft) || 0) }; }; Button.prototype.showEffect = function (e) { if (this.el && document) { // Disable right click if (e.button === 2) { return false; } // Create ripple var ripple = document.createElement('div'); ripple.className = 'waves-ripple'; this.el.appendChild(ripple); this.ripple = ripple; // Get click coordinate and element witdh var pos = this.offset(); var relativeY = (e.pageY - pos.top); var relativeX = (e.pageX - pos.left); var scale = 'scale(' + ((this.el.clientWidth / 100) * 10) + ')'; // Support for touch devices if ('touches' in e) { relativeY = (e.touches[0].pageY - pos.top); relativeX = (e.touches[0].pageX - pos.left); } // Attach data to element this.ripple.setAttribute('data-hold', Date.now().toString()); this.ripple.setAttribute('data-scale', scale); this.ripple.setAttribute('data-x', relativeX.toString()); this.ripple.setAttribute('data-y', relativeY.toString()); // Set ripple position var rippleStyle = { 'top': relativeY + 'px', 'left': relativeX + 'px' }; //this.ripple.className = this.ripple.className + ' waves-notransition'; this.ripple.setAttribute('style', this.convertStyle(rippleStyle)); this.ripple.className = this.ripple.className.replace('waves-notransition', ''); // Scale the ripple rippleStyle['-webkit-transform'] = scale; rippleStyle['-moz-transform'] = scale; rippleStyle['-ms-transform'] = scale; rippleStyle['-o-transform'] = scale; rippleStyle['transform'] = scale; rippleStyle['opacity'] = '1'; rippleStyle['-webkit-transition-duration'] = 2 * this.props.duration / 3 + 'ms'; rippleStyle['-moz-transition-duration'] = 2 * this.props.duration / 3 + 'ms'; rippleStyle['-o-transition-duration'] = 2 * this.props.duration / 3 + 'ms'; rippleStyle['transition-duration'] = 2 * this.props.duration / 3 + 'ms'; rippleStyle['-webkit-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; rippleStyle['-moz-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; rippleStyle['-o-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; rippleStyle['transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; this.ripple.setAttribute('style', this.convertStyle(rippleStyle)); } }; Button.prototype.convertStyle = function (obj) { var style = ''; for (var a in obj) { if (obj.hasOwnProperty(a)) { style += (a + ':' + obj[a] + ';'); } } return style; }; Button.prototype.hideEffect = function () { if (this.el) { //Effect.hide var ripple_1 = this.el.lastElementChild; if (ripple_1 && ripple_1.classList.contains("waves-ripple")) { var relativeX_1 = ripple_1.getAttribute('data-x'); var relativeY_1 = ripple_1.getAttribute('data-y'); var scale_1 = ripple_1.getAttribute('data-scale'); // Get delay beetween mousedown and mouse leave var diff = Date.now() - Number(ripple_1.getAttribute('data-hold')); var delay = this.props.duration / 2 - diff; if (delay < 0) { delay = 0; } var me_1 = this; // Fade out ripple after delay setTimeout(function () { var style = { 'top': relativeY_1 + 'px', 'left': relativeX_1 + 'px', 'opacity': '0', // Duration '-webkit-transition-duration': me_1.props.duration / 3 + 'ms', '-moz-transition-duration': me_1.props.duration / 3 + 'ms', '-o-transition-duration': me_1.props.duration / 3 + 'ms', 'transition-duration': me_1.props.duration / 3 + 'ms', '-webkit-transform': scale_1, '-moz-transform': scale_1, '-ms-transform': scale_1, '-o-transform': scale_1, 'transform': scale_1, }; ripple_1 === null || ripple_1 === void 0 ? void 0 : ripple_1.setAttribute('style', me_1.convertStyle(style)); setTimeout(function () { var _a; try { ripple_1 && ((_a = me_1.el) === null || _a === void 0 ? void 0 : _a.removeChild(ripple_1)); } catch (e) { return false; } }, me_1.props.duration); }, delay); } } }; Button.prototype.render = function () { var _this = this; var className = "btn waves-effect "; // if (this.props.model == "circle") { // className += "btn-floating "; // } // if (this.props.size == "large") { // className += "btn-large "; // } // if (this.props.size == "small") { // className += "btn-small "; // } return (React.createElement("a", __assign({ href: "#section" }, this.props, { ref: function (el) { _this.el = el; }, className: className + this.props.className }))); }; return Button; }(React.Component)); exports.Button = Button; /***/ }), /***/ "./src/cmps/card/Card.tsx": /*!********************************!*\ !*** ./src/cmps/card/Card.tsx ***! \********************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.CardAction = exports.CardTitle = exports.CardContent = exports.Card = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var Card = /** @class */ (function (_super) { __extends(Card, _super); function Card() { return _super !== null && _super.apply(this, arguments) || this; } Card.prototype.render = function () { return React.createElement("div", __assign({}, this.props, { className: "card " + this.props.className })); }; return Card; }(React.Component)); exports.Card = Card; var CardContent = /** @class */ (function (_super) { __extends(CardContent, _super); function CardContent() { return _super !== null && _super.apply(this, arguments) || this; } CardContent.prototype.render = function () { return (React.createElement("div", __assign({}, this.props, { className: "card-content " + this.props.className }))); }; return CardContent; }(React.Component)); exports.CardContent = CardContent; var CardTitle = /** @class */ (function (_super) { __extends(CardTitle, _super); function CardTitle() { return _super !== null && _super.apply(this, arguments) || this; } CardTitle.prototype.render = function () { return (React.createElement("span", __assign({}, this.props, { className: "card-title " + this.props.className }))); }; return CardTitle; }(React.Component)); exports.CardTitle = CardTitle; var CardAction = /** @class */ (function (_super) { __extends(CardAction, _super); function CardAction() { return _super !== null && _super.apply(this, arguments) || this; } CardAction.prototype.render = function () { return (React.createElement("div", __assign({}, this.props, { className: "card-action " + this.props.className }))); }; return CardAction; }(React.Component)); exports.CardAction = CardAction; /***/ }), /***/ "./src/cmps/chip/Chip.tsx": /*!********************************!*\ !*** ./src/cmps/chip/Chip.tsx ***! \********************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Chip = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var Chip = /** @class */ (function (_super) { __extends(Chip, _super); function Chip() { return _super !== null && _super.apply(this, arguments) || this; } Chip.prototype.render = function () { return React.createElement("div", __assign({}, this.props, { className: 'chip ' + this.props.className })); }; return Chip; }(React.Component)); exports.Chip = Chip; exports["default"] = Chip; /***/ }), /***/ "./src/cmps/collapsible/Collapsible.tsx": /*!**********************************************!*\ !*** ./src/cmps/collapsible/Collapsible.tsx ***! \**********************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.CollapsTrigger = exports.CollapsBody = exports.Collapsible = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var Icon_1 = __webpack_require__(/*! ../icons/Icon */ "./src/cmps/icons/Icon.tsx"); var Collapsible = /** @class */ (function (_super) { __extends(Collapsible, _super); function Collapsible() { return _super !== null && _super.apply(this, arguments) || this; } Collapsible.prototype.render = function () { return (React.createElement("ul", __assign({}, this.props, { className: "collapsible " + this.props.className }))); }; return Collapsible; }(React.Component)); exports.Collapsible = Collapsible; var CollapsBody = /** @class */ (function (_super) { __extends(CollapsBody, _super); function CollapsBody() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.el = null; return _this; } CollapsBody.prototype.render = function () { var _this = this; return (React.createElement("div", __assign({}, this.props, { ref: function (ref) { _this.el = ref; }, className: "collapsible-body " + this.props.className }))); }; return CollapsBody; }(React.Component)); exports.CollapsBody = CollapsBody; var CollapsTrigger = /** @class */ (function (_super) { __extends(CollapsTrigger, _super); function CollapsTrigger() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.state = { isOpen: false }; _this.el = null; return _this; } CollapsTrigger.prototype.componentDidMount = function () { // new Waves(this.el, { duration: 1050 }); }; CollapsTrigger.prototype.showHideBody = function (e) { if (this.isOpen()) { this.collapse(e); } else { this.expand(e); } }; CollapsTrigger.prototype.collapse = function (e) { e.stopPropagation(); var collapsible = this.findCollapsible.bind(this)(); if (collapsible) { var bodyEl = collapsible.querySelector(".collapsible-body"); if (bodyEl) { bodyEl.style.display = 'none'; this.setState({ isOpen: false }); } } }; CollapsTrigger.prototype.findCollapsible = function () { var parentEl = this.el && this.el.parentElement; if (parentEl && !parentEl.classList.contains("collapsible")) { parentEl = parentEl && parentEl.parentElement; } return parentEl; }; CollapsTrigger.prototype.expand = function (e) { e.stopPropagation(); var collapsible = this.findCollapsible.bind(this)(); if (collapsible) { var bodyEl = collapsible.querySelector(".collapsible-body"); if (bodyEl) { bodyEl.style.display = 'block'; this.setState({ isOpen: true }); } } }; CollapsTrigger.prototype.isOpen = function () { return this.state.isOpen; }; CollapsTrigger.prototype.render = function () { var _this = this; var icon = (this.state.isOpen == true) ? React.createElement(Icon_1.Icon, { style: { float: "right" } }, "chevron_down") : React.createElement(Icon_1.Icon, { style: { float: "right" } }, "chevron_right"); return (React.createElement("div", __assign({}, this.props, { ref: function (ref) { _this.el = ref; }, className: "collapsible-header " + this.props.className, onClick: function (e) { return _this.showHideBody.bind(_this)(e); } }), icon, this.props.children)); }; return CollapsTrigger; }(React.Component)); exports.CollapsTrigger = CollapsTrigger; /***/ }), /***/ "./src/cmps/collections/Collection.tsx": /*!*********************************************!*\ !*** ./src/cmps/collections/Collection.tsx ***! \*********************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.CollectionItem = exports.Collection = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var Collection = /** @class */ (function (_super) { __extends(Collection, _super); function Collection() { return _super !== null && _super.apply(this, arguments) || this; } Collection.prototype.render = function () { var _this = this; var className = this.props.className; return React.createElement("ul", __assign({}, this.props, { ref: function (r) { return _this.el = r; }, className: "collection " + (className || "") })); }; return Collection; }(React.Component)); exports.Collection = Collection; var CollectionItem = /** @class */ (function (_super) { __extends(CollectionItem, _super); function CollectionItem() { return _super !== null && _super.apply(this, arguments) || this; } CollectionItem.prototype.render = function () { var _this = this; var className = this.props.className; return React.createElement("li", __assign({}, this.props, { ref: function (r) { return _this.el = r; }, className: "collection-item " + (className || "") })); }; return CollectionItem; }(React.Component)); exports.CollectionItem = CollectionItem; /***/ }), /***/ "./src/cmps/forms/Field.tsx": /*!**********************************!*\ !*** ./src/cmps/forms/Field.tsx ***! \**********************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Field = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); // @ts-ignore var V = __webpack_require__(/*! ./rex */ "./src/cmps/forms/rex.tsx"); var Field = /** @class */ (function (_super) { __extends(Field, _super); function Field(props) { var _this = _super.call(this, props) || this; _this.state = { labelClassName: '', focusCount: 0, errmsg: "" }; _this.id = _this.uuidv4(); return _this; } Field.prototype.getDefaults = function () { return { placeholder: '', id: Date.now(), className: 'validate', label: 'Text', type: 'text', icon: 'account_circle' }; }; Field.prototype.getValue = function () { return this.el && this.el.value; }; Field.prototype.setValue = function (val) { if (this.el) { this.el.value = val; if (val !== "") { this.label && this.label.classList.add('active'); } } }; Field.prototype.isValid = function () { return this.validate(true); }; Field.prototype.onBlur = function (e) { e.stopPropagation(); e.preventDefault(); if (this.label && ((this.props.placeholder !== '') || (this.el && this.el.value !== ""))) { if (!this.label.classList.contains("active")) { this.label.classList.add('active'); } } else { this.label && this.label.classList.remove('active'); } if (this.props.onBlur && typeof this.props.onBlur === "function") { this.props.onBlur(e); } this.validate(true); this.setState({ focusCount: this.state.focusCount + 1 }); }; Field.prototype.onFocus = function (e) { if (this.label && !this.label.classList.contains("active")) { this.label.classList.add('active'); } if (this.props.onFocus && typeof this.props.onFocus === "function") { this.props.onFocus(e); } }; Field.prototype.validate = function (blure) { if (blure === void 0) { blure = false; } if (blure) { this.setState({ focusCount: this.state.focusCount + 1 }); } if (this.state.focusCount > 0 || blure) { var _a = this.props, min = _a.min, max = _a.max, required = _a.required, vtype = _a.vtype, vtypeMsg = _a.vtypeMsg; if (this.el && this.el.value && this.el.value !== '') { var length_1 = this.el.value.length; if (min && max && (length_1 < min || length_1 > max)) { this.setState({ errmsg: min != max ? "doit avoir une longeur comprise entre ".concat(min, " et ").concat(max, ".") : "doit avoir une longeur de ".concat(min, " caract\u00E8res") }); this.el.classList.remove('valid'); this.el.classList.add('invalid'); this.makeInValid(); return false; } else if (!min && max && length_1 > max) { this.setState({ errmsg: "doit avoir une longeur maximal de ".concat(max, ".") }); this.el.classList.remove('valid'); this.el.classList.add('invalid'); this.makeInValid(); return false; } else if (min && !max && length_1 < min) { this.setState({ errmsg: "doit avoir une longeur minimal de ".concat(min, ".") }); this.el.classList.remove('valid'); this.el.classList.add('invalid'); this.makeInValid(); return false; } else if (vtype && !V[vtype].test(this.el.value)) { this.setState({ errmsg: vtypeMsg || "Doit \u00EAtre un ".concat(vtype, " valide.") }); this.el.classList.remove('valid'); this.el.classList.add('invalid'); this.makeInValid(); return false; } else { this.setState({ errmsg: "" }); this.el.classList.remove('invalid'); this.el.classList.add('valid'); return true; } } else { if (required) { this.setState({ errmsg: "Ne peu pas etre vide." }); this.makeInValid(); return false; } else { this.setState({ errmsg: "" }); this.makeValid(); //this.el.classList.add('valid'); return true; } } } return false; }; Field.prototype.makeInValid = function () { if (this.el) { this.el.classList.remove('valid'); this.el.classList.add('invalid'); } }; Field.prototype.makeValid = function () { if (this.el) { this.el.classList.add('valid'); this.el.classList.remove('invalid'); } }; Field.prototype.componentDidMount = function () { if (this.label && ((this.props.placeholder !== '') || (this.el && this.el.value !== ""))) { this.label.classList.add('active'); this.setState({ labelClassName: 'active' }); } }; Field.prototype.onKeyUp = function (e) { if (e && "Enter" === e.key && this.props.onEnterKey) { e.preventDefault(); e.stopPropagation(); this.props.onEnterKey(e, this); } this.validate(); }; Field.prototype.uuidv4 = function () { // @ts-ignore return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) { return (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16); }); }; Field.prototype.getErrorView = function () { if (this.state.errmsg != null && this.state.errmsg !== "") { return React.createElement("div", { className: "helper-text" }, this.state.errmsg); } }; Field.prototype.render = function () { var _this = this; var props = __assign({}, this.props); // @ts-ignore delete props.vtypeMsg; // @ts-ignore delete props.onEnterKey; return React.createElement("div", { className: "input-field" }, React.createElement("label", { ref: function (ref) { return (_this.label = ref); }, htmlFor: this.id, className: this.state.labelClassName }, this.props.label + (this.props.required === true ? ' *' : '')), React.createElement("input", __assign({}, props, { ref: function (ref) { _this.el = ref; }, value: this.props.value || '', onChange: this.props.onChange || (function () { }), onFocus: function (e) { return _this.onFocus.bind(_this)(e); }, type: this.props.type || "text", onBlur: function (e) { return _this.onBlur.bind(_this)(e); }, onKeyUp: function (e) { return _this.onKeyUp.bind(_this)(e); }, id: this.id, className: "validate " + this.props.className })), this.getErrorView()); }; return Field; }(React.Component)); exports.Field = Field; /***/ }), /***/ "./src/cmps/forms/Textarea.tsx": /*!*************************************!*\ !*** ./src/cmps/forms/Textarea.tsx ***! \*************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Textarea = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var PropTypes = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); var autosize = __webpack_require__(/*! autosize */ "./node_modules/autosize/dist/autosize.js"); var line_height_1 = __webpack_require__(/*! ./line-height */ "./src/cmps/forms/line-height.tsx"); var getLineHeight = line_height_1.default; var Textarea = /** @class */ (function (_super) { __extends(Textarea, _super); function Textarea() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.textarea = null; _this.state = { lineHeight: null }; _this.onResize = function (e) { if (_this.props.onResize) { _this.props.onResize(e); } }; _this.onChange = function (e) { var onChange = _this.props.onChange; _this.currentValue = e.currentTarget.value; onChange && onChange(e); }; _this.updateLineHeight = function () { if (_this.textarea) { _this.setState({ lineHeight: getLineHeight(_this.textarea) }); } }; return _this; } Textarea.prototype.componentDidUpdate = function () { this.textarea && autosize.update(this.textarea); }; Textarea.prototype.componentDidMount = function () { var _this = this; var _a = this.props, maxRows = _a.maxRows, async = _a.async; if (typeof maxRows === "number") { this.updateLineHeight(); } if (typeof maxRows === "number" || async) { /* the defer is needed to: - force "autosize" to activate the scrollbar when this.props.maxRows is passed - support StyledComponents (see #71) */ setTimeout( // @ts-ignore function () { return _this.textarea && autosize(_this.textarea); }); } else { // @ts-ignore this.textarea && autosize(this.textarea); } if (this.textarea) { this.textarea.addEventListener("autosize:resized", this.onResize); } }; Textarea.prototype.componentWillUnmount = function () { if (this.textarea) { this.textarea.removeEventListener("autosize:resized", this.onResize); autosize.destroy(this.textarea); } }; Textarea.prototype.render = function () { var _this = this; var _a = this, _b = _a.props, onResize = _b.onResize, maxRows = _b.maxRows, onChange = _b.onChange, style = _b.style, children = _b.children, props = __rest(_b, ["onResize", "maxRows", "onChange", "style", "children"]), lineHeight = _a.state.lineHeight; var maxHeight = maxRows && lineHeight ? lineHeight * maxRows : null; return (React.createElement("textarea", __assign({}, props, { onChange: this.onChange, className: "textarea " + (this.props.className || ""), style: maxHeight ? __assign(__assign({}, style), { maxHeight: maxHeight }) : style, ref: function (element) { _this.textarea = element; } }), children)); }; Textarea.defaultProps = { rows: 1, async: false }; Textarea.propTypes = { rows: PropTypes.number, maxRows: PropTypes.number, onResize: PropTypes.func, async: PropTypes.bool }; return Textarea; }(React.Component)); exports.Textarea = Textarea; /***/ }), /***/ "./src/cmps/forms/line-height.tsx": /*!****************************************!*\ !*** ./src/cmps/forms/line-height.tsx ***! \****************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); // Load in dependencies var computedStyle = __webpack_require__(/*! computed-style */ "./node_modules/computed-style/dist/computedStyle.commonjs.js"); /** * Calculate the `line-height` of a given node * @param {HTMLElement} node Element to calculate line height of. Must be in the DOM. * @returns {Number} `line-height` of the element in pixels */ function lineHeight(node) { // Grab the line-height via style var lnHeightStr = computedStyle(node, 'line-height'); var lnHeight = parseFloat(lnHeightStr); // If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em') if (lnHeightStr === lnHeight + '') { // Save the old lineHeight style and update the em unit to the element var _lnHeightStyle = node.style.lineHeight; node.style.lineHeight = lnHeightStr + 'em'; // Calculate the em based height lnHeightStr = computedStyle(node, 'line-height'); lnHeight = parseFloat(lnHeightStr); // Revert the lineHeight style if (_lnHeightStyle) { node.style.lineHeight = _lnHeightStyle; } else { //delete node.style.lineHeight; } } // If the lineHeight is in `pt`, convert it to pixels (4px for 3pt) // DEV: `em` units are converted to `pt` in IE6 // Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length if (lnHeightStr.indexOf('pt') !== -1) { lnHeight *= 4; lnHeight /= 3; // Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm) } else if (lnHeightStr.indexOf('mm') !== -1) { lnHeight *= 96; lnHeight /= 25.4; // Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm) } else if (lnHeightStr.indexOf('cm') !== -1) { lnHeight *= 96; lnHeight /= 2.54; // Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in) } else if (lnHeightStr.indexOf('in') !== -1) { lnHeight *= 96; // Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc) } else if (lnHeightStr.indexOf('pc') !== -1) { lnHeight *= 16; } // Continue our computation lnHeight = Math.round(lnHeight); // If the line-height is "normal", calculate by font-size if (lnHeightStr === 'normal') { // Create a temporary node var nodeName = node.nodeName; var _node = document && document.createElement(nodeName); _node.innerHTML = ' '; // If we have a text area, reset it to only 1 row // https://github.com/twolfson/line-height/issues/4 if (nodeName.toUpperCase() === 'TEXTAREA') { _node.setAttribute('rows', '1'); } // Set the font-size of the element var fontSizeStr = computedStyle(node, 'font-size'); _node.style.fontSize = fontSizeStr; // Remove default padding/border which can affect offset height // https://github.com/twolfson/line-height/issues/4 // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight _node.style.padding = '0px'; _node.style.border = '0px'; // Append it to the body var body = document.body; body.appendChild(_node); // Assume the line height of the element is the height var height = _node.offsetHeight; lnHeight = height; // Remove our child from the DOM body.removeChild(_node); } // Return the calculated height return lnHeight; } exports["default"] = lineHeight; /***/ }), /***/ "./src/cmps/forms/rex.tsx": /*!********************************!*\ !*** ./src/cmps/forms/rex.tsx ***! \********************************/ /***/ ((module) => { "use strict"; module.exports = { "num": /^[0-9]+$/, "numeric": /^[0-9]+$/, "alpha": /^[a-zA-Z_]+$/, "alphabetic": /^[a-zA-Z_]+$/, "alphanum": /^[a-zA-Z0-9_]+$/, "alphanumeric": /^[a-zA-Z0-9_]+$/, "email": /^(")?(?:[^\."\s])(?:(?:[\.])?(?:[\w\-!#$%&'*+/=?^_`{|}~]))*\1@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/, "url": /(((^https?)|(^ftp)):\/\/((([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*)|(localhost|LOCALHOST))\/?)/i, "ipAddress": /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/, "phone": /^(?:(?:\+|00)33|0)\s*[1-9](?:\d{2}){4}$/, "codePost": /^(((?!(96|97|98|99|00)))[0-9]{5})$|(2A|2B|2a|2b)[0-9]{3}$|(971|972|973|974|975|976)[0-9]{2}$/, "codePostal": /^(((?!(96|97|98|99|00)))[0-9]{5})$|(2A|2B|2a|2b)[0-9]{3}$|(971|972|973|974|975|976)[0-9]{2}$/, "time": /^([1-9]|1[0-9]):([0-5][0-9])(\s[a|p]m)$/, "price": /^\d+(\.\d{2})?$/, "prix": /^\d+(\.\d{2})?$/, "date": /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/, "tva": /^(5\.5|10|20)$/, "password": /(?=^.{8,}$)(?=.*\d)(?=.*[!@#$%^&*]+)(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/, "motDePasse": /(?=^.{8,}$)(?=.*\d)(?=.*[!@#$%^&*]+)(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/, "matricule": /(^\d{1,4}[A-Za-z]{1,4}\d{1,2}$)|(^[A-Za-z]{1,2}\s*\d{1,3}\s*[A-Za-z]{1,2})$/, "tvaIntercom": /^(FR)([0-9]{11}$)/, "iban": /^FR\d{12}[A-Z0-9]{11}\d{2}$/, "timeMask": /[\d\s:amp]/i, 'numMask': /[0-9]/i, 'alphaMask': /[a-z_]/i, 'alphanumMask': /[a-z0-9_]/i, 'emailMask': /[\w.\-@'"!#$%&'*+/=?^_`{|}~]/i, 'urlMask': /[a-z0-9_]/i, 'ipAddressMask': /[\d\.]/i, "phoneMask": /[0-9\+]/i, "codePostMask": /[0-9ABab]/i, 'passwordMask': /[\w.\-@'"!#$%&'*+/=?^_`{|}~]/i, }; /***/ }), /***/ "./src/cmps/icons/Icon.tsx": /*!*********************************!*\ !*** ./src/cmps/icons/Icon.tsx ***! \*********************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Icon = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var Icon = /** @class */ (function (_super) { __extends(Icon, _super); function Icon() { return _super !== null && _super.apply(this, arguments) || this; } Icon.prototype.render = function () { return React.createElement("span", __assign({}, this.props, { className: "s-icon " + this.props.className })); }; return Icon; }(React.Component)); exports.Icon = Icon; /***/ }), /***/ "./src/cmps/layouts/Layouts.tsx": /*!**************************************!*\ !*** ./src/cmps/layouts/Layouts.tsx ***! \**************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Overlay = exports.Divider = exports.Parallax = exports.Row = exports.Col = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var Col = /** @class */ (function (_super) { __extends(Col, _super); function Col() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.el = null; return _this; } Col.prototype.render = function () { var _this = this; return (React.createElement("div", __assign({}, this.props, { ref: function (ref) { return _this.el = ref; }, className: "col " + this.props.className }))); }; return Col; }(React.Component)); exports.Col = Col; var Row = /** @class */ (function (_super) { __extends(Row, _super); function Row() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.el = null; return _this; } Row.prototype.render = function () { var _this = this; return (React.createElement("div", __assign({}, this.props, { ref: function (ref) { return _this.el = ref; }, className: "row " + this.props.className }))); }; return Row; }(React.Component)); exports.Row = Row; var Parallax = /** @class */ (function (_super) { __extends(Parallax, _super); function Parallax() { return _super !== null && _super.apply(this, arguments) || this; } Parallax.prototype.render = function () { var st = __assign({}, this.props.style); st.backgroundImage = "url(" + this.props.src + ")"; return React.createElement("div", { className: "parallax", style: st }, this.props.children); }; return Parallax; }(React.Component)); exports.Parallax = Parallax; var Divider = /** @class */ (function (_super) { __extends(Divider, _super); function Divider() { return _super !== null && _super.apply(this, arguments) || this; } Divider.prototype.render = function () { return (React.createElement("div", { className: "divider" })); }; return Divider; }(React.Component)); exports.Divider = Divider; var Overlay = /** @class */ (function (_super) { __extends(Overlay, _super); function Overlay() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.state = { visible: false }; _this.el = null; return _this; } Overlay.prototype.show = function () { this.setState({ visible: true }); }; Overlay.prototype.open = function () { return this.show(); }; Overlay.prototype.isVisible = function () { return this.state.visible; }; Overlay.prototype.hide = function () { this.setState({ visible: false }); }; Overlay.prototype.close = function () { return this.hide(); }; Overlay.prototype.render = function () { var _this = this; if (this.state.visible) { return (React.createElement("div", __assign({ ref: function (ref) { _this.el = ref; } }, this.props, { className: "modal-overlay " + this.props.className }))); } return null; }; return Overlay; }(React.Component)); exports.Overlay = Overlay; /***/ }), /***/ "./src/cmps/modal/Modal.tsx": /*!**********************************!*\ !*** ./src/cmps/modal/Modal.tsx ***! \**********************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.ModalHeader = exports.ModalFooter = exports.ModalContent = exports.Modal = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var Modal = /** @class */ (function (_super) { __extends(Modal, _super); function Modal() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.state = { isOpen: false }; return _this; } Modal.prototype.open = function () { this.setState({ isOpen: true }); }; Modal.prototype.close = function () { this.setState({ isOpen: false }); }; Modal.prototype.show = function () { return this.open(); }; Modal.prototype.hide = function () { return this.close(); }; Modal.prototype.render = function () { if (this.state.isOpen) { return (React.createElement("div", { className: "modal-overlay" }, React.createElement("div", __assign({}, this.props, { className: "modal " + (this.props.className || "") })))); } return null; }; return Modal; }(React.Component)); exports.Modal = Modal; var ModalContent = /** @class */ (function (_super) { __extends(ModalContent, _super); function ModalContent() { return _super !== null && _super.apply(this, arguments) || this; } ModalContent.prototype.render = function () { return (React.createElement("div", __assign({}, this.props, { className: "modal-content " + (this.props.className || "") }))); }; return ModalContent; }(React.Component)); exports.ModalContent = ModalContent; var ModalFooter = /** @class */ (function (_super) { __extends(ModalFooter, _super); function ModalFooter() { return _super !== null && _super.apply(this, arguments) || this; } ModalFooter.prototype.render = function () { return (React.createElement("div", __assign({}, this.props, { className: "modal-footer " + (this.props.className || "") }))); }; return ModalFooter; }(React.Component)); exports.ModalFooter = ModalFooter; var ModalHeader = /** @class */ (function (_super) { __extends(ModalHeader, _super); function ModalHeader() { return _super !== null && _super.apply(this, arguments) || this; } ModalHeader.prototype.render = function () { return (React.createElement("div", __assign({}, this.props, { className: "modal-header " + (this.props.className || "") }))); }; return ModalHeader; }(React.Component)); exports.ModalHeader = ModalHeader; /***/ }), /***/ "./src/cmps/navigation/NavBar.tsx": /*!****************************************!*\ !*** ./src/cmps/navigation/NavBar.tsx ***! \****************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.NavBarBrand = exports.NavBarItem = exports.NavBarGroup = exports.NavBar = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var NavBar = /** @class */ (function (_super) { __extends(NavBar, _super); function NavBar() { return _super !== null && _super.apply(this, arguments) || this; } NavBar.prototype.render = function () { return React.createElement("nav", null, React.createElement("div", __assign({}, this.props, { className: "nav-wrapper" }))); }; return NavBar; }(React.Component)); exports.NavBar = NavBar; var NavBarGroup = /** @class */ (function (_super) { __extends(NavBarGroup, _super); function NavBarGroup() { return _super !== null && _super.apply(this, arguments) || this; } NavBarGroup.prototype.render = function () { return React.createElement("ul", __assign({}, this.props, { className: "right hide-on-med-and-down ·" + (this.props.className || "") })); }; return NavBarGroup; }(React.Component)); exports.NavBarGroup = NavBarGroup; var NavBarItem = /** @class */ (function (_super) { __extends(NavBarItem, _super); function NavBarItem() { return _super !== null && _super.apply(this, arguments) || this; } NavBarItem.prototype.render = function () { return React.createElement("li", __assign({}, this.props)); }; return NavBarItem; }(React.Component)); exports.NavBarItem = NavBarItem; var NavBarBrand = /** @class */ (function (_super) { __extends(NavBarBrand, _super); function NavBarBrand() { return _super !== null && _super.apply(this, arguments) || this; } NavBarBrand.prototype.render = function () { return React.createElement("a", __assign({}, this.props, { className: "brand-logo" })); }; return NavBarBrand; }(React.Component)); exports.NavBarBrand = NavBarBrand; /***/ }), /***/ "./src/cmps/navigation/Navigation.tsx": /*!********************************************!*\ !*** ./src/cmps/navigation/Navigation.tsx ***! \********************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Navigation = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var NavBar_1 = __webpack_require__(/*! ./NavBar */ "./src/cmps/navigation/NavBar.tsx"); var SideNav_1 = __webpack_require__(/*! ./SideNav */ "./src/cmps/navigation/SideNav.tsx"); var Navigation = /** @class */ (function (_super) { __extends(Navigation, _super); function Navigation(props) { return _super.call(this, props) || this; } Navigation.prototype.componentDidMount = function () { // console.log(this.navbar); // console.log(this.sidenav); }; Navigation.prototype.render = function () { var _this = this; return React.createElement(React.Fragment, null, React.createElement(NavBar_1.NavBar, { ref: function (ref) { _this.navbar = ref; } }, React.createElement("a", { className: "sidenav-trigger", onClick: function (e) { e.stopPropagation(); _this.sidenav && _this.sidenav.toggle(); } }, React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", style: { width: "20px" }, fill: "white", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: "2" }, React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M4 6h16M4 12h16M4 18h16" }))), React.createElement(NavBar_1.NavBarBrand, null, React.createElement("img", { src: this.props.logo || "https://statics.d3v4pp.fr/logo.png", className: "circle", alt: "Brand" })), React.createElement(NavBar_1.NavBarGroup, null, this.props.routes && this.props.routes.map(function (route, i) { return React.createElement(NavBar_1.NavBarItem, { key: i }, route.element); }))), React.createElement(SideNav_1.SideNav, { ref: function (ref) { _this.sidenav = ref; } }, React.createElement(SideNav_1.SideNavUser, { username: 'ayoub hassani', email: 'ayoub@d3v4pp.fr', src: "https://statics.d3v4pp.fr/logo.png", bg_src: "https://imgs.search.brave.com/yX0vgamsYEbsOU9XlyPGUM8DdmqxXpAKyzBM4s3wolA/rs:fit:1200:1030:1/g:ce/aHR0cHM6Ly93d3cu/YXZpYXNpbS5jb20v/d3AtY29udGVudC91/cGxvYWRzL2F2aWFz/aW0taW1hZ2UtbnVh/Z2VzLmpwZw" }), this.props.routes && this.props.routes.map(function (route, i) { return React.createElement(SideNav_1.SideNavEl, { onClick: function () { return _this.sidenav && _this.sidenav.hide(); }, key: i }, route.element); }))); }; return Navigation; }(React.Component)); exports.Navigation = Navigation; /***/ }), /***/ "./src/cmps/navigation/SideNav.tsx": /*!*****************************************!*\ !*** ./src/cmps/navigation/SideNav.tsx ***! \*****************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.SideNavEl = exports.SideNavUser = exports.SideNav = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var SideNav = /** @class */ (function (_super) { __extends(SideNav, _super); function SideNav() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.state = { open: false, }; return _this; } SideNav.prototype.open = function () { this.setState({ open: true }); }; SideNav.prototype.toggle = function () { this.setState({ open: !this.state.open }); }; SideNav.prototype.hide = function () { this.setState({ open: false }); }; SideNav.prototype.render = function () { return React.createElement("ul", __assign({}, this.props, { className: "sidenav " + (this.props.className || ""), style: { transform: this.state.open ? "translateX(0)" : "translateX(-105%)" } })); }; return SideNav; }(React.Component)); exports.SideNav = SideNav; var SideNavUser = /** @class */ (function (_super) { __extends(SideNavUser, _super); function SideNavUser() { return _super !== null && _super.apply(this, arguments) || this; } SideNavUser.prototype.render = function () { return React.createElement("li", __assign({}, this.props), React.createElement("div", { className: "user-view" }, React.createElement("div", { className: "background" }, React.createElement("img", { src: this.props.bg_src })), React.createElement("a", null, React.createElement("img", { className: "circle", src: this.props.src })), React.createElement("a", null, React.createElement("span", { className: "black-text name" }, this.props.username)), React.createElement("a", null, React.createElement("span", { className: "black-text email" }, this.props.email)))); }; return SideNavUser; }(React.Component)); exports.SideNavUser = SideNavUser; var SideNavEl = /** @class */ (function (_super) { __extends(SideNavEl, _super); function SideNavEl() { return _super !== null && _super.apply(this, arguments) || this; } SideNavEl.prototype.render = function () { return React.createElement("li", __assign({}, this.props)); }; return SideNavEl; }(React.Component)); exports.SideNavEl = SideNavEl; /***/ }), /***/ "./src/cmps/progress/Progress.tsx": /*!****************************************!*\ !*** ./src/cmps/progress/Progress.tsx ***! \****************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Preloader = exports.Progress = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var Progress = /** @class */ (function (_super) { __extends(Progress, _super); function Progress() { return _super !== null && _super.apply(this, arguments) || this; } Progress.prototype.render = function () { return React.createElement("div", __assign({}, this.props, { className: (this.props.className || "") + " progress" }), React.createElement("div", { className: this.props.value ? "determinate" : "indeterminate", style: { width: this.props.value + "%" } })); }; return Progress; }(React.Component)); exports.Progress = Progress; var Preloader = /** @class */ (function (_super) { __extends(Preloader, _super); function Preloader() { return _super !== null && _super.apply(this, arguments) || this; } Preloader.prototype.render = function () { var s = this.props.size == "big" ? "big" : this.props.size == "small" ? "small" : ""; var ca = this.props.color ? this.props.color.split(",") : ['blue']; if (ca.length === 1) { return React.createElement("div", { className: "preloader-wrapper " + s + " active" }, React.createElement("div", { className: "spinner-layer spinner-" + ca[0] + "-only" }, React.createElement("div", { className: "circle-clipper right" }, React.createElement("div", { className: "circle" })), React.createElement("div", { className: "gap-patch" }, React.createElement("div", { className: "circle" })), React.createElement("div", { className: "circle-clipper left" }, React.createElement("div", { className: "circle" })))); } else { return React.createElement("div", { className: "preloader-wrapper " + s + " active" }, ca.map(function (scolor) { return React.createElement("div", { className: "spinner-layer spinner-" + scolor }, React.createElement("div", { className: "circle-clipper left" }, React.createElement("div", { className: "circle" })), React.createElement("div", { className: "gap-patch" }, React.createElement("div", { className: "circle" })), React.createElement("div", { className: "circle-clipper right" }, React.createElement("div", { className: "circle" }))); })); } }; return Preloader; }(React.Component)); exports.Preloader = Preloader; /***/ }), /***/ "./src/index.ts": /*!**********************!*\ !*** ./src/index.ts ***! \**********************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.DataTable = exports.createTheme = exports.defaultThemes = exports.Login = exports.ModalHeader = exports.ModalFooter = exports.ModalContent = exports.Modal = exports.Preloader = exports.Progress = exports.SideNavUser = exports.SideNavEl = exports.SideNav = exports.Navigation = exports.NavBarBrand = exports.NavBarItem = exports.NavBarGroup = exports.NavBar = exports.CardAction = exports.CardTitle = exports.CardContent = exports.Card = exports.CollapsBody = exports.Collapsible = exports.CollapsTrigger = exports.Parallax = exports.Divider = exports.Overlay = exports.Col = exports.Row = exports.Icon = exports.Chip = exports.Badge = exports.Button = exports.CollectionItem = exports.Collection = exports.Field = exports.Textarea = void 0; __webpack_require__(/*! ./sass/d3v4pp.scss */ "./src/sass/d3v4pp.scss"); var Textarea_1 = __webpack_require__(/*! ./cmps/forms/Textarea */ "./src/cmps/forms/Textarea.tsx"); Object.defineProperty(exports, "Textarea", ({ enumerable: true, get: function () { return Textarea_1.Textarea; } })); var Field_1 = __webpack_require__(/*! ./cmps/forms/Field */ "./src/cmps/forms/Field.tsx"); Object.defineProperty(exports, "Field", ({ enumerable: true, get: function () { return Field_1.Field; } })); var Collection_1 = __webpack_require__(/*! ./cmps/collections/Collection */ "./src/cmps/collections/Collection.tsx"); Object.defineProperty(exports, "Collection", ({ enumerable: true, get: function () { return Collection_1.Collection; } })); Object.defineProperty(exports, "CollectionItem", ({ enumerable: true, get: function () { return Collection_1.CollectionItem; } })); var Button_1 = __webpack_require__(/*! ./cmps/button/Button */ "./src/cmps/button/Button.tsx"); Object.defineProperty(exports, "Button", ({ enumerable: true, get: function () { return Button_1.Button; } })); var Badge_1 = __webpack_require__(/*! ./cmps/badge/Badge */ "./src/cmps/badge/Badge.tsx"); Object.defineProperty(exports, "Badge", ({ enumerable: true, get: function () { return Badge_1.Badge; } })); var Chip_1 = __webpack_require__(/*! ./cmps/chip/Chip */ "./src/cmps/chip/Chip.tsx"); Object.defineProperty(exports, "Chip", ({ enumerable: true, get: function () { return Chip_1.Chip; } })); var Icon_1 = __webpack_require__(/*! ./cmps/icons/Icon */ "./src/cmps/icons/Icon.tsx"); Object.defineProperty(exports, "Icon", ({ enumerable: true, get: function () { return Icon_1.Icon; } })); var Layouts_1 = __webpack_require__(/*! ./cmps/layouts/Layouts */ "./src/cmps/layouts/Layouts.tsx"); Object.defineProperty(exports, "Row", ({ enumerable: true, get: function () { return Layouts_1.Row; } })); Object.defineProperty(exports, "Col", ({ enumerable: true, get: function () { return Layouts_1.Col; } })); Object.defineProperty(exports, "Overlay", ({ enumerable: true, get: function () { return Layouts_1.Overlay; } })); Object.defineProperty(exports, "Divider", ({ enumerable: true, get: function () { return Layouts_1.Divider; } })); Object.defineProperty(exports, "Parallax", ({ enumerable: true, get: function () { return Layouts_1.Parallax; } })); var Collapsible_1 = __webpack_require__(/*! ./cmps/collapsible/Collapsible */ "./src/cmps/collapsible/Collapsible.tsx"); Object.defineProperty(exports, "CollapsTrigger", ({ enumerable: true, get: function () { return Collapsible_1.CollapsTrigger; } })); Object.defineProperty(exports, "Collapsible", ({ enumerable: true, get: function () { return Collapsible_1.Collapsible; } })); Object.defineProperty(exports, "CollapsBody", ({ enumerable: true, get: function () { return Collapsible_1.CollapsBody; } })); var Card_1 = __webpack_require__(/*! ./cmps/card/Card */ "./src/cmps/card/Card.tsx"); Object.defineProperty(exports, "Card", ({ enumerable: true, get: function () { return Card_1.Card; } })); Object.defineProperty(exports, "CardContent", ({ enumerable: true, get: function () { return Card_1.CardContent; } })); Object.defineProperty(exports, "CardTitle", ({ enumerable: true, get: function () { return Card_1.CardTitle; } })); Object.defineProperty(exports, "CardAction", ({ enumerable: true, get: function () { return Card_1.CardAction; } })); var NavBar_1 = __webpack_require__(/*! ./cmps/navigation/NavBar */ "./src/cmps/navigation/NavBar.tsx"); Object.defineProperty(exports, "NavBar", ({ enumerable: true, get: function () { return NavBar_1.NavBar; } })); Object.defineProperty(exports, "NavBarGroup", ({ enumerable: true, get: function () { return NavBar_1.NavBarGroup; } })); Object.defineProperty(exports, "NavBarItem", ({ enumerable: true, get: function () { return NavBar_1.NavBarItem; } })); Object.defineProperty(exports, "NavBarBrand", ({ enumerable: true, get: function () { return NavBar_1.NavBarBrand; } })); var Navigation_1 = __webpack_require__(/*! ./cmps/navigation/Navigation */ "./src/cmps/navigation/Navigation.tsx"); Object.defineProperty(exports, "Navigation", ({ enumerable: true, get: function () { return Navigation_1.Navigation; } })); var SideNav_1 = __webpack_require__(/*! ./cmps/navigation/SideNav */ "./src/cmps/navigation/SideNav.tsx"); Object.defineProperty(exports, "SideNav", ({ enumerable: true, get: function () { return SideNav_1.SideNav; } })); Object.defineProperty(exports, "SideNavEl", ({ enumerable: true, get: function () { return SideNav_1.SideNavEl; } })); Object.defineProperty(exports, "SideNavUser", ({ enumerable: true, get: function () { return SideNav_1.SideNavUser; } })); var Progress_1 = __webpack_require__(/*! ./cmps/progress/Progress */ "./src/cmps/progress/Progress.tsx"); Object.defineProperty(exports, "Progress", ({ enumerable: true, get: function () { return Progress_1.Progress; } })); Object.defineProperty(exports, "Preloader", ({ enumerable: true, get: function () { return Progress_1.Preloader; } })); var Modal_1 = __webpack_require__(/*! ./cmps/modal/Modal */ "./src/cmps/modal/Modal.tsx"); Object.defineProperty(exports, "Modal", ({ enumerable: true, get: function () { return Modal_1.Modal; } })); Object.defineProperty(exports, "ModalContent", ({ enumerable: true, get: function () { return Modal_1.ModalContent; } })); Object.defineProperty(exports, "ModalFooter", ({ enumerable: true, get: function () { return Modal_1.ModalFooter; } })); Object.defineProperty(exports, "ModalHeader", ({ enumerable: true, get: function () { return Modal_1.ModalHeader; } })); ////////ux var ux_1 = __webpack_require__(/*! ./ux */ "./src/ux/index.ts"); Object.defineProperty(exports, "Login", ({ enumerable: true, get: function () { return ux_1.Login; } })); // export * as DataTable from './DataTable/index'; // // ///DataTable var themes_1 = __webpack_require__(/*! ./DataTable/themes */ "./src/DataTable/themes.ts"); Object.defineProperty(exports, "defaultThemes", ({ enumerable: true, get: function () { return themes_1.defaultThemes; } })); Object.defineProperty(exports, "createTheme", ({ enumerable: true, get: function () { return themes_1.createTheme; } })); __exportStar(__webpack_require__(/*! ./DataTable/constants */ "./src/DataTable/constants.ts"), exports); var DataTable_1 = __webpack_require__(/*! ./DataTable/DataTable */ "./src/DataTable/DataTable.tsx"); Object.defineProperty(exports, "DataTable", ({ enumerable: true, get: function () { return DataTable_1.default; } })); /***/ }), /***/ "./src/ux/auth/Login.tsx": /*!*******************************!*\ !*** ./src/ux/auth/Login.tsx ***! \*******************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Login = void 0; var React = __webpack_require__(/*! react */ "./node_modules/react/index.js"); var Field_1 = __webpack_require__(/*! ../../cmps/forms/Field */ "./src/cmps/forms/Field.tsx"); // // export function Login ({onLogin, onLoginError, className, checkUrl}: LoginProps) { // let emailF: { isValid: () => any; }, passF: { isValid: () => any; }; // let [emailOk, setEmailOk] = useState(false) // let [user, setUser] = useState({ // password: "", // email: "" // }); // let next = () => { // if (emailF && emailF.isValid()) { // if (checkUrl) { // fetch(checkUrl, { // method: "POST", // headers: { // 'Accept': 'application/json', // 'Content-Type': 'application/json' // }, // body: JSON.stringify(user) // }).then(r => r.json()).then(json => { // if (json.success) { // setEmailOk(true); // } else { // onLoginError && onLoginError(json); // } // }).catch(error => { // onLoginError && onLoginError(error); // }) // } else { // setEmailOk(true); // } // } // } // let login = () => { // if (emailF && emailF.isValid() && passF && passF.isValid()) { // onLogin && onLogin(user) // // } // } // let getPasswordView = () => { // if (emailOk) { // return <> { // passF = r; // }} // value={user.password} // onChange={(e) => { // let u = {...user}; // // @ts-ignore // u.password = e.target.value; // setUser(u); // }} // autoFocus={true} // required={true} // label={"Password"} // type={"password"} // vtype={"password"} // vtypeMsg={'Need to be a valid Password'} // onEnterKey={login}/> // ; // } else { // return null; // } // } // // let getLoginView = () => { // if (!emailOk) { // return <> { // emailF = r; // }} // value={user.email} // onChange={(e) => { // let u = {...user}; // // @ts-ignore // u.email = e.target.value; // setUser(u); // }} // label={"Email"} // type={"email"} // vtype={"email"} // vtypeMsg={'Need to be a valid email'} // onEnterKey={next}/> // ; // } else { // return null; // } // // } // return
{ // el = el; // }} // className={(className || "") + " login"} // > // {getLoginView()} // {getPasswordView()} //
// } var Login = /** @class */ (function (_super) { __extends(Login, _super); function Login(props) { var _this = _super.call(this, props) || this; _this.state = { emailOk: false, email: "", password: "", passOK: false }; return _this; } Login.prototype.next = function () { var _this = this; if (this.emailF && this.emailF.isValid()) { if (this.props.checkUrl) { fetch(this.props.checkUrl, { method: "POST", headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ email: this.state.email, }) }).then(function (r) { return r.json(); }).then(function (json) { if (json.success) { _this.setState({ emailOk: true }); } else { _this.props.onLoginError && _this.props.onLoginError(json); } }).catch(function (error) { _this.props.onLoginError && _this.props.onLoginError(error); }); } else { this.setState({ emailOk: true }); } } }; Login.prototype.login = function () { if (this.state.emailOk && this.passwordF && this.passwordF.isValid()) { this.props.onLogin && this.props.onLogin({ email: this.state.email, password: this.state.password }); } }; Login.prototype.getLoginView = function () { var _this = this; if (!this.state.emailOk) { return React.createElement(React.Fragment, null, React.createElement(Field_1.Field, { autoFocus: true, required: true, ref: function (r) { _this.emailF = r; }, value: this.state.email, onChange: function (e) { // @ts-ignore _this.setState({ email: e.target.value }); }, label: "Email", type: "email", vtype: "email", vtypeMsg: 'Need to be a valid email', onEnterKey: this.next.bind(this) })); } else { return null; } }; Login.prototype.getPasswordView = function () { var _this = this; if (this.state.emailOk) { return React.createElement(React.Fragment, null, React.createElement(Field_1.Field, { ref: function (r) { _this.passwordF = r; }, value: this.state.password, onChange: function (e) { // @ts-ignore _this.setState({ password: e.target.value }); }, autoFocus: true, required: true, label: "Password", type: "password", vtype: "password", vtypeMsg: 'Need to be a valid Password', onEnterKey: this.login.bind(this) })); } else { return null; } }; Login.prototype.render = function () { var _this = this; return (React.createElement("div", { ref: function (el) { _this.el = el; }, className: (this.props.className || "") + " login" }, this.getLoginView(), this.getPasswordView())); }; return Login; }(React.Component)); exports.Login = Login; /***/ }), /***/ "./src/ux/index.ts": /*!*************************!*\ !*** ./src/ux/index.ts ***! \*************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Login = void 0; var Login_1 = __webpack_require__(/*! ./auth/Login */ "./src/ux/auth/Login.tsx"); Object.defineProperty(exports, "Login", ({ enumerable: true, get: function () { return Login_1.Login; } })); /***/ }), /***/ "./node_modules/styled-components/node_modules/stylis/src/Enum.js": /*!************************************************************************!*\ !*** ./node_modules/styled-components/node_modules/stylis/src/Enum.js ***! \************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ CHARSET: () => (/* binding */ CHARSET), /* harmony export */ COMMENT: () => (/* binding */ COMMENT), /* harmony export */ COUNTER_STYLE: () => (/* binding */ COUNTER_STYLE), /* harmony export */ DECLARATION: () => (/* binding */ DECLARATION), /* harmony export */ DOCUMENT: () => (/* binding */ DOCUMENT), /* harmony export */ FONT_FACE: () => (/* binding */ FONT_FACE), /* harmony export */ FONT_FEATURE_VALUES: () => (/* binding */ FONT_FEATURE_VALUES), /* harmony export */ IMPORT: () => (/* binding */ IMPORT), /* harmony export */ KEYFRAMES: () => (/* binding */ KEYFRAMES), /* harmony export */ LAYER: () => (/* binding */ LAYER), /* harmony export */ MEDIA: () => (/* binding */ MEDIA), /* harmony export */ MOZ: () => (/* binding */ MOZ), /* harmony export */ MS: () => (/* binding */ MS), /* harmony export */ NAMESPACE: () => (/* binding */ NAMESPACE), /* harmony export */ PAGE: () => (/* binding */ PAGE), /* harmony export */ RULESET: () => (/* binding */ RULESET), /* harmony export */ SUPPORTS: () => (/* binding */ SUPPORTS), /* harmony export */ VIEWPORT: () => (/* binding */ VIEWPORT), /* harmony export */ WEBKIT: () => (/* binding */ WEBKIT) /* harmony export */ }); var MS = '-ms-' var MOZ = '-moz-' var WEBKIT = '-webkit-' var COMMENT = 'comm' var RULESET = 'rule' var DECLARATION = 'decl' var PAGE = '@page' var MEDIA = '@media' var IMPORT = '@import' var CHARSET = '@charset' var VIEWPORT = '@viewport' var SUPPORTS = '@supports' var DOCUMENT = '@document' var NAMESPACE = '@namespace' var KEYFRAMES = '@keyframes' var FONT_FACE = '@font-face' var COUNTER_STYLE = '@counter-style' var FONT_FEATURE_VALUES = '@font-feature-values' var LAYER = '@layer' /***/ }), /***/ "./node_modules/styled-components/node_modules/stylis/src/Middleware.js": /*!******************************************************************************!*\ !*** ./node_modules/styled-components/node_modules/stylis/src/Middleware.js ***! \******************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ middleware: () => (/* binding */ middleware), /* harmony export */ namespace: () => (/* binding */ namespace), /* harmony export */ prefixer: () => (/* binding */ prefixer), /* harmony export */ rulesheet: () => (/* binding */ rulesheet) /* harmony export */ }); /* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enum.js */ "./node_modules/styled-components/node_modules/stylis/src/Enum.js"); /* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utility.js */ "./node_modules/styled-components/node_modules/stylis/src/Utility.js"); /* harmony import */ var _Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Tokenizer.js */ "./node_modules/styled-components/node_modules/stylis/src/Tokenizer.js"); /* harmony import */ var _Serializer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Serializer.js */ "./node_modules/styled-components/node_modules/stylis/src/Serializer.js"); /* harmony import */ var _Prefixer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Prefixer.js */ "./node_modules/styled-components/node_modules/stylis/src/Prefixer.js"); /** * @param {function[]} collection * @return {function} */ function middleware (collection) { var length = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.sizeof)(collection) return function (element, index, children, callback) { var output = '' for (var i = 0; i < length; i++) output += collection[i](element, index, children, callback) || '' return output } } /** * @param {function} callback * @return {function} */ function rulesheet (callback) { return function (element) { if (!element.root) if (element = element.return) callback(element) } } /** * @param {object} element * @param {number} index * @param {object[]} children * @param {function} callback */ function prefixer (element, index, children, callback) { if (element.length > -1) if (!element.return) switch (element.type) { case _Enum_js__WEBPACK_IMPORTED_MODULE_1__.DECLARATION: element.return = (0,_Prefixer_js__WEBPACK_IMPORTED_MODULE_2__.prefix)(element.value, element.length, children) return case _Enum_js__WEBPACK_IMPORTED_MODULE_1__.KEYFRAMES: return (0,_Serializer_js__WEBPACK_IMPORTED_MODULE_3__.serialize)([(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {value: (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(element.value, '@', '@' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT)})], callback) case _Enum_js__WEBPACK_IMPORTED_MODULE_1__.RULESET: if (element.length) return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.combine)(children = element.props, function (value) { switch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(value, callback = /(::plac\w+|:read-\w+)/)) { // :read-(only|write) case ':read-only': case ':read-write': (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.lift)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /:(read-\w+)/, ':' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MOZ + '$1')]})) ;(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.lift)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [value]})) ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.assign)(element, {props: (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.filter)(children, callback)}) break // :placeholder case '::placeholder': ;(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.lift)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /:(plac\w+)/, ':' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + 'input-$1')]})) ;(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.lift)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /:(plac\w+)/, ':' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MOZ + '$1')]})) ;(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.lift)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /:(plac\w+)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'input-$1')]})) ;(0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.lift)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.copy)(element, {props: [value]})) ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.assign)(element, {props: (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.filter)(children, callback)}) break } return '' }) } } /** * @param {object} element * @param {number} index * @param {object[]} children */ function namespace (element) { switch (element.type) { case _Enum_js__WEBPACK_IMPORTED_MODULE_1__.RULESET: element.props = element.props.map(function (value) { return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.combine)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_4__.tokenize)(value), function (value, index, children) { switch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, 0)) { // \f case 12: return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.substr)(value, 1, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.strlen)(value)) // \0 ( + > ~ case 0: case 40: case 43: case 62: case 126: return value // : case 58: if (children[++index] === 'global') children[index] = '', children[++index] = '\f' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.substr)(children[index], index = 1, -1) // \s case 32: return index === 1 ? '' : value default: switch (index) { case 0: element = value return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.sizeof)(children) > 1 ? '' : value case index = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.sizeof)(children) - 1: case 2: return index === 2 ? value + element + element : value + element default: return value } } }) }) } } /***/ }), /***/ "./node_modules/styled-components/node_modules/stylis/src/Parser.js": /*!**************************************************************************!*\ !*** ./node_modules/styled-components/node_modules/stylis/src/Parser.js ***! \**************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ comment: () => (/* binding */ comment), /* harmony export */ compile: () => (/* binding */ compile), /* harmony export */ declaration: () => (/* binding */ declaration), /* harmony export */ parse: () => (/* binding */ parse), /* harmony export */ ruleset: () => (/* binding */ ruleset) /* harmony export */ }); /* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Enum.js */ "./node_modules/styled-components/node_modules/stylis/src/Enum.js"); /* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Utility.js */ "./node_modules/styled-components/node_modules/stylis/src/Utility.js"); /* harmony import */ var _Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Tokenizer.js */ "./node_modules/styled-components/node_modules/stylis/src/Tokenizer.js"); /** * @param {string} value * @return {object[]} */ function compile (value) { return (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.dealloc)(parse('', null, null, null, [''], value = (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.alloc)(value), 0, [0], value)) } /** * @param {string} value * @param {object} root * @param {object?} parent * @param {string[]} rule * @param {string[]} rules * @param {string[]} rulesets * @param {number[]} pseudo * @param {number[]} points * @param {string[]} declarations * @return {object} */ function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) { var index = 0 var offset = 0 var length = pseudo var atrule = 0 var property = 0 var previous = 0 var variable = 1 var scanning = 1 var ampersand = 1 var character = 0 var type = '' var props = rules var children = rulesets var reference = rule var characters = type while (scanning) switch (previous = character, character = (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.next)()) { // ( case 40: if (previous != 108 && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.charat)(characters, length - 1) == 58) { if ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.indexof)(characters += (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.delimit)(character), '&', '&\f'), '&\f') != -1) ampersand = -1 break } // " ' [ case 34: case 39: case 91: characters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.delimit)(character) break // \t \n \r \s case 9: case 10: case 13: case 32: characters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.whitespace)(previous) break // \ case 92: characters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.escaping)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.caret)() - 1, 7) continue // / case 47: switch ((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.peek)()) { case 42: case 47: ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(comment((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.commenter)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.next)(), (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.caret)()), root, parent, declarations), declarations) break default: characters += '/' } break // { case 123 * variable: points[index++] = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) * ampersand // } ; \0 case 125 * variable: case 59: case 0: switch (character) { // \0 } case 0: case 125: scanning = 0 // ; case 59 + offset: if (ampersand == -1) characters = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)(characters, /\f/g, '') if (property > 0 && ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) - length)) (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations) break // @ ; case 59: characters += ';' // { rule/at-rule default: ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets) if (character === 123) if (offset === 0) parse(characters, root, reference, reference, props, rulesets, length, points, children) else switch (atrule === 99 && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.charat)(characters, 3) === 110 ? 100 : atrule) { // d l m s case 100: case 108: case 109: case 115: parse(value, reference, reference, rule && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children) break default: parse(characters, reference, reference, reference, [''], children, 0, points, children) } } index = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo break // : case 58: length = 1 + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters), property = previous default: if (variable < 1) if (character == 123) --variable else if (character == 125 && variable++ == 0 && (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.prev)() == 125) continue switch (characters += (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.from)(character), character * variable) { // & case 38: ampersand = offset > 0 ? 1 : (characters += '\f', -1) break // , case 44: points[index++] = ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) - 1) * ampersand, ampersand = 1 break // @ case 64: // - if ((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.peek)() === 45) characters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.delimit)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.next)()) atrule = (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.peek)(), offset = length = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(type = characters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.identifier)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.caret)())), character++ break // - case 45: if (previous === 45 && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) == 2) variable = 0 } } return rulesets } /** * @param {string} value * @param {object} root * @param {object?} parent * @param {number} index * @param {number} offset * @param {string[]} rules * @param {number[]} points * @param {string} type * @param {string[]} props * @param {string[]} children * @param {number} length * @param {object[]} siblings * @return {object} */ function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) { var post = offset - 1 var rule = offset === 0 ? rules : [''] var size = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.sizeof)(rule) for (var i = 0, j = 0, k = 0; i < index; ++i) for (var x = 0, y = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, post + 1, post = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.abs)(j = points[i])), z = value; x < size; ++x) if (z = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.trim)(j > 0 ? rule[x] + ' ' + y : (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)(y, /&\f/g, rule[x]))) props[k++] = z return (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.node)(value, root, parent, offset === 0 ? _Enum_js__WEBPACK_IMPORTED_MODULE_2__.RULESET : type, props, children, length, siblings) } /** * @param {number} value * @param {object} root * @param {object?} parent * @param {object[]} siblings * @return {object} */ function comment (value, root, parent, siblings) { return (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.node)(value, root, parent, _Enum_js__WEBPACK_IMPORTED_MODULE_2__.COMMENT, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.from)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.char)()), (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, 2, -2), 0, siblings) } /** * @param {string} value * @param {object} root * @param {object?} parent * @param {number} length * @param {object[]} siblings * @return {object} */ function declaration (value, root, parent, length, siblings) { return (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.node)(value, root, parent, _Enum_js__WEBPACK_IMPORTED_MODULE_2__.DECLARATION, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, 0, length), (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, length + 1, -1), length, siblings) } /***/ }), /***/ "./node_modules/styled-components/node_modules/stylis/src/Prefixer.js": /*!****************************************************************************!*\ !*** ./node_modules/styled-components/node_modules/stylis/src/Prefixer.js ***! \****************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ prefix: () => (/* binding */ prefix) /* harmony export */ }); /* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enum.js */ "./node_modules/styled-components/node_modules/stylis/src/Enum.js"); /* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utility.js */ "./node_modules/styled-components/node_modules/stylis/src/Utility.js"); /** * @param {string} value * @param {number} length * @param {object[]} children * @return {string} */ function prefix (value, length, children) { switch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.hash)(value, length)) { // color-adjust case 5103: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + 'print-' + value + value // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function) case 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break case 5572: case 6356: case 5844: case 3191: case 6645: case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite, case 6391: case 5879: case 5623: case 6135: case 4599: case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width) case 4215: case 6389: case 5109: case 5365: case 5621: case 3829: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + value // tab-size case 4789: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MOZ + value + value // appearance, user-select, transform, hyphens, text-size-adjust case 5349: case 4246: case 4810: case 6968: case 2756: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MOZ + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + value + value // writing-mode case 5936: switch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, length + 11)) { // vertical-l(r) case 114: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /[svh]\w+-[tblr]{2}/, 'tb') + value // vertical-r(l) case 108: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /[svh]\w+-[tblr]{2}/, 'tb-rl') + value // horizontal(-)tb case 45: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /[svh]\w+-[tblr]{2}/, 'lr') + value // default: fallthrough to below } // flex, flex-direction, scroll-snap-type, writing-mode case 6828: case 4268: case 2903: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + value + value // order case 6165: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'flex-' + value + value // align-items case 5187: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(\w+).+(:[^]+)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + 'box-$1$2' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'flex-$1$2') + value // align-self case 5443: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'flex-item-' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /flex-|-self/g, '') + (!(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(value, /flex-|baseline/) ? _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'grid-row-' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /flex-|-self/g, '') : '') + value // align-content case 4675: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'flex-line-pack' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /align-content|flex-|-self/g, '') + value // flex-shrink case 5548: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'shrink', 'negative') + value // flex-basis case 5292: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'basis', 'preferred-size') + value // flex-grow case 6060: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + 'box-' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, '-grow', '') + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'grow', 'positive') + value // transition case 4554: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /([^-])(transform)/g, '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$2') + value // cursor case 6187: return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(zoom-|grab)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$1'), /(image-set)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$1'), value, '') + value // background, background-image case 5495: case 3959: return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(image-set\([^]*)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$1' + '$`$1') // justify-content case 4968: return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(.+:)(flex-)?(.*)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + 'box-pack:$3' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + value + value // justify-self case 4200: if (!(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(value, /flex-|baseline/)) return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'grid-column-align' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.substr)(value, length) + value break // grid-template-(columns|rows) case 2592: case 3360: return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'template-', '') + value // grid-(row|column)-start case 4384: case 3616: if (children && children.some(function (element, index) { return length = index, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(element.props, /grid-\w+-end/) })) { return ~(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.indexof)(value + (children = children[length].value), 'span') ? value : (_Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, '-start', '') + value + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + 'grid-row-span:' + (~(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.indexof)(children, 'span') ? (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(children, /\d+/) : +(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(children, /\d+/) - +(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(value, /\d+/)) + ';') } return _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, '-start', '') + value // grid-(row|column)-end case 4896: case 4128: return (children && children.some(function (element) { return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.match)(element.props, /grid-\w+-start/) })) ? value : _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, '-end', '-span'), 'span ', '') + value // (margin|padding)-inline-(start|end) case 4095: case 3583: case 4068: case 2532: return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(.+)-inline(.+)/, _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$1$2') + value // (min|max)?(width|height|inline-size|block-size) case 8116: case 7059: case 5753: case 5535: case 5445: case 5701: case 4933: case 4677: case 5533: case 5789: case 5021: case 4765: // stretch, max-content, min-content, fill-available if ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.strlen)(value) - 1 - length > 6) switch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, length + 1)) { // (m)ax-content, (m)in-content case 109: // - if ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, length + 4) !== 45) break // (f)ill-available, (f)it-content case 102: return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(.+:)(.+)-([^]+)/, '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$2-$3' + '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MOZ + ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, length + 3) == 108 ? '$3' : '$2-$3')) + value // (s)tretch case 115: return ~(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.indexof)(value, 'stretch') ? prefix((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'stretch', 'fill-available'), length, children) + value : value } break // grid-(column|row) case 5152: case 5920: return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(.+?):(\d+)(\s*\/\s*(span)?\s*(\d+))?(.*)/, function (_, a, b, c, d, e, f) { return (_Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + a + ':' + b + f) + (c ? (_Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + a + '-span:' + (d ? e : +e - +b)) + f : '') + value }) // position: sticky case 4949: // stick(y)? if ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, length + 6) === 121) return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, ':', ':' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT) + value break // display: (flex|inline-flex|grid|inline-grid) case 6444: switch ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, 14) === 45 ? 18 : 11)) { // (inline-)?fle(x) case 120: return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, /(.+:)([^;\s!]+)(;|(\s+)?!.+)?/, '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.WEBKIT + '$2$3' + '$1' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS + '$2box$3') + value // (inline-)?gri(d) case 100: return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, ':', ':' + _Enum_js__WEBPACK_IMPORTED_MODULE_1__.MS) + value } break // scroll-margin, scroll-margin-(top|right|bottom|left) case 5719: case 2647: case 2135: case 3927: case 2391: return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.replace)(value, 'scroll-', 'scroll-snap-') + value } return value } /***/ }), /***/ "./node_modules/styled-components/node_modules/stylis/src/Serializer.js": /*!******************************************************************************!*\ !*** ./node_modules/styled-components/node_modules/stylis/src/Serializer.js ***! \******************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ serialize: () => (/* binding */ serialize), /* harmony export */ stringify: () => (/* binding */ stringify) /* harmony export */ }); /* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Enum.js */ "./node_modules/styled-components/node_modules/stylis/src/Enum.js"); /* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Utility.js */ "./node_modules/styled-components/node_modules/stylis/src/Utility.js"); /** * @param {object[]} children * @param {function} callback * @return {string} */ function serialize (children, callback) { var output = '' for (var i = 0; i < children.length; i++) output += callback(children[i], i, children, callback) || '' return output } /** * @param {object} element * @param {number} index * @param {object[]} children * @param {function} callback * @return {string} */ function stringify (element, index, children, callback) { switch (element.type) { case _Enum_js__WEBPACK_IMPORTED_MODULE_0__.LAYER: if (element.children.length) break case _Enum_js__WEBPACK_IMPORTED_MODULE_0__.IMPORT: case _Enum_js__WEBPACK_IMPORTED_MODULE_0__.DECLARATION: return element.return = element.return || element.value case _Enum_js__WEBPACK_IMPORTED_MODULE_0__.COMMENT: return '' case _Enum_js__WEBPACK_IMPORTED_MODULE_0__.KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}' case _Enum_js__WEBPACK_IMPORTED_MODULE_0__.RULESET: if (!(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(element.value = element.props.join(','))) return '' } return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : '' } /***/ }), /***/ "./node_modules/styled-components/node_modules/stylis/src/Tokenizer.js": /*!*****************************************************************************!*\ !*** ./node_modules/styled-components/node_modules/stylis/src/Tokenizer.js ***! \*****************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ alloc: () => (/* binding */ alloc), /* harmony export */ caret: () => (/* binding */ caret), /* harmony export */ char: () => (/* binding */ char), /* harmony export */ character: () => (/* binding */ character), /* harmony export */ characters: () => (/* binding */ characters), /* harmony export */ column: () => (/* binding */ column), /* harmony export */ commenter: () => (/* binding */ commenter), /* harmony export */ copy: () => (/* binding */ copy), /* harmony export */ dealloc: () => (/* binding */ dealloc), /* harmony export */ delimit: () => (/* binding */ delimit), /* harmony export */ delimiter: () => (/* binding */ delimiter), /* harmony export */ escaping: () => (/* binding */ escaping), /* harmony export */ identifier: () => (/* binding */ identifier), /* harmony export */ length: () => (/* binding */ length), /* harmony export */ lift: () => (/* binding */ lift), /* harmony export */ line: () => (/* binding */ line), /* harmony export */ next: () => (/* binding */ next), /* harmony export */ node: () => (/* binding */ node), /* harmony export */ peek: () => (/* binding */ peek), /* harmony export */ position: () => (/* binding */ position), /* harmony export */ prev: () => (/* binding */ prev), /* harmony export */ slice: () => (/* binding */ slice), /* harmony export */ token: () => (/* binding */ token), /* harmony export */ tokenize: () => (/* binding */ tokenize), /* harmony export */ tokenizer: () => (/* binding */ tokenizer), /* harmony export */ whitespace: () => (/* binding */ whitespace) /* harmony export */ }); /* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utility.js */ "./node_modules/styled-components/node_modules/stylis/src/Utility.js"); var line = 1 var column = 1 var length = 0 var position = 0 var character = 0 var characters = '' /** * @param {string} value * @param {object | null} root * @param {object | null} parent * @param {string} type * @param {string[] | string} props * @param {object[] | string} children * @param {object[]} siblings * @param {number} length */ function node (value, root, parent, type, props, children, length, siblings) { return {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings} } /** * @param {object} root * @param {object} props * @return {object} */ function copy (root, props) { return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.assign)(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props) } /** * @param {object} root */ function lift (root) { while (root.root) root = copy(root.root, {children: [root]}) ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)(root, root.siblings) } /** * @return {number} */ function char () { return character } /** * @return {number} */ function prev () { character = position > 0 ? (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(characters, --position) : 0 if (column--, character === 10) column = 1, line-- return character } /** * @return {number} */ function next () { character = position < length ? (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(characters, position++) : 0 if (column++, character === 10) column = 1, line++ return character } /** * @return {number} */ function peek () { return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(characters, position) } /** * @return {number} */ function caret () { return position } /** * @param {number} begin * @param {number} end * @return {string} */ function slice (begin, end) { return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.substr)(characters, begin, end) } /** * @param {number} type * @return {number} */ function token (type) { switch (type) { // \0 \t \n \r \s whitespace token case 0: case 9: case 10: case 13: case 32: return 5 // ! + , / > @ ~ isolate token case 33: case 43: case 44: case 47: case 62: case 64: case 126: // ; { } breakpoint token case 59: case 123: case 125: return 4 // : accompanied token case 58: return 3 // " ' ( [ opening delimit token case 34: case 39: case 40: case 91: return 2 // ) ] closing delimit token case 41: case 93: return 1 } return 0 } /** * @param {string} value * @return {any[]} */ function alloc (value) { return line = column = 1, length = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.strlen)(characters = value), position = 0, [] } /** * @param {any} value * @return {any} */ function dealloc (value) { return characters = '', value } /** * @param {number} type * @return {string} */ function delimit (type) { return (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.trim)(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type))) } /** * @param {string} value * @return {string[]} */ function tokenize (value) { return dealloc(tokenizer(alloc(value))) } /** * @param {number} type * @return {string} */ function whitespace (type) { while (character = peek()) if (character < 33) next() else break return token(type) > 2 || token(character) > 3 ? '' : ' ' } /** * @param {string[]} children * @return {string[]} */ function tokenizer (children) { while (next()) switch (token(character)) { case 0: (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)(identifier(position - 1), children) break case 2: ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)(delimit(character), children) break default: ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.from)(character), children) } return children } /** * @param {number} index * @param {number} count * @return {string} */ function escaping (index, count) { while (--count && next()) // not 0-9 A-F a-f if (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97)) break return slice(index, caret() + (count < 6 && peek() == 32 && next() == 32)) } /** * @param {number} type * @return {number} */ function delimiter (type) { while (next()) switch (character) { // ] ) " ' case type: return position // " ' case 34: case 39: if (type !== 34 && type !== 39) delimiter(character) break // ( case 40: if (type === 41) delimiter(type) break // \ case 92: next() break } return position } /** * @param {number} type * @param {number} index * @return {number} */ function commenter (type, index) { while (next()) // // if (type + character === 47 + 10) break // /* else if (type + character === 42 + 42 && peek() === 47) break return '/*' + slice(index, position - 1) + '*' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.from)(type === 47 ? type : next()) } /** * @param {number} index * @return {string} */ function identifier (index) { while (!token(peek())) next() return slice(index, position) } /***/ }), /***/ "./node_modules/styled-components/node_modules/stylis/src/Utility.js": /*!***************************************************************************!*\ !*** ./node_modules/styled-components/node_modules/stylis/src/Utility.js ***! \***************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ abs: () => (/* binding */ abs), /* harmony export */ append: () => (/* binding */ append), /* harmony export */ assign: () => (/* binding */ assign), /* harmony export */ charat: () => (/* binding */ charat), /* harmony export */ combine: () => (/* binding */ combine), /* harmony export */ filter: () => (/* binding */ filter), /* harmony export */ from: () => (/* binding */ from), /* harmony export */ hash: () => (/* binding */ hash), /* harmony export */ indexof: () => (/* binding */ indexof), /* harmony export */ match: () => (/* binding */ match), /* harmony export */ replace: () => (/* binding */ replace), /* harmony export */ sizeof: () => (/* binding */ sizeof), /* harmony export */ strlen: () => (/* binding */ strlen), /* harmony export */ substr: () => (/* binding */ substr), /* harmony export */ trim: () => (/* binding */ trim) /* harmony export */ }); /** * @param {number} * @return {number} */ var abs = Math.abs /** * @param {number} * @return {string} */ var from = String.fromCharCode /** * @param {object} * @return {object} */ var assign = Object.assign /** * @param {string} value * @param {number} length * @return {number} */ function hash (value, length) { return charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0 } /** * @param {string} value * @return {string} */ function trim (value) { return value.trim() } /** * @param {string} value * @param {RegExp} pattern * @return {string?} */ function match (value, pattern) { return (value = pattern.exec(value)) ? value[0] : value } /** * @param {string} value * @param {(string|RegExp)} pattern * @param {string} replacement * @return {string} */ function replace (value, pattern, replacement) { return value.replace(pattern, replacement) } /** * @param {string} value * @param {string} search * @return {number} */ function indexof (value, search) { return value.indexOf(search) } /** * @param {string} value * @param {number} index * @return {number} */ function charat (value, index) { return value.charCodeAt(index) | 0 } /** * @param {string} value * @param {number} begin * @param {number} end * @return {string} */ function substr (value, begin, end) { return value.slice(begin, end) } /** * @param {string} value * @return {number} */ function strlen (value) { return value.length } /** * @param {any[]} value * @return {number} */ function sizeof (value) { return value.length } /** * @param {any} value * @param {any[]} array * @return {any} */ function append (value, array) { return array.push(value), value } /** * @param {string[]} array * @param {function} callback * @return {string} */ function combine (array, callback) { return array.map(callback).join('') } /** * @param {string[]} array * @param {RegExp} pattern * @return {string[]} */ function filter (array, pattern) { return array.filter(function (value) { return !match(value, pattern) }) } /***/ }), /***/ "./node_modules/tslib/tslib.es6.mjs": /*!******************************************!*\ !*** ./node_modules/tslib/tslib.es6.mjs ***! \******************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ __addDisposableResource: () => (/* binding */ __addDisposableResource), /* harmony export */ __assign: () => (/* binding */ __assign), /* harmony export */ __asyncDelegator: () => (/* binding */ __asyncDelegator), /* harmony export */ __asyncGenerator: () => (/* binding */ __asyncGenerator), /* harmony export */ __asyncValues: () => (/* binding */ __asyncValues), /* harmony export */ __await: () => (/* binding */ __await), /* harmony export */ __awaiter: () => (/* binding */ __awaiter), /* harmony export */ __classPrivateFieldGet: () => (/* binding */ __classPrivateFieldGet), /* harmony export */ __classPrivateFieldIn: () => (/* binding */ __classPrivateFieldIn), /* harmony export */ __classPrivateFieldSet: () => (/* binding */ __classPrivateFieldSet), /* harmony export */ __createBinding: () => (/* binding */ __createBinding), /* harmony export */ __decorate: () => (/* binding */ __decorate), /* harmony export */ __disposeResources: () => (/* binding */ __disposeResources), /* harmony export */ __esDecorate: () => (/* binding */ __esDecorate), /* harmony export */ __exportStar: () => (/* binding */ __exportStar), /* harmony export */ __extends: () => (/* binding */ __extends), /* harmony export */ __generator: () => (/* binding */ __generator), /* harmony export */ __importDefault: () => (/* binding */ __importDefault), /* harmony export */ __importStar: () => (/* binding */ __importStar), /* harmony export */ __makeTemplateObject: () => (/* binding */ __makeTemplateObject), /* harmony export */ __metadata: () => (/* binding */ __metadata), /* harmony export */ __param: () => (/* binding */ __param), /* harmony export */ __propKey: () => (/* binding */ __propKey), /* harmony export */ __read: () => (/* binding */ __read), /* harmony export */ __rest: () => (/* binding */ __rest), /* harmony export */ __runInitializers: () => (/* binding */ __runInitializers), /* harmony export */ __setFunctionName: () => (/* binding */ __setFunctionName), /* harmony export */ __spread: () => (/* binding */ __spread), /* harmony export */ __spreadArray: () => (/* binding */ __spreadArray), /* harmony export */ __spreadArrays: () => (/* binding */ __spreadArrays), /* harmony export */ __values: () => (/* binding */ __values), /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /****************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ /* global Reflect, Promise, SuppressedError, Symbol */ var extendStatics = function(d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; function __extends(d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } var __assign = function() { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; } return __assign.apply(this, arguments); } function __rest(s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; } function __decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } function __param(paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } } function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); var _, done = false; for (var i = decorators.length - 1; i >= 0; i--) { var context = {}; for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; for (var p in contextIn.access) context.access[p] = contextIn.access[p]; context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); if (kind === "accessor") { if (result === void 0) continue; if (result === null || typeof result !== "object") throw new TypeError("Object expected"); if (_ = accept(result.get)) descriptor.get = _; if (_ = accept(result.set)) descriptor.set = _; if (_ = accept(result.init)) initializers.unshift(_); } else if (_ = accept(result)) { if (kind === "field") initializers.unshift(_); else descriptor[key] = _; } } if (target) Object.defineProperty(target, contextIn.name, descriptor); done = true; }; function __runInitializers(thisArg, initializers, value) { var useValue = arguments.length > 2; for (var i = 0; i < initializers.length; i++) { value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); } return useValue ? value : void 0; }; function __propKey(x) { return typeof x === "symbol" ? x : "".concat(x); }; function __setFunctionName(f, name, prefix) { if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); }; function __metadata(metadataKey, metadataValue) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); } function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } var __createBinding = Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); function __exportStar(m, o) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); } function __values(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); } function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; } /** @deprecated */ function __spread() { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; } /** @deprecated */ function __spreadArrays() { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; } function __spreadArray(to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); } function __await(v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } function __asyncGenerator(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var g = generator.apply(thisArg, _arguments || []), i, q = []; return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } } function __asyncDelegator(o) { var i, p; return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } } function __asyncValues(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } } function __makeTemplateObject(cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var __setModuleDefault = Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }; function __importStar(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; } function __importDefault(mod) { return (mod && mod.__esModule) ? mod : { default: mod }; } function __classPrivateFieldGet(receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); } function __classPrivateFieldSet(receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; } function __classPrivateFieldIn(state, receiver) { if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); return typeof state === "function" ? receiver === state : state.has(receiver); } function __addDisposableResource(env, value, async) { if (value !== null && value !== void 0) { if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); var dispose; if (async) { if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); dispose = value[Symbol.asyncDispose]; } if (dispose === void 0) { if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); dispose = value[Symbol.dispose]; } if (typeof dispose !== "function") throw new TypeError("Object not disposable."); env.stack.push({ value: value, dispose: dispose, async: async }); } else if (async) { env.stack.push({ async: true }); } return value; } var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { var e = new Error(message); return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; }; function __disposeResources(env) { function fail(e) { env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; env.hasError = true; } function next() { while (env.stack.length) { var rec = env.stack.pop(); try { var result = rec.dispose && rec.dispose.call(rec.value); if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); } catch (e) { fail(e); } } if (env.hasError) throw env.error; } return next(); } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __createBinding, __exportStar, __values, __read, __spread, __spreadArrays, __spreadArray, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault, __classPrivateFieldGet, __classPrivateFieldSet, __classPrivateFieldIn, __addDisposableResource, __disposeResources, }); /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ id: moduleId, /******/ loaded: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ (() => { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = (module) => { /******/ var getter = module && module.__esModule ? /******/ () => (module['default']) : /******/ () => (module); /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/node module decorator */ /******/ (() => { /******/ __webpack_require__.nmd = (module) => { /******/ module.paths = []; /******/ if (!module.children) module.children = []; /******/ return module; /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/nonce */ /******/ (() => { /******/ __webpack_require__.nc = undefined; /******/ })(); /******/ /************************************************************************/ /******/ /******/ // startup /******/ // Load entry module and return exports /******/ // This entry module is referenced by other modules so it can't be inlined /******/ var __webpack_exports__ = __webpack_require__("./src/index.ts"); /******/ /******/ return __webpack_exports__; /******/ })() ; }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87Ozs7Ozs7Ozs7Ozs7OztBQ1Z1Qzs7QUFFdkMsMitIQUEyK0g7O0FBRTMrSCxpQ0FBaUMsNERBQU87QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFa0M7Ozs7Ozs7Ozs7Ozs7Ozs7QUNkbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRThCOzs7Ozs7Ozs7Ozs7Ozs7O0FDUjlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVtQzs7Ozs7Ozs7Ozs7QUNsRG5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssSUFBMEM7QUFDL0MsRUFBRSxpQ0FBTyxDQUFDLE1BQVEsRUFBRSxPQUFTLENBQUMsb0NBQUUsT0FBTztBQUFBO0FBQUE7QUFBQSxrR0FBQztBQUN4QyxHQUFHLEtBQUssWUFRTjtBQUNGLENBQUM7QUFDRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBLDJCQUEyQixlQUFlO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnRkFBZ0Y7O0FBRWhGO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7QUMvUkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFCQTtBQUM2RztBQUNqQjtBQUM1Riw4QkFBOEIsbUZBQTJCLENBQUMsNEZBQXFDO0FBQy9GLHNHQUFzRztBQUN0RztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDhCQUE4QjtBQUM5Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCOztBQUVBO0FBQ0EsNkJBQTZCO0FBQzdCOztBQUVBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDO0FBQ3RDLHlGQUF5RjtBQUN6Riw2Q0FBNkM7QUFDN0MsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7QUFDL0IsNkJBQTZCO0FBQzdCLDRCQUE0QjtBQUM1QiwwQkFBMEI7QUFDMUIseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEIsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0IsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxPQUFPLHc2Q0FBdzZDLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLEtBQUssV0FBVyxNQUFNLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLFVBQVUsS0FBSyxNQUFNLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsVUFBVSxRQUFRLFFBQVEscUJBQXFCLFFBQVEsYUFBYSxLQUFLLFdBQVcscUJBQXFCLFdBQVcsVUFBVSxVQUFVLFVBQVUsUUFBUSxPQUFPLFVBQVUscUJBQXFCLFFBQVEsT0FBTyxVQUFVLHFCQUFxQixRQUFRLGFBQWEsTUFBTSxXQUFXLHFCQUFxQixRQUFRLFFBQVEsV0FBVyxxQkFBcUIsUUFBUSxhQUFhLEtBQUssV0FBVyxxQkFBcUIsV0FBVyxXQUFXLFdBQVcsUUFBUSxVQUFVLHFCQUFxQixRQUFRLE9BQU8sVUFBVSxRQUFRLE9BQU8sVUFBVSxRQUFRLFVBQVUscUJBQXFCLFFBQVEsWUFBWSxxQkFBcUIsUUFBUSxpQkFBaUIscUJBQXFCLFFBQVEsT0FBTyxxQkFBcUIsUUFBUSxRQUFRLHFCQUFxQixRQUFRLFFBQVEsV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sVUFBVSxRQUFRLE9BQU8sV0FBVyxXQUFXLFFBQVEsWUFBWSxPQUFPLHFCQUFxQixRQUFRLGFBQWEsS0FBSyxXQUFXLFVBQVUsUUFBUSxPQUFPLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixVQUFVLFdBQVcsc0JBQXNCLFdBQVcsV0FBVyxXQUFXLFVBQVUsV0FBVyxVQUFVLFFBQVEsUUFBUSxxQkFBcUIsV0FBVyxXQUFXLHFCQUFxQixXQUFXLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLFFBQVEsT0FBTyxVQUFVLFdBQVcsVUFBVSxRQUFRLE9BQU8sV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsUUFBUSxPQUFPLFVBQVUsVUFBVSxXQUFXLFFBQVEsT0FBTyxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsUUFBUSxPQUFPLFVBQVUsV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLFVBQVUsV0FBVyxPQUFPLE9BQU8sV0FBVyxVQUFVLE9BQU8sT0FBTyxVQUFVLFVBQVUsUUFBUSxhQUFhLEtBQUssVUFBVSxVQUFVLFdBQVcsVUFBVSxXQUFXLFdBQVcsUUFBUSxPQUFPLFVBQVUsVUFBVSxXQUFXLFdBQVcsVUFBVSxVQUFVLFFBQVEsT0FBTyxXQUFXLFVBQVUsV0FBVyxVQUFVLFdBQVcsVUFBVSxVQUFVLFFBQVEsWUFBWSxLQUFLLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxVQUFVLFFBQVEsT0FBTyxXQUFXLFFBQVEsT0FBTyxXQUFXLFFBQVEsT0FBTyxXQUFXLFFBQVEsT0FBTyxVQUFVLFFBQVEsT0FBTyxVQUFVLFVBQVUsUUFBUSxPQUFPLFVBQVUsV0FBVyxVQUFVLFFBQVEsT0FBTyxXQUFXLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsUUFBUSxPQUFPLFdBQVcsVUFBVSxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsV0FBVyxXQUFXLFFBQVEsT0FBTyxXQUFXLFFBQVEsYUFBYSxLQUFLLFdBQVcsUUFBUSxPQUFPLFdBQVcsUUFBUSxhQUFhLEtBQUssV0FBVyxRQUFRLGFBQWEsS0FBSyxXQUFXLFFBQVEsYUFBYSxLQUFLLFdBQVcsUUFBUSxhQUFhLEtBQUssV0FBVyxRQUFRLGFBQWEsS0FBSyxXQUFXLFFBQVEsT0FBTyxXQUFXLE9BQU8sT0FBTyxXQUFXLFFBQVEsYUFBYSxLQUFLLEtBQUssV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFdBQVcsT0FBTyxPQUFPLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsT0FBTyxPQUFPLFdBQVcsVUFBVSxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxXQUFXLFFBQVEsT0FBTyxXQUFXLFdBQVcsT0FBTyxPQUFPLFdBQVcsVUFBVSxVQUFVLFVBQVUsUUFBUSxPQUFPLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFFBQVEsT0FBTyxVQUFVLFFBQVEsYUFBYSxLQUFLLFVBQVUsUUFBUSxPQUFPLFVBQVUsVUFBVSxVQUFVLFdBQVcsVUFBVSxVQUFVLFVBQVUsVUFBVSxXQUFXLFdBQVcsV0FBVyxPQUFPLE9BQU8sVUFBVSxPQUFPLE9BQU8sTUFBTSxXQUFXLE9BQU8sS0FBSyxPQUFPLFVBQVUsT0FBTyxPQUFPLFVBQVUsT0FBTyxPQUFPLFVBQVUsT0FBTyxPQUFPLFdBQVcsV0FBVyxXQUFXLFVBQVUsVUFBVSxXQUFXLE9BQU8sT0FBTyxVQUFVLE9BQU8sT0FBTyxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxPQUFPLE9BQU8sVUFBVSxRQUFRLE9BQU8sVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsVUFBVSxXQUFXLFFBQVEsT0FBTyxVQUFVLFVBQVUsT0FBTyxPQUFPLFdBQVcsV0FBVyxXQUFXLFVBQVUsV0FBVyxPQUFPLE9BQU8sV0FBVyxXQUFXLFVBQVUsUUFBUSxPQUFPLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxXQUFXLFdBQVcsUUFBUSxTQUFTLFVBQVUsVUFBVSxRQUFRLE9BQU8sVUFBVSxVQUFVLFdBQVcsUUFBUSxPQUFPLHFCQUFxQixxQkFBcUIsc0JBQXNCLHNCQUFzQixzQkFBc0IsV0FBVyxLQUFLLE1BQU0sUUFBUSxPQUFPLFVBQVUsV0FBVyxPQUFPLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxZQUFZLFdBQVcsUUFBUSxPQUFPLFVBQVUsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFVBQVUsV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLE9BQU8sT0FBTyxhQUFhLGVBQWUsYUFBYSxVQUFVLFdBQVcsT0FBTyxPQUFPLGFBQWEsUUFBUSxPQUFPLFdBQVcsV0FBVyxXQUFXLE9BQU8sUUFBUSxXQUFXLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxXQUFXLE9BQU8sT0FBTyxVQUFVLFdBQVcsVUFBVSxXQUFXLFdBQVcsT0FBTyxPQUFPLFVBQVUsT0FBTyxPQUFPLFVBQVUsT0FBTyxPQUFPLFdBQVcsVUFBVSxVQUFVLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxZQUFZLGFBQWEsUUFBUSxPQUFPLFVBQVUsT0FBTyxPQUFPLFVBQVUsV0FBVyxXQUFXLFFBQVEsT0FBTyxhQUFhLFFBQVEsT0FBTyxhQUFhLGFBQWEsV0FBVyxPQUFPLE9BQU8sV0FBVyxPQUFPLE9BQU8sV0FBVyxRQUFRLE9BQU8sVUFBVSxZQUFZLFNBQVMsT0FBTyxVQUFVLFVBQVUsUUFBUSxPQUFPLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxPQUFPLE9BQU8sV0FBVyxPQUFPLE9BQU8sV0FBVyxRQUFRLFFBQVEsTUFBTSxLQUFLLEtBQUssV0FBVyxPQUFPLE1BQU0sT0FBTyxLQUFLLFdBQVcsT0FBTyxNQUFNLE9BQU8sS0FBSyxXQUFXLE9BQU8sTUFBTSxPQUFPLEtBQUssV0FBVyxPQUFPLE1BQU0sT0FBTyxLQUFLLFdBQVcsT0FBTyxNQUFNLE9BQU8sS0FBSyxXQUFXLE9BQU8sTUFBTSxPQUFPLEtBQUssV0FBVyxPQUFPLE1BQU0sT0FBTyxLQUFLLFdBQVcsT0FBTyxNQUFNLE9BQU8sS0FBSyxXQUFXLE9BQU8sTUFBTSxPQUFPLEtBQUssV0FBVyxPQUFPLE1BQU0sT0FBTyxLQUFLLFdBQVcsT0FBTyxNQUFNLE9BQU8sS0FBSyxXQUFXLE9BQU8sTUFBTSxPQUFPLEtBQUssV0FBVyxPQUFPLE1BQU0sUUFBUSxNQUFNLEtBQUssV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sVUFBVSxXQUFXLFdBQVcsUUFBUSxPQUFPLFVBQVUsV0FBVyxXQUFXLFdBQVcsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFVBQVUsVUFBVSxXQUFXLFdBQVcsVUFBVSxXQUFXLFVBQVUsVUFBVSxVQUFVLFdBQVcsT0FBTyxPQUFPLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxPQUFPLE9BQU8sVUFBVSxPQUFPLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxVQUFVLFdBQVcsWUFBWSxZQUFZLFlBQVksUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFdBQVcsVUFBVSxXQUFXLFFBQVEsT0FBTyxXQUFXLFVBQVUsVUFBVSxXQUFXLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsT0FBTyxPQUFPLFVBQVUsYUFBYSxZQUFZLE9BQU8sT0FBTyxVQUFVLFdBQVcsVUFBVSxVQUFVLFdBQVcsT0FBTyxPQUFPLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxRQUFRLE9BQU8sVUFBVSxXQUFXLFdBQVcsWUFBWSxZQUFZLFVBQVUsV0FBVyxPQUFPLE9BQU8sV0FBVyxXQUFXLE9BQU8sT0FBTyxVQUFVLE9BQU8sT0FBTyxXQUFXLFVBQVUsV0FBVyxXQUFXLFVBQVUsVUFBVSxZQUFZLFVBQVUsVUFBVSxXQUFXLFdBQVcsT0FBTyxPQUFPLFdBQVcsV0FBVyxPQUFPLE9BQU8sVUFBVSxXQUFXLFFBQVEsT0FBTyxXQUFXLFVBQVUsV0FBVyxRQUFRLE9BQU8sV0FBVyxXQUFXLFFBQVEsT0FBTyxXQUFXLFdBQVcsV0FBVyxXQUFXLFFBQVEsT0FBTyxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsYUFBYSxhQUFhLE9BQU8sT0FBTyxVQUFVLE9BQU8sT0FBTyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFVBQVUsV0FBVyxXQUFXLFVBQVUsUUFBUSxRQUFRLFVBQVUsV0FBVyxPQUFPLFFBQVEsVUFBVSxPQUFPLFFBQVEsV0FBVyxVQUFVLFdBQVcsVUFBVSxVQUFVLE9BQU8sUUFBUSxXQUFXLE9BQU8sUUFBUSxXQUFXLE9BQU8sUUFBUSxVQUFVLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxPQUFPLFVBQVUsV0FBVyxPQUFPLE9BQU8sV0FBVyxVQUFVLFdBQVcsT0FBTyxPQUFPLFdBQVcsVUFBVSxRQUFRLE9BQU8sV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLE9BQU8sT0FBTyxhQUFhLGVBQWUsYUFBYSxVQUFVLFdBQVcsT0FBTyxPQUFPLFdBQVcsV0FBVyxXQUFXLE9BQU8sUUFBUSxXQUFXLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxXQUFXLE9BQU8sT0FBTyxVQUFVLFdBQVcsVUFBVSxXQUFXLFdBQVcsT0FBTyxPQUFPLFVBQVUsT0FBTyxPQUFPLFVBQVUsT0FBTyxPQUFPLFdBQVcsVUFBVSxVQUFVLE9BQU8sT0FBTyxXQUFXLE9BQU8sT0FBTyxZQUFZLGFBQWEsUUFBUSxPQUFPLFVBQVUsT0FBTyxPQUFPLFVBQVUsV0FBVyxXQUFXLFFBQVEsT0FBTyxhQUFhLFFBQVEsT0FBTyxZQUFZLFlBQVksV0FBVyxPQUFPLE9BQU8sV0FBVyxPQUFPLE9BQU8sV0FBVyxPQUFPLE9BQU8sVUFBVSxXQUFXLFNBQVMsT0FBTyxZQUFZLFFBQVEsT0FBTyxVQUFVLGFBQWEsU0FBUyxPQUFPLGFBQWEsY0FBYyxTQUFTLE9BQU8sTUFBTSxXQUFXLEtBQUssWUFBWSxTQUFTLGFBQWEsaUJBQWlCLFdBQVcsVUFBVSxZQUFZLFlBQVksVUFBVSxVQUFVLFVBQVUsWUFBWSxjQUFjLFlBQVksWUFBWSxXQUFXLFdBQVcsT0FBTywrQkFBK0IsYUFBYSxlQUFlLFFBQVEsK0JBQStCLGFBQWEsUUFBUSxtQkFBbUIsV0FBVyxXQUFXLE9BQU8sbUJBQW1CLFdBQVcsUUFBUSxtQkFBbUIsV0FBVyxRQUFRLG1CQUFtQixXQUFXLE9BQU8sbUJBQW1CLFVBQVUsT0FBTyxhQUFhLDZCQUE2QixXQUFXLFdBQVcsUUFBUSwrQkFBK0IsYUFBYSxhQUFhLFFBQVEsdURBQXVELFdBQVcsV0FBVyxXQUFXLFFBQVEsK0JBQStCLFdBQVcsV0FBVyxTQUFTLCtCQUErQixXQUFXLFdBQVcsUUFBUSxtQkFBbUIsVUFBVSxVQUFVLFdBQVcsVUFBVSxVQUFVLFVBQVUsV0FBVyxRQUFRLE9BQU8sWUFBWSxXQUFXLFdBQVcsT0FBTyxPQUFPLFdBQVcsV0FBVyxXQUFXLE9BQU8sUUFBUSxXQUFXLE9BQU8sT0FBTyxVQUFVLE9BQU8sUUFBUSxXQUFXLE9BQU8sT0FBTyxZQUFZLGFBQWEsVUFBVSxVQUFVLFVBQVUsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLE9BQU8sT0FBTyxXQUFXLFdBQVcsT0FBTyxPQUFPLFdBQVcsV0FBVyxPQUFPLE9BQU8sV0FBVyxXQUFXLFVBQVUsVUFBVSxXQUFXLE9BQU8sT0FBTyxVQUFVLFdBQVcsVUFBVSxVQUFVLE9BQU8sT0FBTyxXQUFXLFdBQVcsWUFBWSxZQUFZLE9BQU8sT0FBTyxXQUFXLFFBQVEsWUFBWSxXQUFXLFVBQVUsV0FBVyxPQUFPLE9BQU8sWUFBWSxRQUFRLE9BQU8sS0FBSyxVQUFVLFdBQVcsT0FBTyxLQUFLLE9BQU8sS0FBSyxVQUFVLFdBQVcsT0FBTyxNQUFNLGFBQWEsS0FBSyxVQUFVLFdBQVcsV0FBVyxPQUFPLE9BQU8sVUFBVSxXQUFXLFdBQVcsVUFBVSxXQUFXLE9BQU8sT0FBTyxZQUFZLFdBQVcsV0FBVyxVQUFVLE9BQU8sT0FBTyxVQUFVLE9BQU8sT0FBTyxVQUFVLFVBQVUsT0FBTyxPQUFPLFdBQVcsVUFBVSxVQUFVLFdBQVcsVUFBVSxXQUFXLFlBQVksUUFBUSxZQUFZLEtBQUssVUFBVSxXQUFXLFlBQVksT0FBTyxPQUFPLFdBQVcsc0JBQXNCLHNCQUFzQixVQUFVLFlBQVksWUFBWSxRQUFRLE9BQU8sV0FBVyxXQUFXLFdBQVcsc0JBQXNCLHNCQUFzQixXQUFXLFVBQVUsVUFBVSxRQUFRLGFBQWEsS0FBSyxVQUFVLFFBQVEsT0FBTyxXQUFXLFFBQVEsYUFBYSxLQUFLLFdBQVcsUUFBUSxRQUFRLE1BQU0sTUFBTSxXQUFXLFVBQVUsV0FBVyxTQUFTLFNBQVMsV0FBVyxXQUFXLFVBQVUsV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLFdBQVcsU0FBUyxTQUFTLFVBQVUsV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxXQUFXLFNBQVMsY0FBYyxVQUFVLFdBQVcsU0FBUyxTQUFTLFdBQVcsU0FBUyxRQUFRLFdBQVcsU0FBUyxjQUFjLEtBQUssV0FBVyxTQUFTLFVBQVUsWUFBWSxRQUFRLFNBQVMsYUFBYSxTQUFTLFFBQVEsV0FBVyxTQUFTLGNBQWMsS0FBSyxXQUFXLFNBQVMsY0FBYyxLQUFLLFdBQVcsU0FBUyxjQUFjLEtBQUssV0FBVyxTQUFTLFFBQVEsVUFBVSxhQUFhLFNBQVMsY0FBYyxNQUFNLFdBQVcsYUFBYSxTQUFTLFFBQVEsYUFBYSxTQUFTLFFBQVEsYUFBYSxTQUFTLFFBQVEsYUFBYSxlQUFlLFNBQVMsUUFBUSxNQUFNLFdBQVcsTUFBTSxXQUFXLFVBQVUsV0FBVyxTQUFTLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxXQUFXLFVBQVUsV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLFFBQVEsUUFBUSxVQUFVLFdBQVcsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxVQUFVLFdBQVcsUUFBUSxRQUFRLFVBQVUsV0FBVyxRQUFRLFFBQVEsVUFBVSxhQUFhLFFBQVEsUUFBUSxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsU0FBUyxRQUFRLFVBQVUsVUFBVSxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxRQUFRLFFBQVEsV0FBVyxXQUFXLFNBQVMsY0FBYyxLQUFLLFVBQVUsVUFBVSxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxRQUFRLFFBQVEsV0FBVyxXQUFXLFNBQVMsUUFBUSxXQUFXLFFBQVEsU0FBUyxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsVUFBVSxRQUFRLFFBQVEsVUFBVSxVQUFVLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxRQUFRLFFBQVEsVUFBVSxVQUFVLFdBQVcsV0FBVyxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsVUFBVSxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsUUFBUSxRQUFRLFVBQVUsVUFBVSxVQUFVLFdBQVcsWUFBWSxXQUFXLFFBQVEsUUFBUSxXQUFXLGFBQWEsYUFBYSxRQUFRLFFBQVEsV0FBVyxZQUFZLGFBQWEsUUFBUSxRQUFRLFdBQVcsV0FBVyxRQUFRLFFBQVEsV0FBVyxhQUFhLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxhQUFhLGVBQWUsU0FBUyxRQUFRLE1BQU0sTUFBTSxXQUFXLFdBQVcsU0FBUyxRQUFRLFVBQVUsU0FBUyxRQUFRLFVBQVUsVUFBVSxVQUFVLFFBQVEsUUFBUSxhQUFhLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxZQUFZLFNBQVMsUUFBUSxVQUFVLFdBQVcsV0FBVyxVQUFVLFVBQVUsYUFBYSxjQUFjLFlBQVksV0FBVyxVQUFVLFFBQVEsUUFBUSxVQUFVLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxVQUFVLFVBQVUsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsYUFBYSxhQUFhLFNBQVMsU0FBUyxXQUFXLFdBQVcsU0FBUyxTQUFTLFdBQVcsV0FBVyxTQUFTLFFBQVEsVUFBVSxXQUFXLFNBQVMsU0FBUyxZQUFZLFNBQVMsUUFBUSxNQUFNLEtBQUssVUFBVSxTQUFTLFFBQVEsV0FBVyxVQUFVLFFBQVEsYUFBYSxZQUFZLFdBQVcsYUFBYSxhQUFhLFlBQVksUUFBUSxRQUFRLFdBQVcsU0FBUyxRQUFRLFlBQVksUUFBUSxRQUFRLFVBQVUsV0FBVyxRQUFRLFFBQVEsV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLFVBQVUsV0FBVyxhQUFhLFdBQVcsVUFBVSxXQUFXLFVBQVUsVUFBVSxXQUFXLFVBQVUsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsUUFBUSxRQUFRLFdBQVcsVUFBVSxZQUFZLFNBQVMsUUFBUSxhQUFhLFNBQVMsUUFBUSxhQUFhLFFBQVEsUUFBUSxhQUFhLFNBQVMsUUFBUSxhQUFhLFlBQVksV0FBVyxTQUFTLFFBQVEsYUFBYSxTQUFTLFVBQVUsYUFBYSxhQUFhLFNBQVMsUUFBUSxhQUFhLFNBQVMsUUFBUSxhQUFhLFFBQVEsUUFBUSxhQUFhLFNBQVMsUUFBUSxXQUFXLFVBQVUsV0FBVyxTQUFTLFFBQVEsWUFBWSxVQUFVLFFBQVEsV0FBVyxVQUFVLFNBQVMsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFNBQVMsUUFBUSxNQUFNLEtBQUssV0FBVyxRQUFRLFFBQVEsV0FBVyxXQUFXLFFBQVEsUUFBUSxXQUFXLFNBQVMsUUFBUSxVQUFVLFdBQVcsYUFBYSxPQUFPLFFBQVEsVUFBVSxRQUFRLFFBQVEsV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsUUFBUSxRQUFRLFVBQVUsU0FBUyxRQUFRLE1BQU0sS0FBSyxXQUFXLFNBQVMsU0FBUyxVQUFVLFNBQVMsUUFBUSxXQUFXLFdBQVcsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFNBQVMsUUFBUSxXQUFXLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxXQUFXLGFBQWEsYUFBYSxXQUFXLFdBQVcsUUFBUSxRQUFRLFVBQVUsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxVQUFVLFdBQVcsVUFBVSxVQUFVLFNBQVMsUUFBUSxXQUFXLFNBQVMsUUFBUSxZQUFZLFlBQVksVUFBVSxTQUFTLFFBQVEsV0FBVyxVQUFVLFVBQVUsV0FBVyxhQUFhLGFBQWEsV0FBVyxhQUFhLGFBQWEsV0FBVyxTQUFTLFFBQVEsV0FBVyxTQUFTLFFBQVEsV0FBVyxXQUFXLFdBQVcsU0FBUyxRQUFRLFlBQVksWUFBWSxVQUFVLFNBQVMsUUFBUSxVQUFVLFNBQVMsUUFBUSxXQUFXLFVBQVUsVUFBVSxXQUFXLGFBQWEsYUFBYSxZQUFZLFNBQVMsUUFBUSxXQUFXLFdBQVcsU0FBUyxRQUFRLFdBQVcsU0FBUyxRQUFRLFdBQVcsWUFBWSxXQUFXLFdBQVcsV0FBVyxXQUFXLFNBQVMsUUFBUSxXQUFXLFNBQVMsUUFBUSxXQUFXLFNBQVMsUUFBUSxXQUFXLFVBQVUsVUFBVSxXQUFXLGFBQWEsYUFBYSxTQUFTLFFBQVEsV0FBVyxTQUFTLFFBQVEsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxTQUFTLFFBQVEsV0FBVyxTQUFTLFFBQVEsV0FBVyxTQUFTLFFBQVEsVUFBVSxVQUFVLFdBQVcsVUFBVSxXQUFXLFNBQVMsUUFBUSxVQUFVLFVBQVUsWUFBWSxXQUFXLFdBQVcsV0FBVyxTQUFTLFFBQVEsWUFBWSxVQUFVLFFBQVEsWUFBWSxVQUFVLFFBQVEsWUFBWSxVQUFVLFFBQVEsWUFBWSxVQUFVLFFBQVEsWUFBWSxVQUFVLFFBQVEsWUFBWSxVQUFVLFFBQVEsV0FBVyxXQUFXLFlBQVksWUFBWSxZQUFZLFdBQVcsV0FBVyxVQUFVLFdBQVcsU0FBUyxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFlBQVksVUFBVSxRQUFRLFdBQVcsU0FBUyxRQUFRLFVBQVUsV0FBVyxVQUFVLFNBQVMsUUFBUSxLQUFLLFVBQVUsUUFBUSxLQUFLLFFBQVEsS0FBSyxVQUFVLFFBQVEsS0FBSyxRQUFRLFdBQVcsV0FBVyxTQUFTLFFBQVEsV0FBVyxXQUFXLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxVQUFVLFNBQVMsUUFBUSxXQUFXLFdBQVcsV0FBVyxRQUFRLFFBQVEsVUFBVSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsV0FBVyxXQUFXLFVBQVUsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLEtBQUssV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsV0FBVyxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxZQUFZLFVBQVUsVUFBVSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLEtBQUssUUFBUSxLQUFLLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxVQUFVLFVBQVUsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxLQUFLLFFBQVEsS0FBSyxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFlBQVksVUFBVSxVQUFVLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsTUFBTSxRQUFRLFVBQVUsWUFBWSxZQUFZLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLGNBQWMsYUFBYSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsUUFBUSxRQUFRLFVBQVUsVUFBVSxXQUFXLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFdBQVcsUUFBUSxRQUFRLFdBQVcsVUFBVSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxVQUFVLFFBQVEsUUFBUSxXQUFXLFdBQVcsUUFBUSxRQUFRLGNBQWMsYUFBYSxhQUFhLGNBQWMsYUFBYSxpQkFBaUIsYUFBYSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsYUFBYSxRQUFRLFFBQVEsWUFBWSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsY0FBYyxRQUFRLFNBQVMsVUFBVSxhQUFhLGlCQUFpQixjQUFjLFVBQVUsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsVUFBVSxXQUFXLFdBQVcsYUFBYSxjQUFjLGNBQWMsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsV0FBVyxXQUFXLFFBQVEsUUFBUSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsUUFBUSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsVUFBVSxRQUFRLFNBQVMsWUFBWSxhQUFhLFFBQVEsUUFBUSxXQUFXLFdBQVcsUUFBUSxRQUFRLFdBQVcsV0FBVyxTQUFTLFFBQVEsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFNBQVMsUUFBUSxVQUFVLFdBQVcsVUFBVSxRQUFRLFFBQVEsVUFBVSxVQUFVLFNBQVMsUUFBUSxLQUFLLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFdBQVcsUUFBUSxLQUFLLFNBQVMsYUFBYSxRQUFRLFNBQVMsWUFBWSxTQUFTLFFBQVEsVUFBVSxTQUFTLFFBQVEsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsV0FBVyxVQUFVLFVBQVUsU0FBUyxRQUFRLFdBQVcsV0FBVyxTQUFTLFNBQVMsWUFBWSxlQUFlLGFBQWEsWUFBWSxlQUFlLGNBQWMsYUFBYSxXQUFXLFdBQVcsU0FBUyxzQkFBc0IsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFFBQVEsc0JBQXNCLFdBQVcsV0FBVyxTQUFTLFlBQVksYUFBYSxhQUFhLFFBQVEsWUFBWSxjQUFjLGNBQWMsU0FBUyxTQUFTLFdBQVcsU0FBUyxRQUFRLFdBQVcsYUFBYSxpQkFBaUIsY0FBYyxXQUFXLFdBQVcsVUFBVSxRQUFRLFFBQVEsY0FBYyxTQUFTLFFBQVEsWUFBWSxhQUFhLGNBQWMsV0FBVyxVQUFVLGFBQWEsZ0JBQWdCLGlCQUFpQixhQUFhLGNBQWMsaUJBQWlCLGNBQWMsVUFBVSxXQUFXLFFBQVEsUUFBUSxhQUFhLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxhQUFhLGdCQUFnQixhQUFhLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxjQUFjLFFBQVEsUUFBUSxhQUFhLGdCQUFnQixRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsY0FBYyxRQUFRLFFBQVEsV0FBVyxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxXQUFXLFdBQVcsYUFBYSxpQkFBaUIsaUJBQWlCLFNBQVMsUUFBUSxZQUFZLFNBQVMsUUFBUSxXQUFXLFVBQVUsVUFBVSxXQUFXLFdBQVcsVUFBVSxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxVQUFVLFVBQVUsV0FBVyxVQUFVLFVBQVUsV0FBVyxVQUFVLFFBQVEsUUFBUSxXQUFXLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsVUFBVSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFVBQVUsVUFBVSxVQUFVLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFVBQVUsWUFBWSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxVQUFVLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxXQUFXLFVBQVUsVUFBVSxXQUFXLFFBQVEsUUFBUSxVQUFVLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsY0FBYyxhQUFhLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsVUFBVSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxXQUFXLFVBQVUsVUFBVSxVQUFVLGFBQWEsZ0JBQWdCLGdCQUFnQixnQkFBZ0IsY0FBYyxTQUFTLFFBQVEsV0FBVyxXQUFXLGFBQWEsYUFBYSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFdBQVcsVUFBVSxTQUFTLFFBQVEsYUFBYSxpQkFBaUIsZ0JBQWdCLGFBQWEsUUFBUSxRQUFRLGNBQWMsU0FBUyxRQUFRLGFBQWEsaUJBQWlCLGdCQUFnQixRQUFRLFFBQVEsY0FBYyxTQUFTLFFBQVEsVUFBVSxTQUFTLFFBQVEsVUFBVSxVQUFVLFNBQVMsUUFBUSxXQUFXLFdBQVcsV0FBVyxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsWUFBWSxZQUFZLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsV0FBVyxXQUFXLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsWUFBWSxZQUFZLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsWUFBWSxZQUFZLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsV0FBVyxXQUFXLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsWUFBWSxZQUFZLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsWUFBWSxZQUFZLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsV0FBVyxXQUFXLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFVBQVUsWUFBWSxZQUFZLFFBQVEsUUFBUSxZQUFZLFlBQVksUUFBUSxRQUFRLFlBQVksV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFNBQVMsUUFBUSxVQUFVLFdBQVcsVUFBVSxVQUFVLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsUUFBUSxRQUFRLHFCQUFxQixxQkFBcUIsV0FBVyxVQUFVLFVBQVUsV0FBVyxRQUFRLFFBQVEsV0FBVyxVQUFVLFVBQVUsUUFBUSxRQUFRLEtBQUssV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLE1BQU0sUUFBUSxXQUFXLFlBQVksYUFBYSxXQUFXLGFBQWEsU0FBUyxRQUFRLFdBQVcsV0FBVyxhQUFhLGFBQWEsV0FBVyxRQUFRLFFBQVEsVUFBVSxXQUFXLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxVQUFVLFdBQVcsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFdBQVcsV0FBVyxRQUFRLFFBQVEsV0FBVyxVQUFVLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxXQUFXLFdBQVcsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFdBQVcsVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFdBQVcsVUFBVSxXQUFXLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFVBQVUsV0FBVyxXQUFXLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxRQUFRLFFBQVEsWUFBWSxhQUFhLFVBQVUsVUFBVSxVQUFVLFlBQVksT0FBTyxRQUFRLFlBQVksYUFBYSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxXQUFXLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsV0FBVyxXQUFXLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFlBQVksZUFBZSxhQUFhLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxRQUFRLFlBQVksYUFBYSxhQUFhLFlBQVksV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsVUFBVSxTQUFTLGVBQWUsS0FBSyxXQUFXLFdBQVcsV0FBVyxnQkFBZ0IsS0FBSyxLQUFLLFdBQVcsV0FBVyxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxVQUFVLFFBQVEsUUFBUSxXQUFXLFdBQVcsV0FBVyxTQUFTLFFBQVEsS0FBSyxXQUFXLFFBQVEsS0FBSyxRQUFRLEtBQUssV0FBVyxRQUFRLEtBQUssUUFBUSxXQUFXLFVBQVUsVUFBVSxVQUFVLGNBQWMsU0FBUyxTQUFTLFdBQVcsU0FBUyxTQUFTLFdBQVcsU0FBUyxTQUFTLFdBQVcsU0FBUyxTQUFTLFdBQVcsU0FBUyxtQkFBbUIsS0FBSyxLQUFLLFdBQVcsV0FBVyxXQUFXLFNBQVMsUUFBUSxXQUFXLFdBQVcsV0FBVyxTQUFTLFFBQVEsV0FBVyxXQUFXLFdBQVcsU0FBUyxRQUFRLFdBQVcsV0FBVyxXQUFXLFNBQVMsWUFBWSxXQUFXLFVBQVUsV0FBVyxXQUFXLFNBQVMsUUFBUSxLQUFLLFdBQVcsdUJBQXVCLE1BQU0sV0FBVyx1QkFBdUIsTUFBTSxXQUFXLHVCQUF1QixNQUFNLFdBQVcsdUJBQXVCLE1BQU0sV0FBVyx1QkFBdUIsTUFBTSxXQUFXLHVCQUF1QixNQUFNLFdBQVcsdUJBQXVCLE1BQU0sV0FBVyx1QkFBdUIsU0FBUyxRQUFRLEtBQUssV0FBVyx1QkFBdUIsTUFBTSxXQUFXLHVCQUF1QixNQUFNLFdBQVcsdUJBQXVCLE1BQU0sV0FBVyx1QkFBdUIsTUFBTSxXQUFXLHVCQUF1QixNQUFNLFdBQVcsdUJBQXVCLE1BQU0sV0FBVyx1QkFBdUIsTUFBTSxXQUFXLHVCQUF1QixTQUFTLFFBQVEsS0FBSyxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsS0FBSyxRQUFRLEtBQUssVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLEtBQUssUUFBUSxLQUFLLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxLQUFLLFFBQVEsS0FBSyxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsS0FBSyxRQUFRLEtBQUssVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLEtBQUssUUFBUSxLQUFLLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsUUFBUSxLQUFLLFFBQVEsS0FBSyxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsS0FBSyxRQUFRLEtBQUssVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLEtBQUssVUFBVSxLQUFLLEtBQUssV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxTQUFTLFFBQVEsVUFBVSxVQUFVLFNBQVMsUUFBUSxXQUFXLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxRQUFRLFFBQVEsVUFBVSxVQUFVLHNCQUFzQixXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLFVBQVUsVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFdBQVcsV0FBVyxXQUFXLFFBQVEsUUFBUSxVQUFVLFdBQVcsV0FBVyxXQUFXLFNBQVMsUUFBUSxXQUFXLFdBQVcsV0FBVyxTQUFTLFFBQVEsV0FBVyxXQUFXLFdBQVcsU0FBUyxRQUFRLEtBQUssV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLEtBQUssUUFBUSxLQUFLLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxRQUFRLFdBQVcsUUFBUSxLQUFLLFFBQVEsS0FBSyxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVEsS0FBSyxRQUFRLEtBQUssV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLFFBQVEsV0FBVyxRQUFRLEtBQUssUUFBUSxXQUFXLFdBQVcsV0FBVyxTQUFTLFFBQVEsS0FBSyxVQUFVLFFBQVEsUUFBUSxVQUFVLFFBQVEsS0FBSyxRQUFRLEtBQUssVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLEtBQUssUUFBUSxXQUFXLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsUUFBUSxRQUFRLFdBQVcsVUFBVSxVQUFVLFVBQVUsWUFBWSxZQUFZLFFBQVEsUUFBUSxZQUFZLFFBQVEsUUFBUSxVQUFVLFdBQVcsV0FBVyxVQUFVLFVBQVUsVUFBVSxXQUFXLFdBQVcsUUFBUSxRQUFRLFVBQVUsV0FBVyxXQUFXLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFNBQVMsUUFBUSxLQUFLLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxVQUFVLFFBQVEsUUFBUSxVQUFVLFVBQVUsUUFBUSxLQUFLLFFBQVEsS0FBSyxVQUFVLFVBQVUsUUFBUSxRQUFRLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxVQUFVLFFBQVEsS0FBSyxRQUFRLFdBQVcsV0FBVyxXQUFXLFVBQVUsVUFBVSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsV0FBVyxRQUFRLFFBQVEsV0FBVyxXQUFXLFFBQVEsUUFBUSxXQUFXLFdBQVcsU0FBUyxRQUFRLEtBQUssVUFBVSxRQUFRLFFBQVEsVUFBVSxRQUFRLEtBQUssUUFBUSxZQUFZLFdBQVcsUUFBUSxRQUFRLFVBQVUsVUFBVSxXQUFXLFVBQVUsVUFBVSxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxTQUFTLFFBQVEsS0FBSyxVQUFVLFdBQVcsUUFBUSxRQUFRLFVBQVUsV0FBVyxRQUFRLFFBQVEsVUFBVSxXQUFXLFFBQVEsS0FBSyxRQUFRLGNBQWMsYUFBYSxVQUFVLFdBQVcsV0FBVyxXQUFXLFVBQVUsVUFBVSxVQUFVLFdBQVcsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFdBQVcsYUFBYSxZQUFZLGNBQWMsY0FBYyxVQUFVLFdBQVcsUUFBUSxRQUFRLGNBQWMsUUFBUSxRQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxZQUFZLFlBQVksV0FBVyxXQUFXLFFBQVEsUUFBUSxVQUFVLFVBQVUsVUFBVSxRQUFRLFFBQVEsVUFBVSxXQUFXLFVBQVUsV0FBVyxVQUFVLFNBQVMsUUFBUSxXQUFXLFNBQVMsUUFBUSxVQUFVLFVBQVUsVUFBVSxVQUFVLFNBQVMsUUFBUSxVQUFVLFNBQVMsUUFBUSxjQUFjLGdCQUFnQixZQUFZLGFBQWEsaUJBQWlCLFFBQVEsUUFBUSxVQUFVLFFBQVEsUUFBUSxVQUFVLFdBQVcsY0FBYyxhQUFhLFFBQVEsUUFBUSxXQUFXLFdBQVcsUUFBUSxRQUFRLFlBQVksUUFBUSxV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Z0QseUNBQXlDLEdBQUcsc0JBQXNCLHlDQUF5QyxHQUFHLGdDQUFnQyw4QkFBOEIsR0FBRyxnREFBZ0QseUNBQXlDLEdBQUcsc0JBQXNCLHlDQUF5QyxHQUFHLGdDQUFnQyw4QkFBOEIsR0FBRyxnREFBZ0QseUNBQXlDLEdBQUcsc0JBQXNCLHlDQUF5QyxHQUFHLGdDQUFnQyw4QkFBOEIsR0FBRyxnREFBZ0QseUNBQXlDLEdBQUcsc0JBQXNCLHlDQUF5QyxHQUFHLGdDQUFnQyw4QkFBOEIsR0FBRyxnREFBZ0QseUNBQXlDLEdBQUcsc0JBQXNCLHlDQUF5QyxHQUFHLGdDQUFnQyw4QkFBOEIsR0FBRyxnREFBZ0QseUNBQXlDLEdBQUcsc0JBQXNCLHlDQUF5QyxHQUFHLGdDQUFnQyw4QkFBOEIsR0FBRyxnREFBZ0QseUNBQXlDLEdBQUcsa0JBQWtCLHlDQUF5QyxHQUFHLHVCQUF1Qiw4QkFBOEIsR0FBRyxzQ0FBc0MseUNBQXlDLEdBQUcsNEJBQTRCLHlDQUF5QyxHQUFHLHNDQUFzQyw4QkFBOEIsR0FBRyxzREFBc0QseUNBQXlDLEdBQUcsNEJBQTRCLHlDQUF5QyxHQUFHLHNDQUFzQyw4QkFBOEIsR0FBRyxzREFBc0QseUNBQXlDLEdBQUcsNEJBQTRCLHlDQUF5QyxHQUFHLHNDQUFzQyw4QkFBOEIsR0FBRyxzREFBc0QseUNBQXlDLEdBQUcsNEJBQTRCLHlDQUF5QyxHQUFHLHNDQUFzQyw4QkFBOEIsR0FBRyxzREFBc0QseUNBQXlDLEdBQUcsNEJBQTRCLHlDQUF5QyxHQUFHLHNDQUFzQyw4QkFBOEIsR0FBRyxzREFBc0QseUNBQXlDLEdBQUcsMkJBQTJCLHlDQUF5QyxHQUFHLHFDQUFxQyw4QkFBOEIsR0FBRyxxREFBcUQseUNBQXlDLEdBQUcsMkJBQTJCLHlDQUF5QyxHQUFHLHFDQUFxQyw4QkFBOEIsR0FBRyxxREFBcUQseUNBQXlDLEdBQUcsMkJBQTJCLHlDQUF5QyxHQUFHLHFDQUFxQyw4QkFBOEIsR0FBRyxxREFBcUQseUNBQXlDLEdBQUcsMkJBQTJCLHlDQUF5QyxHQUFHLHFDQUFxQyw4QkFB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LDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRywyQkFBMkIseUNBQXlDLEdBQUcscUNBQXFDLDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRywyQkFBMkIseUNBQXlDLEdBQUcscUNBQXFDLDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRywyQkFBMkIseUNBQXlDLEdBQUcscUNBQXFDLDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRywyQkFBMkIseUNBQXlDLEdBQUcscUNBQXFDLDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRywyQkFBMkIseUNBQXlDLEdBQUcscUNBQXFDLDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRywyQkFBMkIseUNBQXlDLEdBQUcscUNBQXFDLDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRywyQkFBMkIseUNBQXlDLEdBQUcscUNBQXFDLDhCQUE4QixHQUFHLHFEQUFxRCx5Q0FBeUMsR0FBRyxXQUFXLHlDQUF5QyxHQUFHLGdCQUFnQiw4QkFBOEIsR0FBRywrQkFBK0IseUNBQXlDLEdBQUcscUJBQXFCLHlDQUF5QyxHQUFHLCtCQUErQiw4QkFBOEIsR0FBRywrQ0FBK0MseUNBQXlDLEdBQUcscUJBQXFCLHlDQUF5QyxHQUFHLCtCQUErQiw4QkFBOEIsR0FBRywrQ0FBK0MseUNBQXlDLEdBQUcscUJBQXFCLHlDQUF5QyxHQUFHLCtCQUErQiw4QkFBOEIsR0FBRywrQ0FBK0MseUNBQXlDLEdBQUcscUJBQXFCLHlDQUF5QyxHQUFHLCtCQUErQiw4QkFBOEIsR0FBRywrQ0FBK0MseUNBQXlDLEdBQUcscUJBQXFCLHlDQUF5QyxHQUFHLCtCQUErQiw4QkFBOEIsR0FBRywrQ0FBK0MseUNBQXlDLEdBQUcsb0JBQW9CLHlDQUF5QyxHQUFHLDhCQUE4Qiw4QkFBOEIsR0FBRyw4Q0FBOEMseUNBQXlDLEdBQUcsb0JBQW9CLHlDQUF5QyxHQUFHLDhCQUE4Qiw4QkFBOEIsR0FBRyw4Q0FBOEMseUNBQXlDLEdBQUcsb0JBQW9CLHlDQUF5QyxH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LGtCQUFrQixLQUFLLGtCQUFrQiw0QkFBNEIsd0JBQXdCLGlCQUFpQixrQkFBa0IsS0FBSyxrQkFBa0IsaUJBQWlCLHdCQUF3QixpQkFBaUIsa0JBQWtCLEtBQUssa0JBQWtCLDRCQUE0Qix3QkFBd0IsaUJBQWlCLGtCQUFrQixLQUFLLGtCQUFrQiw0QkFBNEIsd0JBQXdCLGlCQUFpQixrQkFBa0IsS0FBSyxrQkFBa0IsaUJBQWlCLHdCQUF3QixpQkFBaUIsa0JBQWtCLEtBQUssa0JBQWtCLDRCQUE0Qix3QkFBd0IsaUJBQWlCLGtCQUFrQixLQUFLLGtCQUFrQiw0QkFBNEIsd0JBQXdCLGlCQUFpQixrQkFBa0IsS0FBSyxrQkFBa0IsaUJBQWlCLHdCQUF3QixpQkFBaUIsa0JBQWtCLEtBQUssbUJBQW1CLDRCQUE0Qix3QkFBd0IsaUJBQWlCLGtCQUFrQixLQUFLLG1CQUFtQiw0QkFBNEIsd0JBQXdCLGlCQUFpQixrQkFBa0IsS0FBSyxtQkFBbUIsa0JBQWtCLHdCQUF3QixpQkFBaUIsa0JBQWtCLEtBQUsseUJBQXlCLGlDQUFpQyxLQUFLLHVCQUF1QiwyQkFBMkIsS0FBSyx1QkFBdUIsMEJBQTBCLEtBQUsseUJBQXlCLGtDQUFrQyxLQUFLLHVCQUF1Qiw0QkFBNEIsS0FBSyx1QkFBdUIsMkJBQTJCLEtBQUsseUJBQXlCLHVCQUF1QixLQUFLLHVCQUF1QixpQkFBaUIsS0FBSyx1QkFBdUIsZ0JBQWdCLEtBQUsseUJBQXlCLGtDQUFrQyxLQUFLLHVCQUF1Qiw0QkFBNEIsS0FBSyx1QkFBdUIsMkJBQTJCLEtBQUsseUJBQXlCLGtDQUFrQyxLQUFLLHVCQUF1Qiw0QkFBNEIsS0FBSyx1QkFBdUIsMkJBQTJCLEtBQUsseUJBQXlCLHVCQUF1QixLQUFLLHVCQUF1QixpQkFBaUIsS0FBSyx1QkFBdUIsZ0JBQWdCLEtBQUsseUJBQXlCLGtDQUFrQyxLQUFLLHVCQUF1Qiw0QkFBNEIsS0FBSyx1QkFBdUIsMkJBQTJCLEtBQUsseUJBQXlCLGtDQUFrQyxLQUFLLHVCQUF1Qiw0QkFBNEIsS0FBSyx1QkFBdUIsMkJB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O0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFLElBQUk7QUFDTjs7QUFFQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtCQUFrQixRQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsSUFBcUM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxTQUFTLEtBQXFDO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isc0JBQXNCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVSxJQUFxQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNCQUFzQiwyQkFBMkI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFD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O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkLFdBQVcsZUFBZTtBQUMxQixXQUFXLEdBQUc7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QTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRzs7QUFFUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUEsMENBQTBDO0FBQzFDOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQSxvQ0FBb0M7QUFDcEM7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLElBQUk7QUFDbkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLElBQUk7QUFDeEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQztBQUMxQzs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0EsU0FBUztBQUNULHVCQUF1QjtBQUN2QjtBQUNBLFNBQVM7QUFDVCx1QkFBdUI7QUFDdkI7QUFDQSxTQUFTO0FBQ1Qsd0JBQXdCO0FBQ3hCO0FBQ0EsU0FBUztBQUNULHdC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QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNEQUFzRDtBQUN0RDs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLG9CQUFvQixzQkFBc0I7QUFDMUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTs7O0FBR047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixzQkFBc0I7QUFDeEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQ7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7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QUNBOztVQUVBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBOzs7OztXQ3pCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsaUNBQWlDLFdBQVc7V0FDNUM7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBOzs7OztXQ1BBOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7V0NOQTtXQUNBO1dBQ0E7V0FDQTtXQUNBOzs7OztXQ0pBOzs7OztVRUFBO1VBQ0E7VUFDQTtVQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZDN2NHBwL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vaXMtcHJvcC12YWxpZC9kaXN0L2Vtb3Rpb24taXMtcHJvcC12YWxpZC5lc20uanMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL21lbW9pemUvZGlzdC9lbW90aW9uLW1lbW9pemUuZXNtLmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi91bml0bGVzcy9kaXN0L2Vtb3Rpb24tdW5pdGxlc3MuZXNtLmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9hdXRvc2l6ZS9kaXN0L2F1dG9zaXplLmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9jb21wdXRlZC1zdHlsZS9kaXN0L2NvbXB1dGVkU3R5bGUuY29tbW9uanMuanMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL3Nhc3MvZDN2NHBwLnNjc3MiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvZGVlcG1lcmdlL2Rpc3QvY2pzLmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9vYmplY3QtYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2NoZWNrUHJvcFR5cGVzLmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvaGFzLmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QuZGV2ZWxvcG1lbnQuanMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2luZGV4LmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9zaGFsbG93ZXF1YWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL3Nhc3MvZDN2NHBwLnNjc3M/NTQ1OCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9zdHlsZWQtY29tcG9uZW50cy9kaXN0L3N0eWxlZC1jb21wb25lbnRzLmJyb3dzZXIuZXNtLmpzIiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvQ2VsbC50cyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL0NoZWNrYm94LnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL0NvbnRleHRNZW51LnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL0RhdGFUYWJsZS50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9FeHBhbmRlckJ1dHRvbi50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9FeHBhbmRlclJvdy50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9Ob0RhdGFXcmFwcGVyLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL1BhZ2luYXRpb24udHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvUHJvZ3Jlc3NXcmFwcGVyLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL1Jlc3BvbnNpdmVXcmFwcGVyLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL1NlbGVjdC50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9UYWJsZS50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9UYWJsZUJvZHkudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvVGFibGVDZWxsLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL1RhYmxlQ2VsbENoZWNrYm94LnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL1RhYmxlQ2VsbEV4cGFuZGVyLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL1RhYmxlQ29sLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL1RhYmxlQ29sQ2hlY2tib3gudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvVGFibGVDb2xFeHBhbmRlci50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9UYWJsZUhlYWQudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvVGFibGVIZWFkUm93LnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL1RhYmxlSGVhZGVyLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL1RhYmxlUm93LnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL1RhYmxlU3ViaGVhZGVyLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL1RhYmxlV3JhcHBlci50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9jb25zdGFudHMudHMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9kZWZhdWx0UHJvcHMudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvaG9va3MvdXNlQ29sdW1ucy50cyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL2hvb2tzL3VzZURpZFVwZGF0ZUVmZmVjdC50cyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL2hvb2tzL3VzZVJUTC50cyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL2hvb2tzL3VzZVdpbmRvd1NpemUudHMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9pY29ucy9Ecm9wZG93bi50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9pY29ucy9FeHBhbmRlckNvbGxhcHNlZEljb24udHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvaWNvbnMvRXhwYW5kZXJFeHBhbmRlZEljb24udHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvaWNvbnMvRmlyc3RQYWdlLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL2ljb25zL0xhc3RQYWdlLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL2ljb25zL0xlZnQudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvaWNvbnMvTmF0aXZlU29ydEljb24udHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvaWNvbnMvUmlnaHQudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9EYXRhVGFibGUvbWVkaWEudHMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS9zdHlsZXMudHMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS90YWJsZVJlZHVjZXIudHMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS90aGVtZXMudHMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL0RhdGFUYWJsZS90eXBlcy50cyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvRGF0YVRhYmxlL3V0aWwudHMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL2NtcHMvYmFkZ2UvQmFkZ2UudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9jbXBzL2J1dHRvbi9CdXR0b24udHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9jbXBzL2NhcmQvQ2FyZC50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL2NtcHMvY2hpcC9DaGlwLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvY21wcy9jb2xsYXBzaWJsZS9Db2xsYXBzaWJsZS50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL2NtcHMvY29sbGVjdGlvbnMvQ29sbGVjdGlvbi50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL2NtcHMvZm9ybXMvRmllbGQudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9jbXBzL2Zvcm1zL1RleHRhcmVhLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvY21wcy9mb3Jtcy9saW5lLWhlaWdodC50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL2NtcHMvZm9ybXMvcmV4LnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvY21wcy9pY29ucy9JY29uLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvY21wcy9sYXlvdXRzL0xheW91dHMudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9jbXBzL21vZGFsL01vZGFsLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvY21wcy9uYXZpZ2F0aW9uL05hdkJhci50c3giLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL2NtcHMvbmF2aWdhdGlvbi9OYXZpZ2F0aW9uLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvY21wcy9uYXZpZ2F0aW9uL1NpZGVOYXYudHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy9jbXBzL3Byb2dyZXNzL1Byb2dyZXNzLnRzeCIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vZDN2NHBwLy4vc3JjL3V4L2F1dGgvTG9naW4udHN4Iiwid2VicGFjazovL2QzdjRwcC8uL3NyYy91eC9pbmRleC50cyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvc3R5bGVkLWNvbXBvbmVudHMvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvRW51bS5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvc3R5bGVkLWNvbXBvbmVudHMvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvTWlkZGxld2FyZS5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvc3R5bGVkLWNvbXBvbmVudHMvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvUGFyc2VyLmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9zdHlsZWQtY29tcG9uZW50cy9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9QcmVmaXhlci5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvc3R5bGVkLWNvbXBvbmVudHMvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvU2VyaWFsaXplci5qcyIsIndlYnBhY2s6Ly9kM3Y0cHAvLi9ub2RlX21vZHVsZXMvc3R5bGVkLWNvbXBvbmVudHMvbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVG9rZW5pemVyLmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy9zdHlsZWQtY29tcG9uZW50cy9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9VdGlsaXR5LmpzIiwid2VicGFjazovL2QzdjRwcC8uL25vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYubWpzIiwid2VicGFjazovL2QzdjRwcC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9kM3Y0cHAvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vZDN2NHBwL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9kM3Y0cHAvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9kM3Y0cHAvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9kM3Y0cHAvd2VicGFjay9ydW50aW1lL25vZGUgbW9kdWxlIGRlY29yYXRvciIsIndlYnBhY2s6Ly9kM3Y0cHAvd2VicGFjay9ydW50aW1lL25vbmNlIiwid2VicGFjazovL2QzdjRwcC93ZWJwYWNrL2JlZm9yZS1zdGFydHVwIiwid2VicGFjazovL2QzdjRwcC93ZWJwYWNrL3N0YXJ0dXAiLCJ3ZWJwYWNrOi8vZDN2NHBwL3dlYnBhY2svYWZ0ZXItc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJkM3Y0cHBcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiZDN2NHBwXCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCBtZW1vaXplIGZyb20gJ0BlbW90aW9uL21lbW9pemUnO1xuXG52YXIgcmVhY3RQcm9wc1JlZ2V4ID0gL14oKGNoaWxkcmVufGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MfGtleXxyZWZ8YXV0b0ZvY3VzfGRlZmF1bHRWYWx1ZXxkZWZhdWx0Q2hlY2tlZHxpbm5lckhUTUx8c3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nfHN1cHByZXNzSHlkcmF0aW9uV2FybmluZ3x2YWx1ZUxpbmt8YWJicnxhY2NlcHR8YWNjZXB0Q2hhcnNldHxhY2Nlc3NLZXl8YWN0aW9ufGFsbG93fGFsbG93VXNlck1lZGlhfGFsbG93UGF5bWVudFJlcXVlc3R8YWxsb3dGdWxsU2NyZWVufGFsbG93VHJhbnNwYXJlbmN5fGFsdHxhc3luY3xhdXRvQ29tcGxldGV8YXV0b1BsYXl8Y2FwdHVyZXxjZWxsUGFkZGluZ3xjZWxsU3BhY2luZ3xjaGFsbGVuZ2V8Y2hhclNldHxjaGVja2VkfGNpdGV8Y2xhc3NJRHxjbGFzc05hbWV8Y29sc3xjb2xTcGFufGNvbnRlbnR8Y29udGVudEVkaXRhYmxlfGNvbnRleHRNZW51fGNvbnRyb2xzfGNvbnRyb2xzTGlzdHxjb29yZHN8Y3Jvc3NPcmlnaW58ZGF0YXxkYXRlVGltZXxkZWNvZGluZ3xkZWZhdWx0fGRlZmVyfGRpcnxkaXNhYmxlZHxkaXNhYmxlUGljdHVyZUluUGljdHVyZXxkb3dubG9hZHxkcmFnZ2FibGV8ZW5jVHlwZXxlbnRlcktleUhpbnR8Zm9ybXxmb3JtQWN0aW9ufGZvcm1FbmNUeXBlfGZvcm1NZXRob2R8Zm9ybU5vVmFsaWRhdGV8Zm9ybVRhcmdldHxmcmFtZUJvcmRlcnxoZWFkZXJzfGhlaWdodHxoaWRkZW58aGlnaHxocmVmfGhyZWZMYW5nfGh0bWxGb3J8aHR0cEVxdWl2fGlkfGlucHV0TW9kZXxpbnRlZ3JpdHl8aXN8a2V5UGFyYW1zfGtleVR5cGV8a2luZHxsYWJlbHxsYW5nfGxpc3R8bG9hZGluZ3xsb29wfGxvd3xtYXJnaW5IZWlnaHR8bWFyZ2luV2lkdGh8bWF4fG1heExlbmd0aHxtZWRpYXxtZWRpYUdyb3VwfG1ldGhvZHxtaW58bWluTGVuZ3RofG11bHRpcGxlfG11dGVkfG5hbWV8bm9uY2V8bm9WYWxpZGF0ZXxvcGVufG9wdGltdW18cGF0dGVybnxwbGFjZWhvbGRlcnxwbGF5c0lubGluZXxwb3N0ZXJ8cHJlbG9hZHxwcm9maWxlfHJhZGlvR3JvdXB8cmVhZE9ubHl8cmVmZXJyZXJQb2xpY3l8cmVsfHJlcXVpcmVkfHJldmVyc2VkfHJvbGV8cm93c3xyb3dTcGFufHNhbmRib3h8c2NvcGV8c2NvcGVkfHNjcm9sbGluZ3xzZWFtbGVzc3xzZWxlY3RlZHxzaGFwZXxzaXplfHNpemVzfHNsb3R8c3BhbnxzcGVsbENoZWNrfHNyY3xzcmNEb2N8c3JjTGFuZ3xzcmNTZXR8c3RhcnR8c3RlcHxzdHlsZXxzdW1tYXJ5fHRhYkluZGV4fHRhcmdldHx0aXRsZXx0cmFuc2xhdGV8dHlwZXx1c2VNYXB8dmFsdWV8d2lkdGh8d21vZGV8d3JhcHxhYm91dHxkYXRhdHlwZXxpbmxpc3R8cHJlZml4fHByb3BlcnR5fHJlc291cmNlfHR5cGVvZnx2b2NhYnxhdXRvQ2FwaXRhbGl6ZXxhdXRvQ29ycmVjdHxhdXRvU2F2ZXxjb2xvcnxpbmNyZW1lbnRhbHxmYWxsYmFja3xpbmVydHxpdGVtUHJvcHxpdGVtU2NvcGV8aXRlbVR5cGV8aXRlbUlEfGl0ZW1SZWZ8b258b3B0aW9ufHJlc3VsdHN8c2VjdXJpdHl8dW5zZWxlY3RhYmxlfGFjY2VudEhlaWdodHxhY2N1bXVsYXRlfGFkZGl0aXZlfGFsaWdubWVudEJhc2VsaW5lfGFsbG93UmVvcmRlcnxhbHBoYWJldGljfGFtcGxpdHVkZXxhcmFiaWNGb3JtfGFzY2VudHxhdHRyaWJ1dGVOYW1lfGF0dHJpYnV0ZVR5cGV8YXV0b1JldmVyc2V8YXppbXV0aHxiYXNlRnJlcXVlbmN5fGJhc2VsaW5lU2hpZnR8YmFzZVByb2ZpbGV8YmJveHxiZWdpbnxiaWFzfGJ5fGNhbGNNb2RlfGNhcEhlaWdodHxjbGlwfGNsaXBQYXRoVW5pdHN8Y2xpcFBhdGh8Y2xpcFJ1bGV8Y29sb3JJbnRlcnBvbGF0aW9ufGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnN8Y29sb3JQcm9maWxlfGNvbG9yUmVuZGVyaW5nfGNvbnRlbnRTY3JpcHRUeXBlfGNvbnRlbnRTdHlsZVR5cGV8Y3Vyc29yfGN4fGN5fGR8ZGVjZWxlcmF0ZXxkZXNjZW50fGRpZmZ1c2VDb25zdGFudHxkaXJlY3Rpb258ZGlzcGxheXxkaXZpc29yfGRvbWluYW50QmFzZWxpbmV8ZHVyfGR4fGR5fGVkZ2VNb2RlfGVsZXZhdGlvbnxlbmFibGVCYWNrZ3JvdW5kfGVuZHxleHBvbmVudHxleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkfGZpbGx8ZmlsbE9wYWNpdHl8ZmlsbFJ1bGV8ZmlsdGVyfGZpbHRlclJlc3xmaWx0ZXJVbml0c3xmbG9vZENvbG9yfGZsb29kT3BhY2l0eXxmb2N1c2FibGV8Zm9udEZhbWlseXxmb250U2l6ZXxmb250U2l6ZUFkanVzdHxmb250U3RyZXRjaHxmb250U3R5bGV8Zm9udFZhcmlhbnR8Zm9udFdlaWdodHxmb3JtYXR8ZnJvbXxmcnxmeHxmeXxnMXxnMnxnbHlwaE5hbWV8Z2x5cGhPcmllbnRhdGlvbkhvcml6b250YWx8Z2x5cGhPcmllbnRhdGlvblZlcnRpY2FsfGdseXBoUmVmfGdyYWRpZW50VHJhbnNmb3JtfGdyYWRpZW50VW5pdHN8aGFuZ2luZ3xob3JpekFkdlh8aG9yaXpPcmlnaW5YfGlkZW9ncmFwaGljfGltYWdlUmVuZGVyaW5nfGlufGluMnxpbnRlcmNlcHR8a3xrMXxrMnxrM3xrNHxrZXJuZWxNYXRyaXh8a2VybmVsVW5pdExlbmd0aHxrZXJuaW5nfGtleVBvaW50c3xrZXlTcGxpbmVzfGtleVRpbWVzfGxlbmd0aEFkanVzdHxsZXR0ZXJTcGFjaW5nfGxpZ2h0aW5nQ29sb3J8bGltaXRpbmdDb25lQW5nbGV8bG9jYWx8bWFya2VyRW5kfG1hcmtlck1pZHxtYXJrZXJTdGFydHxtYXJrZXJIZWlnaHR8bWFya2VyVW5pdHN8bWFya2VyV2lkdGh8bWFza3xtYXNrQ29udGVudFVuaXRzfG1hc2tVbml0c3xtYXRoZW1hdGljYWx8bW9kZXxudW1PY3RhdmVzfG9mZnNldHxvcGFjaXR5fG9wZXJhdG9yfG9yZGVyfG9yaWVudHxvcmllbnRhdGlvbnxvcmlnaW58b3ZlcmZsb3d8b3ZlcmxpbmVQb3NpdGlvbnxvdmVybGluZVRoaWNrbmVzc3xwYW5vc2UxfHBhaW50T3JkZXJ8cGF0aExlbmd0aHxwYXR0ZXJuQ29udGVudFVuaXRzfHBhdHRlcm5UcmFuc2Zvcm18cGF0dGVyblVuaXRzfHBvaW50ZXJFdmVudHN8cG9pbnRzfHBvaW50c0F0WHxwb2ludHNBdFl8cG9pbnRzQXRafHByZXNlcnZlQWxwaGF8cHJlc2VydmVBc3BlY3RSYXRpb3xwcmltaXRpdmVVbml0c3xyfHJhZGl1c3xyZWZYfHJlZll8cmVuZGVyaW5nSW50ZW50fHJlcGVhdENvdW50fHJlcGVhdER1cnxyZXF1aXJlZEV4dGVuc2lvbnN8cmVxdWlyZWRGZWF0dXJlc3xyZXN0YXJ0fHJlc3VsdHxyb3RhdGV8cnh8cnl8c2NhbGV8c2VlZHxzaGFwZVJlbmRlcmluZ3xzbG9wZXxzcGFjaW5nfHNwZWN1bGFyQ29uc3RhbnR8c3BlY3VsYXJFeHBvbmVudHxzcGVlZHxzcHJlYWRNZXRob2R8c3RhcnRPZmZzZXR8c3RkRGV2aWF0aW9ufHN0ZW1ofHN0ZW12fHN0aXRjaFRpbGVzfHN0b3BDb2xvcnxzdG9wT3BhY2l0eXxzdHJpa2V0aHJvdWdoUG9zaXRpb258c3RyaWtldGhyb3VnaFRoaWNrbmVzc3xzdHJpbmd8c3Ryb2tlfHN0cm9rZURhc2hhcnJheXxzdHJva2VEYXNob2Zmc2V0fHN0cm9rZUxpbmVjYXB8c3Ryb2tlTGluZWpvaW58c3Ryb2tlTWl0ZXJsaW1pdHxzdHJva2VPcGFjaXR5fHN0cm9rZVdpZHRofHN1cmZhY2VTY2FsZXxzeXN0ZW1MYW5ndWFnZXx0YWJsZVZhbHVlc3x0YXJnZXRYfHRhcmdldFl8dGV4dEFuY2hvcnx0ZXh0RGVjb3JhdGlvbnx0ZXh0UmVuZGVyaW5nfHRleHRMZW5ndGh8dG98dHJhbnNmb3JtfHUxfHUyfHVuZGVybGluZVBvc2l0aW9ufHVuZGVybGluZVRoaWNrbmVzc3x1bmljb2RlfHVuaWNvZGVCaWRpfHVuaWNvZGVSYW5nZXx1bml0c1BlckVtfHZBbHBoYWJldGljfHZIYW5naW5nfHZJZGVvZ3JhcGhpY3x2TWF0aGVtYXRpY2FsfHZhbHVlc3x2ZWN0b3JFZmZlY3R8dmVyc2lvbnx2ZXJ0QWR2WXx2ZXJ0T3JpZ2luWHx2ZXJ0T3JpZ2luWXx2aWV3Qm94fHZpZXdUYXJnZXR8dmlzaWJpbGl0eXx3aWR0aHN8d29yZFNwYWNpbmd8d3JpdGluZ01vZGV8eHx4SGVpZ2h0fHgxfHgyfHhDaGFubmVsU2VsZWN0b3J8eGxpbmtBY3R1YXRlfHhsaW5rQXJjcm9sZXx4bGlua0hyZWZ8eGxpbmtSb2xlfHhsaW5rU2hvd3x4bGlua1RpdGxlfHhsaW5rVHlwZXx4bWxCYXNlfHhtbG5zfHhtbG5zWGxpbmt8eG1sTGFuZ3x4bWxTcGFjZXx5fHkxfHkyfHlDaGFubmVsU2VsZWN0b3J8enx6b29tQW5kUGFufGZvcnxjbGFzc3xhdXRvZm9jdXMpfCgoW0RkXVtBYV1bVHRdW0FhXXxbQWFdW1JyXVtJaV1bQWFdfHgpLS4qKSkkLzsgLy8gaHR0cHM6Ly9lc2JlbmNoLmNvbS9iZW5jaC81YmZlZTY4YTRjZDdlNjAwOWVmNjFkMjNcblxudmFyIGlzUHJvcFZhbGlkID0gLyogI19fUFVSRV9fICovbWVtb2l6ZShmdW5jdGlvbiAocHJvcCkge1xuICByZXR1cm4gcmVhY3RQcm9wc1JlZ2V4LnRlc3QocHJvcCkgfHwgcHJvcC5jaGFyQ29kZUF0KDApID09PSAxMTFcbiAgLyogbyAqL1xuICAmJiBwcm9wLmNoYXJDb2RlQXQoMSkgPT09IDExMFxuICAvKiBuICovXG4gICYmIHByb3AuY2hhckNvZGVBdCgyKSA8IDkxO1xufVxuLyogWisxICovXG4pO1xuXG5leHBvcnQgeyBpc1Byb3BWYWxpZCBhcyBkZWZhdWx0IH07XG4iLCJmdW5jdGlvbiBtZW1vaXplKGZuKSB7XG4gIHZhciBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgaWYgKGNhY2hlW2FyZ10gPT09IHVuZGVmaW5lZCkgY2FjaGVbYXJnXSA9IGZuKGFyZyk7XG4gICAgcmV0dXJuIGNhY2hlW2FyZ107XG4gIH07XG59XG5cbmV4cG9ydCB7IG1lbW9pemUgYXMgZGVmYXVsdCB9O1xuIiwidmFyIHVuaXRsZXNzS2V5cyA9IHtcbiAgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6IDEsXG4gIGFzcGVjdFJhdGlvOiAxLFxuICBib3JkZXJJbWFnZU91dHNldDogMSxcbiAgYm9yZGVySW1hZ2VTbGljZTogMSxcbiAgYm9yZGVySW1hZ2VXaWR0aDogMSxcbiAgYm94RmxleDogMSxcbiAgYm94RmxleEdyb3VwOiAxLFxuICBib3hPcmRpbmFsR3JvdXA6IDEsXG4gIGNvbHVtbkNvdW50OiAxLFxuICBjb2x1bW5zOiAxLFxuICBmbGV4OiAxLFxuICBmbGV4R3JvdzogMSxcbiAgZmxleFBvc2l0aXZlOiAxLFxuICBmbGV4U2hyaW5rOiAxLFxuICBmbGV4TmVnYXRpdmU6IDEsXG4gIGZsZXhPcmRlcjogMSxcbiAgZ3JpZFJvdzogMSxcbiAgZ3JpZFJvd0VuZDogMSxcbiAgZ3JpZFJvd1NwYW46IDEsXG4gIGdyaWRSb3dTdGFydDogMSxcbiAgZ3JpZENvbHVtbjogMSxcbiAgZ3JpZENvbHVtbkVuZDogMSxcbiAgZ3JpZENvbHVtblNwYW46IDEsXG4gIGdyaWRDb2x1bW5TdGFydDogMSxcbiAgbXNHcmlkUm93OiAxLFxuICBtc0dyaWRSb3dTcGFuOiAxLFxuICBtc0dyaWRDb2x1bW46IDEsXG4gIG1zR3JpZENvbHVtblNwYW46IDEsXG4gIGZvbnRXZWlnaHQ6IDEsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG9wYWNpdHk6IDEsXG4gIG9yZGVyOiAxLFxuICBvcnBoYW5zOiAxLFxuICB0YWJTaXplOiAxLFxuICB3aWRvd3M6IDEsXG4gIHpJbmRleDogMSxcbiAgem9vbTogMSxcbiAgV2Via2l0TGluZUNsYW1wOiAxLFxuICAvLyBTVkctcmVsYXRlZCBwcm9wZXJ0aWVzXG4gIGZpbGxPcGFjaXR5OiAxLFxuICBmbG9vZE9wYWNpdHk6IDEsXG4gIHN0b3BPcGFjaXR5OiAxLFxuICBzdHJva2VEYXNoYXJyYXk6IDEsXG4gIHN0cm9rZURhc2hvZmZzZXQ6IDEsXG4gIHN0cm9rZU1pdGVybGltaXQ6IDEsXG4gIHN0cm9rZU9wYWNpdHk6IDEsXG4gIHN0cm9rZVdpZHRoOiAxXG59O1xuXG5leHBvcnQgeyB1bml0bGVzc0tleXMgYXMgZGVmYXVsdCB9O1xuIiwiLyohXG5cdGF1dG9zaXplIDQuMC40XG5cdGxpY2Vuc2U6IE1JVFxuXHRodHRwOi8vd3d3LmphY2tsbW9vcmUuY29tL2F1dG9zaXplXG4qL1xuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0ZGVmaW5lKFsnbW9kdWxlJywgJ2V4cG9ydHMnXSwgZmFjdG9yeSk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgIT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHRmYWN0b3J5KG1vZHVsZSwgZXhwb3J0cyk7XG5cdH0gZWxzZSB7XG5cdFx0dmFyIG1vZCA9IHtcblx0XHRcdGV4cG9ydHM6IHt9XG5cdFx0fTtcblx0XHRmYWN0b3J5KG1vZCwgbW9kLmV4cG9ydHMpO1xuXHRcdGdsb2JhbC5hdXRvc2l6ZSA9IG1vZC5leHBvcnRzO1xuXHR9XG59KSh0aGlzLCBmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgbWFwID0gdHlwZW9mIE1hcCA9PT0gXCJmdW5jdGlvblwiID8gbmV3IE1hcCgpIDogZnVuY3Rpb24gKCkge1xuXHRcdHZhciBrZXlzID0gW107XG5cdFx0dmFyIHZhbHVlcyA9IFtdO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGhhczogZnVuY3Rpb24gaGFzKGtleSkge1xuXHRcdFx0XHRyZXR1cm4ga2V5cy5pbmRleE9mKGtleSkgPiAtMTtcblx0XHRcdH0sXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uIGdldChrZXkpIHtcblx0XHRcdFx0cmV0dXJuIHZhbHVlc1trZXlzLmluZGV4T2Yoa2V5KV07XG5cdFx0XHR9LFxuXHRcdFx0c2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuXHRcdFx0XHRpZiAoa2V5cy5pbmRleE9mKGtleSkgPT09IC0xKSB7XG5cdFx0XHRcdFx0a2V5cy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0dmFsdWVzLnB1c2godmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZGVsZXRlOiBmdW5jdGlvbiBfZGVsZXRlKGtleSkge1xuXHRcdFx0XHR2YXIgaW5kZXggPSBrZXlzLmluZGV4T2Yoa2V5KTtcblx0XHRcdFx0aWYgKGluZGV4ID4gLTEpIHtcblx0XHRcdFx0XHRrZXlzLnNwbGljZShpbmRleCwgMSk7XG5cdFx0XHRcdFx0dmFsdWVzLnNwbGljZShpbmRleCwgMSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9KCk7XG5cblx0dmFyIGNyZWF0ZUV2ZW50ID0gZnVuY3Rpb24gY3JlYXRlRXZlbnQobmFtZSkge1xuXHRcdHJldHVybiBuZXcgRXZlbnQobmFtZSwgeyBidWJibGVzOiB0cnVlIH0pO1xuXHR9O1xuXHR0cnkge1xuXHRcdG5ldyBFdmVudCgndGVzdCcpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0Ly8gSUUgZG9lcyBub3Qgc3VwcG9ydCBgbmV3IEV2ZW50KClgXG5cdFx0Y3JlYXRlRXZlbnQgPSBmdW5jdGlvbiBjcmVhdGVFdmVudChuYW1lKSB7XG5cdFx0XHR2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRldnQuaW5pdEV2ZW50KG5hbWUsIHRydWUsIGZhbHNlKTtcblx0XHRcdHJldHVybiBldnQ7XG5cdFx0fTtcblx0fVxuXG5cdGZ1bmN0aW9uIGFzc2lnbih0YSkge1xuXHRcdGlmICghdGEgfHwgIXRhLm5vZGVOYW1lIHx8IHRhLm5vZGVOYW1lICE9PSAnVEVYVEFSRUEnIHx8IG1hcC5oYXModGEpKSByZXR1cm47XG5cblx0XHR2YXIgaGVpZ2h0T2Zmc2V0ID0gbnVsbDtcblx0XHR2YXIgY2xpZW50V2lkdGggPSBudWxsO1xuXHRcdHZhciBjYWNoZWRIZWlnaHQgPSBudWxsO1xuXG5cdFx0ZnVuY3Rpb24gaW5pdCgpIHtcblx0XHRcdHZhciBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRhLCBudWxsKTtcblxuXHRcdFx0aWYgKHN0eWxlLnJlc2l6ZSA9PT0gJ3ZlcnRpY2FsJykge1xuXHRcdFx0XHR0YS5zdHlsZS5yZXNpemUgPSAnbm9uZSc7XG5cdFx0XHR9IGVsc2UgaWYgKHN0eWxlLnJlc2l6ZSA9PT0gJ2JvdGgnKSB7XG5cdFx0XHRcdHRhLnN0eWxlLnJlc2l6ZSA9ICdob3Jpem9udGFsJztcblx0XHRcdH1cblxuXHRcdFx0aWYgKHN0eWxlLmJveFNpemluZyA9PT0gJ2NvbnRlbnQtYm94Jykge1xuXHRcdFx0XHRoZWlnaHRPZmZzZXQgPSAtKHBhcnNlRmxvYXQoc3R5bGUucGFkZGluZ1RvcCkgKyBwYXJzZUZsb2F0KHN0eWxlLnBhZGRpbmdCb3R0b20pKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGhlaWdodE9mZnNldCA9IHBhcnNlRmxvYXQoc3R5bGUuYm9yZGVyVG9wV2lkdGgpICsgcGFyc2VGbG9hdChzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCk7XG5cdFx0XHR9XG5cdFx0XHQvLyBGaXggd2hlbiBhIHRleHRhcmVhIGlzIG5vdCBvbiBkb2N1bWVudCBib2R5IGFuZCBoZWlnaHRPZmZzZXQgaXMgTm90IGEgTnVtYmVyXG5cdFx0XHRpZiAoaXNOYU4oaGVpZ2h0T2Zmc2V0KSkge1xuXHRcdFx0XHRoZWlnaHRPZmZzZXQgPSAwO1xuXHRcdFx0fVxuXG5cdFx0XHR1cGRhdGUoKTtcblx0XHR9XG5cblx0XHRmdW5jdGlvbiBjaGFuZ2VPdmVyZmxvdyh2YWx1ZSkge1xuXHRcdFx0e1xuXHRcdFx0XHQvLyBDaHJvbWUvU2FmYXJpLXNwZWNpZmljIGZpeDpcblx0XHRcdFx0Ly8gV2hlbiB0aGUgdGV4dGFyZWEgeS1vdmVyZmxvdyBpcyBoaWRkZW4sIENocm9tZS9TYWZhcmkgZG8gbm90IHJlZmxvdyB0aGUgdGV4dCB0byBhY2NvdW50IGZvciB0aGUgc3BhY2Vcblx0XHRcdFx0Ly8gbWFkZSBhdmFpbGFibGUgYnkgcmVtb3ZpbmcgdGhlIHNjcm9sbGJhci4gVGhlIGZvbGxvd2luZyBmb3JjZXMgdGhlIG5lY2Vzc2FyeSB0ZXh0IHJlZmxvdy5cblx0XHRcdFx0dmFyIHdpZHRoID0gdGEuc3R5bGUud2lkdGg7XG5cdFx0XHRcdHRhLnN0eWxlLndpZHRoID0gJzBweCc7XG5cdFx0XHRcdC8vIEZvcmNlIHJlZmxvdzpcblx0XHRcdFx0LyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuXHRcdFx0XHR0YS5vZmZzZXRXaWR0aDtcblx0XHRcdFx0LyoganNoaW50IGlnbm9yZTplbmQgKi9cblx0XHRcdFx0dGEuc3R5bGUud2lkdGggPSB3aWR0aDtcblx0XHRcdH1cblxuXHRcdFx0dGEuc3R5bGUub3ZlcmZsb3dZID0gdmFsdWU7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gZ2V0UGFyZW50T3ZlcmZsb3dzKGVsKSB7XG5cdFx0XHR2YXIgYXJyID0gW107XG5cblx0XHRcdHdoaWxlIChlbCAmJiBlbC5wYXJlbnROb2RlICYmIGVsLnBhcmVudE5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG5cdFx0XHRcdGlmIChlbC5wYXJlbnROb2RlLnNjcm9sbFRvcCkge1xuXHRcdFx0XHRcdGFyci5wdXNoKHtcblx0XHRcdFx0XHRcdG5vZGU6IGVsLnBhcmVudE5vZGUsXG5cdFx0XHRcdFx0XHRzY3JvbGxUb3A6IGVsLnBhcmVudE5vZGUuc2Nyb2xsVG9wXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWwgPSBlbC5wYXJlbnROb2RlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gYXJyO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIHJlc2l6ZSgpIHtcblx0XHRcdGlmICh0YS5zY3JvbGxIZWlnaHQgPT09IDApIHtcblx0XHRcdFx0Ly8gSWYgdGhlIHNjcm9sbEhlaWdodCBpcyAwLCB0aGVuIHRoZSBlbGVtZW50IHByb2JhYmx5IGhhcyBkaXNwbGF5Om5vbmUgb3IgaXMgZGV0YWNoZWQgZnJvbSB0aGUgRE9NLlxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHZhciBvdmVyZmxvd3MgPSBnZXRQYXJlbnRPdmVyZmxvd3ModGEpO1xuXHRcdFx0dmFyIGRvY1RvcCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wOyAvLyBOZWVkZWQgZm9yIE1vYmlsZSBJRSAodGlja2V0ICMyNDApXG5cblx0XHRcdHRhLnN0eWxlLmhlaWdodCA9ICcnO1xuXHRcdFx0dGEuc3R5bGUuaGVpZ2h0ID0gdGEuc2Nyb2xsSGVpZ2h0ICsgaGVpZ2h0T2Zmc2V0ICsgJ3B4JztcblxuXHRcdFx0Ly8gdXNlZCB0byBjaGVjayBpZiBhbiB1cGRhdGUgaXMgYWN0dWFsbHkgbmVjZXNzYXJ5IG9uIHdpbmRvdy5yZXNpemVcblx0XHRcdGNsaWVudFdpZHRoID0gdGEuY2xpZW50V2lkdGg7XG5cblx0XHRcdC8vIHByZXZlbnRzIHNjcm9sbC1wb3NpdGlvbiBqdW1waW5nXG5cdFx0XHRvdmVyZmxvd3MuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcblx0XHRcdFx0ZWwubm9kZS5zY3JvbGxUb3AgPSBlbC5zY3JvbGxUb3A7XG5cdFx0XHR9KTtcblxuXHRcdFx0aWYgKGRvY1RvcCkge1xuXHRcdFx0XHRkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wID0gZG9jVG9wO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIHVwZGF0ZSgpIHtcblx0XHRcdHJlc2l6ZSgpO1xuXG5cdFx0XHR2YXIgc3R5bGVIZWlnaHQgPSBNYXRoLnJvdW5kKHBhcnNlRmxvYXQodGEuc3R5bGUuaGVpZ2h0KSk7XG5cdFx0XHR2YXIgY29tcHV0ZWQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0YSwgbnVsbCk7XG5cblx0XHRcdC8vIFVzaW5nIG9mZnNldEhlaWdodCBhcyBhIHJlcGxhY2VtZW50IGZvciBjb21wdXRlZC5oZWlnaHQgaW4gSUUsIGJlY2F1c2UgSUUgZG9lcyBub3QgYWNjb3VudCB1c2Ugb2YgYm9yZGVyLWJveFxuXHRcdFx0dmFyIGFjdHVhbEhlaWdodCA9IGNvbXB1dGVkLmJveFNpemluZyA9PT0gJ2NvbnRlbnQtYm94JyA/IE1hdGgucm91bmQocGFyc2VGbG9hdChjb21wdXRlZC5oZWlnaHQpKSA6IHRhLm9mZnNldEhlaWdodDtcblxuXHRcdFx0Ly8gVGhlIGFjdHVhbCBoZWlnaHQgbm90IG1hdGNoaW5nIHRoZSBzdHlsZSBoZWlnaHQgKHNldCB2aWEgdGhlIHJlc2l6ZSBtZXRob2QpIGluZGljYXRlcyB0aGF0IFxuXHRcdFx0Ly8gdGhlIG1heC1oZWlnaHQgaGFzIGJlZW4gZXhjZWVkZWQsIGluIHdoaWNoIGNhc2UgdGhlIG92ZXJmbG93IHNob3VsZCBiZSBhbGxvd2VkLlxuXHRcdFx0aWYgKGFjdHVhbEhlaWdodCA8IHN0eWxlSGVpZ2h0KSB7XG5cdFx0XHRcdGlmIChjb21wdXRlZC5vdmVyZmxvd1kgPT09ICdoaWRkZW4nKSB7XG5cdFx0XHRcdFx0Y2hhbmdlT3ZlcmZsb3coJ3Njcm9sbCcpO1xuXHRcdFx0XHRcdHJlc2l6ZSgpO1xuXHRcdFx0XHRcdGFjdHVhbEhlaWdodCA9IGNvbXB1dGVkLmJveFNpemluZyA9PT0gJ2NvbnRlbnQtYm94JyA/IE1hdGgucm91bmQocGFyc2VGbG9hdCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0YSwgbnVsbCkuaGVpZ2h0KSkgOiB0YS5vZmZzZXRIZWlnaHQ7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIE5vcm1hbGx5IGtlZXAgb3ZlcmZsb3cgc2V0IHRvIGhpZGRlbiwgdG8gYXZvaWQgZmxhc2ggb2Ygc2Nyb2xsYmFyIGFzIHRoZSB0ZXh0YXJlYSBleHBhbmRzLlxuXHRcdFx0XHRpZiAoY29tcHV0ZWQub3ZlcmZsb3dZICE9PSAnaGlkZGVuJykge1xuXHRcdFx0XHRcdGNoYW5nZU92ZXJmbG93KCdoaWRkZW4nKTtcblx0XHRcdFx0XHRyZXNpemUoKTtcblx0XHRcdFx0XHRhY3R1YWxIZWlnaHQgPSBjb21wdXRlZC5ib3hTaXppbmcgPT09ICdjb250ZW50LWJveCcgPyBNYXRoLnJvdW5kKHBhcnNlRmxvYXQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGEsIG51bGwpLmhlaWdodCkpIDogdGEub2Zmc2V0SGVpZ2h0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmIChjYWNoZWRIZWlnaHQgIT09IGFjdHVhbEhlaWdodCkge1xuXHRcdFx0XHRjYWNoZWRIZWlnaHQgPSBhY3R1YWxIZWlnaHQ7XG5cdFx0XHRcdHZhciBldnQgPSBjcmVhdGVFdmVudCgnYXV0b3NpemU6cmVzaXplZCcpO1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHRhLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdFx0Ly8gRmlyZWZveCB3aWxsIHRocm93IGFuIGVycm9yIG9uIGRpc3BhdGNoRXZlbnQgZm9yIGEgZGV0YWNoZWQgZWxlbWVudFxuXHRcdFx0XHRcdC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg4OTM3NlxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dmFyIHBhZ2VSZXNpemUgPSBmdW5jdGlvbiBwYWdlUmVzaXplKCkge1xuXHRcdFx0aWYgKHRhLmNsaWVudFdpZHRoICE9PSBjbGllbnRXaWR0aCkge1xuXHRcdFx0XHR1cGRhdGUoKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0dmFyIGRlc3Ryb3kgPSBmdW5jdGlvbiAoc3R5bGUpIHtcblx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBwYWdlUmVzaXplLCBmYWxzZSk7XG5cdFx0XHR0YS5yZW1vdmVFdmVudExpc3RlbmVyKCdpbnB1dCcsIHVwZGF0ZSwgZmFsc2UpO1xuXHRcdFx0dGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB1cGRhdGUsIGZhbHNlKTtcblx0XHRcdHRhLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2F1dG9zaXplOmRlc3Ryb3knLCBkZXN0cm95LCBmYWxzZSk7XG5cdFx0XHR0YS5yZW1vdmVFdmVudExpc3RlbmVyKCdhdXRvc2l6ZTp1cGRhdGUnLCB1cGRhdGUsIGZhbHNlKTtcblxuXHRcdFx0T2JqZWN0LmtleXMoc3R5bGUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0XHR0YS5zdHlsZVtrZXldID0gc3R5bGVba2V5XTtcblx0XHRcdH0pO1xuXG5cdFx0XHRtYXAuZGVsZXRlKHRhKTtcblx0XHR9LmJpbmQodGEsIHtcblx0XHRcdGhlaWdodDogdGEuc3R5bGUuaGVpZ2h0LFxuXHRcdFx0cmVzaXplOiB0YS5zdHlsZS5yZXNpemUsXG5cdFx0XHRvdmVyZmxvd1k6IHRhLnN0eWxlLm92ZXJmbG93WSxcblx0XHRcdG92ZXJmbG93WDogdGEuc3R5bGUub3ZlcmZsb3dYLFxuXHRcdFx0d29yZFdyYXA6IHRhLnN0eWxlLndvcmRXcmFwXG5cdFx0fSk7XG5cblx0XHR0YS5hZGRFdmVudExpc3RlbmVyKCdhdXRvc2l6ZTpkZXN0cm95JywgZGVzdHJveSwgZmFsc2UpO1xuXG5cdFx0Ly8gSUU5IGRvZXMgbm90IGZpcmUgb25wcm9wZXJ0eWNoYW5nZSBvciBvbmlucHV0IGZvciBkZWxldGlvbnMsXG5cdFx0Ly8gc28gYmluZGluZyB0byBvbmtleXVwIHRvIGNhdGNoIG1vc3Qgb2YgdGhvc2UgZXZlbnRzLlxuXHRcdC8vIFRoZXJlIGlzIG5vIHdheSB0aGF0IEkga25vdyBvZiB0byBkZXRlY3Qgc29tZXRoaW5nIGxpa2UgJ2N1dCcgaW4gSUU5LlxuXHRcdGlmICgnb25wcm9wZXJ0eWNoYW5nZScgaW4gdGEgJiYgJ29uaW5wdXQnIGluIHRhKSB7XG5cdFx0XHR0YS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHVwZGF0ZSwgZmFsc2UpO1xuXHRcdH1cblxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBwYWdlUmVzaXplLCBmYWxzZSk7XG5cdFx0dGEuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCB1cGRhdGUsIGZhbHNlKTtcblx0XHR0YS5hZGRFdmVudExpc3RlbmVyKCdhdXRvc2l6ZTp1cGRhdGUnLCB1cGRhdGUsIGZhbHNlKTtcblx0XHR0YS5zdHlsZS5vdmVyZmxvd1ggPSAnaGlkZGVuJztcblx0XHR0YS5zdHlsZS53b3JkV3JhcCA9ICdicmVhay13b3JkJztcblxuXHRcdG1hcC5zZXQodGEsIHtcblx0XHRcdGRlc3Ryb3k6IGRlc3Ryb3ksXG5cdFx0XHR1cGRhdGU6IHVwZGF0ZVxuXHRcdH0pO1xuXG5cdFx0aW5pdCgpO1xuXHR9XG5cblx0ZnVuY3Rpb24gZGVzdHJveSh0YSkge1xuXHRcdHZhciBtZXRob2RzID0gbWFwLmdldCh0YSk7XG5cdFx0aWYgKG1ldGhvZHMpIHtcblx0XHRcdG1ldGhvZHMuZGVzdHJveSgpO1xuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIHVwZGF0ZSh0YSkge1xuXHRcdHZhciBtZXRob2RzID0gbWFwLmdldCh0YSk7XG5cdFx0aWYgKG1ldGhvZHMpIHtcblx0XHRcdG1ldGhvZHMudXBkYXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0dmFyIGF1dG9zaXplID0gbnVsbDtcblxuXHQvLyBEbyBub3RoaW5nIGluIE5vZGUuanMgZW52aXJvbm1lbnQgYW5kIElFOCAob3IgbG93ZXIpXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2Ygd2luZG93LmdldENvbXB1dGVkU3R5bGUgIT09ICdmdW5jdGlvbicpIHtcblx0XHRhdXRvc2l6ZSA9IGZ1bmN0aW9uIGF1dG9zaXplKGVsKSB7XG5cdFx0XHRyZXR1cm4gZWw7XG5cdFx0fTtcblx0XHRhdXRvc2l6ZS5kZXN0cm95ID0gZnVuY3Rpb24gKGVsKSB7XG5cdFx0XHRyZXR1cm4gZWw7XG5cdFx0fTtcblx0XHRhdXRvc2l6ZS51cGRhdGUgPSBmdW5jdGlvbiAoZWwpIHtcblx0XHRcdHJldHVybiBlbDtcblx0XHR9O1xuXHR9IGVsc2Uge1xuXHRcdGF1dG9zaXplID0gZnVuY3Rpb24gYXV0b3NpemUoZWwsIG9wdGlvbnMpIHtcblx0XHRcdGlmIChlbCkge1xuXHRcdFx0XHRBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGVsLmxlbmd0aCA/IGVsIDogW2VsXSwgZnVuY3Rpb24gKHgpIHtcblx0XHRcdFx0XHRyZXR1cm4gYXNzaWduKHgsIG9wdGlvbnMpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBlbDtcblx0XHR9O1xuXHRcdGF1dG9zaXplLmRlc3Ryb3kgPSBmdW5jdGlvbiAoZWwpIHtcblx0XHRcdGlmIChlbCkge1xuXHRcdFx0XHRBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGVsLmxlbmd0aCA/IGVsIDogW2VsXSwgZGVzdHJveSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZWw7XG5cdFx0fTtcblx0XHRhdXRvc2l6ZS51cGRhdGUgPSBmdW5jdGlvbiAoZWwpIHtcblx0XHRcdGlmIChlbCkge1xuXHRcdFx0XHRBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGVsLmxlbmd0aCA/IGVsIDogW2VsXSwgdXBkYXRlKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBlbDtcblx0XHR9O1xuXHR9XG5cblx0ZXhwb3J0cy5kZWZhdWx0ID0gYXV0b3NpemU7XG5cdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xufSk7IiwiLy8gREVWOiBXZSBkb24ndCB1c2UgdmFyIGJ1dCBmYXZvciBwYXJhbWV0ZXJzIHNpbmNlIHRoZXNlIHBsYXkgbmljZXIgd2l0aCBtaW5pZmljYXRpb25cbmZ1bmN0aW9uIGNvbXB1dGVkU3R5bGUoZWwsIHByb3AsIGdldENvbXB1dGVkU3R5bGUsIHN0eWxlKSB7XG4gIGdldENvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZTtcbiAgc3R5bGUgPVxuICAgICAgLy8gSWYgd2UgaGF2ZSBnZXRDb21wdXRlZFN0eWxlXG4gICAgICBnZXRDb21wdXRlZFN0eWxlID9cbiAgICAgICAgLy8gUXVlcnkgaXRcbiAgICAgICAgLy8gVE9ETzogRnJvbSBDU1MtUXVlcnkgbm90ZXMsIHdlIG1pZ2h0IG5lZWQgKG5vZGUsIG51bGwpIGZvciBGRlxuICAgICAgICBnZXRDb21wdXRlZFN0eWxlKGVsKSA6XG5cbiAgICAgIC8vIE90aGVyd2lzZSwgd2UgYXJlIGluIElFIGFuZCB1c2UgY3VycmVudFN0eWxlXG4gICAgICAgIGVsLmN1cnJlbnRTdHlsZTtcbiAgaWYgKHN0eWxlKSB7XG4gICAgcmV0dXJuIHN0eWxlXG4gICAgW1xuICAgICAgLy8gU3dpdGNoIHRvIGNhbWVsQ2FzZSBmb3IgQ1NTT01cbiAgICAgIC8vIERFVjogR3JhYmJlZCBmcm9tIGpRdWVyeVxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvYmxvYi8xLjktc3RhYmxlL3NyYy9jc3MuanMjTDE5MS1MMTk0XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9ibG9iLzEuOS1zdGFibGUvc3JjL2NvcmUuanMjTDU5My1MNTk3XG4gICAgICBwcm9wLnJlcGxhY2UoLy0oXFx3KS9naSwgZnVuY3Rpb24gKHdvcmQsIGxldHRlcikge1xuICAgICAgICByZXR1cm4gbGV0dGVyLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9KVxuICAgIF07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb21wdXRlZFN0eWxlO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiQGltcG9ydCB1cmwoaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVVidW50dSk7XCJdKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgQGNoYXJzZXQgXCJVVEYtOFwiO1xuLndlYm8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2MmQ2ICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXRleHQge1xuICBjb2xvcjogIzAwNjJkNiAhaW1wb3J0YW50O1xufVxuXG4ud2Viby13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjJkNiAhaW1wb3J0YW50O1xufVxuXG4ud2Viby5zZWNvbmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3N0ZBICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXRleHQudGV4dC1zZWNvbmQge1xuICBjb2xvcjogIzAwNzdGQSAhaW1wb3J0YW50O1xufVxuXG4ud2Viby13YXZlcy53YXZlcy1zZWNvbmQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDc3RkEgIWltcG9ydGFudDtcbn1cblxuLndlYm8udGhpcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDliZGRkICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXRleHQudGV4dC10aGlyZCB7XG4gIGNvbG9yOiAjMDliZGRkICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXdhdmVzLndhdmVzLXRoaXJkIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDliZGRkICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLmZvdXJ0aCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmU3ZmUgIWltcG9ydGFudDtcbn1cblxuLndlYm8tdGV4dC50ZXh0LWZvdXJ0aCB7XG4gIGNvbG9yOiAjY2JlN2ZlICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXdhdmVzLndhdmVzLWZvdXJ0aCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NiZTdmZSAhaW1wb3J0YW50O1xufVxuXG4ud2Viby5saWdodGVuLTUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmJkZWZiICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXRleHQudGV4dC1saWdodGVuLTUge1xuICBjb2xvcjogI2JiZGVmYiAhaW1wb3J0YW50O1xufVxuXG4ud2Viby13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiYmRlZmIgIWltcG9ydGFudDtcbn1cblxuLndlYm8ubGlnaHRlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNSAhaW1wb3J0YW50O1xufVxuXG4ud2Viby10ZXh0LnRleHQtbGlnaHRlbi00IHtcbiAgY29sb3I6ICM0MmE1ZjUgIWltcG9ydGFudDtcbn1cblxuLndlYm8td2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1ICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLmxpZ2h0ZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3OTg2Y2IgIWltcG9ydGFudDtcbn1cblxuLndlYm8tdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XG4gIGNvbG9yOiAjNzk4NmNiICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzc5ODZjYiAhaW1wb3J0YW50O1xufVxuXG4ud2Viby5saWdodGVuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTEyZGE4ICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXRleHQudGV4dC1saWdodGVuLTIge1xuICBjb2xvcjogIzUxMmRhOCAhaW1wb3J0YW50O1xufVxuXG4ud2Viby13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MTJkYTggIWltcG9ydGFudDtcbn1cblxuLndlYm8ubGlnaHRlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI4MzU5MyAhaW1wb3J0YW50O1xufVxuXG4ud2Viby10ZXh0LnRleHQtbGlnaHRlbi0xIHtcbiAgY29sb3I6ICMyODM1OTMgIWltcG9ydGFudDtcbn1cblxuLndlYm8td2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjgzNTkzICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLmRhcmtlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QwMTgxZSAhaW1wb3J0YW50O1xufVxuXG4ud2Viby10ZXh0LnRleHQtZGFya2VuLTEge1xuICBjb2xvcjogI2QwMTgxZSAhaW1wb3J0YW50O1xufVxuXG4ud2Viby13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QwMTgxZSAhaW1wb3J0YW50O1xufVxuXG4ud2Viby5kYXJrZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiOTE1MWIgIWltcG9ydGFudDtcbn1cblxuLndlYm8tdGV4dC50ZXh0LWRhcmtlbi0yIHtcbiAgY29sb3I6ICNiOTE1MWIgIWltcG9ydGFudDtcbn1cblxuLndlYm8td2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiOTE1MWIgIWltcG9ydGFudDtcbn1cblxuLndlYm8uZGFya2VuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTIxMzE4ICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXRleHQudGV4dC1kYXJrZW4tMyB7XG4gIGNvbG9yOiAjYTIxMzE4ICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTIxMzE4ICFpbXBvcnRhbnQ7XG59XG5cbi53ZWJvLmItIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ5Y2U1ZiAhaW1wb3J0YW50O1xufVxuXG4ud2Viby10ZXh0LnRleHQtYi0ge1xuICBjb2xvcjogIzQ5Y2U1ZiAhaW1wb3J0YW50O1xufVxuXG4ud2Viby13YXZlcy53YXZlcy1iLSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ5Y2U1ZiAhaW1wb3J0YW50O1xufVxuXG4ud2Viby5kYXJrZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4YjEwMTQgIWltcG9ydGFudDtcbn1cblxuLndlYm8tdGV4dC50ZXh0LWRhcmtlbi00IHtcbiAgY29sb3I6ICM4YjEwMTQgIWltcG9ydGFudDtcbn1cblxuLndlYm8td2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4YjEwMTQgIWltcG9ydGFudDtcbn1cblxuLnJlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDQzMzYgIWltcG9ydGFudDtcbn1cblxuLnJlZC10ZXh0IHtcbiAgY29sb3I6ICNmNDQzMzYgIWltcG9ydGFudDtcbn1cblxuLnJlZC13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NDMzNiAhaW1wb3J0YW50O1xufVxuXG4ucmVkLmxpZ2h0ZW4tNSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmViZWUgIWltcG9ydGFudDtcbn1cblxuLnJlZC10ZXh0LnRleHQtbGlnaHRlbi01IHtcbiAgY29sb3I6ICNmZmViZWUgIWltcG9ydGFudDtcbn1cblxuLnJlZC13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmViZWUgIWltcG9ydGFudDtcbn1cblxuLnJlZC5saWdodGVuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjZGQyICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XG4gIGNvbG9yOiAjZmZjZGQyICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtd2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjZGQyICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQubGlnaHRlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VmOWE5YSAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXRleHQudGV4dC1saWdodGVuLTMge1xuICBjb2xvcjogI2VmOWE5YSAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VmOWE5YSAhaW1wb3J0YW50O1xufVxuXG4ucmVkLmxpZ2h0ZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNTczNzMgIWltcG9ydGFudDtcbn1cblxuLnJlZC10ZXh0LnRleHQtbGlnaHRlbi0yIHtcbiAgY29sb3I6ICNlNTczNzMgIWltcG9ydGFudDtcbn1cblxuLnJlZC13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNTczNzMgIWltcG9ydGFudDtcbn1cblxuLnJlZC5saWdodGVuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWY1MzUwICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XG4gIGNvbG9yOiAjZWY1MzUwICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtd2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWY1MzUwICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQuZGFya2VuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTUzOTM1ICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtdGV4dC50ZXh0LWRhcmtlbi0xIHtcbiAgY29sb3I6ICNlNTM5MzUgIWltcG9ydGFudDtcbn1cblxuLnJlZC13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U1MzkzNSAhaW1wb3J0YW50O1xufVxuXG4ucmVkLmRhcmtlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QzMmYyZiAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXRleHQudGV4dC1kYXJrZW4tMiB7XG4gIGNvbG9yOiAjZDMyZjJmICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtd2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkMzJmMmYgIWltcG9ydGFudDtcbn1cblxuLnJlZC5kYXJrZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjNjI4MjggIWltcG9ydGFudDtcbn1cblxuLnJlZC10ZXh0LnRleHQtZGFya2VuLTMge1xuICBjb2xvcjogI2M2MjgyOCAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzYyODI4ICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQuZGFya2VuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjcxYzFjICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtdGV4dC50ZXh0LWRhcmtlbi00IHtcbiAgY29sb3I6ICNiNzFjMWMgIWltcG9ydGFudDtcbn1cblxuLnJlZC13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I3MWMxYyAhaW1wb3J0YW50O1xufVxuXG4ucmVkLmFjY2VudC0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOGE4MCAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXRleHQudGV4dC1hY2NlbnQtMSB7XG4gIGNvbG9yOiAjZmY4YTgwICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtd2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjhhODAgIWltcG9ydGFudDtcbn1cblxuLnJlZC5hY2NlbnQtMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTIgIWltcG9ydGFudDtcbn1cblxuLnJlZC10ZXh0LnRleHQtYWNjZW50LTIge1xuICBjb2xvcjogI2ZmNTI1MiAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQuYWNjZW50LTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYxNzQ0ICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtdGV4dC50ZXh0LWFjY2VudC0zIHtcbiAgY29sb3I6ICNmZjE3NDQgIWltcG9ydGFudDtcbn1cblxuLnJlZC13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmMTc0NCAhaW1wb3J0YW50O1xufVxuXG4ucmVkLmFjY2VudC00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q1MDAwMCAhaW1wb3J0YW50O1xufVxuXG4ucmVkLXRleHQudGV4dC1hY2NlbnQtNCB7XG4gIGNvbG9yOiAjZDUwMDAwICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtd2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkNTAwMDAgIWltcG9ydGFudDtcbn1cblxuLnBpbmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTkxZTYzICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXRleHQge1xuICBjb2xvcjogI2U5MWU2MyAhaW1wb3J0YW50O1xufVxuXG4ucGluay13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5MWU2MyAhaW1wb3J0YW50O1xufVxuXG4ucGluay5saWdodGVuLTUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNlNGVjICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXRleHQudGV4dC1saWdodGVuLTUge1xuICBjb2xvcjogI2ZjZTRlYyAhaW1wb3J0YW50O1xufVxuXG4ucGluay13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmY2U0ZWMgIWltcG9ydGFudDtcbn1cblxuLnBpbmsubGlnaHRlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4YmJkMCAhaW1wb3J0YW50O1xufVxuXG4ucGluay10ZXh0LnRleHQtbGlnaHRlbi00IHtcbiAgY29sb3I6ICNmOGJiZDAgIWltcG9ydGFudDtcbn1cblxuLnBpbmstd2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhiYmQwICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLmxpZ2h0ZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDhmYjEgIWltcG9ydGFudDtcbn1cblxuLnBpbmstdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XG4gIGNvbG9yOiAjZjQ4ZmIxICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0OGZiMSAhaW1wb3J0YW50O1xufVxuXG4ucGluay5saWdodGVuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjA2MjkyICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXRleHQudGV4dC1saWdodGVuLTIge1xuICBjb2xvcjogI2YwNjI5MiAhaW1wb3J0YW50O1xufVxuXG4ucGluay13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMDYyOTIgIWltcG9ydGFudDtcbn1cblxuLnBpbmsubGlnaHRlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VjNDA3YSAhaW1wb3J0YW50O1xufVxuXG4ucGluay10ZXh0LnRleHQtbGlnaHRlbi0xIHtcbiAgY29sb3I6ICNlYzQwN2EgIWltcG9ydGFudDtcbn1cblxuLnBpbmstd2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWM0MDdhICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLmRhcmtlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q4MWI2MCAhaW1wb3J0YW50O1xufVxuXG4ucGluay10ZXh0LnRleHQtZGFya2VuLTEge1xuICBjb2xvcjogI2Q4MWI2MCAhaW1wb3J0YW50O1xufVxuXG4ucGluay13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q4MWI2MCAhaW1wb3J0YW50O1xufVxuXG4ucGluay5kYXJrZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjMjE4NWIgIWltcG9ydGFudDtcbn1cblxuLnBpbmstdGV4dC50ZXh0LWRhcmtlbi0yIHtcbiAgY29sb3I6ICNjMjE4NWIgIWltcG9ydGFudDtcbn1cblxuLnBpbmstd2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjMjE4NWIgIWltcG9ydGFudDtcbn1cblxuLnBpbmsuZGFya2VuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWQxNDU3ICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXRleHQudGV4dC1kYXJrZW4tMyB7XG4gIGNvbG9yOiAjYWQxNDU3ICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWQxNDU3ICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLmRhcmtlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg4MGU0ZiAhaW1wb3J0YW50O1xufVxuXG4ucGluay10ZXh0LnRleHQtZGFya2VuLTQge1xuICBjb2xvcjogIzg4MGU0ZiAhaW1wb3J0YW50O1xufVxuXG4ucGluay13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg4MGU0ZiAhaW1wb3J0YW50O1xufVxuXG4ucGluay5hY2NlbnQtMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjgwYWIgIWltcG9ydGFudDtcbn1cblxuLnBpbmstdGV4dC50ZXh0LWFjY2VudC0xIHtcbiAgY29sb3I6ICNmZjgwYWIgIWltcG9ydGFudDtcbn1cblxuLnBpbmstd2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjgwYWIgIWltcG9ydGFudDtcbn1cblxuLnBpbmsuYWNjZW50LTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY0MDgxICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXRleHQudGV4dC1hY2NlbnQtMiB7XG4gIGNvbG9yOiAjZmY0MDgxICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY0MDgxICFpbXBvcnRhbnQ7XG59XG5cbi5waW5rLmFjY2VudC0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1MDA1NyAhaW1wb3J0YW50O1xufVxuXG4ucGluay10ZXh0LnRleHQtYWNjZW50LTMge1xuICBjb2xvcjogI2Y1MDA1NyAhaW1wb3J0YW50O1xufVxuXG4ucGluay13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1MDA1NyAhaW1wb3J0YW50O1xufVxuXG4ucGluay5hY2NlbnQtNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjNTExNjIgIWltcG9ydGFudDtcbn1cblxuLnBpbmstdGV4dC50ZXh0LWFjY2VudC00IHtcbiAgY29sb3I6ICNjNTExNjIgIWltcG9ydGFudDtcbn1cblxuLnBpbmstd2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjNTExNjIgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5YzI3YjAgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS10ZXh0IHtcbiAgY29sb3I6ICM5YzI3YjAgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzljMjdiMCAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLmxpZ2h0ZW4tNSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2U1ZjUgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS10ZXh0LnRleHQtbGlnaHRlbi01IHtcbiAgY29sb3I6ICNmM2U1ZjUgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2U1ZjUgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS5saWdodGVuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFiZWU3ICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XG4gIGNvbG9yOiAjZTFiZWU3ICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtd2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFiZWU3ICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUubGlnaHRlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NlOTNkOCAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXRleHQudGV4dC1saWdodGVuLTMge1xuICBjb2xvcjogI2NlOTNkOCAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NlOTNkOCAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLmxpZ2h0ZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiYTY4YzggIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS10ZXh0LnRleHQtbGlnaHRlbi0yIHtcbiAgY29sb3I6ICNiYTY4YzggIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiYTY4YzggIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS5saWdodGVuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWI0N2JjICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XG4gIGNvbG9yOiAjYWI0N2JjICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWI0N2JjICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUuZGFya2VuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGUyNGFhICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtdGV4dC50ZXh0LWRhcmtlbi0xIHtcbiAgY29sb3I6ICM4ZTI0YWEgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhlMjRhYSAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLmRhcmtlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzdiMWZhMiAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXRleHQudGV4dC1kYXJrZW4tMiB7XG4gIGNvbG9yOiAjN2IxZmEyICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtd2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3YjFmYTIgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS5kYXJrZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2YTFiOWEgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS10ZXh0LnRleHQtZGFya2VuLTMge1xuICBjb2xvcjogIzZhMWI5YSAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmExYjlhICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUuZGFya2VuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGExNDhjICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtdGV4dC50ZXh0LWRhcmtlbi00IHtcbiAgY29sb3I6ICM0YTE0OGMgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRhMTQ4YyAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLmFjY2VudC0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VhODBmYyAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXRleHQudGV4dC1hY2NlbnQtMSB7XG4gIGNvbG9yOiAjZWE4MGZjICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtd2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlYTgwZmMgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS5hY2NlbnQtMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMDQwZmIgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS10ZXh0LnRleHQtYWNjZW50LTIge1xuICBjb2xvcjogI2UwNDBmYiAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTA0MGZiICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUuYWNjZW50LTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDUwMGY5ICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtdGV4dC50ZXh0LWFjY2VudC0zIHtcbiAgY29sb3I6ICNkNTAwZjkgIWltcG9ydGFudDtcbn1cblxuLnB1cnBsZS13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q1MDBmOSAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLmFjY2VudC00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FhMDBmZiAhaW1wb3J0YW50O1xufVxuXG4ucHVycGxlLXRleHQudGV4dC1hY2NlbnQtNCB7XG4gIGNvbG9yOiAjYWEwMGZmICFpbXBvcnRhbnQ7XG59XG5cbi5wdXJwbGUtd2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhYTAwZmYgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY3M2FiNyAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtdGV4dCB7XG4gIGNvbG9yOiAjNjczYWI3ICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY3M2FiNyAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUubGlnaHRlbi01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VkZTdmNiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XG4gIGNvbG9yOiAjZWRlN2Y2ICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZGU3ZjYgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLmxpZ2h0ZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkMWM0ZTkgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1saWdodGVuLTQge1xuICBjb2xvcjogI2QxYzRlOSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDFjNGU5ICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS5saWdodGVuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjM5ZGRiICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtbGlnaHRlbi0zIHtcbiAgY29sb3I6ICNiMzlkZGIgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IzOWRkYiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUubGlnaHRlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk1NzVjZCAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XG4gIGNvbG9yOiAjOTU3NWNkICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5NTc1Y2QgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLmxpZ2h0ZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3ZTU3YzIgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1saWdodGVuLTEge1xuICBjb2xvcjogIzdlNTdjMiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2U1N2MyICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS5kYXJrZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1ZTM1YjEgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1kYXJrZW4tMSB7XG4gIGNvbG9yOiAjNWUzNWIxICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVlMzViMSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUuZGFya2VuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTEyZGE4ICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtZGFya2VuLTIge1xuICBjb2xvcjogIzUxMmRhOCAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MTJkYTggIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLmRhcmtlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ1MjdhMCAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWRhcmtlbi0zIHtcbiAgY29sb3I6ICM0NTI3YTAgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDUyN2EwICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS5kYXJrZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMTFiOTIgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1kYXJrZW4tNCB7XG4gIGNvbG9yOiAjMzExYjkyICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMxMWI5MiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUuYWNjZW50LTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjM4OGZmICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtYWNjZW50LTEge1xuICBjb2xvcjogI2IzODhmZiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiMzg4ZmYgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLmFjY2VudC0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzdjNGRmZiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWFjY2VudC0yIHtcbiAgY29sb3I6ICM3YzRkZmYgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2M0ZGZmICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS5hY2NlbnQtMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2NTFmZmYgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1hY2NlbnQtMyB7XG4gIGNvbG9yOiAjNjUxZmZmICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY1MWZmZiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUuYWNjZW50LTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjIwMGVhICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtYWNjZW50LTQge1xuICBjb2xvcjogIzYyMDBlYSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2MjAwZWEgIWltcG9ydGFudDtcbn1cblxuLmluZGlnbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzZjUxYjUgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby10ZXh0IHtcbiAgY29sb3I6ICMzZjUxYjUgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNSAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLmxpZ2h0ZW4tNSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOGVhZjYgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby10ZXh0LnRleHQtbGlnaHRlbi01IHtcbiAgY29sb3I6ICNlOGVhZjYgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOGVhZjYgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby5saWdodGVuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzVjYWU5ICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28tdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XG4gIGNvbG9yOiAjYzVjYWU5ICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28td2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzVjYWU5ICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28ubGlnaHRlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzlmYThkYSAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXRleHQudGV4dC1saWdodGVuLTMge1xuICBjb2xvcjogIzlmYThkYSAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzlmYThkYSAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLmxpZ2h0ZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3OTg2Y2IgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby10ZXh0LnRleHQtbGlnaHRlbi0yIHtcbiAgY29sb3I6ICM3OTg2Y2IgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3OTg2Y2IgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby5saWdodGVuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWM2YmMwICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28tdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XG4gIGNvbG9yOiAjNWM2YmMwICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28td2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWM2YmMwICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28uZGFya2VuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzk0OWFiICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28tdGV4dC50ZXh0LWRhcmtlbi0xIHtcbiAgY29sb3I6ICMzOTQ5YWIgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM5NDlhYiAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLmRhcmtlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwM2Y5ZiAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXRleHQudGV4dC1kYXJrZW4tMiB7XG4gIGNvbG9yOiAjMzAzZjlmICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28td2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMDNmOWYgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby5kYXJrZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyODM1OTMgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby10ZXh0LnRleHQtZGFya2VuLTMge1xuICBjb2xvcjogIzI4MzU5MyAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjgzNTkzICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28uZGFya2VuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWEyMzdlICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28tdGV4dC50ZXh0LWRhcmtlbi00IHtcbiAgY29sb3I6ICMxYTIzN2UgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFhMjM3ZSAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLmFjY2VudC0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhjOWVmZiAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXRleHQudGV4dC1hY2NlbnQtMSB7XG4gIGNvbG9yOiAjOGM5ZWZmICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28td2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4YzllZmYgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby5hY2NlbnQtMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MzZkZmUgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby10ZXh0LnRleHQtYWNjZW50LTIge1xuICBjb2xvcjogIzUzNmRmZSAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTM2ZGZlICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28uYWNjZW50LTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Q1YWZlICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28tdGV4dC50ZXh0LWFjY2VudC0zIHtcbiAgY29sb3I6ICMzZDVhZmUgIWltcG9ydGFudDtcbn1cblxuLmluZGlnby13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNkNWFmZSAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLmFjY2VudC00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwNGZmZSAhaW1wb3J0YW50O1xufVxuXG4uaW5kaWdvLXRleHQudGV4dC1hY2NlbnQtNCB7XG4gIGNvbG9yOiAjMzA0ZmZlICFpbXBvcnRhbnQ7XG59XG5cbi5pbmRpZ28td2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMDRmZmUgIWltcG9ydGFudDtcbn1cblxuLmJsdWUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE5NmYzICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXRleHQge1xuICBjb2xvcjogIzIxOTZmMyAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIxOTZmMyAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS5saWdodGVuLTUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNmMmZkICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXRleHQudGV4dC1saWdodGVuLTUge1xuICBjb2xvcjogI2UzZjJmZCAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlM2YyZmQgIWltcG9ydGFudDtcbn1cblxuLmJsdWUubGlnaHRlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JiZGVmYiAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi00IHtcbiAgY29sb3I6ICNiYmRlZmIgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmJkZWZiICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLmxpZ2h0ZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5MGNhZjkgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XG4gIGNvbG9yOiAjOTBjYWY5ICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzkwY2FmOSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS5saWdodGVuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjRiNWY2ICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXRleHQudGV4dC1saWdodGVuLTIge1xuICBjb2xvcjogIzY0YjVmNiAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2NGI1ZjYgIWltcG9ydGFudDtcbn1cblxuLmJsdWUubGlnaHRlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi0xIHtcbiAgY29sb3I6ICM0MmE1ZjUgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1ICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLmRhcmtlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFlODhlNSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS10ZXh0LnRleHQtZGFya2VuLTEge1xuICBjb2xvcjogIzFlODhlNSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFlODhlNSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS5kYXJrZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxOTc2ZDIgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtdGV4dC50ZXh0LWRhcmtlbi0yIHtcbiAgY29sb3I6ICMxOTc2ZDIgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtd2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxOTc2ZDIgIWltcG9ydGFudDtcbn1cblxuLmJsdWUuZGFya2VuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTU2NWMwICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXRleHQudGV4dC1kYXJrZW4tMyB7XG4gIGNvbG9yOiAjMTU2NWMwICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTU2NWMwICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLmRhcmtlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzBkNDdhMSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS10ZXh0LnRleHQtZGFya2VuLTQge1xuICBjb2xvcjogIzBkNDdhMSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzBkNDdhMSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS5hY2NlbnQtMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MmIxZmYgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtdGV4dC50ZXh0LWFjY2VudC0xIHtcbiAgY29sb3I6ICM4MmIxZmYgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtd2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MmIxZmYgIWltcG9ydGFudDtcbn1cblxuLmJsdWUuYWNjZW50LTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ4YWZmICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXRleHQudGV4dC1hY2NlbnQtMiB7XG4gIGNvbG9yOiAjNDQ4YWZmICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ4YWZmICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLmFjY2VudC0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5NzlmZiAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS10ZXh0LnRleHQtYWNjZW50LTMge1xuICBjb2xvcjogIzI5NzlmZiAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5NzlmZiAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS5hY2NlbnQtNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOTYyZmYgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtdGV4dC50ZXh0LWFjY2VudC00IHtcbiAgY29sb3I6ICMyOTYyZmYgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtd2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOTYyZmYgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDNhOWY0ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXRleHQge1xuICBjb2xvcjogIzAzYTlmNCAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAzYTlmNCAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS5saWdodGVuLTUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFmNWZlICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXRleHQudGV4dC1saWdodGVuLTUge1xuICBjb2xvcjogI2UxZjVmZSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMWY1ZmUgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUubGlnaHRlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IzZTVmYyAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi00IHtcbiAgY29sb3I6ICNiM2U1ZmMgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjNlNWZjICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLmxpZ2h0ZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MWQ0ZmEgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XG4gIGNvbG9yOiAjODFkNGZhICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgxZDRmYSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS5saWdodGVuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGZjM2Y3ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXRleHQudGV4dC1saWdodGVuLTIge1xuICBjb2xvcjogIzRmYzNmNyAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZmMzZjcgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUubGlnaHRlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5YjZmNiAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi0xIHtcbiAgY29sb3I6ICMyOWI2ZjYgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjliNmY2ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLmRhcmtlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAzOWJlNSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtZGFya2VuLTEge1xuICBjb2xvcjogIzAzOWJlNSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAzOWJlNSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS5kYXJrZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMjg4ZDEgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWRhcmtlbi0yIHtcbiAgY29sb3I6ICMwMjg4ZDEgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMjg4ZDEgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUuZGFya2VuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDI3N2JkICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXRleHQudGV4dC1kYXJrZW4tMyB7XG4gIGNvbG9yOiAjMDI3N2JkICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDI3N2JkICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLmRhcmtlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAxNTc5YiAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtZGFya2VuLTQge1xuICBjb2xvcjogIzAxNTc5YiAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAxNTc5YiAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS5hY2NlbnQtMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGQ4ZmYgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWFjY2VudC0xIHtcbiAgY29sb3I6ICM4MGQ4ZmYgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGQ4ZmYgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUuYWNjZW50LTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDBjNGZmICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXRleHQudGV4dC1hY2NlbnQtMiB7XG4gIGNvbG9yOiAjNDBjNGZmICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDBjNGZmICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ibHVlLmFjY2VudC0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYjBmZiAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtYWNjZW50LTMge1xuICBjb2xvcjogIzAwYjBmZiAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYjBmZiAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtYmx1ZS5hY2NlbnQtNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDkxZWEgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWFjY2VudC00IHtcbiAgY29sb3I6ICMwMDkxZWEgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDkxZWEgIWltcG9ydGFudDtcbn1cblxuLmN5YW4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiY2Q0ICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXRleHQge1xuICBjb2xvcjogIzAwYmNkNCAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYmNkNCAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi5saWdodGVuLTUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBmN2ZhICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXRleHQudGV4dC1saWdodGVuLTUge1xuICBjb2xvcjogI2UwZjdmYSAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGY3ZmEgIWltcG9ydGFudDtcbn1cblxuLmN5YW4ubGlnaHRlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IyZWJmMiAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi10ZXh0LnRleHQtbGlnaHRlbi00IHtcbiAgY29sb3I6ICNiMmViZjIgIWltcG9ydGFudDtcbn1cblxuLmN5YW4td2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjJlYmYyICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLmxpZ2h0ZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGRlZWEgIWltcG9ydGFudDtcbn1cblxuLmN5YW4tdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XG4gIGNvbG9yOiAjODBkZWVhICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgwZGVlYSAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi5saWdodGVuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRkMGUxICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXRleHQudGV4dC1saWdodGVuLTIge1xuICBjb2xvcjogIzRkZDBlMSAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGQwZTEgIWltcG9ydGFudDtcbn1cblxuLmN5YW4ubGlnaHRlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YzZkYSAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi10ZXh0LnRleHQtbGlnaHRlbi0xIHtcbiAgY29sb3I6ICMyNmM2ZGEgIWltcG9ydGFudDtcbn1cblxuLmN5YW4td2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZjNmRhICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLmRhcmtlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYWNjMSAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi10ZXh0LnRleHQtZGFya2VuLTEge1xuICBjb2xvcjogIzAwYWNjMSAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYWNjMSAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi5kYXJrZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDk3YTcgIWltcG9ydGFudDtcbn1cblxuLmN5YW4tdGV4dC50ZXh0LWRhcmtlbi0yIHtcbiAgY29sb3I6ICMwMDk3YTcgIWltcG9ydGFudDtcbn1cblxuLmN5YW4td2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDk3YTcgIWltcG9ydGFudDtcbn1cblxuLmN5YW4uZGFya2VuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA4MzhmICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXRleHQudGV4dC1kYXJrZW4tMyB7XG4gIGNvbG9yOiAjMDA4MzhmICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA4MzhmICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLmRhcmtlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjA2NCAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi10ZXh0LnRleHQtZGFya2VuLTQge1xuICBjb2xvcjogIzAwNjA2NCAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjA2NCAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi5hY2NlbnQtMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4NGZmZmYgIWltcG9ydGFudDtcbn1cblxuLmN5YW4tdGV4dC50ZXh0LWFjY2VudC0xIHtcbiAgY29sb3I6ICM4NGZmZmYgIWltcG9ydGFudDtcbn1cblxuLmN5YW4td2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4NGZmZmYgIWltcG9ydGFudDtcbn1cblxuLmN5YW4uYWNjZW50LTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMThmZmZmICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXRleHQudGV4dC1hY2NlbnQtMiB7XG4gIGNvbG9yOiAjMThmZmZmICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMThmZmZmICFpbXBvcnRhbnQ7XG59XG5cbi5jeWFuLmFjY2VudC0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwZTVmZiAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi10ZXh0LnRleHQtYWNjZW50LTMge1xuICBjb2xvcjogIzAwZTVmZiAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwZTVmZiAhaW1wb3J0YW50O1xufVxuXG4uY3lhbi5hY2NlbnQtNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGI4ZDQgIWltcG9ydGFudDtcbn1cblxuLmN5YW4tdGV4dC50ZXh0LWFjY2VudC00IHtcbiAgY29sb3I6ICMwMGI4ZDQgIWltcG9ydGFudDtcbn1cblxuLmN5YW4td2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGI4ZDQgIWltcG9ydGFudDtcbn1cblxuLnRlYWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5Njg4ICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXRleHQge1xuICBjb2xvcjogIzAwOTY4OCAhaW1wb3J0YW50O1xufVxuXG4udGVhbC13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwOTY4OCAhaW1wb3J0YW50O1xufVxuXG4udGVhbC5saWdodGVuLTUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBmMmYxICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXRleHQudGV4dC1saWdodGVuLTUge1xuICBjb2xvcjogI2UwZjJmMSAhaW1wb3J0YW50O1xufVxuXG4udGVhbC13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGYyZjEgIWltcG9ydGFudDtcbn1cblxuLnRlYWwubGlnaHRlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IyZGZkYiAhaW1wb3J0YW50O1xufVxuXG4udGVhbC10ZXh0LnRleHQtbGlnaHRlbi00IHtcbiAgY29sb3I6ICNiMmRmZGIgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtd2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjJkZmRiICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLmxpZ2h0ZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGNiYzQgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XG4gIGNvbG9yOiAjODBjYmM0ICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgwY2JjNCAhaW1wb3J0YW50O1xufVxuXG4udGVhbC5saWdodGVuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiNmFjICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXRleHQudGV4dC1saWdodGVuLTIge1xuICBjb2xvcjogIzRkYjZhYyAhaW1wb3J0YW50O1xufVxuXG4udGVhbC13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGI2YWMgIWltcG9ydGFudDtcbn1cblxuLnRlYWwubGlnaHRlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YSAhaW1wb3J0YW50O1xufVxuXG4udGVhbC10ZXh0LnRleHQtbGlnaHRlbi0xIHtcbiAgY29sb3I6ICMyNmE2OWEgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtd2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLmRhcmtlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwODk3YiAhaW1wb3J0YW50O1xufVxuXG4udGVhbC10ZXh0LnRleHQtZGFya2VuLTEge1xuICBjb2xvcjogIzAwODk3YiAhaW1wb3J0YW50O1xufVxuXG4udGVhbC13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwODk3YiAhaW1wb3J0YW50O1xufVxuXG4udGVhbC5kYXJrZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDc5NmIgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtdGV4dC50ZXh0LWRhcmtlbi0yIHtcbiAgY29sb3I6ICMwMDc5NmIgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtd2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDc5NmIgIWltcG9ydGFudDtcbn1cblxuLnRlYWwuZGFya2VuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2OTVjICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXRleHQudGV4dC1kYXJrZW4tMyB7XG4gIGNvbG9yOiAjMDA2OTVjICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2OTVjICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLmRhcmtlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNGQ0MCAhaW1wb3J0YW50O1xufVxuXG4udGVhbC10ZXh0LnRleHQtZGFya2VuLTQge1xuICBjb2xvcjogIzAwNGQ0MCAhaW1wb3J0YW50O1xufVxuXG4udGVhbC13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNGQ0MCAhaW1wb3J0YW50O1xufVxuXG4udGVhbC5hY2NlbnQtMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhN2ZmZWIgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtdGV4dC50ZXh0LWFjY2VudC0xIHtcbiAgY29sb3I6ICNhN2ZmZWIgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtd2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhN2ZmZWIgIWltcG9ydGFudDtcbn1cblxuLnRlYWwuYWNjZW50LTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjRmZmRhICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXRleHQudGV4dC1hY2NlbnQtMiB7XG4gIGNvbG9yOiAjNjRmZmRhICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjRmZmRhICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFsLmFjY2VudC0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkZTliNiAhaW1wb3J0YW50O1xufVxuXG4udGVhbC10ZXh0LnRleHQtYWNjZW50LTMge1xuICBjb2xvcjogIzFkZTliNiAhaW1wb3J0YW50O1xufVxuXG4udGVhbC13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkZTliNiAhaW1wb3J0YW50O1xufVxuXG4udGVhbC5hY2NlbnQtNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGJmYTUgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtdGV4dC50ZXh0LWFjY2VudC00IHtcbiAgY29sb3I6ICMwMGJmYTUgIWltcG9ydGFudDtcbn1cblxuLnRlYWwtd2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGJmYTUgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRjYWY1MCAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4tdGV4dCB7XG4gIGNvbG9yOiAjNGNhZjUwICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRjYWY1MCAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4ubGlnaHRlbi01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U4ZjVlOSAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4tdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XG4gIGNvbG9yOiAjZThmNWU5ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOGY1ZTkgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLmxpZ2h0ZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjOGU2YzkgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXRleHQudGV4dC1saWdodGVuLTQge1xuICBjb2xvcjogI2M4ZTZjOSAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4td2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzhlNmM5ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi5saWdodGVuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTVkNmE3ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi10ZXh0LnRleHQtbGlnaHRlbi0zIHtcbiAgY29sb3I6ICNhNWQ2YTcgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E1ZDZhNyAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4ubGlnaHRlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgxYzc4NCAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4tdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XG4gIGNvbG9yOiAjODFjNzg0ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MWM3ODQgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLmxpZ2h0ZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2NmJiNmEgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXRleHQudGV4dC1saWdodGVuLTEge1xuICBjb2xvcjogIzY2YmI2YSAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4td2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjZiYjZhICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi5kYXJrZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0M2EwNDcgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXRleHQudGV4dC1kYXJrZW4tMSB7XG4gIGNvbG9yOiAjNDNhMDQ3ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQzYTA0NyAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4uZGFya2VuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzg4ZTNjICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi10ZXh0LnRleHQtZGFya2VuLTIge1xuICBjb2xvcjogIzM4OGUzYyAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4td2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzODhlM2MgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLmRhcmtlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJlN2QzMiAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4tdGV4dC50ZXh0LWRhcmtlbi0zIHtcbiAgY29sb3I6ICMyZTdkMzIgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmU3ZDMyICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi5kYXJrZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxYjVlMjAgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXRleHQudGV4dC1kYXJrZW4tNCB7XG4gIGNvbG9yOiAjMWI1ZTIwICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFiNWUyMCAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4uYWNjZW50LTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjlmNmNhICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi10ZXh0LnRleHQtYWNjZW50LTEge1xuICBjb2xvcjogI2I5ZjZjYSAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4td2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiOWY2Y2EgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLmFjY2VudC0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY5ZjBhZSAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4tdGV4dC50ZXh0LWFjY2VudC0yIHtcbiAgY29sb3I6ICM2OWYwYWUgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjlmMGFlICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi5hY2NlbnQtMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGU2NzYgIWltcG9ydGFudDtcbn1cblxuLmdyZWVuLXRleHQudGV4dC1hY2NlbnQtMyB7XG4gIGNvbG9yOiAjMDBlNjc2ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwZTY3NiAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4uYWNjZW50LTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBjODUzICFpbXBvcnRhbnQ7XG59XG5cbi5ncmVlbi10ZXh0LnRleHQtYWNjZW50LTQge1xuICBjb2xvcjogIzAwYzg1MyAhaW1wb3J0YW50O1xufVxuXG4uZ3JlZW4td2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGM4NTMgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhiYzM0YSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4tdGV4dCB7XG4gIGNvbG9yOiAjOGJjMzRhICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhiYzM0YSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4ubGlnaHRlbi01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjhlOSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XG4gIGNvbG9yOiAjZjFmOGU5ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMWY4ZTkgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLmxpZ2h0ZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2VkYzggIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1saWdodGVuLTQge1xuICBjb2xvcjogI2RjZWRjOCAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNlZGM4ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi5saWdodGVuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzVlMWE1ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi10ZXh0LnRleHQtbGlnaHRlbi0zIHtcbiAgY29sb3I6ICNjNWUxYTUgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M1ZTFhNSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4ubGlnaHRlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FlZDU4MSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XG4gIGNvbG9yOiAjYWVkNTgxICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhZWQ1ODEgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLmxpZ2h0ZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5Y2NjNjUgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1saWdodGVuLTEge1xuICBjb2xvcjogIzljY2M2NSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWNjYzY1ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi5kYXJrZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3Y2IzNDIgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1kYXJrZW4tMSB7XG4gIGNvbG9yOiAjN2NiMzQyICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzdjYjM0MiAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4uZGFya2VuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjg5ZjM4ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi10ZXh0LnRleHQtZGFya2VuLTIge1xuICBjb2xvcjogIzY4OWYzOCAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2ODlmMzggIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLmRhcmtlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1OGIyZiAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWRhcmtlbi0zIHtcbiAgY29sb3I6ICM1NThiMmYgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU4YjJmICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi5kYXJrZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMzY5MWUgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1kYXJrZW4tNCB7XG4gIGNvbG9yOiAjMzM2OTFlICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMzNjkxZSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4uYWNjZW50LTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NmZjkwICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi10ZXh0LnRleHQtYWNjZW50LTEge1xuICBjb2xvcjogI2NjZmY5MCAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjY2ZmOTAgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLmFjY2VudC0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IyZmY1OSAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWFjY2VudC0yIHtcbiAgY29sb3I6ICNiMmZmNTkgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjJmZjU5ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi5hY2NlbnQtMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3NmZmMDMgIWltcG9ydGFudDtcbn1cblxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1hY2NlbnQtMyB7XG4gIGNvbG9yOiAjNzZmZjAzICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzc2ZmYwMyAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4uYWNjZW50LTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjRkZDE3ICFpbXBvcnRhbnQ7XG59XG5cbi5saWdodC1ncmVlbi10ZXh0LnRleHQtYWNjZW50LTQge1xuICBjb2xvcjogIzY0ZGQxNyAhaW1wb3J0YW50O1xufVxuXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2NGRkMTcgIWltcG9ydGFudDtcbn1cblxuLmxpbWUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2RkYzM5ICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXRleHQge1xuICBjb2xvcjogI2NkZGMzOSAhaW1wb3J0YW50O1xufVxuXG4ubGltZS13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NkZGMzOSAhaW1wb3J0YW50O1xufVxuXG4ubGltZS5saWdodGVuLTUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmYmU3ICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXRleHQudGV4dC1saWdodGVuLTUge1xuICBjb2xvcjogI2Y5ZmJlNyAhaW1wb3J0YW50O1xufVxuXG4ubGltZS13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWZiZTcgIWltcG9ydGFudDtcbn1cblxuLmxpbWUubGlnaHRlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjRjMyAhaW1wb3J0YW50O1xufVxuXG4ubGltZS10ZXh0LnRleHQtbGlnaHRlbi00IHtcbiAgY29sb3I6ICNmMGY0YzMgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmNGMzICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLmxpZ2h0ZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmVlOWMgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XG4gIGNvbG9yOiAjZTZlZTljICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZWU5YyAhaW1wb3J0YW50O1xufVxuXG4ubGltZS5saWdodGVuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNlNzc1ICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXRleHQudGV4dC1saWdodGVuLTIge1xuICBjb2xvcjogI2RjZTc3NSAhaW1wb3J0YW50O1xufVxuXG4ubGltZS13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2U3NzUgIWltcG9ydGFudDtcbn1cblxuLmxpbWUubGlnaHRlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q0ZTE1NyAhaW1wb3J0YW50O1xufVxuXG4ubGltZS10ZXh0LnRleHQtbGlnaHRlbi0xIHtcbiAgY29sb3I6ICNkNGUxNTcgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDRlMTU3ICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLmRhcmtlbi0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2MwY2EzMyAhaW1wb3J0YW50O1xufVxuXG4ubGltZS10ZXh0LnRleHQtZGFya2VuLTEge1xuICBjb2xvcjogI2MwY2EzMyAhaW1wb3J0YW50O1xufVxuXG4ubGltZS13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2MwY2EzMyAhaW1wb3J0YW50O1xufVxuXG4ubGltZS5kYXJrZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhZmI0MmIgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtdGV4dC50ZXh0LWRhcmtlbi0yIHtcbiAgY29sb3I6ICNhZmI0MmIgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtd2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhZmI0MmIgIWltcG9ydGFudDtcbn1cblxuLmxpbWUuZGFya2VuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWU5ZDI0ICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXRleHQudGV4dC1kYXJrZW4tMyB7XG4gIGNvbG9yOiAjOWU5ZDI0ICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWU5ZDI0ICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLmRhcmtlbi00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgyNzcxNyAhaW1wb3J0YW50O1xufVxuXG4ubGltZS10ZXh0LnRleHQtZGFya2VuLTQge1xuICBjb2xvcjogIzgyNzcxNyAhaW1wb3J0YW50O1xufVxuXG4ubGltZS13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgyNzcxNyAhaW1wb3J0YW50O1xufVxuXG4ubGltZS5hY2NlbnQtMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNGZmODEgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtdGV4dC50ZXh0LWFjY2VudC0xIHtcbiAgY29sb3I6ICNmNGZmODEgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtd2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNGZmODEgIWltcG9ydGFudDtcbn1cblxuLmxpbWUuYWNjZW50LTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVmZjQxICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXRleHQudGV4dC1hY2NlbnQtMiB7XG4gIGNvbG9yOiAjZWVmZjQxICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVmZjQxICFpbXBvcnRhbnQ7XG59XG5cbi5saW1lLmFjY2VudC0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M2ZmYwMCAhaW1wb3J0YW50O1xufVxuXG4ubGltZS10ZXh0LnRleHQtYWNjZW50LTMge1xuICBjb2xvcjogI2M2ZmYwMCAhaW1wb3J0YW50O1xufVxuXG4ubGltZS13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M2ZmYwMCAhaW1wb3J0YW50O1xufVxuXG4ubGltZS5hY2NlbnQtNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhZWVhMDAgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtdGV4dC50ZXh0LWFjY2VudC00IHtcbiAgY29sb3I6ICNhZWVhMDAgIWltcG9ydGFudDtcbn1cblxuLmxpbWUtd2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhZWVhMDAgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmViM2IgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy10ZXh0IHtcbiAgY29sb3I6ICNmZmViM2IgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWIzYiAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LmxpZ2h0ZW4tNSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZkZTcgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy10ZXh0LnRleHQtbGlnaHRlbi01IHtcbiAgY29sb3I6ICNmZmZkZTcgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZkZTcgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy5saWdodGVuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOWM0ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XG4gIGNvbG9yOiAjZmZmOWM0ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctd2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOWM0ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3cubGlnaHRlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjU5ZCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXRleHQudGV4dC1saWdodGVuLTMge1xuICBjb2xvcjogI2ZmZjU5ZCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjU5ZCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LmxpZ2h0ZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYxNzYgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy10ZXh0LnRleHQtbGlnaHRlbi0yIHtcbiAgY29sb3I6ICNmZmYxNzYgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYxNzYgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy5saWdodGVuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlZTU4ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XG4gIGNvbG9yOiAjZmZlZTU4ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctd2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlZTU4ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3cuZGFya2VuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRkODM1ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctdGV4dC50ZXh0LWRhcmtlbi0xIHtcbiAgY29sb3I6ICNmZGQ4MzUgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZDgzNSAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LmRhcmtlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZiYzAyZCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXRleHQudGV4dC1kYXJrZW4tMiB7XG4gIGNvbG9yOiAjZmJjMDJkICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctd2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYmMwMmQgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy5kYXJrZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWE4MjUgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy10ZXh0LnRleHQtZGFya2VuLTMge1xuICBjb2xvcjogI2Y5YTgyNSAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlhODI1ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3cuZGFya2VuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjU3ZjE3ICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctdGV4dC50ZXh0LWRhcmtlbi00IHtcbiAgY29sb3I6ICNmNTdmMTcgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1N2YxNyAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LmFjY2VudC0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmY4ZCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXRleHQudGV4dC1hY2NlbnQtMSB7XG4gIGNvbG9yOiAjZmZmZjhkICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctd2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmOGQgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy5hY2NlbnQtMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmMDAgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy10ZXh0LnRleHQtYWNjZW50LTIge1xuICBjb2xvcjogI2ZmZmYwMCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZjAwICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3cuYWNjZW50LTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlYTAwICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctdGV4dC50ZXh0LWFjY2VudC0zIHtcbiAgY29sb3I6ICNmZmVhMDAgIWltcG9ydGFudDtcbn1cblxuLnllbGxvdy13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWEwMCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LmFjY2VudC00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDYwMCAhaW1wb3J0YW50O1xufVxuXG4ueWVsbG93LXRleHQudGV4dC1hY2NlbnQtNCB7XG4gIGNvbG9yOiAjZmZkNjAwICFpbXBvcnRhbnQ7XG59XG5cbi55ZWxsb3ctd2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQ2MDAgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItdGV4dCB7XG4gIGNvbG9yOiAjZmZjMTA3ICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXIubGlnaHRlbi01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjhlMSAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XG4gIGNvbG9yOiAjZmZmOGUxICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY4ZTEgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLmxpZ2h0ZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmVjYjMgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXRleHQudGV4dC1saWdodGVuLTQge1xuICBjb2xvcjogI2ZmZWNiMyAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItd2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlY2IzICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci5saWdodGVuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlMDgyICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci10ZXh0LnRleHQtbGlnaHRlbi0zIHtcbiAgY29sb3I6ICNmZmUwODIgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTA4MiAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXIubGlnaHRlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDU0ZiAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XG4gIGNvbG9yOiAjZmZkNTRmICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQ1NGYgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLmxpZ2h0ZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmNhMjggIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXRleHQudGV4dC1saWdodGVuLTEge1xuICBjb2xvcjogI2ZmY2EyOCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItd2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjYTI4ICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci5kYXJrZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmIzMDAgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXRleHQudGV4dC1kYXJrZW4tMSB7XG4gIGNvbG9yOiAjZmZiMzAwICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYjMwMCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXIuZGFya2VuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhMDAwICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci10ZXh0LnRleHQtZGFya2VuLTIge1xuICBjb2xvcjogI2ZmYTAwMCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItd2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmEwMDAgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLmRhcmtlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOGYwMCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItdGV4dC50ZXh0LWRhcmtlbi0zIHtcbiAgY29sb3I6ICNmZjhmMDAgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY4ZjAwICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci5kYXJrZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDAgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXRleHQudGV4dC1kYXJrZW4tNCB7XG4gIGNvbG9yOiAjZmY2ZjAwICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXIuYWNjZW50LTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlNTdmICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci10ZXh0LnRleHQtYWNjZW50LTEge1xuICBjb2xvcjogI2ZmZTU3ZiAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItd2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmU1N2YgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLmFjY2VudC0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDc0MCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItdGV4dC50ZXh0LWFjY2VudC0yIHtcbiAgY29sb3I6ICNmZmQ3NDAgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZkNzQwICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci5hY2NlbnQtMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmM0MDAgIWltcG9ydGFudDtcbn1cblxuLmFtYmVyLXRleHQudGV4dC1hY2NlbnQtMyB7XG4gIGNvbG9yOiAjZmZjNDAwICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzQwMCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXIuYWNjZW50LTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhYjAwICFpbXBvcnRhbnQ7XG59XG5cbi5hbWJlci10ZXh0LnRleHQtYWNjZW50LTQge1xuICBjb2xvcjogI2ZmYWIwMCAhaW1wb3J0YW50O1xufVxuXG4uYW1iZXItd2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmFiMDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjk4MDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS10ZXh0IHtcbiAgY29sb3I6ICNmZjk4MDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOTgwMCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLmxpZ2h0ZW4tNSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYzZTAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS10ZXh0LnRleHQtbGlnaHRlbi01IHtcbiAgY29sb3I6ICNmZmYzZTAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYzZTAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS5saWdodGVuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlMGIyICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UtdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XG4gIGNvbG9yOiAjZmZlMGIyICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlMGIyICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UubGlnaHRlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmY2M4MCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXRleHQudGV4dC1saWdodGVuLTMge1xuICBjb2xvcjogI2ZmY2M4MCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmY2M4MCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLmxpZ2h0ZW4tMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmI3NGQgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS10ZXh0LnRleHQtbGlnaHRlbi0yIHtcbiAgY29sb3I6ICNmZmI3NGQgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmI3NGQgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS5saWdodGVuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhNzI2ICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UtdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XG4gIGNvbG9yOiAjZmZhNzI2ICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhNzI2ICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UuZGFya2VuLTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmI4YzAwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UtdGV4dC50ZXh0LWRhcmtlbi0xIHtcbiAgY29sb3I6ICNmYjhjMDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZiOGMwMCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLmRhcmtlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1N2MwMCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXRleHQudGV4dC1kYXJrZW4tMiB7XG4gIGNvbG9yOiAjZjU3YzAwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNTdjMDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS5kYXJrZW4tMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZjZjMDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS10ZXh0LnRleHQtZGFya2VuLTMge1xuICBjb2xvcjogI2VmNmMwMCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWY2YzAwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UuZGFya2VuLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTY1MTAwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UtdGV4dC50ZXh0LWRhcmtlbi00IHtcbiAgY29sb3I6ICNlNjUxMDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2NTEwMCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLmFjY2VudC0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDE4MCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXRleHQudGV4dC1hY2NlbnQtMSB7XG4gIGNvbG9yOiAjZmZkMTgwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQxODAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS5hY2NlbnQtMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmFiNDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS10ZXh0LnRleHQtYWNjZW50LTIge1xuICBjb2xvcjogI2ZmYWI0MCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhYjQwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UuYWNjZW50LTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5MTAwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2UtdGV4dC50ZXh0LWFjY2VudC0zIHtcbiAgY29sb3I6ICNmZjkxMDAgIWltcG9ydGFudDtcbn1cblxuLm9yYW5nZS13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOTEwMCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLmFjY2VudC00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmQwMCAhaW1wb3J0YW50O1xufVxuXG4ub3JhbmdlLXRleHQudGV4dC1hY2NlbnQtNCB7XG4gIGNvbG9yOiAjZmY2ZDAwICFpbXBvcnRhbnQ7XG59XG5cbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZkMDAgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTcyMiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UtdGV4dCB7XG4gIGNvbG9yOiAjZmY1NzIyICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTcyMiAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UubGlnaHRlbi01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZiZTllNyAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XG4gIGNvbG9yOiAjZmJlOWU3ICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYmU5ZTcgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLmxpZ2h0ZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmNjYmMgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1saWdodGVuLTQge1xuICBjb2xvcjogI2ZmY2NiYyAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjY2JjICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS5saWdodGVuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhYjkxICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtbGlnaHRlbi0zIHtcbiAgY29sb3I6ICNmZmFiOTEgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYWI5MSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UubGlnaHRlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOGE2NSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XG4gIGNvbG9yOiAjZmY4YTY1ICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjhhNjUgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLmxpZ2h0ZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjcwNDMgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1saWdodGVuLTEge1xuICBjb2xvcjogI2ZmNzA0MyAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY3MDQzICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS5kYXJrZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDUxMWUgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1kYXJrZW4tMSB7XG4gIGNvbG9yOiAjZjQ1MTFlICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NTExZSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UuZGFya2VuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTY0YTE5ICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtZGFya2VuLTIge1xuICBjb2xvcjogI2U2NGExOSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNjRhMTkgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLmRhcmtlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q4NDMxNSAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWRhcmtlbi0zIHtcbiAgY29sb3I6ICNkODQzMTUgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDg0MzE1ICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS5kYXJrZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiZjM2MGMgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1kYXJrZW4tNCB7XG4gIGNvbG9yOiAjYmYzNjBjICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JmMzYwYyAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UuYWNjZW50LTEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5ZTgwICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtYWNjZW50LTEge1xuICBjb2xvcjogI2ZmOWU4MCAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtYWNjZW50LTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjllODAgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLmFjY2VudC0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmU0MCAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWFjY2VudC0yIHtcbiAgY29sb3I6ICNmZjZlNDAgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWFjY2VudC0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZTQwICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS5hY2NlbnQtMyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjNkMDAgIWltcG9ydGFudDtcbn1cblxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1hY2NlbnQtMyB7XG4gIGNvbG9yOiAjZmYzZDAwICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1hY2NlbnQtMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmM2QwMCAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2UuYWNjZW50LTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGQyYzAwICFpbXBvcnRhbnQ7XG59XG5cbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtYWNjZW50LTQge1xuICBjb2xvcjogI2RkMmMwMCAhaW1wb3J0YW50O1xufVxuXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtYWNjZW50LTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkZDJjMDAgIWltcG9ydGFudDtcbn1cblxuLmJyb3duIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzc5NTU0OCAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24tdGV4dCB7XG4gIGNvbG9yOiAjNzk1NTQ4ICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi13YXZlcyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzc5NTU0OCAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24ubGlnaHRlbi01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VmZWJlOSAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24tdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XG4gIGNvbG9yOiAjZWZlYmU5ICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZmViZTkgIWltcG9ydGFudDtcbn1cblxuLmJyb3duLmxpZ2h0ZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkN2NjYzggIWltcG9ydGFudDtcbn1cblxuLmJyb3duLXRleHQudGV4dC1saWdodGVuLTQge1xuICBjb2xvcjogI2Q3Y2NjOCAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24td2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDdjY2M4ICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi5saWdodGVuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmNhYWE0ICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi10ZXh0LnRleHQtbGlnaHRlbi0zIHtcbiAgY29sb3I6ICNiY2FhYTQgIWltcG9ydGFudDtcbn1cblxuLmJyb3duLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JjYWFhNCAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24ubGlnaHRlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ExODg3ZiAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24tdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XG4gIGNvbG9yOiAjYTE4ODdmICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhMTg4N2YgIWltcG9ydGFudDtcbn1cblxuLmJyb3duLmxpZ2h0ZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4ZDZlNjMgIWltcG9ydGFudDtcbn1cblxuLmJyb3duLXRleHQudGV4dC1saWdodGVuLTEge1xuICBjb2xvcjogIzhkNmU2MyAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24td2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGQ2ZTYzICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi5kYXJrZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2ZDRjNDEgIWltcG9ydGFudDtcbn1cblxuLmJyb3duLXRleHQudGV4dC1kYXJrZW4tMSB7XG4gIGNvbG9yOiAjNmQ0YzQxICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzZkNGM0MSAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24uZGFya2VuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWQ0MDM3ICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi10ZXh0LnRleHQtZGFya2VuLTIge1xuICBjb2xvcjogIzVkNDAzNyAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24td2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1ZDQwMzcgIWltcG9ydGFudDtcbn1cblxuLmJyb3duLmRhcmtlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRlMzQyZSAhaW1wb3J0YW50O1xufVxuXG4uYnJvd24tdGV4dC50ZXh0LWRhcmtlbi0zIHtcbiAgY29sb3I6ICM0ZTM0MmUgIWltcG9ydGFudDtcbn1cblxuLmJyb3duLXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGUzNDJlICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi5kYXJrZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzZTI3MjMgIWltcG9ydGFudDtcbn1cblxuLmJyb3duLXRleHQudGV4dC1kYXJrZW4tNCB7XG4gIGNvbG9yOiAjM2UyNzIzICFpbXBvcnRhbnQ7XG59XG5cbi5icm93bi13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNlMjcyMyAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYwN2Q4YiAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LXRleHQge1xuICBjb2xvcjogIzYwN2Q4YiAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LXdhdmVzIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjA3ZDhiICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXkubGlnaHRlbi01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VjZWZmMSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LXRleHQudGV4dC1saWdodGVuLTUge1xuICBjb2xvcjogI2VjZWZmMSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VjZWZmMSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LmxpZ2h0ZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjZmQ4ZGMgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS10ZXh0LnRleHQtbGlnaHRlbi00IHtcbiAgY29sb3I6ICNjZmQ4ZGMgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjZmQ4ZGMgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS5saWdodGVuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjBiZWM1ICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXktdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XG4gIGNvbG9yOiAjYjBiZWM1ICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXktd2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjBiZWM1ICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXkubGlnaHRlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzkwYTRhZSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LXRleHQudGV4dC1saWdodGVuLTIge1xuICBjb2xvcjogIzkwYTRhZSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzkwYTRhZSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LmxpZ2h0ZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3ODkwOWMgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS10ZXh0LnRleHQtbGlnaHRlbi0xIHtcbiAgY29sb3I6ICM3ODkwOWMgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3ODkwOWMgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS5kYXJrZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NDZlN2EgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS10ZXh0LnRleHQtZGFya2VuLTEge1xuICBjb2xvcjogIzU0NmU3YSAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2ZTdhICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXkuZGFya2VuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDU1YTY0ICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXktdGV4dC50ZXh0LWRhcmtlbi0yIHtcbiAgY29sb3I6ICM0NTVhNjQgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ1NWE2NCAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LmRhcmtlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM3NDc0ZiAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LXRleHQudGV4dC1kYXJrZW4tMyB7XG4gIGNvbG9yOiAjMzc0NzRmICFpbXBvcnRhbnQ7XG59XG5cbi5ibHVlLWdyZXktd2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNzQ3NGYgIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS5kYXJrZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNjMyMzggIWltcG9ydGFudDtcbn1cblxuLmJsdWUtZ3JleS10ZXh0LnRleHQtZGFya2VuLTQge1xuICBjb2xvcjogIzI2MzIzOCAhaW1wb3J0YW50O1xufVxuXG4uYmx1ZS1ncmV5LXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYzMjM4ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzllOWU5ZSAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS10ZXh0IHtcbiAgY29sb3I6ICM5ZTllOWUgIWltcG9ydGFudDtcbn1cblxuLmdyZXktd2F2ZXMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5ZTllOWUgIWltcG9ydGFudDtcbn1cblxuLmdyZXkubGlnaHRlbi01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYSAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS10ZXh0LnRleHQtbGlnaHRlbi01IHtcbiAgY29sb3I6ICNmYWZhZmEgIWltcG9ydGFudDtcbn1cblxuLmdyZXktd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LmxpZ2h0ZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjUgIWltcG9ydGFudDtcbn1cblxuLmdyZXktdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XG4gIGNvbG9yOiAjZjVmNWY1ICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNSAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS5saWdodGVuLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LXRleHQudGV4dC1saWdodGVuLTMge1xuICBjb2xvcjogI2VlZWVlZSAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWUgIWltcG9ydGFudDtcbn1cblxuLmdyZXkubGlnaHRlbi0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS10ZXh0LnRleHQtbGlnaHRlbi0yIHtcbiAgY29sb3I6ICNlMGUwZTAgIWltcG9ydGFudDtcbn1cblxuLmdyZXktd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LmxpZ2h0ZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiZGJkYmQgIWltcG9ydGFudDtcbn1cblxuLmdyZXktdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XG4gIGNvbG9yOiAjYmRiZGJkICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JkYmRiZCAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS5kYXJrZW4tMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3NTc1NzUgIWltcG9ydGFudDtcbn1cblxuLmdyZXktdGV4dC50ZXh0LWRhcmtlbi0xIHtcbiAgY29sb3I6ICM3NTc1NzUgIWltcG9ydGFudDtcbn1cblxuLmdyZXktd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3NTc1NzUgIWltcG9ydGFudDtcbn1cblxuLmdyZXkuZGFya2VuLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjE2MTYxICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LXRleHQudGV4dC1kYXJrZW4tMiB7XG4gIGNvbG9yOiAjNjE2MTYxICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjE2MTYxICFpbXBvcnRhbnQ7XG59XG5cbi5ncmV5LmRhcmtlbi0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyNDI0MiAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS10ZXh0LnRleHQtZGFya2VuLTMge1xuICBjb2xvcjogIzQyNDI0MiAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyNDI0MiAhaW1wb3J0YW50O1xufVxuXG4uZ3JleS5kYXJrZW4tNCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTIxMjEgIWltcG9ydGFudDtcbn1cblxuLmdyZXktdGV4dC50ZXh0LWRhcmtlbi00IHtcbiAgY29sb3I6ICMyMTIxMjEgIWltcG9ydGFudDtcbn1cblxuLmdyZXktd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTIxMjEgIWltcG9ydGFudDtcbn1cblxuLmJsYWNrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50O1xufVxuXG4uYmxhY2stdGV4dCB7XG4gIGNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7XG59XG5cbi53aGl0ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcbn1cblxuLndoaXRlLXRleHQge1xuICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xufVxuXG4udHJhbnNwYXJlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4udHJhbnNwYXJlbnQtdGV4dCB7XG4gIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKipcbiAqIHByaXNtLmpzIFR3aWxpZ2h0IHRoZW1lXG4gKiBCYXNlZCAobW9yZSBvciBsZXNzKSBvbiB0aGUgVHdpbGlnaHQgdGhlbWUgb3JpZ2luYWxseSBvZiBUZXh0bWF0ZSBmYW1lLlxuICogQGF1dGhvciBSZW15IEJhY2hcbiAqL1xuY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSxcbnByZVtjbGFzcyo9bGFuZ3VhZ2UtXSB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgZm9udC1mYW1pbHk6IENvbnNvbGFzLCBNb25hY28sIFwiQW5kYWxlIE1vbm9cIiwgXCJVYnVudHUgTW9ub1wiLCBtb25vc3BhY2U7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHRleHQtc2hhZG93OiAwIC0wLjFlbSAwLjJlbSBibGFjaztcbiAgd2hpdGUtc3BhY2U6IHByZTtcbiAgd29yZC1zcGFjaW5nOiBub3JtYWw7XG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbiAgd29yZC13cmFwOiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIC1tb3otdGFiLXNpemU6IDQ7XG4gIC1vLXRhYi1zaXplOiA0O1xuICB0YWItc2l6ZTogNDtcbiAgLXdlYmtpdC1oeXBoZW5zOiBub25lO1xuICAtbW96LWh5cGhlbnM6IG5vbmU7XG4gIC1tcy1oeXBoZW5zOiBub25lO1xuICBoeXBoZW5zOiBub25lO1xufVxuXG5wcmVbY2xhc3MqPWxhbmd1YWdlLV0sXG46bm90KHByZSkgPiBjb2RlW2NsYXNzKj1sYW5ndWFnZS1dIHtcbiAgYmFja2dyb3VuZDogaHNsKDAsIDAlLCA4JSk7IC8qICMxNDE0MTQgKi9cbn1cblxuLyogQ29kZSBibG9ja3MgKi9cbnByZVtjbGFzcyo9bGFuZ3VhZ2UtXSB7XG4gIGJvcmRlci1yYWRpdXM6IDAuNWVtO1xuICBib3JkZXI6IDAuM2VtIHNvbGlkIGhzbCgwLCAwJSwgMzMlKTsgLyogIzI4MkEyQiAqL1xuICBib3gtc2hhZG93OiAxcHggMXB4IDAuNWVtIGJsYWNrIGluc2V0O1xuICBtYXJnaW46IDAuNWVtIDA7XG4gIG92ZXJmbG93OiBhdXRvO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbnByZVtjbGFzcyo9bGFuZ3VhZ2UtXTo6LW1vei1zZWxlY3Rpb24ge1xuICAvKiBGaXJlZm94ICovXG4gIGJhY2tncm91bmQ6IGhzbCgyMDAsIDQlLCAxNiUpOyAvKiAjMjgyQTJCICovXG59XG5cbnByZVtjbGFzcyo9bGFuZ3VhZ2UtXTo6c2VsZWN0aW9uIHtcbiAgLyogU2FmYXJpICovXG4gIGJhY2tncm91bmQ6IGhzbCgyMDAsIDQlLCAxNiUpOyAvKiAjMjgyQTJCICovXG59XG5cbi8qIFRleHQgU2VsZWN0aW9uIGNvbG91ciAqL1xucHJlW2NsYXNzKj1sYW5ndWFnZS1dOjotbW96LXNlbGVjdGlvbiwgcHJlW2NsYXNzKj1sYW5ndWFnZS1dIDo6LW1vei1zZWxlY3Rpb24sXG5jb2RlW2NsYXNzKj1sYW5ndWFnZS1dOjotbW96LXNlbGVjdGlvbiwgY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSA6Oi1tb3otc2VsZWN0aW9uIHtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIGJhY2tncm91bmQ6IGhzbGEoMCwgMCUsIDkzJSwgMC4xNSk7IC8qICNFREVERUQgKi9cbn1cblxucHJlW2NsYXNzKj1sYW5ndWFnZS1dOjpzZWxlY3Rpb24sIHByZVtjbGFzcyo9bGFuZ3VhZ2UtXSA6OnNlbGVjdGlvbixcbmNvZGVbY2xhc3MqPWxhbmd1YWdlLV06OnNlbGVjdGlvbiwgY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSA6OnNlbGVjdGlvbiB7XG4gIHRleHQtc2hhZG93OiBub25lO1xuICBiYWNrZ3JvdW5kOiBoc2xhKDAsIDAlLCA5MyUsIDAuMTUpOyAvKiAjRURFREVEICovXG59XG5cbi8qIElubGluZSBjb2RlICovXG46bm90KHByZSkgPiBjb2RlW2NsYXNzKj1sYW5ndWFnZS1dIHtcbiAgYm9yZGVyLXJhZGl1czogMC4zZW07XG4gIGJvcmRlcjogMC4xM2VtIHNvbGlkIGhzbCgwLCAwJSwgMzMlKTsgLyogIzU0NTQ1NCAqL1xuICBib3gtc2hhZG93OiAxcHggMXB4IDAuM2VtIC0wLjFlbSBibGFjayBpbnNldDtcbiAgcGFkZGluZzogMC4xNWVtIDAuMmVtIDAuMDVlbTtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cblxuLnRva2VuLmNvbW1lbnQsXG4udG9rZW4ucHJvbG9nLFxuLnRva2VuLmRvY3R5cGUsXG4udG9rZW4uY2RhdGEge1xuICBjb2xvcjogaHNsKDAsIDAlLCA0NyUpOyAvKiAjNzc3Nzc3ICovXG59XG5cbi50b2tlbi5wdW5jdHVhdGlvbiB7XG4gIG9wYWNpdHk6IDAuNztcbn1cblxuLm5hbWVzcGFjZSB7XG4gIG9wYWNpdHk6IDAuNztcbn1cblxuLnRva2VuLnRhZyxcbi50b2tlbi5ib29sZWFuLFxuLnRva2VuLm51bWJlcixcbi50b2tlbi5kZWxldGVkIHtcbiAgY29sb3I6IGhzbCgxNCwgNTglLCA1NSUpOyAvKiAjQ0Y2QTRDICovXG59XG5cbi50b2tlbi5rZXl3b3JkLFxuLnRva2VuLnByb3BlcnR5LFxuLnRva2VuLnNlbGVjdG9yLFxuLnRva2VuLmNvbnN0YW50LFxuLnRva2VuLnN5bWJvbCxcbi50b2tlbi5idWlsdGluIHtcbiAgY29sb3I6IGhzbCg1MywgODklLCA3OSUpOyAvKiAjRjlFRTk4ICovXG59XG5cbi50b2tlbi5hdHRyLW5hbWUsXG4udG9rZW4uYXR0ci12YWx1ZSxcbi50b2tlbi5zdHJpbmcsXG4udG9rZW4uY2hhcixcbi50b2tlbi5vcGVyYXRvcixcbi50b2tlbi5lbnRpdHksXG4udG9rZW4udXJsLFxuLmxhbmd1YWdlLWNzcyAudG9rZW4uc3RyaW5nLFxuLnN0eWxlIC50b2tlbi5zdHJpbmcsXG4udG9rZW4udmFyaWFibGUsXG4udG9rZW4uaW5zZXJ0ZWQge1xuICBjb2xvcjogaHNsKDc2LCAyMSUsIDUyJSk7IC8qICM4RjlENkEgKi9cbn1cblxuLnRva2VuLmF0cnVsZSB7XG4gIGNvbG9yOiBoc2woMjE4LCAyMiUsIDU1JSk7IC8qICM3NTg3QTYgKi9cbn1cblxuLnRva2VuLnJlZ2V4LFxuLnRva2VuLmltcG9ydGFudCB7XG4gIGNvbG9yOiBoc2woNDIsIDc1JSwgNjUlKTsgLyogI0U5QzA2MiAqL1xufVxuXG4udG9rZW4uaW1wb3J0YW50LFxuLnRva2VuLmJvbGQge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLnRva2VuLml0YWxpYyB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLnRva2VuLmVudGl0eSB7XG4gIGN1cnNvcjogaGVscDtcbn1cblxucHJlW2RhdGEtbGluZV0ge1xuICBwYWRkaW5nOiAxZW0gMCAxZW0gM2VtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIE1hcmt1cCAqL1xuLmxhbmd1YWdlLW1hcmt1cCAudG9rZW4udGFnLFxuLmxhbmd1YWdlLW1hcmt1cCAudG9rZW4uYXR0ci1uYW1lLFxuLmxhbmd1YWdlLW1hcmt1cCAudG9rZW4ucHVuY3R1YXRpb24ge1xuICBjb2xvcjogaHNsKDMzLCAzMyUsIDUyJSk7IC8qICNBQzg4NUIgKi9cbn1cblxuLyogTWFrZSB0aGUgdG9rZW5zIHNpdCBhYm92ZSB0aGUgbGluZSBoaWdobGlnaHQgc28gdGhlIGNvbG91cnMgZG9uJ3QgbG9vayBmYWRlZC4gKi9cbi50b2tlbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbn1cblxuLmxpbmUtaGlnaGxpZ2h0IHtcbiAgYmFja2dyb3VuZDogaHNsYSgwLCAwJSwgMzMlLCAwLjI1KTsgLyogIzU0NTQ1NCAqL1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIGhzbGEoMCwgMCUsIDMzJSwgMC4xKSA3MCUsIGhzbGEoMCwgMCUsIDMzJSwgMCkpOyAvKiAjNTQ1NDU0ICovXG4gIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgaHNsKDAsIDAlLCAzMyUpOyAvKiAjNTQ1NDU0ICovXG4gIGJvcmRlci10b3A6IDFweCBkYXNoZWQgaHNsKDAsIDAlLCAzMyUpOyAvKiAjNTQ1NDU0ICovXG4gIGxlZnQ6IDA7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICBtYXJnaW4tdG9wOiAwLjc1ZW07IC8qIFNhbWUgYXMgLnByaXNt4oCZcyBwYWRkaW5nLXRvcCAqL1xuICBwYWRkaW5nOiBpbmhlcml0IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAwO1xuICB3aGl0ZS1zcGFjZTogcHJlO1xuICB6LWluZGV4OiAwO1xufVxuXG4ubGluZS1oaWdobGlnaHQ6YmVmb3JlLFxuLmxpbmUtaGlnaGxpZ2h0W2RhdGEtZW5kXTphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IGhzbCgyMTUsIDE1JSwgNTklKTsgLyogIzg3OTRBNiAqL1xuICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgYm94LXNoYWRvdzogMCAxcHggd2hpdGU7XG4gIGNvbG9yOiBoc2woMjQsIDIwJSwgOTUlKTsgLyogI0Y1RjJGMCAqL1xuICBjb250ZW50OiBhdHRyKGRhdGEtc3RhcnQpO1xuICBmb250OiBib2xkIDY1JS8xLjUgc2Fucy1zZXJpZjtcbiAgbGVmdDogMC42ZW07XG4gIG1pbi13aWR0aDogMWVtO1xuICBwYWRkaW5nOiAwIDAuNWVtO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIHRvcDogMC40ZW07XG4gIHZlcnRpY2FsLWFsaWduOiAwLjNlbTtcbn1cblxuLmxpbmUtaGlnaGxpZ2h0W2RhdGEtZW5kXTphZnRlciB7XG4gIGJvdHRvbTogMC40ZW07XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1lbmQpO1xuICB0b3A6IGF1dG87XG59XG5cbi53aW5kb3cge1xuICBmb250LWZhbWlseTogXCJVYnVudHVcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxN3B4O1xuICB3aWR0aDogNjAwcHg7XG4gIG1hcmdpbjogNzVweCBhdXRvO1xuICBiYWNrZ3JvdW5kOiAjMmMzZTUwO1xuICBoZWlnaHQ6IDM1MHB4O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGRpc3BsYXk6IHJlbGF0aXZlO1xuICBib3gtc2hhZG93OiAxMHB4IDEwcHggMTBweCAjODg4ODg4O1xufVxuXG4uYWZ0ZXJjbG9zZSB7XG4gIGNvbG9yOiAjMzQ0OTVlO1xuICBkaXNwbGF5OiBub25lO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5vcGVuIHtcbiAgY29sb3I6ICNmZmY7XG4gIHBhZGRpbmc6IDE1cHg7XG4gIGJhY2tncm91bmQ6ICMyZWNjNzE7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm9yZGVyOiBub25lO1xufVxuXG4uYmFzaCB7XG4gIHdpZHRoOiA2MDBweDtcbiAgYmFja2dyb3VuZDogIzM0NDk1ZTtcbiAgaGVpZ2h0OiAzMTBweDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICB0b3A6IDQwcHg7XG4gIGRpc3BsYXk6IGFic29sdXRlO1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbi5iYXNoIC5jb21tYW5kOjpiZWZvcmUge1xuICBjb250ZW50OiBcInVzZXJAbWFjaGluZSBcXCQgOiBcIjtcbiAgY29sb3I6ICMyZWNjNzE7XG59XG4uYmFzaCAucmVzdWx0YTo6YmVmb3JlIHtcbiAgY29udGVudDogXCI+PlwiO1xuICBjb2xvcjogIzJlY2M3MTtcbn1cblxuLyogZWZmZWN0ZWQgYnkgY29udHJvbGxlcnMgKi9cbi53aW5kb3dtYXgge1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiBhdXRvO1xuICBiYWNrZ3JvdW5kOiAjMmMzZTUwO1xuICBoZWlnaHQ6IDEwMDBweDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBkaXNwbGF5OiByZWxhdGl2ZTtcbn1cblxuLndpbmRvd21pbiB7XG4gIHdpZHRoOiAzMDBweDtcbiAgaGVpZ2h0OiA0NXB4O1xuICBiYWNrZ3JvdW5kOiAjMmMzZTUwO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJvdHRvbTogMDtcbiAgcG9zaXRpb246IGZpeGVkO1xufVxuXG4uYmFzaG1heCB7XG4gIGRpc3BsYXk6IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZDogIzM0NDk1ZTtcbiAgaGVpZ2h0OiA5NjBweDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBib3R0b206IDA7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4vKiAhLS1lbmQtLSEgKi9cbi5idXR0b25zIHtcbiAgd2lkdGg6IDE1cHg7XG4gIGhlaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBmbG9hdDogcmlnaHQ7XG4gIG1hcmdpbjogMTNweCA0cHg7XG4gIGJvcmRlcjogbm9uZTtcbn1cblxuLmNsb3NlIHtcbiAgYmFja2dyb3VuZDogI2U3NGMzYztcbn1cblxuLm1heGltaXplIHtcbiAgYmFja2dyb3VuZDogI2YxYzQwZjtcbn1cblxuLm1pbmltaXplIHtcbiAgYmFja2dyb3VuZDogIzJlY2M3MTtcbn1cblxuLnJlc3VsdCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5jb250cm9scyB7XG4gIGhlaWdodDogNDBweDtcbiAgdG9wOiAwO1xufVxuXG4udGl0bGUge1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHBhZGRpbmc6IDEwcHg7XG59XG5cbi5tYXRlcmlhbC10b29sdGlwIHtcbiAgcGFkZGluZzogMTBweCA4cHg7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgei1pbmRleDogMjAwMDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogI2ZmZjtcbiAgbWluLWhlaWdodDogMzZweDtcbiAgbGluZS1oZWlnaHQ6IDEyMCU7XG4gIG9wYWNpdHk6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDRweCk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMyMzIzMjtcbn1cblxuLmJhY2tkcm9wIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBvcGFjaXR5OiAwO1xuICBoZWlnaHQ6IDdweDtcbiAgd2lkdGg6IDE0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCA1MCUgNTAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzIzMjMyO1xuICB6LWluZGV4OiAtMTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDAlO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5zaGFkb3ctMCB7XG4gIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyogMmRwIGVsZXZhdGlvbiBtb2RpZmllZCovXG4uc2hhZG93LTEsIG5hdiwgLmRyb3Bkb3duLWNvbnRlbnQsIC5jYXJkLCAuY2FyZC1wYW5lbCwgLmJ0bi1mbG9hdGluZywgLmJ0biwgLmJ0bi1zbWFsbCwgLmJ0bi1sYXJnZSwgLmNvbGxhcHNpYmxlIHtcbiAgYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG4uc2hhZG93LTEtaGFsZiwgLmJ0bi1mbG9hdGluZzpob3ZlciwgLmJ0bjpob3ZlciwgLmJ0bi1zbWFsbDpob3ZlciwgLmJ0bi1sYXJnZTpob3ZlciB7XG4gIGJveC1zaGFkb3c6IDAgM3B4IDNweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgMXB4IDdweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgM3B4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLyogNmRwIGVsZXZhdGlvbiBtb2RpZmllZCovXG4uc2hhZG93LTIge1xuICBib3gtc2hhZG93OiAwIDRweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xufVxuXG4vKiAxMmRwIGVsZXZhdGlvbiBtb2RpZmllZCovXG4uc2hhZG93LTMge1xuICBib3gtc2hhZG93OiAwIDhweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG5cbi8qIDE2ZHAgZWxldmF0aW9uICovXG4uc2hhZG93LTQge1xuICBib3gtc2hhZG93OiAwIDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCA4cHggMTBweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLyogMjRkcCBlbGV2YXRpb24gKi9cbi5zaGFkb3ctNSwgLm1vZGFsIHtcbiAgYm94LXNoYWRvdzogMCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG4vKiAyNGRwIGVsZXZhdGlvbiAqL1xuLmludmVydC1zaGFkb3ctNSB7XG4gIGJveC1zaGFkb3c6IDM4cHggMCAwIDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgNDZweCAwIDAgMCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAxNXB4IDAgMCAwIHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLmhvdmVyYWJsZSB7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4yNXM7XG59XG4uaG92ZXJhYmxlOmhvdmVyIHtcbiAgYm94LXNoYWRvdzogMCA4cHggMTdweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSwgMCA2cHggMjBweCAwIHJnYmEoMCwgMCwgMCwgMC4xOSk7XG59XG5cbi8qIVxuICogV2F2ZXMgdjAuNi4wXG4gKiBodHRwOi8vZmlhbi5teS5pZC9XYXZlc1xuICpcbiAqIENvcHlyaWdodCAyMDE0IEFsZmlhbmEgRS4gU2lidWVhIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cHM6Ly9naXRodWIuY29tL2ZpYW5zL1dhdmVzL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuLndhdmVzLWVmZmVjdCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB6LWluZGV4OiAxO1xuICB0cmFuc2l0aW9uOiAwLjNzIGVhc2Utb3V0O1xufVxuLndhdmVzLWVmZmVjdCAud2F2ZXMtcmlwcGxlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIG1hcmdpbi10b3A6IC0xMHB4O1xuICBtYXJnaW4tbGVmdDogLTEwcHg7XG4gIG9wYWNpdHk6IDA7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuN3MgZWFzZS1vdXQ7XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4ud2F2ZXMtZWZmZWN0LndhdmVzLWxpZ2h0IC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDUpO1xufVxuLndhdmVzLWVmZmVjdC53YXZlcy1yZWQgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjQ0LCA2NywgNTQsIDAuNyk7XG59XG4ud2F2ZXMtZWZmZWN0LndhdmVzLXllbGxvdyAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDIzNSwgNTksIDAuNyk7XG59XG4ud2F2ZXMtZWZmZWN0LndhdmVzLW9yYW5nZSAud2F2ZXMtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDE1MiwgMCwgMC43KTtcbn1cbi53YXZlcy1lZmZlY3Qud2F2ZXMtcHVycGxlIC53YXZlcy1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1NiwgMzksIDE3NiwgMC43KTtcbn1cbi53YXZlcy1lZmZlY3Qud2F2ZXMtZ3JlZW4gLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNzYsIDE3NSwgODAsIDAuNyk7XG59XG4ud2F2ZXMtZWZmZWN0LndhdmVzLXRlYWwgLndhdmVzLXJpcHBsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTUwLCAxMzYsIDAuNyk7XG59XG4ud2F2ZXMtZWZmZWN0IGlucHV0W3R5cGU9YnV0dG9uXSwgLndhdmVzLWVmZmVjdCBpbnB1dFt0eXBlPXJlc2V0XSwgLndhdmVzLWVmZmVjdCBpbnB1dFt0eXBlPXN1Ym1pdF0ge1xuICBib3JkZXI6IDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICB0ZXh0LXRyYW5zZm9ybTogaW5oZXJpdDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbn1cbi53YXZlcy1lZmZlY3QgaW1nIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAtMTtcbn1cblxuLndhdmVzLW5vdHJhbnNpdGlvbiB7XG4gIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLndhdmVzLWNpcmNsZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHdoaXRlIDEwMCUsIGJsYWNrIDEwMCUpO1xufVxuXG4ud2F2ZXMtaW5wdXQtd3JhcHBlciB7XG4gIGJvcmRlci1yYWRpdXM6IDAuMmVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xufVxuLndhdmVzLWlucHV0LXdyYXBwZXIgLndhdmVzLWJ1dHRvbi1pbnB1dCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxO1xufVxuXG4ud2F2ZXMtY2lyY2xlIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aWR0aDogMi41ZW07XG4gIGhlaWdodDogMi41ZW07XG4gIGxpbmUtaGVpZ2h0OiAyLjVlbTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAtd2Via2l0LW1hc2staW1hZ2U6IG5vbmU7XG59XG5cbi53YXZlcy1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKiBGaXJlZm94IEJ1ZzogbGluayBub3QgdHJpZ2dlcmVkICovXG4ud2F2ZXMtZWZmZWN0IC53YXZlcy1yaXBwbGUge1xuICB6LWluZGV4OiAtMTtcbn1cblxuLm1vZGFsIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgcGFkZGluZzogMDtcbiAgbWF4LWhlaWdodDogNzAlO1xuICB3aWR0aDogNTUlO1xuICBtYXJnaW46IGF1dG87XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgd2lsbC1jaGFuZ2U6IHRvcCwgb3BhY2l0eTtcbn1cbi5tb2RhbDpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA5OTJweCkge1xuICAubW9kYWwge1xuICAgIHdpZHRoOiA4MCU7XG4gIH1cbn1cbi5tb2RhbCBoMSwgLm1vZGFsIGgyLCAubW9kYWwgaDMsIC5tb2RhbCBoNCB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG4ubW9kYWwgLm1vZGFsLWNvbnRlbnQge1xuICBwYWRkaW5nOiAyNHB4O1xufVxuLm1vZGFsIC5tb2RhbC1jbG9zZSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5tb2RhbCAubW9kYWwtZm9vdGVyIHtcbiAgYm9yZGVyLXJhZGl1czogMCAwIDJweCAycHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIHBhZGRpbmc6IDRweCA2cHg7XG4gIGhlaWdodDogNTZweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLm1vZGFsIC5tb2RhbC1mb290ZXIgLmJ0biwgLm1vZGFsIC5tb2RhbC1mb290ZXIgLmJ0bi1zbWFsbCwgLm1vZGFsIC5tb2RhbC1mb290ZXIgLmJ0bi1sYXJnZSwgLm1vZGFsIC5tb2RhbC1mb290ZXIgLmJ0bi1mbGF0IHtcbiAgbWFyZ2luOiA2cHggMDtcbn1cbi5tb2RhbCAubW9kYWwtaGVhZGVyIHtcbiAgYm9yZGVyLXJhZGl1czogMnB4IDJweCAwIDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIHBhZGRpbmc6IDZweCA0cHg7XG4gIGhlaWdodDogNTZweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLm1vZGFsIC5tb2RhbC1oZWFkZXIgLmJ0biwgLm1vZGFsIC5tb2RhbC1oZWFkZXIgLmJ0bi1zbWFsbCwgLm1vZGFsIC5tb2RhbC1oZWFkZXIgLmJ0bi1sYXJnZSwgLm1vZGFsIC5tb2RhbC1oZWFkZXIgLmJ0bi1mbGF0IHtcbiAgbWFyZ2luOiA2cHggMDtcbn1cblxuLm1vZGFsLW92ZXJsYXkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTtcbiAgdG9wOiAtMjUlO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBoZWlnaHQ6IDEyNSU7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kOiAjMDAwO1xuICBkaXNwbGF5OiBub25lO1xuICB3aWxsLWNoYW5nZTogb3BhY2l0eTtcbn1cblxuLm1vZGFsLm1vZGFsLWZpeGVkLWZvb3RlciB7XG4gIHBhZGRpbmc6IDA7XG4gIGhlaWdodDogNzAlO1xufVxuLm1vZGFsLm1vZGFsLWZpeGVkLWZvb3RlciAubW9kYWwtY29udGVudCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA1NnB4KTtcbiAgbWF4LWhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG4ubW9kYWwubW9kYWwtZml4ZWQtZm9vdGVyIC5tb2RhbC1mb290ZXIge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbn1cblxuLm1vZGFsLmJvdHRvbS1zaGVldCB7XG4gIHRvcDogYXV0bztcbiAgYm90dG9tOiAtMTAwJTtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogNDUlO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICB3aWxsLWNoYW5nZTogYm90dG9tLCBvcGFjaXR5O1xufVxuXG5odG1sLFxuYm9keSxcbiNyb290IHtcbiAgbWFyZ2luOiAwO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbioge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi5ub3NlbGVjdCB7XG4gIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsgLyogaU9TIFNhZmFyaSAqL1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyAvKiBTYWZhcmkgKi9cbiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lOyAvKiBLb25xdWVyb3IgSFRNTCAqL1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lOyAvKiBPbGQgdmVyc2lvbnMgb2YgRmlyZWZveCAqL1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7IC8qIEludGVybmV0IEV4cGxvcmVyL0VkZ2UgKi9cbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC8qIE5vbi1wcmVmaXhlZCB2ZXJzaW9uLCBjdXJyZW50bHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkIGJ5IENocm9tZSwgRWRnZSwgT3BlcmEgYW5kIEZpcmVmb3ggKi9cbn1cblxudWw6bm90KC5icm93c2VyLWRlZmF1bHQpIHtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG59XG51bDpub3QoLmJyb3dzZXItZGVmYXVsdCkgPiBsaSB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbn1cblxuYSB7XG4gIGNvbG9yOiAjMDM5YmU1O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi53LTEwMCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ucmlnaHQtYWxpZ24ge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLmNlbnRlci1hbGlnbiB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnYtY2VudGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLm1iMSB7XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG5cbi5jb2xsZWN0aW9uIHtcbiAgbWFyZ2luOiAwLjMzMzMzMzMzMzNyZW0gMCAwLjY2NjY2NjY2NjdyZW0gMDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcbiAgcGFkZGluZzogMTBweCAyMHB4O1xuICBtYXJnaW46IDA7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTBlMGUwO1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5ob3Zlcjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XG59XG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciB7XG4gIG1pbi1oZWlnaHQ6IDg0cHg7XG4gIHBhZGRpbmctbGVmdDogNzJweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXI6bm90KC5jaXJjbGUtY2xpcHBlcikgPiAuY2lyY2xlLFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgOm5vdCguY2lyY2xlLWNsaXBwZXIpID4gLmNpcmNsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDQycHg7XG4gIGhlaWdodDogNDJweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbGVmdDogMTVweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgaS5jaXJjbGUge1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxpbmUtaGVpZ2h0OiA0MnB4O1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgLnRpdGxlIHtcbiAgZm9udC1zaXplOiAxNnB4O1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgcCB7XG4gIG1hcmdpbjogMDtcbn1cbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIC5zZWNvbmRhcnktY29udGVudCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxNnB4O1xuICByaWdodDogMTZweDtcbn1cbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW06bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XG4gIGNvbG9yOiAjZWFmYWY5O1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hY3RpdmUgLnNlY29uZGFyeS1jb250ZW50IHtcbiAgY29sb3I6ICNmZmY7XG59XG4uY29sbGVjdGlvbiBhLmNvbGxlY3Rpb24taXRlbSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0cmFuc2l0aW9uOiAwLjI1cztcbiAgY29sb3I6ICMyNmE2OWE7XG59XG4uY29sbGVjdGlvbiBhLmNvbGxlY3Rpb24taXRlbTpub3QoLmFjdGl2ZSk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xufVxuLmNvbGxlY3Rpb24ud2l0aC1oZWFkZXIgLmNvbGxlY3Rpb24taGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMGUwZTA7XG4gIHBhZGRpbmc6IDEwcHggMjBweDtcbn1cbi5jb2xsZWN0aW9uLndpdGgtaGVhZGVyIC5jb2xsZWN0aW9uLWl0ZW0ge1xuICBwYWRkaW5nLWxlZnQ6IDMwcHg7XG59XG4uY29sbGVjdGlvbi53aXRoLWhlYWRlciAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciB7XG4gIHBhZGRpbmctbGVmdDogNzJweDtcbn1cblxuLnNlY29uZGFyeS1jb250ZW50IHtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBjb2xvcjogIzI2YTY5YTtcbn1cblxuLmNvbGxhcHNpYmxlIC5jb2xsZWN0aW9uIHtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXI6IG5vbmU7XG59XG5cbi5tb2RhbC1vdmVybGF5IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBoZWlnaHQ6IDEwMHZoO1xuICB3aWR0aDogMTAwdnc7XG4gIHBhZGRpbmc6IDIwcHggMCAyMHB4IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgei1pbmRleDogOTk5O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5tb2RhbC1vdmVybGF5IC5pbm5lcmZvcm0ge1xuICBtYXgtd2lkdGg6IDY1MHB4O1xufVxuLm1vZGFsLW92ZXJsYXkgLmlubmVyZm9ybSBmb3JtIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKlxuICBNZWRpYSBRdWVyeSBDbGFzc2VzXG4qKioqKioqKioqKioqKioqKioqKioqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogNjAwcHgpIHtcbiAgLmhpZGUtb24tc21hbGwtb25seSwgLmhpZGUtb24tc21hbGwtYW5kLWRvd24ge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA5OTJweCkge1xuICAuaGlkZS1vbi1tZWQtYW5kLWRvd24ge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiA2MDFweCkge1xuICAuaGlkZS1vbi1tZWQtYW5kLXVwIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDk5MnB4KSB7XG4gIC5oaWRlLW9uLW1lZC1vbmx5IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogOTkzcHgpIHtcbiAgLmhpZGUtb24tbGFyZ2Utb25seSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDEyMDFweCkge1xuICAuaGlkZS1vbi1leHRyYS1sYXJnZS1vbmx5IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogMTIwMXB4KSB7XG4gIC5zaG93LW9uLWV4dHJhLWxhcmdlIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDk5M3B4KSB7XG4gIC5zaG93LW9uLWxhcmdlIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiA5OTJweCkge1xuICAuc2hvdy1vbi1tZWRpdW0ge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogNjAwcHgpIHtcbiAgLnNob3ctb24tc21hbGwge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogNjAxcHgpIHtcbiAgLnNob3ctb24tbWVkaXVtLWFuZC11cCB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA5OTJweCkge1xuICAuc2hvdy1vbi1tZWRpdW0tYW5kLWRvd24ge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogNjAwcHgpIHtcbiAgLmNlbnRlci1vbi1zbWFsbC1vbmx5IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKipcbiAgVXRpbGl0eSBDbGFzc2VzXG4qKioqKioqKioqKioqKioqKioqL1xuLmhpZGUge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5sZWZ0LWFsaWduIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLnJpZ2h0LWFsaWduIHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbi5jZW50ZXIsIC5jZW50ZXItYWxpZ24ge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5sZWZ0IHtcbiAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcbn1cblxuLnJpZ2h0IHtcbiAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7XG59XG5cbi5uby1zZWxlY3Qge1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLmNpcmNsZSB7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbn1cblxuLmNlbnRlci1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4udHJ1bmNhdGUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi5uby1wYWRkaW5nIHtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG5zcGFuLmJhZGdlIHtcbiAgbWluLXdpZHRoOiAzcmVtO1xuICBwYWRkaW5nOiAwIDZweDtcbiAgbWFyZ2luLWxlZnQ6IDE0cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBsaW5lLWhlaWdodDogMjJweDtcbiAgaGVpZ2h0OiAyMnB4O1xuICBjb2xvcjogIzc1NzU3NTtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuc3Bhbi5iYWRnZS5uZXcge1xuICBmb250LXdlaWdodDogMzAwO1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbn1cbnNwYW4uYmFkZ2UubmV3OmFmdGVyIHtcbiAgY29udGVudDogXCIgbmV3XCI7XG59XG5zcGFuLmJhZGdlW2RhdGEtYmFkZ2UtY2FwdGlvbl06OmFmdGVyIHtcbiAgY29udGVudDogXCIgXCIgYXR0cihkYXRhLWJhZGdlLWNhcHRpb24pO1xufVxuXG5uYXYgdWwgYSBzcGFuLmJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmbG9hdDogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgbGluZS1oZWlnaHQ6IDIycHg7XG4gIGhlaWdodDogMjJweDtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYXV0bztcbn1cblxuLmNvbGxlY3Rpb24taXRlbSBzcGFuLmJhZGdlIHtcbiAgbWFyZ2luLXRvcDogY2FsYygwLjc1cmVtIC0gMTFweCk7XG59XG5cbi5jb2xsYXBzaWJsZSBzcGFuLmJhZGdlIHtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG5cbi5zaWRlbmF2IHNwYW4uYmFkZ2Uge1xuICBtYXJnaW4tdG9wOiAxMS41cHg7XG59XG5cbnRhYmxlIHNwYW4uYmFkZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZsb2F0OiBub25lO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbn1cblxuLmNoaXAge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMzJweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpO1xuICBsaW5lLWhlaWdodDogMzJweDtcbiAgcGFkZGluZzogMCAxMnB4O1xuICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTRlNGU0O1xuICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xufVxuLmNoaXA6Zm9jdXMge1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5jaGlwID4gaW1nIHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIG1hcmdpbjogMCA4cHggMCAtMTJweDtcbiAgaGVpZ2h0OiAzMnB4O1xuICB3aWR0aDogMzJweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuLmNoaXAgLmNsb3NlIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmbG9hdDogcmlnaHQ7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDMycHg7XG4gIHBhZGRpbmctbGVmdDogOHB4O1xufVxuXG4uY2hpcHMge1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjOWU5ZTllO1xuICBib3gtc2hhZG93OiBub25lO1xuICBtYXJnaW46IDAgMCA4cHggMDtcbiAgbWluLWhlaWdodDogNDVweDtcbiAgb3V0bGluZTogbm9uZTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG59XG4uY2hpcHMuZm9jdXMge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzI2YTY5YTtcbiAgYm94LXNoYWRvdzogMCAxcHggMCAwICMyNmE2OWE7XG59XG4uY2hpcHM6aG92ZXIge1xuICBjdXJzb3I6IHRleHQ7XG59XG4uY2hpcHMgLmlucHV0IHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiAwO1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgaGVpZ2h0OiA1NnB4O1xuICBsaW5lLWhlaWdodDogMzJweDtcbiAgb3V0bGluZTogMDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiAxMjBweCAhaW1wb3J0YW50O1xufVxuLmNoaXBzIC5pbnB1dDpmb2N1cyB7XG4gIGJvcmRlcjogMCAhaW1wb3J0YW50O1xuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG4uY2hpcHMgLmF1dG9jb21wbGV0ZS1jb250ZW50IHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLnByZWZpeCB+IC5jaGlwcyB7XG4gIG1hcmdpbi1sZWZ0OiAzcmVtO1xuICB3aWR0aDogOTIlO1xuICB3aWR0aDogY2FsYygxMDAlIC0gM3JlbSk7XG59XG5cbi5jaGlwczplbXB0eSB+IGxhYmVsIHtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTQwJSk7XG59XG5cbi5jb2xsYXBzaWJsZSB7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkZGQ7XG4gIG1hcmdpbjogMC4zMzMzMzMzMzMzcmVtIDAgMC42NjY2NjY2NjY3cmVtIDA7XG59XG5cbi5jb2xsYXBzaWJsZS1oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIHBhZGRpbmc6IDFyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xufVxuLmNvbGxhcHNpYmxlLWhlYWRlcjpmb2N1cyB7XG4gIG91dGxpbmU6IDA7XG59XG4uY29sbGFwc2libGUtaGVhZGVyIGkge1xuICB3aWR0aDogMnJlbTtcbiAgZm9udC1zaXplOiAxLjZyZW07XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tcmlnaHQ6IDFyZW07XG59XG5cbi5rZXlib2FyZC1mb2N1c2VkIC5jb2xsYXBzaWJsZS1oZWFkZXI6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xufVxuXG4uY29sbGFwc2libGUtYm9keSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAycmVtO1xufVxuXG4uc2lkZW5hdiAuY29sbGFwc2libGUsXG4uc2lkZW5hdi5maXhlZCAuY29sbGFwc2libGUge1xuICBib3JkZXI6IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4uc2lkZW5hdiAuY29sbGFwc2libGUgbGksXG4uc2lkZW5hdi5maXhlZCAuY29sbGFwc2libGUgbGkge1xuICBwYWRkaW5nOiAwO1xufVxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLWhlYWRlcixcbi5zaWRlbmF2LmZpeGVkIC5jb2xsYXBzaWJsZS1oZWFkZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgaGVpZ2h0OiBpbmhlcml0O1xuICBwYWRkaW5nOiAwIDE1cHg7XG59XG4uc2lkZW5hdiAuY29sbGFwc2libGUtaGVhZGVyOmhvdmVyLFxuLnNpZGVuYXYuZml4ZWQgLmNvbGxhcHNpYmxlLWhlYWRlcjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG59XG4uc2lkZW5hdiAuY29sbGFwc2libGUtaGVhZGVyIGksXG4uc2lkZW5hdi5maXhlZCAuY29sbGFwc2libGUtaGVhZGVyIGkge1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbn1cbi5zaWRlbmF2IC5jb2xsYXBzaWJsZS1ib2R5LFxuLnNpZGVuYXYuZml4ZWQgLmNvbGxhcHNpYmxlLWJvZHkge1xuICBib3JkZXI6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG4uc2lkZW5hdiAuY29sbGFwc2libGUtYm9keSBsaSBhLFxuLnNpZGVuYXYuZml4ZWQgLmNvbGxhcHNpYmxlLWJvZHkgbGkgYSB7XG4gIHBhZGRpbmc6IDAgMjIuNXB4IDAgMzBweDtcbn1cblxuLmNvbGxhcHNpYmxlLnBvcG91dCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cbi5jb2xsYXBzaWJsZS5wb3BvdXQgPiBsaSB7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xNiksIDAgMnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICBtYXJnaW46IDAgMjRweDtcbiAgdHJhbnNpdGlvbjogbWFyZ2luIDAuMzVzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTtcbn1cbi5jb2xsYXBzaWJsZS5wb3BvdXQgPiBsaS5hY3RpdmUge1xuICBib3gtc2hhZG93OiAwIDVweCAxMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE4KSwgMCA0cHggMTVweCAwIHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gIG1hcmdpbjogMTZweCAwO1xufVxuXG4uY29sbGVjdGlvbiB7XG4gIG1hcmdpbjogMC4zMzMzMzMzMzMzcmVtIDAgMC42NjY2NjY2NjY3cmVtIDA7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMGUwZTA7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDtcbn1cbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIHtcbiAgbWluLWhlaWdodDogODRweDtcbiAgcGFkZGluZy1sZWZ0OiA3MnB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhcjpub3QoLmNpcmNsZS1jbGlwcGVyKSA+IC5jaXJjbGUsXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciA6bm90KC5jaXJjbGUtY2xpcHBlcikgPiAuY2lyY2xlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogNDJweDtcbiAgaGVpZ2h0OiA0MnB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBsZWZ0OiAxNXB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciBpLmNpcmNsZSB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDQycHg7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciAudGl0bGUge1xuICBmb250LXNpemU6IDE2cHg7XG59XG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciBwIHtcbiAgbWFyZ2luOiAwO1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgLnNlY29uZGFyeS1jb250ZW50IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDE2cHg7XG4gIHJpZ2h0OiAxNnB4O1xufVxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbTpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcbiAgY29sb3I6ICNlYWZhZjk7XG59XG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmFjdGl2ZSAuc2Vjb25kYXJ5LWNvbnRlbnQge1xuICBjb2xvcjogI2ZmZjtcbn1cbi5jb2xsZWN0aW9uIGEuY29sbGVjdGlvbi1pdGVtIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHRyYW5zaXRpb246IDAuMjVzO1xuICBjb2xvcjogIzI2YTY5YTtcbn1cbi5jb2xsZWN0aW9uIGEuY29sbGVjdGlvbi1pdGVtOm5vdCguYWN0aXZlKTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XG59XG4uY29sbGVjdGlvbi53aXRoLWhlYWRlciAuY29sbGVjdGlvbi1oZWFkZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDtcbiAgcGFkZGluZzogMTBweCAyMHB4O1xufVxuLmNvbGxlY3Rpb24ud2l0aC1oZWFkZXIgLmNvbGxlY3Rpb24taXRlbSB7XG4gIHBhZGRpbmctbGVmdDogMzBweDtcbn1cbi5jb2xsZWN0aW9uLndpdGgtaGVhZGVyIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIHtcbiAgcGFkZGluZy1sZWZ0OiA3MnB4O1xufVxuLmNvbGxlY3Rpb24gLnNlY29uZGFyeS1jb250ZW50IHtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBjb2xvcjogIzI2YTY5YTtcbn1cblxuc2VsZWN0OmZvY3VzIHtcbiAgb3V0bGluZTogMXB4IHNvbGlkICNjOWYzZWY7XG59XG5cbmJ1dHRvbjpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYWI3YTk7XG59XG5cbmxhYmVsIHtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIGNvbG9yOiAjOWU5ZTllO1xufVxuXG4vKiBUZXh0IElucHV0cyArIFRleHRhcmVhXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogU3R5bGUgUGxhY2Vob2xkZXJzICovXG46OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6ICNkMWQxZDE7XG59XG5cbi8qIFRleHQgaW5wdXRzICovXG5pbnB1dDpub3QoW3R5cGVdKSxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpLFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpLFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpLFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXG50ZXh0YXJlYS50ZXh0YXJlYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjOWU5ZTllO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBvdXRsaW5lOiBub25lO1xuICBoZWlnaHQ6IDU2cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBmb250LXNpemU6IDE2cHg7XG4gIG1hcmdpbjogMCAwIDhweCAwO1xuICBwYWRkaW5nOiAwO1xuICBib3gtc2hhZG93OiBub25lO1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjNzLCBib3JkZXIgMC4zcztcbn1cbmlucHV0Om5vdChbdHlwZV0pOmRpc2FibGVkLCBpbnB1dDpub3QoW3R5cGVdKVtyZWFkb25seT1yZWFkb25seV0sXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0sXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0sXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0sXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxudGV4dGFyZWEudGV4dGFyZWE6ZGlzYWJsZWQsXG50ZXh0YXJlYS50ZXh0YXJlYVtyZWFkb25seT1yZWFkb25seV0ge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQyKTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCByZ2JhKDAsIDAsIDAsIDAuNDIpO1xufVxuaW5wdXQ6bm90KFt0eXBlXSk6ZGlzYWJsZWQgKyBsYWJlbCwgaW5wdXQ6bm90KFt0eXBlXSlbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQgKyBsYWJlbCxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSArIGxhYmVsLFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkICsgbGFiZWwsXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkICsgbGFiZWwsXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSArIGxhYmVsLFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkICsgbGFiZWwsXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkICsgbGFiZWwsXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSArIGxhYmVsLFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQgKyBsYWJlbCxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXG50ZXh0YXJlYS50ZXh0YXJlYTpkaXNhYmxlZCArIGxhYmVsLFxudGV4dGFyZWEudGV4dGFyZWFbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQyKTtcbn1cbmlucHV0Om5vdChbdHlwZV0pOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pLFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pLFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pLFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcbnRleHRhcmVhLnRleHRhcmVhOmZvY3VzOm5vdChbcmVhZG9ubHldKSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMjZhNjlhO1xuICBib3gtc2hhZG93OiAwIDFweCAwIDAgIzI2YTY5YTtcbn1cbmlucHV0Om5vdChbdHlwZV0pOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCxcbnRleHRhcmVhLnRleHRhcmVhOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsIHtcbiAgY29sb3I6ICMyNmE2OWE7XG59XG5pbnB1dDpub3QoW3R5cGVdKTpmb2N1cy52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiBsYWJlbCxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gbGFiZWwsXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gbGFiZWwsXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiBsYWJlbCxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gbGFiZWwsXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gbGFiZWwsXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gbGFiZWwsXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gbGFiZWwsXG50ZXh0YXJlYS50ZXh0YXJlYTpmb2N1cy52YWxpZCB+IGxhYmVsIHtcbiAgY29sb3I6ICM0Y2FmNTA7XG59XG5pbnB1dDpub3QoW3R5cGVdKTpmb2N1cy5pbnZhbGlkIH4gbGFiZWwsXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gbGFiZWwsXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gbGFiZWwsXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gbGFiZWwsXG50ZXh0YXJlYS50ZXh0YXJlYTpmb2N1cy5pbnZhbGlkIH4gbGFiZWwge1xuICBjb2xvcjogI2Y0NDMzNjtcbn1cbmlucHV0Om5vdChbdHlwZV0pLnZhbGlkYXRlICsgbGFiZWwsXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZGF0ZSArIGxhYmVsLFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkYXRlICsgbGFiZWwsXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWRhdGUgKyBsYWJlbCxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWRhdGUgKyBsYWJlbCxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkYXRlICsgbGFiZWwsXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZGF0ZSArIGxhYmVsLFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkYXRlICsgbGFiZWwsXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWRhdGUgKyBsYWJlbCxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWRhdGUgKyBsYWJlbCxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWRhdGUgKyBsYWJlbCxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWRhdGUgKyBsYWJlbCxcbnRleHRhcmVhLnRleHRhcmVhLnZhbGlkYXRlICsgbGFiZWwge1xuICB3aWR0aDogMTAwJTtcbn1cbi8qIFZhbGlkYXRpb24gU2FzcyBQbGFjZWhvbGRlcnMgKi9cbi5zZWxlY3Qtd3JhcHBlci52YWxpZCA+IGlucHV0LnNlbGVjdC1kcm9wZG93biwgaW5wdXQ6bm90KFt0eXBlXSkudmFsaWQsIGlucHV0Om5vdChbdHlwZV0pOmZvY3VzLnZhbGlkLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQsXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQsXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQsXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQsXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQsXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQsXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkLFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXG50ZXh0YXJlYS50ZXh0YXJlYS52YWxpZCxcbnRleHRhcmVhLnRleHRhcmVhOmZvY3VzLnZhbGlkIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM0Y2FmNTA7XG4gIGJveC1zaGFkb3c6IDAgMXB4IDAgMCAjNGNhZjUwO1xufVxuXG4uc2VsZWN0LXdyYXBwZXIuaW52YWxpZCA+IGlucHV0LnNlbGVjdC1kcm9wZG93biwgLnNlbGVjdC13cmFwcGVyLmludmFsaWQgPiBpbnB1dC5zZWxlY3QtZHJvcGRvd246Zm9jdXMsIGlucHV0Om5vdChbdHlwZV0pLmludmFsaWQsIGlucHV0Om5vdChbdHlwZV0pOmZvY3VzLmludmFsaWQsXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQsXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQsXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQsXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxudGV4dGFyZWEudGV4dGFyZWEuaW52YWxpZCxcbnRleHRhcmVhLnRleHRhcmVhOmZvY3VzLmludmFsaWQge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Y0NDMzNjtcbiAgYm94LXNoYWRvdzogMCAxcHggMCAwICNmNDQzMzY7XG59XG5cbi5zZWxlY3Qtd3JhcHBlci52YWxpZCAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSwgLnNlbGVjdC13cmFwcGVyLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sIGlucHV0Om5vdChbdHlwZV0pLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sIGlucHV0Om5vdChbdHlwZV0pOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sIGlucHV0Om5vdChbdHlwZV0pLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sIGlucHV0Om5vdChbdHlwZV0pOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbnRleHRhcmVhLnRleHRhcmVhLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXG50ZXh0YXJlYS50ZXh0YXJlYTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxudGV4dGFyZWEudGV4dGFyZWEuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcbnRleHRhcmVhLnRleHRhcmVhOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0ge1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLnNlbGVjdC13cmFwcGVyLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLCBpbnB1dDpub3QoW3R5cGVdKS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlciwgaW5wdXQ6bm90KFt0eXBlXSk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbnRleHRhcmVhLnRleHRhcmVhLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxudGV4dGFyZWEudGV4dGFyZWE6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIge1xuICBjb250ZW50OiBhdHRyKGRhdGEtc3VjY2Vzcyk7XG4gIGNvbG9yOiAjNGNhZjUwO1xufVxuXG4uc2VsZWN0LXdyYXBwZXIuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlciwgaW5wdXQ6bm90KFt0eXBlXSkuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlciwgaW5wdXQ6bm90KFt0eXBlXSk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXG50ZXh0YXJlYS50ZXh0YXJlYS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxudGV4dGFyZWEudGV4dGFyZWE6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlciB7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1lcnJvcik7XG4gIGNvbG9yOiAjZjQ0MzM2O1xufVxuXG4uc2VsZWN0LXdyYXBwZXIgKyBsYWJlbDphZnRlciwgaW5wdXQ6bm90KFt0eXBlXSkgKyBsYWJlbDphZnRlcixcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWw6YWZ0ZXIsXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbDphZnRlcixcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsOmFmdGVyLFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsOmFmdGVyLFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbDphZnRlcixcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWw6YWZ0ZXIsXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbDphZnRlcixcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsOmFmdGVyLFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsOmFmdGVyLFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsOmFmdGVyLFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsOmFmdGVyLFxudGV4dGFyZWEudGV4dGFyZWEgKyBsYWJlbDphZnRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogMDtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogMC4ycyBvcGFjaXR5IGVhc2Utb3V0LCAwLjJzIGNvbG9yIGVhc2Utb3V0O1xufVxuXG4uaW5wdXQtZmllbGQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi10b3A6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG4uaW5wdXQtZmllbGQuaW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tbGVmdDogNXB4O1xufVxuLmlucHV0LWZpZWxkLmlubGluZSBpbnB1dCxcbi5pbnB1dC1maWVsZC5pbmxpbmUgLnNlbGVjdC1kcm9wZG93biB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG4uaW5wdXQtZmllbGQuY29sIGxhYmVsIHtcbiAgbGVmdDogMC41cmVtO1xufVxuLmlucHV0LWZpZWxkLmNvbCAucHJlZml4IH4gbGFiZWwsXG4uaW5wdXQtZmllbGQuY29sIC5wcmVmaXggfiAudmFsaWRhdGUgfiBsYWJlbCB7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAzcmVtIC0gMXJlbSk7XG59XG4uaW5wdXQtZmllbGQgPiBsYWJlbCB7XG4gIGNvbG9yOiAjOWU5ZTllO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBjdXJzb3I6IHRleHQ7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2Utb3V0LCBjb2xvciAwLjJzIGVhc2Utb3V0O1xuICB0cmFuc2Zvcm0tb3JpZ2luOiAwJSAxMDAlO1xuICB0ZXh0LWFsaWduOiBpbml0aWFsO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTJweCk7XG59XG4uaW5wdXQtZmllbGQgPiBsYWJlbDpub3QoLmxhYmVsLWljb24pLmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTRweCkgc2NhbGUoMC44KTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xufVxuLmlucHV0LWZpZWxkID4gaW5wdXRbdHlwZV06LXdlYmtpdC1hdXRvZmlsbDpub3QoLmJyb3dzZXItZGVmYXVsdCk6bm90KFt0eXBlPXNlYXJjaF0pICsgbGFiZWwsIC5pbnB1dC1maWVsZCA+IGlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWwsIC5pbnB1dC1maWVsZCA+IGlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWwge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0cHgpIHNjYWxlKDAuOCk7XG4gIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcbn1cbi5pbnB1dC1maWVsZCAuaGVscGVyLXRleHQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1pbi1oZWlnaHQ6IDE4cHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEycHg7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xufVxuLmlucHV0LWZpZWxkIC5oZWxwZXItdGV4dDo6YWZ0ZXIge1xuICBvcGFjaXR5OiAxO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbn1cbi5pbnB1dC1maWVsZCAucHJlZml4IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogNTZweDtcbiAgZm9udC1zaXplOiAycmVtO1xuICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xufVxuLmlucHV0LWZpZWxkIC5wcmVmaXguYWN0aXZlIHtcbiAgY29sb3I6ICMyNmE2OWE7XG59XG4uaW5wdXQtZmllbGQgLnByZWZpeCB+IGlucHV0LFxuLmlucHV0LWZpZWxkIC5wcmVmaXggfiB0ZXh0YXJlYSxcbi5pbnB1dC1maWVsZCAucHJlZml4IH4gbGFiZWwsXG4uaW5wdXQtZmllbGQgLnByZWZpeCB+IC52YWxpZGF0ZSB+IGxhYmVsLFxuLmlucHV0LWZpZWxkIC5wcmVmaXggfiAuaGVscGVyLXRleHQsXG4uaW5wdXQtZmllbGQgLnByZWZpeCB+IC5hdXRvY29tcGxldGUtY29udGVudCB7XG4gIG1hcmdpbi1sZWZ0OiAzcmVtO1xuICB3aWR0aDogOTIlO1xuICB3aWR0aDogY2FsYygxMDAlIC0gM3JlbSk7XG59XG4uaW5wdXQtZmllbGQgLnByZWZpeCB+IGxhYmVsIHtcbiAgbWFyZ2luLWxlZnQ6IDNyZW07XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA5OTJweCkge1xuICAuaW5wdXQtZmllbGQgLnByZWZpeCB+IGlucHV0IHtcbiAgICB3aWR0aDogODYlO1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAzcmVtKTtcbiAgfVxufVxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogNjAwcHgpIHtcbiAgLmlucHV0LWZpZWxkIC5wcmVmaXggfiBpbnB1dCB7XG4gICAgd2lkdGg6IDgwJTtcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gM3JlbSk7XG4gIH1cbn1cblxuLyogU2VhcmNoIEZpZWxkICovXG4uaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1zZWFyY2hdIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB0cmFuc2l0aW9uOiAwLjNzIGJhY2tncm91bmQtY29sb3I7XG59XG4ubmF2LXdyYXBwZXIgLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9c2VhcmNoXSB7XG4gIGhlaWdodDogaW5oZXJpdDtcbiAgcGFkZGluZy1sZWZ0OiA0cmVtO1xuICB3aWR0aDogY2FsYygxMDAlIC0gNHJlbSk7XG4gIGJvcmRlcjogMDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cbi5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXNlYXJjaF06Zm9jdXM6bm90KC5icm93c2VyLWRlZmF1bHQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyOiAwO1xuICBib3gtc2hhZG93OiBub25lO1xuICBjb2xvcjogIzQ0NDtcbn1cbi5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXNlYXJjaF06Zm9jdXM6bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWwgaSwgLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9c2VhcmNoXTpmb2N1czpub3QoLmJyb3dzZXItZGVmYXVsdCkgfiAubWRpLW5hdmlnYXRpb24tY2xvc2UsIC5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXNlYXJjaF06Zm9jdXM6bm90KC5icm93c2VyLWRlZmF1bHQpIH4gLm1hdGVyaWFsLWljb25zIHtcbiAgY29sb3I6ICM0NDQ7XG59XG4uaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1zZWFyY2hdICsgLmxhYmVsLWljb24ge1xuICB0cmFuc2Zvcm06IG5vbmU7XG4gIGxlZnQ6IDFyZW07XG59XG4uaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1zZWFyY2hdIH4gLm1kaS1uYXZpZ2F0aW9uLWNsb3NlLCAuaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1zZWFyY2hdIH4gLm1hdGVyaWFsLWljb25zIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAxcmVtO1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1zaXplOiAycmVtO1xuICB0cmFuc2l0aW9uOiAwLjNzIGNvbG9yO1xufVxuXG4vKiBUZXh0YXJlYSAqL1xudGV4dGFyZWEge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA1NnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbnRleHRhcmVhLnRleHRhcmVhIHtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgb3ZlcmZsb3cteTogaGlkZGVuOyAvKiBwcmV2ZW50cyBzY3JvbGwgYmFyIGZsYXNoICovXG4gIHBhZGRpbmc6IDAuOHJlbSAwIDAuOHJlbSAwOyAvKiBwcmV2ZW50cyB0ZXh0IGp1bXAgb24gRW50ZXIga2V5cHJlc3MgKi9cbiAgcmVzaXplOiBub25lO1xuICBtaW4taGVpZ2h0OiA1NnB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4uaGlkZGVuZGl2IHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsgLyogZnV0dXJlIHZlcnNpb24gb2YgZGVwcmVjYXRlZCAnd29yZC13cmFwJyAqL1xuICBwYWRkaW5nLXRvcDogMS4ycmVtOyAvKiBwcmV2ZW50cyB0ZXh0IGp1bXAgb24gRW50ZXIga2V5cHJlc3MgKi9cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHotaW5kZXg6IC0xO1xufVxuXG4vKiBBdXRvY29tcGxldGUgKi9cbi5hdXRvY29tcGxldGUtY29udGVudCBsaSAuaGlnaGxpZ2h0IHtcbiAgY29sb3I6ICM0NDQ7XG59XG4uYXV0b2NvbXBsZXRlLWNvbnRlbnQgbGkgaW1nIHtcbiAgbWFyZ2luOiA1cHggMTVweDtcbn1cblxuLyogQ2hhcmFjdGVyIENvdW50ZXIgKi9cbi5jaGFyYWN0ZXItY291bnRlciB7XG4gIG1pbi1oZWlnaHQ6IDE4cHg7XG59XG5cbi8qIFJhZGlvIEJ1dHRvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5bdHlwZT1yYWRpb106bm90KDpjaGVja2VkKSxcblt0eXBlPXJhZGlvXTpjaGVja2VkIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBvcGFjaXR5OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuW3R5cGU9cmFkaW9dOm5vdCg6Y2hlY2tlZCkgKyBzcGFuLFxuW3R5cGU9cmFkaW9dOmNoZWNrZWQgKyBzcGFuIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWxlZnQ6IDM1cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDI1cHg7XG4gIGxpbmUtaGVpZ2h0OiAyNXB4O1xuICBmb250LXNpemU6IDFyZW07XG4gIHRyYW5zaXRpb246IDAuMjhzIGVhc2U7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG5bdHlwZT1yYWRpb10gKyBzcGFuOmJlZm9yZSxcblt0eXBlPXJhZGlvXSArIHNwYW46YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgbWFyZ2luOiA0cHg7XG4gIHdpZHRoOiAxNnB4O1xuICBoZWlnaHQ6IDE2cHg7XG4gIHotaW5kZXg6IDA7XG4gIHRyYW5zaXRpb246IDAuMjhzIGVhc2U7XG59XG5cbi8qIFVuY2hlY2tlZCBzdHlsZXMgKi9cblt0eXBlPXJhZGlvXTpub3QoOmNoZWNrZWQpICsgc3BhbjpiZWZvcmUsXG5bdHlwZT1yYWRpb106bm90KDpjaGVja2VkKSArIHNwYW46YWZ0ZXIsXG5bdHlwZT1yYWRpb106Y2hlY2tlZCArIHNwYW46YmVmb3JlLFxuW3R5cGU9cmFkaW9dOmNoZWNrZWQgKyBzcGFuOmFmdGVyLFxuW3R5cGU9cmFkaW9dLndpdGgtZ2FwOmNoZWNrZWQgKyBzcGFuOmJlZm9yZSxcblt0eXBlPXJhZGlvXS53aXRoLWdhcDpjaGVja2VkICsgc3BhbjphZnRlciB7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbn1cblxuW3R5cGU9cmFkaW9dOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOmJlZm9yZSxcblt0eXBlPXJhZGlvXTpub3QoOmNoZWNrZWQpICsgc3BhbjphZnRlciB7XG4gIGJvcmRlcjogMnB4IHNvbGlkICM1YTVhNWE7XG59XG5cblt0eXBlPXJhZGlvXTpub3QoOmNoZWNrZWQpICsgc3BhbjphZnRlciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMCk7XG59XG5cbi8qIENoZWNrZWQgc3R5bGVzICovXG5bdHlwZT1yYWRpb106Y2hlY2tlZCArIHNwYW46YmVmb3JlIHtcbiAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cblt0eXBlPXJhZGlvXTpjaGVja2VkICsgc3BhbjphZnRlcixcblt0eXBlPXJhZGlvXS53aXRoLWdhcDpjaGVja2VkICsgc3BhbjpiZWZvcmUsXG5bdHlwZT1yYWRpb10ud2l0aC1nYXA6Y2hlY2tlZCArIHNwYW46YWZ0ZXIge1xuICBib3JkZXI6IDJweCBzb2xpZCAjMjZhNjlhO1xufVxuXG5bdHlwZT1yYWRpb106Y2hlY2tlZCArIHNwYW46YWZ0ZXIsXG5bdHlwZT1yYWRpb10ud2l0aC1nYXA6Y2hlY2tlZCArIHNwYW46YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xufVxuXG5bdHlwZT1yYWRpb106Y2hlY2tlZCArIHNwYW46YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMDIpO1xufVxuXG4vKiBSYWRpbyBXaXRoIGdhcCAqL1xuW3R5cGU9cmFkaW9dLndpdGgtZ2FwOmNoZWNrZWQgKyBzcGFuOmFmdGVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xufVxuXG4vKiBGb2N1c2VkIHN0eWxlcyAqL1xuW3R5cGU9cmFkaW9dLnRhYmJlZDpmb2N1cyArIHNwYW46YmVmb3JlIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMTBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi8qIERpc2FibGVkIFJhZGlvIFdpdGggZ2FwICovXG5bdHlwZT1yYWRpb10ud2l0aC1nYXA6ZGlzYWJsZWQ6Y2hlY2tlZCArIHNwYW46YmVmb3JlIHtcbiAgYm9yZGVyOiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKTtcbn1cblxuW3R5cGU9cmFkaW9dLndpdGgtZ2FwOmRpc2FibGVkOmNoZWNrZWQgKyBzcGFuOmFmdGVyIHtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xufVxuXG4vKiBEaXNhYmxlZCBzdHlsZSAqL1xuW3R5cGU9cmFkaW9dOmRpc2FibGVkOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOmJlZm9yZSxcblt0eXBlPXJhZGlvXTpkaXNhYmxlZDpjaGVja2VkICsgc3BhbjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xufVxuXG5bdHlwZT1yYWRpb106ZGlzYWJsZWQgKyBzcGFuIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XG59XG5cblt0eXBlPXJhZGlvXTpkaXNhYmxlZDpub3QoOmNoZWNrZWQpICsgc3BhbjpiZWZvcmUge1xuICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XG59XG5cblt0eXBlPXJhZGlvXTpkaXNhYmxlZDpjaGVja2VkICsgc3BhbjphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XG4gIGJvcmRlci1jb2xvcjogIzk0OTQ5NDtcbn1cblxuLyogQ2hlY2tib3hlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qIFJlbW92ZSBkZWZhdWx0IGNoZWNrYm94ICovXG5bdHlwZT1jaGVja2JveF06bm90KDpjaGVja2VkKSxcblt0eXBlPWNoZWNrYm94XTpjaGVja2VkIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBvcGFjaXR5OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuW3R5cGU9Y2hlY2tib3hdIHtcbiAgLyogY2hlY2tib3ggYXNwZWN0ICovXG59XG5bdHlwZT1jaGVja2JveF0gKyBzcGFuOm5vdCgubGV2ZXIpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWxlZnQ6IDM1cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDI1cHg7XG4gIGxpbmUtaGVpZ2h0OiAyNXB4O1xuICBmb250LXNpemU6IDFyZW07XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuW3R5cGU9Y2hlY2tib3hdICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUsIFt0eXBlPWNoZWNrYm94XTpub3QoLmZpbGxlZC1pbikgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxOHB4O1xuICBoZWlnaHQ6IDE4cHg7XG4gIHotaW5kZXg6IDA7XG4gIGJvcmRlcjogMnB4IHNvbGlkICM1YTVhNWE7XG4gIGJvcmRlci1yYWRpdXM6IDFweDtcbiAgbWFyZ2luLXRvcDogM3B4O1xuICB0cmFuc2l0aW9uOiAwLjJzO1xufVxuW3R5cGU9Y2hlY2tib3hdOm5vdCguZmlsbGVkLWluKSArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xuICBib3JkZXI6IDA7XG4gIHRyYW5zZm9ybTogc2NhbGUoMCk7XG59XG5bdHlwZT1jaGVja2JveF06bm90KDpjaGVja2VkKTpkaXNhYmxlZCArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlIHtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xufVxuW3R5cGU9Y2hlY2tib3hdLnRhYmJlZDpmb2N1cyArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm94LXNoYWRvdzogMCAwIDAgMTBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuW3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XG4gIHRvcDogLTRweDtcbiAgbGVmdDogLTVweDtcbiAgd2lkdGg6IDEycHg7XG4gIGhlaWdodDogMjJweDtcbiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItbGVmdDogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjMjZhNjlhO1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgIzI2YTY5YTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoNDBkZWcpO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTtcbn1cblt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmRpc2FibGVkICsgc3BhbjpiZWZvcmUge1xuICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNDIpO1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKTtcbn1cblxuLyogSW5kZXRlcm1pbmF0ZSBjaGVja2JveCAqL1xuW3R5cGU9Y2hlY2tib3hdOmluZGV0ZXJtaW5hdGUgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XG4gIHRvcDogLTExcHg7XG4gIGxlZnQ6IC0xMnB4O1xuICB3aWR0aDogMTBweDtcbiAgaGVpZ2h0OiAyMnB4O1xuICBib3JkZXItdG9wOiBub25lO1xuICBib3JkZXItbGVmdDogbm9uZTtcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgIzI2YTY5YTtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTtcbn1cblt0eXBlPWNoZWNrYm94XTppbmRldGVybWluYXRlOmRpc2FibGVkICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xuICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNDIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbiArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xuICBib3JkZXItcmFkaXVzOiAycHg7XG59XG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUsXG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGxlZnQ6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgLyogLjFzIGRlbGF5IGlzIGZvciBjaGVjayBhbmltYXRpb24gKi9cbiAgdHJhbnNpdGlvbjogYm9yZGVyIDAuMjVzLCBiYWNrZ3JvdW5kLWNvbG9yIDAuMjVzLCB3aWR0aCAwLjJzIDAuMXMsIGhlaWdodCAwLjJzIDAuMXMsIHRvcCAwLjJzIDAuMXMsIGxlZnQgMC4ycyAwLjFzO1xuICB6LWluZGV4OiAxO1xufVxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbjpub3QoOmNoZWNrZWQpICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgbGVmdDogNnB4O1xuICB0b3A6IDEwcHg7XG4gIHRyYW5zZm9ybTogcm90YXRlWigzN2RlZyk7XG4gIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTtcbn1cblt0eXBlPWNoZWNrYm94XS5maWxsZWQtaW46bm90KDpjaGVja2VkKSArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xuICBoZWlnaHQ6IDIwcHg7XG4gIHdpZHRoOiAyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAycHggc29saWQgIzVhNWE1YTtcbiAgdG9wOiAwcHg7XG4gIHotaW5kZXg6IDA7XG59XG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluOmNoZWNrZWQgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XG4gIHRvcDogMDtcbiAgbGVmdDogMXB4O1xuICB3aWR0aDogOHB4O1xuICBoZWlnaHQ6IDEzcHg7XG4gIGJvcmRlci10b3A6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgI2ZmZjtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNmZmY7XG4gIHRyYW5zZm9ybTogcm90YXRlWigzN2RlZyk7XG4gIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTtcbn1cblt0eXBlPWNoZWNrYm94XS5maWxsZWQtaW46Y2hlY2tlZCArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xuICB0b3A6IDA7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGJvcmRlcjogMnB4IHNvbGlkICMyNmE2OWE7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XG4gIHotaW5kZXg6IDA7XG59XG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluLnRhYmJlZDpmb2N1cyArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGJvcmRlci1jb2xvcjogIzVhNWE1YTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbi50YWJiZWQ6Y2hlY2tlZDpmb2N1cyArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XG4gIGJvcmRlci1jb2xvcjogIzI2YTY5YTtcbn1cblt0eXBlPWNoZWNrYm94XS5maWxsZWQtaW46ZGlzYWJsZWQ6bm90KDpjaGVja2VkKSArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xufVxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbjpkaXNhYmxlZDpub3QoOmNoZWNrZWQpICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5NDk0OTQ7XG59XG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluOmRpc2FibGVkOmNoZWNrZWQgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbjpkaXNhYmxlZDpjaGVja2VkICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5NDk0OTQ7XG4gIGJvcmRlci1jb2xvcjogIzk0OTQ5NDtcbn1cblxuLyogU3dpdGNoXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnN3aXRjaCxcbi5zd2l0Y2ggKiB7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4uc3dpdGNoIGxhYmVsIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uc3dpdGNoIGxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdIHtcbiAgb3BhY2l0eTogMDtcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbn1cbi5zd2l0Y2ggbGFiZWwgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5sZXZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4NGM3YzE7XG59XG4uc3dpdGNoIGxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAubGV2ZXI6YmVmb3JlLCAuc3dpdGNoIGxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAubGV2ZXI6YWZ0ZXIge1xuICBsZWZ0OiAxOHB4O1xufVxuLnN3aXRjaCBsYWJlbCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgLmxldmVyOmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcbn1cblxuLnN3aXRjaCBsYWJlbCAubGV2ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDM2cHg7XG4gIGhlaWdodDogMTRweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTtcbiAgYm9yZGVyLXJhZGl1czogMTVweDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjNzIGVhc2U7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIG1hcmdpbjogMCAxNnB4O1xufVxuLnN3aXRjaCBsYWJlbCAubGV2ZXI6YmVmb3JlLCAuc3dpdGNoIGxhYmVsIC5sZXZlcjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogLTNweDtcbiAgdHJhbnNpdGlvbjogbGVmdCAwLjNzIGVhc2UsIGJhY2tncm91bmQgMC4zcyBlYXNlLCBib3gtc2hhZG93IDAuMXMgZWFzZSwgdHJhbnNmb3JtIDAuMXMgZWFzZTtcbn1cbi5zd2l0Y2ggbGFiZWwgLmxldmVyOmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgsIDE2NiwgMTU0LCAwLjE1KTtcbn1cbi5zd2l0Y2ggbGFiZWwgLmxldmVyOmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0YxRjFGMTtcbiAgYm94LXNoYWRvdzogMHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpub3QoOmRpc2FibGVkKSB+IC5sZXZlcjphY3RpdmU6OmJlZm9yZSxcbmlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6bm90KDpkaXNhYmxlZCkudGFiYmVkOmZvY3VzIH4gLmxldmVyOjpiZWZvcmUge1xuICB0cmFuc2Zvcm06IHNjYWxlKDIuNCk7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgsIDE2NiwgMTU0LCAwLjE1KTtcbn1cblxuaW5wdXRbdHlwZT1jaGVja2JveF06bm90KDpkaXNhYmxlZCkgfiAubGV2ZXI6YWN0aXZlOmJlZm9yZSxcbmlucHV0W3R5cGU9Y2hlY2tib3hdOm5vdCg6ZGlzYWJsZWQpLnRhYmJlZDpmb2N1cyB+IC5sZXZlcjo6YmVmb3JlIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgyLjQpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDgpO1xufVxuXG4uc3dpdGNoIGlucHV0W3R5cGU9Y2hlY2tib3hdW2Rpc2FibGVkXSArIC5sZXZlciB7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLnN3aXRjaCBsYWJlbCBpbnB1dFt0eXBlPWNoZWNrYm94XVtkaXNhYmxlZF0gKyAubGV2ZXI6YWZ0ZXIsXG4uc3dpdGNoIGxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdW2Rpc2FibGVkXTpjaGVja2VkICsgLmxldmVyOmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk0OTQ5NDtcbn1cblxuLyogU2VsZWN0IEZpZWxkXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuc2VsZWN0IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuc2VsZWN0LmJyb3dzZXItZGVmYXVsdCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG5zZWxlY3Qge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiA1cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNmMmYyZjI7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgaGVpZ2h0OiA1NnB4O1xufVxuXG4uc2VsZWN0LWxhYmVsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4uc2VsZWN0LXdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uc2VsZWN0LXdyYXBwZXIudmFsaWQgKyBsYWJlbCwgLnNlbGVjdC13cmFwcGVyLmludmFsaWQgKyBsYWJlbCB7XG4gIHdpZHRoOiAxMDAlO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5zZWxlY3Qtd3JhcHBlciBpbnB1dC5zZWxlY3QtZHJvcGRvd24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM5ZTllOWU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGhlaWdodDogNTZweDtcbiAgbGluZS1oZWlnaHQ6IDU2cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBmb250LXNpemU6IDE2cHg7XG4gIG1hcmdpbjogMCAwIDhweCAwO1xuICBwYWRkaW5nOiAwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG59XG4uc2VsZWN0LXdyYXBwZXIgaW5wdXQuc2VsZWN0LWRyb3Bkb3duOmZvY3VzIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMyNmE2OWE7XG59XG4uc2VsZWN0LXdyYXBwZXIgLmNhcmV0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIG1hcmdpbjogYXV0byAwO1xuICB6LWluZGV4OiAwO1xuICBmaWxsOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xufVxuLnNlbGVjdC13cmFwcGVyICsgbGFiZWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTI2cHg7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufVxuXG5zZWxlY3Q6ZGlzYWJsZWQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQyKTtcbn1cblxuLnNlbGVjdC13cmFwcGVyLmRpc2FibGVkICsgbGFiZWwge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQyKTtcbn1cbi5zZWxlY3Qtd3JhcHBlci5kaXNhYmxlZCAuY2FyZXQge1xuICBmaWxsOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xufVxuXG4uc2VsZWN0LXdyYXBwZXIgaW5wdXQuc2VsZWN0LWRyb3Bkb3duOmRpc2FibGVkIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5zZWxlY3Qtd3JhcHBlciBpIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zKTtcbn1cblxuLnNlbGVjdC1kcm9wZG93biBsaS5kaXNhYmxlZCxcbi5zZWxlY3QtZHJvcGRvd24gbGkuZGlzYWJsZWQgPiBzcGFuLFxuLnNlbGVjdC1kcm9wZG93biBsaS5vcHRncm91cCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG5ib2R5LmtleWJvYXJkLWZvY3VzZWQgLnNlbGVjdC1kcm9wZG93bi5kcm9wZG93bi1jb250ZW50IGxpOmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA4KTtcbn1cblxuLnNlbGVjdC1kcm9wZG93bi5kcm9wZG93bi1jb250ZW50IGxpOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA4KTtcbn1cbi5zZWxlY3QtZHJvcGRvd24uZHJvcGRvd24tY29udGVudCBsaS5zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wMyk7XG59XG5cbi5wcmVmaXggfiAuc2VsZWN0LXdyYXBwZXIge1xuICBtYXJnaW4tbGVmdDogM3JlbTtcbiAgd2lkdGg6IDkyJTtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDNyZW0pO1xufVxuXG4ucHJlZml4IH4gbGFiZWwge1xuICBtYXJnaW4tbGVmdDogM3JlbTtcbn1cblxuLnNlbGVjdC1kcm9wZG93biBsaSBpbWcge1xuICBtYXJnaW46IDVweCAxNXB4O1xuICBmbG9hdDogcmlnaHQ7XG59XG5cbi5zZWxlY3QtZHJvcGRvd24gbGkub3B0Z3JvdXAuc2VsZWN0ZWQgPiBzcGFuIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC43KTtcbn1cbi5zZWxlY3QtZHJvcGRvd24gbGkub3B0Z3JvdXAgPiBzcGFuIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40KTtcbn1cbi5zZWxlY3QtZHJvcGRvd24gbGkub3B0Z3JvdXAgfiBsaS5vcHRncm91cC1vcHRpb24ge1xuICBwYWRkaW5nLWxlZnQ6IDFyZW07XG59XG5cbi8qIEZpbGUgSW5wdXRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uZmlsZS1maWVsZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5maWxlLWZpZWxkIC5maWxlLXBhdGgtd3JhcHBlciB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbn1cbi5maWxlLWZpZWxkIGlucHV0LmZpbGUtcGF0aCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmZpbGUtZmllbGQgLmJ0biwgLmZpbGUtZmllbGQgLmJ0bi1zbWFsbCwgLmZpbGUtZmllbGQgLmJ0bi1sYXJnZSB7XG4gIGZsb2F0OiBsZWZ0O1xuICBoZWlnaHQ6IDU2cHg7XG4gIGxpbmUtaGVpZ2h0OiA1NnB4O1xufVxuLmZpbGUtZmllbGQgc3BhbiB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5maWxlLWZpZWxkIGlucHV0W3R5cGU9ZmlsZV0ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG9wYWNpdHk6IDA7XG4gIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcbn1cbi5maWxlLWZpZWxkIGlucHV0W3R5cGU9ZmlsZV06Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogUmFuZ2VcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ucmFuZ2UtZmllbGQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbmlucHV0W3R5cGU9cmFuZ2VdLFxuaW5wdXRbdHlwZT1yYW5nZV0gKyAudGh1bWIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbmlucHV0W3R5cGU9cmFuZ2VdIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAxNXB4IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5pbnB1dFt0eXBlPXJhbmdlXTpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG59XG5cbmlucHV0W3R5cGU9cmFuZ2VdICsgLnRodW1iIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwcHg7XG4gIGxlZnQ6IDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xuICBtYXJnaW4tbGVmdDogN3B4O1xuICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xufVxuaW5wdXRbdHlwZT1yYW5nZV0gKyAudGh1bWIgLnZhbHVlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAzMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAjMjZhNjlhO1xuICBmb250LXNpemU6IDA7XG4gIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbn1cbmlucHV0W3R5cGU9cmFuZ2VdICsgLnRodW1iLmFjdGl2ZSB7XG4gIGJvcmRlci1yYWRpdXM6IDUwJSA1MCUgNTAlIDA7XG59XG5pbnB1dFt0eXBlPXJhbmdlXSArIC50aHVtYi5hY3RpdmUgLnZhbHVlIHtcbiAgY29sb3I6ICNmZmY7XG4gIG1hcmdpbi1sZWZ0OiAtMXB4O1xuICBtYXJnaW4tdG9wOiA4cHg7XG4gIGZvbnQtc2l6ZTogMTBweDtcbn1cblxuaW5wdXRbdHlwZT1yYW5nZV0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbmlucHV0W3R5cGU9cmFuZ2VdOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XG4gIGhlaWdodDogM3B4O1xuICBiYWNrZ3JvdW5kOiAjYzJjMGMyO1xuICBib3JkZXI6IG5vbmU7XG59XG5cbmlucHV0W3R5cGU9cmFuZ2VdOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gIGJvcmRlcjogbm9uZTtcbiAgaGVpZ2h0OiAxNHB4O1xuICB3aWR0aDogMTRweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kOiAjMjZhNjlhO1xuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuM3M7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgbWFyZ2luOiAtNXB4IDAgMCAwO1xufVxuXG4ua2V5Ym9hcmQtZm9jdXNlZCBpbnB1dFt0eXBlPXJhbmdlXTpmb2N1czpub3QoLmFjdGl2ZSk6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMTBweCByZ2JhKDM4LCAxNjYsIDE1NCwgMC4yNik7XG59XG5cbmlucHV0W3R5cGU9cmFuZ2VdIHtcbiAgLyogZml4IGZvciBGRiB1bmFibGUgdG8gYXBwbHkgZm9jdXMgc3R5bGUgYnVnICAqL1xuICBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTtcbiAgLypyZXF1aXJlZCBmb3IgcHJvcGVyIHRyYWNrIHNpemluZyBpbiBGRiovXG59XG5cbmlucHV0W3R5cGU9cmFuZ2VdOjotbW96LXJhbmdlLXRyYWNrIHtcbiAgaGVpZ2h0OiAzcHg7XG4gIGJhY2tncm91bmQ6ICNjMmMwYzI7XG4gIGJvcmRlcjogbm9uZTtcbn1cblxuaW5wdXRbdHlwZT1yYW5nZV06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXI6IDA7XG59XG5cbmlucHV0W3R5cGU9cmFuZ2VdOjotbW96LXJhbmdlLXRodW1iIHtcbiAgYm9yZGVyOiBub25lO1xuICBoZWlnaHQ6IDE0cHg7XG4gIHdpZHRoOiAxNHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQ6ICMyNmE2OWE7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4zcztcbiAgbWFyZ2luLXRvcDogLTVweDtcbn1cblxuaW5wdXRbdHlwZT1yYW5nZV06LW1vei1mb2N1c3Jpbmcge1xuICBvdXRsaW5lOiAxcHggc29saWQgI2ZmZjtcbiAgb3V0bGluZS1vZmZzZXQ6IC0xcHg7XG59XG5cbi5rZXlib2FyZC1mb2N1c2VkIGlucHV0W3R5cGU9cmFuZ2VdOmZvY3VzOm5vdCguYWN0aXZlKTo6LW1vei1yYW5nZS10aHVtYiB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgzOCwgMTY2LCAxNTQsIDAuMjYpO1xufVxuXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRyYWNrIHtcbiAgaGVpZ2h0OiAzcHg7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItd2lkdGg6IDZweCAwO1xuICAvKnJlbW92ZSBkZWZhdWx0IHRpY2sgbWFya3MqL1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbmlucHV0W3R5cGU9cmFuZ2VdOjotbXMtZmlsbC1sb3dlciB7XG4gIGJhY2tncm91bmQ6ICM3Nzc7XG59XG5cbmlucHV0W3R5cGU9cmFuZ2VdOjotbXMtZmlsbC11cHBlciB7XG4gIGJhY2tncm91bmQ6ICNkZGQ7XG59XG5cbmlucHV0W3R5cGU9cmFuZ2VdOjotbXMtdGh1bWIge1xuICBib3JkZXI6IG5vbmU7XG4gIGhlaWdodDogMTRweDtcbiAgd2lkdGg6IDE0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZDogIzI2YTY5YTtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjNzO1xufVxuXG4ua2V5Ym9hcmQtZm9jdXNlZCBpbnB1dFt0eXBlPXJhbmdlXTpmb2N1czpub3QoLmFjdGl2ZSk6Oi1tcy10aHVtYiB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgzOCwgMTY2LCAxNTQsIDAuMjYpO1xufVxuXG4ucGFyYWxsYXgge1xuICAvKiBTZXQgYSBzcGVjaWZpYyBoZWlnaHQgKi9cbiAgbWluLWhlaWdodDogNTAwcHg7XG4gIC8qIENyZWF0ZSB0aGUgcGFyYWxsYXggc2Nyb2xsaW5nIGVmZmVjdCAqL1xuICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG59XG5cbioge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG59XG5cbi5zY2VuZSB7XG4gIHdpZHRoOiAyMDBweDtcbiAgaGVpZ2h0OiAyMDBweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI0NDQztcbiAgbWFyZ2luOiA4MHB4O1xuICBwZXJzcGVjdGl2ZTogNDAwcHg7XG59XG5cbi5jdWJlIHtcbiAgd2lkdGg6IDIwMHB4O1xuICBoZWlnaHQ6IDIwMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtNDAwcHgpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMXM7XG59XG5cbi5jdWJlLnNob3ctZnJvbnQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwcHgpIHJvdGF0ZVkoMGRlZyk7XG59XG5cbi5jdWJlLnNob3ctcmlnaHQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwcHgpIHJvdGF0ZVkoLTkwZGVnKTtcbn1cblxuLmN1YmUuc2hvdy1iYWNrIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0xMHB4KSByb3RhdGVZKC0xODBkZWcpO1xufVxuXG4uY3ViZS5zaG93LWxlZnQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwcHgpIHJvdGF0ZVkoOTBkZWcpO1xufVxuXG4uY3ViZS5zaG93LXRvcCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMTBweCkgcm90YXRlWCgtOTBkZWcpO1xufVxuXG4uY3ViZS5zaG93LWJvdHRvbSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMTBweCkgcm90YXRlWCg5MGRlZyk7XG59XG5cbi5jdWJlX19mYWNlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMjAwcHg7XG4gIGhlaWdodDogMjAwcHg7XG4gIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrO1xuICBsaW5lLWhlaWdodDogMjAwcHg7XG4gIGZvbnQtc2l6ZTogNDBweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uY3ViZV9fZmFjZS0tZnJvbnQge1xuICBiYWNrZ3JvdW5kOiBoc2xhKDAsIDEwMCUsIDUwJSwgMC43KTtcbn1cblxuLmN1YmVfX2ZhY2UtLXJpZ2h0IHtcbiAgYmFja2dyb3VuZDogaHNsYSg2MCwgMTAwJSwgNTAlLCAwLjcpO1xufVxuXG4uY3ViZV9fZmFjZS0tYmFjayB7XG4gIGJhY2tncm91bmQ6IGhzbGEoMTIwLCAxMDAlLCA1MCUsIDAuNyk7XG59XG5cbi5jdWJlX19mYWNlLS1sZWZ0IHtcbiAgYmFja2dyb3VuZDogaHNsYSgxODAsIDEwMCUsIDUwJSwgMC43KTtcbn1cblxuLmN1YmVfX2ZhY2UtLXRvcCB7XG4gIGJhY2tncm91bmQ6IGhzbGEoMjQwLCAxMDAlLCA1MCUsIDAuNyk7XG59XG5cbi5jdWJlX19mYWNlLS1ib3R0b20ge1xuICBiYWNrZ3JvdW5kOiBoc2xhKDMwMCwgMTAwJSwgNTAlLCAwLjcpO1xufVxuXG4uY3ViZV9fZmFjZS0tZnJvbnQge1xuICB0cmFuc2Zvcm06IHJvdGF0ZVkoMGRlZykgdHJhbnNsYXRlWigxMDBweCk7XG59XG5cbi5jdWJlX19mYWNlLS1yaWdodCB7XG4gIHRyYW5zZm9ybTogcm90YXRlWSg5MGRlZykgdHJhbnNsYXRlWigxMDBweCk7XG59XG5cbi5jdWJlX19mYWNlLS1iYWNrIHtcbiAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZykgdHJhbnNsYXRlWigxMDBweCk7XG59XG5cbi5jdWJlX19mYWNlLS1sZWZ0IHtcbiAgdHJhbnNmb3JtOiByb3RhdGVZKC05MGRlZykgdHJhbnNsYXRlWigxMDBweCk7XG59XG5cbi5jdWJlX19mYWNlLS10b3Age1xuICB0cmFuc2Zvcm06IHJvdGF0ZVgoOTBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpO1xufVxuXG4uY3ViZV9fZmFjZS0tYm90dG9tIHtcbiAgdHJhbnNmb3JtOiByb3RhdGVYKC05MGRlZykgdHJhbnNsYXRlWigxMDBweCk7XG59XG5cbmxhYmVsIHtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuXG4uY29udGFpbmVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIG1heC13aWR0aDogMTI4MHB4O1xuICB3aWR0aDogOTAlO1xufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiA2MDFweCkge1xuICAuY29udGFpbmVyIHtcbiAgICB3aWR0aDogODUlO1xuICB9XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiA5OTNweCkge1xuICAuY29udGFpbmVyIHtcbiAgICB3aWR0aDogNzAlO1xuICB9XG59XG4uY29sIC5yb3cge1xuICBtYXJnaW4tbGVmdDogLTAuNXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAtMC41cmVtO1xufVxuXG4uc2VjdGlvbiB7XG4gIHBhZGRpbmctdG9wOiAxcmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcbn1cbi5zZWN0aW9uLm5vLXBhZCB7XG4gIHBhZGRpbmc6IDA7XG59XG4uc2VjdGlvbi5uby1wYWQtYm90IHtcbiAgcGFkZGluZy1ib3R0b206IDA7XG59XG4uc2VjdGlvbi5uby1wYWQtdG9wIHtcbiAgcGFkZGluZy10b3A6IDA7XG59XG5cbi5yb3cge1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuLnJvdzphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICBjbGVhcjogYm90aDtcbn1cbi5yb3cgLmNvbCB7XG4gIGZsb2F0OiBsZWZ0O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAwIDAuNXJlbTtcbiAgbWluLWhlaWdodDogMXB4O1xufVxuLnJvdyAuY29sW2NsYXNzKj1wdXNoLV0sIC5yb3cgLmNvbFtjbGFzcyo9cHVsbC1dIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLnJvdyAuY29sLnMxIHtcbiAgd2lkdGg6IDguMzMzMzMzMzMzMyU7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBsZWZ0OiBhdXRvO1xuICByaWdodDogYXV0bztcbn1cbi5yb3cgLmNvbC5zMiB7XG4gIHdpZHRoOiAxNi42NjY2NjY2NjY3JTtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIGxlZnQ6IGF1dG87XG4gIHJpZ2h0OiBhdXRvO1xufVxuLnJvdyAuY29sLnMzIHtcbiAgd2lkdGg6IDI1JTtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIGxlZnQ6IGF1dG87XG4gIHJpZ2h0OiBhdXRvO1xufVxuLnJvdyAuY29sLnM0IHtcbiAgd2lkdGg6IDMzLjMzMzMzMzMzMzMlO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbGVmdDogYXV0bztcbiAgcmlnaHQ6IGF1dG87XG59XG4ucm93IC5jb2wuczUge1xuICB3aWR0aDogNDEuNjY2NjY2NjY2NyU7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBsZWZ0OiBhdXRvO1xuICByaWdodDogYXV0bztcbn1cbi5yb3cgLmNvbC5zNiB7XG4gIHdpZHRoOiA1MCU7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBsZWZ0OiBhdXRvO1xuICByaWdodDogYXV0bztcbn1cbi5yb3cgLmNvbC5zNyB7XG4gIHdpZHRoOiA1OC4zMzMzMzMzMzMzJTtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIGxlZnQ6IGF1dG87XG4gIHJpZ2h0OiBhdXRvO1xufVxuLnJvdyAuY29sLnM4IHtcbiAgd2lkdGg6IDY2LjY2NjY2NjY2NjclO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbGVmdDogYXV0bztcbiAgcmlnaHQ6IGF1dG87XG59XG4ucm93IC5jb2wuczkge1xuICB3aWR0aDogNzUlO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbGVmdDogYXV0bztcbiAgcmlnaHQ6IGF1dG87XG59XG4ucm93IC5jb2wuczEwIHtcbiAgd2lkdGg6IDgzLjMzMzMzMzMzMzMlO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbGVmdDogYXV0bztcbiAgcmlnaHQ6IGF1dG87XG59XG4ucm93IC5jb2wuczExIHtcbiAgd2lkdGg6IDkxLjY2NjY2NjY2NjclO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbGVmdDogYXV0bztcbiAgcmlnaHQ6IGF1dG87XG59XG4ucm93IC5jb2wuczEyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBsZWZ0OiBhdXRvO1xuICByaWdodDogYXV0bztcbn1cbi5yb3cgLmNvbC5vZmZzZXQtczEge1xuICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMzMzJTtcbn1cbi5yb3cgLmNvbC5wdWxsLXMxIHtcbiAgcmlnaHQ6IDguMzMzMzMzMzMzMyU7XG59XG4ucm93IC5jb2wucHVzaC1zMSB7XG4gIGxlZnQ6IDguMzMzMzMzMzMzMyU7XG59XG4ucm93IC5jb2wub2Zmc2V0LXMyIHtcbiAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclO1xufVxuLnJvdyAuY29sLnB1bGwtczIge1xuICByaWdodDogMTYuNjY2NjY2NjY2NyU7XG59XG4ucm93IC5jb2wucHVzaC1zMiB7XG4gIGxlZnQ6IDE2LjY2NjY2NjY2NjclO1xufVxuLnJvdyAuY29sLm9mZnNldC1zMyB7XG4gIG1hcmdpbi1sZWZ0OiAyNSU7XG59XG4ucm93IC5jb2wucHVsbC1zMyB7XG4gIHJpZ2h0OiAyNSU7XG59XG4ucm93IC5jb2wucHVzaC1zMyB7XG4gIGxlZnQ6IDI1JTtcbn1cbi5yb3cgLmNvbC5vZmZzZXQtczQge1xuICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMzMyU7XG59XG4ucm93IC5jb2wucHVsbC1zNCB7XG4gIHJpZ2h0OiAzMy4zMzMzMzMzMzMzJTtcbn1cbi5yb3cgLmNvbC5wdXNoLXM0IHtcbiAgbGVmdDogMzMuMzMzMzMzMzMzMyU7XG59XG4ucm93IC5jb2wub2Zmc2V0LXM1IHtcbiAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY2NjclO1xufVxuLnJvdyAuY29sLnB1bGwtczUge1xuICByaWdodDogNDEuNjY2NjY2NjY2NyU7XG59XG4ucm93IC5jb2wucHVzaC1zNSB7XG4gIGxlZnQ6IDQxLjY2NjY2NjY2NjclO1xufVxuLnJvdyAuY29sLm9mZnNldC1zNiB7XG4gIG1hcmdpbi1sZWZ0OiA1MCU7XG59XG4ucm93IC5jb2wucHVsbC1zNiB7XG4gIHJpZ2h0OiA1MCU7XG59XG4ucm93IC5jb2wucHVzaC1zNiB7XG4gIGxlZnQ6IDUwJTtcbn1cbi5yb3cgLmNvbC5vZmZzZXQtczcge1xuICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7XG59XG4ucm93IC5jb2wucHVsbC1zNyB7XG4gIHJpZ2h0OiA1OC4zMzMzMzMzMzMzJTtcbn1cbi5yb3cgLmNvbC5wdXNoLXM3IHtcbiAgbGVmdDogNTguMzMzMzMzMzMzMyU7XG59XG4ucm93IC5jb2wub2Zmc2V0LXM4IHtcbiAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY2NjclO1xufVxuLnJvdyAuY29sLnB1bGwtczgge1xuICByaWdodDogNjYuNjY2NjY2NjY2NyU7XG59XG4ucm93IC5jb2wucHVzaC1zOCB7XG4gIGxlZnQ6IDY2LjY2NjY2NjY2NjclO1xufVxuLnJvdyAuY29sLm9mZnNldC1zOSB7XG4gIG1hcmdpbi1sZWZ0OiA3NSU7XG59XG4ucm93IC5jb2wucHVsbC1zOSB7XG4gIHJpZ2h0OiA3NSU7XG59XG4ucm93IC5jb2wucHVzaC1zOSB7XG4gIGxlZnQ6IDc1JTtcbn1cbi5yb3cgLmNvbC5vZmZzZXQtczEwIHtcbiAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlO1xufVxuLnJvdyAuY29sLnB1bGwtczEwIHtcbiAgcmlnaHQ6IDgzLjMzMzMzMzMzMzMlO1xufVxuLnJvdyAuY29sLnB1c2gtczEwIHtcbiAgbGVmdDogODMuMzMzMzMzMzMzMyU7XG59XG4ucm93IC5jb2wub2Zmc2V0LXMxMSB7XG4gIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NjY3JTtcbn1cbi5yb3cgLmNvbC5wdWxsLXMxMSB7XG4gIHJpZ2h0OiA5MS42NjY2NjY2NjY3JTtcbn1cbi5yb3cgLmNvbC5wdXNoLXMxMSB7XG4gIGxlZnQ6IDkxLjY2NjY2NjY2NjclO1xufVxuLnJvdyAuY29sLm9mZnNldC1zMTIge1xuICBtYXJnaW4tbGVmdDogMTAwJTtcbn1cbi5yb3cgLmNvbC5wdWxsLXMxMiB7XG4gIHJpZ2h0OiAxMDAlO1xufVxuLnJvdyAuY29sLnB1c2gtczEyIHtcbiAgbGVmdDogMTAwJTtcbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDYwMXB4KSB7XG4gIC5yb3cgLmNvbC5tMSB7XG4gICAgd2lkdGg6IDguMzMzMzMzMzMzMyU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wubTIge1xuICAgIHdpZHRoOiAxNi42NjY2NjY2NjY3JTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5tMyB7XG4gICAgd2lkdGg6IDI1JTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5tNCB7XG4gICAgd2lkdGg6IDMzLjMzMzMzMzMzMzMlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLm01IHtcbiAgICB3aWR0aDogNDEuNjY2NjY2NjY2NyU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wubTYge1xuICAgIHdpZHRoOiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wubTcge1xuICAgIHdpZHRoOiA1OC4zMzMzMzMzMzMzJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5tOCB7XG4gICAgd2lkdGg6IDY2LjY2NjY2NjY2NjclO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLm05IHtcbiAgICB3aWR0aDogNzUlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLm0xMCB7XG4gICAgd2lkdGg6IDgzLjMzMzMzMzMzMzMlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLm0xMSB7XG4gICAgd2lkdGg6IDkxLjY2NjY2NjY2NjclO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLm0xMiB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LW0xIHtcbiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wucHVsbC1tMSB7XG4gICAgcmlnaHQ6IDguMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbTEge1xuICAgIGxlZnQ6IDguMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1tMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLW0yIHtcbiAgICByaWdodDogMTYuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbTIge1xuICAgIGxlZnQ6IDE2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbTMge1xuICAgIG1hcmdpbi1sZWZ0OiAyNSU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbTMge1xuICAgIHJpZ2h0OiAyNSU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbTMge1xuICAgIGxlZnQ6IDI1JTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LW00IHtcbiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbTQge1xuICAgIHJpZ2h0OiAzMy4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wucHVzaC1tNCB7XG4gICAgbGVmdDogMzMuMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1tNSB7XG4gICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLW01IHtcbiAgICByaWdodDogNDEuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbTUge1xuICAgIGxlZnQ6IDQxLjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbTYge1xuICAgIG1hcmdpbi1sZWZ0OiA1MCU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbTYge1xuICAgIHJpZ2h0OiA1MCU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbTYge1xuICAgIGxlZnQ6IDUwJTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LW03IHtcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbTcge1xuICAgIHJpZ2h0OiA1OC4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wucHVzaC1tNyB7XG4gICAgbGVmdDogNTguMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1tOCB7XG4gICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLW04IHtcbiAgICByaWdodDogNjYuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbTgge1xuICAgIGxlZnQ6IDY2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbTkge1xuICAgIG1hcmdpbi1sZWZ0OiA3NSU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbTkge1xuICAgIHJpZ2h0OiA3NSU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbTkge1xuICAgIGxlZnQ6IDc1JTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LW0xMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLW0xMCB7XG4gICAgcmlnaHQ6IDgzLjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLW0xMCB7XG4gICAgbGVmdDogODMuMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1tMTEge1xuICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVsbC1tMTEge1xuICAgIHJpZ2h0OiA5MS42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVzaC1tMTEge1xuICAgIGxlZnQ6IDkxLjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbTEyIHtcbiAgICBtYXJnaW4tbGVmdDogMTAwJTtcbiAgfVxuICAucm93IC5jb2wucHVsbC1tMTIge1xuICAgIHJpZ2h0OiAxMDAlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLW0xMiB7XG4gICAgbGVmdDogMTAwJTtcbiAgfVxufVxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogOTkzcHgpIHtcbiAgLnJvdyAuY29sLmwxIHtcbiAgICB3aWR0aDogOC4zMzMzMzMzMzMzJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5sMiB7XG4gICAgd2lkdGg6IDE2LjY2NjY2NjY2NjclO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLmwzIHtcbiAgICB3aWR0aDogMjUlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLmw0IHtcbiAgICB3aWR0aDogMzMuMzMzMzMzMzMzMyU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wubDUge1xuICAgIHdpZHRoOiA0MS42NjY2NjY2NjY3JTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5sNiB7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5sNyB7XG4gICAgd2lkdGg6IDU4LjMzMzMzMzMzMzMlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLmw4IHtcbiAgICB3aWR0aDogNjYuNjY2NjY2NjY2NyU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wubDkge1xuICAgIHdpZHRoOiA3NSU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wubDEwIHtcbiAgICB3aWR0aDogODMuMzMzMzMzMzMzMyU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wubDExIHtcbiAgICB3aWR0aDogOTEuNjY2NjY2NjY2NyU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wubDEyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbDEge1xuICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLWwxIHtcbiAgICByaWdodDogOC4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wucHVzaC1sMSB7XG4gICAgbGVmdDogOC4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LWwyIHtcbiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbDIge1xuICAgIHJpZ2h0OiAxNi42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVzaC1sMiB7XG4gICAgbGVmdDogMTYuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1sMyB7XG4gICAgbWFyZ2luLWxlZnQ6IDI1JTtcbiAgfVxuICAucm93IC5jb2wucHVsbC1sMyB7XG4gICAgcmlnaHQ6IDI1JTtcbiAgfVxuICAucm93IC5jb2wucHVzaC1sMyB7XG4gICAgbGVmdDogMjUlO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbDQge1xuICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wucHVsbC1sNCB7XG4gICAgcmlnaHQ6IDMzLjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLWw0IHtcbiAgICBsZWZ0OiAzMy4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LWw1IHtcbiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbDUge1xuICAgIHJpZ2h0OiA0MS42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVzaC1sNSB7XG4gICAgbGVmdDogNDEuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1sNiB7XG4gICAgbWFyZ2luLWxlZnQ6IDUwJTtcbiAgfVxuICAucm93IC5jb2wucHVsbC1sNiB7XG4gICAgcmlnaHQ6IDUwJTtcbiAgfVxuICAucm93IC5jb2wucHVzaC1sNiB7XG4gICAgbGVmdDogNTAlO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbDcge1xuICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wucHVsbC1sNyB7XG4gICAgcmlnaHQ6IDU4LjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLWw3IHtcbiAgICBsZWZ0OiA1OC4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LWw4IHtcbiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbDgge1xuICAgIHJpZ2h0OiA2Ni42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVzaC1sOCB7XG4gICAgbGVmdDogNjYuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1sOSB7XG4gICAgbWFyZ2luLWxlZnQ6IDc1JTtcbiAgfVxuICAucm93IC5jb2wucHVsbC1sOSB7XG4gICAgcmlnaHQ6IDc1JTtcbiAgfVxuICAucm93IC5jb2wucHVzaC1sOSB7XG4gICAgbGVmdDogNzUlO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQtbDEwIHtcbiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwtbDEwIHtcbiAgICByaWdodDogODMuMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbDEwIHtcbiAgICBsZWZ0OiA4My4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LWwxMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLWwxMSB7XG4gICAgcmlnaHQ6IDkxLjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLWwxMSB7XG4gICAgbGVmdDogOTEuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC1sMTIge1xuICAgIG1hcmdpbi1sZWZ0OiAxMDAlO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLWwxMiB7XG4gICAgcmlnaHQ6IDEwMCU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gtbDEyIHtcbiAgICBsZWZ0OiAxMDAlO1xuICB9XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiAxMjAxcHgpIHtcbiAgLnJvdyAuY29sLnhsMSB7XG4gICAgd2lkdGg6IDguMzMzMzMzMzMzMyU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wueGwyIHtcbiAgICB3aWR0aDogMTYuNjY2NjY2NjY2NyU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wueGwzIHtcbiAgICB3aWR0aDogMjUlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLnhsNCB7XG4gICAgd2lkdGg6IDMzLjMzMzMzMzMzMzMlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLnhsNSB7XG4gICAgd2lkdGg6IDQxLjY2NjY2NjY2NjclO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLnhsNiB7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC54bDcge1xuICAgIHdpZHRoOiA1OC4zMzMzMzMzMzMzJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC54bDgge1xuICAgIHdpZHRoOiA2Ni42NjY2NjY2NjY3JTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC54bDkge1xuICAgIHdpZHRoOiA3NSU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxuICAucm93IC5jb2wueGwxMCB7XG4gICAgd2lkdGg6IDgzLjMzMzMzMzMzMzMlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbiAgLnJvdyAuY29sLnhsMTEge1xuICAgIHdpZHRoOiA5MS42NjY2NjY2NjY3JTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC54bDEyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQteGwxIHtcbiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wucHVsbC14bDEge1xuICAgIHJpZ2h0OiA4LjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLXhsMSB7XG4gICAgbGVmdDogOC4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LXhsMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLXhsMiB7XG4gICAgcmlnaHQ6IDE2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLXhsMiB7XG4gICAgbGVmdDogMTYuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC14bDMge1xuICAgIG1hcmdpbi1sZWZ0OiAyNSU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwteGwzIHtcbiAgICByaWdodDogMjUlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLXhsMyB7XG4gICAgbGVmdDogMjUlO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQteGw0IHtcbiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwteGw0IHtcbiAgICByaWdodDogMzMuMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gteGw0IHtcbiAgICBsZWZ0OiAzMy4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LXhsNSB7XG4gICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLXhsNSB7XG4gICAgcmlnaHQ6IDQxLjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLXhsNSB7XG4gICAgbGVmdDogNDEuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC14bDYge1xuICAgIG1hcmdpbi1sZWZ0OiA1MCU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwteGw2IHtcbiAgICByaWdodDogNTAlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLXhsNiB7XG4gICAgbGVmdDogNTAlO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQteGw3IHtcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwteGw3IHtcbiAgICByaWdodDogNTguMzMzMzMzMzMzMyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gteGw3IHtcbiAgICBsZWZ0OiA1OC4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LXhsOCB7XG4gICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLXhsOCB7XG4gICAgcmlnaHQ6IDY2LjY2NjY2NjY2NjclO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLXhsOCB7XG4gICAgbGVmdDogNjYuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC14bDkge1xuICAgIG1hcmdpbi1sZWZ0OiA3NSU7XG4gIH1cbiAgLnJvdyAuY29sLnB1bGwteGw5IHtcbiAgICByaWdodDogNzUlO1xuICB9XG4gIC5yb3cgLmNvbC5wdXNoLXhsOSB7XG4gICAgbGVmdDogNzUlO1xuICB9XG4gIC5yb3cgLmNvbC5vZmZzZXQteGwxMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlO1xuICB9XG4gIC5yb3cgLmNvbC5wdWxsLXhsMTAge1xuICAgIHJpZ2h0OiA4My4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wucHVzaC14bDEwIHtcbiAgICBsZWZ0OiA4My4zMzMzMzMzMzMzJTtcbiAgfVxuICAucm93IC5jb2wub2Zmc2V0LXhsMTEge1xuICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NjY3JTtcbiAgfVxuICAucm93IC5jb2wucHVsbC14bDExIHtcbiAgICByaWdodDogOTEuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLnB1c2gteGwxMSB7XG4gICAgbGVmdDogOTEuNjY2NjY2NjY2NyU7XG4gIH1cbiAgLnJvdyAuY29sLm9mZnNldC14bDEyIHtcbiAgICBtYXJnaW4tbGVmdDogMTAwJTtcbiAgfVxuICAucm93IC5jb2wucHVsbC14bDEyIHtcbiAgICByaWdodDogMTAwJTtcbiAgfVxuICAucm93IC5jb2wucHVzaC14bDEyIHtcbiAgICBsZWZ0OiAxMDAlO1xuICB9XG59XG5cbi5zaWRlbmF2IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB3aWR0aDogMzAwcHg7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgbWFyZ2luOiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGhlaWdodDogY2FsYygxMDAlICsgNjBweCk7XG4gIGhlaWdodDogLW1vei1jYWxjKDEwMCUpO1xuICBwYWRkaW5nLWJvdHRvbTogNjBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgei1pbmRleDogOTk5O1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTA1JSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxcztcbn1cbi5zaWRlbmF2LnJpZ2h0LWFsaWduZWQge1xuICByaWdodDogMDtcbiAgbGVmdDogYXV0bztcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xufVxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlIHtcbiAgbWFyZ2luOiAwO1xufVxuLnNpZGVuYXYgbGkge1xuICBmbG9hdDogbm9uZTtcbn1cbi5zaWRlbmF2IGxpIC5pY29uU2lkZUxpbmsge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLnNpZGVuYXYgbGkgLmljb25TaWRlTGluayBzdmcge1xuICBzdHJva2U6IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgd2lkdGg6IDMwcHg7XG59XG4uc2lkZW5hdiBsaS5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xufVxuLnNpZGVuYXYgbGkuYWN0aXZlIHN2ZyB7XG4gIHN0cm9rZTogd2hpdGUgIWltcG9ydGFudDtcbiAgd2lkdGg6IDMwcHg7XG59XG4uc2lkZW5hdiBsaS5sYXN0IHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiBjYWxjKDEwMCUgLSA0NXB4IC0gMzVweCk7XG59XG4uc2lkZW5hdiBsaSA+IGEge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNzAwO1xuICBoZWlnaHQ6IDQ1cHg7XG4gIGxpbmUtaGVpZ2h0OiA0NXB4O1xuICBwYWRkaW5nOiAwIDMwcHg7XG59XG4uc2lkZW5hdiBsaSA+IGE6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xufVxuLnNpZGVuYXYgbGkgPiBhLmJ0biwgLnNpZGVuYXYgbGkgPiBhLmJ0bi1zbWFsbCwgLnNpZGVuYXYgbGkgPiBhLmJ0bi1sYXJnZSwgLnNpZGVuYXYgbGkgPiBhLmJ0bi1mbGF0LCAuc2lkZW5hdiBsaSA+IGEuYnRuLWZsb2F0aW5nIHtcbiAgbWFyZ2luOiAxMHB4IDE1cHg7XG59XG4uc2lkZW5hdiBsaSA+IGEuYnRuLCAuc2lkZW5hdiBsaSA+IGEuYnRuLXNtYWxsLCAuc2lkZW5hdiBsaSA+IGEuYnRuLWxhcmdlLCAuc2lkZW5hdiBsaSA+IGEuYnRuLWZsb2F0aW5nIHtcbiAgY29sb3I6ICNmZmY7XG59XG4uc2lkZW5hdiBsaSA+IGEuYnRuLWZsYXQge1xuICBjb2xvcjogIzM0MzQzNDtcbn1cbi5zaWRlbmF2IGxpID4gYS5idG46aG92ZXIsIC5zaWRlbmF2IGxpID4gYS5idG4tc21hbGw6aG92ZXIsIC5zaWRlbmF2IGxpID4gYS5idG4tbGFyZ2U6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDE0MTQxO1xufVxuLnNpZGVuYXYgbGkgPiBhLmJ0bi1mbG9hdGluZzpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDM0MzQ7XG59XG4uc2lkZW5hdiBsaSA+IGEgPiBpLCAuc2lkZW5hdiBsaSA+IGEgPiBbY2xhc3NePW1kaS1dLFxuLnNpZGVuYXYgbGkgPiBhIGxpID4gYSA+IFtjbGFzcyo9bWRpLV0sIC5zaWRlbmF2IGxpID4gYSA+IGkucy1pY29uIHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIGhlaWdodDogNDVweDtcbiAgbGluZS1oZWlnaHQ6IDQ1cHg7XG4gIG1hcmdpbjogMCAzMHB4IDAgMDtcbiAgd2lkdGg6IDIyLjVweDtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XG59XG4uc2lkZW5hdiAuZGl2aWRlciB7XG4gIG1hcmdpbjogNy41cHggMCAwIDA7XG59XG4uc2lkZW5hdiAuc3ViaGVhZGVyIHtcbiAgY3Vyc29yOiBpbml0aWFsO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDQ1cHg7XG59XG4uc2lkZW5hdiAuc3ViaGVhZGVyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uc2lkZW5hdiAudXNlci12aWV3IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiAzMHB4IDMwcHggMDtcbiAgbWFyZ2luLWJvdHRvbTogNy41cHg7XG59XG4uc2lkZW5hdiAudXNlci12aWV3ID4gYSB7XG4gIGhlaWdodDogYXV0bztcbiAgcGFkZGluZzogMDtcbn1cbi5zaWRlbmF2IC51c2VyLXZpZXcgPiBhOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uc2lkZW5hdiAudXNlci12aWV3IC5iYWNrZ3JvdW5kIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IC0xO1xufVxuLnNpZGVuYXYgLnVzZXItdmlldyAuY2lyY2xlLFxuLnNpZGVuYXYgLnVzZXItdmlldyAubmFtZSxcbi5zaWRlbmF2IC51c2VyLXZpZXcgLmVtYWlsIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uc2lkZW5hdiAudXNlci12aWV3IC5jaXJjbGUge1xuICBoZWlnaHQ6IDY0cHg7XG4gIHdpZHRoOiA2NHB4O1xufVxuLnNpZGVuYXYgLnVzZXItdmlldyAubmFtZSxcbi5zaWRlbmF2IC51c2VyLXZpZXcgLmVtYWlsIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjIuNXB4O1xufVxuLnNpZGVuYXYgLnVzZXItdmlldyAubmFtZSB7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG4uc2lkZW5hdiAudXNlci12aWV3IC5lbWFpbCB7XG4gIHBhZGRpbmctYm90dG9tOiAxNnB4O1xuICBmb250LXdlaWdodDogNDAwO1xufVxuXG4uZHJhZy10YXJnZXQge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMHB4O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgei1pbmRleDogOTk4O1xufVxuLmRyYWctdGFyZ2V0LnJpZ2h0LWFsaWduZWQge1xuICByaWdodDogMDtcbn1cblxuLnNpZGVuYXYuc2lkZW5hdi1maXhlZCB7XG4gIGxlZnQ6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgcG9zaXRpb246IGZpeGVkO1xufVxuLnNpZGVuYXYuc2lkZW5hdi1maXhlZC5yaWdodC1hbGlnbmVkIHtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IGF1dG87XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6IDk5MnB4KSB7XG4gIC5zaWRlbmF2LnNpZGVuYXYtZml4ZWQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTA1JSk7XG4gIH1cbiAgLnNpZGVuYXYuc2lkZW5hdi1maXhlZC5yaWdodC1hbGlnbmVkIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTA1JSk7XG4gIH1cbiAgLnNpZGVuYXYgPiBhIHtcbiAgICBwYWRkaW5nOiAwIDE1cHg7XG4gIH1cbiAgLnNpZGVuYXYgLnVzZXItdmlldyB7XG4gICAgcGFkZGluZzogMTVweCAxNXB4IDA7XG4gIH1cbn1cbi5zaWRlbmF2IC5jb2xsYXBzaWJsZS1ib2R5ID4gdWw6bm90KC5jb2xsYXBzaWJsZSkgPiBsaS5hY3RpdmUsXG4uc2lkZW5hdi5zaWRlbmF2LWZpeGVkIC5jb2xsYXBzaWJsZS1ib2R5ID4gdWw6bm90KC5jb2xsYXBzaWJsZSkgPiBsaS5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBjYWY5O1xufVxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLWJvZHkgPiB1bDpub3QoLmNvbGxhcHNpYmxlKSA+IGxpLmFjdGl2ZSBhLFxuLnNpZGVuYXYuc2lkZW5hdi1maXhlZCAuY29sbGFwc2libGUtYm9keSA+IHVsOm5vdCguY29sbGFwc2libGUpID4gbGkuYWN0aXZlIGEge1xuICBjb2xvcjogI2ZmZjtcbn1cblxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLWJvZHkge1xuICBwYWRkaW5nOiAwO1xufVxuXG4uc2lkZW5hdi1vdmVybGF5IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBvcGFjaXR5OiAwO1xuICBoZWlnaHQ6IDEyMHZoO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIHotaW5kZXg6IDk5NztcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLndpdGgtc2lkZS1uYXYtb3BlbiB7XG4gIHBhZGRpbmctbGVmdDogMzAwcHg7XG4gIHRyYW5zaXRpb246IHBhZGRpbmcgMXM7XG59XG5cbi5idG4sIC5idG4tc21hbGwsIC5idG4tbGFyZ2UsXG4uYnRuLWZsYXQge1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDM2cHg7XG4gIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICBwYWRkaW5nOiAwIDE2cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5idG4uZGlzYWJsZWQsXG4uYnRuLWZsb2F0aW5nLmRpc2FibGVkLFxuLmJ0bi1sYXJnZS5kaXNhYmxlZCxcbi5idG4tc21hbGwuZGlzYWJsZWQsXG4uYnRuLWZsYXQuZGlzYWJsZWQsXG4uYnRuOmRpc2FibGVkLFxuLmJ0bi1mbG9hdGluZzpkaXNhYmxlZCxcbi5idG4tbGFyZ2U6ZGlzYWJsZWQsXG4uYnRuLXNtYWxsOmRpc2FibGVkLFxuLmJ0bi1mbGF0OmRpc2FibGVkLFxuLmJ0bltkaXNhYmxlZF0sXG4uYnRuLWZsb2F0aW5nW2Rpc2FibGVkXSxcbi5idG4tbGFyZ2VbZGlzYWJsZWRdLFxuLmJ0bi1zbWFsbFtkaXNhYmxlZF0sXG4uYnRuLWZsYXRbZGlzYWJsZWRdIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNERkRGREYgIWltcG9ydGFudDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgY29sb3I6ICM5RjlGOUYgIWltcG9ydGFudDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuLmJ0bi5kaXNhYmxlZDpob3Zlcixcbi5idG4tZmxvYXRpbmcuZGlzYWJsZWQ6aG92ZXIsXG4uYnRuLWxhcmdlLmRpc2FibGVkOmhvdmVyLFxuLmJ0bi1zbWFsbC5kaXNhYmxlZDpob3Zlcixcbi5idG4tZmxhdC5kaXNhYmxlZDpob3Zlcixcbi5idG46ZGlzYWJsZWQ6aG92ZXIsXG4uYnRuLWZsb2F0aW5nOmRpc2FibGVkOmhvdmVyLFxuLmJ0bi1sYXJnZTpkaXNhYmxlZDpob3Zlcixcbi5idG4tc21hbGw6ZGlzYWJsZWQ6aG92ZXIsXG4uYnRuLWZsYXQ6ZGlzYWJsZWQ6aG92ZXIsXG4uYnRuW2Rpc2FibGVkXTpob3Zlcixcbi5idG4tZmxvYXRpbmdbZGlzYWJsZWRdOmhvdmVyLFxuLmJ0bi1sYXJnZVtkaXNhYmxlZF06aG92ZXIsXG4uYnRuLXNtYWxsW2Rpc2FibGVkXTpob3Zlcixcbi5idG4tZmxhdFtkaXNhYmxlZF06aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjREZERkRGICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjOUY5RjlGICFpbXBvcnRhbnQ7XG59XG5cbi5idG4sXG4uYnRuLXNtYWxsLFxuLmJ0bi1sYXJnZSxcbi5idG4tZmxvYXRpbmcsXG4uYnRuLWZsYXQge1xuICBmb250LXNpemU6IDE0cHg7XG4gIG91dGxpbmU6IDA7XG59XG4uYnRuIGksXG4uYnRuLWZsb2F0aW5nIGksXG4uYnRuLWxhcmdlIGksXG4uYnRuLXNtYWxsIGksXG4uYnRuLWZsYXQgaSB7XG4gIGZvbnQtc2l6ZTogMS4zcmVtO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbn1cblxuLmJ0bjpmb2N1cywgLmJ0bi1zbWFsbDpmb2N1cywgLmJ0bi1sYXJnZTpmb2N1cyxcbi5idG4tZmxvYXRpbmc6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWIxYjFiO1xufVxuXG4uYnRuLCAuYnRuLXNtYWxsLCAuYnRuLWxhcmdlIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0MzQzNDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlLW91dDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmJ0bjpob3ZlciwgLmJ0bi1zbWFsbDpob3ZlciwgLmJ0bi1sYXJnZTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MTQxNDE7XG59XG5cbi5idG4tZmxvYXRpbmcge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGNvbG9yOiAjZmZmO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHotaW5kZXg6IDE7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBwYWRkaW5nOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmJ0bi1mbG9hdGluZzpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XG59XG4uYnRuLWZsb2F0aW5nOmJlZm9yZSB7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG4uYnRuLWZsb2F0aW5nLmJ0bi1sYXJnZSB7XG4gIHdpZHRoOiA1NnB4O1xuICBoZWlnaHQ6IDU2cHg7XG4gIHBhZGRpbmc6IDA7XG59XG4uYnRuLWZsb2F0aW5nLmJ0bi1sYXJnZS5oYWxmd2F5LWZhYiB7XG4gIGJvdHRvbTogMjhweDtcbn1cbi5idG4tZmxvYXRpbmcuYnRuLWxhcmdlIGkge1xuICBsaW5lLWhlaWdodDogNTZweDtcbn1cbi5idG4tZmxvYXRpbmcuYnRuLXNtYWxsIHtcbiAgd2lkdGg6IDMyLjRweDtcbiAgaGVpZ2h0OiAzMi40cHg7XG59XG4uYnRuLWZsb2F0aW5nLmJ0bi1zbWFsbC5oYWxmd2F5LWZhYiB7XG4gIGJvdHRvbTogMTYuMnB4O1xufVxuLmJ0bi1mbG9hdGluZy5idG4tc21hbGwgaSB7XG4gIGxpbmUtaGVpZ2h0OiAzMi40cHg7XG59XG4uYnRuLWZsb2F0aW5nLmhhbGZ3YXktZmFiIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMjRweDtcbiAgYm90dG9tOiAyMHB4O1xufVxuLmJ0bi1mbG9hdGluZy5oYWxmd2F5LWZhYi5sZWZ0IHtcbiAgcmlnaHQ6IGF1dG87XG4gIGxlZnQ6IDI0cHg7XG59XG4uYnRuLWZsb2F0aW5nIGkge1xuICB3aWR0aDogaW5oZXJpdDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXNpemU6IDEuNnJlbTtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG59XG5cbmJ1dHRvbi5idG4tZmxvYXRpbmcge1xuICBib3JkZXI6IG5vbmU7XG59XG5cbi5maXhlZC1hY3Rpb24tYnRuIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICByaWdodDogMjNweDtcbiAgYm90dG9tOiAyM3B4O1xuICBwYWRkaW5nLXRvcDogMTVweDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgei1pbmRleDogOTk3O1xufVxuLmZpeGVkLWFjdGlvbi1idG4uYWN0aXZlIHVsIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbn1cbi5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1sZWZ0LCAuZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tcmlnaHQge1xuICBwYWRkaW5nOiAwIDAgMCAxNXB4O1xufVxuLmZpeGVkLWFjdGlvbi1idG4uZGlyZWN0aW9uLWxlZnQgdWwsIC5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1yaWdodCB1bCB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICByaWdodDogNjRweDtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBsZWZ0OiBhdXRvO1xuICAvKndpZHRoIDEwMCUgb25seSBnb2VzIHRvIHdpZHRoIG9mIGJ1dHRvbiBjb250YWluZXIgKi9cbiAgd2lkdGg6IDUwMHB4O1xufVxuLmZpeGVkLWFjdGlvbi1idG4uZGlyZWN0aW9uLWxlZnQgdWwgbGksIC5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1yaWdodCB1bCBsaSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiA3LjVweCAxNXB4IDAgMDtcbn1cbi5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1yaWdodCB7XG4gIHBhZGRpbmc6IDAgMTVweCAwIDA7XG59XG4uZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tcmlnaHQgdWwge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBkaXJlY3Rpb246IHJ0bDtcbiAgbGVmdDogNjRweDtcbiAgcmlnaHQ6IGF1dG87XG59XG4uZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tcmlnaHQgdWwgbGkge1xuICBtYXJnaW46IDcuNXB4IDAgMCAxNXB4O1xufVxuLmZpeGVkLWFjdGlvbi1idG4uZGlyZWN0aW9uLWJvdHRvbSB7XG4gIHBhZGRpbmc6IDAgMCAxNXB4IDA7XG59XG4uZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tYm90dG9tIHVsIHtcbiAgdG9wOiA2NHB4O1xuICBib3R0b206IGF1dG87XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbn1cbi5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1ib3R0b20gdWwgbGkge1xuICBtYXJnaW46IDE1cHggMCAwIDA7XG59XG4uZml4ZWQtYWN0aW9uLWJ0bi50b29sYmFyIHtcbiAgcGFkZGluZzogMDtcbiAgaGVpZ2h0OiA1NnB4O1xufVxuLmZpeGVkLWFjdGlvbi1idG4udG9vbGJhci5hY3RpdmUgPiBhIGkge1xuICBvcGFjaXR5OiAwO1xufVxuLmZpeGVkLWFjdGlvbi1idG4udG9vbGJhciB1bCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB6LWluZGV4OiAxO1xufVxuLmZpeGVkLWFjdGlvbi1idG4udG9vbGJhciB1bCBsaSB7XG4gIGZsZXg6IDE7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHRyYW5zaXRpb246IG5vbmU7XG59XG4uZml4ZWQtYWN0aW9uLWJ0bi50b29sYmFyIHVsIGxpIGEge1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgY29sb3I6ICNmZmY7XG4gIGxpbmUtaGVpZ2h0OiA1NnB4O1xuICB6LWluZGV4OiAxO1xufVxuLmZpeGVkLWFjdGlvbi1idG4udG9vbGJhciB1bCBsaSBhIGkge1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbn1cbi5maXhlZC1hY3Rpb24tYnRuIHVsIHtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDY0cHg7XG4gIG1hcmdpbjogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLmZpeGVkLWFjdGlvbi1idG4gdWwgbGkge1xuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xufVxuLmZpeGVkLWFjdGlvbi1idG4gdWwgYS5idG4tZmxvYXRpbmcge1xuICBvcGFjaXR5OiAwO1xufVxuLmZpeGVkLWFjdGlvbi1idG4gLmZhYi1iYWNrZHJvcCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAtMTtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB0cmFuc2Zvcm06IHNjYWxlKDApO1xufVxuXG4uYnRuLWZsYXQge1xuICBib3gtc2hhZG93OiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6ICMzNDM0MzQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xufVxuLmJ0bi1mbGF0OmZvY3VzLCAuYnRuLWZsYXQ6aG92ZXIge1xuICBib3gtc2hhZG93OiBub25lO1xufVxuLmJ0bi1mbGF0OmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuLmJ0bi1mbGF0LmRpc2FibGVkLCAuYnRuLWZsYXQuYnRuLWZsYXRbZGlzYWJsZWRdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgY29sb3I6ICNiM2IzYjMgIWltcG9ydGFudDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uYnRuLWxhcmdlIHtcbiAgaGVpZ2h0OiA1NHB4O1xuICBsaW5lLWhlaWdodDogNTRweDtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBwYWRkaW5nOiAwIDI4cHg7XG59XG4uYnRuLWxhcmdlIGkge1xuICBmb250LXNpemU6IDEuNnJlbTtcbn1cblxuLmJ0bi1zbWFsbCB7XG4gIGhlaWdodDogMzIuNHB4O1xuICBsaW5lLWhlaWdodDogMzIuNHB4O1xuICBmb250LXNpemU6IDEzcHg7XG59XG4uYnRuLXNtYWxsIGkge1xuICBmb250LXNpemU6IDEuMnJlbTtcbn1cblxuLmJ0bi1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uY29tbXVuVGFiSGVhZGVyLCAudGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMiAudGFiLWhlYWRlciwgLnRhYnMuYWN0aXZlVGFiLTIgLnRhYi1oZWFkZXItb3ZlcjEgLnRhYi1oZWFkZXIsIC50YWJzLmFjdGl2ZVRhYi0yIC50YWItaGVhZGVyLW92ZXIwIC50YWItaGVhZGVyLCAudGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMiAudGFiLWhlYWRlciwgLnRhYnMuYWN0aXZlVGFiLTEgLnRhYi1oZWFkZXItb3ZlcjEgLnRhYi1oZWFkZXIsIC50YWJzLmFjdGl2ZVRhYi0xIC50YWItaGVhZGVyLW92ZXIwIC50YWItaGVhZGVyLCAudGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMiAudGFiLWhlYWRlciwgLnRhYnMuYWN0aXZlVGFiLTAgLnRhYi1oZWFkZXItb3ZlcjEgLnRhYi1oZWFkZXIsIC50YWJzLmFjdGl2ZVRhYi0wIC50YWItaGVhZGVyLW92ZXIwIC50YWItaGVhZGVyIHtcbiAgaGVpZ2h0OiAxMDBweDtcbiAgcGFkZGluZzogNDBweDtcbn1cblxuLnRhYnMge1xuICBtaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSAxNTBweCk7XG4gIG1hcmdpbi10b3A6IDMwcHg7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogNDBweCAhaW1wb3J0YW50O1xufVxuLnRhYnMgLmlubmVycGFnZSB7XG4gIG1pbi1oZWlnaHQ6IDcwVkggIWltcG9ydGFudDtcbn1cbi50YWJzIC50YWJzLWhlYWRlci1vdmVybGF5IHtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAxMDBweDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0wIC50YWItaGVhZGVyLW92ZXIwIHtcbiAgZmxleDogMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgwYzRmZDtcbiAgYm9yZGVyLXJhZGl1czogNDBweCAwIDAgMDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0wIC50YWItaGVhZGVyLW92ZXIwIC50YWItaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NiZTdmZTtcbiAgYm9yZGVyLXJhZGl1czogNDBweCA0MHB4IDAgMDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0wIC50YWItaGVhZGVyLW92ZXIxIHtcbiAgZmxleDogMTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDAuMjV0dXJuLCAjY2JlN2ZlLCAjMzVhMmZiKTtcbiAgYm9yZGVyLXJhZGl1czogMCAwIDAgMDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0wIC50YWItaGVhZGVyLW92ZXIxIC50YWItaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgwYzRmZDtcbiAgYm9yZGVyLXJhZGl1czogMCA0MHB4IDAgNDBweDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0wIC50YWItaGVhZGVyLW92ZXIyIHtcbiAgZmxleDogMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgwYzRmZDtcbiAgYm9yZGVyLXJhZGl1czogMCA0MHB4IDAgMDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0wIC50YWItaGVhZGVyLW92ZXIyIC50YWItaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM1YTJmYjtcbiAgYm9yZGVyLXJhZGl1czogMCA0MHB4IDAgNDBweDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0xIC50YWItaGVhZGVyLW92ZXIwIHtcbiAgZmxleDogMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NiZTdmZTtcbiAgYm9yZGVyLXJhZGl1czogNDBweCAwIDAgMDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0xIC50YWItaGVhZGVyLW92ZXIwIC50YWItaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgwYzRmZDtcbiAgYm9yZGVyLXJhZGl1czogNDBweCAwIDQwcHggMDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0xIC50YWItaGVhZGVyLW92ZXIxIHtcbiAgZmxleDogMTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDAuMjV0dXJuLCAjODBjNGZkLCAjMzVhMmZiKTtcbiAgYm9yZGVyLXJhZGl1czogMCAwIDAgMDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0xIC50YWItaGVhZGVyLW92ZXIxIC50YWItaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NiZTdmZTtcbiAgYm9yZGVyLXJhZGl1czogNDBweCA0MHB4IDAgMDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0xIC50YWItaGVhZGVyLW92ZXIyIHtcbiAgZmxleDogMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NiZTdmZTtcbiAgYm9yZGVyLXJhZGl1czogMCA0MHB4IDAgMDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0xIC50YWItaGVhZGVyLW92ZXIyIC50YWItaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM1YTJmYjtcbiAgYm9yZGVyLXJhZGl1czogMCA0MHB4IDAgNDBweDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0yIC50YWItaGVhZGVyLW92ZXIwIHtcbiAgZmxleDogMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM1YTJmYjtcbiAgYm9yZGVyLXJhZGl1czogNDBweCAwIDAgMDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0yIC50YWItaGVhZGVyLW92ZXIwIC50YWItaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgwYzRmZDtcbiAgYm9yZGVyLXJhZGl1czogNDBweCAwIDQwcHggMDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0yIC50YWItaGVhZGVyLW92ZXIxIHtcbiAgZmxleDogMTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDAuMjV0dXJuLCAjODBjNGZkLCAjY2JlN2ZlKTtcbiAgYm9yZGVyLXJhZGl1czogMCAwIDAgMDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0yIC50YWItaGVhZGVyLW92ZXIxIC50YWItaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM1YTJmYjtcbiAgYm9yZGVyLXJhZGl1czogNDBweCAwIDQwcHggMDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0yIC50YWItaGVhZGVyLW92ZXIyIHtcbiAgZmxleDogMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM1YTJmYjtcbiAgYm9yZGVyLXJhZGl1czogMCA0MHB4IDAgMDtcbn1cbi50YWJzLmFjdGl2ZVRhYi0yIC50YWItaGVhZGVyLW92ZXIyIC50YWItaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NiZTdmZTtcbiAgYm9yZGVyLXJhZGl1czogNDBweCA0MHB4IDAgMDtcbn1cbi50YWJzIC50YWItY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmU3ZmU7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGJvcmRlci10b3A6IDA7XG4gIG1pbi1oZWlnaHQ6IDcwdmg7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCA0MHB4IDQwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAyMHB4O1xufVxuXG4ubG9hZGVyLW92ZXJsYXkge1xuICB6LWluZGV4OiA5OTk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgd2lkdGg6IDEwMHZ3O1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTAyLCAxMDAsIDEwMCwgMC42MDMpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cbi5sb2FkZXItb3ZlcmxheSAubG9hZGVyIHtcbiAgYm9yZGVyOiA3cHggc29saWQgI2YzZjNmMzsgLyogTGlnaHQgZ3JleSAqL1xuICBib3JkZXItdG9wOiA3cHggc29saWQgIzJlYTJjYzsgLyogQmx1ZSAqL1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHdpZHRoOiA3MHB4O1xuICBoZWlnaHQ6IDcwcHg7XG4gIGFuaW1hdGlvbjogc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7XG59XG4ubG9hZGVyLW92ZXJsYXkgLmxvYWRlci10ZXh0IHtcbiAgbWFyZ2luLXRvcDogMjBweDtcbiAgZm9udC1zaXplOiAyNXB4O1xuICBjb2xvcjogIzJlYTJjYztcbn1cbkBrZXlmcmFtZXMgc3BpbiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5cbi5jYXJkLXBhbmVsIHtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjI1cztcbiAgcGFkZGluZzogMjRweDtcbiAgbWFyZ2luOiAwLjMzMzMzMzMzMzNyZW0gMCAwLjY2NjY2NjY2NjdyZW0gMDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuXG4uY2FyZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luOiAwLjMzMzMzMzMzMzNyZW0gMCAwLjY2NjY2NjY2NjdyZW0gMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjI1cztcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xufVxuLmNhcmQgLmNhcmQtdGl0bGUge1xuICBmb250LXNpemU6IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG59XG4uY2FyZCAuY2FyZC10aXRsZS5hY3RpdmF0b3Ige1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uY2FyZC5zbWFsbCwgLmNhcmQubWVkaXVtLCAuY2FyZC5sYXJnZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5jYXJkLnNtYWxsIC5jYXJkLWltYWdlLCAuY2FyZC5tZWRpdW0gLmNhcmQtaW1hZ2UsIC5jYXJkLmxhcmdlIC5jYXJkLWltYWdlIHtcbiAgbWF4LWhlaWdodDogNjAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmNhcmQuc21hbGwgLmNhcmQtaW1hZ2UgKyAuY2FyZC1jb250ZW50LCAuY2FyZC5tZWRpdW0gLmNhcmQtaW1hZ2UgKyAuY2FyZC1jb250ZW50LCAuY2FyZC5sYXJnZSAuY2FyZC1pbWFnZSArIC5jYXJkLWNvbnRlbnQge1xuICBtYXgtaGVpZ2h0OiA0MCU7XG59XG4uY2FyZC5zbWFsbCAuY2FyZC1jb250ZW50LCAuY2FyZC5tZWRpdW0gLmNhcmQtY29udGVudCwgLmNhcmQubGFyZ2UgLmNhcmQtY29udGVudCB7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY2FyZC5zbWFsbCAuY2FyZC1hY3Rpb24sIC5jYXJkLm1lZGl1bSAuY2FyZC1hY3Rpb24sIC5jYXJkLmxhcmdlIC5jYXJkLWFjdGlvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbn1cbi5jYXJkLnNtYWxsIHtcbiAgaGVpZ2h0OiAzMDBweDtcbn1cbi5jYXJkLm1lZGl1bSB7XG4gIGhlaWdodDogNDAwcHg7XG59XG4uY2FyZC5sYXJnZSB7XG4gIGhlaWdodDogNTAwcHg7XG59XG4uY2FyZC5ob3Jpem9udGFsIHtcbiAgZGlzcGxheTogZmxleDtcbn1cbi5jYXJkLmhvcml6b250YWwuc21hbGwgLmNhcmQtaW1hZ2UsIC5jYXJkLmhvcml6b250YWwubWVkaXVtIC5jYXJkLWltYWdlLCAuY2FyZC5ob3Jpem9udGFsLmxhcmdlIC5jYXJkLWltYWdlIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXgtaGVpZ2h0OiBub25lO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cbi5jYXJkLmhvcml6b250YWwuc21hbGwgLmNhcmQtaW1hZ2UgaW1nLCAuY2FyZC5ob3Jpem9udGFsLm1lZGl1bSAuY2FyZC1pbWFnZSBpbWcsIC5jYXJkLmhvcml6b250YWwubGFyZ2UgLmNhcmQtaW1hZ2UgaW1nIHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuLmNhcmQuaG9yaXpvbnRhbCAuY2FyZC1pbWFnZSB7XG4gIG1heC13aWR0aDogNTAlO1xufVxuLmNhcmQuaG9yaXpvbnRhbCAuY2FyZC1pbWFnZSBpbWcge1xuICBib3JkZXItcmFkaXVzOiAycHggMCAwIDJweDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICB3aWR0aDogYXV0bztcbn1cbi5jYXJkLmhvcml6b250YWwgLmNhcmQtc3RhY2tlZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZsZXg6IDE7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5jYXJkLmhvcml6b250YWwgLmNhcmQtc3RhY2tlZCAuY2FyZC1jb250ZW50IHtcbiAgZmxleC1ncm93OiAxO1xufVxuLmNhcmQuc3RpY2t5LWFjdGlvbiAuY2FyZC1hY3Rpb24ge1xuICB6LWluZGV4OiAyO1xufVxuLmNhcmQuc3RpY2t5LWFjdGlvbiAuY2FyZC1yZXZlYWwge1xuICB6LWluZGV4OiAxO1xuICBwYWRkaW5nLWJvdHRvbTogNjRweDtcbn1cbi5jYXJkIC5jYXJkLWltYWdlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmNhcmQgLmNhcmQtaW1hZ2UgaW1nIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGJvcmRlci1yYWRpdXM6IDJweCAycHggMCAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDEwMCU7XG59XG4uY2FyZCAuY2FyZC1pbWFnZSAuY2FyZC10aXRsZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAyNHB4O1xufVxuLmNhcmQgLmNhcmQtY29udGVudCB7XG4gIHBhZGRpbmc6IDI0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCAycHggMnB4O1xufVxuLmNhcmQgLmNhcmQtY29udGVudCBwIHtcbiAgbWFyZ2luOiAwO1xufVxuLmNhcmQgLmNhcmQtY29udGVudCAuY2FyZC10aXRsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBsaW5lLWhlaWdodDogMzJweDtcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLmNhcmQgLmNhcmQtY29udGVudCAuY2FyZC10aXRsZSBpIHtcbiAgbGluZS1oZWlnaHQ6IDMycHg7XG59XG4uY2FyZCAuY2FyZC1hY3Rpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgxNjAsIDE2MCwgMTYwLCAwLjIpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IDE2cHggMjRweDtcbn1cbi5jYXJkIC5jYXJkLWFjdGlvbjpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLXJhZGl1czogMCAwIDJweCAycHg7XG59XG4uY2FyZCAuY2FyZC1hY3Rpb24gYTpub3QoLmJ0bik6bm90KC5idG4tbGFyZ2UpOm5vdCguYnRuLXNtYWxsKTpub3QoLmJ0bi1sYXJnZSk6bm90KC5idG4tZmxvYXRpbmcpIHtcbiAgY29sb3I6ICNmZmFiNDA7XG4gIG1hcmdpbi1yaWdodDogMjRweDtcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4zcyBlYXNlO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuLmNhcmQgLmNhcmQtYWN0aW9uIGE6bm90KC5idG4pOm5vdCguYnRuLWxhcmdlKTpub3QoLmJ0bi1zbWFsbCk6bm90KC5idG4tbGFyZ2UpOm5vdCguYnRuLWZsb2F0aW5nKTpob3ZlciB7XG4gIGNvbG9yOiAjZmZkOGE2O1xufVxuLmNhcmQgLmNhcmQtcmV2ZWFsIHtcbiAgcGFkZGluZzogMjRweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgbGVmdDogMDtcbiAgdG9wOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6IDM7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uY2FyZCAuY2FyZC1yZXZlYWwgLmNhcmQtdGl0bGUge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKlxuICAgIEBsaWNlbnNlXG4gICAgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0XG4gICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHRcbiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHRcbiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzb1xuICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0XG4gKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qIFNUWUxFUyBGT1IgVEhFIFNQSU5ORVIgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qXG4gKiBDb25zdGFudHM6XG4gKiAgICAgIFNUUk9LRVdJRFRIID0gM3B4XG4gKiAgICAgIEFSQ1NJWkUgICAgID0gMjcwIGRlZ3JlZXMgKGFtb3VudCBvZiBjaXJjbGUgdGhlIGFyYyB0YWtlcyB1cClcbiAqICAgICAgQVJDVElNRSAgICAgPSAxMzMzbXMgKHRpbWUgaXQgdGFrZXMgdG8gZXhwYW5kIGFuZCBjb250cmFjdCBhcmMpXG4gKiAgICAgIEFSQ1NUQVJUUk9UID0gMjE2IGRlZ3JlZXMgKGhvdyBtdWNoIHRoZSBzdGFydCBsb2NhdGlvbiBvZiB0aGUgYXJjXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIHJvdGF0ZSBlYWNoIHRpbWUsIDIxNiBnaXZlcyB1cyBhXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSBwb2ludGVkIHN0YXIgc2hhcGUgKGl0J3MgMzYwLzUgKiAzKS5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSA3IHBvaW50ZWQgc3Rhciwgd2UgbWlnaHQgZG9cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNjAvNyAqIDMgPSAxNTQuMjg2KVxuICogICAgICBDT05UQUlORVJXSURUSCA9IDI4cHhcbiAqICAgICAgU0hSSU5LX1RJTUUgPSA0MDBtc1xuICovXG4ucHJlbG9hZGVyLXdyYXBwZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDUwcHg7XG4gIGhlaWdodDogNTBweDtcbn1cbi5wcmVsb2FkZXItd3JhcHBlci5zbWFsbCB7XG4gIHdpZHRoOiAzNnB4O1xuICBoZWlnaHQ6IDM2cHg7XG59XG4ucHJlbG9hZGVyLXdyYXBwZXIuYmlnIHtcbiAgd2lkdGg6IDY0cHg7XG4gIGhlaWdodDogNjRweDtcbn1cbi5wcmVsb2FkZXItd3JhcHBlci5hY3RpdmUge1xuICAvKiBkdXJhdGlvbjogMzYwICogQVJDVElNRSAvIChBUkNTVEFSVFJPVCArICgzNjAtQVJDU0laRSkpICovXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIDE1NjhtcyBsaW5lYXIgaW5maW5pdGU7XG4gIGFuaW1hdGlvbjogY29udGFpbmVyLXJvdGF0ZSAxNTY4bXMgbGluZWFyIGluZmluaXRlO1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgY29udGFpbmVyLXJvdGF0ZSB7XG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cbkBrZXlmcmFtZXMgY29udGFpbmVyLXJvdGF0ZSB7XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG4uc3Bpbm5lci1sYXllciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3BhY2l0eTogMDtcbiAgYm9yZGVyLWNvbG9yOiAjMjZhNjlhO1xufVxuXG4uc3Bpbm5lci1ibHVlLFxuLnNwaW5uZXItYmx1ZS1vbmx5IHtcbiAgYm9yZGVyLWNvbG9yOiAjNDI4NWY0O1xufVxuXG4uc3Bpbm5lci1yZWQsXG4uc3Bpbm5lci1yZWQtb25seSB7XG4gIGJvcmRlci1jb2xvcjogI2RiNDQzNztcbn1cblxuLnNwaW5uZXIteWVsbG93LFxuLnNwaW5uZXIteWVsbG93LW9ubHkge1xuICBib3JkZXItY29sb3I6ICNmNGI0MDA7XG59XG5cbi5zcGlubmVyLWdyZWVuLFxuLnNwaW5uZXItZ3JlZW4tb25seSB7XG4gIGJvcmRlci1jb2xvcjogIzBmOWQ1ODtcbn1cblxuLyoqXG4gKiBJTVBPUlRBTlQgTk9URSBBQk9VVCBDU1MgQU5JTUFUSU9OIFBST1BFUlRJRVMgKGtlYW51bGVlKTpcbiAqXG4gKiBpT1MgU2FmYXJpICh0ZXN0ZWQgb24gaU9TIDguMSkgZG9lcyBub3QgaGFuZGxlIGFuaW1hdGlvbi1kZWxheSB2ZXJ5IHdlbGwgLSBpdCBkb2Vzbid0XG4gKiBndWFyYW50ZWUgdGhhdCB0aGUgYW5pbWF0aW9uIHdpbGwgc3RhcnQgX2V4YWN0bHlfIGFmdGVyIHRoYXQgdmFsdWUuIFNvIHdlIGF2b2lkIHVzaW5nXG4gKiBhbmltYXRpb24tZGVsYXkgYW5kIGluc3RlYWQgc2V0IGN1c3RvbSBrZXlmcmFtZXMgZm9yIGVhY2ggY29sb3IgKGFzIHJlZHVuZGFudCBhcyBpdFxuICogc2VlbXMpLlxuICpcbiAqIFdlIHdyaXRlIG91dCBlYWNoIGFuaW1hdGlvbiBpbiBmdWxsIChpbnN0ZWFkIG9mIHNlcGFyYXRpbmcgYW5pbWF0aW9uLW5hbWUsXG4gKiBhbmltYXRpb24tZHVyYXRpb24sIGV0Yy4pIGJlY2F1c2UgdW5kZXIgdGhlIHBvbHlmaWxsLCBTYWZhcmkgZG9lcyBub3QgcmVjb2duaXplIHRob3NlXG4gKiBzcGVjaWZpYyBwcm9wZXJ0aWVzIHByb3Blcmx5LCB0cmVhdHMgdGhlbSBhcyAtd2Via2l0LWFuaW1hdGlvbiwgYW5kIG92ZXJyaWRlcyB0aGVcbiAqIG90aGVyIGFuaW1hdGlvbiBydWxlcy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9Qb2x5bWVyL3BsYXRmb3JtL2lzc3Vlcy81My5cbiAqL1xuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLWJsdWUge1xuICAvKiBkdXJhdGlvbnM6IDQgKiBBUkNUSU1FICovXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgYmx1ZS1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xuICBhbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCBibHVlLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XG59XG5cbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIuc3Bpbm5lci1yZWQge1xuICAvKiBkdXJhdGlvbnM6IDQgKiBBUkNUSU1FICovXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgcmVkLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XG4gIGFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIHJlZC1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xufVxuXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXIteWVsbG93IHtcbiAgLyogZHVyYXRpb25zOiA0ICogQVJDVElNRSAqL1xuICAtd2Via2l0LWFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIHllbGxvdy1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xuICBhbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCB5ZWxsb3ctZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcbn1cblxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLWdyZWVuIHtcbiAgLyogZHVyYXRpb25zOiA0ICogQVJDVElNRSAqL1xuICAtd2Via2l0LWFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIGdyZWVuLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XG4gIGFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIGdyZWVuLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XG59XG5cbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIsXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXItYmx1ZS1vbmx5LFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLXJlZC1vbmx5LFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLXllbGxvdy1vbmx5LFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLWdyZWVuLW9ubHkge1xuICAvKiBkdXJhdGlvbnM6IDQgKiBBUkNUSU1FICovXG4gIG9wYWNpdHk6IDE7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcbiAgYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIGZpbGwtdW5maWxsLXJvdGF0ZSB7XG4gIDEyLjUlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEzNWRlZyk7XG4gIH0gLyogMC41ICogQVJDU0laRSAqL1xuICAyNSUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTtcbiAgfSAvKiAxICAgKiBBUkNTSVpFICovXG4gIDM3LjUlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQwNWRlZyk7XG4gIH0gLyogMS41ICogQVJDU0laRSAqL1xuICA1MCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNTQwZGVnKTtcbiAgfSAvKiAyICAgKiBBUkNTSVpFICovXG4gIDYyLjUlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDY3NWRlZyk7XG4gIH0gLyogMi41ICogQVJDU0laRSAqL1xuICA3NSUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoODEwZGVnKTtcbiAgfSAvKiAzICAgKiBBUkNTSVpFICovXG4gIDg3LjUlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDk0NWRlZyk7XG4gIH0gLyogMy41ICogQVJDU0laRSAqL1xuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMDgwZGVnKTtcbiAgfSAvKiA0ICAgKiBBUkNTSVpFICovXG59XG5Aa2V5ZnJhbWVzIGZpbGwtdW5maWxsLXJvdGF0ZSB7XG4gIDEyLjUlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpO1xuICB9IC8qIDAuNSAqIEFSQ1NJWkUgKi9cbiAgMjUlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpO1xuICB9IC8qIDEgICAqIEFSQ1NJWkUgKi9cbiAgMzcuNSUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDQwNWRlZyk7XG4gIH0gLyogMS41ICogQVJDU0laRSAqL1xuICA1MCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDU0MGRlZyk7XG4gIH0gLyogMiAgICogQVJDU0laRSAqL1xuICA2Mi41JSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNjc1ZGVnKTtcbiAgfSAvKiAyLjUgKiBBUkNTSVpFICovXG4gIDc1JSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoODEwZGVnKTtcbiAgfSAvKiAzICAgKiBBUkNTSVpFICovXG4gIDg3LjUlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5NDVkZWcpO1xuICB9IC8qIDMuNSAqIEFSQ1NJWkUgKi9cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDEwODBkZWcpO1xuICB9IC8qIDQgICAqIEFSQ1NJWkUgKi9cbn1cbkAtd2Via2l0LWtleWZyYW1lcyBibHVlLWZhZGUtaW4tb3V0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICAyNSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgMjYlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDg5JSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICA5MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuQGtleWZyYW1lcyBibHVlLWZhZGUtaW4tb3V0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICAyNSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgMjYlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDg5JSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICA5MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuQC13ZWJraXQta2V5ZnJhbWVzIHJlZC1mYWRlLWluLW91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgMTUlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDI1JSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICA1MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgNTElIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5Aa2V5ZnJhbWVzIHJlZC1mYWRlLWluLW91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgMTUlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDI1JSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICA1MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgNTElIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5ALXdlYmtpdC1rZXlmcmFtZXMgeWVsbG93LWZhZGUtaW4tb3V0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICA0MCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDc1JSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICA3NiUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cbkBrZXlmcmFtZXMgeWVsbG93LWZhZGUtaW4tb3V0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICA0MCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDc1JSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICA3NiUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cbkAtd2Via2l0LWtleWZyYW1lcyBncmVlbi1mYWRlLWluLW91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgNjUlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDc1JSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICA5MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuQGtleWZyYW1lcyBncmVlbi1mYWRlLWluLW91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgNjUlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDc1JSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICA5MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuLyoqXG4gKiBQYXRjaCB0aGUgZ2FwIHRoYXQgYXBwZWFyIGJldHdlZW4gdGhlIHR3byBhZGphY2VudCBkaXYuY2lyY2xlLWNsaXBwZXIgd2hpbGUgdGhlXG4gKiBzcGlubmVyIGlzIHJvdGF0aW5nIChhcHBlYXJzIG9uIENocm9tZSAzOCwgU2FmYXJpIDcuMSwgYW5kIElFIDExKS5cbiAqL1xuLmdhcC1wYXRjaCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiA0NSU7XG4gIHdpZHRoOiAxMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xufVxuXG4uZ2FwLXBhdGNoIC5jaXJjbGUge1xuICB3aWR0aDogMTAwMCU7XG4gIGxlZnQ6IC00NTAlO1xufVxuXG4uY2lyY2xlLWNsaXBwZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDUwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItY29sb3I6IGluaGVyaXQ7XG59XG4uY2lyY2xlLWNsaXBwZXIgLmNpcmNsZSB7XG4gIHdpZHRoOiAyMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci13aWR0aDogM3B4OyAvKiBTVFJPS0VXSURUSCAqL1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItY29sb3I6IGluaGVyaXQ7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgLXdlYmtpdC1hbmltYXRpb246IG5vbmU7XG4gIGFuaW1hdGlvbjogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG59XG4uY2lyY2xlLWNsaXBwZXIubGVmdCAuY2lyY2xlIHtcbiAgbGVmdDogMDtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEyOWRlZyk7XG4gIHRyYW5zZm9ybTogcm90YXRlKDEyOWRlZyk7XG59XG4uY2lyY2xlLWNsaXBwZXIucmlnaHQgLmNpcmNsZSB7XG4gIGxlZnQ6IC0xMDAlO1xuICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTI5ZGVnKTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoLTEyOWRlZyk7XG59XG5cbi5hY3RpdmUgLmNpcmNsZS1jbGlwcGVyLmxlZnQgLmNpcmNsZSB7XG4gIC8qIGR1cmF0aW9uOiBBUkNUSU1FICovXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBsZWZ0LXNwaW4gMTMzM21zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcbiAgYW5pbWF0aW9uOiBsZWZ0LXNwaW4gMTMzM21zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcbn1cblxuLmFjdGl2ZSAuY2lyY2xlLWNsaXBwZXIucmlnaHQgLmNpcmNsZSB7XG4gIC8qIGR1cmF0aW9uOiBBUkNUSU1FICovXG4gIC13ZWJraXQtYW5pbWF0aW9uOiByaWdodC1zcGluIDEzMzNtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XG4gIGFuaW1hdGlvbjogcmlnaHQtc3BpbiAxMzMzbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgbGVmdC1zcGluIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpO1xuICB9XG4gIDUwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNWRlZyk7XG4gIH1cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKTtcbiAgfVxufVxuQGtleWZyYW1lcyBsZWZ0LXNwaW4ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpO1xuICB9XG59XG5ALXdlYmtpdC1rZXlmcmFtZXMgcmlnaHQtc3BpbiB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZyk7XG4gIH1cbiAgNTAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDVkZWcpO1xuICB9XG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpO1xuICB9XG59XG5Aa2V5ZnJhbWVzIHJpZ2h0LXNwaW4ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDVkZWcpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKTtcbiAgfVxufVxuI3NwaW5uZXJDb250YWluZXIuY29vbGRvd24ge1xuICAvKiBkdXJhdGlvbjogU0hSSU5LX1RJTUUgKi9cbiAgLXdlYmtpdC1hbmltYXRpb246IGNvbnRhaW5lci1yb3RhdGUgMTU2OG1zIGxpbmVhciBpbmZpbml0ZSwgZmFkZS1vdXQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIDE1NjhtcyBsaW5lYXIgaW5maW5pdGUsIGZhZGUtb3V0IDQwMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBmYWRlLW91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cbkBrZXlmcmFtZXMgZmFkZS1vdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG4ucHJvZ3Jlc3Mge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogNHB4O1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhY2VjZTY7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgbWFyZ2luOiAwLjMzMzMzMzMzMzNyZW0gMCAwLjY2NjY2NjY2NjdyZW0gMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5wcm9ncmVzcyAuZGV0ZXJtaW5hdGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xuICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGxpbmVhcjtcbn1cbi5wcm9ncmVzcyAuaW5kZXRlcm1pbmF0ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XG59XG4ucHJvZ3Jlc3MgLmluZGV0ZXJtaW5hdGU6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgd2lsbC1jaGFuZ2U6IGxlZnQsIHJpZ2h0O1xuICBhbmltYXRpb246IGluZGV0ZXJtaW5hdGUgMi4xcyBjdWJpYy1iZXppZXIoMC42NSwgMC44MTUsIDAuNzM1LCAwLjM5NSkgaW5maW5pdGU7XG59XG4ucHJvZ3Jlc3MgLmluZGV0ZXJtaW5hdGU6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWxsLWNoYW5nZTogbGVmdCwgcmlnaHQ7XG4gIGFuaW1hdGlvbjogaW5kZXRlcm1pbmF0ZS1zaG9ydCAyLjFzIGN1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSkgaW5maW5pdGU7XG4gIGFuaW1hdGlvbi1kZWxheTogMS4xNXM7XG59XG5cbkBrZXlmcmFtZXMgaW5kZXRlcm1pbmF0ZSB7XG4gIDAlIHtcbiAgICBsZWZ0OiAtMzUlO1xuICAgIHJpZ2h0OiAxMDAlO1xuICB9XG4gIDYwJSB7XG4gICAgbGVmdDogMTAwJTtcbiAgICByaWdodDogLTkwJTtcbiAgfVxuICAxMDAlIHtcbiAgICBsZWZ0OiAxMDAlO1xuICAgIHJpZ2h0OiAtOTAlO1xuICB9XG59XG5Aa2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUtc2hvcnQge1xuICAwJSB7XG4gICAgbGVmdDogLTIwMCU7XG4gICAgcmlnaHQ6IDEwMCU7XG4gIH1cbiAgNjAlIHtcbiAgICBsZWZ0OiAxMDclO1xuICAgIHJpZ2h0OiAtOCU7XG4gIH1cbiAgMTAwJSB7XG4gICAgbGVmdDogMTA3JTtcbiAgICByaWdodDogLTglO1xuICB9XG59XG4uZmxhc2gtbWVzc2FnZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcGFkZGluZzogMnB4IDEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgei1pbmRleDogOTk5OTk7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cbi5mbGFzaC1tZXNzYWdlLmluZm8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmVkZGJlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjNzI4ZjcyO1xufVxuLmZsYXNoLW1lc3NhZ2Uud2FybiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWU2ZDA7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlYTdkMTc7XG59XG4uZmxhc2gtbWVzc2FnZS5lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNWIyYmM7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMzMyNTc7XG59XG5cbkBrZXlmcmFtZXMgbWVzc2FnZUluIHtcbiAgZnJvbSB7XG4gICAgcmlnaHQ6IDgwJTtcbiAgfVxuICB0byB7XG4gICAgcmlnaHQ6IDA7XG4gIH1cbn1cbi5wdWxzZSB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ucHVsc2U6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzLCB0cmFuc2Zvcm0gMC4zcztcbiAgYW5pbWF0aW9uOiBwdWxzZS1hbmltYXRpb24gMXMgY3ViaWMtYmV6aWVyKDAuMjQsIDAsIDAuMzgsIDEpIGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIHB1bHNlLWFuaW1hdGlvbiB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTtcbiAgfVxufVxuLmRyb3Bkb3duLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBtYXJnaW46IDA7XG4gIGRpc3BsYXk6IGZsb3c7XG4gIG1pbi13aWR0aDogMTAwcHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICB6LWluZGV4OiA5OTk5O1xuICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XG59XG4uZHJvcGRvd24tY29udGVudDpmb2N1cyB7XG4gIG91dGxpbmU6IDA7XG59XG4uZHJvcGRvd24tY29udGVudCBsaSB7XG4gIGNsZWFyOiBib3RoO1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBtaW4taGVpZ2h0OiA1MHB4O1xuICBsaW5lLWhlaWdodDogMS41cmVtO1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbi5kcm9wZG93bi1jb250ZW50IGxpOmhvdmVyLCAuZHJvcGRvd24tY29udGVudCBsaS5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xufVxuLmRyb3Bkb3duLWNvbnRlbnQgbGk6Zm9jdXMge1xuICBvdXRsaW5lOiBub25lO1xufVxuLmRyb3Bkb3duLWNvbnRlbnQgbGkuZGl2aWRlciB7XG4gIG1pbi1oZWlnaHQ6IDA7XG4gIGhlaWdodDogMXB4O1xufVxuLmRyb3Bkb3duLWNvbnRlbnQgbGkgPiBhLCAuZHJvcGRvd24tY29udGVudCBsaSA+IHNwYW4ge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiAjMjZhNjlhO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbGluZS1oZWlnaHQ6IDIycHg7XG4gIHBhZGRpbmc6IDE0cHggMTZweDtcbn1cbi5kcm9wZG93bi1jb250ZW50IGxpID4gc3BhbiA+IGxhYmVsIHtcbiAgdG9wOiAxcHg7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMThweDtcbn1cbi5kcm9wZG93bi1jb250ZW50IGxpID4gYSA+IGkge1xuICBoZWlnaHQ6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICBmbG9hdDogbGVmdDtcbiAgbWFyZ2luOiAwIDI0cHggMCAwO1xuICB3aWR0aDogMjRweDtcbn1cblxuYm9keS5rZXlib2FyZC1mb2N1c2VkIC5kcm9wZG93bi1jb250ZW50IGxpOmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RhZGFkYTtcbn1cblxuLmlucHV0LWZpZWxkLmNvbCAuZHJvcGRvd24tY29udGVudCBbdHlwZT1jaGVja2JveF0gKyBsYWJlbCB7XG4gIHRvcDogMXB4O1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6IDE4cHg7XG4gIHRyYW5zZm9ybTogbm9uZTtcbn1cblxuLmRyb3Bkb3duLXRyaWdnZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbm5hdiB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBjYWY5O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA1NnB4O1xuICBsaW5lLWhlaWdodDogNTZweDtcbn1cbm5hdi5uYXYtZXh0ZW5kZWQge1xuICBoZWlnaHQ6IGF1dG87XG59XG5uYXYubmF2LWV4dGVuZGVkIC5uYXYtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1pbi1oZWlnaHQ6IDU2cHg7XG4gIGhlaWdodDogYXV0bztcbn1cbm5hdi5uYXYtZXh0ZW5kZWQgLm5hdi1jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xufVxubmF2IGEge1xuICBjb2xvcjogI2ZmZjtcbn1cbm5hdiBpLFxubmF2IFtjbGFzc149bWRpLV0sIG5hdiBbY2xhc3MqPW1kaS1dLFxubmF2IGkucy1pY29ucyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDI0cHg7XG4gIGhlaWdodDogNTZweDtcbiAgbGluZS1oZWlnaHQ6IDU2cHg7XG59XG5uYXYgLm5hdi13cmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiA5OTNweCkge1xuICBuYXYgYS5zaWRlbmF2LXRyaWdnZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbm5hdiAuc2lkZW5hdi10cmlnZ2VyIHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgaGVpZ2h0OiA1NnB4O1xuICBtYXJnaW46IDAgMThweDtcbn1cbm5hdiAuc2lkZW5hdi10cmlnZ2VyIGkge1xuICBoZWlnaHQ6IDU2cHg7XG4gIGxpbmUtaGVpZ2h0OiA1NnB4O1xufVxubmF2IC5icmFuZC1sb2dvIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjb2xvcjogI2ZmZjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDIuMXJlbTtcbiAgcGFkZGluZzogMDtcbn1cbm5hdiAuYnJhbmQtbG9nbyBpbWcuY2lyY2xlIHtcbiAgaGVpZ2h0OiAzMnB4O1xuICB3aWR0aDogMzJweDtcbn1cbm5hdiAuYnJhbmQtbG9nby5jZW50ZXIge1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6IDk5MnB4KSB7XG4gIG5hdiAuYnJhbmQtbG9nbyB7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuICBuYXYgLmJyYW5kLWxvZ28ubGVmdCwgbmF2IC5icmFuZC1sb2dvLnJpZ2h0IHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuICBuYXYgLmJyYW5kLWxvZ28ubGVmdCB7XG4gICAgbGVmdDogMC41cmVtO1xuICB9XG4gIG5hdiAuYnJhbmQtbG9nby5yaWdodCB7XG4gICAgcmlnaHQ6IDAuNXJlbTtcbiAgICBsZWZ0OiBhdXRvO1xuICB9XG59XG5uYXYgLmJyYW5kLWxvZ28ucmlnaHQge1xuICByaWdodDogMC41cmVtO1xuICBwYWRkaW5nOiAwO1xufVxubmF2IC5icmFuZC1sb2dvIGksXG5uYXYgLmJyYW5kLWxvZ28gW2NsYXNzXj1tZGktXSwgbmF2IC5icmFuZC1sb2dvIFtjbGFzcyo9bWRpLV0sXG5uYXYgLmJyYW5kLWxvZ28gaS5zLWljb25zIHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIG1hcmdpbi1yaWdodDogMTVweDtcbn1cbm5hdiAubmF2LXRpdGxlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDMycHg7XG4gIHBhZGRpbmc6IDI4cHggMDtcbn1cbm5hdiB1bCB7XG4gIG1hcmdpbjogMDtcbn1cbm5hdiB1bCBsaSB7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcztcbiAgZmxvYXQ6IGxlZnQ7XG4gIHBhZGRpbmc6IDA7XG59XG5uYXYgdWwgbGkuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxubmF2IHVsIGEge1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgY29sb3I6ICNmZmY7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwIDE1cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbm5hdiB1bCBhLmJ0biwgbmF2IHVsIGEuYnRuLXNtYWxsLCBuYXYgdWwgYS5idG4tbGFyZ2UsIG5hdiB1bCBhLmJ0bi1mbGF0LCBuYXYgdWwgYS5idG4tZmxvYXRpbmcge1xuICBtYXJnaW4tdG9wOiAtMnB4O1xuICBtYXJnaW4tbGVmdDogMTVweDtcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xufVxubmF2IHVsIGEuYnRuID4gLm1hdGVyaWFsLWljb25zLCBuYXYgdWwgYS5idG4tc21hbGwgPiAubWF0ZXJpYWwtaWNvbnMsIG5hdiB1bCBhLmJ0bi1sYXJnZSA+IC5tYXRlcmlhbC1pY29ucywgbmF2IHVsIGEuYnRuLWZsYXQgPiAubWF0ZXJpYWwtaWNvbnMsIG5hdiB1bCBhLmJ0bi1mbG9hdGluZyA+IC5tYXRlcmlhbC1pY29ucyB7XG4gIGhlaWdodDogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG5uYXYgdWwgYTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cbm5hdiB1bC5sZWZ0IHtcbiAgZmxvYXQ6IGxlZnQ7XG59XG5uYXYgZm9ybSB7XG4gIGhlaWdodDogMTAwJTtcbn1cbm5hdiAuaW5wdXQtZmllbGQge1xuICBtYXJnaW46IDA7XG4gIGhlaWdodDogMTAwJTtcbn1cbm5hdiAuaW5wdXQtZmllbGQgaW5wdXQge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZvbnQtc2l6ZTogMS4ycmVtO1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMnJlbTtcbn1cbm5hdiAuaW5wdXQtZmllbGQgaW5wdXQ6Zm9jdXMsIG5hdiAuaW5wdXQtZmllbGQgaW5wdXRbdHlwZT10ZXh0XTp2YWxpZCwgbmF2IC5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXBhc3N3b3JkXTp2YWxpZCwgbmF2IC5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPWVtYWlsXTp2YWxpZCwgbmF2IC5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXVybF06dmFsaWQsIG5hdiAuaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1kYXRlXTp2YWxpZCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cbm5hdiAuaW5wdXQtZmllbGQgbGFiZWwge1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG59XG5uYXYgLmlucHV0LWZpZWxkIGxhYmVsIGkge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzO1xufVxubmF2IC5pbnB1dC1maWVsZCBsYWJlbC5hY3RpdmUgaSB7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4ubmF2YmFyLWZpeGVkIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDU2cHg7XG4gIHotaW5kZXg6IDk5Nztcbn1cbi5uYXZiYXItZml4ZWQgbmF2IHtcbiAgcG9zaXRpb246IGZpeGVkO1xufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiA2MDFweCkge1xuICBuYXYubmF2LWV4dGVuZGVkIC5uYXYtd3JhcHBlciB7XG4gICAgbWluLWhlaWdodDogNjRweDtcbiAgfVxuICBuYXYsIG5hdiAubmF2LXdyYXBwZXIgaSwgbmF2IGEuc2lkZW5hdi10cmlnZ2VyLCBuYXYgYS5zaWRlbmF2LXRyaWdnZXIgaSB7XG4gICAgaGVpZ2h0OiA2NHB4O1xuICAgIGxpbmUtaGVpZ2h0OiA2NHB4O1xuICB9XG4gIC5uYXZiYXItZml4ZWQge1xuICAgIGhlaWdodDogNjRweDtcbiAgfVxufWAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vc3JjL3Nhc3MvZDN2NHBwLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL19jb2xvcnMuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX2NvZGUtZGFyay5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fdGVybWluYWwuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX3Rvb2x0aXAuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX3NoYWRvd3Muc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX3dhdmVzLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL19tb2RhbC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fZ2xvYmFsLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL192YXJpYWJsZXMuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX2JhZGdlcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fY2hpcHMuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX2NvbGxhcHNpYmxlLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL19jb2xsZWN0aW9uLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL2Zvcm1zL19mb3Jtcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9mb3Jtcy9faW5wdXQtZmllbGRzLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL2Zvcm1zL19yYWRpby1idXR0b25zLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL2Zvcm1zL19jaGVja2JveGVzLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL2Zvcm1zL19zd2l0Y2hlcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9mb3Jtcy9fc2VsZWN0LnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL2Zvcm1zL19maWxlLWlucHV0LnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL2Zvcm1zL19yYW5nZS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fcGFyYWxheC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fY3ViZS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fZ3JpZC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fc2lkZW5hdi5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fYnV0dG9ucy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fdGFicy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fbG9hZGVyLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL19jYXJkcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fcHJlbG9hZGVyLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL19wcm9ncmVzcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fZmxhc2gtbWVzc2FnZS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc2Fzcy9fcHVsc2Uuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3Nhc3MvX2Ryb3Bkb3duLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zYXNzL19uYXZiYXIuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSxnQkFBZ0I7QUNLVjtFQUNFLG9DQUFBO0FERlI7O0FDSU07RUFDRSx5QkFBQTtBRERSOztBQ0dNO0VBQ0Usb0NBQUE7QURBUjs7QUNHTTtFQUNFLG9DQUFBO0FEQVI7O0FDRU07RUFDRSx5QkFBQTtBRENSOztBQ0NNO0VBQ0Usb0NBQUE7QURFUjs7QUNUTTtFQUNFLG9DQUFBO0FEWVI7O0FDVk07RUFDRSx5QkFBQTtBRGFSOztBQ1hNO0VBQ0Usb0NBQUE7QURjUjs7QUNyQk07RUFDRSxvQ0FBQTtBRHdCUjs7QUN0Qk07RUFDRSx5QkFBQTtBRHlCUjs7QUN2Qk07RUFDRSxvQ0FBQTtBRDBCUjs7QUNqQ007RUFDRSxvQ0FBQTtBRG9DUjs7QUNsQ007RUFDRSx5QkFBQTtBRHFDUjs7QUNuQ007RUFDRSxvQ0FBQTtBRHNDUjs7QUM3Q007RUFDRSxvQ0FBQTtBRGdEUjs7QUM5Q007RUFDRSx5QkFBQTtBRGlEUjs7QUMvQ007RUFDRSxvQ0FBQTtBRGtEUjs7QUN6RE07RUFDRSxvQ0FBQTtBRDREUjs7QUMxRE07RUFDRSx5QkFBQTtBRDZEUjs7QUMzRE07RUFDRSxvQ0FBQTtBRDhEUjs7QUNyRU07RUFDRSxvQ0FBQTtBRHdFUjs7QUN0RU07RUFDRSx5QkFBQTtBRHlFUjs7QUN2RU07RUFDRSxvQ0FBQTtBRDBFUjs7QUNqRk07RUFDRSxvQ0FBQTtBRG9GUjs7QUNsRk07RUFDRSx5QkFBQTtBRHFGUjs7QUNuRk07RUFDRSxvQ0FBQTtBRHNGUjs7QUM3Rk07RUFDRSxvQ0FBQTtBRGdHUjs7QUM5Rk07RUFDRSx5QkFBQTtBRGlHUjs7QUMvRk07RUFDRSxvQ0FBQTtBRGtHUjs7QUN6R007RUFDRSxvQ0FBQTtBRDRHUjs7QUMxR007RUFDRSx5QkFBQTtBRDZHUjs7QUMzR007RUFDRSxvQ0FBQTtBRDhHUjs7QUNySE07RUFDRSxvQ0FBQTtBRHdIUjs7QUN0SE07RUFDRSx5QkFBQTtBRHlIUjs7QUN2SE07RUFDRSxvQ0FBQTtBRDBIUjs7QUNqSU07RUFDRSxvQ0FBQTtBRG9JUjs7QUNsSU07RUFDRSx5QkFBQTtBRHFJUjs7QUNuSU07RUFDRSxvQ0FBQTtBRHNJUjs7QUM3SU07RUFDRSxvQ0FBQTtBRGdKUjs7QUM5SU07RUFDRSx5QkFBQTtBRGlKUjs7QUMvSU07RUFDRSxvQ0FBQTtBRGtKUjs7QUNuS007RUFDRSxvQ0FBQTtBRHNLUjs7QUNwS007RUFDRSx5QkFBQTtBRHVLUjs7QUNyS007RUFDRSxvQ0FBQTtBRHdLUjs7QUNyS007RUFDRSxvQ0FBQTtBRHdLUjs7QUN0S007RUFDRSx5QkFBQTtBRHlLUjs7QUN2S007RUFDRSxvQ0FBQTtBRDBLUjs7QUNqTE07RUFDRSxvQ0FBQTtBRG9MUjs7QUNsTE07RUFDRSx5QkFBQTtBRHFMUjs7QUNuTE07RUFDRSxvQ0FBQTtBRHNMUjs7QUM3TE07RUFDRSxvQ0FBQTtBRGdNUjs7QUM5TE07RUFDRSx5QkFBQTtBRGlNUjs7QUMvTE07RUFDRSxvQ0FBQTtBRGtNUjs7QUN6TU07RUFDRSxvQ0FBQTtBRDRNUjs7QUMxTU07RUFDRSx5QkFBQTtBRDZNUjs7QUMzTU07RUFDRSxvQ0FBQTtBRDhNUjs7QUNyTk07RUFDRSxvQ0FBQTtBRHdOUjs7QUN0Tk07RUFDRSx5QkFBQTtBRHlOUjs7QUN2Tk07RUFDRSxvQ0FBQTtBRDBOUjs7QUNqT007RUFDRSxvQ0FBQTtBRG9PUjs7QUNsT007RUFDRSx5QkFBQTtBRHFPUjs7QUNuT007RUFDRSxvQ0FBQTtBRHNPUjs7QUM3T007RUFDRSxvQ0FBQTtBRGdQUjs7QUM5T007RUFDRSx5QkFBQTtBRGlQUjs7QUMvT007RUFDRSxvQ0FBQTtBRGtQUjs7QUN6UE07RUFDRSxvQ0FBQTtBRDRQUjs7QUMxUE07RUFDRSx5QkFBQTtBRDZQUjs7QUMzUE07RUFDRSxvQ0FBQTtBRDhQUjs7QUNyUU07RUFDRSxvQ0FBQTtBRHdRUjs7QUN0UU07RUFDRSx5QkFBQTtBRHlRUjs7QUN2UU07RUFDRSxvQ0FBQTtBRDBRUjs7QUNqUk07RUFDRSxvQ0FBQTtBRG9SUjs7QUNsUk07RUFDRSx5QkFBQTtBRHFSUjs7QUNuUk07RUFDRSxvQ0FBQTtBRHNSUjs7QUM3Uk07RUFDRSxvQ0FBQTtBRGdTUjs7QUM5Uk07RUFDRSx5QkFBQTtBRGlTUjs7QUMvUk07RUFDRSxvQ0FBQTtBRGtTUjs7QUN6U007RUFDRSxvQ0FBQTtBRDRTUjs7QUMxU007RUFDRSx5QkFBQTtBRDZTUjs7QUMzU007RUFDRSxvQ0FBQTtBRDhTUjs7QUNyVE07RUFDRSxvQ0FBQTtBRHdUUjs7QUN0VE07RUFDRSx5QkFBQTtBRHlUUjs7QUN2VE07RUFDRSxvQ0FBQTtBRDBUUjs7QUMzVU07RUFDRSxvQ0FBQTtBRDhVUjs7QUM1VU07RUFDRSx5QkFBQTtBRCtVUjs7QUM3VU07RUFDRSxvQ0FBQTtBRGdWUjs7QUM3VU07RUFDRSxvQ0FBQTtBRGdWUjs7QUM5VU07RUFDRSx5QkFBQTtBRGlWUjs7QUMvVU07RUFDRSxvQ0FBQTtBRGtWUjs7QUN6Vk07RUFDRSxvQ0FBQTtBRDRWUjs7QUMxVk07RUFDRSx5QkFBQTtBRDZWUjs7QUMzVk07RUFDRSxvQ0FBQTtBRDhWUjs7QUNyV007RUFDRSxvQ0FBQTtBRHdXUjs7QUN0V007RUFDRSx5QkFBQTtBRHlXUjs7QUN2V007RUFDRSxvQ0FBQTtBRDBXUjs7QUNqWE07RUFDRSxvQ0FBQTtBRG9YUjs7QUNsWE07RUFDRSx5QkFBQTtBRHFYUjs7QUNuWE07RUFDRSxvQ0FBQTtBRHNYUjs7QUM3WE07RUFDRSxvQ0FBQTtBRGdZUjs7QUM5WE07RUFDRSx5QkFBQTtBRGlZUjs7QUMvWE07RUFDRSxvQ0FBQTtBRGtZUjs7QUN6WU07RUFDRSxvQ0FBQTtBRDRZUjs7QUMxWU07RUFDRSx5QkFBQTtBRDZZUjs7QUMzWU07RUFDRSxvQ0FBQTtBRDhZUjs7QUNyWk07RUFDRSxvQ0FBQTtBRHdaUjs7QUN0Wk07RUFDRSx5QkFBQTtBRHlaUjs7QUN2Wk07RUFDRSxvQ0FBQTtBRDBaUjs7QUNqYU07RUFDRSxvQ0FBQTtBRG9hUjs7QUNsYU07RUFDRSx5QkFBQTtBRHFhUjs7QUNuYU07RUFDRSxvQ0FBQTtBRHNhUjs7QUM3YU07RUFDRSxvQ0FBQTtBRGdiUjs7QUM5YU07RUFDRSx5QkFBQTtBRGliUjs7QUMvYU07RUFDRSxvQ0FBQTtBRGtiUjs7QUN6Yk07RUFDRSxvQ0FBQTtBRDRiUjs7QUMxYk07RUFDRSx5QkFBQTtBRDZiUjs7QUMzYk07RUFDRSxvQ0FBQTtBRDhiUjs7QUNyY007RUFDRSxvQ0FBQTtBRHdjUjs7QUN0Y007RUFDRSx5QkFBQTtBRHljUjs7QUN2Y007RUFDRSxvQ0FBQTtBRDBjUjs7QUNqZE07RUFDRSxvQ0FBQTtBRG9kUjs7QUNsZE07RUFDRSx5QkFBQTtBRHFkUjs7QUNuZE07RUFDRSxvQ0FBQTtBRHNkUjs7QUM3ZE07RUFDRSxvQ0FBQTtBRGdlUjs7QUM5ZE07RUFDRSx5QkFBQTtBRGllUjs7QUMvZE07RUFDRSxvQ0FBQTtBRGtlUjs7QUNuZk07RUFDRSxvQ0FBQTtBRHNmUjs7QUNwZk07RUFDRSx5QkFBQTtBRHVmUjs7QUNyZk07RUFDRSxvQ0FBQTtBRHdmUjs7QUNyZk07RUFDRSxvQ0FBQTtBRHdmUjs7QUN0Zk07RUFDRSx5QkFBQTtBRHlmUjs7QUN2Zk07RUFDRSxvQ0FBQTtBRDBmUjs7QUNqZ0JNO0VBQ0Usb0NBQUE7QURvZ0JSOztBQ2xnQk07RUFDRSx5QkFBQTtBRHFnQlI7O0FDbmdCTTtFQUNFLG9DQUFBO0FEc2dCUjs7QUM3Z0JNO0VBQ0Usb0NBQUE7QURnaEJSOztBQzlnQk07RUFDRSx5QkFBQTtBRGloQlI7O0FDL2dCTTtFQUNFLG9DQUFBO0FEa2hCUjs7QUN6aEJNO0VBQ0Usb0NBQUE7QUQ0aEJSOztBQzFoQk07RUFDRSx5QkFBQTtBRDZoQlI7O0FDM2hCTTtFQUNFLG9DQUFBO0FEOGhCUjs7QUNyaUJNO0VBQ0Usb0NBQUE7QUR3aUJSOztBQ3RpQk07RUFDRSx5QkFBQTtBRHlpQlI7O0FDdmlCTTtFQUNFLG9DQUFBO0FEMGlCUjs7QUNqakJNO0VBQ0Usb0NBQUE7QURvakJSOztBQ2xqQk07RUFDRSx5QkFBQTtBRHFqQlI7O0FDbmpCTTtFQUNFLG9DQUFBO0FEc2pCUjs7QUM3akJNO0VBQ0Usb0NBQUE7QURna0JSOztBQzlqQk07RUFDRSx5QkFBQTtBRGlrQlI7O0FDL2pCTTtFQUNFLG9DQUFBO0FEa2tCUjs7QUN6a0JNO0VBQ0Usb0NBQUE7QUQ0a0JSOztBQzFrQk07RUFDRSx5QkFBQTtBRDZrQlI7O0FDM2tCTTtFQUNFLG9DQUFBO0FEOGtCUjs7QUNybEJNO0VBQ0Usb0NBQUE7QUR3bEJSOztBQ3RsQk07RUFDRSx5QkFBQTtBRHlsQlI7O0FDdmxCTTtFQUNFLG9DQUFBO0FEMGxCUjs7QUNqbUJNO0VBQ0Usb0NBQUE7QURvbUJSOztBQ2xtQk07RUFDRSx5QkFBQTtBRHFtQlI7O0FDbm1CTTtFQUNFLG9DQUFBO0FEc21CUjs7QUM3bUJNO0VBQ0Usb0NBQUE7QURnbkJSOztBQzltQk07RUFDRSx5QkFBQTtBRGluQlI7O0FDL21CTTtFQUNFLG9DQUFBO0FEa25CUjs7QUN6bkJNO0VBQ0Usb0NBQUE7QUQ0bkJSOztBQzFuQk07RUFDRSx5QkFBQTtBRDZuQlI7O0FDM25CTTtFQUNFLG9DQUFBO0FEOG5CUjs7QUNyb0JNO0VBQ0Usb0NBQUE7QUR3b0JSOztBQ3RvQk07RUFDRSx5QkFBQTtBRHlvQlI7O0FDdm9CTTtFQUNFLG9DQUFBO0FEMG9CUjs7QUMzcEJNO0VBQ0Usb0NBQUE7QUQ4cEJSOztBQzVwQk07RUFDRSx5QkFBQTtBRCtwQlI7O0FDN3BCTTtFQUNFLG9DQUFBO0FEZ3FCUjs7QUM3cEJNO0VBQ0Usb0NBQUE7QURncUJSOztBQzlwQk07RUFDRSx5QkFBQTtBRGlxQlI7O0FDL3BCTTtFQUNFLG9DQUFBO0FEa3FCUjs7QUN6cUJNO0VBQ0Usb0NBQUE7QUQ0cUJSOztBQzFxQk07RUFDRSx5QkFBQTtBRDZxQlI7O0FDM3FCTTtFQUNFLG9DQUFBO0FEOHFCUjs7QUNyckJNO0VBQ0Usb0NBQUE7QUR3ckJSOztBQ3RyQk07RUFDRSx5QkFBQTtBRHlyQlI7O0FDdnJCTTtFQUNFLG9DQUFBO0FEMHJCUjs7QUNqc0JNO0VBQ0Usb0NBQUE7QURvc0JSOztBQ2xzQk07RUFDRSx5QkFBQTtBRHFzQlI7O0FDbnNCTTtFQUNFLG9DQUFBO0FEc3NCUjs7QUM3c0JNO0VBQ0Usb0NBQUE7QURndEJSOztBQzlzQk07RUFDRSx5QkFBQTtBRGl0QlI7O0FDL3NCTTtFQUNFLG9DQUFBO0FEa3RCUjs7QUN6dEJNO0VBQ0Usb0NBQUE7QUQ0dEJSOztBQzF0Qk07RUFDRSx5QkFBQTtBRDZ0QlI7O0FDM3RCTTtFQUNFLG9DQUFBO0FEOHRCUjs7QUNydUJNO0VBQ0Usb0NBQUE7QUR3dUJSOztBQ3R1Qk07RUFDRSx5QkFBQTtBRHl1QlI7O0FDdnVCTTtFQUNFLG9DQUFBO0FEMHVCUjs7QUNqdkJNO0VBQ0Usb0NBQUE7QURvdkJSOztBQ2x2Qk07RUFDRSx5QkFBQTtBRHF2QlI7O0FDbnZCTTtFQUNFLG9DQUFBO0FEc3ZCUjs7QUM3dkJNO0VBQ0Usb0NBQUE7QURnd0JSOztBQzl2Qk07RUFDRSx5QkFBQTtBRGl3QlI7O0FDL3ZCTTtFQUNFLG9DQUFBO0FEa3dCUjs7QUN6d0JNO0VBQ0Usb0NBQUE7QUQ0d0JSOztBQzF3Qk07RUFDRSx5QkFBQTtBRDZ3QlI7O0FDM3dCTTtFQUNFLG9DQUFBO0FEOHdCUjs7QUNyeEJNO0VBQ0Usb0NBQUE7QUR3eEJSOztBQ3R4Qk07RUFDRSx5QkFBQTtBRHl4QlI7O0FDdnhCTTtFQUNFLG9DQUFBO0FEMHhCUjs7QUNqeUJNO0VBQ0Usb0NBQUE7QURveUJSOztBQ2x5Qk07RUFDRSx5QkFBQTtBRHF5QlI7O0FDbnlCTTtFQUNFLG9DQUFBO0FEc3lCUjs7QUM3eUJNO0VBQ0Usb0NBQUE7QURnekJSOztBQzl5Qk07RUFDRSx5QkFBQTtBRGl6QlI7O0FDL3lCTTtFQUNFLG9DQUFBO0FEa3pCUjs7QUNuMEJNO0VBQ0Usb0NBQUE7QURzMEJSOztBQ3AwQk07RUFDRSx5QkFBQTtBRHUwQlI7O0FDcjBCTTtFQUNFLG9DQUFBO0FEdzBCUjs7QUNyMEJNO0VBQ0Usb0NBQUE7QUR3MEJSOztBQ3QwQk07RUFDRSx5QkFBQTtBRHkwQlI7O0FDdjBCTTtFQUNFLG9DQUFBO0FEMDBCUjs7QUNqMUJNO0VBQ0Usb0NBQUE7QURvMUJSOztBQ2wxQk07RUFDRSx5QkFBQTtBRHExQlI7O0FDbjFCTTtFQUNFLG9DQUFBO0FEczFCUjs7QUM3MUJNO0VBQ0Usb0NBQUE7QURnMkJSOztBQzkxQk07RUFDRSx5QkFBQTtBRGkyQlI7O0FDLzFCTTtFQUNFLG9DQUFBO0FEazJCUjs7QUN6MkJNO0VBQ0Usb0NBQUE7QUQ0MkJSOztBQzEyQk07RUFDRSx5QkFBQTtBRDYyQlI7O0FDMzJCTTtFQUNFLG9DQUFBO0FEODJCUjs7QUNyM0JNO0VBQ0Usb0NBQUE7QUR3M0JSOztBQ3QzQk07RUFDRSx5QkFBQTtBRHkzQlI7O0FDdjNCTTtFQUNFLG9DQUFBO0FEMDNCUjs7QUNqNEJNO0VBQ0Usb0NBQUE7QURvNEJSOztBQ2w0Qk07RUFDRSx5QkFBQTtBRHE0QlI7O0FDbjRCTTtFQUNFLG9DQUFBO0FEczRCUjs7QUM3NEJNO0VBQ0Usb0NBQUE7QURnNUJSOztBQzk0Qk07RUFDRSx5QkFBQTtBRGk1QlI7O0FDLzRCTTtFQUNFLG9DQUFBO0FEazVCUjs7QUN6NUJNO0VBQ0Usb0NBQUE7QUQ0NUJSOztBQzE1Qk07RUFDRSx5QkFBQTtBRDY1QlI7O0FDMzVCTTtFQUNFLG9DQUFBO0FEODVCUjs7QUNyNkJNO0VBQ0Usb0NBQUE7QUR3NkJSOztBQ3Q2Qk07RUFDRSx5QkFBQTtBRHk2QlI7O0FDdjZCTTtFQUNFLG9DQUFBO0FEMDZCUjs7QUNqN0JNO0VBQ0Usb0NBQUE7QURvN0JSOztBQ2w3Qk07RUFDRSx5QkFBQTtBRHE3QlI7O0FDbjdCTTtFQUNFLG9DQUFBO0FEczdCUjs7QUM3N0JNO0VBQ0Usb0NBQUE7QURnOEJSOztBQzk3Qk07RUFDRSx5QkFBQTtBRGk4QlI7O0FDLzdCTTtFQUNFLG9DQUFBO0FEazhCUjs7QUN6OEJNO0VBQ0Usb0NBQUE7QUQ0OEJSOztBQzE4Qk07RUFDRSx5QkFBQTtBRDY4QlI7O0FDMzhCTTtFQUNFLG9DQUFBO0FEODhCUjs7QUNyOUJNO0VBQ0Usb0NBQUE7QUR3OUJSOztBQ3Q5Qk07RUFDRSx5QkFBQTtBRHk5QlI7O0FDdjlCTTtFQUNFLG9DQUFBO0FEMDlCUjs7QUMzK0JNO0VBQ0Usb0NBQUE7QUQ4K0JSOztBQzUrQk07RUFDRSx5QkFBQTtBRCsrQlI7O0FDNytCTTtFQUNFLG9DQUFBO0FEZy9CUjs7QUM3K0JNO0VBQ0Usb0NBQUE7QURnL0JSOztBQzkrQk07RUFDRSx5QkFBQTtBRGkvQlI7O0FDLytCTTtFQUNFLG9DQUFBO0FEay9CUjs7QUN6L0JNO0VBQ0Usb0NBQUE7QUQ0L0JSOztBQzEvQk07RUFDRSx5QkFBQTtBRDYvQlI7O0FDMy9CTTtFQUNFLG9DQUFBO0FEOC9CUjs7QUNyZ0NNO0VBQ0Usb0NBQUE7QUR3Z0NSOztBQ3RnQ007RUFDRSx5QkFBQTtBRHlnQ1I7O0FDdmdDTTtFQUNFLG9DQUFBO0FEMGdDUjs7QUNqaENNO0VBQ0Usb0NBQUE7QURvaENSOztBQ2xoQ007RUFDRSx5QkFBQTtBRHFoQ1I7O0FDbmhDTTtFQUNFLG9DQUFBO0FEc2hDUjs7QUM3aENNO0VBQ0Usb0NBQUE7QURnaUNSOztBQzloQ007RUFDRSx5QkFBQTtBRGlpQ1I7O0FDL2hDTTtFQUNFLG9DQUFBO0FEa2lDUjs7QUN6aUNNO0VBQ0Usb0NBQUE7QUQ0aUNSOztBQzFpQ007RUFDRSx5QkFBQTtBRDZpQ1I7O0FDM2lDTTtFQUNFLG9DQUFBO0FEOGlDUjs7QUNyakNNO0VBQ0Usb0NBQUE7QUR3akNSOztBQ3RqQ007RUFDRSx5QkFBQTtBRHlqQ1I7O0FDdmpDTTtFQUNFLG9DQUFBO0FEMGpDUjs7QUNqa0NNO0VBQ0Usb0NBQUE7QURva0NSOztBQ2xrQ007RUFDRSx5QkFBQTtBRHFrQ1I7O0FDbmtDTTtFQUNFLG9DQUFBO0FEc2tDUjs7QUM3a0NNO0VBQ0Usb0NBQUE7QURnbENSOztBQzlrQ007RUFDRSx5QkFBQTtBRGlsQ1I7O0FDL2tDTTtFQUNFLG9DQUFBO0FEa2xDUjs7QUN6bENNO0VBQ0Usb0NBQUE7QUQ0bENSOztBQzFsQ007RUFDRSx5QkFBQTtBRDZsQ1I7O0FDM2xDTTtFQUNFLG9DQUFBO0FEOGxDUjs7QUNybUNNO0VBQ0Usb0NBQUE7QUR3bUNSOztBQ3RtQ007RUFDRSx5QkFBQTtBRHltQ1I7O0FDdm1DTTtFQUNFLG9DQUFBO0FEMG1DUjs7QUNqbkNNO0VBQ0Usb0NBQUE7QURvbkNSOztBQ2xuQ007RUFDRSx5QkFBQTtBRHFuQ1I7O0FDbm5DTTtFQUNFLG9DQUFBO0FEc25DUjs7QUM3bkNNO0VBQ0Usb0NBQUE7QURnb0NSOztBQzluQ007RUFDRSx5QkFBQTtBRGlvQ1I7O0FDL25DTTtFQUNFLG9DQUFBO0FEa29DUjs7QUNucENNO0VBQ0Usb0NBQUE7QURzcENSOztBQ3BwQ007RUFDRSx5QkFBQTtBRHVwQ1I7O0FDcnBDTTtFQUNFLG9DQUFBO0FEd3BDUjs7QUNycENNO0VBQ0Usb0NBQUE7QUR3cENSOztBQ3RwQ007RUFDRSx5QkFBQTtBRHlwQ1I7O0FDdnBDTTtFQUNFLG9DQUFBO0FEMHBDUjs7QUNqcUNNO0VBQ0Usb0NBQUE7QURvcUNSOztBQ2xxQ007RUFDRSx5QkFBQTtBRHFxQ1I7O0FDbnFDTTtFQUNFLG9DQUFBO0FEc3FDUjs7QUM3cUNNO0VBQ0Usb0NBQUE7QURnckNSOztBQzlxQ007RUFDRSx5QkFBQTtBRGlyQ1I7O0FDL3FDTTtFQUNFLG9DQUFBO0FEa3JDUjs7QUN6ckNNO0VBQ0Usb0NBQUE7QUQ0ckNSOztBQzFyQ007RUFDRSx5QkFBQTtBRDZyQ1I7O0FDM3JDTTtFQUNFLG9DQUFBO0FEOHJDUjs7QUNyc0NNO0VBQ0Usb0NBQUE7QUR3c0NSOztBQ3RzQ007RUFDRSx5QkFBQTtBRHlzQ1I7O0FDdnNDTTtFQUNFLG9DQUFBO0FEMHNDUjs7QUNqdENNO0VBQ0Usb0NBQUE7QURvdENSOztBQ2x0Q007RUFDRSx5QkFBQTtBRHF0Q1I7O0FDbnRDTTtFQUNFLG9DQUFBO0FEc3RDUjs7QUM3dENNO0VBQ0Usb0NBQUE7QURndUNSOztBQzl0Q007RUFDRSx5QkFBQTtBRGl1Q1I7O0FDL3RDTTtFQUNFLG9DQUFBO0FEa3VDUjs7QUN6dUNNO0VBQ0Usb0NBQUE7QUQ0dUNSOztBQzF1Q007RUFDRSx5QkFBQTtBRDZ1Q1I7O0FDM3VDTTtFQUNFLG9DQUFBO0FEOHVDUjs7QUNydkNNO0VBQ0Usb0NBQUE7QUR3dkNSOztBQ3R2Q007RUFDRSx5QkFBQTtBRHl2Q1I7O0FDdnZDTTtFQUNFLG9DQUFBO0FEMHZDUjs7QUNqd0NNO0VBQ0Usb0NBQUE7QURvd0NSOztBQ2x3Q007RUFDRSx5QkFBQTtBRHF3Q1I7O0FDbndDTTtFQUNFLG9DQUFBO0FEc3dDUjs7QUM3d0NNO0VBQ0Usb0NBQUE7QURneENSOztBQzl3Q007RUFDRSx5QkFBQTtBRGl4Q1I7O0FDL3dDTTtFQUNFLG9DQUFBO0FEa3hDUjs7QUN6eENNO0VBQ0Usb0NBQUE7QUQ0eENSOztBQzF4Q007RUFDRSx5QkFBQTtBRDZ4Q1I7O0FDM3hDTTtFQUNFLG9DQUFBO0FEOHhDUjs7QUNyeUNNO0VBQ0Usb0NBQUE7QUR3eUNSOztBQ3R5Q007RUFDRSx5QkFBQTtBRHl5Q1I7O0FDdnlDTTtFQUNFLG9DQUFBO0FEMHlDUjs7QUMzekNNO0VBQ0Usb0NBQUE7QUQ4ekNSOztBQzV6Q007RUFDRSx5QkFBQTtBRCt6Q1I7O0FDN3pDTTtFQUNFLG9DQUFBO0FEZzBDUjs7QUM3ekNNO0VBQ0Usb0NBQUE7QURnMENSOztBQzl6Q007RUFDRSx5QkFBQTtBRGkwQ1I7O0FDL3pDTTtFQUNFLG9DQUFBO0FEazBDUjs7QUN6MENNO0VBQ0Usb0NBQUE7QUQ0MENSOztBQzEwQ007RUFDRSx5QkFBQTtBRDYwQ1I7O0FDMzBDTTtFQUNFLG9DQUFBO0FEODBDUjs7QUNyMUNNO0VBQ0Usb0NBQUE7QUR3MUNSOztBQ3QxQ007RUFDRSx5QkFBQTtBRHkxQ1I7O0FDdjFDTTtFQUNFLG9DQUFBO0FEMDFDUjs7QUNqMkNNO0VBQ0Usb0NBQUE7QURvMkNSOztBQ2wyQ007RUFDRSx5QkFBQTtBRHEyQ1I7O0FDbjJDTTtFQUNFLG9DQUFBO0FEczJDUjs7QUM3MkNNO0VBQ0Usb0NBQUE7QURnM0NSOztBQzkyQ007RUFDRSx5QkFBQTtBRGkzQ1I7O0FDLzJDTTtFQUNFLG9DQUFBO0FEazNDUjs7QUN6M0NNO0VBQ0Usb0NBQUE7QUQ0M0NSOztBQzEzQ007RUFDRSx5QkFBQTtBRDYzQ1I7O0FDMzNDTTtFQUNFLG9DQUFBO0FEODNDUjs7QUNyNENNO0VBQ0Usb0NBQUE7QUR3NENSOztBQ3Q0Q007RUFDRSx5QkFBQTtBRHk0Q1I7O0FDdjRDTTtFQUNFLG9DQUFBO0FEMDRDUjs7QUNqNUNNO0VBQ0Usb0NBQUE7QURvNUNSOztBQ2w1Q007RUFDRSx5QkFBQTtBRHE1Q1I7O0FDbjVDTTtFQUNFLG9DQUFBO0FEczVDUjs7QUM3NUNNO0VBQ0Usb0NBQUE7QURnNkNSOztBQzk1Q007RUFDRSx5QkFBQTtBRGk2Q1I7O0FDLzVDTTtFQUNFLG9DQUFBO0FEazZDUjs7QUN6NkNNO0VBQ0Usb0NBQUE7QUQ0NkNSOztBQzE2Q007RUFDRSx5QkFBQTtBRDY2Q1I7O0FDMzZDTTtFQUNFLG9DQUFBO0FEODZDUjs7QUNyN0NNO0VBQ0Usb0NBQUE7QUR3N0NSOztBQ3Q3Q007RUFDRSx5QkFBQTtBRHk3Q1I7O0FDdjdDTTtFQUNFLG9DQUFBO0FEMDdDUjs7QUNqOENNO0VBQ0Usb0NBQUE7QURvOENSOztBQ2w4Q007RUFDRSx5QkFBQTtBRHE4Q1I7O0FDbjhDTTtFQUNFLG9DQUFBO0FEczhDUjs7QUM3OENNO0VBQ0Usb0NBQUE7QURnOUNSOztBQzk4Q007RUFDRSx5QkFBQTtBRGk5Q1I7O0FDLzhDTTtFQUNFLG9DQUFBO0FEazlDUjs7QUNuK0NNO0VBQ0Usb0NBQUE7QURzK0NSOztBQ3ArQ007RUFDRSx5QkFBQTtBRHUrQ1I7O0FDcitDTTtFQUNFLG9DQUFBO0FEdytDUjs7QUNyK0NNO0VBQ0Usb0NBQUE7QUR3K0NSOztBQ3QrQ007RUFDRSx5QkFBQTtBRHkrQ1I7O0FDditDTTtFQUNFLG9DQUFBO0FEMCtDUjs7QUNqL0NNO0VBQ0Usb0NBQUE7QURvL0NSOztBQ2wvQ007RUFDRSx5QkFBQTtBRHEvQ1I7O0FDbi9DTTtFQUNFLG9DQUFBO0FEcy9DUjs7QUM3L0NNO0VBQ0Usb0NBQUE7QURnZ0RSOztBQzkvQ007RUFDRSx5QkFBQTtBRGlnRFI7O0FDLy9DTTtFQUNFLG9DQUFBO0FEa2dEUjs7QUN6Z0RNO0VBQ0Usb0NBQUE7QUQ0Z0RSOztBQzFnRE07RUFDRSx5QkFBQTtBRDZnRFI7O0FDM2dETTtFQUNFLG9DQUFBO0FEOGdEUjs7QUNyaERNO0VBQ0Usb0NBQUE7QUR3aERSOztBQ3RoRE07RUFDRSx5QkFBQTtBRHloRFI7O0FDdmhETTtFQUNFLG9DQUFBO0FEMGhEUjs7QUNqaURNO0VBQ0Usb0NBQUE7QURvaURSOztBQ2xpRE07RUFDRSx5QkFBQTtBRHFpRFI7O0FDbmlETTtFQUNFLG9DQUFBO0FEc2lEUjs7QUM3aURNO0VBQ0Usb0NBQUE7QURnakRSOztBQzlpRE07RUFDRSx5QkFBQTtBRGlqRFI7O0FDL2lETTtFQUNFLG9DQUFBO0FEa2pEUjs7QUN6akRNO0VBQ0Usb0NBQUE7QUQ0akRSOztBQzFqRE07RUFDRSx5QkFBQTtBRDZqRFI7O0FDM2pETTtFQUNFLG9DQUFBO0FEOGpEUjs7QUNya0RNO0VBQ0Usb0NBQUE7QUR3a0RSOztBQ3RrRE07RUFDRSx5QkFBQTtBRHlrRFI7O0FDdmtETTtFQUNFLG9DQUFBO0FEMGtEUjs7QUNqbERNO0VBQ0Usb0NBQUE7QURvbERSOztBQ2xsRE07RUFDRSx5QkFBQTtBRHFsRFI7O0FDbmxETTtFQUNFLG9DQUFBO0FEc2xEUjs7QUM3bERNO0VBQ0Usb0NBQUE7QURnbURSOztBQzlsRE07RUFDRSx5QkFBQTtBRGltRFI7O0FDL2xETTtFQUNFLG9DQUFBO0FEa21EUjs7QUN6bURNO0VBQ0Usb0NBQUE7QUQ0bURSOztBQzFtRE07RUFDRSx5QkFBQTtBRDZtRFI7O0FDM21ETTtFQUNFLG9DQUFBO0FEOG1EUjs7QUNybkRNO0VBQ0Usb0NBQUE7QUR3bkRSOztBQ3RuRE07RUFDRSx5QkFBQTtBRHluRFI7O0FDdm5ETTtFQUNFLG9DQUFBO0FEMG5EUjs7QUMzb0RNO0VBQ0Usb0NBQUE7QUQ4b0RSOztBQzVvRE07RUFDRSx5QkFBQTtBRCtvRFI7O0FDN29ETTtFQUNFLG9DQUFBO0FEZ3BEUjs7QUM3b0RNO0VBQ0Usb0NBQUE7QURncERSOztBQzlvRE07RUFDRSx5QkFBQTtBRGlwRFI7O0FDL29ETTtFQUNFLG9DQUFBO0FEa3BEUjs7QUN6cERNO0VBQ0Usb0NBQUE7QUQ0cERSOztBQzFwRE07RUFDRSx5QkFBQTtBRDZwRFI7O0FDM3BETTtFQUNFLG9DQUFBO0FEOHBEUjs7QUNycURNO0VBQ0Usb0NBQUE7QUR3cURSOztBQ3RxRE07RUFDRSx5QkFBQTtBRHlxRFI7O0FDdnFETTtFQUNFLG9DQUFBO0FEMHFEUjs7QUNqckRNO0VBQ0Usb0NBQUE7QURvckRSOztBQ2xyRE07RUFDRSx5QkFBQTtBRHFyRFI7O0FDbnJETTtFQUNFLG9DQUFBO0FEc3JEUjs7QUM3ckRNO0VBQ0Usb0NBQUE7QURnc0RSOztBQzlyRE07RUFDRSx5QkFBQTtBRGlzRFI7O0FDL3JETTtFQUNFLG9DQUFBO0FEa3NEUjs7QUN6c0RNO0VBQ0Usb0NBQUE7QUQ0c0RSOztBQzFzRE07RUFDRSx5QkFBQTtBRDZzRFI7O0FDM3NETTtFQUNFLG9DQUFBO0FEOHNEUjs7QUNydERNO0VBQ0Usb0NBQUE7QUR3dERSOztBQ3R0RE07RUFDRSx5QkFBQTtBRHl0RFI7O0FDdnRETTtFQUNFLG9DQUFBO0FEMHREUjs7QUNqdURNO0VBQ0Usb0NBQUE7QURvdURSOztBQ2x1RE07RUFDRSx5QkFBQTtBRHF1RFI7O0FDbnVETTtFQUNFLG9DQUFBO0FEc3VEUjs7QUM3dURNO0VBQ0Usb0NBQUE7QURndkRSOztBQzl1RE07RUFDRSx5QkFBQTtBRGl2RFI7O0FDL3VETTtFQUNFLG9DQUFBO0FEa3ZEUjs7QUN6dkRNO0VBQ0Usb0NBQUE7QUQ0dkRSOztBQzF2RE07RUFDRSx5QkFBQTtBRDZ2RFI7O0FDM3ZETTtFQUNFLG9DQUFBO0FEOHZEUjs7QUNyd0RNO0VBQ0Usb0NBQUE7QUR3d0RSOztBQ3R3RE07RUFDRSx5QkFBQTtBRHl3RFI7O0FDdndETTtFQUNFLG9DQUFBO0FEMHdEUjs7QUNqeERNO0VBQ0Usb0NBQUE7QURveERSOztBQ2x4RE07RUFDRSx5QkFBQTtBRHF4RFI7O0FDbnhETTtFQUNFLG9DQUFBO0FEc3hEUjs7QUM3eERNO0VBQ0Usb0NBQUE7QURneURSOztBQzl4RE07RUFDRSx5QkFBQTtBRGl5RFI7O0FDL3hETTtFQUNFLG9DQUFBO0FEa3lEUjs7QUNuekRNO0VBQ0Usb0NBQUE7QURzekRSOztBQ3B6RE07RUFDRSx5QkFBQTtBRHV6RFI7O0FDcnpETTtFQUNFLG9DQUFBO0FEd3pEUjs7QUNyekRNO0VBQ0Usb0NBQUE7QUR3ekRSOztBQ3R6RE07RUFDRSx5QkFBQTtBRHl6RFI7O0FDdnpETTtFQUNFLG9DQUFBO0FEMHpEUjs7QUNqMERNO0VBQ0Usb0NBQUE7QURvMERSOztBQ2wwRE07RUFDRSx5QkFBQTtBRHEwRFI7O0FDbjBETTtFQUNFLG9DQUFBO0FEczBEUjs7QUM3MERNO0VBQ0Usb0NBQUE7QURnMURSOztBQzkwRE07RUFDRSx5QkFBQTtBRGkxRFI7O0FDLzBETTtFQUNFLG9DQUFBO0FEazFEUjs7QUN6MURNO0VBQ0Usb0NBQUE7QUQ0MURSOztBQzExRE07RUFDRSx5QkFBQTtBRDYxRFI7O0FDMzFETTtFQUNFLG9DQUFBO0FEODFEUjs7QUNyMkRNO0VBQ0Usb0NBQUE7QUR3MkRSOztBQ3QyRE07RUFDRSx5QkFBQTtBRHkyRFI7O0FDdjJETTtFQUNFLG9DQUFBO0FEMDJEUjs7QUNqM0RNO0VBQ0Usb0NBQUE7QURvM0RSOztBQ2wzRE07RUFDRSx5QkFBQTtBRHEzRFI7O0FDbjNETTtFQUNFLG9DQUFBO0FEczNEUjs7QUM3M0RNO0VBQ0Usb0NBQUE7QURnNERSOztBQzkzRE07RUFDRSx5QkFBQTtBRGk0RFI7O0FDLzNETTtFQUNFLG9DQUFBO0FEazREUjs7QUN6NERNO0VBQ0Usb0NBQUE7QUQ0NERSOztBQzE0RE07RUFDRSx5QkFBQTtBRDY0RFI7O0FDMzRETTtFQUNFLG9DQUFBO0FEODREUjs7QUNyNURNO0VBQ0Usb0NBQUE7QUR3NURSOztBQ3Q1RE07RUFDRSx5QkFBQTtBRHk1RFI7O0FDdjVETTtFQUNFLG9DQUFBO0FEMDVEUjs7QUNqNkRNO0VBQ0Usb0NBQUE7QURvNkRSOztBQ2w2RE07RUFDRSx5QkFBQTtBRHE2RFI7O0FDbjZETTtFQUNFLG9DQUFBO0FEczZEUjs7QUM3NkRNO0VBQ0Usb0NBQUE7QURnN0RSOztBQzk2RE07RUFDRSx5QkFBQTtBRGk3RFI7O0FDLzZETTtFQUNFLG9DQUFBO0FEazdEUjs7QUN6N0RNO0VBQ0Usb0NBQUE7QUQ0N0RSOztBQzE3RE07RUFDRSx5QkFBQTtBRDY3RFI7O0FDMzdETTtFQUNFLG9DQUFBO0FEODdEUjs7QUNyOERNO0VBQ0Usb0NBQUE7QUR3OERSOztBQ3Q4RE07RUFDRSx5QkFBQTtBRHk4RFI7O0FDdjhETTtFQUNFLG9DQUFBO0FEMDhEUjs7QUMzOURNO0VBQ0Usb0NBQUE7QUQ4OURSOztBQzU5RE07RUFDRSx5QkFBQTtBRCs5RFI7O0FDNzlETTtFQUNFLG9DQUFBO0FEZytEUjs7QUM3OURNO0VBQ0Usb0NBQUE7QURnK0RSOztBQzk5RE07RUFDRSx5QkFBQTtBRGkrRFI7O0FDLzlETTtFQUNFLG9DQUFBO0FEaytEUjs7QUN6K0RNO0VBQ0Usb0NBQUE7QUQ0K0RSOztBQzErRE07RUFDRSx5QkFBQTtBRDYrRFI7O0FDMytETTtFQUNFLG9DQUFBO0FEOCtEUjs7QUNyL0RNO0VBQ0Usb0NBQUE7QUR3L0RSOztBQ3QvRE07RUFDRSx5QkFBQTtBRHkvRFI7O0FDdi9ETTtFQUNFLG9DQUFBO0FEMC9EUjs7QUNqZ0VNO0VBQ0Usb0NBQUE7QURvZ0VSOztBQ2xnRU07RUFDRSx5QkFBQTtBRHFnRVI7O0FDbmdFTTtFQUNFLG9DQUFBO0FEc2dFUjs7QUM3Z0VNO0VBQ0Usb0NBQUE7QURnaEVSOztBQzlnRU07RUFDRSx5QkFBQTtBRGloRVI7O0FDL2dFTTtFQUNFLG9DQUFBO0FEa2hFUjs7QUN6aEVNO0VBQ0Usb0NBQUE7QUQ0aEVSOztBQzFoRU07RUFDRSx5QkFBQTtBRDZoRVI7O0FDM2hFTTtFQUNFLG9DQUFBO0FEOGhFUjs7QUNyaUVNO0VBQ0Usb0NBQUE7QUR3aUVSOztBQ3RpRU07RUFDRSx5QkFBQTtBRHlpRVI7O0FDdmlFTTtFQUNFLG9DQUFBO0FEMGlFUjs7QUNqakVNO0VBQ0Usb0NBQUE7QURvakVSOztBQ2xqRU07RUFDRSx5QkFBQTtBRHFqRVI7O0FDbmpFTTtFQUNFLG9DQUFBO0FEc2pFUjs7QUM3akVNO0VBQ0Usb0NBQUE7QURna0VSOztBQzlqRU07RUFDRSx5QkFBQTtBRGlrRVI7O0FDL2pFTTtFQUNFLG9DQUFBO0FEa2tFUjs7QUN6a0VNO0VBQ0Usb0NBQUE7QUQ0a0VSOztBQzFrRU07RUFDRSx5QkFBQTtBRDZrRVI7O0FDM2tFTTtFQUNFLG9DQUFBO0FEOGtFUjs7QUNybEVNO0VBQ0Usb0NBQUE7QUR3bEVSOztBQ3RsRU07RUFDRSx5QkFBQTtBRHlsRVI7O0FDdmxFTTtFQUNFLG9DQUFBO0FEMGxFUjs7QUNqbUVNO0VBQ0Usb0NBQUE7QURvbUVSOztBQ2xtRU07RUFDRSx5QkFBQTtBRHFtRVI7O0FDbm1FTTtFQUNFLG9DQUFBO0FEc21FUjs7QUM3bUVNO0VBQ0Usb0NBQUE7QURnbkVSOztBQzltRU07RUFDRSx5QkFBQTtBRGluRVI7O0FDL21FTTtFQUNFLG9DQUFBO0FEa25FUjs7QUNub0VNO0VBQ0Usb0NBQUE7QURzb0VSOztBQ3BvRU07RUFDRSx5QkFBQTtBRHVvRVI7O0FDcm9FTTtFQUNFLG9DQUFBO0FEd29FUjs7QUNyb0VNO0VBQ0Usb0NBQUE7QUR3b0VSOztBQ3RvRU07RUFDRSx5QkFBQTtBRHlvRVI7O0FDdm9FTTtFQUNFLG9DQUFBO0FEMG9FUjs7QUNqcEVNO0VBQ0Usb0NBQUE7QURvcEVSOztBQ2xwRU07RUFDRSx5QkFBQTtBRHFwRVI7O0FDbnBFTTtFQUNFLG9DQUFBO0FEc3BFUjs7QUM3cEVNO0VBQ0Usb0NBQUE7QURncUVSOztBQzlwRU07RUFDRSx5QkFBQTtBRGlxRVI7O0FDL3BFTTtFQUNFLG9DQUFBO0FEa3FFUjs7QUN6cUVNO0VBQ0Usb0NBQUE7QUQ0cUVSOztBQzFxRU07RUFDRSx5QkFBQTtBRDZxRVI7O0FDM3FFTTtFQUNFLG9DQUFBO0FEOHFFUjs7QUNyckVNO0VBQ0Usb0NBQUE7QUR3ckVSOztBQ3RyRU07RUFDRSx5QkFBQTtBRHlyRVI7O0FDdnJFTTtFQUNFLG9DQUFBO0FEMHJFUjs7QUNqc0VNO0VBQ0Usb0NBQUE7QURvc0VSOztBQ2xzRU07RUFDRSx5QkFBQTtBRHFzRVI7O0FDbnNFTTtFQUNFLG9DQUFBO0FEc3NFUjs7QUM3c0VNO0VBQ0Usb0NBQUE7QURndEVSOztBQzlzRU07RUFDRSx5QkFBQTtBRGl0RVI7O0FDL3NFTTtFQUNFLG9DQUFBO0FEa3RFUjs7QUN6dEVNO0VBQ0Usb0NBQUE7QUQ0dEVSOztBQzF0RU07RUFDRSx5QkFBQTtBRDZ0RVI7O0FDM3RFTTtFQUNFLG9DQUFBO0FEOHRFUjs7QUNydUVNO0VBQ0Usb0NBQUE7QUR3dUVSOztBQ3R1RU07RUFDRSx5QkFBQTtBRHl1RVI7O0FDdnVFTTtFQUNFLG9DQUFBO0FEMHVFUjs7QUNqdkVNO0VBQ0Usb0NBQUE7QURvdkVSOztBQ2x2RU07RUFDRSx5QkFBQTtBRHF2RVI7O0FDbnZFTTtFQUNFLG9DQUFBO0FEc3ZFUjs7QUM3dkVNO0VBQ0Usb0NBQUE7QURnd0VSOztBQzl2RU07RUFDRSx5QkFBQTtBRGl3RVI7O0FDL3ZFTTtFQUNFLG9DQUFBO0FEa3dFUjs7QUN6d0VNO0VBQ0Usb0NBQUE7QUQ0d0VSOztBQzF3RU07RUFDRSx5QkFBQTtBRDZ3RVI7O0FDM3dFTTtFQUNFLG9DQUFBO0FEOHdFUjs7QUNyeEVNO0VBQ0Usb0NBQUE7QUR3eEVSOztBQ3R4RU07RUFDRSx5QkFBQTtBRHl4RVI7O0FDdnhFTTtFQUNFLG9DQUFBO0FEMHhFUjs7QUMzeUVNO0VBQ0Usb0NBQUE7QUQ4eUVSOztBQzV5RU07RUFDRSx5QkFBQTtBRCt5RVI7O0FDN3lFTTtFQUNFLG9DQUFBO0FEZ3pFUjs7QUM3eUVNO0VBQ0Usb0NBQUE7QURnekVSOztBQzl5RU07RUFDRSx5QkFBQTtBRGl6RVI7O0FDL3lFTTtFQUNFLG9DQUFBO0FEa3pFUjs7QUN6ekVNO0VBQ0Usb0NBQUE7QUQ0ekVSOztBQzF6RU07RUFDRSx5QkFBQTtBRDZ6RVI7O0FDM3pFTTtFQUNFLG9DQUFBO0FEOHpFUjs7QUNyMEVNO0VBQ0Usb0NBQUE7QUR3MEVSOztBQ3QwRU07RUFDRSx5QkFBQTtBRHkwRVI7O0FDdjBFTTtFQUNFLG9DQUFBO0FEMDBFUjs7QUNqMUVNO0VBQ0Usb0NBQUE7QURvMUVSOztBQ2wxRU07RUFDRSx5QkFBQTtBRHExRVI7O0FDbjFFTTtFQUNFLG9DQUFBO0FEczFFUjs7QUM3MUVNO0VBQ0Usb0NBQUE7QURnMkVSOztBQzkxRU07RUFDRSx5QkFBQTtBRGkyRVI7O0FDLzFFTTtFQUNFLG9DQUFBO0FEazJFUjs7QUN6MkVNO0VBQ0Usb0NBQUE7QUQ0MkVSOztBQzEyRU07RUFDRSx5QkFBQTtBRDYyRVI7O0FDMzJFTTtFQUNFLG9DQUFBO0FEODJFUjs7QUNyM0VNO0VBQ0Usb0NBQUE7QUR3M0VSOztBQ3QzRU07RUFDRSx5QkFBQTtBRHkzRVI7O0FDdjNFTTtFQUNFLG9DQUFBO0FEMDNFUjs7QUNqNEVNO0VBQ0Usb0NBQUE7QURvNEVSOztBQ2w0RU07RUFDRSx5QkFBQTtBRHE0RVI7O0FDbjRFTTtFQUNFLG9DQUFBO0FEczRFUjs7QUM3NEVNO0VBQ0Usb0NBQUE7QURnNUVSOztBQzk0RU07RUFDRSx5QkFBQTtBRGk1RVI7O0FDLzRFTTtFQUNFLG9DQUFBO0FEazVFUjs7QUN6NUVNO0VBQ0Usb0NBQUE7QUQ0NUVSOztBQzE1RU07RUFDRSx5QkFBQTtBRDY1RVI7O0FDMzVFTTtFQUNFLG9DQUFBO0FEODVFUjs7QUNyNkVNO0VBQ0Usb0NBQUE7QUR3NkVSOztBQ3Q2RU07RUFDRSx5QkFBQTtBRHk2RVI7O0FDdjZFTTtFQUNFLG9DQUFBO0FEMDZFUjs7QUNqN0VNO0VBQ0Usb0NBQUE7QURvN0VSOztBQ2w3RU07RUFDRSx5QkFBQTtBRHE3RVI7O0FDbjdFTTtFQUNFLG9DQUFBO0FEczdFUjs7QUM3N0VNO0VBQ0Usb0NBQUE7QURnOEVSOztBQzk3RU07RUFDRSx5QkFBQTtBRGk4RVI7O0FDLzdFTTtFQUNFLG9DQUFBO0FEazhFUjs7QUNuOUVNO0VBQ0Usb0NBQUE7QURzOUVSOztBQ3A5RU07RUFDRSx5QkFBQTtBRHU5RVI7O0FDcjlFTTtFQUNFLG9DQUFBO0FEdzlFUjs7QUNyOUVNO0VBQ0Usb0NBQUE7QUR3OUVSOztBQ3Q5RU07RUFDRSx5QkFBQTtBRHk5RVI7O0FDdjlFTTtFQUNFLG9DQUFBO0FEMDlFUjs7QUNqK0VNO0VBQ0Usb0NBQUE7QURvK0VSOztBQ2wrRU07RUFDRSx5QkFBQTtBRHErRVI7O0FDbitFTTtFQUNFLG9DQUFBO0FEcytFUjs7QUM3K0VNO0VBQ0Usb0NBQUE7QURnL0VSOztBQzkrRU07RUFDRSx5QkFBQTtBRGkvRVI7O0FDLytFTTtFQUNFLG9DQUFBO0FEay9FUjs7QUN6L0VNO0VBQ0Usb0NBQUE7QUQ0L0VSOztBQzEvRU07RUFDRSx5QkFBQTtBRDYvRVI7O0FDMy9FTTtFQUNFLG9DQUFBO0FEOC9FUjs7QUNyZ0ZNO0VBQ0Usb0NBQUE7QUR3Z0ZSOztBQ3RnRk07RUFDRSx5QkFBQTtBRHlnRlI7O0FDdmdGTTtFQUNFLG9DQUFBO0FEMGdGUjs7QUNqaEZNO0VBQ0Usb0NBQUE7QURvaEZSOztBQ2xoRk07RUFDRSx5QkFBQTtBRHFoRlI7O0FDbmhGTTtFQUNFLG9DQUFBO0FEc2hGUjs7QUM3aEZNO0VBQ0Usb0NBQUE7QURnaUZSOztBQzloRk07RUFDRSx5QkFBQTtBRGlpRlI7O0FDL2hGTTtFQUNFLG9DQUFBO0FEa2lGUjs7QUN6aUZNO0VBQ0Usb0NBQUE7QUQ0aUZSOztBQzFpRk07RUFDRSx5QkFBQTtBRDZpRlI7O0FDM2lGTTtFQUNFLG9DQUFBO0FEOGlGUjs7QUNyakZNO0VBQ0Usb0NBQUE7QUR3akZSOztBQ3RqRk07RUFDRSx5QkFBQTtBRHlqRlI7O0FDdmpGTTtFQUNFLG9DQUFBO0FEMGpGUjs7QUNqa0ZNO0VBQ0Usb0NBQUE7QURva0ZSOztBQ2xrRk07RUFDRSx5QkFBQTtBRHFrRlI7O0FDbmtGTTtFQUNFLG9DQUFBO0FEc2tGUjs7QUM3a0ZNO0VBQ0Usb0NBQUE7QURnbEZSOztBQzlrRk07RUFDRSx5QkFBQTtBRGlsRlI7O0FDL2tGTTtFQUNFLG9DQUFBO0FEa2xGUjs7QUN6bEZNO0VBQ0Usb0NBQUE7QUQ0bEZSOztBQzFsRk07RUFDRSx5QkFBQTtBRDZsRlI7O0FDM2xGTTtFQUNFLG9DQUFBO0FEOGxGUjs7QUNybUZNO0VBQ0Usb0NBQUE7QUR3bUZSOztBQ3RtRk07RUFDRSx5QkFBQTtBRHltRlI7O0FDdm1GTTtFQUNFLG9DQUFBO0FEMG1GUjs7QUMzbkZNO0VBQ0Usb0NBQUE7QUQ4bkZSOztBQzVuRk07RUFDRSx5QkFBQTtBRCtuRlI7O0FDN25GTTtFQUNFLG9DQUFBO0FEZ29GUjs7QUM3bkZNO0VBQ0Usb0NBQUE7QURnb0ZSOztBQzluRk07RUFDRSx5QkFBQTtBRGlvRlI7O0FDL25GTTtFQUNFLG9DQUFBO0FEa29GUjs7QUN6b0ZNO0VBQ0Usb0NBQUE7QUQ0b0ZSOztBQzFvRk07RUFDRSx5QkFBQTtBRDZvRlI7O0FDM29GTTtFQUNFLG9DQUFBO0FEOG9GUjs7QUNycEZNO0VBQ0Usb0NBQUE7QUR3cEZSOztBQ3RwRk07RUFDRSx5QkFBQTtBRHlwRlI7O0FDdnBGTTtFQUNFLG9DQUFBO0FEMHBGUjs7QUNqcUZNO0VBQ0Usb0NBQUE7QURvcUZSOztBQ2xxRk07RUFDRSx5QkFBQTtBRHFxRlI7O0FDbnFGTTtFQUNFLG9DQUFBO0FEc3FGUjs7QUM3cUZNO0VBQ0Usb0NBQUE7QURnckZSOztBQzlxRk07RUFDRSx5QkFBQTtBRGlyRlI7O0FDL3FGTTtFQUNFLG9DQUFBO0FEa3JGUjs7QUN6ckZNO0VBQ0Usb0NBQUE7QUQ0ckZSOztBQzFyRk07RUFDRSx5QkFBQTtBRDZyRlI7O0FDM3JGTTtFQUNFLG9DQUFBO0FEOHJGUjs7QUNyc0ZNO0VBQ0Usb0NBQUE7QUR3c0ZSOztBQ3RzRk07RUFDRSx5QkFBQTtBRHlzRlI7O0FDdnNGTTtFQUNFLG9DQUFBO0FEMHNGUjs7QUNqdEZNO0VBQ0Usb0NBQUE7QURvdEZSOztBQ2x0Rk07RUFDRSx5QkFBQTtBRHF0RlI7O0FDbnRGTTtFQUNFLG9DQUFBO0FEc3RGUjs7QUM3dEZNO0VBQ0Usb0NBQUE7QURndUZSOztBQzl0Rk07RUFDRSx5QkFBQTtBRGl1RlI7O0FDL3RGTTtFQUNFLG9DQUFBO0FEa3VGUjs7QUN6dUZNO0VBQ0Usb0NBQUE7QUQ0dUZSOztBQzF1Rk07RUFDRSx5QkFBQTtBRDZ1RlI7O0FDM3VGTTtFQUNFLG9DQUFBO0FEOHVGUjs7QUNydkZNO0VBQ0Usb0NBQUE7QUR3dkZSOztBQ3R2Rk07RUFDRSx5QkFBQTtBRHl2RlI7O0FDdnZGTTtFQUNFLG9DQUFBO0FEMHZGUjs7QUNqd0ZNO0VBQ0Usb0NBQUE7QURvd0ZSOztBQ2x3Rk07RUFDRSx5QkFBQTtBRHF3RlI7O0FDbndGTTtFQUNFLG9DQUFBO0FEc3dGUjs7QUM3d0ZNO0VBQ0Usb0NBQUE7QURneEZSOztBQzl3Rk07RUFDRSx5QkFBQTtBRGl4RlI7O0FDL3dGTTtFQUNFLG9DQUFBO0FEa3hGUjs7QUNueUZNO0VBQ0Usb0NBQUE7QURzeUZSOztBQ3B5Rk07RUFDRSx5QkFBQTtBRHV5RlI7O0FDcnlGTTtFQUNFLG9DQUFBO0FEd3lGUjs7QUNyeUZNO0VBQ0Usb0NBQUE7QUR3eUZSOztBQ3R5Rk07RUFDRSx5QkFBQTtBRHl5RlI7O0FDdnlGTTtFQUNFLG9DQUFBO0FEMHlGUjs7QUNqekZNO0VBQ0Usb0NBQUE7QURvekZSOztBQ2x6Rk07RUFDRSx5QkFBQTtBRHF6RlI7O0FDbnpGTTtFQUNFLG9DQUFBO0FEc3pGUjs7QUM3ekZNO0VBQ0Usb0NBQUE7QURnMEZSOztBQzl6Rk07RUFDRSx5QkFBQTtBRGkwRlI7O0FDL3pGTTtFQUNFLG9DQUFBO0FEazBGUjs7QUN6MEZNO0VBQ0Usb0NBQUE7QUQ0MEZSOztBQzEwRk07RUFDRSx5QkFBQTtBRDYwRlI7O0FDMzBGTTtFQUNFLG9DQUFBO0FEODBGUjs7QUNyMUZNO0VBQ0Usb0NBQUE7QUR3MUZSOztBQ3QxRk07RUFDRSx5QkFBQTtBRHkxRlI7O0FDdjFGTTtFQUNFLG9DQUFBO0FEMDFGUjs7QUNqMkZNO0VBQ0Usb0NBQUE7QURvMkZSOztBQ2wyRk07RUFDRSx5QkFBQTtBRHEyRlI7O0FDbjJGTTtFQUNFLG9DQUFBO0FEczJGUjs7QUM3MkZNO0VBQ0Usb0NBQUE7QURnM0ZSOztBQzkyRk07RUFDRSx5QkFBQTtBRGkzRlI7O0FDLzJGTTtFQUNFLG9DQUFBO0FEazNGUjs7QUN6M0ZNO0VBQ0Usb0NBQUE7QUQ0M0ZSOztBQzEzRk07RUFDRSx5QkFBQTtBRDYzRlI7O0FDMzNGTTtFQUNFLG9DQUFBO0FEODNGUjs7QUNyNEZNO0VBQ0Usb0NBQUE7QUR3NEZSOztBQ3Q0Rk07RUFDRSx5QkFBQTtBRHk0RlI7O0FDdjRGTTtFQUNFLG9DQUFBO0FEMDRGUjs7QUMzNUZNO0VBQ0Usb0NBQUE7QUQ4NUZSOztBQzU1Rk07RUFDRSx5QkFBQTtBRCs1RlI7O0FDNzVGTTtFQUNFLG9DQUFBO0FEZzZGUjs7QUM3NUZNO0VBQ0Usb0NBQUE7QURnNkZSOztBQzk1Rk07RUFDRSx5QkFBQTtBRGk2RlI7O0FDLzVGTTtFQUNFLG9DQUFBO0FEazZGUjs7QUN6NkZNO0VBQ0Usb0NBQUE7QUQ0NkZSOztBQzE2Rk07RUFDRSx5QkFBQTtBRDY2RlI7O0FDMzZGTTtFQUNFLG9DQUFBO0FEODZGUjs7QUNyN0ZNO0VBQ0Usb0NBQUE7QUR3N0ZSOztBQ3Q3Rk07RUFDRSx5QkFBQTtBRHk3RlI7O0FDdjdGTTtFQUNFLG9DQUFBO0FEMDdGUjs7QUNqOEZNO0VBQ0Usb0NBQUE7QURvOEZSOztBQ2w4Rk07RUFDRSx5QkFBQTtBRHE4RlI7O0FDbjhGTTtFQUNFLG9DQUFBO0FEczhGUjs7QUM3OEZNO0VBQ0Usb0NBQUE7QURnOUZSOztBQzk4Rk07RUFDRSx5QkFBQTtBRGk5RlI7O0FDLzhGTTtFQUNFLG9DQUFBO0FEazlGUjs7QUN6OUZNO0VBQ0Usb0NBQUE7QUQ0OUZSOztBQzE5Rk07RUFDRSx5QkFBQTtBRDY5RlI7O0FDMzlGTTtFQUNFLG9DQUFBO0FEODlGUjs7QUNyK0ZNO0VBQ0Usb0NBQUE7QUR3K0ZSOztBQ3QrRk07RUFDRSx5QkFBQTtBRHkrRlI7O0FDditGTTtFQUNFLG9DQUFBO0FEMCtGUjs7QUNqL0ZNO0VBQ0Usb0NBQUE7QURvL0ZSOztBQ2wvRk07RUFDRSx5QkFBQTtBRHEvRlI7O0FDbi9GTTtFQUNFLG9DQUFBO0FEcy9GUjs7QUM3L0ZNO0VBQ0Usb0NBQUE7QURnZ0dSOztBQzkvRk07RUFDRSx5QkFBQTtBRGlnR1I7O0FDLy9GTTtFQUNFLG9DQUFBO0FEa2dHUjs7QUNuaEdNO0VBQ0Usb0NBQUE7QURzaEdSOztBQ3BoR007RUFDRSx5QkFBQTtBRHVoR1I7O0FDcmhHTTtFQUNFLG9DQUFBO0FEd2hHUjs7QUNyaEdNO0VBQ0Usb0NBQUE7QUR3aEdSOztBQ3RoR007RUFDRSx5QkFBQTtBRHloR1I7O0FDdmhHTTtFQUNFLG9DQUFBO0FEMGhHUjs7QUNqaUdNO0VBQ0Usb0NBQUE7QURvaUdSOztBQ2xpR007RUFDRSx5QkFBQTtBRHFpR1I7O0FDbmlHTTtFQUNFLG9DQUFBO0FEc2lHUjs7QUM3aUdNO0VBQ0Usb0NBQUE7QURnakdSOztBQzlpR007RUFDRSx5QkFBQTtBRGlqR1I7O0FDL2lHTTtFQUNFLG9DQUFBO0FEa2pHUjs7QUN6akdNO0VBQ0Usb0NBQUE7QUQ0akdSOztBQzFqR007RUFDRSx5QkFBQTtBRDZqR1I7O0FDM2pHTTtFQUNFLG9DQUFBO0FEOGpHUjs7QUNya0dNO0VBQ0Usb0NBQUE7QUR3a0dSOztBQ3RrR007RUFDRSx5QkFBQTtBRHlrR1I7O0FDdmtHTTtFQUNFLG9DQUFBO0FEMGtHUjs7QUNqbEdNO0VBQ0Usb0NBQUE7QURvbEdSOztBQ2xsR007RUFDRSx5QkFBQTtBRHFsR1I7O0FDbmxHTTtFQUNFLG9DQUFBO0FEc2xHUjs7QUM3bEdNO0VBQ0Usb0NBQUE7QURnbUdSOztBQzlsR007RUFDRSx5QkFBQTtBRGltR1I7O0FDL2xHTTtFQUNFLG9DQUFBO0FEa21HUjs7QUN6bUdNO0VBQ0Usb0NBQUE7QUQ0bUdSOztBQzFtR007RUFDRSx5QkFBQTtBRDZtR1I7O0FDM21HTTtFQUNFLG9DQUFBO0FEOG1HUjs7QUNybkdNO0VBQ0Usb0NBQUE7QUR3bkdSOztBQ3RuR007RUFDRSx5QkFBQTtBRHluR1I7O0FDdm5HTTtFQUNFLG9DQUFBO0FEMG5HUjs7QUM1bUdFO0VBQ0Usb0NBQUE7QUQrbUdKOztBQzdtR0U7RUFDRSx5QkFBQTtBRGduR0o7O0FDcG5HRTtFQUNFLG9DQUFBO0FEdW5HSjs7QUNybkdFO0VBQ0UseUJBQUE7QUR3bkdKOztBQzVuR0U7RUFDRSx3Q0FBQTtBRCtuR0o7O0FDN25HRTtFQUNFLDZCQUFBO0FEZ29HSjs7QUV4cUdBOzs7O0VBQUE7QUFLQzs7RUFFQyxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxzRUFBQTtFQUNBLGdCQUFBO0VBQ0EsaUNBQUE7RUFDQSxnQkFBQTtFQUNBLG9CQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtFQUNBLGdCQUFBO0VBRUEsZ0JBQUE7RUFDQSxjQUFBO0VBQ0EsV0FBQTtFQUVBLHFCQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtFQUNBLGFBQUE7QUZ5cUdGOztBRXRxR0M7O0VBRUMsMEJBQUEsRUFBQSxZQUFBO0FGeXFHRjs7QUV0cUdDLGdCQUFBO0FBQ0E7RUFDQyxvQkFBQTtFQUNBLG1DQUFBLEVBQUEsWUFBQTtFQUNBLHFDQUFBO0VBQ0EsZUFBQTtFQUNBLGNBQUE7RUFDQSxZQUFBO0FGeXFHRjs7QUV0cUdDO0VBQ0MsWUFBQTtFQUNBLDZCQUFBLEVBQUEsWUFBQTtBRnlxR0Y7O0FFdHFHQztFQUNDLFdBQUE7RUFDQSw2QkFBQSxFQUFBLFlBQUE7QUZ5cUdGOztBRXRxR0MsMEJBQUE7QUFDQTs7RUFFQyxpQkFBQTtFQUNBLGtDQUFBLEVBQUEsWUFBQTtBRnlxR0Y7O0FFdHFHQzs7RUFFQyxpQkFBQTtFQUNBLGtDQUFBLEVBQUEsWUFBQTtBRnlxR0Y7O0FFdHFHQyxnQkFBQTtBQUNBO0VBQ0Msb0JBQUE7RUFDQSxvQ0FBQSxFQUFBLFlBQUE7RUFDQSw0Q0FBQTtFQUNBLDRCQUFBO0VBQ0EsbUJBQUE7QUZ5cUdGOztBRXRxR0M7Ozs7RUFJQyxzQkFBQSxFQUFBLFlBQUE7QUZ5cUdGOztBRXRxR0M7RUFDQyxZQUFBO0FGeXFHRjs7QUV0cUdDO0VBQ0MsWUFBQTtBRnlxR0Y7O0FFdHFHQzs7OztFQUlDLHdCQUFBLEVBQUEsWUFBQTtBRnlxR0Y7O0FFdHFHQzs7Ozs7O0VBTUMsd0JBQUEsRUFBQSxZQUFBO0FGeXFHRjs7QUV0cUdDOzs7Ozs7Ozs7OztFQVdDLHdCQUFBLEVBQUEsWUFBQTtBRnlxR0Y7O0FFdHFHQztFQUNDLHlCQUFBLEVBQUEsWUFBQTtBRnlxR0Y7O0FFdHFHQzs7RUFFQyx3QkFBQSxFQUFBLFlBQUE7QUZ5cUdGOztBRXRxR0M7O0VBRUMsaUJBQUE7QUZ5cUdGOztBRXZxR0M7RUFDQyxrQkFBQTtBRjBxR0Y7O0FFdnFHQztFQUNDLFlBQUE7QUYwcUdGOztBRXZxR0M7RUFDQyxzQkFBQTtFQUNBLGtCQUFBO0FGMHFHRjs7QUV2cUdDLFdBQUE7QUFDQTs7O0VBR0Msd0JBQUEsRUFBQSxZQUFBO0FGMHFHRjs7QUV2cUdDLGtGQUFBO0FBQ0E7RUFDQyxrQkFBQTtFQUNBLFVBQUE7QUYwcUdGOztBRXZxR0M7RUFDQyxrQ0FBQSxFQUFBLFlBQUE7RUFDQSxxRkFBQSxFQUFBLFlBQUE7RUFDQSx5Q0FBQSxFQUFBLFlBQUE7RUFDQSxzQ0FBQSxFQUFBLFlBQUE7RUFDQSxPQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQSxFQUFBLGlDQUFBO0VBQ0Esa0JBQUE7RUFDQSxvQkFBQTtFQUNBLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtBRjBxR0Y7O0FFdnFHQzs7RUFFQyxvQ0FBQSxFQUFBLFlBQUE7RUFDQSxvQkFBQTtFQUNBLHVCQUFBO0VBQ0Esd0JBQUEsRUFBQSxZQUFBO0VBQ0EseUJBQUE7RUFDQSw2QkFBQTtFQUNBLFdBQUE7RUFDQSxjQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7RUFDQSxVQUFBO0VBQ0EscUJBQUE7QUYwcUdGOztBRXZxR0M7RUFDQyxhQUFBO0VBQ0EsdUJBQUE7RUFDQSxTQUFBO0FGMHFHRjs7QUcxMkdBO0VBQ0UsaUNBQUE7RUFDQSxlQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0VBQ0EsbUJBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtFQUNDLGtDQUFBO0FINjJHSDs7QUcxMkdBO0VBQ0ksY0FBQTtFQUNBLGFBQUE7RUFDQSxrQkFBQTtBSDYyR0o7O0FHMTJHQTtFQUNJLFdBQUE7RUFDQSxhQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLFlBQUE7QUg2MkdKOztBRzEyR0E7RUFDRSxZQUFBO0VBQ0EsbUJBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EsaUJBQUE7RUFDQSxXQUFBO0VBQ0EsZ0JBQUE7QUg2MkdGO0FHMzJHSTtFQUNJLDRCQUFBO0VBQ0EsY0FBQTtBSDYyR1I7QUd4MkdJO0VBQ0ksYUFBQTtFQUNBLGNBQUE7QUgwMkdSOztBR3AyR0EsNEJBQUE7QUFFQTtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsbUJBQUE7RUFDQSxjQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtBSHMyR0Y7O0FHbjJHQTtFQUNFLFlBQUE7RUFDQSxZQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxlQUFBO0FIczJHRjs7QUduMkdBO0VBQ0UsaUJBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EsV0FBQTtBSHMyR0Y7O0FHbjJHQSxjQUFBO0FBRUE7RUFDRSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsWUFBQTtBSHEyR0Y7O0FHbDJHQTtFQUNFLG1CQUFBO0FIcTJHRjs7QUdsMkdBO0VBQ0UsbUJBQUE7QUhxMkdGOztBR2wyR0E7RUFDRSxtQkFBQTtBSHEyR0Y7O0FHbDJHQTtFQUNFLGFBQUE7QUhxMkdGOztBR2wyR0E7RUFDRSxZQUFBO0VBQ0EsTUFBQTtBSHEyR0Y7O0FHbDJHQTtFQUNJLFdBQUE7RUFDQSxpQkFBQTtFQUNBLGFBQUE7QUhxMkdKOztBSTc5R0E7RUFDRSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsMkJBQUE7RUFDQSxnQkFBQTtFQUNBLE9BQUE7RUFDQSxNQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQTtFQUNBLHlCQUFBO0FKZytHRjs7QUk3OUdBO0VBQ0Usa0JBQUE7RUFDQSxVQUFBO0VBQ0EsV0FBQTtFQUNBLFdBQUE7RUFDQSwwQkFBQTtFQUNBLHlCQUFBO0VBQ0EsV0FBQTtFQUNBLHdCQUFBO0VBQ0Esa0JBQUE7QUpnK0dGOztBSzUvR0E7RUFDRSwyQkFBQTtBTCsvR0Y7O0FLNS9HQSwwQkFBQTtBQUNBO0VBQ0UsK0dBQUE7QUwrL0dGOztBSzUvR0E7RUFDRSwrR0FBQTtBTCsvR0Y7O0FLMy9HQSwwQkFBQTtBQUNBO0VBQ0UsZ0hBQUE7QUw4L0dGOztBSzEvR0EsMkJBQUE7QUFDQTtFQUNFLHFIQUFBO0FMNi9HRjs7QUt6L0dBLG1CQUFBO0FBQ0E7RUFDRSx1SEFBQTtBTDQvR0Y7O0FLeC9HQSxtQkFBQTtBQUNBO0VBQ0Usd0hBQUE7QUwyL0dGOztBS3YvR0EsbUJBQUE7QUFDQTtFQUNJLHlHQUNBO0FMeS9HSjs7QUtwL0dBO0VBQ0UsNEJBQUE7QUx1L0dGO0FLci9HRTtFQUNFLDZFQUFBO0FMdS9HSjs7QU16aUhBOzs7Ozs7O0VBQUE7QUFVQTtFQUNFLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLHFCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLHdDQUFBO0VBQ0Esc0JBQUE7RUFDQSxVQUFBO0VBQ0EseUJBQUE7QU4waUhGO0FNeGlIRTtFQUNFLGtCQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBO0VBRUEsOEJBQUE7RUFDQSw2QkFBQTtFQUNBLHVDQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtBTnlpSEo7QU1yaUhFO0VBQ0UsMkNBQUE7QU51aUhKO0FNcmlIRTtFQUNFLHdDQUFBO0FOdWlISjtBTXJpSEU7RUFDRSx5Q0FBQTtBTnVpSEo7QU1yaUhFO0VBQ0Usd0NBQUE7QU51aUhKO0FNcmlIRTtFQUNFLHlDQUFBO0FOdWlISjtBTXJpSEU7RUFDRSx3Q0FBQTtBTnVpSEo7QU1yaUhFO0VBQ0Usd0NBQUE7QU51aUhKO0FNbmlIRTtFQUNFLFNBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsdUJBQUE7RUFDQSxnQkFBQTtBTnFpSEo7QU1saUhFO0VBQ0Usa0JBQUE7RUFDQSxXQUFBO0FOb2lISjs7QU1oaUhBO0VBQ0UsMkJBQUE7QU5taUhGOztBTWhpSEE7RUFDRSx3QkFBQTtFQUNBLDJFQUFBO0FObWlIRjs7QU1oaUhBO0VBQ0Usb0JBQUE7RUFDQSxzQkFBQTtBTm1pSEY7QU1qaUhFO0VBQ0Usa0JBQUE7RUFDQSxNQUFBO0VBQ0EsT0FBQTtFQUNBLFVBQUE7QU5taUhKOztBTS9oSEE7RUFDRSxrQkFBQTtFQUNBLFlBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtFQUNBLHdCQUFBO0FOa2lIRjs7QU0vaEhBO0VBQ0UsY0FBQTtBTmtpSEY7O0FNL2hIQSxvQ0FBQTtBQUNBO0VBQ0UsV0FBQTtBTmtpSEY7O0FPbHBIQTtFQVFFLGVBQUE7RUFDQSxPQUFBO0VBQ0EsUUFBQTtFQUNBLHlCQUFBO0VBQ0EsVUFBQTtFQUNBLGVBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBRUEsa0JBQUE7RUFDQSx5QkFBQTtBUDZvSEY7QU8vcEhFO0VBQ0UsYUFBQTtBUGlxSEo7QU85b0hFO0VBckJGO0lBc0JHLFVBQUE7RVBpcEhEO0FBQ0Y7QU8vb0hFO0VBQ0UsYUFBQTtBUGlwSEo7QU85b0hFO0VBQ0UsYUFBQTtBUGdwSEo7QU85b0hFO0VBQ0UsZUFBQTtBUGdwSEo7QU83b0hFO0VBQ0UsMEJBQUE7RUFDQSx5QkFBQTtFQUNBLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQSxpQkFBQTtBUCtvSEo7QU83b0hJO0VBQ0UsYUFBQTtBUCtvSE47QU81b0hFO0VBQ0UsMEJBQUE7RUFDQSx5QkFBQTtFQUNBLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQSxpQkFBQTtBUDhvSEo7QU81b0hJO0VBQ0UsYUFBQTtBUDhvSE47O0FPMW9IQTtFQUNFLGVBQUE7RUFDQSxZQUFBO0VBQ0EsU0FBQTtFQUNBLE9BQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBRUEsb0JBQUE7QVA0b0hGOztBT3hvSEE7RUFDRSxVQUFBO0VBQ0EsV0FBQTtBUDJvSEY7QU96b0hFO0VBQ0Usa0JBQUE7RUFDQSx5QkFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLGdCQUFBO0FQMm9ISjtBT3hvSEU7RUFDRSx3Q0FBQTtFQUNBLGtCQUFBO0VBQ0EsU0FBQTtBUDBvSEo7O0FPcm9IQTtFQUNFLFNBQUE7RUFDQSxhQUFBO0VBQ0EsU0FBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7RUFDQSw0QkFBQTtBUHdvSEY7O0FRaHZIQTs7O0VBR0UsU0FBQTtFQUNBLFlBQUE7QVJtdkhGOztBUS91SEE7RUFDRSxTQUFBO0VBQ0EsVUFBQTtFQUNBLHNCQUFBO0FSa3ZIRjs7QVEvdUhBO0VBQ0UsMkJBQUEsRUFBQSxlQUFBO0VBQ0EseUJBQUEsRUFBQSxXQUFBO0VBQ0Esd0JBQUEsRUFBQSxtQkFBQTtFQUNBLHNCQUFBLEVBQUEsNEJBQUE7RUFDQSxxQkFBQSxFQUFBLDJCQUFBO0VBQ0EsaUJBQUE7RUFDQTtpRkFBQTtBUm12SEY7O0FROXVIRTtFQUNFLGVBQUE7RUFDQSxxQkFBQTtBUml2SEo7QVEvdUhJO0VBQ0UscUJBQUE7QVJpdkhOOztBUTV1SEE7RUFDQyxjQzdCWTtFRDhCWixxQkFBQTtFQUdDLHdDQUFBO0FSNnVIRjs7QVExdUhBO0VBQ0UsV0FBQTtBUjZ1SEY7O0FRMXVIQTtFQUNFLGlCQUFBO0FSNnVIRjs7QVEzdUhBO0VBQ0Usa0JBQUE7QVI4dUhGOztBUTN1SEE7RUFDRSxhQUFBO0VBQ0EsbUJBQUE7QVI4dUhGOztBUTF1SEE7RUFDRSxtQkFBQTtBUjZ1SEY7O0FReHVIQTtFQUNFLDJDQUFBO0VBQ0EseUJBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7QVIydUhGO0FRMXVIRTtFQUNFLHNCQ29La0I7RURuS2xCLG1CQ3dLcUI7RUR2S3JCLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLGdDQUFBO0FSNHVISjtBUXp1SE07RUFDRSxzQkMrSm9CO0FUNGtINUI7QVF0dUhJO0VBQ0UsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0FSd3VITjtBUXB1SE07O0VBRUUsa0JBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLHFCQUFBO0VBQ0Esc0JBQUE7QVJzdUhSO0FRbnVITTtFQUNFLGVBQUE7RUFDQSxpQkFBQTtFQUNBLFdBQUE7RUFDQSxzQkFBQTtFQUNBLGtCQUFBO0FScXVIUjtBUWp1SE07RUFDRSxlQUFBO0FSbXVIUjtBUWh1SE07RUFDRSxTQUFBO0FSa3VIUjtBUS90SE07RUFDRSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxXQUFBO0FSaXVIUjtBUTN0SEk7RUFDRSxtQkFBQTtBUjZ0SE47QVExdEhJO0VBQ0UseUJDbklZO0VEb0laLGNDdUdvQjtBVHFuSDFCO0FRMXRITTtFQUNFLFdBQUE7QVI0dEhSO0FRdnRIRTtFQUNFLGNBQUE7RUFDQSxpQkFBQTtFQUNBLGNDL0ljO0FUdzJIbEI7QVF0dEhNO0VBQ0Usc0JDeUZvQjtBVCtuSDVCO0FRbHRISTtFQUNFLHNCQytFZ0I7RUQ5RWhCLGdDQUFBO0VBQ0Esa0JBQUE7QVJvdEhOO0FRanRISTtFQUNFLGtCQUFBO0FSbXRITjtBUWh0SEk7RUFDRSxrQkFBQTtBUmt0SE47O0FRM3NIQTtFQUNFLFlBQUE7RUFDQSxjQzdLZ0I7QVQyM0hsQjs7QVEzc0hBO0VBQ0UsU0FBQTtFQUNBLFlBQUE7QVI4c0hGOztBUTFzSEE7RUFDRSxlQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxRQUFBO0VBQ0EsYUFBQTtFQUNBLFlBQUE7RUFDQSxzQkFBQTtFQUNBLG9DQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSx1QkFBQTtBUjZzSEY7QVEzc0hFO0VBQ0UsZ0JBQUE7QVI2c0hKO0FRNXNISTtFQUNFLGdCQUFBO0FSOHNITjs7QVEvckhBOztzQkFBQTtBQUlFO0VBREY7SUFFSSx3QkFBQTtFUmtzSEY7QUFDRjs7QVEvckhFO0VBREY7SUFFSSx3QkFBQTtFUm1zSEY7QUFDRjs7QVFoc0hFO0VBREY7SUFFSSx3QkFBQTtFUm9zSEY7QUFDRjs7QVFqc0hFO0VBREY7SUFFSSx3QkFBQTtFUnFzSEY7QUFDRjs7QVFsc0hFO0VBREY7SUFFSSx3QkFBQTtFUnNzSEY7QUFDRjs7QVFuc0hFO0VBREY7SUFFSSx3QkFBQTtFUnVzSEY7QUFDRjs7QVFwc0hFO0VBREY7SUFFSSx5QkFBQTtFUndzSEY7QUFDRjs7QVFyc0hFO0VBREY7SUFFSSx5QkFBQTtFUnlzSEY7QUFDRjs7QVF0c0hFO0VBREY7SUFFSSx5QkFBQTtFUjBzSEY7QUFDRjs7QVF2c0hFO0VBREY7SUFFSSx5QkFBQTtFUjJzSEY7QUFDRjs7QVF4c0hFO0VBREY7SUFFSSx5QkFBQTtFUjRzSEY7QUFDRjs7QVF6c0hFO0VBREY7SUFFSSx5QkFBQTtFUjZzSEY7QUFDRjs7QVF2c0hFO0VBREY7SUFFSSxrQkFBQTtFUjJzSEY7QUFDRjs7QVFqc0hBOzttQkFBQTtBQUlBO0VBQ0Usd0JBQUE7QVJtc0hGOztBUS9ySEE7RUFDRSxnQkFBQTtBUmtzSEY7O0FRaHNIQTtFQUNFLGlCQUFBO0FSbXNIRjs7QVFqc0hBO0VBQ0Usa0JBQUE7QVJvc0hGOztBUWpzSEE7RUFDRSxzQkFBQTtBUm9zSEY7O0FRbHNIQTtFQUNFLHVCQUFBO0FScXNIRjs7QVFqc0hBO0VBQ0UsaUJBQUE7QVJvc0hGOztBUWpzSEE7RUFDRSxrQkFBQTtBUm9zSEY7O0FRanNIQTtFQUNFLGNBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBO0FSb3NIRjs7QVFqc0hBO0VBQ0UsY0FBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSx1QkFBQTtBUm9zSEY7O0FRanNIQTtFQUNFLHFCQUFBO0FSb3NIRjs7QVU3aElBO0VBQ0UsZUFBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLGlCRFNhO0VDUmIsWURRYTtFQ1BiLGNBQUE7RUFDQSxZQUFBO0VBQ0Esc0JBQUE7QVZnaUlGO0FVOWhJRTtFQUNFLGdCQUFBO0VBQ0EsaUJBQUE7RUFDQSxXQUFBO0VBQ0EseUJEWmM7RUNhZCxrQkFBQTtBVmdpSUo7QVU3aElFO0VBQ0UsZUFBQTtBVitoSUo7QVU1aElFO0VBQ0UscUNBQUE7QVY4aElKOztBVXpoSUE7RUFDRSxxQkFBQTtFQUNBLFdBQUE7RUFDQSxnQkFBQTtFQUNBLGlCRG5CYTtFQ29CYixZRHBCYTtFQ3FCYiw0QkFBQTtBVjRoSUY7O0FVeGhJQTtFQUNFLGdDQUFBO0FWMmhJRjs7QVV4aElBO0VBQ0UsaUJBQUE7QVYyaElGOztBVXhoSUE7RUFDRSxrQkFBQTtBVjJoSUY7O0FVeGhJQTtFQUNFLHFCQUFBO0VBQ0EsV0FBQTtFQUNBLGlCQUFBO0FWMmhJRjs7QVdubElBO0VBT0UscUJBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0VBQ0EseUJBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxtQkFBQTtFQUNBLHlCRlFjO0VFUGQsa0JGVVk7RUVUWixpQkZTWTtBVHVrSWQ7QVdobUlFO0VBQ0UsYUFBQTtFQUNBLHlCRnNCa0I7RUVyQmxCLFdBQUE7QVhrbUlKO0FXbmxJRTtFQUNFLFdBQUE7RUFDQSxxQkFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7QVhxbElKO0FXbGxJRTtFQUNFLGVBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtFQUNBLGlCQUFBO0VBQ0EsaUJBQUE7QVhvbElKOztBV2hsSUE7RUFDRSxZQUFBO0VBQ0EsZ0NBQUE7RUFDQSxnQkFBQTtFQUNBLGlCRjRCYTtFRTNCYixnQkFBQTtFQUNBLGFBQUE7RUFDQSxvQkFBQTtBWG1sSUY7QVdqbElFO0VBQ0UsZ0NBQUE7RUFDQSw2QkFBQTtBWG1sSUo7QVdobElFO0VBQ0UsWUFBQTtBWGtsSUo7QVcva0lFO0VBQ0UsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EseUJBQUE7RUFDQSxxQkFBQTtFQUNBLGVGT2M7RUVOZCxZRmZXO0VFZ0JYLGlCQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7RUFDQSxxQkFBQTtFQUNBLHVCQUFBO0FYaWxJSjtBVzlrSUU7RUFDRSxvQkFBQTtFQUNBLDJCQUFBO0FYZ2xJSjtBVzVrSUU7RUFDRSxhQUFBO0VBQ0EsZ0JBQUE7QVg4a0lKOztBV3prSUE7RUFDRSxpQkFBQTtFQUNBLFVBQUE7RUFDQSx3QkFBQTtBWDRrSUY7O0FXMWtJQTtFQUNFLGlCQUFBO0VBQ0EsNEJBQUE7QVg2a0lGOztBWXJxSUE7RUFDRSwwQkFBQTtFQUNBLDRCQUFBO0VBQ0EsMkJBQUE7RUFDQSwyQ0FBQTtBWndxSUY7O0FZcHFJQTtFQUtFLGFBQUE7RUFDQSxlQUFBO0VBQ0Esd0NBQUE7RUFDQSxnQkFBQTtFQUNBLGFBQUE7RUFDQSxzQkhrQ3lCO0VHakN6Qiw2QkFBQTtBWm1xSUY7QVk3cUlFO0VBQ0UsVUFBQTtBWitxSUo7QVlwcUlFO0VBQ0UsV0FBQTtFQUNBLGlCQUFBO0VBQ0EscUJBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0Fac3FJSjs7QVlucUlBO0VBQ0Usc0JBQUE7QVpzcUlGOztBWW5xSUE7RUFDRSxhQUFBO0VBQ0EsNkJBQUE7RUFDQSxzQkFBQTtFQUNBLGFBQUE7QVpzcUlGOztBWS9wSUU7O0VBQ0UsWUFBQTtFQUNBLGdCQUFBO0FabXFJSjtBWWpxSUk7O0VBQUssVUFBQTtBWnFxSVQ7QVlscUlFOztFQUNFLDZCQUFBO0VBQ0EsWUFBQTtFQUNBLG9CQUFBO0VBQ0EsZUFBQTtFQUNBLGVBQUE7QVpxcUlKO0FZbnFJSTs7RUFBVSxxQ0FBQTtBWnVxSWQ7QVl0cUlJOztFQUFJLG9CQUFBO0FaMHFJUjtBWXZxSUU7O0VBQ0UsU0FBQTtFQUNBLHNCSFp1QjtBVHNySTNCO0FZeHFJSTs7RUFDRSx3QkFBQTtBWjJxSU47O0FZbHFJQTtFQUNFLFlBQUE7RUFDQSxnQkFBQTtBWnFxSUY7QVlwcUlFO0VBQ0UsNkVBQUE7RUFFQSxjQUFBO0VBQ0EsNkRBQUE7QVpxcUlKO0FZbnFJRTtFQUNFLDhFQUFBO0VBQ0EsY0FBQTtBWnFxSUo7O0FhL3VJQTtFQUNJLDJDQUFBO0VBQ0EseUJBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7QWJrdklKO0FhaHZJSTtFQUNFLHNCSnlOZ0I7RUl4TmhCLG1CSjZObUI7RUk1Tm5CLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLGdDQUFBO0Fia3ZJTjtBYS91SU07RUFDRSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7QWJpdklSO0FhOXVJUTs7RUFFRSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0EscUJBQUE7RUFDQSxzQkFBQTtBYmd2SVY7QWE5dUlRO0VBQ0UsZUFBQTtFQUNBLGlCQUFBO0VBQ0EsV0FBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7QWJndklWO0FhNXVJUTtFQUNFLGVBQUE7QWI4dUlWO0FhM3VJUTtFQUNFLFNBQUE7QWI2dUlWO0FhMXVJUTtFQUNFLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFdBQUE7QWI0dUlWO0FhdHVJTTtFQUNFLG1CQUFBO0Fid3VJUjtBYXJ1SU07RUFDRSx5Qkp0RVU7RUl1RVYsY0pvS2tCO0FUbWtJMUI7QWFydUlRO0VBQ0UsV0FBQTtBYnV1SVY7QWFudUlJO0VBQ0UsY0FBQTtFQUNBLGlCQUFBO0VBQ0EsY0pqRlk7QVRzeklsQjtBYW51SVE7RUFDRSxzQkp3SmtCO0FUNmtJNUI7QWEvdElNO0VBQ0Usc0JKOEljO0VJN0lkLGdDQUFBO0VBQ0Esa0JBQUE7QWJpdUlSO0FhL3RJTTtFQUNFLGtCQUFBO0FiaXVJUjtBYS90SU07RUFDRSxrQkFBQTtBYml1SVI7QWE5dElJO0VBQ0UsWUFBQTtFQUNBLGNKeEdZO0FUdzBJbEI7O0FjNTBJQTtFQUNFLDBCTHlGYTtBVHN2SWY7O0FjNTBJQTtFQUNFLGFBQUE7RUFDQSx5Qkw0S3dCO0FUbXFJMUI7O0FjNTBJQTtFQUNFLGlCTDJEZ0I7RUsxRGhCLGNMZ0RtQjtBVCt4SXJCOztBZTMxSUE7K0VBQUE7QUFHQSx1QkFBQTtBQUVBO0VBQ0UsY05zRXVCO0FUc3hJekI7O0FlejFJQSxnQkFBQTtBQUVBOzs7Ozs7Ozs7Ozs7O0VBZUUsNkJBQUE7RUFDQSxZQUFBO0VBQ0EsZ0NOaUNhO0VNaENiLGdCQUFBO0VBQ0EsYUFBQTtFQUNBLFlOY2E7RU1iYixXQUFBO0VBQ0EsZU5pQ2dCO0VNaENoQixpQk5rQ2E7RU1qQ2IsVU5rQ2M7RU1qQ2QsZ0JBQUE7RUFDQSx1QkFBQTtFQUNBLHdDQUFBO0FmeTFJRjtBZXQxSUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFFRSwwQk40Qm1CO0VNM0JuQiw2Q042Qm9CO0FUazFJeEI7QWUzMklFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBRUUsMEJOcUJtQjtBVCsySXZCO0FlaDRJRTs7Ozs7Ozs7Ozs7OztFQUNFLGdDQUFBO0VBQ0EsNkJBQUE7QWY4NElKO0FlMTRJRTs7Ozs7Ozs7Ozs7OztFQUNFLGNOeERjO0FUZzlJbEI7QWVsNElFOzs7Ozs7Ozs7Ozs7O0VBQ0UsY045RVk7QVQ4OUloQjtBZWw0SUU7Ozs7Ozs7Ozs7Ozs7RUFDRSxjTjVGVTtBVDQrSWQ7QWU1NElFOzs7Ozs7Ozs7Ozs7O0VBQ0UsV0FBQTtBZjA1SUo7QWVoNUlBLGlDQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFDRSxnQ0FBQTtFQUNBLDZCQUFBO0FmMDZJRjs7QWV4NklBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQ0UsZ0NOOUNxQjtFTStDckIsNkJBQUE7QWZtOElGOztBZWo4SUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFDRSxrQkFBQTtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7QWZvL0lGOztBZWwvSUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFDRSwyQkFBQTtFQUNBLGNONUhjO0FUeW9KaEI7O0FlM2dKQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztF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ZUFBQTtBbkNzMFBKO0FtQ2owUEU7RUFDRSxTQUFBO0FuQ20wUEo7QW1DajBQSTtFQUNFLGlDQUFBO0VBQ0EsV0FBQTtFQUNBLFVBQUE7QW5DbTBQTjtBbUNqMFBNO0VBQ0Usb0NBQUE7QW5DbTBQUjtBbUNoMFBJO0VBQ0UsaUNBQUE7RUFDQSxlMUJXYTtFMEJWYixXMUJXYztFMEJWZCxjQUFBO0VBQ0EsZUFBQTtFQUNBLGVBQUE7QW5DazBQTjtBbUNoMFBNO0VBQ0UsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBO0FuQ2swUFI7QW1DaDBQUTtFQUNFLGVBQUE7RUFDQSxvQkFBQTtBbkNrMFBWO0FtQzl6UE07RUFDRSxvQ0FBQTtBbkNnMFBSO0FtQzV6UEk7RUFDRSxXQUFBO0FuQzh6UE47QW1DenpQRTtFQUNFLFlBQUE7QW5DMnpQSjtBbUN4elBFO0VBQ0UsU0FBQTtFQUNBLFlBQUE7QW5DMHpQSjtBbUN4elBJO0VBQ0UsWUFBQTtFQUNBLGlCQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0FuQzB6UE47QW1DeHpQTTtFQUVFLFlBQUE7RUFDQSxnQkFBQTtBbkN5elBSO0FtQ3J6UEk7RUFDRSxNQUFBO0VBQ0EsT0FBQTtBbkN1elBOO0FtQ3J6UE07RUFDRSwrQkFBQTtFQUNBLHNCQUFBO0FuQ3V6UFI7QW1DcnpQTTtFQUFhLFcxQjdDQztBVHEyUHBCOztBbUNselBBO0VBQ0Usa0JBQUE7RUFDQSxZMUJ4RHFCO0UwQnlEckIsWUFBQTtBbkNxelBGO0FtQ256UEU7RUFDRSxlQUFBO0FuQ3F6UEo7O0FtQ2x6UEE7RUFDRTtJQUNFLGdCMUJuRVk7RVR3M1BkO0VtQ256UEE7SUFDRSxZMUJ0RVk7STBCdUVaLGlCMUJ2RVk7RVQ0M1BkO0VtQ256UEE7SUFDRSxZMUIxRVk7RVQrM1BkO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG5AaW1wb3J0ICdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9VWJ1bnR1JztcXG4ud2VibyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2MmQ2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXRleHQge1xcbiAgY29sb3I6ICMwMDYyZDYgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8td2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2MmQ2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLnNlY29uZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3N0ZBICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXRleHQudGV4dC1zZWNvbmQge1xcbiAgY29sb3I6ICMwMDc3RkEgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8td2F2ZXMud2F2ZXMtc2Vjb25kIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNzdGQSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby50aGlyZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDliZGRkICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXRleHQudGV4dC10aGlyZCB7XFxuICBjb2xvcjogIzA5YmRkZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby13YXZlcy53YXZlcy10aGlyZCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwOWJkZGQgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8uZm91cnRoIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmU3ZmUgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8tdGV4dC50ZXh0LWZvdXJ0aCB7XFxuICBjb2xvcjogI2NiZTdmZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby13YXZlcy53YXZlcy1mb3VydGggLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2JlN2ZlICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLmxpZ2h0ZW4tNSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmJkZWZiICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXRleHQudGV4dC1saWdodGVuLTUge1xcbiAgY29sb3I6ICNiYmRlZmIgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8td2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JiZGVmYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby5saWdodGVuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby10ZXh0LnRleHQtbGlnaHRlbi00IHtcXG4gIGNvbG9yOiAjNDJhNWY1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjUgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8ubGlnaHRlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3OTg2Y2IgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8tdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XFxuICBjb2xvcjogIzc5ODZjYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzk4NmNiICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLmxpZ2h0ZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTEyZGE4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXRleHQudGV4dC1saWdodGVuLTIge1xcbiAgY29sb3I6ICM1MTJkYTggIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8td2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUxMmRhOCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby5saWdodGVuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI4MzU5MyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby10ZXh0LnRleHQtbGlnaHRlbi0xIHtcXG4gIGNvbG9yOiAjMjgzNTkzICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyODM1OTMgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8uZGFya2VuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QwMTgxZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby10ZXh0LnRleHQtZGFya2VuLTEge1xcbiAgY29sb3I6ICNkMDE4MWUgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8td2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDAxODFlICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLmRhcmtlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiOTE1MWIgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8tdGV4dC50ZXh0LWRhcmtlbi0yIHtcXG4gIGNvbG9yOiAjYjkxNTFiICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I5MTUxYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby5kYXJrZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTIxMzE4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXRleHQudGV4dC1kYXJrZW4tMyB7XFxuICBjb2xvcjogI2EyMTMxOCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhMjEzMTggIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8uYi0ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ5Y2U1ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2Viby10ZXh0LnRleHQtYi0ge1xcbiAgY29sb3I6ICM0OWNlNWYgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8td2F2ZXMud2F2ZXMtYi0gLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDljZTVmICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLmRhcmtlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4YjEwMTQgIWltcG9ydGFudDtcXG59XFxuXFxuLndlYm8tdGV4dC50ZXh0LWRhcmtlbi00IHtcXG4gIGNvbG9yOiAjOGIxMDE0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi53ZWJvLXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhiMTAxNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDQzMzYgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC10ZXh0IHtcXG4gIGNvbG9yOiAjZjQ0MzM2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtd2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ0MzM2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQubGlnaHRlbi01IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmViZWUgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC10ZXh0LnRleHQtbGlnaHRlbi01IHtcXG4gIGNvbG9yOiAjZmZlYmVlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWJlZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLmxpZ2h0ZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjZGQyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XFxuICBjb2xvcjogI2ZmY2RkMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmNkZDIgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC5saWdodGVuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VmOWE5YSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXRleHQudGV4dC1saWdodGVuLTMge1xcbiAgY29sb3I6ICNlZjlhOWEgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWY5YTlhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQubGlnaHRlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlNTczNzMgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC10ZXh0LnRleHQtbGlnaHRlbi0yIHtcXG4gIGNvbG9yOiAjZTU3MzczICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U1NzM3MyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLmxpZ2h0ZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWY1MzUwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XFxuICBjb2xvcjogI2VmNTM1MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZjUzNTAgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC5kYXJrZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTUzOTM1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtdGV4dC50ZXh0LWRhcmtlbi0xIHtcXG4gIGNvbG9yOiAjZTUzOTM1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTUzOTM1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQuZGFya2VuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QzMmYyZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXRleHQudGV4dC1kYXJrZW4tMiB7XFxuICBjb2xvcjogI2QzMmYyZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QzMmYyZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLmRhcmtlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjNjI4MjggIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC10ZXh0LnRleHQtZGFya2VuLTMge1xcbiAgY29sb3I6ICNjNjI4MjggIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjNjI4MjggIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC5kYXJrZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjcxYzFjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtdGV4dC50ZXh0LWRhcmtlbi00IHtcXG4gIGNvbG9yOiAjYjcxYzFjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjcxYzFjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQuYWNjZW50LTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOGE4MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXRleHQudGV4dC1hY2NlbnQtMSB7XFxuICBjb2xvcjogI2ZmOGE4MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOGE4MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLmFjY2VudC0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTIgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC10ZXh0LnRleHQtYWNjZW50LTIge1xcbiAgY29sb3I6ICNmZjUyNTIgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTIgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlZC5hY2NlbnQtMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYxNzQ0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtdGV4dC50ZXh0LWFjY2VudC0zIHtcXG4gIGNvbG9yOiAjZmYxNzQ0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQtd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYxNzQ0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWQuYWNjZW50LTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q1MDAwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXRleHQudGV4dC1hY2NlbnQtNCB7XFxuICBjb2xvcjogI2Q1MDAwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVkLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q1MDAwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluayB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTkxZTYzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXRleHQge1xcbiAgY29sb3I6ICNlOTFlNjMgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstd2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTkxZTYzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLmxpZ2h0ZW4tNSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNlNGVjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXRleHQudGV4dC1saWdodGVuLTUge1xcbiAgY29sb3I6ICNmY2U0ZWMgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZTRlYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay5saWdodGVuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4YmJkMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay10ZXh0LnRleHQtbGlnaHRlbi00IHtcXG4gIGNvbG9yOiAjZjhiYmQwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGJiZDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmsubGlnaHRlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDhmYjEgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XFxuICBjb2xvcjogI2Y0OGZiMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ4ZmIxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLmxpZ2h0ZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjA2MjkyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXRleHQudGV4dC1saWdodGVuLTIge1xcbiAgY29sb3I6ICNmMDYyOTIgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YwNjI5MiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay5saWdodGVuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VjNDA3YSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay10ZXh0LnRleHQtbGlnaHRlbi0xIHtcXG4gIGNvbG9yOiAjZWM0MDdhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlYzQwN2EgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmsuZGFya2VuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q4MWI2MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay10ZXh0LnRleHQtZGFya2VuLTEge1xcbiAgY29sb3I6ICNkODFiNjAgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDgxYjYwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLmRhcmtlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjMjE4NWIgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstdGV4dC50ZXh0LWRhcmtlbi0yIHtcXG4gIGNvbG9yOiAjYzIxODViICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2MyMTg1YiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay5kYXJrZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWQxNDU3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXRleHQudGV4dC1kYXJrZW4tMyB7XFxuICBjb2xvcjogI2FkMTQ1NyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhZDE0NTcgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmsuZGFya2VuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg4MGU0ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay10ZXh0LnRleHQtZGFya2VuLTQge1xcbiAgY29sb3I6ICM4ODBlNGYgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODgwZTRmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLmFjY2VudC0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjgwYWIgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstdGV4dC50ZXh0LWFjY2VudC0xIHtcXG4gIGNvbG9yOiAjZmY4MGFiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmODBhYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay5hY2NlbnQtMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY0MDgxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXRleHQudGV4dC1hY2NlbnQtMiB7XFxuICBjb2xvcjogI2ZmNDA4MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjQwODEgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmsuYWNjZW50LTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1MDA1NyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucGluay10ZXh0LnRleHQtYWNjZW50LTMge1xcbiAgY29sb3I6ICNmNTAwNTcgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjUwMDU3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLmFjY2VudC00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjNTExNjIgIWltcG9ydGFudDtcXG59XFxuXFxuLnBpbmstdGV4dC50ZXh0LWFjY2VudC00IHtcXG4gIGNvbG9yOiAjYzUxMTYyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5waW5rLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M1MTE2MiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM5YzI3YjAgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS10ZXh0IHtcXG4gIGNvbG9yOiAjOWMyN2IwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtd2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWMyN2IwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUubGlnaHRlbi01IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2U1ZjUgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS10ZXh0LnRleHQtbGlnaHRlbi01IHtcXG4gIGNvbG9yOiAjZjNlNWY1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZTVmNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLmxpZ2h0ZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFiZWU3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XFxuICBjb2xvcjogI2UxYmVlNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlMWJlZTcgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS5saWdodGVuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NlOTNkOCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXRleHQudGV4dC1saWdodGVuLTMge1xcbiAgY29sb3I6ICNjZTkzZDggIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2U5M2Q4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUubGlnaHRlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiYTY4YzggIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS10ZXh0LnRleHQtbGlnaHRlbi0yIHtcXG4gIGNvbG9yOiAjYmE2OGM4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JhNjhjOCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLmxpZ2h0ZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWI0N2JjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XFxuICBjb2xvcjogI2FiNDdiYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhYjQ3YmMgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS5kYXJrZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGUyNGFhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtdGV4dC50ZXh0LWRhcmtlbi0xIHtcXG4gIGNvbG9yOiAjOGUyNGFhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGUyNGFhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUuZGFya2VuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzdiMWZhMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXRleHQudGV4dC1kYXJrZW4tMiB7XFxuICBjb2xvcjogIzdiMWZhMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzdiMWZhMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLmRhcmtlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2YTFiOWEgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS10ZXh0LnRleHQtZGFya2VuLTMge1xcbiAgY29sb3I6ICM2YTFiOWEgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2YTFiOWEgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS5kYXJrZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGExNDhjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtdGV4dC50ZXh0LWRhcmtlbi00IHtcXG4gIGNvbG9yOiAjNGExNDhjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGExNDhjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUuYWNjZW50LTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VhODBmYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXRleHQudGV4dC1hY2NlbnQtMSB7XFxuICBjb2xvcjogI2VhODBmYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VhODBmYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLmFjY2VudC0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlMDQwZmIgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS10ZXh0LnRleHQtYWNjZW50LTIge1xcbiAgY29sb3I6ICNlMDQwZmIgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlMDQwZmIgIWltcG9ydGFudDtcXG59XFxuXFxuLnB1cnBsZS5hY2NlbnQtMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDUwMGY5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtdGV4dC50ZXh0LWFjY2VudC0zIHtcXG4gIGNvbG9yOiAjZDUwMGY5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUtd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDUwMGY5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5wdXJwbGUuYWNjZW50LTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FhMDBmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXRleHQudGV4dC1hY2NlbnQtNCB7XFxuICBjb2xvcjogI2FhMDBmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucHVycGxlLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FhMDBmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY3M2FiNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtdGV4dCB7XFxuICBjb2xvcjogIzY3M2FiNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtd2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjczYWI3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS5saWdodGVuLTUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VkZTdmNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XFxuICBjb2xvcjogI2VkZTdmNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VkZTdmNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUubGlnaHRlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkMWM0ZTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1saWdodGVuLTQge1xcbiAgY29sb3I6ICNkMWM0ZTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkMWM0ZTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLmxpZ2h0ZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjM5ZGRiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtbGlnaHRlbi0zIHtcXG4gIGNvbG9yOiAjYjM5ZGRiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjM5ZGRiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS5saWdodGVuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk1NzVjZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XFxuICBjb2xvcjogIzk1NzVjZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk1NzVjZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUubGlnaHRlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3ZTU3YzIgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1saWdodGVuLTEge1xcbiAgY29sb3I6ICM3ZTU3YzIgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3ZTU3YzIgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLmRhcmtlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM1ZTM1YjEgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1kYXJrZW4tMSB7XFxuICBjb2xvcjogIzVlMzViMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWUzNWIxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS5kYXJrZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTEyZGE4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtZGFya2VuLTIge1xcbiAgY29sb3I6ICM1MTJkYTggIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUxMmRhOCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUuZGFya2VuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ1MjdhMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWRhcmtlbi0zIHtcXG4gIGNvbG9yOiAjNDUyN2EwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0NTI3YTAgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLmRhcmtlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzMTFiOTIgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1kYXJrZW4tNCB7XFxuICBjb2xvcjogIzMxMWI5MiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzExYjkyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS5hY2NlbnQtMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjM4OGZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtYWNjZW50LTEge1xcbiAgY29sb3I6ICNiMzg4ZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IzODhmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUuYWNjZW50LTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzdjNGRmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtdGV4dC50ZXh0LWFjY2VudC0yIHtcXG4gIGNvbG9yOiAjN2M0ZGZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3YzRkZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLmFjY2VudC0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2NTFmZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXRleHQudGV4dC1hY2NlbnQtMyB7XFxuICBjb2xvcjogIzY1MWZmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1wdXJwbGUtd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjUxZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS5hY2NlbnQtNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjIwMGVhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLXB1cnBsZS10ZXh0LnRleHQtYWNjZW50LTQge1xcbiAgY29sb3I6ICM2MjAwZWEgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtcHVycGxlLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYyMDBlYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzZjUxYjUgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby10ZXh0IHtcXG4gIGNvbG9yOiAjM2Y1MWI1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28td2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Y1MWI1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28ubGlnaHRlbi01IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlOGVhZjYgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby10ZXh0LnRleHQtbGlnaHRlbi01IHtcXG4gIGNvbG9yOiAjZThlYWY2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28td2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U4ZWFmNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLmxpZ2h0ZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzVjYWU5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28tdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XFxuICBjb2xvcjogI2M1Y2FlOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjNWNhZTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby5saWdodGVuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzlmYThkYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXRleHQudGV4dC1saWdodGVuLTMge1xcbiAgY29sb3I6ICM5ZmE4ZGEgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWZhOGRhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28ubGlnaHRlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3OTg2Y2IgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby10ZXh0LnRleHQtbGlnaHRlbi0yIHtcXG4gIGNvbG9yOiAjNzk4NmNiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28td2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzc5ODZjYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLmxpZ2h0ZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWM2YmMwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28tdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XFxuICBjb2xvcjogIzVjNmJjMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM1YzZiYzAgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby5kYXJrZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzk0OWFiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28tdGV4dC50ZXh0LWRhcmtlbi0xIHtcXG4gIGNvbG9yOiAjMzk0OWFiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28td2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzk0OWFiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28uZGFya2VuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwM2Y5ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXRleHQudGV4dC1kYXJrZW4tMiB7XFxuICBjb2xvcjogIzMwM2Y5ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwM2Y5ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLmRhcmtlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyODM1OTMgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby10ZXh0LnRleHQtZGFya2VuLTMge1xcbiAgY29sb3I6ICMyODM1OTMgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyODM1OTMgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby5kYXJrZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWEyMzdlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28tdGV4dC50ZXh0LWRhcmtlbi00IHtcXG4gIGNvbG9yOiAjMWEyMzdlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28td2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWEyMzdlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28uYWNjZW50LTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhjOWVmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXRleHQudGV4dC1hY2NlbnQtMSB7XFxuICBjb2xvcjogIzhjOWVmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhjOWVmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLmFjY2VudC0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM1MzZkZmUgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby10ZXh0LnRleHQtYWNjZW50LTIge1xcbiAgY29sb3I6ICM1MzZkZmUgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM1MzZkZmUgIWltcG9ydGFudDtcXG59XFxuXFxuLmluZGlnby5hY2NlbnQtMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Q1YWZlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28tdGV4dC50ZXh0LWFjY2VudC0zIHtcXG4gIGNvbG9yOiAjM2Q1YWZlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28td2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Q1YWZlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5pbmRpZ28uYWNjZW50LTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwNGZmZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXRleHQudGV4dC1hY2NlbnQtNCB7XFxuICBjb2xvcjogIzMwNGZmZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uaW5kaWdvLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwNGZmZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE5NmYzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXRleHQge1xcbiAgY29sb3I6ICMyMTk2ZjMgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtd2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE5NmYzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLmxpZ2h0ZW4tNSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNmMmZkICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXRleHQudGV4dC1saWdodGVuLTUge1xcbiAgY29sb3I6ICNlM2YyZmQgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UzZjJmZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS5saWdodGVuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JiZGVmYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi00IHtcXG4gIGNvbG9yOiAjYmJkZWZiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiYmRlZmIgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUubGlnaHRlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM5MGNhZjkgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XFxuICBjb2xvcjogIzkwY2FmOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBjYWY5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLmxpZ2h0ZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjRiNWY2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXRleHQudGV4dC1saWdodGVuLTIge1xcbiAgY29sb3I6ICM2NGI1ZjYgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY0YjVmNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS5saWdodGVuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi0xIHtcXG4gIGNvbG9yOiAjNDJhNWY1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjUgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUuZGFya2VuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFlODhlNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS10ZXh0LnRleHQtZGFya2VuLTEge1xcbiAgY29sb3I6ICMxZTg4ZTUgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWU4OGU1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLmRhcmtlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxOTc2ZDIgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtdGV4dC50ZXh0LWRhcmtlbi0yIHtcXG4gIGNvbG9yOiAjMTk3NmQyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE5NzZkMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS5kYXJrZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTU2NWMwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXRleHQudGV4dC1kYXJrZW4tMyB7XFxuICBjb2xvcjogIzE1NjVjMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxNTY1YzAgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUuZGFya2VuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzBkNDdhMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS10ZXh0LnRleHQtZGFya2VuLTQge1xcbiAgY29sb3I6ICMwZDQ3YTEgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGQ0N2ExICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLmFjY2VudC0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4MmIxZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtdGV4dC50ZXh0LWFjY2VudC0xIHtcXG4gIGNvbG9yOiAjODJiMWZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgyYjFmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS5hY2NlbnQtMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ4YWZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXRleHQudGV4dC1hY2NlbnQtMiB7XFxuICBjb2xvcjogIzQ0OGFmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0NDhhZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUuYWNjZW50LTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5NzlmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS10ZXh0LnRleHQtYWNjZW50LTMge1xcbiAgY29sb3I6ICMyOTc5ZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjk3OWZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLmFjY2VudC00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyOTYyZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtdGV4dC50ZXh0LWFjY2VudC00IHtcXG4gIGNvbG9yOiAjMjk2MmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5NjJmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDNhOWY0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXRleHQge1xcbiAgY29sb3I6ICMwM2E5ZjQgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtd2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDNhOWY0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLmxpZ2h0ZW4tNSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFmNWZlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXRleHQudGV4dC1saWdodGVuLTUge1xcbiAgY29sb3I6ICNlMWY1ZmUgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UxZjVmZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS5saWdodGVuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IzZTVmYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi00IHtcXG4gIGNvbG9yOiAjYjNlNWZjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiM2U1ZmMgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUubGlnaHRlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4MWQ0ZmEgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XFxuICBjb2xvcjogIzgxZDRmYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODFkNGZhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLmxpZ2h0ZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGZjM2Y3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXRleHQudGV4dC1saWdodGVuLTIge1xcbiAgY29sb3I6ICM0ZmMzZjcgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRmYzNmNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS5saWdodGVuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5YjZmNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtbGlnaHRlbi0xIHtcXG4gIGNvbG9yOiAjMjliNmY2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyOWI2ZjYgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUuZGFya2VuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAzOWJlNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtZGFya2VuLTEge1xcbiAgY29sb3I6ICMwMzliZTUgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDM5YmU1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLmRhcmtlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMjg4ZDEgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWRhcmtlbi0yIHtcXG4gIGNvbG9yOiAjMDI4OGQxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAyODhkMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS5kYXJrZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDI3N2JkICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXRleHQudGV4dC1kYXJrZW4tMyB7XFxuICBjb2xvcjogIzAyNzdiZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMjc3YmQgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUuZGFya2VuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAxNTc5YiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtZGFya2VuLTQge1xcbiAgY29sb3I6ICMwMTU3OWIgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDE1NzliICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLmFjY2VudC0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGQ4ZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWFjY2VudC0xIHtcXG4gIGNvbG9yOiAjODBkOGZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgwZDhmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS5hY2NlbnQtMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDBjNGZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXRleHQudGV4dC1hY2NlbnQtMiB7XFxuICBjb2xvcjogIzQwYzRmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0MGM0ZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUuYWNjZW50LTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYjBmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtYmx1ZS10ZXh0LnRleHQtYWNjZW50LTMge1xcbiAgY29sb3I6ICMwMGIwZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiMGZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLmFjY2VudC00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDkxZWEgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWJsdWUtdGV4dC50ZXh0LWFjY2VudC00IHtcXG4gIGNvbG9yOiAjMDA5MWVhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ibHVlLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwOTFlYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiY2Q0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXRleHQge1xcbiAgY29sb3I6ICMwMGJjZDQgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4td2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiY2Q0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLmxpZ2h0ZW4tNSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBmN2ZhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXRleHQudGV4dC1saWdodGVuLTUge1xcbiAgY29sb3I6ICNlMGY3ZmEgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4td2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZjdmYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi5saWdodGVuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IyZWJmMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi10ZXh0LnRleHQtbGlnaHRlbi00IHtcXG4gIGNvbG9yOiAjYjJlYmYyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiMmViZjIgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4ubGlnaHRlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGRlZWEgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4tdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XFxuICBjb2xvcjogIzgwZGVlYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODBkZWVhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLmxpZ2h0ZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRkMGUxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXRleHQudGV4dC1saWdodGVuLTIge1xcbiAgY29sb3I6ICM0ZGQwZTEgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4td2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkZDBlMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi5saWdodGVuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YzZkYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi10ZXh0LnRleHQtbGlnaHRlbi0xIHtcXG4gIGNvbG9yOiAjMjZjNmRhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmM2ZGEgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4uZGFya2VuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYWNjMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi10ZXh0LnRleHQtZGFya2VuLTEge1xcbiAgY29sb3I6ICMwMGFjYzEgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4td2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBhY2MxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLmRhcmtlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDk3YTcgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4tdGV4dC50ZXh0LWRhcmtlbi0yIHtcXG4gIGNvbG9yOiAjMDA5N2E3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwOTdhNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi5kYXJrZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA4MzhmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXRleHQudGV4dC1kYXJrZW4tMyB7XFxuICBjb2xvcjogIzAwODM4ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDgzOGYgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4uZGFya2VuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjA2NCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi10ZXh0LnRleHQtZGFya2VuLTQge1xcbiAgY29sb3I6ICMwMDYwNjQgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4td2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2MDY0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLmFjY2VudC0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4NGZmZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4tdGV4dC50ZXh0LWFjY2VudC0xIHtcXG4gIGNvbG9yOiAjODRmZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg0ZmZmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi5hY2NlbnQtMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMThmZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXRleHQudGV4dC1hY2NlbnQtMiB7XFxuICBjb2xvcjogIzE4ZmZmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxOGZmZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4uYWNjZW50LTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwZTVmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY3lhbi10ZXh0LnRleHQtYWNjZW50LTMge1xcbiAgY29sb3I6ICMwMGU1ZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4td2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBlNWZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLmFjY2VudC00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGI4ZDQgIWltcG9ydGFudDtcXG59XFxuXFxuLmN5YW4tdGV4dC50ZXh0LWFjY2VudC00IHtcXG4gIGNvbG9yOiAjMDBiOGQ0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jeWFuLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYjhkNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5Njg4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXRleHQge1xcbiAgY29sb3I6ICMwMDk2ODggIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtd2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5Njg4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLmxpZ2h0ZW4tNSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBmMmYxICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXRleHQudGV4dC1saWdodGVuLTUge1xcbiAgY29sb3I6ICNlMGYyZjEgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZjJmMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC5saWdodGVuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IyZGZkYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC10ZXh0LnRleHQtbGlnaHRlbi00IHtcXG4gIGNvbG9yOiAjYjJkZmRiICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiMmRmZGIgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwubGlnaHRlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGNiYzQgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XFxuICBjb2xvcjogIzgwY2JjNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODBjYmM0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLmxpZ2h0ZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiNmFjICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXRleHQudGV4dC1saWdodGVuLTIge1xcbiAgY29sb3I6ICM0ZGI2YWMgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjZhYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC5saWdodGVuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC10ZXh0LnRleHQtbGlnaHRlbi0xIHtcXG4gIGNvbG9yOiAjMjZhNjlhICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWEgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwuZGFya2VuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwODk3YiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC10ZXh0LnRleHQtZGFya2VuLTEge1xcbiAgY29sb3I6ICMwMDg5N2IgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA4OTdiICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLmRhcmtlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDc5NmIgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtdGV4dC50ZXh0LWRhcmtlbi0yIHtcXG4gIGNvbG9yOiAjMDA3OTZiICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNzk2YiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC5kYXJrZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2OTVjICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXRleHQudGV4dC1kYXJrZW4tMyB7XFxuICBjb2xvcjogIzAwNjk1YyAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDY5NWMgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwuZGFya2VuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNGQ0MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC10ZXh0LnRleHQtZGFya2VuLTQge1xcbiAgY29sb3I6ICMwMDRkNDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0ZDQwICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLmFjY2VudC0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhN2ZmZWIgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtdGV4dC50ZXh0LWFjY2VudC0xIHtcXG4gIGNvbG9yOiAjYTdmZmViICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E3ZmZlYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC5hY2NlbnQtMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjRmZmRhICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXRleHQudGV4dC1hY2NlbnQtMiB7XFxuICBjb2xvcjogIzY0ZmZkYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2NGZmZGEgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwuYWNjZW50LTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkZTliNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udGVhbC10ZXh0LnRleHQtYWNjZW50LTMge1xcbiAgY29sb3I6ICMxZGU5YjYgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRlOWI2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLmFjY2VudC00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGJmYTUgIWltcG9ydGFudDtcXG59XFxuXFxuLnRlYWwtdGV4dC50ZXh0LWFjY2VudC00IHtcXG4gIGNvbG9yOiAjMDBiZmE1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi50ZWFsLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYmZhNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRjYWY1MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4tdGV4dCB7XFxuICBjb2xvcjogIzRjYWY1MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4td2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGNhZjUwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi5saWdodGVuLTUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U4ZjVlOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4tdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XFxuICBjb2xvcjogI2U4ZjVlOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4td2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U4ZjVlOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4ubGlnaHRlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjOGU2YzkgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXRleHQudGV4dC1saWdodGVuLTQge1xcbiAgY29sb3I6ICNjOGU2YzkgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjOGU2YzkgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLmxpZ2h0ZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTVkNmE3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi10ZXh0LnRleHQtbGlnaHRlbi0zIHtcXG4gIGNvbG9yOiAjYTVkNmE3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTVkNmE3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi5saWdodGVuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgxYzc4NCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4tdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XFxuICBjb2xvcjogIzgxYzc4NCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4td2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgxYzc4NCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4ubGlnaHRlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2NmJiNmEgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXRleHQudGV4dC1saWdodGVuLTEge1xcbiAgY29sb3I6ICM2NmJiNmEgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2NmJiNmEgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLmRhcmtlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0M2EwNDcgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXRleHQudGV4dC1kYXJrZW4tMSB7XFxuICBjb2xvcjogIzQzYTA0NyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4td2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDNhMDQ3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi5kYXJrZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzg4ZTNjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi10ZXh0LnRleHQtZGFya2VuLTIge1xcbiAgY29sb3I6ICMzODhlM2MgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM4OGUzYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4uZGFya2VuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJlN2QzMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4tdGV4dC50ZXh0LWRhcmtlbi0zIHtcXG4gIGNvbG9yOiAjMmU3ZDMyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyZTdkMzIgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLmRhcmtlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxYjVlMjAgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXRleHQudGV4dC1kYXJrZW4tNCB7XFxuICBjb2xvcjogIzFiNWUyMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4td2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWI1ZTIwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi5hY2NlbnQtMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjlmNmNhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi10ZXh0LnRleHQtYWNjZW50LTEge1xcbiAgY29sb3I6ICNiOWY2Y2EgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I5ZjZjYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4uYWNjZW50LTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY5ZjBhZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4tdGV4dC50ZXh0LWFjY2VudC0yIHtcXG4gIGNvbG9yOiAjNjlmMGFlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2OWYwYWUgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLmFjY2VudC0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGU2NzYgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXRleHQudGV4dC1hY2NlbnQtMyB7XFxuICBjb2xvcjogIzAwZTY3NiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JlZW4td2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBlNjc2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi5hY2NlbnQtNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBjODUzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmVlbi10ZXh0LnRleHQtYWNjZW50LTQge1xcbiAgY29sb3I6ICMwMGM4NTMgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZWVuLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYzg1MyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhiYzM0YSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4tdGV4dCB7XFxuICBjb2xvcjogIzhiYzM0YSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4td2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGJjMzRhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi5saWdodGVuLTUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjhlOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XFxuICBjb2xvcjogI2YxZjhlOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjhlOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4ubGlnaHRlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2VkYzggIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1saWdodGVuLTQge1xcbiAgY29sb3I6ICNkY2VkYzggIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2VkYzggIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLmxpZ2h0ZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzVlMWE1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi10ZXh0LnRleHQtbGlnaHRlbi0zIHtcXG4gIGNvbG9yOiAjYzVlMWE1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzVlMWE1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi5saWdodGVuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FlZDU4MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XFxuICBjb2xvcjogI2FlZDU4MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FlZDU4MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4ubGlnaHRlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM5Y2NjNjUgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1saWdodGVuLTEge1xcbiAgY29sb3I6ICM5Y2NjNjUgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM5Y2NjNjUgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLmRhcmtlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3Y2IzNDIgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1kYXJrZW4tMSB7XFxuICBjb2xvcjogIzdjYjM0MiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2NiMzQyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi5kYXJrZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjg5ZjM4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi10ZXh0LnRleHQtZGFya2VuLTIge1xcbiAgY29sb3I6ICM2ODlmMzggIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY4OWYzOCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4uZGFya2VuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1OGIyZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWRhcmtlbi0zIHtcXG4gIGNvbG9yOiAjNTU4YjJmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM1NThiMmYgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLmRhcmtlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzMzY5MWUgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1kYXJrZW4tNCB7XFxuICBjb2xvcjogIzMzNjkxZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzM2OTFlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi5hY2NlbnQtMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NmZjkwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi10ZXh0LnRleHQtYWNjZW50LTEge1xcbiAgY29sb3I6ICNjY2ZmOTAgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjZmY5MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4uYWNjZW50LTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IyZmY1OSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4tdGV4dC50ZXh0LWFjY2VudC0yIHtcXG4gIGNvbG9yOiAjYjJmZjU5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiMmZmNTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLmFjY2VudC0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3NmZmMDMgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXRleHQudGV4dC1hY2NlbnQtMyB7XFxuICBjb2xvcjogIzc2ZmYwMyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGlnaHQtZ3JlZW4td2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzZmZjAzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi5hY2NlbnQtNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjRkZDE3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saWdodC1ncmVlbi10ZXh0LnRleHQtYWNjZW50LTQge1xcbiAgY29sb3I6ICM2NGRkMTcgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpZ2h0LWdyZWVuLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY0ZGQxNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2RkYzM5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXRleHQge1xcbiAgY29sb3I6ICNjZGRjMzkgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtd2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2RkYzM5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLmxpZ2h0ZW4tNSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmYmU3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXRleHQudGV4dC1saWdodGVuLTUge1xcbiAgY29sb3I6ICNmOWZiZTcgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZmJlNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS5saWdodGVuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjRjMyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS10ZXh0LnRleHQtbGlnaHRlbi00IHtcXG4gIGNvbG9yOiAjZjBmNGMzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGY0YzMgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUubGlnaHRlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmVlOWMgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XFxuICBjb2xvcjogI2U2ZWU5YyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlZTljICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLmxpZ2h0ZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNlNzc1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXRleHQudGV4dC1saWdodGVuLTIge1xcbiAgY29sb3I6ICNkY2U3NzUgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjZTc3NSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS5saWdodGVuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q0ZTE1NyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS10ZXh0LnRleHQtbGlnaHRlbi0xIHtcXG4gIGNvbG9yOiAjZDRlMTU3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkNGUxNTcgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUuZGFya2VuLTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2MwY2EzMyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS10ZXh0LnRleHQtZGFya2VuLTEge1xcbiAgY29sb3I6ICNjMGNhMzMgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzBjYTMzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLmRhcmtlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhZmI0MmIgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtdGV4dC50ZXh0LWRhcmtlbi0yIHtcXG4gIGNvbG9yOiAjYWZiNDJiICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FmYjQyYiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS5kYXJrZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWU5ZDI0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXRleHQudGV4dC1kYXJrZW4tMyB7XFxuICBjb2xvcjogIzllOWQyNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM5ZTlkMjQgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUuZGFya2VuLTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgyNzcxNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS10ZXh0LnRleHQtZGFya2VuLTQge1xcbiAgY29sb3I6ICM4Mjc3MTcgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODI3NzE3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLmFjY2VudC0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNGZmODEgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtdGV4dC50ZXh0LWFjY2VudC0xIHtcXG4gIGNvbG9yOiAjZjRmZjgxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZmY4MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS5hY2NlbnQtMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVmZjQxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXRleHQudGV4dC1hY2NlbnQtMiB7XFxuICBjb2xvcjogI2VlZmY0MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZWZmNDEgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUuYWNjZW50LTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M2ZmYwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGltZS10ZXh0LnRleHQtYWNjZW50LTMge1xcbiAgY29sb3I6ICNjNmZmMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzZmZjAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLmFjY2VudC00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhZWVhMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmxpbWUtdGV4dC50ZXh0LWFjY2VudC00IHtcXG4gIGNvbG9yOiAjYWVlYTAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5saW1lLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FlZWEwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmViM2IgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy10ZXh0IHtcXG4gIGNvbG9yOiAjZmZlYjNiICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctd2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlYjNiICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3cubGlnaHRlbi01IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZkZTcgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy10ZXh0LnRleHQtbGlnaHRlbi01IHtcXG4gIGNvbG9yOiAjZmZmZGU3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmRlNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LmxpZ2h0ZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOWM0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XFxuICBjb2xvcjogI2ZmZjljNCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY5YzQgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy5saWdodGVuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjU5ZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXRleHQudGV4dC1saWdodGVuLTMge1xcbiAgY29sb3I6ICNmZmY1OWQgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmNTlkICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3cubGlnaHRlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYxNzYgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy10ZXh0LnRleHQtbGlnaHRlbi0yIHtcXG4gIGNvbG9yOiAjZmZmMTc2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjE3NiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LmxpZ2h0ZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlZTU4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XFxuICBjb2xvcjogI2ZmZWU1OCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmVlNTggIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy5kYXJrZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRkODM1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctdGV4dC50ZXh0LWRhcmtlbi0xIHtcXG4gIGNvbG9yOiAjZmRkODM1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRkODM1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3cuZGFya2VuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZiYzAyZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXRleHQudGV4dC1kYXJrZW4tMiB7XFxuICBjb2xvcjogI2ZiYzAyZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZiYzAyZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LmRhcmtlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWE4MjUgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy10ZXh0LnRleHQtZGFya2VuLTMge1xcbiAgY29sb3I6ICNmOWE4MjUgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWE4MjUgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy5kYXJrZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjU3ZjE3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctdGV4dC50ZXh0LWRhcmtlbi00IHtcXG4gIGNvbG9yOiAjZjU3ZjE3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjU3ZjE3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3cuYWNjZW50LTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmY4ZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXRleHQudGV4dC1hY2NlbnQtMSB7XFxuICBjb2xvcjogI2ZmZmY4ZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmY4ZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LmFjY2VudC0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy10ZXh0LnRleHQtYWNjZW50LTIge1xcbiAgY29sb3I6ICNmZmZmMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnllbGxvdy5hY2NlbnQtMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlYTAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctdGV4dC50ZXh0LWFjY2VudC0zIHtcXG4gIGNvbG9yOiAjZmZlYTAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3ctd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlYTAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi55ZWxsb3cuYWNjZW50LTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDYwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXRleHQudGV4dC1hY2NlbnQtNCB7XFxuICBjb2xvcjogI2ZmZDYwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ueWVsbG93LXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDYwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItdGV4dCB7XFxuICBjb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItd2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci5saWdodGVuLTUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjhlMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XFxuICBjb2xvcjogI2ZmZjhlMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjhlMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXIubGlnaHRlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmVjYjMgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXRleHQudGV4dC1saWdodGVuLTQge1xcbiAgY29sb3I6ICNmZmVjYjMgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmVjYjMgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLmxpZ2h0ZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlMDgyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci10ZXh0LnRleHQtbGlnaHRlbi0zIHtcXG4gIGNvbG9yOiAjZmZlMDgyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlMDgyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci5saWdodGVuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDU0ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XFxuICBjb2xvcjogI2ZmZDU0ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDU0ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXIubGlnaHRlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmNhMjggIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXRleHQudGV4dC1saWdodGVuLTEge1xcbiAgY29sb3I6ICNmZmNhMjggIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmNhMjggIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLmRhcmtlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmIzMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXRleHQudGV4dC1kYXJrZW4tMSB7XFxuICBjb2xvcjogI2ZmYjMwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiMzAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci5kYXJrZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhMDAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci10ZXh0LnRleHQtZGFya2VuLTIge1xcbiAgY29sb3I6ICNmZmEwMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYTAwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXIuZGFya2VuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOGYwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItdGV4dC50ZXh0LWRhcmtlbi0zIHtcXG4gIGNvbG9yOiAjZmY4ZjAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjhmMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLmRhcmtlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXRleHQudGV4dC1kYXJrZW4tNCB7XFxuICBjb2xvcjogI2ZmNmYwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci5hY2NlbnQtMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlNTdmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci10ZXh0LnRleHQtYWNjZW50LTEge1xcbiAgY29sb3I6ICNmZmU1N2YgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTU3ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXIuYWNjZW50LTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDc0MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItdGV4dC50ZXh0LWFjY2VudC0yIHtcXG4gIGNvbG9yOiAjZmZkNzQwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQ3NDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLmFjY2VudC0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmM0MDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXRleHQudGV4dC1hY2NlbnQtMyB7XFxuICBjb2xvcjogI2ZmYzQwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYW1iZXItd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjNDAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci5hY2NlbnQtNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhYjAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5hbWJlci10ZXh0LnRleHQtYWNjZW50LTQge1xcbiAgY29sb3I6ICNmZmFiMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmFtYmVyLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYWIwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjk4MDAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS10ZXh0IHtcXG4gIGNvbG9yOiAjZmY5ODAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2Utd2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5ODAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UubGlnaHRlbi01IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYzZTAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS10ZXh0LnRleHQtbGlnaHRlbi01IHtcXG4gIGNvbG9yOiAjZmZmM2UwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjNlMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLmxpZ2h0ZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlMGIyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UtdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XFxuICBjb2xvcjogI2ZmZTBiMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmUwYjIgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS5saWdodGVuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmY2M4MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXRleHQudGV4dC1saWdodGVuLTMge1xcbiAgY29sb3I6ICNmZmNjODAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjYzgwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UubGlnaHRlbi0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmI3NGQgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS10ZXh0LnRleHQtbGlnaHRlbi0yIHtcXG4gIGNvbG9yOiAjZmZiNzRkICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYjc0ZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLmxpZ2h0ZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhNzI2ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UtdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XFxuICBjb2xvcjogI2ZmYTcyNiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmE3MjYgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS5kYXJrZW4tMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmI4YzAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UtdGV4dC50ZXh0LWRhcmtlbi0xIHtcXG4gIGNvbG9yOiAjZmI4YzAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmI4YzAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UuZGFya2VuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1N2MwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXRleHQudGV4dC1kYXJrZW4tMiB7XFxuICBjb2xvcjogI2Y1N2MwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1N2MwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLmRhcmtlbi0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZjZjMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS10ZXh0LnRleHQtZGFya2VuLTMge1xcbiAgY29sb3I6ICNlZjZjMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZjZjMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS5kYXJrZW4tNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTY1MTAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UtdGV4dC50ZXh0LWRhcmtlbi00IHtcXG4gIGNvbG9yOiAjZTY1MTAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTY1MTAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UuYWNjZW50LTEge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDE4MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXRleHQudGV4dC1hY2NlbnQtMSB7XFxuICBjb2xvcjogI2ZmZDE4MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDE4MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLmFjY2VudC0yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmFiNDAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS10ZXh0LnRleHQtYWNjZW50LTIge1xcbiAgY29sb3I6ICNmZmFiNDAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmFiNDAgIWltcG9ydGFudDtcXG59XFxuXFxuLm9yYW5nZS5hY2NlbnQtMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5MTAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UtdGV4dC50ZXh0LWFjY2VudC0zIHtcXG4gIGNvbG9yOiAjZmY5MTAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2Utd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5MTAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5vcmFuZ2UuYWNjZW50LTQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmQwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXRleHQudGV4dC1hY2NlbnQtNCB7XFxuICBjb2xvcjogI2ZmNmQwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ub3JhbmdlLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmQwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2Uge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTcyMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UtdGV4dCB7XFxuICBjb2xvcjogI2ZmNTcyMiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2Utd2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1NzIyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS5saWdodGVuLTUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZiZTllNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XFxuICBjb2xvcjogI2ZiZTllNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZiZTllNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UubGlnaHRlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmNjYmMgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1saWdodGVuLTQge1xcbiAgY29sb3I6ICNmZmNjYmMgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmNjYmMgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLmxpZ2h0ZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhYjkxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtbGlnaHRlbi0zIHtcXG4gIGNvbG9yOiAjZmZhYjkxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZhYjkxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS5saWdodGVuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOGE2NSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XFxuICBjb2xvcjogI2ZmOGE2NSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOGE2NSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UubGlnaHRlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjcwNDMgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1saWdodGVuLTEge1xcbiAgY29sb3I6ICNmZjcwNDMgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjcwNDMgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLmRhcmtlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDUxMWUgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1kYXJrZW4tMSB7XFxuICBjb2xvcjogI2Y0NTExZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ1MTFlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS5kYXJrZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTY0YTE5ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtZGFya2VuLTIge1xcbiAgY29sb3I6ICNlNjRhMTkgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2NGExOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UuZGFya2VuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q4NDMxNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWRhcmtlbi0zIHtcXG4gIGNvbG9yOiAjZDg0MzE1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkODQzMTUgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLmRhcmtlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiZjM2MGMgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1kYXJrZW4tNCB7XFxuICBjb2xvcjogI2JmMzYwYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmYzNjBjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS5hY2NlbnQtMSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5ZTgwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtYWNjZW50LTEge1xcbiAgY29sb3I6ICNmZjllODAgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWFjY2VudC0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOWU4MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UuYWNjZW50LTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmU0MCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2UtdGV4dC50ZXh0LWFjY2VudC0yIHtcXG4gIGNvbG9yOiAjZmY2ZTQwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS13YXZlcy53YXZlcy1hY2NlbnQtMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZlNDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLmFjY2VudC0zIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjNkMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXRleHQudGV4dC1hY2NlbnQtMyB7XFxuICBjb2xvcjogI2ZmM2QwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGVlcC1vcmFuZ2Utd2F2ZXMud2F2ZXMtYWNjZW50LTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYzZDAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS5hY2NlbnQtNCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGQyYzAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kZWVwLW9yYW5nZS10ZXh0LnRleHQtYWNjZW50LTQge1xcbiAgY29sb3I6ICNkZDJjMDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmRlZXAtb3JhbmdlLXdhdmVzLndhdmVzLWFjY2VudC00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkMmMwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzc5NTU0OCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24tdGV4dCB7XFxuICBjb2xvcjogIzc5NTU0OCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24td2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzk1NTQ4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi5saWdodGVuLTUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VmZWJlOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24tdGV4dC50ZXh0LWxpZ2h0ZW4tNSB7XFxuICBjb2xvcjogI2VmZWJlOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24td2F2ZXMud2F2ZXMtbGlnaHRlbi01IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VmZWJlOSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24ubGlnaHRlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkN2NjYzggIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXRleHQudGV4dC1saWdodGVuLTQge1xcbiAgY29sb3I6ICNkN2NjYzggIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXdhdmVzLndhdmVzLWxpZ2h0ZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkN2NjYzggIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLmxpZ2h0ZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmNhYWE0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi10ZXh0LnRleHQtbGlnaHRlbi0zIHtcXG4gIGNvbG9yOiAjYmNhYWE0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi13YXZlcy53YXZlcy1saWdodGVuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmNhYWE0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi5saWdodGVuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ExODg3ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24tdGV4dC50ZXh0LWxpZ2h0ZW4tMiB7XFxuICBjb2xvcjogI2ExODg3ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24td2F2ZXMud2F2ZXMtbGlnaHRlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ExODg3ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24ubGlnaHRlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4ZDZlNjMgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXRleHQudGV4dC1saWdodGVuLTEge1xcbiAgY29sb3I6ICM4ZDZlNjMgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXdhdmVzLndhdmVzLWxpZ2h0ZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4ZDZlNjMgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLmRhcmtlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2ZDRjNDEgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXRleHQudGV4dC1kYXJrZW4tMSB7XFxuICBjb2xvcjogIzZkNGM0MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24td2F2ZXMud2F2ZXMtZGFya2VuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmQ0YzQxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi5kYXJrZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWQ0MDM3ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi10ZXh0LnRleHQtZGFya2VuLTIge1xcbiAgY29sb3I6ICM1ZDQwMzcgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXdhdmVzLndhdmVzLWRhcmtlbi0yIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVkNDAzNyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24uZGFya2VuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRlMzQyZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24tdGV4dC50ZXh0LWRhcmtlbi0zIHtcXG4gIGNvbG9yOiAjNGUzNDJlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5icm93bi13YXZlcy53YXZlcy1kYXJrZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZTM0MmUgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLmRhcmtlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzZTI3MjMgIWltcG9ydGFudDtcXG59XFxuXFxuLmJyb3duLXRleHQudGV4dC1kYXJrZW4tNCB7XFxuICBjb2xvcjogIzNlMjcyMyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYnJvd24td2F2ZXMud2F2ZXMtZGFya2VuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2UyNzIzICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXkge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYwN2Q4YiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LXRleHQge1xcbiAgY29sb3I6ICM2MDdkOGIgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS13YXZlcyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2MDdkOGIgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS5saWdodGVuLTUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VjZWZmMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LXRleHQudGV4dC1saWdodGVuLTUge1xcbiAgY29sb3I6ICNlY2VmZjEgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS13YXZlcy53YXZlcy1saWdodGVuLTUgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlZmYxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXkubGlnaHRlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjZmQ4ZGMgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS10ZXh0LnRleHQtbGlnaHRlbi00IHtcXG4gIGNvbG9yOiAjY2ZkOGRjICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXktd2F2ZXMud2F2ZXMtbGlnaHRlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NmZDhkYyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LmxpZ2h0ZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjBiZWM1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXktdGV4dC50ZXh0LWxpZ2h0ZW4tMyB7XFxuICBjb2xvcjogI2IwYmVjNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LXdhdmVzLndhdmVzLWxpZ2h0ZW4tMyAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiMGJlYzUgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS5saWdodGVuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzkwYTRhZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LXRleHQudGV4dC1saWdodGVuLTIge1xcbiAgY29sb3I6ICM5MGE0YWUgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS13YXZlcy53YXZlcy1saWdodGVuLTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBhNGFlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXkubGlnaHRlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3ODkwOWMgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS10ZXh0LnRleHQtbGlnaHRlbi0xIHtcXG4gIGNvbG9yOiAjNzg5MDljICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXktd2F2ZXMud2F2ZXMtbGlnaHRlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzc4OTA5YyAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LmRhcmtlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM1NDZlN2EgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS10ZXh0LnRleHQtZGFya2VuLTEge1xcbiAgY29sb3I6ICM1NDZlN2EgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS13YXZlcy53YXZlcy1kYXJrZW4tMSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM1NDZlN2EgIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS5kYXJrZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDU1YTY0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXktdGV4dC50ZXh0LWRhcmtlbi0yIHtcXG4gIGNvbG9yOiAjNDU1YTY0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXktd2F2ZXMud2F2ZXMtZGFya2VuLTIgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDU1YTY0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ibHVlLWdyZXkuZGFya2VuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM3NDc0ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LXRleHQudGV4dC1kYXJrZW4tMyB7XFxuICBjb2xvcjogIzM3NDc0ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LXdhdmVzLndhdmVzLWRhcmtlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM3NDc0ZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmx1ZS1ncmV5LmRhcmtlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyNjMyMzggIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS10ZXh0LnRleHQtZGFya2VuLTQge1xcbiAgY29sb3I6ICMyNjMyMzggIWltcG9ydGFudDtcXG59XFxuXFxuLmJsdWUtZ3JleS13YXZlcy53YXZlcy1kYXJrZW4tNCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyNjMyMzggIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXkge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzllOWU5ZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS10ZXh0IHtcXG4gIGNvbG9yOiAjOWU5ZTllICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LXdhdmVzIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzllOWU5ZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS5saWdodGVuLTUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS10ZXh0LnRleHQtbGlnaHRlbi01IHtcXG4gIGNvbG9yOiAjZmFmYWZhICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LXdhdmVzLndhdmVzLWxpZ2h0ZW4tNSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmEgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXkubGlnaHRlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjUgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXktdGV4dC50ZXh0LWxpZ2h0ZW4tNCB7XFxuICBjb2xvcjogI2Y1ZjVmNSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS13YXZlcy53YXZlcy1saWdodGVuLTQgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LmxpZ2h0ZW4tMyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LXRleHQudGV4dC1saWdodGVuLTMge1xcbiAgY29sb3I6ICNlZWVlZWUgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXktd2F2ZXMud2F2ZXMtbGlnaHRlbi0zIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS5saWdodGVuLTIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS10ZXh0LnRleHQtbGlnaHRlbi0yIHtcXG4gIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LXdhdmVzLndhdmVzLWxpZ2h0ZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTAgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXkubGlnaHRlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiZGJkYmQgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXktdGV4dC50ZXh0LWxpZ2h0ZW4tMSB7XFxuICBjb2xvcjogI2JkYmRiZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS13YXZlcy53YXZlcy1saWdodGVuLTEgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmRiZGJkICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LmRhcmtlbi0xIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM3NTc1NzUgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXktdGV4dC50ZXh0LWRhcmtlbi0xIHtcXG4gIGNvbG9yOiAjNzU3NTc1ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LXdhdmVzLndhdmVzLWRhcmtlbi0xIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzc1NzU3NSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS5kYXJrZW4tMiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjE2MTYxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LXRleHQudGV4dC1kYXJrZW4tMiB7XFxuICBjb2xvcjogIzYxNjE2MSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS13YXZlcy53YXZlcy1kYXJrZW4tMiAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM2MTYxNjEgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXkuZGFya2VuLTMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyNDI0MiAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZ3JleS10ZXh0LnRleHQtZGFya2VuLTMge1xcbiAgY29sb3I6ICM0MjQyNDIgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXktd2F2ZXMud2F2ZXMtZGFya2VuLTMgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDI0MjQyICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LmRhcmtlbi00IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTIxMjEgIWltcG9ydGFudDtcXG59XFxuXFxuLmdyZXktdGV4dC50ZXh0LWRhcmtlbi00IHtcXG4gIGNvbG9yOiAjMjEyMTIxICFpbXBvcnRhbnQ7XFxufVxcblxcbi5ncmV5LXdhdmVzLndhdmVzLWRhcmtlbi00IC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjEyMSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmxhY2sge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uYmxhY2stdGV4dCB7XFxuICBjb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2hpdGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2hpdGUtdGV4dCB7XFxuICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udHJhbnNwYXJlbnQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG59XFxuXFxuLnRyYW5zcGFyZW50LXRleHQge1xcbiAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxufVxcblxcbi8qKlxcbiAqIHByaXNtLmpzIFR3aWxpZ2h0IHRoZW1lXFxuICogQmFzZWQgKG1vcmUgb3IgbGVzcykgb24gdGhlIFR3aWxpZ2h0IHRoZW1lIG9yaWdpbmFsbHkgb2YgVGV4dG1hdGUgZmFtZS5cXG4gKiBAYXV0aG9yIFJlbXkgQmFjaFxcbiAqL1xcbmNvZGVbY2xhc3MqPWxhbmd1YWdlLV0sXFxucHJlW2NsYXNzKj1sYW5ndWFnZS1dIHtcXG4gIGNvbG9yOiB3aGl0ZTtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxuICBmb250LWZhbWlseTogQ29uc29sYXMsIE1vbmFjbywgXFxcIkFuZGFsZSBNb25vXFxcIiwgXFxcIlVidW50dSBNb25vXFxcIiwgbW9ub3NwYWNlO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIHRleHQtc2hhZG93OiAwIC0wLjFlbSAwLjJlbSBibGFjaztcXG4gIHdoaXRlLXNwYWNlOiBwcmU7XFxuICB3b3JkLXNwYWNpbmc6IG5vcm1hbDtcXG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcXG4gIHdvcmQtd3JhcDogbm9ybWFsO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIC1tb3otdGFiLXNpemU6IDQ7XFxuICAtby10YWItc2l6ZTogNDtcXG4gIHRhYi1zaXplOiA0O1xcbiAgLXdlYmtpdC1oeXBoZW5zOiBub25lO1xcbiAgLW1vei1oeXBoZW5zOiBub25lO1xcbiAgLW1zLWh5cGhlbnM6IG5vbmU7XFxuICBoeXBoZW5zOiBub25lO1xcbn1cXG5cXG5wcmVbY2xhc3MqPWxhbmd1YWdlLV0sXFxuOm5vdChwcmUpID4gY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSB7XFxuICBiYWNrZ3JvdW5kOiBoc2woMCwgMCUsIDglKTsgLyogIzE0MTQxNCAqL1xcbn1cXG5cXG4vKiBDb2RlIGJsb2NrcyAqL1xcbnByZVtjbGFzcyo9bGFuZ3VhZ2UtXSB7XFxuICBib3JkZXItcmFkaXVzOiAwLjVlbTtcXG4gIGJvcmRlcjogMC4zZW0gc29saWQgaHNsKDAsIDAlLCAzMyUpOyAvKiAjMjgyQTJCICovXFxuICBib3gtc2hhZG93OiAxcHggMXB4IDAuNWVtIGJsYWNrIGluc2V0O1xcbiAgbWFyZ2luOiAwLjVlbSAwO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICBwYWRkaW5nOiAxZW07XFxufVxcblxcbnByZVtjbGFzcyo9bGFuZ3VhZ2UtXTo6LW1vei1zZWxlY3Rpb24ge1xcbiAgLyogRmlyZWZveCAqL1xcbiAgYmFja2dyb3VuZDogaHNsKDIwMCwgNCUsIDE2JSk7IC8qICMyODJBMkIgKi9cXG59XFxuXFxucHJlW2NsYXNzKj1sYW5ndWFnZS1dOjpzZWxlY3Rpb24ge1xcbiAgLyogU2FmYXJpICovXFxuICBiYWNrZ3JvdW5kOiBoc2woMjAwLCA0JSwgMTYlKTsgLyogIzI4MkEyQiAqL1xcbn1cXG5cXG4vKiBUZXh0IFNlbGVjdGlvbiBjb2xvdXIgKi9cXG5wcmVbY2xhc3MqPWxhbmd1YWdlLV06Oi1tb3otc2VsZWN0aW9uLCBwcmVbY2xhc3MqPWxhbmd1YWdlLV0gOjotbW96LXNlbGVjdGlvbixcXG5jb2RlW2NsYXNzKj1sYW5ndWFnZS1dOjotbW96LXNlbGVjdGlvbiwgY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSA6Oi1tb3otc2VsZWN0aW9uIHtcXG4gIHRleHQtc2hhZG93OiBub25lO1xcbiAgYmFja2dyb3VuZDogaHNsYSgwLCAwJSwgOTMlLCAwLjE1KTsgLyogI0VERURFRCAqL1xcbn1cXG5cXG5wcmVbY2xhc3MqPWxhbmd1YWdlLV06OnNlbGVjdGlvbiwgcHJlW2NsYXNzKj1sYW5ndWFnZS1dIDo6c2VsZWN0aW9uLFxcbmNvZGVbY2xhc3MqPWxhbmd1YWdlLV06OnNlbGVjdGlvbiwgY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSA6OnNlbGVjdGlvbiB7XFxuICB0ZXh0LXNoYWRvdzogbm9uZTtcXG4gIGJhY2tncm91bmQ6IGhzbGEoMCwgMCUsIDkzJSwgMC4xNSk7IC8qICNFREVERUQgKi9cXG59XFxuXFxuLyogSW5saW5lIGNvZGUgKi9cXG46bm90KHByZSkgPiBjb2RlW2NsYXNzKj1sYW5ndWFnZS1dIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAuM2VtO1xcbiAgYm9yZGVyOiAwLjEzZW0gc29saWQgaHNsKDAsIDAlLCAzMyUpOyAvKiAjNTQ1NDU0ICovXFxuICBib3gtc2hhZG93OiAxcHggMXB4IDAuM2VtIC0wLjFlbSBibGFjayBpbnNldDtcXG4gIHBhZGRpbmc6IDAuMTVlbSAwLjJlbSAwLjA1ZW07XFxuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xcbn1cXG5cXG4udG9rZW4uY29tbWVudCxcXG4udG9rZW4ucHJvbG9nLFxcbi50b2tlbi5kb2N0eXBlLFxcbi50b2tlbi5jZGF0YSB7XFxuICBjb2xvcjogaHNsKDAsIDAlLCA0NyUpOyAvKiAjNzc3Nzc3ICovXFxufVxcblxcbi50b2tlbi5wdW5jdHVhdGlvbiB7XFxuICBvcGFjaXR5OiAwLjc7XFxufVxcblxcbi5uYW1lc3BhY2Uge1xcbiAgb3BhY2l0eTogMC43O1xcbn1cXG5cXG4udG9rZW4udGFnLFxcbi50b2tlbi5ib29sZWFuLFxcbi50b2tlbi5udW1iZXIsXFxuLnRva2VuLmRlbGV0ZWQge1xcbiAgY29sb3I6IGhzbCgxNCwgNTglLCA1NSUpOyAvKiAjQ0Y2QTRDICovXFxufVxcblxcbi50b2tlbi5rZXl3b3JkLFxcbi50b2tlbi5wcm9wZXJ0eSxcXG4udG9rZW4uc2VsZWN0b3IsXFxuLnRva2VuLmNvbnN0YW50LFxcbi50b2tlbi5zeW1ib2wsXFxuLnRva2VuLmJ1aWx0aW4ge1xcbiAgY29sb3I6IGhzbCg1MywgODklLCA3OSUpOyAvKiAjRjlFRTk4ICovXFxufVxcblxcbi50b2tlbi5hdHRyLW5hbWUsXFxuLnRva2VuLmF0dHItdmFsdWUsXFxuLnRva2VuLnN0cmluZyxcXG4udG9rZW4uY2hhcixcXG4udG9rZW4ub3BlcmF0b3IsXFxuLnRva2VuLmVudGl0eSxcXG4udG9rZW4udXJsLFxcbi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZyxcXG4uc3R5bGUgLnRva2VuLnN0cmluZyxcXG4udG9rZW4udmFyaWFibGUsXFxuLnRva2VuLmluc2VydGVkIHtcXG4gIGNvbG9yOiBoc2woNzYsIDIxJSwgNTIlKTsgLyogIzhGOUQ2QSAqL1xcbn1cXG5cXG4udG9rZW4uYXRydWxlIHtcXG4gIGNvbG9yOiBoc2woMjE4LCAyMiUsIDU1JSk7IC8qICM3NTg3QTYgKi9cXG59XFxuXFxuLnRva2VuLnJlZ2V4LFxcbi50b2tlbi5pbXBvcnRhbnQge1xcbiAgY29sb3I6IGhzbCg0MiwgNzUlLCA2NSUpOyAvKiAjRTlDMDYyICovXFxufVxcblxcbi50b2tlbi5pbXBvcnRhbnQsXFxuLnRva2VuLmJvbGQge1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxufVxcblxcbi50b2tlbi5pdGFsaWMge1xcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcbn1cXG5cXG4udG9rZW4uZW50aXR5IHtcXG4gIGN1cnNvcjogaGVscDtcXG59XFxuXFxucHJlW2RhdGEtbGluZV0ge1xcbiAgcGFkZGluZzogMWVtIDAgMWVtIDNlbTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuXFxuLyogTWFya3VwICovXFxuLmxhbmd1YWdlLW1hcmt1cCAudG9rZW4udGFnLFxcbi5sYW5ndWFnZS1tYXJrdXAgLnRva2VuLmF0dHItbmFtZSxcXG4ubGFuZ3VhZ2UtbWFya3VwIC50b2tlbi5wdW5jdHVhdGlvbiB7XFxuICBjb2xvcjogaHNsKDMzLCAzMyUsIDUyJSk7IC8qICNBQzg4NUIgKi9cXG59XFxuXFxuLyogTWFrZSB0aGUgdG9rZW5zIHNpdCBhYm92ZSB0aGUgbGluZSBoaWdobGlnaHQgc28gdGhlIGNvbG91cnMgZG9uJ3QgbG9vayBmYWRlZC4gKi9cXG4udG9rZW4ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgei1pbmRleDogMTtcXG59XFxuXFxuLmxpbmUtaGlnaGxpZ2h0IHtcXG4gIGJhY2tncm91bmQ6IGhzbGEoMCwgMCUsIDMzJSwgMC4yNSk7IC8qICM1NDU0NTQgKi9cXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgaHNsYSgwLCAwJSwgMzMlLCAwLjEpIDcwJSwgaHNsYSgwLCAwJSwgMzMlLCAwKSk7IC8qICM1NDU0NTQgKi9cXG4gIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgaHNsKDAsIDAlLCAzMyUpOyAvKiAjNTQ1NDU0ICovXFxuICBib3JkZXItdG9wOiAxcHggZGFzaGVkIGhzbCgwLCAwJSwgMzMlKTsgLyogIzU0NTQ1NCAqL1xcbiAgbGVmdDogMDtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbiAgbWFyZ2luLXRvcDogMC43NWVtOyAvKiBTYW1lIGFzIC5wcmlzbeKAmXMgcGFkZGluZy10b3AgKi9cXG4gIHBhZGRpbmc6IGluaGVyaXQgMDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDA7XFxuICB3aGl0ZS1zcGFjZTogcHJlO1xcbiAgei1pbmRleDogMDtcXG59XFxuXFxuLmxpbmUtaGlnaGxpZ2h0OmJlZm9yZSxcXG4ubGluZS1oaWdobGlnaHRbZGF0YS1lbmRdOmFmdGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IGhzbCgyMTUsIDE1JSwgNTklKTsgLyogIzg3OTRBNiAqL1xcbiAgYm9yZGVyLXJhZGl1czogOTk5cHg7XFxuICBib3gtc2hhZG93OiAwIDFweCB3aGl0ZTtcXG4gIGNvbG9yOiBoc2woMjQsIDIwJSwgOTUlKTsgLyogI0Y1RjJGMCAqL1xcbiAgY29udGVudDogYXR0cihkYXRhLXN0YXJ0KTtcXG4gIGZvbnQ6IGJvbGQgNjUlLzEuNSBzYW5zLXNlcmlmO1xcbiAgbGVmdDogMC42ZW07XFxuICBtaW4td2lkdGg6IDFlbTtcXG4gIHBhZGRpbmc6IDAgMC41ZW07XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB0ZXh0LXNoYWRvdzogbm9uZTtcXG4gIHRvcDogMC40ZW07XFxuICB2ZXJ0aWNhbC1hbGlnbjogMC4zZW07XFxufVxcblxcbi5saW5lLWhpZ2hsaWdodFtkYXRhLWVuZF06YWZ0ZXIge1xcbiAgYm90dG9tOiAwLjRlbTtcXG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1lbmQpO1xcbiAgdG9wOiBhdXRvO1xcbn1cXG5cXG4ud2luZG93IHtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiVWJ1bnR1XFxcIiwgc2Fucy1zZXJpZjtcXG4gIGZvbnQtc2l6ZTogMTdweDtcXG4gIHdpZHRoOiA2MDBweDtcXG4gIG1hcmdpbjogNzVweCBhdXRvO1xcbiAgYmFja2dyb3VuZDogIzJjM2U1MDtcXG4gIGhlaWdodDogMzUwcHg7XFxuICBib3JkZXItcmFkaXVzOiA1cHg7XFxuICBkaXNwbGF5OiByZWxhdGl2ZTtcXG4gIGJveC1zaGFkb3c6IDEwcHggMTBweCAxMHB4ICM4ODg4ODg7XFxufVxcblxcbi5hZnRlcmNsb3NlIHtcXG4gIGNvbG9yOiAjMzQ0OTVlO1xcbiAgZGlzcGxheTogbm9uZTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG59XFxuXFxuLm9wZW4ge1xcbiAgY29sb3I6ICNmZmY7XFxuICBwYWRkaW5nOiAxNXB4O1xcbiAgYmFja2dyb3VuZDogIzJlY2M3MTtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIGJvcmRlcjogbm9uZTtcXG59XFxuXFxuLmJhc2gge1xcbiAgd2lkdGg6IDYwMHB4O1xcbiAgYmFja2dyb3VuZDogIzM0NDk1ZTtcXG4gIGhlaWdodDogMzEwcHg7XFxuICBib3JkZXItcmFkaXVzOiA1cHg7XFxuICB0b3A6IDQwcHg7XFxuICBkaXNwbGF5OiBhYnNvbHV0ZTtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG59XFxuLmJhc2ggLmNvbW1hbmQ6OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwidXNlckBtYWNoaW5lICQgOiBcXFwiO1xcbiAgY29sb3I6ICMyZWNjNzE7XFxufVxcbi5iYXNoIC5yZXN1bHRhOjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIj4+XFxcIjtcXG4gIGNvbG9yOiAjMmVjYzcxO1xcbn1cXG5cXG4vKiBlZmZlY3RlZCBieSBjb250cm9sbGVycyAqL1xcbi53aW5kb3dtYXgge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IGF1dG87XFxuICBiYWNrZ3JvdW5kOiAjMmMzZTUwO1xcbiAgaGVpZ2h0OiAxMDAwcHg7XFxuICBib3JkZXItcmFkaXVzOiA1cHg7XFxuICBkaXNwbGF5OiByZWxhdGl2ZTtcXG59XFxuXFxuLndpbmRvd21pbiB7XFxuICB3aWR0aDogMzAwcHg7XFxuICBoZWlnaHQ6IDQ1cHg7XFxuICBiYWNrZ3JvdW5kOiAjMmMzZTUwO1xcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgYm90dG9tOiAwO1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbn1cXG5cXG4uYmFzaG1heCB7XFxuICBkaXNwbGF5OiBhYnNvbHV0ZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgYmFja2dyb3VuZDogIzM0NDk1ZTtcXG4gIGhlaWdodDogOTYwcHg7XFxuICBib3JkZXItcmFkaXVzOiA1cHg7XFxuICBib3R0b206IDA7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuXFxuLyogIS0tZW5kLS0hICovXFxuLmJ1dHRvbnMge1xcbiAgd2lkdGg6IDE1cHg7XFxuICBoZWlnaHQ6IDE1cHg7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBmbG9hdDogcmlnaHQ7XFxuICBtYXJnaW46IDEzcHggNHB4O1xcbiAgYm9yZGVyOiBub25lO1xcbn1cXG5cXG4uY2xvc2Uge1xcbiAgYmFja2dyb3VuZDogI2U3NGMzYztcXG59XFxuXFxuLm1heGltaXplIHtcXG4gIGJhY2tncm91bmQ6ICNmMWM0MGY7XFxufVxcblxcbi5taW5pbWl6ZSB7XFxuICBiYWNrZ3JvdW5kOiAjMmVjYzcxO1xcbn1cXG5cXG4ucmVzdWx0IHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbi5jb250cm9scyB7XFxuICBoZWlnaHQ6IDQwcHg7XFxuICB0b3A6IDA7XFxufVxcblxcbi50aXRsZSB7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgcGFkZGluZzogMTBweDtcXG59XFxuXFxuLm1hdGVyaWFsLXRvb2x0aXAge1xcbiAgcGFkZGluZzogMTBweCA4cHg7XFxuICBmb250LXNpemU6IDFyZW07XFxuICB6LWluZGV4OiAyMDAwO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgY29sb3I6ICNmZmY7XFxuICBtaW4taGVpZ2h0OiAzNnB4O1xcbiAgbGluZS1oZWlnaHQ6IDEyMCU7XFxuICBvcGFjaXR5OiAwO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSA0cHgpO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzMjMyMzI7XFxufVxcblxcbi5iYWNrZHJvcCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBvcGFjaXR5OiAwO1xcbiAgaGVpZ2h0OiA3cHg7XFxuICB3aWR0aDogMTRweDtcXG4gIGJvcmRlci1yYWRpdXM6IDAgMCA1MCUgNTAlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMyMzIzMjtcXG4gIHotaW5kZXg6IC0xO1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDAlO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbn1cXG5cXG4uc2hhZG93LTAge1xcbiAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4vKiAyZHAgZWxldmF0aW9uIG1vZGlmaWVkKi9cXG4uc2hhZG93LTEsIG5hdiwgLmRyb3Bkb3duLWNvbnRlbnQsIC5jYXJkLCAuY2FyZC1wYW5lbCwgLmJ0bi1mbG9hdGluZywgLmJ0biwgLmJ0bi1zbWFsbCwgLmJ0bi1sYXJnZSwgLmNvbGxhcHNpYmxlIHtcXG4gIGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTtcXG59XFxuXFxuLnNoYWRvdy0xLWhhbGYsIC5idG4tZmxvYXRpbmc6aG92ZXIsIC5idG46aG92ZXIsIC5idG4tc21hbGw6aG92ZXIsIC5idG4tbGFyZ2U6aG92ZXIge1xcbiAgYm94LXNoYWRvdzogMCAzcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggN3B4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCAzcHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xcbn1cXG5cXG4vKiA2ZHAgZWxldmF0aW9uIG1vZGlmaWVkKi9cXG4uc2hhZG93LTIge1xcbiAgYm94LXNoYWRvdzogMCA0cHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcXG59XFxuXFxuLyogMTJkcCBlbGV2YXRpb24gbW9kaWZpZWQqL1xcbi5zaGFkb3ctMyB7XFxuICBib3gtc2hhZG93OiAwIDhweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMik7XFxufVxcblxcbi8qIDE2ZHAgZWxldmF0aW9uICovXFxuLnNoYWRvdy00IHtcXG4gIGJveC1zaGFkb3c6IDAgMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDhweCAxMHB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xcbn1cXG5cXG4vKiAyNGRwIGVsZXZhdGlvbiAqL1xcbi5zaGFkb3ctNSwgLm1vZGFsIHtcXG4gIGJveC1zaGFkb3c6IDAgMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKTtcXG59XFxuXFxuLyogMjRkcCBlbGV2YXRpb24gKi9cXG4uaW52ZXJ0LXNoYWRvdy01IHtcXG4gIGJveC1zaGFkb3c6IDM4cHggMCAwIDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgNDZweCAwIDAgMCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAxNXB4IDAgMCAwIHJnYmEoMCwgMCwgMCwgMC4yKTtcXG59XFxuXFxuLmhvdmVyYWJsZSB7XFxuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMjVzO1xcbn1cXG4uaG92ZXJhYmxlOmhvdmVyIHtcXG4gIGJveC1zaGFkb3c6IDAgOHB4IDE3cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgNnB4IDIwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTkpO1xcbn1cXG5cXG4vKiFcXG4gKiBXYXZlcyB2MC42LjBcXG4gKiBodHRwOi8vZmlhbi5teS5pZC9XYXZlc1xcbiAqXFxuICogQ29weXJpZ2h0IDIwMTQgQWxmaWFuYSBFLiBTaWJ1ZWEgYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9maWFucy9XYXZlcy9ibG9iL21hc3Rlci9MSUNFTlNFXFxuICovXFxuLndhdmVzLWVmZmVjdCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG4gIHotaW5kZXg6IDE7XFxuICB0cmFuc2l0aW9uOiAwLjNzIGVhc2Utb3V0O1xcbn1cXG4ud2F2ZXMtZWZmZWN0IC53YXZlcy1yaXBwbGUge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBtYXJnaW4tdG9wOiAtMTBweDtcXG4gIG1hcmdpbi1sZWZ0OiAtMTBweDtcXG4gIG9wYWNpdHk6IDA7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMik7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC43cyBlYXNlLW91dDtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eTtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMCk7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuLndhdmVzLWVmZmVjdC53YXZlcy1saWdodCAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40NSk7XFxufVxcbi53YXZlcy1lZmZlY3Qud2F2ZXMtcmVkIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNDQsIDY3LCA1NCwgMC43KTtcXG59XFxuLndhdmVzLWVmZmVjdC53YXZlcy15ZWxsb3cgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjM1LCA1OSwgMC43KTtcXG59XFxuLndhdmVzLWVmZmVjdC53YXZlcy1vcmFuZ2UgLndhdmVzLXJpcHBsZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMTUyLCAwLCAwLjcpO1xcbn1cXG4ud2F2ZXMtZWZmZWN0LndhdmVzLXB1cnBsZSAud2F2ZXMtcmlwcGxlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU2LCAzOSwgMTc2LCAwLjcpO1xcbn1cXG4ud2F2ZXMtZWZmZWN0LndhdmVzLWdyZWVuIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg3NiwgMTc1LCA4MCwgMC43KTtcXG59XFxuLndhdmVzLWVmZmVjdC53YXZlcy10ZWFsIC53YXZlcy1yaXBwbGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNTAsIDEzNiwgMC43KTtcXG59XFxuLndhdmVzLWVmZmVjdCBpbnB1dFt0eXBlPWJ1dHRvbl0sIC53YXZlcy1lZmZlY3QgaW5wdXRbdHlwZT1yZXNldF0sIC53YXZlcy1lZmZlY3QgaW5wdXRbdHlwZT1zdWJtaXRdIHtcXG4gIGJvcmRlcjogMDtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcXG4gIHRleHQtdHJhbnNmb3JtOiBpbmhlcml0O1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG59XFxuLndhdmVzLWVmZmVjdCBpbWcge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgei1pbmRleDogLTE7XFxufVxcblxcbi53YXZlcy1ub3RyYW5zaXRpb24ge1xcbiAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ud2F2ZXMtY2lyY2xlIHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcXG4gIC13ZWJraXQtbWFzay1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCB3aGl0ZSAxMDAlLCBibGFjayAxMDAlKTtcXG59XFxuXFxuLndhdmVzLWlucHV0LXdyYXBwZXIge1xcbiAgYm9yZGVyLXJhZGl1czogMC4yZW07XFxuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xcbn1cXG4ud2F2ZXMtaW5wdXQtd3JhcHBlciAud2F2ZXMtYnV0dG9uLWlucHV0IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICB6LWluZGV4OiAxO1xcbn1cXG5cXG4ud2F2ZXMtY2lyY2xlIHtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHdpZHRoOiAyLjVlbTtcXG4gIGhlaWdodDogMi41ZW07XFxuICBsaW5lLWhlaWdodDogMi41ZW07XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICAtd2Via2l0LW1hc2staW1hZ2U6IG5vbmU7XFxufVxcblxcbi53YXZlcy1ibG9jayB7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuXFxuLyogRmlyZWZveCBCdWc6IGxpbmsgbm90IHRyaWdnZXJlZCAqL1xcbi53YXZlcy1lZmZlY3QgLndhdmVzLXJpcHBsZSB7XFxuICB6LWluZGV4OiAtMTtcXG59XFxuXFxuLm1vZGFsIHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XFxuICBwYWRkaW5nOiAwO1xcbiAgbWF4LWhlaWdodDogNzAlO1xcbiAgd2lkdGg6IDU1JTtcXG4gIG1hcmdpbjogYXV0bztcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICB3aWxsLWNoYW5nZTogdG9wLCBvcGFjaXR5O1xcbn1cXG4ubW9kYWw6Zm9jdXMge1xcbiAgb3V0bGluZTogbm9uZTtcXG59XFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogOTkycHgpIHtcXG4gIC5tb2RhbCB7XFxuICAgIHdpZHRoOiA4MCU7XFxuICB9XFxufVxcbi5tb2RhbCBoMSwgLm1vZGFsIGgyLCAubW9kYWwgaDMsIC5tb2RhbCBoNCB7XFxuICBtYXJnaW4tdG9wOiAwO1xcbn1cXG4ubW9kYWwgLm1vZGFsLWNvbnRlbnQge1xcbiAgcGFkZGluZzogMjRweDtcXG59XFxuLm1vZGFsIC5tb2RhbC1jbG9zZSB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5tb2RhbCAubW9kYWwtZm9vdGVyIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAgMCAycHggMnB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcXG4gIHBhZGRpbmc6IDRweCA2cHg7XFxuICBoZWlnaHQ6IDU2cHg7XFxuICB3aWR0aDogMTAwJTtcXG4gIHRleHQtYWxpZ246IHJpZ2h0O1xcbn1cXG4ubW9kYWwgLm1vZGFsLWZvb3RlciAuYnRuLCAubW9kYWwgLm1vZGFsLWZvb3RlciAuYnRuLXNtYWxsLCAubW9kYWwgLm1vZGFsLWZvb3RlciAuYnRuLWxhcmdlLCAubW9kYWwgLm1vZGFsLWZvb3RlciAuYnRuLWZsYXQge1xcbiAgbWFyZ2luOiA2cHggMDtcXG59XFxuLm1vZGFsIC5tb2RhbC1oZWFkZXIge1xcbiAgYm9yZGVyLXJhZGl1czogMnB4IDJweCAwIDA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xcbiAgcGFkZGluZzogNnB4IDRweDtcXG4gIGhlaWdodDogNTZweDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XFxufVxcbi5tb2RhbCAubW9kYWwtaGVhZGVyIC5idG4sIC5tb2RhbCAubW9kYWwtaGVhZGVyIC5idG4tc21hbGwsIC5tb2RhbCAubW9kYWwtaGVhZGVyIC5idG4tbGFyZ2UsIC5tb2RhbCAubW9kYWwtaGVhZGVyIC5idG4tZmxhdCB7XFxuICBtYXJnaW46IDZweCAwO1xcbn1cXG5cXG4ubW9kYWwtb3ZlcmxheSB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICB6LWluZGV4OiA5OTk7XFxuICB0b3A6IC0yNSU7XFxuICBsZWZ0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBoZWlnaHQ6IDEyNSU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGJhY2tncm91bmQ6ICMwMDA7XFxuICBkaXNwbGF5OiBub25lO1xcbiAgd2lsbC1jaGFuZ2U6IG9wYWNpdHk7XFxufVxcblxcbi5tb2RhbC5tb2RhbC1maXhlZC1mb290ZXIge1xcbiAgcGFkZGluZzogMDtcXG4gIGhlaWdodDogNzAlO1xcbn1cXG4ubW9kYWwubW9kYWwtZml4ZWQtZm9vdGVyIC5tb2RhbC1jb250ZW50IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGhlaWdodDogY2FsYygxMDAlIC0gNTZweCk7XFxuICBtYXgtaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbn1cXG4ubW9kYWwubW9kYWwtZml4ZWQtZm9vdGVyIC5tb2RhbC1mb290ZXIge1xcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvdHRvbTogMDtcXG59XFxuXFxuLm1vZGFsLmJvdHRvbS1zaGVldCB7XFxuICB0b3A6IGF1dG87XFxuICBib3R0b206IC0xMDAlO1xcbiAgbWFyZ2luOiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXgtaGVpZ2h0OiA0NSU7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbiAgd2lsbC1jaGFuZ2U6IGJvdHRvbSwgb3BhY2l0eTtcXG59XFxuXFxuaHRtbCxcXG5ib2R5LFxcbiNyb290IHtcXG4gIG1hcmdpbjogMDtcXG4gIGhlaWdodDogMTAwJTtcXG59XFxuXFxuKiB7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAwO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuXFxuLm5vc2VsZWN0IHtcXG4gIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsgLyogaU9TIFNhZmFyaSAqL1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLyogU2FmYXJpICovXFxuICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7IC8qIEtvbnF1ZXJvciBIVE1MICovXFxuICAtbW96LXVzZXItc2VsZWN0OiBub25lOyAvKiBPbGQgdmVyc2lvbnMgb2YgRmlyZWZveCAqL1xcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lOyAvKiBJbnRlcm5ldCBFeHBsb3Jlci9FZGdlICovXFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIC8qIE5vbi1wcmVmaXhlZCB2ZXJzaW9uLCBjdXJyZW50bHlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBieSBDaHJvbWUsIEVkZ2UsIE9wZXJhIGFuZCBGaXJlZm94ICovXFxufVxcblxcbnVsOm5vdCguYnJvd3Nlci1kZWZhdWx0KSB7XFxuICBwYWRkaW5nLWxlZnQ6IDA7XFxuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XFxufVxcbnVsOm5vdCguYnJvd3Nlci1kZWZhdWx0KSA+IGxpIHtcXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcXG59XFxuXFxuYSB7XFxuICBjb2xvcjogIzAzOWJlNTtcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcblxcbi53LTEwMCB7XFxuICB3aWR0aDogMTAwJTtcXG59XFxuXFxuLnJpZ2h0LWFsaWduIHtcXG4gIHRleHQtYWxpZ246IHJpZ2h0O1xcbn1cXG5cXG4uY2VudGVyLWFsaWduIHtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG59XFxuXFxuLnYtY2VudGVyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG5cXG4ubWIxIHtcXG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XFxufVxcblxcbi5jb2xsZWN0aW9uIHtcXG4gIG1hcmdpbjogMC4zMzMzMzMzMzMzcmVtIDAgMC42NjY2NjY2NjY3cmVtIDA7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZTBlMGUwO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcXG4gIHBhZGRpbmc6IDEwcHggMjBweDtcXG4gIG1hcmdpbjogMDtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTBlMGUwO1xcbn1cXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmhvdmVyOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XFxufVxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIHtcXG4gIG1pbi1oZWlnaHQ6IDg0cHg7XFxuICBwYWRkaW5nLWxlZnQ6IDcycHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyOm5vdCguY2lyY2xlLWNsaXBwZXIpID4gLmNpcmNsZSxcXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciA6bm90KC5jaXJjbGUtY2xpcHBlcikgPiAuY2lyY2xlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHdpZHRoOiA0MnB4O1xcbiAgaGVpZ2h0OiA0MnB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGxlZnQ6IDE1cHg7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbn1cXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciBpLmNpcmNsZSB7XFxuICBmb250LXNpemU6IDE4cHg7XFxuICBsaW5lLWhlaWdodDogNDJweDtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG59XFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgLnRpdGxlIHtcXG4gIGZvbnQtc2l6ZTogMTZweDtcXG59XFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgcCB7XFxuICBtYXJnaW46IDA7XFxufVxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIC5zZWNvbmRhcnktY29udGVudCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDE2cHg7XFxuICByaWdodDogMTZweDtcXG59XFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbTpsYXN0LWNoaWxkIHtcXG4gIGJvcmRlci1ib3R0b206IG5vbmU7XFxufVxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XFxuICBjb2xvcjogI2VhZmFmOTtcXG59XFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hY3RpdmUgLnNlY29uZGFyeS1jb250ZW50IHtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG4uY29sbGVjdGlvbiBhLmNvbGxlY3Rpb24taXRlbSB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHRyYW5zaXRpb246IDAuMjVzO1xcbiAgY29sb3I6ICMyNmE2OWE7XFxufVxcbi5jb2xsZWN0aW9uIGEuY29sbGVjdGlvbi1pdGVtOm5vdCguYWN0aXZlKTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xcbn1cXG4uY29sbGVjdGlvbi53aXRoLWhlYWRlciAuY29sbGVjdGlvbi1oZWFkZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTBlMGUwO1xcbiAgcGFkZGluZzogMTBweCAyMHB4O1xcbn1cXG4uY29sbGVjdGlvbi53aXRoLWhlYWRlciAuY29sbGVjdGlvbi1pdGVtIHtcXG4gIHBhZGRpbmctbGVmdDogMzBweDtcXG59XFxuLmNvbGxlY3Rpb24ud2l0aC1oZWFkZXIgLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIge1xcbiAgcGFkZGluZy1sZWZ0OiA3MnB4O1xcbn1cXG5cXG4uc2Vjb25kYXJ5LWNvbnRlbnQge1xcbiAgZmxvYXQ6IHJpZ2h0O1xcbiAgY29sb3I6ICMyNmE2OWE7XFxufVxcblxcbi5jb2xsYXBzaWJsZSAuY29sbGVjdGlvbiB7XFxuICBtYXJnaW46IDA7XFxuICBib3JkZXI6IG5vbmU7XFxufVxcblxcbi5tb2RhbC1vdmVybGF5IHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIGhlaWdodDogMTAwdmg7XFxuICB3aWR0aDogMTAwdnc7XFxuICBwYWRkaW5nOiAyMHB4IDAgMjBweCAwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xcbiAgei1pbmRleDogOTk5O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbn1cXG4ubW9kYWwtb3ZlcmxheSAuaW5uZXJmb3JtIHtcXG4gIG1heC13aWR0aDogNjUwcHg7XFxufVxcbi5tb2RhbC1vdmVybGF5IC5pbm5lcmZvcm0gZm9ybSB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqXFxuICBNZWRpYSBRdWVyeSBDbGFzc2VzXFxuKioqKioqKioqKioqKioqKioqKioqKi9cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA2MDBweCkge1xcbiAgLmhpZGUtb24tc21hbGwtb25seSwgLmhpZGUtb24tc21hbGwtYW5kLWRvd24ge1xcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XFxuICB9XFxufVxcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6IDk5MnB4KSB7XFxuICAuaGlkZS1vbi1tZWQtYW5kLWRvd24ge1xcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XFxuICB9XFxufVxcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDYwMXB4KSB7XFxuICAuaGlkZS1vbi1tZWQtYW5kLXVwIHtcXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcbiAgfVxcbn1cXG5cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSBhbmQgKG1heC13aWR0aDogOTkycHgpIHtcXG4gIC5oaWRlLW9uLW1lZC1vbmx5IHtcXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcbiAgfVxcbn1cXG5cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiA5OTNweCkge1xcbiAgLmhpZGUtb24tbGFyZ2Utb25seSB7XFxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXG4gIH1cXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogMTIwMXB4KSB7XFxuICAuaGlkZS1vbi1leHRyYS1sYXJnZS1vbmx5IHtcXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcbiAgfVxcbn1cXG5cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiAxMjAxcHgpIHtcXG4gIC5zaG93LW9uLWV4dHJhLWxhcmdlIHtcXG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcXG4gIH1cXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogOTkzcHgpIHtcXG4gIC5zaG93LW9uLWxhcmdlIHtcXG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcXG4gIH1cXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDk5MnB4KSB7XFxuICAuc2hvdy1vbi1tZWRpdW0ge1xcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcbiAgfVxcbn1cXG5cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA2MDBweCkge1xcbiAgLnNob3ctb24tc21hbGwge1xcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcbiAgfVxcbn1cXG5cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiA2MDFweCkge1xcbiAgLnNob3ctb24tbWVkaXVtLWFuZC11cCB7XFxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XFxuICB9XFxufVxcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6IDk5MnB4KSB7XFxuICAuc2hvdy1vbi1tZWRpdW0tYW5kLWRvd24ge1xcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcbiAgfVxcbn1cXG5cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA2MDBweCkge1xcbiAgLmNlbnRlci1vbi1zbWFsbC1vbmx5IHtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKlxcbiAgVXRpbGl0eSBDbGFzc2VzXFxuKioqKioqKioqKioqKioqKioqKi9cXG4uaGlkZSB7XFxuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XFxufVxcblxcbi5sZWZ0LWFsaWduIHtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxufVxcblxcbi5yaWdodC1hbGlnbiB7XFxuICB0ZXh0LWFsaWduOiByaWdodDtcXG59XFxuXFxuLmNlbnRlciwgLmNlbnRlci1hbGlnbiB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcblxcbi5sZWZ0IHtcXG4gIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yaWdodCB7XFxuICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDtcXG59XFxuXFxuLm5vLXNlbGVjdCB7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG59XFxuXFxuLmNpcmNsZSB7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxufVxcblxcbi5jZW50ZXItYmxvY2sge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG4gIG1hcmdpbi1yaWdodDogYXV0bztcXG59XFxuXFxuLnRydW5jYXRlIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XFxuXFxuLm5vLXBhZGRpbmcge1xcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG5zcGFuLmJhZGdlIHtcXG4gIG1pbi13aWR0aDogM3JlbTtcXG4gIHBhZGRpbmc6IDAgNnB4O1xcbiAgbWFyZ2luLWxlZnQ6IDE0cHg7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBmb250LXNpemU6IDFyZW07XFxuICBsaW5lLWhlaWdodDogMjJweDtcXG4gIGhlaWdodDogMjJweDtcXG4gIGNvbG9yOiAjNzU3NTc1O1xcbiAgZmxvYXQ6IHJpZ2h0O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuc3Bhbi5iYWRnZS5uZXcge1xcbiAgZm9udC13ZWlnaHQ6IDMwMDtcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbn1cXG5zcGFuLmJhZGdlLm5ldzphZnRlciB7XFxuICBjb250ZW50OiBcXFwiIG5ld1xcXCI7XFxufVxcbnNwYW4uYmFkZ2VbZGF0YS1iYWRnZS1jYXB0aW9uXTo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIiBcXFwiIGF0dHIoZGF0YS1iYWRnZS1jYXB0aW9uKTtcXG59XFxuXFxubmF2IHVsIGEgc3Bhbi5iYWRnZSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBmbG9hdDogbm9uZTtcXG4gIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICBsaW5lLWhlaWdodDogMjJweDtcXG4gIGhlaWdodDogMjJweDtcXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGF1dG87XFxufVxcblxcbi5jb2xsZWN0aW9uLWl0ZW0gc3Bhbi5iYWRnZSB7XFxuICBtYXJnaW4tdG9wOiBjYWxjKDAuNzVyZW0gLSAxMXB4KTtcXG59XFxuXFxuLmNvbGxhcHNpYmxlIHNwYW4uYmFkZ2Uge1xcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxufVxcblxcbi5zaWRlbmF2IHNwYW4uYmFkZ2Uge1xcbiAgbWFyZ2luLXRvcDogMTEuNXB4O1xcbn1cXG5cXG50YWJsZSBzcGFuLmJhZGdlIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGZsb2F0OiBub25lO1xcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxufVxcblxcbi5jaGlwIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGhlaWdodDogMzJweDtcXG4gIGZvbnQtc2l6ZTogMTNweDtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpO1xcbiAgbGluZS1oZWlnaHQ6IDMycHg7XFxuICBwYWRkaW5nOiAwIDEycHg7XFxuICBib3JkZXItcmFkaXVzOiAxNnB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U0ZTRlNDtcXG4gIG1hcmdpbi1ib3R0b206IDVweDtcXG4gIG1hcmdpbi1yaWdodDogNXB4O1xcbn1cXG4uY2hpcDpmb2N1cyB7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG4uY2hpcCA+IGltZyB7XFxuICBmbG9hdDogbGVmdDtcXG4gIG1hcmdpbjogMCA4cHggMCAtMTJweDtcXG4gIGhlaWdodDogMzJweDtcXG4gIHdpZHRoOiAzMnB4O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbn1cXG4uY2hpcCAuY2xvc2Uge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZmxvYXQ6IHJpZ2h0O1xcbiAgZm9udC1zaXplOiAxNnB4O1xcbiAgbGluZS1oZWlnaHQ6IDMycHg7XFxuICBwYWRkaW5nLWxlZnQ6IDhweDtcXG59XFxuXFxuLmNoaXBzIHtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjOWU5ZTllO1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG4gIG1hcmdpbjogMCAwIDhweCAwO1xcbiAgbWluLWhlaWdodDogNDVweDtcXG4gIG91dGxpbmU6IG5vbmU7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC4zcztcXG59XFxuLmNoaXBzLmZvY3VzIHtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMjZhNjlhO1xcbiAgYm94LXNoYWRvdzogMCAxcHggMCAwICMyNmE2OWE7XFxufVxcbi5jaGlwczpob3ZlciB7XFxuICBjdXJzb3I6IHRleHQ7XFxufVxcbi5jaGlwcyAuaW5wdXQge1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG4gIGJvcmRlcjogMDtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBmb250LXNpemU6IDE2cHg7XFxuICBoZWlnaHQ6IDU2cHg7XFxuICBsaW5lLWhlaWdodDogMzJweDtcXG4gIG91dGxpbmU6IDA7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuICB3aWR0aDogMTIwcHggIWltcG9ydGFudDtcXG59XFxuLmNoaXBzIC5pbnB1dDpmb2N1cyB7XFxuICBib3JkZXI6IDAgIWltcG9ydGFudDtcXG4gIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuLmNoaXBzIC5hdXRvY29tcGxldGUtY29udGVudCB7XFxuICBtYXJnaW4tdG9wOiAwO1xcbiAgbWFyZ2luLWJvdHRvbTogMDtcXG59XFxuXFxuLnByZWZpeCB+IC5jaGlwcyB7XFxuICBtYXJnaW4tbGVmdDogM3JlbTtcXG4gIHdpZHRoOiA5MiU7XFxuICB3aWR0aDogY2FsYygxMDAlIC0gM3JlbSk7XFxufVxcblxcbi5jaGlwczplbXB0eSB+IGxhYmVsIHtcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNDAlKTtcXG59XFxuXFxuLmNvbGxhcHNpYmxlIHtcXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2RkZDtcXG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RkZDtcXG4gIG1hcmdpbjogMC4zMzMzMzMzMzMzcmVtIDAgMC42NjY2NjY2NjY3cmVtIDA7XFxufVxcblxcbi5jb2xsYXBzaWJsZS1oZWFkZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBsaW5lLWhlaWdodDogMS41O1xcbiAgcGFkZGluZzogMXJlbTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcXG59XFxuLmNvbGxhcHNpYmxlLWhlYWRlcjpmb2N1cyB7XFxuICBvdXRsaW5lOiAwO1xcbn1cXG4uY29sbGFwc2libGUtaGVhZGVyIGkge1xcbiAgd2lkdGg6IDJyZW07XFxuICBmb250LXNpemU6IDEuNnJlbTtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIG1hcmdpbi1yaWdodDogMXJlbTtcXG59XFxuXFxuLmtleWJvYXJkLWZvY3VzZWQgLmNvbGxhcHNpYmxlLWhlYWRlcjpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xcbn1cXG5cXG4uY29sbGFwc2libGUtYm9keSB7XFxuICBkaXNwbGF5OiBub25lO1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgcGFkZGluZzogMnJlbTtcXG59XFxuXFxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLFxcbi5zaWRlbmF2LmZpeGVkIC5jb2xsYXBzaWJsZSB7XFxuICBib3JkZXI6IG5vbmU7XFxuICBib3gtc2hhZG93OiBub25lO1xcbn1cXG4uc2lkZW5hdiAuY29sbGFwc2libGUgbGksXFxuLnNpZGVuYXYuZml4ZWQgLmNvbGxhcHNpYmxlIGxpIHtcXG4gIHBhZGRpbmc6IDA7XFxufVxcbi5zaWRlbmF2IC5jb2xsYXBzaWJsZS1oZWFkZXIsXFxuLnNpZGVuYXYuZml4ZWQgLmNvbGxhcHNpYmxlLWhlYWRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbiAgaGVpZ2h0OiBpbmhlcml0O1xcbiAgcGFkZGluZzogMCAxNXB4O1xcbn1cXG4uc2lkZW5hdiAuY29sbGFwc2libGUtaGVhZGVyOmhvdmVyLFxcbi5zaWRlbmF2LmZpeGVkIC5jb2xsYXBzaWJsZS1oZWFkZXI6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA1KTtcXG59XFxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLWhlYWRlciBpLFxcbi5zaWRlbmF2LmZpeGVkIC5jb2xsYXBzaWJsZS1oZWFkZXIgaSB7XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG59XFxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLWJvZHksXFxuLnNpZGVuYXYuZml4ZWQgLmNvbGxhcHNpYmxlLWJvZHkge1xcbiAgYm9yZGVyOiAwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG59XFxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLWJvZHkgbGkgYSxcXG4uc2lkZW5hdi5maXhlZCAuY29sbGFwc2libGUtYm9keSBsaSBhIHtcXG4gIHBhZGRpbmc6IDAgMjIuNXB4IDAgMzBweDtcXG59XFxuXFxuLmNvbGxhcHNpYmxlLnBvcG91dCB7XFxuICBib3JkZXI6IG5vbmU7XFxuICBib3gtc2hhZG93OiBub25lO1xcbn1cXG4uY29sbGFwc2libGUucG9wb3V0ID4gbGkge1xcbiAgYm94LXNoYWRvdzogMCAycHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE2KSwgMCAycHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XFxuICBtYXJnaW46IDAgMjRweDtcXG4gIHRyYW5zaXRpb246IG1hcmdpbiAwLjM1cyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XFxufVxcbi5jb2xsYXBzaWJsZS5wb3BvdXQgPiBsaS5hY3RpdmUge1xcbiAgYm94LXNoYWRvdzogMCA1cHggMTFweCAwIHJnYmEoMCwgMCwgMCwgMC4xOCksIDAgNHB4IDE1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xcbiAgbWFyZ2luOiAxNnB4IDA7XFxufVxcblxcbi5jb2xsZWN0aW9uIHtcXG4gIG1hcmdpbjogMC4zMzMzMzMzMzMzcmVtIDAgMC42NjY2NjY2NjY3cmVtIDA7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZTBlMGUwO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcXG4gIHBhZGRpbmc6IDEwcHggMjBweDtcXG4gIG1hcmdpbjogMDtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTBlMGUwO1xcbn1cXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciB7XFxuICBtaW4taGVpZ2h0OiA4NHB4O1xcbiAgcGFkZGluZy1sZWZ0OiA3MnB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhcjpub3QoLmNpcmNsZS1jbGlwcGVyKSA+IC5jaXJjbGUsXFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgOm5vdCguY2lyY2xlLWNsaXBwZXIpID4gLmNpcmNsZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogNDJweDtcXG4gIGhlaWdodDogNDJweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBsZWZ0OiAxNXB4O1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG59XFxuLmNvbGxlY3Rpb24gLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIgaS5jaXJjbGUge1xcbiAgZm9udC1zaXplOiAxOHB4O1xcbiAgbGluZS1oZWlnaHQ6IDQycHg7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM5OTk7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIC50aXRsZSB7XFxuICBmb250LXNpemU6IDE2cHg7XFxufVxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIHAge1xcbiAgbWFyZ2luOiAwO1xcbn1cXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmF2YXRhciAuc2Vjb25kYXJ5LWNvbnRlbnQge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAxNnB4O1xcbiAgcmlnaHQ6IDE2cHg7XFxufVxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW06bGFzdC1jaGlsZCB7XFxuICBib3JkZXItYm90dG9tOiBub25lO1xcbn1cXG4uY29sbGVjdGlvbiAuY29sbGVjdGlvbi1pdGVtLmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xcbiAgY29sb3I6ICNlYWZhZjk7XFxufVxcbi5jb2xsZWN0aW9uIC5jb2xsZWN0aW9uLWl0ZW0uYWN0aXZlIC5zZWNvbmRhcnktY29udGVudCB7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuLmNvbGxlY3Rpb24gYS5jb2xsZWN0aW9uLWl0ZW0ge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB0cmFuc2l0aW9uOiAwLjI1cztcXG4gIGNvbG9yOiAjMjZhNjlhO1xcbn1cXG4uY29sbGVjdGlvbiBhLmNvbGxlY3Rpb24taXRlbTpub3QoLmFjdGl2ZSk6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDtcXG59XFxuLmNvbGxlY3Rpb24ud2l0aC1oZWFkZXIgLmNvbGxlY3Rpb24taGVhZGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDtcXG4gIHBhZGRpbmc6IDEwcHggMjBweDtcXG59XFxuLmNvbGxlY3Rpb24ud2l0aC1oZWFkZXIgLmNvbGxlY3Rpb24taXRlbSB7XFxuICBwYWRkaW5nLWxlZnQ6IDMwcHg7XFxufVxcbi5jb2xsZWN0aW9uLndpdGgtaGVhZGVyIC5jb2xsZWN0aW9uLWl0ZW0uYXZhdGFyIHtcXG4gIHBhZGRpbmctbGVmdDogNzJweDtcXG59XFxuLmNvbGxlY3Rpb24gLnNlY29uZGFyeS1jb250ZW50IHtcXG4gIGZsb2F0OiByaWdodDtcXG4gIGNvbG9yOiAjMjZhNjlhO1xcbn1cXG5cXG5zZWxlY3Q6Zm9jdXMge1xcbiAgb3V0bGluZTogMXB4IHNvbGlkICNjOWYzZWY7XFxufVxcblxcbmJ1dHRvbjpmb2N1cyB7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJhYjdhOTtcXG59XFxuXFxubGFiZWwge1xcbiAgZm9udC1zaXplOiAwLjhyZW07XFxuICBjb2xvcjogIzllOWU5ZTtcXG59XFxuXFxuLyogVGV4dCBJbnB1dHMgKyBUZXh0YXJlYVxcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXFxuLyogU3R5bGUgUGxhY2Vob2xkZXJzICovXFxuOjpwbGFjZWhvbGRlciB7XFxuICBjb2xvcjogI2QxZDFkMTtcXG59XFxuXFxuLyogVGV4dCBpbnB1dHMgKi9cXG5pbnB1dDpub3QoW3R5cGVdKSxcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcXG50ZXh0YXJlYS50ZXh0YXJlYSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjOWU5ZTllO1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIG91dGxpbmU6IG5vbmU7XFxuICBoZWlnaHQ6IDU2cHg7XFxuICB3aWR0aDogMTAwJTtcXG4gIGZvbnQtc2l6ZTogMTZweDtcXG4gIG1hcmdpbjogMCAwIDhweCAwO1xcbiAgcGFkZGluZzogMDtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4zcywgYm9yZGVyIDAuM3M7XFxufVxcbmlucHV0Om5vdChbdHlwZV0pOmRpc2FibGVkLCBpbnB1dDpub3QoW3R5cGVdKVtyZWFkb25seT1yZWFkb25seV0sXFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCxcXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCxcXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0sXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkLFxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6ZGlzYWJsZWQsXFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0sXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCxcXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSxcXG50ZXh0YXJlYS50ZXh0YXJlYTpkaXNhYmxlZCxcXG50ZXh0YXJlYS50ZXh0YXJlYVtyZWFkb25seT1yZWFkb25seV0ge1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XFxuICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkIHJnYmEoMCwgMCwgMCwgMC40Mik7XFxufVxcbmlucHV0Om5vdChbdHlwZV0pOmRpc2FibGVkICsgbGFiZWwsIGlucHV0Om5vdChbdHlwZV0pW3JlYWRvbmx5PXJlYWRvbmx5XSArIGxhYmVsLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkICsgbGFiZWwsXFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkICsgbGFiZWwsXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSArIGxhYmVsLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkICsgbGFiZWwsXFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSArIGxhYmVsLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkICsgbGFiZWwsXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdClbcmVhZG9ubHk9cmVhZG9ubHldICsgbGFiZWwsXFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkICsgbGFiZWwsXFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpW3JlYWRvbmx5PXJlYWRvbmx5XSArIGxhYmVsLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpkaXNhYmxlZCArIGxhYmVsLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkICsgbGFiZWwsXFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkICsgbGFiZWwsXFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpOmRpc2FibGVkICsgbGFiZWwsXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KVtyZWFkb25seT1yZWFkb25seV0gKyBsYWJlbCxcXG50ZXh0YXJlYS50ZXh0YXJlYTpkaXNhYmxlZCArIGxhYmVsLFxcbnRleHRhcmVhLnRleHRhcmVhW3JlYWRvbmx5PXJlYWRvbmx5XSArIGxhYmVsIHtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xcbn1cXG5pbnB1dDpub3QoW3R5cGVdKTpmb2N1czpub3QoW3JlYWRvbmx5XSksXFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSksXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcXG50ZXh0YXJlYS50ZXh0YXJlYTpmb2N1czpub3QoW3JlYWRvbmx5XSkge1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMyNmE2OWE7XFxuICBib3gtc2hhZG93OiAwIDFweCAwIDAgIzI2YTY5YTtcXG59XFxuaW5wdXQ6bm90KFt0eXBlXSk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSkgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzOm5vdChbcmVhZG9ubHldKSArIGxhYmVsLFxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwsXFxudGV4dGFyZWEudGV4dGFyZWE6Zm9jdXM6bm90KFtyZWFkb25seV0pICsgbGFiZWwge1xcbiAgY29sb3I6ICMyNmE2OWE7XFxufVxcbmlucHV0Om5vdChbdHlwZV0pOmZvY3VzLnZhbGlkIH4gbGFiZWwsXFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gbGFiZWwsXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IGxhYmVsLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IGxhYmVsLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IGxhYmVsLFxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gbGFiZWwsXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IGxhYmVsLFxcbnRleHRhcmVhLnRleHRhcmVhOmZvY3VzLnZhbGlkIH4gbGFiZWwge1xcbiAgY29sb3I6ICM0Y2FmNTA7XFxufVxcbmlucHV0Om5vdChbdHlwZV0pOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gbGFiZWwsXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gbGFiZWwsXFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiBsYWJlbCxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IGxhYmVsLFxcbnRleHRhcmVhLnRleHRhcmVhOmZvY3VzLmludmFsaWQgfiBsYWJlbCB7XFxuICBjb2xvcjogI2Y0NDMzNjtcXG59XFxuaW5wdXQ6bm90KFt0eXBlXSkudmFsaWRhdGUgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZGF0ZSArIGxhYmVsLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZGF0ZSArIGxhYmVsLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZGF0ZSArIGxhYmVsLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWRhdGUgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZGF0ZSArIGxhYmVsLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkYXRlICsgbGFiZWwsXFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkYXRlICsgbGFiZWwsXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkYXRlICsgbGFiZWwsXFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZGF0ZSArIGxhYmVsLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWRhdGUgKyBsYWJlbCxcXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkYXRlICsgbGFiZWwsXFxudGV4dGFyZWEudGV4dGFyZWEudmFsaWRhdGUgKyBsYWJlbCB7XFxuICB3aWR0aDogMTAwJTtcXG59XFxuLyogVmFsaWRhdGlvbiBTYXNzIFBsYWNlaG9sZGVycyAqL1xcbi5zZWxlY3Qtd3JhcHBlci52YWxpZCA+IGlucHV0LnNlbGVjdC1kcm9wZG93biwgaW5wdXQ6bm90KFt0eXBlXSkudmFsaWQsIGlucHV0Om5vdChbdHlwZV0pOmZvY3VzLnZhbGlkLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCxcXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCxcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQsXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQsXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQsXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkLFxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQsXFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCxcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQsXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCxcXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkLFxcbnRleHRhcmVhLnRleHRhcmVhLnZhbGlkLFxcbnRleHRhcmVhLnRleHRhcmVhOmZvY3VzLnZhbGlkIHtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNGNhZjUwO1xcbiAgYm94LXNoYWRvdzogMCAxcHggMCAwICM0Y2FmNTA7XFxufVxcblxcbi5zZWxlY3Qtd3JhcHBlci5pbnZhbGlkID4gaW5wdXQuc2VsZWN0LWRyb3Bkb3duLCAuc2VsZWN0LXdyYXBwZXIuaW52YWxpZCA+IGlucHV0LnNlbGVjdC1kcm9wZG93bjpmb2N1cywgaW5wdXQ6bm90KFt0eXBlXSkuaW52YWxpZCwgaW5wdXQ6bm90KFt0eXBlXSk6Zm9jdXMuaW52YWxpZCxcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQsXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQsXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQsXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQsXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQsXFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCxcXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQsXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCxcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQsXFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCxcXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQsXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkLFxcbnRleHRhcmVhLnRleHRhcmVhLmludmFsaWQsXFxudGV4dGFyZWEudGV4dGFyZWE6Zm9jdXMuaW52YWxpZCB7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Y0NDMzNjtcXG4gIGJveC1zaGFkb3c6IDAgMXB4IDAgMCAjZjQ0MzM2O1xcbn1cXG5cXG4uc2VsZWN0LXdyYXBwZXIudmFsaWQgLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sIC5zZWxlY3Qtd3JhcHBlci5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLCBpbnB1dDpub3QoW3R5cGVdKS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLCBpbnB1dDpub3QoW3R5cGVdKTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLCBpbnB1dDpub3QoW3R5cGVdKS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLCBpbnB1dDpub3QoW3R5cGVdKTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT10ZXh0XTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxcbmlucHV0W3R5cGU9ZGF0ZV06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1lcnJvcl0sXFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdLFxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcXG50ZXh0YXJlYS50ZXh0YXJlYS52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxcbnRleHRhcmVhLnRleHRhcmVhOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtc3VjY2Vzc10sXFxudGV4dGFyZWEudGV4dGFyZWEuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcXG50ZXh0YXJlYS50ZXh0YXJlYTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdIHtcXG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcblxcbi5zZWxlY3Qtd3JhcHBlci52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlciwgaW5wdXQ6bm90KFt0eXBlXSkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsIGlucHV0Om5vdChbdHlwZV0pOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXBhc3N3b3JkXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9ZW1haWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXVybF06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1kYXRldGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT10ZWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPW51bWJlcl06bm90KC5icm93c2VyLWRlZmF1bHQpLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbnRleHRhcmVhLnRleHRhcmVhLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbnRleHRhcmVhLnRleHRhcmVhOmZvY3VzLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1zdWNjZXNzKTtcXG4gIGNvbG9yOiAjNGNhZjUwO1xcbn1cXG5cXG4uc2VsZWN0LXdyYXBwZXIuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlciwgaW5wdXQ6bm90KFt0eXBlXSkuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlciwgaW5wdXQ6bm90KFt0eXBlXSk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9dXJsXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpOmZvY3VzLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KS5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbmlucHV0W3R5cGU9bnVtYmVyXTpub3QoLmJyb3dzZXItZGVmYXVsdCk6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1zZWFyY2hdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1cy5pbnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcbnRleHRhcmVhLnRleHRhcmVhLmludmFsaWQgfiAuaGVscGVyLXRleHQ6YWZ0ZXIsXFxudGV4dGFyZWEudGV4dGFyZWE6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlciB7XFxuICBjb250ZW50OiBhdHRyKGRhdGEtZXJyb3IpO1xcbiAgY29sb3I6ICNmNDQzMzY7XFxufVxcblxcbi5zZWxlY3Qtd3JhcHBlciArIGxhYmVsOmFmdGVyLCBpbnB1dDpub3QoW3R5cGVdKSArIGxhYmVsOmFmdGVyLFxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWw6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1wYXNzd29yZF06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWw6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1lbWFpbF06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWw6YWZ0ZXIsXFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsOmFmdGVyLFxcbmlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWw6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbDphZnRlcixcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbDphZnRlcixcXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbDphZnRlcixcXG5pbnB1dFt0eXBlPXRlbF06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWw6YWZ0ZXIsXFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsOmFmdGVyLFxcbmlucHV0W3R5cGU9c2VhcmNoXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbDphZnRlcixcXG50ZXh0YXJlYS50ZXh0YXJlYSArIGxhYmVsOmFmdGVyIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDEwMCU7XFxuICBsZWZ0OiAwO1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zaXRpb246IDAuMnMgb3BhY2l0eSBlYXNlLW91dCwgMC4ycyBjb2xvciBlYXNlLW91dDtcXG59XFxuXFxuLmlucHV0LWZpZWxkIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG1hcmdpbi10b3A6IDFyZW07XFxuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xcbn1cXG4uaW5wdXQtZmllbGQuaW5saW5lIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxuICBtYXJnaW4tbGVmdDogNXB4O1xcbn1cXG4uaW5wdXQtZmllbGQuaW5saW5lIGlucHV0LFxcbi5pbnB1dC1maWVsZC5pbmxpbmUgLnNlbGVjdC1kcm9wZG93biB7XFxuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xcbn1cXG4uaW5wdXQtZmllbGQuY29sIGxhYmVsIHtcXG4gIGxlZnQ6IDAuNXJlbTtcXG59XFxuLmlucHV0LWZpZWxkLmNvbCAucHJlZml4IH4gbGFiZWwsXFxuLmlucHV0LWZpZWxkLmNvbCAucHJlZml4IH4gLnZhbGlkYXRlIH4gbGFiZWwge1xcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDNyZW0gLSAxcmVtKTtcXG59XFxuLmlucHV0LWZpZWxkID4gbGFiZWwge1xcbiAgY29sb3I6ICM5ZTllOWU7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgZm9udC1zaXplOiAxcmVtO1xcbiAgY3Vyc29yOiB0ZXh0O1xcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZS1vdXQsIGNvbG9yIDAuMnMgZWFzZS1vdXQ7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiAwJSAxMDAlO1xcbiAgdGV4dC1hbGlnbjogaW5pdGlhbDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMnB4KTtcXG59XFxuLmlucHV0LWZpZWxkID4gbGFiZWw6bm90KC5sYWJlbC1pY29uKS5hY3RpdmUge1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNHB4KSBzY2FsZSgwLjgpO1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xcbn1cXG4uaW5wdXQtZmllbGQgPiBpbnB1dFt0eXBlXTotd2Via2l0LWF1dG9maWxsOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpub3QoW3R5cGU9c2VhcmNoXSkgKyBsYWJlbCwgLmlucHV0LWZpZWxkID4gaW5wdXRbdHlwZT1kYXRlXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbCwgLmlucHV0LWZpZWxkID4gaW5wdXRbdHlwZT10aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCkgKyBsYWJlbCB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0cHgpIHNjYWxlKDAuOCk7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XFxufVxcbi5pbnB1dC1maWVsZCAuaGVscGVyLXRleHQge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgbWluLWhlaWdodDogMThweDtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgZm9udC1zaXplOiAxMnB4O1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XFxufVxcbi5pbnB1dC1maWVsZCAuaGVscGVyLXRleHQ6OmFmdGVyIHtcXG4gIG9wYWNpdHk6IDE7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbn1cXG4uaW5wdXQtZmllbGQgLnByZWZpeCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogNTZweDtcXG4gIGZvbnQtc2l6ZTogMnJlbTtcXG4gIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XFxufVxcbi5pbnB1dC1maWVsZCAucHJlZml4LmFjdGl2ZSB7XFxuICBjb2xvcjogIzI2YTY5YTtcXG59XFxuLmlucHV0LWZpZWxkIC5wcmVmaXggfiBpbnB1dCxcXG4uaW5wdXQtZmllbGQgLnByZWZpeCB+IHRleHRhcmVhLFxcbi5pbnB1dC1maWVsZCAucHJlZml4IH4gbGFiZWwsXFxuLmlucHV0LWZpZWxkIC5wcmVmaXggfiAudmFsaWRhdGUgfiBsYWJlbCxcXG4uaW5wdXQtZmllbGQgLnByZWZpeCB+IC5oZWxwZXItdGV4dCxcXG4uaW5wdXQtZmllbGQgLnByZWZpeCB+IC5hdXRvY29tcGxldGUtY29udGVudCB7XFxuICBtYXJnaW4tbGVmdDogM3JlbTtcXG4gIHdpZHRoOiA5MiU7XFxuICB3aWR0aDogY2FsYygxMDAlIC0gM3JlbSk7XFxufVxcbi5pbnB1dC1maWVsZCAucHJlZml4IH4gbGFiZWwge1xcbiAgbWFyZ2luLWxlZnQ6IDNyZW07XFxufVxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6IDk5MnB4KSB7XFxuICAuaW5wdXQtZmllbGQgLnByZWZpeCB+IGlucHV0IHtcXG4gICAgd2lkdGg6IDg2JTtcXG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDNyZW0pO1xcbiAgfVxcbn1cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA2MDBweCkge1xcbiAgLmlucHV0LWZpZWxkIC5wcmVmaXggfiBpbnB1dCB7XFxuICAgIHdpZHRoOiA4MCU7XFxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAzcmVtKTtcXG4gIH1cXG59XFxuXFxuLyogU2VhcmNoIEZpZWxkICovXFxuLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9c2VhcmNoXSB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbiAgdHJhbnNpdGlvbjogMC4zcyBiYWNrZ3JvdW5kLWNvbG9yO1xcbn1cXG4ubmF2LXdyYXBwZXIgLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9c2VhcmNoXSB7XFxuICBoZWlnaHQ6IGluaGVyaXQ7XFxuICBwYWRkaW5nLWxlZnQ6IDRyZW07XFxuICB3aWR0aDogY2FsYygxMDAlIC0gNHJlbSk7XFxuICBib3JkZXI6IDA7XFxuICBib3gtc2hhZG93OiBub25lO1xcbn1cXG4uaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1zZWFyY2hdOmZvY3VzOm5vdCguYnJvd3Nlci1kZWZhdWx0KSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgYm9yZGVyOiAwO1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG4gIGNvbG9yOiAjNDQ0O1xcbn1cXG4uaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1zZWFyY2hdOmZvY3VzOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsIGksIC5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXNlYXJjaF06Zm9jdXM6bm90KC5icm93c2VyLWRlZmF1bHQpIH4gLm1kaS1uYXZpZ2F0aW9uLWNsb3NlLCAuaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1zZWFyY2hdOmZvY3VzOm5vdCguYnJvd3Nlci1kZWZhdWx0KSB+IC5tYXRlcmlhbC1pY29ucyB7XFxuICBjb2xvcjogIzQ0NDtcXG59XFxuLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9c2VhcmNoXSArIC5sYWJlbC1pY29uIHtcXG4gIHRyYW5zZm9ybTogbm9uZTtcXG4gIGxlZnQ6IDFyZW07XFxufVxcbi5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXNlYXJjaF0gfiAubWRpLW5hdmlnYXRpb24tY2xvc2UsIC5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXNlYXJjaF0gfiAubWF0ZXJpYWwtaWNvbnMge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgcmlnaHQ6IDFyZW07XFxuICBjb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBmb250LXNpemU6IDJyZW07XFxuICB0cmFuc2l0aW9uOiAwLjNzIGNvbG9yO1xcbn1cXG5cXG4vKiBUZXh0YXJlYSAqL1xcbnRleHRhcmVhIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiA1NnB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcbnRleHRhcmVhLnRleHRhcmVhIHtcXG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XFxuICBvdmVyZmxvdy15OiBoaWRkZW47IC8qIHByZXZlbnRzIHNjcm9sbCBiYXIgZmxhc2ggKi9cXG4gIHBhZGRpbmc6IDAuOHJlbSAwIDAuOHJlbSAwOyAvKiBwcmV2ZW50cyB0ZXh0IGp1bXAgb24gRW50ZXIga2V5cHJlc3MgKi9cXG4gIHJlc2l6ZTogbm9uZTtcXG4gIG1pbi1oZWlnaHQ6IDU2cHg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG5cXG4uaGlkZGVuZGl2IHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcXG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7IC8qIGZ1dHVyZSB2ZXJzaW9uIG9mIGRlcHJlY2F0ZWQgJ3dvcmQtd3JhcCcgKi9cXG4gIHBhZGRpbmctdG9wOiAxLjJyZW07IC8qIHByZXZlbnRzIHRleHQganVtcCBvbiBFbnRlciBrZXlwcmVzcyAqL1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgei1pbmRleDogLTE7XFxufVxcblxcbi8qIEF1dG9jb21wbGV0ZSAqL1xcbi5hdXRvY29tcGxldGUtY29udGVudCBsaSAuaGlnaGxpZ2h0IHtcXG4gIGNvbG9yOiAjNDQ0O1xcbn1cXG4uYXV0b2NvbXBsZXRlLWNvbnRlbnQgbGkgaW1nIHtcXG4gIG1hcmdpbjogNXB4IDE1cHg7XFxufVxcblxcbi8qIENoYXJhY3RlciBDb3VudGVyICovXFxuLmNoYXJhY3Rlci1jb3VudGVyIHtcXG4gIG1pbi1oZWlnaHQ6IDE4cHg7XFxufVxcblxcbi8qIFJhZGlvIEJ1dHRvbnNcXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xcblt0eXBlPXJhZGlvXTpub3QoOmNoZWNrZWQpLFxcblt0eXBlPXJhZGlvXTpjaGVja2VkIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuXFxuW3R5cGU9cmFkaW9dOm5vdCg6Y2hlY2tlZCkgKyBzcGFuLFxcblt0eXBlPXJhZGlvXTpjaGVja2VkICsgc3BhbiB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBwYWRkaW5nLWxlZnQ6IDM1cHg7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBoZWlnaHQ6IDI1cHg7XFxuICBsaW5lLWhlaWdodDogMjVweDtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG4gIHRyYW5zaXRpb246IDAuMjhzIGVhc2U7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG59XFxuXFxuW3R5cGU9cmFkaW9dICsgc3BhbjpiZWZvcmUsXFxuW3R5cGU9cmFkaW9dICsgc3BhbjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxuICBtYXJnaW46IDRweDtcXG4gIHdpZHRoOiAxNnB4O1xcbiAgaGVpZ2h0OiAxNnB4O1xcbiAgei1pbmRleDogMDtcXG4gIHRyYW5zaXRpb246IDAuMjhzIGVhc2U7XFxufVxcblxcbi8qIFVuY2hlY2tlZCBzdHlsZXMgKi9cXG5bdHlwZT1yYWRpb106bm90KDpjaGVja2VkKSArIHNwYW46YmVmb3JlLFxcblt0eXBlPXJhZGlvXTpub3QoOmNoZWNrZWQpICsgc3BhbjphZnRlcixcXG5bdHlwZT1yYWRpb106Y2hlY2tlZCArIHNwYW46YmVmb3JlLFxcblt0eXBlPXJhZGlvXTpjaGVja2VkICsgc3BhbjphZnRlcixcXG5bdHlwZT1yYWRpb10ud2l0aC1nYXA6Y2hlY2tlZCArIHNwYW46YmVmb3JlLFxcblt0eXBlPXJhZGlvXS53aXRoLWdhcDpjaGVja2VkICsgc3BhbjphZnRlciB7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxufVxcblxcblt0eXBlPXJhZGlvXTpub3QoOmNoZWNrZWQpICsgc3BhbjpiZWZvcmUsXFxuW3R5cGU9cmFkaW9dOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOmFmdGVyIHtcXG4gIGJvcmRlcjogMnB4IHNvbGlkICM1YTVhNWE7XFxufVxcblxcblt0eXBlPXJhZGlvXTpub3QoOmNoZWNrZWQpICsgc3BhbjphZnRlciB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDApO1xcbn1cXG5cXG4vKiBDaGVja2VkIHN0eWxlcyAqL1xcblt0eXBlPXJhZGlvXTpjaGVja2VkICsgc3BhbjpiZWZvcmUge1xcbiAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxufVxcblxcblt0eXBlPXJhZGlvXTpjaGVja2VkICsgc3BhbjphZnRlcixcXG5bdHlwZT1yYWRpb10ud2l0aC1nYXA6Y2hlY2tlZCArIHNwYW46YmVmb3JlLFxcblt0eXBlPXJhZGlvXS53aXRoLWdhcDpjaGVja2VkICsgc3BhbjphZnRlciB7XFxuICBib3JkZXI6IDJweCBzb2xpZCAjMjZhNjlhO1xcbn1cXG5cXG5bdHlwZT1yYWRpb106Y2hlY2tlZCArIHNwYW46YWZ0ZXIsXFxuW3R5cGU9cmFkaW9dLndpdGgtZ2FwOmNoZWNrZWQgKyBzcGFuOmFmdGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XFxufVxcblxcblt0eXBlPXJhZGlvXTpjaGVja2VkICsgc3BhbjphZnRlciB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDEuMDIpO1xcbn1cXG5cXG4vKiBSYWRpbyBXaXRoIGdhcCAqL1xcblt0eXBlPXJhZGlvXS53aXRoLWdhcDpjaGVja2VkICsgc3BhbjphZnRlciB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7XFxufVxcblxcbi8qIEZvY3VzZWQgc3R5bGVzICovXFxuW3R5cGU9cmFkaW9dLnRhYmJlZDpmb2N1cyArIHNwYW46YmVmb3JlIHtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbn1cXG5cXG4vKiBEaXNhYmxlZCBSYWRpbyBXaXRoIGdhcCAqL1xcblt0eXBlPXJhZGlvXS53aXRoLWdhcDpkaXNhYmxlZDpjaGVja2VkICsgc3BhbjpiZWZvcmUge1xcbiAgYm9yZGVyOiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKTtcXG59XFxuXFxuW3R5cGU9cmFkaW9dLndpdGgtZ2FwOmRpc2FibGVkOmNoZWNrZWQgKyBzcGFuOmFmdGVyIHtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XFxufVxcblxcbi8qIERpc2FibGVkIHN0eWxlICovXFxuW3R5cGU9cmFkaW9dOmRpc2FibGVkOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOmJlZm9yZSxcXG5bdHlwZT1yYWRpb106ZGlzYWJsZWQ6Y2hlY2tlZCArIHNwYW46YmVmb3JlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xcbn1cXG5cXG5bdHlwZT1yYWRpb106ZGlzYWJsZWQgKyBzcGFuIHtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xcbn1cXG5cXG5bdHlwZT1yYWRpb106ZGlzYWJsZWQ6bm90KDpjaGVja2VkKSArIHNwYW46YmVmb3JlIHtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQyKTtcXG59XFxuXFxuW3R5cGU9cmFkaW9dOmRpc2FibGVkOmNoZWNrZWQgKyBzcGFuOmFmdGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XFxuICBib3JkZXItY29sb3I6ICM5NDk0OTQ7XFxufVxcblxcbi8qIENoZWNrYm94ZXNcXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xcbi8qIFJlbW92ZSBkZWZhdWx0IGNoZWNrYm94ICovXFxuW3R5cGU9Y2hlY2tib3hdOm5vdCg6Y2hlY2tlZCksXFxuW3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgb3BhY2l0eTogMDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG5cXG5bdHlwZT1jaGVja2JveF0ge1xcbiAgLyogY2hlY2tib3ggYXNwZWN0ICovXFxufVxcblt0eXBlPWNoZWNrYm94XSArIHNwYW46bm90KC5sZXZlcikge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgcGFkZGluZy1sZWZ0OiAzNXB4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgaGVpZ2h0OiAyNXB4O1xcbiAgbGluZS1oZWlnaHQ6IDI1cHg7XFxuICBmb250LXNpemU6IDFyZW07XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG59XFxuW3R5cGU9Y2hlY2tib3hdICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUsIFt0eXBlPWNoZWNrYm94XTpub3QoLmZpbGxlZC1pbikgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIHdpZHRoOiAxOHB4O1xcbiAgaGVpZ2h0OiAxOHB4O1xcbiAgei1pbmRleDogMDtcXG4gIGJvcmRlcjogMnB4IHNvbGlkICM1YTVhNWE7XFxuICBib3JkZXItcmFkaXVzOiAxcHg7XFxuICBtYXJnaW4tdG9wOiAzcHg7XFxuICB0cmFuc2l0aW9uOiAwLjJzO1xcbn1cXG5bdHlwZT1jaGVja2JveF06bm90KC5maWxsZWQtaW4pICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxuICBib3JkZXI6IDA7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDApO1xcbn1cXG5bdHlwZT1jaGVja2JveF06bm90KDpjaGVja2VkKTpkaXNhYmxlZCArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlIHtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XFxufVxcblt0eXBlPWNoZWNrYm94XS50YWJiZWQ6Zm9jdXMgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMSk7XFxuICBib3JkZXI6IDA7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBib3gtc2hhZG93OiAwIDAgMCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG59XFxuXFxuW3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XFxuICB0b3A6IC00cHg7XFxuICBsZWZ0OiAtNXB4O1xcbiAgd2lkdGg6IDEycHg7XFxuICBoZWlnaHQ6IDIycHg7XFxuICBib3JkZXItdG9wOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItbGVmdDogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgIzI2YTY5YTtcXG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjMjZhNjlhO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoNDBkZWcpO1xcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAxMDAlO1xcbn1cXG5bdHlwZT1jaGVja2JveF06Y2hlY2tlZDpkaXNhYmxlZCArIHNwYW46YmVmb3JlIHtcXG4gIGJvcmRlci1yaWdodDogMnB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40Mik7XFxuICBib3JkZXItYm90dG9tOiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKTtcXG59XFxuXFxuLyogSW5kZXRlcm1pbmF0ZSBjaGVja2JveCAqL1xcblt0eXBlPWNoZWNrYm94XTppbmRldGVybWluYXRlICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xcbiAgdG9wOiAtMTFweDtcXG4gIGxlZnQ6IC0xMnB4O1xcbiAgd2lkdGg6IDEwcHg7XFxuICBoZWlnaHQ6IDIycHg7XFxuICBib3JkZXItdG9wOiBub25lO1xcbiAgYm9yZGVyLWxlZnQ6IG5vbmU7XFxuICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjMjZhNjlhO1xcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTtcXG59XFxuW3R5cGU9Y2hlY2tib3hdOmluZGV0ZXJtaW5hdGU6ZGlzYWJsZWQgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XFxuICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNDIpO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcblxcblt0eXBlPWNoZWNrYm94XS5maWxsZWQtaW4gKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG59XFxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbiArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlLFxcblt0eXBlPWNoZWNrYm94XS5maWxsZWQtaW4gKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgbGVmdDogMDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIC8qIC4xcyBkZWxheSBpcyBmb3IgY2hlY2sgYW5pbWF0aW9uICovXFxuICB0cmFuc2l0aW9uOiBib3JkZXIgMC4yNXMsIGJhY2tncm91bmQtY29sb3IgMC4yNXMsIHdpZHRoIDAuMnMgMC4xcywgaGVpZ2h0IDAuMnMgMC4xcywgdG9wIDAuMnMgMC4xcywgbGVmdCAwLjJzIDAuMXM7XFxuICB6LWluZGV4OiAxO1xcbn1cXG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XFxuICB3aWR0aDogMDtcXG4gIGhlaWdodDogMDtcXG4gIGJvcmRlcjogM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgbGVmdDogNnB4O1xcbiAgdG9wOiAxMHB4O1xcbiAgdHJhbnNmb3JtOiByb3RhdGVaKDM3ZGVnKTtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTtcXG59XFxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbjpub3QoOmNoZWNrZWQpICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICB3aWR0aDogMjBweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyOiAycHggc29saWQgIzVhNWE1YTtcXG4gIHRvcDogMHB4O1xcbiAgei1pbmRleDogMDtcXG59XFxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbjpjaGVja2VkICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMXB4O1xcbiAgd2lkdGg6IDhweDtcXG4gIGhlaWdodDogMTNweDtcXG4gIGJvcmRlci10b3A6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1sZWZ0OiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjZmZmO1xcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNmZmY7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZVooMzdkZWcpO1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAxMDAlO1xcbn1cXG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluOmNoZWNrZWQgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcXG4gIHRvcDogMDtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgYm9yZGVyOiAycHggc29saWQgIzI2YTY5YTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyNmE2OWE7XFxuICB6LWluZGV4OiAwO1xcbn1cXG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluLnRhYmJlZDpmb2N1cyArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgYm9yZGVyLWNvbG9yOiAjNWE1YTVhO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xcbn1cXG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluLnRhYmJlZDpjaGVja2VkOmZvY3VzICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xcbiAgYm9yZGVyLWNvbG9yOiAjMjZhNjlhO1xcbn1cXG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluOmRpc2FibGVkOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbn1cXG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluOmRpc2FibGVkOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTQ5NDk0O1xcbn1cXG5bdHlwZT1jaGVja2JveF0uZmlsbGVkLWluOmRpc2FibGVkOmNoZWNrZWQgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuW3R5cGU9Y2hlY2tib3hdLmZpbGxlZC1pbjpkaXNhYmxlZDpjaGVja2VkICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTQ5NDk0O1xcbiAgYm9yZGVyLWNvbG9yOiAjOTQ5NDk0O1xcbn1cXG5cXG4vKiBTd2l0Y2hcXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xcbi5zd2l0Y2gsXFxuLnN3aXRjaCAqIHtcXG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG59XFxuXFxuLnN3aXRjaCBsYWJlbCB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5zd2l0Y2ggbGFiZWwgaW5wdXRbdHlwZT1jaGVja2JveF0ge1xcbiAgb3BhY2l0eTogMDtcXG4gIHdpZHRoOiAwO1xcbiAgaGVpZ2h0OiAwO1xcbn1cXG4uc3dpdGNoIGxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAubGV2ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg0YzdjMTtcXG59XFxuLnN3aXRjaCBsYWJlbCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgLmxldmVyOmJlZm9yZSwgLnN3aXRjaCBsYWJlbCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgLmxldmVyOmFmdGVyIHtcXG4gIGxlZnQ6IDE4cHg7XFxufVxcbi5zd2l0Y2ggbGFiZWwgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIC5sZXZlcjphZnRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xcbn1cXG5cXG4uc3dpdGNoIGxhYmVsIC5sZXZlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiAzNnB4O1xcbiAgaGVpZ2h0OiAxNHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTtcXG4gIGJvcmRlci1yYWRpdXM6IDE1cHg7XFxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuM3MgZWFzZTtcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxuICBtYXJnaW46IDAgMTZweDtcXG59XFxuLnN3aXRjaCBsYWJlbCAubGV2ZXI6YmVmb3JlLCAuc3dpdGNoIGxhYmVsIC5sZXZlcjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHdpZHRoOiAyMHB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgbGVmdDogMDtcXG4gIHRvcDogLTNweDtcXG4gIHRyYW5zaXRpb246IGxlZnQgMC4zcyBlYXNlLCBiYWNrZ3JvdW5kIDAuM3MgZWFzZSwgYm94LXNoYWRvdyAwLjFzIGVhc2UsIHRyYW5zZm9ybSAwLjFzIGVhc2U7XFxufVxcbi5zd2l0Y2ggbGFiZWwgLmxldmVyOmJlZm9yZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM4LCAxNjYsIDE1NCwgMC4xNSk7XFxufVxcbi5zd2l0Y2ggbGFiZWwgLmxldmVyOmFmdGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNGMUYxRjE7XFxuICBib3gtc2hhZG93OiAwcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG5cXG5pbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOm5vdCg6ZGlzYWJsZWQpIH4gLmxldmVyOmFjdGl2ZTo6YmVmb3JlLFxcbmlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6bm90KDpkaXNhYmxlZCkudGFiYmVkOmZvY3VzIH4gLmxldmVyOjpiZWZvcmUge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgyLjQpO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzOCwgMTY2LCAxNTQsIDAuMTUpO1xcbn1cXG5cXG5pbnB1dFt0eXBlPWNoZWNrYm94XTpub3QoOmRpc2FibGVkKSB+IC5sZXZlcjphY3RpdmU6YmVmb3JlLFxcbmlucHV0W3R5cGU9Y2hlY2tib3hdOm5vdCg6ZGlzYWJsZWQpLnRhYmJlZDpmb2N1cyB+IC5sZXZlcjo6YmVmb3JlIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMi40KTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wOCk7XFxufVxcblxcbi5zd2l0Y2ggaW5wdXRbdHlwZT1jaGVja2JveF1bZGlzYWJsZWRdICsgLmxldmVyIHtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcblxcbi5zd2l0Y2ggbGFiZWwgaW5wdXRbdHlwZT1jaGVja2JveF1bZGlzYWJsZWRdICsgLmxldmVyOmFmdGVyLFxcbi5zd2l0Y2ggbGFiZWwgaW5wdXRbdHlwZT1jaGVja2JveF1bZGlzYWJsZWRdOmNoZWNrZWQgKyAubGV2ZXI6YWZ0ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk0OTQ5NDtcXG59XFxuXFxuLyogU2VsZWN0IEZpZWxkXFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cXG5zZWxlY3Qge1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuc2VsZWN0LmJyb3dzZXItZGVmYXVsdCB7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuXFxuc2VsZWN0IHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgcGFkZGluZzogNXB4O1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2YyZjJmMjtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIGhlaWdodDogNTZweDtcXG59XFxuXFxuLnNlbGVjdC1sYWJlbCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxufVxcblxcbi5zZWxlY3Qtd3JhcHBlciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5zZWxlY3Qtd3JhcHBlci52YWxpZCArIGxhYmVsLCAuc2VsZWN0LXdyYXBwZXIuaW52YWxpZCArIGxhYmVsIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcbi5zZWxlY3Qtd3JhcHBlciBpbnB1dC5zZWxlY3QtZHJvcGRvd24ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXI6IG5vbmU7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzllOWU5ZTtcXG4gIG91dGxpbmU6IG5vbmU7XFxuICBoZWlnaHQ6IDU2cHg7XFxuICBsaW5lLWhlaWdodDogNTZweDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZm9udC1zaXplOiAxNnB4O1xcbiAgbWFyZ2luOiAwIDAgOHB4IDA7XFxuICBwYWRkaW5nOiAwO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi5zZWxlY3Qtd3JhcHBlciBpbnB1dC5zZWxlY3QtZHJvcGRvd246Zm9jdXMge1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMyNmE2OWE7XFxufVxcbi5zZWxlY3Qtd3JhcHBlciAuY2FyZXQge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDA7XFxuICB0b3A6IDA7XFxuICBib3R0b206IDA7XFxuICBtYXJnaW46IGF1dG8gMDtcXG4gIHotaW5kZXg6IDA7XFxuICBmaWxsOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xcbn1cXG4uc2VsZWN0LXdyYXBwZXIgKyBsYWJlbCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IC0yNnB4O1xcbiAgZm9udC1zaXplOiAwLjhyZW07XFxufVxcblxcbnNlbGVjdDpkaXNhYmxlZCB7XFxuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQyKTtcXG59XFxuXFxuLnNlbGVjdC13cmFwcGVyLmRpc2FibGVkICsgbGFiZWwge1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XFxufVxcbi5zZWxlY3Qtd3JhcHBlci5kaXNhYmxlZCAuY2FyZXQge1xcbiAgZmlsbDogcmdiYSgwLCAwLCAwLCAwLjQyKTtcXG59XFxuXFxuLnNlbGVjdC13cmFwcGVyIGlucHV0LnNlbGVjdC1kcm9wZG93bjpkaXNhYmxlZCB7XFxuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQyKTtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbn1cXG5cXG4uc2VsZWN0LXdyYXBwZXIgaSB7XFxuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjMpO1xcbn1cXG5cXG4uc2VsZWN0LWRyb3Bkb3duIGxpLmRpc2FibGVkLFxcbi5zZWxlY3QtZHJvcGRvd24gbGkuZGlzYWJsZWQgPiBzcGFuLFxcbi5zZWxlY3QtZHJvcGRvd24gbGkub3B0Z3JvdXAge1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zKTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG5cXG5ib2R5LmtleWJvYXJkLWZvY3VzZWQgLnNlbGVjdC1kcm9wZG93bi5kcm9wZG93bi1jb250ZW50IGxpOmZvY3VzIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wOCk7XFxufVxcblxcbi5zZWxlY3QtZHJvcGRvd24uZHJvcGRvd24tY29udGVudCBsaTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDgpO1xcbn1cXG4uc2VsZWN0LWRyb3Bkb3duLmRyb3Bkb3duLWNvbnRlbnQgbGkuc2VsZWN0ZWQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzKTtcXG59XFxuXFxuLnByZWZpeCB+IC5zZWxlY3Qtd3JhcHBlciB7XFxuICBtYXJnaW4tbGVmdDogM3JlbTtcXG4gIHdpZHRoOiA5MiU7XFxuICB3aWR0aDogY2FsYygxMDAlIC0gM3JlbSk7XFxufVxcblxcbi5wcmVmaXggfiBsYWJlbCB7XFxuICBtYXJnaW4tbGVmdDogM3JlbTtcXG59XFxuXFxuLnNlbGVjdC1kcm9wZG93biBsaSBpbWcge1xcbiAgbWFyZ2luOiA1cHggMTVweDtcXG4gIGZsb2F0OiByaWdodDtcXG59XFxuXFxuLnNlbGVjdC1kcm9wZG93biBsaS5vcHRncm91cC5zZWxlY3RlZCA+IHNwYW4ge1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC43KTtcXG59XFxuLnNlbGVjdC1kcm9wZG93biBsaS5vcHRncm91cCA+IHNwYW4ge1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40KTtcXG59XFxuLnNlbGVjdC1kcm9wZG93biBsaS5vcHRncm91cCB+IGxpLm9wdGdyb3VwLW9wdGlvbiB7XFxuICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxufVxcblxcbi8qIEZpbGUgSW5wdXRcXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xcbi5maWxlLWZpZWxkIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLmZpbGUtZmllbGQgLmZpbGUtcGF0aC13cmFwcGVyIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XFxufVxcbi5maWxlLWZpZWxkIGlucHV0LmZpbGUtcGF0aCB7XFxuICB3aWR0aDogMTAwJTtcXG59XFxuLmZpbGUtZmllbGQgLmJ0biwgLmZpbGUtZmllbGQgLmJ0bi1zbWFsbCwgLmZpbGUtZmllbGQgLmJ0bi1sYXJnZSB7XFxuICBmbG9hdDogbGVmdDtcXG4gIGhlaWdodDogNTZweDtcXG4gIGxpbmUtaGVpZ2h0OiA1NnB4O1xcbn1cXG4uZmlsZS1maWVsZCBzcGFuIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLmZpbGUtZmllbGQgaW5wdXRbdHlwZT1maWxlXSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICByaWdodDogMDtcXG4gIGxlZnQ6IDA7XFxuICBib3R0b206IDA7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDA7XFxuICBmb250LXNpemU6IDIwcHg7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBvcGFjaXR5OiAwO1xcbiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApO1xcbn1cXG4uZmlsZS1maWVsZCBpbnB1dFt0eXBlPWZpbGVdOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG5cXG4vKiBSYW5nZVxcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXFxuLnJhbmdlLWZpZWxkIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuXFxuaW5wdXRbdHlwZT1yYW5nZV0sXFxuaW5wdXRbdHlwZT1yYW5nZV0gKyAudGh1bWIge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG5pbnB1dFt0eXBlPXJhbmdlXSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIG91dGxpbmU6IG5vbmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogMTVweCAwO1xcbiAgcGFkZGluZzogMDtcXG59XFxuaW5wdXRbdHlwZT1yYW5nZV06Zm9jdXMge1xcbiAgb3V0bGluZTogbm9uZTtcXG59XFxuXFxuaW5wdXRbdHlwZT1yYW5nZV0gKyAudGh1bWIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAxMHB4O1xcbiAgbGVmdDogMDtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIGhlaWdodDogMDtcXG4gIHdpZHRoOiAwO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcXG4gIG1hcmdpbi1sZWZ0OiA3cHg7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcXG59XFxuaW5wdXRbdHlwZT1yYW5nZV0gKyAudGh1bWIgLnZhbHVlIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgd2lkdGg6IDMwcHg7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBjb2xvcjogIzI2YTY5YTtcXG4gIGZvbnQtc2l6ZTogMDtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcXG59XFxuaW5wdXRbdHlwZT1yYW5nZV0gKyAudGh1bWIuYWN0aXZlIHtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJSA1MCUgNTAlIDA7XFxufVxcbmlucHV0W3R5cGU9cmFuZ2VdICsgLnRodW1iLmFjdGl2ZSAudmFsdWUge1xcbiAgY29sb3I6ICNmZmY7XFxuICBtYXJnaW4tbGVmdDogLTFweDtcXG4gIG1hcmdpbi10b3A6IDhweDtcXG4gIGZvbnQtc2l6ZTogMTBweDtcXG59XFxuXFxuaW5wdXRbdHlwZT1yYW5nZV0ge1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbn1cXG5cXG5pbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xcbiAgaGVpZ2h0OiAzcHg7XFxuICBiYWNrZ3JvdW5kOiAjYzJjMGMyO1xcbiAgYm9yZGVyOiBub25lO1xcbn1cXG5cXG5pbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xcbiAgYm9yZGVyOiBub25lO1xcbiAgaGVpZ2h0OiAxNHB4O1xcbiAgd2lkdGg6IDE0cHg7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBiYWNrZ3JvdW5kOiAjMjZhNjlhO1xcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjNzO1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2YTY5YTtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7XFxuICBtYXJnaW46IC01cHggMCAwIDA7XFxufVxcblxcbi5rZXlib2FyZC1mb2N1c2VkIGlucHV0W3R5cGU9cmFuZ2VdOmZvY3VzOm5vdCguYWN0aXZlKTo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMTBweCByZ2JhKDM4LCAxNjYsIDE1NCwgMC4yNik7XFxufVxcblxcbmlucHV0W3R5cGU9cmFuZ2VdIHtcXG4gIC8qIGZpeCBmb3IgRkYgdW5hYmxlIHRvIGFwcGx5IGZvY3VzIHN0eWxlIGJ1ZyAgKi9cXG4gIGJvcmRlcjogMXB4IHNvbGlkIHdoaXRlO1xcbiAgLypyZXF1aXJlZCBmb3IgcHJvcGVyIHRyYWNrIHNpemluZyBpbiBGRiovXFxufVxcblxcbmlucHV0W3R5cGU9cmFuZ2VdOjotbW96LXJhbmdlLXRyYWNrIHtcXG4gIGhlaWdodDogM3B4O1xcbiAgYmFja2dyb3VuZDogI2MyYzBjMjtcXG4gIGJvcmRlcjogbm9uZTtcXG59XFxuXFxuaW5wdXRbdHlwZT1yYW5nZV06Oi1tb3otZm9jdXMtaW5uZXIge1xcbiAgYm9yZGVyOiAwO1xcbn1cXG5cXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1vei1yYW5nZS10aHVtYiB7XFxuICBib3JkZXI6IG5vbmU7XFxuICBoZWlnaHQ6IDE0cHg7XFxuICB3aWR0aDogMTRweDtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGJhY2tncm91bmQ6ICMyNmE2OWE7XFxuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuM3M7XFxuICBtYXJnaW4tdG9wOiAtNXB4O1xcbn1cXG5cXG5pbnB1dFt0eXBlPXJhbmdlXTotbW96LWZvY3VzcmluZyB7XFxuICBvdXRsaW5lOiAxcHggc29saWQgI2ZmZjtcXG4gIG91dGxpbmUtb2Zmc2V0OiAtMXB4O1xcbn1cXG5cXG4ua2V5Ym9hcmQtZm9jdXNlZCBpbnB1dFt0eXBlPXJhbmdlXTpmb2N1czpub3QoLmFjdGl2ZSk6Oi1tb3otcmFuZ2UtdGh1bWIge1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMTBweCByZ2JhKDM4LCAxNjYsIDE1NCwgMC4yNik7XFxufVxcblxcbmlucHV0W3R5cGU9cmFuZ2VdOjotbXMtdHJhY2sge1xcbiAgaGVpZ2h0OiAzcHg7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItd2lkdGg6IDZweCAwO1xcbiAgLypyZW1vdmUgZGVmYXVsdCB0aWNrIG1hcmtzKi9cXG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuXFxuaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy1maWxsLWxvd2VyIHtcXG4gIGJhY2tncm91bmQ6ICM3Nzc7XFxufVxcblxcbmlucHV0W3R5cGU9cmFuZ2VdOjotbXMtZmlsbC11cHBlciB7XFxuICBiYWNrZ3JvdW5kOiAjZGRkO1xcbn1cXG5cXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRodW1iIHtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIGhlaWdodDogMTRweDtcXG4gIHdpZHRoOiAxNHB4O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgYmFja2dyb3VuZDogIzI2YTY5YTtcXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4zcztcXG59XFxuXFxuLmtleWJvYXJkLWZvY3VzZWQgaW5wdXRbdHlwZT1yYW5nZV06Zm9jdXM6bm90KC5hY3RpdmUpOjotbXMtdGh1bWIge1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMTBweCByZ2JhKDM4LCAxNjYsIDE1NCwgMC4yNik7XFxufVxcblxcbi5wYXJhbGxheCB7XFxuICAvKiBTZXQgYSBzcGVjaWZpYyBoZWlnaHQgKi9cXG4gIG1pbi1oZWlnaHQ6IDUwMHB4O1xcbiAgLyogQ3JlYXRlIHRoZSBwYXJhbGxheCBzY3JvbGxpbmcgZWZmZWN0ICovXFxuICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkO1xcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XFxufVxcblxcbioge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuXFxuYm9keSB7XFxuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcXG59XFxuXFxuLnNjZW5lIHtcXG4gIHdpZHRoOiAyMDBweDtcXG4gIGhlaWdodDogMjAwcHg7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjQ0NDO1xcbiAgbWFyZ2luOiA4MHB4O1xcbiAgcGVyc3BlY3RpdmU6IDQwMHB4O1xcbn1cXG5cXG4uY3ViZSB7XFxuICB3aWR0aDogMjAwcHg7XFxuICBoZWlnaHQ6IDIwMHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtNDAwcHgpO1xcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDFzO1xcbn1cXG5cXG4uY3ViZS5zaG93LWZyb250IHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMTBweCkgcm90YXRlWSgwZGVnKTtcXG59XFxuXFxuLmN1YmUuc2hvdy1yaWdodCB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwcHgpIHJvdGF0ZVkoLTkwZGVnKTtcXG59XFxuXFxuLmN1YmUuc2hvdy1iYWNrIHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMTBweCkgcm90YXRlWSgtMTgwZGVnKTtcXG59XFxuXFxuLmN1YmUuc2hvdy1sZWZ0IHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMTBweCkgcm90YXRlWSg5MGRlZyk7XFxufVxcblxcbi5jdWJlLnNob3ctdG9wIHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMTBweCkgcm90YXRlWCgtOTBkZWcpO1xcbn1cXG5cXG4uY3ViZS5zaG93LWJvdHRvbSB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwcHgpIHJvdGF0ZVgoOTBkZWcpO1xcbn1cXG5cXG4uY3ViZV9fZmFjZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogMjAwcHg7XFxuICBoZWlnaHQ6IDIwMHB4O1xcbiAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7XFxuICBsaW5lLWhlaWdodDogMjAwcHg7XFxuICBmb250LXNpemU6IDQwcHg7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIGNvbG9yOiB3aGl0ZTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG59XFxuXFxuLmN1YmVfX2ZhY2UtLWZyb250IHtcXG4gIGJhY2tncm91bmQ6IGhzbGEoMCwgMTAwJSwgNTAlLCAwLjcpO1xcbn1cXG5cXG4uY3ViZV9fZmFjZS0tcmlnaHQge1xcbiAgYmFja2dyb3VuZDogaHNsYSg2MCwgMTAwJSwgNTAlLCAwLjcpO1xcbn1cXG5cXG4uY3ViZV9fZmFjZS0tYmFjayB7XFxuICBiYWNrZ3JvdW5kOiBoc2xhKDEyMCwgMTAwJSwgNTAlLCAwLjcpO1xcbn1cXG5cXG4uY3ViZV9fZmFjZS0tbGVmdCB7XFxuICBiYWNrZ3JvdW5kOiBoc2xhKDE4MCwgMTAwJSwgNTAlLCAwLjcpO1xcbn1cXG5cXG4uY3ViZV9fZmFjZS0tdG9wIHtcXG4gIGJhY2tncm91bmQ6IGhzbGEoMjQwLCAxMDAlLCA1MCUsIDAuNyk7XFxufVxcblxcbi5jdWJlX19mYWNlLS1ib3R0b20ge1xcbiAgYmFja2dyb3VuZDogaHNsYSgzMDAsIDEwMCUsIDUwJSwgMC43KTtcXG59XFxuXFxuLmN1YmVfX2ZhY2UtLWZyb250IHtcXG4gIHRyYW5zZm9ybTogcm90YXRlWSgwZGVnKSB0cmFuc2xhdGVaKDEwMHB4KTtcXG59XFxuXFxuLmN1YmVfX2ZhY2UtLXJpZ2h0IHtcXG4gIHRyYW5zZm9ybTogcm90YXRlWSg5MGRlZykgdHJhbnNsYXRlWigxMDBweCk7XFxufVxcblxcbi5jdWJlX19mYWNlLS1iYWNrIHtcXG4gIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpO1xcbn1cXG5cXG4uY3ViZV9fZmFjZS0tbGVmdCB7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZVkoLTkwZGVnKSB0cmFuc2xhdGVaKDEwMHB4KTtcXG59XFxuXFxuLmN1YmVfX2ZhY2UtLXRvcCB7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZVgoOTBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpO1xcbn1cXG5cXG4uY3ViZV9fZmFjZS0tYm90dG9tIHtcXG4gIHRyYW5zZm9ybTogcm90YXRlWCgtOTBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpO1xcbn1cXG5cXG5sYWJlbCB7XFxuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XFxufVxcblxcbi5jb250YWluZXIge1xcbiAgbWFyZ2luOiAwIGF1dG87XFxuICBtYXgtd2lkdGg6IDEyODBweDtcXG4gIHdpZHRoOiA5MCU7XFxufVxcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDYwMXB4KSB7XFxuICAuY29udGFpbmVyIHtcXG4gICAgd2lkdGg6IDg1JTtcXG4gIH1cXG59XFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogOTkzcHgpIHtcXG4gIC5jb250YWluZXIge1xcbiAgICB3aWR0aDogNzAlO1xcbiAgfVxcbn1cXG4uY29sIC5yb3cge1xcbiAgbWFyZ2luLWxlZnQ6IC0wLjVyZW07XFxuICBtYXJnaW4tcmlnaHQ6IC0wLjVyZW07XFxufVxcblxcbi5zZWN0aW9uIHtcXG4gIHBhZGRpbmctdG9wOiAxcmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDFyZW07XFxufVxcbi5zZWN0aW9uLm5vLXBhZCB7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG4uc2VjdGlvbi5uby1wYWQtYm90IHtcXG4gIHBhZGRpbmctYm90dG9tOiAwO1xcbn1cXG4uc2VjdGlvbi5uby1wYWQtdG9wIHtcXG4gIHBhZGRpbmctdG9wOiAwO1xcbn1cXG5cXG4ucm93IHtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcXG59XFxuLnJvdzphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGRpc3BsYXk6IHRhYmxlO1xcbiAgY2xlYXI6IGJvdGg7XFxufVxcbi5yb3cgLmNvbCB7XFxuICBmbG9hdDogbGVmdDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBwYWRkaW5nOiAwIDAuNXJlbTtcXG4gIG1pbi1oZWlnaHQ6IDFweDtcXG59XFxuLnJvdyAuY29sW2NsYXNzKj1wdXNoLV0sIC5yb3cgLmNvbFtjbGFzcyo9cHVsbC1dIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLnJvdyAuY29sLnMxIHtcXG4gIHdpZHRoOiA4LjMzMzMzMzMzMzMlO1xcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICBsZWZ0OiBhdXRvO1xcbiAgcmlnaHQ6IGF1dG87XFxufVxcbi5yb3cgLmNvbC5zMiB7XFxuICB3aWR0aDogMTYuNjY2NjY2NjY2NyU7XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG4gIGxlZnQ6IGF1dG87XFxuICByaWdodDogYXV0bztcXG59XFxuLnJvdyAuY29sLnMzIHtcXG4gIHdpZHRoOiAyNSU7XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG4gIGxlZnQ6IGF1dG87XFxuICByaWdodDogYXV0bztcXG59XFxuLnJvdyAuY29sLnM0IHtcXG4gIHdpZHRoOiAzMy4zMzMzMzMzMzMzJTtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgbGVmdDogYXV0bztcXG4gIHJpZ2h0OiBhdXRvO1xcbn1cXG4ucm93IC5jb2wuczUge1xcbiAgd2lkdGg6IDQxLjY2NjY2NjY2NjclO1xcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICBsZWZ0OiBhdXRvO1xcbiAgcmlnaHQ6IGF1dG87XFxufVxcbi5yb3cgLmNvbC5zNiB7XFxuICB3aWR0aDogNTAlO1xcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICBsZWZ0OiBhdXRvO1xcbiAgcmlnaHQ6IGF1dG87XFxufVxcbi5yb3cgLmNvbC5zNyB7XFxuICB3aWR0aDogNTguMzMzMzMzMzMzMyU7XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG4gIGxlZnQ6IGF1dG87XFxuICByaWdodDogYXV0bztcXG59XFxuLnJvdyAuY29sLnM4IHtcXG4gIHdpZHRoOiA2Ni42NjY2NjY2NjY3JTtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgbGVmdDogYXV0bztcXG4gIHJpZ2h0OiBhdXRvO1xcbn1cXG4ucm93IC5jb2wuczkge1xcbiAgd2lkdGg6IDc1JTtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgbGVmdDogYXV0bztcXG4gIHJpZ2h0OiBhdXRvO1xcbn1cXG4ucm93IC5jb2wuczEwIHtcXG4gIHdpZHRoOiA4My4zMzMzMzMzMzMzJTtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgbGVmdDogYXV0bztcXG4gIHJpZ2h0OiBhdXRvO1xcbn1cXG4ucm93IC5jb2wuczExIHtcXG4gIHdpZHRoOiA5MS42NjY2NjY2NjY3JTtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgbGVmdDogYXV0bztcXG4gIHJpZ2h0OiBhdXRvO1xcbn1cXG4ucm93IC5jb2wuczEyIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICBsZWZ0OiBhdXRvO1xcbiAgcmlnaHQ6IGF1dG87XFxufVxcbi5yb3cgLmNvbC5vZmZzZXQtczEge1xcbiAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7XFxufVxcbi5yb3cgLmNvbC5wdWxsLXMxIHtcXG4gIHJpZ2h0OiA4LjMzMzMzMzMzMzMlO1xcbn1cXG4ucm93IC5jb2wucHVzaC1zMSB7XFxuICBsZWZ0OiA4LjMzMzMzMzMzMzMlO1xcbn1cXG4ucm93IC5jb2wub2Zmc2V0LXMyIHtcXG4gIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NjY3JTtcXG59XFxuLnJvdyAuY29sLnB1bGwtczIge1xcbiAgcmlnaHQ6IDE2LjY2NjY2NjY2NjclO1xcbn1cXG4ucm93IC5jb2wucHVzaC1zMiB7XFxuICBsZWZ0OiAxNi42NjY2NjY2NjY3JTtcXG59XFxuLnJvdyAuY29sLm9mZnNldC1zMyB7XFxuICBtYXJnaW4tbGVmdDogMjUlO1xcbn1cXG4ucm93IC5jb2wucHVsbC1zMyB7XFxuICByaWdodDogMjUlO1xcbn1cXG4ucm93IC5jb2wucHVzaC1zMyB7XFxuICBsZWZ0OiAyNSU7XFxufVxcbi5yb3cgLmNvbC5vZmZzZXQtczQge1xcbiAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlO1xcbn1cXG4ucm93IC5jb2wucHVsbC1zNCB7XFxuICByaWdodDogMzMuMzMzMzMzMzMzMyU7XFxufVxcbi5yb3cgLmNvbC5wdXNoLXM0IHtcXG4gIGxlZnQ6IDMzLjMzMzMzMzMzMzMlO1xcbn1cXG4ucm93IC5jb2wub2Zmc2V0LXM1IHtcXG4gIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTtcXG59XFxuLnJvdyAuY29sLnB1bGwtczUge1xcbiAgcmlnaHQ6IDQxLjY2NjY2NjY2NjclO1xcbn1cXG4ucm93IC5jb2wucHVzaC1zNSB7XFxuICBsZWZ0OiA0MS42NjY2NjY2NjY3JTtcXG59XFxuLnJvdyAuY29sLm9mZnNldC1zNiB7XFxuICBtYXJnaW4tbGVmdDogNTAlO1xcbn1cXG4ucm93IC5jb2wucHVsbC1zNiB7XFxuICByaWdodDogNTAlO1xcbn1cXG4ucm93IC5jb2wucHVzaC1zNiB7XFxuICBsZWZ0OiA1MCU7XFxufVxcbi5yb3cgLmNvbC5vZmZzZXQtczcge1xcbiAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzMzMlO1xcbn1cXG4ucm93IC5jb2wucHVsbC1zNyB7XFxuICByaWdodDogNTguMzMzMzMzMzMzMyU7XFxufVxcbi5yb3cgLmNvbC5wdXNoLXM3IHtcXG4gIGxlZnQ6IDU4LjMzMzMzMzMzMzMlO1xcbn1cXG4ucm93IC5jb2wub2Zmc2V0LXM4IHtcXG4gIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NjY3JTtcXG59XFxuLnJvdyAuY29sLnB1bGwtczgge1xcbiAgcmlnaHQ6IDY2LjY2NjY2NjY2NjclO1xcbn1cXG4ucm93IC5jb2wucHVzaC1zOCB7XFxuICBsZWZ0OiA2Ni42NjY2NjY2NjY3JTtcXG59XFxuLnJvdyAuY29sLm9mZnNldC1zOSB7XFxuICBtYXJnaW4tbGVmdDogNzUlO1xcbn1cXG4ucm93IC5jb2wucHVsbC1zOSB7XFxuICByaWdodDogNzUlO1xcbn1cXG4ucm93IC5jb2wucHVzaC1zOSB7XFxuICBsZWZ0OiA3NSU7XFxufVxcbi5yb3cgLmNvbC5vZmZzZXQtczEwIHtcXG4gIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTtcXG59XFxuLnJvdyAuY29sLnB1bGwtczEwIHtcXG4gIHJpZ2h0OiA4My4zMzMzMzMzMzMzJTtcXG59XFxuLnJvdyAuY29sLnB1c2gtczEwIHtcXG4gIGxlZnQ6IDgzLjMzMzMzMzMzMzMlO1xcbn1cXG4ucm93IC5jb2wub2Zmc2V0LXMxMSB7XFxuICBtYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7XFxufVxcbi5yb3cgLmNvbC5wdWxsLXMxMSB7XFxuICByaWdodDogOTEuNjY2NjY2NjY2NyU7XFxufVxcbi5yb3cgLmNvbC5wdXNoLXMxMSB7XFxuICBsZWZ0OiA5MS42NjY2NjY2NjY3JTtcXG59XFxuLnJvdyAuY29sLm9mZnNldC1zMTIge1xcbiAgbWFyZ2luLWxlZnQ6IDEwMCU7XFxufVxcbi5yb3cgLmNvbC5wdWxsLXMxMiB7XFxuICByaWdodDogMTAwJTtcXG59XFxuLnJvdyAuY29sLnB1c2gtczEyIHtcXG4gIGxlZnQ6IDEwMCU7XFxufVxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6IDYwMXB4KSB7XFxuICAucm93IC5jb2wubTEge1xcbiAgICB3aWR0aDogOC4zMzMzMzMzMzMzJTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLm0yIHtcXG4gICAgd2lkdGg6IDE2LjY2NjY2NjY2NjclO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubTMge1xcbiAgICB3aWR0aDogMjUlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubTQge1xcbiAgICB3aWR0aDogMzMuMzMzMzMzMzMzMyU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5tNSB7XFxuICAgIHdpZHRoOiA0MS42NjY2NjY2NjY3JTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLm02IHtcXG4gICAgd2lkdGg6IDUwJTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLm03IHtcXG4gICAgd2lkdGg6IDU4LjMzMzMzMzMzMzMlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubTgge1xcbiAgICB3aWR0aDogNjYuNjY2NjY2NjY2NyU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5tOSB7XFxuICAgIHdpZHRoOiA3NSU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5tMTAge1xcbiAgICB3aWR0aDogODMuMzMzMzMzMzMzMyU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5tMTEge1xcbiAgICB3aWR0aDogOTEuNjY2NjY2NjY2NyU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5tMTIge1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1tMSB7XFxuICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbTEge1xcbiAgICByaWdodDogOC4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLW0xIHtcXG4gICAgbGVmdDogOC4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbTIge1xcbiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1tMiB7XFxuICAgIHJpZ2h0OiAxNi42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLW0yIHtcXG4gICAgbGVmdDogMTYuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LW0zIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDI1JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLW0zIHtcXG4gICAgcmlnaHQ6IDI1JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLW0zIHtcXG4gICAgbGVmdDogMjUlO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1tNCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLW00IHtcXG4gICAgcmlnaHQ6IDMzLjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gtbTQge1xcbiAgICBsZWZ0OiAzMy4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbTUge1xcbiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1tNSB7XFxuICAgIHJpZ2h0OiA0MS42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLW01IHtcXG4gICAgbGVmdDogNDEuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LW02IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDUwJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLW02IHtcXG4gICAgcmlnaHQ6IDUwJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLW02IHtcXG4gICAgbGVmdDogNTAlO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1tNyB7XFxuICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLW03IHtcXG4gICAgcmlnaHQ6IDU4LjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gtbTcge1xcbiAgICBsZWZ0OiA1OC4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbTgge1xcbiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1tOCB7XFxuICAgIHJpZ2h0OiA2Ni42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLW04IHtcXG4gICAgbGVmdDogNjYuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LW05IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDc1JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLW05IHtcXG4gICAgcmlnaHQ6IDc1JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLW05IHtcXG4gICAgbGVmdDogNzUlO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1tMTAge1xcbiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1tMTAge1xcbiAgICByaWdodDogODMuMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1tMTAge1xcbiAgICBsZWZ0OiA4My4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbTExIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbTExIHtcXG4gICAgcmlnaHQ6IDkxLjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gtbTExIHtcXG4gICAgbGVmdDogOTEuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LW0xMiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxMDAlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbTEyIHtcXG4gICAgcmlnaHQ6IDEwMCU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1tMTIge1xcbiAgICBsZWZ0OiAxMDAlO1xcbiAgfVxcbn1cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiA5OTNweCkge1xcbiAgLnJvdyAuY29sLmwxIHtcXG4gICAgd2lkdGg6IDguMzMzMzMzMzMzMyU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5sMiB7XFxuICAgIHdpZHRoOiAxNi42NjY2NjY2NjY3JTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLmwzIHtcXG4gICAgd2lkdGg6IDI1JTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLmw0IHtcXG4gICAgd2lkdGg6IDMzLjMzMzMzMzMzMzMlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubDUge1xcbiAgICB3aWR0aDogNDEuNjY2NjY2NjY2NyU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5sNiB7XFxuICAgIHdpZHRoOiA1MCU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5sNyB7XFxuICAgIHdpZHRoOiA1OC4zMzMzMzMzMzMzJTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLmw4IHtcXG4gICAgd2lkdGg6IDY2LjY2NjY2NjY2NjclO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubDkge1xcbiAgICB3aWR0aDogNzUlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubDEwIHtcXG4gICAgd2lkdGg6IDgzLjMzMzMzMzMzMzMlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubDExIHtcXG4gICAgd2lkdGg6IDkxLjY2NjY2NjY2NjclO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wubDEyIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbDEge1xcbiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLWwxIHtcXG4gICAgcmlnaHQ6IDguMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1sMSB7XFxuICAgIGxlZnQ6IDguMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LWwyIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbDIge1xcbiAgICByaWdodDogMTYuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1sMiB7XFxuICAgIGxlZnQ6IDE2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1sMyB7XFxuICAgIG1hcmdpbi1sZWZ0OiAyNSU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1sMyB7XFxuICAgIHJpZ2h0OiAyNSU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1sMyB7XFxuICAgIGxlZnQ6IDI1JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbDQge1xcbiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1sNCB7XFxuICAgIHJpZ2h0OiAzMy4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLWw0IHtcXG4gICAgbGVmdDogMzMuMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LWw1IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbDUge1xcbiAgICByaWdodDogNDEuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1sNSB7XFxuICAgIGxlZnQ6IDQxLjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1sNiB7XFxuICAgIG1hcmdpbi1sZWZ0OiA1MCU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1sNiB7XFxuICAgIHJpZ2h0OiA1MCU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1sNiB7XFxuICAgIGxlZnQ6IDUwJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbDcge1xcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1sNyB7XFxuICAgIHJpZ2h0OiA1OC4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLWw3IHtcXG4gICAgbGVmdDogNTguMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LWw4IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbDgge1xcbiAgICByaWdodDogNjYuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1sOCB7XFxuICAgIGxlZnQ6IDY2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1sOSB7XFxuICAgIG1hcmdpbi1sZWZ0OiA3NSU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC1sOSB7XFxuICAgIHJpZ2h0OiA3NSU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC1sOSB7XFxuICAgIGxlZnQ6IDc1JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQtbDEwIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwtbDEwIHtcXG4gICAgcmlnaHQ6IDgzLjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gtbDEwIHtcXG4gICAgbGVmdDogODMuMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LWwxMSB7XFxuICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLWwxMSB7XFxuICAgIHJpZ2h0OiA5MS42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLWwxMSB7XFxuICAgIGxlZnQ6IDkxLjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC1sMTIge1xcbiAgICBtYXJnaW4tbGVmdDogMTAwJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLWwxMiB7XFxuICAgIHJpZ2h0OiAxMDAlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gtbDEyIHtcXG4gICAgbGVmdDogMTAwJTtcXG4gIH1cXG59XFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogMTIwMXB4KSB7XFxuICAucm93IC5jb2wueGwxIHtcXG4gICAgd2lkdGg6IDguMzMzMzMzMzMzMyU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC54bDIge1xcbiAgICB3aWR0aDogMTYuNjY2NjY2NjY2NyU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC54bDMge1xcbiAgICB3aWR0aDogMjUlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wueGw0IHtcXG4gICAgd2lkdGg6IDMzLjMzMzMzMzMzMzMlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wueGw1IHtcXG4gICAgd2lkdGg6IDQxLjY2NjY2NjY2NjclO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wueGw2IHtcXG4gICAgd2lkdGg6IDUwJTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLnhsNyB7XFxuICAgIHdpZHRoOiA1OC4zMzMzMzMzMzMzJTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLnhsOCB7XFxuICAgIHdpZHRoOiA2Ni42NjY2NjY2NjY3JTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLnhsOSB7XFxuICAgIHdpZHRoOiA3NSU7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogYXV0bztcXG4gIH1cXG4gIC5yb3cgLmNvbC54bDEwIHtcXG4gICAgd2lkdGg6IDgzLjMzMzMzMzMzMzMlO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgbGVmdDogYXV0bztcXG4gICAgcmlnaHQ6IGF1dG87XFxuICB9XFxuICAucm93IC5jb2wueGwxMSB7XFxuICAgIHdpZHRoOiA5MS42NjY2NjY2NjY3JTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLnhsMTIge1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiBhdXRvO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC14bDEge1xcbiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLXhsMSB7XFxuICAgIHJpZ2h0OiA4LjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gteGwxIHtcXG4gICAgbGVmdDogOC4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQteGwyIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwteGwyIHtcXG4gICAgcmlnaHQ6IDE2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gteGwyIHtcXG4gICAgbGVmdDogMTYuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LXhsMyB7XFxuICAgIG1hcmdpbi1sZWZ0OiAyNSU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC14bDMge1xcbiAgICByaWdodDogMjUlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gteGwzIHtcXG4gICAgbGVmdDogMjUlO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC14bDQge1xcbiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC14bDQge1xcbiAgICByaWdodDogMzMuMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC14bDQge1xcbiAgICBsZWZ0OiAzMy4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQteGw1IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwteGw1IHtcXG4gICAgcmlnaHQ6IDQxLjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gteGw1IHtcXG4gICAgbGVmdDogNDEuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LXhsNiB7XFxuICAgIG1hcmdpbi1sZWZ0OiA1MCU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC14bDYge1xcbiAgICByaWdodDogNTAlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gteGw2IHtcXG4gICAgbGVmdDogNTAlO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC14bDcge1xcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC14bDcge1xcbiAgICByaWdodDogNTguMzMzMzMzMzMzMyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC14bDcge1xcbiAgICBsZWZ0OiA1OC4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQteGw4IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwteGw4IHtcXG4gICAgcmlnaHQ6IDY2LjY2NjY2NjY2NjclO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gteGw4IHtcXG4gICAgbGVmdDogNjYuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LXhsOSB7XFxuICAgIG1hcmdpbi1sZWZ0OiA3NSU7XFxuICB9XFxuICAucm93IC5jb2wucHVsbC14bDkge1xcbiAgICByaWdodDogNzUlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1c2gteGw5IHtcXG4gICAgbGVmdDogNzUlO1xcbiAgfVxcbiAgLnJvdyAuY29sLm9mZnNldC14bDEwIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlO1xcbiAgfVxcbiAgLnJvdyAuY29sLnB1bGwteGwxMCB7XFxuICAgIHJpZ2h0OiA4My4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLXhsMTAge1xcbiAgICBsZWZ0OiA4My4zMzMzMzMzMzMzJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5vZmZzZXQteGwxMSB7XFxuICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NjY3JTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLXhsMTEge1xcbiAgICByaWdodDogOTEuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wucHVzaC14bDExIHtcXG4gICAgbGVmdDogOTEuNjY2NjY2NjY2NyU7XFxuICB9XFxuICAucm93IC5jb2wub2Zmc2V0LXhsMTIge1xcbiAgICBtYXJnaW4tbGVmdDogMTAwJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdWxsLXhsMTIge1xcbiAgICByaWdodDogMTAwJTtcXG4gIH1cXG4gIC5yb3cgLmNvbC5wdXNoLXhsMTIge1xcbiAgICBsZWZ0OiAxMDAlO1xcbiAgfVxcbn1cXG5cXG4uc2lkZW5hdiB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICB3aWR0aDogMzAwcHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgKyA2MHB4KTtcXG4gIGhlaWdodDogLW1vei1jYWxjKDEwMCUpO1xcbiAgcGFkZGluZy1ib3R0b206IDYwcHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgei1pbmRleDogOTk5O1xcbiAgb3ZlcmZsb3cteTogYXV0bztcXG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XFxuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwNSUpO1xcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDFzO1xcbn1cXG4uc2lkZW5hdi5yaWdodC1hbGlnbmVkIHtcXG4gIHJpZ2h0OiAwO1xcbiAgbGVmdDogYXV0bztcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG59XFxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlIHtcXG4gIG1hcmdpbjogMDtcXG59XFxuLnNpZGVuYXYgbGkge1xcbiAgZmxvYXQ6IG5vbmU7XFxufVxcbi5zaWRlbmF2IGxpIC5pY29uU2lkZUxpbmsge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcbi5zaWRlbmF2IGxpIC5pY29uU2lkZUxpbmsgc3ZnIHtcXG4gIHN0cm9rZTogcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgd2lkdGg6IDMwcHg7XFxufVxcbi5zaWRlbmF2IGxpLmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcbn1cXG4uc2lkZW5hdiBsaS5hY3RpdmUgc3ZnIHtcXG4gIHN0cm9rZTogd2hpdGUgIWltcG9ydGFudDtcXG4gIHdpZHRoOiAzMHB4O1xcbn1cXG4uc2lkZW5hdiBsaS5sYXN0IHtcXG4gIHBvc2l0aW9uOiBzdGlja3k7XFxuICB0b3A6IGNhbGMoMTAwJSAtIDQ1cHggLSAzNXB4KTtcXG59XFxuLnNpZGVuYXYgbGkgPiBhIHtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZvbnQtc2l6ZTogMTRweDtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICBoZWlnaHQ6IDQ1cHg7XFxuICBsaW5lLWhlaWdodDogNDVweDtcXG4gIHBhZGRpbmc6IDAgMzBweDtcXG59XFxuLnNpZGVuYXYgbGkgPiBhOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxufVxcbi5zaWRlbmF2IGxpID4gYS5idG4sIC5zaWRlbmF2IGxpID4gYS5idG4tc21hbGwsIC5zaWRlbmF2IGxpID4gYS5idG4tbGFyZ2UsIC5zaWRlbmF2IGxpID4gYS5idG4tZmxhdCwgLnNpZGVuYXYgbGkgPiBhLmJ0bi1mbG9hdGluZyB7XFxuICBtYXJnaW46IDEwcHggMTVweDtcXG59XFxuLnNpZGVuYXYgbGkgPiBhLmJ0biwgLnNpZGVuYXYgbGkgPiBhLmJ0bi1zbWFsbCwgLnNpZGVuYXYgbGkgPiBhLmJ0bi1sYXJnZSwgLnNpZGVuYXYgbGkgPiBhLmJ0bi1mbG9hdGluZyB7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuLnNpZGVuYXYgbGkgPiBhLmJ0bi1mbGF0IHtcXG4gIGNvbG9yOiAjMzQzNDM0O1xcbn1cXG4uc2lkZW5hdiBsaSA+IGEuYnRuOmhvdmVyLCAuc2lkZW5hdiBsaSA+IGEuYnRuLXNtYWxsOmhvdmVyLCAuc2lkZW5hdiBsaSA+IGEuYnRuLWxhcmdlOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0MTQxNDE7XFxufVxcbi5zaWRlbmF2IGxpID4gYS5idG4tZmxvYXRpbmc6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0MzQzNDtcXG59XFxuLnNpZGVuYXYgbGkgPiBhID4gaSwgLnNpZGVuYXYgbGkgPiBhID4gW2NsYXNzXj1tZGktXSxcXG4uc2lkZW5hdiBsaSA+IGEgbGkgPiBhID4gW2NsYXNzKj1tZGktXSwgLnNpZGVuYXYgbGkgPiBhID4gaS5zLWljb24ge1xcbiAgZmxvYXQ6IGxlZnQ7XFxuICBoZWlnaHQ6IDQ1cHg7XFxuICBsaW5lLWhlaWdodDogNDVweDtcXG4gIG1hcmdpbjogMCAzMHB4IDAgMDtcXG4gIHdpZHRoOiAyMi41cHg7XFxuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcXG59XFxuLnNpZGVuYXYgLmRpdmlkZXIge1xcbiAgbWFyZ2luOiA3LjVweCAwIDAgMDtcXG59XFxuLnNpZGVuYXYgLnN1YmhlYWRlciB7XFxuICBjdXJzb3I6IGluaXRpYWw7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xcbiAgZm9udC1zaXplOiAxNHB4O1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIGxpbmUtaGVpZ2h0OiA0NXB4O1xcbn1cXG4uc2lkZW5hdiAuc3ViaGVhZGVyOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG4uc2lkZW5hdiAudXNlci12aWV3IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHBhZGRpbmc6IDMwcHggMzBweCAwO1xcbiAgbWFyZ2luLWJvdHRvbTogNy41cHg7XFxufVxcbi5zaWRlbmF2IC51c2VyLXZpZXcgPiBhIHtcXG4gIGhlaWdodDogYXV0bztcXG4gIHBhZGRpbmc6IDA7XFxufVxcbi5zaWRlbmF2IC51c2VyLXZpZXcgPiBhOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG4uc2lkZW5hdiAudXNlci12aWV3IC5iYWNrZ3JvdW5kIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICByaWdodDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICB6LWluZGV4OiAtMTtcXG59XFxuLnNpZGVuYXYgLnVzZXItdmlldyAuY2lyY2xlLFxcbi5zaWRlbmF2IC51c2VyLXZpZXcgLm5hbWUsXFxuLnNpZGVuYXYgLnVzZXItdmlldyAuZW1haWwge1xcbiAgZGlzcGxheTogYmxvY2s7XFxufVxcbi5zaWRlbmF2IC51c2VyLXZpZXcgLmNpcmNsZSB7XFxuICBoZWlnaHQ6IDY0cHg7XFxuICB3aWR0aDogNjRweDtcXG59XFxuLnNpZGVuYXYgLnVzZXItdmlldyAubmFtZSxcXG4uc2lkZW5hdiAudXNlci12aWV3IC5lbWFpbCB7XFxuICBmb250LXNpemU6IDE0cHg7XFxuICBsaW5lLWhlaWdodDogMjIuNXB4O1xcbn1cXG4uc2lkZW5hdiAudXNlci12aWV3IC5uYW1lIHtcXG4gIG1hcmdpbi10b3A6IDE2cHg7XFxuICBmb250LXdlaWdodDogNTAwO1xcbn1cXG4uc2lkZW5hdiAudXNlci12aWV3IC5lbWFpbCB7XFxuICBwYWRkaW5nLWJvdHRvbTogMTZweDtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxufVxcblxcbi5kcmFnLXRhcmdldCB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTBweDtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIHRvcDogMDtcXG4gIHotaW5kZXg6IDk5ODtcXG59XFxuLmRyYWctdGFyZ2V0LnJpZ2h0LWFsaWduZWQge1xcbiAgcmlnaHQ6IDA7XFxufVxcblxcbi5zaWRlbmF2LnNpZGVuYXYtZml4ZWQge1xcbiAgbGVmdDogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG59XFxuLnNpZGVuYXYuc2lkZW5hdi1maXhlZC5yaWdodC1hbGlnbmVkIHtcXG4gIHJpZ2h0OiAwO1xcbiAgbGVmdDogYXV0bztcXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDogOTkycHgpIHtcXG4gIC5zaWRlbmF2LnNpZGVuYXYtZml4ZWQge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwNSUpO1xcbiAgfVxcbiAgLnNpZGVuYXYuc2lkZW5hdi1maXhlZC5yaWdodC1hbGlnbmVkIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwNSUpO1xcbiAgfVxcbiAgLnNpZGVuYXYgPiBhIHtcXG4gICAgcGFkZGluZzogMCAxNXB4O1xcbiAgfVxcbiAgLnNpZGVuYXYgLnVzZXItdmlldyB7XFxuICAgIHBhZGRpbmc6IDE1cHggMTVweCAwO1xcbiAgfVxcbn1cXG4uc2lkZW5hdiAuY29sbGFwc2libGUtYm9keSA+IHVsOm5vdCguY29sbGFwc2libGUpID4gbGkuYWN0aXZlLFxcbi5zaWRlbmF2LnNpZGVuYXYtZml4ZWQgLmNvbGxhcHNpYmxlLWJvZHkgPiB1bDpub3QoLmNvbGxhcHNpYmxlKSA+IGxpLmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBjYWY5O1xcbn1cXG4uc2lkZW5hdiAuY29sbGFwc2libGUtYm9keSA+IHVsOm5vdCguY29sbGFwc2libGUpID4gbGkuYWN0aXZlIGEsXFxuLnNpZGVuYXYuc2lkZW5hdi1maXhlZCAuY29sbGFwc2libGUtYm9keSA+IHVsOm5vdCguY29sbGFwc2libGUpID4gbGkuYWN0aXZlIGEge1xcbiAgY29sb3I6ICNmZmY7XFxufVxcblxcbi5zaWRlbmF2IC5jb2xsYXBzaWJsZS1ib2R5IHtcXG4gIHBhZGRpbmc6IDA7XFxufVxcblxcbi5zaWRlbmF2LW92ZXJsYXkge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgb3BhY2l0eTogMDtcXG4gIGhlaWdodDogMTIwdmg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XFxuICB6LWluZGV4OiA5OTc7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG5cXG4ud2l0aC1zaWRlLW5hdi1vcGVuIHtcXG4gIHBhZGRpbmctbGVmdDogMzAwcHg7XFxuICB0cmFuc2l0aW9uOiBwYWRkaW5nIDFzO1xcbn1cXG5cXG4uYnRuLCAuYnRuLXNtYWxsLCAuYnRuLWxhcmdlLFxcbi5idG4tZmxhdCB7XFxuICBib3JkZXI6IG5vbmU7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBoZWlnaHQ6IDM2cHg7XFxuICBsaW5lLWhlaWdodDogMzZweDtcXG4gIHBhZGRpbmc6IDAgMTZweDtcXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuXFxuLmJ0bi5kaXNhYmxlZCxcXG4uYnRuLWZsb2F0aW5nLmRpc2FibGVkLFxcbi5idG4tbGFyZ2UuZGlzYWJsZWQsXFxuLmJ0bi1zbWFsbC5kaXNhYmxlZCxcXG4uYnRuLWZsYXQuZGlzYWJsZWQsXFxuLmJ0bjpkaXNhYmxlZCxcXG4uYnRuLWZsb2F0aW5nOmRpc2FibGVkLFxcbi5idG4tbGFyZ2U6ZGlzYWJsZWQsXFxuLmJ0bi1zbWFsbDpkaXNhYmxlZCxcXG4uYnRuLWZsYXQ6ZGlzYWJsZWQsXFxuLmJ0bltkaXNhYmxlZF0sXFxuLmJ0bi1mbG9hdGluZ1tkaXNhYmxlZF0sXFxuLmJ0bi1sYXJnZVtkaXNhYmxlZF0sXFxuLmJ0bi1zbWFsbFtkaXNhYmxlZF0sXFxuLmJ0bi1mbGF0W2Rpc2FibGVkXSB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNERkRGREYgIWltcG9ydGFudDtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxuICBjb2xvcjogIzlGOUY5RiAhaW1wb3J0YW50O1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbn1cXG4uYnRuLmRpc2FibGVkOmhvdmVyLFxcbi5idG4tZmxvYXRpbmcuZGlzYWJsZWQ6aG92ZXIsXFxuLmJ0bi1sYXJnZS5kaXNhYmxlZDpob3ZlcixcXG4uYnRuLXNtYWxsLmRpc2FibGVkOmhvdmVyLFxcbi5idG4tZmxhdC5kaXNhYmxlZDpob3ZlcixcXG4uYnRuOmRpc2FibGVkOmhvdmVyLFxcbi5idG4tZmxvYXRpbmc6ZGlzYWJsZWQ6aG92ZXIsXFxuLmJ0bi1sYXJnZTpkaXNhYmxlZDpob3ZlcixcXG4uYnRuLXNtYWxsOmRpc2FibGVkOmhvdmVyLFxcbi5idG4tZmxhdDpkaXNhYmxlZDpob3ZlcixcXG4uYnRuW2Rpc2FibGVkXTpob3ZlcixcXG4uYnRuLWZsb2F0aW5nW2Rpc2FibGVkXTpob3ZlcixcXG4uYnRuLWxhcmdlW2Rpc2FibGVkXTpob3ZlcixcXG4uYnRuLXNtYWxsW2Rpc2FibGVkXTpob3ZlcixcXG4uYnRuLWZsYXRbZGlzYWJsZWRdOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNERkRGREYgIWltcG9ydGFudDtcXG4gIGNvbG9yOiAjOUY5RjlGICFpbXBvcnRhbnQ7XFxufVxcblxcbi5idG4sXFxuLmJ0bi1zbWFsbCxcXG4uYnRuLWxhcmdlLFxcbi5idG4tZmxvYXRpbmcsXFxuLmJ0bi1mbGF0IHtcXG4gIGZvbnQtc2l6ZTogMTRweDtcXG4gIG91dGxpbmU6IDA7XFxufVxcbi5idG4gaSxcXG4uYnRuLWZsb2F0aW5nIGksXFxuLmJ0bi1sYXJnZSBpLFxcbi5idG4tc21hbGwgaSxcXG4uYnRuLWZsYXQgaSB7XFxuICBmb250LXNpemU6IDEuM3JlbTtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbn1cXG5cXG4uYnRuOmZvY3VzLCAuYnRuLXNtYWxsOmZvY3VzLCAuYnRuLWxhcmdlOmZvY3VzLFxcbi5idG4tZmxvYXRpbmc6Zm9jdXMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFiMWIxYjtcXG59XFxuXFxuLmJ0biwgLmJ0bi1zbWFsbCwgLmJ0bi1sYXJnZSB7XFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDM0MzQ7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBsZXR0ZXItc3BhY2luZzogMC41cHg7XFxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgZWFzZS1vdXQ7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5idG46aG92ZXIsIC5idG4tc21hbGw6aG92ZXIsIC5idG4tbGFyZ2U6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQxNDE0MTtcXG59XFxuXFxuLmJ0bi1mbG9hdGluZyB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBjb2xvcjogI2ZmZjtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB6LWluZGV4OiAxO1xcbiAgd2lkdGg6IDQwcHg7XFxuICBoZWlnaHQ6IDQwcHg7XFxuICBsaW5lLWhlaWdodDogNDBweDtcXG4gIHBhZGRpbmc6IDA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG59XFxuLmJ0bi1mbG9hdGluZzpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xcbn1cXG4uYnRuLWZsb2F0aW5nOmJlZm9yZSB7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbn1cXG4uYnRuLWZsb2F0aW5nLmJ0bi1sYXJnZSB7XFxuICB3aWR0aDogNTZweDtcXG4gIGhlaWdodDogNTZweDtcXG4gIHBhZGRpbmc6IDA7XFxufVxcbi5idG4tZmxvYXRpbmcuYnRuLWxhcmdlLmhhbGZ3YXktZmFiIHtcXG4gIGJvdHRvbTogMjhweDtcXG59XFxuLmJ0bi1mbG9hdGluZy5idG4tbGFyZ2UgaSB7XFxuICBsaW5lLWhlaWdodDogNTZweDtcXG59XFxuLmJ0bi1mbG9hdGluZy5idG4tc21hbGwge1xcbiAgd2lkdGg6IDMyLjRweDtcXG4gIGhlaWdodDogMzIuNHB4O1xcbn1cXG4uYnRuLWZsb2F0aW5nLmJ0bi1zbWFsbC5oYWxmd2F5LWZhYiB7XFxuICBib3R0b206IDE2LjJweDtcXG59XFxuLmJ0bi1mbG9hdGluZy5idG4tc21hbGwgaSB7XFxuICBsaW5lLWhlaWdodDogMzIuNHB4O1xcbn1cXG4uYnRuLWZsb2F0aW5nLmhhbGZ3YXktZmFiIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAyNHB4O1xcbiAgYm90dG9tOiAyMHB4O1xcbn1cXG4uYnRuLWZsb2F0aW5nLmhhbGZ3YXktZmFiLmxlZnQge1xcbiAgcmlnaHQ6IGF1dG87XFxuICBsZWZ0OiAyNHB4O1xcbn1cXG4uYnRuLWZsb2F0aW5nIGkge1xcbiAgd2lkdGg6IGluaGVyaXQ7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGZvbnQtc2l6ZTogMS42cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XFxufVxcblxcbmJ1dHRvbi5idG4tZmxvYXRpbmcge1xcbiAgYm9yZGVyOiBub25lO1xcbn1cXG5cXG4uZml4ZWQtYWN0aW9uLWJ0biB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICByaWdodDogMjNweDtcXG4gIGJvdHRvbTogMjNweDtcXG4gIHBhZGRpbmctdG9wOiAxNXB4O1xcbiAgbWFyZ2luLWJvdHRvbTogMDtcXG4gIHotaW5kZXg6IDk5NztcXG59XFxuLmZpeGVkLWFjdGlvbi1idG4uYWN0aXZlIHVsIHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1sZWZ0LCAuZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tcmlnaHQge1xcbiAgcGFkZGluZzogMCAwIDAgMTVweDtcXG59XFxuLmZpeGVkLWFjdGlvbi1idG4uZGlyZWN0aW9uLWxlZnQgdWwsIC5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1yaWdodCB1bCB7XFxuICB0ZXh0LWFsaWduOiByaWdodDtcXG4gIHJpZ2h0OiA2NHB4O1xcbiAgdG9wOiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBsZWZ0OiBhdXRvO1xcbiAgLyp3aWR0aCAxMDAlIG9ubHkgZ29lcyB0byB3aWR0aCBvZiBidXR0b24gY29udGFpbmVyICovXFxuICB3aWR0aDogNTAwcHg7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1sZWZ0IHVsIGxpLCAuZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tcmlnaHQgdWwgbGkge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgbWFyZ2luOiA3LjVweCAxNXB4IDAgMDtcXG59XFxuLmZpeGVkLWFjdGlvbi1idG4uZGlyZWN0aW9uLXJpZ2h0IHtcXG4gIHBhZGRpbmc6IDAgMTVweCAwIDA7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1yaWdodCB1bCB7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgZGlyZWN0aW9uOiBydGw7XFxuICBsZWZ0OiA2NHB4O1xcbiAgcmlnaHQ6IGF1dG87XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1yaWdodCB1bCBsaSB7XFxuICBtYXJnaW46IDcuNXB4IDAgMCAxNXB4O1xcbn1cXG4uZml4ZWQtYWN0aW9uLWJ0bi5kaXJlY3Rpb24tYm90dG9tIHtcXG4gIHBhZGRpbmc6IDAgMCAxNXB4IDA7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuLmRpcmVjdGlvbi1ib3R0b20gdWwge1xcbiAgdG9wOiA2NHB4O1xcbiAgYm90dG9tOiBhdXRvO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcXG59XFxuLmZpeGVkLWFjdGlvbi1idG4uZGlyZWN0aW9uLWJvdHRvbSB1bCBsaSB7XFxuICBtYXJnaW46IDE1cHggMCAwIDA7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuLnRvb2xiYXIge1xcbiAgcGFkZGluZzogMDtcXG4gIGhlaWdodDogNTZweDtcXG59XFxuLmZpeGVkLWFjdGlvbi1idG4udG9vbGJhci5hY3RpdmUgPiBhIGkge1xcbiAgb3BhY2l0eTogMDtcXG59XFxuLmZpeGVkLWFjdGlvbi1idG4udG9vbGJhciB1bCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgdG9wOiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgei1pbmRleDogMTtcXG59XFxuLmZpeGVkLWFjdGlvbi1idG4udG9vbGJhciB1bCBsaSB7XFxuICBmbGV4OiAxO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgbWFyZ2luOiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgdHJhbnNpdGlvbjogbm9uZTtcXG59XFxuLmZpeGVkLWFjdGlvbi1idG4udG9vbGJhciB1bCBsaSBhIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3gtc2hhZG93OiBub25lO1xcbiAgY29sb3I6ICNmZmY7XFxuICBsaW5lLWhlaWdodDogNTZweDtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuLnRvb2xiYXIgdWwgbGkgYSBpIHtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbn1cXG4uZml4ZWQtYWN0aW9uLWJ0biB1bCB7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDY0cHg7XFxuICBtYXJnaW46IDA7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuIHVsIGxpIHtcXG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuIHVsIGEuYnRuLWZsb2F0aW5nIHtcXG4gIG9wYWNpdHk6IDA7XFxufVxcbi5maXhlZC1hY3Rpb24tYnRuIC5mYWItYmFja2Ryb3Age1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIHotaW5kZXg6IC0xO1xcbiAgd2lkdGg6IDQwcHg7XFxuICBoZWlnaHQ6IDQwcHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcXG59XFxuXFxuLmJ0bi1mbGF0IHtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGNvbG9yOiAjMzQzNDM0O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xcbn1cXG4uYnRuLWZsYXQ6Zm9jdXMsIC5idG4tZmxhdDpob3ZlciB7XFxuICBib3gtc2hhZG93OiBub25lO1xcbn1cXG4uYnRuLWZsYXQ6Zm9jdXMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xcbn1cXG4uYnRuLWZsYXQuZGlzYWJsZWQsIC5idG4tZmxhdC5idG4tZmxhdFtkaXNhYmxlZF0ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG4gIGNvbG9yOiAjYjNiM2IzICFpbXBvcnRhbnQ7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxufVxcblxcbi5idG4tbGFyZ2Uge1xcbiAgaGVpZ2h0OiA1NHB4O1xcbiAgbGluZS1oZWlnaHQ6IDU0cHg7XFxuICBmb250LXNpemU6IDE1cHg7XFxuICBwYWRkaW5nOiAwIDI4cHg7XFxufVxcbi5idG4tbGFyZ2UgaSB7XFxuICBmb250LXNpemU6IDEuNnJlbTtcXG59XFxuXFxuLmJ0bi1zbWFsbCB7XFxuICBoZWlnaHQ6IDMyLjRweDtcXG4gIGxpbmUtaGVpZ2h0OiAzMi40cHg7XFxuICBmb250LXNpemU6IDEzcHg7XFxufVxcbi5idG4tc21hbGwgaSB7XFxuICBmb250LXNpemU6IDEuMnJlbTtcXG59XFxuXFxuLmJ0bi1ibG9jayB7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuXFxuLmNvbW11blRhYkhlYWRlciwgLnRhYnMuYWN0aXZlVGFiLTIgLnRhYi1oZWFkZXItb3ZlcjIgLnRhYi1oZWFkZXIsIC50YWJzLmFjdGl2ZVRhYi0yIC50YWItaGVhZGVyLW92ZXIxIC50YWItaGVhZGVyLCAudGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMCAudGFiLWhlYWRlciwgLnRhYnMuYWN0aXZlVGFiLTEgLnRhYi1oZWFkZXItb3ZlcjIgLnRhYi1oZWFkZXIsIC50YWJzLmFjdGl2ZVRhYi0xIC50YWItaGVhZGVyLW92ZXIxIC50YWItaGVhZGVyLCAudGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMCAudGFiLWhlYWRlciwgLnRhYnMuYWN0aXZlVGFiLTAgLnRhYi1oZWFkZXItb3ZlcjIgLnRhYi1oZWFkZXIsIC50YWJzLmFjdGl2ZVRhYi0wIC50YWItaGVhZGVyLW92ZXIxIC50YWItaGVhZGVyLCAudGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMCAudGFiLWhlYWRlciB7XFxuICBoZWlnaHQ6IDEwMHB4O1xcbiAgcGFkZGluZzogNDBweDtcXG59XFxuXFxuLnRhYnMge1xcbiAgbWluLWhlaWdodDogY2FsYygxMDAlIC0gMTUwcHgpO1xcbiAgbWFyZ2luLXRvcDogMzBweDtcXG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG4gIGJvcmRlci1yYWRpdXM6IDQwcHggIWltcG9ydGFudDtcXG59XFxuLnRhYnMgLmlubmVycGFnZSB7XFxuICBtaW4taGVpZ2h0OiA3MFZIICFpbXBvcnRhbnQ7XFxufVxcbi50YWJzIC50YWJzLWhlYWRlci1vdmVybGF5IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBoZWlnaHQ6IDEwMHB4O1xcbn1cXG4udGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMCB7XFxuICBmbGV4OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgwYzRmZDtcXG4gIGJvcmRlci1yYWRpdXM6IDQwcHggMCAwIDA7XFxufVxcbi50YWJzLmFjdGl2ZVRhYi0wIC50YWItaGVhZGVyLW92ZXIwIC50YWItaGVhZGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmU3ZmU7XFxuICBib3JkZXItcmFkaXVzOiA0MHB4IDQwcHggMCAwO1xcbn1cXG4udGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMSB7XFxuICBmbGV4OiAxO1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDAuMjV0dXJuLCAjY2JlN2ZlLCAjMzVhMmZiKTtcXG4gIGJvcmRlci1yYWRpdXM6IDAgMCAwIDA7XFxufVxcbi50YWJzLmFjdGl2ZVRhYi0wIC50YWItaGVhZGVyLW92ZXIxIC50YWItaGVhZGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGM0ZmQ7XFxuICBib3JkZXItcmFkaXVzOiAwIDQwcHggMCA0MHB4O1xcbn1cXG4udGFicy5hY3RpdmVUYWItMCAudGFiLWhlYWRlci1vdmVyMiB7XFxuICBmbGV4OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgwYzRmZDtcXG4gIGJvcmRlci1yYWRpdXM6IDAgNDBweCAwIDA7XFxufVxcbi50YWJzLmFjdGl2ZVRhYi0wIC50YWItaGVhZGVyLW92ZXIyIC50YWItaGVhZGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzNWEyZmI7XFxuICBib3JkZXItcmFkaXVzOiAwIDQwcHggMCA0MHB4O1xcbn1cXG4udGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMCB7XFxuICBmbGV4OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NiZTdmZTtcXG4gIGJvcmRlci1yYWRpdXM6IDQwcHggMCAwIDA7XFxufVxcbi50YWJzLmFjdGl2ZVRhYi0xIC50YWItaGVhZGVyLW92ZXIwIC50YWItaGVhZGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGM0ZmQ7XFxuICBib3JkZXItcmFkaXVzOiA0MHB4IDAgNDBweCAwO1xcbn1cXG4udGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMSB7XFxuICBmbGV4OiAxO1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDAuMjV0dXJuLCAjODBjNGZkLCAjMzVhMmZiKTtcXG4gIGJvcmRlci1yYWRpdXM6IDAgMCAwIDA7XFxufVxcbi50YWJzLmFjdGl2ZVRhYi0xIC50YWItaGVhZGVyLW92ZXIxIC50YWItaGVhZGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmU3ZmU7XFxuICBib3JkZXItcmFkaXVzOiA0MHB4IDQwcHggMCAwO1xcbn1cXG4udGFicy5hY3RpdmVUYWItMSAudGFiLWhlYWRlci1vdmVyMiB7XFxuICBmbGV4OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NiZTdmZTtcXG4gIGJvcmRlci1yYWRpdXM6IDAgNDBweCAwIDA7XFxufVxcbi50YWJzLmFjdGl2ZVRhYi0xIC50YWItaGVhZGVyLW92ZXIyIC50YWItaGVhZGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzNWEyZmI7XFxuICBib3JkZXItcmFkaXVzOiAwIDQwcHggMCA0MHB4O1xcbn1cXG4udGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMCB7XFxuICBmbGV4OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM1YTJmYjtcXG4gIGJvcmRlci1yYWRpdXM6IDQwcHggMCAwIDA7XFxufVxcbi50YWJzLmFjdGl2ZVRhYi0yIC50YWItaGVhZGVyLW92ZXIwIC50YWItaGVhZGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM4MGM0ZmQ7XFxuICBib3JkZXItcmFkaXVzOiA0MHB4IDAgNDBweCAwO1xcbn1cXG4udGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMSB7XFxuICBmbGV4OiAxO1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDAuMjV0dXJuLCAjODBjNGZkLCAjY2JlN2ZlKTtcXG4gIGJvcmRlci1yYWRpdXM6IDAgMCAwIDA7XFxufVxcbi50YWJzLmFjdGl2ZVRhYi0yIC50YWItaGVhZGVyLW92ZXIxIC50YWItaGVhZGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzNWEyZmI7XFxuICBib3JkZXItcmFkaXVzOiA0MHB4IDAgNDBweCAwO1xcbn1cXG4udGFicy5hY3RpdmVUYWItMiAudGFiLWhlYWRlci1vdmVyMiB7XFxuICBmbGV4OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM1YTJmYjtcXG4gIGJvcmRlci1yYWRpdXM6IDAgNDBweCAwIDA7XFxufVxcbi50YWJzLmFjdGl2ZVRhYi0yIC50YWItaGVhZGVyLW92ZXIyIC50YWItaGVhZGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjYmU3ZmU7XFxuICBib3JkZXItcmFkaXVzOiA0MHB4IDQwcHggMCAwO1xcbn1cXG4udGFicyAudGFiLWNvbnRlbnQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NiZTdmZTtcXG4gIHBhZGRpbmc6IDEwcHg7XFxuICBib3JkZXItdG9wOiAwO1xcbiAgbWluLWhlaWdodDogNzB2aDtcXG4gIGJvcmRlci1yYWRpdXM6IDAgMCA0MHB4IDQwcHg7XFxuICBwYWRkaW5nLWJvdHRvbTogMjBweDtcXG59XFxuXFxuLmxvYWRlci1vdmVybGF5IHtcXG4gIHotaW5kZXg6IDk5OTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGhlaWdodDogMTAwdmg7XFxuICB3aWR0aDogMTAwdnc7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDIsIDEwMCwgMTAwLCAwLjYwMyk7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuLmxvYWRlci1vdmVybGF5IC5sb2FkZXIge1xcbiAgYm9yZGVyOiA3cHggc29saWQgI2YzZjNmMzsgLyogTGlnaHQgZ3JleSAqL1xcbiAgYm9yZGVyLXRvcDogN3B4IHNvbGlkICMyZWEyY2M7IC8qIEJsdWUgKi9cXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIHdpZHRoOiA3MHB4O1xcbiAgaGVpZ2h0OiA3MHB4O1xcbiAgYW5pbWF0aW9uOiBzcGluIDJzIGxpbmVhciBpbmZpbml0ZTtcXG59XFxuLmxvYWRlci1vdmVybGF5IC5sb2FkZXItdGV4dCB7XFxuICBtYXJnaW4tdG9wOiAyMHB4O1xcbiAgZm9udC1zaXplOiAyNXB4O1xcbiAgY29sb3I6ICMyZWEyY2M7XFxufVxcbkBrZXlmcmFtZXMgc3BpbiB7XFxuICAwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcblxcbi5jYXJkLXBhbmVsIHtcXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4yNXM7XFxuICBwYWRkaW5nOiAyNHB4O1xcbiAgbWFyZ2luOiAwLjMzMzMzMzMzMzNyZW0gMCAwLjY2NjY2NjY2NjdyZW0gMDtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxufVxcblxcbi5jYXJkIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG1hcmdpbjogMC4zMzMzMzMzMzMzcmVtIDAgMC42NjY2NjY2NjY3cmVtIDA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjI1cztcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG59XFxuLmNhcmQgLmNhcmQtdGl0bGUge1xcbiAgZm9udC1zaXplOiAyNHB4O1xcbiAgZm9udC13ZWlnaHQ6IDMwMDtcXG59XFxuLmNhcmQgLmNhcmQtdGl0bGUuYWN0aXZhdG9yIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLmNhcmQuc21hbGwsIC5jYXJkLm1lZGl1bSwgLmNhcmQubGFyZ2Uge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4uY2FyZC5zbWFsbCAuY2FyZC1pbWFnZSwgLmNhcmQubWVkaXVtIC5jYXJkLWltYWdlLCAuY2FyZC5sYXJnZSAuY2FyZC1pbWFnZSB7XFxuICBtYXgtaGVpZ2h0OiA2MCU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG4uY2FyZC5zbWFsbCAuY2FyZC1pbWFnZSArIC5jYXJkLWNvbnRlbnQsIC5jYXJkLm1lZGl1bSAuY2FyZC1pbWFnZSArIC5jYXJkLWNvbnRlbnQsIC5jYXJkLmxhcmdlIC5jYXJkLWltYWdlICsgLmNhcmQtY29udGVudCB7XFxuICBtYXgtaGVpZ2h0OiA0MCU7XFxufVxcbi5jYXJkLnNtYWxsIC5jYXJkLWNvbnRlbnQsIC5jYXJkLm1lZGl1bSAuY2FyZC1jb250ZW50LCAuY2FyZC5sYXJnZSAuY2FyZC1jb250ZW50IHtcXG4gIG1heC1oZWlnaHQ6IDEwMCU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG4uY2FyZC5zbWFsbCAuY2FyZC1hY3Rpb24sIC5jYXJkLm1lZGl1bSAuY2FyZC1hY3Rpb24sIC5jYXJkLmxhcmdlIC5jYXJkLWFjdGlvbiB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDA7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxufVxcbi5jYXJkLnNtYWxsIHtcXG4gIGhlaWdodDogMzAwcHg7XFxufVxcbi5jYXJkLm1lZGl1bSB7XFxuICBoZWlnaHQ6IDQwMHB4O1xcbn1cXG4uY2FyZC5sYXJnZSB7XFxuICBoZWlnaHQ6IDUwMHB4O1xcbn1cXG4uY2FyZC5ob3Jpem9udGFsIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbi5jYXJkLmhvcml6b250YWwuc21hbGwgLmNhcmQtaW1hZ2UsIC5jYXJkLmhvcml6b250YWwubWVkaXVtIC5jYXJkLWltYWdlLCAuY2FyZC5ob3Jpem9udGFsLmxhcmdlIC5jYXJkLWltYWdlIHtcXG4gIGhlaWdodDogMTAwJTtcXG4gIG1heC1oZWlnaHQ6IG5vbmU7XFxuICBvdmVyZmxvdzogdmlzaWJsZTtcXG59XFxuLmNhcmQuaG9yaXpvbnRhbC5zbWFsbCAuY2FyZC1pbWFnZSBpbWcsIC5jYXJkLmhvcml6b250YWwubWVkaXVtIC5jYXJkLWltYWdlIGltZywgLmNhcmQuaG9yaXpvbnRhbC5sYXJnZSAuY2FyZC1pbWFnZSBpbWcge1xcbiAgaGVpZ2h0OiAxMDAlO1xcbn1cXG4uY2FyZC5ob3Jpem9udGFsIC5jYXJkLWltYWdlIHtcXG4gIG1heC13aWR0aDogNTAlO1xcbn1cXG4uY2FyZC5ob3Jpem9udGFsIC5jYXJkLWltYWdlIGltZyB7XFxuICBib3JkZXItcmFkaXVzOiAycHggMCAwIDJweDtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIHdpZHRoOiBhdXRvO1xcbn1cXG4uY2FyZC5ob3Jpem9udGFsIC5jYXJkLXN0YWNrZWQge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBmbGV4OiAxO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4uY2FyZC5ob3Jpem9udGFsIC5jYXJkLXN0YWNrZWQgLmNhcmQtY29udGVudCB7XFxuICBmbGV4LWdyb3c6IDE7XFxufVxcbi5jYXJkLnN0aWNreS1hY3Rpb24gLmNhcmQtYWN0aW9uIHtcXG4gIHotaW5kZXg6IDI7XFxufVxcbi5jYXJkLnN0aWNreS1hY3Rpb24gLmNhcmQtcmV2ZWFsIHtcXG4gIHotaW5kZXg6IDE7XFxuICBwYWRkaW5nLWJvdHRvbTogNjRweDtcXG59XFxuLmNhcmQgLmNhcmQtaW1hZ2Uge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4uY2FyZCAuY2FyZC1pbWFnZSBpbWcge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBib3JkZXItcmFkaXVzOiAycHggMnB4IDAgMDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIHRvcDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG4uY2FyZCAuY2FyZC1pbWFnZSAuY2FyZC10aXRsZSB7XFxuICBjb2xvcjogI2ZmZjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICBwYWRkaW5nOiAyNHB4O1xcbn1cXG4uY2FyZCAuY2FyZC1jb250ZW50IHtcXG4gIHBhZGRpbmc6IDI0cHg7XFxuICBib3JkZXItcmFkaXVzOiAwIDAgMnB4IDJweDtcXG59XFxuLmNhcmQgLmNhcmQtY29udGVudCBwIHtcXG4gIG1hcmdpbjogMDtcXG59XFxuLmNhcmQgLmNhcmQtY29udGVudCAuY2FyZC10aXRsZSB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGxpbmUtaGVpZ2h0OiAzMnB4O1xcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xcbn1cXG4uY2FyZCAuY2FyZC1jb250ZW50IC5jYXJkLXRpdGxlIGkge1xcbiAgbGluZS1oZWlnaHQ6IDMycHg7XFxufVxcbi5jYXJkIC5jYXJkLWFjdGlvbiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMTYwLCAxNjAsIDE2MCwgMC4yKTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHBhZGRpbmc6IDE2cHggMjRweDtcXG59XFxuLmNhcmQgLmNhcmQtYWN0aW9uOmxhc3QtY2hpbGQge1xcbiAgYm9yZGVyLXJhZGl1czogMCAwIDJweCAycHg7XFxufVxcbi5jYXJkIC5jYXJkLWFjdGlvbiBhOm5vdCguYnRuKTpub3QoLmJ0bi1sYXJnZSk6bm90KC5idG4tc21hbGwpOm5vdCguYnRuLWxhcmdlKTpub3QoLmJ0bi1mbG9hdGluZykge1xcbiAgY29sb3I6ICNmZmFiNDA7XFxuICBtYXJnaW4tcmlnaHQ6IDI0cHg7XFxuICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzIGVhc2U7XFxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xcbn1cXG4uY2FyZCAuY2FyZC1hY3Rpb24gYTpub3QoLmJ0bik6bm90KC5idG4tbGFyZ2UpOm5vdCguYnRuLXNtYWxsKTpub3QoLmJ0bi1sYXJnZSk6bm90KC5idG4tZmxvYXRpbmcpOmhvdmVyIHtcXG4gIGNvbG9yOiAjZmZkOGE2O1xcbn1cXG4uY2FyZCAuY2FyZC1yZXZlYWwge1xcbiAgcGFkZGluZzogMjRweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxuICB3aWR0aDogMTAwJTtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgei1pbmRleDogMztcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcbi5jYXJkIC5jYXJkLXJldmVhbCAuY2FyZC10aXRsZSB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuXFxuLypcXG4gICAgQGxpY2Vuc2VcXG4gICAgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cXG4gICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dFxcbiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dFxcbiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHRcXG4gICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc29cXG4gICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHRcXG4gKi9cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyogU1RZTEVTIEZPUiBUSEUgU1BJTk5FUiAqL1xcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKlxcbiAqIENvbnN0YW50czpcXG4gKiAgICAgIFNUUk9LRVdJRFRIID0gM3B4XFxuICogICAgICBBUkNTSVpFICAgICA9IDI3MCBkZWdyZWVzIChhbW91bnQgb2YgY2lyY2xlIHRoZSBhcmMgdGFrZXMgdXApXFxuICogICAgICBBUkNUSU1FICAgICA9IDEzMzNtcyAodGltZSBpdCB0YWtlcyB0byBleHBhbmQgYW5kIGNvbnRyYWN0IGFyYylcXG4gKiAgICAgIEFSQ1NUQVJUUk9UID0gMjE2IGRlZ3JlZXMgKGhvdyBtdWNoIHRoZSBzdGFydCBsb2NhdGlvbiBvZiB0aGUgYXJjXFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCByb3RhdGUgZWFjaCB0aW1lLCAyMTYgZ2l2ZXMgdXMgYVxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1IHBvaW50ZWQgc3RhciBzaGFwZSAoaXQncyAzNjAvNSAqIDMpLlxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSA3IHBvaW50ZWQgc3Rhciwgd2UgbWlnaHQgZG9cXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzYwLzcgKiAzID0gMTU0LjI4NilcXG4gKiAgICAgIENPTlRBSU5FUldJRFRIID0gMjhweFxcbiAqICAgICAgU0hSSU5LX1RJTUUgPSA0MDBtc1xcbiAqL1xcbi5wcmVsb2FkZXItd3JhcHBlciB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogNTBweDtcXG4gIGhlaWdodDogNTBweDtcXG59XFxuLnByZWxvYWRlci13cmFwcGVyLnNtYWxsIHtcXG4gIHdpZHRoOiAzNnB4O1xcbiAgaGVpZ2h0OiAzNnB4O1xcbn1cXG4ucHJlbG9hZGVyLXdyYXBwZXIuYmlnIHtcXG4gIHdpZHRoOiA2NHB4O1xcbiAgaGVpZ2h0OiA2NHB4O1xcbn1cXG4ucHJlbG9hZGVyLXdyYXBwZXIuYWN0aXZlIHtcXG4gIC8qIGR1cmF0aW9uOiAzNjAgKiBBUkNUSU1FIC8gKEFSQ1NUQVJUUk9UICsgKDM2MC1BUkNTSVpFKSkgKi9cXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIDE1NjhtcyBsaW5lYXIgaW5maW5pdGU7XFxuICBhbmltYXRpb246IGNvbnRhaW5lci1yb3RhdGUgMTU2OG1zIGxpbmVhciBpbmZpbml0ZTtcXG59XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIGNvbnRhaW5lci1yb3RhdGUge1xcbiAgdG8ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcbkBrZXlmcmFtZXMgY29udGFpbmVyLXJvdGF0ZSB7XFxuICB0byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcbi5zcGlubmVyLWxheWVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgb3BhY2l0eTogMDtcXG4gIGJvcmRlci1jb2xvcjogIzI2YTY5YTtcXG59XFxuXFxuLnNwaW5uZXItYmx1ZSxcXG4uc3Bpbm5lci1ibHVlLW9ubHkge1xcbiAgYm9yZGVyLWNvbG9yOiAjNDI4NWY0O1xcbn1cXG5cXG4uc3Bpbm5lci1yZWQsXFxuLnNwaW5uZXItcmVkLW9ubHkge1xcbiAgYm9yZGVyLWNvbG9yOiAjZGI0NDM3O1xcbn1cXG5cXG4uc3Bpbm5lci15ZWxsb3csXFxuLnNwaW5uZXIteWVsbG93LW9ubHkge1xcbiAgYm9yZGVyLWNvbG9yOiAjZjRiNDAwO1xcbn1cXG5cXG4uc3Bpbm5lci1ncmVlbixcXG4uc3Bpbm5lci1ncmVlbi1vbmx5IHtcXG4gIGJvcmRlci1jb2xvcjogIzBmOWQ1ODtcXG59XFxuXFxuLyoqXFxuICogSU1QT1JUQU5UIE5PVEUgQUJPVVQgQ1NTIEFOSU1BVElPTiBQUk9QRVJUSUVTIChrZWFudWxlZSk6XFxuICpcXG4gKiBpT1MgU2FmYXJpICh0ZXN0ZWQgb24gaU9TIDguMSkgZG9lcyBub3QgaGFuZGxlIGFuaW1hdGlvbi1kZWxheSB2ZXJ5IHdlbGwgLSBpdCBkb2Vzbid0XFxuICogZ3VhcmFudGVlIHRoYXQgdGhlIGFuaW1hdGlvbiB3aWxsIHN0YXJ0IF9leGFjdGx5XyBhZnRlciB0aGF0IHZhbHVlLiBTbyB3ZSBhdm9pZCB1c2luZ1xcbiAqIGFuaW1hdGlvbi1kZWxheSBhbmQgaW5zdGVhZCBzZXQgY3VzdG9tIGtleWZyYW1lcyBmb3IgZWFjaCBjb2xvciAoYXMgcmVkdW5kYW50IGFzIGl0XFxuICogc2VlbXMpLlxcbiAqXFxuICogV2Ugd3JpdGUgb3V0IGVhY2ggYW5pbWF0aW9uIGluIGZ1bGwgKGluc3RlYWQgb2Ygc2VwYXJhdGluZyBhbmltYXRpb24tbmFtZSxcXG4gKiBhbmltYXRpb24tZHVyYXRpb24sIGV0Yy4pIGJlY2F1c2UgdW5kZXIgdGhlIHBvbHlmaWxsLCBTYWZhcmkgZG9lcyBub3QgcmVjb2duaXplIHRob3NlXFxuICogc3BlY2lmaWMgcHJvcGVydGllcyBwcm9wZXJseSwgdHJlYXRzIHRoZW0gYXMgLXdlYmtpdC1hbmltYXRpb24sIGFuZCBvdmVycmlkZXMgdGhlXFxuICogb3RoZXIgYW5pbWF0aW9uIHJ1bGVzLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL1BvbHltZXIvcGxhdGZvcm0vaXNzdWVzLzUzLlxcbiAqL1xcbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIuc3Bpbm5lci1ibHVlIHtcXG4gIC8qIGR1cmF0aW9uczogNCAqIEFSQ1RJTUUgKi9cXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgYmx1ZS1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcbiAgYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgYmx1ZS1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcbn1cXG5cXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXItcmVkIHtcXG4gIC8qIGR1cmF0aW9uczogNCAqIEFSQ1RJTUUgKi9cXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgcmVkLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XFxuICBhbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCByZWQtZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXG59XFxuXFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLXllbGxvdyB7XFxuICAvKiBkdXJhdGlvbnM6IDQgKiBBUkNUSU1FICovXFxuICAtd2Via2l0LWFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIHllbGxvdy1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcbiAgYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgeWVsbG93LWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XFxufVxcblxcbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIuc3Bpbm5lci1ncmVlbiB7XFxuICAvKiBkdXJhdGlvbnM6IDQgKiBBUkNUSU1FICovXFxuICAtd2Via2l0LWFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIGdyZWVuLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XFxuICBhbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCBncmVlbi1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcbn1cXG5cXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLFxcbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIuc3Bpbm5lci1ibHVlLW9ubHksXFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLXJlZC1vbmx5LFxcbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIuc3Bpbm5lci15ZWxsb3ctb25seSxcXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXItZ3JlZW4tb25seSB7XFxuICAvKiBkdXJhdGlvbnM6IDQgKiBBUkNUSU1FICovXFxuICBvcGFjaXR5OiAxO1xcbiAgLXdlYmtpdC1hbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcbiAgYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXG59XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIGZpbGwtdW5maWxsLXJvdGF0ZSB7XFxuICAxMi41JSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKTtcXG4gIH0gLyogMC41ICogQVJDU0laRSAqL1xcbiAgMjUlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpO1xcbiAgfSAvKiAxICAgKiBBUkNTSVpFICovXFxuICAzNy41JSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDA1ZGVnKTtcXG4gIH0gLyogMS41ICogQVJDU0laRSAqL1xcbiAgNTAlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg1NDBkZWcpO1xcbiAgfSAvKiAyICAgKiBBUkNTSVpFICovXFxuICA2Mi41JSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNjc1ZGVnKTtcXG4gIH0gLyogMi41ICogQVJDU0laRSAqL1xcbiAgNzUlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg4MTBkZWcpO1xcbiAgfSAvKiAzICAgKiBBUkNTSVpFICovXFxuICA4Ny41JSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTQ1ZGVnKTtcXG4gIH0gLyogMy41ICogQVJDU0laRSAqL1xcbiAgdG8ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEwODBkZWcpO1xcbiAgfSAvKiA0ICAgKiBBUkNTSVpFICovXFxufVxcbkBrZXlmcmFtZXMgZmlsbC11bmZpbGwtcm90YXRlIHtcXG4gIDEyLjUlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKTtcXG4gIH0gLyogMC41ICogQVJDU0laRSAqL1xcbiAgMjUlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTtcXG4gIH0gLyogMSAgICogQVJDU0laRSAqL1xcbiAgMzcuNSUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0MDVkZWcpO1xcbiAgfSAvKiAxLjUgKiBBUkNTSVpFICovXFxuICA1MCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg1NDBkZWcpO1xcbiAgfSAvKiAyICAgKiBBUkNTSVpFICovXFxuICA2Mi41JSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDY3NWRlZyk7XFxuICB9IC8qIDIuNSAqIEFSQ1NJWkUgKi9cXG4gIDc1JSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDgxMGRlZyk7XFxuICB9IC8qIDMgICAqIEFSQ1NJWkUgKi9cXG4gIDg3LjUlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoOTQ1ZGVnKTtcXG4gIH0gLyogMy41ICogQVJDU0laRSAqL1xcbiAgdG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMDgwZGVnKTtcXG4gIH0gLyogNCAgICogQVJDU0laRSAqL1xcbn1cXG5ALXdlYmtpdC1rZXlmcmFtZXMgYmx1ZS1mYWRlLWluLW91dCB7XFxuICBmcm9tIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG4gIDI1JSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICAyNiUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbiAgODklIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDkwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBibHVlLWZhZGUtaW4tb3V0IHtcXG4gIGZyb20ge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbiAgMjUlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG4gIDI2JSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxuICA4OSUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbiAgOTAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbn1cXG5ALXdlYmtpdC1rZXlmcmFtZXMgcmVkLWZhZGUtaW4tb3V0IHtcXG4gIGZyb20ge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbiAgMTUlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDI1JSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICA1MCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbiAgNTElIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyByZWQtZmFkZS1pbi1vdXQge1xcbiAgZnJvbSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxuICAxNSUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbiAgMjUlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG4gIDUwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICA1MSUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbn1cXG5ALXdlYmtpdC1rZXlmcmFtZXMgeWVsbG93LWZhZGUtaW4tb3V0IHtcXG4gIGZyb20ge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbiAgNDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDUwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICA3NSUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbiAgNzYlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyB5ZWxsb3ctZmFkZS1pbi1vdXQge1xcbiAgZnJvbSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxuICA0MCUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbiAgNTAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG4gIDc1JSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICA3NiUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbn1cXG5ALXdlYmtpdC1rZXlmcmFtZXMgZ3JlZW4tZmFkZS1pbi1vdXQge1xcbiAgZnJvbSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxuICA2NSUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbiAgNzUlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG4gIDkwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBncmVlbi1mYWRlLWluLW91dCB7XFxuICBmcm9tIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDY1JSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxuICA3NSUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbiAgOTAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbn1cXG4vKipcXG4gKiBQYXRjaCB0aGUgZ2FwIHRoYXQgYXBwZWFyIGJldHdlZW4gdGhlIHR3byBhZGphY2VudCBkaXYuY2lyY2xlLWNsaXBwZXIgd2hpbGUgdGhlXFxuICogc3Bpbm5lciBpcyByb3RhdGluZyAoYXBwZWFycyBvbiBDaHJvbWUgMzgsIFNhZmFyaSA3LjEsIGFuZCBJRSAxMSkuXFxuICovXFxuLmdhcC1wYXRjaCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiA0NSU7XFxuICB3aWR0aDogMTAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGJvcmRlci1jb2xvcjogaW5oZXJpdDtcXG59XFxuXFxuLmdhcC1wYXRjaCAuY2lyY2xlIHtcXG4gIHdpZHRoOiAxMDAwJTtcXG4gIGxlZnQ6IC00NTAlO1xcbn1cXG5cXG4uY2lyY2xlLWNsaXBwZXIge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDUwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBib3JkZXItY29sb3I6IGluaGVyaXQ7XFxufVxcbi5jaXJjbGUtY2xpcHBlciAuY2lyY2xlIHtcXG4gIHdpZHRoOiAyMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgYm9yZGVyLXdpZHRoOiAzcHg7IC8qIFNUUk9LRVdJRFRIICovXFxuICBib3JkZXItc3R5bGU6IHNvbGlkO1xcbiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBub25lO1xcbiAgYW5pbWF0aW9uOiBub25lO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBib3R0b206IDA7XFxufVxcbi5jaXJjbGUtY2xpcHBlci5sZWZ0IC5jaXJjbGUge1xcbiAgbGVmdDogMDtcXG4gIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTI5ZGVnKTtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDEyOWRlZyk7XFxufVxcbi5jaXJjbGUtY2xpcHBlci5yaWdodCAuY2lyY2xlIHtcXG4gIGxlZnQ6IC0xMDAlO1xcbiAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xMjlkZWcpO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoLTEyOWRlZyk7XFxufVxcblxcbi5hY3RpdmUgLmNpcmNsZS1jbGlwcGVyLmxlZnQgLmNpcmNsZSB7XFxuICAvKiBkdXJhdGlvbjogQVJDVElNRSAqL1xcbiAgLXdlYmtpdC1hbmltYXRpb246IGxlZnQtc3BpbiAxMzMzbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcbiAgYW5pbWF0aW9uOiBsZWZ0LXNwaW4gMTMzM21zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXG59XFxuXFxuLmFjdGl2ZSAuY2lyY2xlLWNsaXBwZXIucmlnaHQgLmNpcmNsZSB7XFxuICAvKiBkdXJhdGlvbjogQVJDVElNRSAqL1xcbiAgLXdlYmtpdC1hbmltYXRpb246IHJpZ2h0LXNwaW4gMTMzM21zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXG4gIGFuaW1hdGlvbjogcmlnaHQtc3BpbiAxMzMzbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgbGVmdC1zcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEzMGRlZyk7XFxuICB9XFxuICA1MCUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC01ZGVnKTtcXG4gIH1cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIGxlZnQtc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKTtcXG4gIH1cXG4gIDUwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKC01ZGVnKTtcXG4gIH1cXG4gIHRvIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKTtcXG4gIH1cXG59XFxuQC13ZWJraXQta2V5ZnJhbWVzIHJpZ2h0LXNwaW4ge1xcbiAgZnJvbSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZyk7XFxuICB9XFxuICA1MCUge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDVkZWcpO1xcbiAgfVxcbiAgdG8ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIHJpZ2h0LXNwaW4ge1xcbiAgZnJvbSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpO1xcbiAgfVxcbiAgNTAlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNWRlZyk7XFxuICB9XFxuICB0byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpO1xcbiAgfVxcbn1cXG4jc3Bpbm5lckNvbnRhaW5lci5jb29sZG93biB7XFxuICAvKiBkdXJhdGlvbjogU0hSSU5LX1RJTUUgKi9cXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIDE1NjhtcyBsaW5lYXIgaW5maW5pdGUsIGZhZGUtb3V0IDQwMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XFxuICBhbmltYXRpb246IGNvbnRhaW5lci1yb3RhdGUgMTU2OG1zIGxpbmVhciBpbmZpbml0ZSwgZmFkZS1vdXQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcXG59XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIGZhZGUtb3V0IHtcXG4gIGZyb20ge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbiAgdG8ge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIGZhZGUtb3V0IHtcXG4gIGZyb20ge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbiAgdG8ge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbn1cXG4ucHJvZ3Jlc3Mge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgaGVpZ2h0OiA0cHg7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHdpZHRoOiAxMDAlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FjZWNlNjtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIG1hcmdpbjogMC4zMzMzMzMzMzMzcmVtIDAgMC42NjY2NjY2NjY3cmVtIDA7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG4ucHJvZ3Jlc3MgLmRldGVybWluYXRlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICBib3R0b206IDA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xcbiAgdHJhbnNpdGlvbjogd2lkdGggMC4zcyBsaW5lYXI7XFxufVxcbi5wcm9ncmVzcyAuaW5kZXRlcm1pbmF0ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZhNjlhO1xcbn1cXG4ucHJvZ3Jlc3MgLmluZGV0ZXJtaW5hdGU6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICBib3R0b206IDA7XFxuICB3aWxsLWNoYW5nZTogbGVmdCwgcmlnaHQ7XFxuICBhbmltYXRpb246IGluZGV0ZXJtaW5hdGUgMi4xcyBjdWJpYy1iZXppZXIoMC42NSwgMC44MTUsIDAuNzM1LCAwLjM5NSkgaW5maW5pdGU7XFxufVxcbi5wcm9ncmVzcyAuaW5kZXRlcm1pbmF0ZTphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgd2lsbC1jaGFuZ2U6IGxlZnQsIHJpZ2h0O1xcbiAgYW5pbWF0aW9uOiBpbmRldGVybWluYXRlLXNob3J0IDIuMXMgY3ViaWMtYmV6aWVyKDAuMTY1LCAwLjg0LCAwLjQ0LCAxKSBpbmZpbml0ZTtcXG4gIGFuaW1hdGlvbi1kZWxheTogMS4xNXM7XFxufVxcblxcbkBrZXlmcmFtZXMgaW5kZXRlcm1pbmF0ZSB7XFxuICAwJSB7XFxuICAgIGxlZnQ6IC0zNSU7XFxuICAgIHJpZ2h0OiAxMDAlO1xcbiAgfVxcbiAgNjAlIHtcXG4gICAgbGVmdDogMTAwJTtcXG4gICAgcmlnaHQ6IC05MCU7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgbGVmdDogMTAwJTtcXG4gICAgcmlnaHQ6IC05MCU7XFxuICB9XFxufVxcbkBrZXlmcmFtZXMgaW5kZXRlcm1pbmF0ZS1zaG9ydCB7XFxuICAwJSB7XFxuICAgIGxlZnQ6IC0yMDAlO1xcbiAgICByaWdodDogMTAwJTtcXG4gIH1cXG4gIDYwJSB7XFxuICAgIGxlZnQ6IDEwNyU7XFxuICAgIHJpZ2h0OiAtOCU7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgbGVmdDogMTA3JTtcXG4gICAgcmlnaHQ6IC04JTtcXG4gIH1cXG59XFxuLmZsYXNoLW1lc3NhZ2Uge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcGFkZGluZzogMnB4IDEwcHg7XFxuICBib3JkZXItcmFkaXVzOiA1cHg7XFxuICB6LWluZGV4OiA5OTk5OTtcXG4gIHJpZ2h0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgZm9udC1zaXplOiAxNHB4O1xcbn1cXG4uZmxhc2gtbWVzc2FnZS5pbmZvIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNiZWRkYmU7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjNzI4ZjcyO1xcbn1cXG4uZmxhc2gtbWVzc2FnZS53YXJuIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWU2ZDA7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZWE3ZDE3O1xcbn1cXG4uZmxhc2gtbWVzc2FnZS5lcnJvciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTViMmJjO1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2UzMzI1NztcXG59XFxuXFxuQGtleWZyYW1lcyBtZXNzYWdlSW4ge1xcbiAgZnJvbSB7XFxuICAgIHJpZ2h0OiA4MCU7XFxuICB9XFxuICB0byB7XFxuICAgIHJpZ2h0OiAwO1xcbiAgfVxcbn1cXG4ucHVsc2Uge1xcbiAgb3ZlcmZsb3c6IHZpc2libGU7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5wdWxzZTo6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xcbiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcywgdHJhbnNmb3JtIDAuM3M7XFxuICBhbmltYXRpb246IHB1bHNlLWFuaW1hdGlvbiAxcyBjdWJpYy1iZXppZXIoMC4yNCwgMCwgMC4zOCwgMSkgaW5maW5pdGU7XFxufVxcblxcbkBrZXlmcmFtZXMgcHVsc2UtYW5pbWF0aW9uIHtcXG4gIDAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcXG4gIH1cXG4gIDUwJSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7XFxuICB9XFxufVxcbi5kcm9wZG93bi1jb250ZW50IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxuICBtYXJnaW46IDA7XFxuICBkaXNwbGF5OiBmbG93O1xcbiAgbWluLXdpZHRoOiAxMDBweDtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgei1pbmRleDogOTk5OTtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcXG59XFxuLmRyb3Bkb3duLWNvbnRlbnQ6Zm9jdXMge1xcbiAgb3V0bGluZTogMDtcXG59XFxuLmRyb3Bkb3duLWNvbnRlbnQgbGkge1xcbiAgY2xlYXI6IGJvdGg7XFxuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIG1pbi1oZWlnaHQ6IDUwcHg7XFxuICBsaW5lLWhlaWdodDogMS41cmVtO1xcbiAgd2lkdGg6IDEwMCU7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbn1cXG4uZHJvcGRvd24tY29udGVudCBsaTpob3ZlciwgLmRyb3Bkb3duLWNvbnRlbnQgbGkuYWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZWU7XFxufVxcbi5kcm9wZG93bi1jb250ZW50IGxpOmZvY3VzIHtcXG4gIG91dGxpbmU6IG5vbmU7XFxufVxcbi5kcm9wZG93bi1jb250ZW50IGxpLmRpdmlkZXIge1xcbiAgbWluLWhlaWdodDogMDtcXG4gIGhlaWdodDogMXB4O1xcbn1cXG4uZHJvcGRvd24tY29udGVudCBsaSA+IGEsIC5kcm9wZG93bi1jb250ZW50IGxpID4gc3BhbiB7XFxuICBmb250LXNpemU6IDE2cHg7XFxuICBjb2xvcjogIzI2YTY5YTtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgbGluZS1oZWlnaHQ6IDIycHg7XFxuICBwYWRkaW5nOiAxNHB4IDE2cHg7XFxufVxcbi5kcm9wZG93bi1jb250ZW50IGxpID4gc3BhbiA+IGxhYmVsIHtcXG4gIHRvcDogMXB4O1xcbiAgbGVmdDogMDtcXG4gIGhlaWdodDogMThweDtcXG59XFxuLmRyb3Bkb3duLWNvbnRlbnQgbGkgPiBhID4gaSB7XFxuICBoZWlnaHQ6IGluaGVyaXQ7XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG4gIGZsb2F0OiBsZWZ0O1xcbiAgbWFyZ2luOiAwIDI0cHggMCAwO1xcbiAgd2lkdGg6IDI0cHg7XFxufVxcblxcbmJvZHkua2V5Ym9hcmQtZm9jdXNlZCAuZHJvcGRvd24tY29udGVudCBsaTpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFkYWRhO1xcbn1cXG5cXG4uaW5wdXQtZmllbGQuY29sIC5kcm9wZG93bi1jb250ZW50IFt0eXBlPWNoZWNrYm94XSArIGxhYmVsIHtcXG4gIHRvcDogMXB4O1xcbiAgbGVmdDogMDtcXG4gIGhlaWdodDogMThweDtcXG4gIHRyYW5zZm9ybTogbm9uZTtcXG59XFxuXFxuLmRyb3Bkb3duLXRyaWdnZXIge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG5uYXYge1xcbiAgY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBjYWY5O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDU2cHg7XFxuICBsaW5lLWhlaWdodDogNTZweDtcXG59XFxubmF2Lm5hdi1leHRlbmRlZCB7XFxuICBoZWlnaHQ6IGF1dG87XFxufVxcbm5hdi5uYXYtZXh0ZW5kZWQgLm5hdi13cmFwcGVyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgbWluLWhlaWdodDogNTZweDtcXG4gIGhlaWdodDogYXV0bztcXG59XFxubmF2Lm5hdi1leHRlbmRlZCAubmF2LWNvbnRlbnQge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcXG59XFxubmF2IGEge1xcbiAgY29sb3I6ICNmZmY7XFxufVxcbm5hdiBpLFxcbm5hdiBbY2xhc3NePW1kaS1dLCBuYXYgW2NsYXNzKj1tZGktXSxcXG5uYXYgaS5zLWljb25zIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgZm9udC1zaXplOiAyNHB4O1xcbiAgaGVpZ2h0OiA1NnB4O1xcbiAgbGluZS1oZWlnaHQ6IDU2cHg7XFxufVxcbm5hdiAubmF2LXdyYXBwZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbn1cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiA5OTNweCkge1xcbiAgbmF2IGEuc2lkZW5hdi10cmlnZ2VyIHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gIH1cXG59XFxubmF2IC5zaWRlbmF2LXRyaWdnZXIge1xcbiAgZmxvYXQ6IGxlZnQ7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB6LWluZGV4OiAxO1xcbiAgaGVpZ2h0OiA1NnB4O1xcbiAgbWFyZ2luOiAwIDE4cHg7XFxufVxcbm5hdiAuc2lkZW5hdi10cmlnZ2VyIGkge1xcbiAgaGVpZ2h0OiA1NnB4O1xcbiAgbGluZS1oZWlnaHQ6IDU2cHg7XFxufVxcbm5hdiAuYnJhbmQtbG9nbyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGZvbnQtc2l6ZTogMi4xcmVtO1xcbiAgcGFkZGluZzogMDtcXG59XFxubmF2IC5icmFuZC1sb2dvIGltZy5jaXJjbGUge1xcbiAgaGVpZ2h0OiAzMnB4O1xcbiAgd2lkdGg6IDMycHg7XFxufVxcbm5hdiAuYnJhbmQtbG9nby5jZW50ZXIge1xcbiAgbGVmdDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xcbn1cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA5OTJweCkge1xcbiAgbmF2IC5icmFuZC1sb2dvIHtcXG4gICAgbGVmdDogNTAlO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XFxuICB9XFxuICBuYXYgLmJyYW5kLWxvZ28ubGVmdCwgbmF2IC5icmFuZC1sb2dvLnJpZ2h0IHtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgdHJhbnNmb3JtOiBub25lO1xcbiAgfVxcbiAgbmF2IC5icmFuZC1sb2dvLmxlZnQge1xcbiAgICBsZWZ0OiAwLjVyZW07XFxuICB9XFxuICBuYXYgLmJyYW5kLWxvZ28ucmlnaHQge1xcbiAgICByaWdodDogMC41cmVtO1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgfVxcbn1cXG5uYXYgLmJyYW5kLWxvZ28ucmlnaHQge1xcbiAgcmlnaHQ6IDAuNXJlbTtcXG4gIHBhZGRpbmc6IDA7XFxufVxcbm5hdiAuYnJhbmQtbG9nbyBpLFxcbm5hdiAuYnJhbmQtbG9nbyBbY2xhc3NePW1kaS1dLCBuYXYgLmJyYW5kLWxvZ28gW2NsYXNzKj1tZGktXSxcXG5uYXYgLmJyYW5kLWxvZ28gaS5zLWljb25zIHtcXG4gIGZsb2F0OiBsZWZ0O1xcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xcbn1cXG5uYXYgLm5hdi10aXRsZSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBmb250LXNpemU6IDMycHg7XFxuICBwYWRkaW5nOiAyOHB4IDA7XFxufVxcbm5hdiB1bCB7XFxuICBtYXJnaW46IDA7XFxufVxcbm5hdiB1bCBsaSB7XFxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7XFxuICBmbG9hdDogbGVmdDtcXG4gIHBhZGRpbmc6IDA7XFxufVxcbm5hdiB1bCBsaS5hY3RpdmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xcbn1cXG5uYXYgdWwgYSB7XFxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7XFxuICBmb250LXNpemU6IDFyZW07XFxuICBjb2xvcjogI2ZmZjtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgcGFkZGluZzogMCAxNXB4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5uYXYgdWwgYS5idG4sIG5hdiB1bCBhLmJ0bi1zbWFsbCwgbmF2IHVsIGEuYnRuLWxhcmdlLCBuYXYgdWwgYS5idG4tZmxhdCwgbmF2IHVsIGEuYnRuLWZsb2F0aW5nIHtcXG4gIG1hcmdpbi10b3A6IC0ycHg7XFxuICBtYXJnaW4tbGVmdDogMTVweDtcXG4gIG1hcmdpbi1yaWdodDogMTVweDtcXG59XFxubmF2IHVsIGEuYnRuID4gLm1hdGVyaWFsLWljb25zLCBuYXYgdWwgYS5idG4tc21hbGwgPiAubWF0ZXJpYWwtaWNvbnMsIG5hdiB1bCBhLmJ0bi1sYXJnZSA+IC5tYXRlcmlhbC1pY29ucywgbmF2IHVsIGEuYnRuLWZsYXQgPiAubWF0ZXJpYWwtaWNvbnMsIG5hdiB1bCBhLmJ0bi1mbG9hdGluZyA+IC5tYXRlcmlhbC1pY29ucyB7XFxuICBoZWlnaHQ6IGluaGVyaXQ7XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG59XFxubmF2IHVsIGE6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xcbn1cXG5uYXYgdWwubGVmdCB7XFxuICBmbG9hdDogbGVmdDtcXG59XFxubmF2IGZvcm0ge1xcbiAgaGVpZ2h0OiAxMDAlO1xcbn1cXG5uYXYgLmlucHV0LWZpZWxkIHtcXG4gIG1hcmdpbjogMDtcXG4gIGhlaWdodDogMTAwJTtcXG59XFxubmF2IC5pbnB1dC1maWVsZCBpbnB1dCB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBmb250LXNpemU6IDEuMnJlbTtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIHBhZGRpbmctbGVmdDogMnJlbTtcXG59XFxubmF2IC5pbnB1dC1maWVsZCBpbnB1dDpmb2N1cywgbmF2IC5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPXRleHRdOnZhbGlkLCBuYXYgLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9cGFzc3dvcmRdOnZhbGlkLCBuYXYgLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9ZW1haWxdOnZhbGlkLCBuYXYgLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9dXJsXTp2YWxpZCwgbmF2IC5pbnB1dC1maWVsZCBpbnB1dFt0eXBlPWRhdGVdOnZhbGlkIHtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxufVxcbm5hdiAuaW5wdXQtZmllbGQgbGFiZWwge1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG59XFxubmF2IC5pbnB1dC1maWVsZCBsYWJlbCBpIHtcXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XFxuICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzO1xcbn1cXG5uYXYgLmlucHV0LWZpZWxkIGxhYmVsLmFjdGl2ZSBpIHtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5cXG4ubmF2YmFyLWZpeGVkIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGhlaWdodDogNTZweDtcXG4gIHotaW5kZXg6IDk5NztcXG59XFxuLm5hdmJhci1maXhlZCBuYXYge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbn1cXG5cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiA2MDFweCkge1xcbiAgbmF2Lm5hdi1leHRlbmRlZCAubmF2LXdyYXBwZXIge1xcbiAgICBtaW4taGVpZ2h0OiA2NHB4O1xcbiAgfVxcbiAgbmF2LCBuYXYgLm5hdi13cmFwcGVyIGksIG5hdiBhLnNpZGVuYXYtdHJpZ2dlciwgbmF2IGEuc2lkZW5hdi10cmlnZ2VyIGkge1xcbiAgICBoZWlnaHQ6IDY0cHg7XFxuICAgIGxpbmUtaGVpZ2h0OiA2NHB4O1xcbiAgfVxcbiAgLm5hdmJhci1maXhlZCB7XFxuICAgIGhlaWdodDogNjRweDtcXG4gIH1cXG59XCIsXCJAaW1wb3J0IFxcXCIuL2NvbG9yc1ZhcnNcXFwiO1xcclxcblxcclxcbkBlYWNoICRjb2xvcl9uYW1lLCAkY29sb3IgaW4gJGNvbG9ycyB7XFxyXFxuICBAZWFjaCAkY29sb3JfdHlwZSwgJGNvbG9yX3ZhbHVlIGluICRjb2xvciB7XFxyXFxuICAgIEBpZiAkY29sb3JfdHlwZSA9PSBcXFwiYmFzZVxcXCIge1xcclxcbiAgICAgIC4jeyRjb2xvcl9uYW1lfSB7XFxyXFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JfdmFsdWUgIWltcG9ydGFudDtcXHJcXG4gICAgICB9XFxyXFxuICAgICAgLiN7JGNvbG9yX25hbWV9LXRleHQge1xcclxcbiAgICAgICAgY29sb3I6ICRjb2xvcl92YWx1ZSAhaW1wb3J0YW50O1xcclxcbiAgICAgIH1cXHJcXG4gICAgICAuI3skY29sb3JfbmFtZX0td2F2ZXMgLndhdmVzLXJpcHBsZSB7XFxyXFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JfdmFsdWUgIWltcG9ydGFudDtcXHJcXG4gICAgICB9XFxyXFxuICAgIH0gQGVsc2Uge1xcclxcbiAgICAgIC4jeyRjb2xvcl9uYW1lfS4jeyRjb2xvcl90eXBlfSB7XFxyXFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JfdmFsdWUgIWltcG9ydGFudDtcXHJcXG4gICAgICB9XFxyXFxuICAgICAgLiN7JGNvbG9yX25hbWV9LXRleHQudGV4dC0jeyRjb2xvcl90eXBlfSB7XFxyXFxuICAgICAgICBjb2xvcjogJGNvbG9yX3ZhbHVlICFpbXBvcnRhbnQ7XFxyXFxuICAgICAgfVxcclxcbiAgICAgIC4jeyRjb2xvcl9uYW1lfS13YXZlcy53YXZlcy0jeyRjb2xvcl90eXBlfSAud2F2ZXMtcmlwcGxlIHtcXHJcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcl92YWx1ZSAhaW1wb3J0YW50O1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBTaGFkZVZhcnMgY2xhc3Nlc1xcclxcbiRzaGFkZXM6IChcXHJcXG4gIFxcXCJibGFja1xcXCI6ICMwMDAwMDAsXFxyXFxuICBcXFwid2hpdGVcXFwiOiAjZmZmZmZmLFxcclxcbiAgXFxcInRyYW5zcGFyZW50XFxcIjogdHJhbnNwYXJlbnRcXHJcXG4pO1xcclxcbi8vIFNoYWRlIGNsYXNzZXNcXHJcXG5AZWFjaCAkY29sb3IsICRjb2xvcl92YWx1ZSBpbiAkc2hhZGVzIHtcXHJcXG4gIC4jeyRjb2xvcn0ge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JfdmFsdWUgIWltcG9ydGFudDtcXHJcXG4gIH1cXHJcXG4gIC4jeyRjb2xvcn0tdGV4dCB7XFxyXFxuICAgIGNvbG9yOiAkY29sb3JfdmFsdWUgIWltcG9ydGFudDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuLy8gdXNhZ2U6IGNvbG9yKFxcXCJuYW1lX29mX2NvbG9yXFxcIiwgXFxcInR5cGVfb2ZfY29sb3JcXFwiKVxcclxcbi8vIHRvIGF2b2lkIHRvIHJlcGVhdGluZyBtYXAtZ2V0KCRjb2xvcnMsIC4uLilcXHJcXG5cXHJcXG5AZnVuY3Rpb24gY29sb3IoJGNvbG9yLCAkdHlwZSkge1xcclxcbiAgQGlmIG1hcC1oYXMta2V5KCRjb2xvcnMsICRjb2xvcikge1xcclxcbiAgICAkY3Vycl9jb2xvcjogbWFwLWdldCgkY29sb3JzLCAkY29sb3IpO1xcclxcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGN1cnJfY29sb3IsICR0eXBlKSB7XFxyXFxuICAgICAgQHJldHVybiBtYXAtZ2V0KCRjdXJyX2NvbG9yLCAkdHlwZSk7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG4gIEB3YXJuIFxcXCJVbmtub3duIGAjeyRjb2xvcn1gIC0gYCN7JHR5cGV9YCBpbiAkY29sb3JzLlxcXCI7XFxyXFxuICBAcmV0dXJuIG51bGw7XFxyXFxufVxcclxcblwiLFwiLyoqXFxyXFxuICogcHJpc20uanMgVHdpbGlnaHQgdGhlbWVcXHJcXG4gKiBCYXNlZCAobW9yZSBvciBsZXNzKSBvbiB0aGUgVHdpbGlnaHQgdGhlbWUgb3JpZ2luYWxseSBvZiBUZXh0bWF0ZSBmYW1lLlxcclxcbiAqIEBhdXRob3IgUmVteSBCYWNoXFxyXFxuICovXFxyXFxuIGNvZGVbY2xhc3MqPVxcXCJsYW5ndWFnZS1cXFwiXSxcXHJcXG4gcHJlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl0ge1xcclxcblxcdCBjb2xvcjogd2hpdGU7XFxyXFxuXFx0IGJhY2tncm91bmQ6IG5vbmU7XFxyXFxuXFx0IGZvbnQtZmFtaWx5OiBDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2U7XFxyXFxuXFx0IHRleHQtYWxpZ246IGxlZnQ7XFxyXFxuXFx0IHRleHQtc2hhZG93OiAwIC0uMWVtIC4yZW0gYmxhY2s7XFxyXFxuXFx0IHdoaXRlLXNwYWNlOiBwcmU7XFxyXFxuXFx0IHdvcmQtc3BhY2luZzogbm9ybWFsO1xcclxcblxcdCB3b3JkLWJyZWFrOiBub3JtYWw7XFxyXFxuXFx0IHdvcmQtd3JhcDogbm9ybWFsO1xcclxcblxcdCBsaW5lLWhlaWdodDogMS41O1xcclxcbiBcXHJcXG5cXHQgLW1vei10YWItc2l6ZTogNDtcXHJcXG5cXHQgLW8tdGFiLXNpemU6IDQ7XFxyXFxuXFx0IHRhYi1zaXplOiA0O1xcclxcbiBcXHJcXG5cXHQgLXdlYmtpdC1oeXBoZW5zOiBub25lO1xcclxcblxcdCAtbW96LWh5cGhlbnM6IG5vbmU7XFxyXFxuXFx0IC1tcy1oeXBoZW5zOiBub25lO1xcclxcblxcdCBoeXBoZW5zOiBub25lO1xcclxcbiB9XFxyXFxuIFxcclxcbiBwcmVbY2xhc3MqPVxcXCJsYW5ndWFnZS1cXFwiXSxcXHJcXG4gOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdIHtcXHJcXG5cXHQgYmFja2dyb3VuZDogaHNsKDAsIDAlLCA4JSk7IC8qICMxNDE0MTQgKi9cXHJcXG4gfVxcclxcbiBcXHJcXG4gLyogQ29kZSBibG9ja3MgKi9cXHJcXG4gcHJlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl0ge1xcclxcblxcdCBib3JkZXItcmFkaXVzOiAuNWVtO1xcclxcblxcdCBib3JkZXI6IC4zZW0gc29saWQgaHNsKDAsIDAlLCAzMyUpOyAvKiAjMjgyQTJCICovXFxyXFxuXFx0IGJveC1zaGFkb3c6IDFweCAxcHggLjVlbSBibGFjayBpbnNldDtcXHJcXG5cXHQgbWFyZ2luOiAuNWVtIDA7XFxyXFxuXFx0IG92ZXJmbG93OiBhdXRvO1xcclxcblxcdCBwYWRkaW5nOiAxZW07XFxyXFxuIH1cXHJcXG4gXFxyXFxuIHByZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdOjotbW96LXNlbGVjdGlvbiB7XFxyXFxuXFx0IC8qIEZpcmVmb3ggKi9cXHJcXG5cXHQgYmFja2dyb3VuZDogaHNsKDIwMCwgNCUsIDE2JSk7IC8qICMyODJBMkIgKi9cXHJcXG4gfVxcclxcbiBcXHJcXG4gcHJlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl06OnNlbGVjdGlvbiB7XFxyXFxuXFx0IC8qIFNhZmFyaSAqL1xcclxcblxcdCBiYWNrZ3JvdW5kOiBoc2woMjAwLCA0JSwgMTYlKTsgLyogIzI4MkEyQiAqL1xcclxcbiB9XFxyXFxuIFxcclxcbiAvKiBUZXh0IFNlbGVjdGlvbiBjb2xvdXIgKi9cXHJcXG4gcHJlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl06Oi1tb3otc2VsZWN0aW9uLCBwcmVbY2xhc3MqPVxcXCJsYW5ndWFnZS1cXFwiXSA6Oi1tb3otc2VsZWN0aW9uLFxcclxcbiBjb2RlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl06Oi1tb3otc2VsZWN0aW9uLCBjb2RlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl0gOjotbW96LXNlbGVjdGlvbiB7XFxyXFxuXFx0IHRleHQtc2hhZG93OiBub25lO1xcclxcblxcdCBiYWNrZ3JvdW5kOiBoc2xhKDAsIDAlLCA5MyUsIDAuMTUpOyAvKiAjRURFREVEICovXFxyXFxuIH1cXHJcXG4gXFxyXFxuIHByZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdOjpzZWxlY3Rpb24sIHByZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdIDo6c2VsZWN0aW9uLFxcclxcbiBjb2RlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl06OnNlbGVjdGlvbiwgY29kZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdIDo6c2VsZWN0aW9uIHtcXHJcXG5cXHQgdGV4dC1zaGFkb3c6IG5vbmU7XFxyXFxuXFx0IGJhY2tncm91bmQ6IGhzbGEoMCwgMCUsIDkzJSwgMC4xNSk7IC8qICNFREVERUQgKi9cXHJcXG4gfVxcclxcbiBcXHJcXG4gLyogSW5saW5lIGNvZGUgKi9cXHJcXG4gOm5vdChwcmUpID4gY29kZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdIHtcXHJcXG5cXHQgYm9yZGVyLXJhZGl1czogLjNlbTtcXHJcXG5cXHQgYm9yZGVyOiAuMTNlbSBzb2xpZCBoc2woMCwgMCUsIDMzJSk7IC8qICM1NDU0NTQgKi9cXHJcXG5cXHQgYm94LXNoYWRvdzogMXB4IDFweCAuM2VtIC0uMWVtIGJsYWNrIGluc2V0O1xcclxcblxcdCBwYWRkaW5nOiAuMTVlbSAuMmVtIC4wNWVtO1xcclxcblxcdCB3aGl0ZS1zcGFjZTogbm9ybWFsO1xcclxcbiB9XFxyXFxuIFxcclxcbiAudG9rZW4uY29tbWVudCxcXHJcXG4gLnRva2VuLnByb2xvZyxcXHJcXG4gLnRva2VuLmRvY3R5cGUsXFxyXFxuIC50b2tlbi5jZGF0YSB7XFxyXFxuXFx0IGNvbG9yOiBoc2woMCwgMCUsIDQ3JSk7IC8qICM3Nzc3NzcgKi9cXHJcXG4gfVxcclxcbiBcXHJcXG4gLnRva2VuLnB1bmN0dWF0aW9uIHtcXHJcXG5cXHQgb3BhY2l0eTogLjc7XFxyXFxuIH1cXHJcXG4gXFxyXFxuIC5uYW1lc3BhY2Uge1xcclxcblxcdCBvcGFjaXR5OiAuNztcXHJcXG4gfVxcclxcbiBcXHJcXG4gLnRva2VuLnRhZyxcXHJcXG4gLnRva2VuLmJvb2xlYW4sXFxyXFxuIC50b2tlbi5udW1iZXIsXFxyXFxuIC50b2tlbi5kZWxldGVkIHtcXHJcXG5cXHQgY29sb3I6IGhzbCgxNCwgNTglLCA1NSUpOyAvKiAjQ0Y2QTRDICovXFxyXFxuIH1cXHJcXG4gXFxyXFxuIC50b2tlbi5rZXl3b3JkLFxcclxcbiAudG9rZW4ucHJvcGVydHksXFxyXFxuIC50b2tlbi5zZWxlY3RvcixcXHJcXG4gLnRva2VuLmNvbnN0YW50LFxcclxcbiAudG9rZW4uc3ltYm9sLFxcclxcbiAudG9rZW4uYnVpbHRpbiB7XFxyXFxuXFx0IGNvbG9yOiBoc2woNTMsIDg5JSwgNzklKTsgLyogI0Y5RUU5OCAqL1xcclxcbiB9XFxyXFxuIFxcclxcbiAudG9rZW4uYXR0ci1uYW1lLFxcclxcbiAudG9rZW4uYXR0ci12YWx1ZSxcXHJcXG4gLnRva2VuLnN0cmluZyxcXHJcXG4gLnRva2VuLmNoYXIsXFxyXFxuIC50b2tlbi5vcGVyYXRvcixcXHJcXG4gLnRva2VuLmVudGl0eSxcXHJcXG4gLnRva2VuLnVybCxcXHJcXG4gLmxhbmd1YWdlLWNzcyAudG9rZW4uc3RyaW5nLFxcclxcbiAuc3R5bGUgLnRva2VuLnN0cmluZyxcXHJcXG4gLnRva2VuLnZhcmlhYmxlLFxcclxcbiAudG9rZW4uaW5zZXJ0ZWQge1xcclxcblxcdCBjb2xvcjogaHNsKDc2LCAyMSUsIDUyJSk7IC8qICM4RjlENkEgKi9cXHJcXG4gfVxcclxcbiBcXHJcXG4gLnRva2VuLmF0cnVsZSB7XFxyXFxuXFx0IGNvbG9yOiBoc2woMjE4LCAyMiUsIDU1JSk7IC8qICM3NTg3QTYgKi9cXHJcXG4gfVxcclxcbiBcXHJcXG4gLnRva2VuLnJlZ2V4LFxcclxcbiAudG9rZW4uaW1wb3J0YW50IHtcXHJcXG5cXHQgY29sb3I6IGhzbCg0MiwgNzUlLCA2NSUpOyAvKiAjRTlDMDYyICovXFxyXFxuIH1cXHJcXG4gXFxyXFxuIC50b2tlbi5pbXBvcnRhbnQsXFxyXFxuIC50b2tlbi5ib2xkIHtcXHJcXG5cXHQgZm9udC13ZWlnaHQ6IGJvbGQ7XFxyXFxuIH1cXHJcXG4gLnRva2VuLml0YWxpYyB7XFxyXFxuXFx0IGZvbnQtc3R5bGU6IGl0YWxpYztcXHJcXG4gfVxcclxcbiBcXHJcXG4gLnRva2VuLmVudGl0eSB7XFxyXFxuXFx0IGN1cnNvcjogaGVscDtcXHJcXG4gfVxcclxcbiBcXHJcXG4gcHJlW2RhdGEtbGluZV0ge1xcclxcblxcdCBwYWRkaW5nOiAxZW0gMCAxZW0gM2VtO1xcclxcblxcdCBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuIH1cXHJcXG4gXFxyXFxuIC8qIE1hcmt1cCAqL1xcclxcbiAubGFuZ3VhZ2UtbWFya3VwIC50b2tlbi50YWcsXFxyXFxuIC5sYW5ndWFnZS1tYXJrdXAgLnRva2VuLmF0dHItbmFtZSxcXHJcXG4gLmxhbmd1YWdlLW1hcmt1cCAudG9rZW4ucHVuY3R1YXRpb24ge1xcclxcblxcdCBjb2xvcjogaHNsKDMzLCAzMyUsIDUyJSk7IC8qICNBQzg4NUIgKi9cXHJcXG4gfVxcclxcbiBcXHJcXG4gLyogTWFrZSB0aGUgdG9rZW5zIHNpdCBhYm92ZSB0aGUgbGluZSBoaWdobGlnaHQgc28gdGhlIGNvbG91cnMgZG9uJ3QgbG9vayBmYWRlZC4gKi9cXHJcXG4gLnRva2VuIHtcXHJcXG5cXHQgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcblxcdCB6LWluZGV4OiAxO1xcclxcbiB9XFxyXFxuIFxcclxcbiAubGluZS1oaWdobGlnaHQge1xcclxcblxcdCBiYWNrZ3JvdW5kOiBoc2xhKDAsIDAlLCAzMyUsIDAuMjUpOyAvKiAjNTQ1NDU0ICovXFxyXFxuXFx0IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgaHNsYSgwLCAwJSwgMzMlLCAuMSkgNzAlLCBoc2xhKDAsIDAlLCAzMyUsIDApKTsgLyogIzU0NTQ1NCAqL1xcclxcblxcdCBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkIGhzbCgwLCAwJSwgMzMlKTsgLyogIzU0NTQ1NCAqL1xcclxcblxcdCBib3JkZXItdG9wOiAxcHggZGFzaGVkIGhzbCgwLCAwJSwgMzMlKTsgLyogIzU0NTQ1NCAqL1xcclxcblxcdCBsZWZ0OiAwO1xcclxcblxcdCBsaW5lLWhlaWdodDogaW5oZXJpdDtcXHJcXG5cXHQgbWFyZ2luLXRvcDogMC43NWVtOyAvKiBTYW1lIGFzIC5wcmlzbeKAmXMgcGFkZGluZy10b3AgKi9cXHJcXG5cXHQgcGFkZGluZzogaW5oZXJpdCAwO1xcclxcblxcdCBwb2ludGVyLWV2ZW50czogbm9uZTtcXHJcXG5cXHQgcG9zaXRpb246IGFic29sdXRlO1xcclxcblxcdCByaWdodDogMDtcXHJcXG5cXHQgd2hpdGUtc3BhY2U6IHByZTtcXHJcXG5cXHQgei1pbmRleDogMDtcXHJcXG4gfVxcclxcbiBcXHJcXG4gLmxpbmUtaGlnaGxpZ2h0OmJlZm9yZSxcXHJcXG4gLmxpbmUtaGlnaGxpZ2h0W2RhdGEtZW5kXTphZnRlciB7XFxyXFxuXFx0IGJhY2tncm91bmQtY29sb3I6IGhzbCgyMTUsIDE1JSwgNTklKTsgLyogIzg3OTRBNiAqL1xcclxcblxcdCBib3JkZXItcmFkaXVzOiA5OTlweDtcXHJcXG5cXHQgYm94LXNoYWRvdzogMCAxcHggd2hpdGU7XFxyXFxuXFx0IGNvbG9yOiBoc2woMjQsIDIwJSwgOTUlKTsgLyogI0Y1RjJGMCAqL1xcclxcblxcdCBjb250ZW50OiBhdHRyKGRhdGEtc3RhcnQpO1xcclxcblxcdCBmb250OiBib2xkIDY1JS8xLjUgc2Fucy1zZXJpZjtcXHJcXG5cXHQgbGVmdDogLjZlbTtcXHJcXG5cXHQgbWluLXdpZHRoOiAxZW07XFxyXFxuXFx0IHBhZGRpbmc6IDAgLjVlbTtcXHJcXG5cXHQgcG9zaXRpb246IGFic29sdXRlO1xcclxcblxcdCB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxuXFx0IHRleHQtc2hhZG93OiBub25lO1xcclxcblxcdCB0b3A6IC40ZW07XFxyXFxuXFx0IHZlcnRpY2FsLWFsaWduOiAuM2VtO1xcclxcbiB9XFxyXFxuIFxcclxcbiAubGluZS1oaWdobGlnaHRbZGF0YS1lbmRdOmFmdGVyIHtcXHJcXG5cXHQgYm90dG9tOiAuNGVtO1xcclxcblxcdCBjb250ZW50OiBhdHRyKGRhdGEtZW5kKTtcXHJcXG5cXHQgdG9wOiBhdXRvO1xcclxcbiB9XFxyXFxuIFwiLFwiQGltcG9ydCAnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVVidW50dSc7XFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuLndpbmRvdyB7XFxyXFxuICBmb250LWZhbWlseTogJ1VidW50dScsIHNhbnMtc2VyaWY7IFxcclxcbiAgZm9udC1zaXplIDogMTdweCA7XFxyXFxuICB3aWR0aCA6IDYwMHB4IDsgXFxyXFxuICBtYXJnaW4gOiA3NXB4IGF1dG8gOyBcXHJcXG4gIGJhY2tncm91bmQgOiAjMmMzZTUwOyBcXHJcXG4gIGhlaWdodCA6IDM1MHB4IDsgXFxyXFxuICBib3JkZXItcmFkaXVzIDogNXB4IDtcXHJcXG4gIGRpc3BsYXkgOiByZWxhdGl2ZSA7IFxcclxcbiAgIGJveC1zaGFkb3c6IDEwcHggMTBweCAxMHB4ICAjODg4ODg4O1xcclxcbn1cXHJcXG5cXHJcXG4uYWZ0ZXJjbG9zZSB7XFxyXFxuICAgIGNvbG9yIDogIzM0NDk1ZSA7IFxcclxcbiAgICBkaXNwbGF5OiBub25lICA7IFxcclxcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIDsgXFxyXFxufVxcclxcblxcclxcbi5vcGVuIHtcXHJcXG4gICAgY29sb3IgOiAjZmZmIDsgXFxyXFxuICAgIHBhZGRpbmcgOiAxNXB4IDsgXFxyXFxuICAgIGJhY2tncm91bmQ6ICMyZWNjNzEgOyBcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogNHB4IDsgXFxyXFxuICAgIGJvcmRlcjogbm9uZSA7IFxcclxcbn1cXHJcXG5cXHJcXG4uYmFzaCB7XFxyXFxuICB3aWR0aCA6IDYwMHB4IDsgXFxyXFxuICBiYWNrZ3JvdW5kIDogIzM0NDk1ZTsgXFxyXFxuICBoZWlnaHQgOiAzMTBweCA7IFxcclxcbiAgYm9yZGVyLXJhZGl1cyA6IDVweCA7XFxyXFxuICB0b3A6IDQwcHg7XFxyXFxuICBkaXNwbGF5IDogYWJzb2x1dGU7IFxcclxcbiAgY29sb3IgOiAjZmZmIDtcXHJcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxyXFxuICAuY29tbWFuZHtcXHJcXG4gICAgJjo6YmVmb3Jle1xcclxcbiAgICAgICAgY29udGVudDogXFxcInVzZXJAbWFjaGluZSAkIDogXFxcIjtcXHJcXG4gICAgICAgIGNvbG9yOiAjMmVjYzcxO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICB9XFxyXFxuICAucmVzdWx0YXtcXHJcXG4gICAgJjo6YmVmb3Jle1xcclxcbiAgICAgICAgY29udGVudDogXFxcIj4+XFxcIjtcXHJcXG4gICAgICAgIGNvbG9yOiAjMmVjYzcxO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi8qIGVmZmVjdGVkIGJ5IGNvbnRyb2xsZXJzICovXFxyXFxuXFxyXFxuLndpbmRvd21heCB7XFxyXFxuICB3aWR0aCA6IDEwMCUgOyBcXHJcXG4gIG1hcmdpbiA6IGF1dG8gOyBcXHJcXG4gIGJhY2tncm91bmQgOiAjMmMzZTUwOyBcXHJcXG4gIGhlaWdodCA6IDEwMDBweDsgXFxyXFxuICBib3JkZXItcmFkaXVzIDogNXB4IDtcXHJcXG4gIGRpc3BsYXkgOiByZWxhdGl2ZSA7IFxcclxcbn1cXHJcXG5cXHJcXG4ud2luZG93bWluIHtcXHJcXG4gIHdpZHRoIDogMzAwcHggOyBcXHJcXG4gIGhlaWdodCA6IDQ1cHggO1xcclxcbiAgYmFja2dyb3VuZCA6ICMyYzNlNTA7IFxcclxcbiAgYm9yZGVyLXJhZGl1cyA6IDVweCA7IFxcclxcbiAgYm90dG9tIDogMCA7IFxcclxcbiAgcG9zaXRpb246IGZpeGVkO1xcclxcbn1cXHJcXG5cXHJcXG4uYmFzaG1heCB7XFxyXFxuICBkaXNwbGF5IDogYWJzb2x1dGUgOyBcXHJcXG4gIHdpZHRoIDogMTAwJSA7IFxcclxcbiAgYmFja2dyb3VuZCA6ICMzNDQ5NWU7IFxcclxcbiAgaGVpZ2h0IDogOTYwcHggOyBcXHJcXG4gIGJvcmRlci1yYWRpdXMgOiA1cHggO1xcclxcbiAgYm90dG9tOiAwO1xcclxcbiAgY29sb3IgOiAjZmZmIDtcXHJcXG59XFxyXFxuXFxyXFxuLyogIS0tZW5kLS0hICovXFxyXFxuXFxyXFxuLmJ1dHRvbnMge1xcclxcbiAgd2lkdGggOiAxNXB4IDtcXHJcXG4gIGhlaWdodCA6IDE1cHggOyBcXHJcXG4gIGJvcmRlci1yYWRpdXMgOiA1MCUgO1xcclxcbiAgZmxvYXQgOiByaWdodCA7IFxcclxcbiAgbWFyZ2luIDogMTNweCA0cHg7XFxyXFxuICBib3JkZXI6IG5vbmUgOyBcXHJcXG59XFxyXFxuXFxyXFxuLmNsb3NlIHtcXHJcXG4gIGJhY2tncm91bmQgOiAjZTc0YzNjIDtcXHJcXG59XFxyXFxuXFxyXFxuLm1heGltaXple1xcclxcbiAgYmFja2dyb3VuZCA6ICNmMWM0MGYgO1xcclxcbn1cXHJcXG5cXHJcXG4ubWluaW1pemV7XFxyXFxuICBiYWNrZ3JvdW5kIDogIzJlY2M3MSA7XFxyXFxufVxcclxcblxcclxcbi5yZXN1bHQge1xcclxcbiAgZGlzcGxheSA6IG5vbmUgO1xcclxcbn1cXHJcXG5cXHJcXG4uY29udHJvbHMge1xcclxcbiAgaGVpZ2h0IDogNDBweCA7IFxcclxcbiAgdG9wIDogMCA7IFxcclxcbn1cXHJcXG5cXHJcXG4udGl0bGUge1xcclxcbiAgICBjb2xvciA6ICNmZmYgOyBcXHJcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQgOyBcXHJcXG4gICAgcGFkZGluZyA6IDEwcHg7XFxyXFxufVxcclxcblwiLFwiLm1hdGVyaWFsLXRvb2x0aXAge1xcclxcbiAgcGFkZGluZzogMTBweCA4cHg7XFxyXFxuICBmb250LXNpemU6IDFyZW07XFxyXFxuICB6LWluZGV4OiAyMDAwO1xcclxcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcclxcbiAgY29sb3I6ICNmZmY7XFxyXFxuICBtaW4taGVpZ2h0OiAzNnB4O1xcclxcbiAgbGluZS1oZWlnaHQ6IDEyMCU7XFxyXFxuICBvcGFjaXR5OiAwO1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSA0cHgpO1xcclxcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXHJcXG4gIGxlZnQ6IDA7XFxyXFxuICB0b3A6IDA7XFxyXFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXHJcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICMzMjMyMzI7XFxyXFxufVxcclxcblxcclxcbi5iYWNrZHJvcCB7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICBvcGFjaXR5OiAwO1xcclxcbiAgaGVpZ2h0OiA3cHg7XFxyXFxuICB3aWR0aDogMTRweDtcXHJcXG4gIGJvcmRlci1yYWRpdXM6IDAgMCA1MCUgNTAlO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMyMzIzMjtcXHJcXG4gIHotaW5kZXg6IC0xO1xcclxcbiAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDAlO1xcclxcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcclxcbn1cXHJcXG5cIixcIi8vIFotbGV2ZWxzXFxyXFxuLnNoYWRvdy0wIHtcXHJcXG4gIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcXHJcXG59XFxyXFxuXFxyXFxuLyogMmRwIGVsZXZhdGlvbiBtb2RpZmllZCovXFxyXFxuLnNoYWRvdy0xIHtcXHJcXG4gIGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksXFxyXFxuICAgIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTtcXHJcXG59XFxyXFxuLnNoYWRvdy0xLWhhbGYge1xcclxcbiAgYm94LXNoYWRvdzogMCAzcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggN3B4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSxcXHJcXG4gICAgMCAzcHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xcclxcbn1cXHJcXG5cXHJcXG4vKiA2ZHAgZWxldmF0aW9uIG1vZGlmaWVkKi9cXHJcXG4uc2hhZG93LTIge1xcclxcbiAgYm94LXNoYWRvdzogMCA0cHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksXFxyXFxuICAgIDAgMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcXHJcXG59XFxyXFxuXFxyXFxuLyogMTJkcCBlbGV2YXRpb24gbW9kaWZpZWQqL1xcclxcbi5zaGFkb3ctMyB7XFxyXFxuICBib3gtc2hhZG93OiAwIDhweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLFxcclxcbiAgICAwIDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMik7XFxyXFxufVxcclxcblxcclxcbi8qIDE2ZHAgZWxldmF0aW9uICovXFxyXFxuLnNoYWRvdy00IHtcXHJcXG4gIGJveC1zaGFkb3c6IDAgMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLFxcclxcbiAgICAwIDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDhweCAxMHB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xcclxcbn1cXHJcXG5cXHJcXG4vKiAyNGRwIGVsZXZhdGlvbiAqL1xcclxcbi5zaGFkb3ctNSB7XFxyXFxuICBib3gtc2hhZG93OiAwIDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSxcXHJcXG4gICAgMCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMik7XFxyXFxufVxcclxcblxcclxcbi8qIDI0ZHAgZWxldmF0aW9uICovXFxyXFxuLmludmVydC1zaGFkb3ctNSB7XFxyXFxuICAgIGJveC1zaGFkb3c6IFxcclxcbiAgICAzOHB4IDAgMCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksXFxyXFxuICAgIDQ2cHggMCAwIDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwgXFxyXFxuICAgIDE1cHggMCAwIDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xcclxcbiAgfVxcclxcblxcclxcbi5ob3ZlcmFibGUge1xcclxcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjI1cztcXHJcXG5cXHJcXG4gICY6aG92ZXIge1xcclxcbiAgICBib3gtc2hhZG93OiAwIDhweCAxN3B4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLFxcclxcbiAgICAgIDAgNnB4IDIwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTkpO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cIixcIlxcclxcbi8qIVxcclxcbiAqIFdhdmVzIHYwLjYuMFxcclxcbiAqIGh0dHA6Ly9maWFuLm15LmlkL1dhdmVzXFxyXFxuICpcXHJcXG4gKiBDb3B5cmlnaHQgMjAxNCBBbGZpYW5hIEUuIFNpYnVlYSBhbmQgb3RoZXIgY29udHJpYnV0b3JzXFxyXFxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXFxyXFxuICogaHR0cHM6Ly9naXRodWIuY29tL2ZpYW5zL1dhdmVzL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcXHJcXG4gKi9cXHJcXG5cXHJcXG5cXHJcXG4ud2F2ZXMtZWZmZWN0IHtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHJcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxyXFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXHJcXG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcclxcbiAgei1pbmRleDogMTtcXHJcXG4gIHRyYW5zaXRpb246IC4zcyBlYXNlLW91dDtcXHJcXG5cXHJcXG4gIC53YXZlcy1yaXBwbGUge1xcclxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcXHJcXG4gICAgd2lkdGg6IDIwcHg7XFxyXFxuICAgIGhlaWdodDogMjBweDtcXHJcXG4gICAgbWFyZ2luLXRvcDotMTBweDtcXHJcXG4gICAgbWFyZ2luLWxlZnQ6LTEwcHg7XFxyXFxuICAgIG9wYWNpdHk6IDA7XFxyXFxuXFxyXFxuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC4yKTtcXHJcXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuN3MgZWFzZS1vdXQ7XFxyXFxuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eTtcXHJcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcXHJcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBXYXZlcyBDb2xvcnNcXHJcXG4gICYud2F2ZXMtbGlnaHQgLndhdmVzLXJpcHBsZSB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40NSk7XFxyXFxuICB9XFxyXFxuICAmLndhdmVzLXJlZCAud2F2ZXMtcmlwcGxlIHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNDQsIDY3LCA1NCwgLjcwKTtcXHJcXG4gIH1cXHJcXG4gICYud2F2ZXMteWVsbG93IC53YXZlcy1yaXBwbGUge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjM1LCA1OSwgLjcwKTtcXHJcXG4gIH1cXHJcXG4gICYud2F2ZXMtb3JhbmdlIC53YXZlcy1yaXBwbGUge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMTUyLCAwLCAuNzApO1xcclxcbiAgfVxcclxcbiAgJi53YXZlcy1wdXJwbGUgLndhdmVzLXJpcHBsZSB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU2LCAzOSwgMTc2LCAwLjcwKTtcXHJcXG4gIH1cXHJcXG4gICYud2F2ZXMtZ3JlZW4gLndhdmVzLXJpcHBsZSB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNzYsIDE3NSwgODAsIDAuNzApO1xcclxcbiAgfVxcclxcbiAgJi53YXZlcy10ZWFsIC53YXZlcy1yaXBwbGUge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE1MCwgMTM2LCAwLjcwKTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIFN0eWxlIGlucHV0IGJ1dHRvbiBidWcuXFxyXFxuICBpbnB1dFt0eXBlPVxcXCJidXR0b25cXFwiXSwgaW5wdXRbdHlwZT1cXFwicmVzZXRcXFwiXSwgaW5wdXRbdHlwZT1cXFwic3VibWl0XFxcIl0ge1xcclxcbiAgICBib3JkZXI6IDA7XFxyXFxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcXHJcXG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xcclxcbiAgICB0ZXh0LXRyYW5zZm9ybTogaW5oZXJpdDtcXHJcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIGltZyB7XFxyXFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gICAgei1pbmRleDogLTE7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi53YXZlcy1ub3RyYW5zaXRpb24ge1xcclxcbiAgdHJhbnNpdGlvbjogbm9uZSAje1xcXCIhaW1wb3J0YW50XFxcIn07XFxyXFxufVxcclxcblxcclxcbi53YXZlcy1jaXJjbGUge1xcclxcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xcclxcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHdoaXRlIDEwMCUsIGJsYWNrIDEwMCUpO1xcclxcbn1cXHJcXG5cXHJcXG4ud2F2ZXMtaW5wdXQtd3JhcHBlciB7XFxyXFxuICBib3JkZXItcmFkaXVzOiAwLjJlbTtcXHJcXG4gIHZlcnRpY2FsLWFsaWduOiBib3R0b207XFxyXFxuXFxyXFxuICAud2F2ZXMtYnV0dG9uLWlucHV0IHtcXHJcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgICB0b3A6IDA7XFxyXFxuICAgIGxlZnQ6IDA7XFxyXFxuICAgIHotaW5kZXg6IDE7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi53YXZlcy1jaXJjbGUge1xcclxcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgd2lkdGg6IDIuNWVtO1xcclxcbiAgaGVpZ2h0OiAyLjVlbTtcXHJcXG4gIGxpbmUtaGVpZ2h0OiAyLjVlbTtcXHJcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXHJcXG4gIC13ZWJraXQtbWFzay1pbWFnZTogbm9uZTtcXHJcXG59XFxyXFxuXFxyXFxuLndhdmVzLWJsb2NrIHtcXHJcXG4gIGRpc3BsYXk6IGJsb2NrO1xcclxcbn1cXHJcXG5cXHJcXG4vKiBGaXJlZm94IEJ1ZzogbGluayBub3QgdHJpZ2dlcmVkICovXFxyXFxuLndhdmVzLWVmZmVjdCAud2F2ZXMtcmlwcGxlIHtcXHJcXG4gIHotaW5kZXg6IC0xO1xcclxcbn1cIixcIi5tb2RhbCB7XFxyXFxuICAmOmZvY3VzIHtcXHJcXG4gICAgb3V0bGluZTogbm9uZTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIEBleHRlbmQgLnNoYWRvdy01O1xcclxcblxcclxcbiAgLy9kaXNwbGF5OiBub25lO1xcclxcbiAgcG9zaXRpb246IGZpeGVkO1xcclxcbiAgbGVmdDogMDtcXHJcXG4gIHJpZ2h0OiAwO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcXHJcXG4gIHBhZGRpbmc6IDA7XFxyXFxuICBtYXgtaGVpZ2h0OiA3MCU7XFxyXFxuICB3aWR0aDogNTUlO1xcclxcbiAgbWFyZ2luOiBhdXRvO1xcclxcbiAgb3ZlcmZsb3cteTogYXV0bztcXHJcXG5cXHJcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXHJcXG4gIHdpbGwtY2hhbmdlOiB0b3AsIG9wYWNpdHk7XFxyXFxuXFxyXFxuICBAbWVkaWEgI3skbWVkaXVtLWFuZC1kb3dufSB7XFxyXFxuICAgd2lkdGg6IDgwJTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIGgxLGgyLGgzLGg0IHtcXHJcXG4gICAgbWFyZ2luLXRvcDogMDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC5tb2RhbC1jb250ZW50IHtcXHJcXG4gICAgcGFkZGluZzogMjRweDtcXHJcXG4gIH1cXHJcXG4gIC5tb2RhbC1jbG9zZSB7XFxyXFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC5tb2RhbC1mb290ZXIge1xcclxcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgMnB4IDJweDtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcXHJcXG4gICAgcGFkZGluZzogNHB4IDZweDtcXHJcXG4gICAgaGVpZ2h0OiA1NnB4O1xcclxcbiAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XFxyXFxuXFxyXFxuICAgIC5idG4sIC5idG4tZmxhdCB7XFxyXFxuICAgICAgbWFyZ2luOiA2cHggMDtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbiAgLm1vZGFsLWhlYWRlciB7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDJweCAycHggMCAwIDtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcXHJcXG4gICAgcGFkZGluZzogNnB4IDRweDtcXHJcXG4gICAgaGVpZ2h0OiA1NnB4O1xcclxcbiAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XFxyXFxuXFxyXFxuICAgIC5idG4sIC5idG4tZmxhdCB7XFxyXFxuICAgICAgbWFyZ2luOiA2cHggMDtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbn1cXHJcXG4ubW9kYWwtb3ZlcmxheSB7XFxyXFxuICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxuICB6LWluZGV4OiA5OTk7XFxyXFxuICB0b3A6IC0yNSU7XFxyXFxuICBsZWZ0OiAwO1xcclxcbiAgYm90dG9tOiAwO1xcclxcbiAgcmlnaHQ6IDA7XFxyXFxuICBoZWlnaHQ6IDEyNSU7XFxyXFxuICB3aWR0aDogMTAwJTtcXHJcXG4gIGJhY2tncm91bmQ6ICMwMDA7XFxyXFxuICBkaXNwbGF5OiBub25lO1xcclxcblxcclxcbiAgd2lsbC1jaGFuZ2U6IG9wYWNpdHk7XFxyXFxufVxcclxcblxcclxcbi8vIE1vZGFsIHdpdGggZml4ZWQgYWN0aW9uIGZvb3Rlclxcclxcbi5tb2RhbC5tb2RhbC1maXhlZC1mb290ZXIge1xcclxcbiAgcGFkZGluZzogMDtcXHJcXG4gIGhlaWdodDogNzAlO1xcclxcblxcclxcbiAgLm1vZGFsLWNvbnRlbnQge1xcclxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIGhlaWdodDogY2FsYygxMDAlIC0gNTZweCk7XFxyXFxuICAgIG1heC1oZWlnaHQ6IDEwMCU7XFxyXFxuICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xcclxcbiAgfVxcclxcblxcclxcbiAgLm1vZGFsLWZvb3RlciB7XFxyXFxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC4xKTtcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICBib3R0b206IDA7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi8vIE1vZGFsIEJvdHRvbSBTaGVldCBTdHlsZVxcclxcbi5tb2RhbC5ib3R0b20tc2hlZXQge1xcclxcbiAgdG9wOiBhdXRvO1xcclxcbiAgYm90dG9tOiAtMTAwJTtcXHJcXG4gIG1hcmdpbjogMDtcXHJcXG4gIHdpZHRoOiAxMDAlO1xcclxcbiAgbWF4LWhlaWdodDogNDUlO1xcclxcbiAgYm9yZGVyLXJhZGl1czogMDtcXHJcXG4gIHdpbGwtY2hhbmdlOiBib3R0b20sIG9wYWNpdHk7XFxyXFxufVxcclxcblwiLFwiaHRtbCxcXHJcXG5ib2R5LFxcclxcbiNyb290IHtcXHJcXG4gIG1hcmdpbjogMDtcXHJcXG4gIGhlaWdodDogMTAwJTtcXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuKiB7XFxyXFxuICBtYXJnaW46IDA7XFxyXFxuICBwYWRkaW5nOiAwO1xcclxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXHJcXG59XFxyXFxuXFxyXFxuLm5vc2VsZWN0IHtcXHJcXG4gIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsgLyogaU9TIFNhZmFyaSAqL1xcclxcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLyogU2FmYXJpICovXFxyXFxuICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7IC8qIEtvbnF1ZXJvciBIVE1MICovXFxyXFxuICAtbW96LXVzZXItc2VsZWN0OiBub25lOyAvKiBPbGQgdmVyc2lvbnMgb2YgRmlyZWZveCAqL1xcclxcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lOyAvKiBJbnRlcm5ldCBFeHBsb3Jlci9FZGdlICovXFxyXFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXHJcXG4gIC8qIE5vbi1wcmVmaXhlZCB2ZXJzaW9uLCBjdXJyZW50bHlcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBieSBDaHJvbWUsIEVkZ2UsIE9wZXJhIGFuZCBGaXJlZm94ICovXFxyXFxufVxcclxcblxcclxcbnVsIHtcXHJcXG4gICY6bm90KC5icm93c2VyLWRlZmF1bHQpIHtcXHJcXG4gICAgcGFkZGluZy1sZWZ0OiAwO1xcclxcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XFxyXFxuXFxyXFxuICAgICYgPiBsaSB7XFxyXFxuICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbmEge1xcclxcblxcdGNvbG9yOiAkbGluay1jb2xvcjtcXHJcXG5cXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxyXFxuXFxyXFxuICAvLyBHZXRzIHJpZCBvZiB0YXAgYWN0aXZlIHN0YXRlXFxyXFxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbn1cXHJcXG5cXHJcXG4udy0xMDAge1xcclxcbiAgd2lkdGg6IDEwMCU7XFxyXFxufVxcclxcblxcclxcbi5yaWdodC1hbGlnbiB7XFxyXFxuICB0ZXh0LWFsaWduOiByaWdodDtcXHJcXG59XFxyXFxuLmNlbnRlci1hbGlnbntcXHJcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG59XFxyXFxuXFxyXFxuLnYtY2VudGVyIHtcXHJcXG4gIGRpc3BsYXk6IGZsZXg7XFxyXFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbn1cXHJcXG5cXHJcXG5cXHJcXG4ubWIxIHtcXHJcXG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XFxyXFxufVxcclxcblxcclxcblxcclxcbi8vIENvbGxlY3Rpb25zXFxyXFxuLmNvbGxlY3Rpb24ge1xcclxcbiAgbWFyZ2luOiAkZWxlbWVudC10b3AtbWFyZ2luIDAgJGVsZW1lbnQtYm90dG9tLW1hcmdpbiAwO1xcclxcbiAgYm9yZGVyOiAxcHggc29saWQgJGNvbGxlY3Rpb24tYm9yZGVyLWNvbG9yO1xcclxcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcclxcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIC5jb2xsZWN0aW9uLWl0ZW0ge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sbGVjdGlvbi1iZy1jb2xvcjtcXHJcXG4gICAgbGluZS1oZWlnaHQ6ICRjb2xsZWN0aW9uLWxpbmUtaGVpZ2h0O1xcclxcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XFxyXFxuICAgIG1hcmdpbjogMDtcXHJcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xsZWN0aW9uLWJvcmRlci1jb2xvcjtcXHJcXG5cXHJcXG4gICAgJi5ob3ZlciB7XFxyXFxuICAgICAgJjpob3ZlciB7XFxyXFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sbGVjdGlvbi1ob3Zlci1iZy1jb2xvcjtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgLy8gQXZhdGFyIENvbGxlY3Rpb25cXHJcXG4gICAgJi5hdmF0YXIge1xcclxcbiAgICAgIG1pbi1oZWlnaHQ6IDg0cHg7XFxyXFxuICAgICAgcGFkZGluZy1sZWZ0OiA3MnB4O1xcclxcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG5cXHJcXG5cXHJcXG4gICAgICAvLyBEb24ndCBzdHlsZSBjaXJjbGVzIGluc2lkZSBwcmVsb2FkZXIgY2xhc3Nlcy5cXHJcXG4gICAgICAmOm5vdCguY2lyY2xlLWNsaXBwZXIpID4gLmNpcmNsZSxcXHJcXG4gICAgICA6bm90KC5jaXJjbGUtY2xpcHBlcikgPiAuY2lyY2xlIHtcXHJcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgICAgIHdpZHRoOiA0MnB4O1xcclxcbiAgICAgICAgaGVpZ2h0OiA0MnB4O1xcclxcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXHJcXG4gICAgICAgIGxlZnQ6IDE1cHg7XFxyXFxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcclxcbiAgICAgIH1cXHJcXG5cXHJcXG4gICAgICBpLmNpcmNsZSB7XFxyXFxuICAgICAgICBmb250LXNpemU6IDE4cHg7XFxyXFxuICAgICAgICBsaW5lLWhlaWdodDogNDJweDtcXHJcXG4gICAgICAgIGNvbG9yOiAjZmZmO1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTtcXHJcXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgICB9XFxyXFxuXFxyXFxuXFxyXFxuICAgICAgLnRpdGxlIHtcXHJcXG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcXHJcXG4gICAgICB9XFxyXFxuXFxyXFxuICAgICAgcCB7XFxyXFxuICAgICAgICBtYXJnaW46IDA7XFxyXFxuICAgICAgfVxcclxcblxcclxcbiAgICAgIC5zZWNvbmRhcnktY29udGVudCB7XFxyXFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgICAgICB0b3A6IDE2cHg7XFxyXFxuICAgICAgICByaWdodDogMTZweDtcXHJcXG4gICAgICB9XFxyXFxuXFxyXFxuICAgIH1cXHJcXG5cXHJcXG5cXHJcXG4gICAgJjpsYXN0LWNoaWxkIHtcXHJcXG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICYuYWN0aXZlIHtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sbGVjdGlvbi1hY3RpdmUtYmctY29sb3I7XFxyXFxuICAgICAgY29sb3I6ICRjb2xsZWN0aW9uLWFjdGl2ZS1jb2xvcjtcXHJcXG5cXHJcXG4gICAgICAuc2Vjb25kYXJ5LWNvbnRlbnQge1xcclxcbiAgICAgICAgY29sb3I6ICNmZmY7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuXFxyXFxuICBhLmNvbGxlY3Rpb24taXRlbSB7XFxyXFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgICB0cmFuc2l0aW9uOiAuMjVzO1xcclxcbiAgICBjb2xvcjogJGNvbGxlY3Rpb24tbGluay1jb2xvcjtcXHJcXG5cXHJcXG4gICAgJjpub3QoLmFjdGl2ZSkge1xcclxcbiAgICAgICY6aG92ZXIge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbGxlY3Rpb24taG92ZXItYmctY29sb3I7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmLndpdGgtaGVhZGVyIHtcXHJcXG4gICAgLmNvbGxlY3Rpb24taGVhZGVyIHtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sbGVjdGlvbi1iZy1jb2xvcjtcXHJcXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbGxlY3Rpb24tYm9yZGVyLWNvbG9yO1xcclxcbiAgICAgIHBhZGRpbmc6IDEwcHggMjBweDtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAuY29sbGVjdGlvbi1pdGVtIHtcXHJcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIge1xcclxcbiAgICAgIHBhZGRpbmctbGVmdDogNzJweDtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbn1cXHJcXG5cXHJcXG4vLyBNYWRlIGxlc3Mgc3BlY2lmaWMgdG8gYWxsb3cgZWFzaWVyIG92ZXJyaWRpbmdcXHJcXG4uc2Vjb25kYXJ5LWNvbnRlbnQge1xcclxcbiAgZmxvYXQ6IHJpZ2h0O1xcclxcbiAgY29sb3I6ICRzZWNvbmRhcnktY29sb3I7XFxyXFxufVxcclxcblxcclxcbi5jb2xsYXBzaWJsZSAuY29sbGVjdGlvbiB7XFxyXFxuICBtYXJnaW46IDA7XFxyXFxuICBib3JkZXI6IG5vbmU7XFxyXFxufVxcclxcblxcclxcblxcclxcbi5tb2RhbC1vdmVybGF5IHtcXHJcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXHJcXG4gIHRvcDogMDtcXHJcXG4gIGxlZnQ6IDA7XFxyXFxuICByaWdodDogMDtcXHJcXG4gIGhlaWdodDogMTAwdmg7XFxyXFxuICB3aWR0aDogMTAwdnc7XFxyXFxuICBwYWRkaW5nOiAyMHB4IDAgMjBweCAwO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7XFxyXFxuICB6LWluZGV4OiA5OTk7XFxyXFxuICBkaXNwbGF5OiBmbGV4O1xcclxcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxyXFxuICAvL2FsaWduLWl0ZW1zOiBjZW50ZXI7XFxyXFxuICAuaW5uZXJmb3Jte1xcclxcbiAgICBtYXgtd2lkdGg6IDY1MHB4O1xcclxcbiAgICBmb3Jte1xcclxcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuLyoqKioqKioqKioqKioqKioqKioqKlxcclxcbiAgTWVkaWEgUXVlcnkgQ2xhc3Nlc1xcclxcbioqKioqKioqKioqKioqKioqKioqKiovXFxyXFxuLmhpZGUtb24tc21hbGwtb25seSwgLmhpZGUtb24tc21hbGwtYW5kLWRvd24ge1xcclxcbiAgQG1lZGlhICN7JHNtYWxsLWFuZC1kb3dufSB7XFxyXFxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuLmhpZGUtb24tbWVkLWFuZC1kb3duIHtcXHJcXG4gIEBtZWRpYSAjeyRtZWRpdW0tYW5kLWRvd259IHtcXHJcXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcclxcbiAgfVxcclxcbn1cXHJcXG4uaGlkZS1vbi1tZWQtYW5kLXVwIHtcXHJcXG4gIEBtZWRpYSAjeyRtZWRpdW0tYW5kLXVwfSB7XFxyXFxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuLmhpZGUtb24tbWVkLW9ubHkge1xcclxcbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkc21hbGwtc2NyZWVuKSBhbmQgKG1heC13aWR0aDogJG1lZGl1bS1zY3JlZW4pIHtcXHJcXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcclxcbiAgfVxcclxcbn1cXHJcXG4uaGlkZS1vbi1sYXJnZS1vbmx5IHtcXHJcXG4gIEBtZWRpYSAjeyRsYXJnZS1hbmQtdXB9IHtcXHJcXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcclxcbiAgfVxcclxcbn1cXHJcXG4uaGlkZS1vbi1leHRyYS1sYXJnZS1vbmx5IHtcXHJcXG4gIEBtZWRpYSAjeyRleHRyYS1sYXJnZS1hbmQtdXB9IHtcXHJcXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcclxcbiAgfVxcclxcbn1cXHJcXG4uc2hvdy1vbi1leHRyYS1sYXJnZSB7XFxyXFxuICBAbWVkaWEgI3skZXh0cmEtbGFyZ2UtYW5kLXVwfSB7XFxyXFxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XFxyXFxuICB9XFxyXFxufVxcclxcbi5zaG93LW9uLWxhcmdlIHtcXHJcXG4gIEBtZWRpYSAjeyRsYXJnZS1hbmQtdXB9IHtcXHJcXG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuLnNob3ctb24tbWVkaXVtIHtcXHJcXG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHNtYWxsLXNjcmVlbikgYW5kIChtYXgtd2lkdGg6ICRtZWRpdW0tc2NyZWVuKSB7XFxyXFxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XFxyXFxuICB9XFxyXFxufVxcclxcbi5zaG93LW9uLXNtYWxsIHtcXHJcXG4gIEBtZWRpYSAjeyRzbWFsbC1hbmQtZG93bn0ge1xcclxcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcclxcbiAgfVxcclxcbn1cXHJcXG4uc2hvdy1vbi1tZWRpdW0tYW5kLXVwIHtcXHJcXG4gIEBtZWRpYSAjeyRtZWRpdW0tYW5kLXVwfSB7XFxyXFxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XFxyXFxuICB9XFxyXFxufVxcclxcbi5zaG93LW9uLW1lZGl1bS1hbmQtZG93biB7XFxyXFxuICBAbWVkaWEgI3skbWVkaXVtLWFuZC1kb3dufSB7XFxyXFxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcblxcclxcbi8vIENlbnRlciB0ZXh0IG9uIG1vYmlsZVxcclxcbi5jZW50ZXItb24tc21hbGwtb25seSB7XFxyXFxuICBAbWVkaWEgI3skc21hbGwtYW5kLWRvd259IHtcXHJcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG4vKioqKioqKioqKioqKioqKioqKlxcclxcbiAgVXRpbGl0eSBDbGFzc2VzXFxyXFxuKioqKioqKioqKioqKioqKioqKi9cXHJcXG5cXHJcXG4uaGlkZSB7XFxyXFxuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XFxyXFxufVxcclxcblxcclxcbi8vIFRleHQgQWxpZ25cXHJcXG4ubGVmdC1hbGlnbiB7XFxyXFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcclxcbn1cXHJcXG4ucmlnaHQtYWxpZ24ge1xcclxcbiAgdGV4dC1hbGlnbjogcmlnaHRcXHJcXG59XFxyXFxuLmNlbnRlciwgLmNlbnRlci1hbGlnbiB7XFxyXFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxufVxcclxcblxcclxcbi5sZWZ0IHtcXHJcXG4gIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7XFxyXFxufVxcclxcbi5yaWdodCB7XFxyXFxuICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDtcXHJcXG59XFxyXFxuXFxyXFxuLy8gTm8gVGV4dCBTZWxlY3RcXHJcXG4ubm8tc2VsZWN0IHtcXHJcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcclxcbn1cXHJcXG5cXHJcXG4uY2lyY2xlIHtcXHJcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXHJcXG59XFxyXFxuXFxyXFxuLmNlbnRlci1ibG9jayB7XFxyXFxuICBkaXNwbGF5OiBibG9jaztcXHJcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcclxcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xcclxcbn1cXHJcXG5cXHJcXG4udHJ1bmNhdGUge1xcclxcbiAgZGlzcGxheTogYmxvY2s7XFxyXFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcclxcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXHJcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcclxcbn1cXHJcXG5cXHJcXG4ubm8tcGFkZGluZyB7XFxyXFxuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxyXFxufVxcclxcblwiLFwiQHVzZSBcXFwic2FzczptYXRoXFxcIjtcXHJcXG4kcHJpbWFyeS1jb2xvcjogY29sb3IoXFxcImJsdWVcXFwiLCBcXFwibGlnaHRlbi0zXFxcIikgIWRlZmF1bHQ7XFxyXFxuJHByaW1hcnktY29sb3ItbGlnaHQ6IGxpZ2h0ZW4oJHByaW1hcnktY29sb3IsIDE1JSkgIWRlZmF1bHQ7XFxyXFxuJHByaW1hcnktY29sb3ItZGFyazogZGFya2VuKCRwcmltYXJ5LWNvbG9yLCAxNSUpICFkZWZhdWx0O1xcclxcblxcclxcbiRzZWNvbmRhcnktY29sb3I6IGNvbG9yKFxcXCJ0ZWFsXFxcIiwgXFxcImxpZ2h0ZW4tMVxcXCIpICFkZWZhdWx0O1xcclxcbiRzdWNjZXNzLWNvbG9yOiBjb2xvcihcXFwiZ3JlZW5cXFwiLCBcXFwiYmFzZVxcXCIpICFkZWZhdWx0O1xcclxcbiRlcnJvci1jb2xvcjogY29sb3IoXFxcInJlZFxcXCIsIFxcXCJiYXNlXFxcIikgIWRlZmF1bHQ7XFxyXFxuJGxpbmstY29sb3I6IGNvbG9yKFxcXCJsaWdodC1ibHVlXFxcIiwgXFxcImRhcmtlbi0xXFxcIikgIWRlZmF1bHQ7XFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuLy8gMi4gQmFkZ2VzXFxyXFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXHJcXG5cXHJcXG4kYmFkZ2UtYmctY29sb3I6ICRzZWNvbmRhcnktY29sb3IgIWRlZmF1bHQ7XFxyXFxuJGJhZGdlLWhlaWdodDogMjJweCAhZGVmYXVsdDtcXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG4vLyA3LiBDaGlwc1xcclxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxyXFxuXFxyXFxuJGNoaXAtYmctY29sb3I6ICNlNGU0ZTQgIWRlZmF1bHQ7XFxyXFxuJGNoaXAtYm9yZGVyLWNvbG9yOiAjOWU5ZTllICFkZWZhdWx0O1xcclxcbiRjaGlwLXNlbGVjdGVkLWNvbG9yOiAjMjZhNjlhICFkZWZhdWx0O1xcclxcbiRjaGlwLW1hcmdpbjogNXB4ICFkZWZhdWx0O1xcclxcblxcclxcblxcclxcbi8vIDE2LiBTcGlubmVycyB8IExvYWRlcnNcXHJcXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcclxcblxcclxcbiRzcGlubmVyLWRlZmF1bHQtY29sb3I6ICRzZWNvbmRhcnktY29sb3IgIWRlZmF1bHQ7XFxyXFxuXFxyXFxuLy8gMjQuIFByb2dyZXNzIEJhclxcclxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxyXFxuXFxyXFxuJHByb2dyZXNzLWJhci1jb2xvcjogJHNlY29uZGFyeS1jb2xvciAhZGVmYXVsdDtcXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG4vL2lucHV0c1xcclxcblxcclxcbiRpbnB1dC1oZWlnaHQ6IDU2cHg7XFxyXFxuXFxyXFxuLy8gNi4gQ29sbGFwc2libGVcXHJcXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcclxcblxcclxcbiRjb2xsYXBzaWJsZS1oZWlnaHQ6IDNyZW0gIWRlZmF1bHQ7XFxyXFxuJGNvbGxhcHNpYmxlLWxpbmUtaGVpZ2h0OiAkY29sbGFwc2libGUtaGVpZ2h0ICFkZWZhdWx0O1xcclxcbiRjb2xsYXBzaWJsZS1oZWFkZXItY29sb3I6ICNmZmYgIWRlZmF1bHQ7XFxyXFxuJGNvbGxhcHNpYmxlLWJvcmRlci1jb2xvcjogI2RkZCAhZGVmYXVsdDtcXHJcXG5cXHJcXG4vLyAxMC4gRm9ybXNcXHJcXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcclxcblxcclxcbi8vIFRleHQgSW5wdXRzICsgVGV4dGFyZWFcXHJcXG4kaW5wdXQtaGVpZ2h0OiAzcmVtICFkZWZhdWx0O1xcclxcbiRpbnB1dC1ib3JkZXItY29sb3I6IGNvbG9yKFxcXCJncmV5XFxcIiwgXFxcImJhc2VcXFwiKSAhZGVmYXVsdDtcXHJcXG4kaW5wdXQtYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcXHJcXG4kaW5wdXQtYmFja2dyb3VuZDogI2ZmZiAhZGVmYXVsdDtcXHJcXG4kaW5wdXQtZXJyb3ItY29sb3I6ICRlcnJvci1jb2xvciAhZGVmYXVsdDtcXHJcXG4kaW5wdXQtc3VjY2Vzcy1jb2xvcjogJHN1Y2Nlc3MtY29sb3IgIWRlZmF1bHQ7XFxyXFxuJGlucHV0LWZvY3VzLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbG9yICFkZWZhdWx0O1xcclxcbiRpbnB1dC1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XFxyXFxuJGlucHV0LW1hcmdpbi1ib3R0b206IDhweDtcXHJcXG4kaW5wdXQtbWFyZ2luOiAwIDAgJGlucHV0LW1hcmdpbi1ib3R0b20gMCAhZGVmYXVsdDtcXHJcXG4kaW5wdXQtcGFkZGluZzogMCAhZGVmYXVsdDtcXHJcXG4kbGFiZWwtZm9udC1zaXplOiAuOHJlbSAhZGVmYXVsdDtcXHJcXG4kaW5wdXQtZGlzYWJsZWQtY29sb3I6IHJnYmEoMCwwLDAsIC40MikgIWRlZmF1bHQ7XFxyXFxuJGlucHV0LWRpc2FibGVkLXNvbGlkLWNvbG9yOiAjOTQ5NDk0ICFkZWZhdWx0O1xcclxcbiRpbnB1dC1kaXNhYmxlZC1ib3JkZXI6IDFweCBkb3R0ZWQgJGlucHV0LWRpc2FibGVkLWNvbG9yICFkZWZhdWx0O1xcclxcbiRpbnB1dC1pbnZhbGlkLWJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1lcnJvci1jb2xvciAhZGVmYXVsdDtcXHJcXG4kaW5wdXQtaWNvbi1zaXplOiAycmVtO1xcclxcbiRwbGFjZWhvbGRlci10ZXh0LWNvbG9yOiBsaWdodGVuKCRpbnB1dC1ib3JkZXItY29sb3IsIDIwJSkgIWRlZmF1bHQ7XFxyXFxuXFxyXFxuLy8gUmFkaW8gQnV0dG9uc1xcclxcbiRyYWRpby1maWxsLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbG9yICFkZWZhdWx0O1xcclxcbiRyYWRpby1lbXB0eS1jb2xvcjogIzVhNWE1YSAhZGVmYXVsdDtcXHJcXG4kcmFkaW8tYm9yZGVyOiAycHggc29saWQgJHJhZGlvLWZpbGwtY29sb3IgIWRlZmF1bHQ7XFxyXFxuXFxyXFxuLy8gUmFuZ2VcXHJcXG4kcmFuZ2UtaGVpZ2h0OiAxNHB4ICFkZWZhdWx0O1xcclxcbiRyYW5nZS13aWR0aDogMTRweCAhZGVmYXVsdDtcXHJcXG4kdHJhY2staGVpZ2h0OiAzcHggIWRlZmF1bHQ7XFxyXFxuXFxyXFxuLy8gU2VsZWN0XFxyXFxuJHNlbGVjdC1ib3JkZXI6IDFweCBzb2xpZCAjZjJmMmYyICFkZWZhdWx0O1xcclxcbiRzZWxlY3QtYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkwKSAhZGVmYXVsdDtcXHJcXG4kc2VsZWN0LWZvY3VzOiAxcHggc29saWQgbGlnaHRlbigkc2Vjb25kYXJ5LWNvbG9yLCA0NyUpICFkZWZhdWx0O1xcclxcbiRzZWxlY3Qtb3B0aW9uLWhvdmVyOiByZ2JhKDAsMCwwLC4wOCkgIWRlZmF1bHQ7XFxyXFxuJHNlbGVjdC1vcHRpb24tZm9jdXM6IHJnYmEoMCwwLDAsLjA4KSAhZGVmYXVsdDtcXHJcXG4kc2VsZWN0LW9wdGlvbi1zZWxlY3RlZDogcmdiYSgwLDAsMCwuMDMpICFkZWZhdWx0O1xcclxcbiRzZWxlY3QtcGFkZGluZzogNXB4ICFkZWZhdWx0O1xcclxcbiRzZWxlY3QtcmFkaXVzOiAycHggIWRlZmF1bHQ7XFxyXFxuJHNlbGVjdC1kaXNhYmxlZC1jb2xvcjogcmdiYSgwLDAsMCwuMykgIWRlZmF1bHQ7XFxyXFxuXFxyXFxuLy8gU3dpdGNoZXNcXHJcXG4kc3dpdGNoLWJnLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbG9yICFkZWZhdWx0O1xcclxcbiRzd2l0Y2gtY2hlY2tlZC1sZXZlci1iZzogZGVzYXR1cmF0ZShsaWdodGVuKCRzd2l0Y2gtYmctY29sb3IsIDI1JSksIDI1JSkgIWRlZmF1bHQ7XFxyXFxuJHN3aXRjaC11bmNoZWNrZWQtYmc6ICNGMUYxRjEgIWRlZmF1bHQ7XFxyXFxuJHN3aXRjaC11bmNoZWNrZWQtbGV2ZXItYmc6IHJnYmEoMCwwLDAsLjM4KSAhZGVmYXVsdDtcXHJcXG4kc3dpdGNoLXJhZGl1czogMTVweCAhZGVmYXVsdDtcXHJcXG5cXHJcXG4vLyAxMS4gR2xvYmFsXFxyXFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXHJcXG5cXHJcXG4vLyBNZWRpYSBRdWVyeSBSYW5nZXNcXHJcXG4kc21hbGwtc2NyZWVuLXVwOiA2MDFweCAhZGVmYXVsdDtcXHJcXG4kbWVkaXVtLXNjcmVlbi11cDogOTkzcHggIWRlZmF1bHQ7XFxyXFxuJGxhcmdlLXNjcmVlbi11cDogMTIwMXB4ICFkZWZhdWx0O1xcclxcbiRzbWFsbC1zY3JlZW46IDYwMHB4ICFkZWZhdWx0O1xcclxcbiRtZWRpdW0tc2NyZWVuOiA5OTJweCAhZGVmYXVsdDtcXHJcXG4kbGFyZ2Utc2NyZWVuOiAxMjAwcHggIWRlZmF1bHQ7XFxyXFxuXFxyXFxuJG1lZGl1bS1hbmQtdXA6IFxcXCJvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6ICN7JHNtYWxsLXNjcmVlbi11cH0pXFxcIiAhZGVmYXVsdDtcXHJcXG4kbGFyZ2UtYW5kLXVwOiBcXFwib25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiAjeyRtZWRpdW0tc2NyZWVuLXVwfSlcXFwiICFkZWZhdWx0O1xcclxcbiRleHRyYS1sYXJnZS1hbmQtdXA6IFxcXCJvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6ICN7JGxhcmdlLXNjcmVlbi11cH0pXFxcIiAhZGVmYXVsdDtcXHJcXG4kc21hbGwtYW5kLWRvd246IFxcXCJvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6ICN7JHNtYWxsLXNjcmVlbn0pXFxcIiAhZGVmYXVsdDtcXHJcXG4kbWVkaXVtLWFuZC1kb3duOiBcXFwib25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiAjeyRtZWRpdW0tc2NyZWVufSlcXFwiICFkZWZhdWx0O1xcclxcbiRtZWRpdW0tb25seTogXFxcIm9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogI3skc21hbGwtc2NyZWVuLXVwfSkgYW5kIChtYXgtd2lkdGggOiAjeyRtZWRpdW0tc2NyZWVufSlcXFwiICFkZWZhdWx0O1xcclxcblxcclxcblxcclxcblxcclxcbi8vIDEyLiBHcmlkXFxyXFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXHJcXG5cXHJcXG4kbnVtLWNvbHM6IDEyICFkZWZhdWx0O1xcclxcbiRndXR0ZXItd2lkdGg6IDFyZW0gIWRlZmF1bHQ7XFxyXFxuJGVsZW1lbnQtdG9wLW1hcmdpbjogbWF0aC5kaXYoJGd1dHRlci13aWR0aCwgMykgIWRlZmF1bHQ7XFxyXFxuJGVsZW1lbnQtYm90dG9tLW1hcmdpbjogbWF0aC5kaXYoJGd1dHRlci13aWR0aCAqIDIsIDMpICFkZWZhdWx0O1xcclxcblxcclxcbi8vIDEzLiBOYXZpZ2F0aW9uIEJhclxcclxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxyXFxuXFxyXFxuJG5hdmJhci1oZWlnaHQ6IDY0cHggIWRlZmF1bHQ7XFxyXFxuJG5hdmJhci1saW5lLWhlaWdodDogJG5hdmJhci1oZWlnaHQgIWRlZmF1bHQ7XFxyXFxuJG5hdmJhci1oZWlnaHQtbW9iaWxlOiA1NnB4ICFkZWZhdWx0O1xcclxcbiRuYXZiYXItbGluZS1oZWlnaHQtbW9iaWxlOiAkbmF2YmFyLWhlaWdodC1tb2JpbGUgIWRlZmF1bHQ7XFxyXFxuJG5hdmJhci1mb250LXNpemU6IDFyZW0gIWRlZmF1bHQ7XFxyXFxuJG5hdmJhci1mb250LWNvbG9yOiAjZmZmICFkZWZhdWx0O1xcclxcbiRuYXZiYXItYnJhbmQtZm9udC1zaXplOiAyLjFyZW0gIWRlZmF1bHQ7XFxyXFxuXFxyXFxuXFxyXFxuLy8gMTQuIFNpZGUgTmF2aWdhdGlvblxcclxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxyXFxuJGJ1dHRvbi1yYWlzZWQtY29sb3I6ICNmZmYgIWRlZmF1bHQ7XFxyXFxuJGJ1dHRvbi1mbGF0LWNvbG9yOiAjMzQzNDM0ICFkZWZhdWx0O1xcclxcbiRidXR0b24tcmFpc2VkLWJhY2tncm91bmQ6ICMzNDM0MzQgIWRlZmF1bHQ7XFxyXFxuJHByaW1hcnktY29sb3I6IzM0MzQzNCAhZGVmYXVsdDtcXHJcXG5cXHJcXG5cXHJcXG4gXFxyXFxuJHNpZGVuYXYtd2lkdGg6IDMwMHB4ICFkZWZhdWx0O1xcclxcbiRzaWRlbmF2LWZvbnQtc2l6ZTogMTRweCAhZGVmYXVsdDtcXHJcXG4kc2lkZW5hdi1mb250LWNvbG9yOiByZ2JhKDAsMCwwLC44NykgIWRlZmF1bHQ7XFxyXFxuJHNpZGVuYXYtYmctY29sb3I6ICNmZmYgIWRlZmF1bHQ7XFxyXFxuJHNpZGVuYXYtcGFkZGluZzogMTVweCAhZGVmYXVsdDtcXHJcXG4kc2lkZW5hdi1pdGVtLWhlaWdodDogNDVweCAhZGVmYXVsdDtcXHJcXG4kc2lkZW5hdi1saW5lLWhlaWdodDogJHNpZGVuYXYtaXRlbS1oZWlnaHQgIWRlZmF1bHQ7XFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuLy8gMy4gQnV0dG9uc1xcclxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxyXFxuXFxyXFxuJHByaW1hcnktY29sb3I6IGdyZWVuICFkZWZhdWx0O1xcclxcbiRwcmltYXJ5LWNvbG9yLWxpZ2h0OiBsaWdodGVuKCRwcmltYXJ5LWNvbG9yLCAxNSUpICFkZWZhdWx0O1xcclxcbiRwcmltYXJ5LWNvbG9yLWRhcms6IGRhcmtlbigkcHJpbWFyeS1jb2xvciwgMTUlKSAhZGVmYXVsdDtcXHJcXG4kc2Vjb25kYXJ5LWNvbG9yOiByZWQgIWRlZmF1bHQ7XFxyXFxuXFxyXFxuXFxyXFxuLy8gU2hhcmVkIHN0eWxlc1xcclxcbiRidXR0b24tYm9yZGVyOiBub25lICFkZWZhdWx0O1xcclxcbiRidXR0b24tYmFja2dyb3VuZC1mb2N1czogbGlnaHRlbigkc2Vjb25kYXJ5LWNvbG9yLCA0JSkgIWRlZmF1bHQ7XFxyXFxuJGJ1dHRvbi1mb250LXNpemU6IDE0cHggIWRlZmF1bHQ7XFxyXFxuJGJ1dHRvbi1pY29uLWZvbnQtc2l6ZTogMS4zcmVtICFkZWZhdWx0O1xcclxcbiRidXR0b24taGVpZ2h0OiAzNnB4ICFkZWZhdWx0O1xcclxcbiRidXR0b24tcGFkZGluZzogMCAxNnB4ICFkZWZhdWx0O1xcclxcbiRidXR0b24tcmFkaXVzOiAycHggIWRlZmF1bHQ7XFxyXFxuXFxyXFxuLy8gRGlzYWJsZWQgc3R5bGVzXFxyXFxuJGJ1dHRvbi1kaXNhYmxlZC1iYWNrZ3JvdW5kOiAjREZERkRGICFkZWZhdWx0O1xcclxcbiRidXR0b24tZGlzYWJsZWQtY29sb3I6ICM5RjlGOUYgIWRlZmF1bHQ7XFxyXFxuXFxyXFxuLy8gUmFpc2VkIGJ1dHRvbnNcXHJcXG4kYnV0dG9uLXJhaXNlZC1iYWNrZ3JvdW5kOiAkc2Vjb25kYXJ5LWNvbG9yICFkZWZhdWx0O1xcclxcbiRidXR0b24tcmFpc2VkLWJhY2tncm91bmQtaG92ZXI6IGxpZ2h0ZW4oJGJ1dHRvbi1yYWlzZWQtYmFja2dyb3VuZCwgNSUpICFkZWZhdWx0O1xcclxcbiRidXR0b24tcmFpc2VkLWNvbG9yOiAjZmZmICFkZWZhdWx0O1xcclxcblxcclxcbi8vIExhcmdlIGJ1dHRvbnNcXHJcXG4kYnV0dG9uLWxhcmdlLWZvbnQtc2l6ZTogMTVweCAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLWxhcmdlLWljb24tZm9udC1zaXplOiAxLjZyZW0gIWRlZmF1bHQ7XFxyXFxuJGJ1dHRvbi1sYXJnZS1oZWlnaHQ6ICRidXR0b24taGVpZ2h0ICogMS41ICFkZWZhdWx0O1xcclxcbiRidXR0b24tZmxvYXRpbmctbGFyZ2Utc2l6ZTogNTZweCAhZGVmYXVsdDtcXHJcXG5cXHJcXG4vLyBTbWFsbCBidXR0b25zXFxyXFxuJGJ1dHRvbi1zbWFsbC1mb250LXNpemU6IDEzcHggIWRlZmF1bHQ7XFxyXFxuJGJ1dHRvbi1zbWFsbC1pY29uLWZvbnQtc2l6ZTogMS4ycmVtICFkZWZhdWx0O1xcclxcbiRidXR0b24tc21hbGwtaGVpZ2h0OiAkYnV0dG9uLWhlaWdodCAqIC45ICFkZWZhdWx0O1xcclxcbiRidXR0b24tZmxvYXRpbmctc21hbGwtc2l6ZTogJGJ1dHRvbi1oZWlnaHQgKiAuOSAhZGVmYXVsdDtcXHJcXG5cXHJcXG4vLyBGbGF0IGJ1dHRvbnNcXHJcXG4kYnV0dG9uLWZsYXQtY29sb3I6ICMzNDM0MzQgIWRlZmF1bHQ7XFxyXFxuJGJ1dHRvbi1mbGF0LWRpc2FibGVkLWNvbG9yOiBsaWdodGVuKCM5OTksIDEwJSkgIWRlZmF1bHQ7XFxyXFxuXFxyXFxuLy8gRmxvYXRpbmcgYnV0dG9uc1xcclxcbiRidXR0b24tZmxvYXRpbmctYmFja2dyb3VuZDogJHNlY29uZGFyeS1jb2xvciAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLWZsb2F0aW5nLWJhY2tncm91bmQtaG92ZXI6ICRidXR0b24tZmxvYXRpbmctYmFja2dyb3VuZCAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLWZsb2F0aW5nLWNvbG9yOiAjZmZmICFkZWZhdWx0O1xcclxcbiRidXR0b24tZmxvYXRpbmctc2l6ZTogNDBweCAhZGVmYXVsdDtcXHJcXG4kYnV0dG9uLWZsb2F0aW5nLXJhZGl1czogNTAlICFkZWZhdWx0O1xcclxcblxcclxcblxcclxcblxcclxcblxcclxcbi8vIDQuIENhcmRzXFxyXFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXHJcXG5cXHJcXG4kY2FyZC1wYWRkaW5nOiAyNHB4ICFkZWZhdWx0O1xcclxcbiRjYXJkLWJnLWNvbG9yOiAjZmZmICFkZWZhdWx0O1xcclxcbiRjYXJkLWxpbmstY29sb3I6IGNvbG9yKFxcXCJvcmFuZ2VcXFwiLCBcXFwiYWNjZW50LTJcXFwiKSAhZGVmYXVsdDtcXHJcXG4kY2FyZC1saW5rLWNvbG9yLWxpZ2h0OiBsaWdodGVuKCRjYXJkLWxpbmstY29sb3IsIDIwJSkgIWRlZmF1bHQ7XFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuLy8gMjMuIENvbGxlY3Rpb25zXFxyXFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXHJcXG5cXHJcXG4kY29sbGVjdGlvbi1ib3JkZXItY29sb3I6ICNlMGUwZTAgIWRlZmF1bHQ7XFxyXFxuJGNvbGxlY3Rpb24tYmctY29sb3I6ICNmZmYgIWRlZmF1bHQ7XFxyXFxuJGNvbGxlY3Rpb24tYWN0aXZlLWJnLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbG9yICFkZWZhdWx0O1xcclxcbiRjb2xsZWN0aW9uLWFjdGl2ZS1jb2xvcjogbGlnaHRlbigkc2Vjb25kYXJ5LWNvbG9yLCA1NSUpICFkZWZhdWx0O1xcclxcbiRjb2xsZWN0aW9uLWhvdmVyLWJnLWNvbG9yOiAjZGRkICFkZWZhdWx0O1xcclxcbiRjb2xsZWN0aW9uLWxpbmstY29sb3I6ICRzZWNvbmRhcnktY29sb3IgIWRlZmF1bHQ7XFxyXFxuJGNvbGxlY3Rpb24tbGluZS1oZWlnaHQ6IDEuNXJlbSAhZGVmYXVsdDtcXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG4vLyA5LiBEcm9wZG93blxcclxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxyXFxuXFxyXFxuJGRyb3Bkb3duLWJnLWNvbG9yOiAjZmZmICFkZWZhdWx0O1xcclxcbiRkcm9wZG93bi1ob3Zlci1iZy1jb2xvcjogI2VlZSAhZGVmYXVsdDtcXHJcXG4kZHJvcGRvd24tY29sb3I6ICRzZWNvbmRhcnktY29sb3IgIWRlZmF1bHQ7XFxyXFxuJGRyb3Bkb3duLWl0ZW0taGVpZ2h0OiA1MHB4ICFkZWZhdWx0O1xcclxcblxcclxcblxcclxcbiRvZmYtYmxhY2s6IHJnYmEoMCwgMCwgMCwgMC44NykgIWRlZmF1bHQ7XCIsXCIvLyBCYWRnZXNcXHJcXG5zcGFuLmJhZGdlIHtcXHJcXG4gIG1pbi13aWR0aDogM3JlbTtcXHJcXG4gIHBhZGRpbmc6IDAgNnB4O1xcclxcbiAgbWFyZ2luLWxlZnQ6IDE0cHg7XFxyXFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxuICBmb250LXNpemU6IDFyZW07XFxyXFxuICBsaW5lLWhlaWdodDogJGJhZGdlLWhlaWdodDtcXHJcXG4gIGhlaWdodDogJGJhZGdlLWhlaWdodDtcXHJcXG4gIGNvbG9yOiBjb2xvcignZ3JleScsICdkYXJrZW4tMScpO1xcclxcbiAgZmxvYXQ6IHJpZ2h0O1xcclxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXHJcXG5cXHJcXG4gICYubmV3IHtcXHJcXG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcXHJcXG4gICAgZm9udC1zaXplOiAwLjhyZW07XFxyXFxuICAgIGNvbG9yOiAjZmZmO1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFkZ2UtYmctY29sb3I7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYubmV3OmFmdGVyIHtcXHJcXG4gICAgY29udGVudDogXFxcIiBuZXdcXFwiO1xcclxcbiAgfVxcclxcblxcclxcbiAgJltkYXRhLWJhZGdlLWNhcHRpb25dOjphZnRlciB7XFxyXFxuICAgIGNvbnRlbnQ6IFxcXCIgXFxcIiBhdHRyKGRhdGEtYmFkZ2UtY2FwdGlvbik7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi8vIFNwZWNpYWwgY2FzZXNcXHJcXG5uYXYgdWwgYSBzcGFuLmJhZGdlIHtcXHJcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHJcXG4gIGZsb2F0OiBub25lO1xcclxcbiAgbWFyZ2luLWxlZnQ6IDRweDtcXHJcXG4gIGxpbmUtaGVpZ2h0OiAkYmFkZ2UtaGVpZ2h0O1xcclxcbiAgaGVpZ2h0OiAkYmFkZ2UtaGVpZ2h0O1xcclxcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYXV0bztcXHJcXG59XFxyXFxuXFxyXFxuLy8gTGluZSBoZWlnaHQgY2VudGVyaW5nXFxyXFxuLmNvbGxlY3Rpb24taXRlbSBzcGFuLmJhZGdlIHtcXHJcXG4gIG1hcmdpbi10b3A6IGNhbGMoY2FsYygkY29sbGVjdGlvbi1saW5lLWhlaWdodCAvIDIpIC0gY2FsYygkYmFkZ2UtaGVpZ2h0IC8gMikpO1xcclxcbn1cXHJcXG5cXHJcXG4uY29sbGFwc2libGUgc3Bhbi5iYWRnZSB7XFxyXFxuICBtYXJnaW4tbGVmdDogYXV0bztcXHJcXG59XFxyXFxuXFxyXFxuLnNpZGVuYXYgc3Bhbi5iYWRnZSB7XFxyXFxuICBtYXJnaW4tdG9wOiBjYWxjKGNhbGMoJHNpZGVuYXYtbGluZS1oZWlnaHQgLyAyKSAtIGNhbGMoJGJhZGdlLWhlaWdodCAvIDIpKTtcXHJcXG59XFxyXFxuXFxyXFxudGFibGUgc3Bhbi5iYWRnZSB7XFxyXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICBmbG9hdDogbm9uZTtcXHJcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcclxcbn1cXHJcXG5cIixcIi5jaGlwIHtcXHJcXG4gICY6Zm9jdXMge1xcclxcbiAgICBvdXRsaW5lOiBub25lO1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2hpcC1zZWxlY3RlZC1jb2xvcjtcXHJcXG4gICAgY29sb3I6ICNmZmY7XFxyXFxuICB9XFxyXFxuXFxyXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICBoZWlnaHQ6IDMycHg7XFxyXFxuICBmb250LXNpemU6IDEzcHg7XFxyXFxuICBmb250LXdlaWdodDogNTAwO1xcclxcbiAgY29sb3I6IHJnYmEoMCwwLDAsLjYpO1xcclxcbiAgbGluZS1oZWlnaHQ6IDMycHg7XFxyXFxuICBwYWRkaW5nOiAwIDEycHg7XFxyXFxuICBib3JkZXItcmFkaXVzOiAxNnB4O1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNoaXAtYmctY29sb3I7XFxyXFxuICBtYXJnaW4tYm90dG9tOiAkY2hpcC1tYXJnaW47XFxyXFxuICBtYXJnaW4tcmlnaHQ6ICRjaGlwLW1hcmdpbjtcXHJcXG5cXHJcXG4gID4gaW1nIHtcXHJcXG4gICAgZmxvYXQ6IGxlZnQ7XFxyXFxuICAgIG1hcmdpbjogMCA4cHggMCAtMTJweDtcXHJcXG4gICAgaGVpZ2h0OiAzMnB4O1xcclxcbiAgICB3aWR0aDogMzJweDtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xcclxcbiAgfVxcclxcblxcclxcbiAgLmNsb3NlIHtcXHJcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgICBmbG9hdDogcmlnaHQ7XFxyXFxuICAgIGZvbnQtc2l6ZTogMTZweDtcXHJcXG4gICAgbGluZS1oZWlnaHQ6IDMycHg7XFxyXFxuICAgIHBhZGRpbmctbGVmdDogOHB4O1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4uY2hpcHMge1xcclxcbiAgYm9yZGVyOiBub25lO1xcclxcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjaGlwLWJvcmRlci1jb2xvcjtcXHJcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxyXFxuICBtYXJnaW46ICRpbnB1dC1tYXJnaW47XFxyXFxuICBtaW4taGVpZ2h0OiA0NXB4O1xcclxcbiAgb3V0bGluZTogbm9uZTtcXHJcXG4gIHRyYW5zaXRpb246IGFsbCAuM3M7XFxyXFxuXFxyXFxuICAmLmZvY3VzIHtcXHJcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjaGlwLXNlbGVjdGVkLWNvbG9yO1xcclxcbiAgICBib3gtc2hhZG93OiAwIDFweCAwIDAgJGNoaXAtc2VsZWN0ZWQtY29sb3I7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmOmhvdmVyIHtcXHJcXG4gICAgY3Vyc29yOiB0ZXh0O1xcclxcbiAgfVxcclxcblxcclxcbiAgLmlucHV0IHtcXHJcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXHJcXG4gICAgYm9yZGVyOiAwO1xcclxcbiAgICBjb2xvcjogcmdiYSgwLDAsMCwuNik7XFxyXFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHJcXG4gICAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xcclxcbiAgICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XFxyXFxuICAgIGxpbmUtaGVpZ2h0OiAzMnB4O1xcclxcbiAgICBvdXRsaW5lOiAwO1xcclxcbiAgICBtYXJnaW46IDA7XFxyXFxuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXHJcXG4gICAgd2lkdGg6IDEyMHB4ICFpbXBvcnRhbnQ7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAuaW5wdXQ6Zm9jdXMge1xcclxcbiAgICBib3JkZXI6IDAgIWltcG9ydGFudDtcXHJcXG4gICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xcclxcbiAgfVxcclxcblxcclxcbiAgLy8gQXV0b2NvbXBsZXRlXFxyXFxuICAuYXV0b2NvbXBsZXRlLWNvbnRlbnQge1xcclxcbiAgICBtYXJnaW4tdG9wOiAwO1xcclxcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBGb3JtIHByZWZpeFxcclxcbi5wcmVmaXggfiAuY2hpcHMge1xcclxcbiAgbWFyZ2luLWxlZnQ6IDNyZW07XFxyXFxuICB3aWR0aDogOTIlO1xcclxcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDNyZW0pO1xcclxcbn1cXHJcXG4uY2hpcHM6ZW1wdHkgfiBsYWJlbCAge1xcclxcbiAgZm9udC1zaXplOiAwLjhyZW07XFxyXFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0MCUpO1xcclxcbn1cXHJcXG5cIixcIi5jb2xsYXBzaWJsZSB7XFxyXFxuICBib3JkZXItdG9wOiAxcHggc29saWQgJGNvbGxhcHNpYmxlLWJvcmRlci1jb2xvcjtcXHJcXG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRjb2xsYXBzaWJsZS1ib3JkZXItY29sb3I7XFxyXFxuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRjb2xsYXBzaWJsZS1ib3JkZXItY29sb3I7XFxyXFxuICBtYXJnaW46ICRlbGVtZW50LXRvcC1tYXJnaW4gMCAkZWxlbWVudC1ib3R0b20tbWFyZ2luIDA7XFxyXFxuICBAZXh0ZW5kIC5zaGFkb3ctMTtcXHJcXG59XFxyXFxuXFxyXFxuLmNvbGxhcHNpYmxlLWhlYWRlciB7XFxyXFxuICAmOmZvY3VzIHtcXHJcXG4gICAgb3V0bGluZTogMFxcclxcbiAgfVxcclxcblxcclxcbiAgZGlzcGxheTogZmxleDtcXHJcXG4gIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuICBsaW5lLWhlaWdodDogMS41O1xcclxcbiAgcGFkZGluZzogMXJlbTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICRjb2xsYXBzaWJsZS1oZWFkZXItY29sb3I7XFxyXFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbGxhcHNpYmxlLWJvcmRlci1jb2xvcjtcXHJcXG5cXHJcXG4gIGkge1xcclxcbiAgICB3aWR0aDogMnJlbTtcXHJcXG4gICAgZm9udC1zaXplOiAxLjZyZW07XFxyXFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHJcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XFxyXFxuICB9XFxyXFxufVxcclxcbi5rZXlib2FyZC1mb2N1c2VkIC5jb2xsYXBzaWJsZS1oZWFkZXI6Zm9jdXMge1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcXHJcXG59XFxyXFxuXFxyXFxuLmNvbGxhcHNpYmxlLWJvZHkge1xcclxcbiAgZGlzcGxheTogbm9uZTtcXHJcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY29sbGFwc2libGUtYm9yZGVyLWNvbG9yO1xcclxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXHJcXG4gIHBhZGRpbmc6IDJyZW07XFxyXFxufVxcclxcblxcclxcbi8vIFNpZGVuYXYgY29sbGFwc2libGUgc3R5bGluZ1xcclxcbi5zaWRlbmF2LFxcclxcbi5zaWRlbmF2LmZpeGVkIHtcXHJcXG5cXHJcXG4gIC5jb2xsYXBzaWJsZSB7XFxyXFxuICAgIGJvcmRlcjogbm9uZTtcXHJcXG4gICAgYm94LXNoYWRvdzogbm9uZTtcXHJcXG5cXHJcXG4gICAgbGkgeyBwYWRkaW5nOiAwOyB9XFxyXFxuICB9XFxyXFxuXFxyXFxuICAuY29sbGFwc2libGUtaGVhZGVyIHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuICAgIGJvcmRlcjogbm9uZTtcXHJcXG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxyXFxuICAgIGhlaWdodDogaW5oZXJpdDtcXHJcXG4gICAgcGFkZGluZzogMCAkc2lkZW5hdi1wYWRkaW5nO1xcclxcblxcclxcbiAgICAmOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwuMDUpOyB9XFxyXFxuICAgIGkgeyBsaW5lLWhlaWdodDogaW5oZXJpdDsgfVxcclxcbiAgfVxcclxcblxcclxcbiAgLmNvbGxhcHNpYmxlLWJvZHkge1xcclxcbiAgICBib3JkZXI6IDA7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xsYXBzaWJsZS1oZWFkZXItY29sb3I7XFxyXFxuXFxyXFxuICAgIGxpIGEge1xcclxcbiAgICAgIHBhZGRpbmc6IDAgKDcuNXB4ICsgJHNpZGVuYXYtcGFkZGluZylcXHJcXG4gICAgICAgICAgICAgICAwICgxNXB4ICsgJHNpZGVuYXYtcGFkZGluZyk7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG59XFxyXFxuXFxyXFxuLy8gUG9wb3V0IENvbGxhcHNpYmxlXFxyXFxuXFxyXFxuLmNvbGxhcHNpYmxlLnBvcG91dCB7XFxyXFxuICBib3JkZXI6IG5vbmU7XFxyXFxuICBib3gtc2hhZG93OiBub25lO1xcclxcbiAgPiBsaSB7XFxyXFxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xNiksIDAgMnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcclxcbiAgICAvLyB0cmFuc2Zvcm06IHNjYWxlWCguOTIpO1xcclxcbiAgICBtYXJnaW46IDAgMjRweDtcXHJcXG4gICAgdHJhbnNpdGlvbjogbWFyZ2luIC4zNXMgY3ViaWMtYmV6aWVyKDAuMjUwLCAwLjQ2MCwgMC40NTAsIDAuOTQwKTtcXHJcXG4gIH1cXHJcXG4gID4gbGkuYWN0aXZlIHtcXHJcXG4gICAgYm94LXNoYWRvdzogMCA1cHggMTFweCAwIHJnYmEoMCwgMCwgMCwgMC4xOCksIDAgNHB4IDE1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xcclxcbiAgICBtYXJnaW46IDE2cHggMDtcXHJcXG4gICAgLy8gdHJhbnNmb3JtOiBzY2FsZVgoMSk7XFxyXFxuICB9XFxyXFxufVxcclxcblwiLFwiLy8gMjMuIENvbGxlY3Rpb25zIC0gdmFyaWFibGVzXFxyXFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXHJcXG5cXHJcXG4kY29sbGVjdGlvbi1ib3JkZXItY29sb3I6ICNlMGUwZTAgIWRlZmF1bHQ7XFxyXFxuJGNvbGxlY3Rpb24tYmctY29sb3I6ICNmZmYgIWRlZmF1bHQ7XFxyXFxuJGNvbGxlY3Rpb24tYWN0aXZlLWJnLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbG9yICFkZWZhdWx0O1xcclxcbiRjb2xsZWN0aW9uLWFjdGl2ZS1jb2xvcjogbGlnaHRlbigkc2Vjb25kYXJ5LWNvbG9yLCA1NSUpICFkZWZhdWx0O1xcclxcbiRjb2xsZWN0aW9uLWhvdmVyLWJnLWNvbG9yOiAjZGRkICFkZWZhdWx0O1xcclxcbiRjb2xsZWN0aW9uLWxpbmstY29sb3I6ICRzZWNvbmRhcnktY29sb3IgIWRlZmF1bHQ7XFxyXFxuJGNvbGxlY3Rpb24tbGluZS1oZWlnaHQ6IDEuNXJlbSAhZGVmYXVsdDtcXHJcXG4vLyAyMy4gQ29sbGVjdGlvbnNcXHJcXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcclxcblxcclxcbi5jb2xsZWN0aW9uIHtcXHJcXG4gICAgbWFyZ2luOiAkZWxlbWVudC10b3AtbWFyZ2luIDAgJGVsZW1lbnQtYm90dG9tLW1hcmdpbiAwO1xcclxcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkY29sbGVjdGlvbi1ib3JkZXItY29sb3I7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXHJcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXHJcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgXFxyXFxuICAgIC5jb2xsZWN0aW9uLWl0ZW0ge1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xsZWN0aW9uLWJnLWNvbG9yO1xcclxcbiAgICAgIGxpbmUtaGVpZ2h0OiAkY29sbGVjdGlvbi1saW5lLWhlaWdodDtcXHJcXG4gICAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XFxyXFxuICAgICAgbWFyZ2luOiAwO1xcclxcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY29sbGVjdGlvbi1ib3JkZXItY29sb3I7XFxyXFxuICBcXHJcXG4gICAgICAvLyBBdmF0YXIgQ29sbGVjdGlvblxcclxcbiAgICAgICYuYXZhdGFyIHtcXHJcXG4gICAgICAgIG1pbi1oZWlnaHQ6IDg0cHg7XFxyXFxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDcycHg7XFxyXFxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICBcXHJcXG4gICAgICAgIC8vIERvbid0IHN0eWxlIGNpcmNsZXMgaW5zaWRlIHByZWxvYWRlciBjbGFzc2VzLlxcclxcbiAgICAgICAgJjpub3QoLmNpcmNsZS1jbGlwcGVyKSA+IC5jaXJjbGUsXFxyXFxuICAgICAgICA6bm90KC5jaXJjbGUtY2xpcHBlcikgPiAuY2lyY2xlIHtcXHJcXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICAgICAgICB3aWR0aDogNDJweDtcXHJcXG4gICAgICAgICAgaGVpZ2h0OiA0MnB4O1xcclxcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xcclxcbiAgICAgICAgICBsZWZ0OiAxNXB4O1xcclxcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgICBpLmNpcmNsZSB7XFxyXFxuICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcXHJcXG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDQycHg7XFxyXFxuICAgICAgICAgIGNvbG9yOiAjZmZmO1xcclxcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xcclxcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxuICAgICAgICB9XFxyXFxuICBcXHJcXG4gIFxcclxcbiAgICAgICAgLnRpdGxlIHtcXHJcXG4gICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xcclxcbiAgICAgICAgfVxcclxcbiAgXFxyXFxuICAgICAgICBwIHtcXHJcXG4gICAgICAgICAgbWFyZ2luOiAwO1xcclxcbiAgICAgICAgfVxcclxcbiAgXFxyXFxuICAgICAgICAuc2Vjb25kYXJ5LWNvbnRlbnQge1xcclxcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgICAgICAgIHRvcDogMTZweDtcXHJcXG4gICAgICAgICAgcmlnaHQ6IDE2cHg7XFxyXFxuICAgICAgICB9XFxyXFxuICBcXHJcXG4gICAgICB9XFxyXFxuICBcXHJcXG4gIFxcclxcbiAgICAgICY6bGFzdC1jaGlsZCB7XFxyXFxuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xcclxcbiAgICAgIH1cXHJcXG4gIFxcclxcbiAgICAgICYuYWN0aXZlIHtcXHJcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xsZWN0aW9uLWFjdGl2ZS1iZy1jb2xvcjtcXHJcXG4gICAgICAgIGNvbG9yOiAkY29sbGVjdGlvbi1hY3RpdmUtY29sb3I7XFxyXFxuICBcXHJcXG4gICAgICAgIC5zZWNvbmRhcnktY29udGVudCB7XFxyXFxuICAgICAgICAgIGNvbG9yOiAjZmZmO1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcbiAgICBhLmNvbGxlY3Rpb24taXRlbXtcXHJcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gICAgICB0cmFuc2l0aW9uOiAuMjVzO1xcclxcbiAgICAgIGNvbG9yOiAkY29sbGVjdGlvbi1saW5rLWNvbG9yO1xcclxcbiAgICAgICY6bm90KC5hY3RpdmUpIHtcXHJcXG4gICAgICAgICY6aG92ZXIge1xcclxcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sbGVjdGlvbi1ob3Zlci1iZy1jb2xvcjtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG4gIFxcclxcbiAgICAmLndpdGgtaGVhZGVyIHtcXHJcXG4gICAgICAuY29sbGVjdGlvbi1oZWFkZXIge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbGxlY3Rpb24tYmctY29sb3I7XFxyXFxuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbGxlY3Rpb24tYm9yZGVyLWNvbG9yO1xcclxcbiAgICAgICAgcGFkZGluZzogMTBweCAyMHB4O1xcclxcbiAgICAgIH1cXHJcXG4gICAgICAuY29sbGVjdGlvbi1pdGVtIHtcXHJcXG4gICAgICAgIHBhZGRpbmctbGVmdDogMzBweDtcXHJcXG4gICAgICB9XFxyXFxuICAgICAgLmNvbGxlY3Rpb24taXRlbS5hdmF0YXIge1xcclxcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA3MnB4O1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcbiAgICAuc2Vjb25kYXJ5LWNvbnRlbnQge1xcclxcbiAgICAgIGZsb2F0OiByaWdodDtcXHJcXG4gICAgICBjb2xvcjogJHNlY29uZGFyeS1jb2xvcjtcXHJcXG4gICAgfVxcclxcbiAgfVwiLFwiLy8gUmVtb3ZlIEZvY3VzIEJveGVzXFxyXFxuc2VsZWN0OmZvY3VzIHtcXHJcXG4gIG91dGxpbmU6ICRzZWxlY3QtZm9jdXM7XFxyXFxufVxcclxcblxcclxcbmJ1dHRvbjpmb2N1cyB7XFxyXFxuICBvdXRsaW5lOiBub25lO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLWZvY3VzO1xcclxcbn1cXHJcXG5cXHJcXG5sYWJlbCB7XFxyXFxuICBmb250LXNpemU6ICRsYWJlbC1mb250LXNpemU7XFxyXFxuICBjb2xvcjogJGlucHV0LWJvcmRlci1jb2xvcjtcXHJcXG59XFxyXFxuXFxyXFxuQGltcG9ydCAnaW5wdXQtZmllbGRzJztcXHJcXG5AaW1wb3J0ICdyYWRpby1idXR0b25zJztcXHJcXG5AaW1wb3J0ICdjaGVja2JveGVzJztcXHJcXG5AaW1wb3J0ICdzd2l0Y2hlcyc7XFxyXFxuQGltcG9ydCAnc2VsZWN0JztcXHJcXG5AaW1wb3J0ICdmaWxlLWlucHV0JztcXHJcXG5AaW1wb3J0ICdyYW5nZSc7XFxyXFxuXCIsXCIvKiBUZXh0IElucHV0cyArIFRleHRhcmVhXFxyXFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cXHJcXG5cXHJcXG4vKiBTdHlsZSBQbGFjZWhvbGRlcnMgKi9cXHJcXG5AdXNlIFxcXCJzYXNzOm1hdGhcXFwiO1xcclxcbjo6cGxhY2Vob2xkZXIge1xcclxcbiAgY29sb3I6ICRwbGFjZWhvbGRlci10ZXh0LWNvbG9yO1xcclxcbn1cXHJcXG5cXHJcXG4vKiBUZXh0IGlucHV0cyAqL1xcclxcblxcclxcbmlucHV0Om5vdChbdHlwZV0pLFxcclxcbmlucHV0W3R5cGU9dGV4dF06bm90KC5icm93c2VyLWRlZmF1bHQpLFxcclxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcXHJcXG5pbnB1dFt0eXBlPWVtYWlsXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxyXFxuaW5wdXRbdHlwZT11cmxdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcXHJcXG5pbnB1dFt0eXBlPXRpbWVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcXHJcXG5pbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcXHJcXG5pbnB1dFt0eXBlPWRhdGV0aW1lXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxyXFxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF06bm90KC5icm93c2VyLWRlZmF1bHQpLFxcclxcbmlucHV0W3R5cGU9dGVsXTpub3QoLmJyb3dzZXItZGVmYXVsdCksXFxyXFxuaW5wdXRbdHlwZT1udW1iZXJdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSxcXHJcXG5pbnB1dFt0eXBlPXNlYXJjaF06bm90KC5icm93c2VyLWRlZmF1bHQpLFxcclxcbnRleHRhcmVhLnRleHRhcmVhIHtcXHJcXG5cXHJcXG4gIC8vIEdlbmVyYWwgU3R5bGVzXFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gIGJvcmRlcjogbm9uZTtcXHJcXG4gIGJvcmRlci1ib3R0b206ICRpbnB1dC1ib3JkZXI7XFxyXFxuICBib3JkZXItcmFkaXVzOiAwO1xcclxcbiAgb3V0bGluZTogbm9uZTtcXHJcXG4gIGhlaWdodDogJGlucHV0LWhlaWdodDtcXHJcXG4gIHdpZHRoOiAxMDAlO1xcclxcbiAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xcclxcbiAgbWFyZ2luOiAkaW5wdXQtbWFyZ2luO1xcclxcbiAgcGFkZGluZzogJGlucHV0LXBhZGRpbmc7XFxyXFxuICBib3gtc2hhZG93OiBub25lO1xcclxcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XFxyXFxuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IC4zcywgYm9yZGVyIC4zcztcXHJcXG5cXHJcXG4gIC8vIERpc2FibGVkIGlucHV0IHN0eWxlXFxyXFxuICAmOmRpc2FibGVkLFxcclxcbiAgJltyZWFkb25seT1cXFwicmVhZG9ubHlcXFwiXSB7XFxyXFxuICAgIGNvbG9yOiAkaW5wdXQtZGlzYWJsZWQtY29sb3I7XFxyXFxuICAgIGJvcmRlci1ib3R0b206ICRpbnB1dC1kaXNhYmxlZC1ib3JkZXI7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBEaXNhYmxlZCBsYWJlbCBzdHlsZVxcclxcbiAgJjpkaXNhYmxlZCtsYWJlbCxcXHJcXG4gICZbcmVhZG9ubHk9XFxcInJlYWRvbmx5XFxcIl0rbGFiZWwge1xcclxcbiAgICBjb2xvcjogJGlucHV0LWRpc2FibGVkLWNvbG9yO1xcclxcbiAgfVxcclxcblxcclxcbiAgLy8gRm9jdXNlZCBpbnB1dCBzdHlsZVxcclxcbiAgJjpmb2N1czpub3QoW3JlYWRvbmx5XSkge1xcclxcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGlucHV0LWZvY3VzLWNvbG9yO1xcclxcbiAgICBib3gtc2hhZG93OiAwIDFweCAwIDAgJGlucHV0LWZvY3VzLWNvbG9yO1xcclxcbiAgfVxcclxcblxcclxcbiAgLy8gRm9jdXNlZCBsYWJlbCBzdHlsZVxcclxcbiAgJjpmb2N1czpub3QoW3JlYWRvbmx5XSkrbGFiZWwge1xcclxcbiAgICBjb2xvcjogJGlucHV0LWZvY3VzLWNvbG9yO1xcclxcbiAgfVxcclxcblxcclxcbiAgLy8gSGlkZSBoZWxwZXIgdGV4dCBvbiBkYXRhIG1lc3NhZ2VcXHJcXG4gICYudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXHJcXG4gICY6Zm9jdXMudmFsaWQgfiAuaGVscGVyLXRleHRbZGF0YS1zdWNjZXNzXSxcXHJcXG4gICYuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSxcXHJcXG4gICY6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dFtkYXRhLWVycm9yXSB7XFxyXFxuICAgIEBleHRlbmQgJWhpZGRlbi10ZXh0O1xcclxcbiAgfVxcclxcblxcclxcbiAgLy8gVmFsaWQgSW5wdXQgU3R5bGVcXHJcXG4gICYudmFsaWQsXFxyXFxuICAmOmZvY3VzLnZhbGlkIHtcXHJcXG4gICAgQGV4dGVuZCAldmFsaWQtaW5wdXQtc3R5bGU7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBDdXN0b20gU3VjY2VzcyBNZXNzYWdlXFxyXFxuICAmLnZhbGlkIH4gLmhlbHBlci10ZXh0OmFmdGVyLFxcclxcbiAgJjpmb2N1cy52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlciB7XFxyXFxuICAgIEBleHRlbmQgJWN1c3RvbS1zdWNjZXNzLW1lc3NhZ2U7XFxyXFxuICB9XFxyXFxuICAmOmZvY3VzLnZhbGlkIH4gbGFiZWwge1xcclxcbiAgICBjb2xvcjogJGlucHV0LXN1Y2Nlc3MtY29sb3I7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBJbnZhbGlkIElucHV0IFN0eWxlXFxyXFxuICAmLmludmFsaWQsXFxyXFxuICAmOmZvY3VzLmludmFsaWQge1xcclxcbiAgICBAZXh0ZW5kICVpbnZhbGlkLWlucHV0LXN0eWxlO1xcclxcbiAgfVxcclxcblxcclxcbiAgLy8gQ3VzdG9tIEVycm9yIG1lc3NhZ2VcXHJcXG4gICYuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlcixcXHJcXG4gICY6Zm9jdXMuaW52YWxpZCB+IC5oZWxwZXItdGV4dDphZnRlciB7XFxyXFxuICAgIEBleHRlbmQgJWN1c3RvbS1lcnJvci1tZXNzYWdlO1xcclxcbiAgfVxcclxcbiAgJjpmb2N1cy5pbnZhbGlkIH4gbGFiZWwge1xcclxcbiAgICBjb2xvcjogJGlucHV0LWVycm9yLWNvbG9yO1xcclxcbiAgfVxcclxcblxcclxcbiAgLy8gRnVsbCB3aWR0aCBsYWJlbCB3aGVuIHVzaW5nIHZhbGlkYXRlIGZvciBlcnJvciBtZXNzYWdlc1xcclxcbiAgJi52YWxpZGF0ZSArIGxhYmVsIHtcXHJcXG4gICAgd2lkdGg6IDEwMCU7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBGb3JtIE1lc3NhZ2UgU2hhcmVkIFN0eWxlc1xcclxcbiAgJiArIGxhYmVsOmFmdGVyIHtcXHJcXG4gICAgQGV4dGVuZCAlaW5wdXQtYWZ0ZXItc3R5bGU7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcblxcclxcbi8qIFZhbGlkYXRpb24gU2FzcyBQbGFjZWhvbGRlcnMgKi9cXHJcXG4ldmFsaWQtaW5wdXQtc3R5bGUge1xcclxcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRpbnB1dC1zdWNjZXNzLWNvbG9yO1xcclxcbiAgYm94LXNoYWRvdzogMCAxcHggMCAwICRpbnB1dC1zdWNjZXNzLWNvbG9yO1xcclxcbn1cXHJcXG4laW52YWxpZC1pbnB1dC1zdHlsZSB7XFxyXFxuICBib3JkZXItYm90dG9tOiAkaW5wdXQtaW52YWxpZC1ib3JkZXI7XFxyXFxuICBib3gtc2hhZG93OiAwIDFweCAwIDAgJGlucHV0LWVycm9yLWNvbG9yO1xcclxcbn1cXHJcXG4laGlkZGVuLXRleHQge1xcclxcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxyXFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXHJcXG59XFxyXFxuJWN1c3RvbS1zdWNjZXNzLW1lc3NhZ2Uge1xcclxcbiAgY29udGVudDogYXR0cihkYXRhLXN1Y2Nlc3MpO1xcclxcbiAgY29sb3I6ICRpbnB1dC1zdWNjZXNzLWNvbG9yO1xcclxcbn1cXHJcXG4lY3VzdG9tLWVycm9yLW1lc3NhZ2Uge1xcclxcbiAgY29udGVudDogYXR0cihkYXRhLWVycm9yKTtcXHJcXG4gIGNvbG9yOiAkaW5wdXQtZXJyb3ItY29sb3I7XFxyXFxufVxcclxcbiVpbnB1dC1hZnRlci1zdHlsZSB7XFxyXFxuICBkaXNwbGF5OiBibG9jaztcXHJcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgdG9wOiAxMDAlO1xcclxcbiAgbGVmdDogMDtcXHJcXG4gIG9wYWNpdHk6IDA7XFxyXFxuICB0cmFuc2l0aW9uOiAuMnMgb3BhY2l0eSBlYXNlLW91dCwgLjJzIGNvbG9yIGVhc2Utb3V0O1xcclxcbn1cXHJcXG5cXHJcXG5cXHJcXG4vLyBTdHlsaW5nIGZvciBpbnB1dCBmaWVsZCB3cmFwcGVyXFxyXFxuLmlucHV0LWZpZWxkIHtcXHJcXG4gIC8vIElubGluZSBzdHlsZXNcXHJcXG4gICYuaW5saW5lIHtcXHJcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcclxcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xcclxcblxcclxcbiAgICBpbnB1dCxcXHJcXG4gICAgLnNlbGVjdC1kcm9wZG93biB7XFxyXFxuICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgLy8gR3V0dGVyIHNwYWNpbmdcXHJcXG4gICYuY29sIHtcXHJcXG4gICAgbGFiZWwge1xcclxcbiAgICAgIGxlZnQ6IG1hdGguZGl2KCRndXR0ZXItd2lkdGgsIDIpO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC5wcmVmaXggfiBsYWJlbCxcXHJcXG4gICAgLnByZWZpeCB+IC52YWxpZGF0ZSB+IGxhYmVsIHtcXHJcXG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gM3JlbSAtICN7JGd1dHRlci13aWR0aH0pO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuXFxyXFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICBtYXJnaW4tdG9wOiAxcmVtO1xcclxcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcXHJcXG5cXHJcXG4gICYgPiBsYWJlbCB7XFxyXFxuICAgIGNvbG9yOiAkaW5wdXQtYm9yZGVyLWNvbG9yO1xcclxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIHRvcDogMDtcXHJcXG4gICAgbGVmdDogMDtcXHJcXG4gICAgZm9udC1zaXplOiAxcmVtO1xcclxcbiAgICBjdXJzb3I6IHRleHQ7XFxyXFxuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuMnMgZWFzZS1vdXQsIGNvbG9yIC4ycyBlYXNlLW91dDtcXHJcXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCUgMTAwJTtcXHJcXG4gICAgdGV4dC1hbGlnbjogaW5pdGlhbDtcXHJcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEycHgpO1xcclxcblxcclxcbiAgICAmOm5vdCgubGFiZWwtaWNvbikuYWN0aXZlIHtcXHJcXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0cHgpIHNjYWxlKC44KTtcXHJcXG4gICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIEF1dG9maWxsICsgZGF0ZSArIHRpbWUgaW5wdXRzXFxyXFxuICAmID4gaW5wdXRbdHlwZV06LXdlYmtpdC1hdXRvZmlsbDpub3QoLmJyb3dzZXItZGVmYXVsdCk6bm90KFt0eXBlPVxcXCJzZWFyY2hcXFwiXSkgKyBsYWJlbCxcXHJcXG4gICYgPiBpbnB1dFt0eXBlPWRhdGVdOm5vdCguYnJvd3Nlci1kZWZhdWx0KSArIGxhYmVsLFxcclxcbiAgJiA+IGlucHV0W3R5cGU9dGltZV06bm90KC5icm93c2VyLWRlZmF1bHQpICsgbGFiZWwge1xcclxcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0cHgpIHNjYWxlKC44KTtcXHJcXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xcclxcbiAgfVxcclxcblxcclxcbiAgLmhlbHBlci10ZXh0IHtcXHJcXG4gICAgJjo6YWZ0ZXIge1xcclxcbiAgICAgIG9wYWNpdHk6IDE7XFxyXFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICAgIHRvcDogMDtcXHJcXG4gICAgICBsZWZ0OiAwO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gICAgbWluLWhlaWdodDogMThweDtcXHJcXG4gICAgZGlzcGxheTogYmxvY2s7XFxyXFxuICAgIGZvbnQtc2l6ZTogMTJweDtcXHJcXG4gICAgY29sb3I6IHJnYmEoMCwwLDAsLjU0KTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIFByZWZpeCBJY29uc1xcclxcbiAgLnByZWZpeCB7XFxyXFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgd2lkdGg6ICRpbnB1dC1oZWlnaHQ7XFxyXFxuICAgIGZvbnQtc2l6ZTogJGlucHV0LWljb24tc2l6ZTtcXHJcXG4gICAgdHJhbnNpdGlvbjogY29sb3IgLjJzO1xcclxcbiAgIC8vIHRvcDogKCRpbnB1dC1oZWlnaHQgLSAkaW5wdXQtaWNvbi1zaXplKSAvIDI7XFxyXFxuXFxyXFxuICAgICYuYWN0aXZlIHsgY29sb3I6ICRpbnB1dC1mb2N1cy1jb2xvcjsgfVxcclxcbiAgfVxcclxcblxcclxcbiAgLnByZWZpeCB+IGlucHV0LFxcclxcbiAgLnByZWZpeCB+IHRleHRhcmVhLFxcclxcbiAgLnByZWZpeCB+IGxhYmVsLFxcclxcbiAgLnByZWZpeCB+IC52YWxpZGF0ZSB+IGxhYmVsLFxcclxcbiAgLnByZWZpeCB+IC5oZWxwZXItdGV4dCxcXHJcXG4gIC5wcmVmaXggfiAuYXV0b2NvbXBsZXRlLWNvbnRlbnQge1xcclxcbiAgICBtYXJnaW4tbGVmdDogM3JlbTtcXHJcXG4gICAgd2lkdGg6IDkyJTtcXHJcXG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDNyZW0pO1xcclxcbiAgfVxcclxcblxcclxcbiAgLnByZWZpeCB+IGxhYmVsIHsgbWFyZ2luLWxlZnQ6IDNyZW07IH1cXHJcXG5cXHJcXG4gIEBtZWRpYSAjeyRtZWRpdW0tYW5kLWRvd259IHtcXHJcXG4gICAgLnByZWZpeCB+IGlucHV0IHtcXHJcXG4gICAgICB3aWR0aDogODYlO1xcclxcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAzcmVtKTtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgQG1lZGlhICN7JHNtYWxsLWFuZC1kb3dufSB7XFxyXFxuICAgIC5wcmVmaXggfiBpbnB1dCB7XFxyXFxuICAgICAgd2lkdGg6IDgwJTtcXHJcXG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gM3JlbSk7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuLyogU2VhcmNoIEZpZWxkICovXFxyXFxuXFxyXFxuLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9c2VhcmNoXSB7XFxyXFxuICBkaXNwbGF5OiBibG9jaztcXHJcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcclxcbiAgdHJhbnNpdGlvbjogLjNzIGJhY2tncm91bmQtY29sb3I7XFxyXFxuXFxyXFxuICAubmF2LXdyYXBwZXIgJiB7XFxyXFxuICAgIGhlaWdodDogaW5oZXJpdDtcXHJcXG4gICAgcGFkZGluZy1sZWZ0OiA0cmVtO1xcclxcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gNHJlbSk7XFxyXFxuICAgIGJvcmRlcjogMDtcXHJcXG4gICAgYm94LXNoYWRvdzogbm9uZTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICY6Zm9jdXM6bm90KC5icm93c2VyLWRlZmF1bHQpIHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQ7XFxyXFxuICAgIGJvcmRlcjogMDtcXHJcXG4gICAgYm94LXNoYWRvdzogbm9uZTtcXHJcXG4gICAgY29sb3I6ICM0NDQ7XFxyXFxuXFxyXFxuICAgICYgKyBsYWJlbCBpLFxcclxcbiAgICAmIH4gLm1kaS1uYXZpZ2F0aW9uLWNsb3NlLFxcclxcbiAgICAmIH4gLm1hdGVyaWFsLWljb25zIHtcXHJcXG4gICAgICBjb2xvcjogIzQ0NDtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgJiArIC5sYWJlbC1pY29uIHtcXHJcXG4gICAgdHJhbnNmb3JtOiBub25lO1xcclxcbiAgICBsZWZ0OiAxcmVtO1xcclxcbiAgfVxcclxcblxcclxcbiAgJiB+IC5tZGktbmF2aWdhdGlvbi1jbG9zZSxcXHJcXG4gICYgfiAubWF0ZXJpYWwtaWNvbnMge1xcclxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIHRvcDogMDtcXHJcXG4gICAgcmlnaHQ6IDFyZW07XFxyXFxuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgICBmb250LXNpemU6ICRpbnB1dC1pY29uLXNpemU7XFxyXFxuICAgIHRyYW5zaXRpb246IC4zcyBjb2xvcjtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuLyogVGV4dGFyZWEgKi9cXHJcXG5cXHJcXG4vLyBEZWZhdWx0IHRleHRhcmVhXFxyXFxudGV4dGFyZWEge1xcclxcbiAgd2lkdGg6IDEwMCU7XFxyXFxuICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG5cXHJcXG4gICYudGV4dGFyZWEge1xcclxcbiAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xcclxcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47IC8qIHByZXZlbnRzIHNjcm9sbCBiYXIgZmxhc2ggKi9cXHJcXG4gICAgcGFkZGluZzogLjhyZW0gMCAuOHJlbSAwOyAvKiBwcmV2ZW50cyB0ZXh0IGp1bXAgb24gRW50ZXIga2V5cHJlc3MgKi9cXHJcXG4gICAgcmVzaXplOiBub25lO1xcclxcbiAgICBtaW4taGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xcclxcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBGb3IgdGV4dGFyZWEgYXV0b3Jlc2l6ZVxcclxcblxcclxcbi5oaWRkZW5kaXYge1xcclxcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcclxcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xcclxcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xcclxcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsgLyogZnV0dXJlIHZlcnNpb24gb2YgZGVwcmVjYXRlZCAnd29yZC13cmFwJyAqL1xcclxcbiAgcGFkZGluZy10b3A6IDEuMnJlbTsgLyogcHJldmVudHMgdGV4dCBqdW1wIG9uIEVudGVyIGtleXByZXNzICovXFxyXFxuXFxyXFxuICAvLyBSZWR1Y2VzIHJlcGFpbnRzXFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICB0b3A6IDA7XFxyXFxuICB6LWluZGV4OiAtMTtcXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuLyogQXV0b2NvbXBsZXRlICovXFxyXFxuLmF1dG9jb21wbGV0ZS1jb250ZW50IHtcXHJcXG4gIGxpIHtcXHJcXG4gICAgLmhpZ2hsaWdodCB7IGNvbG9yOiAjNDQ0OyB9XFxyXFxuXFxyXFxuICAgIGltZyB7XFxyXFxuICAgICAgLy8gaGVpZ2h0OiAkZHJvcGRvd24taXRlbS1oZWlnaHQgLSAxMDtcXHJcXG4gICAgICAvLyB3aWR0aDogJGRyb3Bkb3duLWl0ZW0taGVpZ2h0IC0gMTA7XFxyXFxuICAgICAgbWFyZ2luOiA1cHggMTVweDtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vKiBDaGFyYWN0ZXIgQ291bnRlciAqL1xcclxcbi5jaGFyYWN0ZXItY291bnRlciB7XFxyXFxuICBtaW4taGVpZ2h0OiAxOHB4O1xcclxcbn1cXHJcXG5cIixcIi8qIFJhZGlvIEJ1dHRvbnNcXHJcXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xcclxcblxcclxcbi8vIFJlbW92ZSBkZWZhdWx0IFJhZGlvIEJ1dHRvbnNcXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXTpub3QoOmNoZWNrZWQpLFxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdOmNoZWNrZWQge1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgb3BhY2l0eTogMDtcXHJcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcclxcbn1cXHJcXG5cXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXTpub3QoOmNoZWNrZWQpICsgc3BhbixcXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXTpjaGVja2VkICsgc3BhbiB7XFxyXFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICBwYWRkaW5nLWxlZnQ6IDM1cHg7XFxyXFxuICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICBoZWlnaHQ6IDI1cHg7XFxyXFxuICBsaW5lLWhlaWdodDogMjVweDtcXHJcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXHJcXG4gIHRyYW5zaXRpb246IC4yOHMgZWFzZTtcXHJcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcclxcbn1cXHJcXG5cXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXSArIHNwYW46YmVmb3JlLFxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdICsgc3BhbjphZnRlciB7XFxyXFxuICBjb250ZW50OiAnJztcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIGxlZnQ6IDA7XFxyXFxuICB0b3A6IDA7XFxyXFxuICBtYXJnaW46IDRweDtcXHJcXG4gIHdpZHRoOiAxNnB4O1xcclxcbiAgaGVpZ2h0OiAxNnB4O1xcclxcbiAgei1pbmRleDogMDtcXHJcXG4gIHRyYW5zaXRpb246IC4yOHMgZWFzZTtcXHJcXG59XFxyXFxuXFxyXFxuLyogVW5jaGVja2VkIHN0eWxlcyAqL1xcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOmJlZm9yZSxcXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXTpub3QoOmNoZWNrZWQpICsgc3BhbjphZnRlcixcXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXTpjaGVja2VkICsgc3BhbjpiZWZvcmUsXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl06Y2hlY2tlZCArIHNwYW46YWZ0ZXIsXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl0ud2l0aC1nYXA6Y2hlY2tlZCArIHNwYW46YmVmb3JlLFxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdLndpdGgtZ2FwOmNoZWNrZWQgKyBzcGFuOmFmdGVyIHtcXHJcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXHJcXG59XFxyXFxuXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl06bm90KDpjaGVja2VkKSArIHNwYW46YmVmb3JlLFxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOmFmdGVyIHtcXHJcXG4gIGJvcmRlcjogMnB4IHNvbGlkICRyYWRpby1lbXB0eS1jb2xvcjtcXHJcXG59XFxyXFxuXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl06bm90KDpjaGVja2VkKSArIHNwYW46YWZ0ZXIge1xcclxcbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcXHJcXG59XFxyXFxuXFxyXFxuLyogQ2hlY2tlZCBzdHlsZXMgKi9cXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXTpjaGVja2VkICsgc3BhbjpiZWZvcmUge1xcclxcbiAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxyXFxufVxcclxcblxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdOmNoZWNrZWQgKyBzcGFuOmFmdGVyLFxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdLndpdGgtZ2FwOmNoZWNrZWQgKyBzcGFuOmJlZm9yZSxcXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXS53aXRoLWdhcDpjaGVja2VkICsgc3BhbjphZnRlciB7XFxyXFxuICBib3JkZXI6ICRyYWRpby1ib3JkZXI7XFxyXFxufVxcclxcblxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdOmNoZWNrZWQgKyBzcGFuOmFmdGVyLFxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdLndpdGgtZ2FwOmNoZWNrZWQgKyBzcGFuOmFmdGVyIHtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICRyYWRpby1maWxsLWNvbG9yO1xcclxcbn1cXHJcXG5cXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXTpjaGVja2VkICsgc3BhbjphZnRlciB7XFxyXFxuICB0cmFuc2Zvcm06IHNjYWxlKDEuMDIpO1xcclxcbn1cXHJcXG5cXHJcXG4vKiBSYWRpbyBXaXRoIGdhcCAqL1xcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdLndpdGgtZ2FwOmNoZWNrZWQgKyBzcGFuOmFmdGVyIHtcXHJcXG4gIHRyYW5zZm9ybTogc2NhbGUoLjUpO1xcclxcbn1cXHJcXG5cXHJcXG4vKiBGb2N1c2VkIHN0eWxlcyAqL1xcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdLnRhYmJlZDpmb2N1cyArIHNwYW46YmVmb3JlIHtcXHJcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgwLDAsMCwuMSk7XFxyXFxufVxcclxcblxcclxcbi8qIERpc2FibGVkIFJhZGlvIFdpdGggZ2FwICovXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl0ud2l0aC1nYXA6ZGlzYWJsZWQ6Y2hlY2tlZCArIHNwYW46YmVmb3JlIHtcXHJcXG4gIGJvcmRlcjogMnB4IHNvbGlkICRpbnB1dC1kaXNhYmxlZC1jb2xvcjtcXHJcXG59XFxyXFxuXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl0ud2l0aC1nYXA6ZGlzYWJsZWQ6Y2hlY2tlZCArIHNwYW46YWZ0ZXIge1xcclxcbiAgYm9yZGVyOiBub25lO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWRpc2FibGVkLWNvbG9yO1xcclxcbn1cXHJcXG5cXHJcXG4vKiBEaXNhYmxlZCBzdHlsZSAqL1xcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdOmRpc2FibGVkOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOmJlZm9yZSxcXHJcXG5bdHlwZT1cXFwicmFkaW9cXFwiXTpkaXNhYmxlZDpjaGVja2VkICsgc3BhbjpiZWZvcmUge1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuICBib3JkZXItY29sb3I6ICRpbnB1dC1kaXNhYmxlZC1jb2xvcjtcXHJcXG59XFxyXFxuXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl06ZGlzYWJsZWQgKyBzcGFuIHtcXHJcXG4gIGNvbG9yOiAkaW5wdXQtZGlzYWJsZWQtY29sb3I7XFxyXFxufVxcclxcblxcclxcblt0eXBlPVxcXCJyYWRpb1xcXCJdOmRpc2FibGVkOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOmJlZm9yZSB7XFxyXFxuICBib3JkZXItY29sb3I6ICRpbnB1dC1kaXNhYmxlZC1jb2xvcjtcXHJcXG59XFxyXFxuXFxyXFxuW3R5cGU9XFxcInJhZGlvXFxcIl06ZGlzYWJsZWQ6Y2hlY2tlZCArIHNwYW46YWZ0ZXIge1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWRpc2FibGVkLWNvbG9yO1xcclxcbiAgYm9yZGVyLWNvbG9yOiAkaW5wdXQtZGlzYWJsZWQtc29saWQtY29sb3I7XFxyXFxufVxcclxcblwiLFwiLyogQ2hlY2tib3hlc1xcclxcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXFxyXFxuXFxyXFxuLyogUmVtb3ZlIGRlZmF1bHQgY2hlY2tib3ggKi9cXHJcXG5bdHlwZT1cXFwiY2hlY2tib3hcXFwiXTpub3QoOmNoZWNrZWQpLFxcclxcblt0eXBlPVxcXCJjaGVja2JveFxcXCJdOmNoZWNrZWQge1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgb3BhY2l0eTogMDtcXHJcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcclxcbn1cXHJcXG5cXHJcXG4vLyBDaGVja2JveCBTdHlsZXNcXHJcXG5bdHlwZT1cXFwiY2hlY2tib3hcXFwiXSB7XFxyXFxuICAvLyBUZXh0IExhYmVsIFN0eWxlXFxyXFxuICArIHNwYW46bm90KC5sZXZlcikge1xcclxcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICAgIHBhZGRpbmctbGVmdDogMzVweDtcXHJcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAgIGhlaWdodDogMjVweDtcXHJcXG4gICAgbGluZS1oZWlnaHQ6IDI1cHg7XFxyXFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXHJcXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvKiBjaGVja2JveCBhc3BlY3QgKi9cXHJcXG4gICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUsXFxyXFxuICAmOm5vdCguZmlsbGVkLWluKSArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xcclxcbiAgICBjb250ZW50OiAnJztcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICB0b3A6IDA7XFxyXFxuICAgIGxlZnQ6IDA7XFxyXFxuICAgIHdpZHRoOiAxOHB4O1xcclxcbiAgICBoZWlnaHQ6IDE4cHg7XFxyXFxuICAgIHotaW5kZXg6IDA7XFxyXFxuICAgIGJvcmRlcjogMnB4IHNvbGlkICRyYWRpby1lbXB0eS1jb2xvcjtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogMXB4O1xcclxcbiAgICBtYXJnaW4tdG9wOiAzcHg7XFxyXFxuICAgIHRyYW5zaXRpb246IC4ycztcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICY6bm90KC5maWxsZWQtaW4pICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxyXFxuICAgIGJvcmRlcjogMDtcXHJcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICY6bm90KDpjaGVja2VkKTpkaXNhYmxlZCArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlIHtcXHJcXG4gICAgYm9yZGVyOiBub25lO1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtZGlzYWJsZWQtY29sb3I7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBGb2N1c2VkIHN0eWxlc1xcclxcbiAgJi50YWJiZWQ6Zm9jdXMgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcXHJcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcXHJcXG4gICAgYm9yZGVyOiAwO1xcclxcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxyXFxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgwLDAsMCwuMSk7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsLjEpO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG5bdHlwZT1cXFwiY2hlY2tib3hcXFwiXTpjaGVja2VkIHtcXHJcXG4gICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xcclxcbiAgICB0b3A6IC00cHg7XFxyXFxuICAgIGxlZnQ6IC01cHg7XFxyXFxuICAgIHdpZHRoOiAxMnB4O1xcclxcbiAgICBoZWlnaHQ6IDIycHg7XFxyXFxuICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcXHJcXG4gICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcXHJcXG4gICAgYm9yZGVyLXJpZ2h0OiAkcmFkaW8tYm9yZGVyO1xcclxcbiAgICBib3JkZXItYm90dG9tOiAkcmFkaW8tYm9yZGVyO1xcclxcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0MGRlZyk7XFxyXFxuICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcXHJcXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAxMDAlO1xcclxcbiAgfVxcclxcblxcclxcbiAgJjpkaXNhYmxlZCArIHNwYW46YmVmb3JlIHtcXHJcXG4gICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgJGlucHV0LWRpc2FibGVkLWNvbG9yO1xcclxcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgJGlucHV0LWRpc2FibGVkLWNvbG9yO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vKiBJbmRldGVybWluYXRlIGNoZWNrYm94ICovXFxyXFxuW3R5cGU9XFxcImNoZWNrYm94XFxcIl06aW5kZXRlcm1pbmF0ZSB7XFxyXFxuICArIHNwYW46bm90KC5sZXZlcik6YmVmb3JlIHtcXHJcXG4gICAgdG9wOiAtMTFweDtcXHJcXG4gICAgbGVmdDogLTEycHg7XFxyXFxuICAgIHdpZHRoOiAxMHB4O1xcclxcbiAgICBoZWlnaHQ6IDIycHg7XFxyXFxuICAgIGJvcmRlci10b3A6IG5vbmU7XFxyXFxuICAgIGJvcmRlci1sZWZ0OiBub25lO1xcclxcbiAgICBib3JkZXItcmlnaHQ6ICRyYWRpby1ib3JkZXI7XFxyXFxuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XFxyXFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcXHJcXG4gICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xcclxcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDEwMCU7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBEaXNhYmxlZCBpbmRldGVybWluYXRlXFxyXFxuICAmOmRpc2FibGVkICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xcclxcbiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAkaW5wdXQtZGlzYWJsZWQtY29sb3I7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBGaWxsZWQgaW4gU3R5bGVcXHJcXG5bdHlwZT1cXFwiY2hlY2tib3hcXFwiXS5maWxsZWQtaW4ge1xcclxcbiAgLy8gR2VuZXJhbFxcclxcbiAgKyBzcGFuOm5vdCgubGV2ZXIpOmFmdGVyIHtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xcclxcbiAgfVxcclxcblxcclxcbiAgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSxcXHJcXG4gICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxyXFxuICAgIGNvbnRlbnQ6ICcnO1xcclxcbiAgICBsZWZ0OiAwO1xcclxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIC8qIC4xcyBkZWxheSBpcyBmb3IgY2hlY2sgYW5pbWF0aW9uICovXFxyXFxuICAgIHRyYW5zaXRpb246IGJvcmRlciAuMjVzLCBiYWNrZ3JvdW5kLWNvbG9yIC4yNXMsIHdpZHRoIC4yMHMgLjFzLCBoZWlnaHQgLjIwcyAuMXMsIHRvcCAuMjBzIC4xcywgbGVmdCAuMjBzIC4xcztcXHJcXG4gICAgei1pbmRleDogMTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIFVuY2hlY2tlZCBzdHlsZVxcclxcbiAgJjpub3QoOmNoZWNrZWQpICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xcclxcbiAgICB3aWR0aDogMDtcXHJcXG4gICAgaGVpZ2h0OiAwO1xcclxcbiAgICBib3JkZXI6IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcXHJcXG4gICAgbGVmdDogNnB4O1xcclxcbiAgICB0b3A6IDEwcHg7XFxyXFxuICAgIHRyYW5zZm9ybTogcm90YXRlWigzN2RlZyk7XFxyXFxuICAgIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICY6bm90KDpjaGVja2VkKSArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xcclxcbiAgICBoZWlnaHQ6IDIwcHg7XFxyXFxuICAgIHdpZHRoOiAyMHB4O1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gICAgYm9yZGVyOiAycHggc29saWQgJHJhZGlvLWVtcHR5LWNvbG9yO1xcclxcbiAgICB0b3A6IDBweDtcXHJcXG4gICAgei1pbmRleDogMDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIENoZWNrZWQgc3R5bGVcXHJcXG4gICY6Y2hlY2tlZCB7XFxyXFxuICAgICsgc3Bhbjpub3QoLmxldmVyKTpiZWZvcmUge1xcclxcbiAgICAgIHRvcDogMDtcXHJcXG4gICAgICBsZWZ0OiAxcHg7XFxyXFxuICAgICAgd2lkdGg6IDhweDtcXHJcXG4gICAgICBoZWlnaHQ6IDEzcHg7XFxyXFxuICAgICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcclxcbiAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxyXFxuICAgICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgJGlucHV0LWJhY2tncm91bmQ7XFxyXFxuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRpbnB1dC1iYWNrZ3JvdW5kO1xcclxcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlWigzN2RlZyk7XFxyXFxuICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAxMDAlO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxyXFxuICAgICAgdG9wOiAwO1xcclxcbiAgICAgIHdpZHRoOiAyMHB4O1xcclxcbiAgICAgIGhlaWdodDogMjBweDtcXHJcXG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAkc2Vjb25kYXJ5LWNvbG9yO1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29sb3I7XFxyXFxuICAgICAgei1pbmRleDogMDtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgLy8gRm9jdXNlZCBzdHlsZXNcXHJcXG4gICYudGFiYmVkOmZvY3VzICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXHJcXG4gICAgYm9yZGVyLWNvbG9yOiAkcmFkaW8tZW1wdHktY29sb3I7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsLjEpO1xcclxcbiAgfVxcclxcblxcclxcbiAgJi50YWJiZWQ6Y2hlY2tlZDpmb2N1cyArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xcclxcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29sb3I7XFxyXFxuICAgIGJvcmRlci1jb2xvcjogJHNlY29uZGFyeS1jb2xvcjtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIERpc2FibGVkIHN0eWxlXFxyXFxuICAmOmRpc2FibGVkOm5vdCg6Y2hlY2tlZCkgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICY6ZGlzYWJsZWQ6bm90KDpjaGVja2VkKSArIHNwYW46bm90KC5sZXZlcik6YWZ0ZXIge1xcclxcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtZGlzYWJsZWQtc29saWQtY29sb3I7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmOmRpc2FibGVkOmNoZWNrZWQgKyBzcGFuOm5vdCgubGV2ZXIpOmJlZm9yZSB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgfVxcclxcblxcclxcbiAgJjpkaXNhYmxlZDpjaGVja2VkICsgc3Bhbjpub3QoLmxldmVyKTphZnRlciB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1kaXNhYmxlZC1zb2xpZC1jb2xvcjtcXHJcXG4gICAgYm9yZGVyLWNvbG9yOiAkaW5wdXQtZGlzYWJsZWQtc29saWQtY29sb3I7XFxyXFxuICB9XFxyXFxufVxcclxcblwiLFwiLyogU3dpdGNoXFxyXFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cXHJcXG5cXHJcXG4uc3dpdGNoLFxcclxcbi5zd2l0Y2ggKiB7XFxyXFxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxyXFxufVxcclxcblxcclxcbi5zd2l0Y2ggbGFiZWwge1xcclxcbiAgY3Vyc29yOiBwb2ludGVyO1xcclxcbn1cXHJcXG5cXHJcXG4uc3dpdGNoIGxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdIHtcXHJcXG4gIG9wYWNpdHk6IDA7XFxyXFxuICB3aWR0aDogMDtcXHJcXG4gIGhlaWdodDogMDtcXHJcXG5cXHJcXG4gICY6Y2hlY2tlZCArIC5sZXZlciB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRzd2l0Y2gtY2hlY2tlZC1sZXZlci1iZztcXHJcXG5cXHJcXG4gICAgJjpiZWZvcmUsICY6YWZ0ZXIge1xcclxcbiAgICAgIGxlZnQ6IDE4cHg7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgJjphZnRlciB7XFxyXFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHN3aXRjaC1iZy1jb2xvcjtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4uc3dpdGNoIGxhYmVsIC5sZXZlciB7XFxyXFxuICBjb250ZW50OiBcXFwiXFxcIjtcXHJcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIHdpZHRoOiAzNnB4O1xcclxcbiAgaGVpZ2h0OiAxNHB4O1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogJHN3aXRjaC11bmNoZWNrZWQtbGV2ZXItYmc7XFxyXFxuICBib3JkZXItcmFkaXVzOiAkc3dpdGNoLXJhZGl1cztcXHJcXG4gIC8vbWFyZ2luLXJpZ2h0OiAxMHB4O1xcclxcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjNzIGVhc2U7XFxyXFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcclxcbiAgbWFyZ2luOiAwIDE2cHg7XFxyXFxuXFxyXFxuICAmOmJlZm9yZSwgJjphZnRlciB7XFxyXFxuICAgIGNvbnRlbnQ6IFxcXCJcXFwiO1xcclxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHJcXG4gICAgd2lkdGg6IDIwcHg7XFxyXFxuICAgIGhlaWdodDogMjBweDtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xcclxcbiAgICBsZWZ0OiAwO1xcclxcbiAgICB0b3A6IC0zcHg7XFxyXFxuICAgIHRyYW5zaXRpb246IGxlZnQgMC4zcyBlYXNlLCBiYWNrZ3JvdW5kIC4zcyBlYXNlLCBib3gtc2hhZG93IDAuMXMgZWFzZSwgdHJhbnNmb3JtIC4xcyBlYXNlO1xcclxcbiAgfVxcclxcblxcclxcbiAgJjpiZWZvcmUge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudGl6ZSgkc3dpdGNoLWJnLWNvbG9yLCAuODUpO1xcclxcbiAgfVxcclxcblxcclxcbiAgJjphZnRlciB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRzd2l0Y2gtdW5jaGVja2VkLWJnO1xcclxcbiAgICBib3gtc2hhZG93OiAwcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBTd2l0Y2ggYWN0aXZlIHN0eWxlXFxyXFxuaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpub3QoOmRpc2FibGVkKSB+IC5sZXZlcjphY3RpdmU6OmJlZm9yZSxcXHJcXG5pbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOm5vdCg6ZGlzYWJsZWQpLnRhYmJlZDpmb2N1cyB+IC5sZXZlcjo6YmVmb3JlIHtcXHJcXG4gIHRyYW5zZm9ybTogc2NhbGUoMi40KTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCRzd2l0Y2gtYmctY29sb3IsIC44NSk7XFxyXFxufVxcclxcblxcclxcbmlucHV0W3R5cGU9Y2hlY2tib3hdOm5vdCg6ZGlzYWJsZWQpIH4gLmxldmVyOmFjdGl2ZTpiZWZvcmUsXFxyXFxuaW5wdXRbdHlwZT1jaGVja2JveF06bm90KDpkaXNhYmxlZCkudGFiYmVkOmZvY3VzIH4gLmxldmVyOjpiZWZvcmUge1xcclxcbiAgdHJhbnNmb3JtOiBzY2FsZSgyLjQpO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwuMDgpO1xcclxcbn1cXHJcXG5cXHJcXG4vLyBEaXNhYmxlZCBTdHlsZXNcXHJcXG4uc3dpdGNoIGlucHV0W3R5cGU9Y2hlY2tib3hdW2Rpc2FibGVkXSArIC5sZXZlciB7XFxyXFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLC4xMik7XFxyXFxufVxcclxcblxcclxcbi5zd2l0Y2ggbGFiZWwgaW5wdXRbdHlwZT1jaGVja2JveF1bZGlzYWJsZWRdICsgLmxldmVyOmFmdGVyLFxcclxcbi5zd2l0Y2ggbGFiZWwgaW5wdXRbdHlwZT1jaGVja2JveF1bZGlzYWJsZWRdOmNoZWNrZWQgKyAubGV2ZXI6YWZ0ZXIge1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWRpc2FibGVkLXNvbGlkLWNvbG9yO1xcclxcbn1cXHJcXG5cIixcIi8qIFNlbGVjdCBGaWVsZFxcclxcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXFxyXFxuXFxyXFxuc2VsZWN0IHsgZGlzcGxheTogbm9uZTsgfVxcclxcbnNlbGVjdC5icm93c2VyLWRlZmF1bHQgeyBkaXNwbGF5OiBibG9jazsgfVxcclxcblxcclxcbnNlbGVjdCB7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2VsZWN0LWJhY2tncm91bmQ7XFxyXFxuICB3aWR0aDogMTAwJTtcXHJcXG4gIHBhZGRpbmc6ICRzZWxlY3QtcGFkZGluZztcXHJcXG4gIGJvcmRlcjogJHNlbGVjdC1ib3JkZXI7XFxyXFxuICBib3JkZXItcmFkaXVzOiAkc2VsZWN0LXJhZGl1cztcXHJcXG4gIGhlaWdodDogJGlucHV0LWhlaWdodDtcXHJcXG59XFxyXFxuXFxyXFxuLnNlbGVjdC1sYWJlbCB7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxufVxcclxcblxcclxcbi5zZWxlY3Qtd3JhcHBlciB7XFxyXFxuICAmLnZhbGlkIC5oZWxwZXItdGV4dFtkYXRhLXN1Y2Nlc3NdLFxcclxcbiAgJi5pbnZhbGlkIH4gLmhlbHBlci10ZXh0W2RhdGEtZXJyb3JdIHtcXHJcXG4gICAgQGV4dGVuZCAlaGlkZGVuLXRleHQ7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmLnZhbGlkIHtcXHJcXG4gICAgJiA+IGlucHV0LnNlbGVjdC1kcm9wZG93biB7XFxyXFxuICAgICAgQGV4dGVuZCAldmFsaWQtaW5wdXQtc3R5bGU7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgJiB+IC5oZWxwZXItdGV4dDphZnRlciB7XFxyXFxuICAgICAgQGV4dGVuZCAlY3VzdG9tLXN1Y2Nlc3MtbWVzc2FnZTtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgJi5pbnZhbGlkIHtcXHJcXG4gICAgJiA+IGlucHV0LnNlbGVjdC1kcm9wZG93bixcXHJcXG4gICAgJiA+IGlucHV0LnNlbGVjdC1kcm9wZG93bjpmb2N1cyB7XFxyXFxuICAgICAgQGV4dGVuZCAlaW52YWxpZC1pbnB1dC1zdHlsZTtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAmIH4gLmhlbHBlci10ZXh0OmFmdGVyIHtcXHJcXG4gICAgICBAZXh0ZW5kICVjdXN0b20tZXJyb3ItbWVzc2FnZTtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgJi52YWxpZCArIGxhYmVsLFxcclxcbiAgJi5pbnZhbGlkICsgbGFiZWwge1xcclxcbiAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmICsgbGFiZWw6YWZ0ZXIge1xcclxcbiAgICBAZXh0ZW5kICVpbnB1dC1hZnRlci1zdHlsZTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG5cXHJcXG4gIGlucHV0LnNlbGVjdC1kcm9wZG93biB7XFxyXFxuICAgICY6Zm9jdXMge1xcclxcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkaW5wdXQtZm9jdXMtY29sb3I7XFxyXFxuICAgIH1cXHJcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgICBib3JkZXI6IG5vbmU7XFxyXFxuICAgIGJvcmRlci1ib3R0b206ICRpbnB1dC1ib3JkZXI7XFxyXFxuICAgIG91dGxpbmU6IG5vbmU7XFxyXFxuICAgIGhlaWdodDogJGlucHV0LWhlaWdodDtcXHJcXG4gICAgbGluZS1oZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XFxyXFxuICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgICBmb250LXNpemU6ICRpbnB1dC1mb250LXNpemU7XFxyXFxuICAgIG1hcmdpbjogJGlucHV0LW1hcmdpbjtcXHJcXG4gICAgcGFkZGluZzogMDtcXHJcXG4gICAgZGlzcGxheTogYmxvY2s7XFxyXFxuICAgIHVzZXItc2VsZWN0Om5vbmU7XFxyXFxuICAgIHotaW5kZXg6IDE7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAuY2FyZXQge1xcclxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIHJpZ2h0OiAwO1xcclxcbiAgICB0b3A6IDA7XFxyXFxuICAgIGJvdHRvbTogMDtcXHJcXG4gICAgbWFyZ2luOiBhdXRvIDA7XFxyXFxuICAgIHotaW5kZXg6IDA7XFxyXFxuICAgIGZpbGw6IHJnYmEoMCwwLDAsLjg3KTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYgKyBsYWJlbCB7XFxyXFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgdG9wOiAtMjZweDtcXHJcXG4gICAgZm9udC1zaXplOiAkbGFiZWwtZm9udC1zaXplO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBEaXNhYmxlZCBzdHlsZXNcXHJcXG5zZWxlY3Q6ZGlzYWJsZWQge1xcclxcbiAgY29sb3I6ICRpbnB1dC1kaXNhYmxlZC1jb2xvcjtcXHJcXG59XFxyXFxuXFxyXFxuLnNlbGVjdC13cmFwcGVyLmRpc2FibGVkIHtcXHJcXG4gICsgbGFiZWwge1xcclxcbiAgICBjb2xvcjogJGlucHV0LWRpc2FibGVkLWNvbG9yO1xcclxcbiAgfVxcclxcbiAgLmNhcmV0IHtcXHJcXG4gICAgZmlsbDogJGlucHV0LWRpc2FibGVkLWNvbG9yO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4uc2VsZWN0LXdyYXBwZXIgaW5wdXQuc2VsZWN0LWRyb3Bkb3duOmRpc2FibGVkIHtcXHJcXG4gIGNvbG9yOiAkaW5wdXQtZGlzYWJsZWQtY29sb3I7XFxyXFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxyXFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXHJcXG59XFxyXFxuXFxyXFxuLnNlbGVjdC13cmFwcGVyIGkge1xcclxcbiAgY29sb3I6ICRzZWxlY3QtZGlzYWJsZWQtY29sb3I7XFxyXFxufVxcclxcblxcclxcbi5zZWxlY3QtZHJvcGRvd24gbGkuZGlzYWJsZWQsXFxyXFxuLnNlbGVjdC1kcm9wZG93biBsaS5kaXNhYmxlZCA+IHNwYW4sXFxyXFxuLnNlbGVjdC1kcm9wZG93biBsaS5vcHRncm91cCB7XFxyXFxuICBjb2xvcjogJHNlbGVjdC1kaXNhYmxlZC1jb2xvcjtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbn1cXHJcXG5cXHJcXG5ib2R5LmtleWJvYXJkLWZvY3VzZWQge1xcclxcbiAgLnNlbGVjdC1kcm9wZG93bi5kcm9wZG93bi1jb250ZW50IGxpOmZvY3VzIHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHNlbGVjdC1vcHRpb24tZm9jdXM7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi5zZWxlY3QtZHJvcGRvd24uZHJvcGRvd24tY29udGVudCB7XFxyXFxuICBsaSB7XFxyXFxuICAgICY6aG92ZXIge1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWxlY3Qtb3B0aW9uLWhvdmVyO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICYuc2VsZWN0ZWQge1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWxlY3Qtb3B0aW9uLXNlbGVjdGVkO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi8vIFByZWZpeCBJY29uc1xcclxcbi5wcmVmaXggfiAuc2VsZWN0LXdyYXBwZXIge1xcclxcbiAgbWFyZ2luLWxlZnQ6IDNyZW07XFxyXFxuICB3aWR0aDogOTIlO1xcclxcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDNyZW0pO1xcclxcbn1cXHJcXG5cXHJcXG4ucHJlZml4IH4gbGFiZWwgeyBtYXJnaW4tbGVmdDogM3JlbTsgfVxcclxcblxcclxcbi8vIEljb25zXFxyXFxuLnNlbGVjdC1kcm9wZG93biBsaSB7XFxyXFxuICBpbWcge1xcclxcbiAgICAvLyBoZWlnaHQ6ICRkcm9wZG93bi1pdGVtLWhlaWdodCAtIDEwO1xcclxcbiAgICAvLyB3aWR0aDogJGRyb3Bkb3duLWl0ZW0taGVpZ2h0IC0gMTA7XFxyXFxuICAgIG1hcmdpbjogNXB4IDE1cHg7XFxyXFxuICAgIGZsb2F0OiByaWdodDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gT3B0Z3JvdXAgc3R5bGVzXFxyXFxuLnNlbGVjdC1kcm9wZG93biBsaS5vcHRncm91cCB7XFxyXFxuICAvLyBib3JkZXItdG9wOiAxcHggc29saWQgJGRyb3Bkb3duLWhvdmVyLWJnLWNvbG9yO1xcclxcblxcclxcbiAgJi5zZWxlY3RlZCA+IHNwYW4ge1xcclxcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAuNyk7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmID4gc3BhbiB7XFxyXFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIC40KTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYgfiBsaS5vcHRncm91cC1vcHRpb24ge1xcclxcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxyXFxuICB9XFxyXFxufVxcclxcblwiLFwiLyogRmlsZSBJbnB1dFxcclxcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXFxyXFxuXFxyXFxuLmZpbGUtZmllbGQge1xcclxcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcblxcclxcbiAgLmZpbGUtcGF0aC13cmFwcGVyIHtcXHJcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXHJcXG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xcclxcbiAgfVxcclxcblxcclxcbiAgaW5wdXQuZmlsZS1wYXRoIHsgd2lkdGg6IDEwMCU7IH1cXHJcXG5cXHJcXG4gIC5idG4ge1xcclxcbiAgICBmbG9hdDogbGVmdDtcXHJcXG4gICAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xcclxcbiAgICBsaW5lLWhlaWdodDogJGlucHV0LWhlaWdodDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIHNwYW4ge1xcclxcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICB9XFxyXFxuXFxyXFxuICBpbnB1dFt0eXBlPWZpbGVdIHtcXHJcXG5cXHJcXG4gICAgLy8gTmVlZGVkIHRvIG92ZXJyaWRlIHdlYmtpdCBidXR0b25cXHJcXG4gICAgJjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xcclxcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICB0b3A6IDA7XFxyXFxuICAgIHJpZ2h0OiAwO1xcclxcbiAgICBsZWZ0OiAwO1xcclxcbiAgICBib3R0b206IDA7XFxyXFxuICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgICBtYXJnaW46IDA7XFxyXFxuICAgIHBhZGRpbmc6IDA7XFxyXFxuICAgIGZvbnQtc2l6ZTogMjBweDtcXHJcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgICBvcGFjaXR5OiAwO1xcclxcbiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7XFxyXFxuICB9XFxyXFxufVxcclxcblwiLFwiLyogUmFuZ2VcXHJcXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xcclxcblxcclxcbi5yYW5nZS1maWVsZCB7XFxyXFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxufVxcclxcblxcclxcbmlucHV0W3R5cGU9cmFuZ2VdLFxcclxcbmlucHV0W3R5cGU9cmFuZ2VdICsgLnRodW1iIHtcXHJcXG4gIC8vIEBleHRlbmQgLm5vLXNlbGVjdDtcXHJcXG4gIGN1cnNvcjogcG9pbnRlcjtcXHJcXG59XFxyXFxuXFxyXFxuaW5wdXRbdHlwZT1yYW5nZV0ge1xcclxcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuICBib3JkZXI6IG5vbmU7XFxyXFxuICBvdXRsaW5lOiBub25lO1xcclxcbiAgd2lkdGg6IDEwMCU7XFxyXFxuICBtYXJnaW46IDE1cHggMDtcXHJcXG4gIHBhZGRpbmc6IDA7XFxyXFxuXFxyXFxuICAmOmZvY3VzIHtcXHJcXG4gICAgb3V0bGluZTogbm9uZTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuaW5wdXRbdHlwZT1yYW5nZV0gKyAudGh1bWIge1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgdG9wOiAxMHB4O1xcclxcbiAgbGVmdDogMDtcXHJcXG4gIGJvcmRlcjogbm9uZTtcXHJcXG4gIGhlaWdodDogMDtcXHJcXG4gIHdpZHRoOiAwO1xcclxcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogJHJhZGlvLWZpbGwtY29sb3I7XFxyXFxuICBtYXJnaW4tbGVmdDogN3B4O1xcclxcblxcclxcbiAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcXHJcXG4gIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XFxyXFxuXFxyXFxuICAudmFsdWUge1xcclxcbiAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gICAgd2lkdGg6IDMwcHg7XFxyXFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgY29sb3I6ICRyYWRpby1maWxsLWNvbG9yO1xcclxcbiAgICBmb250LXNpemU6IDA7XFxyXFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYuYWN0aXZlIHtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogNTAlIDUwJSA1MCUgMDtcXHJcXG5cXHJcXG4gICAgLnZhbHVlIHtcXHJcXG4gICAgICBjb2xvcjogJGlucHV0LWJhY2tncm91bmQ7XFxyXFxuICAgICAgbWFyZ2luLWxlZnQ6IC0xcHg7XFxyXFxuICAgICAgbWFyZ2luLXRvcDogOHB4O1xcclxcbiAgICAgIGZvbnQtc2l6ZTogMTBweDtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBTaGFyZWRcXHJcXG5AbWl4aW4gcmFuZ2UtdHJhY2sge1xcclxcbiAgaGVpZ2h0OiAkdHJhY2staGVpZ2h0O1xcclxcbiAgYmFja2dyb3VuZDogI2MyYzBjMjtcXHJcXG4gIGJvcmRlcjogbm9uZTtcXHJcXG59XFxyXFxuXFxyXFxuQG1peGluIHJhbmdlLXRodW1iIHtcXHJcXG4gIGJvcmRlcjogbm9uZTtcXHJcXG4gIGhlaWdodDogJHJhbmdlLWhlaWdodDtcXHJcXG4gIHdpZHRoOiAkcmFuZ2Utd2lkdGg7XFxyXFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxyXFxuICBiYWNrZ3JvdW5kOiAkcmFkaW8tZmlsbC1jb2xvcjtcXHJcXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgLjNzO1xcclxcbn1cXHJcXG5cXHJcXG4vLyBXZWJLaXRcXHJcXG5pbnB1dFt0eXBlPXJhbmdlXSB7XFxyXFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XFxyXFxufVxcclxcblxcclxcbmlucHV0W3R5cGU9cmFuZ2VdOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XFxyXFxuICBAaW5jbHVkZSByYW5nZS10cmFjaztcXHJcXG59XFxyXFxuXFxyXFxuaW5wdXRbdHlwZT1yYW5nZV06Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcXHJcXG4gIEBpbmNsdWRlIHJhbmdlLXRodW1iO1xcclxcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogJHJhZGlvLWZpbGwtY29sb3I7XFxyXFxuICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlO1xcclxcbiAgbWFyZ2luOiAtNXB4IDAgMCAwO1xcclxcblxcclxcbn1cXHJcXG5cXHJcXG4ua2V5Ym9hcmQtZm9jdXNlZCBpbnB1dFt0eXBlPXJhbmdlXTpmb2N1czpub3QoLmFjdGl2ZSk6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcXHJcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgkcmFkaW8tZmlsbC1jb2xvciwgLjI2KTtcXHJcXG59XFxyXFxuXFxyXFxuLy8gRmlyZUZveFxcclxcbmlucHV0W3R5cGU9cmFuZ2VdIHtcXHJcXG4gIC8qIGZpeCBmb3IgRkYgdW5hYmxlIHRvIGFwcGx5IGZvY3VzIHN0eWxlIGJ1ZyAgKi9cXHJcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHdoaXRlO1xcclxcblxcclxcbiAgLypyZXF1aXJlZCBmb3IgcHJvcGVyIHRyYWNrIHNpemluZyBpbiBGRiovXFxyXFxufVxcclxcblxcclxcbmlucHV0W3R5cGU9cmFuZ2VdOjotbW96LXJhbmdlLXRyYWNrIHtcXHJcXG4gIEBpbmNsdWRlIHJhbmdlLXRyYWNrO1xcclxcbn1cXHJcXG5cXHJcXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1vei1mb2N1cy1pbm5lciB7XFxyXFxuICBib3JkZXI6IDA7XFxyXFxufVxcclxcblxcclxcbmlucHV0W3R5cGU9cmFuZ2VdOjotbW96LXJhbmdlLXRodW1iIHtcXHJcXG4gIEBpbmNsdWRlIHJhbmdlLXRodW1iO1xcclxcbiAgbWFyZ2luLXRvcDogLTVweDtcXHJcXG59XFxyXFxuXFxyXFxuLy8gaGlkZSB0aGUgb3V0bGluZSBiZWhpbmQgdGhlIGJvcmRlclxcclxcbmlucHV0W3R5cGU9cmFuZ2VdOi1tb3otZm9jdXNyaW5nIHtcXHJcXG4gIG91dGxpbmU6IDFweCBzb2xpZCAjZmZmO1xcclxcbiAgb3V0bGluZS1vZmZzZXQ6IC0xcHg7XFxyXFxufVxcclxcblxcclxcbi5rZXlib2FyZC1mb2N1c2VkIGlucHV0W3R5cGU9cmFuZ2VdOmZvY3VzOm5vdCguYWN0aXZlKTo6LW1vei1yYW5nZS10aHVtYiB7XFxyXFxuICBib3gtc2hhZG93OiAwIDAgMCAxMHB4IHJnYmEoJHJhZGlvLWZpbGwtY29sb3IsIC4yNik7XFxyXFxufVxcclxcblxcclxcbi8vIElFIDEwK1xcclxcbmlucHV0W3R5cGU9cmFuZ2VdOjotbXMtdHJhY2sge1xcclxcbiAgaGVpZ2h0OiAkdHJhY2staGVpZ2h0O1xcclxcblxcclxcbiAgLy8gcmVtb3ZlIGJnIGNvbG91ciBmcm9tIHRoZSB0cmFjaywgd2UnbGwgdXNlIG1zLWZpbGwtbG93ZXIgYW5kIG1zLWZpbGwtdXBwZXIgaW5zdGVhZFxcclxcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxyXFxuXFxyXFxuICAvLyBsZWF2ZSByb29tIGZvciB0aGUgbGFyZ2VyIHRodW1iIHRvIG92ZXJmbG93IHdpdGggYSB0cmFuc3BhcmVudCBib3JkZXIgKi9cXHJcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuICBib3JkZXItd2lkdGg6IDZweCAwO1xcclxcblxcclxcbiAgLypyZW1vdmUgZGVmYXVsdCB0aWNrIG1hcmtzKi9cXHJcXG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG59XFxyXFxuXFxyXFxuaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy1maWxsLWxvd2VyIHtcXHJcXG4gIGJhY2tncm91bmQ6ICM3Nzc7XFxyXFxufVxcclxcblxcclxcbmlucHV0W3R5cGU9cmFuZ2VdOjotbXMtZmlsbC11cHBlciB7XFxyXFxuICBiYWNrZ3JvdW5kOiAjZGRkO1xcclxcbn1cXHJcXG5cXHJcXG5pbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRodW1iIHtcXHJcXG4gIEBpbmNsdWRlIHJhbmdlLXRodW1iO1xcclxcbn1cXHJcXG5cXHJcXG4ua2V5Ym9hcmQtZm9jdXNlZCBpbnB1dFt0eXBlPXJhbmdlXTpmb2N1czpub3QoLmFjdGl2ZSk6Oi1tcy10aHVtYiB7XFxyXFxuICBib3gtc2hhZG93OiAwIDAgMCAxMHB4IHJnYmEoJHJhZGlvLWZpbGwtY29sb3IsIC4yNik7XFxyXFxufVxcclxcblwiLFwiLnBhcmFsbGF4IHtcXHJcXG5cXHJcXG4gIC8qIFNldCBhIHNwZWNpZmljIGhlaWdodCAqL1xcclxcbiAgbWluLWhlaWdodDogNTAwcHg7XFxyXFxuXFxyXFxuICAvKiBDcmVhdGUgdGhlIHBhcmFsbGF4IHNjcm9sbGluZyBlZmZlY3QgKi9cXHJcXG4gIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7XFxyXFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XFxyXFxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcclxcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcXHJcXG59XCIsXCIkY3ViZS1oZWlnaHQ6MjAwcHg7XFxyXFxuKiB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cXHJcXG5cXHJcXG5ib2R5IHsgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IH1cXHJcXG5cXHJcXG4uc2NlbmUge1xcclxcbiAgd2lkdGg6ICRjdWJlLWhlaWdodDtcXHJcXG4gIGhlaWdodDogJGN1YmUtaGVpZ2h0O1xcclxcbiAgYm9yZGVyOiAxcHggc29saWQgI0NDQztcXHJcXG4gIG1hcmdpbjogODBweDtcXHJcXG4gIHBlcnNwZWN0aXZlOiA0MDBweDtcXHJcXG59XFxyXFxuXFxyXFxuLmN1YmUge1xcclxcbiAgd2lkdGg6ICRjdWJlLWhlaWdodDtcXHJcXG4gIGhlaWdodDogJGN1YmUtaGVpZ2h0O1xcclxcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcXHJcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigtNDAwcHgpO1xcclxcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDFzO1xcclxcbn1cXHJcXG5cXHJcXG4uY3ViZS5zaG93LWZyb250ICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMTBweCkgcm90YXRlWSggICAwZGVnKTsgfVxcclxcbi5jdWJlLnNob3ctcmlnaHQgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0xMHB4KSByb3RhdGVZKCAtOTBkZWcpOyB9XFxyXFxuLmN1YmUuc2hvdy1iYWNrICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwcHgpIHJvdGF0ZVkoLTE4MGRlZyk7IH1cXHJcXG4uY3ViZS5zaG93LWxlZnQgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWigtMTBweCkgcm90YXRlWSggIDkwZGVnKTsgfVxcclxcbi5jdWJlLnNob3ctdG9wICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKC0xMHB4KSByb3RhdGVYKCAtOTBkZWcpOyB9XFxyXFxuLmN1YmUuc2hvdy1ib3R0b20geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooLTEwcHgpIHJvdGF0ZVgoICA5MGRlZyk7IH1cXHJcXG5cXHJcXG4uY3ViZV9fZmFjZSB7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICB3aWR0aDogJGN1YmUtaGVpZ2h0O1xcclxcbiAgaGVpZ2h0OiAkY3ViZS1oZWlnaHQ7XFxyXFxuICBib3JkZXI6IDJweCBzb2xpZCBibGFjaztcXHJcXG4gIGxpbmUtaGVpZ2h0OiAkY3ViZS1oZWlnaHQ7XFxyXFxuICBmb250LXNpemU6IDQwcHg7XFxyXFxuICBmb250LXdlaWdodDogYm9sZDtcXHJcXG4gIGNvbG9yOiB3aGl0ZTtcXHJcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG59XFxyXFxuXFxyXFxuLmN1YmVfX2ZhY2UtLWZyb250ICB7IGJhY2tncm91bmQ6IGhzbGEoICAwLCAxMDAlLCA1MCUsIDAuNyk7IH1cXHJcXG4uY3ViZV9fZmFjZS0tcmlnaHQgIHsgYmFja2dyb3VuZDogaHNsYSggNjAsIDEwMCUsIDUwJSwgMC43KTsgfVxcclxcbi5jdWJlX19mYWNlLS1iYWNrICAgeyBiYWNrZ3JvdW5kOiBoc2xhKDEyMCwgMTAwJSwgNTAlLCAwLjcpOyB9XFxyXFxuLmN1YmVfX2ZhY2UtLWxlZnQgICB7IGJhY2tncm91bmQ6IGhzbGEoMTgwLCAxMDAlLCA1MCUsIDAuNyk7IH1cXHJcXG4uY3ViZV9fZmFjZS0tdG9wICAgIHsgYmFja2dyb3VuZDogaHNsYSgyNDAsIDEwMCUsIDUwJSwgMC43KTsgfVxcclxcbi5jdWJlX19mYWNlLS1ib3R0b20geyBiYWNrZ3JvdW5kOiBoc2xhKDMwMCwgMTAwJSwgNTAlLCAwLjcpOyB9XFxyXFxuXFxyXFxuLmN1YmVfX2ZhY2UtLWZyb250ICB7IHRyYW5zZm9ybTogcm90YXRlWSggIDBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpOyB9XFxyXFxuLmN1YmVfX2ZhY2UtLXJpZ2h0ICB7IHRyYW5zZm9ybTogcm90YXRlWSggOTBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpOyB9XFxyXFxuLmN1YmVfX2ZhY2UtLWJhY2sgICB7IHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpOyB9XFxyXFxuLmN1YmVfX2ZhY2UtLWxlZnQgICB7IHRyYW5zZm9ybTogcm90YXRlWSgtOTBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpOyB9XFxyXFxuLmN1YmVfX2ZhY2UtLXRvcCAgICB7IHRyYW5zZm9ybTogcm90YXRlWCggOTBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpOyB9XFxyXFxuLmN1YmVfX2ZhY2UtLWJvdHRvbSB7IHRyYW5zZm9ybTogcm90YXRlWCgtOTBkZWcpIHRyYW5zbGF0ZVooMTAwcHgpOyB9XFxyXFxuXFxyXFxubGFiZWwgeyBtYXJnaW4tcmlnaHQ6IDEwcHg7IH1cIixcIkB1c2UgXFxcInNhc3M6bWF0aFxcXCI7XFxyXFxuLmNvbnRhaW5lciB7XFxyXFxuICBtYXJnaW46IDAgYXV0bztcXHJcXG4gIG1heC13aWR0aDogMTI4MHB4O1xcclxcbiAgd2lkdGg6IDkwJTtcXHJcXG59XFxyXFxuQG1lZGlhICN7JG1lZGl1bS1hbmQtdXB9IHtcXHJcXG4gIC5jb250YWluZXIge1xcclxcbiAgICB3aWR0aDogODUlO1xcclxcbiAgfVxcclxcbn1cXHJcXG5AbWVkaWEgI3skbGFyZ2UtYW5kLXVwfSB7XFxyXFxuICAuY29udGFpbmVyIHtcXHJcXG4gICAgd2lkdGg6IDcwJTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuLmNvbCAucm93IHtcXHJcXG4gIG1hcmdpbi1sZWZ0OiBtYXRoLmRpdigtMSAqICRndXR0ZXItd2lkdGggLCAyKTtcXHJcXG4gIG1hcmdpbi1yaWdodDogbWF0aC5kaXYoLTEgKiAkZ3V0dGVyLXdpZHRoICwgMik7XFxyXFxufVxcclxcblxcclxcbi5zZWN0aW9uIHtcXHJcXG4gIHBhZGRpbmctdG9wOiAxcmVtO1xcclxcbiAgcGFkZGluZy1ib3R0b206IDFyZW07XFxyXFxuXFxyXFxuICAmLm5vLXBhZCB7XFxyXFxuICAgIHBhZGRpbmc6IDA7XFxyXFxuICB9XFxyXFxuICAmLm5vLXBhZC1ib3Qge1xcclxcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcXHJcXG4gIH1cXHJcXG4gICYubm8tcGFkLXRvcCB7XFxyXFxuICAgIHBhZGRpbmctdG9wOiAwO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG5cXHJcXG4vLyBNaXhpbnMgdG8gZWxpbWluYXRlIGNvZGUgcmVwaXRpdGlvblxcclxcbkBtaXhpbiByZXNldC1vZmZzZXQge1xcclxcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxyXFxuICBsZWZ0OiBhdXRvO1xcclxcbiAgcmlnaHQ6IGF1dG87XFxyXFxufVxcclxcbkBtaXhpbiBncmlkLWNsYXNzZXMoJHNpemUsICRpLCAkcGVyYykge1xcclxcbiAgJi5vZmZzZXQtI3skc2l6ZX0jeyRpfSB7XFxyXFxuICAgIG1hcmdpbi1sZWZ0OiAkcGVyYztcXHJcXG4gIH1cXHJcXG4gICYucHVsbC0jeyRzaXplfSN7JGl9IHtcXHJcXG4gICAgcmlnaHQ6ICRwZXJjO1xcclxcbiAgfVxcclxcbiAgJi5wdXNoLSN7JHNpemV9I3skaX0ge1xcclxcbiAgICBsZWZ0OiAkcGVyYztcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuLnJvdyB7XFxyXFxuICBtYXJnaW4tbGVmdDogYXV0bztcXHJcXG4gIG1hcmdpbi1yaWdodDogYXV0bztcXHJcXG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XFxyXFxuXFxyXFxuICAvLyBDbGVhciBmbG9hdGluZyBjaGlsZHJlblxcclxcbiAgJjphZnRlciB7XFxyXFxuICAgIGNvbnRlbnQ6IFxcXCJcXFwiO1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZTtcXHJcXG4gICAgY2xlYXI6IGJvdGg7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAuY29sIHtcXHJcXG4gICAgZmxvYXQ6IGxlZnQ7XFxyXFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxyXFxuICAgIHBhZGRpbmc6IDAgbWF0aC5kaXYoJGd1dHRlci13aWR0aCAsIDIpO1xcclxcbiAgICBtaW4taGVpZ2h0OiAxcHg7XFxyXFxuXFxyXFxuICAgICZbY2xhc3MqPVxcXCJwdXNoLVxcXCJdLFxcclxcbiAgICAmW2NsYXNzKj1cXFwicHVsbC1cXFwiXSB7XFxyXFxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICRpOiAxO1xcclxcbiAgICBAd2hpbGUgJGkgPD0gJG51bS1jb2xzIHtcXHJcXG4gICAgICAkcGVyYzogdW5xdW90ZShtYXRoLmRpdigxMDAgLCBtYXRoLmRpdigkbnVtLWNvbHMgLCAkaSkpICsgXFxcIiVcXFwiKTtcXHJcXG4gICAgICAmLnMjeyRpfSB7XFxyXFxuICAgICAgICB3aWR0aDogJHBlcmM7XFxyXFxuICAgICAgICBAaW5jbHVkZSByZXNldC1vZmZzZXQ7XFxyXFxuICAgICAgfVxcclxcbiAgICAgICRpOiAkaSArIDE7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgJGk6IDE7XFxyXFxuICAgIEB3aGlsZSAkaSA8PSAkbnVtLWNvbHMge1xcclxcbiAgICAgICRwZXJjOiB1bnF1b3RlKG1hdGguZGl2KDEwMCAsIG1hdGguZGl2KCRudW0tY29scyAsICRpKSkgKyBcXFwiJVxcXCIpO1xcclxcbiAgICAgIEBpbmNsdWRlIGdyaWQtY2xhc3NlcyhcXFwic1xcXCIsICRpLCAkcGVyYyk7XFxyXFxuICAgICAgJGk6ICRpICsgMTtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICBAbWVkaWEgI3skbWVkaXVtLWFuZC11cH0ge1xcclxcblxcclxcbiAgICAgICRpOiAxO1xcclxcbiAgICAgIEB3aGlsZSAkaSA8PSAkbnVtLWNvbHMge1xcclxcbiAgICAgICAgJHBlcmM6IHVucXVvdGUobWF0aC5kaXYoMTAwICwgbWF0aC5kaXYoJG51bS1jb2xzICwgJGkpKSArIFxcXCIlXFxcIik7XFxyXFxuICAgICAgICAmLm0jeyRpfSB7XFxyXFxuICAgICAgICAgIHdpZHRoOiAkcGVyYztcXHJcXG4gICAgICAgICAgQGluY2x1ZGUgcmVzZXQtb2Zmc2V0O1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgICAgJGk6ICRpICsgMVxcclxcbiAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAkaTogMTtcXHJcXG4gICAgICBAd2hpbGUgJGkgPD0gJG51bS1jb2xzIHtcXHJcXG4gICAgICAgICRwZXJjOiB1bnF1b3RlKG1hdGguZGl2KDEwMCAsIG1hdGguZGl2KCRudW0tY29scyAsICRpKSkgKyBcXFwiJVxcXCIpO1xcclxcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jbGFzc2VzKFxcXCJtXFxcIiwgJGksICRwZXJjKTtcXHJcXG4gICAgICAgICRpOiAkaSArIDE7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIEBtZWRpYSAjeyRsYXJnZS1hbmQtdXB9IHtcXHJcXG5cXHJcXG4gICAgICAkaTogMTtcXHJcXG4gICAgICBAd2hpbGUgJGkgPD0gJG51bS1jb2xzIHtcXHJcXG4gICAgICAgICRwZXJjOiB1bnF1b3RlKG1hdGguZGl2KDEwMCAsIG1hdGguZGl2KCRudW0tY29scyAsICRpKSkgKyBcXFwiJVxcXCIpO1xcclxcbiAgICAgICAgJi5sI3skaX0ge1xcclxcbiAgICAgICAgICB3aWR0aDogJHBlcmM7XFxyXFxuICAgICAgICAgIEBpbmNsdWRlIHJlc2V0LW9mZnNldDtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgICRpOiAkaSArIDE7XFxyXFxuICAgICAgfVxcclxcblxcclxcbiAgICAgICRpOiAxO1xcclxcbiAgICAgIEB3aGlsZSAkaSA8PSAkbnVtLWNvbHMge1xcclxcbiAgICAgICAgJHBlcmM6IHVucXVvdGUobWF0aC5kaXYoMTAwICwgbWF0aC5kaXYoJG51bS1jb2xzICwgJGkpKSArIFxcXCIlXFxcIik7XFxyXFxuICAgICAgICBAaW5jbHVkZSBncmlkLWNsYXNzZXMoXFxcImxcXFwiLCAkaSwgJHBlcmMpO1xcclxcbiAgICAgICAgJGk6ICRpICsgMTtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgQG1lZGlhICN7JGV4dHJhLWxhcmdlLWFuZC11cH0ge1xcclxcblxcclxcbiAgICAgICRpOiAxO1xcclxcbiAgICAgIEB3aGlsZSAkaSA8PSAkbnVtLWNvbHMge1xcclxcbiAgICAgICAgJHBlcmM6IHVucXVvdGUobWF0aC5kaXYoMTAwICwgbWF0aC5kaXYoJG51bS1jb2xzICwgJGkpKSArIFxcXCIlXFxcIik7XFxyXFxuICAgICAgICAmLnhsI3skaX0ge1xcclxcbiAgICAgICAgICB3aWR0aDogJHBlcmM7XFxyXFxuICAgICAgICAgIEBpbmNsdWRlIHJlc2V0LW9mZnNldDtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgICRpOiAkaSArIDE7XFxyXFxuICAgICAgfVxcclxcblxcclxcbiAgICAgICRpOiAxO1xcclxcbiAgICAgIEB3aGlsZSAkaSA8PSAkbnVtLWNvbHMge1xcclxcbiAgICAgICAgJHBlcmM6IHVucXVvdGUobWF0aC5kaXYoMTAwICwgbWF0aC5kaXYoJG51bS1jb2xzICwgJGkpKSArIFxcXCIlXFxcIik7XFxyXFxuICAgICAgICBAaW5jbHVkZSBncmlkLWNsYXNzZXMoXFxcInhsXFxcIiwgJGksICRwZXJjKTtcXHJcXG4gICAgICAgICRpOiAkaSArIDE7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuICB9XFxyXFxufVxcclxcblwiLFwiQHVzZSBcXFwic2FzczptYXRoXFxcIjtcXHJcXG5zdmd7XFxyXFxuICAvL2ZpbGw6cmVkO1xcclxcbn1cXHJcXG4uc2lkZW5hdiB7XFxyXFxuICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxuICB3aWR0aDogJHNpZGVuYXYtd2lkdGg7XFxyXFxuICBsZWZ0OiAwO1xcclxcbiAgdG9wOiAwO1xcclxcbiAgbWFyZ2luOiAwO1xcclxcbiAgLy90cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xcclxcbiAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgKyA2MHB4KTtcXHJcXG4gIGhlaWdodDogLW1vei1jYWxjKDEwMCUpOyAvL1RlbXBvcmFyeSBGaXJlZm94IEZpeFxcclxcbiAgcGFkZGluZy1ib3R0b206IDYwcHg7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2lkZW5hdi1iZy1jb2xvcjtcXHJcXG4gIHotaW5kZXg6IDk5OTtcXHJcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxyXFxuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xcclxcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xcclxcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDUlKTtcXHJcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxcztcXHJcXG5cXHJcXG4gIC8vQGV4dGVuZCAuc2hhZG93LTE7XFxyXFxuXFxyXFxuICAvLyBSaWdodCBBbGlnblxcclxcbiAgJi5yaWdodC1hbGlnbmVkIHtcXHJcXG4gICAgcmlnaHQ6IDA7XFxyXFxuICAgIC8vdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwNSUpO1xcclxcbiAgICBsZWZ0OiBhdXRvO1xcclxcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAuY29sbGFwc2libGUge1xcclxcbiAgICBtYXJnaW46IDA7XFxyXFxuICB9XFxyXFxuXFxyXFxuXFxyXFxuICBsaSB7XFxyXFxuICAgIGZsb2F0OiBub25lO1xcclxcbiAgICAgLy9saW5lLWhlaWdodDogJHNpZGVuYXYtbGluZS1oZWlnaHQ7XFxyXFxuICAgIC8vIG1hcmdpbjogMTVweCAwO1xcclxcbiAgIC8vIGhlaWdodDogNDVweDtcXHJcXG4gICAgLmljb25TaWRlTGluayB7XFxyXFxuICAgICAgZGlzcGxheTogZmxleDtcXHJcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbiAgXFxyXFxuICAgICAgICBzdmcge1xcclxcbiAgICAgICAgICAgLy9zdHJva2U6cmdiYSgwLCAwLCAwLCAwLjIpO1xcclxcbiAgICAgICAgICAvLyBmaWxsOiB3aGl0ZTtcXHJcXG4gICAgICAgICAgc3Ryb2tlOnJnYmEoMCwgMCwgMCwgMC4yKTtcXHJcXG4gICAgICAgICAgIHdpZHRoOiAzMHB4O1xcclxcbiAgICAgICAgfVxcclxcbiAgXFxyXFxuICAgIH1cXHJcXG4gICAgJi5hY3RpdmUge1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxyXFxuICAgICAgc3ZnIHtcXHJcXG4gICAgICAgIHN0cm9rZTogd2hpdGUhaW1wb3J0YW50O1xcclxcbiAgICAgICAgLy9maWxsOiB3aGl0ZSFpbXBvcnRhbnQ7XFxyXFxuICAgICAgICB3aWR0aDogMzBweDtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgJi5sYXN0IHtcXHJcXG4gICAgICBwb3NpdGlvbjogc3RpY2t5O1xcclxcbiAgICAgIHRvcDogY2FsYygxMDAlIC0gI3skc2lkZW5hdi1pdGVtLWhlaWdodH0gLSAzNXB4KTtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgbGkgPiBhIHtcXHJcXG4gICAgY29sb3I6ICRzaWRlbmF2LWZvbnQtY29sb3I7XFxyXFxuICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgIGZvbnQtc2l6ZTogJHNpZGVuYXYtZm9udC1zaXplO1xcclxcbiAgICBmb250LXdlaWdodDogNzAwO1xcclxcbiAgICBoZWlnaHQ6ICRzaWRlbmF2LWl0ZW0taGVpZ2h0O1xcclxcbiAgICBsaW5lLWhlaWdodDogJHNpZGVuYXYtbGluZS1oZWlnaHQ7XFxyXFxuICAgIHBhZGRpbmc6IDAgKCRzaWRlbmF2LXBhZGRpbmcgKiAyKTtcXHJcXG5cXHJcXG4gICAgJjpob3ZlciB7XFxyXFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA1KTtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAmLmJ0bixcXHJcXG4gICAgJi5idG4tbGFyZ2UsXFxyXFxuICAgICYuYnRuLWZsYXQsXFxyXFxuICAgICYuYnRuLWZsb2F0aW5nIHtcXHJcXG4gICAgICBtYXJnaW46IDEwcHggMTVweDtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAmLmJ0bixcXHJcXG4gICAgJi5idG4tbGFyZ2UsXFxyXFxuICAgICYuYnRuLWZsb2F0aW5nIHtcXHJcXG4gICAgICBjb2xvcjogJGJ1dHRvbi1yYWlzZWQtY29sb3I7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgJi5idG4tZmxhdCB7XFxyXFxuICAgICAgY29sb3I6ICRidXR0b24tZmxhdC1jb2xvcjtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAmLmJ0bjpob3ZlcixcXHJcXG4gICAgJi5idG4tbGFyZ2U6aG92ZXIge1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oJGJ1dHRvbi1yYWlzZWQtYmFja2dyb3VuZCwgNSUpO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICYuYnRuLWZsb2F0aW5nOmhvdmVyIHtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLXJhaXNlZC1iYWNrZ3JvdW5kO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICYgPiBpLFxcclxcbiAgICAmID4gW2NsYXNzXj1cXFwibWRpLVxcXCJdLFxcclxcbiAgICBsaSA+IGEgPiBbY2xhc3MqPVxcXCJtZGktXFxcIl0sXFxyXFxuICAgICYgPiBpLnMtaWNvbiB7XFxyXFxuICAgICAgZmxvYXQ6IGxlZnQ7XFxyXFxuICAgICAgaGVpZ2h0OiAkc2lkZW5hdi1pdGVtLWhlaWdodDtcXHJcXG4gICAgICBsaW5lLWhlaWdodDogJHNpZGVuYXYtbGluZS1oZWlnaHQ7XFxyXFxuICAgICAgbWFyZ2luOiAwICgkc2lkZW5hdi1wYWRkaW5nICogMikgMCAwO1xcclxcbiAgICAgIHdpZHRoOiBtYXRoLmRpdigkc2lkZW5hdi1pdGVtLWhlaWdodCwgMik7XFxyXFxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC5kaXZpZGVyIHtcXHJcXG4gICAgbWFyZ2luOiBtYXRoLmRpdigkc2lkZW5hdi1wYWRkaW5nLCAyKSAwIDAgMDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC5zdWJoZWFkZXIge1xcclxcbiAgICAmOmhvdmVyIHtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICBjdXJzb3I6IGluaXRpYWw7XFxyXFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcclxcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcXHJcXG4gICAgZm9udC1zaXplOiAkc2lkZW5hdi1mb250LXNpemU7XFxyXFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxyXFxuICAgIGxpbmUtaGVpZ2h0OiAkc2lkZW5hdi1saW5lLWhlaWdodDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC51c2VyLXZpZXcge1xcclxcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICAgIHBhZGRpbmc6ICgkc2lkZW5hdi1wYWRkaW5nICogMikgKCRzaWRlbmF2LXBhZGRpbmcgKiAyKSAwO1xcclxcbiAgICBtYXJnaW4tYm90dG9tOiBtYXRoLmRpdigkc2lkZW5hdi1wYWRkaW5nLCAyKTtcXHJcXG5cXHJcXG4gICAgJiA+IGEge1xcclxcbiAgICAgICY6aG92ZXIge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuICAgICAgfVxcclxcblxcclxcbiAgICAgIGhlaWdodDogYXV0bztcXHJcXG4gICAgICBwYWRkaW5nOiAwO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC5iYWNrZ3JvdW5kIHtcXHJcXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xcclxcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgICB0b3A6IDA7XFxyXFxuICAgICAgcmlnaHQ6IDA7XFxyXFxuICAgICAgYm90dG9tOiAwO1xcclxcbiAgICAgIGxlZnQ6IDA7XFxyXFxuICAgICAgei1pbmRleDogLTE7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgLmNpcmNsZSxcXHJcXG4gICAgLm5hbWUsXFxyXFxuICAgIC5lbWFpbCB7XFxyXFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgLmNpcmNsZSB7XFxyXFxuICAgICAgaGVpZ2h0OiA2NHB4O1xcclxcbiAgICAgIHdpZHRoOiA2NHB4O1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC5uYW1lLFxcclxcbiAgICAuZW1haWwge1xcclxcbiAgICAgIGZvbnQtc2l6ZTogJHNpZGVuYXYtZm9udC1zaXplO1xcclxcbiAgICAgIGxpbmUtaGVpZ2h0OiBtYXRoLmRpdigkc2lkZW5hdi1saW5lLWhlaWdodCwgMik7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgLm5hbWUge1xcclxcbiAgICAgIG1hcmdpbi10b3A6IDE2cHg7XFxyXFxuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAuZW1haWwge1xcclxcbiAgICAgIHBhZGRpbmctYm90dG9tOiAxNnB4O1xcclxcbiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gVG91Y2ggaW50ZXJhY3Rpb25cXHJcXG4uZHJhZy10YXJnZXQge1xcclxcbiAgLy8gUmlnaHQgQWxpZ25cXHJcXG4gICYucmlnaHQtYWxpZ25lZCB7XFxyXFxuICAgIHJpZ2h0OiAwO1xcclxcbiAgfVxcclxcblxcclxcbiAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgd2lkdGg6IDEwcHg7XFxyXFxuICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxuICB0b3A6IDA7XFxyXFxuICB6LWluZGV4OiA5OTg7XFxyXFxufVxcclxcblxcclxcbi8vIEZpeGVkIFNpZGVuYXYgc2hvd25cXHJcXG4uc2lkZW5hdi5zaWRlbmF2LWZpeGVkIHtcXHJcXG4gIC8vIFJpZ2h0IEFsaWduXFxyXFxuICAmLnJpZ2h0LWFsaWduZWQge1xcclxcbiAgICByaWdodDogMDtcXHJcXG4gICAgbGVmdDogYXV0bztcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIGxlZnQ6IDA7XFxyXFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxyXFxuICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxufVxcclxcblxcclxcbi8vIEZpeGVkIFNpZGVuYXYgaGlkZSBvbiBzbWFsbGVyXFxyXFxuQG1lZGlhICN7JG1lZGl1bS1hbmQtZG93bn0ge1xcclxcbiAgLnNpZGVuYXYge1xcclxcbiAgICAmLnNpZGVuYXYtZml4ZWQge1xcclxcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTA1JSk7XFxyXFxuXFxyXFxuICAgICAgJi5yaWdodC1hbGlnbmVkIHtcXHJcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDUlKTtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgPiBhIHtcXHJcXG4gICAgICBwYWRkaW5nOiAwICRzaWRlbmF2LXBhZGRpbmc7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgLnVzZXItdmlldyB7XFxyXFxuICAgICAgcGFkZGluZzogJHNpZGVuYXYtcGFkZGluZyAkc2lkZW5hdi1wYWRkaW5nIDA7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLnNpZGVuYXYgLmNvbGxhcHNpYmxlLWJvZHkgPiB1bDpub3QoLmNvbGxhcHNpYmxlKSA+IGxpLmFjdGl2ZSxcXHJcXG4uc2lkZW5hdi5zaWRlbmF2LWZpeGVkIC5jb2xsYXBzaWJsZS1ib2R5ID4gdWw6bm90KC5jb2xsYXBzaWJsZSkgPiBsaS5hY3RpdmUge1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktY29sb3I7XFxyXFxuXFxyXFxuICBhIHtcXHJcXG4gICAgY29sb3I6ICRzaWRlbmF2LWJnLWNvbG9yO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4uc2lkZW5hdiAuY29sbGFwc2libGUtYm9keSB7XFxyXFxuICBwYWRkaW5nOiAwO1xcclxcbn1cXHJcXG5cXHJcXG4uc2lkZW5hdi1vdmVybGF5IHtcXHJcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXHJcXG4gIHRvcDogMDtcXHJcXG4gIGxlZnQ6IDA7XFxyXFxuICByaWdodDogMDtcXHJcXG4gIG9wYWNpdHk6IDA7XFxyXFxuICBoZWlnaHQ6IDEyMHZoO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xcclxcbiAgei1pbmRleDogOTk3O1xcclxcbiAgZGlzcGxheTogbm9uZTtcXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuICAud2l0aC1zaWRlLW5hdi1vcGVue1xcclxcbiAgICBwYWRkaW5nLWxlZnQ6IDMwMHB4O1xcclxcbiAgICB0cmFuc2l0aW9uOiBwYWRkaW5nIDFzO1xcclxcbiAgfVxcclxcblwiLFwiLy8gc2hhcmVkIHN0eWxlc1xcclxcblxcclxcbi5idG4sXFxyXFxuLmJ0bi1mbGF0IHtcXHJcXG4gIGJvcmRlcjogJGJ1dHRvbi1ib3JkZXI7XFxyXFxuICBib3JkZXItcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcXHJcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHJcXG4gIGhlaWdodDogJGJ1dHRvbi1oZWlnaHQ7XFxyXFxuICBsaW5lLWhlaWdodDogJGJ1dHRvbi1oZWlnaHQ7XFxyXFxuICBwYWRkaW5nOiAkYnV0dG9uLXBhZGRpbmc7XFxyXFxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xcclxcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXHJcXG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8vIEdldHMgcmlkIG9mIHRhcCBhY3RpdmUgc3RhdGVcXHJcXG59XFxyXFxuXFxyXFxuLy8gRGlzYWJsZWQgc2hhcmVkIHN0eWxlXFxyXFxuLmJ0bi5kaXNhYmxlZCxcXHJcXG4uYnRuLWZsb2F0aW5nLmRpc2FibGVkLFxcclxcbi5idG4tbGFyZ2UuZGlzYWJsZWQsXFxyXFxuLmJ0bi1zbWFsbC5kaXNhYmxlZCxcXHJcXG4uYnRuLWZsYXQuZGlzYWJsZWQsXFxyXFxuLmJ0bjpkaXNhYmxlZCxcXHJcXG4uYnRuLWZsb2F0aW5nOmRpc2FibGVkLFxcclxcbi5idG4tbGFyZ2U6ZGlzYWJsZWQsXFxyXFxuLmJ0bi1zbWFsbDpkaXNhYmxlZCxcXHJcXG4uYnRuLWZsYXQ6ZGlzYWJsZWQsXFxyXFxuLmJ0bltkaXNhYmxlZF0sXFxyXFxuLmJ0bi1mbG9hdGluZ1tkaXNhYmxlZF0sXFxyXFxuLmJ0bi1sYXJnZVtkaXNhYmxlZF0sXFxyXFxuLmJ0bi1zbWFsbFtkaXNhYmxlZF0sXFxyXFxuLmJ0bi1mbGF0W2Rpc2FibGVkXSB7XFxyXFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tZGlzYWJsZWQtYmFja2dyb3VuZCAhaW1wb3J0YW50O1xcclxcbiAgYm94LXNoYWRvdzogbm9uZTtcXHJcXG4gIGNvbG9yOiAkYnV0dG9uLWRpc2FibGVkLWNvbG9yICFpbXBvcnRhbnQ7XFxyXFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxyXFxuICAmOmhvdmVyIHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi1kaXNhYmxlZC1iYWNrZ3JvdW5kICFpbXBvcnRhbnQ7XFxyXFxuICAgIGNvbG9yOiAkYnV0dG9uLWRpc2FibGVkLWNvbG9yICFpbXBvcnRhbnQ7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi8vIFNoYXJlZCBpY29uIHN0eWxlc1xcclxcbi5idG4sXFxyXFxuLmJ0bi1mbG9hdGluZyxcXHJcXG4uYnRuLWxhcmdlLFxcclxcbi5idG4tc21hbGwsXFxyXFxuLmJ0bi1mbGF0IHtcXHJcXG4gIGZvbnQtc2l6ZTogJGJ1dHRvbi1mb250LXNpemU7XFxyXFxuICBvdXRsaW5lOiAwO1xcclxcbiAgaSB7XFxyXFxuICAgIGZvbnQtc2l6ZTogJGJ1dHRvbi1pY29uLWZvbnQtc2l6ZTtcXHJcXG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi8vIFNoYXJlZCBmb2N1cyBidXR0b24gc3R5bGVcXHJcXG4uYnRuLFxcclxcbi5idG4tZmxvYXRpbmcge1xcclxcbiAgJjpmb2N1cyB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkYnV0dG9uLXJhaXNlZC1iYWNrZ3JvdW5kLCAxMCUpO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBSYWlzZWQgQnV0dG9uXFxyXFxuLmJ0biB7XFxyXFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxyXFxuICBjb2xvcjogJGJ1dHRvbi1yYWlzZWQtY29sb3I7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLXJhaXNlZC1iYWNrZ3JvdW5kO1xcclxcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgbGV0dGVyLXNwYWNpbmc6IC41cHg7XFxyXFxuICBAZXh0ZW5kIC5zaGFkb3ctMTtcXHJcXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjJzIGVhc2Utb3V0O1xcclxcbiAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgJjpob3ZlciB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tcmFpc2VkLWJhY2tncm91bmQtaG92ZXI7XFxyXFxuICAgIEBleHRlbmQgLnNoYWRvdy0xLWhhbGY7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi8vIEZsb2F0aW5nIGJ1dHRvblxcclxcbi5idG4tZmxvYXRpbmcge1xcclxcbiAgJjpob3ZlciB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tZmxvYXRpbmctYmFja2dyb3VuZC1ob3ZlcjtcXHJcXG4gICAgQGV4dGVuZCAuc2hhZG93LTEtaGFsZjtcXHJcXG4gIH1cXHJcXG4gICY6YmVmb3JlIHtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogMDtcXHJcXG4gIH1cXHJcXG4gICYuYnRuLWxhcmdlIHtcXHJcXG4gICAgJi5oYWxmd2F5LWZhYiB7XFxyXFxuICAgICAgYm90dG9tOiBjYWxjKCRidXR0b24tZmxvYXRpbmctbGFyZ2Utc2l6ZSAvIDIpO1xcclxcbiAgICB9XFxyXFxuICAgIHdpZHRoOiAkYnV0dG9uLWZsb2F0aW5nLWxhcmdlLXNpemU7XFxyXFxuICAgIGhlaWdodDogJGJ1dHRvbi1mbG9hdGluZy1sYXJnZS1zaXplO1xcclxcbiAgICBwYWRkaW5nOiAwO1xcclxcbiAgICBpIHtcXHJcXG4gICAgICBsaW5lLWhlaWdodDogJGJ1dHRvbi1mbG9hdGluZy1sYXJnZS1zaXplO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmLmJ0bi1zbWFsbCB7XFxyXFxuICAgICYuaGFsZndheS1mYWIge1xcclxcbiAgICAgIGJvdHRvbTogY2FsYygkYnV0dG9uLWZsb2F0aW5nLXNtYWxsLXNpemUgLyAyKTtcXHJcXG4gICAgfVxcclxcbiAgICB3aWR0aDogJGJ1dHRvbi1mbG9hdGluZy1zbWFsbC1zaXplO1xcclxcbiAgICBoZWlnaHQ6ICRidXR0b24tZmxvYXRpbmctc21hbGwtc2l6ZTtcXHJcXG4gICAgaSB7XFxyXFxuICAgICAgbGluZS1oZWlnaHQ6ICRidXR0b24tZmxvYXRpbmctc21hbGwtc2l6ZTtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgJi5oYWxmd2F5LWZhYiB7XFxyXFxuICAgICYubGVmdCB7XFxyXFxuICAgICAgcmlnaHQ6IGF1dG87XFxyXFxuICAgICAgbGVmdDogMjRweDtcXHJcXG4gICAgfVxcclxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIHJpZ2h0OiAyNHB4O1xcclxcbiAgICBib3R0b206IGNhbGMoJGJ1dHRvbi1mbG9hdGluZy1zaXplIC8gMik7XFxyXFxuICB9XFxyXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICBjb2xvcjogJGJ1dHRvbi1mbG9hdGluZy1jb2xvcjtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxyXFxuICB6LWluZGV4OiAxO1xcclxcbiAgd2lkdGg6ICRidXR0b24tZmxvYXRpbmctc2l6ZTtcXHJcXG4gIGhlaWdodDogJGJ1dHRvbi1mbG9hdGluZy1zaXplO1xcclxcbiAgbGluZS1oZWlnaHQ6ICRidXR0b24tZmxvYXRpbmctc2l6ZTtcXHJcXG4gIHBhZGRpbmc6IDA7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLWZsb2F0aW5nLWJhY2tncm91bmQ7XFxyXFxuICBib3JkZXItcmFkaXVzOiAkYnV0dG9uLWZsb2F0aW5nLXJhZGl1cztcXHJcXG4gIEBleHRlbmQgLnNoYWRvdy0xO1xcclxcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuM3M7XFxyXFxuICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcclxcbiAgaSB7XFxyXFxuICAgIHdpZHRoOiBpbmhlcml0O1xcclxcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgY29sb3I6ICRidXR0b24tZmxvYXRpbmctY29sb3I7XFxyXFxuICAgIGZvbnQtc2l6ZTogJGJ1dHRvbi1sYXJnZS1pY29uLWZvbnQtc2l6ZTtcXHJcXG4gICAgbGluZS1oZWlnaHQ6ICRidXR0b24tZmxvYXRpbmctc2l6ZTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gYnV0dG9uIGZpeFxcclxcbmJ1dHRvbi5idG4tZmxvYXRpbmcge1xcclxcbiAgYm9yZGVyOiAkYnV0dG9uLWJvcmRlcjtcXHJcXG59XFxyXFxuXFxyXFxuLy8gRml4ZWQgQWN0aW9uIEJ1dHRvblxcclxcbi5maXhlZC1hY3Rpb24tYnRuIHtcXHJcXG4gICYuYWN0aXZlIHtcXHJcXG4gICAgdWwge1xcclxcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIERpcmVjdGlvbnNcXHJcXG4gICYuZGlyZWN0aW9uLWxlZnQsXFxyXFxuICAmLmRpcmVjdGlvbi1yaWdodCB7XFxyXFxuICAgIHBhZGRpbmc6IDAgMCAwIDE1cHg7XFxyXFxuICAgIHVsIHtcXHJcXG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcXHJcXG4gICAgICByaWdodDogNjRweDtcXHJcXG4gICAgICB0b3A6IDUwJTtcXHJcXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XFxyXFxuICAgICAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgICAgIGxlZnQ6IGF1dG87XFxyXFxuICAgICAgLyp3aWR0aCAxMDAlIG9ubHkgZ29lcyB0byB3aWR0aCBvZiBidXR0b24gY29udGFpbmVyICovXFxyXFxuICAgICAgd2lkdGg6IDUwMHB4O1xcclxcbiAgICAgIGxpIHtcXHJcXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHJcXG4gICAgICAgIG1hcmdpbjogNy41cHggMTVweCAwIDA7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuICAmLmRpcmVjdGlvbi1yaWdodCB7XFxyXFxuICAgIHBhZGRpbmc6IDAgMTVweCAwIDA7XFxyXFxuICAgIHVsIHtcXHJcXG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xcclxcbiAgICAgIGRpcmVjdGlvbjogcnRsO1xcclxcbiAgICAgIGxlZnQ6IDY0cHg7XFxyXFxuICAgICAgcmlnaHQ6IGF1dG87XFxyXFxuICAgICAgbGkge1xcclxcbiAgICAgICAgbWFyZ2luOiA3LjVweCAwIDAgMTVweDtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG4gICYuZGlyZWN0aW9uLWJvdHRvbSB7XFxyXFxuICAgIHBhZGRpbmc6IDAgMCAxNXB4IDA7XFxyXFxuICAgIHVsIHtcXHJcXG4gICAgICB0b3A6IDY0cHg7XFxyXFxuICAgICAgYm90dG9tOiBhdXRvO1xcclxcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xcclxcbiAgICAgIGxpIHtcXHJcXG4gICAgICAgIG1hcmdpbjogMTVweCAwIDAgMDtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG4gICYudG9vbGJhciB7XFxyXFxuICAgICYuYWN0aXZlIHtcXHJcXG4gICAgICAmPmEgaSB7XFxyXFxuICAgICAgICBvcGFjaXR5OiAwO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcbiAgICBwYWRkaW5nOiAwO1xcclxcbiAgICBoZWlnaHQ6ICRidXR0b24tZmxvYXRpbmctbGFyZ2Utc2l6ZTtcXHJcXG4gICAgdWwge1xcclxcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgICAgdG9wOiAwO1xcclxcbiAgICAgIGJvdHRvbTogMDtcXHJcXG4gICAgICB6LWluZGV4OiAxO1xcclxcbiAgICAgIGxpIHtcXHJcXG4gICAgICAgIGZsZXg6IDE7XFxyXFxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAgICAgICBtYXJnaW46IDA7XFxyXFxuICAgICAgICBoZWlnaHQ6IDEwMCU7XFxyXFxuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xcclxcbiAgICAgICAgYSB7XFxyXFxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xcclxcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICAgICAgICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XFxyXFxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xcclxcbiAgICAgICAgICBjb2xvcjogI2ZmZjtcXHJcXG4gICAgICAgICAgbGluZS1oZWlnaHQ6ICRidXR0b24tZmxvYXRpbmctbGFyZ2Utc2l6ZTtcXHJcXG4gICAgICAgICAgei1pbmRleDogMTtcXHJcXG4gICAgICAgICAgaSB7XFxyXFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxyXFxuICAgICAgICAgIH1cXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXHJcXG4gIHJpZ2h0OiAyM3B4O1xcclxcbiAgYm90dG9tOiAyM3B4O1xcclxcbiAgcGFkZGluZy10b3A6IDE1cHg7XFxyXFxuICBtYXJnaW4tYm90dG9tOiAwO1xcclxcbiAgei1pbmRleDogOTk3O1xcclxcbiAgdWwge1xcclxcbiAgICBsZWZ0OiAwO1xcclxcbiAgICByaWdodDogMDtcXHJcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIGJvdHRvbTogNjRweDtcXHJcXG4gICAgbWFyZ2luOiAwO1xcclxcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XFxyXFxuICAgIGxpIHtcXHJcXG4gICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xcclxcbiAgICB9XFxyXFxuICAgIGEuYnRuLWZsb2F0aW5nIHtcXHJcXG4gICAgICBvcGFjaXR5OiAwO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuICAuZmFiLWJhY2tkcm9wIHtcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICB0b3A6IDA7XFxyXFxuICAgIGxlZnQ6IDA7XFxyXFxuICAgIHotaW5kZXg6IC0xO1xcclxcbiAgICB3aWR0aDogJGJ1dHRvbi1mbG9hdGluZy1zaXplO1xcclxcbiAgICBoZWlnaHQ6ICRidXR0b24tZmxvYXRpbmctc2l6ZTtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi1mbG9hdGluZy1iYWNrZ3JvdW5kO1xcclxcbiAgICBib3JkZXItcmFkaXVzOiAkYnV0dG9uLWZsb2F0aW5nLXJhZGl1cztcXHJcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gRmxhdCBidXR0b25cXHJcXG4uYnRuLWZsYXQge1xcclxcbiAgYm94LXNoYWRvdzogbm9uZTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgY29sb3I6ICRidXR0b24tZmxhdC1jb2xvcjtcXHJcXG4gIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjJzO1xcclxcbiAgJjpmb2N1cyxcXHJcXG4gICY6aG92ZXIge1xcclxcbiAgICBib3gtc2hhZG93OiBub25lO1xcclxcbiAgfVxcclxcbiAgJjpmb2N1cyB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjEpO1xcclxcbiAgfVxcclxcbiAgJi5kaXNhYmxlZCxcXHJcXG4gICYuYnRuLWZsYXRbZGlzYWJsZWRdICB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxyXFxuICAgIGNvbG9yOiAkYnV0dG9uLWZsYXQtZGlzYWJsZWQtY29sb3IgIWltcG9ydGFudDtcXHJcXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBMYXJnZSBidXR0b25cXHJcXG4uYnRuLWxhcmdlIHtcXHJcXG4gIEBleHRlbmQgLmJ0bjtcXHJcXG4gIGhlaWdodDogJGJ1dHRvbi1sYXJnZS1oZWlnaHQ7XFxyXFxuICBsaW5lLWhlaWdodDogJGJ1dHRvbi1sYXJnZS1oZWlnaHQ7XFxyXFxuICBmb250LXNpemU6ICRidXR0b24tbGFyZ2UtZm9udC1zaXplO1xcclxcbiAgcGFkZGluZzogMCAyOHB4O1xcclxcblxcclxcbiAgaSB7XFxyXFxuICAgIGZvbnQtc2l6ZTogJGJ1dHRvbi1sYXJnZS1pY29uLWZvbnQtc2l6ZTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gU21hbGwgYnV0dG9uXFxyXFxuLmJ0bi1zbWFsbCB7XFxyXFxuICBAZXh0ZW5kIC5idG47XFxyXFxuICBoZWlnaHQ6ICRidXR0b24tc21hbGwtaGVpZ2h0O1xcclxcbiAgbGluZS1oZWlnaHQ6ICRidXR0b24tc21hbGwtaGVpZ2h0O1xcclxcbiAgZm9udC1zaXplOiAkYnV0dG9uLXNtYWxsLWZvbnQtc2l6ZTtcXHJcXG4gIGkge1xcclxcbiAgICBmb250LXNpemU6ICRidXR0b24tc21hbGwtaWNvbi1mb250LXNpemU7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi8vIEJsb2NrIGJ1dHRvblxcclxcbi5idG4tYmxvY2sge1xcclxcbiAgZGlzcGxheTogYmxvY2s7XFxyXFxufVxcclxcblwiLFwiJG1haW5Db2xvcjojMDA2MmQ2O1xcclxcbiRvdGhlcm1haW46IzAzNGQ4MjtcXHJcXG4kc2Vjb25kQ29sb3I6IzAwNzdGQTtcXHJcXG4kdGhpcmRDb2xvcjojMDliZGRkO1xcclxcbiRmb3J0aENvbG9yOiNjYmU3ZmU7XFxyXFxuXFxyXFxuJHRhYjE6ICRmb3J0aENvbG9yO1xcclxcbiR0YWIyOiBkYXJrZW4oJGZvcnRoQ29sb3IsMTUlKTtcXHJcXG4kdGFiMzogZGFya2VuKCRmb3J0aENvbG9yLDMwJSk7XFxyXFxuXFxyXFxuLmNvbW11blRhYkhlYWRlciB7XFxyXFxuICBoZWlnaHQ6IDEwMHB4O1xcclxcbiAgcGFkZGluZzogNDBweDtcXHJcXG59XFxyXFxuXFxyXFxuLnRhYnMge1xcclxcbiAgbWluLWhlaWdodDogY2FsYygxMDAlIC0gMTUwcHgpO1xcclxcbiAgbWFyZ2luLXRvcDogMzBweDtcXHJcXG4gIHBhZGRpbmc6MCFpbXBvcnRhbnQ7XFxyXFxuICBib3JkZXItcmFkaXVzOiA0MHB4IWltcG9ydGFudDtcXHJcXG4uaW5uZXJwYWdle1xcclxcbiAgbWluLWhlaWdodDogNzBWSCFpbXBvcnRhbnQ7XFxyXFxufVxcclxcbiAgLnRhYnMtaGVhZGVyLW92ZXJsYXkge1xcclxcbiAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICBoZWlnaHQ6IDEwMHB4O1xcclxcbiAgfVxcclxcblxcclxcbiAgJi5hY3RpdmVUYWItMCB7XFxyXFxuICAgIC50YWItaGVhZGVyLW92ZXIwIHtcXHJcXG4gICAgICBmbGV4OiAxO1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWIyO1xcclxcbiAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHggMCAwIDA7XFxyXFxuXFxyXFxuICAgICAgLnRhYi1oZWFkZXIge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYjE7XFxyXFxuICAgICAgICBib3JkZXItcmFkaXVzOiA0MHB4IDQwcHggMCAwO1xcclxcbiAgICAgICAgQGV4dGVuZCAuY29tbXVuVGFiSGVhZGVyO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAudGFiLWhlYWRlci1vdmVyMSB7XFxyXFxuICAgICAgZmxleDogMTtcXHJcXG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMC4yNXR1cm4sICR0YWIxLCAkdGFiMyk7XFxyXFxuICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDAgMDtcXHJcXG5cXHJcXG4gICAgICAudGFiLWhlYWRlciB7XFxyXFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFiMjtcXHJcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAgNDBweCAwIDQwcHg7XFxyXFxuICAgICAgICBAZXh0ZW5kIC5jb21tdW5UYWJIZWFkZXI7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC50YWItaGVhZGVyLW92ZXIyIHtcXHJcXG4gICAgICBmbGV4OiAxO1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWIyO1xcclxcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAgNDBweCAwIDA7XFxyXFxuXFxyXFxuICAgICAgLnRhYi1oZWFkZXIge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYjM7XFxyXFxuICAgICAgICBib3JkZXItcmFkaXVzOiAwIDQwcHggMCA0MHB4O1xcclxcbiAgICAgICAgQGV4dGVuZCAuY29tbXVuVGFiSGVhZGVyO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgJi5hY3RpdmVUYWItMSB7XFxyXFxuICAgIC50YWItaGVhZGVyLW92ZXIwIHtcXHJcXG4gICAgICBmbGV4OiAxO1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWIxO1xcclxcbiAgICAgIC8vbGluZWFyLWdyYWRpZW50KDAuMjV0dXJuLCAkdGFiMSwgJHRhYjEpO1xcclxcbiAgICAgIC8vbGluZWFyLWdyYWRpZW50KDAuMjV0dXJuLCAkdGFiMSwgJHRhYjEpO1xcclxcbiAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHggMCAwIDA7XFxyXFxuXFxyXFxuICAgICAgLnRhYi1oZWFkZXIge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYjI7XFxyXFxuICAgICAgICAvLyBib3JkZXItcmFkaXVzOiA0MHB4IDQwcHggMCAwO1xcclxcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNDBweCAwIDQwcHggMDtcXHJcXG4gICAgICAgIEBleHRlbmQgLmNvbW11blRhYkhlYWRlcjtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgLnRhYi1oZWFkZXItb3ZlcjEge1xcclxcbiAgICAgIGZsZXg6IDE7XFxyXFxuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDAuMjV0dXJuLCAkdGFiMiwgJHRhYjMpO1xcclxcbiAgICAgIC8vJHRhYjI7XFxyXFxuICAgICAgLy9ib3JkZXItcmFkaXVzOiA0MHB4ICAwIDA7XFxyXFxuICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDAgMDtcXHJcXG5cXHJcXG4gICAgICAudGFiLWhlYWRlciB7XFxyXFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFiMTtcXHJcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHggNDBweCAwIDA7XFxyXFxuICAgICAgICBAZXh0ZW5kIC5jb21tdW5UYWJIZWFkZXI7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC50YWItaGVhZGVyLW92ZXIyIHtcXHJcXG4gICAgICBmbGV4OiAxO1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWIxO1xcclxcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAgNDBweCAwIDA7XFxyXFxuXFxyXFxuICAgICAgLnRhYi1oZWFkZXIge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYjM7XFxyXFxuICAgICAgICBib3JkZXItcmFkaXVzOiAwIDQwcHggMCA0MHB4O1xcclxcbiAgICAgICAgQGV4dGVuZCAuY29tbXVuVGFiSGVhZGVyO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcblxcclxcbiAgJi5hY3RpdmVUYWItMiB7XFxyXFxuICAgIC50YWItaGVhZGVyLW92ZXIwIHtcXHJcXG4gICAgICBmbGV4OiAxO1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWIzO1xcclxcbiAgICAgIC8vbGluZWFyLWdyYWRpZW50KDAuMjV0dXJuLCAkdGFiMSwgJHRhYjEpO1xcclxcbiAgICAgIC8vbGluZWFyLWdyYWRpZW50KDAuMjV0dXJuLCAkdGFiMSwgJHRhYjEpO1xcclxcbiAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHggMCAwIDA7XFxyXFxuXFxyXFxuICAgICAgLnRhYi1oZWFkZXIge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYjI7XFxyXFxuICAgICAgICAvLyBib3JkZXItcmFkaXVzOiA0MHB4IDQwcHggMCAwO1xcclxcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNDBweCAwIDQwcHggMDtcXHJcXG4gICAgICAgIEBleHRlbmQgLmNvbW11blRhYkhlYWRlcjtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgLnRhYi1oZWFkZXItb3ZlcjEge1xcclxcbiAgICAgIGZsZXg6IDE7XFxyXFxuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDAuMjV0dXJuLCAkdGFiMiwgJHRhYjEpO1xcclxcbiAgICAgIC8vJHRhYjI7XFxyXFxuICAgICAgLy9ib3JkZXItcmFkaXVzOiA0MHB4ICAwIDA7XFxyXFxuICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDAgMDtcXHJcXG5cXHJcXG4gICAgICAudGFiLWhlYWRlciB7XFxyXFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFiMztcXHJcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHggMCA0MHB4IDA7XFxyXFxuICAgICAgICBAZXh0ZW5kIC5jb21tdW5UYWJIZWFkZXI7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC50YWItaGVhZGVyLW92ZXIyIHtcXHJcXG4gICAgICBmbGV4OiAxO1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWIzO1xcclxcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAgNDBweCAwIDA7XFxyXFxuXFxyXFxuICAgICAgLnRhYi1oZWFkZXIge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYjE7XFxyXFxuICAgICAgICBib3JkZXItcmFkaXVzOiA0MHB4IDQwcHggMCAwO1xcclxcbiAgICAgICAgQGV4dGVuZCAuY29tbXVuVGFiSGVhZGVyO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgLnRhYi1jb250ZW50IHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYjE7XFxyXFxuICAgIHBhZGRpbmc6IDEwcHg7XFxyXFxuICAgIC8vYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNywgMjA1LCAyMDUpO1xcclxcbiAgICBib3JkZXItdG9wOiAwO1xcclxcbiAgICBtaW4taGVpZ2h0OiA3MHZoO1xcclxcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgNDBweCA0MHB4O1xcclxcbiAgICBwYWRkaW5nLWJvdHRvbTogMjBweDtcXHJcXG4gXFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi8vIC50YWJzIHtcXHJcXG4vLyAgICAgLy8gZGlzcGxheTogZmxleDtcXHJcXG4vLyAgICAgLy8gZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXHJcXG4vLyAgICAgLnRhYnMtaGVhZGVyLW92ZXJsYXkge1xcclxcbi8vICAgICAgICAgZGlzcGxheTogZmxleDtcXHJcXG4vLyAgICAgICAgIGhlaWdodDogMTAwcHg7XFxyXFxuXFxyXFxuLy8gICAgICAgICAudGFiLWhlYWRlci1vdmVyIHtcXHJcXG4vLyAgICAgICAgICAgICBmbGV4OiAxO1xcclxcbi8vICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGhvdHBpbms7XFxyXFxuLy8gICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMCA0MHB4IDAgMDtcXHJcXG4vLyAgICAgICAgICAgICAmLmFjdGl2ZSB7XFxyXFxuLy8gICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxNTUsIDE1MiwgMTUzKTtcXHJcXG4vLyAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNDBweCAwIDAgMDtcXHJcXG4vLyAgICAgICAgICAgICB9XFxyXFxuLy8gICAgICAgICAgICAgLnRhYi1oZWFkZXIge1xcclxcbi8vICAgICAgICAgICAgICAgICAmLmFjdGl2ZSB7XFxyXFxuLy8gICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBob3RwaW5rO1xcclxcbi8vICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNDBweCA0MHB4IDAgMDtcXHJcXG4vLyAgICAgICAgICAgICAgICAgfVxcclxcbi8vICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwcHggNDBweCAwIDQwcHg7XFxyXFxuLy8gICAgICAgICAgICAgICAgIHBhZGRpbmc6IDQwcHg7XFxyXFxuLy8gICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxNTUsIDE1MiwgMTUzKTtcXHJcXG4vLyAgICAgICAgICAgICB9XFxyXFxuLy8gICAgICAgICB9XFxyXFxuLy8gICAgIH1cXHJcXG5cXHJcXG4vLyAgICAgLnRhYi1jb250ZW50IHtcXHJcXG4vLyAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGhvdHBpbms7XFxyXFxuLy8gICAgICAgICBwYWRkaW5nOiAxMHB4O1xcclxcbi8vICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNywgMjA1LCAyMDUpO1xcclxcbi8vICAgICAgICAgYm9yZGVyLXRvcDogMDtcXHJcXG4vLyAgICAgfVxcclxcbi8vIH1cXHJcXG5cIixcIi5sb2FkZXItb3ZlcmxheSB7XFxyXFxuICAgIHotaW5kZXg6IDk5OTtcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICBoZWlnaHQ6IDEwMHZoO1xcclxcbiAgICB3aWR0aDogMTAwdnc7XFxyXFxuICAgIHRvcDogMDtcXHJcXG4gICAgbGVmdDogMDtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDIsIDEwMCwgMTAwLCAwLjYwMyk7XFxyXFxuICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcclxcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcclxcbiAgICAubG9hZGVyIHtcXHJcXG4gICAgICAgIGJvcmRlcjogN3B4IHNvbGlkICNmM2YzZjM7IC8qIExpZ2h0IGdyZXkgKi9cXHJcXG4gICAgICAgIGJvcmRlci10b3A6IDdweCBzb2xpZCAjMmVhMmNjOyAvKiBCbHVlICovXFxyXFxuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxyXFxuICAgICAgICB3aWR0aDogNzBweDtcXHJcXG4gICAgICAgIGhlaWdodDogNzBweDtcXHJcXG4gICAgICAgIGFuaW1hdGlvbjogc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7XFxyXFxuICAgIH1cXHJcXG4gICAgLmxvYWRlci10ZXh0e1xcclxcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcXHJcXG4gICAgICAgIGZvbnQtc2l6ZTogMjVweDtcXHJcXG4gICAgICAgIGNvbG9yOiAjMmVhMmNjO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIEBrZXlmcmFtZXMgc3BpbiB7XFxyXFxuICAgICAgICAwJSB7XFxyXFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgICAxMDAlIHtcXHJcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcclxcbiAgICAgICAgfVxcclxcbiAgICB9XFxyXFxufVxcclxcblwiLFwiXFxyXFxuXFxyXFxuLmNhcmQtcGFuZWwge1xcclxcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAuMjVzO1xcclxcbiAgcGFkZGluZzogJGNhcmQtcGFkZGluZztcXHJcXG4gIG1hcmdpbjogJGVsZW1lbnQtdG9wLW1hcmdpbiAwICRlbGVtZW50LWJvdHRvbS1tYXJnaW4gMDtcXHJcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXHJcXG4gIEBleHRlbmQgLnNoYWRvdy0xO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNhcmQtYmctY29sb3I7XFxyXFxufVxcclxcblxcclxcbi5jYXJkIHtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIG1hcmdpbjogJGVsZW1lbnQtdG9wLW1hcmdpbiAwICRlbGVtZW50LWJvdHRvbS1tYXJnaW4gMDtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICRjYXJkLWJnLWNvbG9yO1xcclxcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAuMjVzO1xcclxcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcclxcbiAgQGV4dGVuZCAuc2hhZG93LTE7XFxyXFxuXFxyXFxuXFxyXFxuICAuY2FyZC10aXRsZSB7XFxyXFxuICAgIGZvbnQtc2l6ZTogMjRweDtcXHJcXG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcXHJcXG4gICAgJi5hY3RpdmF0b3Ige1xcclxcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgLy8gQ2FyZCBTaXplc1xcclxcbiAgJi5zbWFsbCwgJi5tZWRpdW0sICYubGFyZ2Uge1xcclxcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuXFxyXFxuICAgIC5jYXJkLWltYWdlIHtcXHJcXG4gICAgICBtYXgtaGVpZ2h0OiA2MCU7XFxyXFxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXHJcXG4gICAgfVxcclxcbiAgICAuY2FyZC1pbWFnZSArIC5jYXJkLWNvbnRlbnQge1xcclxcbiAgICAgIG1heC1oZWlnaHQ6IDQwJTtcXHJcXG4gICAgfVxcclxcbiAgICAuY2FyZC1jb250ZW50IHtcXHJcXG4gICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xcclxcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxyXFxuICAgIH1cXHJcXG4gICAgLmNhcmQtYWN0aW9uIHtcXHJcXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgICAgYm90dG9tOiAwO1xcclxcbiAgICAgIGxlZnQ6IDA7XFxyXFxuICAgICAgcmlnaHQ6IDA7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gICYuc21hbGwge1xcclxcbiAgICBoZWlnaHQ6IDMwMHB4O1xcclxcbiAgfVxcclxcblxcclxcbiAgJi5tZWRpdW0ge1xcclxcbiAgICBoZWlnaHQ6IDQwMHB4O1xcclxcbiAgfVxcclxcblxcclxcbiAgJi5sYXJnZSB7XFxyXFxuICAgIGhlaWdodDogNTAwcHg7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAvLyBIb3Jpem9udGFsIENhcmRzXFxyXFxuICAmLmhvcml6b250YWwge1xcclxcbiAgICAmLnNtYWxsLCAmLm1lZGl1bSwgJi5sYXJnZSB7XFxyXFxuICAgICAgLmNhcmQtaW1hZ2Uge1xcclxcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgICAgICAgbWF4LWhlaWdodDogbm9uZTtcXHJcXG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xcclxcblxcclxcbiAgICAgICAgaW1nIHtcXHJcXG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcblxcclxcbiAgICBkaXNwbGF5OiBmbGV4O1xcclxcblxcclxcbiAgICAuY2FyZC1pbWFnZSB7XFxyXFxuICAgICAgbWF4LXdpZHRoOiA1MCU7XFxyXFxuICAgICAgaW1nIHtcXHJcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDJweCAwIDAgMnB4O1xcclxcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xcclxcbiAgICAgICAgd2lkdGg6IGF1dG87XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC5jYXJkLXN0YWNrZWQge1xcclxcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXHJcXG4gICAgICBmbGV4OiAxO1xcclxcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG5cXHJcXG4gICAgICAuY2FyZC1jb250ZW50IHtcXHJcXG4gICAgICAgIGZsZXgtZ3JvdzogMTtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIFN0aWNreSBBY3Rpb24gU2VjdGlvblxcclxcbiAgJi5zdGlja3ktYWN0aW9uIHtcXHJcXG4gICAgLmNhcmQtYWN0aW9uIHtcXHJcXG4gICAgICB6LWluZGV4OiAyO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC5jYXJkLXJldmVhbCB7XFxyXFxuICAgICAgei1pbmRleDogMTtcXHJcXG4gICAgICBwYWRkaW5nLWJvdHRvbTogNjRweDtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcblxcclxcblxcclxcblxcclxcbiAgLmNhcmQtaW1hZ2Uge1xcclxcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuXFxyXFxuICAgIC8vIEltYWdlIGJhY2tncm91bmQgZm9yIGNvbnRlbnRcXHJcXG4gICAgaW1nIHtcXHJcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gICAgICBib3JkZXItcmFkaXVzOiAycHggMnB4IDAgMDtcXHJcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICAgICAgbGVmdDogMDtcXHJcXG4gICAgICByaWdodDogMDtcXHJcXG4gICAgICB0b3A6IDA7XFxyXFxuICAgICAgYm90dG9tOiAwO1xcclxcbiAgICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC5jYXJkLXRpdGxlIHtcXHJcXG4gICAgICBjb2xvcjogJGNhcmQtYmctY29sb3I7XFxyXFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICAgIGJvdHRvbTogMDtcXHJcXG4gICAgICBsZWZ0OiAwO1xcclxcbiAgICAgIG1heC13aWR0aDogMTAwJTtcXHJcXG4gICAgICBwYWRkaW5nOiAkY2FyZC1wYWRkaW5nO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuXFxyXFxuICAuY2FyZC1jb250ZW50IHtcXHJcXG4gICAgcGFkZGluZzogJGNhcmQtcGFkZGluZztcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogMCAwIDJweCAycHg7XFxyXFxuXFxyXFxuICAgIHAge1xcclxcbiAgICAgIG1hcmdpbjogMDtcXHJcXG4gICAgfVxcclxcbiAgICAuY2FyZC10aXRsZSB7XFxyXFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxyXFxuICAgICAgbGluZS1oZWlnaHQ6IDMycHg7XFxyXFxuICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xcclxcblxcclxcbiAgICAgIGkge1xcclxcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMycHg7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuXFxyXFxuICAuY2FyZC1hY3Rpb24ge1xcclxcbiAgICAmOmxhc3QtY2hpbGQge1xcclxcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCAycHggMnB4O1xcclxcbiAgICB9XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7IC8vIFVzZSBpbmhlcml0IHRvIGluaGVyaXQgY29sb3IgY2xhc3Nlc1xcclxcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgxNjAsMTYwLDE2MCwuMik7XFxyXFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gICAgcGFkZGluZzogMTZweCAkY2FyZC1wYWRkaW5nO1xcclxcblxcclxcbiAgICBhOm5vdCguYnRuKTpub3QoLmJ0bi1sYXJnZSk6bm90KC5idG4tZmxvYXRpbmcpIHtcXHJcXG4gICAgICBjb2xvcjogJGNhcmQtbGluay1jb2xvcjtcXHJcXG4gICAgICBtYXJnaW4tcmlnaHQ6ICRjYXJkLXBhZGRpbmc7XFxyXFxuICAgICAgdHJhbnNpdGlvbjogY29sb3IgLjNzIGVhc2U7XFxyXFxuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcXHJcXG5cXHJcXG4gICAgICAmOmhvdmVyIHsgY29sb3I6ICRjYXJkLWxpbmstY29sb3ItbGlnaHQ7IH1cXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcbiAgLmNhcmQtcmV2ZWFsIHtcXHJcXG4gICAgcGFkZGluZzogJGNhcmQtcGFkZGluZztcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FyZC1iZy1jb2xvcjtcXHJcXG4gICAgd2lkdGg6IDEwMCU7XFxyXFxuICAgIG92ZXJmbG93LXk6IGF1dG87XFxyXFxuICAgIGxlZnQ6IDA7XFxyXFxuICAgIHRvcDogMTAwJTtcXHJcXG4gICAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgICB6LWluZGV4OiAzO1xcclxcbiAgICBkaXNwbGF5OiBub25lO1xcclxcblxcclxcbiAgICAuY2FyZC10aXRsZSB7XFxyXFxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxufVxcclxcblwiLFwiLypcXHJcXG4gICAgQGxpY2Vuc2VcXHJcXG4gICAgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cXHJcXG4gICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dFxcclxcbiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dFxcclxcbiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHRcXHJcXG4gICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc29cXHJcXG4gICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHRcXHJcXG4gKi9cXHJcXG5cXHJcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxyXFxuLyogU1RZTEVTIEZPUiBUSEUgU1BJTk5FUiAqL1xcclxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKi9cXHJcXG5cXHJcXG4vKlxcclxcbiAqIENvbnN0YW50czpcXHJcXG4gKiAgICAgIFNUUk9LRVdJRFRIID0gM3B4XFxyXFxuICogICAgICBBUkNTSVpFICAgICA9IDI3MCBkZWdyZWVzIChhbW91bnQgb2YgY2lyY2xlIHRoZSBhcmMgdGFrZXMgdXApXFxyXFxuICogICAgICBBUkNUSU1FICAgICA9IDEzMzNtcyAodGltZSBpdCB0YWtlcyB0byBleHBhbmQgYW5kIGNvbnRyYWN0IGFyYylcXHJcXG4gKiAgICAgIEFSQ1NUQVJUUk9UID0gMjE2IGRlZ3JlZXMgKGhvdyBtdWNoIHRoZSBzdGFydCBsb2NhdGlvbiBvZiB0aGUgYXJjXFxyXFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCByb3RhdGUgZWFjaCB0aW1lLCAyMTYgZ2l2ZXMgdXMgYVxcclxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1IHBvaW50ZWQgc3RhciBzaGFwZSAoaXQncyAzNjAvNSAqIDMpLlxcclxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSA3IHBvaW50ZWQgc3Rhciwgd2UgbWlnaHQgZG9cXHJcXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzYwLzcgKiAzID0gMTU0LjI4NilcXHJcXG4gKiAgICAgIENPTlRBSU5FUldJRFRIID0gMjhweFxcclxcbiAqICAgICAgU0hSSU5LX1RJTUUgPSA0MDBtc1xcclxcbiAqL1xcclxcblxcclxcblxcclxcbi5wcmVsb2FkZXItd3JhcHBlciB7XFxyXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICB3aWR0aDogNTBweDtcXHJcXG4gIGhlaWdodDogNTBweDtcXHJcXG5cXHJcXG4gICYuc21hbGwge1xcclxcbiAgICB3aWR0aDogMzZweDtcXHJcXG4gICAgaGVpZ2h0OiAzNnB4O1xcclxcbiAgfVxcclxcblxcclxcbiAgJi5iaWcge1xcclxcbiAgICB3aWR0aDogNjRweDtcXHJcXG4gICAgaGVpZ2h0OiA2NHB4O1xcclxcbiAgfVxcclxcblxcclxcbiAgJi5hY3RpdmUge1xcclxcbiAgICAvKiBkdXJhdGlvbjogMzYwICogQVJDVElNRSAvIChBUkNTVEFSVFJPVCArICgzNjAtQVJDU0laRSkpICovXFxyXFxuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIDE1NjhtcyBsaW5lYXIgaW5maW5pdGU7XFxyXFxuICAgIGFuaW1hdGlvbjogY29udGFpbmVyLXJvdGF0ZSAxNTY4bXMgbGluZWFyIGluZmluaXRlO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG5ALXdlYmtpdC1rZXlmcmFtZXMgY29udGFpbmVyLXJvdGF0ZSB7XFxyXFxuICB0byB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKSB9XFxyXFxufVxcclxcblxcclxcbkBrZXlmcmFtZXMgY29udGFpbmVyLXJvdGF0ZSB7XFxyXFxuICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykgfVxcclxcbn1cXHJcXG5cXHJcXG4uc3Bpbm5lci1sYXllciB7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICB3aWR0aDogMTAwJTtcXHJcXG4gIGhlaWdodDogMTAwJTtcXHJcXG4gIG9wYWNpdHk6IDA7XFxyXFxuICBib3JkZXItY29sb3I6ICRzcGlubmVyLWRlZmF1bHQtY29sb3I7XFxyXFxufVxcclxcblxcclxcbi5zcGlubmVyLWJsdWUsXFxyXFxuLnNwaW5uZXItYmx1ZS1vbmx5IHtcXHJcXG4gIGJvcmRlci1jb2xvcjogIzQyODVmNDtcXHJcXG59XFxyXFxuXFxyXFxuLnNwaW5uZXItcmVkLFxcclxcbi5zcGlubmVyLXJlZC1vbmx5IHtcXHJcXG4gIGJvcmRlci1jb2xvcjogI2RiNDQzNztcXHJcXG59XFxyXFxuXFxyXFxuLnNwaW5uZXIteWVsbG93LFxcclxcbi5zcGlubmVyLXllbGxvdy1vbmx5IHtcXHJcXG4gIGJvcmRlci1jb2xvcjogI2Y0YjQwMDtcXHJcXG59XFxyXFxuXFxyXFxuLnNwaW5uZXItZ3JlZW4sXFxyXFxuLnNwaW5uZXItZ3JlZW4tb25seSB7XFxyXFxuICBib3JkZXItY29sb3I6ICMwZjlkNTg7XFxyXFxufVxcclxcblxcclxcbi8qKlxcclxcbiAqIElNUE9SVEFOVCBOT1RFIEFCT1VUIENTUyBBTklNQVRJT04gUFJPUEVSVElFUyAoa2VhbnVsZWUpOlxcclxcbiAqXFxyXFxuICogaU9TIFNhZmFyaSAodGVzdGVkIG9uIGlPUyA4LjEpIGRvZXMgbm90IGhhbmRsZSBhbmltYXRpb24tZGVsYXkgdmVyeSB3ZWxsIC0gaXQgZG9lc24ndFxcclxcbiAqIGd1YXJhbnRlZSB0aGF0IHRoZSBhbmltYXRpb24gd2lsbCBzdGFydCBfZXhhY3RseV8gYWZ0ZXIgdGhhdCB2YWx1ZS4gU28gd2UgYXZvaWQgdXNpbmdcXHJcXG4gKiBhbmltYXRpb24tZGVsYXkgYW5kIGluc3RlYWQgc2V0IGN1c3RvbSBrZXlmcmFtZXMgZm9yIGVhY2ggY29sb3IgKGFzIHJlZHVuZGFudCBhcyBpdFxcclxcbiAqIHNlZW1zKS5cXHJcXG4gKlxcclxcbiAqIFdlIHdyaXRlIG91dCBlYWNoIGFuaW1hdGlvbiBpbiBmdWxsIChpbnN0ZWFkIG9mIHNlcGFyYXRpbmcgYW5pbWF0aW9uLW5hbWUsXFxyXFxuICogYW5pbWF0aW9uLWR1cmF0aW9uLCBldGMuKSBiZWNhdXNlIHVuZGVyIHRoZSBwb2x5ZmlsbCwgU2FmYXJpIGRvZXMgbm90IHJlY29nbml6ZSB0aG9zZVxcclxcbiAqIHNwZWNpZmljIHByb3BlcnRpZXMgcHJvcGVybHksIHRyZWF0cyB0aGVtIGFzIC13ZWJraXQtYW5pbWF0aW9uLCBhbmQgb3ZlcnJpZGVzIHRoZVxcclxcbiAqIG90aGVyIGFuaW1hdGlvbiBydWxlcy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9Qb2x5bWVyL3BsYXRmb3JtL2lzc3Vlcy81My5cXHJcXG4gKi9cXHJcXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXItYmx1ZSB7XFxyXFxuICAvKiBkdXJhdGlvbnM6IDQgKiBBUkNUSU1FICovXFxyXFxuICAtd2Via2l0LWFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgYmx1ZS1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XFxyXFxuICBhbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIGJsdWUtZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcclxcbn1cXHJcXG5cXHJcXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXItcmVkIHtcXHJcXG4gIC8qIGR1cmF0aW9uczogNCAqIEFSQ1RJTUUgKi9cXHJcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCByZWQtZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcclxcbiAgYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCByZWQtZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcclxcbn1cXHJcXG5cXHJcXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXIteWVsbG93IHtcXHJcXG4gIC8qIGR1cmF0aW9uczogNCAqIEFSQ1RJTUUgKi9cXHJcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCB5ZWxsb3ctZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcclxcbiAgYW5pbWF0aW9uOiBmaWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCB5ZWxsb3ctZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcclxcbn1cXHJcXG5cXHJcXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXItZ3JlZW4ge1xcclxcbiAgLyogZHVyYXRpb25zOiA0ICogQVJDVElNRSAqL1xcclxcbiAgLXdlYmtpdC1hbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIGdyZWVuLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXHJcXG4gIGFuaW1hdGlvbjogZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSkgaW5maW5pdGUgYm90aCwgZ3JlZW4tZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoO1xcclxcbn1cXHJcXG5cXHJcXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLFxcclxcbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIuc3Bpbm5lci1ibHVlLW9ubHksXFxyXFxuLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5zcGlubmVyLXJlZC1vbmx5LFxcclxcbi5hY3RpdmUgLnNwaW5uZXItbGF5ZXIuc3Bpbm5lci15ZWxsb3ctb25seSxcXHJcXG4uYWN0aXZlIC5zcGlubmVyLWxheWVyLnNwaW5uZXItZ3JlZW4tb25seSB7XFxyXFxuICAvKiBkdXJhdGlvbnM6IDQgKiBBUkNUSU1FICovXFxyXFxuICBvcGFjaXR5OiAxO1xcclxcbiAgLXdlYmtpdC1hbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XFxyXFxuICBhbmltYXRpb246IGZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XFxyXFxufVxcclxcblxcclxcbkAtd2Via2l0LWtleWZyYW1lcyBmaWxsLXVuZmlsbC1yb3RhdGUge1xcclxcbiAgMTIuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEzNWRlZyk7ICB9IC8qIDAuNSAqIEFSQ1NJWkUgKi9cXHJcXG4gIDI1JSAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpOyAgfSAvKiAxICAgKiBBUkNTSVpFICovXFxyXFxuICAzNy41JSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDA1ZGVnKTsgIH0gLyogMS41ICogQVJDU0laRSAqL1xcclxcbiAgNTAlICAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDU0MGRlZyk7ICB9IC8qIDIgICAqIEFSQ1NJWkUgKi9cXHJcXG4gIDYyLjUlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg2NzVkZWcpOyAgfSAvKiAyLjUgKiBBUkNTSVpFICovXFxyXFxuICA3NSUgICB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoODEwZGVnKTsgIH0gLyogMyAgICogQVJDU0laRSAqL1xcclxcbiAgODcuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDk0NWRlZyk7ICB9IC8qIDMuNSAqIEFSQ1NJWkUgKi9cXHJcXG4gIHRvICAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMDgwZGVnKTsgfSAvKiA0ICAgKiBBUkNTSVpFICovXFxyXFxufVxcclxcblxcclxcbkBrZXlmcmFtZXMgZmlsbC11bmZpbGwtcm90YXRlIHtcXHJcXG4gIDEyLjUlIHsgdHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKTsgIH0gLyogMC41ICogQVJDU0laRSAqL1xcclxcbiAgMjUlICAgeyB0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpOyAgfSAvKiAxICAgKiBBUkNTSVpFICovXFxyXFxuICAzNy41JSB7IHRyYW5zZm9ybTogcm90YXRlKDQwNWRlZyk7ICB9IC8qIDEuNSAqIEFSQ1NJWkUgKi9cXHJcXG4gIDUwJSAgIHsgdHJhbnNmb3JtOiByb3RhdGUoNTQwZGVnKTsgIH0gLyogMiAgICogQVJDU0laRSAqL1xcclxcbiAgNjIuNSUgeyB0cmFuc2Zvcm06IHJvdGF0ZSg2NzVkZWcpOyAgfSAvKiAyLjUgKiBBUkNTSVpFICovXFxyXFxuICA3NSUgICB7IHRyYW5zZm9ybTogcm90YXRlKDgxMGRlZyk7ICB9IC8qIDMgICAqIEFSQ1NJWkUgKi9cXHJcXG4gIDg3LjUlIHsgdHJhbnNmb3JtOiByb3RhdGUoOTQ1ZGVnKTsgIH0gLyogMy41ICogQVJDU0laRSAqL1xcclxcbiAgdG8gICAgeyB0cmFuc2Zvcm06IHJvdGF0ZSgxMDgwZGVnKTsgfSAvKiA0ICAgKiBBUkNTSVpFICovXFxyXFxufVxcclxcblxcclxcbkAtd2Via2l0LWtleWZyYW1lcyBibHVlLWZhZGUtaW4tb3V0IHtcXHJcXG4gIGZyb20geyBvcGFjaXR5OiAxOyB9XFxyXFxuICAyNSUgeyBvcGFjaXR5OiAxOyB9XFxyXFxuICAyNiUgeyBvcGFjaXR5OiAwOyB9XFxyXFxuICA4OSUgeyBvcGFjaXR5OiAwOyB9XFxyXFxuICA5MCUgeyBvcGFjaXR5OiAxOyB9XFxyXFxuICAxMDAlIHsgb3BhY2l0eTogMTsgfVxcclxcbn1cXHJcXG5cXHJcXG5Aa2V5ZnJhbWVzIGJsdWUtZmFkZS1pbi1vdXQge1xcclxcbiAgZnJvbSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIDI1JSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIDI2JSB7IG9wYWNpdHk6IDA7IH1cXHJcXG4gIDg5JSB7IG9wYWNpdHk6IDA7IH1cXHJcXG4gIDkwJSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIDEwMCUgeyBvcGFjaXR5OiAxOyB9XFxyXFxufVxcclxcblxcclxcbkAtd2Via2l0LWtleWZyYW1lcyByZWQtZmFkZS1pbi1vdXQge1xcclxcbiAgZnJvbSB7IG9wYWNpdHk6IDA7IH1cXHJcXG4gIDE1JSB7IG9wYWNpdHk6IDA7IH1cXHJcXG4gIDI1JSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIDUwJSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIDUxJSB7IG9wYWNpdHk6IDA7IH1cXHJcXG59XFxyXFxuXFxyXFxuQGtleWZyYW1lcyByZWQtZmFkZS1pbi1vdXQge1xcclxcbiAgZnJvbSB7IG9wYWNpdHk6IDA7IH1cXHJcXG4gIDE1JSB7IG9wYWNpdHk6IDA7IH1cXHJcXG4gIDI1JSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIDUwJSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIDUxJSB7IG9wYWNpdHk6IDA7IH1cXHJcXG59XFxyXFxuXFxyXFxuQC13ZWJraXQta2V5ZnJhbWVzIHllbGxvdy1mYWRlLWluLW91dCB7XFxyXFxuICBmcm9tIHsgb3BhY2l0eTogMDsgfVxcclxcbiAgNDAlIHsgb3BhY2l0eTogMDsgfVxcclxcbiAgNTAlIHsgb3BhY2l0eTogMTsgfVxcclxcbiAgNzUlIHsgb3BhY2l0eTogMTsgfVxcclxcbiAgNzYlIHsgb3BhY2l0eTogMDsgfVxcclxcbn1cXHJcXG5cXHJcXG5Aa2V5ZnJhbWVzIHllbGxvdy1mYWRlLWluLW91dCB7XFxyXFxuICBmcm9tIHsgb3BhY2l0eTogMDsgfVxcclxcbiAgNDAlIHsgb3BhY2l0eTogMDsgfVxcclxcbiAgNTAlIHsgb3BhY2l0eTogMTsgfVxcclxcbiAgNzUlIHsgb3BhY2l0eTogMTsgfVxcclxcbiAgNzYlIHsgb3BhY2l0eTogMDsgfVxcclxcbn1cXHJcXG5cXHJcXG5ALXdlYmtpdC1rZXlmcmFtZXMgZ3JlZW4tZmFkZS1pbi1vdXQge1xcclxcbiAgZnJvbSB7IG9wYWNpdHk6IDA7IH1cXHJcXG4gIDY1JSB7IG9wYWNpdHk6IDA7IH1cXHJcXG4gIDc1JSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIDkwJSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIDEwMCUgeyBvcGFjaXR5OiAwOyB9XFxyXFxufVxcclxcblxcclxcbkBrZXlmcmFtZXMgZ3JlZW4tZmFkZS1pbi1vdXQge1xcclxcbiAgZnJvbSB7IG9wYWNpdHk6IDA7IH1cXHJcXG4gIDY1JSB7IG9wYWNpdHk6IDA7IH1cXHJcXG4gIDc1JSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIDkwJSB7IG9wYWNpdHk6IDE7IH1cXHJcXG4gIDEwMCUgeyBvcGFjaXR5OiAwOyB9XFxyXFxufVxcclxcblxcclxcbi8qKlxcclxcbiAqIFBhdGNoIHRoZSBnYXAgdGhhdCBhcHBlYXIgYmV0d2VlbiB0aGUgdHdvIGFkamFjZW50IGRpdi5jaXJjbGUtY2xpcHBlciB3aGlsZSB0aGVcXHJcXG4gKiBzcGlubmVyIGlzIHJvdGF0aW5nIChhcHBlYXJzIG9uIENocm9tZSAzOCwgU2FmYXJpIDcuMSwgYW5kIElFIDExKS5cXHJcXG4gKi9cXHJcXG4uZ2FwLXBhdGNoIHtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIHRvcDogMDtcXHJcXG4gIGxlZnQ6IDQ1JTtcXHJcXG4gIHdpZHRoOiAxMCU7XFxyXFxuICBoZWlnaHQ6IDEwMCU7XFxyXFxuICBvdmVyZmxvdzogaGlkZGVuO1xcclxcbiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xcclxcbn1cXHJcXG5cXHJcXG4uZ2FwLXBhdGNoIC5jaXJjbGUge1xcclxcbiAgd2lkdGg6IDEwMDAlO1xcclxcbiAgbGVmdDogLTQ1MCU7XFxyXFxufVxcclxcblxcclxcbi5jaXJjbGUtY2xpcHBlciB7XFxyXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICB3aWR0aDogNTAlO1xcclxcbiAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXHJcXG4gIGJvcmRlci1jb2xvcjogaW5oZXJpdDtcXHJcXG5cXHJcXG4gIC5jaXJjbGUge1xcclxcbiAgICB3aWR0aDogMjAwJTtcXHJcXG4gICAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgICBib3JkZXItd2lkdGg6IDNweDsgLyogU1RST0tFV0lEVEggKi9cXHJcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXHJcXG4gICAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xcclxcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcclxcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxyXFxuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBub25lO1xcclxcbiAgICBhbmltYXRpb246IG5vbmU7XFxyXFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgdG9wOiAwO1xcclxcbiAgICByaWdodDogMDtcXHJcXG4gICAgYm90dG9tOiAwO1xcclxcbiAgfVxcclxcblxcclxcbiAgJi5sZWZ0IC5jaXJjbGUge1xcclxcbiAgICBsZWZ0OiAwO1xcclxcbiAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTI5ZGVnKTtcXHJcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTI5ZGVnKTtcXHJcXG4gIH1cXHJcXG4gICYucmlnaHQgLmNpcmNsZSB7XFxyXFxuICAgIGxlZnQ6IC0xMDAlO1xcclxcbiAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXHJcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTI5ZGVnKTtcXHJcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTEyOWRlZyk7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcblxcclxcblxcclxcbi5hY3RpdmUgLmNpcmNsZS1jbGlwcGVyLmxlZnQgLmNpcmNsZSB7XFxyXFxuICAvKiBkdXJhdGlvbjogQVJDVElNRSAqL1xcclxcbiAgLXdlYmtpdC1hbmltYXRpb246IGxlZnQtc3BpbiAxMzMzbXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XFxyXFxuICBhbmltYXRpb246IGxlZnQtc3BpbiAxMzMzbXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XFxyXFxufVxcclxcblxcclxcbi5hY3RpdmUgLmNpcmNsZS1jbGlwcGVyLnJpZ2h0IC5jaXJjbGUge1xcclxcbiAgLyogZHVyYXRpb246IEFSQ1RJTUUgKi9cXHJcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiByaWdodC1zcGluIDEzMzNtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDtcXHJcXG4gIGFuaW1hdGlvbjogcmlnaHQtc3BpbiAxMzMzbXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7XFxyXFxufVxcclxcblxcclxcbkAtd2Via2l0LWtleWZyYW1lcyBsZWZ0LXNwaW4ge1xcclxcbiAgZnJvbSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKTsgfVxcclxcbiAgNTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNWRlZyk7IH1cXHJcXG4gIHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpOyB9XFxyXFxufVxcclxcblxcclxcbkBrZXlmcmFtZXMgbGVmdC1zcGluIHtcXHJcXG4gIGZyb20geyB0cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpOyB9XFxyXFxuICA1MCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgtNWRlZyk7IH1cXHJcXG4gIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKTsgfVxcclxcbn1cXHJcXG5cXHJcXG5ALXdlYmtpdC1rZXlmcmFtZXMgcmlnaHQtc3BpbiB7XFxyXFxuICBmcm9tIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKTsgfVxcclxcbiAgNTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg1ZGVnKTsgfVxcclxcbiAgdG8geyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpOyB9XFxyXFxufVxcclxcblxcclxcbkBrZXlmcmFtZXMgcmlnaHQtc3BpbiB7XFxyXFxuICBmcm9tIHsgdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZyk7IH1cXHJcXG4gIDUwJSB7IHRyYW5zZm9ybTogcm90YXRlKDVkZWcpOyB9XFxyXFxuICB0byB7IHRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpOyB9XFxyXFxufVxcclxcblxcclxcbiNzcGlubmVyQ29udGFpbmVyLmNvb2xkb3duIHtcXHJcXG4gIC8qIGR1cmF0aW9uOiBTSFJJTktfVElNRSAqL1xcclxcbiAgLXdlYmtpdC1hbmltYXRpb246IGNvbnRhaW5lci1yb3RhdGUgMTU2OG1zIGxpbmVhciBpbmZpbml0ZSwgZmFkZS1vdXQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpO1xcclxcbiAgYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIDE1NjhtcyBsaW5lYXIgaW5maW5pdGUsIGZhZGUtb3V0IDQwMG1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKTtcXHJcXG59XFxyXFxuXFxyXFxuQC13ZWJraXQta2V5ZnJhbWVzIGZhZGUtb3V0IHtcXHJcXG4gIGZyb20geyBvcGFjaXR5OiAxOyB9XFxyXFxuICB0byB7IG9wYWNpdHk6IDA7IH1cXHJcXG59XFxyXFxuXFxyXFxuQGtleWZyYW1lcyBmYWRlLW91dCB7XFxyXFxuICBmcm9tIHsgb3BhY2l0eTogMTsgfVxcclxcbiAgdG8geyBvcGFjaXR5OiAwOyB9XFxyXFxufVxcclxcblwiLFwiXFxyXFxuLy8gUHJvZ3Jlc3MgQmFyXFxyXFxuLnByb2dyZXNzIHtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gIGhlaWdodDogNHB4O1xcclxcbiAgZGlzcGxheTogYmxvY2s7XFxyXFxuICB3aWR0aDogMTAwJTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oJHByb2dyZXNzLWJhci1jb2xvciwgNDAlKTtcXHJcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXHJcXG4gIG1hcmdpbjogJGVsZW1lbnQtdG9wLW1hcmdpbiAwICRlbGVtZW50LWJvdHRvbS1tYXJnaW4gMDtcXHJcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxyXFxuICAuZGV0ZXJtaW5hdGUge1xcclxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIHRvcDogMDtcXHJcXG4gICAgbGVmdDogMDtcXHJcXG4gICAgYm90dG9tOiAwO1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJvZ3Jlc3MtYmFyLWNvbG9yO1xcclxcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAuM3MgbGluZWFyO1xcclxcbiAgfVxcclxcbiAgLmluZGV0ZXJtaW5hdGUge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJvZ3Jlc3MtYmFyLWNvbG9yO1xcclxcbiAgICAmOmJlZm9yZSB7XFxyXFxuICAgICAgY29udGVudDogJyc7XFxyXFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XFxyXFxuICAgICAgdG9wOiAwO1xcclxcbiAgICAgIGxlZnQ6MDtcXHJcXG4gICAgICBib3R0b206IDA7XFxyXFxuICAgICAgd2lsbC1jaGFuZ2U6IGxlZnQsIHJpZ2h0O1xcclxcbiAgICAgIC8vIEN1c3RvbSBiZXppZXJcXHJcXG4gICAgICBhbmltYXRpb246IGluZGV0ZXJtaW5hdGUgMi4xcyBjdWJpYy1iZXppZXIoMC42NTAsIDAuODE1LCAwLjczNSwgMC4zOTUpIGluZmluaXRlO1xcclxcblxcclxcbiAgICB9XFxyXFxuICAgICY6YWZ0ZXIge1xcclxcbiAgICAgIGNvbnRlbnQ6ICcnO1xcclxcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xcclxcbiAgICAgIHRvcDogMDtcXHJcXG4gICAgICBsZWZ0OjA7XFxyXFxuICAgICAgYm90dG9tOiAwO1xcclxcbiAgICAgIHdpbGwtY2hhbmdlOiBsZWZ0LCByaWdodDtcXHJcXG4gICAgICAvLyBDdXN0b20gYmV6aWVyXFxyXFxuICAgICAgYW5pbWF0aW9uOiBpbmRldGVybWluYXRlLXNob3J0IDIuMXMgY3ViaWMtYmV6aWVyKDAuMTY1LCAwLjg0MCwgMC40NDAsIDEuMDAwKSBpbmZpbml0ZTtcXHJcXG4gICAgICBhbmltYXRpb24tZGVsYXk6IDEuMTVzO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxufVxcclxcbkBrZXlmcmFtZXMgaW5kZXRlcm1pbmF0ZSB7XFxyXFxuICAwJSB7XFxyXFxuICAgIGxlZnQ6IC0zNSU7XFxyXFxuICAgIHJpZ2h0OjEwMCU7XFxyXFxuICB9XFxyXFxuICA2MCUge1xcclxcbiAgICBsZWZ0OiAxMDAlO1xcclxcbiAgICByaWdodDogLTkwJTtcXHJcXG4gIH1cXHJcXG4gIDEwMCUge1xcclxcbiAgICBsZWZ0OiAxMDAlO1xcclxcbiAgICByaWdodDogLTkwJTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuQGtleWZyYW1lcyBpbmRldGVybWluYXRlLXNob3J0IHtcXHJcXG4gIDAlIHtcXHJcXG4gICAgbGVmdDogLTIwMCU7XFxyXFxuICAgIHJpZ2h0OiAxMDAlO1xcclxcbiAgfVxcclxcbiAgNjAlIHtcXHJcXG4gICAgbGVmdDogMTA3JTtcXHJcXG4gICAgcmlnaHQ6IC04JTtcXHJcXG4gIH1cXHJcXG4gIDEwMCUge1xcclxcbiAgICBsZWZ0OiAxMDclO1xcclxcbiAgICByaWdodDogLTglO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG5cIixcIi5mbGFzaC1tZXNzYWdlIHtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIHBhZGRpbmc6IDJweCAxMHB4O1xcclxcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xcclxcbiAgei1pbmRleDogOTk5OTk7XFxyXFxuICByaWdodDogMDtcXHJcXG4gIGJvdHRvbTogMDtcXHJcXG4gIGZvbnQtc2l6ZTogMTRweDtcXHJcXG5cXHJcXG5cXHJcXG4gICYuaW5mbyB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNiZWRkYmU7XFxyXFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICM3MjhmNzI7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAmLndhcm4ge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVlNmQwO1xcclxcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWE3ZDE3O1xcclxcbiAgfVxcclxcbiAgJi5lcnJvciB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlNWIyYmM7XFxyXFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMzMyNTc7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbkBrZXlmcmFtZXMgbWVzc2FnZUluIHtcXHJcXG4gIGZyb20ge1xcclxcbiAgICByaWdodDogODAlO1xcclxcbiAgfVxcclxcblxcclxcbiAgdG8ge1xcclxcbiAgICByaWdodDogMDtcXHJcXG5cXHJcXG4gIH1cXHJcXG59XCIsXCIucHVsc2Uge1xcclxcbiAgJjo6YmVmb3JlIHtcXHJcXG4gICAgY29udGVudDogJyc7XFxyXFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgICBoZWlnaHQ6IDEwMCU7XFxyXFxuICAgIHRvcDogMDtcXHJcXG4gICAgbGVmdDogMDtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcXHJcXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuM3MsIHRyYW5zZm9ybSAuM3M7XFxyXFxuICAgIGFuaW1hdGlvbjogcHVsc2UtYW5pbWF0aW9uIDFzIGN1YmljLWJlemllcigwLjI0LCAwLCAwLjM4LCAxKSBpbmZpbml0ZTtcXHJcXG4gICAgLy96LWluZGV4OiAtMTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xcclxcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbn1cXHJcXG5cXHJcXG5Aa2V5ZnJhbWVzIHB1bHNlLWFuaW1hdGlvbiB7XFxyXFxuICAwJSB7XFxyXFxuICAgIG9wYWNpdHk6IDE7XFxyXFxuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XFxyXFxuICB9XFxyXFxuICA1MCUge1xcclxcbiAgICBvcGFjaXR5OiAwO1xcclxcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7XFxyXFxuICB9XFxyXFxuICAxMDAlIHtcXHJcXG4gICAgb3BhY2l0eTogMDtcXHJcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjUpO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cIixcIi5kcm9wZG93bi1jb250ZW50IHtcXHJcXG4gICY6Zm9jdXMge1xcclxcbiAgICBvdXRsaW5lOiAwO1xcclxcbiAgfVxcclxcblxcclxcblxcclxcbiAgQGV4dGVuZCAuc2hhZG93LTE7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJvcGRvd24tYmctY29sb3I7XFxyXFxuICBtYXJnaW46IDA7XFxyXFxuICBkaXNwbGF5OiBmbG93O1xcclxcbiAgbWluLXdpZHRoOiAxMDBweDtcXHJcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxyXFxuICAvL29wYWNpdHk6IDA7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICBsZWZ0OiAwO1xcclxcbiAgdG9wOiAwO1xcclxcbiAgei1pbmRleDogOTk5OTsgLy8gVE9ETzogQ2hlY2sgaWYgdGhpcyBkb2Vzbid0IGJyZWFrIG90aGVyIHRoaW5nc1xcclxcbiAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xcclxcblxcclxcblxcclxcbiAgbGkge1xcclxcbiAgICAmOmhvdmVyLCAmLmFjdGl2ZSB7XFxyXFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGRyb3Bkb3duLWhvdmVyLWJnLWNvbG9yO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICY6Zm9jdXMge1xcclxcbiAgICAgIG91dGxpbmU6IG5vbmU7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgJi5kaXZpZGVyIHtcXHJcXG4gICAgICBtaW4taGVpZ2h0OiAwO1xcclxcbiAgICAgIGhlaWdodDogMXB4O1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICYgPiBhLCAmID4gc3BhbiB7XFxyXFxuICAgICAgZm9udC1zaXplOiAxNnB4O1xcclxcbiAgICAgIGNvbG9yOiAkZHJvcGRvd24tY29sb3I7XFxyXFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxyXFxuICAgICAgbGluZS1oZWlnaHQ6IDIycHg7XFxyXFxuICAgICAgcGFkZGluZzogY2FsYygoJGRyb3Bkb3duLWl0ZW0taGVpZ2h0IC0gMjJweCkgLyAyKSAxNnB4O1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICYgPiBzcGFuID4gbGFiZWwge1xcclxcbiAgICAgIHRvcDogMXB4O1xcclxcbiAgICAgIGxlZnQ6IDA7XFxyXFxuICAgICAgaGVpZ2h0OiAxOHB4O1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC8vIEljb24gYWxpZ25tZW50IG92ZXJyaWRlXFxyXFxuICAgICYgPiBhID4gaSB7XFxyXFxuICAgICAgaGVpZ2h0OiBpbmhlcml0O1xcclxcbiAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcclxcbiAgICAgIGZsb2F0OiBsZWZ0O1xcclxcbiAgICAgIG1hcmdpbjogMCAyNHB4IDAgMDtcXHJcXG4gICAgICB3aWR0aDogMjRweDtcXHJcXG4gICAgfVxcclxcblxcclxcblxcclxcbiAgICBjbGVhcjogYm90aDtcXHJcXG4gICAgY29sb3I6ICRvZmYtYmxhY2s7XFxyXFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gICAgbWluLWhlaWdodDogJGRyb3Bkb3duLWl0ZW0taGVpZ2h0O1xcclxcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xcclxcbiAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuYm9keS5rZXlib2FyZC1mb2N1c2VkIHtcXHJcXG4gIC5kcm9wZG93bi1jb250ZW50IGxpOmZvY3VzIHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRkcm9wZG93bi1ob3Zlci1iZy1jb2xvciwgOCUpO1xcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG4vLyBJbnB1dCBmaWVsZCBzcGVjaWZpY2l0eSBidWdmaXhcXHJcXG4uaW5wdXQtZmllbGQuY29sIC5kcm9wZG93bi1jb250ZW50IFt0eXBlPVxcXCJjaGVja2JveFxcXCJdICsgbGFiZWwge1xcclxcbiAgdG9wOiAxcHg7XFxyXFxuICBsZWZ0OiAwO1xcclxcbiAgaGVpZ2h0OiAxOHB4O1xcclxcbiAgdHJhbnNmb3JtOiBub25lO1xcclxcbn1cXHJcXG5cXHJcXG4uZHJvcGRvd24tdHJpZ2dlciB7XFxyXFxuICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxufVwiLFwibmF2IHtcXHJcXG4gICYubmF2LWV4dGVuZGVkIHtcXHJcXG4gICAgaGVpZ2h0OiBhdXRvO1xcclxcblxcclxcbiAgICAubmF2LXdyYXBwZXIge1xcclxcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXHJcXG4gICAgICBtaW4taGVpZ2h0OiAkbmF2YmFyLWhlaWdodC1tb2JpbGU7XFxyXFxuICAgICAgaGVpZ2h0OiBhdXRvO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC5uYXYtY29udGVudCB7XFxyXFxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gIGNvbG9yOiAkbmF2YmFyLWZvbnQtY29sb3I7XFxyXFxuICBAZXh0ZW5kIC5zaGFkb3ctMTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xcclxcbiAgd2lkdGg6IDEwMCU7XFxyXFxuICBoZWlnaHQ6ICRuYXZiYXItaGVpZ2h0LW1vYmlsZTtcXHJcXG4gIGxpbmUtaGVpZ2h0OiAkbmF2YmFyLWxpbmUtaGVpZ2h0LW1vYmlsZTtcXHJcXG5cXHJcXG4gIGEgeyBjb2xvcjogJG5hdmJhci1mb250LWNvbG9yOyB9XFxyXFxuXFxyXFxuICBpLFxcclxcbiAgW2NsYXNzXj1cXFwibWRpLVxcXCJdLCBbY2xhc3MqPVxcXCJtZGktXFxcIl0sXFxyXFxuICBpLnMtaWNvbnMge1xcclxcbiAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gICAgZm9udC1zaXplOiAyNHB4O1xcclxcbiAgICBoZWlnaHQ6ICRuYXZiYXItaGVpZ2h0LW1vYmlsZTtcXHJcXG4gICAgbGluZS1oZWlnaHQ6ICRuYXZiYXItbGluZS1oZWlnaHQtbW9iaWxlO1xcclxcbiAgfVxcclxcblxcclxcbiAgLm5hdi13cmFwcGVyIHtcXHJcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgICBoZWlnaHQ6IDEwMCU7XFxyXFxuICB9XFxyXFxuXFxyXFxuICBAbWVkaWEgI3skbGFyZ2UtYW5kLXVwfSB7XFxyXFxuICAgIGEuc2lkZW5hdi10cmlnZ2VyIHsgZGlzcGxheTogbm9uZTsgfVxcclxcbiAgfVxcclxcblxcclxcblxcclxcbiAgLy8gQ29sbGFwc2UgYnV0dG9uXFxyXFxuICAuc2lkZW5hdi10cmlnZ2VyIHtcXHJcXG4gICAgZmxvYXQ6IGxlZnQ7XFxyXFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gICAgei1pbmRleDogMTtcXHJcXG4gICAgaGVpZ2h0OiAkbmF2YmFyLWhlaWdodC1tb2JpbGU7XFxyXFxuICAgIG1hcmdpbjogMCAxOHB4O1xcclxcblxcclxcbiAgICBpIHtcXHJcXG4gICAgICBoZWlnaHQ6ICRuYXZiYXItaGVpZ2h0LW1vYmlsZTtcXHJcXG4gICAgICBsaW5lLWhlaWdodDogJG5hdmJhci1saW5lLWhlaWdodC1tb2JpbGU7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG5cXHJcXG4gIC8vIExvZ29cXHJcXG4gIC5icmFuZC1sb2dvIHtcXHJcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICBjb2xvcjogJG5hdmJhci1mb250LWNvbG9yO1xcclxcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAgIGZvbnQtc2l6ZTogJG5hdmJhci1icmFuZC1mb250LXNpemU7XFxyXFxuICAgIHBhZGRpbmc6IDA7XFxyXFxuICAgIGltZy5jaXJjbGUge1xcclxcbiAgICAgIGhlaWdodDogMzJweDtcXHJcXG4gICAgICB3aWR0aDogMzJweDtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAmLmNlbnRlciB7XFxyXFxuICAgICAgbGVmdDogNTAlO1xcclxcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICBAbWVkaWEgI3skbWVkaXVtLWFuZC1kb3dufSB7XFxyXFxuICAgICAgbGVmdDogNTAlO1xcclxcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXHJcXG5cXHJcXG4gICAgICAmLmxlZnQsICYucmlnaHQge1xcclxcbiAgICAgICAgcGFkZGluZzogMDtcXHJcXG4gICAgICAgIHRyYW5zZm9ybTogbm9uZTtcXHJcXG4gICAgICB9XFxyXFxuXFxyXFxuICAgICAgJi5sZWZ0IHsgbGVmdDogMC41cmVtOyB9XFxyXFxuICAgICAgJi5yaWdodCB7XFxyXFxuICAgICAgICByaWdodDogMC41cmVtO1xcclxcbiAgICAgICAgbGVmdDogYXV0bztcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgJi5yaWdodCB7XFxyXFxuICAgICAgcmlnaHQ6IDAuNXJlbTtcXHJcXG4gICAgICBwYWRkaW5nOiAwO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIGksXFxyXFxuICAgIFtjbGFzc149XFxcIm1kaS1cXFwiXSwgW2NsYXNzKj1cXFwibWRpLVxcXCJdLFxcclxcbiAgICBpLnMtaWNvbnMge1xcclxcbiAgICAgIGZsb2F0OiBsZWZ0O1xcclxcbiAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcblxcclxcblxcclxcbiAgLy8gVGl0bGVcXHJcXG4gIC5uYXYtdGl0bGUge1xcclxcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAgIGZvbnQtc2l6ZTogMzJweDtcXHJcXG4gICAgcGFkZGluZzogMjhweCAwO1xcclxcbiAgfVxcclxcblxcclxcblxcclxcbiAgLy8gTmF2YmFyIExpbmtzXFxyXFxuICB1bCB7XFxyXFxuICAgIG1hcmdpbjogMDtcXHJcXG5cXHJcXG4gICAgbGkge1xcclxcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzO1xcclxcbiAgICAgIGZsb2F0OiBsZWZ0O1xcclxcbiAgICAgIHBhZGRpbmc6IDA7XFxyXFxuXFxyXFxuICAgICAgJi5hY3RpdmUge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwuMSk7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuICAgIGEge1xcclxcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzO1xcclxcbiAgICAgIGZvbnQtc2l6ZTogJG5hdmJhci1mb250LXNpemU7XFxyXFxuICAgICAgY29sb3I6ICRuYXZiYXItZm9udC1jb2xvcjtcXHJcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gICAgICBwYWRkaW5nOiAwIDE1cHg7XFxyXFxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xcclxcblxcclxcbiAgICAgICYuYnRuLCAmLmJ0bi1sYXJnZSwgJi5idG4tZmxhdCwgJi5idG4tZmxvYXRpbmcge1xcclxcbiAgICAgICAgbWFyZ2luLXRvcDogLTJweDtcXHJcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4O1xcclxcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xcclxcblxcclxcbiAgICAgICAgJiA+IC5tYXRlcmlhbC1pY29ucyB7XFxyXFxuICAgICAgICAgIGhlaWdodDogaW5oZXJpdDtcXHJcXG4gICAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgfVxcclxcblxcclxcbiAgICAgICY6aG92ZXIge1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwuMSk7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICYubGVmdCB7XFxyXFxuICAgICAgZmxvYXQ6IGxlZnQ7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC8vIE5hdmJhciBTZWFyY2ggRm9ybVxcclxcbiAgZm9ybSB7XFxyXFxuICAgIGhlaWdodDogMTAwJTtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC5pbnB1dC1maWVsZCB7XFxyXFxuICAgIG1hcmdpbjogMDtcXHJcXG4gICAgaGVpZ2h0OiAxMDAlO1xcclxcblxcclxcbiAgICBpbnB1dCB7XFxyXFxuICAgICAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xcclxcbiAgICAgIGJvcmRlcjogbm9uZTtcXHJcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDJyZW07XFxyXFxuXFxyXFxuICAgICAgJjpmb2N1cywgJlt0eXBlPXRleHRdOnZhbGlkLCAmW3R5cGU9cGFzc3dvcmRdOnZhbGlkLFxcclxcbiAgICAgICZbdHlwZT1lbWFpbF06dmFsaWQsICZbdHlwZT11cmxdOnZhbGlkLCAmW3R5cGU9ZGF0ZV06dmFsaWQge1xcclxcbiAgICAgICAgYm9yZGVyOiBub25lO1xcclxcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgbGFiZWwge1xcclxcbiAgICAgIHRvcDogMDtcXHJcXG4gICAgICBsZWZ0OiAwO1xcclxcblxcclxcbiAgICAgIGkge1xcclxcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjcpO1xcclxcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgLjNzO1xcclxcbiAgICAgIH1cXHJcXG4gICAgICAmLmFjdGl2ZSBpIHsgY29sb3I6ICRuYXZiYXItZm9udC1jb2xvcjsgfVxcclxcbiAgICB9XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbi8vIEZpeGVkIE5hdmJhclxcclxcbi5uYXZiYXItZml4ZWQge1xcclxcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgaGVpZ2h0OiAkbmF2YmFyLWhlaWdodC1tb2JpbGU7XFxyXFxuICB6LWluZGV4OiA5OTc7XFxyXFxuXFxyXFxuICBuYXYge1xcclxcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxuICB9XFxyXFxufVxcclxcbkBtZWRpYSAjeyRtZWRpdW0tYW5kLXVwfSB7XFxyXFxuICBuYXYubmF2LWV4dGVuZGVkIC5uYXYtd3JhcHBlciB7XFxyXFxuICAgIG1pbi1oZWlnaHQ6ICRuYXZiYXItaGVpZ2h0O1xcclxcbiAgfVxcclxcbiAgbmF2LCBuYXYgLm5hdi13cmFwcGVyIGksIG5hdiBhLnNpZGVuYXYtdHJpZ2dlciwgbmF2IGEuc2lkZW5hdi10cmlnZ2VyIGkge1xcclxcbiAgICBoZWlnaHQ6ICRuYXZiYXItaGVpZ2h0O1xcclxcbiAgICBsaW5lLWhlaWdodDogJG5hdmJhci1saW5lLWhlaWdodDtcXHJcXG4gIH1cXHJcXG4gIC5uYXZiYXItZml4ZWQge1xcclxcbiAgICBoZWlnaHQ6ICRuYXZiYXItaGVpZ2h0O1xcclxcbiAgfVxcclxcbn1cXHJcXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKSB7XG4gIHZhciBsaXN0ID0gW107XG5cbiAgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuICBsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgY29udGVudCA9IFwiXCI7XG4gICAgICB2YXIgbmVlZExheWVyID0gdHlwZW9mIGl0ZW1bNV0gIT09IFwidW5kZWZpbmVkXCI7XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpO1xuICAgICAgfVxuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBjb250ZW50ICs9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07XG5cbiAgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgbGlzdC5pID0gZnVuY3Rpb24gaShtb2R1bGVzLCBtZWRpYSwgZGVkdXBlLCBzdXBwb3J0cywgbGF5ZXIpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIHVuZGVmaW5lZF1dO1xuICAgIH1cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdGhpcy5sZW5ndGg7IGsrKykge1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2tdWzBdO1xuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBfayA9IDA7IF9rIDwgbW9kdWxlcy5sZW5ndGg7IF9rKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2tdKTtcbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgbGF5ZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtWzVdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobWVkaWEpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHN1cHBvcnRzKSB7XG4gICAgICAgIGlmICghaXRlbVs0XSkge1xuICAgICAgICAgIGl0ZW1bNF0gPSBcIlwiLmNvbmNhdChzdXBwb3J0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzRdID0gc3VwcG9ydHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIid1c2Ugc3RyaWN0JztcblxudmFyIGlzTWVyZ2VhYmxlT2JqZWN0ID0gZnVuY3Rpb24gaXNNZXJnZWFibGVPYmplY3QodmFsdWUpIHtcblx0cmV0dXJuIGlzTm9uTnVsbE9iamVjdCh2YWx1ZSlcblx0XHQmJiAhaXNTcGVjaWFsKHZhbHVlKVxufTtcblxuZnVuY3Rpb24gaXNOb25OdWxsT2JqZWN0KHZhbHVlKSB7XG5cdHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbn1cblxuZnVuY3Rpb24gaXNTcGVjaWFsKHZhbHVlKSB7XG5cdHZhciBzdHJpbmdWYWx1ZSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG5cblx0cmV0dXJuIHN0cmluZ1ZhbHVlID09PSAnW29iamVjdCBSZWdFeHBdJ1xuXHRcdHx8IHN0cmluZ1ZhbHVlID09PSAnW29iamVjdCBEYXRlXSdcblx0XHR8fCBpc1JlYWN0RWxlbWVudCh2YWx1ZSlcbn1cblxuLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iL2I1YWM5NjNmYjc5MWQxMjk4ZTdmMzk2MjM2MzgzYmM5NTVmOTE2YzEvc3JjL2lzb21vcnBoaWMvY2xhc3NpYy9lbGVtZW50L1JlYWN0RWxlbWVudC5qcyNMMjEtTDI1XG52YXIgY2FuVXNlU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuZm9yO1xudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IGNhblVzZVN5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSA6IDB4ZWFjNztcblxuZnVuY3Rpb24gaXNSZWFjdEVsZW1lbnQodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEVcbn1cblxuZnVuY3Rpb24gZW1wdHlUYXJnZXQodmFsKSB7XG5cdHJldHVybiBBcnJheS5pc0FycmF5KHZhbCkgPyBbXSA6IHt9XG59XG5cbmZ1bmN0aW9uIGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKHZhbHVlLCBvcHRpb25zKSB7XG5cdHJldHVybiAob3B0aW9ucy5jbG9uZSAhPT0gZmFsc2UgJiYgb3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdCh2YWx1ZSkpXG5cdFx0PyBkZWVwbWVyZ2UoZW1wdHlUYXJnZXQodmFsdWUpLCB2YWx1ZSwgb3B0aW9ucylcblx0XHQ6IHZhbHVlXG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRBcnJheU1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG5cdHJldHVybiB0YXJnZXQuY29uY2F0KHNvdXJjZSkubWFwKGZ1bmN0aW9uKGVsZW1lbnQpIHtcblx0XHRyZXR1cm4gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQoZWxlbWVudCwgb3B0aW9ucylcblx0fSlcbn1cblxuZnVuY3Rpb24gZ2V0TWVyZ2VGdW5jdGlvbihrZXksIG9wdGlvbnMpIHtcblx0aWYgKCFvcHRpb25zLmN1c3RvbU1lcmdlKSB7XG5cdFx0cmV0dXJuIGRlZXBtZXJnZVxuXHR9XG5cdHZhciBjdXN0b21NZXJnZSA9IG9wdGlvbnMuY3VzdG9tTWVyZ2Uoa2V5KTtcblx0cmV0dXJuIHR5cGVvZiBjdXN0b21NZXJnZSA9PT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbU1lcmdlIDogZGVlcG1lcmdlXG59XG5cbmZ1bmN0aW9uIGdldEVudW1lcmFibGVPd25Qcm9wZXJ0eVN5bWJvbHModGFyZ2V0KSB7XG5cdHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzXG5cdFx0PyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHRhcmdldCkuZmlsdGVyKGZ1bmN0aW9uKHN5bWJvbCkge1xuXHRcdFx0cmV0dXJuIE9iamVjdC5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHRhcmdldCwgc3ltYm9sKVxuXHRcdH0pXG5cdFx0OiBbXVxufVxuXG5mdW5jdGlvbiBnZXRLZXlzKHRhcmdldCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXModGFyZ2V0KS5jb25jYXQoZ2V0RW51bWVyYWJsZU93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpKVxufVxuXG5mdW5jdGlvbiBwcm9wZXJ0eUlzT25PYmplY3Qob2JqZWN0LCBwcm9wZXJ0eSkge1xuXHR0cnkge1xuXHRcdHJldHVybiBwcm9wZXJ0eSBpbiBvYmplY3Rcblx0fSBjYXRjaChfKSB7XG5cdFx0cmV0dXJuIGZhbHNlXG5cdH1cbn1cblxuLy8gUHJvdGVjdHMgZnJvbSBwcm90b3R5cGUgcG9pc29uaW5nIGFuZCB1bmV4cGVjdGVkIG1lcmdpbmcgdXAgdGhlIHByb3RvdHlwZSBjaGFpbi5cbmZ1bmN0aW9uIHByb3BlcnR5SXNVbnNhZmUodGFyZ2V0LCBrZXkpIHtcblx0cmV0dXJuIHByb3BlcnR5SXNPbk9iamVjdCh0YXJnZXQsIGtleSkgLy8gUHJvcGVydGllcyBhcmUgc2FmZSB0byBtZXJnZSBpZiB0aGV5IGRvbid0IGV4aXN0IGluIHRoZSB0YXJnZXQgeWV0LFxuXHRcdCYmICEoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodGFyZ2V0LCBrZXkpIC8vIHVuc2FmZSBpZiB0aGV5IGV4aXN0IHVwIHRoZSBwcm90b3R5cGUgY2hhaW4sXG5cdFx0XHQmJiBPYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0YXJnZXQsIGtleSkpIC8vIGFuZCBhbHNvIHVuc2FmZSBpZiB0aGV5J3JlIG5vbmVudW1lcmFibGUuXG59XG5cbmZ1bmN0aW9uIG1lcmdlT2JqZWN0KHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG5cdHZhciBkZXN0aW5hdGlvbiA9IHt9O1xuXHRpZiAob3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdCh0YXJnZXQpKSB7XG5cdFx0Z2V0S2V5cyh0YXJnZXQpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG5cdFx0XHRkZXN0aW5hdGlvbltrZXldID0gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQodGFyZ2V0W2tleV0sIG9wdGlvbnMpO1xuXHRcdH0pO1xuXHR9XG5cdGdldEtleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuXHRcdGlmIChwcm9wZXJ0eUlzVW5zYWZlKHRhcmdldCwga2V5KSkge1xuXHRcdFx0cmV0dXJuXG5cdFx0fVxuXG5cdFx0aWYgKHByb3BlcnR5SXNPbk9iamVjdCh0YXJnZXQsIGtleSkgJiYgb3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdChzb3VyY2Vba2V5XSkpIHtcblx0XHRcdGRlc3RpbmF0aW9uW2tleV0gPSBnZXRNZXJnZUZ1bmN0aW9uKGtleSwgb3B0aW9ucykodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldLCBvcHRpb25zKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGVzdGluYXRpb25ba2V5XSA9IGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKHNvdXJjZVtrZXldLCBvcHRpb25zKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gZGVzdGluYXRpb25cbn1cblxuZnVuY3Rpb24gZGVlcG1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG5cdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXHRvcHRpb25zLmFycmF5TWVyZ2UgPSBvcHRpb25zLmFycmF5TWVyZ2UgfHwgZGVmYXVsdEFycmF5TWVyZ2U7XG5cdG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3QgPSBvcHRpb25zLmlzTWVyZ2VhYmxlT2JqZWN0IHx8IGlzTWVyZ2VhYmxlT2JqZWN0O1xuXHQvLyBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCBpcyBhZGRlZCB0byBgb3B0aW9uc2Agc28gdGhhdCBjdXN0b20gYXJyYXlNZXJnZSgpXG5cdC8vIGltcGxlbWVudGF0aW9ucyBjYW4gdXNlIGl0LiBUaGUgY2FsbGVyIG1heSBub3QgcmVwbGFjZSBpdC5cblx0b3B0aW9ucy5jbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCA9IGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkO1xuXG5cdHZhciBzb3VyY2VJc0FycmF5ID0gQXJyYXkuaXNBcnJheShzb3VyY2UpO1xuXHR2YXIgdGFyZ2V0SXNBcnJheSA9IEFycmF5LmlzQXJyYXkodGFyZ2V0KTtcblx0dmFyIHNvdXJjZUFuZFRhcmdldFR5cGVzTWF0Y2ggPSBzb3VyY2VJc0FycmF5ID09PSB0YXJnZXRJc0FycmF5O1xuXG5cdGlmICghc291cmNlQW5kVGFyZ2V0VHlwZXNNYXRjaCkge1xuXHRcdHJldHVybiBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZChzb3VyY2UsIG9wdGlvbnMpXG5cdH0gZWxzZSBpZiAoc291cmNlSXNBcnJheSkge1xuXHRcdHJldHVybiBvcHRpb25zLmFycmF5TWVyZ2UodGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnMpXG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIG1lcmdlT2JqZWN0KHRhcmdldCwgc291cmNlLCBvcHRpb25zKVxuXHR9XG59XG5cbmRlZXBtZXJnZS5hbGwgPSBmdW5jdGlvbiBkZWVwbWVyZ2VBbGwoYXJyYXksIG9wdGlvbnMpIHtcblx0aWYgKCFBcnJheS5pc0FycmF5KGFycmF5KSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGFuIGFycmF5Jylcblx0fVxuXG5cdHJldHVybiBhcnJheS5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgbmV4dCkge1xuXHRcdHJldHVybiBkZWVwbWVyZ2UocHJldiwgbmV4dCwgb3B0aW9ucylcblx0fSwge30pXG59O1xuXG52YXIgZGVlcG1lcmdlXzEgPSBkZWVwbWVyZ2U7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVlcG1lcmdlXzE7XG4iLCIvKlxub2JqZWN0LWFzc2lnblxuKGMpIFNpbmRyZSBTb3JodXNcbkBsaWNlbnNlIE1JVFxuKi9cblxuJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBwcm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuZnVuY3Rpb24gdG9PYmplY3QodmFsKSB7XG5cdGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCcpO1xuXHR9XG5cblx0cmV0dXJuIE9iamVjdCh2YWwpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRVc2VOYXRpdmUoKSB7XG5cdHRyeSB7XG5cdFx0aWYgKCFPYmplY3QuYXNzaWduKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZWN0IGJ1Z2d5IHByb3BlcnR5IGVudW1lcmF0aW9uIG9yZGVyIGluIG9sZGVyIFY4IHZlcnNpb25zLlxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9NDExOFxuXHRcdHZhciB0ZXN0MSA9IG5ldyBTdHJpbmcoJ2FiYycpOyAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXctd3JhcHBlcnNcblx0XHR0ZXN0MVs1XSA9ICdkZSc7XG5cdFx0aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QxKVswXSA9PT0gJzUnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MiA9IHt9O1xuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykge1xuXHRcdFx0dGVzdDJbJ18nICsgU3RyaW5nLmZyb21DaGFyQ29kZShpKV0gPSBpO1xuXHRcdH1cblx0XHR2YXIgb3JkZXIyID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDIpLm1hcChmdW5jdGlvbiAobikge1xuXHRcdFx0cmV0dXJuIHRlc3QyW25dO1xuXHRcdH0pO1xuXHRcdGlmIChvcmRlcjIuam9pbignJykgIT09ICcwMTIzNDU2Nzg5Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDMgPSB7fTtcblx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChsZXR0ZXIpIHtcblx0XHRcdHRlc3QzW2xldHRlcl0gPSBsZXR0ZXI7XG5cdFx0fSk7XG5cdFx0aWYgKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sIHRlc3QzKSkuam9pbignJykgIT09XG5cdFx0XHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0Ly8gV2UgZG9uJ3QgZXhwZWN0IGFueSBvZiB0aGUgYWJvdmUgdG8gdGhyb3csIGJ1dCBiZXR0ZXIgdG8gYmUgc2FmZS5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaG91bGRVc2VOYXRpdmUoKSA/IE9iamVjdC5hc3NpZ24gOiBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UpIHtcblx0dmFyIGZyb207XG5cdHZhciB0byA9IHRvT2JqZWN0KHRhcmdldCk7XG5cdHZhciBzeW1ib2xzO1xuXG5cdGZvciAodmFyIHMgPSAxOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsgcysrKSB7XG5cdFx0ZnJvbSA9IE9iamVjdChhcmd1bWVudHNbc10pO1xuXG5cdFx0Zm9yICh2YXIga2V5IGluIGZyb20pIHtcblx0XHRcdGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZyb20sIGtleSkpIHtcblx0XHRcdFx0dG9ba2V5XSA9IGZyb21ba2V5XTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG5cdFx0XHRzeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGZyb20pO1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzeW1ib2xzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmIChwcm9wSXNFbnVtZXJhYmxlLmNhbGwoZnJvbSwgc3ltYm9sc1tpXSkpIHtcblx0XHRcdFx0XHR0b1tzeW1ib2xzW2ldXSA9IGZyb21bc3ltYm9sc1tpXV07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdG87XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbigpIHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuICB2YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307XG4gIHZhciBoYXMgPSByZXF1aXJlKCcuL2xpYi9oYXMnKTtcblxuICBwcmludFdhcm5pbmcgPSBmdW5jdGlvbih0ZXh0KSB7XG4gICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIHRleHQ7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoeCkgeyAvKiovIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWVzIG1hdGNoIHdpdGggdGhlIHR5cGUgc3BlY3MuXG4gKiBFcnJvciBtZXNzYWdlcyBhcmUgbWVtb3JpemVkIGFuZCB3aWxsIG9ubHkgYmUgc2hvd24gb25jZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gdHlwZVNwZWNzIE1hcCBvZiBuYW1lIHRvIGEgUmVhY3RQcm9wVHlwZVxuICogQHBhcmFtIHtvYmplY3R9IHZhbHVlcyBSdW50aW1lIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUgdHlwZS1jaGVja2VkXG4gKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRpb24gZS5nLiBcInByb3BcIiwgXCJjb250ZXh0XCIsIFwiY2hpbGQgY29udGV4dFwiXG4gKiBAcGFyYW0ge3N0cmluZ30gY29tcG9uZW50TmFtZSBOYW1lIG9mIHRoZSBjb21wb25lbnQgZm9yIGVycm9yIG1lc3NhZ2VzLlxuICogQHBhcmFtIHs/RnVuY3Rpb259IGdldFN0YWNrIFJldHVybnMgdGhlIGNvbXBvbmVudCBzdGFjay5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNoZWNrUHJvcFR5cGVzKHR5cGVTcGVjcywgdmFsdWVzLCBsb2NhdGlvbiwgY29tcG9uZW50TmFtZSwgZ2V0U3RhY2spIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7XG4gICAgICBpZiAoaGFzKHR5cGVTcGVjcywgdHlwZVNwZWNOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3I7XG4gICAgICAgIC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvXG4gICAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cbiAgICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LlxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxuICAgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgICBpZiAodHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB2YXIgZXJyID0gRXJyb3IoXG4gICAgICAgICAgICAgIChjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycpICsgJzogJyArIGxvY2F0aW9uICsgJyB0eXBlIGAnICsgdHlwZVNwZWNOYW1lICsgJ2AgaXMgaW52YWxpZDsgJyArXG4gICAgICAgICAgICAgICdpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UsIGJ1dCByZWNlaXZlZCBgJyArIHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSArICdgLicgK1xuICAgICAgICAgICAgICAnVGhpcyBvZnRlbiBoYXBwZW5zIGJlY2F1c2Ugb2YgdHlwb3Mgc3VjaCBhcyBgUHJvcFR5cGVzLmZ1bmN0aW9uYCBpbnN0ZWFkIG9mIGBQcm9wVHlwZXMuZnVuY2AuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlcnJvciA9IHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdKHZhbHVlcywgdHlwZVNwZWNOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgbnVsbCwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgIGVycm9yID0gZXg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yICYmICEoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikpIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoXG4gICAgICAgICAgICAoY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnKSArICc6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAnICtcbiAgICAgICAgICAgIGxvY2F0aW9uICsgJyBgJyArIHR5cGVTcGVjTmFtZSArICdgIGlzIGludmFsaWQ7IHRoZSB0eXBlIGNoZWNrZXIgJyArXG4gICAgICAgICAgICAnZnVuY3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJyArIHR5cGVvZiBlcnJvciArICcuICcgK1xuICAgICAgICAgICAgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVudCB0byB0aGUgdHlwZSBjaGVja2VyICcgK1xuICAgICAgICAgICAgJ2NyZWF0b3IgKGFycmF5T2YsIGluc3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgJyArXG4gICAgICAgICAgICAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7XG4gICAgICAgICAgLy8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhlXG4gICAgICAgICAgLy8gc2FtZSBlcnJvci5cbiAgICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0cnVlO1xuXG4gICAgICAgICAgdmFyIHN0YWNrID0gZ2V0U3RhY2sgPyBnZXRTdGFjaygpIDogJyc7XG5cbiAgICAgICAgICBwcmludFdhcm5pbmcoXG4gICAgICAgICAgICAnRmFpbGVkICcgKyBsb2NhdGlvbiArICcgdHlwZTogJyArIGVycm9yLm1lc3NhZ2UgKyAoc3RhY2sgIT0gbnVsbCA/IHN0YWNrIDogJycpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlc2V0cyB3YXJuaW5nIGNhY2hlIHdoZW4gdGVzdGluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jaGVja1Byb3BUeXBlcy5yZXNldFdhcm5pbmdDYWNoZSA9IGZ1bmN0aW9uKCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2hlY2tQcm9wVHlwZXM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xudmFyIGFzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL2xpYi9oYXMnKTtcbnZhciBjaGVja1Byb3BUeXBlcyA9IHJlcXVpcmUoJy4vY2hlY2tQcm9wVHlwZXMnKTtcblxudmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uKCkge307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHByaW50V2FybmluZyA9IGZ1bmN0aW9uKHRleHQpIHtcbiAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICsgdGV4dDtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNoICh4KSB7fVxuICB9O1xufVxuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uVGhhdFJldHVybnNOdWxsKCkge1xuICByZXR1cm4gbnVsbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpc1ZhbGlkRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcykge1xuICAvKiBnbG9iYWwgU3ltYm9sICovXG4gIHZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVyYXRvcjtcbiAgdmFyIEZBVVhfSVRFUkFUT1JfU1lNQk9MID0gJ0BAaXRlcmF0b3InOyAvLyBCZWZvcmUgU3ltYm9sIHNwZWMuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlvbiBjb250YWluZWQgb24gdGhlIGl0ZXJhYmxlIG9iamVjdC5cbiAgICpcbiAgICogQmUgc3VyZSB0byBpbnZva2UgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGl0ZXJhYmxlIGFzIGNvbnRleHQ6XG4gICAqXG4gICAqICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obXlJdGVyYWJsZSk7XG4gICAqICAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgKiAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobXlJdGVyYWJsZSk7XG4gICAqICAgICAgIC4uLlxuICAgKiAgICAgfVxuICAgKlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG1heWJlSXRlcmFibGVcbiAgICogQHJldHVybiB7P2Z1bmN0aW9ufVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0SXRlcmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBtYXliZUl0ZXJhYmxlICYmIChJVEVSQVRPUl9TWU1CT0wgJiYgbWF5YmVJdGVyYWJsZVtJVEVSQVRPUl9TWU1CT0xdIHx8IG1heWJlSXRlcmFibGVbRkFVWF9JVEVSQVRPUl9TWU1CT0xdKTtcbiAgICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBpdGVyYXRvckZuO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb2xsZWN0aW9uIG9mIG1ldGhvZHMgdGhhdCBhbGxvdyBkZWNsYXJhdGlvbiBhbmQgdmFsaWRhdGlvbiBvZiBwcm9wcyB0aGF0IGFyZVxuICAgKiBzdXBwbGllZCB0byBSZWFjdCBjb21wb25lbnRzLiBFeGFtcGxlIHVzYWdlOlxuICAgKlxuICAgKiAgIHZhciBQcm9wcyA9IHJlcXVpcmUoJ1JlYWN0UHJvcFR5cGVzJyk7XG4gICAqICAgdmFyIE15QXJ0aWNsZSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgICogICAgIHByb3BUeXBlczoge1xuICAgKiAgICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgcHJvcCBuYW1lZCBcImRlc2NyaXB0aW9uXCIuXG4gICAqICAgICAgIGRlc2NyaXB0aW9uOiBQcm9wcy5zdHJpbmcsXG4gICAqXG4gICAqICAgICAgIC8vIEEgcmVxdWlyZWQgZW51bSBwcm9wIG5hbWVkIFwiY2F0ZWdvcnlcIi5cbiAgICogICAgICAgY2F0ZWdvcnk6IFByb3BzLm9uZU9mKFsnTmV3cycsJ1Bob3RvcyddKS5pc1JlcXVpcmVkLFxuICAgKlxuICAgKiAgICAgICAvLyBBIHByb3AgbmFtZWQgXCJkaWFsb2dcIiB0aGF0IHJlcXVpcmVzIGFuIGluc3RhbmNlIG9mIERpYWxvZy5cbiAgICogICAgICAgZGlhbG9nOiBQcm9wcy5pbnN0YW5jZU9mKERpYWxvZykuaXNSZXF1aXJlZFxuICAgKiAgICAgfSxcbiAgICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7IC4uLiB9XG4gICAqICAgfSk7XG4gICAqXG4gICAqIEEgbW9yZSBmb3JtYWwgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlc2UgbWV0aG9kcyBhcmUgdXNlZDpcbiAgICpcbiAgICogICB0eXBlIDo9IGFycmF5fGJvb2x8ZnVuY3xvYmplY3R8bnVtYmVyfHN0cmluZ3xvbmVPZihbLi4uXSl8aW5zdGFuY2VPZiguLi4pXG4gICAqICAgZGVjbCA6PSBSZWFjdFByb3BUeXBlcy57dHlwZX0oLmlzUmVxdWlyZWQpP1xuICAgKlxuICAgKiBFYWNoIGFuZCBldmVyeSBkZWNsYXJhdGlvbiBwcm9kdWNlcyBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlLiBUaGlzXG4gICAqIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgY3VzdG9tIHZhbGlkYXRpb24gZnVuY3Rpb25zLiBGb3IgZXhhbXBsZTpcbiAgICpcbiAgICogIHZhciBNeUxpbmsgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAqICAgIHByb3BUeXBlczoge1xuICAgKiAgICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBvciBVUkkgcHJvcCBuYW1lZCBcImhyZWZcIi5cbiAgICogICAgICBocmVmOiBmdW5jdGlvbihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHtcbiAgICogICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAqICAgICAgICBpZiAocHJvcFZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHByb3BWYWx1ZSAhPT0gJ3N0cmluZycgJiZcbiAgICogICAgICAgICAgICAhKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFVSSSkpIHtcbiAgICogICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcbiAgICogICAgICAgICAgICAnRXhwZWN0ZWQgYSBzdHJpbmcgb3IgYW4gVVJJIGZvciAnICsgcHJvcE5hbWUgKyAnIGluICcgK1xuICAgKiAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcbiAgICogICAgICAgICAgKTtcbiAgICogICAgICAgIH1cbiAgICogICAgICB9XG4gICAqICAgIH0sXG4gICAqICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7Li4ufVxuICAgKiAgfSk7XG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cblxuICB2YXIgQU5PTllNT1VTID0gJzw8YW5vbnltb3VzPj4nO1xuXG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdhcnJheScpLFxuICAgIGJpZ2ludDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2JpZ2ludCcpLFxuICAgIGJvb2w6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdib29sZWFuJyksXG4gICAgZnVuYzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Z1bmN0aW9uJyksXG4gICAgbnVtYmVyOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignbnVtYmVyJyksXG4gICAgb2JqZWN0OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignb2JqZWN0JyksXG4gICAgc3RyaW5nOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignc3RyaW5nJyksXG4gICAgc3ltYm9sOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignc3ltYm9sJyksXG5cbiAgICBhbnk6IGNyZWF0ZUFueVR5cGVDaGVja2VyKCksXG4gICAgYXJyYXlPZjogY3JlYXRlQXJyYXlPZlR5cGVDaGVja2VyLFxuICAgIGVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tlcigpLFxuICAgIGVsZW1lbnRUeXBlOiBjcmVhdGVFbGVtZW50VHlwZVR5cGVDaGVja2VyKCksXG4gICAgaW5zdGFuY2VPZjogY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlcixcbiAgICBub2RlOiBjcmVhdGVOb2RlQ2hlY2tlcigpLFxuICAgIG9iamVjdE9mOiBjcmVhdGVPYmplY3RPZlR5cGVDaGVja2VyLFxuICAgIG9uZU9mOiBjcmVhdGVFbnVtVHlwZUNoZWNrZXIsXG4gICAgb25lT2ZUeXBlOiBjcmVhdGVVbmlvblR5cGVDaGVja2VyLFxuICAgIHNoYXBlOiBjcmVhdGVTaGFwZVR5cGVDaGVja2VyLFxuICAgIGV4YWN0OiBjcmVhdGVTdHJpY3RTaGFwZVR5cGVDaGVja2VyLFxuICB9O1xuXG4gIC8qKlxuICAgKiBpbmxpbmVkIE9iamVjdC5pcyBwb2x5ZmlsbCB0byBhdm9pZCByZXF1aXJpbmcgY29uc3VtZXJzIHNoaXAgdGhlaXIgb3duXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9pc1xuICAgKi9cbiAgLyplc2xpbnQtZGlzYWJsZSBuby1zZWxmLWNvbXBhcmUqL1xuICBmdW5jdGlvbiBpcyh4LCB5KSB7XG4gICAgLy8gU2FtZVZhbHVlIGFsZ29yaXRobVxuICAgIGlmICh4ID09PSB5KSB7XG4gICAgICAvLyBTdGVwcyAxLTUsIDctMTBcbiAgICAgIC8vIFN0ZXBzIDYuYi02LmU6ICswICE9IC0wXG4gICAgICByZXR1cm4geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFN0ZXAgNi5hOiBOYU4gPT0gTmFOXG4gICAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5O1xuICAgIH1cbiAgfVxuICAvKmVzbGludC1lbmFibGUgbm8tc2VsZi1jb21wYXJlKi9cblxuICAvKipcbiAgICogV2UgdXNlIGFuIEVycm9yLWxpa2Ugb2JqZWN0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFzIHBlb3BsZSBtYXkgY2FsbFxuICAgKiBQcm9wVHlwZXMgZGlyZWN0bHkgYW5kIGluc3BlY3QgdGhlaXIgb3V0cHV0LiBIb3dldmVyLCB3ZSBkb24ndCB1c2UgcmVhbFxuICAgKiBFcnJvcnMgYW55bW9yZS4gV2UgZG9uJ3QgaW5zcGVjdCB0aGVpciBzdGFjayBhbnl3YXksIGFuZCBjcmVhdGluZyB0aGVtXG4gICAqIGlzIHByb2hpYml0aXZlbHkgZXhwZW5zaXZlIGlmIHRoZXkgYXJlIGNyZWF0ZWQgdG9vIG9mdGVuLCBzdWNoIGFzIHdoYXRcbiAgICogaGFwcGVucyBpbiBvbmVPZlR5cGUoKSBmb3IgYW55IHR5cGUgYmVmb3JlIHRoZSBvbmUgdGhhdCBtYXRjaGVkLlxuICAgKi9cbiAgZnVuY3Rpb24gUHJvcFR5cGVFcnJvcihtZXNzYWdlLCBkYXRhKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICB0aGlzLmRhdGEgPSBkYXRhICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyA/IGRhdGE6IHt9O1xuICAgIHRoaXMuc3RhY2sgPSAnJztcbiAgfVxuICAvLyBNYWtlIGBpbnN0YW5jZW9mIEVycm9yYCBzdGlsbCB3b3JrIGZvciByZXR1cm5lZCBlcnJvcnMuXG4gIFByb3BUeXBlRXJyb3IucHJvdG90eXBlID0gRXJyb3IucHJvdG90eXBlO1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBtYW51YWxQcm9wVHlwZUNhbGxDYWNoZSA9IHt9O1xuICAgICAgdmFyIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50ID0gMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2hlY2tUeXBlKGlzUmVxdWlyZWQsIHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICBjb21wb25lbnROYW1lID0gY29tcG9uZW50TmFtZSB8fCBBTk9OWU1PVVM7XG4gICAgICBwcm9wRnVsbE5hbWUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG5cbiAgICAgIGlmIChzZWNyZXQgIT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAgIGlmICh0aHJvd09uRGlyZWN0QWNjZXNzKSB7XG4gICAgICAgICAgLy8gTmV3IGJlaGF2aW9yIG9ubHkgZm9yIHVzZXJzIG9mIGBwcm9wLXR5cGVzYCBwYWNrYWdlXG4gICAgICAgICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICAgICAgICdVc2UgYFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpYCB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAvLyBPbGQgYmVoYXZpb3IgZm9yIHBlb3BsZSB1c2luZyBSZWFjdC5Qcm9wVHlwZXNcbiAgICAgICAgICB2YXIgY2FjaGVLZXkgPSBjb21wb25lbnROYW1lICsgJzonICsgcHJvcE5hbWU7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIW1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSAmJlxuICAgICAgICAgICAgLy8gQXZvaWQgc3BhbW1pbmcgdGhlIGNvbnNvbGUgYmVjYXVzZSB0aGV5IGFyZSBvZnRlbiBub3QgYWN0aW9uYWJsZSBleGNlcHQgZm9yIGxpYiBhdXRob3JzXG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCA8IDNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZyhcbiAgICAgICAgICAgICAgJ1lvdSBhcmUgbWFudWFsbHkgY2FsbGluZyBhIFJlYWN0LlByb3BUeXBlcyB2YWxpZGF0aW9uICcgK1xuICAgICAgICAgICAgICAnZnVuY3Rpb24gZm9yIHRoZSBgJyArIHByb3BGdWxsTmFtZSArICdgIHByb3Agb24gYCcgKyBjb21wb25lbnROYW1lICsgJ2AuIFRoaXMgaXMgZGVwcmVjYXRlZCAnICtcbiAgICAgICAgICAgICAgJ2FuZCB3aWxsIHRocm93IGluIHRoZSBzdGFuZGFsb25lIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICAgICAgICAgJ1lvdSBtYXkgYmUgc2VlaW5nIHRoaXMgd2FybmluZyBkdWUgdG8gYSB0aGlyZC1wYXJ0eSBQcm9wVHlwZXMgJyArXG4gICAgICAgICAgICAgICdsaWJyYXJ5LiBTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC13YXJuaW5nLWRvbnQtY2FsbC1wcm9wdHlwZXMgJyArICdmb3IgZGV0YWlscy4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGVbY2FjaGVLZXldID0gdHJ1ZTtcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50Kys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHtcbiAgICAgICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkICcgKyAoJ2luIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4nKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuJykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNoYWluZWRDaGVja1R5cGUgPSBjaGVja1R5cGUuYmluZChudWxsLCBmYWxzZSk7XG4gICAgY2hhaW5lZENoZWNrVHlwZS5pc1JlcXVpcmVkID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgdHJ1ZSk7XG5cbiAgICByZXR1cm4gY2hhaW5lZENoZWNrVHlwZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKGV4cGVjdGVkVHlwZSkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gZXhwZWN0ZWRUeXBlKSB7XG4gICAgICAgIC8vIGBwcm9wVmFsdWVgIGJlaW5nIGluc3RhbmNlIG9mLCBzYXksIGRhdGUvcmVnZXhwLCBwYXNzIHRoZSAnb2JqZWN0J1xuICAgICAgICAvLyBjaGVjaywgYnV0IHdlIGNhbiBvZmZlciBhIG1vcmUgcHJlY2lzZSBlcnJvciBtZXNzYWdlIGhlcmUgcmF0aGVyIHRoYW5cbiAgICAgICAgLy8gJ29mIHR5cGUgYG9iamVjdGAnLlxuICAgICAgICB2YXIgcHJlY2lzZVR5cGUgPSBnZXRQcmVjaXNlVHlwZShwcm9wVmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcihcbiAgICAgICAgICAnSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByZWNpc2VUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdgJyArIGV4cGVjdGVkVHlwZSArICdgLicpLFxuICAgICAgICAgIHtleHBlY3RlZFR5cGU6IGV4cGVjdGVkVHlwZX1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQW55VHlwZUNoZWNrZXIoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKGVtcHR5RnVuY3Rpb25UaGF0UmV0dXJuc051bGwpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQXJyYXlPZlR5cGVDaGVja2VyKHR5cGVDaGVja2VyKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBpZiAodHlwZW9mIHR5cGVDaGVja2VyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignUHJvcGVydHkgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiBjb21wb25lbnQgYCcgKyBjb21wb25lbnROYW1lICsgJ2AgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIGFycmF5T2YuJyk7XG4gICAgICB9XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gYXJyYXkuJykpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wVmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVycm9yID0gdHlwZUNoZWNrZXIocHJvcFZhbHVlLCBpLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJ1snICsgaSArICddJywgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIoKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgaWYgKCFpc1ZhbGlkRWxlbWVudChwcm9wVmFsdWUpKSB7XG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgc2luZ2xlIFJlYWN0RWxlbWVudC4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRUeXBlVHlwZUNoZWNrZXIoKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgaWYgKCFSZWFjdElzLmlzVmFsaWRFbGVtZW50VHlwZShwcm9wVmFsdWUpKSB7XG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgc2luZ2xlIFJlYWN0RWxlbWVudCB0eXBlLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlcihleHBlY3RlZENsYXNzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBpZiAoIShwcm9wc1twcm9wTmFtZV0gaW5zdGFuY2VvZiBleHBlY3RlZENsYXNzKSkge1xuICAgICAgICB2YXIgZXhwZWN0ZWRDbGFzc05hbWUgPSBleHBlY3RlZENsYXNzLm5hbWUgfHwgQU5PTllNT1VTO1xuICAgICAgICB2YXIgYWN0dWFsQ2xhc3NOYW1lID0gZ2V0Q2xhc3NOYW1lKHByb3BzW3Byb3BOYW1lXSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIGFjdHVhbENsYXNzTmFtZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnaW5zdGFuY2Ugb2YgYCcgKyBleHBlY3RlZENsYXNzTmFtZSArICdgLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRW51bVR5cGVDaGVja2VyKGV4cGVjdGVkVmFsdWVzKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGV4cGVjdGVkVmFsdWVzKSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKFxuICAgICAgICAgICAgJ0ludmFsaWQgYXJndW1lbnRzIHN1cHBsaWVkIHRvIG9uZU9mLCBleHBlY3RlZCBhbiBhcnJheSwgZ290ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBhcmd1bWVudHMuICcgK1xuICAgICAgICAgICAgJ0EgY29tbW9uIG1pc3Rha2UgaXMgdG8gd3JpdGUgb25lT2YoeCwgeSwgeikgaW5zdGVhZCBvZiBvbmVPZihbeCwgeSwgel0pLidcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByaW50V2FybmluZygnSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gYXJyYXkuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uVGhhdFJldHVybnNOdWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlzKHByb3BWYWx1ZSwgZXhwZWN0ZWRWYWx1ZXNbaV0pKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHZhbHVlc1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkVmFsdWVzLCBmdW5jdGlvbiByZXBsYWNlcihrZXksIHZhbHVlKSB7XG4gICAgICAgIHZhciB0eXBlID0gZ2V0UHJlY2lzZVR5cGUodmFsdWUpO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdmFsdWUgYCcgKyBTdHJpbmcocHJvcFZhbHVlKSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBvbmUgb2YgJyArIHZhbHVlc1N0cmluZyArICcuJykpO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBvYmplY3RPZi4nKTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBvYmplY3QuJykpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHByb3BWYWx1ZSkge1xuICAgICAgICBpZiAoaGFzKHByb3BWYWx1ZSwga2V5KSkge1xuICAgICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlVW5pb25UeXBlQ2hlY2tlcihhcnJheU9mVHlwZUNoZWNrZXJzKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5T2ZUeXBlQ2hlY2tlcnMpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gcHJpbnRXYXJuaW5nKCdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mVHlwZSwgZXhwZWN0ZWQgYW4gaW5zdGFuY2Ugb2YgYXJyYXkuJykgOiB2b2lkIDA7XG4gICAgICByZXR1cm4gZW1wdHlGdW5jdGlvblRoYXRSZXR1cm5zTnVsbDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5T2ZUeXBlQ2hlY2tlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjaGVja2VyID0gYXJyYXlPZlR5cGVDaGVja2Vyc1tpXTtcbiAgICAgIGlmICh0eXBlb2YgY2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBwcmludFdhcm5pbmcoXG4gICAgICAgICAgJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2ZUeXBlLiBFeHBlY3RlZCBhbiBhcnJheSBvZiBjaGVjayBmdW5jdGlvbnMsIGJ1dCAnICtcbiAgICAgICAgICAncmVjZWl2ZWQgJyArIGdldFBvc3RmaXhGb3JUeXBlV2FybmluZyhjaGVja2VyKSArICcgYXQgaW5kZXggJyArIGkgKyAnLidcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb25UaGF0UmV0dXJuc051bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgZXhwZWN0ZWRUeXBlcyA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mVHlwZUNoZWNrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGVja2VyID0gYXJyYXlPZlR5cGVDaGVja2Vyc1tpXTtcbiAgICAgICAgdmFyIGNoZWNrZXJSZXN1bHQgPSBjaGVja2VyKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoY2hlY2tlclJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoZWNrZXJSZXN1bHQuZGF0YSAmJiBoYXMoY2hlY2tlclJlc3VsdC5kYXRhLCAnZXhwZWN0ZWRUeXBlJykpIHtcbiAgICAgICAgICBleHBlY3RlZFR5cGVzLnB1c2goY2hlY2tlclJlc3VsdC5kYXRhLmV4cGVjdGVkVHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBleHBlY3RlZFR5cGVzTWVzc2FnZSA9IChleHBlY3RlZFR5cGVzLmxlbmd0aCA+IDApID8gJywgZXhwZWN0ZWQgb25lIG9mIHR5cGUgWycgKyBleHBlY3RlZFR5cGVzLmpvaW4oJywgJykgKyAnXSc6ICcnO1xuICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYCcgKyBleHBlY3RlZFR5cGVzTWVzc2FnZSArICcuJykpO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlTm9kZUNoZWNrZXIoKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBpZiAoIWlzTm9kZShwcm9wc1twcm9wTmFtZV0pKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW52YWxpZFZhbGlkYXRvckVycm9yKGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIGtleSwgdHlwZSkge1xuICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcihcbiAgICAgIChjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycpICsgJzogJyArIGxvY2F0aW9uICsgJyB0eXBlIGAnICsgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5ICsgJ2AgaXMgaW52YWxpZDsgJyArXG4gICAgICAnaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLCBidXQgcmVjZWl2ZWQgYCcgKyB0eXBlICsgJ2AuJ1xuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVTaGFwZVR5cGVDaGVja2VyKHNoYXBlVHlwZXMpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgYCcgKyBwcm9wVHlwZSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBgb2JqZWN0YC4nKSk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc2hhcGVUeXBlcykge1xuICAgICAgICB2YXIgY2hlY2tlciA9IHNoYXBlVHlwZXNba2V5XTtcbiAgICAgICAgaWYgKHR5cGVvZiBjaGVja2VyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmV0dXJuIGludmFsaWRWYWxpZGF0b3JFcnJvcihjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBrZXksIGdldFByZWNpc2VUeXBlKGNoZWNrZXIpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZXJyb3IgPSBjaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVTdHJpY3RTaGFwZVR5cGVDaGVja2VyKHNoYXBlVHlwZXMpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgYCcgKyBwcm9wVHlwZSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBgb2JqZWN0YC4nKSk7XG4gICAgICB9XG4gICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGFsbCBrZXlzIGluIGNhc2Ugc29tZSBhcmUgcmVxdWlyZWQgYnV0IG1pc3NpbmcgZnJvbSBwcm9wcy5cbiAgICAgIHZhciBhbGxLZXlzID0gYXNzaWduKHt9LCBwcm9wc1twcm9wTmFtZV0sIHNoYXBlVHlwZXMpO1xuICAgICAgZm9yICh2YXIga2V5IGluIGFsbEtleXMpIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBzaGFwZVR5cGVzW2tleV07XG4gICAgICAgIGlmIChoYXMoc2hhcGVUeXBlcywga2V5KSAmJiB0eXBlb2YgY2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiBpbnZhbGlkVmFsaWRhdG9yRXJyb3IoY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwga2V5LCBnZXRQcmVjaXNlVHlwZShjaGVja2VyKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjaGVja2VyKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKFxuICAgICAgICAgICAgJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIGtleSBgJyArIGtleSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLicgK1xuICAgICAgICAgICAgJ1xcbkJhZCBvYmplY3Q6ICcgKyBKU09OLnN0cmluZ2lmeShwcm9wc1twcm9wTmFtZV0sIG51bGwsICcgICcpICtcbiAgICAgICAgICAgICdcXG5WYWxpZCBrZXlzOiAnICsgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMoc2hhcGVUeXBlcyksIG51bGwsICcgICcpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZXJyb3IgPSBjaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzTm9kZShwcm9wVmFsdWUpIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiBwcm9wVmFsdWUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgcmV0dXJuICFwcm9wVmFsdWU7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3BWYWx1ZS5ldmVyeShpc05vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9wVmFsdWUgPT09IG51bGwgfHwgaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKHByb3BWYWx1ZSk7XG4gICAgICAgIGlmIChpdGVyYXRvckZuKSB7XG4gICAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKHByb3BWYWx1ZSk7XG4gICAgICAgICAgdmFyIHN0ZXA7XG4gICAgICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IHByb3BWYWx1ZS5lbnRyaWVzKSB7XG4gICAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICAgIGlmICghaXNOb2RlKHN0ZXAudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFsdWVzLlxuICAgICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgICB2YXIgZW50cnkgPSBzdGVwLnZhbHVlO1xuICAgICAgICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTm9kZShlbnRyeVsxXSkpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaXNTeW1ib2wocHJvcFR5cGUsIHByb3BWYWx1ZSkge1xuICAgIC8vIE5hdGl2ZSBTeW1ib2wuXG4gICAgaWYgKHByb3BUeXBlID09PSAnc3ltYm9sJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gZmFsc3kgdmFsdWUgY2FuJ3QgYmUgYSBTeW1ib2xcbiAgICBpZiAoIXByb3BWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ10gPT09ICdTeW1ib2wnXG4gICAgaWYgKHByb3BWYWx1ZVsnQEB0b1N0cmluZ1RhZyddID09PSAnU3ltYm9sJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2sgZm9yIG5vbi1zcGVjIGNvbXBsaWFudCBTeW1ib2xzIHdoaWNoIGFyZSBwb2x5ZmlsbGVkLlxuICAgIGlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHByb3BWYWx1ZSBpbnN0YW5jZW9mIFN5bWJvbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRXF1aXZhbGVudCBvZiBgdHlwZW9mYCBidXQgd2l0aCBzcGVjaWFsIGhhbmRsaW5nIGZvciBhcnJheSBhbmQgcmVnZXhwLlxuICBmdW5jdGlvbiBnZXRQcm9wVHlwZShwcm9wVmFsdWUpIHtcbiAgICB2YXIgcHJvcFR5cGUgPSB0eXBlb2YgcHJvcFZhbHVlO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcbiAgICAgIHJldHVybiAnYXJyYXknO1xuICAgIH1cbiAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAvLyBPbGQgd2Via2l0cyAoYXQgbGVhc3QgdW50aWwgQW5kcm9pZCA0LjApIHJldHVybiAnZnVuY3Rpb24nIHJhdGhlciB0aGFuXG4gICAgICAvLyAnb2JqZWN0JyBmb3IgdHlwZW9mIGEgUmVnRXhwLiBXZSdsbCBub3JtYWxpemUgdGhpcyBoZXJlIHNvIHRoYXQgL2JsYS9cbiAgICAgIC8vIHBhc3NlcyBQcm9wVHlwZXMub2JqZWN0LlxuICAgICAgcmV0dXJuICdvYmplY3QnO1xuICAgIH1cbiAgICBpZiAoaXNTeW1ib2wocHJvcFR5cGUsIHByb3BWYWx1ZSkpIHtcbiAgICAgIHJldHVybiAnc3ltYm9sJztcbiAgICB9XG4gICAgcmV0dXJuIHByb3BUeXBlO1xuICB9XG5cbiAgLy8gVGhpcyBoYW5kbGVzIG1vcmUgdHlwZXMgdGhhbiBgZ2V0UHJvcFR5cGVgLiBPbmx5IHVzZWQgZm9yIGVycm9yIG1lc3NhZ2VzLlxuICAvLyBTZWUgYGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyYC5cbiAgZnVuY3Rpb24gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBwcm9wVmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IHByb3BWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnICsgcHJvcFZhbHVlO1xuICAgIH1cbiAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgIGlmIChwcm9wVHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiAnZGF0ZSc7XG4gICAgICB9IGVsc2UgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICByZXR1cm4gJ3JlZ2V4cCc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcm9wVHlwZTtcbiAgfVxuXG4gIC8vIFJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwb3N0Zml4ZWQgdG8gYSB3YXJuaW5nIGFib3V0IGFuIGludmFsaWQgdHlwZS5cbiAgLy8gRm9yIGV4YW1wbGUsIFwidW5kZWZpbmVkXCIgb3IgXCJvZiB0eXBlIGFycmF5XCJcbiAgZnVuY3Rpb24gZ2V0UG9zdGZpeEZvclR5cGVXYXJuaW5nKHZhbHVlKSB7XG4gICAgdmFyIHR5cGUgPSBnZXRQcmVjaXNlVHlwZSh2YWx1ZSk7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICByZXR1cm4gJ2FuICcgKyB0eXBlO1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgIGNhc2UgJ3JlZ2V4cCc6XG4gICAgICAgIHJldHVybiAnYSAnICsgdHlwZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybnMgY2xhc3MgbmFtZSBvZiB0aGUgb2JqZWN0LCBpZiBhbnkuXG4gIGZ1bmN0aW9uIGdldENsYXNzTmFtZShwcm9wVmFsdWUpIHtcbiAgICBpZiAoIXByb3BWYWx1ZS5jb25zdHJ1Y3RvciB8fCAhcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5hbWUpIHtcbiAgICAgIHJldHVybiBBTk9OWU1PVVM7XG4gICAgfVxuICAgIHJldHVybiBwcm9wVmFsdWUuY29uc3RydWN0b3IubmFtZTtcbiAgfVxuXG4gIFJlYWN0UHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzID0gY2hlY2tQcm9wVHlwZXM7XG4gIFJlYWN0UHJvcFR5cGVzLnJlc2V0V2FybmluZ0NhY2hlID0gY2hlY2tQcm9wVHlwZXMucmVzZXRXYXJuaW5nQ2FjaGU7XG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIm1vZHVsZS5leHBvcnRzID0gRnVuY3Rpb24uY2FsbC5iaW5kKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpO1xuIiwiLyoqIEBsaWNlbnNlIFJlYWN0IHYxNi4xMy4xXG4gKiByZWFjdC1pcy5kZXZlbG9wbWVudC5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgKGZ1bmN0aW9uKCkge1xuJ3VzZSBzdHJpY3QnO1xuXG4vLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQtbGlrZSB0eXBlcy4gSWYgdGhlcmUgaXMgbm8gbmF0aXZlIFN5bWJvbFxuLy8gbm9yIHBvbHlmaWxsLCB0aGVuIGEgcGxhaW4gbnVtYmVyIGlzIHVzZWQgZm9yIHBlcmZvcm1hbmNlLlxudmFyIGhhc1N5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmZvcjtcbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykgOiAweGVhYzc7XG52YXIgUkVBQ1RfUE9SVEFMX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5wb3J0YWwnKSA6IDB4ZWFjYTtcbnZhciBSRUFDVF9GUkFHTUVOVF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuZnJhZ21lbnQnKSA6IDB4ZWFjYjtcbnZhciBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3Quc3RyaWN0X21vZGUnKSA6IDB4ZWFjYztcbnZhciBSRUFDVF9QUk9GSUxFUl9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QucHJvZmlsZXInKSA6IDB4ZWFkMjtcbnZhciBSRUFDVF9QUk9WSURFUl9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QucHJvdmlkZXInKSA6IDB4ZWFjZDtcbnZhciBSRUFDVF9DT05URVhUX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5jb250ZXh0JykgOiAweGVhY2U7IC8vIFRPRE86IFdlIGRvbid0IHVzZSBBc3luY01vZGUgb3IgQ29uY3VycmVudE1vZGUgYW55bW9yZS4gVGhleSB3ZXJlIHRlbXBvcmFyeVxuLy8gKHVuc3RhYmxlKSBBUElzIHRoYXQgaGF2ZSBiZWVuIHJlbW92ZWQuIENhbiB3ZSByZW1vdmUgdGhlIHN5bWJvbHM/XG5cbnZhciBSRUFDVF9BU1lOQ19NT0RFX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5hc3luY19tb2RlJykgOiAweGVhY2Y7XG52YXIgUkVBQ1RfQ09OQ1VSUkVOVF9NT0RFX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5jb25jdXJyZW50X21vZGUnKSA6IDB4ZWFjZjtcbnZhciBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuZm9yd2FyZF9yZWYnKSA6IDB4ZWFkMDtcbnZhciBSRUFDVF9TVVNQRU5TRV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2UnKSA6IDB4ZWFkMTtcbnZhciBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5zdXNwZW5zZV9saXN0JykgOiAweGVhZDg7XG52YXIgUkVBQ1RfTUVNT19UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QubWVtbycpIDogMHhlYWQzO1xudmFyIFJFQUNUX0xBWllfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmxhenknKSA6IDB4ZWFkNDtcbnZhciBSRUFDVF9CTE9DS19UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuYmxvY2snKSA6IDB4ZWFkOTtcbnZhciBSRUFDVF9GVU5EQU1FTlRBTF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuZnVuZGFtZW50YWwnKSA6IDB4ZWFkNTtcbnZhciBSRUFDVF9SRVNQT05ERVJfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnJlc3BvbmRlcicpIDogMHhlYWQ2O1xudmFyIFJFQUNUX1NDT1BFX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5zY29wZScpIDogMHhlYWQ3O1xuXG5mdW5jdGlvbiBpc1ZhbGlkRWxlbWVudFR5cGUodHlwZSkge1xuICByZXR1cm4gdHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nIHx8IC8vIE5vdGU6IGl0cyB0eXBlb2YgbWlnaHQgYmUgb3RoZXIgdGhhbiAnc3ltYm9sJyBvciAnbnVtYmVyJyBpZiBpdCdzIGEgcG9seWZpbGwuXG4gIHR5cGUgPT09IFJFQUNUX0ZSQUdNRU5UX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfQ09OQ1VSUkVOVF9NT0RFX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfUFJPRklMRVJfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFIHx8IHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsICYmICh0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9MQVpZX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTUVNT19UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1BST1ZJREVSX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRlVOREFNRU5UQUxfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9SRVNQT05ERVJfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9TQ09QRV9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0JMT0NLX1RZUEUpO1xufVxuXG5mdW5jdGlvbiB0eXBlT2Yob2JqZWN0KSB7XG4gIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwpIHtcbiAgICB2YXIgJCR0eXBlb2YgPSBvYmplY3QuJCR0eXBlb2Y7XG5cbiAgICBzd2l0Y2ggKCQkdHlwZW9mKSB7XG4gICAgICBjYXNlIFJFQUNUX0VMRU1FTlRfVFlQRTpcbiAgICAgICAgdmFyIHR5cGUgPSBvYmplY3QudHlwZTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICBjYXNlIFJFQUNUX0FTWU5DX01PREVfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfRlJBR01FTlRfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX1BST0ZJTEVSX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiB0eXBlO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHZhciAkJHR5cGVvZlR5cGUgPSB0eXBlICYmIHR5cGUuJCR0eXBlb2Y7XG5cbiAgICAgICAgICAgIHN3aXRjaCAoJCR0eXBlb2ZUeXBlKSB7XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfQ09OVEVYVF9UWVBFOlxuICAgICAgICAgICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICAgICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9QUk9WSURFUl9UWVBFOlxuICAgICAgICAgICAgICAgIHJldHVybiAkJHR5cGVvZlR5cGU7XG5cbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJCR0eXBlb2Y7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFJFQUNUX1BPUlRBTF9UWVBFOlxuICAgICAgICByZXR1cm4gJCR0eXBlb2Y7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn0gLy8gQXN5bmNNb2RlIGlzIGRlcHJlY2F0ZWQgYWxvbmcgd2l0aCBpc0FzeW5jTW9kZVxuXG52YXIgQXN5bmNNb2RlID0gUkVBQ1RfQVNZTkNfTU9ERV9UWVBFO1xudmFyIENvbmN1cnJlbnRNb2RlID0gUkVBQ1RfQ09OQ1VSUkVOVF9NT0RFX1RZUEU7XG52YXIgQ29udGV4dENvbnN1bWVyID0gUkVBQ1RfQ09OVEVYVF9UWVBFO1xudmFyIENvbnRleHRQcm92aWRlciA9IFJFQUNUX1BST1ZJREVSX1RZUEU7XG52YXIgRWxlbWVudCA9IFJFQUNUX0VMRU1FTlRfVFlQRTtcbnZhciBGb3J3YXJkUmVmID0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTtcbnZhciBGcmFnbWVudCA9IFJFQUNUX0ZSQUdNRU5UX1RZUEU7XG52YXIgTGF6eSA9IFJFQUNUX0xBWllfVFlQRTtcbnZhciBNZW1vID0gUkVBQ1RfTUVNT19UWVBFO1xudmFyIFBvcnRhbCA9IFJFQUNUX1BPUlRBTF9UWVBFO1xudmFyIFByb2ZpbGVyID0gUkVBQ1RfUFJPRklMRVJfVFlQRTtcbnZhciBTdHJpY3RNb2RlID0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRTtcbnZhciBTdXNwZW5zZSA9IFJFQUNUX1NVU1BFTlNFX1RZUEU7XG52YXIgaGFzV2FybmVkQWJvdXREZXByZWNhdGVkSXNBc3luY01vZGUgPSBmYWxzZTsgLy8gQXN5bmNNb2RlIHNob3VsZCBiZSBkZXByZWNhdGVkXG5cbmZ1bmN0aW9uIGlzQXN5bmNNb2RlKG9iamVjdCkge1xuICB7XG4gICAgaWYgKCFoYXNXYXJuZWRBYm91dERlcHJlY2F0ZWRJc0FzeW5jTW9kZSkge1xuICAgICAgaGFzV2FybmVkQWJvdXREZXByZWNhdGVkSXNBc3luY01vZGUgPSB0cnVlOyAvLyBVc2luZyBjb25zb2xlWyd3YXJuJ10gdG8gZXZhZGUgQmFiZWwgYW5kIEVTTGludFxuXG4gICAgICBjb25zb2xlWyd3YXJuJ10oJ1RoZSBSZWFjdElzLmlzQXN5bmNNb2RlKCkgYWxpYXMgaGFzIGJlZW4gZGVwcmVjYXRlZCwgJyArICdhbmQgd2lsbCBiZSByZW1vdmVkIGluIFJlYWN0IDE3Ky4gVXBkYXRlIHlvdXIgY29kZSB0byB1c2UgJyArICdSZWFjdElzLmlzQ29uY3VycmVudE1vZGUoKSBpbnN0ZWFkLiBJdCBoYXMgdGhlIGV4YWN0IHNhbWUgQVBJLicpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpc0NvbmN1cnJlbnRNb2RlKG9iamVjdCkgfHwgdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0FTWU5DX01PREVfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzQ29uY3VycmVudE1vZGUob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfQ09OQ1VSUkVOVF9NT0RFX1RZUEU7XG59XG5mdW5jdGlvbiBpc0NvbnRleHRDb25zdW1lcihvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9DT05URVhUX1RZUEU7XG59XG5mdW5jdGlvbiBpc0NvbnRleHRQcm92aWRlcihvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9QUk9WSURFUl9UWVBFO1xufVxuZnVuY3Rpb24gaXNFbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsICYmIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xufVxuZnVuY3Rpb24gaXNGb3J3YXJkUmVmKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU7XG59XG5mdW5jdGlvbiBpc0ZyYWdtZW50KG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0ZSQUdNRU5UX1RZUEU7XG59XG5mdW5jdGlvbiBpc0xhenkob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfTEFaWV9UWVBFO1xufVxuZnVuY3Rpb24gaXNNZW1vKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX01FTU9fVFlQRTtcbn1cbmZ1bmN0aW9uIGlzUG9ydGFsKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1BPUlRBTF9UWVBFO1xufVxuZnVuY3Rpb24gaXNQcm9maWxlcihvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9QUk9GSUxFUl9UWVBFO1xufVxuZnVuY3Rpb24gaXNTdHJpY3RNb2RlKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1NUUklDVF9NT0RFX1RZUEU7XG59XG5mdW5jdGlvbiBpc1N1c3BlbnNlKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1NVU1BFTlNFX1RZUEU7XG59XG5cbmV4cG9ydHMuQXN5bmNNb2RlID0gQXN5bmNNb2RlO1xuZXhwb3J0cy5Db25jdXJyZW50TW9kZSA9IENvbmN1cnJlbnRNb2RlO1xuZXhwb3J0cy5Db250ZXh0Q29uc3VtZXIgPSBDb250ZXh0Q29uc3VtZXI7XG5leHBvcnRzLkNvbnRleHRQcm92aWRlciA9IENvbnRleHRQcm92aWRlcjtcbmV4cG9ydHMuRWxlbWVudCA9IEVsZW1lbnQ7XG5leHBvcnRzLkZvcndhcmRSZWYgPSBGb3J3YXJkUmVmO1xuZXhwb3J0cy5GcmFnbWVudCA9IEZyYWdtZW50O1xuZXhwb3J0cy5MYXp5ID0gTGF6eTtcbmV4cG9ydHMuTWVtbyA9IE1lbW87XG5leHBvcnRzLlBvcnRhbCA9IFBvcnRhbDtcbmV4cG9ydHMuUHJvZmlsZXIgPSBQcm9maWxlcjtcbmV4cG9ydHMuU3RyaWN0TW9kZSA9IFN0cmljdE1vZGU7XG5leHBvcnRzLlN1c3BlbnNlID0gU3VzcGVuc2U7XG5leHBvcnRzLmlzQXN5bmNNb2RlID0gaXNBc3luY01vZGU7XG5leHBvcnRzLmlzQ29uY3VycmVudE1vZGUgPSBpc0NvbmN1cnJlbnRNb2RlO1xuZXhwb3J0cy5pc0NvbnRleHRDb25zdW1lciA9IGlzQ29udGV4dENvbnN1bWVyO1xuZXhwb3J0cy5pc0NvbnRleHRQcm92aWRlciA9IGlzQ29udGV4dFByb3ZpZGVyO1xuZXhwb3J0cy5pc0VsZW1lbnQgPSBpc0VsZW1lbnQ7XG5leHBvcnRzLmlzRm9yd2FyZFJlZiA9IGlzRm9yd2FyZFJlZjtcbmV4cG9ydHMuaXNGcmFnbWVudCA9IGlzRnJhZ21lbnQ7XG5leHBvcnRzLmlzTGF6eSA9IGlzTGF6eTtcbmV4cG9ydHMuaXNNZW1vID0gaXNNZW1vO1xuZXhwb3J0cy5pc1BvcnRhbCA9IGlzUG9ydGFsO1xuZXhwb3J0cy5pc1Byb2ZpbGVyID0gaXNQcm9maWxlcjtcbmV4cG9ydHMuaXNTdHJpY3RNb2RlID0gaXNTdHJpY3RNb2RlO1xuZXhwb3J0cy5pc1N1c3BlbnNlID0gaXNTdXNwZW5zZTtcbmV4cG9ydHMuaXNWYWxpZEVsZW1lbnRUeXBlID0gaXNWYWxpZEVsZW1lbnRUeXBlO1xuZXhwb3J0cy50eXBlT2YgPSB0eXBlT2Y7XG4gIH0pKCk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICd1c2Ugc3RyaWN0JztcblxuLyogZ2xvYmFsIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAqL1xuaWYgKFxuICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICE9PSAndW5kZWZpbmVkJyAmJlxuICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLnJlZ2lzdGVySW50ZXJuYWxNb2R1bGVTdGFydCA9PT1cbiAgICAnZnVuY3Rpb24nXG4pIHtcbiAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLnJlZ2lzdGVySW50ZXJuYWxNb2R1bGVTdGFydChuZXcgRXJyb3IoKSk7XG59XG4gICAgICAgICAgdmFyIFJlYWN0VmVyc2lvbiA9ICcxOC4yLjAnO1xuXG4vLyBBVFRFTlRJT05cbi8vIFdoZW4gYWRkaW5nIG5ldyBzeW1ib2xzIHRvIHRoaXMgZmlsZSxcbi8vIFBsZWFzZSBjb25zaWRlciBhbHNvIGFkZGluZyB0byAncmVhY3QtZGV2dG9vbHMtc2hhcmVkL3NyYy9iYWNrZW5kL1JlYWN0U3ltYm9scydcbi8vIFRoZSBTeW1ib2wgdXNlZCB0byB0YWcgdGhlIFJlYWN0RWxlbWVudC1saWtlIHR5cGVzLlxudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKTtcbnZhciBSRUFDVF9QT1JUQUxfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnBvcnRhbCcpO1xudmFyIFJFQUNUX0ZSQUdNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5mcmFnbWVudCcpO1xudmFyIFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5zdHJpY3RfbW9kZScpO1xudmFyIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wcm9maWxlcicpO1xudmFyIFJFQUNUX1BST1ZJREVSX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wcm92aWRlcicpO1xudmFyIFJFQUNUX0NPTlRFWFRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmNvbnRleHQnKTtcbnZhciBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuZm9yd2FyZF9yZWYnKTtcbnZhciBSRUFDVF9TVVNQRU5TRV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2UnKTtcbnZhciBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5zdXNwZW5zZV9saXN0Jyk7XG52YXIgUkVBQ1RfTUVNT19UWVBFID0gU3ltYm9sLmZvcigncmVhY3QubWVtbycpO1xudmFyIFJFQUNUX0xBWllfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmxhenknKTtcbnZhciBSRUFDVF9PRkZTQ1JFRU5fVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm9mZnNjcmVlbicpO1xudmFyIE1BWUJFX0lURVJBVE9SX1NZTUJPTCA9IFN5bWJvbC5pdGVyYXRvcjtcbnZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJztcbmZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuICBpZiAobWF5YmVJdGVyYWJsZSA9PT0gbnVsbCB8fCB0eXBlb2YgbWF5YmVJdGVyYWJsZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBtYXliZUl0ZXJhdG9yID0gTUFZQkVfSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbTUFZQkVfSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXTtcblxuICBpZiAodHlwZW9mIG1heWJlSXRlcmF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbWF5YmVJdGVyYXRvcjtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEtlZXBzIHRyYWNrIG9mIHRoZSBjdXJyZW50IGRpc3BhdGNoZXIuXG4gKi9cbnZhciBSZWFjdEN1cnJlbnREaXNwYXRjaGVyID0ge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEB0eXBlIHtSZWFjdENvbXBvbmVudH1cbiAgICovXG4gIGN1cnJlbnQ6IG51bGxcbn07XG5cbi8qKlxuICogS2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgYmF0Y2gncyBjb25maWd1cmF0aW9uIHN1Y2ggYXMgaG93IGxvbmcgYW4gdXBkYXRlXG4gKiBzaG91bGQgc3VzcGVuZCBmb3IgaWYgaXQgbmVlZHMgdG8uXG4gKi9cbnZhciBSZWFjdEN1cnJlbnRCYXRjaENvbmZpZyA9IHtcbiAgdHJhbnNpdGlvbjogbnVsbFxufTtcblxudmFyIFJlYWN0Q3VycmVudEFjdFF1ZXVlID0ge1xuICBjdXJyZW50OiBudWxsLFxuICAvLyBVc2VkIHRvIHJlcHJvZHVjZSBiZWhhdmlvciBvZiBgYmF0Y2hlZFVwZGF0ZXNgIGluIGxlZ2FjeSBtb2RlLlxuICBpc0JhdGNoaW5nTGVnYWN5OiBmYWxzZSxcbiAgZGlkU2NoZWR1bGVMZWdhY3lVcGRhdGU6IGZhbHNlXG59O1xuXG4vKipcbiAqIEtlZXBzIHRyYWNrIG9mIHRoZSBjdXJyZW50IG93bmVyLlxuICpcbiAqIFRoZSBjdXJyZW50IG93bmVyIGlzIHRoZSBjb21wb25lbnQgd2hvIHNob3VsZCBvd24gYW55IGNvbXBvbmVudHMgdGhhdCBhcmVcbiAqIGN1cnJlbnRseSBiZWluZyBjb25zdHJ1Y3RlZC5cbiAqL1xudmFyIFJlYWN0Q3VycmVudE93bmVyID0ge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEB0eXBlIHtSZWFjdENvbXBvbmVudH1cbiAgICovXG4gIGN1cnJlbnQ6IG51bGxcbn07XG5cbnZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lID0ge307XG52YXIgY3VycmVudEV4dHJhU3RhY2tGcmFtZSA9IG51bGw7XG5mdW5jdGlvbiBzZXRFeHRyYVN0YWNrRnJhbWUoc3RhY2spIHtcbiAge1xuICAgIGN1cnJlbnRFeHRyYVN0YWNrRnJhbWUgPSBzdGFjaztcbiAgfVxufVxuXG57XG4gIFJlYWN0RGVidWdDdXJyZW50RnJhbWUuc2V0RXh0cmFTdGFja0ZyYW1lID0gZnVuY3Rpb24gKHN0YWNrKSB7XG4gICAge1xuICAgICAgY3VycmVudEV4dHJhU3RhY2tGcmFtZSA9IHN0YWNrO1xuICAgIH1cbiAgfTsgLy8gU3RhY2sgaW1wbGVtZW50YXRpb24gaW5qZWN0ZWQgYnkgdGhlIGN1cnJlbnQgcmVuZGVyZXIuXG5cblxuICBSZWFjdERlYnVnQ3VycmVudEZyYW1lLmdldEN1cnJlbnRTdGFjayA9IG51bGw7XG5cbiAgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZS5nZXRTdGFja0FkZGVuZHVtID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdGFjayA9ICcnOyAvLyBBZGQgYW4gZXh0cmEgdG9wIGZyYW1lIHdoaWxlIGFuIGVsZW1lbnQgaXMgYmVpbmcgdmFsaWRhdGVkXG5cbiAgICBpZiAoY3VycmVudEV4dHJhU3RhY2tGcmFtZSkge1xuICAgICAgc3RhY2sgKz0gY3VycmVudEV4dHJhU3RhY2tGcmFtZTtcbiAgICB9IC8vIERlbGVnYXRlIHRvIHRoZSBpbmplY3RlZCByZW5kZXJlci1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvblxuXG5cbiAgICB2YXIgaW1wbCA9IFJlYWN0RGVidWdDdXJyZW50RnJhbWUuZ2V0Q3VycmVudFN0YWNrO1xuXG4gICAgaWYgKGltcGwpIHtcbiAgICAgIHN0YWNrICs9IGltcGwoKSB8fCAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhY2s7XG4gIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbnZhciBlbmFibGVTY29wZUFQSSA9IGZhbHNlOyAvLyBFeHBlcmltZW50YWwgQ3JlYXRlIEV2ZW50IEhhbmRsZSBBUEkuXG52YXIgZW5hYmxlQ2FjaGVFbGVtZW50ID0gZmFsc2U7XG52YXIgZW5hYmxlVHJhbnNpdGlvblRyYWNpbmcgPSBmYWxzZTsgLy8gTm8ga25vd24gYnVncywgYnV0IG5lZWRzIHBlcmZvcm1hbmNlIHRlc3RpbmdcblxudmFyIGVuYWJsZUxlZ2FjeUhpZGRlbiA9IGZhbHNlOyAvLyBFbmFibGVzIHVuc3RhYmxlX2F2b2lkVGhpc0ZhbGxiYWNrIGZlYXR1cmUgaW4gRmliZXJcbi8vIHN0dWZmLiBJbnRlbmRlZCB0byBlbmFibGUgUmVhY3QgY29yZSBtZW1iZXJzIHRvIG1vcmUgZWFzaWx5IGRlYnVnIHNjaGVkdWxpbmdcbi8vIGlzc3VlcyBpbiBERVYgYnVpbGRzLlxuXG52YXIgZW5hYmxlRGVidWdUcmFjaW5nID0gZmFsc2U7IC8vIFRyYWNrIHdoaWNoIEZpYmVyKHMpIHNjaGVkdWxlIHJlbmRlciB3b3JrLlxuXG52YXIgUmVhY3RTaGFyZWRJbnRlcm5hbHMgPSB7XG4gIFJlYWN0Q3VycmVudERpc3BhdGNoZXI6IFJlYWN0Q3VycmVudERpc3BhdGNoZXIsXG4gIFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnOiBSZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxcbiAgUmVhY3RDdXJyZW50T3duZXI6IFJlYWN0Q3VycmVudE93bmVyXG59O1xuXG57XG4gIFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0RGVidWdDdXJyZW50RnJhbWUgPSBSZWFjdERlYnVnQ3VycmVudEZyYW1lO1xuICBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdEN1cnJlbnRBY3RRdWV1ZSA9IFJlYWN0Q3VycmVudEFjdFF1ZXVlO1xufVxuXG4vLyBieSBjYWxscyB0byB0aGVzZSBtZXRob2RzIGJ5IGEgQmFiZWwgcGx1Z2luLlxuLy9cbi8vIEluIFBST0QgKG9yIGluIHBhY2thZ2VzIHdpdGhvdXQgYWNjZXNzIHRvIFJlYWN0IGludGVybmFscyksXG4vLyB0aGV5IGFyZSBsZWZ0IGFzIHRoZXkgYXJlIGluc3RlYWQuXG5cbmZ1bmN0aW9uIHdhcm4oZm9ybWF0KSB7XG4gIHtcbiAgICB7XG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgfVxuXG4gICAgICBwcmludFdhcm5pbmcoJ3dhcm4nLCBmb3JtYXQsIGFyZ3MpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gZXJyb3IoZm9ybWF0KSB7XG4gIHtcbiAgICB7XG4gICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIgPiAxID8gX2xlbjIgLSAxIDogMCksIF9rZXkyID0gMTsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgICBhcmdzW19rZXkyIC0gMV0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgICAgfVxuXG4gICAgICBwcmludFdhcm5pbmcoJ2Vycm9yJywgZm9ybWF0LCBhcmdzKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJpbnRXYXJuaW5nKGxldmVsLCBmb3JtYXQsIGFyZ3MpIHtcbiAgLy8gV2hlbiBjaGFuZ2luZyB0aGlzIGxvZ2ljLCB5b3UgbWlnaHQgd2FudCB0byBhbHNvXG4gIC8vIHVwZGF0ZSBjb25zb2xlV2l0aFN0YWNrRGV2Lnd3dy5qcyBhcyB3ZWxsLlxuICB7XG4gICAgdmFyIFJlYWN0RGVidWdDdXJyZW50RnJhbWUgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lO1xuICAgIHZhciBzdGFjayA9IFJlYWN0RGVidWdDdXJyZW50RnJhbWUuZ2V0U3RhY2tBZGRlbmR1bSgpO1xuXG4gICAgaWYgKHN0YWNrICE9PSAnJykge1xuICAgICAgZm9ybWF0ICs9ICclcyc7XG4gICAgICBhcmdzID0gYXJncy5jb25jYXQoW3N0YWNrXSk7XG4gICAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cblxuXG4gICAgdmFyIGFyZ3NXaXRoRm9ybWF0ID0gYXJncy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBTdHJpbmcoaXRlbSk7XG4gICAgfSk7IC8vIENhcmVmdWw6IFJOIGN1cnJlbnRseSBkZXBlbmRzIG9uIHRoaXMgcHJlZml4XG5cbiAgICBhcmdzV2l0aEZvcm1hdC51bnNoaWZ0KCdXYXJuaW5nOiAnICsgZm9ybWF0KTsgLy8gV2UgaW50ZW50aW9uYWxseSBkb24ndCB1c2Ugc3ByZWFkIChvciAuYXBwbHkpIGRpcmVjdGx5IGJlY2F1c2UgaXRcbiAgICAvLyBicmVha3MgSUU5OiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzEzNjEwXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZ1xuXG4gICAgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoY29uc29sZVtsZXZlbF0sIGNvbnNvbGUsIGFyZ3NXaXRoRm9ybWF0KTtcbiAgfVxufVxuXG52YXIgZGlkV2FyblN0YXRlVXBkYXRlRm9yVW5tb3VudGVkQ29tcG9uZW50ID0ge307XG5cbmZ1bmN0aW9uIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7XG4gIHtcbiAgICB2YXIgX2NvbnN0cnVjdG9yID0gcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3I7XG4gICAgdmFyIGNvbXBvbmVudE5hbWUgPSBfY29uc3RydWN0b3IgJiYgKF9jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCBfY29uc3RydWN0b3IubmFtZSkgfHwgJ1JlYWN0Q2xhc3MnO1xuICAgIHZhciB3YXJuaW5nS2V5ID0gY29tcG9uZW50TmFtZSArIFwiLlwiICsgY2FsbGVyTmFtZTtcblxuICAgIGlmIChkaWRXYXJuU3RhdGVVcGRhdGVGb3JVbm1vdW50ZWRDb21wb25lbnRbd2FybmluZ0tleV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlcnJvcihcIkNhbid0IGNhbGwgJXMgb24gYSBjb21wb25lbnQgdGhhdCBpcyBub3QgeWV0IG1vdW50ZWQuIFwiICsgJ1RoaXMgaXMgYSBuby1vcCwgYnV0IGl0IG1pZ2h0IGluZGljYXRlIGEgYnVnIGluIHlvdXIgYXBwbGljYXRpb24uICcgKyAnSW5zdGVhZCwgYXNzaWduIHRvIGB0aGlzLnN0YXRlYCBkaXJlY3RseSBvciBkZWZpbmUgYSBgc3RhdGUgPSB7fTtgICcgKyAnY2xhc3MgcHJvcGVydHkgd2l0aCB0aGUgZGVzaXJlZCBzdGF0ZSBpbiB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNvbXBvbmVudE5hbWUpO1xuXG4gICAgZGlkV2FyblN0YXRlVXBkYXRlRm9yVW5tb3VudGVkQ29tcG9uZW50W3dhcm5pbmdLZXldID0gdHJ1ZTtcbiAgfVxufVxuLyoqXG4gKiBUaGlzIGlzIHRoZSBhYnN0cmFjdCBBUEkgZm9yIGFuIHVwZGF0ZSBxdWV1ZS5cbiAqL1xuXG5cbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHtcbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ugd2FudCB0byB0ZXN0LlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogQHByb3RlY3RlZFxuICAgKiBAZmluYWxcbiAgICovXG4gIGlzTW91bnRlZDogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG4gICAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG4gICAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIGNvbXBvbmVudCBpcyB1cGRhdGVkLlxuICAgKiBAcGFyYW0gez9zdHJpbmd9IGNhbGxlck5hbWUgbmFtZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlvbiBpbiB0aGUgcHVibGljIEFQSS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUpIHtcbiAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cbiAgICogWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuICAgKlxuICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzb1xuICAgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBsZXRlU3RhdGUgTmV4dCBzdGF0ZS5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBjb21wb25lbnQgaXMgdXBkYXRlZC5cbiAgICogQHBhcmFtIHs/c3RyaW5nfSBjYWxsZXJOYW1lIG5hbWUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb24gaW4gdGhlIHB1YmxpYyBBUEkuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0YXRlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSkge1xuICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAncmVwbGFjZVN0YXRlJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2UgX3BlbmRpbmdTdGF0ZSBpc1xuICAgKiBpbnRlcm5hbC4gVGhpcyBwcm92aWRlcyBhIG1lcmdpbmcgc3RyYXRlZ3kgdGhhdCBpcyBub3QgYXZhaWxhYmxlIHRvIGRlZXBcbiAgICogcHJvcGVydGllcyB3aGljaCBpcyBjb25mdXNpbmcuIFRPRE86IEV4cG9zZSBwZW5kaW5nU3RhdGUgb3IgZG9uJ3QgdXNlIGl0XG4gICAqIGR1cmluZyB0aGUgbWVyZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBzdGF0ZS5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBjb21wb25lbnQgaXMgdXBkYXRlZC5cbiAgICogQHBhcmFtIHs/c3RyaW5nfSBOYW1lIG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIGluIHRoZSBwdWJsaWMgQVBJLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVTZXRTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7XG4gICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpO1xuICB9XG59O1xuXG52YXIgYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcblxudmFyIGVtcHR5T2JqZWN0ID0ge307XG5cbntcbiAgT2JqZWN0LmZyZWV6ZShlbXB0eU9iamVjdCk7XG59XG4vKipcbiAqIEJhc2UgY2xhc3MgaGVscGVycyBmb3IgdGhlIHVwZGF0aW5nIHN0YXRlIG9mIGEgY29tcG9uZW50LlxuICovXG5cblxuZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDsgLy8gSWYgYSBjb21wb25lbnQgaGFzIHN0cmluZyByZWZzLCB3ZSB3aWxsIGFzc2lnbiBhIGRpZmZlcmVudCBvYmplY3QgbGF0ZXIuXG5cbiAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7IC8vIFdlIGluaXRpYWxpemUgdGhlIGRlZmF1bHQgdXBkYXRlciBidXQgdGhlIHJlYWwgb25lIGdldHMgaW5qZWN0ZWQgYnkgdGhlXG4gIC8vIHJlbmRlcmVyLlxuXG4gIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG59XG5cbkNvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCA9IHt9O1xuLyoqXG4gKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIHRvIG11dGF0ZVxuICogc3RhdGUuIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS5cbiAqXG4gKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzb1xuICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5cbiAqXG4gKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBjYWxscyB0byBgc2V0U3RhdGVgIHdpbGwgcnVuIHN5bmNocm9ub3VzbHksXG4gKiBhcyB0aGV5IG1heSBldmVudHVhbGx5IGJlIGJhdGNoZWQgdG9nZXRoZXIuICBZb3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWxcbiAqIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB3aGVuIHRoZSBjYWxsIHRvIHNldFN0YXRlIGlzIGFjdHVhbGx5XG4gKiBjb21wbGV0ZWQuXG4gKlxuICogV2hlbiBhIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRvIHNldFN0YXRlLCBpdCB3aWxsIGJlIGNhbGxlZCBhdCBzb21lIHBvaW50IGluXG4gKiB0aGUgZnV0dXJlIChub3Qgc3luY2hyb25vdXNseSkuIEl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHVwIHRvIGRhdGVcbiAqIGNvbXBvbmVudCBhcmd1bWVudHMgKHN0YXRlLCBwcm9wcywgY29udGV4dCkuIFRoZXNlIHZhbHVlcyBjYW4gYmUgZGlmZmVyZW50XG4gKiBmcm9tIHRoaXMuKiBiZWNhdXNlIHlvdXIgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBhZnRlciByZWNlaXZlUHJvcHMgYnV0IGJlZm9yZVxuICogc2hvdWxkQ29tcG9uZW50VXBkYXRlLCBhbmQgdGhpcyBuZXcgc3RhdGUsIHByb3BzLCBhbmQgY29udGV4dCB3aWxsIG5vdCB5ZXQgYmVcbiAqIGFzc2lnbmVkIHRvIHRoaXMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgb3IgZnVuY3Rpb24gdG9cbiAqICAgICAgICBwcm9kdWNlIG5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBjdXJyZW50IHN0YXRlLlxuICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLlxuICogQGZpbmFsXG4gKiBAcHJvdGVjdGVkXG4gKi9cblxuQ29tcG9uZW50LnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIChwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2YgcGFydGlhbFN0YXRlICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgcGFydGlhbFN0YXRlICE9PSAnZnVuY3Rpb24nICYmIHBhcnRpYWxTdGF0ZSAhPSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRTdGF0ZSguLi4pOiB0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzIHRvIHVwZGF0ZSBvciBhICcgKyAnZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLicpO1xuICB9XG5cbiAgdGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLCBwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrLCAnc2V0U3RhdGUnKTtcbn07XG4vKipcbiAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcbiAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuICpcbiAqIFlvdSBtYXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBvZiB0aGVcbiAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxuICpcbiAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2VcbiAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG4gKlxuICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciB1cGRhdGUgaXMgY29tcGxldGUuXG4gKiBAZmluYWxcbiAqIEBwcm90ZWN0ZWRcbiAqL1xuXG5cbkNvbXBvbmVudC5wcm90b3R5cGUuZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLCBjYWxsYmFjaywgJ2ZvcmNlVXBkYXRlJyk7XG59O1xuLyoqXG4gKiBEZXByZWNhdGVkIEFQSXMuIFRoZXNlIEFQSXMgdXNlZCB0byBleGlzdCBvbiBjbGFzc2ljIFJlYWN0IGNsYXNzZXMgYnV0IHNpbmNlXG4gKiB3ZSB3b3VsZCBsaWtlIHRvIGRlcHJlY2F0ZSB0aGVtLCB3ZSdyZSBub3QgZ29pbmcgdG8gbW92ZSB0aGVtIG92ZXIgdG8gdGhpc1xuICogbW9kZXJuIGJhc2UgY2xhc3MuIEluc3RlYWQsIHdlIGRlZmluZSBhIGdldHRlciB0aGF0IHdhcm5zIGlmIGl0J3MgYWNjZXNzZWQuXG4gKi9cblxuXG57XG4gIHZhciBkZXByZWNhdGVkQVBJcyA9IHtcbiAgICBpc01vdW50ZWQ6IFsnaXNNb3VudGVkJywgJ0luc3RlYWQsIG1ha2Ugc3VyZSB0byBjbGVhbiB1cCBzdWJzY3JpcHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluICcgKyAnY29tcG9uZW50V2lsbFVubW91bnQgdG8gcHJldmVudCBtZW1vcnkgbGVha3MuJ10sXG4gICAgcmVwbGFjZVN0YXRlOiBbJ3JlcGxhY2VTdGF0ZScsICdSZWZhY3RvciB5b3VyIGNvZGUgdG8gdXNlIHNldFN0YXRlIGluc3RlYWQgKHNlZSAnICsgJ2h0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMzIzNikuJ11cbiAgfTtcblxuICB2YXIgZGVmaW5lRGVwcmVjYXRpb25XYXJuaW5nID0gZnVuY3Rpb24gKG1ldGhvZE5hbWUsIGluZm8pIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29tcG9uZW50LnByb3RvdHlwZSwgbWV0aG9kTmFtZSwge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHdhcm4oJyVzKC4uLikgaXMgZGVwcmVjYXRlZCBpbiBwbGFpbiBKYXZhU2NyaXB0IFJlYWN0IGNsYXNzZXMuICVzJywgaW5mb1swXSwgaW5mb1sxXSk7XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBmb3IgKHZhciBmbk5hbWUgaW4gZGVwcmVjYXRlZEFQSXMpIHtcbiAgICBpZiAoZGVwcmVjYXRlZEFQSXMuaGFzT3duUHJvcGVydHkoZm5OYW1lKSkge1xuICAgICAgZGVmaW5lRGVwcmVjYXRpb25XYXJuaW5nKGZuTmFtZSwgZGVwcmVjYXRlZEFQSXNbZm5OYW1lXSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIENvbXBvbmVudER1bW15KCkge31cblxuQ29tcG9uZW50RHVtbXkucHJvdG90eXBlID0gQ29tcG9uZW50LnByb3RvdHlwZTtcbi8qKlxuICogQ29udmVuaWVuY2UgY29tcG9uZW50IHdpdGggZGVmYXVsdCBzaGFsbG93IGVxdWFsaXR5IGNoZWNrIGZvciBzQ1UuXG4gKi9cblxuZnVuY3Rpb24gUHVyZUNvbXBvbmVudChwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xuICB0aGlzLnByb3BzID0gcHJvcHM7XG4gIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7IC8vIElmIGEgY29tcG9uZW50IGhhcyBzdHJpbmcgcmVmcywgd2Ugd2lsbCBhc3NpZ24gYSBkaWZmZXJlbnQgb2JqZWN0IGxhdGVyLlxuXG4gIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xuICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xufVxuXG52YXIgcHVyZUNvbXBvbmVudFByb3RvdHlwZSA9IFB1cmVDb21wb25lbnQucHJvdG90eXBlID0gbmV3IENvbXBvbmVudER1bW15KCk7XG5wdXJlQ29tcG9uZW50UHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUHVyZUNvbXBvbmVudDsgLy8gQXZvaWQgYW4gZXh0cmEgcHJvdG90eXBlIGp1bXAgZm9yIHRoZXNlIG1ldGhvZHMuXG5cbmFzc2lnbihwdXJlQ29tcG9uZW50UHJvdG90eXBlLCBDb21wb25lbnQucHJvdG90eXBlKTtcbnB1cmVDb21wb25lbnRQcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQgPSB0cnVlO1xuXG4vLyBhbiBpbW11dGFibGUgb2JqZWN0IHdpdGggYSBzaW5nbGUgbXV0YWJsZSB2YWx1ZVxuZnVuY3Rpb24gY3JlYXRlUmVmKCkge1xuICB2YXIgcmVmT2JqZWN0ID0ge1xuICAgIGN1cnJlbnQ6IG51bGxcbiAgfTtcblxuICB7XG4gICAgT2JqZWN0LnNlYWwocmVmT2JqZWN0KTtcbiAgfVxuXG4gIHJldHVybiByZWZPYmplY3Q7XG59XG5cbnZhciBpc0FycmF5SW1wbCA9IEFycmF5LmlzQXJyYXk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcblxuZnVuY3Rpb24gaXNBcnJheShhKSB7XG4gIHJldHVybiBpc0FycmF5SW1wbChhKTtcbn1cblxuLypcbiAqIFRoZSBgJycgKyB2YWx1ZWAgcGF0dGVybiAodXNlZCBpbiBpbiBwZXJmLXNlbnNpdGl2ZSBjb2RlKSB0aHJvd3MgZm9yIFN5bWJvbFxuICogYW5kIFRlbXBvcmFsLiogdHlwZXMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC8yMjA2NC5cbiAqXG4gKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlIHdpbGwgdGhyb3cgYW4gZWFzaWVyLXRvLXVuZGVyc3RhbmQsXG4gKiBlYXNpZXItdG8tZGVidWcgZXhjZXB0aW9uIHdpdGggYSBjbGVhciBlcnJvcnMgbWVzc2FnZSBtZXNzYWdlIGV4cGxhaW5pbmcgdGhlXG4gKiBwcm9ibGVtLiAoSW5zdGVhZCBvZiBhIGNvbmZ1c2luZyBleGNlcHRpb24gdGhyb3duIGluc2lkZSB0aGUgaW1wbGVtZW50YXRpb25cbiAqIG9mIHRoZSBgdmFsdWVgIG9iamVjdCkuXG4gKi9cbi8vICRGbG93Rml4TWUgb25seSBjYWxsZWQgaW4gREVWLCBzbyB2b2lkIHJldHVybiBpcyBub3QgcG9zc2libGUuXG5mdW5jdGlvbiB0eXBlTmFtZSh2YWx1ZSkge1xuICB7XG4gICAgLy8gdG9TdHJpbmdUYWcgaXMgbmVlZGVkIGZvciBuYW1lc3BhY2VkIHR5cGVzIGxpa2UgVGVtcG9yYWwuSW5zdGFudFxuICAgIHZhciBoYXNUb1N0cmluZ1RhZyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLnRvU3RyaW5nVGFnO1xuICAgIHZhciB0eXBlID0gaGFzVG9TdHJpbmdUYWcgJiYgdmFsdWVbU3ltYm9sLnRvU3RyaW5nVGFnXSB8fCB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lIHx8ICdPYmplY3QnO1xuICAgIHJldHVybiB0eXBlO1xuICB9XG59IC8vICRGbG93Rml4TWUgb25seSBjYWxsZWQgaW4gREVWLCBzbyB2b2lkIHJldHVybiBpcyBub3QgcG9zc2libGUuXG5cblxuZnVuY3Rpb24gd2lsbENvZXJjaW9uVGhyb3codmFsdWUpIHtcbiAge1xuICAgIHRyeSB7XG4gICAgICB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpIHtcbiAgLy8gSWYgeW91IGVuZGVkIHVwIGhlcmUgYnkgZm9sbG93aW5nIGFuIGV4Y2VwdGlvbiBjYWxsIHN0YWNrLCBoZXJlJ3Mgd2hhdCdzXG4gIC8vIGhhcHBlbmVkOiB5b3Ugc3VwcGxpZWQgYW4gb2JqZWN0IG9yIHN5bWJvbCB2YWx1ZSB0byBSZWFjdCAoYXMgYSBwcm9wLCBrZXksXG4gIC8vIERPTSBhdHRyaWJ1dGUsIENTUyBwcm9wZXJ0eSwgc3RyaW5nIHJlZiwgZXRjLikgYW5kIHdoZW4gUmVhY3QgdHJpZWQgdG9cbiAgLy8gY29lcmNlIGl0IHRvIGEgc3RyaW5nIHVzaW5nIGAnJyArIHZhbHVlYCwgYW4gZXhjZXB0aW9uIHdhcyB0aHJvd24uXG4gIC8vXG4gIC8vIFRoZSBtb3N0IGNvbW1vbiB0eXBlcyB0aGF0IHdpbGwgY2F1c2UgdGhpcyBleGNlcHRpb24gYXJlIGBTeW1ib2xgIGluc3RhbmNlc1xuICAvLyBhbmQgVGVtcG9yYWwgb2JqZWN0cyBsaWtlIGBUZW1wb3JhbC5JbnN0YW50YC4gQnV0IGFueSBvYmplY3QgdGhhdCBoYXMgYVxuICAvLyBgdmFsdWVPZmAgb3IgYFtTeW1ib2wudG9QcmltaXRpdmVdYCBtZXRob2QgdGhhdCB0aHJvd3Mgd2lsbCBhbHNvIGNhdXNlIHRoaXNcbiAgLy8gZXhjZXB0aW9uLiAoTGlicmFyeSBhdXRob3JzIGRvIHRoaXMgdG8gcHJldmVudCB1c2VycyBmcm9tIHVzaW5nIGJ1aWx0LWluXG4gIC8vIG51bWVyaWMgb3BlcmF0b3JzIGxpa2UgYCtgIG9yIGNvbXBhcmlzb24gb3BlcmF0b3JzIGxpa2UgYD49YCBiZWNhdXNlIGN1c3RvbVxuICAvLyBtZXRob2RzIGFyZSBuZWVkZWQgdG8gcGVyZm9ybSBhY2N1cmF0ZSBhcml0aG1ldGljIG9yIGNvbXBhcmlzb24uKVxuICAvL1xuICAvLyBUbyBmaXggdGhlIHByb2JsZW0sIGNvZXJjZSB0aGlzIG9iamVjdCBvciBzeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmcgYmVmb3JlXG4gIC8vIHBhc3NpbmcgaXQgdG8gUmVhY3QuIFRoZSBtb3N0IHJlbGlhYmxlIHdheSBpcyB1c3VhbGx5IGBTdHJpbmcodmFsdWUpYC5cbiAgLy9cbiAgLy8gVG8gZmluZCB3aGljaCB2YWx1ZSBpcyB0aHJvd2luZywgY2hlY2sgdGhlIGJyb3dzZXIgb3IgZGVidWdnZXIgY29uc29sZS5cbiAgLy8gQmVmb3JlIHRoaXMgZXhjZXB0aW9uIHdhcyB0aHJvd24sIHRoZXJlIHNob3VsZCBiZSBgY29uc29sZS5lcnJvcmAgb3V0cHV0XG4gIC8vIHRoYXQgc2hvd3MgdGhlIHR5cGUgKFN5bWJvbCwgVGVtcG9yYWwuUGxhaW5EYXRlLCBldGMuKSB0aGF0IGNhdXNlZCB0aGVcbiAgLy8gcHJvYmxlbSBhbmQgaG93IHRoYXQgdHlwZSB3YXMgdXNlZDoga2V5LCBhdHJyaWJ1dGUsIGlucHV0IHZhbHVlIHByb3AsIGV0Yy5cbiAgLy8gSW4gbW9zdCBjYXNlcywgdGhpcyBjb25zb2xlIG91dHB1dCBhbHNvIHNob3dzIHRoZSBjb21wb25lbnQgYW5kIGl0c1xuICAvLyBhbmNlc3RvciBjb21wb25lbnRzIHdoZXJlIHRoZSBleGNlcHRpb24gaGFwcGVuZWQuXG4gIC8vXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuICByZXR1cm4gJycgKyB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGNoZWNrS2V5U3RyaW5nQ29lcmNpb24odmFsdWUpIHtcbiAge1xuICAgIGlmICh3aWxsQ29lcmNpb25UaHJvdyh2YWx1ZSkpIHtcbiAgICAgIGVycm9yKCdUaGUgcHJvdmlkZWQga2V5IGlzIGFuIHVuc3VwcG9ydGVkIHR5cGUgJXMuJyArICcgVGhpcyB2YWx1ZSBtdXN0IGJlIGNvZXJjZWQgdG8gYSBzdHJpbmcgYmVmb3JlIGJlZm9yZSB1c2luZyBpdCBoZXJlLicsIHR5cGVOYW1lKHZhbHVlKSk7XG5cbiAgICAgIHJldHVybiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpOyAvLyB0aHJvdyAodG8gaGVscCBjYWxsZXJzIGZpbmQgdHJvdWJsZXNob290aW5nIGNvbW1lbnRzKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRXcmFwcGVkTmFtZShvdXRlclR5cGUsIGlubmVyVHlwZSwgd3JhcHBlck5hbWUpIHtcbiAgdmFyIGRpc3BsYXlOYW1lID0gb3V0ZXJUeXBlLmRpc3BsYXlOYW1lO1xuXG4gIGlmIChkaXNwbGF5TmFtZSkge1xuICAgIHJldHVybiBkaXNwbGF5TmFtZTtcbiAgfVxuXG4gIHZhciBmdW5jdGlvbk5hbWUgPSBpbm5lclR5cGUuZGlzcGxheU5hbWUgfHwgaW5uZXJUeXBlLm5hbWUgfHwgJyc7XG4gIHJldHVybiBmdW5jdGlvbk5hbWUgIT09ICcnID8gd3JhcHBlck5hbWUgKyBcIihcIiArIGZ1bmN0aW9uTmFtZSArIFwiKVwiIDogd3JhcHBlck5hbWU7XG59IC8vIEtlZXAgaW4gc3luYyB3aXRoIHJlYWN0LXJlY29uY2lsZXIvZ2V0Q29tcG9uZW50TmFtZUZyb21GaWJlclxuXG5cbmZ1bmN0aW9uIGdldENvbnRleHROYW1lKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUuZGlzcGxheU5hbWUgfHwgJ0NvbnRleHQnO1xufSAvLyBOb3RlIHRoYXQgdGhlIHJlY29uY2lsZXIgcGFja2FnZSBzaG91bGQgZ2VuZXJhbGx5IHByZWZlciB0byB1c2UgZ2V0Q29tcG9uZW50TmFtZUZyb21GaWJlcigpIGluc3RlYWQuXG5cblxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHtcbiAgaWYgKHR5cGUgPT0gbnVsbCkge1xuICAgIC8vIEhvc3Qgcm9vdCwgdGV4dCBub2RlIG9yIGp1c3QgaW52YWxpZCB0eXBlLlxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAge1xuICAgIGlmICh0eXBlb2YgdHlwZS50YWcgPT09ICdudW1iZXInKSB7XG4gICAgICBlcnJvcignUmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBvYmplY3QgaW4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKCkuICcgKyAnVGhpcyBpcyBsaWtlbHkgYSBidWcgaW4gUmVhY3QuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLicpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCBudWxsO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAgcmV0dXJuICdGcmFnbWVudCc7XG5cbiAgICBjYXNlIFJFQUNUX1BPUlRBTF9UWVBFOlxuICAgICAgcmV0dXJuICdQb3J0YWwnO1xuXG4gICAgY2FzZSBSRUFDVF9QUk9GSUxFUl9UWVBFOlxuICAgICAgcmV0dXJuICdQcm9maWxlcic7XG5cbiAgICBjYXNlIFJFQUNUX1NUUklDVF9NT0RFX1RZUEU6XG4gICAgICByZXR1cm4gJ1N0cmljdE1vZGUnO1xuXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgcmV0dXJuICdTdXNwZW5zZSc7XG5cbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgIHJldHVybiAnU3VzcGVuc2VMaXN0JztcblxuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0Jykge1xuICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9DT05URVhUX1RZUEU6XG4gICAgICAgIHZhciBjb250ZXh0ID0gdHlwZTtcbiAgICAgICAgcmV0dXJuIGdldENvbnRleHROYW1lKGNvbnRleHQpICsgJy5Db25zdW1lcic7XG5cbiAgICAgIGNhc2UgUkVBQ1RfUFJPVklERVJfVFlQRTpcbiAgICAgICAgdmFyIHByb3ZpZGVyID0gdHlwZTtcbiAgICAgICAgcmV0dXJuIGdldENvbnRleHROYW1lKHByb3ZpZGVyLl9jb250ZXh0KSArICcuUHJvdmlkZXInO1xuXG4gICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgIHJldHVybiBnZXRXcmFwcGVkTmFtZSh0eXBlLCB0eXBlLnJlbmRlciwgJ0ZvcndhcmRSZWYnKTtcblxuICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgIHZhciBvdXRlck5hbWUgPSB0eXBlLmRpc3BsYXlOYW1lIHx8IG51bGw7XG5cbiAgICAgICAgaWYgKG91dGVyTmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBvdXRlck5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUudHlwZSkgfHwgJ01lbW8nO1xuXG4gICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBsYXp5Q29tcG9uZW50ID0gdHlwZTtcbiAgICAgICAgICB2YXIgcGF5bG9hZCA9IGxhenlDb21wb25lbnQuX3BheWxvYWQ7XG4gICAgICAgICAgdmFyIGluaXQgPSBsYXp5Q29tcG9uZW50Ll9pbml0O1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoaW5pdChwYXlsb2FkKSk7XG4gICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1mYWxsdGhyb3VnaFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgUkVTRVJWRURfUFJPUFMgPSB7XG4gIGtleTogdHJ1ZSxcbiAgcmVmOiB0cnVlLFxuICBfX3NlbGY6IHRydWUsXG4gIF9fc291cmNlOiB0cnVlXG59O1xudmFyIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duLCBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93biwgZGlkV2FybkFib3V0U3RyaW5nUmVmcztcblxue1xuICBkaWRXYXJuQWJvdXRTdHJpbmdSZWZzID0ge307XG59XG5cbmZ1bmN0aW9uIGhhc1ZhbGlkUmVmKGNvbmZpZykge1xuICB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ3JlZicpLmdldDtcblxuICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25maWcucmVmICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGhhc1ZhbGlkS2V5KGNvbmZpZykge1xuICB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAna2V5JykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ2tleScpLmdldDtcblxuICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25maWcua2V5ICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSkge1xuICB2YXIgd2FybkFib3V0QWNjZXNzaW5nS2V5ID0gZnVuY3Rpb24gKCkge1xuICAgIHtcbiAgICAgIGlmICghc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24pIHtcbiAgICAgICAgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24gPSB0cnVlO1xuXG4gICAgICAgIGVycm9yKCclczogYGtleWAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4gKGh0dHBzOi8vcmVhY3Rqcy5vcmcvbGluay9zcGVjaWFsLXByb3BzKScsIGRpc3BsYXlOYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgd2FybkFib3V0QWNjZXNzaW5nS2V5LmlzUmVhY3RXYXJuaW5nID0gdHJ1ZTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAna2V5Jywge1xuICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nS2V5LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxuZnVuY3Rpb24gZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XG4gIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYgPSBmdW5jdGlvbiAoKSB7XG4gICAge1xuICAgICAgaWYgKCFzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bikge1xuICAgICAgICBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93biA9IHRydWU7XG5cbiAgICAgICAgZXJyb3IoJyVzOiBgcmVmYCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3NwZWNpYWwtcHJvcHMpJywgZGlzcGxheU5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYuaXNSZWFjdFdhcm5pbmcgPSB0cnVlO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdyZWYnLCB7XG4gICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiB3YXJuSWZTdHJpbmdSZWZDYW5ub3RCZUF1dG9Db252ZXJ0ZWQoY29uZmlnKSB7XG4gIHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5yZWYgPT09ICdzdHJpbmcnICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgJiYgY29uZmlnLl9fc2VsZiAmJiBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LnN0YXRlTm9kZSAhPT0gY29uZmlnLl9fc2VsZikge1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC50eXBlKTtcblxuICAgICAgaWYgKCFkaWRXYXJuQWJvdXRTdHJpbmdSZWZzW2NvbXBvbmVudE5hbWVdKSB7XG4gICAgICAgIGVycm9yKCdDb21wb25lbnQgXCIlc1wiIGNvbnRhaW5zIHRoZSBzdHJpbmcgcmVmIFwiJXNcIi4gJyArICdTdXBwb3J0IGZvciBzdHJpbmcgcmVmcyB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgbWFqb3IgcmVsZWFzZS4gJyArICdUaGlzIGNhc2UgY2Fubm90IGJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIGFuIGFycm93IGZ1bmN0aW9uLiAnICsgJ1dlIGFzayB5b3UgdG8gbWFudWFsbHkgZml4IHRoaXMgY2FzZSBieSB1c2luZyB1c2VSZWYoKSBvciBjcmVhdGVSZWYoKSBpbnN0ZWFkLiAnICsgJ0xlYXJuIG1vcmUgYWJvdXQgdXNpbmcgcmVmcyBzYWZlbHkgaGVyZTogJyArICdodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3RyaWN0LW1vZGUtc3RyaW5nLXJlZicsIGNvbXBvbmVudE5hbWUsIGNvbmZpZy5yZWYpO1xuXG4gICAgICAgIGRpZFdhcm5BYm91dFN0cmluZ1JlZnNbY29tcG9uZW50TmFtZV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLyoqXG4gKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgYSBuZXcgUmVhY3QgZWxlbWVudC4gVGhpcyBubyBsb25nZXIgYWRoZXJlcyB0b1xuICogdGhlIGNsYXNzIHBhdHRlcm4sIHNvIGRvIG5vdCB1c2UgbmV3IHRvIGNhbGwgaXQuIEFsc28sIGluc3RhbmNlb2YgY2hlY2tcbiAqIHdpbGwgbm90IHdvcmsuIEluc3RlYWQgdGVzdCAkJHR5cGVvZiBmaWVsZCBhZ2FpbnN0IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSB0byBjaGVja1xuICogaWYgc29tZXRoaW5nIGlzIGEgUmVhY3QgRWxlbWVudC5cbiAqXG4gKiBAcGFyYW0geyp9IHR5cGVcbiAqIEBwYXJhbSB7Kn0gcHJvcHNcbiAqIEBwYXJhbSB7Kn0ga2V5XG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHJlZlxuICogQHBhcmFtIHsqfSBvd25lclxuICogQHBhcmFtIHsqfSBzZWxmIEEgKnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNgIGlzXG4gKiBkaWZmZXJlbnQgZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJlYWN0LmNyZWF0ZUVsZW1lbnQgaXMgY2FsbGVkLCBzbyB0aGF0IHdlXG4gKiBjYW4gd2Fybi4gV2Ugd2FudCB0byBnZXQgcmlkIG9mIG93bmVyIGFuZCByZXBsYWNlIHN0cmluZyBgcmVmYHMgd2l0aCBhcnJvd1xuICogZnVuY3Rpb25zLCBhbmQgYXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhlcmUgd2lsbCBiZSBub1xuICogY2hhbmdlIGluIGJlaGF2aW9yLlxuICogQHBhcmFtIHsqfSBzb3VyY2UgQW4gYW5ub3RhdGlvbiBvYmplY3QgKGFkZGVkIGJ5IGEgdHJhbnNwaWxlciBvciBvdGhlcndpc2UpXG4gKiBpbmRpY2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90aGVyIGluZm9ybWF0aW9uLlxuICogQGludGVybmFsXG4gKi9cblxuXG52YXIgUmVhY3RFbGVtZW50ID0gZnVuY3Rpb24gKHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcykge1xuICB2YXIgZWxlbWVudCA9IHtcbiAgICAvLyBUaGlzIHRhZyBhbGxvd3MgdXMgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhpcyBhcyBhIFJlYWN0IEVsZW1lbnRcbiAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxuICAgIC8vIEJ1aWx0LWluIHByb3BlcnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnRcbiAgICB0eXBlOiB0eXBlLFxuICAgIGtleToga2V5LFxuICAgIHJlZjogcmVmLFxuICAgIHByb3BzOiBwcm9wcyxcbiAgICAvLyBSZWNvcmQgdGhlIGNvbXBvbmVudCByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhpcyBlbGVtZW50LlxuICAgIF9vd25lcjogb3duZXJcbiAgfTtcblxuICB7XG4gICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBjdXJyZW50bHkgbXV0YXRpdmUuIFdlIHB1dCBpdCBvblxuICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXG4gICAgLy8gVGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIFdlYWtNYXAgb25jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCBpblxuICAgIC8vIGNvbW1vbmx5IHVzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLlxuICAgIGVsZW1lbnQuX3N0b3JlID0ge307IC8vIFRvIG1ha2UgY29tcGFyaW5nIFJlYWN0RWxlbWVudHMgZWFzaWVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB3ZSBtYWtlXG4gICAgLy8gdGhlIHZhbGlkYXRpb24gZmxhZyBub24tZW51bWVyYWJsZSAod2hlcmUgcG9zc2libGUsIHdoaWNoIHNob3VsZFxuICAgIC8vIGluY2x1ZGUgZXZlcnkgZW52aXJvbm1lbnQgd2UgcnVuIHRlc3RzIGluKSwgc28gdGhlIHRlc3QgZnJhbWV3b3JrXG4gICAgLy8gaWdub3JlcyBpdC5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50Ll9zdG9yZSwgJ3ZhbGlkYXRlZCcsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IGZhbHNlXG4gICAgfSk7IC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9ubHkgcHJvcGVydGllcy5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZTogc2VsZlxuICAgIH0pOyAvLyBUd28gZWxlbWVudHMgY3JlYXRlZCBpbiB0d28gZGlmZmVyZW50IHBsYWNlcyBzaG91bGQgYmUgY29uc2lkZXJlZFxuICAgIC8vIGVxdWFsIGZvciB0ZXN0aW5nIHB1cnBvc2VzIGFuZCB0aGVyZWZvcmUgd2UgaGlkZSBpdCBmcm9tIGVudW1lcmF0aW9uLlxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc291cmNlJywge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IHNvdXJjZVxuICAgIH0pO1xuXG4gICAgaWYgKE9iamVjdC5mcmVlemUpIHtcbiAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudC5wcm9wcyk7XG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbGVtZW50O1xufTtcbi8qKlxuICogQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgUmVhY3RFbGVtZW50IG9mIHRoZSBnaXZlbiB0eXBlLlxuICogU2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNjcmVhdGVlbGVtZW50XG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0eXBlLCBjb25maWcsIGNoaWxkcmVuKSB7XG4gIHZhciBwcm9wTmFtZTsgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZFxuXG4gIHZhciBwcm9wcyA9IHt9O1xuICB2YXIga2V5ID0gbnVsbDtcbiAgdmFyIHJlZiA9IG51bGw7XG4gIHZhciBzZWxmID0gbnVsbDtcbiAgdmFyIHNvdXJjZSA9IG51bGw7XG5cbiAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcbiAgICAgIHJlZiA9IGNvbmZpZy5yZWY7XG5cbiAgICAgIHtcbiAgICAgICAgd2FybklmU3RyaW5nUmVmQ2Fubm90QmVBdXRvQ29udmVydGVkKGNvbmZpZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGhhc1ZhbGlkS2V5KGNvbmZpZykpIHtcbiAgICAgIHtcbiAgICAgICAgY2hlY2tLZXlTdHJpbmdDb2VyY2lvbihjb25maWcua2V5KTtcbiAgICAgIH1cblxuICAgICAga2V5ID0gJycgKyBjb25maWcua2V5O1xuICAgIH1cblxuICAgIHNlbGYgPSBjb25maWcuX19zZWxmID09PSB1bmRlZmluZWQgPyBudWxsIDogY29uZmlnLl9fc2VsZjtcbiAgICBzb3VyY2UgPSBjb25maWcuX19zb3VyY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjb25maWcuX19zb3VyY2U7IC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIGFyZSBhZGRlZCB0byBhIG5ldyBwcm9wcyBvYmplY3RcblxuICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIHByb3BOYW1lKSAmJiAhUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9IC8vIENoaWxkcmVuIGNhbiBiZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50LCBhbmQgdGhvc2UgYXJlIHRyYW5zZmVycmVkIG9udG9cbiAgLy8gdGhlIG5ld2x5IGFsbG9jYXRlZCBwcm9wcyBvYmplY3QuXG5cblxuICB2YXIgY2hpbGRyZW5MZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoIC0gMjtcblxuICBpZiAoY2hpbGRyZW5MZW5ndGggPT09IDEpIHtcbiAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB9IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3RoID4gMSkge1xuICAgIHZhciBjaGlsZEFycmF5ID0gQXJyYXkoY2hpbGRyZW5MZW5ndGgpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICB9XG5cbiAgICB7XG4gICAgICBpZiAoT2JqZWN0LmZyZWV6ZSkge1xuICAgICAgICBPYmplY3QuZnJlZXplKGNoaWxkQXJyYXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcbiAgfSAvLyBSZXNvbHZlIGRlZmF1bHQgcHJvcHNcblxuXG4gIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzO1xuXG4gICAgZm9yIChwcm9wTmFtZSBpbiBkZWZhdWx0UHJvcHMpIHtcbiAgICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHtcbiAgICBpZiAoa2V5IHx8IHJlZikge1xuICAgICAgdmFyIGRpc3BsYXlOYW1lID0gdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgPyB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCAnVW5rbm93bicgOiB0eXBlO1xuXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQsIHByb3BzKTtcbn1cbmZ1bmN0aW9uIGNsb25lQW5kUmVwbGFjZUtleShvbGRFbGVtZW50LCBuZXdLZXkpIHtcbiAgdmFyIG5ld0VsZW1lbnQgPSBSZWFjdEVsZW1lbnQob2xkRWxlbWVudC50eXBlLCBuZXdLZXksIG9sZEVsZW1lbnQucmVmLCBvbGRFbGVtZW50Ll9zZWxmLCBvbGRFbGVtZW50Ll9zb3VyY2UsIG9sZEVsZW1lbnQuX293bmVyLCBvbGRFbGVtZW50LnByb3BzKTtcbiAgcmV0dXJuIG5ld0VsZW1lbnQ7XG59XG4vKipcbiAqIENsb25lIGFuZCByZXR1cm4gYSBuZXcgUmVhY3RFbGVtZW50IHVzaW5nIGVsZW1lbnQgYXMgdGhlIHN0YXJ0aW5nIHBvaW50LlxuICogU2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNjbG9uZWVsZW1lbnRcbiAqL1xuXG5mdW5jdGlvbiBjbG9uZUVsZW1lbnQoZWxlbWVudCwgY29uZmlnLCBjaGlsZHJlbikge1xuICBpZiAoZWxlbWVudCA9PT0gbnVsbCB8fCBlbGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWFjdC5jbG9uZUVsZW1lbnQoLi4uKTogVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCBcIiArIGVsZW1lbnQgKyBcIi5cIik7XG4gIH1cblxuICB2YXIgcHJvcE5hbWU7IC8vIE9yaWdpbmFsIHByb3BzIGFyZSBjb3BpZWRcblxuICB2YXIgcHJvcHMgPSBhc3NpZ24oe30sIGVsZW1lbnQucHJvcHMpOyAvLyBSZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFjdGVkXG5cbiAgdmFyIGtleSA9IGVsZW1lbnQua2V5O1xuICB2YXIgcmVmID0gZWxlbWVudC5yZWY7IC8vIFNlbGYgaXMgcHJlc2VydmVkIHNpbmNlIHRoZSBvd25lciBpcyBwcmVzZXJ2ZWQuXG5cbiAgdmFyIHNlbGYgPSBlbGVtZW50Ll9zZWxmOyAvLyBTb3VyY2UgaXMgcHJlc2VydmVkIHNpbmNlIGNsb25lRWxlbWVudCBpcyB1bmxpa2VseSB0byBiZSB0YXJnZXRlZCBieSBhXG4gIC8vIHRyYW5zcGlsZXIsIGFuZCB0aGUgb3JpZ2luYWwgc291cmNlIGlzIHByb2JhYmx5IGEgYmV0dGVyIGluZGljYXRvciBvZiB0aGVcbiAgLy8gdHJ1ZSBvd25lci5cblxuICB2YXIgc291cmNlID0gZWxlbWVudC5fc291cmNlOyAvLyBPd25lciB3aWxsIGJlIHByZXNlcnZlZCwgdW5sZXNzIHJlZiBpcyBvdmVycmlkZGVuXG5cbiAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7XG5cbiAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcbiAgICAgIC8vIFNpbGVudGx5IHN0ZWFsIHRoZSByZWYgZnJvbSB0aGUgcGFyZW50LlxuICAgICAgcmVmID0gY29uZmlnLnJlZjtcbiAgICAgIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICB9XG5cbiAgICBpZiAoaGFzVmFsaWRLZXkoY29uZmlnKSkge1xuICAgICAge1xuICAgICAgICBjaGVja0tleVN0cmluZ0NvZXJjaW9uKGNvbmZpZy5rZXkpO1xuICAgICAgfVxuXG4gICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7XG4gICAgfSAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBvdmVycmlkZSBleGlzdGluZyBwcm9wc1xuXG5cbiAgICB2YXIgZGVmYXVsdFByb3BzO1xuXG4gICAgaWYgKGVsZW1lbnQudHlwZSAmJiBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgICBkZWZhdWx0UHJvcHMgPSBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzO1xuICAgIH1cblxuICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIHByb3BOYW1lKSAmJiAhUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIGlmIChjb25maWdbcHJvcE5hbWVdID09PSB1bmRlZmluZWQgJiYgZGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBSZXNvbHZlIGRlZmF1bHQgcHJvcHNcbiAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gLy8gQ2hpbGRyZW4gY2FuIGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJyZWQgb250b1xuICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVkIHByb3BzIG9iamVjdC5cblxuXG4gIHZhciBjaGlsZHJlbkxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGggLSAyO1xuXG4gIGlmIChjaGlsZHJlbkxlbmd0aCA9PT0gMSkge1xuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH0gZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7XG4gICAgdmFyIGNoaWxkQXJyYXkgPSBBcnJheShjaGlsZHJlbkxlbmd0aCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkQXJyYXlbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIH1cblxuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcbiAgfVxuXG4gIHJldHVybiBSZWFjdEVsZW1lbnQoZWxlbWVudC50eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpO1xufVxuLyoqXG4gKiBWZXJpZmllcyB0aGUgb2JqZWN0IGlzIGEgUmVhY3RFbGVtZW50LlxuICogU2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNpc3ZhbGlkZWxlbWVudFxuICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3RcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYG9iamVjdGAgaXMgYSBSZWFjdEVsZW1lbnQuXG4gKiBAZmluYWxcbiAqL1xuXG5mdW5jdGlvbiBpc1ZhbGlkRWxlbWVudChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbn1cblxudmFyIFNFUEFSQVRPUiA9ICcuJztcbnZhciBTVUJTRVBBUkFUT1IgPSAnOic7XG4vKipcbiAqIEVzY2FwZSBhbmQgd3JhcCBrZXkgc28gaXQgaXMgc2FmZSB0byB1c2UgYXMgYSByZWFjdGlkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSB0byBiZSBlc2NhcGVkLlxuICogQHJldHVybiB7c3RyaW5nfSB0aGUgZXNjYXBlZCBrZXkuXG4gKi9cblxuZnVuY3Rpb24gZXNjYXBlKGtleSkge1xuICB2YXIgZXNjYXBlUmVnZXggPSAvWz06XS9nO1xuICB2YXIgZXNjYXBlckxvb2t1cCA9IHtcbiAgICAnPSc6ICc9MCcsXG4gICAgJzonOiAnPTInXG4gIH07XG4gIHZhciBlc2NhcGVkU3RyaW5nID0ga2V5LnJlcGxhY2UoZXNjYXBlUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHJldHVybiBlc2NhcGVyTG9va3VwW21hdGNoXTtcbiAgfSk7XG4gIHJldHVybiAnJCcgKyBlc2NhcGVkU3RyaW5nO1xufVxuLyoqXG4gKiBUT0RPOiBUZXN0IHRoYXQgYSBzaW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUgc2FtZSBrZXlcbiAqIHBhdHRlcm4uXG4gKi9cblxuXG52YXIgZGlkV2FybkFib3V0TWFwcyA9IGZhbHNlO1xudmFyIHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4ID0gL1xcLysvZztcblxuZnVuY3Rpb24gZXNjYXBlVXNlclByb3ZpZGVkS2V5KHRleHQpIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZSh1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCwgJyQmLycpO1xufVxuLyoqXG4gKiBHZW5lcmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgZWxlbWVudCB3aXRoaW4gYSBzZXQuXG4gKlxuICogQHBhcmFtIHsqfSBlbGVtZW50IEEgZWxlbWVudCB0aGF0IGNvdWxkIGNvbnRhaW4gYSBtYW51YWwga2V5LlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQgaXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLlxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5cblxuZnVuY3Rpb24gZ2V0RWxlbWVudEtleShlbGVtZW50LCBpbmRleCkge1xuICAvLyBEbyBzb21lIHR5cGVjaGVja2luZyBoZXJlIHNpbmNlIHdlIGNhbGwgdGhpcyBibGluZGx5LiBXZSB3YW50IHRvIGVuc3VyZVxuICAvLyB0aGF0IHdlIGRvbid0IGJsb2NrIHBvdGVudGlhbCBmdXR1cmUgRVMgQVBJcy5cbiAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnb2JqZWN0JyAmJiBlbGVtZW50ICE9PSBudWxsICYmIGVsZW1lbnQua2V5ICE9IG51bGwpIHtcbiAgICAvLyBFeHBsaWNpdCBrZXlcbiAgICB7XG4gICAgICBjaGVja0tleVN0cmluZ0NvZXJjaW9uKGVsZW1lbnQua2V5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXNjYXBlKCcnICsgZWxlbWVudC5rZXkpO1xuICB9IC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0XG5cblxuICByZXR1cm4gaW5kZXgudG9TdHJpbmcoMzYpO1xufVxuXG5mdW5jdGlvbiBtYXBJbnRvQXJyYXkoY2hpbGRyZW4sIGFycmF5LCBlc2NhcGVkUHJlZml4LCBuYW1lU29GYXIsIGNhbGxiYWNrKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuO1xuXG4gIGlmICh0eXBlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAvLyBBbGwgb2YgdGhlIGFib3ZlIGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC5cbiAgICBjaGlsZHJlbiA9IG51bGw7XG4gIH1cblxuICB2YXIgaW52b2tlQ2FsbGJhY2sgPSBmYWxzZTtcblxuICBpZiAoY2hpbGRyZW4gPT09IG51bGwpIHtcbiAgICBpbnZva2VDYWxsYmFjayA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgaW52b2tlQ2FsbGJhY2sgPSB0cnVlO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgc3dpdGNoIChjaGlsZHJlbi4kJHR5cGVvZikge1xuICAgICAgICAgIGNhc2UgUkVBQ1RfRUxFTUVOVF9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XG4gICAgICAgICAgICBpbnZva2VDYWxsYmFjayA9IHRydWU7XG4gICAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIGlmIChpbnZva2VDYWxsYmFjaykge1xuICAgIHZhciBfY2hpbGQgPSBjaGlsZHJlbjtcbiAgICB2YXIgbWFwcGVkQ2hpbGQgPSBjYWxsYmFjayhfY2hpbGQpOyAvLyBJZiBpdCdzIHRoZSBvbmx5IGNoaWxkLCB0cmVhdCB0aGUgbmFtZSBhcyBpZiBpdCB3YXMgd3JhcHBlZCBpbiBhbiBhcnJheVxuICAgIC8vIHNvIHRoYXQgaXQncyBjb25zaXN0ZW50IGlmIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gZ3Jvd3M6XG5cbiAgICB2YXIgY2hpbGRLZXkgPSBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJBVE9SICsgZ2V0RWxlbWVudEtleShfY2hpbGQsIDApIDogbmFtZVNvRmFyO1xuXG4gICAgaWYgKGlzQXJyYXkobWFwcGVkQ2hpbGQpKSB7XG4gICAgICB2YXIgZXNjYXBlZENoaWxkS2V5ID0gJyc7XG5cbiAgICAgIGlmIChjaGlsZEtleSAhPSBudWxsKSB7XG4gICAgICAgIGVzY2FwZWRDaGlsZEtleSA9IGVzY2FwZVVzZXJQcm92aWRlZEtleShjaGlsZEtleSkgKyAnLyc7XG4gICAgICB9XG5cbiAgICAgIG1hcEludG9BcnJheShtYXBwZWRDaGlsZCwgYXJyYXksIGVzY2FwZWRDaGlsZEtleSwgJycsIGZ1bmN0aW9uIChjKSB7XG4gICAgICAgIHJldHVybiBjO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChtYXBwZWRDaGlsZCAhPSBudWxsKSB7XG4gICAgICBpZiAoaXNWYWxpZEVsZW1lbnQobWFwcGVkQ2hpbGQpKSB7XG4gICAgICAgIHtcbiAgICAgICAgICAvLyBUaGUgYGlmYCBzdGF0ZW1lbnQgaGVyZSBwcmV2ZW50cyBhdXRvLWRpc2FibGluZyBvZiB0aGUgc2FmZVxuICAgICAgICAgIC8vIGNvZXJjaW9uIEVTTGludCBydWxlLCBzbyB3ZSBtdXN0IG1hbnVhbGx5IGRpc2FibGUgaXQgYmVsb3cuXG4gICAgICAgICAgLy8gJEZsb3dGaXhNZSBGbG93IGluY29ycmVjdGx5IHRoaW5rcyBSZWFjdC5Qb3J0YWwgZG9lc24ndCBoYXZlIGEga2V5XG4gICAgICAgICAgaWYgKG1hcHBlZENoaWxkLmtleSAmJiAoIV9jaGlsZCB8fCBfY2hpbGQua2V5ICE9PSBtYXBwZWRDaGlsZC5rZXkpKSB7XG4gICAgICAgICAgICBjaGVja0tleVN0cmluZ0NvZXJjaW9uKG1hcHBlZENoaWxkLmtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbWFwcGVkQ2hpbGQgPSBjbG9uZUFuZFJlcGxhY2VLZXkobWFwcGVkQ2hpbGQsIC8vIEtlZXAgYm90aCB0aGUgKG1hcHBlZCkgYW5kIG9sZCBrZXlzIGlmIHRoZXkgZGlmZmVyLCBqdXN0IGFzXG4gICAgICAgIC8vIHRyYXZlcnNlQWxsQ2hpbGRyZW4gdXNlZCB0byBkbyBmb3Igb2JqZWN0cyBhcyBjaGlsZHJlblxuICAgICAgICBlc2NhcGVkUHJlZml4ICsgKCAvLyAkRmxvd0ZpeE1lIEZsb3cgaW5jb3JyZWN0bHkgdGhpbmtzIFJlYWN0LlBvcnRhbCBkb2Vzbid0IGhhdmUgYSBrZXlcbiAgICAgICAgbWFwcGVkQ2hpbGQua2V5ICYmICghX2NoaWxkIHx8IF9jaGlsZC5rZXkgIT09IG1hcHBlZENoaWxkLmtleSkgPyAvLyAkRmxvd0ZpeE1lIEZsb3cgaW5jb3JyZWN0bHkgdGhpbmtzIGV4aXN0aW5nIGVsZW1lbnQncyBrZXkgY2FuIGJlIGEgbnVtYmVyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuICAgICAgICBlc2NhcGVVc2VyUHJvdmlkZWRLZXkoJycgKyBtYXBwZWRDaGlsZC5rZXkpICsgJy8nIDogJycpICsgY2hpbGRLZXkpO1xuICAgICAgfVxuXG4gICAgICBhcnJheS5wdXNoKG1hcHBlZENoaWxkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHZhciBjaGlsZDtcbiAgdmFyIG5leHROYW1lO1xuICB2YXIgc3VidHJlZUNvdW50ID0gMDsgLy8gQ291bnQgb2YgY2hpbGRyZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc3VidHJlZS5cblxuICB2YXIgbmV4dE5hbWVQcmVmaXggPSBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJBVE9SIDogbmFtZVNvRmFyICsgU1VCU0VQQVJBVE9SO1xuXG4gIGlmIChpc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0RWxlbWVudEtleShjaGlsZCwgaSk7XG4gICAgICBzdWJ0cmVlQ291bnQgKz0gbWFwSW50b0FycmF5KGNoaWxkLCBhcnJheSwgZXNjYXBlZFByZWZpeCwgbmV4dE5hbWUsIGNhbGxiYWNrKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKGNoaWxkcmVuKTtcblxuICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdmFyIGl0ZXJhYmxlQ2hpbGRyZW4gPSBjaGlsZHJlbjtcblxuICAgICAge1xuICAgICAgICAvLyBXYXJuIGFib3V0IHVzaW5nIE1hcHMgYXMgY2hpbGRyZW5cbiAgICAgICAgaWYgKGl0ZXJhdG9yRm4gPT09IGl0ZXJhYmxlQ2hpbGRyZW4uZW50cmllcykge1xuICAgICAgICAgIGlmICghZGlkV2FybkFib3V0TWFwcykge1xuICAgICAgICAgICAgd2FybignVXNpbmcgTWFwcyBhcyBjaGlsZHJlbiBpcyBub3Qgc3VwcG9ydGVkLiAnICsgJ1VzZSBhbiBhcnJheSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGlkV2FybkFib3V0TWFwcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKGl0ZXJhYmxlQ2hpbGRyZW4pO1xuICAgICAgdmFyIHN0ZXA7XG4gICAgICB2YXIgaWkgPSAwO1xuXG4gICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgIGNoaWxkID0gc3RlcC52YWx1ZTtcbiAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldEVsZW1lbnRLZXkoY2hpbGQsIGlpKyspO1xuICAgICAgICBzdWJ0cmVlQ291bnQgKz0gbWFwSW50b0FycmF5KGNoaWxkLCBhcnJheSwgZXNjYXBlZFByZWZpeCwgbmV4dE5hbWUsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cbiAgICAgIHZhciBjaGlsZHJlblN0cmluZyA9IFN0cmluZyhjaGlsZHJlbik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6IFwiICsgKGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZykgKyBcIikuIFwiICsgJ0lmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgJyArICdpbnN0ZWFkLicpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdWJ0cmVlQ291bnQ7XG59XG5cbi8qKlxuICogTWFwcyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuXG4gKlxuICogU2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNyZWFjdGNoaWxkcmVubWFwXG4gKlxuICogVGhlIHByb3ZpZGVkIG1hcEZ1bmN0aW9uKGNoaWxkLCBpbmRleCkgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2hcbiAqIGxlYWYgY2hpbGQuXG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCosIGludCl9IGZ1bmMgVGhlIG1hcCBmdW5jdGlvbi5cbiAqIEBwYXJhbSB7Kn0gY29udGV4dCBDb250ZXh0IGZvciBtYXBGdW5jdGlvbi5cbiAqIEByZXR1cm4ge29iamVjdH0gT2JqZWN0IGNvbnRhaW5pbmcgdGhlIG9yZGVyZWQgbWFwIG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIG1hcENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jLCBjb250ZXh0KSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgY291bnQgPSAwO1xuICBtYXBJbnRvQXJyYXkoY2hpbGRyZW4sIHJlc3VsdCwgJycsICcnLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICByZXR1cm4gZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxkLCBjb3VudCsrKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG4vKipcbiAqIENvdW50IHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhc1xuICogYHByb3BzLmNoaWxkcmVuYC5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlYWN0LWFwaS5odG1sI3JlYWN0Y2hpbGRyZW5jb3VudFxuICpcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHJldHVybiB7bnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuLlxuICovXG5cblxuZnVuY3Rpb24gY291bnRDaGlsZHJlbihjaGlsZHJlbikge1xuICB2YXIgbiA9IDA7XG4gIG1hcENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jdGlvbiAoKSB7XG4gICAgbisrOyAvLyBEb24ndCByZXR1cm4gYW55dGhpbmdcbiAgfSk7XG4gIHJldHVybiBuO1xufVxuXG4vKipcbiAqIEl0ZXJhdGVzIHRocm91Z2ggY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLlxuICpcbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjcmVhY3RjaGlsZHJlbmZvcmVhY2hcbiAqXG4gKiBUaGUgcHJvdmlkZWQgZm9yRWFjaEZ1bmMoY2hpbGQsIGluZGV4KSB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaFxuICogbGVhZiBjaGlsZC5cbiAqXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cbiAqIEBwYXJhbSB7ZnVuY3Rpb24oKiwgaW50KX0gZm9yRWFjaEZ1bmNcbiAqIEBwYXJhbSB7Kn0gZm9yRWFjaENvbnRleHQgQ29udGV4dCBmb3IgZm9yRWFjaENvbnRleHQuXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2hDaGlsZHJlbihjaGlsZHJlbiwgZm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KSB7XG4gIG1hcENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jdGlvbiAoKSB7XG4gICAgZm9yRWFjaEZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgLy8gRG9uJ3QgcmV0dXJuIGFueXRoaW5nLlxuICB9LCBmb3JFYWNoQ29udGV4dCk7XG59XG4vKipcbiAqIEZsYXR0ZW4gYSBjaGlsZHJlbiBvYmplY3QgKHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYCkgYW5kXG4gKiByZXR1cm4gYW4gYXJyYXkgd2l0aCBhcHByb3ByaWF0ZWx5IHJlLWtleWVkIGNoaWxkcmVuLlxuICpcbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjcmVhY3RjaGlsZHJlbnRvYXJyYXlcbiAqL1xuXG5cbmZ1bmN0aW9uIHRvQXJyYXkoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIG1hcENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICByZXR1cm4gY2hpbGQ7XG4gIH0pIHx8IFtdO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBpbiBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4gYW5kIHZlcmlmaWVzIHRoYXQgdGhlcmVcbiAqIGlzIG9ubHkgb25lIGNoaWxkIGluIHRoZSBjb2xsZWN0aW9uLlxuICpcbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjcmVhY3RjaGlsZHJlbm9ubHlcbiAqXG4gKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBhIHNpbmdsZSBjaGlsZCBnZXRzXG4gKiBwYXNzZWQgd2l0aG91dCBhIHdyYXBwZXIsIGJ1dCB0aGUgcHVycG9zZSBvZiB0aGlzIGhlbHBlciBmdW5jdGlvbiBpcyB0b1xuICogYWJzdHJhY3QgYXdheSB0aGUgcGFydGljdWxhciBzdHJ1Y3R1cmUgb2YgY2hpbGRyZW4uXG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBjaGlsZHJlbiBDaGlsZCBjb2xsZWN0aW9uIHN0cnVjdHVyZS5cbiAqIEByZXR1cm4ge1JlYWN0RWxlbWVudH0gVGhlIGZpcnN0IGFuZCBvbmx5IGBSZWFjdEVsZW1lbnRgIGNvbnRhaW5lZCBpbiB0aGVcbiAqIHN0cnVjdHVyZS5cbiAqL1xuXG5cbmZ1bmN0aW9uIG9ubHlDaGlsZChjaGlsZHJlbikge1xuICBpZiAoIWlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuJyk7XG4gIH1cblxuICByZXR1cm4gY2hpbGRyZW47XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQoZGVmYXVsdFZhbHVlKSB7XG4gIC8vIFRPRE86IFNlY29uZCBhcmd1bWVudCB1c2VkIHRvIGJlIGFuIG9wdGlvbmFsIGBjYWxjdWxhdGVDaGFuZ2VkQml0c2BcbiAgLy8gZnVuY3Rpb24uIFdhcm4gdG8gcmVzZXJ2ZSBmb3IgZnV0dXJlIHVzZT9cbiAgdmFyIGNvbnRleHQgPSB7XG4gICAgJCR0eXBlb2Y6IFJFQUNUX0NPTlRFWFRfVFlQRSxcbiAgICAvLyBBcyBhIHdvcmthcm91bmQgdG8gc3VwcG9ydCBtdWx0aXBsZSBjb25jdXJyZW50IHJlbmRlcmVycywgd2UgY2F0ZWdvcml6ZVxuICAgIC8vIHNvbWUgcmVuZGVyZXJzIGFzIHByaW1hcnkgYW5kIG90aGVycyBhcyBzZWNvbmRhcnkuIFdlIG9ubHkgZXhwZWN0XG4gICAgLy8gdGhlcmUgdG8gYmUgdHdvIGNvbmN1cnJlbnQgcmVuZGVyZXJzIGF0IG1vc3Q6IFJlYWN0IE5hdGl2ZSAocHJpbWFyeSkgYW5kXG4gICAgLy8gRmFicmljIChzZWNvbmRhcnkpOyBSZWFjdCBET00gKHByaW1hcnkpIGFuZCBSZWFjdCBBUlQgKHNlY29uZGFyeSkuXG4gICAgLy8gU2Vjb25kYXJ5IHJlbmRlcmVycyBzdG9yZSB0aGVpciBjb250ZXh0IHZhbHVlcyBvbiBzZXBhcmF0ZSBmaWVsZHMuXG4gICAgX2N1cnJlbnRWYWx1ZTogZGVmYXVsdFZhbHVlLFxuICAgIF9jdXJyZW50VmFsdWUyOiBkZWZhdWx0VmFsdWUsXG4gICAgLy8gVXNlZCB0byB0cmFjayBob3cgbWFueSBjb25jdXJyZW50IHJlbmRlcmVycyB0aGlzIGNvbnRleHQgY3VycmVudGx5XG4gICAgLy8gc3VwcG9ydHMgd2l0aGluIGluIGEgc2luZ2xlIHJlbmRlcmVyLiBTdWNoIGFzIHBhcmFsbGVsIHNlcnZlciByZW5kZXJpbmcuXG4gICAgX3RocmVhZENvdW50OiAwLFxuICAgIC8vIFRoZXNlIGFyZSBjaXJjdWxhclxuICAgIFByb3ZpZGVyOiBudWxsLFxuICAgIENvbnN1bWVyOiBudWxsLFxuICAgIC8vIEFkZCB0aGVzZSB0byB1c2Ugc2FtZSBoaWRkZW4gY2xhc3MgaW4gVk0gYXMgU2VydmVyQ29udGV4dFxuICAgIF9kZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgX2dsb2JhbE5hbWU6IG51bGxcbiAgfTtcbiAgY29udGV4dC5Qcm92aWRlciA9IHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfUFJPVklERVJfVFlQRSxcbiAgICBfY29udGV4dDogY29udGV4dFxuICB9O1xuICB2YXIgaGFzV2FybmVkQWJvdXRVc2luZ05lc3RlZENvbnRleHRDb25zdW1lcnMgPSBmYWxzZTtcbiAgdmFyIGhhc1dhcm5lZEFib3V0VXNpbmdDb25zdW1lclByb3ZpZGVyID0gZmFsc2U7XG4gIHZhciBoYXNXYXJuZWRBYm91dERpc3BsYXlOYW1lT25Db25zdW1lciA9IGZhbHNlO1xuXG4gIHtcbiAgICAvLyBBIHNlcGFyYXRlIG9iamVjdCwgYnV0IHByb3hpZXMgYmFjayB0byB0aGUgb3JpZ2luYWwgY29udGV4dCBvYmplY3QgZm9yXG4gICAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuIEl0IGhhcyBhIGRpZmZlcmVudCAkJHR5cGVvZiwgc28gd2UgY2FuIHByb3Blcmx5XG4gICAgLy8gd2FybiBmb3IgdGhlIGluY29ycmVjdCB1c2FnZSBvZiBDb250ZXh0IGFzIGEgQ29uc3VtZXIuXG4gICAgdmFyIENvbnN1bWVyID0ge1xuICAgICAgJCR0eXBlb2Y6IFJFQUNUX0NPTlRFWFRfVFlQRSxcbiAgICAgIF9jb250ZXh0OiBjb250ZXh0XG4gICAgfTsgLy8gJEZsb3dGaXhNZTogRmxvdyBjb21wbGFpbnMgYWJvdXQgbm90IHNldHRpbmcgYSB2YWx1ZSwgd2hpY2ggaXMgaW50ZW50aW9uYWwgaGVyZVxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQ29uc3VtZXIsIHtcbiAgICAgIFByb3ZpZGVyOiB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmICghaGFzV2FybmVkQWJvdXRVc2luZ0NvbnN1bWVyUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIGhhc1dhcm5lZEFib3V0VXNpbmdDb25zdW1lclByb3ZpZGVyID0gdHJ1ZTtcblxuICAgICAgICAgICAgZXJyb3IoJ1JlbmRlcmluZyA8Q29udGV4dC5Db25zdW1lci5Qcm92aWRlcj4gaXMgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluICcgKyAnYSBmdXR1cmUgbWFqb3IgcmVsZWFzZS4gRGlkIHlvdSBtZWFuIHRvIHJlbmRlciA8Q29udGV4dC5Qcm92aWRlcj4gaW5zdGVhZD8nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGV4dC5Qcm92aWRlcjtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoX1Byb3ZpZGVyKSB7XG4gICAgICAgICAgY29udGV4dC5Qcm92aWRlciA9IF9Qcm92aWRlcjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIF9jdXJyZW50VmFsdWU6IHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRleHQuX2N1cnJlbnRWYWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoX2N1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgIGNvbnRleHQuX2N1cnJlbnRWYWx1ZSA9IF9jdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBfY3VycmVudFZhbHVlMjoge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gY29udGV4dC5fY3VycmVudFZhbHVlMjtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoX2N1cnJlbnRWYWx1ZTIpIHtcbiAgICAgICAgICBjb250ZXh0Ll9jdXJyZW50VmFsdWUyID0gX2N1cnJlbnRWYWx1ZTI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBfdGhyZWFkQ291bnQ6IHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3RocmVhZENvdW50O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIChfdGhyZWFkQ291bnQpIHtcbiAgICAgICAgICBjb250ZXh0Ll90aHJlYWRDb3VudCA9IF90aHJlYWRDb3VudDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIENvbnN1bWVyOiB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmICghaGFzV2FybmVkQWJvdXRVc2luZ05lc3RlZENvbnRleHRDb25zdW1lcnMpIHtcbiAgICAgICAgICAgIGhhc1dhcm5lZEFib3V0VXNpbmdOZXN0ZWRDb250ZXh0Q29uc3VtZXJzID0gdHJ1ZTtcblxuICAgICAgICAgICAgZXJyb3IoJ1JlbmRlcmluZyA8Q29udGV4dC5Db25zdW1lci5Db25zdW1lcj4gaXMgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluICcgKyAnYSBmdXR1cmUgbWFqb3IgcmVsZWFzZS4gRGlkIHlvdSBtZWFuIHRvIHJlbmRlciA8Q29udGV4dC5Db25zdW1lcj4gaW5zdGVhZD8nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGV4dC5Db25zdW1lcjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRpc3BsYXlOYW1lOiB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBjb250ZXh0LmRpc3BsYXlOYW1lO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIChkaXNwbGF5TmFtZSkge1xuICAgICAgICAgIGlmICghaGFzV2FybmVkQWJvdXREaXNwbGF5TmFtZU9uQ29uc3VtZXIpIHtcbiAgICAgICAgICAgIHdhcm4oJ1NldHRpbmcgYGRpc3BsYXlOYW1lYCBvbiBDb250ZXh0LkNvbnN1bWVyIGhhcyBubyBlZmZlY3QuICcgKyBcIllvdSBzaG91bGQgc2V0IGl0IGRpcmVjdGx5IG9uIHRoZSBjb250ZXh0IHdpdGggQ29udGV4dC5kaXNwbGF5TmFtZSA9ICclcycuXCIsIGRpc3BsYXlOYW1lKTtcblxuICAgICAgICAgICAgaGFzV2FybmVkQWJvdXREaXNwbGF5TmFtZU9uQ29uc3VtZXIgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pOyAvLyAkRmxvd0ZpeE1lOiBGbG93IGNvbXBsYWlucyBhYm91dCBtaXNzaW5nIHByb3BlcnRpZXMgYmVjYXVzZSBpdCBkb2Vzbid0IHVuZGVyc3RhbmQgZGVmaW5lUHJvcGVydHlcblxuICAgIGNvbnRleHQuQ29uc3VtZXIgPSBDb25zdW1lcjtcbiAgfVxuXG4gIHtcbiAgICBjb250ZXh0Ll9jdXJyZW50UmVuZGVyZXIgPSBudWxsO1xuICAgIGNvbnRleHQuX2N1cnJlbnRSZW5kZXJlcjIgPSBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbnZhciBVbmluaXRpYWxpemVkID0gLTE7XG52YXIgUGVuZGluZyA9IDA7XG52YXIgUmVzb2x2ZWQgPSAxO1xudmFyIFJlamVjdGVkID0gMjtcblxuZnVuY3Rpb24gbGF6eUluaXRpYWxpemVyKHBheWxvYWQpIHtcbiAgaWYgKHBheWxvYWQuX3N0YXR1cyA9PT0gVW5pbml0aWFsaXplZCkge1xuICAgIHZhciBjdG9yID0gcGF5bG9hZC5fcmVzdWx0O1xuICAgIHZhciB0aGVuYWJsZSA9IGN0b3IoKTsgLy8gVHJhbnNpdGlvbiB0byB0aGUgbmV4dCBzdGF0ZS5cbiAgICAvLyBUaGlzIG1pZ2h0IHRocm93IGVpdGhlciBiZWNhdXNlIGl0J3MgbWlzc2luZyBvciB0aHJvd3MuIElmIHNvLCB3ZSB0cmVhdCBpdFxuICAgIC8vIGFzIHN0aWxsIHVuaW5pdGlhbGl6ZWQgYW5kIHRyeSBhZ2FpbiBuZXh0IHRpbWUuIFdoaWNoIGlzIHRoZSBzYW1lIGFzIHdoYXRcbiAgICAvLyBoYXBwZW5zIGlmIHRoZSBjdG9yIG9yIGFueSB3cmFwcGVycyBwcm9jZXNzaW5nIHRoZSBjdG9yIHRocm93cy4gVGhpcyBtaWdodFxuICAgIC8vIGVuZCB1cCBmaXhpbmcgaXQgaWYgdGhlIHJlc29sdXRpb24gd2FzIGEgY29uY3VycmVuY3kgYnVnLlxuXG4gICAgdGhlbmFibGUudGhlbihmdW5jdGlvbiAobW9kdWxlT2JqZWN0KSB7XG4gICAgICBpZiAocGF5bG9hZC5fc3RhdHVzID09PSBQZW5kaW5nIHx8IHBheWxvYWQuX3N0YXR1cyA9PT0gVW5pbml0aWFsaXplZCkge1xuICAgICAgICAvLyBUcmFuc2l0aW9uIHRvIHRoZSBuZXh0IHN0YXRlLlxuICAgICAgICB2YXIgcmVzb2x2ZWQgPSBwYXlsb2FkO1xuICAgICAgICByZXNvbHZlZC5fc3RhdHVzID0gUmVzb2x2ZWQ7XG4gICAgICAgIHJlc29sdmVkLl9yZXN1bHQgPSBtb2R1bGVPYmplY3Q7XG4gICAgICB9XG4gICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBpZiAocGF5bG9hZC5fc3RhdHVzID09PSBQZW5kaW5nIHx8IHBheWxvYWQuX3N0YXR1cyA9PT0gVW5pbml0aWFsaXplZCkge1xuICAgICAgICAvLyBUcmFuc2l0aW9uIHRvIHRoZSBuZXh0IHN0YXRlLlxuICAgICAgICB2YXIgcmVqZWN0ZWQgPSBwYXlsb2FkO1xuICAgICAgICByZWplY3RlZC5fc3RhdHVzID0gUmVqZWN0ZWQ7XG4gICAgICAgIHJlamVjdGVkLl9yZXN1bHQgPSBlcnJvcjtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChwYXlsb2FkLl9zdGF0dXMgPT09IFVuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIC8vIEluIGNhc2UsIHdlJ3JlIHN0aWxsIHVuaW5pdGlhbGl6ZWQsIHRoZW4gd2UncmUgd2FpdGluZyBmb3IgdGhlIHRoZW5hYmxlXG4gICAgICAvLyB0byByZXNvbHZlLiBTZXQgaXQgYXMgcGVuZGluZyBpbiB0aGUgbWVhbnRpbWUuXG4gICAgICB2YXIgcGVuZGluZyA9IHBheWxvYWQ7XG4gICAgICBwZW5kaW5nLl9zdGF0dXMgPSBQZW5kaW5nO1xuICAgICAgcGVuZGluZy5fcmVzdWx0ID0gdGhlbmFibGU7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBheWxvYWQuX3N0YXR1cyA9PT0gUmVzb2x2ZWQpIHtcbiAgICB2YXIgbW9kdWxlT2JqZWN0ID0gcGF5bG9hZC5fcmVzdWx0O1xuXG4gICAge1xuICAgICAgaWYgKG1vZHVsZU9iamVjdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVycm9yKCdsYXp5OiBFeHBlY3RlZCB0aGUgcmVzdWx0IG9mIGEgZHluYW1pYyBpbXAnICsgJ29ydCgpIGNhbGwuICcgKyAnSW5zdGVhZCByZWNlaXZlZDogJXNcXG5cXG5Zb3VyIGNvZGUgc2hvdWxkIGxvb2sgbGlrZTogXFxuICAnICsgLy8gQnJlYWsgdXAgaW1wb3J0cyB0byBhdm9pZCBhY2NpZGVudGFsbHkgcGFyc2luZyB0aGVtIGFzIGRlcGVuZGVuY2llcy5cbiAgICAgICAgJ2NvbnN0IE15Q29tcG9uZW50ID0gbGF6eSgoKSA9PiBpbXAnICsgXCJvcnQoJy4vTXlDb21wb25lbnQnKSlcXG5cXG5cIiArICdEaWQgeW91IGFjY2lkZW50YWxseSBwdXQgY3VybHkgYnJhY2VzIGFyb3VuZCB0aGUgaW1wb3J0PycsIG1vZHVsZU9iamVjdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgaWYgKCEoJ2RlZmF1bHQnIGluIG1vZHVsZU9iamVjdCkpIHtcbiAgICAgICAgZXJyb3IoJ2xhenk6IEV4cGVjdGVkIHRoZSByZXN1bHQgb2YgYSBkeW5hbWljIGltcCcgKyAnb3J0KCkgY2FsbC4gJyArICdJbnN0ZWFkIHJlY2VpdmVkOiAlc1xcblxcbllvdXIgY29kZSBzaG91bGQgbG9vayBsaWtlOiBcXG4gICcgKyAvLyBCcmVhayB1cCBpbXBvcnRzIHRvIGF2b2lkIGFjY2lkZW50YWxseSBwYXJzaW5nIHRoZW0gYXMgZGVwZW5kZW5jaWVzLlxuICAgICAgICAnY29uc3QgTXlDb21wb25lbnQgPSBsYXp5KCgpID0+IGltcCcgKyBcIm9ydCgnLi9NeUNvbXBvbmVudCcpKVwiLCBtb2R1bGVPYmplY3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtb2R1bGVPYmplY3QuZGVmYXVsdDtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBwYXlsb2FkLl9yZXN1bHQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gbGF6eShjdG9yKSB7XG4gIHZhciBwYXlsb2FkID0ge1xuICAgIC8vIFdlIHVzZSB0aGVzZSBmaWVsZHMgdG8gc3RvcmUgdGhlIHJlc3VsdC5cbiAgICBfc3RhdHVzOiBVbmluaXRpYWxpemVkLFxuICAgIF9yZXN1bHQ6IGN0b3JcbiAgfTtcbiAgdmFyIGxhenlUeXBlID0ge1xuICAgICQkdHlwZW9mOiBSRUFDVF9MQVpZX1RZUEUsXG4gICAgX3BheWxvYWQ6IHBheWxvYWQsXG4gICAgX2luaXQ6IGxhenlJbml0aWFsaXplclxuICB9O1xuXG4gIHtcbiAgICAvLyBJbiBwcm9kdWN0aW9uLCB0aGlzIHdvdWxkIGp1c3Qgc2V0IGl0IG9uIHRoZSBvYmplY3QuXG4gICAgdmFyIGRlZmF1bHRQcm9wcztcbiAgICB2YXIgcHJvcFR5cGVzOyAvLyAkRmxvd0ZpeE1lXG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsYXp5VHlwZSwge1xuICAgICAgZGVmYXVsdFByb3BzOiB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGRlZmF1bHRQcm9wcztcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAobmV3RGVmYXVsdFByb3BzKSB7XG4gICAgICAgICAgZXJyb3IoJ1JlYWN0LmxhenkoLi4uKTogSXQgaXMgbm90IHN1cHBvcnRlZCB0byBhc3NpZ24gYGRlZmF1bHRQcm9wc2AgdG8gJyArICdhIGxhenkgY29tcG9uZW50IGltcG9ydC4gRWl0aGVyIHNwZWNpZnkgdGhlbSB3aGVyZSB0aGUgY29tcG9uZW50ICcgKyAnaXMgZGVmaW5lZCwgb3IgY3JlYXRlIGEgd3JhcHBpbmcgY29tcG9uZW50IGFyb3VuZCBpdC4nKTtcblxuICAgICAgICAgIGRlZmF1bHRQcm9wcyA9IG5ld0RlZmF1bHRQcm9wczsgLy8gTWF0Y2ggcHJvZHVjdGlvbiBiZWhhdmlvciBtb3JlIGNsb3NlbHk6XG4gICAgICAgICAgLy8gJEZsb3dGaXhNZVxuXG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGxhenlUeXBlLCAnZGVmYXVsdFByb3BzJywge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcHJvcFR5cGVzOiB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3BUeXBlcztcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAobmV3UHJvcFR5cGVzKSB7XG4gICAgICAgICAgZXJyb3IoJ1JlYWN0LmxhenkoLi4uKTogSXQgaXMgbm90IHN1cHBvcnRlZCB0byBhc3NpZ24gYHByb3BUeXBlc2AgdG8gJyArICdhIGxhenkgY29tcG9uZW50IGltcG9ydC4gRWl0aGVyIHNwZWNpZnkgdGhlbSB3aGVyZSB0aGUgY29tcG9uZW50ICcgKyAnaXMgZGVmaW5lZCwgb3IgY3JlYXRlIGEgd3JhcHBpbmcgY29tcG9uZW50IGFyb3VuZCBpdC4nKTtcblxuICAgICAgICAgIHByb3BUeXBlcyA9IG5ld1Byb3BUeXBlczsgLy8gTWF0Y2ggcHJvZHVjdGlvbiBiZWhhdmlvciBtb3JlIGNsb3NlbHk6XG4gICAgICAgICAgLy8gJEZsb3dGaXhNZVxuXG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGxhenlUeXBlLCAncHJvcFR5cGVzJywge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbGF6eVR5cGU7XG59XG5cbmZ1bmN0aW9uIGZvcndhcmRSZWYocmVuZGVyKSB7XG4gIHtcbiAgICBpZiAocmVuZGVyICE9IG51bGwgJiYgcmVuZGVyLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUpIHtcbiAgICAgIGVycm9yKCdmb3J3YXJkUmVmIHJlcXVpcmVzIGEgcmVuZGVyIGZ1bmN0aW9uIGJ1dCByZWNlaXZlZCBhIGBtZW1vYCAnICsgJ2NvbXBvbmVudC4gSW5zdGVhZCBvZiBmb3J3YXJkUmVmKG1lbW8oLi4uKSksIHVzZSAnICsgJ21lbW8oZm9yd2FyZFJlZiguLi4pKS4nKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZW5kZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGVycm9yKCdmb3J3YXJkUmVmIHJlcXVpcmVzIGEgcmVuZGVyIGZ1bmN0aW9uIGJ1dCB3YXMgZ2l2ZW4gJXMuJywgcmVuZGVyID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIHJlbmRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyZW5kZXIubGVuZ3RoICE9PSAwICYmIHJlbmRlci5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgZXJyb3IoJ2ZvcndhcmRSZWYgcmVuZGVyIGZ1bmN0aW9ucyBhY2NlcHQgZXhhY3RseSB0d28gcGFyYW1ldGVyczogcHJvcHMgYW5kIHJlZi4gJXMnLCByZW5kZXIubGVuZ3RoID09PSAxID8gJ0RpZCB5b3UgZm9yZ2V0IHRvIHVzZSB0aGUgcmVmIHBhcmFtZXRlcj8nIDogJ0FueSBhZGRpdGlvbmFsIHBhcmFtZXRlciB3aWxsIGJlIHVuZGVmaW5lZC4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVuZGVyICE9IG51bGwpIHtcbiAgICAgIGlmIChyZW5kZXIuZGVmYXVsdFByb3BzICE9IG51bGwgfHwgcmVuZGVyLnByb3BUeXBlcyAhPSBudWxsKSB7XG4gICAgICAgIGVycm9yKCdmb3J3YXJkUmVmIHJlbmRlciBmdW5jdGlvbnMgZG8gbm90IHN1cHBvcnQgcHJvcFR5cGVzIG9yIGRlZmF1bHRQcm9wcy4gJyArICdEaWQgeW91IGFjY2lkZW50YWxseSBwYXNzIGEgUmVhY3QgY29tcG9uZW50PycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBlbGVtZW50VHlwZSA9IHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSxcbiAgICByZW5kZXI6IHJlbmRlclxuICB9O1xuXG4gIHtcbiAgICB2YXIgb3duTmFtZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudFR5cGUsICdkaXNwbGF5TmFtZScsIHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBvd25OYW1lO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgb3duTmFtZSA9IG5hbWU7IC8vIFRoZSBpbm5lciBjb21wb25lbnQgc2hvdWxkbid0IGluaGVyaXQgdGhpcyBkaXNwbGF5IG5hbWUgaW4gbW9zdCBjYXNlcyxcbiAgICAgICAgLy8gYmVjYXVzZSB0aGUgY29tcG9uZW50IG1heSBiZSB1c2VkIGVsc2V3aGVyZS5cbiAgICAgICAgLy8gQnV0IGl0J3MgbmljZSBmb3IgYW5vbnltb3VzIGZ1bmN0aW9ucyB0byBpbmhlcml0IHRoZSBuYW1lLFxuICAgICAgICAvLyBzbyB0aGF0IG91ciBjb21wb25lbnQtc3RhY2sgZ2VuZXJhdGlvbiBsb2dpYyB3aWxsIGRpc3BsYXkgdGhlaXIgZnJhbWVzLlxuICAgICAgICAvLyBBbiBhbm9ueW1vdXMgZnVuY3Rpb24gZ2VuZXJhbGx5IHN1Z2dlc3RzIGEgcGF0dGVybiBsaWtlOlxuICAgICAgICAvLyAgIFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHsuLi59KTtcbiAgICAgICAgLy8gVGhpcyBraW5kIG9mIGlubmVyIGZ1bmN0aW9uIGlzIG5vdCB1c2VkIGVsc2V3aGVyZSBzbyB0aGUgc2lkZSBlZmZlY3QgaXMgb2theS5cblxuICAgICAgICBpZiAoIXJlbmRlci5uYW1lICYmICFyZW5kZXIuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICByZW5kZXIuZGlzcGxheU5hbWUgPSBuYW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudFR5cGU7XG59XG5cbnZhciBSRUFDVF9NT0RVTEVfUkVGRVJFTkNFO1xuXG57XG4gIFJFQUNUX01PRFVMRV9SRUZFUkVOQ0UgPSBTeW1ib2wuZm9yKCdyZWFjdC5tb2R1bGUucmVmZXJlbmNlJyk7XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50VHlwZSh0eXBlKSB7XG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyBOb3RlOiB0eXBlb2YgbWlnaHQgYmUgb3RoZXIgdGhhbiAnc3ltYm9sJyBvciAnbnVtYmVyJyAoZS5nLiBpZiBpdCdzIGEgcG9seWZpbGwpLlxuXG5cbiAgaWYgKHR5cGUgPT09IFJFQUNUX0ZSQUdNRU5UX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfUFJPRklMRVJfVFlQRSB8fCBlbmFibGVEZWJ1Z1RyYWNpbmcgIHx8IHR5cGUgPT09IFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1VTUEVOU0VfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgfHwgZW5hYmxlTGVnYWN5SGlkZGVuICB8fCB0eXBlID09PSBSRUFDVF9PRkZTQ1JFRU5fVFlQRSB8fCBlbmFibGVTY29wZUFQSSAgfHwgZW5hYmxlQ2FjaGVFbGVtZW50ICB8fCBlbmFibGVUcmFuc2l0aW9uVHJhY2luZyApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCkge1xuICAgIGlmICh0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9MQVpZX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTUVNT19UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1BST1ZJREVSX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgfHwgLy8gVGhpcyBuZWVkcyB0byBpbmNsdWRlIGFsbCBwb3NzaWJsZSBtb2R1bGUgcmVmZXJlbmNlIG9iamVjdFxuICAgIC8vIHR5cGVzIHN1cHBvcnRlZCBieSBhbnkgRmxpZ2h0IGNvbmZpZ3VyYXRpb24gYW55d2hlcmUgc2luY2VcbiAgICAvLyB3ZSBkb24ndCBrbm93IHdoaWNoIEZsaWdodCBidWlsZCB0aGlzIHdpbGwgZW5kIHVwIGJlaW5nIHVzZWRcbiAgICAvLyB3aXRoLlxuICAgIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX01PRFVMRV9SRUZFUkVOQ0UgfHwgdHlwZS5nZXRNb2R1bGVJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG1lbW8odHlwZSwgY29tcGFyZSkge1xuICB7XG4gICAgaWYgKCFpc1ZhbGlkRWxlbWVudFR5cGUodHlwZSkpIHtcbiAgICAgIGVycm9yKCdtZW1vOiBUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIGNvbXBvbmVudC4gSW5zdGVhZCAnICsgJ3JlY2VpdmVkOiAlcycsIHR5cGUgPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2YgdHlwZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGVsZW1lbnRUeXBlID0ge1xuICAgICQkdHlwZW9mOiBSRUFDVF9NRU1PX1RZUEUsXG4gICAgdHlwZTogdHlwZSxcbiAgICBjb21wYXJlOiBjb21wYXJlID09PSB1bmRlZmluZWQgPyBudWxsIDogY29tcGFyZVxuICB9O1xuXG4gIHtcbiAgICB2YXIgb3duTmFtZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudFR5cGUsICdkaXNwbGF5TmFtZScsIHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBvd25OYW1lO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgb3duTmFtZSA9IG5hbWU7IC8vIFRoZSBpbm5lciBjb21wb25lbnQgc2hvdWxkbid0IGluaGVyaXQgdGhpcyBkaXNwbGF5IG5hbWUgaW4gbW9zdCBjYXNlcyxcbiAgICAgICAgLy8gYmVjYXVzZSB0aGUgY29tcG9uZW50IG1heSBiZSB1c2VkIGVsc2V3aGVyZS5cbiAgICAgICAgLy8gQnV0IGl0J3MgbmljZSBmb3IgYW5vbnltb3VzIGZ1bmN0aW9ucyB0byBpbmhlcml0IHRoZSBuYW1lLFxuICAgICAgICAvLyBzbyB0aGF0IG91ciBjb21wb25lbnQtc3RhY2sgZ2VuZXJhdGlvbiBsb2dpYyB3aWxsIGRpc3BsYXkgdGhlaXIgZnJhbWVzLlxuICAgICAgICAvLyBBbiBhbm9ueW1vdXMgZnVuY3Rpb24gZ2VuZXJhbGx5IHN1Z2dlc3RzIGEgcGF0dGVybiBsaWtlOlxuICAgICAgICAvLyAgIFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7Li4ufSk7XG4gICAgICAgIC8vIFRoaXMga2luZCBvZiBpbm5lciBmdW5jdGlvbiBpcyBub3QgdXNlZCBlbHNld2hlcmUgc28gdGhlIHNpZGUgZWZmZWN0IGlzIG9rYXkuXG5cbiAgICAgICAgaWYgKCF0eXBlLm5hbWUgJiYgIXR5cGUuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICB0eXBlLmRpc3BsYXlOYW1lID0gbmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnRUeXBlO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlRGlzcGF0Y2hlcigpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLmN1cnJlbnQ7XG5cbiAge1xuICAgIGlmIChkaXNwYXRjaGVyID09PSBudWxsKSB7XG4gICAgICBlcnJvcignSW52YWxpZCBob29rIGNhbGwuIEhvb2tzIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgb2YgdGhlIGJvZHkgb2YgYSBmdW5jdGlvbiBjb21wb25lbnQuIFRoaXMgY291bGQgaGFwcGVuIGZvcicgKyAnIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJlYXNvbnM6XFxuJyArICcxLiBZb3UgbWlnaHQgaGF2ZSBtaXNtYXRjaGluZyB2ZXJzaW9ucyBvZiBSZWFjdCBhbmQgdGhlIHJlbmRlcmVyIChzdWNoIGFzIFJlYWN0IERPTSlcXG4nICsgJzIuIFlvdSBtaWdodCBiZSBicmVha2luZyB0aGUgUnVsZXMgb2YgSG9va3NcXG4nICsgJzMuIFlvdSBtaWdodCBoYXZlIG1vcmUgdGhhbiBvbmUgY29weSBvZiBSZWFjdCBpbiB0aGUgc2FtZSBhcHBcXG4nICsgJ1NlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvaW52YWxpZC1ob29rLWNhbGwgZm9yIHRpcHMgYWJvdXQgaG93IHRvIGRlYnVnIGFuZCBmaXggdGhpcyBwcm9ibGVtLicpO1xuICAgIH1cbiAgfSAvLyBXaWxsIHJlc3VsdCBpbiBhIG51bGwgYWNjZXNzIGVycm9yIGlmIGFjY2Vzc2VkIG91dHNpZGUgcmVuZGVyIHBoYXNlLiBXZVxuICAvLyBpbnRlbnRpb25hbGx5IGRvbid0IHRocm93IG91ciBvd24gZXJyb3IgYmVjYXVzZSB0aGlzIGlzIGluIGEgaG90IHBhdGguXG4gIC8vIEFsc28gaGVscHMgZW5zdXJlIHRoaXMgaXMgaW5saW5lZC5cblxuXG4gIHJldHVybiBkaXNwYXRjaGVyO1xufVxuZnVuY3Rpb24gdXNlQ29udGV4dChDb250ZXh0KSB7XG4gIHZhciBkaXNwYXRjaGVyID0gcmVzb2x2ZURpc3BhdGNoZXIoKTtcblxuICB7XG4gICAgLy8gVE9ETzogYWRkIGEgbW9yZSBnZW5lcmljIHdhcm5pbmcgZm9yIGludmFsaWQgdmFsdWVzLlxuICAgIGlmIChDb250ZXh0Ll9jb250ZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciByZWFsQ29udGV4dCA9IENvbnRleHQuX2NvbnRleHQ7IC8vIERvbid0IGRlZHVwbGljYXRlIGJlY2F1c2UgdGhpcyBsZWdpdGltYXRlbHkgY2F1c2VzIGJ1Z3NcbiAgICAgIC8vIGFuZCBub2JvZHkgc2hvdWxkIGJlIHVzaW5nIHRoaXMgaW4gZXhpc3RpbmcgY29kZS5cblxuICAgICAgaWYgKHJlYWxDb250ZXh0LkNvbnN1bWVyID09PSBDb250ZXh0KSB7XG4gICAgICAgIGVycm9yKCdDYWxsaW5nIHVzZUNvbnRleHQoQ29udGV4dC5Db25zdW1lcikgaXMgbm90IHN1cHBvcnRlZCwgbWF5IGNhdXNlIGJ1Z3MsIGFuZCB3aWxsIGJlICcgKyAncmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciByZWxlYXNlLiBEaWQgeW91IG1lYW4gdG8gY2FsbCB1c2VDb250ZXh0KENvbnRleHQpIGluc3RlYWQ/Jyk7XG4gICAgICB9IGVsc2UgaWYgKHJlYWxDb250ZXh0LlByb3ZpZGVyID09PSBDb250ZXh0KSB7XG4gICAgICAgIGVycm9yKCdDYWxsaW5nIHVzZUNvbnRleHQoQ29udGV4dC5Qcm92aWRlcikgaXMgbm90IHN1cHBvcnRlZC4gJyArICdEaWQgeW91IG1lYW4gdG8gY2FsbCB1c2VDb250ZXh0KENvbnRleHQpIGluc3RlYWQ/Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRpc3BhdGNoZXIudXNlQ29udGV4dChDb250ZXh0KTtcbn1cbmZ1bmN0aW9uIHVzZVN0YXRlKGluaXRpYWxTdGF0ZSkge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZVN0YXRlKGluaXRpYWxTdGF0ZSk7XG59XG5mdW5jdGlvbiB1c2VSZWR1Y2VyKHJlZHVjZXIsIGluaXRpYWxBcmcsIGluaXQpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VSZWR1Y2VyKHJlZHVjZXIsIGluaXRpYWxBcmcsIGluaXQpO1xufVxuZnVuY3Rpb24gdXNlUmVmKGluaXRpYWxWYWx1ZSkge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZVJlZihpbml0aWFsVmFsdWUpO1xufVxuZnVuY3Rpb24gdXNlRWZmZWN0KGNyZWF0ZSwgZGVwcykge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZUVmZmVjdChjcmVhdGUsIGRlcHMpO1xufVxuZnVuY3Rpb24gdXNlSW5zZXJ0aW9uRWZmZWN0KGNyZWF0ZSwgZGVwcykge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZUluc2VydGlvbkVmZmVjdChjcmVhdGUsIGRlcHMpO1xufVxuZnVuY3Rpb24gdXNlTGF5b3V0RWZmZWN0KGNyZWF0ZSwgZGVwcykge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZUxheW91dEVmZmVjdChjcmVhdGUsIGRlcHMpO1xufVxuZnVuY3Rpb24gdXNlQ2FsbGJhY2soY2FsbGJhY2ssIGRlcHMpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VDYWxsYmFjayhjYWxsYmFjaywgZGVwcyk7XG59XG5mdW5jdGlvbiB1c2VNZW1vKGNyZWF0ZSwgZGVwcykge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZU1lbW8oY3JlYXRlLCBkZXBzKTtcbn1cbmZ1bmN0aW9uIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCBjcmVhdGUsIGRlcHMpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgY3JlYXRlLCBkZXBzKTtcbn1cbmZ1bmN0aW9uIHVzZURlYnVnVmFsdWUodmFsdWUsIGZvcm1hdHRlckZuKSB7XG4gIHtcbiAgICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gICAgcmV0dXJuIGRpc3BhdGNoZXIudXNlRGVidWdWYWx1ZSh2YWx1ZSwgZm9ybWF0dGVyRm4pO1xuICB9XG59XG5mdW5jdGlvbiB1c2VUcmFuc2l0aW9uKCkge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZVRyYW5zaXRpb24oKTtcbn1cbmZ1bmN0aW9uIHVzZURlZmVycmVkVmFsdWUodmFsdWUpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VEZWZlcnJlZFZhbHVlKHZhbHVlKTtcbn1cbmZ1bmN0aW9uIHVzZUlkKCkge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZUlkKCk7XG59XG5mdW5jdGlvbiB1c2VTeW5jRXh0ZXJuYWxTdG9yZShzdWJzY3JpYmUsIGdldFNuYXBzaG90LCBnZXRTZXJ2ZXJTbmFwc2hvdCkge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZVN5bmNFeHRlcm5hbFN0b3JlKHN1YnNjcmliZSwgZ2V0U25hcHNob3QsIGdldFNlcnZlclNuYXBzaG90KTtcbn1cblxuLy8gSGVscGVycyB0byBwYXRjaCBjb25zb2xlLmxvZ3MgdG8gYXZvaWQgbG9nZ2luZyBkdXJpbmcgc2lkZS1lZmZlY3QgZnJlZVxuLy8gcmVwbGF5aW5nIG9uIHJlbmRlciBmdW5jdGlvbi4gVGhpcyBjdXJyZW50bHkgb25seSBwYXRjaGVzIHRoZSBvYmplY3Rcbi8vIGxhemlseSB3aGljaCB3b24ndCBjb3ZlciBpZiB0aGUgbG9nIGZ1bmN0aW9uIHdhcyBleHRyYWN0ZWQgZWFnZXJseS5cbi8vIFdlIGNvdWxkIGFsc28gZWFnZXJseSBwYXRjaCB0aGUgbWV0aG9kLlxudmFyIGRpc2FibGVkRGVwdGggPSAwO1xudmFyIHByZXZMb2c7XG52YXIgcHJldkluZm87XG52YXIgcHJldldhcm47XG52YXIgcHJldkVycm9yO1xudmFyIHByZXZHcm91cDtcbnZhciBwcmV2R3JvdXBDb2xsYXBzZWQ7XG52YXIgcHJldkdyb3VwRW5kO1xuXG5mdW5jdGlvbiBkaXNhYmxlZExvZygpIHt9XG5cbmRpc2FibGVkTG9nLl9fcmVhY3REaXNhYmxlZExvZyA9IHRydWU7XG5mdW5jdGlvbiBkaXNhYmxlTG9ncygpIHtcbiAge1xuICAgIGlmIChkaXNhYmxlZERlcHRoID09PSAwKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICAgIHByZXZMb2cgPSBjb25zb2xlLmxvZztcbiAgICAgIHByZXZJbmZvID0gY29uc29sZS5pbmZvO1xuICAgICAgcHJldldhcm4gPSBjb25zb2xlLndhcm47XG4gICAgICBwcmV2RXJyb3IgPSBjb25zb2xlLmVycm9yO1xuICAgICAgcHJldkdyb3VwID0gY29uc29sZS5ncm91cDtcbiAgICAgIHByZXZHcm91cENvbGxhcHNlZCA9IGNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQ7XG4gICAgICBwcmV2R3JvdXBFbmQgPSBjb25zb2xlLmdyb3VwRW5kOyAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE5MDk5XG5cbiAgICAgIHZhciBwcm9wcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogZGlzYWJsZWRMb2csXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICB9OyAvLyAkRmxvd0ZpeE1lIEZsb3cgdGhpbmtzIGNvbnNvbGUgaXMgaW1tdXRhYmxlLlxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjb25zb2xlLCB7XG4gICAgICAgIGluZm86IHByb3BzLFxuICAgICAgICBsb2c6IHByb3BzLFxuICAgICAgICB3YXJuOiBwcm9wcyxcbiAgICAgICAgZXJyb3I6IHByb3BzLFxuICAgICAgICBncm91cDogcHJvcHMsXG4gICAgICAgIGdyb3VwQ29sbGFwc2VkOiBwcm9wcyxcbiAgICAgICAgZ3JvdXBFbmQ6IHByb3BzXG4gICAgICB9KTtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nICovXG4gICAgfVxuXG4gICAgZGlzYWJsZWREZXB0aCsrO1xuICB9XG59XG5mdW5jdGlvbiByZWVuYWJsZUxvZ3MoKSB7XG4gIHtcbiAgICBkaXNhYmxlZERlcHRoLS07XG5cbiAgICBpZiAoZGlzYWJsZWREZXB0aCA9PT0gMCkge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nICovXG4gICAgICB2YXIgcHJvcHMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgIH07IC8vICRGbG93Rml4TWUgRmxvdyB0aGlua3MgY29uc29sZSBpcyBpbW11dGFibGUuXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGNvbnNvbGUsIHtcbiAgICAgICAgbG9nOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZMb2dcbiAgICAgICAgfSksXG4gICAgICAgIGluZm86IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkluZm9cbiAgICAgICAgfSksXG4gICAgICAgIHdhcm46IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldldhcm5cbiAgICAgICAgfSksXG4gICAgICAgIGVycm9yOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZFcnJvclxuICAgICAgICB9KSxcbiAgICAgICAgZ3JvdXA6IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkdyb3VwXG4gICAgICAgIH0pLFxuICAgICAgICBncm91cENvbGxhcHNlZDogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2R3JvdXBDb2xsYXBzZWRcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwRW5kOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZHcm91cEVuZFxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgIH1cblxuICAgIGlmIChkaXNhYmxlZERlcHRoIDwgMCkge1xuICAgICAgZXJyb3IoJ2Rpc2FibGVkRGVwdGggZmVsbCBiZWxvdyB6ZXJvLiAnICsgJ1RoaXMgaXMgYSBidWcgaW4gUmVhY3QuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLicpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgUmVhY3RDdXJyZW50RGlzcGF0Y2hlciQxID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcjtcbnZhciBwcmVmaXg7XG5mdW5jdGlvbiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShuYW1lLCBzb3VyY2UsIG93bmVyRm4pIHtcbiAge1xuICAgIGlmIChwcmVmaXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gRXh0cmFjdCB0aGUgVk0gc3BlY2lmaWMgcHJlZml4IHVzZWQgYnkgZWFjaCBsaW5lLlxuICAgICAgdHJ5IHtcbiAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgdmFyIG1hdGNoID0geC5zdGFjay50cmltKCkubWF0Y2goL1xcbiggKihhdCApPykvKTtcbiAgICAgICAgcHJlZml4ID0gbWF0Y2ggJiYgbWF0Y2hbMV0gfHwgJyc7XG4gICAgICB9XG4gICAgfSAvLyBXZSB1c2UgdGhlIHByZWZpeCB0byBlbnN1cmUgb3VyIHN0YWNrcyBsaW5lIHVwIHdpdGggbmF0aXZlIHN0YWNrIGZyYW1lcy5cblxuXG4gICAgcmV0dXJuICdcXG4nICsgcHJlZml4ICsgbmFtZTtcbiAgfVxufVxudmFyIHJlZW50cnkgPSBmYWxzZTtcbnZhciBjb21wb25lbnRGcmFtZUNhY2hlO1xuXG57XG4gIHZhciBQb3NzaWJseVdlYWtNYXAgPSB0eXBlb2YgV2Vha01hcCA9PT0gJ2Z1bmN0aW9uJyA/IFdlYWtNYXAgOiBNYXA7XG4gIGNvbXBvbmVudEZyYW1lQ2FjaGUgPSBuZXcgUG9zc2libHlXZWFrTWFwKCk7XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoZm4sIGNvbnN0cnVjdCkge1xuICAvLyBJZiBzb21ldGhpbmcgYXNrZWQgZm9yIGEgc3RhY2sgaW5zaWRlIGEgZmFrZSByZW5kZXIsIGl0IHNob3VsZCBnZXQgaWdub3JlZC5cbiAgaWYgKCAhZm4gfHwgcmVlbnRyeSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHtcbiAgICB2YXIgZnJhbWUgPSBjb21wb25lbnRGcmFtZUNhY2hlLmdldChmbik7XG5cbiAgICBpZiAoZnJhbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZyYW1lO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb250cm9sO1xuICByZWVudHJ5ID0gdHJ1ZTtcbiAgdmFyIHByZXZpb3VzUHJlcGFyZVN0YWNrVHJhY2UgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTsgLy8gJEZsb3dGaXhNZSBJdCBkb2VzIGFjY2VwdCB1bmRlZmluZWQuXG5cbiAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSB1bmRlZmluZWQ7XG4gIHZhciBwcmV2aW91c0Rpc3BhdGNoZXI7XG5cbiAge1xuICAgIHByZXZpb3VzRGlzcGF0Y2hlciA9IFJlYWN0Q3VycmVudERpc3BhdGNoZXIkMS5jdXJyZW50OyAvLyBTZXQgdGhlIGRpc3BhdGNoZXIgaW4gREVWIGJlY2F1c2UgdGhpcyBtaWdodCBiZSBjYWxsIGluIHRoZSByZW5kZXIgZnVuY3Rpb25cbiAgICAvLyBmb3Igd2FybmluZ3MuXG5cbiAgICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyJDEuY3VycmVudCA9IG51bGw7XG4gICAgZGlzYWJsZUxvZ3MoKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgLy8gVGhpcyBzaG91bGQgdGhyb3cuXG4gICAgaWYgKGNvbnN0cnVjdCkge1xuICAgICAgLy8gU29tZXRoaW5nIHNob3VsZCBiZSBzZXR0aW5nIHRoZSBwcm9wcyBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAgICB2YXIgRmFrZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgIH07IC8vICRGbG93Rml4TWVcblxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRmFrZS5wcm90b3R5cGUsICdwcm9wcycsIHtcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gV2UgdXNlIGEgdGhyb3dpbmcgc2V0dGVyIGluc3RlYWQgb2YgZnJvemVuIG9yIG5vbi13cml0YWJsZSBwcm9wc1xuICAgICAgICAgIC8vIGJlY2F1c2UgdGhhdCB3b24ndCB0aHJvdyBpbiBhIG5vbi1zdHJpY3QgbW9kZSBmdW5jdGlvbi5cbiAgICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSAnb2JqZWN0JyAmJiBSZWZsZWN0LmNvbnN0cnVjdCkge1xuICAgICAgICAvLyBXZSBjb25zdHJ1Y3QgYSBkaWZmZXJlbnQgY29udHJvbCBmb3IgdGhpcyBjYXNlIHRvIGluY2x1ZGUgYW55IGV4dHJhXG4gICAgICAgIC8vIGZyYW1lcyBhZGRlZCBieSB0aGUgY29uc3RydWN0IGNhbGwuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoRmFrZSwgW10pO1xuICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgY29udHJvbCA9IHg7XG4gICAgICAgIH1cblxuICAgICAgICBSZWZsZWN0LmNvbnN0cnVjdChmbiwgW10sIEZha2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBGYWtlLmNhbGwoKTtcbiAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgIGNvbnRyb2wgPSB4O1xuICAgICAgICB9XG5cbiAgICAgICAgZm4uY2FsbChGYWtlLnByb3RvdHlwZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgIGNvbnRyb2wgPSB4O1xuICAgICAgfVxuXG4gICAgICBmbigpO1xuICAgIH1cbiAgfSBjYXRjaCAoc2FtcGxlKSB7XG4gICAgLy8gVGhpcyBpcyBpbmxpbmVkIG1hbnVhbGx5IGJlY2F1c2UgY2xvc3VyZSBkb2Vzbid0IGRvIGl0IGZvciB1cy5cbiAgICBpZiAoc2FtcGxlICYmIGNvbnRyb2wgJiYgdHlwZW9mIHNhbXBsZS5zdGFjayA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIFRoaXMgZXh0cmFjdHMgdGhlIGZpcnN0IGZyYW1lIGZyb20gdGhlIHNhbXBsZSB0aGF0IGlzbid0IGFsc28gaW4gdGhlIGNvbnRyb2wuXG4gICAgICAvLyBTa2lwcGluZyBvbmUgZnJhbWUgdGhhdCB3ZSBhc3N1bWUgaXMgdGhlIGZyYW1lIHRoYXQgY2FsbHMgdGhlIHR3by5cbiAgICAgIHZhciBzYW1wbGVMaW5lcyA9IHNhbXBsZS5zdGFjay5zcGxpdCgnXFxuJyk7XG4gICAgICB2YXIgY29udHJvbExpbmVzID0gY29udHJvbC5zdGFjay5zcGxpdCgnXFxuJyk7XG4gICAgICB2YXIgcyA9IHNhbXBsZUxpbmVzLmxlbmd0aCAtIDE7XG4gICAgICB2YXIgYyA9IGNvbnRyb2xMaW5lcy5sZW5ndGggLSAxO1xuXG4gICAgICB3aGlsZSAocyA+PSAxICYmIGMgPj0gMCAmJiBzYW1wbGVMaW5lc1tzXSAhPT0gY29udHJvbExpbmVzW2NdKSB7XG4gICAgICAgIC8vIFdlIGV4cGVjdCBhdCBsZWFzdCBvbmUgc3RhY2sgZnJhbWUgdG8gYmUgc2hhcmVkLlxuICAgICAgICAvLyBUeXBpY2FsbHkgdGhpcyB3aWxsIGJlIHRoZSByb290IG1vc3Qgb25lLiBIb3dldmVyLCBzdGFjayBmcmFtZXMgbWF5IGJlXG4gICAgICAgIC8vIGN1dCBvZmYgZHVlIHRvIG1heGltdW0gc3RhY2sgbGltaXRzLiBJbiB0aGlzIGNhc2UsIG9uZSBtYXliZSBjdXQgb2ZmXG4gICAgICAgIC8vIGVhcmxpZXIgdGhhbiB0aGUgb3RoZXIuIFdlIGFzc3VtZSB0aGF0IHRoZSBzYW1wbGUgaXMgbG9uZ2VyIG9yIHRoZSBzYW1lXG4gICAgICAgIC8vIGFuZCB0aGVyZSBmb3IgY3V0IG9mZiBlYXJsaWVyLiBTbyB3ZSBzaG91bGQgZmluZCB0aGUgcm9vdCBtb3N0IGZyYW1lIGluXG4gICAgICAgIC8vIHRoZSBzYW1wbGUgc29tZXdoZXJlIGluIHRoZSBjb250cm9sLlxuICAgICAgICBjLS07XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBzID49IDEgJiYgYyA+PSAwOyBzLS0sIGMtLSkge1xuICAgICAgICAvLyBOZXh0IHdlIGZpbmQgdGhlIGZpcnN0IG9uZSB0aGF0IGlzbid0IHRoZSBzYW1lIHdoaWNoIHNob3VsZCBiZSB0aGVcbiAgICAgICAgLy8gZnJhbWUgdGhhdCBjYWxsZWQgb3VyIHNhbXBsZSBmdW5jdGlvbiBhbmQgdGhlIGNvbnRyb2wuXG4gICAgICAgIGlmIChzYW1wbGVMaW5lc1tzXSAhPT0gY29udHJvbExpbmVzW2NdKSB7XG4gICAgICAgICAgLy8gSW4gVjgsIHRoZSBmaXJzdCBsaW5lIGlzIGRlc2NyaWJpbmcgdGhlIG1lc3NhZ2UgYnV0IG90aGVyIFZNcyBkb24ndC5cbiAgICAgICAgICAvLyBJZiB3ZSdyZSBhYm91dCB0byByZXR1cm4gdGhlIGZpcnN0IGxpbmUsIGFuZCB0aGUgY29udHJvbCBpcyBhbHNvIG9uIHRoZSBzYW1lXG4gICAgICAgICAgLy8gbGluZSwgdGhhdCdzIGEgcHJldHR5IGdvb2QgaW5kaWNhdG9yIHRoYXQgb3VyIHNhbXBsZSB0aHJldyBhdCBzYW1lIGxpbmUgYXNcbiAgICAgICAgICAvLyB0aGUgY29udHJvbC4gSS5lLiBiZWZvcmUgd2UgZW50ZXJlZCB0aGUgc2FtcGxlIGZyYW1lLiBTbyB3ZSBpZ25vcmUgdGhpcyByZXN1bHQuXG4gICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHlvdSBwYXNzZWQgYSBjbGFzcyB0byBmdW5jdGlvbiBjb21wb25lbnQsIG9yIG5vbi1mdW5jdGlvbi5cbiAgICAgICAgICBpZiAocyAhPT0gMSB8fCBjICE9PSAxKSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgIHMtLTtcbiAgICAgICAgICAgICAgYy0tOyAvLyBXZSBtYXkgc3RpbGwgaGF2ZSBzaW1pbGFyIGludGVybWVkaWF0ZSBmcmFtZXMgZnJvbSB0aGUgY29uc3RydWN0IGNhbGwuXG4gICAgICAgICAgICAgIC8vIFRoZSBuZXh0IG9uZSB0aGF0IGlzbid0IHRoZSBzYW1lIHNob3VsZCBiZSBvdXIgbWF0Y2ggdGhvdWdoLlxuXG4gICAgICAgICAgICAgIGlmIChjIDwgMCB8fCBzYW1wbGVMaW5lc1tzXSAhPT0gY29udHJvbExpbmVzW2NdKSB7XG4gICAgICAgICAgICAgICAgLy8gVjggYWRkcyBhIFwibmV3XCIgcHJlZml4IGZvciBuYXRpdmUgY2xhc3Nlcy4gTGV0J3MgcmVtb3ZlIGl0IHRvIG1ha2UgaXQgcHJldHRpZXIuXG4gICAgICAgICAgICAgICAgdmFyIF9mcmFtZSA9ICdcXG4nICsgc2FtcGxlTGluZXNbc10ucmVwbGFjZSgnIGF0IG5ldyAnLCAnIGF0ICcpOyAvLyBJZiBvdXIgY29tcG9uZW50IGZyYW1lIGlzIGxhYmVsZWQgXCI8YW5vbnltb3VzPlwiXG4gICAgICAgICAgICAgICAgLy8gYnV0IHdlIGhhdmUgYSB1c2VyLXByb3ZpZGVkIFwiZGlzcGxheU5hbWVcIlxuICAgICAgICAgICAgICAgIC8vIHNwbGljZSBpdCBpbiB0byBtYWtlIHRoZSBzdGFjayBtb3JlIHJlYWRhYmxlLlxuXG5cbiAgICAgICAgICAgICAgICBpZiAoZm4uZGlzcGxheU5hbWUgJiYgX2ZyYW1lLmluY2x1ZGVzKCc8YW5vbnltb3VzPicpKSB7XG4gICAgICAgICAgICAgICAgICBfZnJhbWUgPSBfZnJhbWUucmVwbGFjZSgnPGFub255bW91cz4nLCBmbi5kaXNwbGF5TmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgX2ZyYW1lKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IC8vIFJldHVybiB0aGUgbGluZSB3ZSBmb3VuZC5cblxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9mcmFtZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB3aGlsZSAocyA+PSAxICYmIGMgPj0gMCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgcmVlbnRyeSA9IGZhbHNlO1xuXG4gICAge1xuICAgICAgUmVhY3RDdXJyZW50RGlzcGF0Y2hlciQxLmN1cnJlbnQgPSBwcmV2aW91c0Rpc3BhdGNoZXI7XG4gICAgICByZWVuYWJsZUxvZ3MoKTtcbiAgICB9XG5cbiAgICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXZpb3VzUHJlcGFyZVN0YWNrVHJhY2U7XG4gIH0gLy8gRmFsbGJhY2sgdG8ganVzdCB1c2luZyB0aGUgbmFtZSBpZiB3ZSBjb3VsZG4ndCBtYWtlIGl0IHRocm93LlxuXG5cbiAgdmFyIG5hbWUgPSBmbiA/IGZuLmRpc3BsYXlOYW1lIHx8IGZuLm5hbWUgOiAnJztcbiAgdmFyIHN5bnRoZXRpY0ZyYW1lID0gbmFtZSA/IGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKG5hbWUpIDogJyc7XG5cbiAge1xuICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbXBvbmVudEZyYW1lQ2FjaGUuc2V0KGZuLCBzeW50aGV0aWNGcmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN5bnRoZXRpY0ZyYW1lO1xufVxuZnVuY3Rpb24gZGVzY3JpYmVGdW5jdGlvbkNvbXBvbmVudEZyYW1lKGZuLCBzb3VyY2UsIG93bmVyRm4pIHtcbiAge1xuICAgIHJldHVybiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKGZuLCBmYWxzZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2hvdWxkQ29uc3RydWN0KENvbXBvbmVudCkge1xuICB2YXIgcHJvdG90eXBlID0gQ29tcG9uZW50LnByb3RvdHlwZTtcbiAgcmV0dXJuICEhKHByb3RvdHlwZSAmJiBwcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCk7XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVih0eXBlLCBzb3VyY2UsIG93bmVyRm4pIHtcblxuICBpZiAodHlwZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAge1xuICAgICAgcmV0dXJuIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUodHlwZSwgc2hvdWxkQ29uc3RydWN0KHR5cGUpKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKHR5cGUpO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKCdTdXNwZW5zZScpO1xuXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoJ1N1c3BlbnNlTGlzdCcpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0Jykge1xuICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICByZXR1cm4gZGVzY3JpYmVGdW5jdGlvbkNvbXBvbmVudEZyYW1lKHR5cGUucmVuZGVyKTtcblxuICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgIC8vIE1lbW8gbWF5IGNvbnRhaW4gYW55IGNvbXBvbmVudCB0eXBlIHNvIHdlIHJlY3Vyc2l2ZWx5IHJlc29sdmUgaXQuXG4gICAgICAgIHJldHVybiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYodHlwZS50eXBlLCBzb3VyY2UsIG93bmVyRm4pO1xuXG4gICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBsYXp5Q29tcG9uZW50ID0gdHlwZTtcbiAgICAgICAgICB2YXIgcGF5bG9hZCA9IGxhenlDb21wb25lbnQuX3BheWxvYWQ7XG4gICAgICAgICAgdmFyIGluaXQgPSBsYXp5Q29tcG9uZW50Ll9pbml0O1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIExhenkgbWF5IGNvbnRhaW4gYW55IGNvbXBvbmVudCB0eXBlIHNvIHdlIHJlY3Vyc2l2ZWx5IHJlc29sdmUgaXQuXG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKGluaXQocGF5bG9hZCksIHNvdXJjZSwgb3duZXJGbik7XG4gICAgICAgICAgfSBjYXRjaCAoeCkge31cbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnJztcbn1cblxudmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xudmFyIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0RGVidWdDdXJyZW50RnJhbWU7XG5cbmZ1bmN0aW9uIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGVsZW1lbnQpIHtcbiAge1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXIgPSBlbGVtZW50Ll9vd25lcjtcbiAgICAgIHZhciBzdGFjayA9IGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihlbGVtZW50LnR5cGUsIGVsZW1lbnQuX3NvdXJjZSwgb3duZXIgPyBvd25lci50eXBlIDogbnVsbCk7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lJDEuc2V0RXh0cmFTdGFja0ZyYW1lKHN0YWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSQxLnNldEV4dHJhU3RhY2tGcmFtZShudWxsKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBlbGVtZW50KSB7XG4gIHtcbiAgICAvLyAkRmxvd0ZpeE1lIFRoaXMgaXMgb2theSBidXQgRmxvdyBkb2Vzbid0IGtub3cgaXQuXG4gICAgdmFyIGhhcyA9IEZ1bmN0aW9uLmNhbGwuYmluZChoYXNPd25Qcm9wZXJ0eSk7XG5cbiAgICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7XG4gICAgICBpZiAoaGFzKHR5cGVTcGVjcywgdHlwZVNwZWNOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3IkMSA9IHZvaWQgMDsgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRoZXkgZG8sIHdlIGRvbid0IHdhbnQgdG9cbiAgICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LlxuICAgICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWVcbiAgICAgICAgICAvLyBiZWhhdmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3NhZ2UuXG4gICAgICAgICAgaWYgKHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3Byb2QtZXJyb3ItY29kZXNcbiAgICAgICAgICAgIHZhciBlcnIgPSBFcnJvcigoY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnKSArICc6ICcgKyBsb2NhdGlvbiArICcgdHlwZSBgJyArIHR5cGVTcGVjTmFtZSArICdgIGlzIGludmFsaWQ7ICcgKyAnaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLCBidXQgcmVjZWl2ZWQgYCcgKyB0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gKyAnYC4nICsgJ1RoaXMgb2Z0ZW4gaGFwcGVucyBiZWNhdXNlIG9mIHR5cG9zIHN1Y2ggYXMgYFByb3BUeXBlcy5mdW5jdGlvbmAgaW5zdGVhZCBvZiBgUHJvcFR5cGVzLmZ1bmNgLicpO1xuICAgICAgICAgICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXJyb3IkMSA9IHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdKHZhbHVlcywgdHlwZVNwZWNOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgbnVsbCwgJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJyk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IkMSA9IGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yJDEgJiYgIShlcnJvciQxIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZWxlbWVudCk7XG5cbiAgICAgICAgICBlcnJvcignJXM6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAlcycgKyAnIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciAnICsgJ2Z1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1cm5lZCBhICVzLiAnICsgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVudCB0byB0aGUgdHlwZSBjaGVja2VyICcgKyAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFsbCByZXF1aXJlIGFuIGFyZ3VtZW50KS4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIGxvY2F0aW9uLCB0eXBlU3BlY05hbWUsIHR5cGVvZiBlcnJvciQxKTtcblxuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yJDEgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yJDEubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7XG4gICAgICAgICAgLy8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhlXG4gICAgICAgICAgLy8gc2FtZSBlcnJvci5cbiAgICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IkMS5tZXNzYWdlXSA9IHRydWU7XG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZWxlbWVudCk7XG5cbiAgICAgICAgICBlcnJvcignRmFpbGVkICVzIHR5cGU6ICVzJywgbG9jYXRpb24sIGVycm9yJDEubWVzc2FnZSk7XG5cbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKGVsZW1lbnQpIHtcbiAge1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXIgPSBlbGVtZW50Ll9vd25lcjtcbiAgICAgIHZhciBzdGFjayA9IGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihlbGVtZW50LnR5cGUsIGVsZW1lbnQuX3NvdXJjZSwgb3duZXIgPyBvd25lci50eXBlIDogbnVsbCk7XG4gICAgICBzZXRFeHRyYVN0YWNrRnJhbWUoc3RhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRFeHRyYVN0YWNrRnJhbWUobnVsbCk7XG4gICAgfVxuICB9XG59XG5cbnZhciBwcm9wVHlwZXNNaXNzcGVsbFdhcm5pbmdTaG93bjtcblxue1xuICBwcm9wVHlwZXNNaXNzcGVsbFdhcm5pbmdTaG93biA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKSB7XG4gIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC50eXBlKTtcblxuICAgIGlmIChuYW1lKSB7XG4gICAgICByZXR1cm4gJ1xcblxcbkNoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bShzb3VyY2UpIHtcbiAgaWYgKHNvdXJjZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIGZpbGVOYW1lID0gc291cmNlLmZpbGVOYW1lLnJlcGxhY2UoL14uKltcXFxcXFwvXS8sICcnKTtcbiAgICB2YXIgbGluZU51bWJlciA9IHNvdXJjZS5saW5lTnVtYmVyO1xuICAgIHJldHVybiAnXFxuXFxuQ2hlY2sgeW91ciBjb2RlIGF0ICcgKyBmaWxlTmFtZSArICc6JyArIGxpbmVOdW1iZXIgKyAnLic7XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIGdldFNvdXJjZUluZm9FcnJvckFkZGVuZHVtRm9yUHJvcHMoZWxlbWVudFByb3BzKSB7XG4gIGlmIChlbGVtZW50UHJvcHMgIT09IG51bGwgJiYgZWxlbWVudFByb3BzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZ2V0U291cmNlSW5mb0Vycm9yQWRkZW5kdW0oZWxlbWVudFByb3BzLl9fc291cmNlKTtcbiAgfVxuXG4gIHJldHVybiAnJztcbn1cbi8qKlxuICogV2FybiBpZiB0aGVyZSdzIG5vIGtleSBleHBsaWNpdGx5IHNldCBvbiBkeW5hbWljIGFycmF5cyBvZiBjaGlsZHJlbiBvclxuICogb2JqZWN0IGtleXMgYXJlIG5vdCB2YWxpZC4gVGhpcyBhbGxvd3MgdXMgdG8ga2VlcCB0cmFjayBvZiBjaGlsZHJlbiBiZXR3ZWVuXG4gKiB1cGRhdGVzLlxuICovXG5cblxudmFyIG93bmVySGFzS2V5VXNlV2FybmluZyA9IHt9O1xuXG5mdW5jdGlvbiBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpIHtcbiAgdmFyIGluZm8gPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKTtcblxuICBpZiAoIWluZm8pIHtcbiAgICB2YXIgcGFyZW50TmFtZSA9IHR5cGVvZiBwYXJlbnRUeXBlID09PSAnc3RyaW5nJyA/IHBhcmVudFR5cGUgOiBwYXJlbnRUeXBlLmRpc3BsYXlOYW1lIHx8IHBhcmVudFR5cGUubmFtZTtcblxuICAgIGlmIChwYXJlbnROYW1lKSB7XG4gICAgICBpbmZvID0gXCJcXG5cXG5DaGVjayB0aGUgdG9wLWxldmVsIHJlbmRlciBjYWxsIHVzaW5nIDxcIiArIHBhcmVudE5hbWUgKyBcIj4uXCI7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGluZm87XG59XG4vKipcbiAqIFdhcm4gaWYgdGhlIGVsZW1lbnQgZG9lc24ndCBoYXZlIGFuIGV4cGxpY2l0IGtleSBhc3NpZ25lZCB0byBpdC5cbiAqIFRoaXMgZWxlbWVudCBpcyBpbiBhbiBhcnJheS4gVGhlIGFycmF5IGNvdWxkIGdyb3cgYW5kIHNocmluayBvciBiZVxuICogcmVvcmRlcmVkLiBBbGwgY2hpbGRyZW4gdGhhdCBoYXZlbid0IGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQgYXJlIHJlcXVpcmVkIHRvXG4gKiBoYXZlIGEgXCJrZXlcIiBwcm9wZXJ0eSBhc3NpZ25lZCB0byBpdC4gRXJyb3Igc3RhdHVzZXMgYXJlIGNhY2hlZCBzbyBhIHdhcm5pbmdcbiAqIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnQgRWxlbWVudCB0aGF0IHJlcXVpcmVzIGEga2V5LlxuICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIGVsZW1lbnQncyBwYXJlbnQncyB0eXBlLlxuICovXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVFeHBsaWNpdEtleShlbGVtZW50LCBwYXJlbnRUeXBlKSB7XG4gIGlmICghZWxlbWVudC5fc3RvcmUgfHwgZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkIHx8IGVsZW1lbnQua2V5ICE9IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgPSB0cnVlO1xuICB2YXIgY3VycmVudENvbXBvbmVudEVycm9ySW5mbyA9IGdldEN1cnJlbnRDb21wb25lbnRFcnJvckluZm8ocGFyZW50VHlwZSk7XG5cbiAgaWYgKG93bmVySGFzS2V5VXNlV2FybmluZ1tjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvXSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIG93bmVySGFzS2V5VXNlV2FybmluZ1tjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvXSA9IHRydWU7IC8vIFVzdWFsbHkgdGhlIGN1cnJlbnQgb3duZXIgaXMgdGhlIG9mZmVuZGVyLCBidXQgaWYgaXQgYWNjZXB0cyBjaGlsZHJlbiBhcyBhXG4gIC8vIHByb3BlcnR5LCBpdCBtYXkgYmUgdGhlIGNyZWF0b3Igb2YgdGhlIGNoaWxkIHRoYXQncyByZXNwb25zaWJsZSBmb3JcbiAgLy8gYXNzaWduaW5nIGl0IGEga2V5LlxuXG4gIHZhciBjaGlsZE93bmVyID0gJyc7XG5cbiAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5fb3duZXIgJiYgZWxlbWVudC5fb3duZXIgIT09IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHtcbiAgICAvLyBHaXZlIHRoZSBjb21wb25lbnQgdGhhdCBvcmlnaW5hbGx5IGNyZWF0ZWQgdGhpcyBjaGlsZC5cbiAgICBjaGlsZE93bmVyID0gXCIgSXQgd2FzIHBhc3NlZCBhIGNoaWxkIGZyb20gXCIgKyBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoZWxlbWVudC5fb3duZXIudHlwZSkgKyBcIi5cIjtcbiAgfVxuXG4gIHtcbiAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKGVsZW1lbnQpO1xuXG4gICAgZXJyb3IoJ0VhY2ggY2hpbGQgaW4gYSBsaXN0IHNob3VsZCBoYXZlIGEgdW5pcXVlIFwia2V5XCIgcHJvcC4nICsgJyVzJXMgU2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvbGluay93YXJuaW5nLWtleXMgZm9yIG1vcmUgaW5mb3JtYXRpb24uJywgY3VycmVudENvbXBvbmVudEVycm9ySW5mbywgY2hpbGRPd25lcik7XG5cbiAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKG51bGwpO1xuICB9XG59XG4vKipcbiAqIEVuc3VyZSB0aGF0IGV2ZXJ5IGVsZW1lbnQgZWl0aGVyIGlzIHBhc3NlZCBpbiBhIHN0YXRpYyBsb2NhdGlvbiwgaW4gYW5cbiAqIGFycmF5IHdpdGggYW4gZXhwbGljaXQga2V5cyBwcm9wZXJ0eSBkZWZpbmVkLCBvciBpbiBhbiBvYmplY3QgbGl0ZXJhbFxuICogd2l0aCB2YWxpZCBrZXkgcHJvcGVydHkuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0ge1JlYWN0Tm9kZX0gbm9kZSBTdGF0aWNhbGx5IHBhc3NlZCBjaGlsZCBvZiBhbnkgdHlwZS5cbiAqIEBwYXJhbSB7Kn0gcGFyZW50VHlwZSBub2RlJ3MgcGFyZW50J3MgdHlwZS5cbiAqL1xuXG5cbmZ1bmN0aW9uIHZhbGlkYXRlQ2hpbGRLZXlzKG5vZGUsIHBhcmVudFR5cGUpIHtcbiAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChpc0FycmF5KG5vZGUpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY2hpbGQgPSBub2RlW2ldO1xuXG4gICAgICBpZiAoaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgIHZhbGlkYXRlRXhwbGljaXRLZXkoY2hpbGQsIHBhcmVudFR5cGUpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpc1ZhbGlkRWxlbWVudChub2RlKSkge1xuICAgIC8vIFRoaXMgZWxlbWVudCB3YXMgcGFzc2VkIGluIGEgdmFsaWQgbG9jYXRpb24uXG4gICAgaWYgKG5vZGUuX3N0b3JlKSB7XG4gICAgICBub2RlLl9zdG9yZS52YWxpZGF0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChub2RlKSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG5vZGUpO1xuXG4gICAgaWYgKHR5cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBFbnRyeSBpdGVyYXRvcnMgdXNlZCB0byBwcm92aWRlIGltcGxpY2l0IGtleXMsXG4gICAgICAvLyBidXQgbm93IHdlIHByaW50IGEgc2VwYXJhdGUgd2FybmluZyBmb3IgdGhlbSBsYXRlci5cbiAgICAgIGlmIChpdGVyYXRvckZuICE9PSBub2RlLmVudHJpZXMpIHtcbiAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG5vZGUpO1xuICAgICAgICB2YXIgc3RlcDtcblxuICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgaWYgKGlzVmFsaWRFbGVtZW50KHN0ZXAudmFsdWUpKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZUV4cGxpY2l0S2V5KHN0ZXAudmFsdWUsIHBhcmVudFR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLyoqXG4gKiBHaXZlbiBhbiBlbGVtZW50LCB2YWxpZGF0ZSB0aGF0IGl0cyBwcm9wcyBmb2xsb3cgdGhlIHByb3BUeXBlcyBkZWZpbml0aW9uLFxuICogcHJvdmlkZWQgYnkgdGhlIHR5cGUuXG4gKlxuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnRcbiAqL1xuXG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcFR5cGVzKGVsZW1lbnQpIHtcbiAge1xuICAgIHZhciB0eXBlID0gZWxlbWVudC50eXBlO1xuXG4gICAgaWYgKHR5cGUgPT09IG51bGwgfHwgdHlwZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBwcm9wVHlwZXM7XG5cbiAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb3BUeXBlcyA9IHR5cGUucHJvcFR5cGVzO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmICh0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFIHx8IC8vIE5vdGU6IE1lbW8gb25seSBjaGVja3Mgb3V0ZXIgcHJvcHMgaGVyZS5cbiAgICAvLyBJbm5lciBwcm9wcyBhcmUgY2hlY2tlZCBpbiB0aGUgcmVjb25jaWxlci5cbiAgICB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUpKSB7XG4gICAgICBwcm9wVHlwZXMgPSB0eXBlLnByb3BUeXBlcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwcm9wVHlwZXMpIHtcbiAgICAgIC8vIEludGVudGlvbmFsbHkgaW5zaWRlIHRvIGF2b2lkIHRyaWdnZXJpbmcgbGF6eSBpbml0aWFsaXplcnM6XG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKTtcbiAgICAgIGNoZWNrUHJvcFR5cGVzKHByb3BUeXBlcywgZWxlbWVudC5wcm9wcywgJ3Byb3AnLCBuYW1lLCBlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKHR5cGUuUHJvcFR5cGVzICE9PSB1bmRlZmluZWQgJiYgIXByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duKSB7XG4gICAgICBwcm9wVHlwZXNNaXNzcGVsbFdhcm5pbmdTaG93biA9IHRydWU7IC8vIEludGVudGlvbmFsbHkgaW5zaWRlIHRvIGF2b2lkIHRyaWdnZXJpbmcgbGF6eSBpbml0aWFsaXplcnM6XG5cbiAgICAgIHZhciBfbmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKTtcblxuICAgICAgZXJyb3IoJ0NvbXBvbmVudCAlcyBkZWNsYXJlZCBgUHJvcFR5cGVzYCBpbnN0ZWFkIG9mIGBwcm9wVHlwZXNgLiBEaWQgeW91IG1pc3NwZWxsIHRoZSBwcm9wZXJ0eSBhc3NpZ25tZW50PycsIF9uYW1lIHx8ICdVbmtub3duJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0eXBlLmdldERlZmF1bHRQcm9wcyA9PT0gJ2Z1bmN0aW9uJyAmJiAhdHlwZS5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQpIHtcbiAgICAgIGVycm9yKCdnZXREZWZhdWx0UHJvcHMgaXMgb25seSB1c2VkIG9uIGNsYXNzaWMgUmVhY3QuY3JlYXRlQ2xhc3MgJyArICdkZWZpbml0aW9ucy4gVXNlIGEgc3RhdGljIHByb3BlcnR5IG5hbWVkIGBkZWZhdWx0UHJvcHNgIGluc3RlYWQuJyk7XG4gICAgfVxuICB9XG59XG4vKipcbiAqIEdpdmVuIGEgZnJhZ21lbnQsIHZhbGlkYXRlIHRoYXQgaXQgY2FuIG9ubHkgYmUgcHJvdmlkZWQgd2l0aCBmcmFnbWVudCBwcm9wc1xuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGZyYWdtZW50XG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZUZyYWdtZW50UHJvcHMoZnJhZ21lbnQpIHtcbiAge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZnJhZ21lbnQucHJvcHMpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKGtleSAhPT0gJ2NoaWxkcmVuJyAmJiBrZXkgIT09ICdrZXknKSB7XG4gICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZnJhZ21lbnQpO1xuXG4gICAgICAgIGVycm9yKCdJbnZhbGlkIHByb3AgYCVzYCBzdXBwbGllZCB0byBgUmVhY3QuRnJhZ21lbnRgLiAnICsgJ1JlYWN0LkZyYWdtZW50IGNhbiBvbmx5IGhhdmUgYGtleWAgYW5kIGBjaGlsZHJlbmAgcHJvcHMuJywga2V5KTtcblxuICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKG51bGwpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZnJhZ21lbnQucmVmICE9PSBudWxsKSB7XG4gICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKGZyYWdtZW50KTtcblxuICAgICAgZXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIGByZWZgIHN1cHBsaWVkIHRvIGBSZWFjdC5GcmFnbWVudGAuJyk7XG5cbiAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEobnVsbCk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50V2l0aFZhbGlkYXRpb24odHlwZSwgcHJvcHMsIGNoaWxkcmVuKSB7XG4gIHZhciB2YWxpZFR5cGUgPSBpc1ZhbGlkRWxlbWVudFR5cGUodHlwZSk7IC8vIFdlIHdhcm4gaW4gdGhpcyBjYXNlIGJ1dCBkb24ndCB0aHJvdy4gV2UgZXhwZWN0IHRoZSBlbGVtZW50IGNyZWF0aW9uIHRvXG4gIC8vIHN1Y2NlZWQgYW5kIHRoZXJlIHdpbGwgbGlrZWx5IGJlIGVycm9ycyBpbiByZW5kZXIuXG5cbiAgaWYgKCF2YWxpZFR5cGUpIHtcbiAgICB2YXIgaW5mbyA9ICcnO1xuXG4gICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyh0eXBlKS5sZW5ndGggPT09IDApIHtcbiAgICAgIGluZm8gKz0gJyBZb3UgbGlrZWx5IGZvcmdvdCB0byBleHBvcnQgeW91ciBjb21wb25lbnQgZnJvbSB0aGUgZmlsZSAnICsgXCJpdCdzIGRlZmluZWQgaW4sIG9yIHlvdSBtaWdodCBoYXZlIG1peGVkIHVwIGRlZmF1bHQgYW5kIG5hbWVkIGltcG9ydHMuXCI7XG4gICAgfVxuXG4gICAgdmFyIHNvdXJjZUluZm8gPSBnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bUZvclByb3BzKHByb3BzKTtcblxuICAgIGlmIChzb3VyY2VJbmZvKSB7XG4gICAgICBpbmZvICs9IHNvdXJjZUluZm87XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZm8gKz0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7XG4gICAgfVxuXG4gICAgdmFyIHR5cGVTdHJpbmc7XG5cbiAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgdHlwZVN0cmluZyA9ICdudWxsJztcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkodHlwZSkpIHtcbiAgICAgIHR5cGVTdHJpbmcgPSAnYXJyYXknO1xuICAgIH0gZWxzZSBpZiAodHlwZSAhPT0gdW5kZWZpbmVkICYmIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRSkge1xuICAgICAgdHlwZVN0cmluZyA9IFwiPFwiICsgKGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlLnR5cGUpIHx8ICdVbmtub3duJykgKyBcIiAvPlwiO1xuICAgICAgaW5mbyA9ICcgRGlkIHlvdSBhY2NpZGVudGFsbHkgZXhwb3J0IGEgSlNYIGxpdGVyYWwgaW5zdGVhZCBvZiBhIGNvbXBvbmVudD8nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eXBlU3RyaW5nID0gdHlwZW9mIHR5cGU7XG4gICAgfVxuXG4gICAge1xuICAgICAgZXJyb3IoJ1JlYWN0LmNyZWF0ZUVsZW1lbnQ6IHR5cGUgaXMgaW52YWxpZCAtLSBleHBlY3RlZCBhIHN0cmluZyAoZm9yICcgKyAnYnVpbHQtaW4gY29tcG9uZW50cykgb3IgYSBjbGFzcy9mdW5jdGlvbiAoZm9yIGNvbXBvc2l0ZSAnICsgJ2NvbXBvbmVudHMpIGJ1dCBnb3Q6ICVzLiVzJywgdHlwZVN0cmluZywgaW5mbyk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIFRoZSByZXN1bHQgY2FuIGJlIG51bGxpc2ggaWYgYSBtb2NrIG9yIGEgY3VzdG9tIGZ1bmN0aW9uIGlzIHVzZWQuXG4gIC8vIFRPRE86IERyb3AgdGhpcyB3aGVuIHRoZXNlIGFyZSBubyBsb25nZXIgYWxsb3dlZCBhcyB0aGUgdHlwZSBhcmd1bWVudC5cblxuICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH0gLy8gU2tpcCBrZXkgd2FybmluZyBpZiB0aGUgdHlwZSBpc24ndCB2YWxpZCBzaW5jZSBvdXIga2V5IHZhbGlkYXRpb24gbG9naWNcbiAgLy8gZG9lc24ndCBleHBlY3QgYSBub24tc3RyaW5nL2Z1bmN0aW9uIHR5cGUgYW5kIGNhbiB0aHJvdyBjb25mdXNpbmcgZXJyb3JzLlxuICAvLyBXZSBkb24ndCB3YW50IGV4Y2VwdGlvbiBiZWhhdmlvciB0byBkaWZmZXIgYmV0d2VlbiBkZXYgYW5kIHByb2QuXG4gIC8vIChSZW5kZXJpbmcgd2lsbCB0aHJvdyB3aXRoIGEgaGVscGZ1bCBtZXNzYWdlIGFuZCBhcyBzb29uIGFzIHRoZSB0eXBlIGlzXG4gIC8vIGZpeGVkLCB0aGUga2V5IHdhcm5pbmdzIHdpbGwgYXBwZWFyLilcblxuXG4gIGlmICh2YWxpZFR5cGUpIHtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFsaWRhdGVDaGlsZEtleXMoYXJndW1lbnRzW2ldLCB0eXBlKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSkge1xuICAgIHZhbGlkYXRlRnJhZ21lbnRQcm9wcyhlbGVtZW50KTtcbiAgfSBlbHNlIHtcbiAgICB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50O1xufVxudmFyIGRpZFdhcm5BYm91dERlcHJlY2F0ZWRDcmVhdGVGYWN0b3J5ID0gZmFsc2U7XG5mdW5jdGlvbiBjcmVhdGVGYWN0b3J5V2l0aFZhbGlkYXRpb24odHlwZSkge1xuICB2YXIgdmFsaWRhdGVkRmFjdG9yeSA9IGNyZWF0ZUVsZW1lbnRXaXRoVmFsaWRhdGlvbi5iaW5kKG51bGwsIHR5cGUpO1xuICB2YWxpZGF0ZWRGYWN0b3J5LnR5cGUgPSB0eXBlO1xuXG4gIHtcbiAgICBpZiAoIWRpZFdhcm5BYm91dERlcHJlY2F0ZWRDcmVhdGVGYWN0b3J5KSB7XG4gICAgICBkaWRXYXJuQWJvdXREZXByZWNhdGVkQ3JlYXRlRmFjdG9yeSA9IHRydWU7XG5cbiAgICAgIHdhcm4oJ1JlYWN0LmNyZWF0ZUZhY3RvcnkoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gJyArICdhIGZ1dHVyZSBtYWpvciByZWxlYXNlLiBDb25zaWRlciB1c2luZyBKU1ggJyArICdvciB1c2UgUmVhY3QuY3JlYXRlRWxlbWVudCgpIGRpcmVjdGx5IGluc3RlYWQuJyk7XG4gICAgfSAvLyBMZWdhY3kgaG9vazogcmVtb3ZlIGl0XG5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWxpZGF0ZWRGYWN0b3J5LCAndHlwZScsIHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHdhcm4oJ0ZhY3RvcnkudHlwZSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdGhlIGNsYXNzIGRpcmVjdGx5ICcgKyAnYmVmb3JlIHBhc3NpbmcgaXQgdG8gY3JlYXRlRmFjdG9yeS4nKTtcblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3R5cGUnLCB7XG4gICAgICAgICAgdmFsdWU6IHR5cGVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0eXBlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlZEZhY3Rvcnk7XG59XG5mdW5jdGlvbiBjbG9uZUVsZW1lbnRXaXRoVmFsaWRhdGlvbihlbGVtZW50LCBwcm9wcywgY2hpbGRyZW4pIHtcbiAgdmFyIG5ld0VsZW1lbnQgPSBjbG9uZUVsZW1lbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhbGlkYXRlQ2hpbGRLZXlzKGFyZ3VtZW50c1tpXSwgbmV3RWxlbWVudC50eXBlKTtcbiAgfVxuXG4gIHZhbGlkYXRlUHJvcFR5cGVzKG5ld0VsZW1lbnQpO1xuICByZXR1cm4gbmV3RWxlbWVudDtcbn1cblxuZnVuY3Rpb24gc3RhcnRUcmFuc2l0aW9uKHNjb3BlLCBvcHRpb25zKSB7XG4gIHZhciBwcmV2VHJhbnNpdGlvbiA9IFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLnRyYW5zaXRpb247XG4gIFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLnRyYW5zaXRpb24gPSB7fTtcbiAgdmFyIGN1cnJlbnRUcmFuc2l0aW9uID0gUmVhY3RDdXJyZW50QmF0Y2hDb25maWcudHJhbnNpdGlvbjtcblxuICB7XG4gICAgUmVhY3RDdXJyZW50QmF0Y2hDb25maWcudHJhbnNpdGlvbi5fdXBkYXRlZEZpYmVycyA9IG5ldyBTZXQoKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgc2NvcGUoKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBSZWFjdEN1cnJlbnRCYXRjaENvbmZpZy50cmFuc2l0aW9uID0gcHJldlRyYW5zaXRpb247XG5cbiAgICB7XG4gICAgICBpZiAocHJldlRyYW5zaXRpb24gPT09IG51bGwgJiYgY3VycmVudFRyYW5zaXRpb24uX3VwZGF0ZWRGaWJlcnMpIHtcbiAgICAgICAgdmFyIHVwZGF0ZWRGaWJlcnNDb3VudCA9IGN1cnJlbnRUcmFuc2l0aW9uLl91cGRhdGVkRmliZXJzLnNpemU7XG5cbiAgICAgICAgaWYgKHVwZGF0ZWRGaWJlcnNDb3VudCA+IDEwKSB7XG4gICAgICAgICAgd2FybignRGV0ZWN0ZWQgYSBsYXJnZSBudW1iZXIgb2YgdXBkYXRlcyBpbnNpZGUgc3RhcnRUcmFuc2l0aW9uLiAnICsgJ0lmIHRoaXMgaXMgZHVlIHRvIGEgc3Vic2NyaXB0aW9uIHBsZWFzZSByZS13cml0ZSBpdCB0byB1c2UgUmVhY3QgcHJvdmlkZWQgaG9va3MuICcgKyAnT3RoZXJ3aXNlIGNvbmN1cnJlbnQgbW9kZSBndWFyYW50ZWVzIGFyZSBvZmYgdGhlIHRhYmxlLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudFRyYW5zaXRpb24uX3VwZGF0ZWRGaWJlcnMuY2xlYXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxudmFyIGRpZFdhcm5BYm91dE1lc3NhZ2VDaGFubmVsID0gZmFsc2U7XG52YXIgZW5xdWV1ZVRhc2tJbXBsID0gbnVsbDtcbmZ1bmN0aW9uIGVucXVldWVUYXNrKHRhc2spIHtcbiAgaWYgKGVucXVldWVUYXNrSW1wbCA9PT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICAvLyByZWFkIHJlcXVpcmUgb2ZmIHRoZSBtb2R1bGUgb2JqZWN0IHRvIGdldCBhcm91bmQgdGhlIGJ1bmRsZXJzLlxuICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0aGVtIHRvIGRldGVjdCBhIHJlcXVpcmUgYW5kIGJ1bmRsZSBhIE5vZGUgcG9seWZpbGwuXG4gICAgICB2YXIgcmVxdWlyZVN0cmluZyA9ICgncmVxdWlyZScgKyBNYXRoLnJhbmRvbSgpKS5zbGljZSgwLCA3KTtcbiAgICAgIHZhciBub2RlUmVxdWlyZSA9IG1vZHVsZSAmJiBtb2R1bGVbcmVxdWlyZVN0cmluZ107IC8vIGFzc3VtaW5nIHdlJ3JlIGluIG5vZGUsIGxldCdzIHRyeSB0byBnZXQgbm9kZSdzXG4gICAgICAvLyB2ZXJzaW9uIG9mIHNldEltbWVkaWF0ZSwgYnlwYXNzaW5nIGZha2UgdGltZXJzIGlmIGFueS5cblxuICAgICAgZW5xdWV1ZVRhc2tJbXBsID0gbm9kZVJlcXVpcmUuY2FsbChtb2R1bGUsICd0aW1lcnMnKS5zZXRJbW1lZGlhdGU7XG4gICAgfSBjYXRjaCAoX2Vycikge1xuICAgICAgLy8gd2UncmUgaW4gYSBicm93c2VyXG4gICAgICAvLyB3ZSBjYW4ndCB1c2UgcmVndWxhciB0aW1lcnMgYmVjYXVzZSB0aGV5IG1heSBzdGlsbCBiZSBmYWtlZFxuICAgICAgLy8gc28gd2UgdHJ5IE1lc3NhZ2VDaGFubmVsK3Bvc3RNZXNzYWdlIGluc3RlYWRcbiAgICAgIGVucXVldWVUYXNrSW1wbCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgICAgICB7XG4gICAgICAgICAgaWYgKGRpZFdhcm5BYm91dE1lc3NhZ2VDaGFubmVsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZGlkV2FybkFib3V0TWVzc2FnZUNoYW5uZWwgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIE1lc3NhZ2VDaGFubmVsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICBlcnJvcignVGhpcyBicm93c2VyIGRvZXMgbm90IGhhdmUgYSBNZXNzYWdlQ2hhbm5lbCBpbXBsZW1lbnRhdGlvbiwgJyArICdzbyBlbnF1ZXVpbmcgdGFza3MgdmlhIGF3YWl0IGFjdChhc3luYyAoKSA9PiAuLi4pIHdpbGwgZmFpbC4gJyArICdQbGVhc2UgZmlsZSBhbiBpc3N1ZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzICcgKyAnaWYgeW91IGVuY291bnRlciB0aGlzIHdhcm5pbmcuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICAgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBjYWxsYmFjaztcbiAgICAgICAgY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSh1bmRlZmluZWQpO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZW5xdWV1ZVRhc2tJbXBsKHRhc2spO1xufVxuXG52YXIgYWN0U2NvcGVEZXB0aCA9IDA7XG52YXIgZGlkV2Fybk5vQXdhaXRBY3QgPSBmYWxzZTtcbmZ1bmN0aW9uIGFjdChjYWxsYmFjaykge1xuICB7XG4gICAgLy8gYGFjdGAgY2FsbHMgY2FuIGJlIG5lc3RlZCwgc28gd2UgdHJhY2sgdGhlIGRlcHRoLiBUaGlzIHJlcHJlc2VudHMgdGhlXG4gICAgLy8gbnVtYmVyIG9mIGBhY3RgIHNjb3BlcyBvbiB0aGUgc3RhY2suXG4gICAgdmFyIHByZXZBY3RTY29wZURlcHRoID0gYWN0U2NvcGVEZXB0aDtcbiAgICBhY3RTY29wZURlcHRoKys7XG5cbiAgICBpZiAoUmVhY3RDdXJyZW50QWN0UXVldWUuY3VycmVudCA9PT0gbnVsbCkge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgb3V0ZXJtb3N0IGBhY3RgIHNjb3BlLiBJbml0aWFsaXplIHRoZSBxdWV1ZS4gVGhlIHJlY29uY2lsZXJcbiAgICAgIC8vIHdpbGwgZGV0ZWN0IHRoZSBxdWV1ZSBhbmQgdXNlIGl0IGluc3RlYWQgb2YgU2NoZWR1bGVyLlxuICAgICAgUmVhY3RDdXJyZW50QWN0UXVldWUuY3VycmVudCA9IFtdO1xuICAgIH1cblxuICAgIHZhciBwcmV2SXNCYXRjaGluZ0xlZ2FjeSA9IFJlYWN0Q3VycmVudEFjdFF1ZXVlLmlzQmF0Y2hpbmdMZWdhY3k7XG4gICAgdmFyIHJlc3VsdDtcblxuICAgIHRyeSB7XG4gICAgICAvLyBVc2VkIHRvIHJlcHJvZHVjZSBiZWhhdmlvciBvZiBgYmF0Y2hlZFVwZGF0ZXNgIGluIGxlZ2FjeSBtb2RlLiBPbmx5XG4gICAgICAvLyBzZXQgdG8gYHRydWVgIHdoaWxlIHRoZSBnaXZlbiBjYWxsYmFjayBpcyBleGVjdXRlZCwgbm90IGZvciB1cGRhdGVzXG4gICAgICAvLyB0cmlnZ2VyZWQgZHVyaW5nIGFuIGFzeW5jIGV2ZW50LCBiZWNhdXNlIHRoaXMgaXMgaG93IHRoZSBsZWdhY3lcbiAgICAgIC8vIGltcGxlbWVudGF0aW9uIG9mIGBhY3RgIGJlaGF2ZWQuXG4gICAgICBSZWFjdEN1cnJlbnRBY3RRdWV1ZS5pc0JhdGNoaW5nTGVnYWN5ID0gdHJ1ZTtcbiAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKCk7IC8vIFJlcGxpY2F0ZSBiZWhhdmlvciBvZiBvcmlnaW5hbCBgYWN0YCBpbXBsZW1lbnRhdGlvbiBpbiBsZWdhY3kgbW9kZSxcbiAgICAgIC8vIHdoaWNoIGZsdXNoZWQgdXBkYXRlcyBpbW1lZGlhdGVseSBhZnRlciB0aGUgc2NvcGUgZnVuY3Rpb24gZXhpdHMsIGV2ZW5cbiAgICAgIC8vIGlmIGl0J3MgYW4gYXN5bmMgZnVuY3Rpb24uXG5cbiAgICAgIGlmICghcHJldklzQmF0Y2hpbmdMZWdhY3kgJiYgUmVhY3RDdXJyZW50QWN0UXVldWUuZGlkU2NoZWR1bGVMZWdhY3lVcGRhdGUpIHtcbiAgICAgICAgdmFyIHF1ZXVlID0gUmVhY3RDdXJyZW50QWN0UXVldWUuY3VycmVudDtcblxuICAgICAgICBpZiAocXVldWUgIT09IG51bGwpIHtcbiAgICAgICAgICBSZWFjdEN1cnJlbnRBY3RRdWV1ZS5kaWRTY2hlZHVsZUxlZ2FjeVVwZGF0ZSA9IGZhbHNlO1xuICAgICAgICAgIGZsdXNoQWN0UXVldWUocXVldWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHBvcEFjdFNjb3BlKHByZXZBY3RTY29wZURlcHRoKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBSZWFjdEN1cnJlbnRBY3RRdWV1ZS5pc0JhdGNoaW5nTGVnYWN5ID0gcHJldklzQmF0Y2hpbmdMZWdhY3k7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdCAhPT0gbnVsbCAmJiB0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgcmVzdWx0LnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHZhciB0aGVuYWJsZVJlc3VsdCA9IHJlc3VsdDsgLy8gVGhlIGNhbGxiYWNrIGlzIGFuIGFzeW5jIGZ1bmN0aW9uIChpLmUuIHJldHVybmVkIGEgcHJvbWlzZSkuIFdhaXRcbiAgICAgIC8vIGZvciBpdCB0byByZXNvbHZlIGJlZm9yZSBleGl0aW5nIHRoZSBjdXJyZW50IHNjb3BlLlxuXG4gICAgICB2YXIgd2FzQXdhaXRlZCA9IGZhbHNlO1xuICAgICAgdmFyIHRoZW5hYmxlID0ge1xuICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgd2FzQXdhaXRlZCA9IHRydWU7XG4gICAgICAgICAgdGhlbmFibGVSZXN1bHQudGhlbihmdW5jdGlvbiAocmV0dXJuVmFsdWUpIHtcbiAgICAgICAgICAgIHBvcEFjdFNjb3BlKHByZXZBY3RTY29wZURlcHRoKTtcblxuICAgICAgICAgICAgaWYgKGFjdFNjb3BlRGVwdGggPT09IDApIHtcbiAgICAgICAgICAgICAgLy8gV2UndmUgZXhpdGVkIHRoZSBvdXRlcm1vc3QgYWN0IHNjb3BlLiBSZWN1cnNpdmVseSBmbHVzaCB0aGVcbiAgICAgICAgICAgICAgLy8gcXVldWUgdW50aWwgdGhlcmUncyBubyByZW1haW5pbmcgd29yay5cbiAgICAgICAgICAgICAgcmVjdXJzaXZlbHlGbHVzaEFzeW5jQWN0V29yayhyZXR1cm5WYWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUocmV0dXJuVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgLy8gVGhlIGNhbGxiYWNrIHRocmV3IGFuIGVycm9yLlxuICAgICAgICAgICAgcG9wQWN0U2NvcGUocHJldkFjdFNjb3BlRGVwdGgpO1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAge1xuICAgICAgICBpZiAoIWRpZFdhcm5Ob0F3YWl0QWN0ICYmIHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge30pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCF3YXNBd2FpdGVkKSB7XG4gICAgICAgICAgICAgIGRpZFdhcm5Ob0F3YWl0QWN0ID0gdHJ1ZTtcblxuICAgICAgICAgICAgICBlcnJvcignWW91IGNhbGxlZCBhY3QoYXN5bmMgKCkgPT4gLi4uKSB3aXRob3V0IGF3YWl0LiAnICsgJ1RoaXMgY291bGQgbGVhZCB0byB1bmV4cGVjdGVkIHRlc3RpbmcgYmVoYXZpb3VyLCAnICsgJ2ludGVybGVhdmluZyBtdWx0aXBsZSBhY3QgY2FsbHMgYW5kIG1peGluZyB0aGVpciAnICsgJ3Njb3Blcy4gJyArICdZb3Ugc2hvdWxkIC0gYXdhaXQgYWN0KGFzeW5jICgpID0+IC4uLik7Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoZW5hYmxlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcmV0dXJuVmFsdWUgPSByZXN1bHQ7IC8vIFRoZSBjYWxsYmFjayBpcyBub3QgYW4gYXN5bmMgZnVuY3Rpb24uIEV4aXQgdGhlIGN1cnJlbnQgc2NvcGVcbiAgICAgIC8vIGltbWVkaWF0ZWx5LCB3aXRob3V0IGF3YWl0aW5nLlxuXG4gICAgICBwb3BBY3RTY29wZShwcmV2QWN0U2NvcGVEZXB0aCk7XG5cbiAgICAgIGlmIChhY3RTY29wZURlcHRoID09PSAwKSB7XG4gICAgICAgIC8vIEV4aXRpbmcgdGhlIG91dGVybW9zdCBhY3Qgc2NvcGUuIEZsdXNoIHRoZSBxdWV1ZS5cbiAgICAgICAgdmFyIF9xdWV1ZSA9IFJlYWN0Q3VycmVudEFjdFF1ZXVlLmN1cnJlbnQ7XG5cbiAgICAgICAgaWYgKF9xdWV1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGZsdXNoQWN0UXVldWUoX3F1ZXVlKTtcbiAgICAgICAgICBSZWFjdEN1cnJlbnRBY3RRdWV1ZS5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgfSAvLyBSZXR1cm4gYSB0aGVuYWJsZS4gSWYgdGhlIHVzZXIgYXdhaXRzIGl0LCB3ZSdsbCBmbHVzaCBhZ2FpbiBpblxuICAgICAgICAvLyBjYXNlIGFkZGl0aW9uYWwgd29yayB3YXMgc2NoZWR1bGVkIGJ5IGEgbWljcm90YXNrLlxuXG5cbiAgICAgICAgdmFyIF90aGVuYWJsZSA9IHtcbiAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAvLyBDb25maXJtIHdlIGhhdmVuJ3QgcmUtZW50ZXJlZCBhbm90aGVyIGBhY3RgIHNjb3BlLCBpbiBjYXNlXG4gICAgICAgICAgICAvLyB0aGUgdXNlciBkb2VzIHNvbWV0aGluZyB3ZWlyZCBsaWtlIGF3YWl0IHRoZSB0aGVuYWJsZVxuICAgICAgICAgICAgLy8gbXVsdGlwbGUgdGltZXMuXG4gICAgICAgICAgICBpZiAoUmVhY3RDdXJyZW50QWN0UXVldWUuY3VycmVudCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAvLyBSZWN1cnNpdmVseSBmbHVzaCB0aGUgcXVldWUgdW50aWwgdGhlcmUncyBubyByZW1haW5pbmcgd29yay5cbiAgICAgICAgICAgICAgUmVhY3RDdXJyZW50QWN0UXVldWUuY3VycmVudCA9IFtdO1xuICAgICAgICAgICAgICByZWN1cnNpdmVseUZsdXNoQXN5bmNBY3RXb3JrKHJldHVyblZhbHVlLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShyZXR1cm5WYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gX3RoZW5hYmxlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2luY2Ugd2UncmUgaW5zaWRlIGEgbmVzdGVkIGBhY3RgIHNjb3BlLCB0aGUgcmV0dXJuZWQgdGhlbmFibGVcbiAgICAgICAgLy8gaW1tZWRpYXRlbHkgcmVzb2x2ZXMuIFRoZSBvdXRlciBzY29wZSB3aWxsIGZsdXNoIHRoZSBxdWV1ZS5cbiAgICAgICAgdmFyIF90aGVuYWJsZTIgPSB7XG4gICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXR1cm5WYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gX3RoZW5hYmxlMjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9wQWN0U2NvcGUocHJldkFjdFNjb3BlRGVwdGgpIHtcbiAge1xuICAgIGlmIChwcmV2QWN0U2NvcGVEZXB0aCAhPT0gYWN0U2NvcGVEZXB0aCAtIDEpIHtcbiAgICAgIGVycm9yKCdZb3Ugc2VlbSB0byBoYXZlIG92ZXJsYXBwaW5nIGFjdCgpIGNhbGxzLCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQuICcgKyAnQmUgc3VyZSB0byBhd2FpdCBwcmV2aW91cyBhY3QoKSBjYWxscyBiZWZvcmUgbWFraW5nIGEgbmV3IG9uZS4gJyk7XG4gICAgfVxuXG4gICAgYWN0U2NvcGVEZXB0aCA9IHByZXZBY3RTY29wZURlcHRoO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlY3Vyc2l2ZWx5Rmx1c2hBc3luY0FjdFdvcmsocmV0dXJuVmFsdWUsIHJlc29sdmUsIHJlamVjdCkge1xuICB7XG4gICAgdmFyIHF1ZXVlID0gUmVhY3RDdXJyZW50QWN0UXVldWUuY3VycmVudDtcblxuICAgIGlmIChxdWV1ZSAhPT0gbnVsbCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZmx1c2hBY3RRdWV1ZShxdWV1ZSk7XG4gICAgICAgIGVucXVldWVUYXNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAocXVldWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAvLyBObyBhZGRpdGlvbmFsIHdvcmsgd2FzIHNjaGVkdWxlZC4gRmluaXNoLlxuICAgICAgICAgICAgUmVhY3RDdXJyZW50QWN0UXVldWUuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICByZXNvbHZlKHJldHVyblZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gS2VlcCBmbHVzaGluZyB3b3JrIHVudGlsIHRoZXJlJ3Mgbm9uZSBsZWZ0LlxuICAgICAgICAgICAgcmVjdXJzaXZlbHlGbHVzaEFzeW5jQWN0V29yayhyZXR1cm5WYWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZShyZXR1cm5WYWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbnZhciBpc0ZsdXNoaW5nID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGZsdXNoQWN0UXVldWUocXVldWUpIHtcbiAge1xuICAgIGlmICghaXNGbHVzaGluZykge1xuICAgICAgLy8gUHJldmVudCByZS1lbnRyYW5jZS5cbiAgICAgIGlzRmx1c2hpbmcgPSB0cnVlO1xuICAgICAgdmFyIGkgPSAwO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGNhbGxiYWNrID0gcXVldWVbaV07XG5cbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrKHRydWUpO1xuICAgICAgICAgIH0gd2hpbGUgKGNhbGxiYWNrICE9PSBudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHF1ZXVlLmxlbmd0aCA9IDA7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBJZiBzb21ldGhpbmcgdGhyb3dzLCBsZWF2ZSB0aGUgcmVtYWluaW5nIGNhbGxiYWNrcyBvbiB0aGUgcXVldWUuXG4gICAgICAgIHF1ZXVlID0gcXVldWUuc2xpY2UoaSArIDEpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlzRmx1c2hpbmcgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxudmFyIGNyZWF0ZUVsZW1lbnQkMSA9ICBjcmVhdGVFbGVtZW50V2l0aFZhbGlkYXRpb24gO1xudmFyIGNsb25lRWxlbWVudCQxID0gIGNsb25lRWxlbWVudFdpdGhWYWxpZGF0aW9uIDtcbnZhciBjcmVhdGVGYWN0b3J5ID0gIGNyZWF0ZUZhY3RvcnlXaXRoVmFsaWRhdGlvbiA7XG52YXIgQ2hpbGRyZW4gPSB7XG4gIG1hcDogbWFwQ2hpbGRyZW4sXG4gIGZvckVhY2g6IGZvckVhY2hDaGlsZHJlbixcbiAgY291bnQ6IGNvdW50Q2hpbGRyZW4sXG4gIHRvQXJyYXk6IHRvQXJyYXksXG4gIG9ubHk6IG9ubHlDaGlsZFxufTtcblxuZXhwb3J0cy5DaGlsZHJlbiA9IENoaWxkcmVuO1xuZXhwb3J0cy5Db21wb25lbnQgPSBDb21wb25lbnQ7XG5leHBvcnRzLkZyYWdtZW50ID0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbmV4cG9ydHMuUHJvZmlsZXIgPSBSRUFDVF9QUk9GSUxFUl9UWVBFO1xuZXhwb3J0cy5QdXJlQ29tcG9uZW50ID0gUHVyZUNvbXBvbmVudDtcbmV4cG9ydHMuU3RyaWN0TW9kZSA9IFJFQUNUX1NUUklDVF9NT0RFX1RZUEU7XG5leHBvcnRzLlN1c3BlbnNlID0gUkVBQ1RfU1VTUEVOU0VfVFlQRTtcbmV4cG9ydHMuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQgPSBSZWFjdFNoYXJlZEludGVybmFscztcbmV4cG9ydHMuY2xvbmVFbGVtZW50ID0gY2xvbmVFbGVtZW50JDE7XG5leHBvcnRzLmNyZWF0ZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0O1xuZXhwb3J0cy5jcmVhdGVFbGVtZW50ID0gY3JlYXRlRWxlbWVudCQxO1xuZXhwb3J0cy5jcmVhdGVGYWN0b3J5ID0gY3JlYXRlRmFjdG9yeTtcbmV4cG9ydHMuY3JlYXRlUmVmID0gY3JlYXRlUmVmO1xuZXhwb3J0cy5mb3J3YXJkUmVmID0gZm9yd2FyZFJlZjtcbmV4cG9ydHMuaXNWYWxpZEVsZW1lbnQgPSBpc1ZhbGlkRWxlbWVudDtcbmV4cG9ydHMubGF6eSA9IGxhenk7XG5leHBvcnRzLm1lbW8gPSBtZW1vO1xuZXhwb3J0cy5zdGFydFRyYW5zaXRpb24gPSBzdGFydFRyYW5zaXRpb247XG5leHBvcnRzLnVuc3RhYmxlX2FjdCA9IGFjdDtcbmV4cG9ydHMudXNlQ2FsbGJhY2sgPSB1c2VDYWxsYmFjaztcbmV4cG9ydHMudXNlQ29udGV4dCA9IHVzZUNvbnRleHQ7XG5leHBvcnRzLnVzZURlYnVnVmFsdWUgPSB1c2VEZWJ1Z1ZhbHVlO1xuZXhwb3J0cy51c2VEZWZlcnJlZFZhbHVlID0gdXNlRGVmZXJyZWRWYWx1ZTtcbmV4cG9ydHMudXNlRWZmZWN0ID0gdXNlRWZmZWN0O1xuZXhwb3J0cy51c2VJZCA9IHVzZUlkO1xuZXhwb3J0cy51c2VJbXBlcmF0aXZlSGFuZGxlID0gdXNlSW1wZXJhdGl2ZUhhbmRsZTtcbmV4cG9ydHMudXNlSW5zZXJ0aW9uRWZmZWN0ID0gdXNlSW5zZXJ0aW9uRWZmZWN0O1xuZXhwb3J0cy51c2VMYXlvdXRFZmZlY3QgPSB1c2VMYXlvdXRFZmZlY3Q7XG5leHBvcnRzLnVzZU1lbW8gPSB1c2VNZW1vO1xuZXhwb3J0cy51c2VSZWR1Y2VyID0gdXNlUmVkdWNlcjtcbmV4cG9ydHMudXNlUmVmID0gdXNlUmVmO1xuZXhwb3J0cy51c2VTdGF0ZSA9IHVzZVN0YXRlO1xuZXhwb3J0cy51c2VTeW5jRXh0ZXJuYWxTdG9yZSA9IHVzZVN5bmNFeHRlcm5hbFN0b3JlO1xuZXhwb3J0cy51c2VUcmFuc2l0aW9uID0gdXNlVHJhbnNpdGlvbjtcbmV4cG9ydHMudmVyc2lvbiA9IFJlYWN0VmVyc2lvbjtcbiAgICAgICAgICAvKiBnbG9iYWwgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICovXG5pZiAoXG4gIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gIT09ICd1bmRlZmluZWQnICYmXG4gIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18ucmVnaXN0ZXJJbnRlcm5hbE1vZHVsZVN0b3AgPT09XG4gICAgJ2Z1bmN0aW9uJ1xuKSB7XG4gIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5yZWdpc3RlckludGVybmFsTW9kdWxlU3RvcChuZXcgRXJyb3IoKSk7XG59XG4gICAgICAgIFxuICB9KSgpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNoYWxsb3dFcXVhbChvYmpBLCBvYmpCLCBjb21wYXJlLCBjb21wYXJlQ29udGV4dCkge1xuICB2YXIgcmV0ID0gY29tcGFyZSA/IGNvbXBhcmUuY2FsbChjb21wYXJlQ29udGV4dCwgb2JqQSwgb2JqQikgOiB2b2lkIDA7XG5cbiAgaWYgKHJldCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuICEhcmV0O1xuICB9XG5cbiAgaWYgKG9iakEgPT09IG9iakIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqQSAhPT0gXCJvYmplY3RcIiB8fCAhb2JqQSB8fCB0eXBlb2Ygb2JqQiAhPT0gXCJvYmplY3RcIiB8fCAhb2JqQikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpO1xuICB2YXIga2V5c0IgPSBPYmplY3Qua2V5cyhvYmpCKTtcblxuICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgYkhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5iaW5kKG9iakIpO1xuXG4gIC8vIFRlc3QgZm9yIEEncyBrZXlzIGRpZmZlcmVudCBmcm9tIEIuXG4gIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IGtleXNBLmxlbmd0aDsgaWR4KyspIHtcbiAgICB2YXIga2V5ID0ga2V5c0FbaWR4XTtcblxuICAgIGlmICghYkhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWVBID0gb2JqQVtrZXldO1xuICAgIHZhciB2YWx1ZUIgPSBvYmpCW2tleV07XG5cbiAgICByZXQgPSBjb21wYXJlID8gY29tcGFyZS5jYWxsKGNvbXBhcmVDb250ZXh0LCB2YWx1ZUEsIHZhbHVlQiwga2V5KSA6IHZvaWQgMDtcblxuICAgIGlmIChyZXQgPT09IGZhbHNlIHx8IChyZXQgPT09IHZvaWQgMCAmJiB2YWx1ZUEgIT09IHZhbHVlQikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2VbMl0hLi9kM3Y0cHAuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2VbMl0hLi9kM3Y0cHAuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB1cGRhdGVyO1xufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG4gIGNzcyArPSBvYmouY3NzO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9XG5cbiAgLy8gRm9yIG9sZCBJRVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKCkge30sXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgfTtcbiAgfVxuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiaW1wb3J0e19fc3ByZWFkQXJyYXkgYXMgZSxfX2Fzc2lnbiBhcyB0fWZyb21cInRzbGliXCI7aW1wb3J0IG4gZnJvbVwiQGVtb3Rpb24vaXMtcHJvcC12YWxpZFwiO2ltcG9ydCBvLHt1c2VSZWYgYXMgcix1c2VTdGF0ZSBhcyBzLHVzZU1lbW8gYXMgaSx1c2VFZmZlY3QgYXMgYSx1c2VDb250ZXh0IGFzIGMsdXNlRGVidWdWYWx1ZSBhcyBsLGNyZWF0ZUVsZW1lbnQgYXMgdX1mcm9tXCJyZWFjdFwiO2ltcG9ydCBwIGZyb21cInNoYWxsb3dlcXVhbFwiO2ltcG9ydCphcyBkIGZyb21cInN0eWxpc1wiO2ltcG9ydCBoIGZyb21cIkBlbW90aW9uL3VuaXRsZXNzXCI7dmFyIGY9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJnZvaWQgMCE9PXByb2Nlc3MuZW52JiYocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0FUVFJ8fHByb2Nlc3MuZW52LlNDX0FUVFIpfHxcImRhdGEtc3R5bGVkXCIsbT1cIjYuMC43XCIseT1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZcIkhUTUxFbGVtZW50XCJpbiB3aW5kb3csdj1Cb29sZWFuKFwiYm9vbGVhblwiPT10eXBlb2YgU0NfRElTQUJMRV9TUEVFRFk/U0NfRElTQUJMRV9TUEVFRFk6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJnZvaWQgMCE9PXByb2Nlc3MuZW52JiZ2b2lkIDAhPT1wcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFkmJlwiXCIhPT1wcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFk/XCJmYWxzZVwiIT09cHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0RJU0FCTEVfU1BFRURZJiZwcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFk6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJnZvaWQgMCE9PXByb2Nlc3MuZW52JiZ2b2lkIDAhPT1wcm9jZXNzLmVudi5TQ19ESVNBQkxFX1NQRUVEWSYmXCJcIiE9PXByb2Nlc3MuZW52LlNDX0RJU0FCTEVfU1BFRURZP1wiZmFsc2VcIiE9PXByb2Nlc3MuZW52LlNDX0RJU0FCTEVfU1BFRURZJiZwcm9jZXNzLmVudi5TQ19ESVNBQkxFX1NQRUVEWTpcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WKSxnPXt9LFM9L2ludmFsaWQgaG9vayBjYWxsL2ksdz1uZXcgU2V0LGI9ZnVuY3Rpb24odCxuKXtpZihcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WKXt2YXIgbz1uPycgd2l0aCB0aGUgaWQgb2YgXCInLmNvbmNhdChuLCdcIicpOlwiXCIscz1cIlRoZSBjb21wb25lbnQgXCIuY29uY2F0KHQpLmNvbmNhdChvLFwiIGhhcyBiZWVuIGNyZWF0ZWQgZHluYW1pY2FsbHkuXFxuXCIpK1wiWW91IG1heSBzZWUgdGhpcyB3YXJuaW5nIGJlY2F1c2UgeW91J3ZlIGNhbGxlZCBzdHlsZWQgaW5zaWRlIGFub3RoZXIgY29tcG9uZW50LlxcblRvIHJlc29sdmUgdGhpcyBvbmx5IGNyZWF0ZSBuZXcgU3R5bGVkQ29tcG9uZW50cyBvdXRzaWRlIG9mIGFueSByZW5kZXIgbWV0aG9kIGFuZCBmdW5jdGlvbiBjb21wb25lbnQuXCIsaT1jb25zb2xlLmVycm9yO3RyeXt2YXIgYT0hMDtjb25zb2xlLmVycm9yPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1bXSxvPTE7bzxhcmd1bWVudHMubGVuZ3RoO28rKyluW28tMV09YXJndW1lbnRzW29dO1MudGVzdCh0KT8oYT0hMSx3LmRlbGV0ZShzKSk6aS5hcHBseSh2b2lkIDAsZShbdF0sbiwhMSkpfSxyKCksYSYmIXcuaGFzKHMpJiYoY29uc29sZS53YXJuKHMpLHcuYWRkKHMpKX1jYXRjaChlKXtTLnRlc3QoZS5tZXNzYWdlKSYmdy5kZWxldGUocyl9ZmluYWxseXtjb25zb2xlLmVycm9yPWl9fX0sRT1PYmplY3QuZnJlZXplKFtdKSxOPU9iamVjdC5mcmVlemUoe30pO2Z1bmN0aW9uIFAoZSx0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj1OKSxlLnRoZW1lIT09bi50aGVtZSYmZS50aGVtZXx8dHx8bi50aGVtZX12YXIgXz1uZXcgU2V0KFtcImFcIixcImFiYnJcIixcImFkZHJlc3NcIixcImFyZWFcIixcImFydGljbGVcIixcImFzaWRlXCIsXCJhdWRpb1wiLFwiYlwiLFwiYmFzZVwiLFwiYmRpXCIsXCJiZG9cIixcImJpZ1wiLFwiYmxvY2txdW90ZVwiLFwiYm9keVwiLFwiYnJcIixcImJ1dHRvblwiLFwiY2FudmFzXCIsXCJjYXB0aW9uXCIsXCJjaXRlXCIsXCJjb2RlXCIsXCJjb2xcIixcImNvbGdyb3VwXCIsXCJkYXRhXCIsXCJkYXRhbGlzdFwiLFwiZGRcIixcImRlbFwiLFwiZGV0YWlsc1wiLFwiZGZuXCIsXCJkaWFsb2dcIixcImRpdlwiLFwiZGxcIixcImR0XCIsXCJlbVwiLFwiZW1iZWRcIixcImZpZWxkc2V0XCIsXCJmaWdjYXB0aW9uXCIsXCJmaWd1cmVcIixcImZvb3RlclwiLFwiZm9ybVwiLFwiaDFcIixcImgyXCIsXCJoM1wiLFwiaDRcIixcImg1XCIsXCJoNlwiLFwiaGVhZFwiLFwiaGVhZGVyXCIsXCJoZ3JvdXBcIixcImhyXCIsXCJodG1sXCIsXCJpXCIsXCJpZnJhbWVcIixcImltZ1wiLFwiaW5wdXRcIixcImluc1wiLFwia2JkXCIsXCJrZXlnZW5cIixcImxhYmVsXCIsXCJsZWdlbmRcIixcImxpXCIsXCJsaW5rXCIsXCJtYWluXCIsXCJtYXBcIixcIm1hcmtcIixcIm1lbnVcIixcIm1lbnVpdGVtXCIsXCJtZXRhXCIsXCJtZXRlclwiLFwibmF2XCIsXCJub3NjcmlwdFwiLFwib2JqZWN0XCIsXCJvbFwiLFwib3B0Z3JvdXBcIixcIm9wdGlvblwiLFwib3V0cHV0XCIsXCJwXCIsXCJwYXJhbVwiLFwicGljdHVyZVwiLFwicHJlXCIsXCJwcm9ncmVzc1wiLFwicVwiLFwicnBcIixcInJ0XCIsXCJydWJ5XCIsXCJzXCIsXCJzYW1wXCIsXCJzY3JpcHRcIixcInNlY3Rpb25cIixcInNlbGVjdFwiLFwic21hbGxcIixcInNvdXJjZVwiLFwic3BhblwiLFwic3Ryb25nXCIsXCJzdHlsZVwiLFwic3ViXCIsXCJzdW1tYXJ5XCIsXCJzdXBcIixcInRhYmxlXCIsXCJ0Ym9keVwiLFwidGRcIixcInRleHRhcmVhXCIsXCJ0Zm9vdFwiLFwidGhcIixcInRoZWFkXCIsXCJ0aW1lXCIsXCJ0aXRsZVwiLFwidHJcIixcInRyYWNrXCIsXCJ1XCIsXCJ1bFwiLFwidXNlXCIsXCJ2YXJcIixcInZpZGVvXCIsXCJ3YnJcIixcImNpcmNsZVwiLFwiY2xpcFBhdGhcIixcImRlZnNcIixcImVsbGlwc2VcIixcImZvcmVpZ25PYmplY3RcIixcImdcIixcImltYWdlXCIsXCJsaW5lXCIsXCJsaW5lYXJHcmFkaWVudFwiLFwibWFya2VyXCIsXCJtYXNrXCIsXCJwYXRoXCIsXCJwYXR0ZXJuXCIsXCJwb2x5Z29uXCIsXCJwb2x5bGluZVwiLFwicmFkaWFsR3JhZGllbnRcIixcInJlY3RcIixcInN0b3BcIixcInN2Z1wiLFwidGV4dFwiLFwidHNwYW5cIl0pLEM9L1shXCIjJCUmJygpKissLi86Ozw9Pj9AW1xcXFxcXF1eYHt8fX4tXSsvZyxJPS8oXi18LSQpL2c7ZnVuY3Rpb24gQShlKXtyZXR1cm4gZS5yZXBsYWNlKEMsXCItXCIpLnJlcGxhY2UoSSxcIlwiKX12YXIgTz0vKGEpKGQpL2dpLEQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZSsoZT4yNT8zOTo5NykpfTtmdW5jdGlvbiBSKGUpe3ZhciB0LG49XCJcIjtmb3IodD1NYXRoLmFicyhlKTt0PjUyO3Q9dC81MnwwKW49RCh0JTUyKStuO3JldHVybihEKHQlNTIpK24pLnJlcGxhY2UoTyxcIiQxLSQyXCIpfXZhciBULGs9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dC5sZW5ndGg7bjspZT0zMyplXnQuY2hhckNvZGVBdCgtLW4pO3JldHVybiBlfSxqPWZ1bmN0aW9uKGUpe3JldHVybiBrKDUzODEsZSl9O2Z1bmN0aW9uIHgoZSl7cmV0dXJuIFIoaihlKT4+PjApfWZ1bmN0aW9uIFYoZSl7cmV0dXJuXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmXCJzdHJpbmdcIj09dHlwZW9mIGUmJmV8fGUuZGlzcGxheU5hbWV8fGUubmFtZXx8XCJDb21wb25lbnRcIn1mdW5jdGlvbiBNKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiYoXCJwcm9kdWN0aW9uXCI9PT1wcm9jZXNzLmVudi5OT0RFX0VOVnx8ZS5jaGFyQXQoMCk9PT1lLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpKX12YXIgRj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsJD1GP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LHo9Rj9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIsQj17Y2hpbGRDb250ZXh0VHlwZXM6ITAsY29udGV4dFR5cGU6ITAsY29udGV4dFR5cGVzOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxnZXREZWZhdWx0UHJvcHM6ITAsZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yOiEwLGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczohMCxtaXhpbnM6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LEw9e25hbWU6ITAsbGVuZ3RoOiEwLHByb3RvdHlwZTohMCxjYWxsZXI6ITAsY2FsbGVlOiEwLGFyZ3VtZW50czohMCxhcml0eTohMH0sRz17JCR0eXBlb2Y6ITAsY29tcGFyZTohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LFk9KChUPXt9KVt6XT17JCR0eXBlb2Y6ITAscmVuZGVyOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxwcm9wVHlwZXM6ITB9LFRbJF09RyxUKTtmdW5jdGlvbiBXKGUpe3JldHVybihcInR5cGVcImluKHQ9ZSkmJnQudHlwZS4kJHR5cGVvZik9PT0kP0c6XCIkJHR5cGVvZlwiaW4gZT9ZW2UuJCR0eXBlb2ZdOkI7dmFyIHR9dmFyIHE9T2JqZWN0LmRlZmluZVByb3BlcnR5LEg9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMsVT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLEo9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixYPU9iamVjdC5nZXRQcm90b3R5cGVPZixaPU9iamVjdC5wcm90b3R5cGU7ZnVuY3Rpb24gSyhlLHQsbil7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQpe2lmKFope3ZhciBvPVgodCk7byYmbyE9PVomJksoZSxvLG4pfXZhciByPUgodCk7VSYmKHI9ci5jb25jYXQoVSh0KSkpO2Zvcih2YXIgcz1XKGUpLGk9Vyh0KSxhPTA7YTxyLmxlbmd0aDsrK2Epe3ZhciBjPXJbYV07aWYoIShjIGluIEx8fG4mJm5bY118fGkmJmMgaW4gaXx8cyYmYyBpbiBzKSl7dmFyIGw9Sih0LGMpO3RyeXtxKGUsYyxsKX1jYXRjaChlKXt9fX19cmV0dXJuIGV9ZnVuY3Rpb24gUShlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlfWZ1bmN0aW9uIGVlKGUpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZcInN0eWxlZENvbXBvbmVudElkXCJpbiBlfWZ1bmN0aW9uIHRlKGUsdCl7cmV0dXJuIGUmJnQ/XCJcIi5jb25jYXQoZSxcIiBcIikuY29uY2F0KHQpOmV8fHR8fFwiXCJ9ZnVuY3Rpb24gbmUoZSx0KXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuXCJcIjtmb3IodmFyIG49ZVswXSxvPTE7bzxlLmxlbmd0aDtvKyspbis9dD90K2Vbb106ZVtvXTtyZXR1cm4gbn1mdW5jdGlvbiBvZShlKXtyZXR1cm4gbnVsbCE9PWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yLm5hbWU9PT1PYmplY3QubmFtZSYmIShcInByb3BzXCJpbiBlJiZlLiQkdHlwZW9mKX1mdW5jdGlvbiByZShlLHQsbil7aWYodm9pZCAwPT09biYmKG49ITEpLCFuJiYhb2UoZSkmJiFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspZVtvXT1yZShlW29dLHRbb10pO2Vsc2UgaWYob2UodCkpZm9yKHZhciBvIGluIHQpZVtvXT1yZShlW29dLHRbb10pO3JldHVybiBlfWZ1bmN0aW9uIHNlKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJ0b1N0cmluZ1wiLHt2YWx1ZTp0fSl9dmFyIGllPVwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlY/ezE6XCJDYW5ub3QgY3JlYXRlIHN0eWxlZC1jb21wb25lbnQgZm9yIGNvbXBvbmVudDogJXMuXFxuXFxuXCIsMjpcIkNhbid0IGNvbGxlY3Qgc3R5bGVzIG9uY2UgeW91J3ZlIGNvbnN1bWVkIGEgYFNlcnZlclN0eWxlU2hlZXRgJ3Mgc3R5bGVzISBgU2VydmVyU3R5bGVTaGVldGAgaXMgYSBvbmUgb2ZmIGluc3RhbmNlIGZvciBlYWNoIHNlcnZlci1zaWRlIHJlbmRlciBjeWNsZS5cXG5cXG4tIEFyZSB5b3UgdHJ5aW5nIHRvIHJldXNlIGl0IGFjcm9zcyByZW5kZXJzP1xcbi0gQXJlIHlvdSBhY2NpZGVudGFsbHkgY2FsbGluZyBjb2xsZWN0U3R5bGVzIHR3aWNlP1xcblxcblwiLDM6XCJTdHJlYW1pbmcgU1NSIGlzIG9ubHkgc3VwcG9ydGVkIGluIGEgTm9kZS5qcyBlbnZpcm9ubWVudDsgUGxlYXNlIGRvIG5vdCB0cnkgdG8gY2FsbCB0aGlzIG1ldGhvZCBpbiB0aGUgYnJvd3Nlci5cXG5cXG5cIiw0OlwiVGhlIGBTdHlsZVNoZWV0TWFuYWdlcmAgZXhwZWN0cyBhIHZhbGlkIHRhcmdldCBvciBzaGVldCBwcm9wIVxcblxcbi0gRG9lcyB0aGlzIGVycm9yIG9jY3VyIG9uIHRoZSBjbGllbnQgYW5kIGlzIHlvdXIgdGFyZ2V0IGZhbHN5P1xcbi0gRG9lcyB0aGlzIGVycm9yIG9jY3VyIG9uIHRoZSBzZXJ2ZXIgYW5kIGlzIHRoZSBzaGVldCBmYWxzeT9cXG5cXG5cIiw1OlwiVGhlIGNsb25lIG1ldGhvZCBjYW5ub3QgYmUgdXNlZCBvbiB0aGUgY2xpZW50IVxcblxcbi0gQXJlIHlvdSBydW5uaW5nIGluIGEgY2xpZW50LWxpa2UgZW52aXJvbm1lbnQgb24gdGhlIHNlcnZlcj9cXG4tIEFyZSB5b3UgdHJ5aW5nIHRvIHJ1biBTU1Igb24gdGhlIGNsaWVudD9cXG5cXG5cIiw2OlwiVHJ5aW5nIHRvIGluc2VydCBhIG5ldyBzdHlsZSB0YWcsIGJ1dCB0aGUgZ2l2ZW4gTm9kZSBpcyB1bm1vdW50ZWQhXFxuXFxuLSBBcmUgeW91IHVzaW5nIGEgY3VzdG9tIHRhcmdldCB0aGF0IGlzbid0IG1vdW50ZWQ/XFxuLSBEb2VzIHlvdXIgZG9jdW1lbnQgbm90IGhhdmUgYSB2YWxpZCBoZWFkIGVsZW1lbnQ/XFxuLSBIYXZlIHlvdSBhY2NpZGVudGFsbHkgcmVtb3ZlZCBhIHN0eWxlIHRhZyBtYW51YWxseT9cXG5cXG5cIiw3OidUaGVtZVByb3ZpZGVyOiBQbGVhc2UgcmV0dXJuIGFuIG9iamVjdCBmcm9tIHlvdXIgXCJ0aGVtZVwiIHByb3AgZnVuY3Rpb24sIGUuZy5cXG5cXG5gYGBqc1xcbnRoZW1lPXsoKSA9PiAoe30pfVxcbmBgYFxcblxcbicsODonVGhlbWVQcm92aWRlcjogUGxlYXNlIG1ha2UgeW91ciBcInRoZW1lXCIgcHJvcCBhbiBvYmplY3QuXFxuXFxuJyw5OlwiTWlzc2luZyBkb2N1bWVudCBgPGhlYWQ+YFxcblxcblwiLDEwOlwiQ2Fubm90IGZpbmQgYSBTdHlsZVNoZWV0IGluc3RhbmNlLiBVc3VhbGx5IHRoaXMgaGFwcGVucyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgY29waWVzIG9mIHN0eWxlZC1jb21wb25lbnRzIGxvYWRlZCBhdCBvbmNlLiBDaGVjayBvdXQgdGhpcyBpc3N1ZSBmb3IgaG93IHRvIHRyb3VibGVzaG9vdCBhbmQgZml4IHRoZSBjb21tb24gY2FzZXMgd2hlcmUgdGhpcyBzaXR1YXRpb24gY2FuIGhhcHBlbjogaHR0cHM6Ly9naXRodWIuY29tL3N0eWxlZC1jb21wb25lbnRzL3N0eWxlZC1jb21wb25lbnRzL2lzc3Vlcy8xOTQxI2lzc3VlY29tbWVudC00MTc4NjIwMjFcXG5cXG5cIiwxMTpcIl9UaGlzIGVycm9yIHdhcyByZXBsYWNlZCB3aXRoIGEgZGV2LXRpbWUgd2FybmluZywgaXQgd2lsbCBiZSBkZWxldGVkIGZvciB2NCBmaW5hbC5fIFtjcmVhdGVHbG9iYWxTdHlsZV0gcmVjZWl2ZWQgY2hpbGRyZW4gd2hpY2ggd2lsbCBub3QgYmUgcmVuZGVyZWQuIFBsZWFzZSB1c2UgdGhlIGNvbXBvbmVudCB3aXRob3V0IHBhc3NpbmcgY2hpbGRyZW4gZWxlbWVudHMuXFxuXFxuXCIsMTI6XCJJdCBzZWVtcyB5b3UgYXJlIGludGVycG9sYXRpbmcgYSBrZXlmcmFtZSBkZWNsYXJhdGlvbiAoJXMpIGludG8gYW4gdW50YWdnZWQgc3RyaW5nLiBUaGlzIHdhcyBzdXBwb3J0ZWQgaW4gc3R5bGVkLWNvbXBvbmVudHMgdjMsIGJ1dCBpcyBub3QgbG9uZ2VyIHN1cHBvcnRlZCBpbiB2NCBhcyBrZXlmcmFtZXMgYXJlIG5vdyBpbmplY3RlZCBvbi1kZW1hbmQuIFBsZWFzZSB3cmFwIHlvdXIgc3RyaW5nIGluIHRoZSBjc3NcXFxcYFxcXFxgIGhlbHBlciB3aGljaCBlbnN1cmVzIHRoZSBzdHlsZXMgYXJlIGluamVjdGVkIGNvcnJlY3RseS4gU2VlIGh0dHBzOi8vd3d3LnN0eWxlZC1jb21wb25lbnRzLmNvbS9kb2NzL2FwaSNjc3NcXG5cXG5cIiwxMzpcIiVzIGlzIG5vdCBhIHN0eWxlZCBjb21wb25lbnQgYW5kIGNhbm5vdCBiZSByZWZlcnJlZCB0byB2aWEgY29tcG9uZW50IHNlbGVjdG9yLiBTZWUgaHR0cHM6Ly93d3cuc3R5bGVkLWNvbXBvbmVudHMuY29tL2RvY3MvYWR2YW5jZWQjcmVmZXJyaW5nLXRvLW90aGVyLWNvbXBvbmVudHMgZm9yIG1vcmUgZGV0YWlscy5cXG5cXG5cIiwxNDonVGhlbWVQcm92aWRlcjogXCJ0aGVtZVwiIHByb3AgaXMgcmVxdWlyZWQuXFxuXFxuJywxNTpcIkEgc3R5bGlzIHBsdWdpbiBoYXMgYmVlbiBzdXBwbGllZCB0aGF0IGlzIG5vdCBuYW1lZC4gV2UgbmVlZCBhIG5hbWUgZm9yIGVhY2ggcGx1Z2luIHRvIGJlIGFibGUgdG8gcHJldmVudCBzdHlsaW5nIGNvbGxpc2lvbnMgYmV0d2VlbiBkaWZmZXJlbnQgc3R5bGlzIGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aGUgc2FtZSBhcHAuIEJlZm9yZSB5b3UgcGFzcyB5b3VyIHBsdWdpbiB0byBgPFN0eWxlU2hlZXRNYW5hZ2VyIHN0eWxpc1BsdWdpbnM9e1tdfT5gLCBwbGVhc2UgbWFrZSBzdXJlIGVhY2ggcGx1Z2luIGlzIHVuaXF1ZWx5LW5hbWVkLCBlLmcuXFxuXFxuYGBganNcXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoaW1wb3J0ZWRQbHVnaW4sICduYW1lJywgeyB2YWx1ZTogJ3NvbWUtdW5pcXVlLW5hbWUnIH0pO1xcbmBgYFxcblxcblwiLDE2OlwiUmVhY2hlZCB0aGUgbGltaXQgb2YgaG93IG1hbnkgc3R5bGVkIGNvbXBvbmVudHMgbWF5IGJlIGNyZWF0ZWQgYXQgZ3JvdXAgJXMuXFxuWW91IG1heSBvbmx5IGNyZWF0ZSB1cCB0byAxLDA3Myw3NDEsODI0IGNvbXBvbmVudHMuIElmIHlvdSdyZSBjcmVhdGluZyBjb21wb25lbnRzIGR5bmFtaWNhbGx5LFxcbmFzIGZvciBpbnN0YW5jZSBpbiB5b3VyIHJlbmRlciBtZXRob2QgdGhlbiB5b3UgbWF5IGJlIHJ1bm5pbmcgaW50byB0aGlzIGxpbWl0YXRpb24uXFxuXFxuXCIsMTc6XCJDU1NTdHlsZVNoZWV0IGNvdWxkIG5vdCBiZSBmb3VuZCBvbiBIVE1MU3R5bGVFbGVtZW50LlxcbkhhcyBzdHlsZWQtY29tcG9uZW50cycgc3R5bGUgdGFnIGJlZW4gdW5tb3VudGVkIG9yIGFsdGVyZWQgYnkgYW5vdGhlciBzY3JpcHQ/XFxuXCIsMTg6XCJUaGVtZVByb3ZpZGVyOiBQbGVhc2UgbWFrZSBzdXJlIHlvdXIgdXNlVGhlbWUgaG9vayBpcyB3aXRoaW4gYSBgPFRoZW1lUHJvdmlkZXI+YFwifTp7fTtmdW5jdGlvbiBhZSgpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtmb3IodmFyIG49ZVswXSxvPVtdLHI9MSxzPWUubGVuZ3RoO3I8cztyKz0xKW8ucHVzaChlW3JdKTtyZXR1cm4gby5mb3JFYWNoKGZ1bmN0aW9uKGUpe249bi5yZXBsYWNlKC8lW2Etel0vLGUpfSksbn1mdW5jdGlvbiBjZSh0KXtmb3IodmFyIG49W10sbz0xO288YXJndW1lbnRzLmxlbmd0aDtvKyspbltvLTFdPWFyZ3VtZW50c1tvXTtyZXR1cm5cInByb2R1Y3Rpb25cIj09PXByb2Nlc3MuZW52Lk5PREVfRU5WP25ldyBFcnJvcihcIkFuIGVycm9yIG9jY3VycmVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3N0eWxlZC1jb21wb25lbnRzL3N0eWxlZC1jb21wb25lbnRzL2Jsb2IvbWFpbi9wYWNrYWdlcy9zdHlsZWQtY29tcG9uZW50cy9zcmMvdXRpbHMvZXJyb3JzLm1kI1wiLmNvbmNhdCh0LFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlwiKS5jb25jYXQobi5sZW5ndGg+MD9cIiBBcmdzOiBcIi5jb25jYXQobi5qb2luKFwiLCBcIikpOlwiXCIpKTpuZXcgRXJyb3IoYWUuYXBwbHkodm9pZCAwLGUoW2llW3RdXSxuLCExKSkudHJpbSgpKX12YXIgbGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuZ3JvdXBTaXplcz1uZXcgVWludDMyQXJyYXkoNTEyKSx0aGlzLmxlbmd0aD01MTIsdGhpcy50YWc9ZX1yZXR1cm4gZS5wcm90b3R5cGUuaW5kZXhPZkdyb3VwPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49MDtuPGU7bisrKXQrPXRoaXMuZ3JvdXBTaXplc1tuXTtyZXR1cm4gdH0sZS5wcm90b3R5cGUuaW5zZXJ0UnVsZXM9ZnVuY3Rpb24oZSx0KXtpZihlPj10aGlzLmdyb3VwU2l6ZXMubGVuZ3RoKXtmb3IodmFyIG49dGhpcy5ncm91cFNpemVzLG89bi5sZW5ndGgscj1vO2U+PXI7KWlmKChyPDw9MSk8MCl0aHJvdyBjZSgxNixcIlwiLmNvbmNhdChlKSk7dGhpcy5ncm91cFNpemVzPW5ldyBVaW50MzJBcnJheShyKSx0aGlzLmdyb3VwU2l6ZXMuc2V0KG4pLHRoaXMubGVuZ3RoPXI7Zm9yKHZhciBzPW87czxyO3MrKyl0aGlzLmdyb3VwU2l6ZXNbc109MH1mb3IodmFyIGk9dGhpcy5pbmRleE9mR3JvdXAoZSsxKSxhPShzPTAsdC5sZW5ndGgpO3M8YTtzKyspdGhpcy50YWcuaW5zZXJ0UnVsZShpLHRbc10pJiYodGhpcy5ncm91cFNpemVzW2VdKyssaSsrKX0sZS5wcm90b3R5cGUuY2xlYXJHcm91cD1mdW5jdGlvbihlKXtpZihlPHRoaXMubGVuZ3RoKXt2YXIgdD10aGlzLmdyb3VwU2l6ZXNbZV0sbj10aGlzLmluZGV4T2ZHcm91cChlKSxvPW4rdDt0aGlzLmdyb3VwU2l6ZXNbZV09MDtmb3IodmFyIHI9bjtyPG87cisrKXRoaXMudGFnLmRlbGV0ZVJ1bGUobil9fSxlLnByb3RvdHlwZS5nZXRHcm91cD1mdW5jdGlvbihlKXt2YXIgdD1cIlwiO2lmKGU+PXRoaXMubGVuZ3RofHwwPT09dGhpcy5ncm91cFNpemVzW2VdKXJldHVybiB0O2Zvcih2YXIgbj10aGlzLmdyb3VwU2l6ZXNbZV0sbz10aGlzLmluZGV4T2ZHcm91cChlKSxyPW8rbixzPW87czxyO3MrKyl0Kz1cIlwiLmNvbmNhdCh0aGlzLnRhZy5nZXRSdWxlKHMpKS5jb25jYXQoXCIvKiFzYyovXFxuXCIpO3JldHVybiB0fSxlfSgpLHVlPW5ldyBNYXAscGU9bmV3IE1hcCxkZT0xLGhlPWZ1bmN0aW9uKGUpe2lmKHVlLmhhcyhlKSlyZXR1cm4gdWUuZ2V0KGUpO2Zvcig7cGUuaGFzKGRlKTspZGUrKzt2YXIgdD1kZSsrO2lmKFwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJigoMHx0KTwwfHx0PjEwNzM3NDE4MjQpKXRocm93IGNlKDE2LFwiXCIuY29uY2F0KHQpKTtyZXR1cm4gdWUuc2V0KGUsdCkscGUuc2V0KHQsZSksdH0sZmU9ZnVuY3Rpb24oZSx0KXt1ZS5zZXQoZSx0KSxwZS5zZXQodCxlKX0sbWU9XCJzdHlsZVtcIi5jb25jYXQoZixcIl1bXCIpLmNvbmNhdChcImRhdGEtc3R5bGVkLXZlcnNpb25cIiwnPVwiJykuY29uY2F0KFwiNi4wLjdcIiwnXCJdJykseWU9bmV3IFJlZ0V4cChcIl5cIi5jb25jYXQoZiwnXFxcXC5nKFxcXFxkKylcXFxcW2lkPVwiKFtcXFxcd1xcXFxkLV0rKVwiXFxcXF0uKj9cIihbXlwiXSopJykpLHZlPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIG8scj1uLnNwbGl0KFwiLFwiKSxzPTAsaT1yLmxlbmd0aDtzPGk7cysrKShvPXJbc10pJiZlLnJlZ2lzdGVyTmFtZSh0LG8pfSxnZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbixvPShudWxsIT09KG49dC50ZXh0Q29udGVudCkmJnZvaWQgMCE9PW4/bjpcIlwiKS5zcGxpdChcIi8qIXNjKi9cXG5cIikscj1bXSxzPTAsaT1vLmxlbmd0aDtzPGk7cysrKXt2YXIgYT1vW3NdLnRyaW0oKTtpZihhKXt2YXIgYz1hLm1hdGNoKHllKTtpZihjKXt2YXIgbD0wfHBhcnNlSW50KGNbMV0sMTApLHU9Y1syXTswIT09bCYmKGZlKHUsbCksdmUoZSx1LGNbM10pLGUuZ2V0VGFnKCkuaW5zZXJ0UnVsZXMobCxyKSksci5sZW5ndGg9MH1lbHNlIHIucHVzaChhKX19fTtmdW5jdGlvbiBTZSgpe3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXz9fX3dlYnBhY2tfbm9uY2VfXzpudWxsfXZhciB3ZT1mdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5oZWFkLG49ZXx8dCxvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKSxyPWZ1bmN0aW9uKGUpe3ZhciB0PUFycmF5LmZyb20oZS5xdWVyeVNlbGVjdG9yQWxsKFwic3R5bGVbXCIuY29uY2F0KGYsXCJdXCIpKSk7cmV0dXJuIHRbdC5sZW5ndGgtMV19KG4pLHM9dm9pZCAwIT09cj9yLm5leHRTaWJsaW5nOm51bGw7by5zZXRBdHRyaWJ1dGUoZixcImFjdGl2ZVwiKSxvLnNldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVkLXZlcnNpb25cIixcIjYuMC43XCIpO3ZhciBpPVNlKCk7cmV0dXJuIGkmJm8uc2V0QXR0cmlidXRlKFwibm9uY2VcIixpKSxuLmluc2VydEJlZm9yZShvLHMpLG99LGJlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmVsZW1lbnQ9d2UoZSksdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpKSx0aGlzLnNoZWV0PWZ1bmN0aW9uKGUpe2lmKGUuc2hlZXQpcmV0dXJuIGUuc2hlZXQ7Zm9yKHZhciB0PWRvY3VtZW50LnN0eWxlU2hlZXRzLG49MCxvPXQubGVuZ3RoO248bztuKyspe3ZhciByPXRbbl07aWYoci5vd25lck5vZGU9PT1lKXJldHVybiByfXRocm93IGNlKDE3KX0odGhpcy5lbGVtZW50KSx0aGlzLmxlbmd0aD0wfXJldHVybiBlLnByb3RvdHlwZS5pbnNlcnRSdWxlPWZ1bmN0aW9uKGUsdCl7dHJ5e3JldHVybiB0aGlzLnNoZWV0Lmluc2VydFJ1bGUodCxlKSx0aGlzLmxlbmd0aCsrLCEwfWNhdGNoKGUpe3JldHVybiExfX0sZS5wcm90b3R5cGUuZGVsZXRlUnVsZT1mdW5jdGlvbihlKXt0aGlzLnNoZWV0LmRlbGV0ZVJ1bGUoZSksdGhpcy5sZW5ndGgtLX0sZS5wcm90b3R5cGUuZ2V0UnVsZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnNoZWV0LmNzc1J1bGVzW2VdO3JldHVybiB0JiZ0LmNzc1RleHQ/dC5jc3NUZXh0OlwiXCJ9LGV9KCksRWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuZWxlbWVudD13ZShlKSx0aGlzLm5vZGVzPXRoaXMuZWxlbWVudC5jaGlsZE5vZGVzLHRoaXMubGVuZ3RoPTB9cmV0dXJuIGUucHJvdG90eXBlLmluc2VydFJ1bGU9ZnVuY3Rpb24oZSx0KXtpZihlPD10aGlzLmxlbmd0aCYmZT49MCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodCk7cmV0dXJuIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUobix0aGlzLm5vZGVzW2VdfHxudWxsKSx0aGlzLmxlbmd0aCsrLCEwfXJldHVybiExfSxlLnByb3RvdHlwZS5kZWxldGVSdWxlPWZ1bmN0aW9uKGUpe3RoaXMuZWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLm5vZGVzW2VdKSx0aGlzLmxlbmd0aC0tfSxlLnByb3RvdHlwZS5nZXRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybiBlPHRoaXMubGVuZ3RoP3RoaXMubm9kZXNbZV0udGV4dENvbnRlbnQ6XCJcIn0sZX0oKSxOZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5ydWxlcz1bXSx0aGlzLmxlbmd0aD0wfXJldHVybiBlLnByb3RvdHlwZS5pbnNlcnRSdWxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8PXRoaXMubGVuZ3RoJiYodGhpcy5ydWxlcy5zcGxpY2UoZSwwLHQpLHRoaXMubGVuZ3RoKyssITApfSxlLnByb3RvdHlwZS5kZWxldGVSdWxlPWZ1bmN0aW9uKGUpe3RoaXMucnVsZXMuc3BsaWNlKGUsMSksdGhpcy5sZW5ndGgtLX0sZS5wcm90b3R5cGUuZ2V0UnVsZT1mdW5jdGlvbihlKXtyZXR1cm4gZTx0aGlzLmxlbmd0aD90aGlzLnJ1bGVzW2VdOlwiXCJ9LGV9KCksUGU9eSxfZT17aXNTZXJ2ZXI6IXksdXNlQ1NTT01JbmplY3Rpb246IXZ9LENlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLG4sbyl7dm9pZCAwPT09ZSYmKGU9Tiksdm9pZCAwPT09biYmKG49e30pO3ZhciByPXRoaXM7dGhpcy5vcHRpb25zPXQodCh7fSxfZSksZSksdGhpcy5ncz1uLHRoaXMubmFtZXM9bmV3IE1hcChvKSx0aGlzLnNlcnZlcj0hIWUuaXNTZXJ2ZXIsIXRoaXMuc2VydmVyJiZ5JiZQZSYmKFBlPSExLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKG1lKSxuPTAsbz10Lmxlbmd0aDtuPG87bisrKXt2YXIgcj10W25dO3ImJlwiYWN0aXZlXCIhPT1yLmdldEF0dHJpYnV0ZShmKSYmKGdlKGUsciksci5wYXJlbnROb2RlJiZyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocikpfX0odGhpcykpLHNlKHRoaXMsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUuZ2V0VGFnKCksbj10Lmxlbmd0aCxvPVwiXCIscj1mdW5jdGlvbihuKXt2YXIgcj1mdW5jdGlvbihlKXtyZXR1cm4gcGUuZ2V0KGUpfShuKTtpZih2b2lkIDA9PT1yKXJldHVyblwiY29udGludWVcIjt2YXIgcz1lLm5hbWVzLmdldChyKSxpPXQuZ2V0R3JvdXAobik7aWYodm9pZCAwPT09c3x8MD09PWkubGVuZ3RoKXJldHVyblwiY29udGludWVcIjt2YXIgYT1cIlwiLmNvbmNhdChmLFwiLmdcIikuY29uY2F0KG4sJ1tpZD1cIicpLmNvbmNhdChyLCdcIl0nKSxjPVwiXCI7dm9pZCAwIT09cyYmcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UubGVuZ3RoPjAmJihjKz1cIlwiLmNvbmNhdChlLFwiLFwiKSl9KSxvKz1cIlwiLmNvbmNhdChpKS5jb25jYXQoYSwne2NvbnRlbnQ6XCInKS5jb25jYXQoYywnXCJ9JykuY29uY2F0KFwiLyohc2MqL1xcblwiKX0scz0wO3M8bjtzKyspcihzKTtyZXR1cm4gb30ocil9KX1yZXR1cm4gZS5yZWdpc3RlcklkPWZ1bmN0aW9uKGUpe3JldHVybiBoZShlKX0sZS5wcm90b3R5cGUucmVjb25zdHJ1Y3RXaXRoT3B0aW9ucz1mdW5jdGlvbihuLG8pe3JldHVybiB2b2lkIDA9PT1vJiYobz0hMCksbmV3IGUodCh0KHt9LHRoaXMub3B0aW9ucyksbiksdGhpcy5ncyxvJiZ0aGlzLm5hbWVzfHx2b2lkIDApfSxlLnByb3RvdHlwZS5hbGxvY2F0ZUdTSW5zdGFuY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZ3NbZV09KHRoaXMuZ3NbZV18fDApKzF9LGUucHJvdG90eXBlLmdldFRhZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRhZ3x8KHRoaXMudGFnPShlPWZ1bmN0aW9uKGUpe3ZhciB0PWUudXNlQ1NTT01JbmplY3Rpb24sbj1lLnRhcmdldDtyZXR1cm4gZS5pc1NlcnZlcj9uZXcgTmUobik6dD9uZXcgYmUobik6bmV3IEVlKG4pfSh0aGlzLm9wdGlvbnMpLG5ldyBsZShlKSkpO3ZhciBlfSxlLnByb3RvdHlwZS5oYXNOYW1lRm9ySWQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5uYW1lcy5oYXMoZSkmJnRoaXMubmFtZXMuZ2V0KGUpLmhhcyh0KX0sZS5wcm90b3R5cGUucmVnaXN0ZXJOYW1lPWZ1bmN0aW9uKGUsdCl7aWYoaGUoZSksdGhpcy5uYW1lcy5oYXMoZSkpdGhpcy5uYW1lcy5nZXQoZSkuYWRkKHQpO2Vsc2V7dmFyIG49bmV3IFNldDtuLmFkZCh0KSx0aGlzLm5hbWVzLnNldChlLG4pfX0sZS5wcm90b3R5cGUuaW5zZXJ0UnVsZXM9ZnVuY3Rpb24oZSx0LG4pe3RoaXMucmVnaXN0ZXJOYW1lKGUsdCksdGhpcy5nZXRUYWcoKS5pbnNlcnRSdWxlcyhoZShlKSxuKX0sZS5wcm90b3R5cGUuY2xlYXJOYW1lcz1mdW5jdGlvbihlKXt0aGlzLm5hbWVzLmhhcyhlKSYmdGhpcy5uYW1lcy5nZXQoZSkuY2xlYXIoKX0sZS5wcm90b3R5cGUuY2xlYXJSdWxlcz1mdW5jdGlvbihlKXt0aGlzLmdldFRhZygpLmNsZWFyR3JvdXAoaGUoZSkpLHRoaXMuY2xlYXJOYW1lcyhlKX0sZS5wcm90b3R5cGUuY2xlYXJUYWc9ZnVuY3Rpb24oKXt0aGlzLnRhZz12b2lkIDB9LGV9KCksSWU9LyYvZyxBZT0vXlxccypcXC9cXC8uKiQvZ207ZnVuY3Rpb24gT2UoZSx0KXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuXCJydWxlXCI9PT1lLnR5cGUmJihlLnZhbHVlPVwiXCIuY29uY2F0KHQsXCIgXCIpLmNvbmNhdChlLnZhbHVlKSxlLnZhbHVlPWUudmFsdWUucmVwbGFjZUFsbChcIixcIixcIixcIi5jb25jYXQodCxcIiBcIikpLGUucHJvcHM9ZS5wcm9wcy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuXCJcIi5jb25jYXQodCxcIiBcIikuY29uY2F0KGUpfSkpLEFycmF5LmlzQXJyYXkoZS5jaGlsZHJlbikmJlwiQGtleWZyYW1lc1wiIT09ZS50eXBlJiYoZS5jaGlsZHJlbj1PZShlLmNoaWxkcmVuLHQpKSxlfSl9ZnVuY3Rpb24gRGUoZSl7dmFyIHQsbixvLHI9dm9pZCAwPT09ZT9OOmUscz1yLm9wdGlvbnMsaT12b2lkIDA9PT1zP046cyxhPXIucGx1Z2lucyxjPXZvaWQgMD09PWE/RTphLGw9ZnVuY3Rpb24oZSxvLHIpe3JldHVybiByPT09bnx8ci5zdGFydHNXaXRoKG4pJiZyLmVuZHNXaXRoKG4pJiZyLnJlcGxhY2VBbGwobixcIlwiKS5sZW5ndGg+MD9cIi5cIi5jb25jYXQodCk6ZX0sdT1jLnNsaWNlKCk7dS5wdXNoKGZ1bmN0aW9uKGUpe2UudHlwZT09PWQuUlVMRVNFVCYmZS52YWx1ZS5pbmNsdWRlcyhcIiZcIikmJihlLnByb3BzWzBdPWUucHJvcHNbMF0ucmVwbGFjZShJZSxuKS5yZXBsYWNlKG8sbCkpfSksaS5wcmVmaXgmJnUucHVzaChkLnByZWZpeGVyKSx1LnB1c2goZC5zdHJpbmdpZnkpO3ZhciBwPWZ1bmN0aW9uKGUscixzLGEpe3ZvaWQgMD09PXImJihyPVwiXCIpLHZvaWQgMD09PXMmJihzPVwiXCIpLHZvaWQgMD09PWEmJihhPVwiJlwiKSx0PWEsbj1yLG89bmV3IFJlZ0V4cChcIlxcXFxcIi5jb25jYXQobixcIlxcXFxiXCIpLFwiZ1wiKTt2YXIgYz1lLnJlcGxhY2UoQWUsXCJcIiksbD1kLmNvbXBpbGUoc3x8cj9cIlwiLmNvbmNhdChzLFwiIFwiKS5jb25jYXQocixcIiB7IFwiKS5jb25jYXQoYyxcIiB9XCIpOmMpO2kubmFtZXNwYWNlJiYobD1PZShsLGkubmFtZXNwYWNlKSk7dmFyIHA9W107cmV0dXJuIGQuc2VyaWFsaXplKGwsZC5taWRkbGV3YXJlKHUuY29uY2F0KGQucnVsZXNoZWV0KGZ1bmN0aW9uKGUpe3JldHVybiBwLnB1c2goZSl9KSkpKSxwfTtyZXR1cm4gcC5oYXNoPWMubGVuZ3RoP2MucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQubmFtZXx8Y2UoMTUpLGsoZSx0Lm5hbWUpfSw1MzgxKS50b1N0cmluZygpOlwiXCIscH12YXIgUmU9bmV3IENlLFRlPURlKCksa2U9by5jcmVhdGVDb250ZXh0KHtzaG91bGRGb3J3YXJkUHJvcDp2b2lkIDAsc3R5bGVTaGVldDpSZSxzdHlsaXM6VGV9KSxqZT1rZS5Db25zdW1lcix4ZT1vLmNyZWF0ZUNvbnRleHQodm9pZCAwKTtmdW5jdGlvbiBWZSgpe3JldHVybiBjKGtlKX1mdW5jdGlvbiBNZShlKXt2YXIgdD1zKGUuc3R5bGlzUGx1Z2lucyksbj10WzBdLHI9dFsxXSxjPVZlKCkuc3R5bGVTaGVldCxsPWkoZnVuY3Rpb24oKXt2YXIgdD1jO3JldHVybiBlLnNoZWV0P3Q9ZS5zaGVldDplLnRhcmdldCYmKHQ9dC5yZWNvbnN0cnVjdFdpdGhPcHRpb25zKHt0YXJnZXQ6ZS50YXJnZXR9LCExKSksZS5kaXNhYmxlQ1NTT01JbmplY3Rpb24mJih0PXQucmVjb25zdHJ1Y3RXaXRoT3B0aW9ucyh7dXNlQ1NTT01JbmplY3Rpb246ITF9KSksdH0sW2UuZGlzYWJsZUNTU09NSW5qZWN0aW9uLGUuc2hlZXQsZS50YXJnZXQsY10pLHU9aShmdW5jdGlvbigpe3JldHVybiBEZSh7b3B0aW9uczp7bmFtZXNwYWNlOmUubmFtZXNwYWNlLHByZWZpeDplLmVuYWJsZVZlbmRvclByZWZpeGVzfSxwbHVnaW5zOm59KX0sW2UuZW5hYmxlVmVuZG9yUHJlZml4ZXMsZS5uYW1lc3BhY2Usbl0pO3JldHVybiBhKGZ1bmN0aW9uKCl7cChuLGUuc3R5bGlzUGx1Z2lucyl8fHIoZS5zdHlsaXNQbHVnaW5zKX0sW2Uuc3R5bGlzUGx1Z2luc10pLG8uY3JlYXRlRWxlbWVudChrZS5Qcm92aWRlcix7dmFsdWU6e3Nob3VsZEZvcndhcmRQcm9wOmUuc2hvdWxkRm9yd2FyZFByb3Asc3R5bGVTaGVldDpsLHN0eWxpczp1fX0sby5jcmVhdGVFbGVtZW50KHhlLlByb3ZpZGVyLHt2YWx1ZTp1fSxlLmNoaWxkcmVuKSl9dmFyIEZlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3ZhciBuPXRoaXM7dGhpcy5pbmplY3Q9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD1UZSk7dmFyIG89bi5uYW1lK3QuaGFzaDtlLmhhc05hbWVGb3JJZChuLmlkLG8pfHxlLmluc2VydFJ1bGVzKG4uaWQsbyx0KG4ucnVsZXMsbyxcIkBrZXlmcmFtZXNcIikpfSx0aGlzLm5hbWU9ZSx0aGlzLmlkPVwic2Mta2V5ZnJhbWVzLVwiLmNvbmNhdChlKSx0aGlzLnJ1bGVzPXQsc2UodGhpcyxmdW5jdGlvbigpe3Rocm93IGNlKDEyLFN0cmluZyhuLm5hbWUpKX0pfXJldHVybiBlLnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1UZSksdGhpcy5uYW1lK2UuaGFzaH0sZX0oKSwkZT1mdW5jdGlvbihlKXtyZXR1cm4gZT49XCJBXCImJmU8PVwiWlwifTtmdW5jdGlvbiB6ZShlKXtmb3IodmFyIHQ9XCJcIixuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBvPWVbbl07aWYoMT09PW4mJlwiLVwiPT09byYmXCItXCI9PT1lWzBdKXJldHVybiBlOyRlKG8pP3QrPVwiLVwiK28udG9Mb3dlckNhc2UoKTp0Kz1vfXJldHVybiB0LnN0YXJ0c1dpdGgoXCJtcy1cIik/XCItXCIrdDp0fXZhciBCZT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZXx8ITE9PT1lfHxcIlwiPT09ZX0sTGU9ZnVuY3Rpb24odCl7dmFyIG4sbyxyPVtdO2Zvcih2YXIgcyBpbiB0KXt2YXIgaT10W3NdO3QuaGFzT3duUHJvcGVydHkocykmJiFCZShpKSYmKEFycmF5LmlzQXJyYXkoaSkmJmkuaXNDc3N8fFEoaSk/ci5wdXNoKFwiXCIuY29uY2F0KHplKHMpLFwiOlwiKSxpLFwiO1wiKTpvZShpKT9yLnB1c2guYXBwbHkocixlKGUoW1wiXCIuY29uY2F0KHMsXCIge1wiKV0sTGUoaSksITEpLFtcIn1cIl0sITEpKTpyLnB1c2goXCJcIi5jb25jYXQoemUocyksXCI6IFwiKS5jb25jYXQoKG49cyxudWxsPT0obz1pKXx8XCJib29sZWFuXCI9PXR5cGVvZiBvfHxcIlwiPT09bz9cIlwiOlwibnVtYmVyXCIhPXR5cGVvZiBvfHwwPT09b3x8biBpbiBofHxuLnN0YXJ0c1dpdGgoXCItLVwiKT9TdHJpbmcobykudHJpbSgpOlwiXCIuY29uY2F0KG8sXCJweFwiKSksXCI7XCIpKSl9cmV0dXJuIHJ9O2Z1bmN0aW9uIEdlKGUsdCxuLG8pe2lmKEJlKGUpKXJldHVybltdO2lmKGVlKGUpKXJldHVybltcIi5cIi5jb25jYXQoZS5zdHlsZWRDb21wb25lbnRJZCldO2lmKFEoZSkpe2lmKCFRKHM9ZSl8fHMucHJvdG90eXBlJiZzLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50fHwhdClyZXR1cm5bZV07dmFyIHI9ZSh0KTtyZXR1cm5cInByb2R1Y3Rpb25cIj09PXByb2Nlc3MuZW52Lk5PREVfRU5WfHxcIm9iamVjdFwiIT10eXBlb2Ygcnx8QXJyYXkuaXNBcnJheShyKXx8ciBpbnN0YW5jZW9mIEZlfHxvZShyKXx8bnVsbD09PXJ8fGNvbnNvbGUuZXJyb3IoXCJcIi5jb25jYXQoVihlKSxcIiBpcyBub3QgYSBzdHlsZWQgY29tcG9uZW50IGFuZCBjYW5ub3QgYmUgcmVmZXJyZWQgdG8gdmlhIGNvbXBvbmVudCBzZWxlY3Rvci4gU2VlIGh0dHBzOi8vd3d3LnN0eWxlZC1jb21wb25lbnRzLmNvbS9kb2NzL2FkdmFuY2VkI3JlZmVycmluZy10by1vdGhlci1jb21wb25lbnRzIGZvciBtb3JlIGRldGFpbHMuXCIpKSxHZShyLHQsbixvKX12YXIgcztyZXR1cm4gZSBpbnN0YW5jZW9mIEZlP24/KGUuaW5qZWN0KG4sbyksW2UuZ2V0TmFtZShvKV0pOltlXTpvZShlKT9MZShlKTpBcnJheS5pc0FycmF5KGUpP0FycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoRSxlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gR2UoZSx0LG4sbyl9KSk6W2UudG9TdHJpbmcoKV19ZnVuY3Rpb24gWWUoZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kz0xKXt2YXIgbj1lW3RdO2lmKFEobikmJiFlZShuKSlyZXR1cm4hMX1yZXR1cm4hMH12YXIgV2U9aihcIjYuMC43XCIpLHFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbil7dGhpcy5ydWxlcz1lLHRoaXMuc3RhdGljUnVsZXNJZD1cIlwiLHRoaXMuaXNTdGF0aWM9XCJwcm9kdWN0aW9uXCI9PT1wcm9jZXNzLmVudi5OT0RFX0VOViYmKHZvaWQgMD09PW58fG4uaXNTdGF0aWMpJiZZZShlKSx0aGlzLmNvbXBvbmVudElkPXQsdGhpcy5iYXNlSGFzaD1rKFdlLHQpLHRoaXMuYmFzZVN0eWxlPW4sQ2UucmVnaXN0ZXJJZCh0KX1yZXR1cm4gZS5wcm90b3R5cGUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPXRoaXMuYmFzZVN0eWxlP3RoaXMuYmFzZVN0eWxlLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzKGUsdCxuKTpcIlwiO2lmKHRoaXMuaXNTdGF0aWMmJiFuLmhhc2gpaWYodGhpcy5zdGF0aWNSdWxlc0lkJiZ0Lmhhc05hbWVGb3JJZCh0aGlzLmNvbXBvbmVudElkLHRoaXMuc3RhdGljUnVsZXNJZCkpbz10ZShvLHRoaXMuc3RhdGljUnVsZXNJZCk7ZWxzZXt2YXIgcj1uZShHZSh0aGlzLnJ1bGVzLGUsdCxuKSkscz1SKGsodGhpcy5iYXNlSGFzaCxyKT4+PjApO2lmKCF0Lmhhc05hbWVGb3JJZCh0aGlzLmNvbXBvbmVudElkLHMpKXt2YXIgaT1uKHIsXCIuXCIuY29uY2F0KHMpLHZvaWQgMCx0aGlzLmNvbXBvbmVudElkKTt0Lmluc2VydFJ1bGVzKHRoaXMuY29tcG9uZW50SWQscyxpKX1vPXRlKG8scyksdGhpcy5zdGF0aWNSdWxlc0lkPXN9ZWxzZXtmb3IodmFyIGE9ayh0aGlzLmJhc2VIYXNoLG4uaGFzaCksYz1cIlwiLGw9MDtsPHRoaXMucnVsZXMubGVuZ3RoO2wrKyl7dmFyIHU9dGhpcy5ydWxlc1tsXTtpZihcInN0cmluZ1wiPT10eXBlb2YgdSljKz11LFwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJihhPWsoYSx1KSk7ZWxzZSBpZih1KXt2YXIgcD1uZShHZSh1LGUsdCxuKSk7YT1rKGEscCksYys9cH19aWYoYyl7dmFyIGQ9UihhPj4+MCk7dC5oYXNOYW1lRm9ySWQodGhpcy5jb21wb25lbnRJZCxkKXx8dC5pbnNlcnRSdWxlcyh0aGlzLmNvbXBvbmVudElkLGQsbihjLFwiLlwiLmNvbmNhdChkKSx2b2lkIDAsdGhpcy5jb21wb25lbnRJZCkpLG89dGUobyxkKX19cmV0dXJuIG99LGV9KCksSGU9by5jcmVhdGVDb250ZXh0KHZvaWQgMCksVWU9SGUuQ29uc3VtZXI7ZnVuY3Rpb24gSmUoKXt2YXIgZT1jKEhlKTtpZighZSl0aHJvdyBjZSgxOCk7cmV0dXJuIGV9ZnVuY3Rpb24gWGUoZSl7dmFyIG49by51c2VDb250ZXh0KEhlKSxyPWkoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtpZighZSl0aHJvdyBjZSgxNCk7aWYoUShlKSl7dmFyIG89ZShuKTtpZihcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYobnVsbD09PW98fEFycmF5LmlzQXJyYXkobyl8fFwib2JqZWN0XCIhPXR5cGVvZiBvKSl0aHJvdyBjZSg3KTtyZXR1cm4gb31pZihBcnJheS5pc0FycmF5KGUpfHxcIm9iamVjdFwiIT10eXBlb2YgZSl0aHJvdyBjZSg4KTtyZXR1cm4gbj90KHQoe30sbiksZSk6ZX0oZS50aGVtZSxuKX0sW2UudGhlbWUsbl0pO3JldHVybiBlLmNoaWxkcmVuP28uY3JlYXRlRWxlbWVudChIZS5Qcm92aWRlcix7dmFsdWU6cn0sZS5jaGlsZHJlbik6bnVsbH12YXIgWmU9e30sS2U9bmV3IFNldDtmdW5jdGlvbiBRZShlLHIscyl7dmFyIGk9ZWUoZSksYT1lLGM9IU0oZSkscD1yLmF0dHJzLGQ9dm9pZCAwPT09cD9FOnAsaD1yLmNvbXBvbmVudElkLGY9dm9pZCAwPT09aD9mdW5jdGlvbihlLHQpe3ZhciBuPVwic3RyaW5nXCIhPXR5cGVvZiBlP1wic2NcIjpBKGUpO1plW25dPShaZVtuXXx8MCkrMTt2YXIgbz1cIlwiLmNvbmNhdChuLFwiLVwiKS5jb25jYXQoeChcIjYuMC43XCIrbitaZVtuXSkpO3JldHVybiB0P1wiXCIuY29uY2F0KHQsXCItXCIpLmNvbmNhdChvKTpvfShyLmRpc3BsYXlOYW1lLHIucGFyZW50Q29tcG9uZW50SWQpOmgsbT1yLmRpc3BsYXlOYW1lLHk9dm9pZCAwPT09bT9mdW5jdGlvbihlKXtyZXR1cm4gTShlKT9cInN0eWxlZC5cIi5jb25jYXQoZSk6XCJTdHlsZWQoXCIuY29uY2F0KFYoZSksXCIpXCIpfShlKTptLHY9ci5kaXNwbGF5TmFtZSYmci5jb21wb25lbnRJZD9cIlwiLmNvbmNhdChBKHIuZGlzcGxheU5hbWUpLFwiLVwiKS5jb25jYXQoci5jb21wb25lbnRJZCk6ci5jb21wb25lbnRJZHx8ZixnPWkmJmEuYXR0cnM/YS5hdHRycy5jb25jYXQoZCkuZmlsdGVyKEJvb2xlYW4pOmQsUz1yLnNob3VsZEZvcndhcmRQcm9wO2lmKGkmJmEuc2hvdWxkRm9yd2FyZFByb3Ape3ZhciB3PWEuc2hvdWxkRm9yd2FyZFByb3A7aWYoci5zaG91bGRGb3J3YXJkUHJvcCl7dmFyIEM9ci5zaG91bGRGb3J3YXJkUHJvcDtTPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHcoZSx0KSYmQyhlLHQpfX1lbHNlIFM9d312YXIgST1uZXcgcWUocyx2LGk/YS5jb21wb25lbnRTdHlsZTp2b2lkIDApO2Z1bmN0aW9uIE8oZSxyKXtyZXR1cm4gZnVuY3Rpb24oZSxyLHMpe3ZhciBpPWUuYXR0cnMsYT1lLmNvbXBvbmVudFN0eWxlLGM9ZS5kZWZhdWx0UHJvcHMscD1lLmZvbGRlZENvbXBvbmVudElkcyxkPWUuc3R5bGVkQ29tcG9uZW50SWQsaD1lLnRhcmdldCxmPW8udXNlQ29udGV4dChIZSksbT1WZSgpLHk9ZS5zaG91bGRGb3J3YXJkUHJvcHx8bS5zaG91bGRGb3J3YXJkUHJvcDtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZsKGQpO3ZhciB2PWZ1bmN0aW9uKGUsbixvKXtmb3IodmFyIHIscz10KHQoe30sbikse2NsYXNzTmFtZTp2b2lkIDAsdGhlbWU6b30pLGk9MDtpPGUubGVuZ3RoO2krPTEpe3ZhciBhPVEocj1lW2ldKT9yKHMpOnI7Zm9yKHZhciBjIGluIGEpc1tjXT1cImNsYXNzTmFtZVwiPT09Yz90ZShzW2NdLGFbY10pOlwic3R5bGVcIj09PWM/dCh0KHt9LHNbY10pLGFbY10pOmFbY119cmV0dXJuIG4uY2xhc3NOYW1lJiYocy5jbGFzc05hbWU9dGUocy5jbGFzc05hbWUsbi5jbGFzc05hbWUpKSxzfShpLHIsUChyLGYsYyl8fE4pLGc9di5hc3x8aCxTPXt9O2Zvcih2YXIgdyBpbiB2KXZvaWQgMD09PXZbd118fFwiJFwiPT09d1swXXx8XCJhc1wiPT09d3x8XCJ0aGVtZVwiPT09d3x8KFwiZm9yd2FyZGVkQXNcIj09PXc/Uy5hcz12LmZvcndhcmRlZEFzOnkmJiF5KHcsZyl8fChTW3ddPXZbd10seXx8XCJkZXZlbG9wbWVudFwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlZ8fG4odyl8fEtlLmhhcyh3KXx8IV8uaGFzKGcpfHwoS2UuYWRkKHcpLGNvbnNvbGUud2Fybignc3R5bGVkLWNvbXBvbmVudHM6IGl0IGxvb2tzIGxpa2UgYW4gdW5rbm93biBwcm9wIFwiJy5jb25jYXQodywnXCIgaXMgYmVpbmcgc2VudCB0aHJvdWdoIHRvIHRoZSBET00sIHdoaWNoIHdpbGwgbGlrZWx5IHRyaWdnZXIgYSBSZWFjdCBjb25zb2xlIGVycm9yLiBJZiB5b3Ugd291bGQgbGlrZSBhdXRvbWF0aWMgZmlsdGVyaW5nIG9mIHVua25vd24gcHJvcHMsIHlvdSBjYW4gb3B0LWludG8gdGhhdCBiZWhhdmlvciB2aWEgYDxTdHlsZVNoZWV0TWFuYWdlciBzaG91bGRGb3J3YXJkUHJvcD17Li4ufT5gIChjb25uZWN0IGFuIEFQSSBsaWtlIGBAZW1vdGlvbi9pcy1wcm9wLXZhbGlkYCkgb3IgY29uc2lkZXIgdXNpbmcgdHJhbnNpZW50IHByb3BzIChgJGAgcHJlZml4IGZvciBhdXRvbWF0aWMgZmlsdGVyaW5nLiknKSkpKSk7dmFyIGI9ZnVuY3Rpb24oZSx0KXt2YXIgbj1WZSgpLG89ZS5nZW5lcmF0ZUFuZEluamVjdFN0eWxlcyh0LG4uc3R5bGVTaGVldCxuLnN0eWxpcyk7cmV0dXJuXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmbChvKSxvfShhLHYpO1wicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJmUud2FyblRvb01hbnlDbGFzc2VzJiZlLndhcm5Ub29NYW55Q2xhc3NlcyhiKTt2YXIgRT10ZShwLGQpO3JldHVybiBiJiYoRSs9XCIgXCIrYiksdi5jbGFzc05hbWUmJihFKz1cIiBcIit2LmNsYXNzTmFtZSksU1tNKGcpJiYhXy5oYXMoZyk/XCJjbGFzc1wiOlwiY2xhc3NOYW1lXCJdPUUsUy5yZWY9cyx1KGcsUyl9KEQsZSxyKX1cInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYoTy5kaXNwbGF5TmFtZT15KTt2YXIgRD1vLmZvcndhcmRSZWYoTyk7cmV0dXJuIEQuYXR0cnM9ZyxELmNvbXBvbmVudFN0eWxlPUksRC5zaG91bGRGb3J3YXJkUHJvcD1TLFwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJihELmRpc3BsYXlOYW1lPXkpLEQuZm9sZGVkQ29tcG9uZW50SWRzPWk/dGUoYS5mb2xkZWRDb21wb25lbnRJZHMsYS5zdHlsZWRDb21wb25lbnRJZCk6XCJcIixELnN0eWxlZENvbXBvbmVudElkPXYsRC50YXJnZXQ9aT9hLnRhcmdldDplLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELFwiZGVmYXVsdFByb3BzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb2xkZWREZWZhdWx0UHJvcHN9LHNldDpmdW5jdGlvbihlKXt0aGlzLl9mb2xkZWREZWZhdWx0UHJvcHM9aT9mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTtmb3IodmFyIG89MCxyPXQ7bzxyLmxlbmd0aDtvKyspcmUoZSxyW29dLCEwKTtyZXR1cm4gZX0oe30sYS5kZWZhdWx0UHJvcHMsZSk6ZX19KSxcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYoYih5LHYpLEQud2FyblRvb01hbnlDbGFzc2VzPWZ1bmN0aW9uKGUsdCl7dmFyIG49e30sbz0hMTtyZXR1cm4gZnVuY3Rpb24ocil7aWYoIW8mJihuW3JdPSEwLE9iamVjdC5rZXlzKG4pLmxlbmd0aD49MjAwKSl7dmFyIHM9dD8nIHdpdGggdGhlIGlkIG9mIFwiJy5jb25jYXQodCwnXCInKTpcIlwiO2NvbnNvbGUud2FybihcIk92ZXIgXCIuY29uY2F0KDIwMCxcIiBjbGFzc2VzIHdlcmUgZ2VuZXJhdGVkIGZvciBjb21wb25lbnQgXCIpLmNvbmNhdChlKS5jb25jYXQocyxcIi5cXG5cIikrXCJDb25zaWRlciB1c2luZyB0aGUgYXR0cnMgbWV0aG9kLCB0b2dldGhlciB3aXRoIGEgc3R5bGUgb2JqZWN0IGZvciBmcmVxdWVudGx5IGNoYW5nZWQgc3R5bGVzLlxcbkV4YW1wbGU6XFxuICBjb25zdCBDb21wb25lbnQgPSBzdHlsZWQuZGl2LmF0dHJzKHByb3BzID0+ICh7XFxuICAgIHN0eWxlOiB7XFxuICAgICAgYmFja2dyb3VuZDogcHJvcHMuYmFja2dyb3VuZCxcXG4gICAgfSxcXG4gIH0pKWB3aWR0aDogMTAwJTtgXFxuXFxuICA8Q29tcG9uZW50IC8+XCIpLG89ITAsbj17fX19fSh5LHYpKSxzZShELGZ1bmN0aW9uKCl7cmV0dXJuXCIuXCIuY29uY2F0KEQuc3R5bGVkQ29tcG9uZW50SWQpfSksYyYmSyhELGUse2F0dHJzOiEwLGNvbXBvbmVudFN0eWxlOiEwLGRpc3BsYXlOYW1lOiEwLGZvbGRlZENvbXBvbmVudElkczohMCxzaG91bGRGb3J3YXJkUHJvcDohMCxzdHlsZWRDb21wb25lbnRJZDohMCx0YXJnZXQ6ITB9KSxEfWZ1bmN0aW9uIGV0KGUsdCl7Zm9yKHZhciBuPVtlWzBdXSxvPTAscj10Lmxlbmd0aDtvPHI7bys9MSluLnB1c2godFtvXSxlW28rMV0pO3JldHVybiBufXZhciB0dD1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihlLHtpc0NzczohMH0pfTtmdW5jdGlvbiBudCh0KXtmb3IodmFyIG49W10sbz0xO288YXJndW1lbnRzLmxlbmd0aDtvKyspbltvLTFdPWFyZ3VtZW50c1tvXTtpZihRKHQpfHxvZSh0KSl7dmFyIHI9dDtyZXR1cm4gdHQoR2UoZXQoRSxlKFtyXSxuLCEwKSkpKX12YXIgcz10O3JldHVybiAwPT09bi5sZW5ndGgmJjE9PT1zLmxlbmd0aCYmXCJzdHJpbmdcIj09dHlwZW9mIHNbMF0/R2Uocyk6dHQoR2UoZXQocyxuKSkpfWZ1bmN0aW9uIG90KG4sbyxyKXtpZih2b2lkIDA9PT1yJiYocj1OKSwhbyl0aHJvdyBjZSgxLG8pO3ZhciBzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgcz1bXSxpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKylzW2ktMV09YXJndW1lbnRzW2ldO3JldHVybiBuKG8scixudC5hcHBseSh2b2lkIDAsZShbdF0scywhMSkpKX07cmV0dXJuIHMuYXR0cnM9ZnVuY3Rpb24oZSl7cmV0dXJuIG90KG4sbyx0KHQoe30scikse2F0dHJzOkFycmF5LnByb3RvdHlwZS5jb25jYXQoci5hdHRycyxlKS5maWx0ZXIoQm9vbGVhbil9KSl9LHMud2l0aENvbmZpZz1mdW5jdGlvbihlKXtyZXR1cm4gb3QobixvLHQodCh7fSxyKSxlKSl9LHN9dmFyIHJ0PWZ1bmN0aW9uKGUpe3JldHVybiBvdChRZSxlKX0sc3Q9cnQ7Xy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3N0W2VdPXJ0KGUpfSk7dmFyIGl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMucnVsZXM9ZSx0aGlzLmNvbXBvbmVudElkPXQsdGhpcy5pc1N0YXRpYz1ZZShlKSxDZS5yZWdpc3RlcklkKHRoaXMuY29tcG9uZW50SWQrMSl9cmV0dXJuIGUucHJvdG90eXBlLmNyZWF0ZVN0eWxlcz1mdW5jdGlvbihlLHQsbixvKXt2YXIgcj1vKG5lKEdlKHRoaXMucnVsZXMsdCxuLG8pKSxcIlwiKSxzPXRoaXMuY29tcG9uZW50SWQrZTtuLmluc2VydFJ1bGVzKHMscyxyKX0sZS5wcm90b3R5cGUucmVtb3ZlU3R5bGVzPWZ1bmN0aW9uKGUsdCl7dC5jbGVhclJ1bGVzKHRoaXMuY29tcG9uZW50SWQrZSl9LGUucHJvdG90eXBlLnJlbmRlclN0eWxlcz1mdW5jdGlvbihlLHQsbixvKXtlPjImJkNlLnJlZ2lzdGVySWQodGhpcy5jb21wb25lbnRJZCtlKSx0aGlzLnJlbW92ZVN0eWxlcyhlLG4pLHRoaXMuY3JlYXRlU3R5bGVzKGUsdCxuLG8pfSxlfSgpO2Z1bmN0aW9uIGF0KG4pe2Zvcih2YXIgcj1bXSxzPTE7czxhcmd1bWVudHMubGVuZ3RoO3MrKylyW3MtMV09YXJndW1lbnRzW3NdO3ZhciBpPW50LmFwcGx5KHZvaWQgMCxlKFtuXSxyLCExKSksYT1cInNjLWdsb2JhbC1cIi5jb25jYXQoeChKU09OLnN0cmluZ2lmeShpKSkpLGM9bmV3IGl0KGksYSk7XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmYihhKTt2YXIgbD1mdW5jdGlvbihlKXt2YXIgdD1WZSgpLG49by51c2VDb250ZXh0KEhlKSxyPW8udXNlUmVmKHQuc3R5bGVTaGVldC5hbGxvY2F0ZUdTSW5zdGFuY2UoYSkpLmN1cnJlbnQ7cmV0dXJuXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmby5DaGlsZHJlbi5jb3VudChlLmNoaWxkcmVuKSYmY29uc29sZS53YXJuKFwiVGhlIGdsb2JhbCBzdHlsZSBjb21wb25lbnQgXCIuY29uY2F0KGEsXCIgd2FzIGdpdmVuIGNoaWxkIEpTWC4gY3JlYXRlR2xvYmFsU3R5bGUgZG9lcyBub3QgcmVuZGVyIGNoaWxkcmVuLlwiKSksXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmaS5zb21lKGZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiYtMSE9PWUuaW5kZXhPZihcIkBpbXBvcnRcIil9KSYmY29uc29sZS53YXJuKFwiUGxlYXNlIGRvIG5vdCB1c2UgQGltcG9ydCBDU1Mgc3ludGF4IGluIGNyZWF0ZUdsb2JhbFN0eWxlIGF0IHRoaXMgdGltZSwgYXMgdGhlIENTU09NIEFQSXMgd2UgdXNlIGluIHByb2R1Y3Rpb24gZG8gbm90IGhhbmRsZSBpdCB3ZWxsLiBJbnN0ZWFkLCB3ZSByZWNvbW1lbmQgdXNpbmcgYSBsaWJyYXJ5IHN1Y2ggYXMgcmVhY3QtaGVsbWV0IHRvIGluamVjdCBhIHR5cGljYWwgPGxpbms+IG1ldGEgdGFnIHRvIHRoZSBzdHlsZXNoZWV0LCBvciBzaW1wbHkgZW1iZWRkaW5nIGl0IG1hbnVhbGx5IGluIHlvdXIgaW5kZXguaHRtbCA8aGVhZD4gc2VjdGlvbiBmb3IgYSBzaW1wbGVyIGFwcC5cIiksdC5zdHlsZVNoZWV0LnNlcnZlciYmdShyLGUsdC5zdHlsZVNoZWV0LG4sdC5zdHlsaXMpLG8udXNlTGF5b3V0RWZmZWN0KGZ1bmN0aW9uKCl7aWYoIXQuc3R5bGVTaGVldC5zZXJ2ZXIpcmV0dXJuIHUocixlLHQuc3R5bGVTaGVldCxuLHQuc3R5bGlzKSxmdW5jdGlvbigpe3JldHVybiBjLnJlbW92ZVN0eWxlcyhyLHQuc3R5bGVTaGVldCl9fSxbcixlLHQuc3R5bGVTaGVldCxuLHQuc3R5bGlzXSksbnVsbH07ZnVuY3Rpb24gdShlLG4sbyxyLHMpe2lmKGMuaXNTdGF0aWMpYy5yZW5kZXJTdHlsZXMoZSxnLG8scyk7ZWxzZXt2YXIgaT10KHQoe30sbikse3RoZW1lOlAobixyLGwuZGVmYXVsdFByb3BzKX0pO2MucmVuZGVyU3R5bGVzKGUsaSxvLHMpfX1yZXR1cm4gby5tZW1vKGwpfWZ1bmN0aW9uIGN0KHQpe2Zvcih2YXIgbj1bXSxvPTE7bzxhcmd1bWVudHMubGVuZ3RoO28rKyluW28tMV09YXJndW1lbnRzW29dO1wicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBuYXZpZ2F0b3ImJlwiUmVhY3ROYXRpdmVcIj09PW5hdmlnYXRvci5wcm9kdWN0JiZjb25zb2xlLndhcm4oXCJga2V5ZnJhbWVzYCBjYW5ub3QgYmUgdXNlZCBvbiBSZWFjdE5hdGl2ZSwgb25seSBvbiB0aGUgd2ViLiBUbyBkbyBhbmltYXRpb24gaW4gUmVhY3ROYXRpdmUgcGxlYXNlIHVzZSBBbmltYXRlZC5cIik7dmFyIHI9bmUobnQuYXBwbHkodm9pZCAwLGUoW3RdLG4sITEpKSkscz14KHIpO3JldHVybiBuZXcgRmUocyxyKX1mdW5jdGlvbiBsdChlKXt2YXIgbj1vLmZvcndhcmRSZWYoZnVuY3Rpb24obixyKXt2YXIgcz1QKG4sby51c2VDb250ZXh0KEhlKSxlLmRlZmF1bHRQcm9wcyk7cmV0dXJuXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmdm9pZCAwPT09cyYmY29uc29sZS53YXJuKCdbd2l0aFRoZW1lXSBZb3UgYXJlIG5vdCB1c2luZyBhIFRoZW1lUHJvdmlkZXIgbm9yIHBhc3NpbmcgYSB0aGVtZSBwcm9wIG9yIGEgdGhlbWUgaW4gZGVmYXVsdFByb3BzIGluIGNvbXBvbmVudCBjbGFzcyBcIicuY29uY2F0KFYoZSksJ1wiJykpLG8uY3JlYXRlRWxlbWVudChlLHQoe30sbix7dGhlbWU6cyxyZWY6cn0pKX0pO3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJihuLmRpc3BsYXlOYW1lPVwiV2l0aFRoZW1lKFwiLmNvbmNhdChWKGUpLFwiKVwiKSksSyhuLGUpfXZhciB1dD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt2YXIgZT10aGlzO3RoaXMuX2VtaXRTaGVldENTUz1mdW5jdGlvbigpe3ZhciB0PWUuaW5zdGFuY2UudG9TdHJpbmcoKSxuPVNlKCksbz1uZShbbiYmJ25vbmNlPVwiJy5jb25jYXQobiwnXCInKSxcIlwiLmNvbmNhdChmLCc9XCJ0cnVlXCInKSxcIlwiLmNvbmNhdChcImRhdGEtc3R5bGVkLXZlcnNpb25cIiwnPVwiJykuY29uY2F0KFwiNi4wLjdcIiwnXCInKV0uZmlsdGVyKEJvb2xlYW4pLFwiIFwiKTtyZXR1cm5cIjxzdHlsZSBcIi5jb25jYXQobyxcIj5cIikuY29uY2F0KHQsXCI8L3N0eWxlPlwiKX0sdGhpcy5nZXRTdHlsZVRhZ3M9ZnVuY3Rpb24oKXtpZihlLnNlYWxlZCl0aHJvdyBjZSgyKTtyZXR1cm4gZS5fZW1pdFNoZWV0Q1NTKCl9LHRoaXMuZ2V0U3R5bGVFbGVtZW50PWZ1bmN0aW9uKCl7dmFyIG47aWYoZS5zZWFsZWQpdGhyb3cgY2UoMik7dmFyIHI9KChuPXt9KVtmXT1cIlwiLG5bXCJkYXRhLXN0eWxlZC12ZXJzaW9uXCJdPVwiNi4wLjdcIixuLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXtfX2h0bWw6ZS5pbnN0YW5jZS50b1N0cmluZygpfSxuKSxzPVNlKCk7cmV0dXJuIHMmJihyLm5vbmNlPXMpLFtvLmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLHQoe30scix7a2V5Olwic2MtMC0wXCJ9KSldfSx0aGlzLnNlYWw9ZnVuY3Rpb24oKXtlLnNlYWxlZD0hMH0sdGhpcy5pbnN0YW5jZT1uZXcgQ2Uoe2lzU2VydmVyOiEwfSksdGhpcy5zZWFsZWQ9ITF9cmV0dXJuIGUucHJvdG90eXBlLmNvbGxlY3RTdHlsZXM9ZnVuY3Rpb24oZSl7aWYodGhpcy5zZWFsZWQpdGhyb3cgY2UoMik7cmV0dXJuIG8uY3JlYXRlRWxlbWVudChNZSx7c2hlZXQ6dGhpcy5pbnN0YW5jZX0sZSl9LGUucHJvdG90eXBlLmludGVybGVhdmVXaXRoTm9kZVN0cmVhbT1mdW5jdGlvbihlKXt0aHJvdyBjZSgzKX0sZX0oKSxwdD17U3R5bGVTaGVldDpDZSxtYWluU2hlZXQ6UmV9O1wicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBuYXZpZ2F0b3ImJlwiUmVhY3ROYXRpdmVcIj09PW5hdmlnYXRvci5wcm9kdWN0JiZjb25zb2xlLndhcm4oXCJJdCBsb29rcyBsaWtlIHlvdSd2ZSBpbXBvcnRlZCAnc3R5bGVkLWNvbXBvbmVudHMnIG9uIFJlYWN0IE5hdGl2ZS5cXG5QZXJoYXBzIHlvdSdyZSBsb29raW5nIHRvIGltcG9ydCAnc3R5bGVkLWNvbXBvbmVudHMvbmF0aXZlJz9cXG5SZWFkIG1vcmUgYWJvdXQgdGhpcyBhdCBodHRwczovL3d3dy5zdHlsZWQtY29tcG9uZW50cy5jb20vZG9jcy9iYXNpY3MjcmVhY3QtbmF0aXZlXCIpO3ZhciBkdD1cIl9fc2MtXCIuY29uY2F0KGYsXCJfX1wiKTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZcInRlc3RcIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiYod2luZG93W2R0XXx8KHdpbmRvd1tkdF09MCksMT09PXdpbmRvd1tkdF0mJmNvbnNvbGUud2FybihcIkl0IGxvb2tzIGxpa2UgdGhlcmUgYXJlIHNldmVyYWwgaW5zdGFuY2VzIG9mICdzdHlsZWQtY29tcG9uZW50cycgaW5pdGlhbGl6ZWQgaW4gdGhpcyBhcHBsaWNhdGlvbi4gVGhpcyBtYXkgY2F1c2UgZHluYW1pYyBzdHlsZXMgdG8gbm90IHJlbmRlciBwcm9wZXJseSwgZXJyb3JzIGR1cmluZyB0aGUgcmVoeWRyYXRpb24gcHJvY2VzcywgYSBtaXNzaW5nIHRoZW1lIHByb3AsIGFuZCBtYWtlcyB5b3VyIGFwcGxpY2F0aW9uIGJpZ2dlciB3aXRob3V0IGdvb2QgcmVhc29uLlxcblxcblNlZSBodHRwczovL3MtYy5zaC8yQkFYemVkIGZvciBtb3JlIGluZm8uXCIpLHdpbmRvd1tkdF0rPTEpO2V4cG9ydHt1dCBhcyBTZXJ2ZXJTdHlsZVNoZWV0LGplIGFzIFN0eWxlU2hlZXRDb25zdW1lcixrZSBhcyBTdHlsZVNoZWV0Q29udGV4dCxNZSBhcyBTdHlsZVNoZWV0TWFuYWdlcixVZSBhcyBUaGVtZUNvbnN1bWVyLEhlIGFzIFRoZW1lQ29udGV4dCxYZSBhcyBUaGVtZVByb3ZpZGVyLHB0IGFzIF9fUFJJVkFURV9fLGF0IGFzIGNyZWF0ZUdsb2JhbFN0eWxlLG50IGFzIGNzcyxzdCBhcyBkZWZhdWx0LGVlIGFzIGlzU3R5bGVkQ29tcG9uZW50LGN0IGFzIGtleWZyYW1lcyxzdCBhcyBzdHlsZWQsSmUgYXMgdXNlVGhlbWUsbSBhcyB2ZXJzaW9uLGx0IGFzIHdpdGhUaGVtZX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zdHlsZWQtY29tcG9uZW50cy5icm93c2VyLmVzbS5qcy5tYXBcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQ2VsbEV4dGVuZGVkID0gZXhwb3J0cy5DZWxsQmFzZSA9IHZvaWQgMDtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIG1lZGlhXzEgPSByZXF1aXJlKFwiLi9tZWRpYVwiKTtcbmV4cG9ydHMuQ2VsbEJhc2UgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0bGluZS1oZWlnaHQ6IG5vcm1hbDtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcdGxpbmUtaGVpZ2h0OiBub3JtYWw7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWUsIGhlYWRDZWxsID0gX2EuaGVhZENlbGw7XG4gICAgcmV0dXJuIHRoZW1lW2hlYWRDZWxsID8gJ2hlYWRDZWxscycgOiAnY2VsbHMnXS5zdHlsZTtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBub1BhZGRpbmcgPSBfYS5ub1BhZGRpbmc7XG4gICAgcmV0dXJuIG5vUGFkZGluZyAmJiAncGFkZGluZzogMCc7XG59KTtcbi8vIEZsZXggY2FsY3VsYXRpb25zXG5leHBvcnRzLkNlbGxFeHRlbmRlZCA9ICgwLCBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQpKGV4cG9ydHMuQ2VsbEJhc2UpKHRlbXBsYXRlT2JqZWN0XzcgfHwgKHRlbXBsYXRlT2JqZWN0XzcgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRmbGV4LWdyb3c6IFwiLCBcIjtcXG5cXHRmbGV4LXNocmluazogMDtcXG5cXHRmbGV4LWJhc2lzOiAwO1xcblxcdG1heC13aWR0aDogXCIsIFwiO1xcblxcdG1pbi13aWR0aDogXCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cXG5cXHQvKiBoYW5kbGUgaGlkaW5nIGNlbGxzICovXFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0ZmxleC1ncm93OiBcIiwgXCI7XFxuXFx0ZmxleC1zaHJpbms6IDA7XFxuXFx0ZmxleC1iYXNpczogMDtcXG5cXHRtYXgtd2lkdGg6IFwiLCBcIjtcXG5cXHRtaW4td2lkdGg6IFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFxuXFx0LyogaGFuZGxlIGhpZGluZyBjZWxscyAqL1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGJ1dHRvbiA9IF9hLmJ1dHRvbiwgZ3JvdyA9IF9hLmdyb3c7XG4gICAgcmV0dXJuIChncm93ID09PSAwIHx8IGJ1dHRvbiA/IDAgOiBncm93IHx8IDEpO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIG1heFdpZHRoID0gX2EubWF4V2lkdGg7XG4gICAgcmV0dXJuIG1heFdpZHRoIHx8ICcxMDAlJztcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBtaW5XaWR0aCA9IF9hLm1pbldpZHRoO1xuICAgIHJldHVybiBtaW5XaWR0aCB8fCAnMTAwcHgnO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHdpZHRoID0gX2Eud2lkdGg7XG4gICAgcmV0dXJuIHdpZHRoICYmICgwLCBzdHlsZWRfY29tcG9uZW50c18xLmNzcykodGVtcGxhdGVPYmplY3RfMiB8fCAodGVtcGxhdGVPYmplY3RfMiA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdFxcdFxcdG1pbi13aWR0aDogXCIsIFwiO1xcblxcdFxcdFxcdG1heC13aWR0aDogXCIsIFwiO1xcblxcdFxcdFwiXSwgW1wiXFxuXFx0XFx0XFx0bWluLXdpZHRoOiBcIiwgXCI7XFxuXFx0XFx0XFx0bWF4LXdpZHRoOiBcIiwgXCI7XFxuXFx0XFx0XCJdKSksIHdpZHRoLCB3aWR0aCk7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgcmlnaHQgPSBfYS5yaWdodDtcbiAgICByZXR1cm4gcmlnaHQgJiYgJ2p1c3RpZnktY29udGVudDogZmxleC1lbmQnO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGJ1dHRvbiA9IF9hLmJ1dHRvbiwgY2VudGVyID0gX2EuY2VudGVyO1xuICAgIHJldHVybiAoY2VudGVyIHx8IGJ1dHRvbikgJiYgJ2p1c3RpZnktY29udGVudDogY2VudGVyJztcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBjb21wYWN0ID0gX2EuY29tcGFjdCwgYnV0dG9uID0gX2EuYnV0dG9uO1xuICAgIHJldHVybiAoY29tcGFjdCB8fCBidXR0b24pICYmICdwYWRkaW5nOiAwJztcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBoaWRlID0gX2EuaGlkZTtcbiAgICByZXR1cm4gaGlkZSAmJlxuICAgICAgICBoaWRlID09PSAnc20nICYmIG1lZGlhXzEubWVkaWEuc20odGVtcGxhdGVPYmplY3RfMyB8fCAodGVtcGxhdGVPYmplY3RfMyA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgXCJdLCBbXCJcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gIFwiXSkpKTtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBoaWRlID0gX2EuaGlkZTtcbiAgICByZXR1cm4gaGlkZSAmJlxuICAgICAgICBoaWRlID09PSAnbWQnICYmIG1lZGlhXzEubWVkaWEubWQodGVtcGxhdGVPYmplY3RfNCB8fCAodGVtcGxhdGVPYmplY3RfNCA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgXCJdLCBbXCJcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gIFwiXSkpKTtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBoaWRlID0gX2EuaGlkZTtcbiAgICByZXR1cm4gaGlkZSAmJlxuICAgICAgICBoaWRlID09PSAnbGcnICYmIG1lZGlhXzEubWVkaWEubGcodGVtcGxhdGVPYmplY3RfNSB8fCAodGVtcGxhdGVPYmplY3RfNSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgXCJdLCBbXCJcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gIFwiXSkpKTtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBoaWRlID0gX2EuaGlkZTtcbiAgICByZXR1cm4gaGlkZSAmJlxuICAgICAgICBOdW1iZXIuaXNJbnRlZ2VyKGhpZGUpICYmIG1lZGlhXzEubWVkaWEuY3VzdG9tKGhpZGUpKHRlbXBsYXRlT2JqZWN0XzYgfHwgKHRlbXBsYXRlT2JqZWN0XzYgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gIFwiXSwgW1wiXFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICBcIl0pKSk7XG59KTtcbnZhciB0ZW1wbGF0ZU9iamVjdF8xLCB0ZW1wbGF0ZU9iamVjdF8yLCB0ZW1wbGF0ZU9iamVjdF8zLCB0ZW1wbGF0ZU9iamVjdF80LCB0ZW1wbGF0ZU9iamVjdF81LCB0ZW1wbGF0ZU9iamVjdF82LCB0ZW1wbGF0ZU9iamVjdF83O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG52YXIgZGVmYXVsdENvbXBvbmVudE5hbWUgPSAnaW5wdXQnO1xudmFyIGNhbGN1bGF0ZUJhc2VTdHlsZSA9IGZ1bmN0aW9uIChkaXNhYmxlZCkgeyByZXR1cm4gKF9fYXNzaWduKF9fYXNzaWduKHsgZm9udFNpemU6ICcxOHB4JyB9LCAoIWRpc2FibGVkICYmIHsgY3Vyc29yOiAncG9pbnRlcicgfSkpLCB7IHBhZGRpbmc6IDAsIG1hcmdpblRvcDogJzFweCcsIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLCBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9KSk7IH07XG5mdW5jdGlvbiBDaGVja2JveChfYSkge1xuICAgIHZhciBuYW1lID0gX2EubmFtZSwgX2IgPSBfYS5jb21wb25lbnQsIGNvbXBvbmVudCA9IF9iID09PSB2b2lkIDAgPyBkZWZhdWx0Q29tcG9uZW50TmFtZSA6IF9iLCBfYyA9IF9hLmNvbXBvbmVudE9wdGlvbnMsIGNvbXBvbmVudE9wdGlvbnMgPSBfYyA9PT0gdm9pZCAwID8geyBzdHlsZToge30gfSA6IF9jLCBfZCA9IF9hLmluZGV0ZXJtaW5hdGUsIGluZGV0ZXJtaW5hdGUgPSBfZCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZCwgX2UgPSBfYS5jaGVja2VkLCBjaGVja2VkID0gX2UgPT09IHZvaWQgMCA/IGZhbHNlIDogX2UsIF9mID0gX2EuZGlzYWJsZWQsIGRpc2FibGVkID0gX2YgPT09IHZvaWQgMCA/IGZhbHNlIDogX2YsIF9nID0gX2Eub25DbGljaywgb25DbGljayA9IF9nID09PSB2b2lkIDAgPyB1dGlsXzEubm9vcCA6IF9nO1xuICAgIHZhciBzZXRDaGVja2JveFJlZiA9IGZ1bmN0aW9uIChjaGVja2JveCkge1xuICAgICAgICBpZiAoY2hlY2tib3gpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgICAgY2hlY2tib3guaW5kZXRlcm1pbmF0ZSA9IGluZGV0ZXJtaW5hdGU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBUYWdOYW1lID0gY29tcG9uZW50O1xuICAgIHZhciBiYXNlU3R5bGUgPSBUYWdOYW1lICE9PSBkZWZhdWx0Q29tcG9uZW50TmFtZSA/IGNvbXBvbmVudE9wdGlvbnMuc3R5bGUgOiBjYWxjdWxhdGVCYXNlU3R5bGUoZGlzYWJsZWQpO1xuICAgIHZhciByZXNvbHZlZENvbXBvbmVudE9wdGlvbnMgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuICgwLCB1dGlsXzEuaGFuZGxlRnVuY3Rpb25Qcm9wcykoY29tcG9uZW50T3B0aW9ucywgaW5kZXRlcm1pbmF0ZSk7IH0sIFtjb21wb25lbnRPcHRpb25zLCBpbmRldGVybWluYXRlXSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRhZ05hbWVcbiAgICAvLyBhbGxvdyB0aGlzIGNvbXBvbmVudCB0byBmdWxseSBjb250cm9sIHRoZXNlIG9wdGlvbnNcbiAgICAsIF9fYXNzaWduKHsgXG4gICAgICAgIC8vIGFsbG93IHRoaXMgY29tcG9uZW50IHRvIGZ1bGx5IGNvbnRyb2wgdGhlc2Ugb3B0aW9uc1xuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsIHJlZjogc2V0Q2hlY2tib3hSZWYsIHN0eWxlOiBiYXNlU3R5bGUsIG9uQ2xpY2s6IGRpc2FibGVkID8gdXRpbF8xLm5vb3AgOiBvbkNsaWNrLCBuYW1lOiBuYW1lLCBcImFyaWEtbGFiZWxcIjogbmFtZSwgY2hlY2tlZDogY2hlY2tlZCwgZGlzYWJsZWQ6IGRpc2FibGVkIH0sIHJlc29sdmVkQ29tcG9uZW50T3B0aW9ucywgeyBvbkNoYW5nZTogdXRpbF8xLm5vb3AgfSkpKTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IFJlYWN0Lm1lbW8oQ2hlY2tib3gpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgdXNlUlRMXzEgPSByZXF1aXJlKFwiLi9ob29rcy91c2VSVExcIik7XG52YXIgVGl0bGUgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0ZmxleDogMSAwIGF1dG87XFxuXFx0aGVpZ2h0OiAxMDAlO1xcblxcdGNvbG9yOiBcIiwgXCI7XFxuXFx0Zm9udC1zaXplOiBcIiwgXCI7XFxuXFx0Zm9udC13ZWlnaHQ6IDQwMDtcXG5cIl0sIFtcIlxcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRmbGV4OiAxIDAgYXV0bztcXG5cXHRoZWlnaHQ6IDEwMCU7XFxuXFx0Y29sb3I6IFwiLCBcIjtcXG5cXHRmb250LXNpemU6IFwiLCBcIjtcXG5cXHRmb250LXdlaWdodDogNDAwO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUuY29udGV4dE1lbnUuZm9udENvbG9yO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHRoZW1lLmNvbnRleHRNZW51LmZvbnRTaXplO1xufSk7XG52YXIgQ29udGV4dEFjdGlvbnMgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzIgfHwgKHRlbXBsYXRlT2JqZWN0XzIgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG5cXHRmbGV4LXdyYXA6IHdyYXA7XFxuXCJdLCBbXCJcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG5cXHRmbGV4LXdyYXA6IHdyYXA7XFxuXCJdKSkpO1xudmFyIENvbnRleHRNZW51U3R5bGUgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzMgfHwgKHRlbXBsYXRlT2JqZWN0XzMgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRwb3NpdGlvbjogYWJzb2x1dGU7XFxuXFx0dG9wOiAwO1xcblxcdGxlZnQ6IDA7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcblxcdGJveC1zaXppbmc6IGluaGVyaXQ7XFxuXFx0ei1pbmRleDogMTtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0cG9zaXRpb246IGFic29sdXRlO1xcblxcdHRvcDogMDtcXG5cXHRsZWZ0OiAwO1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRib3gtc2l6aW5nOiBpbmhlcml0O1xcblxcdHotaW5kZXg6IDE7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHJ0bCA9IF9hLnJ0bDtcbiAgICByZXR1cm4gcnRsICYmICdkaXJlY3Rpb246IHJ0bCc7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUuY29udGV4dE1lbnUuc3R5bGU7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZSwgdmlzaWJsZSA9IF9hLnZpc2libGU7XG4gICAgcmV0dXJuIHZpc2libGUgJiYgdGhlbWUuY29udGV4dE1lbnUuYWN0aXZlU3R5bGU7XG59KTtcbnZhciBnZW5lcmF0ZURlZmF1bHRDb250ZXh0VGl0bGUgPSBmdW5jdGlvbiAoY29udGV4dE1lc3NhZ2UsIHNlbGVjdGVkQ291bnQsIHJ0bCkge1xuICAgIGlmIChzZWxlY3RlZENvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgZGF0dW1OYW1lID0gc2VsZWN0ZWRDb3VudCA9PT0gMSA/IGNvbnRleHRNZXNzYWdlLnNpbmd1bGFyIDogY29udGV4dE1lc3NhZ2UucGx1cmFsO1xuICAgIC8vIFRPRE86IGFkZCBtb2NrIGRvY3VtZW50IHJ0bCB0ZXN0c1xuICAgIGlmIChydGwpIHtcbiAgICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHNlbGVjdGVkQ291bnQsIFwiIFwiKS5jb25jYXQoY29udGV4dE1lc3NhZ2UubWVzc2FnZSB8fCAnJywgXCIgXCIpLmNvbmNhdChkYXR1bU5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gXCJcIi5jb25jYXQoc2VsZWN0ZWRDb3VudCwgXCIgXCIpLmNvbmNhdChkYXR1bU5hbWUsIFwiIFwiKS5jb25jYXQoY29udGV4dE1lc3NhZ2UubWVzc2FnZSB8fCAnJyk7XG59O1xuZnVuY3Rpb24gQ29udGV4dE1lbnUoX2EpIHtcbiAgICB2YXIgY29udGV4dE1lc3NhZ2UgPSBfYS5jb250ZXh0TWVzc2FnZSwgY29udGV4dEFjdGlvbnMgPSBfYS5jb250ZXh0QWN0aW9ucywgY29udGV4dENvbXBvbmVudCA9IF9hLmNvbnRleHRDb21wb25lbnQsIHNlbGVjdGVkQ291bnQgPSBfYS5zZWxlY3RlZENvdW50LCBkaXJlY3Rpb24gPSBfYS5kaXJlY3Rpb247XG4gICAgdmFyIGlzUlRMID0gKDAsIHVzZVJUTF8xLmRlZmF1bHQpKGRpcmVjdGlvbik7XG4gICAgdmFyIHZpc2libGUgPSBzZWxlY3RlZENvdW50ID4gMDtcbiAgICBpZiAoY29udGV4dENvbXBvbmVudCkge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udGV4dE1lbnVTdHlsZSwgeyB2aXNpYmxlOiB2aXNpYmxlIH0sIFJlYWN0LmNsb25lRWxlbWVudChjb250ZXh0Q29tcG9uZW50LCB7IHNlbGVjdGVkQ291bnQ6IHNlbGVjdGVkQ291bnQgfSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRleHRNZW51U3R5bGUsIHsgdmlzaWJsZTogdmlzaWJsZSwgcnRsOiBpc1JUTCB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRpdGxlLCBudWxsLCBnZW5lcmF0ZURlZmF1bHRDb250ZXh0VGl0bGUoY29udGV4dE1lc3NhZ2UsIHNlbGVjdGVkQ291bnQsIGlzUlRMKSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udGV4dEFjdGlvbnMsIG51bGwsIGNvbnRleHRBY3Rpb25zKSkpO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gQ29udGV4dE1lbnU7XG52YXIgdGVtcGxhdGVPYmplY3RfMSwgdGVtcGxhdGVPYmplY3RfMiwgdGVtcGxhdGVPYmplY3RfMztcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX3NwcmVhZEFycmF5ID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5KSB8fCBmdW5jdGlvbiAodG8sIGZyb20sIHBhY2spIHtcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIHRhYmxlUmVkdWNlcl8xID0gcmVxdWlyZShcIi4vdGFibGVSZWR1Y2VyXCIpO1xudmFyIFRhYmxlXzEgPSByZXF1aXJlKFwiLi9UYWJsZVwiKTtcbnZhciBUYWJsZUhlYWRfMSA9IHJlcXVpcmUoXCIuL1RhYmxlSGVhZFwiKTtcbnZhciBUYWJsZUhlYWRSb3dfMSA9IHJlcXVpcmUoXCIuL1RhYmxlSGVhZFJvd1wiKTtcbnZhciBUYWJsZVJvd18xID0gcmVxdWlyZShcIi4vVGFibGVSb3dcIik7XG52YXIgVGFibGVDb2xfMSA9IHJlcXVpcmUoXCIuL1RhYmxlQ29sXCIpO1xudmFyIFRhYmxlQ29sQ2hlY2tib3hfMSA9IHJlcXVpcmUoXCIuL1RhYmxlQ29sQ2hlY2tib3hcIik7XG52YXIgVGFibGVIZWFkZXJfMSA9IHJlcXVpcmUoXCIuL1RhYmxlSGVhZGVyXCIpO1xudmFyIFRhYmxlU3ViaGVhZGVyXzEgPSByZXF1aXJlKFwiLi9UYWJsZVN1YmhlYWRlclwiKTtcbnZhciBUYWJsZUJvZHlfMSA9IHJlcXVpcmUoXCIuL1RhYmxlQm9keVwiKTtcbnZhciBSZXNwb25zaXZlV3JhcHBlcl8xID0gcmVxdWlyZShcIi4vUmVzcG9uc2l2ZVdyYXBwZXJcIik7XG52YXIgUHJvZ3Jlc3NXcmFwcGVyXzEgPSByZXF1aXJlKFwiLi9Qcm9ncmVzc1dyYXBwZXJcIik7XG52YXIgVGFibGVXcmFwcGVyXzEgPSByZXF1aXJlKFwiLi9UYWJsZVdyYXBwZXJcIik7XG52YXIgVGFibGVDb2xFeHBhbmRlcl8xID0gcmVxdWlyZShcIi4vVGFibGVDb2xFeHBhbmRlclwiKTtcbnZhciBDZWxsXzEgPSByZXF1aXJlKFwiLi9DZWxsXCIpO1xudmFyIE5vRGF0YVdyYXBwZXJfMSA9IHJlcXVpcmUoXCIuL05vRGF0YVdyYXBwZXJcIik7XG52YXIgUGFnaW5hdGlvbl8xID0gcmVxdWlyZShcIi4vUGFnaW5hdGlvblwiKTtcbnZhciB1c2VEaWRVcGRhdGVFZmZlY3RfMSA9IHJlcXVpcmUoXCIuL2hvb2tzL3VzZURpZFVwZGF0ZUVmZmVjdFwiKTtcbnZhciB1dGlsXzEgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xudmFyIGRlZmF1bHRQcm9wc18xID0gcmVxdWlyZShcIi4vZGVmYXVsdFByb3BzXCIpO1xudmFyIHN0eWxlc18xID0gcmVxdWlyZShcIi4vc3R5bGVzXCIpO1xudmFyIHR5cGVzXzEgPSByZXF1aXJlKFwiLi90eXBlc1wiKTtcbnZhciB1c2VDb2x1bW5zXzEgPSByZXF1aXJlKFwiLi9ob29rcy91c2VDb2x1bW5zXCIpO1xuZnVuY3Rpb24gRGF0YVRhYmxlKHByb3BzKSB7XG4gICAgdmFyIF9hID0gcHJvcHMuZGF0YSwgZGF0YSA9IF9hID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuZGF0YSA6IF9hLCBfYiA9IHByb3BzLmNvbHVtbnMsIGNvbHVtbnMgPSBfYiA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmNvbHVtbnMgOiBfYiwgX2MgPSBwcm9wcy50aXRsZSwgdGl0bGUgPSBfYyA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnRpdGxlIDogX2MsIF9kID0gcHJvcHMuYWN0aW9ucywgYWN0aW9ucyA9IF9kID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuYWN0aW9ucyA6IF9kLCBfZSA9IHByb3BzLmtleUZpZWxkLCBrZXlGaWVsZCA9IF9lID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMua2V5RmllbGQgOiBfZSwgX2YgPSBwcm9wcy5zdHJpcGVkLCBzdHJpcGVkID0gX2YgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5zdHJpcGVkIDogX2YsIF9nID0gcHJvcHMuaGlnaGxpZ2h0T25Ib3ZlciwgaGlnaGxpZ2h0T25Ib3ZlciA9IF9nID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuaGlnaGxpZ2h0T25Ib3ZlciA6IF9nLCBfaCA9IHByb3BzLnBvaW50ZXJPbkhvdmVyLCBwb2ludGVyT25Ib3ZlciA9IF9oID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucG9pbnRlck9uSG92ZXIgOiBfaCwgX2ogPSBwcm9wcy5kZW5zZSwgZGVuc2UgPSBfaiA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmRlbnNlIDogX2osIF9rID0gcHJvcHMuc2VsZWN0YWJsZVJvd3MsIHNlbGVjdGFibGVSb3dzID0gX2sgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5zZWxlY3RhYmxlUm93cyA6IF9rLCBfbCA9IHByb3BzLnNlbGVjdGFibGVSb3dzU2luZ2xlLCBzZWxlY3RhYmxlUm93c1NpbmdsZSA9IF9sID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuc2VsZWN0YWJsZVJvd3NTaW5nbGUgOiBfbCwgX20gPSBwcm9wcy5zZWxlY3RhYmxlUm93c0hpZ2hsaWdodCwgc2VsZWN0YWJsZVJvd3NIaWdobGlnaHQgPSBfbSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnNlbGVjdGFibGVSb3dzSGlnaGxpZ2h0IDogX20sIF9vID0gcHJvcHMuc2VsZWN0YWJsZVJvd3NOb1NlbGVjdEFsbCwgc2VsZWN0YWJsZVJvd3NOb1NlbGVjdEFsbCA9IF9vID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuc2VsZWN0YWJsZVJvd3NOb1NlbGVjdEFsbCA6IF9vLCBfcCA9IHByb3BzLnNlbGVjdGFibGVSb3dzVmlzaWJsZU9ubHksIHNlbGVjdGFibGVSb3dzVmlzaWJsZU9ubHkgPSBfcCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnNlbGVjdGFibGVSb3dzVmlzaWJsZU9ubHkgOiBfcCwgX3EgPSBwcm9wcy5zZWxlY3RhYmxlUm93U2VsZWN0ZWQsIHNlbGVjdGFibGVSb3dTZWxlY3RlZCA9IF9xID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuc2VsZWN0YWJsZVJvd1NlbGVjdGVkIDogX3EsIF9yID0gcHJvcHMuc2VsZWN0YWJsZVJvd0Rpc2FibGVkLCBzZWxlY3RhYmxlUm93RGlzYWJsZWQgPSBfciA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnNlbGVjdGFibGVSb3dEaXNhYmxlZCA6IF9yLCBfcyA9IHByb3BzLnNlbGVjdGFibGVSb3dzQ29tcG9uZW50LCBzZWxlY3RhYmxlUm93c0NvbXBvbmVudCA9IF9zID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuc2VsZWN0YWJsZVJvd3NDb21wb25lbnQgOiBfcywgX3QgPSBwcm9wcy5zZWxlY3RhYmxlUm93c0NvbXBvbmVudFByb3BzLCBzZWxlY3RhYmxlUm93c0NvbXBvbmVudFByb3BzID0gX3QgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5zZWxlY3RhYmxlUm93c0NvbXBvbmVudFByb3BzIDogX3QsIF91ID0gcHJvcHMub25Sb3dFeHBhbmRUb2dnbGVkLCBvblJvd0V4cGFuZFRvZ2dsZWQgPSBfdSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLm9uUm93RXhwYW5kVG9nZ2xlZCA6IF91LCBfdiA9IHByb3BzLm9uU2VsZWN0ZWRSb3dzQ2hhbmdlLCBvblNlbGVjdGVkUm93c0NoYW5nZSA9IF92ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMub25TZWxlY3RlZFJvd3NDaGFuZ2UgOiBfdiwgX3cgPSBwcm9wcy5leHBhbmRhYmxlSWNvbiwgZXhwYW5kYWJsZUljb24gPSBfdyA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmV4cGFuZGFibGVJY29uIDogX3csIF94ID0gcHJvcHMub25DaGFuZ2VSb3dzUGVyUGFnZSwgb25DaGFuZ2VSb3dzUGVyUGFnZSA9IF94ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMub25DaGFuZ2VSb3dzUGVyUGFnZSA6IF94LCBfeSA9IHByb3BzLm9uQ2hhbmdlUGFnZSwgb25DaGFuZ2VQYWdlID0gX3kgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5vbkNoYW5nZVBhZ2UgOiBfeSwgX3ogPSBwcm9wcy5wYWdpbmF0aW9uU2VydmVyLCBwYWdpbmF0aW9uU2VydmVyID0gX3ogPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5wYWdpbmF0aW9uU2VydmVyIDogX3osIF8wID0gcHJvcHMucGFnaW5hdGlvblNlcnZlck9wdGlvbnMsIHBhZ2luYXRpb25TZXJ2ZXJPcHRpb25zID0gXzAgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5wYWdpbmF0aW9uU2VydmVyT3B0aW9ucyA6IF8wLCBfMSA9IHByb3BzLnBhZ2luYXRpb25Ub3RhbFJvd3MsIHBhZ2luYXRpb25Ub3RhbFJvd3MgPSBfMSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb25Ub3RhbFJvd3MgOiBfMSwgXzIgPSBwcm9wcy5wYWdpbmF0aW9uRGVmYXVsdFBhZ2UsIHBhZ2luYXRpb25EZWZhdWx0UGFnZSA9IF8yID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucGFnaW5hdGlvbkRlZmF1bHRQYWdlIDogXzIsIF8zID0gcHJvcHMucGFnaW5hdGlvblJlc2V0RGVmYXVsdFBhZ2UsIHBhZ2luYXRpb25SZXNldERlZmF1bHRQYWdlID0gXzMgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5wYWdpbmF0aW9uUmVzZXREZWZhdWx0UGFnZSA6IF8zLCBfNCA9IHByb3BzLnBhZ2luYXRpb25QZXJQYWdlLCBwYWdpbmF0aW9uUGVyUGFnZSA9IF80ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucGFnaW5hdGlvblBlclBhZ2UgOiBfNCwgXzUgPSBwcm9wcy5wYWdpbmF0aW9uUm93c1BlclBhZ2VPcHRpb25zLCBwYWdpbmF0aW9uUm93c1BlclBhZ2VPcHRpb25zID0gXzUgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5wYWdpbmF0aW9uUm93c1BlclBhZ2VPcHRpb25zIDogXzUsIF82ID0gcHJvcHMucGFnaW5hdGlvbkljb25MYXN0UGFnZSwgcGFnaW5hdGlvbkljb25MYXN0UGFnZSA9IF82ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucGFnaW5hdGlvbkljb25MYXN0UGFnZSA6IF82LCBfNyA9IHByb3BzLnBhZ2luYXRpb25JY29uRmlyc3RQYWdlLCBwYWdpbmF0aW9uSWNvbkZpcnN0UGFnZSA9IF83ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucGFnaW5hdGlvbkljb25GaXJzdFBhZ2UgOiBfNywgXzggPSBwcm9wcy5wYWdpbmF0aW9uSWNvbk5leHQsIHBhZ2luYXRpb25JY29uTmV4dCA9IF84ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucGFnaW5hdGlvbkljb25OZXh0IDogXzgsIF85ID0gcHJvcHMucGFnaW5hdGlvbkljb25QcmV2aW91cywgcGFnaW5hdGlvbkljb25QcmV2aW91cyA9IF85ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucGFnaW5hdGlvbkljb25QcmV2aW91cyA6IF85LCBfMTAgPSBwcm9wcy5wYWdpbmF0aW9uQ29tcG9uZW50LCBwYWdpbmF0aW9uQ29tcG9uZW50ID0gXzEwID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucGFnaW5hdGlvbkNvbXBvbmVudCA6IF8xMCwgXzExID0gcHJvcHMucGFnaW5hdGlvbkNvbXBvbmVudE9wdGlvbnMsIHBhZ2luYXRpb25Db21wb25lbnRPcHRpb25zID0gXzExID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucGFnaW5hdGlvbkNvbXBvbmVudE9wdGlvbnMgOiBfMTEsIF8xMiA9IHByb3BzLnJlc3BvbnNpdmUsIHJlc3BvbnNpdmUgPSBfMTIgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5yZXNwb25zaXZlIDogXzEyLCBfMTMgPSBwcm9wcy5wcm9ncmVzc1BlbmRpbmcsIHByb2dyZXNzUGVuZGluZyA9IF8xMyA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnByb2dyZXNzUGVuZGluZyA6IF8xMywgXzE0ID0gcHJvcHMucHJvZ3Jlc3NDb21wb25lbnQsIHByb2dyZXNzQ29tcG9uZW50ID0gXzE0ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucHJvZ3Jlc3NDb21wb25lbnQgOiBfMTQsIF8xNSA9IHByb3BzLnBlcnNpc3RUYWJsZUhlYWQsIHBlcnNpc3RUYWJsZUhlYWQgPSBfMTUgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5wZXJzaXN0VGFibGVIZWFkIDogXzE1LCBfMTYgPSBwcm9wcy5ub0RhdGFDb21wb25lbnQsIG5vRGF0YUNvbXBvbmVudCA9IF8xNiA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLm5vRGF0YUNvbXBvbmVudCA6IF8xNiwgXzE3ID0gcHJvcHMuZGlzYWJsZWQsIGRpc2FibGVkID0gXzE3ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuZGlzYWJsZWQgOiBfMTcsIF8xOCA9IHByb3BzLm5vVGFibGVIZWFkLCBub1RhYmxlSGVhZCA9IF8xOCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLm5vVGFibGVIZWFkIDogXzE4LCBfMTkgPSBwcm9wcy5ub0hlYWRlciwgbm9IZWFkZXIgPSBfMTkgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5ub0hlYWRlciA6IF8xOSwgXzIwID0gcHJvcHMuZml4ZWRIZWFkZXIsIGZpeGVkSGVhZGVyID0gXzIwID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuZml4ZWRIZWFkZXIgOiBfMjAsIF8yMSA9IHByb3BzLmZpeGVkSGVhZGVyU2Nyb2xsSGVpZ2h0LCBmaXhlZEhlYWRlclNjcm9sbEhlaWdodCA9IF8yMSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmZpeGVkSGVhZGVyU2Nyb2xsSGVpZ2h0IDogXzIxLCBfMjIgPSBwcm9wcy5wYWdpbmF0aW9uLCBwYWdpbmF0aW9uID0gXzIyID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucGFnaW5hdGlvbiA6IF8yMiwgXzIzID0gcHJvcHMuc3ViSGVhZGVyLCBzdWJIZWFkZXIgPSBfMjMgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5zdWJIZWFkZXIgOiBfMjMsIF8yNCA9IHByb3BzLnN1YkhlYWRlckFsaWduLCBzdWJIZWFkZXJBbGlnbiA9IF8yNCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnN1YkhlYWRlckFsaWduIDogXzI0LCBfMjUgPSBwcm9wcy5zdWJIZWFkZXJXcmFwLCBzdWJIZWFkZXJXcmFwID0gXzI1ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuc3ViSGVhZGVyV3JhcCA6IF8yNSwgXzI2ID0gcHJvcHMuc3ViSGVhZGVyQ29tcG9uZW50LCBzdWJIZWFkZXJDb21wb25lbnQgPSBfMjYgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5zdWJIZWFkZXJDb21wb25lbnQgOiBfMjYsIF8yNyA9IHByb3BzLm5vQ29udGV4dE1lbnUsIG5vQ29udGV4dE1lbnUgPSBfMjcgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5ub0NvbnRleHRNZW51IDogXzI3LCBfMjggPSBwcm9wcy5jb250ZXh0TWVzc2FnZSwgY29udGV4dE1lc3NhZ2UgPSBfMjggPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5jb250ZXh0TWVzc2FnZSA6IF8yOCwgXzI5ID0gcHJvcHMuY29udGV4dEFjdGlvbnMsIGNvbnRleHRBY3Rpb25zID0gXzI5ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuY29udGV4dEFjdGlvbnMgOiBfMjksIF8zMCA9IHByb3BzLmNvbnRleHRDb21wb25lbnQsIGNvbnRleHRDb21wb25lbnQgPSBfMzAgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5jb250ZXh0Q29tcG9uZW50IDogXzMwLCBfMzEgPSBwcm9wcy5leHBhbmRhYmxlUm93cywgZXhwYW5kYWJsZVJvd3MgPSBfMzEgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5leHBhbmRhYmxlUm93cyA6IF8zMSwgXzMyID0gcHJvcHMub25Sb3dDbGlja2VkLCBvblJvd0NsaWNrZWQgPSBfMzIgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5vblJvd0NsaWNrZWQgOiBfMzIsIF8zMyA9IHByb3BzLm9uUm93RG91YmxlQ2xpY2tlZCwgb25Sb3dEb3VibGVDbGlja2VkID0gXzMzID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMub25Sb3dEb3VibGVDbGlja2VkIDogXzMzLCBfMzQgPSBwcm9wcy5vblJvd01vdXNlRW50ZXIsIG9uUm93TW91c2VFbnRlciA9IF8zNCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLm9uUm93TW91c2VFbnRlciA6IF8zNCwgXzM1ID0gcHJvcHMub25Sb3dNb3VzZUxlYXZlLCBvblJvd01vdXNlTGVhdmUgPSBfMzUgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5vblJvd01vdXNlTGVhdmUgOiBfMzUsIF8zNiA9IHByb3BzLnNvcnRJY29uLCBzb3J0SWNvbiA9IF8zNiA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnNvcnRJY29uIDogXzM2LCBfMzcgPSBwcm9wcy5vblNvcnQsIG9uU29ydCA9IF8zNyA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLm9uU29ydCA6IF8zNywgXzM4ID0gcHJvcHMuc29ydEZ1bmN0aW9uLCBzb3J0RnVuY3Rpb24gPSBfMzggPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5zb3J0RnVuY3Rpb24gOiBfMzgsIF8zOSA9IHByb3BzLnNvcnRTZXJ2ZXIsIHNvcnRTZXJ2ZXIgPSBfMzkgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5zb3J0U2VydmVyIDogXzM5LCBfNDAgPSBwcm9wcy5leHBhbmRhYmxlUm93c0NvbXBvbmVudCwgZXhwYW5kYWJsZVJvd3NDb21wb25lbnQgPSBfNDAgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5leHBhbmRhYmxlUm93c0NvbXBvbmVudCA6IF80MCwgXzQxID0gcHJvcHMuZXhwYW5kYWJsZVJvd3NDb21wb25lbnRQcm9wcywgZXhwYW5kYWJsZVJvd3NDb21wb25lbnRQcm9wcyA9IF80MSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmV4cGFuZGFibGVSb3dzQ29tcG9uZW50UHJvcHMgOiBfNDEsIF80MiA9IHByb3BzLmV4cGFuZGFibGVSb3dEaXNhYmxlZCwgZXhwYW5kYWJsZVJvd0Rpc2FibGVkID0gXzQyID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuZXhwYW5kYWJsZVJvd0Rpc2FibGVkIDogXzQyLCBfNDMgPSBwcm9wcy5leHBhbmRhYmxlUm93c0hpZGVFeHBhbmRlciwgZXhwYW5kYWJsZVJvd3NIaWRlRXhwYW5kZXIgPSBfNDMgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5leHBhbmRhYmxlUm93c0hpZGVFeHBhbmRlciA6IF80MywgXzQ0ID0gcHJvcHMuZXhwYW5kT25Sb3dDbGlja2VkLCBleHBhbmRPblJvd0NsaWNrZWQgPSBfNDQgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5leHBhbmRPblJvd0NsaWNrZWQgOiBfNDQsIF80NSA9IHByb3BzLmV4cGFuZE9uUm93RG91YmxlQ2xpY2tlZCwgZXhwYW5kT25Sb3dEb3VibGVDbGlja2VkID0gXzQ1ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuZXhwYW5kT25Sb3dEb3VibGVDbGlja2VkIDogXzQ1LCBfNDYgPSBwcm9wcy5leHBhbmRhYmxlUm93RXhwYW5kZWQsIGV4cGFuZGFibGVSb3dFeHBhbmRlZCA9IF80NiA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmV4cGFuZGFibGVSb3dFeHBhbmRlZCA6IF80NiwgXzQ3ID0gcHJvcHMuZXhwYW5kYWJsZUluaGVyaXRDb25kaXRpb25hbFN0eWxlcywgZXhwYW5kYWJsZUluaGVyaXRDb25kaXRpb25hbFN0eWxlcyA9IF80NyA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmV4cGFuZGFibGVJbmhlcml0Q29uZGl0aW9uYWxTdHlsZXMgOiBfNDcsIF80OCA9IHByb3BzLmRlZmF1bHRTb3J0RmllbGRJZCwgZGVmYXVsdFNvcnRGaWVsZElkID0gXzQ4ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuZGVmYXVsdFNvcnRGaWVsZElkIDogXzQ4LCBfNDkgPSBwcm9wcy5kZWZhdWx0U29ydEFzYywgZGVmYXVsdFNvcnRBc2MgPSBfNDkgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5kZWZhdWx0U29ydEFzYyA6IF80OSwgXzUwID0gcHJvcHMuY2xlYXJTZWxlY3RlZFJvd3MsIGNsZWFyU2VsZWN0ZWRSb3dzID0gXzUwID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuY2xlYXJTZWxlY3RlZFJvd3MgOiBfNTAsIF81MSA9IHByb3BzLmNvbmRpdGlvbmFsUm93U3R5bGVzLCBjb25kaXRpb25hbFJvd1N0eWxlcyA9IF81MSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLmNvbmRpdGlvbmFsUm93U3R5bGVzIDogXzUxLCBfNTIgPSBwcm9wcy50aGVtZSwgdGhlbWUgPSBfNTIgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy50aGVtZSA6IF81MiwgXzUzID0gcHJvcHMuY3VzdG9tU3R5bGVzLCBjdXN0b21TdHlsZXMgPSBfNTMgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5jdXN0b21TdHlsZXMgOiBfNTMsIF81NCA9IHByb3BzLmRpcmVjdGlvbiwgZGlyZWN0aW9uID0gXzU0ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuZGlyZWN0aW9uIDogXzU0LCBfNTUgPSBwcm9wcy5vbkNvbHVtbk9yZGVyQ2hhbmdlLCBvbkNvbHVtbk9yZGVyQ2hhbmdlID0gXzU1ID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMub25Db2x1bW5PcmRlckNoYW5nZSA6IF81NSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBfNTYgPSAoMCwgdXNlQ29sdW1uc18xLmRlZmF1bHQpKGNvbHVtbnMsIG9uQ29sdW1uT3JkZXJDaGFuZ2UsIGRlZmF1bHRTb3J0RmllbGRJZCwgZGVmYXVsdFNvcnRBc2MpLCB0YWJsZUNvbHVtbnMgPSBfNTYudGFibGVDb2x1bW5zLCBkcmFnZ2luZ0NvbHVtbklkID0gXzU2LmRyYWdnaW5nQ29sdW1uSWQsIGhhbmRsZURyYWdTdGFydCA9IF81Ni5oYW5kbGVEcmFnU3RhcnQsIGhhbmRsZURyYWdFbnRlciA9IF81Ni5oYW5kbGVEcmFnRW50ZXIsIGhhbmRsZURyYWdPdmVyID0gXzU2LmhhbmRsZURyYWdPdmVyLCBoYW5kbGVEcmFnTGVhdmUgPSBfNTYuaGFuZGxlRHJhZ0xlYXZlLCBoYW5kbGVEcmFnRW5kID0gXzU2LmhhbmRsZURyYWdFbmQsIGRlZmF1bHRTb3J0RGlyZWN0aW9uID0gXzU2LmRlZmF1bHRTb3J0RGlyZWN0aW9uLCBkZWZhdWx0U29ydENvbHVtbiA9IF81Ni5kZWZhdWx0U29ydENvbHVtbjtcbiAgICB2YXIgXzU3ID0gUmVhY3QudXNlUmVkdWNlcih0YWJsZVJlZHVjZXJfMS50YWJsZVJlZHVjZXIsIHtcbiAgICAgICAgYWxsU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzZWxlY3RlZENvdW50OiAwLFxuICAgICAgICBzZWxlY3RlZFJvd3M6IFtdLFxuICAgICAgICBzZWxlY3RlZENvbHVtbjogZGVmYXVsdFNvcnRDb2x1bW4sXG4gICAgICAgIHRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlOiBmYWxzZSxcbiAgICAgICAgc29ydERpcmVjdGlvbjogZGVmYXVsdFNvcnREaXJlY3Rpb24sXG4gICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uRGVmYXVsdFBhZ2UsXG4gICAgICAgIHJvd3NQZXJQYWdlOiBwYWdpbmF0aW9uUGVyUGFnZSxcbiAgICAgICAgc2VsZWN0ZWRSb3dzRmxhZzogZmFsc2UsXG4gICAgICAgIGNvbnRleHRNZXNzYWdlOiBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuY29udGV4dE1lc3NhZ2UsXG4gICAgfSksIF81OCA9IF81N1swXSwgcm93c1BlclBhZ2UgPSBfNTgucm93c1BlclBhZ2UsIGN1cnJlbnRQYWdlID0gXzU4LmN1cnJlbnRQYWdlLCBzZWxlY3RlZFJvd3MgPSBfNTguc2VsZWN0ZWRSb3dzLCBhbGxTZWxlY3RlZCA9IF81OC5hbGxTZWxlY3RlZCwgc2VsZWN0ZWRDb3VudCA9IF81OC5zZWxlY3RlZENvdW50LCBzZWxlY3RlZENvbHVtbiA9IF81OC5zZWxlY3RlZENvbHVtbiwgc29ydERpcmVjdGlvbiA9IF81OC5zb3J0RGlyZWN0aW9uLCB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZSA9IF81OC50b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZSwgZGlzcGF0Y2ggPSBfNTdbMV07XG4gICAgdmFyIF81OSA9IHBhZ2luYXRpb25TZXJ2ZXJPcHRpb25zLnBlcnNpc3RTZWxlY3RlZE9uU29ydCwgcGVyc2lzdFNlbGVjdGVkT25Tb3J0ID0gXzU5ID09PSB2b2lkIDAgPyBmYWxzZSA6IF81OSwgXzYwID0gcGFnaW5hdGlvblNlcnZlck9wdGlvbnMucGVyc2lzdFNlbGVjdGVkT25QYWdlQ2hhbmdlLCBwZXJzaXN0U2VsZWN0ZWRPblBhZ2VDaGFuZ2UgPSBfNjAgPT09IHZvaWQgMCA/IGZhbHNlIDogXzYwO1xuICAgIHZhciBtZXJnZVNlbGVjdGlvbnMgPSAhIShwYWdpbmF0aW9uU2VydmVyICYmIChwZXJzaXN0U2VsZWN0ZWRPblBhZ2VDaGFuZ2UgfHwgcGVyc2lzdFNlbGVjdGVkT25Tb3J0KSk7XG4gICAgdmFyIGVuYWJsZWRQYWdpbmF0aW9uID0gcGFnaW5hdGlvbiAmJiAhcHJvZ3Jlc3NQZW5kaW5nICYmIGRhdGEubGVuZ3RoID4gMDtcbiAgICB2YXIgUGFnaW5hdGlvbiA9IHBhZ2luYXRpb25Db21wb25lbnQgfHwgUGFnaW5hdGlvbl8xLmRlZmF1bHQ7XG4gICAgdmFyIGN1cnJlbnRUaGVtZSA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkgeyByZXR1cm4gKDAsIHN0eWxlc18xLmNyZWF0ZVN0eWxlcykoY3VzdG9tU3R5bGVzLCB0aGVtZSk7IH0sIFtjdXN0b21TdHlsZXMsIHRoZW1lXSk7XG4gICAgdmFyIHdyYXBwZXJQcm9wcyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkgeyByZXR1cm4gKF9fYXNzaWduKHt9LCAoZGlyZWN0aW9uICE9PSAnYXV0bycgJiYgeyBkaXI6IGRpcmVjdGlvbiB9KSkpOyB9LCBbZGlyZWN0aW9uXSk7XG4gICAgdmFyIHNvcnRlZERhdGEgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gc2VydmVyLXNpZGUgc29ydGluZyBieXBhc3NlcyBpbnRlcm5hbCBzb3J0aW5nXG4gICAgICAgIGlmIChzb3J0U2VydmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHNlbGVjdGVkQ29sdW1uID09PSBudWxsIHx8IHNlbGVjdGVkQ29sdW1uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWxlY3RlZENvbHVtbi5zb3J0RnVuY3Rpb24pICYmIHR5cGVvZiBzZWxlY3RlZENvbHVtbi5zb3J0RnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhciBzb3J0Rm5fMSA9IHNlbGVjdGVkQ29sdW1uLnNvcnRGdW5jdGlvbjtcbiAgICAgICAgICAgIHZhciBjdXN0b21Tb3J0RnVuY3Rpb24gPSBzb3J0RGlyZWN0aW9uID09PSB0eXBlc18xLlNvcnRPcmRlci5BU0MgPyBzb3J0Rm5fMSA6IGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBzb3J0Rm5fMShhLCBiKSAqIC0xOyB9O1xuICAgICAgICAgICAgcmV0dXJuIF9fc3ByZWFkQXJyYXkoW10sIGRhdGEsIHRydWUpLnNvcnQoY3VzdG9tU29ydEZ1bmN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKDAsIHV0aWxfMS5zb3J0KShkYXRhLCBzZWxlY3RlZENvbHVtbiA9PT0gbnVsbCB8fCBzZWxlY3RlZENvbHVtbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VsZWN0ZWRDb2x1bW4uc2VsZWN0b3IsIHNvcnREaXJlY3Rpb24sIHNvcnRGdW5jdGlvbik7XG4gICAgfSwgW3NvcnRTZXJ2ZXIsIHNlbGVjdGVkQ29sdW1uLCBzb3J0RGlyZWN0aW9uLCBkYXRhLCBzb3J0RnVuY3Rpb25dKTtcbiAgICB2YXIgdGFibGVSb3dzID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChwYWdpbmF0aW9uICYmICFwYWdpbmF0aW9uU2VydmVyKSB7XG4gICAgICAgICAgICAvLyB3aGVuIHVzaW5nIGNsaWVudC1zaWRlIHBhZ2luYXRpb24gd2UgY2FuIGp1c3Qgc2xpY2UgdGhlIHJvd3Mgc2V0XG4gICAgICAgICAgICB2YXIgbGFzdEluZGV4ID0gY3VycmVudFBhZ2UgKiByb3dzUGVyUGFnZTtcbiAgICAgICAgICAgIHZhciBmaXJzdEluZGV4ID0gbGFzdEluZGV4IC0gcm93c1BlclBhZ2U7XG4gICAgICAgICAgICByZXR1cm4gc29ydGVkRGF0YS5zbGljZShmaXJzdEluZGV4LCBsYXN0SW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb3J0ZWREYXRhO1xuICAgIH0sIFtjdXJyZW50UGFnZSwgcGFnaW5hdGlvbiwgcGFnaW5hdGlvblNlcnZlciwgcm93c1BlclBhZ2UsIHNvcnRlZERhdGFdKTtcbiAgICB2YXIgaGFuZGxlU29ydCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChhY3Rpb24pIHtcbiAgICAgICAgZGlzcGF0Y2goYWN0aW9uKTtcbiAgICB9LCBbXSk7XG4gICAgdmFyIGhhbmRsZVNlbGVjdEFsbFJvd3MgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoYWN0aW9uKSB7XG4gICAgICAgIGRpc3BhdGNoKGFjdGlvbik7XG4gICAgfSwgW10pO1xuICAgIHZhciBoYW5kbGVTZWxlY3RlZFJvdyA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChhY3Rpb24pIHtcbiAgICAgICAgZGlzcGF0Y2goYWN0aW9uKTtcbiAgICB9LCBbXSk7XG4gICAgdmFyIGhhbmRsZVJvd0NsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAocm93LCBlKSB7IHJldHVybiBvblJvd0NsaWNrZWQocm93LCBlKTsgfSwgW29uUm93Q2xpY2tlZF0pO1xuICAgIHZhciBoYW5kbGVSb3dEb3VibGVDbGlja2VkID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKHJvdywgZSkgeyByZXR1cm4gb25Sb3dEb3VibGVDbGlja2VkKHJvdywgZSk7IH0sIFtvblJvd0RvdWJsZUNsaWNrZWRdKTtcbiAgICB2YXIgaGFuZGxlUm93TW91c2VFbnRlciA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChyb3csIGUpIHsgcmV0dXJuIG9uUm93TW91c2VFbnRlcihyb3csIGUpOyB9LCBbb25Sb3dNb3VzZUVudGVyXSk7XG4gICAgdmFyIGhhbmRsZVJvd01vdXNlTGVhdmUgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAocm93LCBlKSB7IHJldHVybiBvblJvd01vdXNlTGVhdmUocm93LCBlKTsgfSwgW29uUm93TW91c2VMZWF2ZV0pO1xuICAgIHZhciBoYW5kbGVDaGFuZ2VQYWdlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKHBhZ2UpIHtcbiAgICAgICAgcmV0dXJuIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdDSEFOR0VfUEFHRScsXG4gICAgICAgICAgICBwYWdlOiBwYWdlLFxuICAgICAgICAgICAgcGFnaW5hdGlvblNlcnZlcjogcGFnaW5hdGlvblNlcnZlcixcbiAgICAgICAgICAgIHZpc2libGVPbmx5OiBzZWxlY3RhYmxlUm93c1Zpc2libGVPbmx5LFxuICAgICAgICAgICAgcGVyc2lzdFNlbGVjdGVkT25QYWdlQ2hhbmdlOiBwZXJzaXN0U2VsZWN0ZWRPblBhZ2VDaGFuZ2UsXG4gICAgICAgIH0pO1xuICAgIH0sIFtwYWdpbmF0aW9uU2VydmVyLCBwZXJzaXN0U2VsZWN0ZWRPblBhZ2VDaGFuZ2UsIHNlbGVjdGFibGVSb3dzVmlzaWJsZU9ubHldKTtcbiAgICB2YXIgaGFuZGxlQ2hhbmdlUm93c1BlclBhZ2UgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAobmV3Um93c1BlclBhZ2UpIHtcbiAgICAgICAgdmFyIHJvd0NvdW50ID0gcGFnaW5hdGlvblRvdGFsUm93cyB8fCB0YWJsZVJvd3MubGVuZ3RoO1xuICAgICAgICB2YXIgdXBkYXRlZFBhZ2UgPSAoMCwgdXRpbF8xLmdldE51bWJlck9mUGFnZXMpKHJvd0NvdW50LCBuZXdSb3dzUGVyUGFnZSk7XG4gICAgICAgIHZhciByZWNhbGN1bGF0ZWRQYWdlID0gKDAsIHV0aWxfMS5yZWNhbGN1bGF0ZVBhZ2UpKGN1cnJlbnRQYWdlLCB1cGRhdGVkUGFnZSk7XG4gICAgICAgIC8vIHVwZGF0ZSB0aGUgY3VycmVudFBhZ2UgZm9yIGNsaWVudC1zaWRlIHBhZ2luYXRpb25cbiAgICAgICAgLy8gc2VydmVyIC0gc2lkZSBzaG91bGQgYmUgaGFuZGxlZCBieSBvbkNoYW5nZVJvd3NQZXJQYWdlXG4gICAgICAgIGlmICghcGFnaW5hdGlvblNlcnZlcikge1xuICAgICAgICAgICAgaGFuZGxlQ2hhbmdlUGFnZShyZWNhbGN1bGF0ZWRQYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdDSEFOR0VfUk9XU19QRVJfUEFHRScsIHBhZ2U6IHJlY2FsY3VsYXRlZFBhZ2UsIHJvd3NQZXJQYWdlOiBuZXdSb3dzUGVyUGFnZSB9KTtcbiAgICB9LCBbY3VycmVudFBhZ2UsIGhhbmRsZUNoYW5nZVBhZ2UsIHBhZ2luYXRpb25TZXJ2ZXIsIHBhZ2luYXRpb25Ub3RhbFJvd3MsIHRhYmxlUm93cy5sZW5ndGhdKTtcbiAgICB2YXIgc2hvd1RhYmxlSGVhZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG5vVGFibGVIZWFkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlcnNpc3RUYWJsZUhlYWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb3J0ZWREYXRhLmxlbmd0aCA+IDAgJiYgIXByb2dyZXNzUGVuZGluZztcbiAgICB9O1xuICAgIHZhciBzaG93SGVhZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAobm9IZWFkZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3Rpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICAvLyByZWNhbGN1bGF0ZSB0aGUgcGFnaW5hdGlvbiBhbmQgY3VycmVudFBhZ2UgaWYgdGhlIHJvd3MgbGVuZ3RoIGNoYW5nZXNcbiAgICBpZiAocGFnaW5hdGlvbiAmJiAhcGFnaW5hdGlvblNlcnZlciAmJiBzb3J0ZWREYXRhLmxlbmd0aCA+IDAgJiYgdGFibGVSb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YXIgdXBkYXRlZFBhZ2UgPSAoMCwgdXRpbF8xLmdldE51bWJlck9mUGFnZXMpKHNvcnRlZERhdGEubGVuZ3RoLCByb3dzUGVyUGFnZSk7XG4gICAgICAgIHZhciByZWNhbGN1bGF0ZWRQYWdlID0gKDAsIHV0aWxfMS5yZWNhbGN1bGF0ZVBhZ2UpKGN1cnJlbnRQYWdlLCB1cGRhdGVkUGFnZSk7XG4gICAgICAgIGhhbmRsZUNoYW5nZVBhZ2UocmVjYWxjdWxhdGVkUGFnZSk7XG4gICAgfVxuICAgICgwLCB1c2VEaWRVcGRhdGVFZmZlY3RfMS5kZWZhdWx0KShmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9uU2VsZWN0ZWRSb3dzQ2hhbmdlKHsgYWxsU2VsZWN0ZWQ6IGFsbFNlbGVjdGVkLCBzZWxlY3RlZENvdW50OiBzZWxlY3RlZENvdW50LCBzZWxlY3RlZFJvd3M6IHNlbGVjdGVkUm93cy5zbGljZSgwKSB9KTtcbiAgICAgICAgLy8gb25TZWxlY3RlZFJvd3NDaGFuZ2UgdHJpZ2dlciBpcyBjb250cm9sbGVkIGJ5IHRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlIHN0YXRlXG4gICAgfSwgW3RvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlXSk7XG4gICAgKDAsIHVzZURpZFVwZGF0ZUVmZmVjdF8xLmRlZmF1bHQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb25Tb3J0KHNlbGVjdGVkQ29sdW1uLCBzb3J0RGlyZWN0aW9uLCBzb3J0ZWREYXRhLnNsaWNlKDApKTtcbiAgICAgICAgLy8gZG8gbm90IHVwZGF0ZSBvbiBzb3J0ZWREYXRhXG4gICAgfSwgW3NlbGVjdGVkQ29sdW1uLCBzb3J0RGlyZWN0aW9uXSk7XG4gICAgKDAsIHVzZURpZFVwZGF0ZUVmZmVjdF8xLmRlZmF1bHQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb25DaGFuZ2VQYWdlKGN1cnJlbnRQYWdlLCBwYWdpbmF0aW9uVG90YWxSb3dzIHx8IHNvcnRlZERhdGEubGVuZ3RoKTtcbiAgICB9LCBbY3VycmVudFBhZ2VdKTtcbiAgICAoMCwgdXNlRGlkVXBkYXRlRWZmZWN0XzEuZGVmYXVsdCkoZnVuY3Rpb24gKCkge1xuICAgICAgICBvbkNoYW5nZVJvd3NQZXJQYWdlKHJvd3NQZXJQYWdlLCBjdXJyZW50UGFnZSk7XG4gICAgfSwgW3Jvd3NQZXJQYWdlXSk7XG4gICAgKDAsIHVzZURpZFVwZGF0ZUVmZmVjdF8xLmRlZmF1bHQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaGFuZGxlQ2hhbmdlUGFnZShwYWdpbmF0aW9uRGVmYXVsdFBhZ2UpO1xuICAgIH0sIFtwYWdpbmF0aW9uRGVmYXVsdFBhZ2UsIHBhZ2luYXRpb25SZXNldERlZmF1bHRQYWdlXSk7XG4gICAgKDAsIHVzZURpZFVwZGF0ZUVmZmVjdF8xLmRlZmF1bHQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHBhZ2luYXRpb24gJiYgcGFnaW5hdGlvblNlcnZlciAmJiBwYWdpbmF0aW9uVG90YWxSb3dzID4gMCkge1xuICAgICAgICAgICAgdmFyIHVwZGF0ZWRQYWdlID0gKDAsIHV0aWxfMS5nZXROdW1iZXJPZlBhZ2VzKShwYWdpbmF0aW9uVG90YWxSb3dzLCByb3dzUGVyUGFnZSk7XG4gICAgICAgICAgICB2YXIgcmVjYWxjdWxhdGVkUGFnZSA9ICgwLCB1dGlsXzEucmVjYWxjdWxhdGVQYWdlKShjdXJyZW50UGFnZSwgdXBkYXRlZFBhZ2UpO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSByZWNhbGN1bGF0ZWRQYWdlKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlUGFnZShyZWNhbGN1bGF0ZWRQYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFtwYWdpbmF0aW9uVG90YWxSb3dzXSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnQ0xFQVJfU0VMRUNURURfUk9XUycsIHNlbGVjdGVkUm93c0ZsYWc6IGNsZWFyU2VsZWN0ZWRSb3dzIH0pO1xuICAgIH0sIFtzZWxlY3RhYmxlUm93c1NpbmdsZSwgY2xlYXJTZWxlY3RlZFJvd3NdKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXNlbGVjdGFibGVSb3dTZWxlY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcmVTZWxlY3RlZFJvd3MgPSBzb3J0ZWREYXRhLmZpbHRlcihmdW5jdGlvbiAocm93KSB7IHJldHVybiBzZWxlY3RhYmxlUm93U2VsZWN0ZWQocm93KTsgfSk7XG4gICAgICAgIC8vIGlmIHNlbGVjdGFibGVSb3dzU2luZ2xlIG1vZGUgdGhlbiByZXR1cm4gdGhlIGZpcnN0IG1hdGNoXG4gICAgICAgIHZhciBzZWxlY3RlZCA9IHNlbGVjdGFibGVSb3dzU2luZ2xlID8gcHJlU2VsZWN0ZWRSb3dzLnNsaWNlKDAsIDEpIDogcHJlU2VsZWN0ZWRSb3dzO1xuICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAnU0VMRUNUX01VTFRJUExFX1JPV1MnLFxuICAgICAgICAgICAga2V5RmllbGQ6IGtleUZpZWxkLFxuICAgICAgICAgICAgc2VsZWN0ZWRSb3dzOiBzZWxlY3RlZCxcbiAgICAgICAgICAgIHRvdGFsUm93czogc29ydGVkRGF0YS5sZW5ndGgsXG4gICAgICAgICAgICBtZXJnZVNlbGVjdGlvbnM6IG1lcmdlU2VsZWN0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byB1cGRhdGUgdGhlIHNlbGVjdGVkUm93U3RhdGUgaWYgZGF0YSBjaGFuZ2VzXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbZGF0YSwgc2VsZWN0YWJsZVJvd1NlbGVjdGVkXSk7XG4gICAgdmFyIHZpc2libGVSb3dzID0gc2VsZWN0YWJsZVJvd3NWaXNpYmxlT25seSA/IHRhYmxlUm93cyA6IHNvcnRlZERhdGE7XG4gICAgdmFyIHNob3dTZWxlY3RBbGwgPSBwZXJzaXN0U2VsZWN0ZWRPblBhZ2VDaGFuZ2UgfHwgc2VsZWN0YWJsZVJvd3NTaW5nbGUgfHwgc2VsZWN0YWJsZVJvd3NOb1NlbGVjdEFsbDtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoc3R5bGVkX2NvbXBvbmVudHNfMS5UaGVtZVByb3ZpZGVyLCB7IHRoZW1lOiBjdXJyZW50VGhlbWUgfSxcbiAgICAgICAgc2hvd0hlYWRlcigpICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFRhYmxlSGVhZGVyXzEuZGVmYXVsdCwgeyB0aXRsZTogdGl0bGUsIGFjdGlvbnM6IGFjdGlvbnMsIHNob3dNZW51OiAhbm9Db250ZXh0TWVudSwgc2VsZWN0ZWRDb3VudDogc2VsZWN0ZWRDb3VudCwgZGlyZWN0aW9uOiBkaXJlY3Rpb24sIGNvbnRleHRBY3Rpb25zOiBjb250ZXh0QWN0aW9ucywgY29udGV4dENvbXBvbmVudDogY29udGV4dENvbXBvbmVudCwgY29udGV4dE1lc3NhZ2U6IGNvbnRleHRNZXNzYWdlIH0pKSxcbiAgICAgICAgc3ViSGVhZGVyICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFRhYmxlU3ViaGVhZGVyXzEuZGVmYXVsdCwgeyBhbGlnbjogc3ViSGVhZGVyQWxpZ24sIHdyYXBDb250ZW50OiBzdWJIZWFkZXJXcmFwIH0sIHN1YkhlYWRlckNvbXBvbmVudCkpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFJlc3BvbnNpdmVXcmFwcGVyXzEuZGVmYXVsdCwgX19hc3NpZ24oeyByZXNwb25zaXZlOiByZXNwb25zaXZlLCBmaXhlZEhlYWRlcjogZml4ZWRIZWFkZXIsIGZpeGVkSGVhZGVyU2Nyb2xsSGVpZ2h0OiBmaXhlZEhlYWRlclNjcm9sbEhlaWdodCwgY2xhc3NOYW1lOiBjbGFzc05hbWUgfSwgd3JhcHBlclByb3BzKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFibGVXcmFwcGVyXzEuZGVmYXVsdCwgbnVsbCxcbiAgICAgICAgICAgICAgICBwcm9ncmVzc1BlbmRpbmcgJiYgIXBlcnNpc3RUYWJsZUhlYWQgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChQcm9ncmVzc1dyYXBwZXJfMS5kZWZhdWx0LCBudWxsLCBwcm9ncmVzc0NvbXBvbmVudCksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUYWJsZV8xLmRlZmF1bHQsIHsgZGlzYWJsZWQ6IGRpc2FibGVkLCBjbGFzc05hbWU6IFwicmR0X1RhYmxlXCIsIHJvbGU6IFwidGFibGVcIiB9LFxuICAgICAgICAgICAgICAgICAgICBzaG93VGFibGVIZWFkKCkgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFibGVIZWFkXzEuZGVmYXVsdCwgeyBjbGFzc05hbWU6IFwicmR0X1RhYmxlSGVhZFwiLCByb2xlOiBcInJvd2dyb3VwXCIsIGZpeGVkSGVhZGVyOiBmaXhlZEhlYWRlciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUYWJsZUhlYWRSb3dfMS5kZWZhdWx0LCB7IGNsYXNzTmFtZTogXCJyZHRfVGFibGVIZWFkUm93XCIsIHJvbGU6IFwicm93XCIsIGRlbnNlOiBkZW5zZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGVSb3dzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaG93U2VsZWN0QWxsID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2VsbF8xLkNlbGxCYXNlLCB7IHN0eWxlOiB7IGZsZXg6ICcwIDAgNDhweCcgfSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChUYWJsZUNvbENoZWNrYm94XzEuZGVmYXVsdCwgeyBhbGxTZWxlY3RlZDogYWxsU2VsZWN0ZWQsIHNlbGVjdGVkUm93czogc2VsZWN0ZWRSb3dzLCBzZWxlY3RhYmxlUm93c0NvbXBvbmVudDogc2VsZWN0YWJsZVJvd3NDb21wb25lbnQsIHNlbGVjdGFibGVSb3dzQ29tcG9uZW50UHJvcHM6IHNlbGVjdGFibGVSb3dzQ29tcG9uZW50UHJvcHMsIHNlbGVjdGFibGVSb3dEaXNhYmxlZDogc2VsZWN0YWJsZVJvd0Rpc2FibGVkLCByb3dEYXRhOiB2aXNpYmxlUm93cywga2V5RmllbGQ6IGtleUZpZWxkLCBtZXJnZVNlbGVjdGlvbnM6IG1lcmdlU2VsZWN0aW9ucywgb25TZWxlY3RBbGxSb3dzOiBoYW5kbGVTZWxlY3RBbGxSb3dzIH0pKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZVJvd3MgJiYgIWV4cGFuZGFibGVSb3dzSGlkZUV4cGFuZGVyICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFibGVDb2xFeHBhbmRlcl8xLmRlZmF1bHQsIG51bGwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlQ29sdW1ucy5tYXAoZnVuY3Rpb24gKGNvbHVtbikgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFibGVDb2xfMS5kZWZhdWx0LCB7IGtleTogY29sdW1uLmlkLCBjb2x1bW46IGNvbHVtbiwgc2VsZWN0ZWRDb2x1bW46IHNlbGVjdGVkQ29sdW1uLCBkaXNhYmxlZDogcHJvZ3Jlc3NQZW5kaW5nIHx8IHNvcnRlZERhdGEubGVuZ3RoID09PSAwLCBwYWdpbmF0aW9uOiBwYWdpbmF0aW9uLCBwYWdpbmF0aW9uU2VydmVyOiBwYWdpbmF0aW9uU2VydmVyLCBwZXJzaXN0U2VsZWN0ZWRPblNvcnQ6IHBlcnNpc3RTZWxlY3RlZE9uU29ydCwgc2VsZWN0YWJsZVJvd3NWaXNpYmxlT25seTogc2VsZWN0YWJsZVJvd3NWaXNpYmxlT25seSwgc29ydERpcmVjdGlvbjogc29ydERpcmVjdGlvbiwgc29ydEljb246IHNvcnRJY29uLCBzb3J0U2VydmVyOiBzb3J0U2VydmVyLCBvblNvcnQ6IGhhbmRsZVNvcnQsIG9uRHJhZ1N0YXJ0OiBoYW5kbGVEcmFnU3RhcnQsIG9uRHJhZ092ZXI6IGhhbmRsZURyYWdPdmVyLCBvbkRyYWdFbmQ6IGhhbmRsZURyYWdFbmQsIG9uRHJhZ0VudGVyOiBoYW5kbGVEcmFnRW50ZXIsIG9uRHJhZ0xlYXZlOiBoYW5kbGVEcmFnTGVhdmUsIGRyYWdnaW5nQ29sdW1uSWQ6IGRyYWdnaW5nQ29sdW1uSWQgfSkpOyB9KSkpKSxcbiAgICAgICAgICAgICAgICAgICAgIXNvcnRlZERhdGEubGVuZ3RoICYmICFwcm9ncmVzc1BlbmRpbmcgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChOb0RhdGFXcmFwcGVyXzEuZGVmYXVsdCwgbnVsbCwgbm9EYXRhQ29tcG9uZW50KSxcbiAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NQZW5kaW5nICYmIHBlcnNpc3RUYWJsZUhlYWQgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChQcm9ncmVzc1dyYXBwZXJfMS5kZWZhdWx0LCBudWxsLCBwcm9ncmVzc0NvbXBvbmVudCksXG4gICAgICAgICAgICAgICAgICAgICFwcm9ncmVzc1BlbmRpbmcgJiYgc29ydGVkRGF0YS5sZW5ndGggPiAwICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFRhYmxlQm9keV8xLmRlZmF1bHQsIHsgY2xhc3NOYW1lOiBcInJkdF9UYWJsZUJvZHlcIiwgcm9sZTogXCJyb3dncm91cFwiIH0sIHRhYmxlUm93cy5tYXAoZnVuY3Rpb24gKHJvdywgaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9ICgwLCB1dGlsXzEucHJvcCkocm93LCBrZXlGaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSAoMCwgdXRpbF8xLmlzRW1wdHkpKGtleSkgPyBpIDoga2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkID0gKDAsIHV0aWxfMS5pc1Jvd1NlbGVjdGVkKShyb3csIHNlbGVjdGVkUm93cywga2V5RmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGV4cGFuZGVyRXhwYW5kZXIgPSAhIShleHBhbmRhYmxlUm93cyAmJiBleHBhbmRhYmxlUm93RXhwYW5kZWQgJiYgZXhwYW5kYWJsZVJvd0V4cGFuZGVkKHJvdykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGV4cGFuZGVyRGlzYWJsZWQgPSAhIShleHBhbmRhYmxlUm93cyAmJiBleHBhbmRhYmxlUm93RGlzYWJsZWQgJiYgZXhwYW5kYWJsZVJvd0Rpc2FibGVkKHJvdykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRhYmxlUm93XzEuZGVmYXVsdCwgeyBpZDogaWQsIGtleTogaWQsIGtleUZpZWxkOiBrZXlGaWVsZCwgXCJkYXRhLXJvdy1pZFwiOiBpZCwgY29sdW1uczogdGFibGVDb2x1bW5zLCByb3c6IHJvdywgcm93Q291bnQ6IHNvcnRlZERhdGEubGVuZ3RoLCByb3dJbmRleDogaSwgc2VsZWN0YWJsZVJvd3M6IHNlbGVjdGFibGVSb3dzLCBleHBhbmRhYmxlUm93czogZXhwYW5kYWJsZVJvd3MsIGV4cGFuZGFibGVJY29uOiBleHBhbmRhYmxlSWNvbiwgaGlnaGxpZ2h0T25Ib3ZlcjogaGlnaGxpZ2h0T25Ib3ZlciwgcG9pbnRlck9uSG92ZXI6IHBvaW50ZXJPbkhvdmVyLCBkZW5zZTogZGVuc2UsIGV4cGFuZE9uUm93Q2xpY2tlZDogZXhwYW5kT25Sb3dDbGlja2VkLCBleHBhbmRPblJvd0RvdWJsZUNsaWNrZWQ6IGV4cGFuZE9uUm93RG91YmxlQ2xpY2tlZCwgZXhwYW5kYWJsZVJvd3NDb21wb25lbnQ6IGV4cGFuZGFibGVSb3dzQ29tcG9uZW50LCBleHBhbmRhYmxlUm93c0NvbXBvbmVudFByb3BzOiBleHBhbmRhYmxlUm93c0NvbXBvbmVudFByb3BzLCBleHBhbmRhYmxlUm93c0hpZGVFeHBhbmRlcjogZXhwYW5kYWJsZVJvd3NIaWRlRXhwYW5kZXIsIGRlZmF1bHRFeHBhbmRlckRpc2FibGVkOiBleHBhbmRlckRpc2FibGVkLCBkZWZhdWx0RXhwYW5kZWQ6IGV4cGFuZGVyRXhwYW5kZXIsIGV4cGFuZGFibGVJbmhlcml0Q29uZGl0aW9uYWxTdHlsZXM6IGV4cGFuZGFibGVJbmhlcml0Q29uZGl0aW9uYWxTdHlsZXMsIGNvbmRpdGlvbmFsUm93U3R5bGVzOiBjb25kaXRpb25hbFJvd1N0eWxlcywgc2VsZWN0ZWQ6IHNlbGVjdGVkLCBzZWxlY3RhYmxlUm93c0hpZ2hsaWdodDogc2VsZWN0YWJsZVJvd3NIaWdobGlnaHQsIHNlbGVjdGFibGVSb3dzQ29tcG9uZW50OiBzZWxlY3RhYmxlUm93c0NvbXBvbmVudCwgc2VsZWN0YWJsZVJvd3NDb21wb25lbnRQcm9wczogc2VsZWN0YWJsZVJvd3NDb21wb25lbnRQcm9wcywgc2VsZWN0YWJsZVJvd0Rpc2FibGVkOiBzZWxlY3RhYmxlUm93RGlzYWJsZWQsIHNlbGVjdGFibGVSb3dzU2luZ2xlOiBzZWxlY3RhYmxlUm93c1NpbmdsZSwgc3RyaXBlZDogc3RyaXBlZCwgb25Sb3dFeHBhbmRUb2dnbGVkOiBvblJvd0V4cGFuZFRvZ2dsZWQsIG9uUm93Q2xpY2tlZDogaGFuZGxlUm93Q2xpY2tlZCwgb25Sb3dEb3VibGVDbGlja2VkOiBoYW5kbGVSb3dEb3VibGVDbGlja2VkLCBvblJvd01vdXNlRW50ZXI6IGhhbmRsZVJvd01vdXNlRW50ZXIsIG9uUm93TW91c2VMZWF2ZTogaGFuZGxlUm93TW91c2VMZWF2ZSwgb25TZWxlY3RlZFJvdzogaGFuZGxlU2VsZWN0ZWRSb3csIGRyYWdnaW5nQ29sdW1uSWQ6IGRyYWdnaW5nQ29sdW1uSWQsIG9uRHJhZ1N0YXJ0OiBoYW5kbGVEcmFnU3RhcnQsIG9uRHJhZ092ZXI6IGhhbmRsZURyYWdPdmVyLCBvbkRyYWdFbmQ6IGhhbmRsZURyYWdFbmQsIG9uRHJhZ0VudGVyOiBoYW5kbGVEcmFnRW50ZXIsIG9uRHJhZ0xlYXZlOiBoYW5kbGVEcmFnTGVhdmUgfSkpO1xuICAgICAgICAgICAgICAgICAgICB9KSkpKSkpLFxuICAgICAgICBlbmFibGVkUGFnaW5hdGlvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBudWxsLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChQYWdpbmF0aW9uLCB7IG9uQ2hhbmdlUGFnZTogaGFuZGxlQ2hhbmdlUGFnZSwgb25DaGFuZ2VSb3dzUGVyUGFnZTogaGFuZGxlQ2hhbmdlUm93c1BlclBhZ2UsIHJvd0NvdW50OiBwYWdpbmF0aW9uVG90YWxSb3dzIHx8IHNvcnRlZERhdGEubGVuZ3RoLCBjdXJyZW50UGFnZTogY3VycmVudFBhZ2UsIHJvd3NQZXJQYWdlOiByb3dzUGVyUGFnZSwgZGlyZWN0aW9uOiBkaXJlY3Rpb24sIHBhZ2luYXRpb25Sb3dzUGVyUGFnZU9wdGlvbnM6IHBhZ2luYXRpb25Sb3dzUGVyUGFnZU9wdGlvbnMsIHBhZ2luYXRpb25JY29uTGFzdFBhZ2U6IHBhZ2luYXRpb25JY29uTGFzdFBhZ2UsIHBhZ2luYXRpb25JY29uRmlyc3RQYWdlOiBwYWdpbmF0aW9uSWNvbkZpcnN0UGFnZSwgcGFnaW5hdGlvbkljb25OZXh0OiBwYWdpbmF0aW9uSWNvbk5leHQsIHBhZ2luYXRpb25JY29uUHJldmlvdXM6IHBhZ2luYXRpb25JY29uUHJldmlvdXMsIHBhZ2luYXRpb25Db21wb25lbnRPcHRpb25zOiBwYWdpbmF0aW9uQ29tcG9uZW50T3B0aW9ucyB9KSkpKSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBSZWFjdC5tZW1vKERhdGFUYWJsZSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgc3R5bGVkX2NvbXBvbmVudHNfMSA9IHJlcXVpcmUoXCJzdHlsZWQtY29tcG9uZW50c1wiKTtcbnZhciBCdXR0b25TdHlsZSA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5idXR0b24odGVtcGxhdGVPYmplY3RfMSB8fCAodGVtcGxhdGVPYmplY3RfMSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0dXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXHRib3JkZXI6IG5vbmU7XFxuXFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHR1c2VyLXNlbGVjdDogbm9uZTtcXG5cXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcdGJvcmRlcjogbm9uZTtcXG5cXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG5cXHRcIiwgXCI7XFxuXCJdKSksIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciB0aGVtZSA9IF9hLnRoZW1lO1xuICAgIHJldHVybiB0aGVtZS5leHBhbmRlckJ1dHRvbi5zdHlsZTtcbn0pO1xuZnVuY3Rpb24gRXhwYW5kZXJCdXR0b24oX2EpIHtcbiAgICB2YXIgX2IgPSBfYS5kaXNhYmxlZCwgZGlzYWJsZWQgPSBfYiA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYiwgX2MgPSBfYS5leHBhbmRlZCwgZXhwYW5kZWQgPSBfYyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYywgZXhwYW5kYWJsZUljb24gPSBfYS5leHBhbmRhYmxlSWNvbiwgaWQgPSBfYS5pZCwgcm93ID0gX2Eucm93LCBvblRvZ2dsZWQgPSBfYS5vblRvZ2dsZWQ7XG4gICAgdmFyIGljb24gPSBleHBhbmRlZCA/IGV4cGFuZGFibGVJY29uLmV4cGFuZGVkIDogZXhwYW5kYWJsZUljb24uY29sbGFwc2VkO1xuICAgIHZhciBoYW5kbGVUb2dnbGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBvblRvZ2dsZWQgJiYgb25Ub2dnbGVkKHJvdyk7IH07XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvblN0eWxlLCB7IFwiYXJpYS1kaXNhYmxlZFwiOiBkaXNhYmxlZCwgb25DbGljazogaGFuZGxlVG9nZ2xlLCBcImRhdGEtdGVzdGlkXCI6IFwiZXhwYW5kZXItYnV0dG9uLVwiLmNvbmNhdChpZCksIGRpc2FibGVkOiBkaXNhYmxlZCwgXCJhcmlhLWxhYmVsXCI6IGV4cGFuZGVkID8gJ0NvbGxhcHNlIFJvdycgOiAnRXhwYW5kIFJvdycsIHJvbGU6IFwiYnV0dG9uXCIsIHR5cGU6IFwiYnV0dG9uXCIgfSwgaWNvbikpO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gRXhwYW5kZXJCdXR0b247XG52YXIgdGVtcGxhdGVPYmplY3RfMTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG4vLyBAdHMtaWdub3JlXG52YXIgc3R5bGVkX2NvbXBvbmVudHNfMSA9IHJlcXVpcmUoXCJzdHlsZWQtY29tcG9uZW50c1wiKTtcbnZhciBFeHBhbmRlclJvd1N0eWxlID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmRpdih0ZW1wbGF0ZU9iamVjdF8xIHx8ICh0ZW1wbGF0ZU9iamVjdF8xID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUuZXhwYW5kZXJSb3cuc3R5bGU7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgZXh0ZW5kZWRSb3dTdHlsZSA9IF9hLmV4dGVuZGVkUm93U3R5bGU7XG4gICAgcmV0dXJuIGV4dGVuZGVkUm93U3R5bGU7XG59KTtcbmZ1bmN0aW9uIEV4cGFuZGVyUm93KF9hKSB7XG4gICAgdmFyIGRhdGEgPSBfYS5kYXRhLCBFeHBhbmRlckNvbXBvbmVudCA9IF9hLkV4cGFuZGVyQ29tcG9uZW50LCBleHBhbmRlckNvbXBvbmVudFByb3BzID0gX2EuZXhwYW5kZXJDb21wb25lbnRQcm9wcywgZXh0ZW5kZWRSb3dTdHlsZSA9IF9hLmV4dGVuZGVkUm93U3R5bGUsIGV4dGVuZGVkQ2xhc3NOYW1lcyA9IF9hLmV4dGVuZGVkQ2xhc3NOYW1lcztcbiAgICAvLyB3ZSBuZWVkIHRvIHN0cmlwIG9mIHJkdF9UYWJsZVJvdyBmcm9tIGV4dGVuZGVkQ2xhc3NOYW1lc1xuICAgIHZhciBjbGFzc05hbWVzU3BsaXQgPSBleHRlbmRlZENsYXNzTmFtZXMuc3BsaXQoJyAnKS5maWx0ZXIoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMgIT09ICdyZHRfVGFibGVSb3cnOyB9KTtcbiAgICB2YXIgY2xhc3NOYW1lcyA9IF9fc3ByZWFkQXJyYXkoWydyZHRfRXhwYW5kZXJSb3cnXSwgY2xhc3NOYW1lc1NwbGl0LCB0cnVlKS5qb2luKCcgJyk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KEV4cGFuZGVyUm93U3R5bGUsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWVzLCBleHRlbmRlZFJvd1N0eWxlOiBleHRlbmRlZFJvd1N0eWxlIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kZXJDb21wb25lbnQsIF9fYXNzaWduKHsgZGF0YTogZGF0YSB9LCBleHBhbmRlckNvbXBvbmVudFByb3BzKSkpKTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IFJlYWN0Lm1lbW8oRXhwYW5kZXJSb3cpO1xudmFyIHRlbXBsYXRlT2JqZWN0XzE7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgc3R5bGVkX2NvbXBvbmVudHNfMSA9IHJlcXVpcmUoXCJzdHlsZWQtY29tcG9uZW50c1wiKTtcbnZhciBOb0RhdGFXcmFwcGVyID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmRpdih0ZW1wbGF0ZU9iamVjdF8xIHx8ICh0ZW1wbGF0ZU9iamVjdF8xID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUubm9EYXRhLnN0eWxlO1xufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBOb0RhdGFXcmFwcGVyO1xudmFyIHRlbXBsYXRlT2JqZWN0XzE7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgU2VsZWN0XzEgPSByZXF1aXJlKFwiLi9TZWxlY3RcIik7XG52YXIgdXRpbF8xID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbnZhciB1c2VXaW5kb3dTaXplXzEgPSByZXF1aXJlKFwiLi9ob29rcy91c2VXaW5kb3dTaXplXCIpO1xudmFyIHVzZVJUTF8xID0gcmVxdWlyZShcIi4vaG9va3MvdXNlUlRMXCIpO1xudmFyIG1lZGlhXzEgPSByZXF1aXJlKFwiLi9tZWRpYVwiKTtcbnZhciBkZWZhdWx0UHJvcHNfMSA9IHJlcXVpcmUoXCIuL2RlZmF1bHRQcm9wc1wiKTtcbnZhciBkZWZhdWx0Q29tcG9uZW50T3B0aW9ucyA9IHtcbiAgICByb3dzUGVyUGFnZVRleHQ6ICdSb3dzIHBlciBwYWdlOicsXG4gICAgcmFuZ2VTZXBhcmF0b3JUZXh0OiAnb2YnLFxuICAgIG5vUm93c1BlclBhZ2U6IGZhbHNlLFxuICAgIHNlbGVjdEFsbFJvd3NJdGVtOiBmYWxzZSxcbiAgICBzZWxlY3RBbGxSb3dzSXRlbVRleHQ6ICdBbGwnLFxufTtcbnZhciBQYWdpbmF0aW9uV3JhcHBlciA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5uYXYodGVtcGxhdGVPYmplY3RfMSB8fCAodGVtcGxhdGVPYmplY3RfMSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleDogMSAxIGF1dG87XFxuXFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0cGFkZGluZy1yaWdodDogOHB4O1xcblxcdHBhZGRpbmctbGVmdDogOHB4O1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdFwiLCBcIjtcXG5cIl0sIFtcIlxcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleDogMSAxIGF1dG87XFxuXFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0cGFkZGluZy1yaWdodDogOHB4O1xcblxcdHBhZGRpbmctbGVmdDogOHB4O1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHRoZW1lLnBhZ2luYXRpb24uc3R5bGU7XG59KTtcbnZhciBCdXR0b24gPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuYnV0dG9uKHRlbXBsYXRlT2JqZWN0XzIgfHwgKHRlbXBsYXRlT2JqZWN0XzIgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0ZGlzcGxheTogYmxvY2s7XFxuXFx0dXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0Ym9yZGVyOiBub25lO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXCJdLCBbXCJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0ZGlzcGxheTogYmxvY2s7XFxuXFx0dXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0Ym9yZGVyOiBub25lO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXCJdKSksIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciB0aGVtZSA9IF9hLnRoZW1lO1xuICAgIHJldHVybiB0aGVtZS5wYWdpbmF0aW9uLnBhZ2VCdXR0b25zU3R5bGU7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgaXNSVEwgPSBfYS5pc1JUTDtcbiAgICByZXR1cm4gaXNSVEwgJiYgJ3RyYW5zZm9ybTogc2NhbGUoLTEsIC0xKSc7XG59KTtcbnZhciBQYWdlTGlzdCA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5kaXYodGVtcGxhdGVPYmplY3RfNCB8fCAodGVtcGxhdGVPYmplY3RfNCA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRib3JkZXItcmFkaXVzOiA0cHg7XFxuXFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXHRcIiwgXCI7XFxuXCJdLCBbXCJcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0Ym9yZGVyLXJhZGl1czogNHB4O1xcblxcdHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBtZWRpYV8xLm1lZGlhLnNtKHRlbXBsYXRlT2JqZWN0XzMgfHwgKHRlbXBsYXRlT2JqZWN0XzMgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xcbiAgXCJdLCBbXCJcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xcbiAgXCJdKSkpKTtcbnZhciBTcGFuID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LnNwYW4odGVtcGxhdGVPYmplY3RfNSB8fCAodGVtcGxhdGVPYmplY3RfNSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdGZsZXgtc2hyaW5rOiAxO1xcblxcdHVzZXItc2VsZWN0OiBub25lO1xcblwiXSwgW1wiXFxuXFx0ZmxleC1zaHJpbms6IDE7XFxuXFx0dXNlci1zZWxlY3Q6IG5vbmU7XFxuXCJdKSkpO1xudmFyIFJhbmdlID0gKDAsIHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdCkoU3BhbikodGVtcGxhdGVPYmplY3RfNiB8fCAodGVtcGxhdGVPYmplY3RfNiA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdG1hcmdpbjogMCAyNHB4O1xcblwiXSwgW1wiXFxuXFx0bWFyZ2luOiAwIDI0cHg7XFxuXCJdKSkpO1xudmFyIFJvd0xhYmVsID0gKDAsIHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdCkoU3BhbikodGVtcGxhdGVPYmplY3RfNyB8fCAodGVtcGxhdGVPYmplY3RfNyA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdG1hcmdpbjogMCA0cHg7XFxuXCJdLCBbXCJcXG5cXHRtYXJnaW46IDAgNHB4O1xcblwiXSkpKTtcbmZ1bmN0aW9uIFBhZ2luYXRpb24oX2EpIHtcbiAgICB2YXIgcm93c1BlclBhZ2UgPSBfYS5yb3dzUGVyUGFnZSwgcm93Q291bnQgPSBfYS5yb3dDb3VudCwgY3VycmVudFBhZ2UgPSBfYS5jdXJyZW50UGFnZSwgX2IgPSBfYS5kaXJlY3Rpb24sIGRpcmVjdGlvbiA9IF9iID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMuZGlyZWN0aW9uIDogX2IsIF9jID0gX2EucGFnaW5hdGlvblJvd3NQZXJQYWdlT3B0aW9ucywgcGFnaW5hdGlvblJvd3NQZXJQYWdlT3B0aW9ucyA9IF9jID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMucGFnaW5hdGlvblJvd3NQZXJQYWdlT3B0aW9ucyA6IF9jLCBfZCA9IF9hLnBhZ2luYXRpb25JY29uTGFzdFBhZ2UsIHBhZ2luYXRpb25JY29uTGFzdFBhZ2UgPSBfZCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb25JY29uTGFzdFBhZ2UgOiBfZCwgX2UgPSBfYS5wYWdpbmF0aW9uSWNvbkZpcnN0UGFnZSwgcGFnaW5hdGlvbkljb25GaXJzdFBhZ2UgPSBfZSA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb25JY29uRmlyc3RQYWdlIDogX2UsIF9mID0gX2EucGFnaW5hdGlvbkljb25OZXh0LCBwYWdpbmF0aW9uSWNvbk5leHQgPSBfZiA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb25JY29uTmV4dCA6IF9mLCBfZyA9IF9hLnBhZ2luYXRpb25JY29uUHJldmlvdXMsIHBhZ2luYXRpb25JY29uUHJldmlvdXMgPSBfZyA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb25JY29uUHJldmlvdXMgOiBfZywgX2ggPSBfYS5wYWdpbmF0aW9uQ29tcG9uZW50T3B0aW9ucywgcGFnaW5hdGlvbkNvbXBvbmVudE9wdGlvbnMgPSBfaCA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BzXzEuZGVmYXVsdFByb3BzLnBhZ2luYXRpb25Db21wb25lbnRPcHRpb25zIDogX2gsIF9qID0gX2Eub25DaGFuZ2VSb3dzUGVyUGFnZSwgb25DaGFuZ2VSb3dzUGVyUGFnZSA9IF9qID09PSB2b2lkIDAgPyBkZWZhdWx0UHJvcHNfMS5kZWZhdWx0UHJvcHMub25DaGFuZ2VSb3dzUGVyUGFnZSA6IF9qLCBfayA9IF9hLm9uQ2hhbmdlUGFnZSwgb25DaGFuZ2VQYWdlID0gX2sgPT09IHZvaWQgMCA/IGRlZmF1bHRQcm9wc18xLmRlZmF1bHRQcm9wcy5vbkNoYW5nZVBhZ2UgOiBfaztcbiAgICB2YXIgd2luZG93U2l6ZSA9ICgwLCB1c2VXaW5kb3dTaXplXzEuZGVmYXVsdCkoKTtcbiAgICB2YXIgaXNSVEwgPSAoMCwgdXNlUlRMXzEuZGVmYXVsdCkoZGlyZWN0aW9uKTtcbiAgICB2YXIgc2hvdWxkU2hvdyA9IHdpbmRvd1NpemUud2lkdGggJiYgd2luZG93U2l6ZS53aWR0aCA+IG1lZGlhXzEuU01BTEw7XG4gICAgLy8gY29uc3QgaXNSVEwgPSBkZXRlY3RSVEwoZGlyZWN0aW9uKTtcbiAgICB2YXIgbnVtUGFnZXMgPSAoMCwgdXRpbF8xLmdldE51bWJlck9mUGFnZXMpKHJvd0NvdW50LCByb3dzUGVyUGFnZSk7XG4gICAgdmFyIGxhc3RJbmRleCA9IGN1cnJlbnRQYWdlICogcm93c1BlclBhZ2U7XG4gICAgdmFyIGZpcnN0SW5kZXggPSBsYXN0SW5kZXggLSByb3dzUGVyUGFnZSArIDE7XG4gICAgdmFyIGRpc2FibGVkTGVzc2VyID0gY3VycmVudFBhZ2UgPT09IDE7XG4gICAgdmFyIGRpc2FibGVkR3JlYXRlciA9IGN1cnJlbnRQYWdlID09PSBudW1QYWdlcztcbiAgICB2YXIgb3B0aW9ucyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBkZWZhdWx0Q29tcG9uZW50T3B0aW9ucyksIHBhZ2luYXRpb25Db21wb25lbnRPcHRpb25zKTtcbiAgICB2YXIgcmFuZ2UgPSBjdXJyZW50UGFnZSA9PT0gbnVtUGFnZXNcbiAgICAgICAgPyBcIlwiLmNvbmNhdChmaXJzdEluZGV4LCBcIi1cIikuY29uY2F0KHJvd0NvdW50LCBcIiBcIikuY29uY2F0KG9wdGlvbnMucmFuZ2VTZXBhcmF0b3JUZXh0LCBcIiBcIikuY29uY2F0KHJvd0NvdW50KVxuICAgICAgICA6IFwiXCIuY29uY2F0KGZpcnN0SW5kZXgsIFwiLVwiKS5jb25jYXQobGFzdEluZGV4LCBcIiBcIikuY29uY2F0KG9wdGlvbnMucmFuZ2VTZXBhcmF0b3JUZXh0LCBcIiBcIikuY29uY2F0KHJvd0NvdW50KTtcbiAgICB2YXIgaGFuZGxlUHJldmlvdXMgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7IHJldHVybiBvbkNoYW5nZVBhZ2UoY3VycmVudFBhZ2UgLSAxKTsgfSwgW2N1cnJlbnRQYWdlLCBvbkNoYW5nZVBhZ2VdKTtcbiAgICB2YXIgaGFuZGxlTmV4dCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uQ2hhbmdlUGFnZShjdXJyZW50UGFnZSArIDEpOyB9LCBbY3VycmVudFBhZ2UsIG9uQ2hhbmdlUGFnZV0pO1xuICAgIHZhciBoYW5kbGVGaXJzdCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uQ2hhbmdlUGFnZSgxKTsgfSwgW29uQ2hhbmdlUGFnZV0pO1xuICAgIHZhciBoYW5kbGVMYXN0ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkgeyByZXR1cm4gb25DaGFuZ2VQYWdlKCgwLCB1dGlsXzEuZ2V0TnVtYmVyT2ZQYWdlcykocm93Q291bnQsIHJvd3NQZXJQYWdlKSk7IH0sIFtvbkNoYW5nZVBhZ2UsIHJvd0NvdW50LCByb3dzUGVyUGFnZV0pO1xuICAgIHZhciBoYW5kbGVSb3dzUGVyUGFnZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChlKSB7IHJldHVybiBvbkNoYW5nZVJvd3NQZXJQYWdlKE51bWJlcihlLnRhcmdldC52YWx1ZSksIGN1cnJlbnRQYWdlKTsgfSwgW2N1cnJlbnRQYWdlLCBvbkNoYW5nZVJvd3NQZXJQYWdlXSk7XG4gICAgdmFyIHNlbGVjdE9wdGlvbnMgPSBwYWdpbmF0aW9uUm93c1BlclBhZ2VPcHRpb25zLm1hcChmdW5jdGlvbiAobnVtKSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcIm9wdGlvblwiLCB7IGtleTogbnVtLCB2YWx1ZTogbnVtIH0sIG51bSkpOyB9KTtcbiAgICBpZiAob3B0aW9ucy5zZWxlY3RBbGxSb3dzSXRlbSkge1xuICAgICAgICBzZWxlY3RPcHRpb25zLnB1c2goUmVhY3QuY3JlYXRlRWxlbWVudChcIm9wdGlvblwiLCB7IGtleTogLTEsIHZhbHVlOiByb3dDb3VudCB9LCBvcHRpb25zLnNlbGVjdEFsbFJvd3NJdGVtVGV4dCkpO1xuICAgIH1cbiAgICB2YXIgc2VsZWN0ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2VsZWN0XzEuZGVmYXVsdCwgeyBvbkNoYW5nZTogaGFuZGxlUm93c1BlclBhZ2UsIGRlZmF1bHRWYWx1ZTogcm93c1BlclBhZ2UsIFwiYXJpYS1sYWJlbFwiOiBvcHRpb25zLnJvd3NQZXJQYWdlVGV4dCB9LCBzZWxlY3RPcHRpb25zKSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFBhZ2luYXRpb25XcmFwcGVyLCB7IGNsYXNzTmFtZTogXCJyZHRfUGFnaW5hdGlvblwiIH0sXG4gICAgICAgICFvcHRpb25zLm5vUm93c1BlclBhZ2UgJiYgc2hvdWxkU2hvdyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUm93TGFiZWwsIG51bGwsIG9wdGlvbnMucm93c1BlclBhZ2VUZXh0KSxcbiAgICAgICAgICAgIHNlbGVjdCkpLFxuICAgICAgICBzaG91bGRTaG93ICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmFuZ2UsIG51bGwsIHJhbmdlKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChQYWdlTGlzdCwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQnV0dG9uLCB7IGlkOiBcInBhZ2luYXRpb24tZmlyc3QtcGFnZVwiLCB0eXBlOiBcImJ1dHRvblwiLCBcImFyaWEtbGFiZWxcIjogXCJGaXJzdCBQYWdlXCIsIFwiYXJpYS1kaXNhYmxlZFwiOiBkaXNhYmxlZExlc3Nlciwgb25DbGljazogaGFuZGxlRmlyc3QsIGRpc2FibGVkOiBkaXNhYmxlZExlc3NlciwgaXNSVEw6IGlzUlRMIH0sIHBhZ2luYXRpb25JY29uRmlyc3RQYWdlKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQnV0dG9uLCB7IGlkOiBcInBhZ2luYXRpb24tcHJldmlvdXMtcGFnZVwiLCB0eXBlOiBcImJ1dHRvblwiLCBcImFyaWEtbGFiZWxcIjogXCJQcmV2aW91cyBQYWdlXCIsIFwiYXJpYS1kaXNhYmxlZFwiOiBkaXNhYmxlZExlc3Nlciwgb25DbGljazogaGFuZGxlUHJldmlvdXMsIGRpc2FibGVkOiBkaXNhYmxlZExlc3NlciwgaXNSVEw6IGlzUlRMIH0sIHBhZ2luYXRpb25JY29uUHJldmlvdXMpLFxuICAgICAgICAgICAgIW9wdGlvbnMubm9Sb3dzUGVyUGFnZSAmJiAhc2hvdWxkU2hvdyAmJiBzZWxlY3QsXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvbiwgeyBpZDogXCJwYWdpbmF0aW9uLW5leHQtcGFnZVwiLCB0eXBlOiBcImJ1dHRvblwiLCBcImFyaWEtbGFiZWxcIjogXCJOZXh0IFBhZ2VcIiwgXCJhcmlhLWRpc2FibGVkXCI6IGRpc2FibGVkR3JlYXRlciwgb25DbGljazogaGFuZGxlTmV4dCwgZGlzYWJsZWQ6IGRpc2FibGVkR3JlYXRlciwgaXNSVEw6IGlzUlRMIH0sIHBhZ2luYXRpb25JY29uTmV4dCksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvbiwgeyBpZDogXCJwYWdpbmF0aW9uLWxhc3QtcGFnZVwiLCB0eXBlOiBcImJ1dHRvblwiLCBcImFyaWEtbGFiZWxcIjogXCJMYXN0IFBhZ2VcIiwgXCJhcmlhLWRpc2FibGVkXCI6IGRpc2FibGVkR3JlYXRlciwgb25DbGljazogaGFuZGxlTGFzdCwgZGlzYWJsZWQ6IGRpc2FibGVkR3JlYXRlciwgaXNSVEw6IGlzUlRMIH0sIHBhZ2luYXRpb25JY29uTGFzdFBhZ2UpKSkpO1xufVxuLy8gZXhwb3J0IGRlZmF1bHQgUmVhY3QubWVtbyhQYWdpbmF0aW9uKTtcbmV4cG9ydHMuZGVmYXVsdCA9IFBhZ2luYXRpb247XG52YXIgdGVtcGxhdGVPYmplY3RfMSwgdGVtcGxhdGVPYmplY3RfMiwgdGVtcGxhdGVPYmplY3RfMywgdGVtcGxhdGVPYmplY3RfNCwgdGVtcGxhdGVPYmplY3RfNSwgdGVtcGxhdGVPYmplY3RfNiwgdGVtcGxhdGVPYmplY3RfNztcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIFByb2dyZXNzV3JhcHBlciA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5kaXYodGVtcGxhdGVPYmplY3RfMSB8fCAodGVtcGxhdGVPYmplY3RfMSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRcIiwgXCI7XFxuXCJdLCBbXCJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAocHJvcHMpIHsgcmV0dXJuIHByb3BzLnRoZW1lLnByb2dyZXNzLnN0eWxlOyB9KTtcbmV4cG9ydHMuZGVmYXVsdCA9IFByb2dyZXNzV3JhcHBlcjtcbnZhciB0ZW1wbGF0ZU9iamVjdF8xO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG4vKiBIYWNrIHdoZW4gdXNpbmcgbGF5b3ZlcnMvbWVudXMgdGhhdCBnZXQgY2xpcHBlZCBieSBvdmVyZmxvdy14XG4gIHdoZW4gYSB0YWJsZSBpcyByZXNwb25zaXZlIGR1ZSB0byBvdmVyZmxvdy14eSBzY3JvbGwgc3BlYyBzdHVwaWRpdHkuXG4gIE5vdGU6IFRoZSBwYXJlbnQgZWxlbWVudCBoZWlnaHQgbXVzdCBiZSBzZXQgdG8gMTAwJSFcbiAgaHR0cHM6Ly93d3cuYnJ1bmlsZG8ub3JnL3Rlc3QvT3ZlcmZsb3d4eTIuaHRtbFxuKi9cbnZhciBSZXNwb25zaXZlV3JhcHBlciA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5kaXYodGVtcGxhdGVPYmplY3RfMyB8fCAodGVtcGxhdGVPYmplY3RfMyA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRib3JkZXItcmFkaXVzOiBpbmhlcml0O1xcblxcdFwiLCBcIjtcXG5cXG5cXHRcIiwgXCI7XFxuXFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XFxuXFx0XCIsIFwiO1xcblxcblxcdFwiLCBcIjtcXG5cXG5cXHRcIiwgXCI7XFxuXCJdKSksIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciByZXNwb25zaXZlID0gX2EucmVzcG9uc2l2ZSwgZml4ZWRIZWFkZXIgPSBfYS5maXhlZEhlYWRlcjtcbiAgICByZXR1cm4gcmVzcG9uc2l2ZSAmJiAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5jc3MpKHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRcXHRcXHRvdmVyZmxvdy14OiBhdXRvO1xcblxcblxcdFxcdFxcdC8vIGhpZGRlbiBwcmV2ZW50cyB2ZXJ0aWNhbCBzY3JvbGxpbmcgaW4gZmlyZWZveCB3aGVuIGZpeGVkSGVhZGVyIGlzIGRpc2FibGVkXFxuXFx0XFx0XFx0b3ZlcmZsb3cteTogXCIsIFwiO1xcblxcdFxcdFxcdG1pbi1oZWlnaHQ6IDA7XFxuXFx0XFx0XCJdLCBbXCJcXG5cXHRcXHRcXHRvdmVyZmxvdy14OiBhdXRvO1xcblxcblxcdFxcdFxcdC8vIGhpZGRlbiBwcmV2ZW50cyB2ZXJ0aWNhbCBzY3JvbGxpbmcgaW4gZmlyZWZveCB3aGVuIGZpeGVkSGVhZGVyIGlzIGRpc2FibGVkXFxuXFx0XFx0XFx0b3ZlcmZsb3cteTogXCIsIFwiO1xcblxcdFxcdFxcdG1pbi1oZWlnaHQ6IDA7XFxuXFx0XFx0XCJdKSksIGZpeGVkSGVhZGVyID8gJ2F1dG8nIDogJ2hpZGRlbicpO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIF9iID0gX2EuZml4ZWRIZWFkZXIsIGZpeGVkSGVhZGVyID0gX2IgPT09IHZvaWQgMCA/IGZhbHNlIDogX2IsIF9jID0gX2EuZml4ZWRIZWFkZXJTY3JvbGxIZWlnaHQsIGZpeGVkSGVhZGVyU2Nyb2xsSGVpZ2h0ID0gX2MgPT09IHZvaWQgMCA/ICcxMDB2aCcgOiBfYztcbiAgICByZXR1cm4gZml4ZWRIZWFkZXIgJiYgKDAsIHN0eWxlZF9jb21wb25lbnRzXzEuY3NzKSh0ZW1wbGF0ZU9iamVjdF8yIHx8ICh0ZW1wbGF0ZU9iamVjdF8yID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0XFx0XFx0bWF4LWhlaWdodDogXCIsIFwiO1xcblxcdFxcdFxcdC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcXG5cXHRcXHRcIl0sIFtcIlxcblxcdFxcdFxcdG1heC1oZWlnaHQ6IFwiLCBcIjtcXG5cXHRcXHRcXHQtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XFxuXFx0XFx0XCJdKSksIGZpeGVkSGVhZGVyU2Nyb2xsSGVpZ2h0KTtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciB0aGVtZSA9IF9hLnRoZW1lO1xuICAgIHJldHVybiB0aGVtZS5yZXNwb25zaXZlV3JhcHBlci5zdHlsZTtcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gUmVzcG9uc2l2ZVdyYXBwZXI7XG52YXIgdGVtcGxhdGVPYmplY3RfMSwgdGVtcGxhdGVPYmplY3RfMiwgdGVtcGxhdGVPYmplY3RfMztcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgc3R5bGVkX2NvbXBvbmVudHNfMSA9IHJlcXVpcmUoXCJzdHlsZWQtY29tcG9uZW50c1wiKTtcbnZhciBEcm9wZG93bl8xID0gcmVxdWlyZShcIi4vaWNvbnMvRHJvcGRvd25cIik7XG52YXIgU2VsZWN0Q29udHJvbCA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5zZWxlY3QodGVtcGxhdGVPYmplY3RfMSB8fCAodGVtcGxhdGVPYmplY3RfMSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdGN1cnNvcjogcG9pbnRlcjtcXG5cXHRoZWlnaHQ6IDI0cHg7XFxuXFx0bWF4LXdpZHRoOiAxMDAlO1xcblxcdHVzZXItc2VsZWN0OiBub25lO1xcblxcdHBhZGRpbmctbGVmdDogOHB4O1xcblxcdHBhZGRpbmctcmlnaHQ6IDI0cHg7XFxuXFx0Ym94LXNpemluZzogY29udGVudC1ib3g7XFxuXFx0Zm9udC1zaXplOiBpbmhlcml0O1xcblxcdGNvbG9yOiBpbmhlcml0O1xcblxcdGJvcmRlcjogbm9uZTtcXG5cXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG5cXHRhcHBlYXJhbmNlOiBub25lO1xcblxcdGRpcmVjdGlvbjogbHRyO1xcblxcdGZsZXgtc2hyaW5rOiAwO1xcblxcblxcdCY6Oi1tcy1leHBhbmQge1xcblxcdFxcdGRpc3BsYXk6IG5vbmU7XFxuXFx0fVxcblxcblxcdCY6ZGlzYWJsZWQ6Oi1tcy1leHBhbmQge1xcblxcdFxcdGJhY2tncm91bmQ6ICNmNjA7XFxuXFx0fVxcblxcblxcdG9wdGlvbiB7XFxuXFx0XFx0Y29sb3I6IGluaXRpYWw7XFxuXFx0fVxcblwiXSwgW1wiXFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcblxcdGhlaWdodDogMjRweDtcXG5cXHRtYXgtd2lkdGg6IDEwMCU7XFxuXFx0dXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0cGFkZGluZy1sZWZ0OiA4cHg7XFxuXFx0cGFkZGluZy1yaWdodDogMjRweDtcXG5cXHRib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXG5cXHRmb250LXNpemU6IGluaGVyaXQ7XFxuXFx0Y29sb3I6IGluaGVyaXQ7XFxuXFx0Ym9yZGVyOiBub25lO1xcblxcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcblxcdGFwcGVhcmFuY2U6IG5vbmU7XFxuXFx0ZGlyZWN0aW9uOiBsdHI7XFxuXFx0ZmxleC1zaHJpbms6IDA7XFxuXFxuXFx0Jjo6LW1zLWV4cGFuZCB7XFxuXFx0XFx0ZGlzcGxheTogbm9uZTtcXG5cXHR9XFxuXFxuXFx0JjpkaXNhYmxlZDo6LW1zLWV4cGFuZCB7XFxuXFx0XFx0YmFja2dyb3VuZDogI2Y2MDtcXG5cXHR9XFxuXFxuXFx0b3B0aW9uIHtcXG5cXHRcXHRjb2xvcjogaW5pdGlhbDtcXG5cXHR9XFxuXCJdKSkpO1xudmFyIFNlbGVjdFdyYXBwZXIgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzIgfHwgKHRlbXBsYXRlT2JqZWN0XzIgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0ZmxleC1zaHJpbms6IDA7XFxuXFx0Zm9udC1zaXplOiBpbmhlcml0O1xcblxcdGNvbG9yOiBpbmhlcml0O1xcblxcdG1hcmdpbi10b3A6IDFweDtcXG5cXG5cXHRzdmcge1xcblxcdFxcdHRvcDogMDtcXG5cXHRcXHRyaWdodDogMDtcXG5cXHRcXHRjb2xvcjogaW5oZXJpdDtcXG5cXHRcXHRwb3NpdGlvbjogYWJzb2x1dGU7XFxuXFx0XFx0ZmlsbDogY3VycmVudENvbG9yO1xcblxcdFxcdHdpZHRoOiAyNHB4O1xcblxcdFxcdGhlaWdodDogMjRweDtcXG5cXHRcXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuXFx0XFx0dXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0XFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XFxuXFx0fVxcblwiXSwgW1wiXFxuXFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdGZsZXgtc2hyaW5rOiAwO1xcblxcdGZvbnQtc2l6ZTogaW5oZXJpdDtcXG5cXHRjb2xvcjogaW5oZXJpdDtcXG5cXHRtYXJnaW4tdG9wOiAxcHg7XFxuXFxuXFx0c3ZnIHtcXG5cXHRcXHR0b3A6IDA7XFxuXFx0XFx0cmlnaHQ6IDA7XFxuXFx0XFx0Y29sb3I6IGluaGVyaXQ7XFxuXFx0XFx0cG9zaXRpb246IGFic29sdXRlO1xcblxcdFxcdGZpbGw6IGN1cnJlbnRDb2xvcjtcXG5cXHRcXHR3aWR0aDogMjRweDtcXG5cXHRcXHRoZWlnaHQ6IDI0cHg7XFxuXFx0XFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xcblxcdFxcdHVzZXItc2VsZWN0OiBub25lO1xcblxcdFxcdHBvaW50ZXItZXZlbnRzOiBub25lO1xcblxcdH1cXG5cIl0pKSk7XG52YXIgU2VsZWN0ID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGRlZmF1bHRWYWx1ZSA9IF9hLmRlZmF1bHRWYWx1ZSwgb25DaGFuZ2UgPSBfYS5vbkNoYW5nZSwgcmVzdCA9IF9fcmVzdChfYSwgW1wiZGVmYXVsdFZhbHVlXCIsIFwib25DaGFuZ2VcIl0pO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChTZWxlY3RXcmFwcGVyLCBudWxsLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIF9fYXNzaWduKHsgb25DaGFuZ2U6IG9uQ2hhbmdlLCBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSB9LCByZXN0KSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJvcGRvd25fMS5kZWZhdWx0LCBudWxsKSkpO1xufTtcbmV4cG9ydHMuZGVmYXVsdCA9IFNlbGVjdDtcbnZhciB0ZW1wbGF0ZU9iamVjdF8xLCB0ZW1wbGF0ZU9iamVjdF8yO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgZGlzYWJsZWRDU1MgPSAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5jc3MpKHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRwb2ludGVyLWV2ZW50czogbm9uZTtcXG5cXHRvcGFjaXR5OiAwLjQ7XFxuXCJdLCBbXCJcXG5cXHRwb2ludGVyLWV2ZW50czogbm9uZTtcXG5cXHRvcGFjaXR5OiAwLjQ7XFxuXCJdKSkpO1xudmFyIFRhYmxlU3R5bGUgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzIgfHwgKHRlbXBsYXRlT2JqZWN0XzIgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcblxcdG1heC13aWR0aDogMTAwJTtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXgtd2lkdGg6IDEwMCU7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGRpc2FibGVkID0gX2EuZGlzYWJsZWQ7XG4gICAgcmV0dXJuIGRpc2FibGVkICYmIGRpc2FibGVkQ1NTO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHRoZW1lLnRhYmxlLnN0eWxlO1xufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBUYWJsZVN0eWxlO1xudmFyIHRlbXBsYXRlT2JqZWN0XzEsIHRlbXBsYXRlT2JqZWN0XzI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgc3R5bGVkX2NvbXBvbmVudHNfMSA9IHJlcXVpcmUoXCJzdHlsZWQtY29tcG9uZW50c1wiKTtcbnZhciBCb2R5ID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmRpdih0ZW1wbGF0ZU9iamVjdF8xIHx8ICh0ZW1wbGF0ZU9iamVjdF8xID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcblwiXSwgW1wiXFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcblwiXSkpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEJvZHk7XG52YXIgdGVtcGxhdGVPYmplY3RfMTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbi8vIEB0cy1pZ25vcmVcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIENlbGxfMSA9IHJlcXVpcmUoXCIuL0NlbGxcIik7XG52YXIgdXRpbF8xID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbnZhciBvdmVyZmxvd0NTUyA9ICgwLCBzdHlsZWRfY29tcG9uZW50c18xLmNzcykodGVtcGxhdGVPYmplY3RfMSB8fCAodGVtcGxhdGVPYmplY3RfMSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdGRpdjpmaXJzdC1jaGlsZCB7XFxuXFx0XFx0d2hpdGUtc3BhY2U6IFwiLCBcIjtcXG5cXHRcXHRvdmVyZmxvdzogXCIsIFwiO1xcblxcdFxcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcblxcdH1cXG5cIl0sIFtcIlxcblxcdGRpdjpmaXJzdC1jaGlsZCB7XFxuXFx0XFx0d2hpdGUtc3BhY2U6IFwiLCBcIjtcXG5cXHRcXHRvdmVyZmxvdzogXCIsIFwiO1xcblxcdFxcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcblxcdH1cXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHdyYXBDZWxsID0gX2Eud3JhcENlbGw7XG4gICAgcmV0dXJuICh3cmFwQ2VsbCA/ICdub3JtYWwnIDogJ25vd3JhcCcpO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGFsbG93T3ZlcmZsb3cgPSBfYS5hbGxvd092ZXJmbG93O1xuICAgIHJldHVybiAoYWxsb3dPdmVyZmxvdyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nKTtcbn0pO1xudmFyIENlbGxTdHlsZSA9ICgwLCBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQpKENlbGxfMS5DZWxsRXh0ZW5kZWQpLmF0dHJzKGZ1bmN0aW9uIChwcm9wcykgeyByZXR1cm4gKHtcbiAgICBzdHlsZTogcHJvcHMuc3R5bGUsXG59KTsgfSkodGVtcGxhdGVPYmplY3RfMiB8fCAodGVtcGxhdGVPYmplY3RfMiA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXCJdKSksIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciByZW5kZXJBc0NlbGwgPSBfYS5yZW5kZXJBc0NlbGw7XG4gICAgcmV0dXJuICFyZW5kZXJBc0NlbGwgJiYgb3ZlcmZsb3dDU1M7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZSwgaXNEcmFnZ2luZyA9IF9hLmlzRHJhZ2dpbmc7XG4gICAgcmV0dXJuIGlzRHJhZ2dpbmcgJiYgdGhlbWUuY2VsbHMuZHJhZ2dpbmdTdHlsZTtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBjZWxsU3R5bGUgPSBfYS5jZWxsU3R5bGU7XG4gICAgcmV0dXJuIGNlbGxTdHlsZTtcbn0pO1xuZnVuY3Rpb24gQ2VsbChfYSkge1xuICAgIHZhciBpZCA9IF9hLmlkLCBjb2x1bW4gPSBfYS5jb2x1bW4sIHJvdyA9IF9hLnJvdywgcm93SW5kZXggPSBfYS5yb3dJbmRleCwgZGF0YVRhZyA9IF9hLmRhdGFUYWcsIGlzRHJhZ2dpbmcgPSBfYS5pc0RyYWdnaW5nLCBvbkRyYWdTdGFydCA9IF9hLm9uRHJhZ1N0YXJ0LCBvbkRyYWdPdmVyID0gX2Eub25EcmFnT3Zlciwgb25EcmFnRW5kID0gX2Eub25EcmFnRW5kLCBvbkRyYWdFbnRlciA9IF9hLm9uRHJhZ0VudGVyLCBvbkRyYWdMZWF2ZSA9IF9hLm9uRHJhZ0xlYXZlO1xuICAgIHZhciBfYiA9ICgwLCB1dGlsXzEuZ2V0Q29uZGl0aW9uYWxTdHlsZSkocm93LCBjb2x1bW4uY29uZGl0aW9uYWxDZWxsU3R5bGVzLCBbJ3JkdF9UYWJsZUNlbGwnXSksIHN0eWxlID0gX2Iuc3R5bGUsIGNsYXNzTmFtZXMgPSBfYi5jbGFzc05hbWVzO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChDZWxsU3R5bGUsIHsgaWQ6IGlkLCBcImRhdGEtY29sdW1uLWlkXCI6IGNvbHVtbi5pZCwgcm9sZTogXCJjZWxsXCIsIGNsYXNzTmFtZTogY2xhc3NOYW1lcywgXCJkYXRhLXRhZ1wiOiBkYXRhVGFnLCBjZWxsU3R5bGU6IGNvbHVtbi5zdHlsZSwgcmVuZGVyQXNDZWxsOiAhIWNvbHVtbi5jZWxsLCBhbGxvd092ZXJmbG93OiBjb2x1bW4uYWxsb3dPdmVyZmxvdywgYnV0dG9uOiBjb2x1bW4uYnV0dG9uLCBjZW50ZXI6IGNvbHVtbi5jZW50ZXIsIGNvbXBhY3Q6IGNvbHVtbi5jb21wYWN0LCBncm93OiBjb2x1bW4uZ3JvdywgaGlkZTogY29sdW1uLmhpZGUsIG1heFdpZHRoOiBjb2x1bW4ubWF4V2lkdGgsIG1pbldpZHRoOiBjb2x1bW4ubWluV2lkdGgsIHJpZ2h0OiBjb2x1bW4ucmlnaHQsIHdpZHRoOiBjb2x1bW4ud2lkdGgsIHdyYXBDZWxsOiBjb2x1bW4ud3JhcCwgc3R5bGU6IHN0eWxlLCBpc0RyYWdnaW5nOiBpc0RyYWdnaW5nLCBvbkRyYWdTdGFydDogb25EcmFnU3RhcnQsIG9uRHJhZ092ZXI6IG9uRHJhZ092ZXIsIG9uRHJhZ0VuZDogb25EcmFnRW5kLCBvbkRyYWdFbnRlcjogb25EcmFnRW50ZXIsIG9uRHJhZ0xlYXZlOiBvbkRyYWdMZWF2ZSB9LFxuICAgICAgICAhY29sdW1uLmNlbGwgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IFwiZGF0YS10YWdcIjogZGF0YVRhZyB9LCAoMCwgdXRpbF8xLmdldFByb3BlcnR5KShyb3csIGNvbHVtbi5zZWxlY3RvciwgY29sdW1uLmZvcm1hdCwgcm93SW5kZXgpKSxcbiAgICAgICAgY29sdW1uLmNlbGwgJiYgY29sdW1uLmNlbGwocm93LCByb3dJbmRleCwgY29sdW1uLCBpZCkpKTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IFJlYWN0Lm1lbW8oQ2VsbCk7XG52YXIgdGVtcGxhdGVPYmplY3RfMSwgdGVtcGxhdGVPYmplY3RfMjtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIENlbGxfMSA9IHJlcXVpcmUoXCIuL0NlbGxcIik7XG52YXIgQ2hlY2tib3hfMSA9IHJlcXVpcmUoXCIuL0NoZWNrYm94XCIpO1xudmFyIFRhYmxlQ2VsbENoZWNrYm94U3R5bGUgPSAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0KShDZWxsXzEuQ2VsbEJhc2UpKHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRmbGV4OiAwIDAgNDhweDtcXG5cXHRtaW4td2lkdGg6IDQ4cHg7XFxuXFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHR1c2VyLXNlbGVjdDogbm9uZTtcXG5cXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xcblwiXSwgW1wiXFxuXFx0ZmxleDogMCAwIDQ4cHg7XFxuXFx0bWluLXdpZHRoOiA0OHB4O1xcblxcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0dXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cIl0pKSk7XG5mdW5jdGlvbiBUYWJsZUNlbGxDaGVja2JveChfYSkge1xuICAgIHZhciBuYW1lID0gX2EubmFtZSwga2V5RmllbGQgPSBfYS5rZXlGaWVsZCwgcm93ID0gX2Eucm93LCByb3dDb3VudCA9IF9hLnJvd0NvdW50LCBzZWxlY3RlZCA9IF9hLnNlbGVjdGVkLCBzZWxlY3RhYmxlUm93c0NvbXBvbmVudCA9IF9hLnNlbGVjdGFibGVSb3dzQ29tcG9uZW50LCBzZWxlY3RhYmxlUm93c0NvbXBvbmVudFByb3BzID0gX2Euc2VsZWN0YWJsZVJvd3NDb21wb25lbnRQcm9wcywgc2VsZWN0YWJsZVJvd3NTaW5nbGUgPSBfYS5zZWxlY3RhYmxlUm93c1NpbmdsZSwgc2VsZWN0YWJsZVJvd0Rpc2FibGVkID0gX2Euc2VsZWN0YWJsZVJvd0Rpc2FibGVkLCBvblNlbGVjdGVkUm93ID0gX2Eub25TZWxlY3RlZFJvdztcbiAgICB2YXIgZGlzYWJsZWQgPSAhIShzZWxlY3RhYmxlUm93RGlzYWJsZWQgJiYgc2VsZWN0YWJsZVJvd0Rpc2FibGVkKHJvdykpO1xuICAgIHZhciBoYW5kbGVPblJvd1NlbGVjdGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBvblNlbGVjdGVkUm93KHtcbiAgICAgICAgICAgIHR5cGU6ICdTRUxFQ1RfU0lOR0xFX1JPVycsXG4gICAgICAgICAgICByb3c6IHJvdyxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQ6IHNlbGVjdGVkLFxuICAgICAgICAgICAga2V5RmllbGQ6IGtleUZpZWxkLFxuICAgICAgICAgICAgcm93Q291bnQ6IHJvd0NvdW50LFxuICAgICAgICAgICAgc2luZ2xlU2VsZWN0OiBzZWxlY3RhYmxlUm93c1NpbmdsZSxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFibGVDZWxsQ2hlY2tib3hTdHlsZSwgeyBvbkNsaWNrOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKTsgfSwgY2xhc3NOYW1lOiBcInJkdF9UYWJsZUNlbGxcIiwgbm9QYWRkaW5nOiB0cnVlIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3hfMS5kZWZhdWx0LCB7IG5hbWU6IG5hbWUsIGNvbXBvbmVudDogc2VsZWN0YWJsZVJvd3NDb21wb25lbnQsIGNvbXBvbmVudE9wdGlvbnM6IHNlbGVjdGFibGVSb3dzQ29tcG9uZW50UHJvcHMsIGNoZWNrZWQ6IHNlbGVjdGVkLCBcImFyaWEtY2hlY2tlZFwiOiBzZWxlY3RlZCwgb25DbGljazogaGFuZGxlT25Sb3dTZWxlY3RlZCwgZGlzYWJsZWQ6IGRpc2FibGVkIH0pKSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBUYWJsZUNlbGxDaGVja2JveDtcbnZhciB0ZW1wbGF0ZU9iamVjdF8xO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgQ2VsbF8xID0gcmVxdWlyZShcIi4vQ2VsbFwiKTtcbnZhciBFeHBhbmRlckJ1dHRvbl8xID0gcmVxdWlyZShcIi4vRXhwYW5kZXJCdXR0b25cIik7XG52YXIgQ2VsbEV4cGFuZGVyU3R5bGUgPSAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0KShDZWxsXzEuQ2VsbEJhc2UpKHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcdGZvbnQtd2VpZ2h0OiA0MDA7XFxuXFx0bWluLXdpZHRoOiA0OHB4O1xcblxcdFwiLCBcIjtcXG5cIl0sIFtcIlxcblxcdHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXFx0Zm9udC13ZWlnaHQ6IDQwMDtcXG5cXHRtaW4td2lkdGg6IDQ4cHg7XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUuZXhwYW5kZXJDZWxsLnN0eWxlO1xufSk7XG5mdW5jdGlvbiBDZWxsRXhwYW5kZXIoX2EpIHtcbiAgICB2YXIgcm93ID0gX2Eucm93LCBfYiA9IF9hLmV4cGFuZGVkLCBleHBhbmRlZCA9IF9iID09PSB2b2lkIDAgPyBmYWxzZSA6IF9iLCBleHBhbmRhYmxlSWNvbiA9IF9hLmV4cGFuZGFibGVJY29uLCBpZCA9IF9hLmlkLCBvblRvZ2dsZWQgPSBfYS5vblRvZ2dsZWQsIF9jID0gX2EuZGlzYWJsZWQsIGRpc2FibGVkID0gX2MgPT09IHZvaWQgMCA/IGZhbHNlIDogX2M7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KENlbGxFeHBhbmRlclN0eWxlLCB7IG9uQ2xpY2s6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpOyB9LCBub1BhZGRpbmc6IHRydWUgfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRlckJ1dHRvbl8xLmRlZmF1bHQsIHsgaWQ6IGlkLCByb3c6IHJvdywgZXhwYW5kZWQ6IGV4cGFuZGVkLCBleHBhbmRhYmxlSWNvbjogZXhwYW5kYWJsZUljb24sIGRpc2FibGVkOiBkaXNhYmxlZCwgb25Ub2dnbGVkOiBvblRvZ2dsZWQgfSkpKTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IENlbGxFeHBhbmRlcjtcbnZhciB0ZW1wbGF0ZU9iamVjdF8xO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgQ2VsbF8xID0gcmVxdWlyZShcIi4vQ2VsbFwiKTtcbnZhciBOYXRpdmVTb3J0SWNvbl8xID0gcmVxdWlyZShcIi4vaWNvbnMvTmF0aXZlU29ydEljb25cIik7XG52YXIgdXRpbF8xID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbnZhciB0eXBlc18xID0gcmVxdWlyZShcIi4vdHlwZXNcIik7XG52YXIgQ29sdW1uU3R5bGVkID0gKDAsIHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdCkoQ2VsbF8xLkNlbGxFeHRlbmRlZCkodGVtcGxhdGVPYmplY3RfMSB8fCAodGVtcGxhdGVPYmplY3RfMSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXCJdLCBbXCJcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgYnV0dG9uID0gX2EuYnV0dG9uO1xuICAgIHJldHVybiBidXR0b24gJiYgJ3RleHQtYWxpZ246IGNlbnRlcic7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZSwgaXNEcmFnZ2luZyA9IF9hLmlzRHJhZ2dpbmc7XG4gICAgcmV0dXJuIGlzRHJhZ2dpbmcgJiYgdGhlbWUuaGVhZENlbGxzLmRyYWdnaW5nU3R5bGU7XG59KTtcbnZhciBzb3J0YWJsZUNTUyA9ICgwLCBzdHlsZWRfY29tcG9uZW50c18xLmNzcykodGVtcGxhdGVPYmplY3RfMyB8fCAodGVtcGxhdGVPYmplY3RfMyA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdGN1cnNvcjogcG9pbnRlcjtcXG5cXHRzcGFuLl9fcmR0X2N1c3RvbV9zb3J0X2ljb25fXyB7XFxuXFx0XFx0aSxcXG5cXHRcXHRzdmcge1xcblxcdFxcdFxcdHRyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDAsIDAsIDApJztcXG5cXHRcXHRcXHRcIiwgXCI7XFxuXFx0XFx0XFx0Y29sb3I6IGluaGVyaXQ7XFxuXFx0XFx0XFx0Zm9udC1zaXplOiAxOHB4O1xcblxcdFxcdFxcdGhlaWdodDogMThweDtcXG5cXHRcXHRcXHR3aWR0aDogMThweDtcXG5cXHRcXHRcXHRiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XFxuXFx0XFx0XFx0dHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcXG5cXHRcXHRcXHR0cmFuc2l0aW9uLWR1cmF0aW9uOiA5NW1zO1xcblxcdFxcdFxcdHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTtcXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ji5hc2MgaSxcXG5cXHRcXHQmLmFzYyBzdmcge1xcblxcdFxcdFxcdHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XFxuXFx0XFx0fVxcblxcdH1cXG5cXG5cXHRcIiwgXCI7XFxuXCJdLCBbXCJcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxuXFx0c3Bhbi5fX3JkdF9jdXN0b21fc29ydF9pY29uX18ge1xcblxcdFxcdGksXFxuXFx0XFx0c3ZnIHtcXG5cXHRcXHRcXHR0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLCAwLCAwKSc7XFxuXFx0XFx0XFx0XCIsIFwiO1xcblxcdFxcdFxcdGNvbG9yOiBpbmhlcml0O1xcblxcdFxcdFxcdGZvbnQtc2l6ZTogMThweDtcXG5cXHRcXHRcXHRoZWlnaHQ6IDE4cHg7XFxuXFx0XFx0XFx0d2lkdGg6IDE4cHg7XFxuXFx0XFx0XFx0YmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xcblxcdFxcdFxcdHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XFxuXFx0XFx0XFx0dHJhbnNpdGlvbi1kdXJhdGlvbjogOTVtcztcXG5cXHRcXHRcXHR0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07XFxuXFx0XFx0fVxcblxcblxcdFxcdCYuYXNjIGksXFxuXFx0XFx0Ji5hc2Mgc3ZnIHtcXG5cXHRcXHRcXHR0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgc29ydEFjdGl2ZSA9IF9hLnNvcnRBY3RpdmU7XG4gICAgcmV0dXJuIChzb3J0QWN0aXZlID8gJ29wYWNpdHk6IDEnIDogJ29wYWNpdHk6IDAnKTtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBzb3J0QWN0aXZlID0gX2Euc29ydEFjdGl2ZTtcbiAgICByZXR1cm4gIXNvcnRBY3RpdmUgJiYgKDAsIHN0eWxlZF9jb21wb25lbnRzXzEuY3NzKSh0ZW1wbGF0ZU9iamVjdF8yIHx8ICh0ZW1wbGF0ZU9iamVjdF8yID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0XFx0XFx0Jjpob3ZlcixcXG5cXHRcXHRcXHQmOmZvY3VzIHtcXG5cXHRcXHRcXHRcXHRvcGFjaXR5OiAwLjc7XFxuXFxuXFx0XFx0XFx0XFx0c3BhbixcXG5cXHRcXHRcXHRcXHRzcGFuLl9fcmR0X2N1c3RvbV9zb3J0X2ljb25fXyAqIHtcXG5cXHRcXHRcXHRcXHRcXHRvcGFjaXR5OiAwLjc7XFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdH1cXG5cXHRcXHRcIl0sIFtcIlxcblxcdFxcdFxcdCY6aG92ZXIsXFxuXFx0XFx0XFx0Jjpmb2N1cyB7XFxuXFx0XFx0XFx0XFx0b3BhY2l0eTogMC43O1xcblxcblxcdFxcdFxcdFxcdHNwYW4sXFxuXFx0XFx0XFx0XFx0c3Bhbi5fX3JkdF9jdXN0b21fc29ydF9pY29uX18gKiB7XFxuXFx0XFx0XFx0XFx0XFx0b3BhY2l0eTogMC43O1xcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHR9XFxuXFx0XFx0XCJdKSkpO1xufSk7XG52YXIgQ29sdW1uU29ydGFibGUgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzQgfHwgKHRlbXBsYXRlT2JqZWN0XzQgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdGp1c3RpZnktY29udGVudDogaW5oZXJpdDtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0b3V0bGluZTogbm9uZTtcXG5cXHR1c2VyLXNlbGVjdDogbm9uZTtcXG5cXHRvdmVyZmxvdzogaGlkZGVuO1xcblxcdFwiLCBcIjtcXG5cIl0sIFtcIlxcblxcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0anVzdGlmeS1jb250ZW50OiBpbmhlcml0O1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRvdXRsaW5lOiBub25lO1xcblxcdHVzZXItc2VsZWN0OiBub25lO1xcblxcdG92ZXJmbG93OiBoaWRkZW47XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgZGlzYWJsZWQgPSBfYS5kaXNhYmxlZDtcbiAgICByZXR1cm4gIWRpc2FibGVkICYmIHNvcnRhYmxlQ1NTO1xufSk7XG52YXIgQ29sdW1uVGV4dCA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5kaXYodGVtcGxhdGVPYmplY3RfNSB8fCAodGVtcGxhdGVPYmplY3RfNSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdG92ZXJmbG93OiBoaWRkZW47XFxuXFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG5cIl0sIFtcIlxcblxcdG92ZXJmbG93OiBoaWRkZW47XFxuXFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG5cIl0pKSk7XG5mdW5jdGlvbiBUYWJsZUNvbChfYSkge1xuICAgIHZhciBjb2x1bW4gPSBfYS5jb2x1bW4sIGRpc2FibGVkID0gX2EuZGlzYWJsZWQsIGRyYWdnaW5nQ29sdW1uSWQgPSBfYS5kcmFnZ2luZ0NvbHVtbklkLCBfYiA9IF9hLnNlbGVjdGVkQ29sdW1uLCBzZWxlY3RlZENvbHVtbiA9IF9iID09PSB2b2lkIDAgPyB7fSA6IF9iLCBzb3J0RGlyZWN0aW9uID0gX2Euc29ydERpcmVjdGlvbiwgc29ydEljb24gPSBfYS5zb3J0SWNvbiwgc29ydFNlcnZlciA9IF9hLnNvcnRTZXJ2ZXIsIHBhZ2luYXRpb24gPSBfYS5wYWdpbmF0aW9uLCBwYWdpbmF0aW9uU2VydmVyID0gX2EucGFnaW5hdGlvblNlcnZlciwgcGVyc2lzdFNlbGVjdGVkT25Tb3J0ID0gX2EucGVyc2lzdFNlbGVjdGVkT25Tb3J0LCBzZWxlY3RhYmxlUm93c1Zpc2libGVPbmx5ID0gX2Euc2VsZWN0YWJsZVJvd3NWaXNpYmxlT25seSwgb25Tb3J0ID0gX2Eub25Tb3J0LCBvbkRyYWdTdGFydCA9IF9hLm9uRHJhZ1N0YXJ0LCBvbkRyYWdPdmVyID0gX2Eub25EcmFnT3Zlciwgb25EcmFnRW5kID0gX2Eub25EcmFnRW5kLCBvbkRyYWdFbnRlciA9IF9hLm9uRHJhZ0VudGVyLCBvbkRyYWdMZWF2ZSA9IF9hLm9uRHJhZ0xlYXZlO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29sdW1uLnNlbGVjdG9yID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIldhcm5pbmc6IFwiLmNvbmNhdChjb2x1bW4uc2VsZWN0b3IsIFwiIGlzIGEgc3RyaW5nIGJhc2VkIGNvbHVtbiBzZWxlY3RvciB3aGljaCBoYXMgYmVlbiBkZXByZWNhdGVkIGFzIG9mIHY3IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdjguIEluc3RlYWQsIHVzZSBhIHNlbGVjdG9yIGZ1bmN0aW9uIGUuZy4gcm93ID0+IHJvd1tmaWVsZF0uLi5cIikpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbXSk7XG4gICAgdmFyIF9jID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBzaG93VG9vbHRpcCA9IF9jWzBdLCBzZXRTaG93VG9vbHRpcCA9IF9jWzFdO1xuICAgIHZhciBjb2x1bW5SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGNvbHVtblJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRTaG93VG9vbHRpcChjb2x1bW5SZWYuY3VycmVudC5zY3JvbGxXaWR0aCA+IGNvbHVtblJlZi5jdXJyZW50LmNsaWVudFdpZHRoKTtcbiAgICAgICAgfVxuICAgIH0sIFtzaG93VG9vbHRpcF0pO1xuICAgIGlmIChjb2x1bW4ub21pdCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGhhbmRsZVNvcnRDaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghY29sdW1uLnNvcnRhYmxlICYmICFjb2x1bW4uc2VsZWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGlyZWN0aW9uID0gc29ydERpcmVjdGlvbjtcbiAgICAgICAgaWYgKCgwLCB1dGlsXzEuZXF1YWxpemVJZCkoc2VsZWN0ZWRDb2x1bW4uaWQsIGNvbHVtbi5pZCkpIHtcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9IHNvcnREaXJlY3Rpb24gPT09IHR5cGVzXzEuU29ydE9yZGVyLkFTQyA/IHR5cGVzXzEuU29ydE9yZGVyLkRFU0MgOiB0eXBlc18xLlNvcnRPcmRlci5BU0M7XG4gICAgICAgIH1cbiAgICAgICAgb25Tb3J0KHtcbiAgICAgICAgICAgIHR5cGU6ICdTT1JUX0NIQU5HRScsXG4gICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiBkaXJlY3Rpb24sXG4gICAgICAgICAgICBzZWxlY3RlZENvbHVtbjogY29sdW1uLFxuICAgICAgICAgICAgY2xlYXJTZWxlY3RlZE9uU29ydDogKHBhZ2luYXRpb24gJiYgcGFnaW5hdGlvblNlcnZlciAmJiAhcGVyc2lzdFNlbGVjdGVkT25Tb3J0KSB8fCBzb3J0U2VydmVyIHx8IHNlbGVjdGFibGVSb3dzVmlzaWJsZU9ubHksXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgdmFyIGhhbmRsZUtleVByZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgIGhhbmRsZVNvcnRDaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdmFyIHJlbmRlck5hdGl2ZVNvcnRJY29uID0gZnVuY3Rpb24gKHNvcnRBY3RpdmUpIHsgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KE5hdGl2ZVNvcnRJY29uXzEuZGVmYXVsdCwgeyBzb3J0QWN0aXZlOiBzb3J0QWN0aXZlLCBzb3J0RGlyZWN0aW9uOiBzb3J0RGlyZWN0aW9uIH0pKTsgfTtcbiAgICB2YXIgcmVuZGVyQ3VzdG9tU29ydEljb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IFtzb3J0RGlyZWN0aW9uLCAnX19yZHRfY3VzdG9tX3NvcnRfaWNvbl9fJ10uam9pbignICcpIH0sIHNvcnRJY29uKSk7IH07XG4gICAgdmFyIHNvcnRBY3RpdmUgPSAhIShjb2x1bW4uc29ydGFibGUgJiYgKDAsIHV0aWxfMS5lcXVhbGl6ZUlkKShzZWxlY3RlZENvbHVtbi5pZCwgY29sdW1uLmlkKSk7XG4gICAgdmFyIGRpc2FibGVTb3J0ID0gIWNvbHVtbi5zb3J0YWJsZSB8fCBkaXNhYmxlZDtcbiAgICB2YXIgbmF0aXZlU29ydEljb25MZWZ0ID0gY29sdW1uLnNvcnRhYmxlICYmICFzb3J0SWNvbiAmJiAhY29sdW1uLnJpZ2h0O1xuICAgIHZhciBuYXRpdmVTb3J0SWNvblJpZ2h0ID0gY29sdW1uLnNvcnRhYmxlICYmICFzb3J0SWNvbiAmJiBjb2x1bW4ucmlnaHQ7XG4gICAgdmFyIGN1c3RvbVNvcnRJY29uTGVmdCA9IGNvbHVtbi5zb3J0YWJsZSAmJiBzb3J0SWNvbiAmJiAhY29sdW1uLnJpZ2h0O1xuICAgIHZhciBjdXN0b21Tb3J0SWNvblJpZ2h0ID0gY29sdW1uLnNvcnRhYmxlICYmIHNvcnRJY29uICYmIGNvbHVtbi5yaWdodDtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29sdW1uU3R5bGVkLCB7IFwiZGF0YS1jb2x1bW4taWRcIjogY29sdW1uLmlkLCBjbGFzc05hbWU6IFwicmR0X1RhYmxlQ29sXCIsIGhlYWRDZWxsOiB0cnVlLCBhbGxvd092ZXJmbG93OiBjb2x1bW4uYWxsb3dPdmVyZmxvdywgYnV0dG9uOiBjb2x1bW4uYnV0dG9uLCBjb21wYWN0OiBjb2x1bW4uY29tcGFjdCwgZ3JvdzogY29sdW1uLmdyb3csIGhpZGU6IGNvbHVtbi5oaWRlLCBtYXhXaWR0aDogY29sdW1uLm1heFdpZHRoLCBtaW5XaWR0aDogY29sdW1uLm1pbldpZHRoLCByaWdodDogY29sdW1uLnJpZ2h0LCBjZW50ZXI6IGNvbHVtbi5jZW50ZXIsIHdpZHRoOiBjb2x1bW4ud2lkdGgsIGRyYWdnYWJsZTogY29sdW1uLnJlb3JkZXIsIGlzRHJhZ2dpbmc6ICgwLCB1dGlsXzEuZXF1YWxpemVJZCkoY29sdW1uLmlkLCBkcmFnZ2luZ0NvbHVtbklkKSwgb25EcmFnU3RhcnQ6IG9uRHJhZ1N0YXJ0LCBvbkRyYWdPdmVyOiBvbkRyYWdPdmVyLCBvbkRyYWdFbmQ6IG9uRHJhZ0VuZCwgb25EcmFnRW50ZXI6IG9uRHJhZ0VudGVyLCBvbkRyYWdMZWF2ZTogb25EcmFnTGVhdmUgfSwgY29sdW1uLm5hbWUgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29sdW1uU29ydGFibGUsIHsgXCJkYXRhLWNvbHVtbi1pZFwiOiBjb2x1bW4uaWQsIFwiZGF0YS1zb3J0LWlkXCI6IGNvbHVtbi5pZCwgcm9sZTogXCJjb2x1bW5oZWFkZXJcIiwgdGFiSW5kZXg6IDAsIGNsYXNzTmFtZTogXCJyZHRfVGFibGVDb2xfU29ydGFibGVcIiwgb25DbGljazogIWRpc2FibGVTb3J0ID8gaGFuZGxlU29ydENoYW5nZSA6IHVuZGVmaW5lZCwgb25LZXlQcmVzczogIWRpc2FibGVTb3J0ID8gaGFuZGxlS2V5UHJlc3MgOiB1bmRlZmluZWQsIHNvcnRBY3RpdmU6ICFkaXNhYmxlU29ydCAmJiBzb3J0QWN0aXZlLCBkaXNhYmxlZDogZGlzYWJsZVNvcnQgfSxcbiAgICAgICAgIWRpc2FibGVTb3J0ICYmIGN1c3RvbVNvcnRJY29uUmlnaHQgJiYgcmVuZGVyQ3VzdG9tU29ydEljb24oKSxcbiAgICAgICAgIWRpc2FibGVTb3J0ICYmIG5hdGl2ZVNvcnRJY29uUmlnaHQgJiYgcmVuZGVyTmF0aXZlU29ydEljb24oc29ydEFjdGl2ZSksXG4gICAgICAgIHR5cGVvZiBjb2x1bW4ubmFtZSA9PT0gJ3N0cmluZycgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChDb2x1bW5UZXh0LCB7IHRpdGxlOiBzaG93VG9vbHRpcCA/IGNvbHVtbi5uYW1lIDogdW5kZWZpbmVkLCByZWY6IGNvbHVtblJlZiwgXCJkYXRhLWNvbHVtbi1pZFwiOiBjb2x1bW4uaWQgfSwgY29sdW1uLm5hbWUpKSA6IChjb2x1bW4ubmFtZSksXG4gICAgICAgICFkaXNhYmxlU29ydCAmJiBjdXN0b21Tb3J0SWNvbkxlZnQgJiYgcmVuZGVyQ3VzdG9tU29ydEljb24oKSxcbiAgICAgICAgIWRpc2FibGVTb3J0ICYmIG5hdGl2ZVNvcnRJY29uTGVmdCAmJiByZW5kZXJOYXRpdmVTb3J0SWNvbihzb3J0QWN0aXZlKSkpKSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBSZWFjdC5tZW1vKFRhYmxlQ29sKTtcbnZhciB0ZW1wbGF0ZU9iamVjdF8xLCB0ZW1wbGF0ZU9iamVjdF8yLCB0ZW1wbGF0ZU9iamVjdF8zLCB0ZW1wbGF0ZU9iamVjdF80LCB0ZW1wbGF0ZU9iamVjdF81O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgQ2VsbF8xID0gcmVxdWlyZShcIi4vQ2VsbFwiKTtcbnZhciBDaGVja2JveF8xID0gcmVxdWlyZShcIi4vQ2hlY2tib3hcIik7XG52YXIgQ29sdW1uU3R5bGUgPSAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0KShDZWxsXzEuQ2VsbEJhc2UpKHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRmbGV4OiAwIDAgNDhweDtcXG5cXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdHVzZXItc2VsZWN0OiBub25lO1xcblxcdHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXFx0Zm9udC1zaXplOiB1bnNldDtcXG5cIl0sIFtcIlxcblxcdGZsZXg6IDAgMCA0OHB4O1xcblxcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0dXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXHRmb250LXNpemU6IHVuc2V0O1xcblwiXSkpKTtcbmZ1bmN0aW9uIENvbHVtbkNoZWNrYm94KF9hKSB7XG4gICAgdmFyIF9iID0gX2EuaGVhZENlbGwsIGhlYWRDZWxsID0gX2IgPT09IHZvaWQgMCA/IHRydWUgOiBfYiwgcm93RGF0YSA9IF9hLnJvd0RhdGEsIGtleUZpZWxkID0gX2Eua2V5RmllbGQsIGFsbFNlbGVjdGVkID0gX2EuYWxsU2VsZWN0ZWQsIG1lcmdlU2VsZWN0aW9ucyA9IF9hLm1lcmdlU2VsZWN0aW9ucywgc2VsZWN0ZWRSb3dzID0gX2Euc2VsZWN0ZWRSb3dzLCBzZWxlY3RhYmxlUm93c0NvbXBvbmVudCA9IF9hLnNlbGVjdGFibGVSb3dzQ29tcG9uZW50LCBzZWxlY3RhYmxlUm93c0NvbXBvbmVudFByb3BzID0gX2Euc2VsZWN0YWJsZVJvd3NDb21wb25lbnRQcm9wcywgc2VsZWN0YWJsZVJvd0Rpc2FibGVkID0gX2Euc2VsZWN0YWJsZVJvd0Rpc2FibGVkLCBvblNlbGVjdEFsbFJvd3MgPSBfYS5vblNlbGVjdEFsbFJvd3M7XG4gICAgdmFyIGluZGV0ZXJtaW5hdGUgPSBzZWxlY3RlZFJvd3MubGVuZ3RoID4gMCAmJiAhYWxsU2VsZWN0ZWQ7XG4gICAgdmFyIHJvd3MgPSBzZWxlY3RhYmxlUm93RGlzYWJsZWQgPyByb3dEYXRhLmZpbHRlcihmdW5jdGlvbiAocm93KSB7IHJldHVybiAhc2VsZWN0YWJsZVJvd0Rpc2FibGVkKHJvdyk7IH0pIDogcm93RGF0YTtcbiAgICB2YXIgaXNEaXNhYmxlZCA9IHJvd3MubGVuZ3RoID09PSAwO1xuICAgIC8vIFRoZSByb3cgY291bnQgc2hvdWxkIHN1YnRyYWN0IHJvd3MgdGhhdCBhcmUgZGlzYWJsZWRcbiAgICB2YXIgcm93Q291bnQgPSBNYXRoLm1pbihyb3dEYXRhLmxlbmd0aCwgcm93cy5sZW5ndGgpO1xuICAgIHZhciBoYW5kbGVTZWxlY3RBbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9uU2VsZWN0QWxsUm93cyh7XG4gICAgICAgICAgICB0eXBlOiAnU0VMRUNUX0FMTF9ST1dTJyxcbiAgICAgICAgICAgIHJvd3M6IHJvd3MsXG4gICAgICAgICAgICByb3dDb3VudDogcm93Q291bnQsXG4gICAgICAgICAgICBtZXJnZVNlbGVjdGlvbnM6IG1lcmdlU2VsZWN0aW9ucyxcbiAgICAgICAgICAgIGtleUZpZWxkOiBrZXlGaWVsZCxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29sdW1uU3R5bGUsIHsgY2xhc3NOYW1lOiBcInJkdF9UYWJsZUNvbFwiLCBoZWFkQ2VsbDogaGVhZENlbGwsIG5vUGFkZGluZzogdHJ1ZSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94XzEuZGVmYXVsdCwgeyBuYW1lOiBcInNlbGVjdC1hbGwtcm93c1wiLCBjb21wb25lbnQ6IHNlbGVjdGFibGVSb3dzQ29tcG9uZW50LCBjb21wb25lbnRPcHRpb25zOiBzZWxlY3RhYmxlUm93c0NvbXBvbmVudFByb3BzLCBvbkNsaWNrOiBoYW5kbGVTZWxlY3RBbGwsIGNoZWNrZWQ6IGFsbFNlbGVjdGVkLCBpbmRldGVybWluYXRlOiBpbmRldGVybWluYXRlLCBkaXNhYmxlZDogaXNEaXNhYmxlZCB9KSkpO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gQ29sdW1uQ2hlY2tib3g7XG52YXIgdGVtcGxhdGVPYmplY3RfMTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIENlbGxfMSA9IHJlcXVpcmUoXCIuL0NlbGxcIik7XG52YXIgQ29sdW1uRXhwYW5kZXIgPSAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0KShDZWxsXzEuQ2VsbEJhc2UpKHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcdFwiLCBcIjtcXG5cIl0sIFtcIlxcblxcdHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUuZXhwYW5kZXJDZWxsLnN0eWxlO1xufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBDb2x1bW5FeHBhbmRlcjtcbnZhciB0ZW1wbGF0ZU9iamVjdF8xO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgZml4ZWRDU1MgPSAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5jc3MpKHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRwb3NpdGlvbjogc3RpY2t5O1xcblxcdHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsgLyogU2FmYXJpICovXFxuXFx0dG9wOiAwO1xcblxcdHotaW5kZXg6IDE7XFxuXCJdLCBbXCJcXG5cXHRwb3NpdGlvbjogc3RpY2t5O1xcblxcdHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsgLyogU2FmYXJpICovXFxuXFx0dG9wOiAwO1xcblxcdHotaW5kZXg6IDE7XFxuXCJdKSkpO1xudmFyIEhlYWQgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzIgfHwgKHRlbXBsYXRlT2JqZWN0XzIgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXCJdLCBbXCJcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXCJdKSksIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBmaXhlZEhlYWRlciA9IF9hLmZpeGVkSGVhZGVyO1xuICAgIHJldHVybiBmaXhlZEhlYWRlciAmJiBmaXhlZENTUztcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciB0aGVtZSA9IF9hLnRoZW1lO1xuICAgIHJldHVybiB0aGVtZS5oZWFkLnN0eWxlO1xufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBIZWFkO1xudmFyIHRlbXBsYXRlT2JqZWN0XzEsIHRlbXBsYXRlT2JqZWN0XzI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgc3R5bGVkX2NvbXBvbmVudHNfMSA9IHJlcXVpcmUoXCJzdHlsZWQtY29tcG9uZW50c1wiKTtcbnZhciBIZWFkUm93ID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmRpdih0ZW1wbGF0ZU9iamVjdF8xIHx8ICh0ZW1wbGF0ZU9iamVjdF8xID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRhbGlnbi1pdGVtczogc3RyZXRjaDtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRhbGlnbi1pdGVtczogc3RyZXRjaDtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUuaGVhZFJvdy5zdHlsZTtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBkZW5zZSA9IF9hLmRlbnNlLCB0aGVtZSA9IF9hLnRoZW1lO1xuICAgIHJldHVybiBkZW5zZSAmJiB0aGVtZS5oZWFkUm93LmRlbnNlU3R5bGU7XG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IEhlYWRSb3c7XG52YXIgdGVtcGxhdGVPYmplY3RfMTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIENvbnRleHRNZW51XzEgPSByZXF1aXJlKFwiLi9Db250ZXh0TWVudVwiKTtcbnZhciBIZWFkZXJTdHlsZSA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5kaXYodGVtcGxhdGVPYmplY3RfMSB8fCAodGVtcGxhdGVPYmplY3RfMSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcdG92ZXJmbG93OiBoaWRkZW47XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4OiAxIDEgYXV0bztcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRmbGV4LXdyYXA6IHdyYXA7XFxuXFx0XCIsIFwiXFxuXCJdLCBbXCJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXHRvdmVyZmxvdzogaGlkZGVuO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleDogMSAxIGF1dG87XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0ZmxleC13cmFwOiB3cmFwO1xcblxcdFwiLCBcIlxcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUuaGVhZGVyLnN0eWxlO1xufSk7XG52YXIgVGl0bGUgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzIgfHwgKHRlbXBsYXRlT2JqZWN0XzIgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRmbGV4OiAxIDAgYXV0bztcXG5cXHRjb2xvcjogXCIsIFwiO1xcblxcdGZvbnQtc2l6ZTogXCIsIFwiO1xcblxcdGZvbnQtd2VpZ2h0OiA0MDA7XFxuXCJdLCBbXCJcXG5cXHRmbGV4OiAxIDAgYXV0bztcXG5cXHRjb2xvcjogXCIsIFwiO1xcblxcdGZvbnQtc2l6ZTogXCIsIFwiO1xcblxcdGZvbnQtd2VpZ2h0OiA0MDA7XFxuXCJdKSksIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciB0aGVtZSA9IF9hLnRoZW1lO1xuICAgIHJldHVybiB0aGVtZS5oZWFkZXIuZm9udENvbG9yO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHRoZW1lLmhlYWRlci5mb250U2l6ZTtcbn0pO1xudmFyIEFjdGlvbnMgPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuZGl2KHRlbXBsYXRlT2JqZWN0XzMgfHwgKHRlbXBsYXRlT2JqZWN0XzMgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRmbGV4OiAxIDAgYXV0bztcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG5cXG5cXHQ+ICoge1xcblxcdFxcdG1hcmdpbi1sZWZ0OiA1cHg7XFxuXFx0fVxcblwiXSwgW1wiXFxuXFx0ZmxleDogMSAwIGF1dG87XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuXFxuXFx0PiAqIHtcXG5cXHRcXHRtYXJnaW4tbGVmdDogNXB4O1xcblxcdH1cXG5cIl0pKSk7XG52YXIgSGVhZGVyID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHRpdGxlID0gX2EudGl0bGUsIF9iID0gX2EuYWN0aW9ucywgYWN0aW9ucyA9IF9iID09PSB2b2lkIDAgPyBudWxsIDogX2IsIGNvbnRleHRNZXNzYWdlID0gX2EuY29udGV4dE1lc3NhZ2UsIGNvbnRleHRBY3Rpb25zID0gX2EuY29udGV4dEFjdGlvbnMsIGNvbnRleHRDb21wb25lbnQgPSBfYS5jb250ZXh0Q29tcG9uZW50LCBzZWxlY3RlZENvdW50ID0gX2Euc2VsZWN0ZWRDb3VudCwgZGlyZWN0aW9uID0gX2EuZGlyZWN0aW9uLCBfYyA9IF9hLnNob3dNZW51LCBzaG93TWVudSA9IF9jID09PSB2b2lkIDAgPyB0cnVlIDogX2M7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KEhlYWRlclN0eWxlLCB7IGNsYXNzTmFtZTogXCJyZHRfVGFibGVIZWFkZXJcIiwgcm9sZTogXCJoZWFkaW5nXCIsIFwiYXJpYS1sZXZlbFwiOiAxIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGl0bGUsIG51bGwsIHRpdGxlKSxcbiAgICAgICAgYWN0aW9ucyAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KEFjdGlvbnMsIG51bGwsIGFjdGlvbnMpLFxuICAgICAgICBzaG93TWVudSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChDb250ZXh0TWVudV8xLmRlZmF1bHQsIHsgY29udGV4dE1lc3NhZ2U6IGNvbnRleHRNZXNzYWdlLCBjb250ZXh0QWN0aW9uczogY29udGV4dEFjdGlvbnMsIGNvbnRleHRDb21wb25lbnQ6IGNvbnRleHRDb21wb25lbnQsIGRpcmVjdGlvbjogZGlyZWN0aW9uLCBzZWxlY3RlZENvdW50OiBzZWxlY3RlZENvdW50IH0pKSkpO1xufTtcbmV4cG9ydHMuZGVmYXVsdCA9IEhlYWRlcjtcbnZhciB0ZW1wbGF0ZU9iamVjdF8xLCB0ZW1wbGF0ZU9iamVjdF8yLCB0ZW1wbGF0ZU9iamVjdF8zO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgVGFibGVDZWxsXzEgPSByZXF1aXJlKFwiLi9UYWJsZUNlbGxcIik7XG52YXIgVGFibGVDZWxsQ2hlY2tib3hfMSA9IHJlcXVpcmUoXCIuL1RhYmxlQ2VsbENoZWNrYm94XCIpO1xudmFyIFRhYmxlQ2VsbEV4cGFuZGVyXzEgPSByZXF1aXJlKFwiLi9UYWJsZUNlbGxFeHBhbmRlclwiKTtcbnZhciBFeHBhbmRlclJvd18xID0gcmVxdWlyZShcIi4vRXhwYW5kZXJSb3dcIik7XG52YXIgdXRpbF8xID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbnZhciBjb25zdGFudHNfMSA9IHJlcXVpcmUoXCIuL2NvbnN0YW50c1wiKTtcbnZhciBoaWdobGlnaHRDU1MgPSAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5jc3MpKHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHQmOmhvdmVyIHtcXG5cXHRcXHRcIiwgXCI7XFxuXFx0fVxcblwiXSwgW1wiXFxuXFx0Jjpob3ZlciB7XFxuXFx0XFx0XCIsIFwiO1xcblxcdH1cXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGhpZ2hsaWdodE9uSG92ZXIgPSBfYS5oaWdobGlnaHRPbkhvdmVyLCB0aGVtZSA9IF9hLnRoZW1lO1xuICAgIHJldHVybiBoaWdobGlnaHRPbkhvdmVyICYmIHRoZW1lLnJvd3MuaGlnaGxpZ2h0T25Ib3ZlclN0eWxlO1xufSk7XG52YXIgcG9pbnRlckNTUyA9ICgwLCBzdHlsZWRfY29tcG9uZW50c18xLmNzcykodGVtcGxhdGVPYmplY3RfMiB8fCAodGVtcGxhdGVPYmplY3RfMiA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdCY6aG92ZXIge1xcblxcdFxcdGN1cnNvcjogcG9pbnRlcjtcXG5cXHR9XFxuXCJdLCBbXCJcXG5cXHQmOmhvdmVyIHtcXG5cXHRcXHRjdXJzb3I6IHBvaW50ZXI7XFxuXFx0fVxcblwiXSkpKTtcbnZhciBUYWJsZVJvd1N0eWxlID0gc3R5bGVkX2NvbXBvbmVudHNfMS5kZWZhdWx0LmRpdi5hdHRycyhmdW5jdGlvbiAocHJvcHMpIHsgcmV0dXJuICh7XG4gICAgc3R5bGU6IHByb3BzLnN0eWxlLFxufSk7IH0pKHRlbXBsYXRlT2JqZWN0XzMgfHwgKHRlbXBsYXRlT2JqZWN0XzMgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGFsaWduLWl0ZW1zOiBzdHJldGNoO1xcblxcdGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2g7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cIl0sIFtcIlxcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0YWxpZ24taXRlbXM6IHN0cmV0Y2g7XFxuXFx0YWxpZ24tY29udGVudDogc3RyZXRjaDtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblxcdFwiLCBcIjtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUucm93cy5zdHlsZTtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBkZW5zZSA9IF9hLmRlbnNlLCB0aGVtZSA9IF9hLnRoZW1lO1xuICAgIHJldHVybiBkZW5zZSAmJiB0aGVtZS5yb3dzLmRlbnNlU3R5bGU7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgc3RyaXBlZCA9IF9hLnN0cmlwZWQsIHRoZW1lID0gX2EudGhlbWU7XG4gICAgcmV0dXJuIHN0cmlwZWQgJiYgdGhlbWUucm93cy5zdHJpcGVkU3R5bGU7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgaGlnaGxpZ2h0T25Ib3ZlciA9IF9hLmhpZ2hsaWdodE9uSG92ZXI7XG4gICAgcmV0dXJuIGhpZ2hsaWdodE9uSG92ZXIgJiYgaGlnaGxpZ2h0Q1NTO1xufSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHBvaW50ZXJPbkhvdmVyID0gX2EucG9pbnRlck9uSG92ZXI7XG4gICAgcmV0dXJuIHBvaW50ZXJPbkhvdmVyICYmIHBvaW50ZXJDU1M7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgc2VsZWN0ZWQgPSBfYS5zZWxlY3RlZCwgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gc2VsZWN0ZWQgJiYgdGhlbWUucm93cy5zZWxlY3RlZEhpZ2hsaWdodFN0eWxlO1xufSk7XG5mdW5jdGlvbiBSb3coX2EpIHtcbiAgICB2YXIgX2IgPSBfYS5jb2x1bW5zLCBjb2x1bW5zID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2IsIF9jID0gX2EuY29uZGl0aW9uYWxSb3dTdHlsZXMsIGNvbmRpdGlvbmFsUm93U3R5bGVzID0gX2MgPT09IHZvaWQgMCA/IFtdIDogX2MsIF9kID0gX2EuZGVmYXVsdEV4cGFuZGVkLCBkZWZhdWx0RXhwYW5kZWQgPSBfZCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZCwgX2UgPSBfYS5kZWZhdWx0RXhwYW5kZXJEaXNhYmxlZCwgZGVmYXVsdEV4cGFuZGVyRGlzYWJsZWQgPSBfZSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZSwgX2YgPSBfYS5kZW5zZSwgZGVuc2UgPSBfZiA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZiwgZXhwYW5kYWJsZUljb24gPSBfYS5leHBhbmRhYmxlSWNvbiwgX2cgPSBfYS5leHBhbmRhYmxlUm93cywgZXhwYW5kYWJsZVJvd3MgPSBfZyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZywgZXhwYW5kYWJsZVJvd3NDb21wb25lbnQgPSBfYS5leHBhbmRhYmxlUm93c0NvbXBvbmVudCwgZXhwYW5kYWJsZVJvd3NDb21wb25lbnRQcm9wcyA9IF9hLmV4cGFuZGFibGVSb3dzQ29tcG9uZW50UHJvcHMsIGV4cGFuZGFibGVSb3dzSGlkZUV4cGFuZGVyID0gX2EuZXhwYW5kYWJsZVJvd3NIaWRlRXhwYW5kZXIsIF9oID0gX2EuZXhwYW5kT25Sb3dDbGlja2VkLCBleHBhbmRPblJvd0NsaWNrZWQgPSBfaCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfaCwgX2ogPSBfYS5leHBhbmRPblJvd0RvdWJsZUNsaWNrZWQsIGV4cGFuZE9uUm93RG91YmxlQ2xpY2tlZCA9IF9qID09PSB2b2lkIDAgPyBmYWxzZSA6IF9qLCBfayA9IF9hLmhpZ2hsaWdodE9uSG92ZXIsIGhpZ2hsaWdodE9uSG92ZXIgPSBfayA9PT0gdm9pZCAwID8gZmFsc2UgOiBfaywgaWQgPSBfYS5pZCwgZXhwYW5kYWJsZUluaGVyaXRDb25kaXRpb25hbFN0eWxlcyA9IF9hLmV4cGFuZGFibGVJbmhlcml0Q29uZGl0aW9uYWxTdHlsZXMsIGtleUZpZWxkID0gX2Eua2V5RmllbGQsIF9sID0gX2Eub25Sb3dDbGlja2VkLCBvblJvd0NsaWNrZWQgPSBfbCA9PT0gdm9pZCAwID8gdXRpbF8xLm5vb3AgOiBfbCwgX20gPSBfYS5vblJvd0RvdWJsZUNsaWNrZWQsIG9uUm93RG91YmxlQ2xpY2tlZCA9IF9tID09PSB2b2lkIDAgPyB1dGlsXzEubm9vcCA6IF9tLCBfbyA9IF9hLm9uUm93TW91c2VFbnRlciwgb25Sb3dNb3VzZUVudGVyID0gX28gPT09IHZvaWQgMCA/IHV0aWxfMS5ub29wIDogX28sIF9wID0gX2Eub25Sb3dNb3VzZUxlYXZlLCBvblJvd01vdXNlTGVhdmUgPSBfcCA9PT0gdm9pZCAwID8gdXRpbF8xLm5vb3AgOiBfcCwgX3EgPSBfYS5vblJvd0V4cGFuZFRvZ2dsZWQsIG9uUm93RXhwYW5kVG9nZ2xlZCA9IF9xID09PSB2b2lkIDAgPyB1dGlsXzEubm9vcCA6IF9xLCBfciA9IF9hLm9uU2VsZWN0ZWRSb3csIG9uU2VsZWN0ZWRSb3cgPSBfciA9PT0gdm9pZCAwID8gdXRpbF8xLm5vb3AgOiBfciwgX3MgPSBfYS5wb2ludGVyT25Ib3ZlciwgcG9pbnRlck9uSG92ZXIgPSBfcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcywgcm93ID0gX2Eucm93LCByb3dDb3VudCA9IF9hLnJvd0NvdW50LCByb3dJbmRleCA9IF9hLnJvd0luZGV4LCBfdCA9IF9hLnNlbGVjdGFibGVSb3dEaXNhYmxlZCwgc2VsZWN0YWJsZVJvd0Rpc2FibGVkID0gX3QgPT09IHZvaWQgMCA/IG51bGwgOiBfdCwgX3UgPSBfYS5zZWxlY3RhYmxlUm93cywgc2VsZWN0YWJsZVJvd3MgPSBfdSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfdSwgc2VsZWN0YWJsZVJvd3NDb21wb25lbnQgPSBfYS5zZWxlY3RhYmxlUm93c0NvbXBvbmVudCwgc2VsZWN0YWJsZVJvd3NDb21wb25lbnRQcm9wcyA9IF9hLnNlbGVjdGFibGVSb3dzQ29tcG9uZW50UHJvcHMsIF92ID0gX2Euc2VsZWN0YWJsZVJvd3NIaWdobGlnaHQsIHNlbGVjdGFibGVSb3dzSGlnaGxpZ2h0ID0gX3YgPT09IHZvaWQgMCA/IGZhbHNlIDogX3YsIF93ID0gX2Euc2VsZWN0YWJsZVJvd3NTaW5nbGUsIHNlbGVjdGFibGVSb3dzU2luZ2xlID0gX3cgPT09IHZvaWQgMCA/IGZhbHNlIDogX3csIHNlbGVjdGVkID0gX2Euc2VsZWN0ZWQsIF94ID0gX2Euc3RyaXBlZCwgc3RyaXBlZCA9IF94ID09PSB2b2lkIDAgPyBmYWxzZSA6IF94LCBkcmFnZ2luZ0NvbHVtbklkID0gX2EuZHJhZ2dpbmdDb2x1bW5JZCwgb25EcmFnU3RhcnQgPSBfYS5vbkRyYWdTdGFydCwgb25EcmFnT3ZlciA9IF9hLm9uRHJhZ092ZXIsIG9uRHJhZ0VuZCA9IF9hLm9uRHJhZ0VuZCwgb25EcmFnRW50ZXIgPSBfYS5vbkRyYWdFbnRlciwgb25EcmFnTGVhdmUgPSBfYS5vbkRyYWdMZWF2ZTtcbiAgICB2YXIgX3kgPSBSZWFjdC51c2VTdGF0ZShkZWZhdWx0RXhwYW5kZWQpLCBleHBhbmRlZCA9IF95WzBdLCBzZXRFeHBhbmRlZCA9IF95WzFdO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldEV4cGFuZGVkKGRlZmF1bHRFeHBhbmRlZCk7XG4gICAgfSwgW2RlZmF1bHRFeHBhbmRlZF0pO1xuICAgIHZhciBoYW5kbGVFeHBhbmRlZCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0RXhwYW5kZWQoIWV4cGFuZGVkKTtcbiAgICAgICAgb25Sb3dFeHBhbmRUb2dnbGVkKCFleHBhbmRlZCwgcm93KTtcbiAgICB9LCBbZXhwYW5kZWQsIG9uUm93RXhwYW5kVG9nZ2xlZCwgcm93XSk7XG4gICAgdmFyIHNob3dQb2ludGVyID0gcG9pbnRlck9uSG92ZXIgfHwgKGV4cGFuZGFibGVSb3dzICYmIChleHBhbmRPblJvd0NsaWNrZWQgfHwgZXhwYW5kT25Sb3dEb3VibGVDbGlja2VkKSk7XG4gICAgdmFyIGhhbmRsZVJvd0NsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgLy8gdXNlIGV2ZW50IGRlbGVnYXRpb24gYWxsb3cgZXZlbnRzIHRvIHByb3BhZ2F0ZSBvbmx5IHdoZW4gdGhlIGVsZW1lbnQgd2l0aCBkYXRhLXRhZyBTVE9QX1BST1BfVEFHIGlzIHByZXNlbnRcbiAgICAgICAgaWYgKGUudGFyZ2V0ICYmIGUudGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS10YWcnKSA9PT0gY29uc3RhbnRzXzEuU1RPUF9QUk9QX1RBRykge1xuICAgICAgICAgICAgb25Sb3dDbGlja2VkKHJvdywgZSk7XG4gICAgICAgICAgICBpZiAoIWRlZmF1bHRFeHBhbmRlckRpc2FibGVkICYmIGV4cGFuZGFibGVSb3dzICYmIGV4cGFuZE9uUm93Q2xpY2tlZCkge1xuICAgICAgICAgICAgICAgIGhhbmRsZUV4cGFuZGVkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbZGVmYXVsdEV4cGFuZGVyRGlzYWJsZWQsIGV4cGFuZE9uUm93Q2xpY2tlZCwgZXhwYW5kYWJsZVJvd3MsIGhhbmRsZUV4cGFuZGVkLCBvblJvd0NsaWNrZWQsIHJvd10pO1xuICAgIHZhciBoYW5kbGVSb3dEb3VibGVDbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmIChlLnRhcmdldCAmJiBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGFnJykgPT09IGNvbnN0YW50c18xLlNUT1BfUFJPUF9UQUcpIHtcbiAgICAgICAgICAgIG9uUm93RG91YmxlQ2xpY2tlZChyb3csIGUpO1xuICAgICAgICAgICAgaWYgKCFkZWZhdWx0RXhwYW5kZXJEaXNhYmxlZCAmJiBleHBhbmRhYmxlUm93cyAmJiBleHBhbmRPblJvd0RvdWJsZUNsaWNrZWQpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVFeHBhbmRlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW2RlZmF1bHRFeHBhbmRlckRpc2FibGVkLCBleHBhbmRPblJvd0RvdWJsZUNsaWNrZWQsIGV4cGFuZGFibGVSb3dzLCBoYW5kbGVFeHBhbmRlZCwgb25Sb3dEb3VibGVDbGlja2VkLCByb3ddKTtcbiAgICB2YXIgaGFuZGxlUm93TW91c2VFbnRlciA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIG9uUm93TW91c2VFbnRlcihyb3csIGUpO1xuICAgIH0sIFtvblJvd01vdXNlRW50ZXIsIHJvd10pO1xuICAgIHZhciBoYW5kbGVSb3dNb3VzZUxlYXZlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgb25Sb3dNb3VzZUxlYXZlKHJvdywgZSk7XG4gICAgfSwgW29uUm93TW91c2VMZWF2ZSwgcm93XSk7XG4gICAgdmFyIHJvd0tleUZpZWxkID0gKDAsIHV0aWxfMS5wcm9wKShyb3csIGtleUZpZWxkKTtcbiAgICB2YXIgX3ogPSAoMCwgdXRpbF8xLmdldENvbmRpdGlvbmFsU3R5bGUpKHJvdywgY29uZGl0aW9uYWxSb3dTdHlsZXMsIFsncmR0X1RhYmxlUm93J10pLCBzdHlsZSA9IF96LnN0eWxlLCBjbGFzc05hbWVzID0gX3ouY2xhc3NOYW1lcztcbiAgICB2YXIgaGlnaGxpZ2h0U2VsZWN0ZWQgPSBzZWxlY3RhYmxlUm93c0hpZ2hsaWdodCAmJiBzZWxlY3RlZDtcbiAgICB2YXIgaW5oZXJpdFN0eWxlcyA9IGV4cGFuZGFibGVJbmhlcml0Q29uZGl0aW9uYWxTdHlsZXMgPyBzdHlsZSA6IHt9O1xuICAgIHZhciBpc1N0cmlwZWQgPSBzdHJpcGVkICYmICgwLCB1dGlsXzEuaXNPZGQpKHJvd0luZGV4KTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFibGVSb3dTdHlsZSwgeyBpZDogXCJyb3ctXCIuY29uY2F0KGlkKSwgcm9sZTogXCJyb3dcIiwgc3RyaXBlZDogaXNTdHJpcGVkLCBoaWdobGlnaHRPbkhvdmVyOiBoaWdobGlnaHRPbkhvdmVyLCBwb2ludGVyT25Ib3ZlcjogIWRlZmF1bHRFeHBhbmRlckRpc2FibGVkICYmIHNob3dQb2ludGVyLCBkZW5zZTogZGVuc2UsIG9uQ2xpY2s6IGhhbmRsZVJvd0NsaWNrLCBvbkRvdWJsZUNsaWNrOiBoYW5kbGVSb3dEb3VibGVDbGljaywgb25Nb3VzZUVudGVyOiBoYW5kbGVSb3dNb3VzZUVudGVyLCBvbk1vdXNlTGVhdmU6IGhhbmRsZVJvd01vdXNlTGVhdmUsIGNsYXNzTmFtZTogY2xhc3NOYW1lcywgc2VsZWN0ZWQ6IGhpZ2hsaWdodFNlbGVjdGVkLCBzdHlsZTogc3R5bGUgfSxcbiAgICAgICAgICAgIHNlbGVjdGFibGVSb3dzICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFRhYmxlQ2VsbENoZWNrYm94XzEuZGVmYXVsdCwgeyBuYW1lOiBcInNlbGVjdC1yb3ctXCIuY29uY2F0KHJvd0tleUZpZWxkKSwga2V5RmllbGQ6IGtleUZpZWxkLCByb3c6IHJvdywgcm93Q291bnQ6IHJvd0NvdW50LCBzZWxlY3RlZDogc2VsZWN0ZWQsIHNlbGVjdGFibGVSb3dzQ29tcG9uZW50OiBzZWxlY3RhYmxlUm93c0NvbXBvbmVudCwgc2VsZWN0YWJsZVJvd3NDb21wb25lbnRQcm9wczogc2VsZWN0YWJsZVJvd3NDb21wb25lbnRQcm9wcywgc2VsZWN0YWJsZVJvd0Rpc2FibGVkOiBzZWxlY3RhYmxlUm93RGlzYWJsZWQsIHNlbGVjdGFibGVSb3dzU2luZ2xlOiBzZWxlY3RhYmxlUm93c1NpbmdsZSwgb25TZWxlY3RlZFJvdzogb25TZWxlY3RlZFJvdyB9KSksXG4gICAgICAgICAgICBleHBhbmRhYmxlUm93cyAmJiAhZXhwYW5kYWJsZVJvd3NIaWRlRXhwYW5kZXIgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFibGVDZWxsRXhwYW5kZXJfMS5kZWZhdWx0LCB7IGlkOiByb3dLZXlGaWVsZCwgZXhwYW5kYWJsZUljb246IGV4cGFuZGFibGVJY29uLCBleHBhbmRlZDogZXhwYW5kZWQsIHJvdzogcm93LCBvblRvZ2dsZWQ6IGhhbmRsZUV4cGFuZGVkLCBkaXNhYmxlZDogZGVmYXVsdEV4cGFuZGVyRGlzYWJsZWQgfSkpLFxuICAgICAgICAgICAgY29sdW1ucy5tYXAoZnVuY3Rpb24gKGNvbHVtbikge1xuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4ub21pdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRhYmxlQ2VsbF8xLmRlZmF1bHQsIHsgaWQ6IFwiY2VsbC1cIi5jb25jYXQoY29sdW1uLmlkLCBcIi1cIikuY29uY2F0KHJvd0tleUZpZWxkKSwga2V5OiBcImNlbGwtXCIuY29uY2F0KGNvbHVtbi5pZCwgXCItXCIpLmNvbmNhdChyb3dLZXlGaWVsZCksIFxuICAgICAgICAgICAgICAgICAgICAvLyBhcHBseSBhIHRhZyB0aGF0IFJvdyB3aWxsIHVzZSB0byBzdG9wIGV2ZW50IHByb3BhZ2F0aW9uIHdoZW4gVGFibGVDZWxsIGlzIGNsaWNrZWRcbiAgICAgICAgICAgICAgICAgICAgZGF0YVRhZzogY29sdW1uLmlnbm9yZVJvd0NsaWNrIHx8IGNvbHVtbi5idXR0b24gPyBudWxsIDogY29uc3RhbnRzXzEuU1RPUF9QUk9QX1RBRywgY29sdW1uOiBjb2x1bW4sIHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXgsIGlzRHJhZ2dpbmc6ICgwLCB1dGlsXzEuZXF1YWxpemVJZCkoZHJhZ2dpbmdDb2x1bW5JZCwgY29sdW1uLmlkKSwgb25EcmFnU3RhcnQ6IG9uRHJhZ1N0YXJ0LCBvbkRyYWdPdmVyOiBvbkRyYWdPdmVyLCBvbkRyYWdFbmQ6IG9uRHJhZ0VuZCwgb25EcmFnRW50ZXI6IG9uRHJhZ0VudGVyLCBvbkRyYWdMZWF2ZTogb25EcmFnTGVhdmUgfSkpO1xuICAgICAgICAgICAgfSkpLFxuICAgICAgICBleHBhbmRhYmxlUm93cyAmJiBleHBhbmRlZCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRlclJvd18xLmRlZmF1bHQsIHsga2V5OiBcImV4cGFuZGVyLVwiLmNvbmNhdChyb3dLZXlGaWVsZCksIGRhdGE6IHJvdywgZXh0ZW5kZWRSb3dTdHlsZTogaW5oZXJpdFN0eWxlcywgZXh0ZW5kZWRDbGFzc05hbWVzOiBjbGFzc05hbWVzLCBFeHBhbmRlckNvbXBvbmVudDogZXhwYW5kYWJsZVJvd3NDb21wb25lbnQsIGV4cGFuZGVyQ29tcG9uZW50UHJvcHM6IGV4cGFuZGFibGVSb3dzQ29tcG9uZW50UHJvcHMgfSkpKSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBSb3c7XG52YXIgdGVtcGxhdGVPYmplY3RfMSwgdGVtcGxhdGVPYmplY3RfMiwgdGVtcGxhdGVPYmplY3RfMztcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICByZXR1cm4gY29va2VkO1xufTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgc3R5bGVkX2NvbXBvbmVudHNfMSA9IHJlcXVpcmUoXCJzdHlsZWQtY29tcG9uZW50c1wiKTtcbnZhciBhbGlnbk1hcCA9IHtcbiAgICBsZWZ0OiAnZmxleC1zdGFydCcsXG4gICAgcmlnaHQ6ICdmbGV4LWVuZCcsXG4gICAgY2VudGVyOiAnY2VudGVyJyxcbn07XG52YXIgU3ViaGVhZGVyV3JhcHBlciA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5oZWFkZXIodGVtcGxhdGVPYmplY3RfMSB8fCAodGVtcGxhdGVPYmplY3RfMSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXg6IDEgMSBhdXRvO1xcblxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRwYWRkaW5nOiA0cHggMTZweCA0cHggMjRweDtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRqdXN0aWZ5LWNvbnRlbnQ6IFwiLCBcIjtcXG5cXHRmbGV4LXdyYXA6IFwiLCBcIjtcXG5cXHRcIiwgXCJcXG5cIl0sIFtcIlxcblxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXg6IDEgMSBhdXRvO1xcblxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRwYWRkaW5nOiA0cHggMTZweCA0cHggMjRweDtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRqdXN0aWZ5LWNvbnRlbnQ6IFwiLCBcIjtcXG5cXHRmbGV4LXdyYXA6IFwiLCBcIjtcXG5cXHRcIiwgXCJcXG5cIl0pKSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGFsaWduID0gX2EuYWxpZ247XG4gICAgcmV0dXJuIGFsaWduTWFwW2FsaWduXTtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciB3cmFwQ29udGVudCA9IF9hLndyYXBDb250ZW50O1xuICAgIHJldHVybiAod3JhcENvbnRlbnQgPyAnd3JhcCcgOiAnbm93cmFwJyk7XG59LCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUuc3ViSGVhZGVyLnN0eWxlO1xufSk7XG52YXIgU3ViaGVhZGVyID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIF9iID0gX2EuYWxpZ24sIGFsaWduID0gX2IgPT09IHZvaWQgMCA/ICdyaWdodCcgOiBfYiwgX2MgPSBfYS53cmFwQ29udGVudCwgd3JhcENvbnRlbnQgPSBfYyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9jLCByZXN0ID0gX19yZXN0KF9hLCBbXCJhbGlnblwiLCBcIndyYXBDb250ZW50XCJdKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3ViaGVhZGVyV3JhcHBlciwgX19hc3NpZ24oeyBhbGlnbjogYWxpZ24sIHdyYXBDb250ZW50OiB3cmFwQ29udGVudCB9LCByZXN0KSkpO1xufTtcbmV4cG9ydHMuZGVmYXVsdCA9IFN1YmhlYWRlcjtcbnZhciB0ZW1wbGF0ZU9iamVjdF8xO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHN0eWxlZF9jb21wb25lbnRzXzEgPSByZXF1aXJlKFwic3R5bGVkLWNvbXBvbmVudHNcIik7XG52YXIgV3JhcHBlciA9IHN0eWxlZF9jb21wb25lbnRzXzEuZGVmYXVsdC5kaXYodGVtcGxhdGVPYmplY3RfMSB8fCAodGVtcGxhdGVPYmplY3RfMSA9IF9fbWFrZVRlbXBsYXRlT2JqZWN0KFtcIlxcblxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRcIiwgXCI7XFxuXCJdLCBbXCJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZTtcbiAgICByZXR1cm4gdGhlbWUudGFibGVXcmFwcGVyLnN0eWxlO1xufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBXcmFwcGVyO1xudmFyIHRlbXBsYXRlT2JqZWN0XzE7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTWVkaWEgPSBleHBvcnRzLkFsaWdubWVudCA9IGV4cG9ydHMuRGlyZWN0aW9uID0gZXhwb3J0cy5TVE9QX1BST1BfVEFHID0gdm9pZCAwO1xuZXhwb3J0cy5TVE9QX1BST1BfVEFHID0gJ2FsbG93Um93RXZlbnRzJztcbnZhciBEaXJlY3Rpb247XG4oZnVuY3Rpb24gKERpcmVjdGlvbikge1xuICAgIERpcmVjdGlvbltcIkxUUlwiXSA9IFwibHRyXCI7XG4gICAgRGlyZWN0aW9uW1wiUlRMXCJdID0gXCJydGxcIjtcbiAgICBEaXJlY3Rpb25bXCJBVVRPXCJdID0gXCJhdXRvXCI7XG59KShEaXJlY3Rpb24gPSBleHBvcnRzLkRpcmVjdGlvbiB8fCAoZXhwb3J0cy5EaXJlY3Rpb24gPSB7fSkpO1xudmFyIEFsaWdubWVudDtcbihmdW5jdGlvbiAoQWxpZ25tZW50KSB7XG4gICAgQWxpZ25tZW50W1wiTEVGVFwiXSA9IFwibGVmdFwiO1xuICAgIEFsaWdubWVudFtcIlJJR0hUXCJdID0gXCJyaWdodFwiO1xuICAgIEFsaWdubWVudFtcIkNFTlRFUlwiXSA9IFwiY2VudGVyXCI7XG59KShBbGlnbm1lbnQgPSBleHBvcnRzLkFsaWdubWVudCB8fCAoZXhwb3J0cy5BbGlnbm1lbnQgPSB7fSkpO1xudmFyIE1lZGlhO1xuKGZ1bmN0aW9uIChNZWRpYSkge1xuICAgIE1lZGlhW1wiU01cIl0gPSBcInNtXCI7XG4gICAgTWVkaWFbXCJNRFwiXSA9IFwibWRcIjtcbiAgICBNZWRpYVtcIkxHXCJdID0gXCJsZ1wiO1xufSkoTWVkaWEgPSBleHBvcnRzLk1lZGlhIHx8IChleHBvcnRzLk1lZGlhID0ge30pKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5kZWZhdWx0UHJvcHMgPSB2b2lkIDA7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgRmlyc3RQYWdlXzEgPSByZXF1aXJlKFwiLi9pY29ucy9GaXJzdFBhZ2VcIik7XG52YXIgTGFzdFBhZ2VfMSA9IHJlcXVpcmUoXCIuL2ljb25zL0xhc3RQYWdlXCIpO1xudmFyIExlZnRfMSA9IHJlcXVpcmUoXCIuL2ljb25zL0xlZnRcIik7XG52YXIgUmlnaHRfMSA9IHJlcXVpcmUoXCIuL2ljb25zL1JpZ2h0XCIpO1xudmFyIEV4cGFuZGVyQ29sbGFwc2VkSWNvbl8xID0gcmVxdWlyZShcIi4vaWNvbnMvRXhwYW5kZXJDb2xsYXBzZWRJY29uXCIpO1xudmFyIEV4cGFuZGVyRXhwYW5kZWRJY29uXzEgPSByZXF1aXJlKFwiLi9pY29ucy9FeHBhbmRlckV4cGFuZGVkSWNvblwiKTtcbnZhciB1dGlsXzEgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xudmFyIGNvbnN0YW50c18xID0gcmVxdWlyZShcIi4vY29uc3RhbnRzXCIpO1xuZXhwb3J0cy5kZWZhdWx0UHJvcHMgPSB7XG4gICAgY29sdW1uczogW10sXG4gICAgZGF0YTogW10sXG4gICAgdGl0bGU6ICcnLFxuICAgIGtleUZpZWxkOiAnaWQnLFxuICAgIHNlbGVjdGFibGVSb3dzOiBmYWxzZSxcbiAgICBzZWxlY3RhYmxlUm93c0hpZ2hsaWdodDogZmFsc2UsXG4gICAgc2VsZWN0YWJsZVJvd3NOb1NlbGVjdEFsbDogZmFsc2UsXG4gICAgc2VsZWN0YWJsZVJvd1NlbGVjdGVkOiBudWxsLFxuICAgIHNlbGVjdGFibGVSb3dEaXNhYmxlZDogbnVsbCxcbiAgICBzZWxlY3RhYmxlUm93c0NvbXBvbmVudDogJ2lucHV0JyxcbiAgICBzZWxlY3RhYmxlUm93c0NvbXBvbmVudFByb3BzOiB7fSxcbiAgICBzZWxlY3RhYmxlUm93c1Zpc2libGVPbmx5OiBmYWxzZSxcbiAgICBzZWxlY3RhYmxlUm93c1NpbmdsZTogZmFsc2UsXG4gICAgY2xlYXJTZWxlY3RlZFJvd3M6IGZhbHNlLFxuICAgIGV4cGFuZGFibGVSb3dzOiBmYWxzZSxcbiAgICBleHBhbmRhYmxlUm93RGlzYWJsZWQ6IG51bGwsXG4gICAgZXhwYW5kYWJsZVJvd0V4cGFuZGVkOiBudWxsLFxuICAgIGV4cGFuZE9uUm93Q2xpY2tlZDogZmFsc2UsXG4gICAgZXhwYW5kYWJsZVJvd3NIaWRlRXhwYW5kZXI6IGZhbHNlLFxuICAgIGV4cGFuZE9uUm93RG91YmxlQ2xpY2tlZDogZmFsc2UsXG4gICAgZXhwYW5kYWJsZUluaGVyaXRDb25kaXRpb25hbFN0eWxlczogZmFsc2UsXG4gICAgZXhwYW5kYWJsZVJvd3NDb21wb25lbnQ6IGZ1bmN0aW9uIERlZmF1bHRFeHBhbmRlcigpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIG51bGwsXG4gICAgICAgICAgICBcIlRvIGFkZCBhbiBleHBhbmRlciBwYXNzIGluIGEgY29tcG9uZW50IGluc3RhbmNlIHZpYSBcIixcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdHJvbmdcIiwgbnVsbCwgXCJleHBhbmRhYmxlUm93c0NvbXBvbmVudFwiKSxcbiAgICAgICAgICAgIFwiLiBZb3UgY2FuIHRoZW4gYWNjZXNzIHByb3BzLmRhdGEgZnJvbSB0aGlzIGNvbXBvbmVudC5cIikpO1xuICAgIH0sXG4gICAgZXhwYW5kYWJsZUljb246IHtcbiAgICAgICAgY29sbGFwc2VkOiBSZWFjdC5jcmVhdGVFbGVtZW50KEV4cGFuZGVyQ29sbGFwc2VkSWNvbl8xLmRlZmF1bHQsIG51bGwpLFxuICAgICAgICBleHBhbmRlZDogUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRlckV4cGFuZGVkSWNvbl8xLmRlZmF1bHQsIG51bGwpLFxuICAgIH0sXG4gICAgZXhwYW5kYWJsZVJvd3NDb21wb25lbnRQcm9wczoge30sXG4gICAgcHJvZ3Jlc3NQZW5kaW5nOiBmYWxzZSxcbiAgICBwcm9ncmVzc0NvbXBvbmVudDogUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB7IGZvbnRTaXplOiAnMjRweCcsIGZvbnRXZWlnaHQ6IDcwMCwgcGFkZGluZzogJzI0cHgnIH0gfSwgXCJMb2FkaW5nLi4uXCIpLFxuICAgIHBlcnNpc3RUYWJsZUhlYWQ6IGZhbHNlLFxuICAgIHNvcnRJY29uOiBudWxsLFxuICAgIHNvcnRGdW5jdGlvbjogbnVsbCxcbiAgICBzb3J0U2VydmVyOiBmYWxzZSxcbiAgICBzdHJpcGVkOiBmYWxzZSxcbiAgICBoaWdobGlnaHRPbkhvdmVyOiBmYWxzZSxcbiAgICBwb2ludGVyT25Ib3ZlcjogZmFsc2UsXG4gICAgbm9Db250ZXh0TWVudTogZmFsc2UsXG4gICAgY29udGV4dE1lc3NhZ2U6IHsgc2luZ3VsYXI6ICdpdGVtJywgcGx1cmFsOiAnaXRlbXMnLCBtZXNzYWdlOiAnc2VsZWN0ZWQnIH0sXG4gICAgYWN0aW9uczogbnVsbCxcbiAgICBjb250ZXh0QWN0aW9uczogbnVsbCxcbiAgICBjb250ZXh0Q29tcG9uZW50OiBudWxsLFxuICAgIGRlZmF1bHRTb3J0RmllbGRJZDogbnVsbCxcbiAgICBkZWZhdWx0U29ydEFzYzogdHJ1ZSxcbiAgICByZXNwb25zaXZlOiB0cnVlLFxuICAgIG5vRGF0YUNvbXBvbmVudDogUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB7IHBhZGRpbmc6ICcyNHB4JyB9IH0sIFwiVGhlcmUgYXJlIG5vIHJlY29yZHMgdG8gZGlzcGxheVwiKSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgbm9UYWJsZUhlYWQ6IGZhbHNlLFxuICAgIG5vSGVhZGVyOiBmYWxzZSxcbiAgICBzdWJIZWFkZXI6IGZhbHNlLFxuICAgIHN1YkhlYWRlckFsaWduOiBjb25zdGFudHNfMS5BbGlnbm1lbnQuUklHSFQsXG4gICAgc3ViSGVhZGVyV3JhcDogdHJ1ZSxcbiAgICBzdWJIZWFkZXJDb21wb25lbnQ6IG51bGwsXG4gICAgZml4ZWRIZWFkZXI6IGZhbHNlLFxuICAgIGZpeGVkSGVhZGVyU2Nyb2xsSGVpZ2h0OiAnMTAwdmgnLFxuICAgIHBhZ2luYXRpb246IGZhbHNlLFxuICAgIHBhZ2luYXRpb25TZXJ2ZXI6IGZhbHNlLFxuICAgIHBhZ2luYXRpb25TZXJ2ZXJPcHRpb25zOiB7XG4gICAgICAgIHBlcnNpc3RTZWxlY3RlZE9uU29ydDogZmFsc2UsXG4gICAgICAgIHBlcnNpc3RTZWxlY3RlZE9uUGFnZUNoYW5nZTogZmFsc2UsXG4gICAgfSxcbiAgICBwYWdpbmF0aW9uRGVmYXVsdFBhZ2U6IDEsXG4gICAgcGFnaW5hdGlvblJlc2V0RGVmYXVsdFBhZ2U6IGZhbHNlLFxuICAgIHBhZ2luYXRpb25Ub3RhbFJvd3M6IDAsXG4gICAgcGFnaW5hdGlvblBlclBhZ2U6IDEwLFxuICAgIHBhZ2luYXRpb25Sb3dzUGVyUGFnZU9wdGlvbnM6IFsxMCwgMTUsIDIwLCAyNSwgMzBdLFxuICAgIHBhZ2luYXRpb25Db21wb25lbnQ6IG51bGwsXG4gICAgcGFnaW5hdGlvbkNvbXBvbmVudE9wdGlvbnM6IHt9LFxuICAgIHBhZ2luYXRpb25JY29uRmlyc3RQYWdlOiBSZWFjdC5jcmVhdGVFbGVtZW50KEZpcnN0UGFnZV8xLmRlZmF1bHQsIG51bGwpLFxuICAgIHBhZ2luYXRpb25JY29uTGFzdFBhZ2U6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGFzdFBhZ2VfMS5kZWZhdWx0LCBudWxsKSxcbiAgICBwYWdpbmF0aW9uSWNvbk5leHQ6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmlnaHRfMS5kZWZhdWx0LCBudWxsKSxcbiAgICBwYWdpbmF0aW9uSWNvblByZXZpb3VzOiBSZWFjdC5jcmVhdGVFbGVtZW50KExlZnRfMS5kZWZhdWx0LCBudWxsKSxcbiAgICBkZW5zZTogZmFsc2UsXG4gICAgY29uZGl0aW9uYWxSb3dTdHlsZXM6IFtdLFxuICAgIHRoZW1lOiAnZGVmYXVsdCcsXG4gICAgY3VzdG9tU3R5bGVzOiB7fSxcbiAgICBkaXJlY3Rpb246IGNvbnN0YW50c18xLkRpcmVjdGlvbi5BVVRPLFxuICAgIG9uQ2hhbmdlUGFnZTogdXRpbF8xLm5vb3AsXG4gICAgb25DaGFuZ2VSb3dzUGVyUGFnZTogdXRpbF8xLm5vb3AsXG4gICAgb25Sb3dDbGlja2VkOiB1dGlsXzEubm9vcCxcbiAgICBvblJvd0RvdWJsZUNsaWNrZWQ6IHV0aWxfMS5ub29wLFxuICAgIG9uUm93TW91c2VFbnRlcjogdXRpbF8xLm5vb3AsXG4gICAgb25Sb3dNb3VzZUxlYXZlOiB1dGlsXzEubm9vcCxcbiAgICBvblJvd0V4cGFuZFRvZ2dsZWQ6IHV0aWxfMS5ub29wLFxuICAgIG9uU2VsZWN0ZWRSb3dzQ2hhbmdlOiB1dGlsXzEubm9vcCxcbiAgICBvblNvcnQ6IHV0aWxfMS5ub29wLFxuICAgIG9uQ29sdW1uT3JkZXJDaGFuZ2U6IHV0aWxfMS5ub29wLFxufTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIHV0aWxfMSA9IHJlcXVpcmUoXCIuLi91dGlsXCIpO1xudmFyIHVzZURpZFVwZGF0ZUVmZmVjdF8xID0gcmVxdWlyZShcIi4uL2hvb2tzL3VzZURpZFVwZGF0ZUVmZmVjdFwiKTtcbmZ1bmN0aW9uIHVzZUNvbHVtbnMoY29sdW1ucywgb25Db2x1bW5PcmRlckNoYW5nZSwgZGVmYXVsdFNvcnRGaWVsZElkLCBkZWZhdWx0U29ydEFzYykge1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKGZ1bmN0aW9uICgpIHsgcmV0dXJuICgwLCB1dGlsXzEuZGVjb3JhdGVDb2x1bW5zKShjb2x1bW5zKTsgfSksIHRhYmxlQ29sdW1ucyA9IF9hWzBdLCBzZXRUYWJsZUNvbHVtbnMgPSBfYVsxXTtcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZSgnJyksIGRyYWdnaW5nQ29sdW1uSWQgPSBfYlswXSwgc2V0RHJhZ2dpbmdDb2x1bW4gPSBfYlsxXTtcbiAgICB2YXIgc291cmNlQ29sdW1uSWQgPSBSZWFjdC51c2VSZWYoJycpO1xuICAgICgwLCB1c2VEaWRVcGRhdGVFZmZlY3RfMS5kZWZhdWx0KShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldFRhYmxlQ29sdW1ucygoMCwgdXRpbF8xLmRlY29yYXRlQ29sdW1ucykoY29sdW1ucykpO1xuICAgIH0sIFtjb2x1bW5zXSk7XG4gICAgdmFyIGhhbmRsZURyYWdTdGFydCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IGUudGFyZ2V0LmF0dHJpYnV0ZXM7XG4gICAgICAgIHZhciBpZCA9IChfYSA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCdkYXRhLWNvbHVtbi1pZCcpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudmFsdWU7XG4gICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgc291cmNlQ29sdW1uSWQuY3VycmVudCA9ICgoX2MgPSAoX2IgPSB0YWJsZUNvbHVtbnNbKDAsIHV0aWxfMS5maW5kQ29sdW1uSW5kZXhCeUlkKSh0YWJsZUNvbHVtbnMsIGlkKV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5pZCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnRvU3RyaW5nKCkpIHx8ICcnO1xuICAgICAgICAgICAgc2V0RHJhZ2dpbmdDb2x1bW4oc291cmNlQ29sdW1uSWQuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICB9LCBbdGFibGVDb2x1bW5zXSk7XG4gICAgdmFyIGhhbmRsZURyYWdFbnRlciA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBlLnRhcmdldC5hdHRyaWJ1dGVzO1xuICAgICAgICB2YXIgaWQgPSAoX2EgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgnZGF0YS1jb2x1bW4taWQnKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnZhbHVlO1xuICAgICAgICBpZiAoaWQgJiYgc291cmNlQ29sdW1uSWQuY3VycmVudCAmJiBpZCAhPT0gc291cmNlQ29sdW1uSWQuY3VycmVudCkge1xuICAgICAgICAgICAgdmFyIHNlbGVjdGVkQ29sSW5kZXggPSAoMCwgdXRpbF8xLmZpbmRDb2x1bW5JbmRleEJ5SWQpKHRhYmxlQ29sdW1ucywgc291cmNlQ29sdW1uSWQuY3VycmVudCk7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0Q29sSW5kZXggPSAoMCwgdXRpbF8xLmZpbmRDb2x1bW5JbmRleEJ5SWQpKHRhYmxlQ29sdW1ucywgaWQpO1xuICAgICAgICAgICAgdmFyIHJlb3JkZXJlZENvbHMgPSBfX3NwcmVhZEFycmF5KFtdLCB0YWJsZUNvbHVtbnMsIHRydWUpO1xuICAgICAgICAgICAgcmVvcmRlcmVkQ29sc1tzZWxlY3RlZENvbEluZGV4XSA9IHRhYmxlQ29sdW1uc1t0YXJnZXRDb2xJbmRleF07XG4gICAgICAgICAgICByZW9yZGVyZWRDb2xzW3RhcmdldENvbEluZGV4XSA9IHRhYmxlQ29sdW1uc1tzZWxlY3RlZENvbEluZGV4XTtcbiAgICAgICAgICAgIHNldFRhYmxlQ29sdW1ucyhyZW9yZGVyZWRDb2xzKTtcbiAgICAgICAgICAgIG9uQ29sdW1uT3JkZXJDaGFuZ2UocmVvcmRlcmVkQ29scyk7XG4gICAgICAgIH1cbiAgICB9LCBbb25Db2x1bW5PcmRlckNoYW5nZSwgdGFibGVDb2x1bW5zXSk7XG4gICAgdmFyIGhhbmRsZURyYWdPdmVyID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0sIFtdKTtcbiAgICB2YXIgaGFuZGxlRHJhZ0xlYXZlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0sIFtdKTtcbiAgICB2YXIgaGFuZGxlRHJhZ0VuZCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgc291cmNlQ29sdW1uSWQuY3VycmVudCA9ICcnO1xuICAgICAgICBzZXREcmFnZ2luZ0NvbHVtbignJyk7XG4gICAgfSwgW10pO1xuICAgIHZhciBkZWZhdWx0U29ydERpcmVjdGlvbiA9ICgwLCB1dGlsXzEuZ2V0U29ydERpcmVjdGlvbikoZGVmYXVsdFNvcnRBc2MpO1xuICAgIHZhciBkZWZhdWx0U29ydENvbHVtbiA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkgeyByZXR1cm4gdGFibGVDb2x1bW5zWygwLCB1dGlsXzEuZmluZENvbHVtbkluZGV4QnlJZCkodGFibGVDb2x1bW5zLCBkZWZhdWx0U29ydEZpZWxkSWQgPT09IG51bGwgfHwgZGVmYXVsdFNvcnRGaWVsZElkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWZhdWx0U29ydEZpZWxkSWQudG9TdHJpbmcoKSldIHx8IHt9OyB9LCBbZGVmYXVsdFNvcnRGaWVsZElkLCB0YWJsZUNvbHVtbnNdKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB0YWJsZUNvbHVtbnM6IHRhYmxlQ29sdW1ucyxcbiAgICAgICAgZHJhZ2dpbmdDb2x1bW5JZDogZHJhZ2dpbmdDb2x1bW5JZCxcbiAgICAgICAgaGFuZGxlRHJhZ1N0YXJ0OiBoYW5kbGVEcmFnU3RhcnQsXG4gICAgICAgIGhhbmRsZURyYWdFbnRlcjogaGFuZGxlRHJhZ0VudGVyLFxuICAgICAgICBoYW5kbGVEcmFnT3ZlcjogaGFuZGxlRHJhZ092ZXIsXG4gICAgICAgIGhhbmRsZURyYWdMZWF2ZTogaGFuZGxlRHJhZ0xlYXZlLFxuICAgICAgICBoYW5kbGVEcmFnRW5kOiBoYW5kbGVEcmFnRW5kLFxuICAgICAgICBkZWZhdWx0U29ydERpcmVjdGlvbjogZGVmYXVsdFNvcnREaXJlY3Rpb24sXG4gICAgICAgIGRlZmF1bHRTb3J0Q29sdW1uOiBkZWZhdWx0U29ydENvbHVtbixcbiAgICB9O1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gdXNlQ29sdW1ucztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIHVzZUZpcnN0VXBkYXRlID0gZnVuY3Rpb24gKGZuLCBpbnB1dHMpIHtcbiAgICB2YXIgZmlyc3RVcGRhdGUgPSBSZWFjdC51c2VSZWYodHJ1ZSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGZpcnN0VXBkYXRlLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGZpcnN0VXBkYXRlLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmbigpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgfSwgaW5wdXRzKTtcbn07XG5leHBvcnRzLmRlZmF1bHQgPSB1c2VGaXJzdFVwZGF0ZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIGNvbnN0YW50c18xID0gcmVxdWlyZShcIi4uL2NvbnN0YW50c1wiKTtcbmZ1bmN0aW9uIHVzZVJUTChkaXJlY3Rpb24pIHtcbiAgICBpZiAoZGlyZWN0aW9uID09PSB2b2lkIDApIHsgZGlyZWN0aW9uID0gY29uc3RhbnRzXzEuRGlyZWN0aW9uLkFVVE87IH1cbiAgICB2YXIgaXNDbGllbnQgPSB0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JztcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIGlzUlRMID0gX2FbMF0sIHNldElzUlRMID0gX2FbMV07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFpc0NsaWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICdhdXRvJykge1xuICAgICAgICAgICAgdmFyIGNhblVzZSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHdpbmRvdyAmJiB3aW5kb3cuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBjYW5Vc2UgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gY29uc3QgY2FuVXNlID0gISEoIHdpbmRvdz8uZG9jdW1lbnQ/LmNyZWF0ZUVsZW1lbnQgKTtcbiAgICAgICAgICAgIHZhciBib2R5UlRMID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ0JPRFknKVswXTtcbiAgICAgICAgICAgIHZhciBodG1sVFJMID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ0hUTUwnKVswXTtcbiAgICAgICAgICAgIHZhciBoYXNSVEwgPSBib2R5UlRMLmRpciA9PT0gJ3J0bCcgfHwgaHRtbFRSTC5kaXIgPT09ICdydGwnO1xuICAgICAgICAgICAgc2V0SXNSVEwoY2FuVXNlICYmIGhhc1JUTCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0SXNSVEwoZGlyZWN0aW9uID09PSAncnRsJyk7XG4gICAgfSwgW2RpcmVjdGlvbiwgaXNDbGllbnRdKTtcbiAgICByZXR1cm4gaXNSVEw7XG59XG5leHBvcnRzLmRlZmF1bHQgPSB1c2VSVEw7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIENyZWRpdDogaHR0cHM6Ly91c2Vob29rcy5jb20vdXNlV2luZG93U2l6ZS9cbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciB1c2VXaW5kb3dTaXplID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBpc0NsaWVudCA9IHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnO1xuICAgIGZ1bmN0aW9uIGdldFNpemUoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB3aWR0aDogaXNDbGllbnQgPyB3aW5kb3cuaW5uZXJXaWR0aCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGhlaWdodDogaXNDbGllbnQgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKGdldFNpemUpLCB3aW5kb3dTaXplID0gX2FbMF0sIHNldFdpbmRvd1NpemUgPSBfYVsxXTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIWlzQ2xpZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBoYW5kbGVSZXNpemUoKSB7XG4gICAgICAgICAgICBzZXRXaW5kb3dTaXplKGdldFNpemUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlc2l6ZSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVzaXplKTsgfTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gd2luZG93U2l6ZTtcbn07XG5leHBvcnRzLmRlZmF1bHQgPSB1c2VXaW5kb3dTaXplO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgcmVhY3RfMSA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBEcm9wZG93bkljb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAocmVhY3RfMS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCB3aWR0aDogXCIyNFwiLCBoZWlnaHQ6IFwiMjRcIiwgdmlld0JveDogXCIwIDAgMjQgMjRcIiB9LFxuICAgIHJlYWN0XzEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTcgMTBsNSA1IDUtNXpcIiB9KSxcbiAgICByZWFjdF8xLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0wIDBoMjR2MjRIMHpcIiwgZmlsbDogXCJub25lXCIgfSkpKTsgfTtcbmV4cG9ydHMuZGVmYXVsdCA9IERyb3Bkb3duSWNvbjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHJlYWN0XzEgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgRXhwYW5kZXJDb2xsYXBzZWRJY29uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKHJlYWN0XzEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgZmlsbDogXCJjdXJyZW50Q29sb3JcIiwgaGVpZ2h0OiBcIjI0XCIsIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIjI0XCIsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgfSxcbiAgICByZWFjdF8xLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk04LjU5IDE2LjM0bDQuNTgtNC41OS00LjU4LTQuNTlMMTAgNS43NWw2IDYtNiA2elwiIH0pLFxuICAgIHJlYWN0XzEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAtLjI1aDI0djI0SDB6XCIsIGZpbGw6IFwibm9uZVwiIH0pKSk7IH07XG5leHBvcnRzLmRlZmF1bHQgPSBFeHBhbmRlckNvbGxhcHNlZEljb247XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciByZWFjdF8xID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIEV4cGFuZGVyRXhwYW5kZWRJY29uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKHJlYWN0XzEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgZmlsbDogXCJjdXJyZW50Q29sb3JcIiwgaGVpZ2h0OiBcIjI0XCIsIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIjI0XCIsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgfSxcbiAgICByZWFjdF8xLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk03LjQxIDcuODRMMTIgMTIuNDJsNC41OS00LjU4TDE4IDkuMjVsLTYgNi02LTZ6XCIgfSksXG4gICAgcmVhY3RfMS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMC0uNzVoMjR2MjRIMHpcIiwgZmlsbDogXCJub25lXCIgfSkpKTsgfTtcbmV4cG9ydHMuZGVmYXVsdCA9IEV4cGFuZGVyRXhwYW5kZWRJY29uO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgcmVhY3RfMSA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBGaXJzdFBhZ2UgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAocmVhY3RfMS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCB3aWR0aDogXCIyNFwiLCBoZWlnaHQ6IFwiMjRcIiwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIiwgcm9sZTogXCJwcmVzZW50YXRpb25cIiB9LFxuICAgIHJlYWN0XzEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTE4LjQxIDE2LjU5TDEzLjgyIDEybDQuNTktNC41OUwxNyA2bC02IDYgNiA2ek02IDZoMnYxMkg2elwiIH0pLFxuICAgIHJlYWN0XzEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6IFwibm9uZVwiLCBkOiBcIk0yNCAyNEgwVjBoMjR2MjR6XCIgfSkpKTsgfTtcbmV4cG9ydHMuZGVmYXVsdCA9IEZpcnN0UGFnZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHJlYWN0XzEgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgTGFzdFBhZ2UgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAocmVhY3RfMS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCB3aWR0aDogXCIyNFwiLCBoZWlnaHQ6IFwiMjRcIiwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIiwgcm9sZTogXCJwcmVzZW50YXRpb25cIiB9LFxuICAgIHJlYWN0XzEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTUuNTkgNy40MUwxMC4xOCAxMmwtNC41OSA0LjU5TDcgMThsNi02LTYtNnpNMTYgNmgydjEyaC0yelwiIH0pLFxuICAgIHJlYWN0XzEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6IFwibm9uZVwiLCBkOiBcIk0wIDBoMjR2MjRIMFYwelwiIH0pKSk7IH07XG5leHBvcnRzLmRlZmF1bHQgPSBMYXN0UGFnZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHJlYWN0XzEgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgTGVmdCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIChyZWFjdF8xLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIHdpZHRoOiBcIjI0XCIsIGhlaWdodDogXCIyNFwiLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiLCByb2xlOiBcInByZXNlbnRhdGlvblwiIH0sXG4gICAgcmVhY3RfMS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTUuNDEgNy40MUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnpcIiB9KSxcbiAgICByZWFjdF8xLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0wIDBoMjR2MjRIMHpcIiwgZmlsbDogXCJub25lXCIgfSkpKTsgfTtcbmV4cG9ydHMuZGVmYXVsdCA9IExlZnQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX21ha2VUZW1wbGF0ZU9iamVjdCA9ICh0aGlzICYmIHRoaXMuX19tYWtlVGVtcGxhdGVPYmplY3QpIHx8IGZ1bmN0aW9uIChjb29rZWQsIHJhdykge1xuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gICAgcmV0dXJuIGNvb2tlZDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgcmVhY3RfMSA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBzdHlsZWRfY29tcG9uZW50c18xID0gcmVxdWlyZShcInN0eWxlZC1jb21wb25lbnRzXCIpO1xudmFyIEljb24gPSBzdHlsZWRfY29tcG9uZW50c18xLmRlZmF1bHQuc3Bhbih0ZW1wbGF0ZU9iamVjdF8xIHx8ICh0ZW1wbGF0ZU9iamVjdF8xID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0cGFkZGluZzogMnB4O1xcblxcdGNvbG9yOiBpbmhlcml0O1xcblxcdGZsZXgtZ3JvdzogMDtcXG5cXHRmbGV4LXNocmluazogMDtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSwgW1wiXFxuXFx0cGFkZGluZzogMnB4O1xcblxcdGNvbG9yOiBpbmhlcml0O1xcblxcdGZsZXgtZ3JvdzogMDtcXG5cXHRmbGV4LXNocmluazogMDtcXG5cXHRcIiwgXCI7XFxuXFx0XCIsIFwiO1xcblwiXSkpLCBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgc29ydEFjdGl2ZSA9IF9hLnNvcnRBY3RpdmU7XG4gICAgcmV0dXJuIChzb3J0QWN0aXZlID8gJ29wYWNpdHk6IDEnIDogJ29wYWNpdHk6IDAnKTtcbn0sIGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBzb3J0RGlyZWN0aW9uID0gX2Euc29ydERpcmVjdGlvbjtcbiAgICByZXR1cm4gc29ydERpcmVjdGlvbiA9PT0gJ2Rlc2MnICYmICd0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpJztcbn0pO1xudmFyIE5hdGl2ZVNvcnRJY29uID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHNvcnRBY3RpdmUgPSBfYS5zb3J0QWN0aXZlLCBzb3J0RGlyZWN0aW9uID0gX2Euc29ydERpcmVjdGlvbjtcbiAgICByZXR1cm4gKHJlYWN0XzEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEljb24sIHsgc29ydEFjdGl2ZTogc29ydEFjdGl2ZSwgc29ydERpcmVjdGlvbjogc29ydERpcmVjdGlvbiB9LCBcIlxcdTI1QjJcIikpO1xufTtcbmV4cG9ydHMuZGVmYXVsdCA9IE5hdGl2ZVNvcnRJY29uO1xudmFyIHRlbXBsYXRlT2JqZWN0XzE7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciByZWFjdF8xID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIFJpZ2h0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKHJlYWN0XzEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgd2lkdGg6IFwiMjRcIiwgaGVpZ2h0OiBcIjI0XCIsIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsIHJvbGU6IFwicHJlc2VudGF0aW9uXCIgfSxcbiAgICByZWFjdF8xLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnpcIiB9KSxcbiAgICByZWFjdF8xLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0wIDBoMjR2MjRIMHpcIiwgZmlsbDogXCJub25lXCIgfSkpKTsgfTtcbmV4cG9ydHMuZGVmYXVsdCA9IFJpZ2h0O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3QgPSAodGhpcyAmJiB0aGlzLl9fbWFrZVRlbXBsYXRlT2JqZWN0KSB8fCBmdW5jdGlvbiAoY29va2VkLCByYXcpIHtcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICAgIHJldHVybiBjb29rZWQ7XG59O1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5tZWRpYSA9IGV4cG9ydHMuTEFSR0UgPSBleHBvcnRzLk1FRElVTSA9IGV4cG9ydHMuU01BTEwgPSB2b2lkIDA7XG4vLyBAdHMtaWdub3JlXG52YXIgc3R5bGVkX2NvbXBvbmVudHNfMSA9IHJlcXVpcmUoXCJzdHlsZWQtY29tcG9uZW50c1wiKTtcbmV4cG9ydHMuU01BTEwgPSA1OTk7XG5leHBvcnRzLk1FRElVTSA9IDk1OTtcbmV4cG9ydHMuTEFSR0UgPSAxMjgwO1xuZXhwb3J0cy5tZWRpYSA9IHtcbiAgICBzbTogZnVuY3Rpb24gKGxpdGVyYWxzKSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5jc3MpKHRlbXBsYXRlT2JqZWN0XzEgfHwgKHRlbXBsYXRlT2JqZWN0XzEgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRcXHRAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiBcIiwgXCJweCkge1xcblxcdFxcdFxcdFwiLCBcIlxcblxcdFxcdH1cXG5cXHRcIl0sIFtcIlxcblxcdFxcdEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IFwiLCBcInB4KSB7XFxuXFx0XFx0XFx0XCIsIFwiXFxuXFx0XFx0fVxcblxcdFwiXSkpLCBleHBvcnRzLlNNQUxMLCBzdHlsZWRfY29tcG9uZW50c18xLmNzcy5hcHBseSh2b2lkIDAsIF9fc3ByZWFkQXJyYXkoW2xpdGVyYWxzXSwgYXJncywgZmFsc2UpKSk7XG4gICAgfSxcbiAgICBtZDogZnVuY3Rpb24gKGxpdGVyYWxzKSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5jc3MpKHRlbXBsYXRlT2JqZWN0XzIgfHwgKHRlbXBsYXRlT2JqZWN0XzIgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRcXHRAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiBcIiwgXCJweCkge1xcblxcdFxcdFxcdFwiLCBcIlxcblxcdFxcdH1cXG5cXHRcIl0sIFtcIlxcblxcdFxcdEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IFwiLCBcInB4KSB7XFxuXFx0XFx0XFx0XCIsIFwiXFxuXFx0XFx0fVxcblxcdFwiXSkpLCBleHBvcnRzLk1FRElVTSwgc3R5bGVkX2NvbXBvbmVudHNfMS5jc3MuYXBwbHkodm9pZCAwLCBfX3NwcmVhZEFycmF5KFtsaXRlcmFsc10sIGFyZ3MsIGZhbHNlKSkpO1xuICAgIH0sXG4gICAgbGc6IGZ1bmN0aW9uIChsaXRlcmFscykge1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKDAsIHN0eWxlZF9jb21wb25lbnRzXzEuY3NzKSh0ZW1wbGF0ZU9iamVjdF8zIHx8ICh0ZW1wbGF0ZU9iamVjdF8zID0gX19tYWtlVGVtcGxhdGVPYmplY3QoW1wiXFxuXFx0XFx0QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogXCIsIFwicHgpIHtcXG5cXHRcXHRcXHRcIiwgXCJcXG5cXHRcXHR9XFxuXFx0XCJdLCBbXCJcXG5cXHRcXHRAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiBcIiwgXCJweCkge1xcblxcdFxcdFxcdFwiLCBcIlxcblxcdFxcdH1cXG5cXHRcIl0pKSwgZXhwb3J0cy5MQVJHRSwgc3R5bGVkX2NvbXBvbmVudHNfMS5jc3MuYXBwbHkodm9pZCAwLCBfX3NwcmVhZEFycmF5KFtsaXRlcmFsc10sIGFyZ3MsIGZhbHNlKSkpO1xuICAgIH0sXG4gICAgY3VzdG9tOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChsaXRlcmFscykge1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJnc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoMCwgc3R5bGVkX2NvbXBvbmVudHNfMS5jc3MpKHRlbXBsYXRlT2JqZWN0XzQgfHwgKHRlbXBsYXRlT2JqZWN0XzQgPSBfX21ha2VUZW1wbGF0ZU9iamVjdChbXCJcXG5cXHRcXHRcXHRcXHRAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiBcIiwgXCJweCkge1xcblxcdFxcdFxcdFxcdFxcdFwiLCBcIlxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcIl0sIFtcIlxcblxcdFxcdFxcdFxcdEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IFwiLCBcInB4KSB7XFxuXFx0XFx0XFx0XFx0XFx0XCIsIFwiXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFwiXSkpLCB2YWx1ZSwgc3R5bGVkX2NvbXBvbmVudHNfMS5jc3MuYXBwbHkodm9pZCAwLCBfX3NwcmVhZEFycmF5KFtsaXRlcmFsc10sIGFyZ3MsIGZhbHNlKSkpO1xuICAgICAgICB9O1xuICAgIH0sXG59O1xudmFyIHRlbXBsYXRlT2JqZWN0XzEsIHRlbXBsYXRlT2JqZWN0XzIsIHRlbXBsYXRlT2JqZWN0XzMsIHRlbXBsYXRlT2JqZWN0XzQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY3JlYXRlU3R5bGVzID0gZXhwb3J0cy5kZWZhdWx0U3R5bGVzID0gdm9pZCAwO1xudmFyIGRlZXBtZXJnZV8xID0gcmVxdWlyZShcImRlZXBtZXJnZVwiKTtcbnZhciB0aGVtZXNfMSA9IHJlcXVpcmUoXCIuL3RoZW1lc1wiKTtcbnZhciBkZWZhdWx0U3R5bGVzID0gZnVuY3Rpb24gKHRoZW1lKSB7IHJldHVybiAoe1xuICAgIHRhYmxlOiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBjb2xvcjogdGhlbWUudGV4dC5wcmltYXJ5LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5iYWNrZ3JvdW5kLmRlZmF1bHQsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICB0YWJsZVdyYXBwZXI6IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICd0YWJsZScsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICByZXNwb25zaXZlV3JhcHBlcjoge1xuICAgICAgICBzdHlsZToge30sXG4gICAgfSxcbiAgICBoZWFkZXI6IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGZvbnRTaXplOiAnMjJweCcsXG4gICAgICAgICAgICBjb2xvcjogdGhlbWUudGV4dC5wcmltYXJ5LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5iYWNrZ3JvdW5kLmRlZmF1bHQsXG4gICAgICAgICAgICBtaW5IZWlnaHQ6ICc1NnB4JyxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiAnMTZweCcsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQ6ICc4cHgnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc3ViSGVhZGVyOiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQuZGVmYXVsdCxcbiAgICAgICAgICAgIG1pbkhlaWdodDogJzUycHgnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgaGVhZDoge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgY29sb3I6IHRoZW1lLnRleHQucHJpbWFyeSxcbiAgICAgICAgICAgIGZvbnRTaXplOiAnMTJweCcsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBoZWFkUm93OiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQuZGVmYXVsdCxcbiAgICAgICAgICAgIG1pbkhlaWdodDogJzUycHgnLFxuICAgICAgICAgICAgYm9yZGVyQm90dG9tV2lkdGg6ICcxcHgnLFxuICAgICAgICAgICAgYm9yZGVyQm90dG9tQ29sb3I6IHRoZW1lLmRpdmlkZXIuZGVmYXVsdCxcbiAgICAgICAgICAgIGJvcmRlckJvdHRvbVN0eWxlOiAnc29saWQnLFxuICAgICAgICB9LFxuICAgICAgICBkZW5zZVN0eWxlOiB7XG4gICAgICAgICAgICBtaW5IZWlnaHQ6ICczMnB4JyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGhlYWRDZWxsczoge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgcGFkZGluZ0xlZnQ6ICcxNnB4JyxcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodDogJzE2cHgnLFxuICAgICAgICB9LFxuICAgICAgICBkcmFnZ2luZ1N0eWxlOiB7XG4gICAgICAgICAgICBjdXJzb3I6ICdtb3ZlJyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGNvbnRleHRNZW51OiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmNvbnRleHQuYmFja2dyb3VuZCxcbiAgICAgICAgICAgIGZvbnRTaXplOiAnMThweCcsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiA0MDAsXG4gICAgICAgICAgICBjb2xvcjogdGhlbWUuY29udGV4dC50ZXh0LFxuICAgICAgICAgICAgcGFkZGluZ0xlZnQ6ICcxNnB4JyxcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodDogJzhweCcsXG4gICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCknLFxuICAgICAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiAnMTI1bXMnLFxuICAgICAgICAgICAgdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOiAnY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknLFxuICAgICAgICAgICAgd2lsbENoYW5nZTogJ3RyYW5zZm9ybScsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2ZVN0eWxlOiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLCAwLCAwKScsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBjZWxsczoge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgcGFkZGluZ0xlZnQ6ICcxNnB4JyxcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodDogJzE2cHgnLFxuICAgICAgICAgICAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRyYWdnaW5nU3R5bGU6IHt9LFxuICAgIH0sXG4gICAgcm93czoge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgZm9udFNpemU6ICcxM3B4JyxcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZS50ZXh0LnByaW1hcnksXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQuZGVmYXVsdCxcbiAgICAgICAgICAgIG1pbkhlaWdodDogJzQ4cHgnLFxuICAgICAgICAgICAgJyY6bm90KDpsYXN0LW9mLXR5cGUpJzoge1xuICAgICAgICAgICAgICAgIGJvcmRlckJvdHRvbVN0eWxlOiAnc29saWQnLFxuICAgICAgICAgICAgICAgIGJvcmRlckJvdHRvbVdpZHRoOiAnMXB4JyxcbiAgICAgICAgICAgICAgICBib3JkZXJCb3R0b21Db2xvcjogdGhlbWUuZGl2aWRlci5kZWZhdWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVuc2VTdHlsZToge1xuICAgICAgICAgICAgbWluSGVpZ2h0OiAnMzJweCcsXG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdGVkSGlnaGxpZ2h0U3R5bGU6IHtcbiAgICAgICAgICAgIC8vIHVzZSBudGgtb2YtdHlwZShuKSB0byBvdmVycmlkZSBvdGhlciBudGggc2VsZWN0b3JzXG4gICAgICAgICAgICAnJjpudGgtb2YtdHlwZShuKSc6IHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhlbWUuc2VsZWN0ZWQudGV4dCxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnNlbGVjdGVkLmRlZmF1bHQsXG4gICAgICAgICAgICAgICAgYm9yZGVyQm90dG9tQ29sb3I6IHRoZW1lLmJhY2tncm91bmQuZGVmYXVsdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGhpZ2hsaWdodE9uSG92ZXJTdHlsZToge1xuICAgICAgICAgICAgY29sb3I6IHRoZW1lLmhpZ2hsaWdodE9uSG92ZXIudGV4dCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuaGlnaGxpZ2h0T25Ib3Zlci5kZWZhdWx0LFxuICAgICAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiAnMC4xNXMnLFxuICAgICAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5OiAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICAgICAgICBib3JkZXJCb3R0b21Db2xvcjogdGhlbWUuYmFja2dyb3VuZC5kZWZhdWx0LFxuICAgICAgICAgICAgb3V0bGluZVN0eWxlOiAnc29saWQnLFxuICAgICAgICAgICAgb3V0bGluZVdpZHRoOiAnMXB4JyxcbiAgICAgICAgICAgIG91dGxpbmVDb2xvcjogdGhlbWUuYmFja2dyb3VuZC5kZWZhdWx0LFxuICAgICAgICB9LFxuICAgICAgICBzdHJpcGVkU3R5bGU6IHtcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5zdHJpcGVkLnRleHQsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnN0cmlwZWQuZGVmYXVsdCxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGV4cGFuZGVyUm93OiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBjb2xvcjogdGhlbWUudGV4dC5wcmltYXJ5LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5iYWNrZ3JvdW5kLmRlZmF1bHQsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBleHBhbmRlckNlbGw6IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGZsZXg6ICcwIDAgNDhweCcsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBleHBhbmRlckJ1dHRvbjoge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgY29sb3I6IHRoZW1lLmJ1dHRvbi5kZWZhdWx0LFxuICAgICAgICAgICAgZmlsbDogdGhlbWUuYnV0dG9uLmRlZmF1bHQsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6ICcycHgnLFxuICAgICAgICAgICAgdHJhbnNpdGlvbjogJzAuMjVzJyxcbiAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICcmOmhvdmVyOmVuYWJsZWQnOiB7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJyY6ZGlzYWJsZWQnOiB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHRoZW1lLmJ1dHRvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnJjpob3Zlcjpub3QoOmRpc2FibGVkKSc6IHtcbiAgICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJ1dHRvbi5ob3ZlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnJjpmb2N1cyc6IHtcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5idXR0b24uZm9jdXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3ZnOiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAnYXV0bycsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgcGFnaW5hdGlvbjoge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgY29sb3I6IHRoZW1lLnRleHQuc2Vjb25kYXJ5LFxuICAgICAgICAgICAgZm9udFNpemU6ICcxM3B4JyxcbiAgICAgICAgICAgIG1pbkhlaWdodDogJzU2cHgnLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5iYWNrZ3JvdW5kLmRlZmF1bHQsXG4gICAgICAgICAgICBib3JkZXJUb3BTdHlsZTogJ3NvbGlkJyxcbiAgICAgICAgICAgIGJvcmRlclRvcFdpZHRoOiAnMXB4JyxcbiAgICAgICAgICAgIGJvcmRlclRvcENvbG9yOiB0aGVtZS5kaXZpZGVyLmRlZmF1bHQsXG4gICAgICAgIH0sXG4gICAgICAgIHBhZ2VCdXR0b25zU3R5bGU6IHtcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzUwJScsXG4gICAgICAgICAgICBoZWlnaHQ6ICc0MHB4JyxcbiAgICAgICAgICAgIHdpZHRoOiAnNDBweCcsXG4gICAgICAgICAgICBwYWRkaW5nOiAnOHB4JyxcbiAgICAgICAgICAgIG1hcmdpbjogJ3B4JyxcbiAgICAgICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICAgICAgdHJhbnNpdGlvbjogJzAuNHMnLFxuICAgICAgICAgICAgY29sb3I6IHRoZW1lLmJ1dHRvbi5kZWZhdWx0LFxuICAgICAgICAgICAgZmlsbDogdGhlbWUuYnV0dG9uLmRlZmF1bHQsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAnJjpkaXNhYmxlZCc6IHtcbiAgICAgICAgICAgICAgICBjdXJzb3I6ICd1bnNldCcsXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoZW1lLmJ1dHRvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICBmaWxsOiB0aGVtZS5idXR0b24uZGlzYWJsZWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJyY6aG92ZXI6bm90KDpkaXNhYmxlZCknOiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5idXR0b24uaG92ZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJyY6Zm9jdXMnOiB7XG4gICAgICAgICAgICAgICAgb3V0bGluZTogJ25vbmUnLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYnV0dG9uLmZvY3VzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIG5vRGF0YToge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBjb2xvcjogdGhlbWUudGV4dC5wcmltYXJ5LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5iYWNrZ3JvdW5kLmRlZmF1bHQsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBwcm9ncmVzczoge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBjb2xvcjogdGhlbWUudGV4dC5wcmltYXJ5LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5iYWNrZ3JvdW5kLmRlZmF1bHQsXG4gICAgICAgIH0sXG4gICAgfSxcbn0pOyB9O1xuZXhwb3J0cy5kZWZhdWx0U3R5bGVzID0gZGVmYXVsdFN0eWxlcztcbnZhciBjcmVhdGVTdHlsZXMgPSBmdW5jdGlvbiAoY3VzdG9tU3R5bGVzLCB0aGVtZU5hbWUsIGluaGVyaXQpIHtcbiAgICBpZiAoY3VzdG9tU3R5bGVzID09PSB2b2lkIDApIHsgY3VzdG9tU3R5bGVzID0ge307IH1cbiAgICBpZiAodGhlbWVOYW1lID09PSB2b2lkIDApIHsgdGhlbWVOYW1lID0gJ2RlZmF1bHQnOyB9XG4gICAgaWYgKGluaGVyaXQgPT09IHZvaWQgMCkgeyBpbmhlcml0ID0gJ2RlZmF1bHQnOyB9XG4gICAgdmFyIHRoZW1lVHlwZSA9IHRoZW1lc18xLmRlZmF1bHRUaGVtZXNbdGhlbWVOYW1lXSA/IHRoZW1lTmFtZSA6IGluaGVyaXQ7XG4gICAgcmV0dXJuICgwLCBkZWVwbWVyZ2VfMS5kZWZhdWx0KSgoMCwgZXhwb3J0cy5kZWZhdWx0U3R5bGVzKSh0aGVtZXNfMS5kZWZhdWx0VGhlbWVzW3RoZW1lVHlwZV0pLCBjdXN0b21TdHlsZXMpO1xufTtcbmV4cG9ydHMuY3JlYXRlU3R5bGVzID0gY3JlYXRlU3R5bGVzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy50YWJsZVJlZHVjZXIgPSB2b2lkIDA7XG52YXIgdXRpbF8xID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbmZ1bmN0aW9uIHRhYmxlUmVkdWNlcihzdGF0ZSwgYWN0aW9uKSB7XG4gICAgdmFyIHRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlID0gIXN0YXRlLnRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlO1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnU0VMRUNUX0FMTF9ST1dTJzoge1xuICAgICAgICAgICAgdmFyIGtleUZpZWxkXzEgPSBhY3Rpb24ua2V5RmllbGQsIHJvd3NfMSA9IGFjdGlvbi5yb3dzLCByb3dDb3VudCA9IGFjdGlvbi5yb3dDb3VudCwgbWVyZ2VTZWxlY3Rpb25zID0gYWN0aW9uLm1lcmdlU2VsZWN0aW9ucztcbiAgICAgICAgICAgIHZhciBhbGxDaGVja2VkID0gIXN0YXRlLmFsbFNlbGVjdGVkO1xuICAgICAgICAgICAgdmFyIHRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlXzEgPSAhc3RhdGUudG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2U7XG4gICAgICAgICAgICBpZiAobWVyZ2VTZWxlY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbGVjdGlvbnMgPSBhbGxDaGVja2VkXG4gICAgICAgICAgICAgICAgICAgID8gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBzdGF0ZS5zZWxlY3RlZFJvd3MsIHRydWUpLCByb3dzXzEuZmlsdGVyKGZ1bmN0aW9uIChyb3cpIHsgcmV0dXJuICEoMCwgdXRpbF8xLmlzUm93U2VsZWN0ZWQpKHJvdywgc3RhdGUuc2VsZWN0ZWRSb3dzLCBrZXlGaWVsZF8xKTsgfSksIHRydWUpIDogc3RhdGUuc2VsZWN0ZWRSb3dzLmZpbHRlcihmdW5jdGlvbiAocm93KSB7IHJldHVybiAhKDAsIHV0aWxfMS5pc1Jvd1NlbGVjdGVkKShyb3csIHJvd3NfMSwga2V5RmllbGRfMSk7IH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGUpLCB7IGFsbFNlbGVjdGVkOiBhbGxDaGVja2VkLCBzZWxlY3RlZENvdW50OiBzZWxlY3Rpb25zLmxlbmd0aCwgc2VsZWN0ZWRSb3dzOiBzZWxlY3Rpb25zLCB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZTogdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2VfMSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGUpLCB7IGFsbFNlbGVjdGVkOiBhbGxDaGVja2VkLCBzZWxlY3RlZENvdW50OiBhbGxDaGVja2VkID8gcm93Q291bnQgOiAwLCBzZWxlY3RlZFJvd3M6IGFsbENoZWNrZWQgPyByb3dzXzEgOiBbXSwgdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2U6IHRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlXzEgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnU0VMRUNUX1NJTkdMRV9ST1cnOiB7XG4gICAgICAgICAgICB2YXIga2V5RmllbGQgPSBhY3Rpb24ua2V5RmllbGQsIHJvdyA9IGFjdGlvbi5yb3csIGlzU2VsZWN0ZWQgPSBhY3Rpb24uaXNTZWxlY3RlZCwgcm93Q291bnQgPSBhY3Rpb24ucm93Q291bnQsIHNpbmdsZVNlbGVjdCA9IGFjdGlvbi5zaW5nbGVTZWxlY3Q7XG4gICAgICAgICAgICAvLyBoYW5kbGUgc2luZ2xlIHNlbGVjdCBtb2RlXG4gICAgICAgICAgICBpZiAoc2luZ2xlU2VsZWN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZSksIHsgc2VsZWN0ZWRDb3VudDogMCwgYWxsU2VsZWN0ZWQ6IGZhbHNlLCBzZWxlY3RlZFJvd3M6IFtdLCB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZTogdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2UgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGUpLCB7IHNlbGVjdGVkQ291bnQ6IDEsIGFsbFNlbGVjdGVkOiBmYWxzZSwgc2VsZWN0ZWRSb3dzOiBbcm93XSwgdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2U6IHRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaGFuZGxlIG11bHRpIHNlbGVjdCBtb2RlXG4gICAgICAgICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGUpLCB7IHNlbGVjdGVkQ291bnQ6IHN0YXRlLnNlbGVjdGVkUm93cy5sZW5ndGggPiAwID8gc3RhdGUuc2VsZWN0ZWRSb3dzLmxlbmd0aCAtIDEgOiAwLCBhbGxTZWxlY3RlZDogZmFsc2UsIHNlbGVjdGVkUm93czogKDAsIHV0aWxfMS5yZW1vdmVJdGVtKShzdGF0ZS5zZWxlY3RlZFJvd3MsIHJvdywga2V5RmllbGQpLCB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZTogdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlKSwgeyBzZWxlY3RlZENvdW50OiBzdGF0ZS5zZWxlY3RlZFJvd3MubGVuZ3RoICsgMSwgYWxsU2VsZWN0ZWQ6IHN0YXRlLnNlbGVjdGVkUm93cy5sZW5ndGggKyAxID09PSByb3dDb3VudCwgc2VsZWN0ZWRSb3dzOiAoMCwgdXRpbF8xLmluc2VydEl0ZW0pKHN0YXRlLnNlbGVjdGVkUm93cywgcm93KSwgdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2U6IHRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ1NFTEVDVF9NVUxUSVBMRV9ST1dTJzoge1xuICAgICAgICAgICAgdmFyIGtleUZpZWxkXzIgPSBhY3Rpb24ua2V5RmllbGQsIHNlbGVjdGVkUm93cyA9IGFjdGlvbi5zZWxlY3RlZFJvd3MsIHRvdGFsUm93cyA9IGFjdGlvbi50b3RhbFJvd3MsIG1lcmdlU2VsZWN0aW9ucyA9IGFjdGlvbi5tZXJnZVNlbGVjdGlvbnM7XG4gICAgICAgICAgICBpZiAobWVyZ2VTZWxlY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbGVjdGlvbnMgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIHN0YXRlLnNlbGVjdGVkUm93cywgdHJ1ZSksIHNlbGVjdGVkUm93cy5maWx0ZXIoZnVuY3Rpb24gKHJvdykgeyByZXR1cm4gISgwLCB1dGlsXzEuaXNSb3dTZWxlY3RlZCkocm93LCBzdGF0ZS5zZWxlY3RlZFJvd3MsIGtleUZpZWxkXzIpOyB9KSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZSksIHsgc2VsZWN0ZWRDb3VudDogc2VsZWN0aW9ucy5sZW5ndGgsIGFsbFNlbGVjdGVkOiBmYWxzZSwgc2VsZWN0ZWRSb3dzOiBzZWxlY3Rpb25zLCB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZTogdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlKSwgeyBzZWxlY3RlZENvdW50OiBzZWxlY3RlZFJvd3MubGVuZ3RoLCBhbGxTZWxlY3RlZDogc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gdG90YWxSb3dzLCBzZWxlY3RlZFJvd3M6IHNlbGVjdGVkUm93cywgdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2U6IHRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ0NMRUFSX1NFTEVDVEVEX1JPV1MnOiB7XG4gICAgICAgICAgICB2YXIgc2VsZWN0ZWRSb3dzRmxhZyA9IGFjdGlvbi5zZWxlY3RlZFJvd3NGbGFnO1xuICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZSksIHsgYWxsU2VsZWN0ZWQ6IGZhbHNlLCBzZWxlY3RlZENvdW50OiAwLCBzZWxlY3RlZFJvd3M6IFtdLCBzZWxlY3RlZFJvd3NGbGFnOiBzZWxlY3RlZFJvd3NGbGFnIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ1NPUlRfQ0hBTkdFJzoge1xuICAgICAgICAgICAgdmFyIHNvcnREaXJlY3Rpb24gPSBhY3Rpb24uc29ydERpcmVjdGlvbiwgc2VsZWN0ZWRDb2x1bW4gPSBhY3Rpb24uc2VsZWN0ZWRDb2x1bW4sIGNsZWFyU2VsZWN0ZWRPblNvcnQgPSBhY3Rpb24uY2xlYXJTZWxlY3RlZE9uU29ydDtcbiAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGUpLCB7IHNlbGVjdGVkQ29sdW1uOiBzZWxlY3RlZENvbHVtbiwgc29ydERpcmVjdGlvbjogc29ydERpcmVjdGlvbiwgY3VycmVudFBhZ2U6IDEgfSksIChjbGVhclNlbGVjdGVkT25Tb3J0ICYmIHtcbiAgICAgICAgICAgICAgICBhbGxTZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudDogMCxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFJvd3M6IFtdLFxuICAgICAgICAgICAgICAgIHRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlOiB0b2dnbGVPblNlbGVjdGVkUm93c0NoYW5nZSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdDSEFOR0VfUEFHRSc6IHtcbiAgICAgICAgICAgIHZhciBwYWdlID0gYWN0aW9uLnBhZ2UsIHBhZ2luYXRpb25TZXJ2ZXIgPSBhY3Rpb24ucGFnaW5hdGlvblNlcnZlciwgdmlzaWJsZU9ubHkgPSBhY3Rpb24udmlzaWJsZU9ubHksIHBlcnNpc3RTZWxlY3RlZE9uUGFnZUNoYW5nZSA9IGFjdGlvbi5wZXJzaXN0U2VsZWN0ZWRPblBhZ2VDaGFuZ2U7XG4gICAgICAgICAgICB2YXIgbWVyZ2VTZWxlY3Rpb25zID0gcGFnaW5hdGlvblNlcnZlciAmJiBwZXJzaXN0U2VsZWN0ZWRPblBhZ2VDaGFuZ2U7XG4gICAgICAgICAgICB2YXIgY2xlYXJTZWxlY3RlZE9uUGFnZSA9IChwYWdpbmF0aW9uU2VydmVyICYmICFwZXJzaXN0U2VsZWN0ZWRPblBhZ2VDaGFuZ2UpIHx8IHZpc2libGVPbmx5O1xuICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZSksIHsgY3VycmVudFBhZ2U6IHBhZ2UgfSksIChtZXJnZVNlbGVjdGlvbnMgJiYge1xuICAgICAgICAgICAgICAgIGFsbFNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH0pKSwgKGNsZWFyU2VsZWN0ZWRPblBhZ2UgJiYge1xuICAgICAgICAgICAgICAgIGFsbFNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50OiAwLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkUm93czogW10sXG4gICAgICAgICAgICAgICAgdG9nZ2xlT25TZWxlY3RlZFJvd3NDaGFuZ2U6IHRvZ2dsZU9uU2VsZWN0ZWRSb3dzQ2hhbmdlLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ0NIQU5HRV9ST1dTX1BFUl9QQUdFJzoge1xuICAgICAgICAgICAgdmFyIHJvd3NQZXJQYWdlID0gYWN0aW9uLnJvd3NQZXJQYWdlLCBwYWdlID0gYWN0aW9uLnBhZ2U7XG4gICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlKSwgeyBjdXJyZW50UGFnZTogcGFnZSwgcm93c1BlclBhZ2U6IHJvd3NQZXJQYWdlIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy50YWJsZVJlZHVjZXIgPSB0YWJsZVJlZHVjZXI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY3JlYXRlVGhlbWUgPSBleHBvcnRzLmRlZmF1bHRUaGVtZXMgPSB2b2lkIDA7XG52YXIgZGVlcG1lcmdlXzEgPSByZXF1aXJlKFwiZGVlcG1lcmdlXCIpO1xudmFyIGRlZmF1bHRUaGVtZSA9IHtcbiAgICB0ZXh0OiB7XG4gICAgICAgIHByaW1hcnk6ICdyZ2JhKDAsIDAsIDAsIDAuODcpJyxcbiAgICAgICAgc2Vjb25kYXJ5OiAncmdiYSgwLCAwLCAwLCAwLjU0KScsXG4gICAgICAgIGRpc2FibGVkOiAncmdiYSgwLCAwLCAwLCAwLjM4KScsXG4gICAgfSxcbiAgICBiYWNrZ3JvdW5kOiB7XG4gICAgICAgIGRlZmF1bHQ6ICcjRkZGRkZGJyxcbiAgICB9LFxuICAgIGNvbnRleHQ6IHtcbiAgICAgICAgYmFja2dyb3VuZDogJyNlM2YyZmQnLFxuICAgICAgICB0ZXh0OiAncmdiYSgwLCAwLCAwLCAwLjg3KScsXG4gICAgfSxcbiAgICBkaXZpZGVyOiB7XG4gICAgICAgIGRlZmF1bHQ6ICdyZ2JhKDAsMCwwLC4xMiknLFxuICAgIH0sXG4gICAgYnV0dG9uOiB7XG4gICAgICAgIGRlZmF1bHQ6ICdyZ2JhKDAsMCwwLC41NCknLFxuICAgICAgICBmb2N1czogJ3JnYmEoMCwwLDAsLjEyKScsXG4gICAgICAgIGhvdmVyOiAncmdiYSgwLDAsMCwuMTIpJyxcbiAgICAgICAgZGlzYWJsZWQ6ICdyZ2JhKDAsIDAsIDAsIC4xOCknLFxuICAgIH0sXG4gICAgc2VsZWN0ZWQ6IHtcbiAgICAgICAgZGVmYXVsdDogJyNlM2YyZmQnLFxuICAgICAgICB0ZXh0OiAncmdiYSgwLCAwLCAwLCAwLjg3KScsXG4gICAgfSxcbiAgICBoaWdobGlnaHRPbkhvdmVyOiB7XG4gICAgICAgIGRlZmF1bHQ6ICcjRUVFRUVFJyxcbiAgICAgICAgdGV4dDogJ3JnYmEoMCwgMCwgMCwgMC44NyknLFxuICAgIH0sXG4gICAgc3RyaXBlZDoge1xuICAgICAgICBkZWZhdWx0OiAnI0ZBRkFGQScsXG4gICAgICAgIHRleHQ6ICdyZ2JhKDAsIDAsIDAsIDAuODcpJyxcbiAgICB9LFxufTtcbmV4cG9ydHMuZGVmYXVsdFRoZW1lcyA9IHtcbiAgICBkZWZhdWx0OiBkZWZhdWx0VGhlbWUsXG4gICAgbGlnaHQ6IGRlZmF1bHRUaGVtZSxcbiAgICBkYXJrOiB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIHByaW1hcnk6ICcjRkZGRkZGJyxcbiAgICAgICAgICAgIHNlY29uZGFyeTogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC43KScsXG4gICAgICAgICAgICBkaXNhYmxlZDogJ3JnYmEoMCwwLDAsLjEyKScsXG4gICAgICAgIH0sXG4gICAgICAgIGJhY2tncm91bmQ6IHtcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcjNDI0MjQyJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJyNFOTFFNjMnLFxuICAgICAgICAgICAgdGV4dDogJyNGRkZGRkYnLFxuICAgICAgICB9LFxuICAgICAgICBkaXZpZGVyOiB7XG4gICAgICAgICAgICBkZWZhdWx0OiAncmdiYSg4MSwgODEsIDgxLCAxKScsXG4gICAgICAgIH0sXG4gICAgICAgIGJ1dHRvbjoge1xuICAgICAgICAgICAgZGVmYXVsdDogJyNGRkZGRkYnLFxuICAgICAgICAgICAgZm9jdXM6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIC41NCknLFxuICAgICAgICAgICAgaG92ZXI6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIC4xMiknLFxuICAgICAgICAgICAgZGlzYWJsZWQ6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIC4xOCknLFxuICAgICAgICB9LFxuICAgICAgICBzZWxlY3RlZDoge1xuICAgICAgICAgICAgZGVmYXVsdDogJ3JnYmEoMCwgMCwgMCwgLjcpJyxcbiAgICAgICAgICAgIHRleHQ6ICcjRkZGRkZGJyxcbiAgICAgICAgfSxcbiAgICAgICAgaGlnaGxpZ2h0T25Ib3Zlcjoge1xuICAgICAgICAgICAgZGVmYXVsdDogJ3JnYmEoMCwgMCwgMCwgLjcpJyxcbiAgICAgICAgICAgIHRleHQ6ICcjRkZGRkZGJyxcbiAgICAgICAgfSxcbiAgICAgICAgc3RyaXBlZDoge1xuICAgICAgICAgICAgZGVmYXVsdDogJ3JnYmEoMCwgMCwgMCwgLjg3KScsXG4gICAgICAgICAgICB0ZXh0OiAnI0ZGRkZGRicsXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG5mdW5jdGlvbiBjcmVhdGVUaGVtZShuYW1lLCBjdXN0b21UaGVtZSwgaW5oZXJpdCkge1xuICAgIGlmIChuYW1lID09PSB2b2lkIDApIHsgbmFtZSA9ICdkZWZhdWx0JzsgfVxuICAgIGlmIChpbmhlcml0ID09PSB2b2lkIDApIHsgaW5oZXJpdCA9ICdkZWZhdWx0JzsgfVxuICAgIGlmICghZXhwb3J0cy5kZWZhdWx0VGhlbWVzW25hbWVdKSB7XG4gICAgICAgIGV4cG9ydHMuZGVmYXVsdFRoZW1lc1tuYW1lXSA9ICgwLCBkZWVwbWVyZ2VfMS5kZWZhdWx0KShleHBvcnRzLmRlZmF1bHRUaGVtZXNbaW5oZXJpdF0sIGN1c3RvbVRoZW1lIHx8IHt9KTtcbiAgICB9XG4gICAgLy8gYWxsb3cgdHdlYWtpbmcgZGVmYXVsdCBvciBsaWdodCB0aGVtZXMgaWYgdGhlIHRoZW1lIHBhc3NlZCBpbiBtYXRjaGVzXG4gICAgZXhwb3J0cy5kZWZhdWx0VGhlbWVzW25hbWVdID0gKDAsIGRlZXBtZXJnZV8xLmRlZmF1bHQpKGV4cG9ydHMuZGVmYXVsdFRoZW1lc1tuYW1lXSwgY3VzdG9tVGhlbWUgfHwge30pO1xuICAgIHJldHVybiBleHBvcnRzLmRlZmF1bHRUaGVtZXNbbmFtZV07XG59XG5leHBvcnRzLmNyZWF0ZVRoZW1lID0gY3JlYXRlVGhlbWU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU29ydE9yZGVyID0gdm9pZCAwO1xudmFyIFNvcnRPcmRlcjtcbihmdW5jdGlvbiAoU29ydE9yZGVyKSB7XG4gICAgU29ydE9yZGVyW1wiQVNDXCJdID0gXCJhc2NcIjtcbiAgICBTb3J0T3JkZXJbXCJERVNDXCJdID0gXCJkZXNjXCI7XG59KShTb3J0T3JkZXIgPSBleHBvcnRzLlNvcnRPcmRlciB8fCAoZXhwb3J0cy5Tb3J0T3JkZXIgPSB7fSkpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5lcXVhbGl6ZUlkID0gZXhwb3J0cy5maW5kQ29sdW1uSW5kZXhCeUlkID0gZXhwb3J0cy5pc09kZCA9IGV4cG9ydHMuaXNSb3dTZWxlY3RlZCA9IGV4cG9ydHMuZ2V0Q29uZGl0aW9uYWxTdHlsZSA9IGV4cG9ydHMubm9vcCA9IGV4cG9ydHMucmVjYWxjdWxhdGVQYWdlID0gZXhwb3J0cy5nZXROdW1iZXJPZlBhZ2VzID0gZXhwb3J0cy5oYW5kbGVGdW5jdGlvblByb3BzID0gZXhwb3J0cy5nZXRTb3J0RGlyZWN0aW9uID0gZXhwb3J0cy5kZWNvcmF0ZUNvbHVtbnMgPSBleHBvcnRzLnJlbW92ZUl0ZW0gPSBleHBvcnRzLmluc2VydEl0ZW0gPSBleHBvcnRzLmdldFByb3BlcnR5ID0gZXhwb3J0cy5wYXJzZVNlbGVjdG9yID0gZXhwb3J0cy5zb3J0ID0gZXhwb3J0cy5pc0VtcHR5ID0gZXhwb3J0cy5wcm9wID0gdm9pZCAwO1xudmFyIHR5cGVzXzEgPSByZXF1aXJlKFwiLi90eXBlc1wiKTtcbmZ1bmN0aW9uIHByb3Aob2JqLCBrZXkpIHtcbiAgICByZXR1cm4gb2JqW2tleV07XG59XG5leHBvcnRzLnByb3AgPSBwcm9wO1xuZnVuY3Rpb24gaXNFbXB0eShmaWVsZCkge1xuICAgIGlmIChmaWVsZCA9PT0gdm9pZCAwKSB7IGZpZWxkID0gJyc7IH1cbiAgICBpZiAodHlwZW9mIGZpZWxkID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAhZmllbGQgfHwgZmllbGQubGVuZ3RoID09PSAwO1xufVxuZXhwb3J0cy5pc0VtcHR5ID0gaXNFbXB0eTtcbmZ1bmN0aW9uIHNvcnQocm93cywgXG4vLyBUT0RPOiByZW1vdmUgc3RyaW5nIGluIFY4XG5zZWxlY3RvciwgZGlyZWN0aW9uLCBzb3J0Rm4pIHtcbiAgICBpZiAoIXNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiByb3dzO1xuICAgIH1cbiAgICBpZiAoc29ydEZuICYmIHR5cGVvZiBzb3J0Rm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgLy8gd2UgbXVzdCBjcmVhdGUgYSBuZXcgcm93cyByZWZlcmVuY2VcbiAgICAgICAgcmV0dXJuIHNvcnRGbihyb3dzLnNsaWNlKDApLCBzZWxlY3RvciwgZGlyZWN0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvd3Muc2xpY2UoMCkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICB2YXIgYVZhbHVlO1xuICAgICAgICB2YXIgYlZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIHNlbGVjdG9yID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgYVZhbHVlID0gcGFyc2VTZWxlY3RvcihhLCBzZWxlY3Rvcik7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBiVmFsdWUgPSBwYXJzZVNlbGVjdG9yKGIsIHNlbGVjdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFWYWx1ZSA9IHNlbGVjdG9yKGEpO1xuICAgICAgICAgICAgYlZhbHVlID0gc2VsZWN0b3IoYik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2FzYycpIHtcbiAgICAgICAgICAgIGlmIChhVmFsdWUgPCBiVmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYVZhbHVlID4gYlZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2Rlc2MnKSB7XG4gICAgICAgICAgICBpZiAoYVZhbHVlID4gYlZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFWYWx1ZSA8IGJWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH0pO1xufVxuZXhwb3J0cy5zb3J0ID0gc29ydDtcbi8vIFRPRE86IHN0cmluZyBiYXNlZCBzZWxlY3RvcnMgd2lsbCBiZSByZW1vdmVkIGluIHY4XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZnVuY3Rpb24gcGFyc2VTZWxlY3Rvcihyb3csIHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHNlbGVjdG9yLnNwbGl0KCcuJykucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBhcnQpIHtcbiAgICAgICAgLy8gTyhuMikgd2hlbiBxdWVyeWluZyBmb3IgYW4gYXJyYXkgKGUuZy4gaXRlbXNbMF0ubmFtZSlcbiAgICAgICAgLy8gTGlrZWx5LCB0aGUgb2JqZWN0IGRlcHRoIHdpbGwgYmUgcmVhc29uYWJsZSBlbm91Z2ggdGhhdCBwZXJmb3JtYW5jZSBpcyBub3QgYSBjb25jZXJuXG4gICAgICAgIHZhciBhcnIgPSBwYXJ0Lm1hdGNoKC9bXlxcXVxcXFxbLl0rL2cpO1xuICAgICAgICBpZiAoYXJyICYmIGFyci5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2NbYXJyW2ldXVthcnJbaSArIDFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjW3BhcnRdO1xuICAgIH0sIHJvdyk7XG59XG5leHBvcnRzLnBhcnNlU2VsZWN0b3IgPSBwYXJzZVNlbGVjdG9yO1xuZnVuY3Rpb24gZ2V0UHJvcGVydHkocm93LCBcbi8vIFRPRE86IHJlbW92ZSBzdHJpbmcgdHlwZSBpbiBWOFxuc2VsZWN0b3IsIC8vIHVua25vd24gYWxsb3dzIHVzIHRvIHRocm93IGFuIGVycm9yIGZvciBKUyBjb2RlXG5mb3JtYXQsIHJvd0luZGV4KSB7XG4gICAgaWYgKCFzZWxlY3Rvcikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gVE9ETzogcmVtb3ZlICBzdHJpbmcgY2hlY2sgaW4gVjhcbiAgICBpZiAodHlwZW9mIHNlbGVjdG9yICE9PSAnc3RyaW5nJyAmJiB0eXBlb2Ygc2VsZWN0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZWxlY3RvciBtdXN0IGJlIGEgLiBkZWxpbWl0ZWQgc3RyaW5nIGVnIChteS5wcm9wZXJ0eSkgb3IgZnVuY3Rpb24gKGUuZy4gcm93ID0+IHJvdy5maWVsZCcpO1xuICAgIH1cbiAgICAvLyBmb3JtYXQgd2lsbCBvdmVycmlkZSBob3cgdGhlIHNlbGVjdG9yIGlzIGRpc3BsYXllZCBidXQgdGhlIG9yaWdpbmFsIGRhdGFzZXQgaXMgdXNlZCBmb3Igc29ydGluZ1xuICAgIGlmIChmb3JtYXQgJiYgdHlwZW9mIGZvcm1hdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gZm9ybWF0KHJvdywgcm93SW5kZXgpO1xuICAgIH1cbiAgICBpZiAoc2VsZWN0b3IgJiYgdHlwZW9mIHNlbGVjdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3Rvcihyb3csIHJvd0luZGV4KTtcbiAgICB9XG4gICAgLy8gVE9ETzogUmVtb3ZlIGluIFY4XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBwYXJzZVNlbGVjdG9yKHJvdywgc2VsZWN0b3IpO1xufVxuZXhwb3J0cy5nZXRQcm9wZXJ0eSA9IGdldFByb3BlcnR5O1xuZnVuY3Rpb24gaW5zZXJ0SXRlbShhcnJheSwgaXRlbSwgaW5kZXgpIHtcbiAgICBpZiAoYXJyYXkgPT09IHZvaWQgMCkgeyBhcnJheSA9IFtdOyB9XG4gICAgaWYgKGluZGV4ID09PSB2b2lkIDApIHsgaW5kZXggPSAwOyB9XG4gICAgcmV0dXJuIF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBhcnJheS5zbGljZSgwLCBpbmRleCksIHRydWUpLCBbaXRlbV0sIGZhbHNlKSwgYXJyYXkuc2xpY2UoaW5kZXgpLCB0cnVlKTtcbn1cbmV4cG9ydHMuaW5zZXJ0SXRlbSA9IGluc2VydEl0ZW07XG5mdW5jdGlvbiByZW1vdmVJdGVtKGFycmF5LCBpdGVtLCBrZXlGaWVsZCkge1xuICAgIGlmIChhcnJheSA9PT0gdm9pZCAwKSB7IGFycmF5ID0gW107IH1cbiAgICBpZiAoa2V5RmllbGQgPT09IHZvaWQgMCkgeyBrZXlGaWVsZCA9ICdpZCc7IH1cbiAgICB2YXIgbmV3QXJyYXkgPSBhcnJheS5zbGljZSgpO1xuICAgIHZhciBvdXRlckZpZWxkID0gcHJvcChpdGVtLCBrZXlGaWVsZCk7XG4gICAgaWYgKG91dGVyRmllbGQpIHtcbiAgICAgICAgbmV3QXJyYXkuc3BsaWNlKG5ld0FycmF5LmZpbmRJbmRleChmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgdmFyIGlubmVyRmllbGQgPSBwcm9wKGEsIGtleUZpZWxkKTtcbiAgICAgICAgICAgIHJldHVybiBpbm5lckZpZWxkID09PSBvdXRlckZpZWxkO1xuICAgICAgICB9KSwgMSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBuZXdBcnJheS5zcGxpY2UobmV3QXJyYXkuZmluZEluZGV4KGZ1bmN0aW9uIChhKSB7IHJldHVybiBhID09PSBpdGVtOyB9KSwgMSk7XG4gICAgfVxuICAgIHJldHVybiBuZXdBcnJheTtcbn1cbmV4cG9ydHMucmVtb3ZlSXRlbSA9IHJlbW92ZUl0ZW07XG4vLyBNYWtlIHN1cmUgY29sdW1ucyBoYXZlIHVuaXF1ZSBpZCdzXG5mdW5jdGlvbiBkZWNvcmF0ZUNvbHVtbnMoY29sdW1ucykge1xuICAgIHJldHVybiBjb2x1bW5zLm1hcChmdW5jdGlvbiAoY29sdW1uLCBpbmRleCkge1xuICAgICAgICB2YXIgZGVjb3JhdGVkQ29sdW1uID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGNvbHVtbiksIHsgc29ydGFibGU6IGNvbHVtbi5zb3J0YWJsZSB8fCAhIWNvbHVtbi5zb3J0RnVuY3Rpb24gfHwgdW5kZWZpbmVkIH0pO1xuICAgICAgICBpZiAoIWNvbHVtbi5pZCkge1xuICAgICAgICAgICAgZGVjb3JhdGVkQ29sdW1uLmlkID0gaW5kZXggKyAxO1xuICAgICAgICAgICAgcmV0dXJuIGRlY29yYXRlZENvbHVtbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVjb3JhdGVkQ29sdW1uO1xuICAgIH0pO1xufVxuZXhwb3J0cy5kZWNvcmF0ZUNvbHVtbnMgPSBkZWNvcmF0ZUNvbHVtbnM7XG5mdW5jdGlvbiBnZXRTb3J0RGlyZWN0aW9uKGFzY0RpcmVjdGlvbikge1xuICAgIGlmIChhc2NEaXJlY3Rpb24gPT09IHZvaWQgMCkgeyBhc2NEaXJlY3Rpb24gPSBmYWxzZTsgfVxuICAgIHJldHVybiBhc2NEaXJlY3Rpb24gPyB0eXBlc18xLlNvcnRPcmRlci5BU0MgOiB0eXBlc18xLlNvcnRPcmRlci5ERVNDO1xufVxuZXhwb3J0cy5nZXRTb3J0RGlyZWN0aW9uID0gZ2V0U29ydERpcmVjdGlvbjtcbmZ1bmN0aW9uIGhhbmRsZUZ1bmN0aW9uUHJvcHMob2JqZWN0KSB7XG4gICAgdmFyIGFyZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhcmdzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICB2YXIgbmV3T2JqZWN0O1xuICAgIE9iamVjdC5rZXlzKG9iamVjdClcbiAgICAgICAgLm1hcChmdW5jdGlvbiAobykgeyByZXR1cm4gb2JqZWN0W29dOyB9KVxuICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIG9sZE9iamVjdCA9IG9iamVjdDtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbmV3T2JqZWN0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9sZE9iamVjdCksIChfYSA9IHt9LCBfYVtPYmplY3Qua2V5cyhvYmplY3QpW2luZGV4XV0gPSB2YWx1ZS5hcHBseSh2b2lkIDAsIGFyZ3MpLCBfYSkpO1xuICAgICAgICAgICAgLy8gZGVsZXRlIG9sZE9iamVjdFt2YWx1ZV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbmV3T2JqZWN0IHx8IG9iamVjdDtcbn1cbmV4cG9ydHMuaGFuZGxlRnVuY3Rpb25Qcm9wcyA9IGhhbmRsZUZ1bmN0aW9uUHJvcHM7XG5mdW5jdGlvbiBnZXROdW1iZXJPZlBhZ2VzKHJvd0NvdW50LCByb3dzUGVyUGFnZSkge1xuICAgIHJldHVybiBNYXRoLmNlaWwocm93Q291bnQgLyByb3dzUGVyUGFnZSk7XG59XG5leHBvcnRzLmdldE51bWJlck9mUGFnZXMgPSBnZXROdW1iZXJPZlBhZ2VzO1xuZnVuY3Rpb24gcmVjYWxjdWxhdGVQYWdlKHByZXZQYWdlLCBuZXh0UGFnZSkge1xuICAgIHJldHVybiBNYXRoLm1pbihwcmV2UGFnZSwgbmV4dFBhZ2UpO1xufVxuZXhwb3J0cy5yZWNhbGN1bGF0ZVBhZ2UgPSByZWNhbGN1bGF0ZVBhZ2U7XG52YXIgbm9vcCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG51bGw7IH07XG5leHBvcnRzLm5vb3AgPSBub29wO1xuZnVuY3Rpb24gZ2V0Q29uZGl0aW9uYWxTdHlsZShyb3csIGNvbmRpdGlvbmFsUm93U3R5bGVzLCBiYXNlQ2xhc3NOYW1lcykge1xuICAgIGlmIChjb25kaXRpb25hbFJvd1N0eWxlcyA9PT0gdm9pZCAwKSB7IGNvbmRpdGlvbmFsUm93U3R5bGVzID0gW107IH1cbiAgICBpZiAoYmFzZUNsYXNzTmFtZXMgPT09IHZvaWQgMCkgeyBiYXNlQ2xhc3NOYW1lcyA9IFtdOyB9XG4gICAgdmFyIHJvd1N0eWxlID0ge307XG4gICAgdmFyIGNsYXNzTmFtZXMgPSBfX3NwcmVhZEFycmF5KFtdLCBiYXNlQ2xhc3NOYW1lcywgdHJ1ZSk7XG4gICAgaWYgKGNvbmRpdGlvbmFsUm93U3R5bGVzLmxlbmd0aCkge1xuICAgICAgICBjb25kaXRpb25hbFJvd1N0eWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChjcnMpIHtcbiAgICAgICAgICAgIGlmICghY3JzLndoZW4gfHwgdHlwZW9mIGNycy53aGVuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIndoZW5cIiBtdXN0IGJlIGRlZmluZWQgaW4gdGhlIGNvbmRpdGlvbmFsIHN0eWxlIG9iamVjdCBhbmQgbXVzdCBiZSBmdW5jdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXZhbHVhdGUgdGhlIGZpZWxkIGFuZCBpZiB0cnVlIHJldHVybiBhIHRoZSBzdHlsZSB0byBiZSBhcHBsaWVkXG4gICAgICAgICAgICBpZiAoY3JzLndoZW4ocm93KSkge1xuICAgICAgICAgICAgICAgIHJvd1N0eWxlID0gY3JzLnN0eWxlIHx8IHt9O1xuICAgICAgICAgICAgICAgIGlmIChjcnMuY2xhc3NOYW1lcykge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzID0gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBjbGFzc05hbWVzLCB0cnVlKSwgY3JzLmNsYXNzTmFtZXMsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNycy5zdHlsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICByb3dTdHlsZSA9IGNycy5zdHlsZShyb3cpIHx8IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7IHN0eWxlOiByb3dTdHlsZSwgY2xhc3NOYW1lczogY2xhc3NOYW1lcy5qb2luKCcgJykgfTtcbn1cbmV4cG9ydHMuZ2V0Q29uZGl0aW9uYWxTdHlsZSA9IGdldENvbmRpdGlvbmFsU3R5bGU7XG5mdW5jdGlvbiBpc1Jvd1NlbGVjdGVkKHJvdywgc2VsZWN0ZWRSb3dzLCBrZXlGaWVsZCkge1xuICAgIGlmIChzZWxlY3RlZFJvd3MgPT09IHZvaWQgMCkgeyBzZWxlY3RlZFJvd3MgPSBbXTsgfVxuICAgIGlmIChrZXlGaWVsZCA9PT0gdm9pZCAwKSB7IGtleUZpZWxkID0gJ2lkJzsgfVxuICAgIC8vIGNhc3Qgcm93IGFzIFRhYmxlUm93IGJlY2F1c2UgdGhlIHByb3BlcnR5IGlzIHVua25vd24gaW4gYWR2YW5jZSB0aGVyZWZvcmUsIHR5cGVzY3JpcHQgd2lsbCB0aHJvdyBhbiBlcnJvclxuICAgIHZhciBvdXRlckZpZWxkID0gcHJvcChyb3csIGtleUZpZWxkKTtcbiAgICBpZiAob3V0ZXJGaWVsZCkge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRSb3dzLnNvbWUoZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgIHZhciBpbm5lckZpZWxkID0gcHJvcChyLCBrZXlGaWVsZCk7XG4gICAgICAgICAgICByZXR1cm4gaW5uZXJGaWVsZCA9PT0gb3V0ZXJGaWVsZDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZFJvd3Muc29tZShmdW5jdGlvbiAocikgeyByZXR1cm4gciA9PT0gcm93OyB9KTtcbn1cbmV4cG9ydHMuaXNSb3dTZWxlY3RlZCA9IGlzUm93U2VsZWN0ZWQ7XG5mdW5jdGlvbiBpc09kZChudW0pIHtcbiAgICByZXR1cm4gbnVtICUgMiA9PT0gMDtcbn1cbmV4cG9ydHMuaXNPZGQgPSBpc09kZDtcbmZ1bmN0aW9uIGZpbmRDb2x1bW5JbmRleEJ5SWQoY29sdW1ucywgaWQpIHtcbiAgICBpZiAoIWlkKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbHVtbnMuZmluZEluZGV4KGZ1bmN0aW9uIChjKSB7XG4gICAgICAgIHJldHVybiBlcXVhbGl6ZUlkKGMuaWQsIGlkKTtcbiAgICB9KTtcbn1cbmV4cG9ydHMuZmluZENvbHVtbkluZGV4QnlJZCA9IGZpbmRDb2x1bW5JbmRleEJ5SWQ7XG5mdW5jdGlvbiBlcXVhbGl6ZUlkKGEsIGIpIHtcbiAgICByZXR1cm4gYSA9PSBiO1xufVxuZXhwb3J0cy5lcXVhbGl6ZUlkID0gZXF1YWxpemVJZDtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkJhZGdlID0gdm9pZCAwO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIEJhZGdlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhCYWRnZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBCYWRnZSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBCYWRnZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMsIHsgY2xhc3NOYW1lOiAnYmFkZ2UgJyArIHRoaXMucHJvcHMuY2xhc3NOYW1lIH0pKTtcbiAgICB9O1xuICAgIHJldHVybiBCYWRnZTtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLkJhZGdlID0gQmFkZ2U7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5CdXR0b24gPSB2b2lkIDA7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgQnV0dG9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhCdXR0b24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQnV0dG9uKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZGVmYXVsdFByb3BzID0ge1xuICAgICAgICAgICAgZHVyYXRpb246IDk1MFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIC8vIGNvbnN0cnVjdG9yKHByb3BzOiBCdXR0b25Qcm9wcykge1xuICAgIC8vICAgICBzdXBlcihwcm9wcyk7XG4gICAgLy8gfVxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpc2F0aW9uIG9mIHRoZSB3YXZlIGVmZmVjdCBhZnRlciB0aGUgY29tcG9uZW50IGRpZCBtb3VudFxuICAgICAqL1xuICAgIEJ1dHRvbi5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICh0aGlzLmVsKSB7XG4gICAgICAgICAgICAvL25ldyBXYXZlcyh0aGlzLmVsLCB7IGR1cmF0aW9uOiA5NTAgfSk7XG4gICAgICAgICAgICBpZiAoJ29udG91Y2hzdGFydCcgaW4gd2luZG93KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMudHJpZ2dlckVmZmVjdC5iaW5kKF90aGlzKShlKTtcbiAgICAgICAgICAgICAgICB9LCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMudHJpZ2dlckVmZmVjdC5iaW5kKF90aGlzKShlKTtcbiAgICAgICAgICAgIH0sIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQnV0dG9uLnByb3RvdHlwZS50cmlnZ2VyRWZmZWN0ID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHRoaXMuZWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0VmZmVjdChlKTtcbiAgICAgICAgICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuaGlkZUVmZmVjdC5iaW5kKF90aGlzKShlKTtcbiAgICAgICAgICAgICAgICB9LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGNhbmNlbCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmhpZGVFZmZlY3QuYmluZChfdGhpcykoZSk7XG4gICAgICAgICAgICAgICAgfSwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlRWZmZWN0LmJpbmQoX3RoaXMpKGUpO1xuICAgICAgICAgICAgfSwgZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlRWZmZWN0LmJpbmQoX3RoaXMpKGUpO1xuICAgICAgICAgICAgfSwgZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW5kJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5oaWRlRWZmZWN0LmJpbmQoX3RoaXMpKGUpO1xuICAgICAgICAgICAgfSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBCdXR0b24ucHJvdG90eXBlLmlzV2luZG93ID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgICByZXR1cm4gb2JqICE9PSBudWxsICYmIG9iaiA9PT0gb2JqLndpbmRvdztcbiAgICB9O1xuICAgIEJ1dHRvbi5wcm90b3R5cGUuZ2V0V2luZG93ID0gZnVuY3Rpb24gKGVsZW0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNXaW5kb3coZWxlbSkgPyBlbGVtIDogZWxlbS5ub2RlVHlwZSA9PT0gOSAmJiBlbGVtLmRlZmF1bHRWaWV3O1xuICAgIH07XG4gICAgQnV0dG9uLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHZhciBkb2NFbGVtLCB3aW4sIGJveCA9IHsgdG9wOiAwLCBsZWZ0OiAwIH0sIGRvYyA9IHRoaXMuZWwgJiYgdGhpcy5lbC5vd25lckRvY3VtZW50O1xuICAgICAgICBkb2NFbGVtID0gZG9jID09PSBudWxsIHx8IGRvYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZG9jLmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgaWYgKHR5cGVvZiAoKF9hID0gdGhpcy5lbCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCkgIT09IHR5cGVvZiB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGJveCA9ICgoX2IgPSB0aGlzLmVsKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpIHx8IHsgdG9wOiAwLCBsZWZ0OiAwIH07XG4gICAgICAgIH1cbiAgICAgICAgd2luID0gdGhpcy5nZXRXaW5kb3coZG9jKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvcDogYm94LnRvcCArIHdpbi5wYWdlWU9mZnNldCAtICgoZG9jRWxlbSA9PT0gbnVsbCB8fCBkb2NFbGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkb2NFbGVtLmNsaWVudFRvcCkgfHwgMCksXG4gICAgICAgICAgICBsZWZ0OiBib3gubGVmdCArIHdpbi5wYWdlWE9mZnNldCAtICgoZG9jRWxlbSA9PT0gbnVsbCB8fCBkb2NFbGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkb2NFbGVtLmNsaWVudExlZnQpIHx8IDApXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBCdXR0b24ucHJvdG90eXBlLnNob3dFZmZlY3QgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAodGhpcy5lbCAmJiBkb2N1bWVudCkge1xuICAgICAgICAgICAgLy8gRGlzYWJsZSByaWdodCBjbGlja1xuICAgICAgICAgICAgaWYgKGUuYnV0dG9uID09PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ3JlYXRlIHJpcHBsZVxuICAgICAgICAgICAgdmFyIHJpcHBsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgcmlwcGxlLmNsYXNzTmFtZSA9ICd3YXZlcy1yaXBwbGUnO1xuICAgICAgICAgICAgdGhpcy5lbC5hcHBlbmRDaGlsZChyaXBwbGUpO1xuICAgICAgICAgICAgdGhpcy5yaXBwbGUgPSByaXBwbGU7XG4gICAgICAgICAgICAvLyBHZXQgY2xpY2sgY29vcmRpbmF0ZSBhbmQgZWxlbWVudCB3aXRkaFxuICAgICAgICAgICAgdmFyIHBvcyA9IHRoaXMub2Zmc2V0KCk7XG4gICAgICAgICAgICB2YXIgcmVsYXRpdmVZID0gKGUucGFnZVkgLSBwb3MudG9wKTtcbiAgICAgICAgICAgIHZhciByZWxhdGl2ZVggPSAoZS5wYWdlWCAtIHBvcy5sZWZ0KTtcbiAgICAgICAgICAgIHZhciBzY2FsZSA9ICdzY2FsZSgnICsgKCh0aGlzLmVsLmNsaWVudFdpZHRoIC8gMTAwKSAqIDEwKSArICcpJztcbiAgICAgICAgICAgIC8vIFN1cHBvcnQgZm9yIHRvdWNoIGRldmljZXNcbiAgICAgICAgICAgIGlmICgndG91Y2hlcycgaW4gZSkge1xuICAgICAgICAgICAgICAgIHJlbGF0aXZlWSA9IChlLnRvdWNoZXNbMF0ucGFnZVkgLSBwb3MudG9wKTtcbiAgICAgICAgICAgICAgICByZWxhdGl2ZVggPSAoZS50b3VjaGVzWzBdLnBhZ2VYIC0gcG9zLmxlZnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQXR0YWNoIGRhdGEgdG8gZWxlbWVudFxuICAgICAgICAgICAgdGhpcy5yaXBwbGUuc2V0QXR0cmlidXRlKCdkYXRhLWhvbGQnLCBEYXRlLm5vdygpLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgdGhpcy5yaXBwbGUuc2V0QXR0cmlidXRlKCdkYXRhLXNjYWxlJywgc2NhbGUpO1xuICAgICAgICAgICAgdGhpcy5yaXBwbGUuc2V0QXR0cmlidXRlKCdkYXRhLXgnLCByZWxhdGl2ZVgudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB0aGlzLnJpcHBsZS5zZXRBdHRyaWJ1dGUoJ2RhdGEteScsIHJlbGF0aXZlWS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIC8vIFNldCByaXBwbGUgcG9zaXRpb25cbiAgICAgICAgICAgIHZhciByaXBwbGVTdHlsZSA9IHtcbiAgICAgICAgICAgICAgICAndG9wJzogcmVsYXRpdmVZICsgJ3B4JyxcbiAgICAgICAgICAgICAgICAnbGVmdCc6IHJlbGF0aXZlWCArICdweCdcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvL3RoaXMucmlwcGxlLmNsYXNzTmFtZSA9ICB0aGlzLnJpcHBsZS5jbGFzc05hbWUgKyAnIHdhdmVzLW5vdHJhbnNpdGlvbic7XG4gICAgICAgICAgICB0aGlzLnJpcHBsZS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgdGhpcy5jb252ZXJ0U3R5bGUocmlwcGxlU3R5bGUpKTtcbiAgICAgICAgICAgIHRoaXMucmlwcGxlLmNsYXNzTmFtZSA9IHRoaXMucmlwcGxlLmNsYXNzTmFtZS5yZXBsYWNlKCd3YXZlcy1ub3RyYW5zaXRpb24nLCAnJyk7XG4gICAgICAgICAgICAvLyBTY2FsZSB0aGUgcmlwcGxlXG4gICAgICAgICAgICByaXBwbGVTdHlsZVsnLXdlYmtpdC10cmFuc2Zvcm0nXSA9IHNjYWxlO1xuICAgICAgICAgICAgcmlwcGxlU3R5bGVbJy1tb3otdHJhbnNmb3JtJ10gPSBzY2FsZTtcbiAgICAgICAgICAgIHJpcHBsZVN0eWxlWyctbXMtdHJhbnNmb3JtJ10gPSBzY2FsZTtcbiAgICAgICAgICAgIHJpcHBsZVN0eWxlWyctby10cmFuc2Zvcm0nXSA9IHNjYWxlO1xuICAgICAgICAgICAgcmlwcGxlU3R5bGVbJ3RyYW5zZm9ybSddID0gc2NhbGU7XG4gICAgICAgICAgICByaXBwbGVTdHlsZVsnb3BhY2l0eSddID0gJzEnO1xuICAgICAgICAgICAgcmlwcGxlU3R5bGVbJy13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbiddID0gMiAqIHRoaXMucHJvcHMuZHVyYXRpb24gLyAzICsgJ21zJztcbiAgICAgICAgICAgIHJpcHBsZVN0eWxlWyctbW96LXRyYW5zaXRpb24tZHVyYXRpb24nXSA9IDIgKiB0aGlzLnByb3BzLmR1cmF0aW9uIC8gMyArICdtcyc7XG4gICAgICAgICAgICByaXBwbGVTdHlsZVsnLW8tdHJhbnNpdGlvbi1kdXJhdGlvbiddID0gMiAqIHRoaXMucHJvcHMuZHVyYXRpb24gLyAzICsgJ21zJztcbiAgICAgICAgICAgIHJpcHBsZVN0eWxlWyd0cmFuc2l0aW9uLWR1cmF0aW9uJ10gPSAyICogdGhpcy5wcm9wcy5kdXJhdGlvbiAvIDMgKyAnbXMnO1xuICAgICAgICAgICAgcmlwcGxlU3R5bGVbJy13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nXSA9ICdjdWJpYy1iZXppZXIoMC4yNTAsIDAuNDYwLCAwLjQ1MCwgMC45NDApJztcbiAgICAgICAgICAgIHJpcHBsZVN0eWxlWyctbW96LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJ10gPSAnY3ViaWMtYmV6aWVyKDAuMjUwLCAwLjQ2MCwgMC40NTAsIDAuOTQwKSc7XG4gICAgICAgICAgICByaXBwbGVTdHlsZVsnLW8tdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nXSA9ICdjdWJpYy1iZXppZXIoMC4yNTAsIDAuNDYwLCAwLjQ1MCwgMC45NDApJztcbiAgICAgICAgICAgIHJpcHBsZVN0eWxlWyd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiddID0gJ2N1YmljLWJlemllcigwLjI1MCwgMC40NjAsIDAuNDUwLCAwLjk0MCknO1xuICAgICAgICAgICAgdGhpcy5yaXBwbGUuc2V0QXR0cmlidXRlKCdzdHlsZScsIHRoaXMuY29udmVydFN0eWxlKHJpcHBsZVN0eWxlKSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEJ1dHRvbi5wcm90b3R5cGUuY29udmVydFN0eWxlID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgICB2YXIgc3R5bGUgPSAnJztcbiAgICAgICAgZm9yICh2YXIgYSBpbiBvYmopIHtcbiAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoYSkpIHtcbiAgICAgICAgICAgICAgICBzdHlsZSArPSAoYSArICc6JyArIG9ialthXSArICc7Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0eWxlO1xuICAgIH07XG4gICAgQnV0dG9uLnByb3RvdHlwZS5oaWRlRWZmZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5lbCkge1xuICAgICAgICAgICAgLy9FZmZlY3QuaGlkZVxuICAgICAgICAgICAgdmFyIHJpcHBsZV8xID0gdGhpcy5lbC5sYXN0RWxlbWVudENoaWxkO1xuICAgICAgICAgICAgaWYgKHJpcHBsZV8xICYmIHJpcHBsZV8xLmNsYXNzTGlzdC5jb250YWlucyhcIndhdmVzLXJpcHBsZVwiKSkge1xuICAgICAgICAgICAgICAgIHZhciByZWxhdGl2ZVhfMSA9IHJpcHBsZV8xLmdldEF0dHJpYnV0ZSgnZGF0YS14Jyk7XG4gICAgICAgICAgICAgICAgdmFyIHJlbGF0aXZlWV8xID0gcmlwcGxlXzEuZ2V0QXR0cmlidXRlKCdkYXRhLXknKTtcbiAgICAgICAgICAgICAgICB2YXIgc2NhbGVfMSA9IHJpcHBsZV8xLmdldEF0dHJpYnV0ZSgnZGF0YS1zY2FsZScpO1xuICAgICAgICAgICAgICAgIC8vIEdldCBkZWxheSBiZWV0d2VlbiBtb3VzZWRvd24gYW5kIG1vdXNlIGxlYXZlXG4gICAgICAgICAgICAgICAgdmFyIGRpZmYgPSBEYXRlLm5vdygpIC0gTnVtYmVyKHJpcHBsZV8xLmdldEF0dHJpYnV0ZSgnZGF0YS1ob2xkJykpO1xuICAgICAgICAgICAgICAgIHZhciBkZWxheSA9IHRoaXMucHJvcHMuZHVyYXRpb24gLyAyIC0gZGlmZjtcbiAgICAgICAgICAgICAgICBpZiAoZGVsYXkgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGF5ID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIG1lXzEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIC8vIEZhZGUgb3V0IHJpcHBsZSBhZnRlciBkZWxheVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3R5bGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wJzogcmVsYXRpdmVZXzEgKyAncHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZnQnOiByZWxhdGl2ZVhfMSArICdweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eSc6ICcwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIER1cmF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAnLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uJzogbWVfMS5wcm9wcy5kdXJhdGlvbiAvIDMgKyAnbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJy1tb3otdHJhbnNpdGlvbi1kdXJhdGlvbic6IG1lXzEucHJvcHMuZHVyYXRpb24gLyAzICsgJ21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICctby10cmFuc2l0aW9uLWR1cmF0aW9uJzogbWVfMS5wcm9wcy5kdXJhdGlvbiAvIDMgKyAnbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb24tZHVyYXRpb24nOiBtZV8xLnByb3BzLmR1cmF0aW9uIC8gMyArICdtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnLXdlYmtpdC10cmFuc2Zvcm0nOiBzY2FsZV8xLFxuICAgICAgICAgICAgICAgICAgICAgICAgJy1tb3otdHJhbnNmb3JtJzogc2NhbGVfMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICctbXMtdHJhbnNmb3JtJzogc2NhbGVfMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICctby10cmFuc2Zvcm0nOiBzY2FsZV8xLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zZm9ybSc6IHNjYWxlXzEsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHJpcHBsZV8xID09PSBudWxsIHx8IHJpcHBsZV8xID09PSB2b2lkIDAgPyB2b2lkIDAgOiByaXBwbGVfMS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgbWVfMS5jb252ZXJ0U3R5bGUoc3R5bGUpKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpcHBsZV8xICYmICgoX2EgPSBtZV8xLmVsKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVtb3ZlQ2hpbGQocmlwcGxlXzEpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCBtZV8xLnByb3BzLmR1cmF0aW9uKTtcbiAgICAgICAgICAgICAgICB9LCBkZWxheSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEJ1dHRvbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgY2xhc3NOYW1lID0gXCJidG4gd2F2ZXMtZWZmZWN0IFwiO1xuICAgICAgICAvLyBpZiAodGhpcy5wcm9wcy5tb2RlbCA9PSBcImNpcmNsZVwiKSB7XG4gICAgICAgIC8vICAgY2xhc3NOYW1lICs9IFwiYnRuLWZsb2F0aW5nIFwiO1xuICAgICAgICAvLyB9XG4gICAgICAgIC8vIGlmICh0aGlzLnByb3BzLnNpemUgPT0gXCJsYXJnZVwiKSB7XG4gICAgICAgIC8vICAgY2xhc3NOYW1lICs9IFwiYnRuLWxhcmdlIFwiO1xuICAgICAgICAvLyB9XG4gICAgICAgIC8vIGlmICh0aGlzLnByb3BzLnNpemUgPT0gXCJzbWFsbFwiKSB7XG4gICAgICAgIC8vICAgY2xhc3NOYW1lICs9IFwiYnRuLXNtYWxsIFwiO1xuICAgICAgICAvLyB9XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgX19hc3NpZ24oeyBocmVmOiBcIiNzZWN0aW9uXCIgfSwgdGhpcy5wcm9wcywgeyByZWY6IGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgIF90aGlzLmVsID0gZWw7XG4gICAgICAgICAgICB9LCBjbGFzc05hbWU6IGNsYXNzTmFtZSArIHRoaXMucHJvcHMuY2xhc3NOYW1lIH0pKSk7XG4gICAgfTtcbiAgICByZXR1cm4gQnV0dG9uO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuQnV0dG9uID0gQnV0dG9uO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQ2FyZEFjdGlvbiA9IGV4cG9ydHMuQ2FyZFRpdGxlID0gZXhwb3J0cy5DYXJkQ29udGVudCA9IGV4cG9ydHMuQ2FyZCA9IHZvaWQgMDtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBDYXJkID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDYXJkLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENhcmQoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgQ2FyZC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwiY2FyZCBcIiArIHRoaXMucHJvcHMuY2xhc3NOYW1lIH0pKTtcbiAgICB9O1xuICAgIHJldHVybiBDYXJkO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuQ2FyZCA9IENhcmQ7XG52YXIgQ2FyZENvbnRlbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENhcmRDb250ZW50LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENhcmRDb250ZW50KCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIENhcmRDb250ZW50LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwiY2FyZC1jb250ZW50IFwiICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSkpKTtcbiAgICB9O1xuICAgIHJldHVybiBDYXJkQ29udGVudDtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLkNhcmRDb250ZW50ID0gQ2FyZENvbnRlbnQ7XG52YXIgQ2FyZFRpdGxlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDYXJkVGl0bGUsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ2FyZFRpdGxlKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIENhcmRUaXRsZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIF9fYXNzaWduKHt9LCB0aGlzLnByb3BzLCB7IGNsYXNzTmFtZTogXCJjYXJkLXRpdGxlIFwiICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSkpKTtcbiAgICB9O1xuICAgIHJldHVybiBDYXJkVGl0bGU7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5DYXJkVGl0bGUgPSBDYXJkVGl0bGU7XG52YXIgQ2FyZEFjdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ2FyZEFjdGlvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDYXJkQWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIENhcmRBY3Rpb24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9fYXNzaWduKHt9LCB0aGlzLnByb3BzLCB7IGNsYXNzTmFtZTogXCJjYXJkLWFjdGlvbiAgXCIgKyB0aGlzLnByb3BzLmNsYXNzTmFtZSB9KSkpO1xuICAgIH07XG4gICAgcmV0dXJuIENhcmRBY3Rpb247XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5DYXJkQWN0aW9uID0gQ2FyZEFjdGlvbjtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNoaXAgPSB2b2lkIDA7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgQ2hpcCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ2hpcCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDaGlwKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIENoaXAucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMsIHsgY2xhc3NOYW1lOiAnY2hpcCAnICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSkpOyB9O1xuICAgIHJldHVybiBDaGlwO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuQ2hpcCA9IENoaXA7XG5leHBvcnRzLmRlZmF1bHQgPSBDaGlwO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQ29sbGFwc1RyaWdnZXIgPSBleHBvcnRzLkNvbGxhcHNCb2R5ID0gZXhwb3J0cy5Db2xsYXBzaWJsZSA9IHZvaWQgMDtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBJY29uXzEgPSByZXF1aXJlKFwiLi4vaWNvbnMvSWNvblwiKTtcbnZhciBDb2xsYXBzaWJsZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ29sbGFwc2libGUsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ29sbGFwc2libGUoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgQ29sbGFwc2libGUucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMsIHsgY2xhc3NOYW1lOiBcImNvbGxhcHNpYmxlIFwiICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSkpKTtcbiAgICB9O1xuICAgIHJldHVybiBDb2xsYXBzaWJsZTtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLkNvbGxhcHNpYmxlID0gQ29sbGFwc2libGU7XG52YXIgQ29sbGFwc0JvZHkgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENvbGxhcHNCb2R5LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENvbGxhcHNCb2R5KCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZWwgPSBudWxsO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIENvbGxhcHNCb2R5LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyByZWY6IGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5lbCA9IHJlZjtcbiAgICAgICAgICAgIH0sIGNsYXNzTmFtZTogXCJjb2xsYXBzaWJsZS1ib2R5IFwiICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSkpKTtcbiAgICB9O1xuICAgIHJldHVybiBDb2xsYXBzQm9keTtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLkNvbGxhcHNCb2R5ID0gQ29sbGFwc0JvZHk7XG52YXIgQ29sbGFwc1RyaWdnZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENvbGxhcHNUcmlnZ2VyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENvbGxhcHNUcmlnZ2VyKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBpc09wZW46IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLmVsID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBDb2xsYXBzVHJpZ2dlci5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vICBuZXcgV2F2ZXModGhpcy5lbCwgeyBkdXJhdGlvbjogMTA1MCB9KTtcbiAgICB9O1xuICAgIENvbGxhcHNUcmlnZ2VyLnByb3RvdHlwZS5zaG93SGlkZUJvZHkgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgICAgICAgdGhpcy5jb2xsYXBzZShlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kKGUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBDb2xsYXBzVHJpZ2dlci5wcm90b3R5cGUuY29sbGFwc2UgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB2YXIgY29sbGFwc2libGUgPSB0aGlzLmZpbmRDb2xsYXBzaWJsZS5iaW5kKHRoaXMpKCk7XG4gICAgICAgIGlmIChjb2xsYXBzaWJsZSkge1xuICAgICAgICAgICAgdmFyIGJvZHlFbCA9IGNvbGxhcHNpYmxlLnF1ZXJ5U2VsZWN0b3IoXCIuY29sbGFwc2libGUtYm9keVwiKTtcbiAgICAgICAgICAgIGlmIChib2R5RWwpIHtcbiAgICAgICAgICAgICAgICBib2R5RWwuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgaXNPcGVuOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBDb2xsYXBzVHJpZ2dlci5wcm90b3R5cGUuZmluZENvbGxhcHNpYmxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcGFyZW50RWwgPSB0aGlzLmVsICYmIHRoaXMuZWwucGFyZW50RWxlbWVudDtcbiAgICAgICAgaWYgKHBhcmVudEVsICYmICFwYXJlbnRFbC5jbGFzc0xpc3QuY29udGFpbnMoXCJjb2xsYXBzaWJsZVwiKSkge1xuICAgICAgICAgICAgcGFyZW50RWwgPSBwYXJlbnRFbCAmJiBwYXJlbnRFbC5wYXJlbnRFbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJlbnRFbDtcbiAgICB9O1xuICAgIENvbGxhcHNUcmlnZ2VyLnByb3RvdHlwZS5leHBhbmQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB2YXIgY29sbGFwc2libGUgPSB0aGlzLmZpbmRDb2xsYXBzaWJsZS5iaW5kKHRoaXMpKCk7XG4gICAgICAgIGlmIChjb2xsYXBzaWJsZSkge1xuICAgICAgICAgICAgdmFyIGJvZHlFbCA9IGNvbGxhcHNpYmxlLnF1ZXJ5U2VsZWN0b3IoXCIuY29sbGFwc2libGUtYm9keVwiKTtcbiAgICAgICAgICAgIGlmIChib2R5RWwpIHtcbiAgICAgICAgICAgICAgICBib2R5RWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIGlzT3BlbjogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBDb2xsYXBzVHJpZ2dlci5wcm90b3R5cGUuaXNPcGVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5pc09wZW47XG4gICAgfTtcbiAgICBDb2xsYXBzVHJpZ2dlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgaWNvbiA9ICh0aGlzLnN0YXRlLmlzT3BlbiA9PSB0cnVlKSA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbl8xLkljb24sIHsgc3R5bGU6IHsgZmxvYXQ6IFwicmlnaHRcIiB9IH0sIFwiY2hldnJvbl9kb3duXCIpIDpcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbl8xLkljb24sIHsgc3R5bGU6IHsgZmxvYXQ6IFwicmlnaHRcIiB9IH0sIFwiY2hldnJvbl9yaWdodFwiKTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9fYXNzaWduKHt9LCB0aGlzLnByb3BzLCB7IHJlZjogZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIF90aGlzLmVsID0gcmVmO1xuICAgICAgICAgICAgfSwgY2xhc3NOYW1lOiBcImNvbGxhcHNpYmxlLWhlYWRlciBcIiArIHRoaXMucHJvcHMuY2xhc3NOYW1lLCBvbkNsaWNrOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gX3RoaXMuc2hvd0hpZGVCb2R5LmJpbmQoX3RoaXMpKGUpOyB9IH0pLFxuICAgICAgICAgICAgaWNvbixcbiAgICAgICAgICAgIHRoaXMucHJvcHMuY2hpbGRyZW4pKTtcbiAgICB9O1xuICAgIHJldHVybiBDb2xsYXBzVHJpZ2dlcjtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLkNvbGxhcHNUcmlnZ2VyID0gQ29sbGFwc1RyaWdnZXI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Db2xsZWN0aW9uSXRlbSA9IGV4cG9ydHMuQ29sbGVjdGlvbiA9IHZvaWQgMDtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBDb2xsZWN0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDb2xsZWN0aW9uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENvbGxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgQ29sbGVjdGlvbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgY2xhc3NOYW1lID0gdGhpcy5wcm9wcy5jbGFzc05hbWU7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMsIHsgcmVmOiBmdW5jdGlvbiAocikgeyByZXR1cm4gX3RoaXMuZWwgPSByOyB9LCBjbGFzc05hbWU6IFwiY29sbGVjdGlvbiBcIiArIChjbGFzc05hbWUgfHwgXCJcIikgfSkpO1xuICAgIH07XG4gICAgcmV0dXJuIENvbGxlY3Rpb247XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5Db2xsZWN0aW9uID0gQ29sbGVjdGlvbjtcbnZhciBDb2xsZWN0aW9uSXRlbSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ29sbGVjdGlvbkl0ZW0sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ29sbGVjdGlvbkl0ZW0oKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgQ29sbGVjdGlvbkl0ZW0ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGNsYXNzTmFtZSA9IHRoaXMucHJvcHMuY2xhc3NOYW1lO1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIF9fYXNzaWduKHt9LCB0aGlzLnByb3BzLCB7IHJlZjogZnVuY3Rpb24gKHIpIHsgcmV0dXJuIF90aGlzLmVsID0gcjsgfSwgY2xhc3NOYW1lOiBcImNvbGxlY3Rpb24taXRlbSBcIiArIChjbGFzc05hbWUgfHwgXCJcIikgfSkpO1xuICAgIH07XG4gICAgcmV0dXJuIENvbGxlY3Rpb25JdGVtO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuQ29sbGVjdGlvbkl0ZW0gPSBDb2xsZWN0aW9uSXRlbTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkZpZWxkID0gdm9pZCAwO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xuLy8gQHRzLWlnbm9yZVxudmFyIFYgPSByZXF1aXJlKFwiLi9yZXhcIik7XG52YXIgRmllbGQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEZpZWxkLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEZpZWxkKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGxhYmVsQ2xhc3NOYW1lOiAnJyxcbiAgICAgICAgICAgIGZvY3VzQ291bnQ6IDAsXG4gICAgICAgICAgICBlcnJtc2c6IFwiXCJcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuaWQgPSBfdGhpcy51dWlkdjQoKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBGaWVsZC5wcm90b3R5cGUuZ2V0RGVmYXVsdHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgICAgICAgICBpZDogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ZhbGlkYXRlJyxcbiAgICAgICAgICAgIGxhYmVsOiAnVGV4dCcsXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICBpY29uOiAnYWNjb3VudF9jaXJjbGUnXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBGaWVsZC5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsICYmIHRoaXMuZWwudmFsdWU7XG4gICAgfTtcbiAgICBGaWVsZC5wcm90b3R5cGUuc2V0VmFsdWUgPSBmdW5jdGlvbiAodmFsKSB7XG4gICAgICAgIGlmICh0aGlzLmVsKSB7XG4gICAgICAgICAgICB0aGlzLmVsLnZhbHVlID0gdmFsO1xuICAgICAgICAgICAgaWYgKHZhbCAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgIHRoaXMubGFiZWwgJiYgdGhpcy5sYWJlbC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgRmllbGQucHJvdG90eXBlLmlzVmFsaWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHRydWUpO1xuICAgIH07XG4gICAgRmllbGQucHJvdG90eXBlLm9uQmx1ciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMubGFiZWwgJiYgKCh0aGlzLnByb3BzLnBsYWNlaG9sZGVyICE9PSAnJykgfHwgKHRoaXMuZWwgJiYgdGhpcy5lbC52YWx1ZSAhPT0gXCJcIikpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubGFiZWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYWN0aXZlXCIpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWwgJiYgdGhpcy5sYWJlbC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkJsdXIgJiYgdHlwZW9mIHRoaXMucHJvcHMub25CbHVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25CbHVyKGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsaWRhdGUodHJ1ZSk7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBmb2N1c0NvdW50OiB0aGlzLnN0YXRlLmZvY3VzQ291bnQgKyAxIH0pO1xuICAgIH07XG4gICAgRmllbGQucHJvdG90eXBlLm9uRm9jdXMgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAodGhpcy5sYWJlbCAmJiAhdGhpcy5sYWJlbC5jbGFzc0xpc3QuY29udGFpbnMoXCJhY3RpdmVcIikpIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWwuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25Gb2N1cyAmJiB0eXBlb2YgdGhpcy5wcm9wcy5vbkZvY3VzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25Gb2N1cyhlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRmllbGQucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gKGJsdXJlKSB7XG4gICAgICAgIGlmIChibHVyZSA9PT0gdm9pZCAwKSB7IGJsdXJlID0gZmFsc2U7IH1cbiAgICAgICAgaWYgKGJsdXJlKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZm9jdXNDb3VudDogdGhpcy5zdGF0ZS5mb2N1c0NvdW50ICsgMSB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5mb2N1c0NvdW50ID4gMCB8fCBibHVyZSkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcy5wcm9wcywgbWluID0gX2EubWluLCBtYXggPSBfYS5tYXgsIHJlcXVpcmVkID0gX2EucmVxdWlyZWQsIHZ0eXBlID0gX2EudnR5cGUsIHZ0eXBlTXNnID0gX2EudnR5cGVNc2c7XG4gICAgICAgICAgICBpZiAodGhpcy5lbCAmJiB0aGlzLmVsLnZhbHVlICYmIHRoaXMuZWwudmFsdWUgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxlbmd0aF8xID0gdGhpcy5lbC52YWx1ZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKG1pbiAmJiBtYXggJiYgKGxlbmd0aF8xIDwgbWluIHx8IGxlbmd0aF8xID4gbWF4KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZXJybXNnOiBtaW4gIT0gbWF4ID8gXCJkb2l0IGF2b2lyIHVuZSBsb25nZXVyIGNvbXByaXNlIGVudHJlIFwiLmNvbmNhdChtaW4sIFwiIGV0IFwiKS5jb25jYXQobWF4LCBcIi5cIikgOiBcImRvaXQgYXZvaXIgdW5lIGxvbmdldXIgZGUgXCIuY29uY2F0KG1pbiwgXCIgY2FyYWN0XFx1MDBFOHJlc1wiKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5jbGFzc0xpc3QucmVtb3ZlKCd2YWxpZCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLmNsYXNzTGlzdC5hZGQoJ2ludmFsaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWtlSW5WYWxpZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFtaW4gJiYgbWF4ICYmIGxlbmd0aF8xID4gbWF4KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJtc2c6IFwiZG9pdCBhdm9pciB1bmUgbG9uZ2V1ciBtYXhpbWFsIGRlIFwiLmNvbmNhdChtYXgsIFwiLlwiKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5jbGFzc0xpc3QucmVtb3ZlKCd2YWxpZCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLmNsYXNzTGlzdC5hZGQoJ2ludmFsaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWtlSW5WYWxpZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1pbiAmJiAhbWF4ICYmIGxlbmd0aF8xIDwgbWluKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJtc2c6IFwiZG9pdCBhdm9pciB1bmUgbG9uZ2V1ciBtaW5pbWFsIGRlIFwiLmNvbmNhdChtaW4sIFwiLlwiKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5jbGFzc0xpc3QucmVtb3ZlKCd2YWxpZCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLmNsYXNzTGlzdC5hZGQoJ2ludmFsaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWtlSW5WYWxpZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZ0eXBlICYmICFWW3Z0eXBlXS50ZXN0KHRoaXMuZWwudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJtc2c6IHZ0eXBlTXNnIHx8IFwiRG9pdCBcXHUwMEVBdHJlIHVuIFwiLmNvbmNhdCh2dHlwZSwgXCIgdmFsaWRlLlwiKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5jbGFzc0xpc3QucmVtb3ZlKCd2YWxpZCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLmNsYXNzTGlzdC5hZGQoJ2ludmFsaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWtlSW5WYWxpZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZXJybXNnOiBcIlwiIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLmNsYXNzTGlzdC5yZW1vdmUoJ2ludmFsaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5jbGFzc0xpc3QuYWRkKCd2YWxpZCcpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVycm1zZzogXCJOZSBwZXUgcGFzIGV0cmUgdmlkZS5cIiB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWtlSW5WYWxpZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZXJybXNnOiBcIlwiIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1ha2VWYWxpZCgpO1xuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuZWwuY2xhc3NMaXN0LmFkZCgndmFsaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIEZpZWxkLnByb3RvdHlwZS5tYWtlSW5WYWxpZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuZWwpIHtcbiAgICAgICAgICAgIHRoaXMuZWwuY2xhc3NMaXN0LnJlbW92ZSgndmFsaWQnKTtcbiAgICAgICAgICAgIHRoaXMuZWwuY2xhc3NMaXN0LmFkZCgnaW52YWxpZCcpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBGaWVsZC5wcm90b3R5cGUubWFrZVZhbGlkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5lbCkge1xuICAgICAgICAgICAgdGhpcy5lbC5jbGFzc0xpc3QuYWRkKCd2YWxpZCcpO1xuICAgICAgICAgICAgdGhpcy5lbC5jbGFzc0xpc3QucmVtb3ZlKCdpbnZhbGlkJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEZpZWxkLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMubGFiZWwgJiYgKCh0aGlzLnByb3BzLnBsYWNlaG9sZGVyICE9PSAnJykgfHwgKHRoaXMuZWwgJiYgdGhpcy5lbC52YWx1ZSAhPT0gXCJcIikpKSB7XG4gICAgICAgICAgICB0aGlzLmxhYmVsLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgbGFiZWxDbGFzc05hbWU6ICdhY3RpdmUnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRmllbGQucHJvdG90eXBlLm9uS2V5VXAgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoZSAmJiBcIkVudGVyXCIgPT09IGUua2V5ICYmIHRoaXMucHJvcHMub25FbnRlcktleSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25FbnRlcktleShlLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgfTtcbiAgICBGaWVsZC5wcm90b3R5cGUudXVpZHY0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiAoWzFlN10gKyAtMWUzICsgLTRlMyArIC04ZTMgKyAtMWUxMSkucmVwbGFjZSgvWzAxOF0vZywgZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgICAgIHJldHVybiAoYyBeIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMSkpWzBdICYgMTUgPj4gYyAvIDQpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBGaWVsZC5wcm90b3R5cGUuZ2V0RXJyb3JWaWV3ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5lcnJtc2cgIT0gbnVsbCAmJiB0aGlzLnN0YXRlLmVycm1zZyAhPT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiaGVscGVyLXRleHRcIiB9LCB0aGlzLnN0YXRlLmVycm1zZyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEZpZWxkLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fYXNzaWduKHt9LCB0aGlzLnByb3BzKTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBkZWxldGUgcHJvcHMudnR5cGVNc2c7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZGVsZXRlIHByb3BzLm9uRW50ZXJLZXk7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImlucHV0LWZpZWxkXCIgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsYWJlbFwiLCB7IHJlZjogZnVuY3Rpb24gKHJlZikgeyByZXR1cm4gKF90aGlzLmxhYmVsID0gcmVmKTsgfSwgaHRtbEZvcjogdGhpcy5pZCwgY2xhc3NOYW1lOiB0aGlzLnN0YXRlLmxhYmVsQ2xhc3NOYW1lIH0sIHRoaXMucHJvcHMubGFiZWwgKyAodGhpcy5wcm9wcy5yZXF1aXJlZCA9PT0gdHJ1ZSA/ICcgKicgOiAnJykpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIF9fYXNzaWduKHt9LCBwcm9wcywgeyByZWY6IGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuZWwgPSByZWY7XG4gICAgICAgICAgICAgICAgfSwgdmFsdWU6IHRoaXMucHJvcHMudmFsdWUgfHwgJycsIG9uQ2hhbmdlOiB0aGlzLnByb3BzLm9uQ2hhbmdlIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgfSksIG9uRm9jdXM6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBfdGhpcy5vbkZvY3VzLmJpbmQoX3RoaXMpKGUpOyB9LCB0eXBlOiB0aGlzLnByb3BzLnR5cGUgfHwgXCJ0ZXh0XCIsIG9uQmx1cjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIF90aGlzLm9uQmx1ci5iaW5kKF90aGlzKShlKTsgfSwgb25LZXlVcDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIF90aGlzLm9uS2V5VXAuYmluZChfdGhpcykoZSk7IH0sIGlkOiB0aGlzLmlkLCBjbGFzc05hbWU6IFwidmFsaWRhdGUgXCIgKyB0aGlzLnByb3BzLmNsYXNzTmFtZSB9KSksXG4gICAgICAgICAgICB0aGlzLmdldEVycm9yVmlldygpKTtcbiAgICB9O1xuICAgIHJldHVybiBGaWVsZDtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLkZpZWxkID0gRmllbGQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UZXh0YXJlYSA9IHZvaWQgMDtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBQcm9wVHlwZXMgPSByZXF1aXJlKFwicHJvcC10eXBlc1wiKTtcbnZhciBhdXRvc2l6ZSA9IHJlcXVpcmUoXCJhdXRvc2l6ZVwiKTtcbnZhciBsaW5lX2hlaWdodF8xID0gcmVxdWlyZShcIi4vbGluZS1oZWlnaHRcIik7XG52YXIgZ2V0TGluZUhlaWdodCA9IGxpbmVfaGVpZ2h0XzEuZGVmYXVsdDtcbnZhciBUZXh0YXJlYSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVGV4dGFyZWEsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gVGV4dGFyZWEoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50ZXh0YXJlYSA9IG51bGw7XG4gICAgICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgbGluZUhlaWdodDogbnVsbFxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5vblJlc2l6ZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBpZiAoX3RoaXMucHJvcHMub25SZXNpemUpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vblJlc2l6ZShlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMub25DaGFuZ2UgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIG9uQ2hhbmdlID0gX3RoaXMucHJvcHMub25DaGFuZ2U7XG4gICAgICAgICAgICBfdGhpcy5jdXJyZW50VmFsdWUgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWU7XG4gICAgICAgICAgICBvbkNoYW5nZSAmJiBvbkNoYW5nZShlKTtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMudXBkYXRlTGluZUhlaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChfdGhpcy50ZXh0YXJlYSkge1xuICAgICAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogZ2V0TGluZUhlaWdodChfdGhpcy50ZXh0YXJlYSlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBUZXh0YXJlYS5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnRleHRhcmVhICYmIGF1dG9zaXplLnVwZGF0ZSh0aGlzLnRleHRhcmVhKTtcbiAgICB9O1xuICAgIFRleHRhcmVhLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hID0gdGhpcy5wcm9wcywgbWF4Um93cyA9IF9hLm1heFJvd3MsIGFzeW5jID0gX2EuYXN5bmM7XG4gICAgICAgIGlmICh0eXBlb2YgbWF4Um93cyA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMaW5lSGVpZ2h0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBtYXhSb3dzID09PSBcIm51bWJlclwiIHx8IGFzeW5jKSB7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgICB0aGUgZGVmZXIgaXMgbmVlZGVkIHRvOlxuICAgICAgICAgICAgICAgIC0gZm9yY2UgXCJhdXRvc2l6ZVwiIHRvIGFjdGl2YXRlIHRoZSBzY3JvbGxiYXIgd2hlbiB0aGlzLnByb3BzLm1heFJvd3MgaXMgcGFzc2VkXG4gICAgICAgICAgICAgICAgLSBzdXBwb3J0IFN0eWxlZENvbXBvbmVudHMgKHNlZSAjNzEpXG4gICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90aGlzLnRleHRhcmVhICYmIGF1dG9zaXplKF90aGlzLnRleHRhcmVhKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0aGlzLnRleHRhcmVhICYmIGF1dG9zaXplKHRoaXMudGV4dGFyZWEpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XG4gICAgICAgICAgICB0aGlzLnRleHRhcmVhLmFkZEV2ZW50TGlzdGVuZXIoXCJhdXRvc2l6ZTpyZXNpemVkXCIsIHRoaXMub25SZXNpemUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBUZXh0YXJlYS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XG4gICAgICAgICAgICB0aGlzLnRleHRhcmVhLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhdXRvc2l6ZTpyZXNpemVkXCIsIHRoaXMub25SZXNpemUpO1xuICAgICAgICAgICAgYXV0b3NpemUuZGVzdHJveSh0aGlzLnRleHRhcmVhKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgVGV4dGFyZWEucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hID0gdGhpcywgX2IgPSBfYS5wcm9wcywgb25SZXNpemUgPSBfYi5vblJlc2l6ZSwgbWF4Um93cyA9IF9iLm1heFJvd3MsIG9uQ2hhbmdlID0gX2Iub25DaGFuZ2UsIHN0eWxlID0gX2Iuc3R5bGUsIGNoaWxkcmVuID0gX2IuY2hpbGRyZW4sIHByb3BzID0gX19yZXN0KF9iLCBbXCJvblJlc2l6ZVwiLCBcIm1heFJvd3NcIiwgXCJvbkNoYW5nZVwiLCBcInN0eWxlXCIsIFwiY2hpbGRyZW5cIl0pLCBsaW5lSGVpZ2h0ID0gX2Euc3RhdGUubGluZUhlaWdodDtcbiAgICAgICAgdmFyIG1heEhlaWdodCA9IG1heFJvd3MgJiYgbGluZUhlaWdodCA/IGxpbmVIZWlnaHQgKiBtYXhSb3dzIDogbnVsbDtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwidGV4dGFyZWFcIiwgX19hc3NpZ24oe30sIHByb3BzLCB7IG9uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlLCBjbGFzc05hbWU6IFwidGV4dGFyZWEgXCIgKyAodGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIiksIHN0eWxlOiBtYXhIZWlnaHQgPyBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGUpLCB7IG1heEhlaWdodDogbWF4SGVpZ2h0IH0pIDogc3R5bGUsIHJlZjogZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy50ZXh0YXJlYSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICB9IH0pLCBjaGlsZHJlbikpO1xuICAgIH07XG4gICAgVGV4dGFyZWEuZGVmYXVsdFByb3BzID0ge1xuICAgICAgICByb3dzOiAxLFxuICAgICAgICBhc3luYzogZmFsc2VcbiAgICB9O1xuICAgIFRleHRhcmVhLnByb3BUeXBlcyA9IHtcbiAgICAgICAgcm93czogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgICAgbWF4Um93czogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgICAgb25SZXNpemU6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICBhc3luYzogUHJvcFR5cGVzLmJvb2xcbiAgICB9O1xuICAgIHJldHVybiBUZXh0YXJlYTtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLlRleHRhcmVhID0gVGV4dGFyZWE7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIExvYWQgaW4gZGVwZW5kZW5jaWVzXG52YXIgY29tcHV0ZWRTdHlsZSA9IHJlcXVpcmUoJ2NvbXB1dGVkLXN0eWxlJyk7XG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgYGxpbmUtaGVpZ2h0YCBvZiBhIGdpdmVuIG5vZGVcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IG5vZGUgRWxlbWVudCB0byBjYWxjdWxhdGUgbGluZSBoZWlnaHQgb2YuIE11c3QgYmUgaW4gdGhlIERPTS5cbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGBsaW5lLWhlaWdodGAgb2YgdGhlIGVsZW1lbnQgaW4gcGl4ZWxzXG4gKi9cbmZ1bmN0aW9uIGxpbmVIZWlnaHQobm9kZSkge1xuICAgIC8vIEdyYWIgdGhlIGxpbmUtaGVpZ2h0IHZpYSBzdHlsZVxuICAgIHZhciBsbkhlaWdodFN0ciA9IGNvbXB1dGVkU3R5bGUobm9kZSwgJ2xpbmUtaGVpZ2h0Jyk7XG4gICAgdmFyIGxuSGVpZ2h0ID0gcGFyc2VGbG9hdChsbkhlaWdodFN0cik7XG4gICAgLy8gSWYgdGhlIGxpbmVIZWlnaHQgZGlkIG5vdCBjb250YWluIGEgdW5pdCAoaS5lLiBpdCB3YXMgbnVtZXJpYyksIGNvbnZlcnQgaXQgdG8gZW1zIChlLmcuICcyLjMnID09PSAnMi4zZW0nKVxuICAgIGlmIChsbkhlaWdodFN0ciA9PT0gbG5IZWlnaHQgKyAnJykge1xuICAgICAgICAvLyBTYXZlIHRoZSBvbGQgbGluZUhlaWdodCBzdHlsZSBhbmQgdXBkYXRlIHRoZSBlbSB1bml0IHRvIHRoZSBlbGVtZW50XG4gICAgICAgIHZhciBfbG5IZWlnaHRTdHlsZSA9IG5vZGUuc3R5bGUubGluZUhlaWdodDtcbiAgICAgICAgbm9kZS5zdHlsZS5saW5lSGVpZ2h0ID0gbG5IZWlnaHRTdHIgKyAnZW0nO1xuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGVtIGJhc2VkIGhlaWdodFxuICAgICAgICBsbkhlaWdodFN0ciA9IGNvbXB1dGVkU3R5bGUobm9kZSwgJ2xpbmUtaGVpZ2h0Jyk7XG4gICAgICAgIGxuSGVpZ2h0ID0gcGFyc2VGbG9hdChsbkhlaWdodFN0cik7XG4gICAgICAgIC8vIFJldmVydCB0aGUgbGluZUhlaWdodCBzdHlsZVxuICAgICAgICBpZiAoX2xuSGVpZ2h0U3R5bGUpIHtcbiAgICAgICAgICAgIG5vZGUuc3R5bGUubGluZUhlaWdodCA9IF9sbkhlaWdodFN0eWxlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy9kZWxldGUgbm9kZS5zdHlsZS5saW5lSGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIElmIHRoZSBsaW5lSGVpZ2h0IGlzIGluIGBwdGAsIGNvbnZlcnQgaXQgdG8gcGl4ZWxzICg0cHggZm9yIDNwdClcbiAgICAvLyBERVY6IGBlbWAgdW5pdHMgYXJlIGNvbnZlcnRlZCB0byBgcHRgIGluIElFNlxuICAgIC8vIENvbnZlcnNpb24gcmF0aW8gZnJvbSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbGVuZ3RoXG4gICAgaWYgKGxuSGVpZ2h0U3RyLmluZGV4T2YoJ3B0JykgIT09IC0xKSB7XG4gICAgICAgIGxuSGVpZ2h0ICo9IDQ7XG4gICAgICAgIGxuSGVpZ2h0IC89IDM7XG4gICAgICAgIC8vIE90aGVyd2lzZSwgaWYgdGhlIGxpbmVIZWlnaHQgaXMgaW4gYG1tYCwgY29udmVydCBpdCB0byBwaXhlbHMgKDk2cHggZm9yIDI1LjRtbSlcbiAgICB9XG4gICAgZWxzZSBpZiAobG5IZWlnaHRTdHIuaW5kZXhPZignbW0nKSAhPT0gLTEpIHtcbiAgICAgICAgbG5IZWlnaHQgKj0gOTY7XG4gICAgICAgIGxuSGVpZ2h0IC89IDI1LjQ7XG4gICAgICAgIC8vIE90aGVyd2lzZSwgaWYgdGhlIGxpbmVIZWlnaHQgaXMgaW4gYGNtYCwgY29udmVydCBpdCB0byBwaXhlbHMgKDk2cHggZm9yIDIuNTRjbSlcbiAgICB9XG4gICAgZWxzZSBpZiAobG5IZWlnaHRTdHIuaW5kZXhPZignY20nKSAhPT0gLTEpIHtcbiAgICAgICAgbG5IZWlnaHQgKj0gOTY7XG4gICAgICAgIGxuSGVpZ2h0IC89IDIuNTQ7XG4gICAgICAgIC8vIE90aGVyd2lzZSwgaWYgdGhlIGxpbmVIZWlnaHQgaXMgaW4gYGluYCwgY29udmVydCBpdCB0byBwaXhlbHMgKDk2cHggZm9yIDFpbilcbiAgICB9XG4gICAgZWxzZSBpZiAobG5IZWlnaHRTdHIuaW5kZXhPZignaW4nKSAhPT0gLTEpIHtcbiAgICAgICAgbG5IZWlnaHQgKj0gOTY7XG4gICAgICAgIC8vIE90aGVyd2lzZSwgaWYgdGhlIGxpbmVIZWlnaHQgaXMgaW4gYHBjYCwgY29udmVydCBpdCB0byBwaXhlbHMgKDEycHQgZm9yIDFwYylcbiAgICB9XG4gICAgZWxzZSBpZiAobG5IZWlnaHRTdHIuaW5kZXhPZigncGMnKSAhPT0gLTEpIHtcbiAgICAgICAgbG5IZWlnaHQgKj0gMTY7XG4gICAgfVxuICAgIC8vIENvbnRpbnVlIG91ciBjb21wdXRhdGlvblxuICAgIGxuSGVpZ2h0ID0gTWF0aC5yb3VuZChsbkhlaWdodCk7XG4gICAgLy8gSWYgdGhlIGxpbmUtaGVpZ2h0IGlzIFwibm9ybWFsXCIsIGNhbGN1bGF0ZSBieSBmb250LXNpemVcbiAgICBpZiAobG5IZWlnaHRTdHIgPT09ICdub3JtYWwnKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBub2RlXG4gICAgICAgIHZhciBub2RlTmFtZSA9IG5vZGUubm9kZU5hbWU7XG4gICAgICAgIHZhciBfbm9kZSA9IGRvY3VtZW50ICYmIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobm9kZU5hbWUpO1xuICAgICAgICBfbm9kZS5pbm5lckhUTUwgPSAnJm5ic3A7JztcbiAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRleHQgYXJlYSwgcmVzZXQgaXQgdG8gb25seSAxIHJvd1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdHdvbGZzb24vbGluZS1oZWlnaHQvaXNzdWVzLzRcbiAgICAgICAgaWYgKG5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgICAgIF9ub2RlLnNldEF0dHJpYnV0ZSgncm93cycsICcxJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2V0IHRoZSBmb250LXNpemUgb2YgdGhlIGVsZW1lbnRcbiAgICAgICAgdmFyIGZvbnRTaXplU3RyID0gY29tcHV0ZWRTdHlsZShub2RlLCAnZm9udC1zaXplJyk7XG4gICAgICAgIF9ub2RlLnN0eWxlLmZvbnRTaXplID0gZm9udFNpemVTdHI7XG4gICAgICAgIC8vIFJlbW92ZSBkZWZhdWx0IHBhZGRpbmcvYm9yZGVyIHdoaWNoIGNhbiBhZmZlY3Qgb2Zmc2V0IGhlaWdodFxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdHdvbGZzb24vbGluZS1oZWlnaHQvaXNzdWVzLzRcbiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxFbGVtZW50L29mZnNldEhlaWdodFxuICAgICAgICBfbm9kZS5zdHlsZS5wYWRkaW5nID0gJzBweCc7XG4gICAgICAgIF9ub2RlLnN0eWxlLmJvcmRlciA9ICcwcHgnO1xuICAgICAgICAvLyBBcHBlbmQgaXQgdG8gdGhlIGJvZHlcbiAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgICBib2R5LmFwcGVuZENoaWxkKF9ub2RlKTtcbiAgICAgICAgLy8gQXNzdW1lIHRoZSBsaW5lIGhlaWdodCBvZiB0aGUgZWxlbWVudCBpcyB0aGUgaGVpZ2h0XG4gICAgICAgIHZhciBoZWlnaHQgPSBfbm9kZS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGxuSGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICAvLyBSZW1vdmUgb3VyIGNoaWxkIGZyb20gdGhlIERPTVxuICAgICAgICBib2R5LnJlbW92ZUNoaWxkKF9ub2RlKTtcbiAgICB9XG4gICAgLy8gUmV0dXJuIHRoZSBjYWxjdWxhdGVkIGhlaWdodFxuICAgIHJldHVybiBsbkhlaWdodDtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IGxpbmVIZWlnaHQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIFwibnVtXCI6IC9eWzAtOV0rJC8sXG4gICAgXCJudW1lcmljXCI6IC9eWzAtOV0rJC8sXG4gICAgXCJhbHBoYVwiOiAvXlthLXpBLVpfXSskLyxcbiAgICBcImFscGhhYmV0aWNcIjogL15bYS16QS1aX10rJC8sXG4gICAgXCJhbHBoYW51bVwiOiAvXlthLXpBLVowLTlfXSskLyxcbiAgICBcImFscGhhbnVtZXJpY1wiOiAvXlthLXpBLVowLTlfXSskLyxcbiAgICBcImVtYWlsXCI6IC9eKFwiKT8oPzpbXlxcLlwiXFxzXSkoPzooPzpbXFwuXSk/KD86W1xcd1xcLSEjJCUmJyorLz0/Xl9ge3x9fl0pKSpcXDFAKFxcd1tcXC1cXHddKlxcLil7MSw1fShbQS1aYS16XSl7Miw2fSQvLFxuICAgIFwidXJsXCI6IC8oKCheaHR0cHM/KXwoXmZ0cCkpOlxcL1xcLygoKFtcXC1cXHddK1xcLikrXFx3ezIsM30oXFwvWyVcXC1cXHddKyhcXC5cXHd7Mix9KT8pKigoW1xcd1xcLVxcLlxcP1xcXFxcXC8rQCYjO2B+PSUhXSopKFxcLlxcd3syLH0pPykqKXwobG9jYWxob3N0fExPQ0FMSE9TVCkpXFwvPykvaSxcbiAgICBcImlwQWRkcmVzc1wiOiAvXlxcZHsxLDN9XFwuXFxkezEsM31cXC5cXGR7MSwzfVxcLlxcZHsxLDN9JC8sXG4gICAgXCJwaG9uZVwiOiAvXig/Oig/OlxcK3wwMCkzM3wwKVxccypbMS05XSg/OlxcZHsyfSl7NH0kLyxcbiAgICBcImNvZGVQb3N0XCI6IC9eKCgoPyEoOTZ8OTd8OTh8OTl8MDApKSlbMC05XXs1fSkkfCgyQXwyQnwyYXwyYilbMC05XXszfSR8KDk3MXw5NzJ8OTczfDk3NHw5NzV8OTc2KVswLTldezJ9JC8sXG4gICAgXCJjb2RlUG9zdGFsXCI6IC9eKCgoPyEoOTZ8OTd8OTh8OTl8MDApKSlbMC05XXs1fSkkfCgyQXwyQnwyYXwyYilbMC05XXszfSR8KDk3MXw5NzJ8OTczfDk3NHw5NzV8OTc2KVswLTldezJ9JC8sXG4gICAgXCJ0aW1lXCI6IC9eKFsxLTldfDFbMC05XSk6KFswLTVdWzAtOV0pKFxcc1thfHBdbSkkLyxcbiAgICBcInByaWNlXCI6IC9eXFxkKyhcXC5cXGR7Mn0pPyQvLFxuICAgIFwicHJpeFwiOiAvXlxcZCsoXFwuXFxkezJ9KT8kLyxcbiAgICBcImRhdGVcIjogL14oMD9bMS05XXxbMTJdWzAtOV18M1swMV0pW1xcL1xcLV0oMD9bMS05XXwxWzAxMl0pW1xcL1xcLV1cXGR7NH0kLyxcbiAgICBcInR2YVwiOiAvXig1XFwuNXwxMHwyMCkkLyxcbiAgICBcInBhc3N3b3JkXCI6IC8oPz1eLns4LH0kKSg/PS4qXFxkKSg/PS4qWyFAIyQlXiYqXSspKD8hWy5cXG5dKSg/PS4qW0EtWl0pKD89LipbYS16XSkuKiQvLFxuICAgIFwibW90RGVQYXNzZVwiOiAvKD89Xi57OCx9JCkoPz0uKlxcZCkoPz0uKlshQCMkJV4mKl0rKSg/IVsuXFxuXSkoPz0uKltBLVpdKSg/PS4qW2Etel0pLiokLyxcbiAgICBcIm1hdHJpY3VsZVwiOiAvKF5cXGR7MSw0fVtBLVphLXpdezEsNH1cXGR7MSwyfSQpfCheW0EtWmEtel17MSwyfVxccypcXGR7MSwzfVxccypbQS1aYS16XXsxLDJ9KSQvLFxuICAgIFwidHZhSW50ZXJjb21cIjogL14oRlIpKFswLTldezExfSQpLyxcbiAgICBcImliYW5cIjogL15GUlxcZHsxMn1bQS1aMC05XXsxMX1cXGR7Mn0kLyxcbiAgICBcInRpbWVNYXNrXCI6IC9bXFxkXFxzOmFtcF0vaSxcbiAgICAnbnVtTWFzayc6IC9bMC05XS9pLFxuICAgICdhbHBoYU1hc2snOiAvW2Etel9dL2ksXG4gICAgJ2FscGhhbnVtTWFzayc6IC9bYS16MC05X10vaSxcbiAgICAnZW1haWxNYXNrJzogL1tcXHcuXFwtQCdcIiEjJCUmJyorLz0/Xl9ge3x9fl0vaSxcbiAgICAndXJsTWFzayc6IC9bYS16MC05X10vaSxcbiAgICAnaXBBZGRyZXNzTWFzayc6IC9bXFxkXFwuXS9pLFxuICAgIFwicGhvbmVNYXNrXCI6IC9bMC05XFwrXS9pLFxuICAgIFwiY29kZVBvc3RNYXNrXCI6IC9bMC05QUJhYl0vaSxcbiAgICAncGFzc3dvcmRNYXNrJzogL1tcXHcuXFwtQCdcIiEjJCUmJyorLz0/Xl9ge3x9fl0vaSxcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5JY29uID0gdm9pZCAwO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIEljb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEljb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gSWNvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBJY29uLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwicy1pY29uIFwiICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSkpO1xuICAgIH07XG4gICAgcmV0dXJuIEljb247XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5JY29uID0gSWNvbjtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLk92ZXJsYXkgPSBleHBvcnRzLkRpdmlkZXIgPSBleHBvcnRzLlBhcmFsbGF4ID0gZXhwb3J0cy5Sb3cgPSBleHBvcnRzLkNvbCA9IHZvaWQgMDtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBDb2wgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENvbCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDb2woKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5lbCA9IG51bGw7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQ29sLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyByZWY6IGZ1bmN0aW9uIChyZWYpIHsgcmV0dXJuIF90aGlzLmVsID0gcmVmOyB9LCBjbGFzc05hbWU6IFwiY29sIFwiICsgdGhpcy5wcm9wcy5jbGFzc05hbWUgfSkpKTtcbiAgICB9O1xuICAgIHJldHVybiBDb2w7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5Db2wgPSBDb2w7XG52YXIgUm93ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhSb3csIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUm93KCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZWwgPSBudWxsO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFJvdy5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMsIHsgcmVmOiBmdW5jdGlvbiAocmVmKSB7IHJldHVybiBfdGhpcy5lbCA9IHJlZjsgfSwgY2xhc3NOYW1lOiBcInJvdyBcIiArIHRoaXMucHJvcHMuY2xhc3NOYW1lIH0pKSk7XG4gICAgfTtcbiAgICByZXR1cm4gUm93O1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuUm93ID0gUm93O1xudmFyIFBhcmFsbGF4ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQYXJhbGxheCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBQYXJhbGxheCgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBQYXJhbGxheC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc3QgPSBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcy5zdHlsZSk7XG4gICAgICAgIHN0LmJhY2tncm91bmRJbWFnZSA9IFwidXJsKFwiICsgdGhpcy5wcm9wcy5zcmMgKyBcIilcIjtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwicGFyYWxsYXhcIiwgc3R5bGU6IHN0IH0sIHRoaXMucHJvcHMuY2hpbGRyZW4pO1xuICAgIH07XG4gICAgcmV0dXJuIFBhcmFsbGF4O1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuUGFyYWxsYXggPSBQYXJhbGxheDtcbnZhciBEaXZpZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhEaXZpZGVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIERpdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgRGl2aWRlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZGl2aWRlclwiIH0pKTtcbiAgICB9O1xuICAgIHJldHVybiBEaXZpZGVyO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuRGl2aWRlciA9IERpdmlkZXI7XG52YXIgT3ZlcmxheSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoT3ZlcmxheSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBPdmVybGF5KCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5lbCA9IG51bGw7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT3ZlcmxheS5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgT3ZlcmxheS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvdygpO1xuICAgIH07XG4gICAgT3ZlcmxheS5wcm90b3R5cGUuaXNWaXNpYmxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS52aXNpYmxlO1xuICAgIH07XG4gICAgT3ZlcmxheS5wcm90b3R5cGUuaGlkZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIE92ZXJsYXkucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oaWRlKCk7XG4gICAgfTtcbiAgICBPdmVybGF5LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnZpc2libGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7IHJlZjogZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5lbCA9IHJlZjtcbiAgICAgICAgICAgICAgICB9IH0sIHRoaXMucHJvcHMsIHsgY2xhc3NOYW1lOiBcIm1vZGFsLW92ZXJsYXkgXCIgKyB0aGlzLnByb3BzLmNsYXNzTmFtZSB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIE92ZXJsYXk7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5PdmVybGF5ID0gT3ZlcmxheTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLk1vZGFsSGVhZGVyID0gZXhwb3J0cy5Nb2RhbEZvb3RlciA9IGV4cG9ydHMuTW9kYWxDb250ZW50ID0gZXhwb3J0cy5Nb2RhbCA9IHZvaWQgMDtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBNb2RhbCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTW9kYWwsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTW9kYWwoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGlzT3BlbjogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBNb2RhbC5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBpc09wZW46IHRydWVcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBNb2RhbC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgaXNPcGVuOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIE1vZGFsLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuKCk7XG4gICAgfTtcbiAgICBNb2RhbC5wcm90b3R5cGUuaGlkZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xvc2UoKTtcbiAgICB9O1xuICAgIE1vZGFsLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmlzT3Blbikge1xuICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcIm1vZGFsLW92ZXJsYXlcIiB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMsIHsgY2xhc3NOYW1lOiBcIm1vZGFsIFwiICsgKHRoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCIpIH0pKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIE1vZGFsO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuTW9kYWwgPSBNb2RhbDtcbnZhciBNb2RhbENvbnRlbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE1vZGFsQ29udGVudCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBNb2RhbENvbnRlbnQoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgTW9kYWxDb250ZW50LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwibW9kYWwtY29udGVudCBcIiArICh0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwiKSB9KSkpO1xuICAgIH07XG4gICAgcmV0dXJuIE1vZGFsQ29udGVudDtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLk1vZGFsQ29udGVudCA9IE1vZGFsQ29udGVudDtcbnZhciBNb2RhbEZvb3RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTW9kYWxGb290ZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTW9kYWxGb290ZXIoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgTW9kYWxGb290ZXIucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9fYXNzaWduKHt9LCB0aGlzLnByb3BzLCB7IGNsYXNzTmFtZTogXCJtb2RhbC1mb290ZXIgXCIgKyAodGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIikgfSkpKTtcbiAgICB9O1xuICAgIHJldHVybiBNb2RhbEZvb3Rlcjtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLk1vZGFsRm9vdGVyID0gTW9kYWxGb290ZXI7XG52YXIgTW9kYWxIZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE1vZGFsSGVhZGVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE1vZGFsSGVhZGVyKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIE1vZGFsSGVhZGVyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwibW9kYWwtaGVhZGVyIFwiICsgKHRoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCIpIH0pKSk7XG4gICAgfTtcbiAgICByZXR1cm4gTW9kYWxIZWFkZXI7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5Nb2RhbEhlYWRlciA9IE1vZGFsSGVhZGVyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTmF2QmFyQnJhbmQgPSBleHBvcnRzLk5hdkJhckl0ZW0gPSBleHBvcnRzLk5hdkJhckdyb3VwID0gZXhwb3J0cy5OYXZCYXIgPSB2b2lkIDA7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgTmF2QmFyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhOYXZCYXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTmF2QmFyKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIE5hdkJhci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcIm5hdlwiLCBudWxsLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwibmF2LXdyYXBwZXJcIiB9KSkpO1xuICAgIH07XG4gICAgcmV0dXJuIE5hdkJhcjtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLk5hdkJhciA9IE5hdkJhcjtcbnZhciBOYXZCYXJHcm91cCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTmF2QmFyR3JvdXAsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTmF2QmFyR3JvdXAoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgTmF2QmFyR3JvdXAucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwicmlnaHQgaGlkZS1vbi1tZWQtYW5kLWRvd24gwrdcIiArICh0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwiKSB9KSk7XG4gICAgfTtcbiAgICByZXR1cm4gTmF2QmFyR3JvdXA7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5OYXZCYXJHcm91cCA9IE5hdkJhckdyb3VwO1xudmFyIE5hdkJhckl0ZW0gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE5hdkJhckl0ZW0sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTmF2QmFySXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBOYXZCYXJJdGVtLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwibGlcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMpKTtcbiAgICB9O1xuICAgIHJldHVybiBOYXZCYXJJdGVtO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuTmF2QmFySXRlbSA9IE5hdkJhckl0ZW07XG52YXIgTmF2QmFyQnJhbmQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE5hdkJhckJyYW5kLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE5hdkJhckJyYW5kKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIE5hdkJhckJyYW5kLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYVwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwiYnJhbmQtbG9nb1wiIH0pKTtcbiAgICB9O1xuICAgIHJldHVybiBOYXZCYXJCcmFuZDtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLk5hdkJhckJyYW5kID0gTmF2QmFyQnJhbmQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLk5hdmlnYXRpb24gPSB2b2lkIDA7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgTmF2QmFyXzEgPSByZXF1aXJlKFwiLi9OYXZCYXJcIik7XG52YXIgU2lkZU5hdl8xID0gcmVxdWlyZShcIi4vU2lkZU5hdlwiKTtcbnZhciBOYXZpZ2F0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhOYXZpZ2F0aW9uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE5hdmlnYXRpb24ocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBOYXZpZ2F0aW9uLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5uYXZiYXIpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnNpZGVuYXYpO1xuICAgIH07XG4gICAgTmF2aWdhdGlvbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTmF2QmFyXzEuTmF2QmFyLCB7IHJlZjogZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5uYXZiYXIgPSByZWY7XG4gICAgICAgICAgICAgICAgfSB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIHsgY2xhc3NOYW1lOiBcInNpZGVuYXYtdHJpZ2dlclwiLCBvbkNsaWNrOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnNpZGVuYXYgJiYgX3RoaXMuc2lkZW5hdi50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgc3R5bGU6IHsgd2lkdGg6IFwiMjBweFwiIH0sIGZpbGw6IFwid2hpdGVcIiwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLCBzdHJva2VXaWR0aDogXCIyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLCBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwiLCBkOiBcIk00IDZoMTZNNCAxMmgxNk00IDE4aDE2XCIgfSkpKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KE5hdkJhcl8xLk5hdkJhckJyYW5kLCBudWxsLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW1nXCIsIHsgc3JjOiB0aGlzLnByb3BzLmxvZ28gfHwgXCJodHRwczovL3N0YXRpY3MuZDN2NHBwLmZyL2xvZ28ucG5nXCIsIGNsYXNzTmFtZTogXCJjaXJjbGVcIiwgYWx0OiBcIkJyYW5kXCIgfSkpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTmF2QmFyXzEuTmF2QmFyR3JvdXAsIG51bGwsIHRoaXMucHJvcHMucm91dGVzICYmIHRoaXMucHJvcHMucm91dGVzLm1hcChmdW5jdGlvbiAocm91dGUsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTmF2QmFyXzEuTmF2QmFySXRlbSwgeyBrZXk6IGkgfSwgcm91dGUuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSkpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2lkZU5hdl8xLlNpZGVOYXYsIHsgcmVmOiBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnNpZGVuYXYgPSByZWY7XG4gICAgICAgICAgICAgICAgfSB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2lkZU5hdl8xLlNpZGVOYXZVc2VyLCB7IHVzZXJuYW1lOiAnYXlvdWIgaGFzc2FuaScsIGVtYWlsOiAnYXlvdWJAZDN2NHBwLmZyJywgc3JjOiBcImh0dHBzOi8vc3RhdGljcy5kM3Y0cHAuZnIvbG9nby5wbmdcIiwgYmdfc3JjOiBcImh0dHBzOi8vaW1ncy5zZWFyY2guYnJhdmUuY29tL3lYMHZnYW1zWUVic09VOVhseVBHVU04RGRtcXhYcEFLeXpCTTRzM3dvbEEvcnM6Zml0OjEyMDA6MTAzMDoxL2c6Y2UvYUhSMGNITTZMeTkzZDNjdS9ZWFpwWVhOcGJTNWpiMjB2L2QzQXRZMjl1ZEdWdWRDOTEvY0d4dllXUnpMMkYyYVdGei9hVzB0YVcxaFoyVXRiblZoL1oyVnpMbXB3WndcIiB9KSxcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnJvdXRlcyAmJiB0aGlzLnByb3BzLnJvdXRlcy5tYXAoZnVuY3Rpb24gKHJvdXRlLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFNpZGVOYXZfMS5TaWRlTmF2RWwsIHsgb25DbGljazogZnVuY3Rpb24gKCkgeyByZXR1cm4gX3RoaXMuc2lkZW5hdiAmJiBfdGhpcy5zaWRlbmF2LmhpZGUoKTsgfSwga2V5OiBpIH0sIHJvdXRlLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH0pKSk7XG4gICAgfTtcbiAgICByZXR1cm4gTmF2aWdhdGlvbjtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLk5hdmlnYXRpb24gPSBOYXZpZ2F0aW9uO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU2lkZU5hdkVsID0gZXhwb3J0cy5TaWRlTmF2VXNlciA9IGV4cG9ydHMuU2lkZU5hdiA9IHZvaWQgMDtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBTaWRlTmF2ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhTaWRlTmF2LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFNpZGVOYXYoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIG9wZW46IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFNpZGVOYXYucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcGVuOiB0cnVlIH0pO1xuICAgIH07XG4gICAgU2lkZU5hdi5wcm90b3R5cGUudG9nZ2xlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgb3BlbjogIXRoaXMuc3RhdGUub3BlbiB9KTtcbiAgICB9O1xuICAgIFNpZGVOYXYucHJvdG90eXBlLmhpZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcGVuOiBmYWxzZSB9KTtcbiAgICB9O1xuICAgIFNpZGVOYXYucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6IFwic2lkZW5hdiBcIiArICh0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwiKSwgc3R5bGU6IHsgdHJhbnNmb3JtOiB0aGlzLnN0YXRlLm9wZW4gPyBcInRyYW5zbGF0ZVgoMClcIiA6IFwidHJhbnNsYXRlWCgtMTA1JSlcIiB9IH0pKTtcbiAgICB9O1xuICAgIHJldHVybiBTaWRlTmF2O1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuU2lkZU5hdiA9IFNpZGVOYXY7XG52YXIgU2lkZU5hdlVzZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFNpZGVOYXZVc2VyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFNpZGVOYXZVc2VyKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIFNpZGVOYXZVc2VyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwibGlcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJ1c2VyLXZpZXdcIiB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiYmFja2dyb3VuZFwiIH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIiwgeyBzcmM6IHRoaXMucHJvcHMuYmdfc3JjIH0pKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYVwiLCBudWxsLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW1nXCIsIHsgY2xhc3NOYW1lOiBcImNpcmNsZVwiLCBzcmM6IHRoaXMucHJvcHMuc3JjIH0pKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYVwiLCBudWxsLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogXCJibGFjay10ZXh0IG5hbWVcIiB9LCB0aGlzLnByb3BzLnVzZXJuYW1lKSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IFwiYmxhY2stdGV4dCBlbWFpbFwiIH0sIHRoaXMucHJvcHMuZW1haWwpKSkpO1xuICAgIH07XG4gICAgcmV0dXJuIFNpZGVOYXZVc2VyO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuU2lkZU5hdlVzZXIgPSBTaWRlTmF2VXNlcjtcbnZhciBTaWRlTmF2RWwgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFNpZGVOYXZFbCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBTaWRlTmF2RWwoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgU2lkZU5hdkVsLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwibGlcIiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMpKTtcbiAgICB9O1xuICAgIHJldHVybiBTaWRlTmF2RWw7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5TaWRlTmF2RWwgPSBTaWRlTmF2RWw7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5QcmVsb2FkZXIgPSBleHBvcnRzLlByb2dyZXNzID0gdm9pZCAwO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIFByb2dyZXNzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQcm9ncmVzcywgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBQcm9ncmVzcygpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBQcm9ncmVzcy5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyBjbGFzc05hbWU6ICh0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwiKSArIFwiIHByb2dyZXNzXCIgfSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGlzLnByb3BzLnZhbHVlID8gXCJkZXRlcm1pbmF0ZVwiIDogXCJpbmRldGVybWluYXRlXCIsIHN0eWxlOiB7IHdpZHRoOiB0aGlzLnByb3BzLnZhbHVlICsgXCIlXCIgfSB9KSk7XG4gICAgfTtcbiAgICByZXR1cm4gUHJvZ3Jlc3M7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0cy5Qcm9ncmVzcyA9IFByb2dyZXNzO1xudmFyIFByZWxvYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUHJlbG9hZGVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFByZWxvYWRlcigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBQcmVsb2FkZXIucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHMgPSB0aGlzLnByb3BzLnNpemUgPT0gXCJiaWdcIiA/IFwiYmlnXCIgOiB0aGlzLnByb3BzLnNpemUgPT0gXCJzbWFsbFwiID8gXCJzbWFsbFwiIDogXCJcIjtcbiAgICAgICAgdmFyIGNhID0gdGhpcy5wcm9wcy5jb2xvciA/IHRoaXMucHJvcHMuY29sb3Iuc3BsaXQoXCIsXCIpIDogWydibHVlJ107XG4gICAgICAgIGlmIChjYS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcInByZWxvYWRlci13cmFwcGVyIFwiICsgcyArIFwiIGFjdGl2ZVwiIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJzcGlubmVyLWxheWVyIHNwaW5uZXItXCIgKyBjYVswXSArIFwiLW9ubHlcIiB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImNpcmNsZS1jbGlwcGVyIHJpZ2h0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiY2lyY2xlXCIgfSkpLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImdhcC1wYXRjaFwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImNpcmNsZVwiIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJjaXJjbGUtY2xpcHBlciBsZWZ0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiY2lyY2xlXCIgfSkpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJwcmVsb2FkZXItd3JhcHBlciBcIiArIHMgKyBcIiBhY3RpdmVcIiB9LCBjYS5tYXAoZnVuY3Rpb24gKHNjb2xvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcInNwaW5uZXItbGF5ZXIgc3Bpbm5lci1cIiArIHNjb2xvciB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImNpcmNsZS1jbGlwcGVyIGxlZnRcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJjaXJjbGVcIiB9KSksXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZ2FwLXBhdGNoXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiY2lyY2xlXCIgfSkpLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImNpcmNsZS1jbGlwcGVyIHJpZ2h0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiY2lyY2xlXCIgfSkpKTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIFByZWxvYWRlcjtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnRzLlByZWxvYWRlciA9IFByZWxvYWRlcjtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkRhdGFUYWJsZSA9IGV4cG9ydHMuY3JlYXRlVGhlbWUgPSBleHBvcnRzLmRlZmF1bHRUaGVtZXMgPSBleHBvcnRzLkxvZ2luID0gZXhwb3J0cy5Nb2RhbEhlYWRlciA9IGV4cG9ydHMuTW9kYWxGb290ZXIgPSBleHBvcnRzLk1vZGFsQ29udGVudCA9IGV4cG9ydHMuTW9kYWwgPSBleHBvcnRzLlByZWxvYWRlciA9IGV4cG9ydHMuUHJvZ3Jlc3MgPSBleHBvcnRzLlNpZGVOYXZVc2VyID0gZXhwb3J0cy5TaWRlTmF2RWwgPSBleHBvcnRzLlNpZGVOYXYgPSBleHBvcnRzLk5hdmlnYXRpb24gPSBleHBvcnRzLk5hdkJhckJyYW5kID0gZXhwb3J0cy5OYXZCYXJJdGVtID0gZXhwb3J0cy5OYXZCYXJHcm91cCA9IGV4cG9ydHMuTmF2QmFyID0gZXhwb3J0cy5DYXJkQWN0aW9uID0gZXhwb3J0cy5DYXJkVGl0bGUgPSBleHBvcnRzLkNhcmRDb250ZW50ID0gZXhwb3J0cy5DYXJkID0gZXhwb3J0cy5Db2xsYXBzQm9keSA9IGV4cG9ydHMuQ29sbGFwc2libGUgPSBleHBvcnRzLkNvbGxhcHNUcmlnZ2VyID0gZXhwb3J0cy5QYXJhbGxheCA9IGV4cG9ydHMuRGl2aWRlciA9IGV4cG9ydHMuT3ZlcmxheSA9IGV4cG9ydHMuQ29sID0gZXhwb3J0cy5Sb3cgPSBleHBvcnRzLkljb24gPSBleHBvcnRzLkNoaXAgPSBleHBvcnRzLkJhZGdlID0gZXhwb3J0cy5CdXR0b24gPSBleHBvcnRzLkNvbGxlY3Rpb25JdGVtID0gZXhwb3J0cy5Db2xsZWN0aW9uID0gZXhwb3J0cy5GaWVsZCA9IGV4cG9ydHMuVGV4dGFyZWEgPSB2b2lkIDA7XG5yZXF1aXJlKFwiLi9zYXNzL2QzdjRwcC5zY3NzXCIpO1xudmFyIFRleHRhcmVhXzEgPSByZXF1aXJlKFwiLi9jbXBzL2Zvcm1zL1RleHRhcmVhXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGV4dGFyZWFcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFRleHRhcmVhXzEuVGV4dGFyZWE7IH0gfSk7XG52YXIgRmllbGRfMSA9IHJlcXVpcmUoXCIuL2NtcHMvZm9ybXMvRmllbGRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJGaWVsZFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRmllbGRfMS5GaWVsZDsgfSB9KTtcbnZhciBDb2xsZWN0aW9uXzEgPSByZXF1aXJlKFwiLi9jbXBzL2NvbGxlY3Rpb25zL0NvbGxlY3Rpb25cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb2xsZWN0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDb2xsZWN0aW9uXzEuQ29sbGVjdGlvbjsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNvbGxlY3Rpb25JdGVtXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDb2xsZWN0aW9uXzEuQ29sbGVjdGlvbkl0ZW07IH0gfSk7XG52YXIgQnV0dG9uXzEgPSByZXF1aXJlKFwiLi9jbXBzL2J1dHRvbi9CdXR0b25cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJCdXR0b25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEJ1dHRvbl8xLkJ1dHRvbjsgfSB9KTtcbnZhciBCYWRnZV8xID0gcmVxdWlyZShcIi4vY21wcy9iYWRnZS9CYWRnZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkJhZGdlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBCYWRnZV8xLkJhZGdlOyB9IH0pO1xudmFyIENoaXBfMSA9IHJlcXVpcmUoXCIuL2NtcHMvY2hpcC9DaGlwXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQ2hpcFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQ2hpcF8xLkNoaXA7IH0gfSk7XG52YXIgSWNvbl8xID0gcmVxdWlyZShcIi4vY21wcy9pY29ucy9JY29uXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiSWNvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gSWNvbl8xLkljb247IH0gfSk7XG52YXIgTGF5b3V0c18xID0gcmVxdWlyZShcIi4vY21wcy9sYXlvdXRzL0xheW91dHNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSb3dcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIExheW91dHNfMS5Sb3c7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb2xcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIExheW91dHNfMS5Db2w7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJPdmVybGF5XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBMYXlvdXRzXzEuT3ZlcmxheTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRpdmlkZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIExheW91dHNfMS5EaXZpZGVyOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUGFyYWxsYXhcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIExheW91dHNfMS5QYXJhbGxheDsgfSB9KTtcbnZhciBDb2xsYXBzaWJsZV8xID0gcmVxdWlyZShcIi4vY21wcy9jb2xsYXBzaWJsZS9Db2xsYXBzaWJsZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNvbGxhcHNUcmlnZ2VyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDb2xsYXBzaWJsZV8xLkNvbGxhcHNUcmlnZ2VyOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQ29sbGFwc2libGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIENvbGxhcHNpYmxlXzEuQ29sbGFwc2libGU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb2xsYXBzQm9keVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQ29sbGFwc2libGVfMS5Db2xsYXBzQm9keTsgfSB9KTtcbnZhciBDYXJkXzEgPSByZXF1aXJlKFwiLi9jbXBzL2NhcmQvQ2FyZFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNhcmRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIENhcmRfMS5DYXJkOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQ2FyZENvbnRlbnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIENhcmRfMS5DYXJkQ29udGVudDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNhcmRUaXRsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQ2FyZF8xLkNhcmRUaXRsZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNhcmRBY3Rpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIENhcmRfMS5DYXJkQWN0aW9uOyB9IH0pO1xudmFyIE5hdkJhcl8xID0gcmVxdWlyZShcIi4vY21wcy9uYXZpZ2F0aW9uL05hdkJhclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIk5hdkJhclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTmF2QmFyXzEuTmF2QmFyOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTmF2QmFyR3JvdXBcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE5hdkJhcl8xLk5hdkJhckdyb3VwOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTmF2QmFySXRlbVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTmF2QmFyXzEuTmF2QmFySXRlbTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIk5hdkJhckJyYW5kXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBOYXZCYXJfMS5OYXZCYXJCcmFuZDsgfSB9KTtcbnZhciBOYXZpZ2F0aW9uXzEgPSByZXF1aXJlKFwiLi9jbXBzL25hdmlnYXRpb24vTmF2aWdhdGlvblwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIk5hdmlnYXRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE5hdmlnYXRpb25fMS5OYXZpZ2F0aW9uOyB9IH0pO1xudmFyIFNpZGVOYXZfMSA9IHJlcXVpcmUoXCIuL2NtcHMvbmF2aWdhdGlvbi9TaWRlTmF2XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiU2lkZU5hdlwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gU2lkZU5hdl8xLlNpZGVOYXY7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJTaWRlTmF2RWxcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFNpZGVOYXZfMS5TaWRlTmF2RWw7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJTaWRlTmF2VXNlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gU2lkZU5hdl8xLlNpZGVOYXZVc2VyOyB9IH0pO1xudmFyIFByb2dyZXNzXzEgPSByZXF1aXJlKFwiLi9jbXBzL3Byb2dyZXNzL1Byb2dyZXNzXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUHJvZ3Jlc3NcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFByb2dyZXNzXzEuUHJvZ3Jlc3M7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJQcmVsb2FkZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFByb2dyZXNzXzEuUHJlbG9hZGVyOyB9IH0pO1xudmFyIE1vZGFsXzEgPSByZXF1aXJlKFwiLi9jbXBzL21vZGFsL01vZGFsXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTW9kYWxcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1vZGFsXzEuTW9kYWw7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJNb2RhbENvbnRlbnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1vZGFsXzEuTW9kYWxDb250ZW50OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTW9kYWxGb290ZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1vZGFsXzEuTW9kYWxGb290ZXI7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJNb2RhbEhlYWRlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTW9kYWxfMS5Nb2RhbEhlYWRlcjsgfSB9KTtcbi8vLy8vLy8vdXhcbnZhciB1eF8xID0gcmVxdWlyZShcIi4vdXhcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJMb2dpblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdXhfMS5Mb2dpbjsgfSB9KTtcbi8vIGV4cG9ydCAgKiBhcyBEYXRhVGFibGUgIGZyb20gJy4vRGF0YVRhYmxlL2luZGV4Jztcbi8vIC8vIC8vL0RhdGFUYWJsZVxudmFyIHRoZW1lc18xID0gcmVxdWlyZShcIi4vRGF0YVRhYmxlL3RoZW1lc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRUaGVtZXNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoZW1lc18xLmRlZmF1bHRUaGVtZXM7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjcmVhdGVUaGVtZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhlbWVzXzEuY3JlYXRlVGhlbWU7IH0gfSk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vRGF0YVRhYmxlL2NvbnN0YW50c1wiKSwgZXhwb3J0cyk7XG52YXIgRGF0YVRhYmxlXzEgPSByZXF1aXJlKFwiLi9EYXRhVGFibGUvRGF0YVRhYmxlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRGF0YVRhYmxlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBEYXRhVGFibGVfMS5kZWZhdWx0OyB9IH0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Mb2dpbiA9IHZvaWQgMDtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciBGaWVsZF8xID0gcmVxdWlyZShcIi4uLy4uL2NtcHMvZm9ybXMvRmllbGRcIik7XG4vL1xuLy8gZXhwb3J0IGZ1bmN0aW9uIExvZ2luICh7b25Mb2dpbiwgb25Mb2dpbkVycm9yLCBjbGFzc05hbWUsIGNoZWNrVXJsfTogTG9naW5Qcm9wcykgIHtcbi8vICAgICBsZXQgZW1haWxGOiB7IGlzVmFsaWQ6ICgpID0+IGFueTsgfSwgcGFzc0Y6IHsgaXNWYWxpZDogKCkgPT4gYW55OyB9O1xuLy8gICAgIGxldCBbZW1haWxPaywgc2V0RW1haWxPa10gPSB1c2VTdGF0ZShmYWxzZSlcbi8vICAgICBsZXQgW3VzZXIsIHNldFVzZXJdID0gdXNlU3RhdGUoe1xuLy8gICAgICAgICBwYXNzd29yZDogXCJcIixcbi8vICAgICAgICAgZW1haWw6IFwiXCJcbi8vICAgICB9KTtcbi8vICAgICBsZXQgbmV4dCA9ICgpID0+IHtcbi8vICAgICAgICAgaWYgKGVtYWlsRiAmJiBlbWFpbEYuaXNWYWxpZCgpKSB7XG4vLyAgICAgICAgICAgICBpZiAoY2hlY2tVcmwpIHtcbi8vICAgICAgICAgICAgICAgICBmZXRjaChjaGVja1VybCwge1xuLy8gICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuLy8gICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuLy8gICAgICAgICAgICAgICAgICAgICB9LFxuLy8gICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh1c2VyKVxuLy8gICAgICAgICAgICAgICAgIH0pLnRoZW4ociA9PiByLmpzb24oKSkudGhlbihqc29uID0+IHtcbi8vICAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24uc3VjY2Vzcykge1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW1haWxPayh0cnVlKTtcbi8vICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgIG9uTG9naW5FcnJvciAmJiBvbkxvZ2luRXJyb3IoanNvbik7XG4vLyAgICAgICAgICAgICAgICAgICAgIH1cbi8vICAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4vLyAgICAgICAgICAgICAgICAgICAgIG9uTG9naW5FcnJvciAmJiBvbkxvZ2luRXJyb3IoZXJyb3IpO1xuLy8gICAgICAgICAgICAgICAgIH0pXG4vLyAgICAgICAgICAgICB9IGVsc2Uge1xuLy8gICAgICAgICAgICAgICAgIHNldEVtYWlsT2sodHJ1ZSk7XG4vLyAgICAgICAgICAgICB9XG4vLyAgICAgICAgIH1cbi8vICAgICB9XG4vLyAgICAgbGV0IGxvZ2luID0gKCkgPT4ge1xuLy8gICAgICAgICBpZiAoZW1haWxGICYmIGVtYWlsRi5pc1ZhbGlkKCkgJiYgcGFzc0YgJiYgcGFzc0YuaXNWYWxpZCgpKSB7XG4vLyAgICAgICAgICAgICBvbkxvZ2luICYmIG9uTG9naW4odXNlcilcbi8vXG4vLyAgICAgICAgIH1cbi8vICAgICB9XG4vLyAgICAgbGV0IGdldFBhc3N3b3JkVmlldyA9ICgpID0+IHtcbi8vICAgICAgICAgaWYgKGVtYWlsT2spIHtcbi8vICAgICAgICAgICAgIHJldHVybiA8PjxGaWVsZFxuLy8gICAgICAgICAgICAgICAgIHJlZj17KHI6IEZpZWxkUmVmIHwgbnVsbCB8IGFueSkgPT4ge1xuLy8gICAgICAgICAgICAgICAgICAgICBwYXNzRiA9IHI7XG4vLyAgICAgICAgICAgICAgICAgfX1cbi8vICAgICAgICAgICAgICAgICB2YWx1ZT17dXNlci5wYXNzd29yZH1cbi8vICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbi8vICAgICAgICAgICAgICAgICAgICAgbGV0IHUgPSB7Li4udXNlcn07XG4vLyAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbi8vICAgICAgICAgICAgICAgICAgICAgdS5wYXNzd29yZCA9IGUudGFyZ2V0LnZhbHVlO1xuLy8gICAgICAgICAgICAgICAgICAgICBzZXRVc2VyKHUpO1xuLy8gICAgICAgICAgICAgICAgIH19XG4vLyAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuLy8gICAgICAgICAgICAgICAgIHJlcXVpcmVkPXt0cnVlfVxuLy8gICAgICAgICAgICAgICAgIGxhYmVsPXtcIlBhc3N3b3JkXCJ9XG4vLyAgICAgICAgICAgICAgICAgdHlwZT17XCJwYXNzd29yZFwifVxuLy8gICAgICAgICAgICAgICAgIHZ0eXBlPXtcInBhc3N3b3JkXCJ9XG4vLyAgICAgICAgICAgICAgICAgdnR5cGVNc2c9eydOZWVkIHRvIGJlIGEgdmFsaWQgUGFzc3dvcmQnfVxuLy8gICAgICAgICAgICAgICAgIG9uRW50ZXJLZXk9e2xvZ2lufS8+XG4vLyAgICAgICAgICAgICA8Lz47XG4vLyAgICAgICAgIH0gZWxzZSB7XG4vLyAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbi8vICAgICAgICAgfVxuLy8gICAgIH1cbi8vXG4vLyAgICAgbGV0IGdldExvZ2luVmlldyA9ICgpID0+IHtcbi8vICAgICAgICAgaWYgKCFlbWFpbE9rKSB7XG4vLyAgICAgICAgICAgICByZXR1cm4gPD48RmllbGRcbi8vICAgICAgICAgICAgICAgICBhdXRvRm9jdXM9e3RydWV9XG4vLyAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e3RydWV9XG4vLyAgICAgICAgICAgICAgICAgcmVmPXsocjogRmllbGRSZWYgfCBudWxsIHwgYW55KSA9PiB7XG4vLyAgICAgICAgICAgICAgICAgICAgIGVtYWlsRiA9IHI7XG4vLyAgICAgICAgICAgICAgICAgfX1cbi8vICAgICAgICAgICAgICAgICB2YWx1ZT17dXNlci5lbWFpbH1cbi8vICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbi8vICAgICAgICAgICAgICAgICAgICAgbGV0IHUgPSB7Li4udXNlcn07XG4vLyAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbi8vICAgICAgICAgICAgICAgICAgICAgdS5lbWFpbCA9IGUudGFyZ2V0LnZhbHVlO1xuLy8gICAgICAgICAgICAgICAgICAgICBzZXRVc2VyKHUpO1xuLy8gICAgICAgICAgICAgICAgIH19XG4vLyAgICAgICAgICAgICAgICAgbGFiZWw9e1wiRW1haWxcIn1cbi8vICAgICAgICAgICAgICAgICB0eXBlPXtcImVtYWlsXCJ9XG4vLyAgICAgICAgICAgICAgICAgdnR5cGU9e1wiZW1haWxcIn1cbi8vICAgICAgICAgICAgICAgICB2dHlwZU1zZz17J05lZWQgdG8gYmUgYSB2YWxpZCBlbWFpbCd9XG4vLyAgICAgICAgICAgICAgICAgb25FbnRlcktleT17bmV4dH0vPlxuLy8gICAgICAgICAgICAgPC8+O1xuLy8gICAgICAgICB9IGVsc2Uge1xuLy8gICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4vLyAgICAgICAgIH1cbi8vXG4vLyAgICAgfVxuLy8gICAgIHJldHVybiA8ZGl2XG4vLyAgICAgICAgIHJlZj17ZWwgPT4ge1xuLy8gICAgICAgICAgICAgZWwgPSBlbDtcbi8vICAgICAgICAgfX1cbi8vICAgICAgICAgY2xhc3NOYW1lPXsoY2xhc3NOYW1lIHx8IFwiXCIpICsgXCIgbG9naW5cIn1cbi8vICAgICA+XG4vLyAgICAgICAgIHtnZXRMb2dpblZpZXcoKX1cbi8vICAgICAgICAge2dldFBhc3N3b3JkVmlldygpfVxuLy8gICAgIDwvZGl2PlxuLy8gfVxudmFyIExvZ2luID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhMb2dpbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBMb2dpbihwcm9wcykge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwcm9wcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBlbWFpbE9rOiBmYWxzZSxcbiAgICAgICAgICAgIGVtYWlsOiBcIlwiLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IFwiXCIsXG4gICAgICAgICAgICBwYXNzT0s6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgTG9naW4ucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICh0aGlzLmVtYWlsRiAmJiB0aGlzLmVtYWlsRi5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLmNoZWNrVXJsKSB7XG4gICAgICAgICAgICAgICAgZmV0Y2godGhpcy5wcm9wcy5jaGVja1VybCwge1xuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGVtYWlsOiB0aGlzLnN0YXRlLmVtYWlsLCB9KVxuICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIuanNvbigpOyB9KS50aGVuKGZ1bmN0aW9uIChqc29uKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChqc29uLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZW1haWxPazogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uTG9naW5FcnJvciAmJiBfdGhpcy5wcm9wcy5vbkxvZ2luRXJyb3IoanNvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25Mb2dpbkVycm9yICYmIF90aGlzLnByb3BzLm9uTG9naW5FcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZW1haWxPazogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgTG9naW4ucHJvdG90eXBlLmxvZ2luID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5lbWFpbE9rICYmIHRoaXMucGFzc3dvcmRGICYmIHRoaXMucGFzc3dvcmRGLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkxvZ2luICYmIHRoaXMucHJvcHMub25Mb2dpbih7XG4gICAgICAgICAgICAgICAgZW1haWw6IHRoaXMuc3RhdGUuZW1haWwsXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6IHRoaXMuc3RhdGUucGFzc3dvcmRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBMb2dpbi5wcm90b3R5cGUuZ2V0TG9naW5WaWV3ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAoIXRoaXMuc3RhdGUuZW1haWxPaykge1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWVsZF8xLkZpZWxkLCB7IGF1dG9Gb2N1czogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHJlZjogZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmVtYWlsRiA9IHI7XG4gICAgICAgICAgICAgICAgICAgIH0sIHZhbHVlOiB0aGlzLnN0YXRlLmVtYWlsLCBvbkNoYW5nZTogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZW1haWw6IGUudGFyZ2V0LnZhbHVlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9LCBsYWJlbDogXCJFbWFpbFwiLCB0eXBlOiBcImVtYWlsXCIsIHZ0eXBlOiBcImVtYWlsXCIsIHZ0eXBlTXNnOiAnTmVlZCB0byBiZSBhIHZhbGlkIGVtYWlsJywgb25FbnRlcktleTogdGhpcy5uZXh0LmJpbmQodGhpcykgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIExvZ2luLnByb3RvdHlwZS5nZXRQYXNzd29yZFZpZXcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmVtYWlsT2spIHtcbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmllbGRfMS5GaWVsZCwgeyByZWY6IGZ1bmN0aW9uIChyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5wYXNzd29yZEYgPSByO1xuICAgICAgICAgICAgICAgICAgICB9LCB2YWx1ZTogdGhpcy5zdGF0ZS5wYXNzd29yZCwgb25DaGFuZ2U6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IHBhc3N3b3JkOiBlLnRhcmdldC52YWx1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSwgYXV0b0ZvY3VzOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgbGFiZWw6IFwiUGFzc3dvcmRcIiwgdHlwZTogXCJwYXNzd29yZFwiLCB2dHlwZTogXCJwYXNzd29yZFwiLCB2dHlwZU1zZzogJ05lZWQgdG8gYmUgYSB2YWxpZCBQYXNzd29yZCcsIG9uRW50ZXJLZXk6IHRoaXMubG9naW4uYmluZCh0aGlzKSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgTG9naW4ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgcmVmOiBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5lbCA9IGVsO1xuICAgICAgICAgICAgfSwgY2xhc3NOYW1lOiAodGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIikgKyBcIiBsb2dpblwiIH0sXG4gICAgICAgICAgICB0aGlzLmdldExvZ2luVmlldygpLFxuICAgICAgICAgICAgdGhpcy5nZXRQYXNzd29yZFZpZXcoKSkpO1xuICAgIH07XG4gICAgcmV0dXJuIExvZ2luO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydHMuTG9naW4gPSBMb2dpbjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Mb2dpbiA9IHZvaWQgMDtcbnZhciBMb2dpbl8xID0gcmVxdWlyZShcIi4vYXV0aC9Mb2dpblwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkxvZ2luXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBMb2dpbl8xLkxvZ2luOyB9IH0pO1xuIiwiZXhwb3J0IHZhciBNUyA9ICctbXMtJ1xuZXhwb3J0IHZhciBNT1ogPSAnLW1vei0nXG5leHBvcnQgdmFyIFdFQktJVCA9ICctd2Via2l0LSdcblxuZXhwb3J0IHZhciBDT01NRU5UID0gJ2NvbW0nXG5leHBvcnQgdmFyIFJVTEVTRVQgPSAncnVsZSdcbmV4cG9ydCB2YXIgREVDTEFSQVRJT04gPSAnZGVjbCdcblxuZXhwb3J0IHZhciBQQUdFID0gJ0BwYWdlJ1xuZXhwb3J0IHZhciBNRURJQSA9ICdAbWVkaWEnXG5leHBvcnQgdmFyIElNUE9SVCA9ICdAaW1wb3J0J1xuZXhwb3J0IHZhciBDSEFSU0VUID0gJ0BjaGFyc2V0J1xuZXhwb3J0IHZhciBWSUVXUE9SVCA9ICdAdmlld3BvcnQnXG5leHBvcnQgdmFyIFNVUFBPUlRTID0gJ0BzdXBwb3J0cydcbmV4cG9ydCB2YXIgRE9DVU1FTlQgPSAnQGRvY3VtZW50J1xuZXhwb3J0IHZhciBOQU1FU1BBQ0UgPSAnQG5hbWVzcGFjZSdcbmV4cG9ydCB2YXIgS0VZRlJBTUVTID0gJ0BrZXlmcmFtZXMnXG5leHBvcnQgdmFyIEZPTlRfRkFDRSA9ICdAZm9udC1mYWNlJ1xuZXhwb3J0IHZhciBDT1VOVEVSX1NUWUxFID0gJ0Bjb3VudGVyLXN0eWxlJ1xuZXhwb3J0IHZhciBGT05UX0ZFQVRVUkVfVkFMVUVTID0gJ0Bmb250LWZlYXR1cmUtdmFsdWVzJ1xuZXhwb3J0IHZhciBMQVlFUiA9ICdAbGF5ZXInXG4iLCJpbXBvcnQge01TLCBNT1osIFdFQktJVCwgUlVMRVNFVCwgS0VZRlJBTUVTLCBERUNMQVJBVElPTn0gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHttYXRjaCwgY2hhcmF0LCBzdWJzdHIsIHN0cmxlbiwgc2l6ZW9mLCByZXBsYWNlLCBjb21iaW5lLCBmaWx0ZXIsIGFzc2lnbn0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuaW1wb3J0IHtjb3B5LCBsaWZ0LCB0b2tlbml6ZX0gZnJvbSAnLi9Ub2tlbml6ZXIuanMnXG5pbXBvcnQge3NlcmlhbGl6ZX0gZnJvbSAnLi9TZXJpYWxpemVyLmpzJ1xuaW1wb3J0IHtwcmVmaXh9IGZyb20gJy4vUHJlZml4ZXIuanMnXG5cbi8qKlxuICogQHBhcmFtIHtmdW5jdGlvbltdfSBjb2xsZWN0aW9uXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1pZGRsZXdhcmUgKGNvbGxlY3Rpb24pIHtcblx0dmFyIGxlbmd0aCA9IHNpemVvZihjb2xsZWN0aW9uKVxuXG5cdHJldHVybiBmdW5jdGlvbiAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRcdHZhciBvdXRwdXQgPSAnJ1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKylcblx0XHRcdG91dHB1dCArPSBjb2xsZWN0aW9uW2ldKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbiwgY2FsbGJhY2spIHx8ICcnXG5cblx0XHRyZXR1cm4gb3V0cHV0XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydWxlc2hlZXQgKGNhbGxiYWNrKSB7XG5cdHJldHVybiBmdW5jdGlvbiAoZWxlbWVudCkge1xuXHRcdGlmICghZWxlbWVudC5yb290KVxuXHRcdFx0aWYgKGVsZW1lbnQgPSBlbGVtZW50LnJldHVybilcblx0XHRcdFx0Y2FsbGJhY2soZWxlbWVudClcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlZml4ZXIgKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbiwgY2FsbGJhY2spIHtcblx0aWYgKGVsZW1lbnQubGVuZ3RoID4gLTEpXG5cdFx0aWYgKCFlbGVtZW50LnJldHVybilcblx0XHRcdHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG5cdFx0XHRcdGNhc2UgREVDTEFSQVRJT046IGVsZW1lbnQucmV0dXJuID0gcHJlZml4KGVsZW1lbnQudmFsdWUsIGVsZW1lbnQubGVuZ3RoLCBjaGlsZHJlbilcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0Y2FzZSBLRVlGUkFNRVM6XG5cdFx0XHRcdFx0cmV0dXJuIHNlcmlhbGl6ZShbY29weShlbGVtZW50LCB7dmFsdWU6IHJlcGxhY2UoZWxlbWVudC52YWx1ZSwgJ0AnLCAnQCcgKyBXRUJLSVQpfSldLCBjYWxsYmFjaylcblx0XHRcdFx0Y2FzZSBSVUxFU0VUOlxuXHRcdFx0XHRcdGlmIChlbGVtZW50Lmxlbmd0aClcblx0XHRcdFx0XHRcdHJldHVybiBjb21iaW5lKGNoaWxkcmVuID0gZWxlbWVudC5wcm9wcywgZnVuY3Rpb24gKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAobWF0Y2godmFsdWUsIGNhbGxiYWNrID0gLyg6OnBsYWNcXHcrfDpyZWFkLVxcdyspLykpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyA6cmVhZC0ob25seXx3cml0ZSlcblx0XHRcdFx0XHRcdFx0XHRjYXNlICc6cmVhZC1vbmx5JzogY2FzZSAnOnJlYWQtd3JpdGUnOlxuXHRcdFx0XHRcdFx0XHRcdFx0bGlmdChjb3B5KGVsZW1lbnQsIHtwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHJlYWQtXFx3KykvLCAnOicgKyBNT1ogKyAnJDEnKV19KSlcblx0XHRcdFx0XHRcdFx0XHRcdGxpZnQoY29weShlbGVtZW50LCB7cHJvcHM6IFt2YWx1ZV19KSlcblx0XHRcdFx0XHRcdFx0XHRcdGFzc2lnbihlbGVtZW50LCB7cHJvcHM6IGZpbHRlcihjaGlsZHJlbiwgY2FsbGJhY2spfSlcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0XHRcdFx0Ly8gOnBsYWNlaG9sZGVyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAnOjpwbGFjZWhvbGRlcic6XG5cdFx0XHRcdFx0XHRcdFx0XHRsaWZ0KGNvcHkoZWxlbWVudCwge3Byb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocGxhY1xcdyspLywgJzonICsgV0VCS0lUICsgJ2lucHV0LSQxJyldfSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRsaWZ0KGNvcHkoZWxlbWVudCwge3Byb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocGxhY1xcdyspLywgJzonICsgTU9aICsgJyQxJyldfSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRsaWZ0KGNvcHkoZWxlbWVudCwge3Byb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocGxhY1xcdyspLywgTVMgKyAnaW5wdXQtJDEnKV19KSlcblx0XHRcdFx0XHRcdFx0XHRcdGxpZnQoY29weShlbGVtZW50LCB7cHJvcHM6IFt2YWx1ZV19KSlcblx0XHRcdFx0XHRcdFx0XHRcdGFzc2lnbihlbGVtZW50LCB7cHJvcHM6IGZpbHRlcihjaGlsZHJlbiwgY2FsbGJhY2spfSlcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gJydcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5hbWVzcGFjZSAoZWxlbWVudCkge1xuXHRzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuXHRcdGNhc2UgUlVMRVNFVDpcblx0XHRcdGVsZW1lbnQucHJvcHMgPSBlbGVtZW50LnByb3BzLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcblx0XHRcdFx0cmV0dXJuIGNvbWJpbmUodG9rZW5pemUodmFsdWUpLCBmdW5jdGlvbiAodmFsdWUsIGluZGV4LCBjaGlsZHJlbikge1xuXHRcdFx0XHRcdHN3aXRjaCAoY2hhcmF0KHZhbHVlLCAwKSkge1xuXHRcdFx0XHRcdFx0Ly8gXFxmXG5cdFx0XHRcdFx0XHRjYXNlIDEyOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc3Vic3RyKHZhbHVlLCAxLCBzdHJsZW4odmFsdWUpKVxuXHRcdFx0XHRcdFx0Ly8gXFwwICggKyA+IH5cblx0XHRcdFx0XHRcdGNhc2UgMDogY2FzZSA0MDogY2FzZSA0MzogY2FzZSA2MjogY2FzZSAxMjY6XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZVxuXHRcdFx0XHRcdFx0Ly8gOlxuXHRcdFx0XHRcdFx0Y2FzZSA1ODpcblx0XHRcdFx0XHRcdFx0aWYgKGNoaWxkcmVuWysraW5kZXhdID09PSAnZ2xvYmFsJylcblx0XHRcdFx0XHRcdFx0XHRjaGlsZHJlbltpbmRleF0gPSAnJywgY2hpbGRyZW5bKytpbmRleF0gPSAnXFxmJyArIHN1YnN0cihjaGlsZHJlbltpbmRleF0sIGluZGV4ID0gMSwgLTEpXG5cdFx0XHRcdFx0XHQvLyBcXHNcblx0XHRcdFx0XHRcdGNhc2UgMzI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBpbmRleCA9PT0gMSA/ICcnIDogdmFsdWVcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAoaW5kZXgpIHtcblx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6IGVsZW1lbnQgPSB2YWx1ZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNpemVvZihjaGlsZHJlbikgPiAxID8gJycgOiB2YWx1ZVxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgaW5kZXggPSBzaXplb2YoY2hpbGRyZW4pIC0gMTogY2FzZSAyOlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGluZGV4ID09PSAyID8gdmFsdWUgKyBlbGVtZW50ICsgZWxlbWVudCA6IHZhbHVlICsgZWxlbWVudFxuXHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdH1cbn1cbiIsImltcG9ydCB7Q09NTUVOVCwgUlVMRVNFVCwgREVDTEFSQVRJT059IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7YWJzLCBjaGFyYXQsIHRyaW0sIGZyb20sIHNpemVvZiwgc3RybGVuLCBzdWJzdHIsIGFwcGVuZCwgcmVwbGFjZSwgaW5kZXhvZn0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuaW1wb3J0IHtub2RlLCBjaGFyLCBwcmV2LCBuZXh0LCBwZWVrLCBjYXJldCwgYWxsb2MsIGRlYWxsb2MsIGRlbGltaXQsIHdoaXRlc3BhY2UsIGVzY2FwaW5nLCBpZGVudGlmaWVyLCBjb21tZW50ZXJ9IGZyb20gJy4vVG9rZW5pemVyLmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7b2JqZWN0W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlICh2YWx1ZSkge1xuXHRyZXR1cm4gZGVhbGxvYyhwYXJzZSgnJywgbnVsbCwgbnVsbCwgbnVsbCwgWycnXSwgdmFsdWUgPSBhbGxvYyh2YWx1ZSksIDAsIFswXSwgdmFsdWUpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc1xuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZXNldHNcbiAqIEBwYXJhbSB7bnVtYmVyW119IHBzZXVkb1xuICogQHBhcmFtIHtudW1iZXJbXX0gcG9pbnRzXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBkZWNsYXJhdGlvbnNcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBydWxlLCBydWxlcywgcnVsZXNldHMsIHBzZXVkbywgcG9pbnRzLCBkZWNsYXJhdGlvbnMpIHtcblx0dmFyIGluZGV4ID0gMFxuXHR2YXIgb2Zmc2V0ID0gMFxuXHR2YXIgbGVuZ3RoID0gcHNldWRvXG5cdHZhciBhdHJ1bGUgPSAwXG5cdHZhciBwcm9wZXJ0eSA9IDBcblx0dmFyIHByZXZpb3VzID0gMFxuXHR2YXIgdmFyaWFibGUgPSAxXG5cdHZhciBzY2FubmluZyA9IDFcblx0dmFyIGFtcGVyc2FuZCA9IDFcblx0dmFyIGNoYXJhY3RlciA9IDBcblx0dmFyIHR5cGUgPSAnJ1xuXHR2YXIgcHJvcHMgPSBydWxlc1xuXHR2YXIgY2hpbGRyZW4gPSBydWxlc2V0c1xuXHR2YXIgcmVmZXJlbmNlID0gcnVsZVxuXHR2YXIgY2hhcmFjdGVycyA9IHR5cGVcblxuXHR3aGlsZSAoc2Nhbm5pbmcpXG5cdFx0c3dpdGNoIChwcmV2aW91cyA9IGNoYXJhY3RlciwgY2hhcmFjdGVyID0gbmV4dCgpKSB7XG5cdFx0XHQvLyAoXG5cdFx0XHRjYXNlIDQwOlxuXHRcdFx0XHRpZiAocHJldmlvdXMgIT0gMTA4ICYmIGNoYXJhdChjaGFyYWN0ZXJzLCBsZW5ndGggLSAxKSA9PSA1OCkge1xuXHRcdFx0XHRcdGlmIChpbmRleG9mKGNoYXJhY3RlcnMgKz0gcmVwbGFjZShkZWxpbWl0KGNoYXJhY3RlciksICcmJywgJyZcXGYnKSwgJyZcXGYnKSAhPSAtMSlcblx0XHRcdFx0XHRcdGFtcGVyc2FuZCA9IC0xXG5cdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0fVxuXHRcdFx0Ly8gXCIgJyBbXG5cdFx0XHRjYXNlIDM0OiBjYXNlIDM5OiBjYXNlIDkxOlxuXHRcdFx0XHRjaGFyYWN0ZXJzICs9IGRlbGltaXQoY2hhcmFjdGVyKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gXFx0IFxcbiBcXHIgXFxzXG5cdFx0XHRjYXNlIDk6IGNhc2UgMTA6IGNhc2UgMTM6IGNhc2UgMzI6XG5cdFx0XHRcdGNoYXJhY3RlcnMgKz0gd2hpdGVzcGFjZShwcmV2aW91cylcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcXG5cdFx0XHRjYXNlIDkyOlxuXHRcdFx0XHRjaGFyYWN0ZXJzICs9IGVzY2FwaW5nKGNhcmV0KCkgLSAxLCA3KVxuXHRcdFx0XHRjb250aW51ZVxuXHRcdFx0Ly8gL1xuXHRcdFx0Y2FzZSA0Nzpcblx0XHRcdFx0c3dpdGNoIChwZWVrKCkpIHtcblx0XHRcdFx0XHRjYXNlIDQyOiBjYXNlIDQ3OlxuXHRcdFx0XHRcdFx0YXBwZW5kKGNvbW1lbnQoY29tbWVudGVyKG5leHQoKSwgY2FyZXQoKSksIHJvb3QsIHBhcmVudCwgZGVjbGFyYXRpb25zKSwgZGVjbGFyYXRpb25zKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0Y2hhcmFjdGVycyArPSAnLydcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8ge1xuXHRcdFx0Y2FzZSAxMjMgKiB2YXJpYWJsZTpcblx0XHRcdFx0cG9pbnRzW2luZGV4KytdID0gc3RybGVuKGNoYXJhY3RlcnMpICogYW1wZXJzYW5kXG5cdFx0XHQvLyB9IDsgXFwwXG5cdFx0XHRjYXNlIDEyNSAqIHZhcmlhYmxlOiBjYXNlIDU5OiBjYXNlIDA6XG5cdFx0XHRcdHN3aXRjaCAoY2hhcmFjdGVyKSB7XG5cdFx0XHRcdFx0Ly8gXFwwIH1cblx0XHRcdFx0XHRjYXNlIDA6IGNhc2UgMTI1OiBzY2FubmluZyA9IDBcblx0XHRcdFx0XHQvLyA7XG5cdFx0XHRcdFx0Y2FzZSA1OSArIG9mZnNldDogaWYgKGFtcGVyc2FuZCA9PSAtMSkgY2hhcmFjdGVycyA9IHJlcGxhY2UoY2hhcmFjdGVycywgL1xcZi9nLCAnJylcblx0XHRcdFx0XHRcdGlmIChwcm9wZXJ0eSA+IDAgJiYgKHN0cmxlbihjaGFyYWN0ZXJzKSAtIGxlbmd0aCkpXG5cdFx0XHRcdFx0XHRcdGFwcGVuZChwcm9wZXJ0eSA+IDMyID8gZGVjbGFyYXRpb24oY2hhcmFjdGVycyArICc7JywgcnVsZSwgcGFyZW50LCBsZW5ndGggLSAxLCBkZWNsYXJhdGlvbnMpIDogZGVjbGFyYXRpb24ocmVwbGFjZShjaGFyYWN0ZXJzLCAnICcsICcnKSArICc7JywgcnVsZSwgcGFyZW50LCBsZW5ndGggLSAyLCBkZWNsYXJhdGlvbnMpLCBkZWNsYXJhdGlvbnMpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIEAgO1xuXHRcdFx0XHRcdGNhc2UgNTk6IGNoYXJhY3RlcnMgKz0gJzsnXG5cdFx0XHRcdFx0Ly8geyBydWxlL2F0LXJ1bGVcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0YXBwZW5kKHJlZmVyZW5jZSA9IHJ1bGVzZXQoY2hhcmFjdGVycywgcm9vdCwgcGFyZW50LCBpbmRleCwgb2Zmc2V0LCBydWxlcywgcG9pbnRzLCB0eXBlLCBwcm9wcyA9IFtdLCBjaGlsZHJlbiA9IFtdLCBsZW5ndGgsIHJ1bGVzZXRzKSwgcnVsZXNldHMpXG5cblx0XHRcdFx0XHRcdGlmIChjaGFyYWN0ZXIgPT09IDEyMylcblx0XHRcdFx0XHRcdFx0aWYgKG9mZnNldCA9PT0gMClcblx0XHRcdFx0XHRcdFx0XHRwYXJzZShjaGFyYWN0ZXJzLCByb290LCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcHJvcHMsIHJ1bGVzZXRzLCBsZW5ndGgsIHBvaW50cywgY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGF0cnVsZSA9PT0gOTkgJiYgY2hhcmF0KGNoYXJhY3RlcnMsIDMpID09PSAxMTAgPyAxMDAgOiBhdHJ1bGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGQgbCBtIHNcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTAwOiBjYXNlIDEwODogY2FzZSAxMDk6IGNhc2UgMTE1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZSh2YWx1ZSwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIHJ1bGUgJiYgYXBwZW5kKHJ1bGVzZXQodmFsdWUsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCAwLCAwLCBydWxlcywgcG9pbnRzLCB0eXBlLCBydWxlcywgcHJvcHMgPSBbXSwgbGVuZ3RoLCBjaGlsZHJlbiksIGNoaWxkcmVuKSwgcnVsZXMsIGNoaWxkcmVuLCBsZW5ndGgsIHBvaW50cywgcnVsZSA/IHByb3BzIDogY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZShjaGFyYWN0ZXJzLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCBbJyddLCBjaGlsZHJlbiwgMCwgcG9pbnRzLCBjaGlsZHJlbilcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpbmRleCA9IG9mZnNldCA9IHByb3BlcnR5ID0gMCwgdmFyaWFibGUgPSBhbXBlcnNhbmQgPSAxLCB0eXBlID0gY2hhcmFjdGVycyA9ICcnLCBsZW5ndGggPSBwc2V1ZG9cblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIDpcblx0XHRcdGNhc2UgNTg6XG5cdFx0XHRcdGxlbmd0aCA9IDEgKyBzdHJsZW4oY2hhcmFjdGVycyksIHByb3BlcnR5ID0gcHJldmlvdXNcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmICh2YXJpYWJsZSA8IDEpXG5cdFx0XHRcdFx0aWYgKGNoYXJhY3RlciA9PSAxMjMpXG5cdFx0XHRcdFx0XHQtLXZhcmlhYmxlXG5cdFx0XHRcdFx0ZWxzZSBpZiAoY2hhcmFjdGVyID09IDEyNSAmJiB2YXJpYWJsZSsrID09IDAgJiYgcHJldigpID09IDEyNSlcblx0XHRcdFx0XHRcdGNvbnRpbnVlXG5cblx0XHRcdFx0c3dpdGNoIChjaGFyYWN0ZXJzICs9IGZyb20oY2hhcmFjdGVyKSwgY2hhcmFjdGVyICogdmFyaWFibGUpIHtcblx0XHRcdFx0XHQvLyAmXG5cdFx0XHRcdFx0Y2FzZSAzODpcblx0XHRcdFx0XHRcdGFtcGVyc2FuZCA9IG9mZnNldCA+IDAgPyAxIDogKGNoYXJhY3RlcnMgKz0gJ1xcZicsIC0xKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyAsXG5cdFx0XHRcdFx0Y2FzZSA0NDpcblx0XHRcdFx0XHRcdHBvaW50c1tpbmRleCsrXSA9IChzdHJsZW4oY2hhcmFjdGVycykgLSAxKSAqIGFtcGVyc2FuZCwgYW1wZXJzYW5kID0gMVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyBAXG5cdFx0XHRcdFx0Y2FzZSA2NDpcblx0XHRcdFx0XHRcdC8vIC1cblx0XHRcdFx0XHRcdGlmIChwZWVrKCkgPT09IDQ1KVxuXHRcdFx0XHRcdFx0XHRjaGFyYWN0ZXJzICs9IGRlbGltaXQobmV4dCgpKVxuXG5cdFx0XHRcdFx0XHRhdHJ1bGUgPSBwZWVrKCksIG9mZnNldCA9IGxlbmd0aCA9IHN0cmxlbih0eXBlID0gY2hhcmFjdGVycyArPSBpZGVudGlmaWVyKGNhcmV0KCkpKSwgY2hhcmFjdGVyKytcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdGNhc2UgNDU6XG5cdFx0XHRcdFx0XHRpZiAocHJldmlvdXMgPT09IDQ1ICYmIHN0cmxlbihjaGFyYWN0ZXJzKSA9PSAyKVxuXHRcdFx0XHRcdFx0XHR2YXJpYWJsZSA9IDBcblx0XHRcdFx0fVxuXHRcdH1cblxuXHRyZXR1cm4gcnVsZXNldHNcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc1xuICogQHBhcmFtIHtudW1iZXJbXX0gcG9pbnRzXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmdbXX0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nW119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNldCAodmFsdWUsIHJvb3QsIHBhcmVudCwgaW5kZXgsIG9mZnNldCwgcnVsZXMsIHBvaW50cywgdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgsIHNpYmxpbmdzKSB7XG5cdHZhciBwb3N0ID0gb2Zmc2V0IC0gMVxuXHR2YXIgcnVsZSA9IG9mZnNldCA9PT0gMCA/IHJ1bGVzIDogWycnXVxuXHR2YXIgc2l6ZSA9IHNpemVvZihydWxlKVxuXG5cdGZvciAodmFyIGkgPSAwLCBqID0gMCwgayA9IDA7IGkgPCBpbmRleDsgKytpKVxuXHRcdGZvciAodmFyIHggPSAwLCB5ID0gc3Vic3RyKHZhbHVlLCBwb3N0ICsgMSwgcG9zdCA9IGFicyhqID0gcG9pbnRzW2ldKSksIHogPSB2YWx1ZTsgeCA8IHNpemU7ICsreClcblx0XHRcdGlmICh6ID0gdHJpbShqID4gMCA/IHJ1bGVbeF0gKyAnICcgKyB5IDogcmVwbGFjZSh5LCAvJlxcZi9nLCBydWxlW3hdKSkpXG5cdFx0XHRcdHByb3BzW2srK10gPSB6XG5cblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgb2Zmc2V0ID09PSAwID8gUlVMRVNFVCA6IHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgbGVuZ3RoLCBzaWJsaW5ncylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtvYmplY3RbXX0gc2libGluZ3NcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbW1lbnQgKHZhbHVlLCByb290LCBwYXJlbnQsIHNpYmxpbmdzKSB7XG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIENPTU1FTlQsIGZyb20oY2hhcigpKSwgc3Vic3RyKHZhbHVlLCAyLCAtMiksIDAsIHNpYmxpbmdzKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyYXRpb24gKHZhbHVlLCByb290LCBwYXJlbnQsIGxlbmd0aCwgc2libGluZ3MpIHtcblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgREVDTEFSQVRJT04sIHN1YnN0cih2YWx1ZSwgMCwgbGVuZ3RoKSwgc3Vic3RyKHZhbHVlLCBsZW5ndGggKyAxLCAtMSksIGxlbmd0aCwgc2libGluZ3MpXG59XG4iLCJpbXBvcnQge01TLCBNT1osIFdFQktJVH0gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHtoYXNoLCBjaGFyYXQsIHN0cmxlbiwgaW5kZXhvZiwgcmVwbGFjZSwgc3Vic3RyLCBtYXRjaH0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeCAodmFsdWUsIGxlbmd0aCwgY2hpbGRyZW4pIHtcblx0c3dpdGNoIChoYXNoKHZhbHVlLCBsZW5ndGgpKSB7XG5cdFx0Ly8gY29sb3ItYWRqdXN0XG5cdFx0Y2FzZSA1MTAzOlxuXHRcdFx0cmV0dXJuIFdFQktJVCArICdwcmludC0nICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIGFuaW1hdGlvbiwgYW5pbWF0aW9uLShkZWxheXxkaXJlY3Rpb258ZHVyYXRpb258ZmlsbC1tb2RlfGl0ZXJhdGlvbi1jb3VudHxuYW1lfHBsYXktc3RhdGV8dGltaW5nLWZ1bmN0aW9uKVxuXHRcdGNhc2UgNTczNzogY2FzZSA0MjAxOiBjYXNlIDMxNzc6IGNhc2UgMzQzMzogY2FzZSAxNjQxOiBjYXNlIDQ0NTc6IGNhc2UgMjkyMTpcblx0XHQvLyB0ZXh0LWRlY29yYXRpb24sIGZpbHRlciwgY2xpcC1wYXRoLCBiYWNrZmFjZS12aXNpYmlsaXR5LCBjb2x1bW4sIGJveC1kZWNvcmF0aW9uLWJyZWFrXG5cdFx0Y2FzZSA1NTcyOiBjYXNlIDYzNTY6IGNhc2UgNTg0NDogY2FzZSAzMTkxOiBjYXNlIDY2NDU6IGNhc2UgMzAwNTpcblx0XHQvLyBtYXNrLCBtYXNrLWltYWdlLCBtYXNrLShtb2RlfGNsaXB8c2l6ZSksIG1hc2stKHJlcGVhdHxvcmlnaW4pLCBtYXNrLXBvc2l0aW9uLCBtYXNrLWNvbXBvc2l0ZSxcblx0XHRjYXNlIDYzOTE6IGNhc2UgNTg3OTogY2FzZSA1NjIzOiBjYXNlIDYxMzU6IGNhc2UgNDU5OTogY2FzZSA0ODU1OlxuXHRcdC8vIGJhY2tncm91bmQtY2xpcCwgY29sdW1ucywgY29sdW1uLShjb3VudHxmaWxsfGdhcHxydWxlfHJ1bGUtY29sb3J8cnVsZS1zdHlsZXxydWxlLXdpZHRofHNwYW58d2lkdGgpXG5cdFx0Y2FzZSA0MjE1OiBjYXNlIDYzODk6IGNhc2UgNTEwOTogY2FzZSA1MzY1OiBjYXNlIDU2MjE6IGNhc2UgMzgyOTpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gdGFiLXNpemVcblx0XHRjYXNlIDQ3ODk6XG5cdFx0XHRyZXR1cm4gTU9aICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIGFwcGVhcmFuY2UsIHVzZXItc2VsZWN0LCB0cmFuc2Zvcm0sIGh5cGhlbnMsIHRleHQtc2l6ZS1hZGp1c3Rcblx0XHRjYXNlIDUzNDk6IGNhc2UgNDI0NjogY2FzZSA0ODEwOiBjYXNlIDY5Njg6IGNhc2UgMjc1Njpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1PWiArIHZhbHVlICsgTVMgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8gd3JpdGluZy1tb2RlXG5cdFx0Y2FzZSA1OTM2OlxuXHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDExKSkge1xuXHRcdFx0XHQvLyB2ZXJ0aWNhbC1sKHIpXG5cdFx0XHRcdGNhc2UgMTE0OlxuXHRcdFx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgL1tzdmhdXFx3Ky1bdGJscl17Mn0vLCAndGInKSArIHZhbHVlXG5cdFx0XHRcdC8vIHZlcnRpY2FsLXIobClcblx0XHRcdFx0Y2FzZSAxMDg6XG5cdFx0XHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICd0Yi1ybCcpICsgdmFsdWVcblx0XHRcdFx0Ly8gaG9yaXpvbnRhbCgtKXRiXG5cdFx0XHRcdGNhc2UgNDU6XG5cdFx0XHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICdscicpICsgdmFsdWVcblx0XHRcdFx0Ly8gZGVmYXVsdDogZmFsbHRocm91Z2ggdG8gYmVsb3dcblx0XHRcdH1cblx0XHQvLyBmbGV4LCBmbGV4LWRpcmVjdGlvbiwgc2Nyb2xsLXNuYXAtdHlwZSwgd3JpdGluZy1tb2RlXG5cdFx0Y2FzZSA2ODI4OiBjYXNlIDQyNjg6IGNhc2UgMjkwMzpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIG9yZGVyXG5cdFx0Y2FzZSA2MTY1OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyAnZmxleC0nICsgdmFsdWUgKyB2YWx1ZVxuXHRcdC8vIGFsaWduLWl0ZW1zXG5cdFx0Y2FzZSA1MTg3OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgcmVwbGFjZSh2YWx1ZSwgLyhcXHcrKS4rKDpbXl0rKS8sIFdFQktJVCArICdib3gtJDEkMicgKyBNUyArICdmbGV4LSQxJDInKSArIHZhbHVlXG5cdFx0Ly8gYWxpZ24tc2VsZlxuXHRcdGNhc2UgNTQ0Mzpcblx0XHRcdHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgJ2ZsZXgtaXRlbS0nICsgcmVwbGFjZSh2YWx1ZSwgL2ZsZXgtfC1zZWxmL2csICcnKSArICghbWF0Y2godmFsdWUsIC9mbGV4LXxiYXNlbGluZS8pID8gTVMgKyAnZ3JpZC1yb3ctJyArIHJlcGxhY2UodmFsdWUsIC9mbGV4LXwtc2VsZi9nLCAnJykgOiAnJykgKyB2YWx1ZVxuXHRcdC8vIGFsaWduLWNvbnRlbnRcblx0XHRjYXNlIDQ2NzU6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArICdmbGV4LWxpbmUtcGFjaycgKyByZXBsYWNlKHZhbHVlLCAvYWxpZ24tY29udGVudHxmbGV4LXwtc2VsZi9nLCAnJykgKyB2YWx1ZVxuXHRcdC8vIGZsZXgtc2hyaW5rXG5cdFx0Y2FzZSA1NTQ4OlxuXHRcdFx0cmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAnc2hyaW5rJywgJ25lZ2F0aXZlJykgKyB2YWx1ZVxuXHRcdC8vIGZsZXgtYmFzaXNcblx0XHRjYXNlIDUyOTI6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdiYXNpcycsICdwcmVmZXJyZWQtc2l6ZScpICsgdmFsdWVcblx0XHQvLyBmbGV4LWdyb3dcblx0XHRjYXNlIDYwNjA6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgJ2JveC0nICsgcmVwbGFjZSh2YWx1ZSwgJy1ncm93JywgJycpICsgV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdncm93JywgJ3Bvc2l0aXZlJykgKyB2YWx1ZVxuXHRcdC8vIHRyYW5zaXRpb25cblx0XHRjYXNlIDQ1NTQ6XG5cdFx0XHRyZXR1cm4gV0VCS0lUICsgcmVwbGFjZSh2YWx1ZSwgLyhbXi1dKSh0cmFuc2Zvcm0pL2csICckMScgKyBXRUJLSVQgKyAnJDInKSArIHZhbHVlXG5cdFx0Ly8gY3Vyc29yXG5cdFx0Y2FzZSA2MTg3OlxuXHRcdFx0cmV0dXJuIHJlcGxhY2UocmVwbGFjZShyZXBsYWNlKHZhbHVlLCAvKHpvb20tfGdyYWIpLywgV0VCS0lUICsgJyQxJyksIC8oaW1hZ2Utc2V0KS8sIFdFQktJVCArICckMScpLCB2YWx1ZSwgJycpICsgdmFsdWVcblx0XHQvLyBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kLWltYWdlXG5cdFx0Y2FzZSA1NDk1OiBjYXNlIDM5NTk6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyhpbWFnZS1zZXRcXChbXl0qKS8sIFdFQktJVCArICckMScgKyAnJGAkMScpXG5cdFx0Ly8ganVzdGlmeS1jb250ZW50XG5cdFx0Y2FzZSA0OTY4OlxuXHRcdFx0cmV0dXJuIHJlcGxhY2UocmVwbGFjZSh2YWx1ZSwgLyguKzopKGZsZXgtKT8oLiopLywgV0VCS0lUICsgJ2JveC1wYWNrOiQzJyArIE1TICsgJ2ZsZXgtcGFjazokMycpLCAvcy4rLWJbXjtdKy8sICdqdXN0aWZ5JykgKyBXRUJLSVQgKyB2YWx1ZSArIHZhbHVlXG5cdFx0Ly8ganVzdGlmeS1zZWxmXG5cdFx0Y2FzZSA0MjAwOlxuXHRcdFx0aWYgKCFtYXRjaCh2YWx1ZSwgL2ZsZXgtfGJhc2VsaW5lLykpIHJldHVybiBNUyArICdncmlkLWNvbHVtbi1hbGlnbicgKyBzdWJzdHIodmFsdWUsIGxlbmd0aCkgKyB2YWx1ZVxuXHRcdFx0YnJlYWtcblx0XHQvLyBncmlkLXRlbXBsYXRlLShjb2x1bW5zfHJvd3MpXG5cdFx0Y2FzZSAyNTkyOiBjYXNlIDMzNjA6XG5cdFx0XHRyZXR1cm4gTVMgKyByZXBsYWNlKHZhbHVlLCAndGVtcGxhdGUtJywgJycpICsgdmFsdWVcblx0XHQvLyBncmlkLShyb3d8Y29sdW1uKS1zdGFydFxuXHRcdGNhc2UgNDM4NDogY2FzZSAzNjE2OlxuXHRcdFx0aWYgKGNoaWxkcmVuICYmIGNoaWxkcmVuLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQsIGluZGV4KSB7IHJldHVybiBsZW5ndGggPSBpbmRleCwgbWF0Y2goZWxlbWVudC5wcm9wcywgL2dyaWQtXFx3Ky1lbmQvKSB9KSkge1xuXHRcdFx0XHRyZXR1cm4gfmluZGV4b2YodmFsdWUgKyAoY2hpbGRyZW4gPSBjaGlsZHJlbltsZW5ndGhdLnZhbHVlKSwgJ3NwYW4nKSA/IHZhbHVlIDogKE1TICsgcmVwbGFjZSh2YWx1ZSwgJy1zdGFydCcsICcnKSArIHZhbHVlICsgTVMgKyAnZ3JpZC1yb3ctc3BhbjonICsgKH5pbmRleG9mKGNoaWxkcmVuLCAnc3BhbicpID8gbWF0Y2goY2hpbGRyZW4sIC9cXGQrLykgOiArbWF0Y2goY2hpbGRyZW4sIC9cXGQrLykgLSArbWF0Y2godmFsdWUsIC9cXGQrLykpICsgJzsnKVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIE1TICsgcmVwbGFjZSh2YWx1ZSwgJy1zdGFydCcsICcnKSArIHZhbHVlXG5cdFx0Ly8gZ3JpZC0ocm93fGNvbHVtbiktZW5kXG5cdFx0Y2FzZSA0ODk2OiBjYXNlIDQxMjg6XG5cdFx0XHRyZXR1cm4gKGNoaWxkcmVuICYmIGNoaWxkcmVuLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG1hdGNoKGVsZW1lbnQucHJvcHMsIC9ncmlkLVxcdystc3RhcnQvKSB9KSkgPyB2YWx1ZSA6IE1TICsgcmVwbGFjZShyZXBsYWNlKHZhbHVlLCAnLWVuZCcsICctc3BhbicpLCAnc3BhbiAnLCAnJykgKyB2YWx1ZVxuXHRcdC8vIChtYXJnaW58cGFkZGluZyktaW5saW5lLShzdGFydHxlbmQpXG5cdFx0Y2FzZSA0MDk1OiBjYXNlIDM1ODM6IGNhc2UgNDA2ODogY2FzZSAyNTMyOlxuXHRcdFx0cmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLispLWlubGluZSguKykvLCBXRUJLSVQgKyAnJDEkMicpICsgdmFsdWVcblx0XHQvLyAobWlufG1heCk/KHdpZHRofGhlaWdodHxpbmxpbmUtc2l6ZXxibG9jay1zaXplKVxuXHRcdGNhc2UgODExNjogY2FzZSA3MDU5OiBjYXNlIDU3NTM6IGNhc2UgNTUzNTpcblx0XHRjYXNlIDU0NDU6IGNhc2UgNTcwMTogY2FzZSA0OTMzOiBjYXNlIDQ2Nzc6XG5cdFx0Y2FzZSA1NTMzOiBjYXNlIDU3ODk6IGNhc2UgNTAyMTogY2FzZSA0NzY1OlxuXHRcdFx0Ly8gc3RyZXRjaCwgbWF4LWNvbnRlbnQsIG1pbi1jb250ZW50LCBmaWxsLWF2YWlsYWJsZVxuXHRcdFx0aWYgKHN0cmxlbih2YWx1ZSkgLSAxIC0gbGVuZ3RoID4gNilcblx0XHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDEpKSB7XG5cdFx0XHRcdFx0Ly8gKG0pYXgtY29udGVudCwgKG0paW4tY29udGVudFxuXHRcdFx0XHRcdGNhc2UgMTA5OlxuXHRcdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdFx0aWYgKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgNCkgIT09IDQ1KVxuXHRcdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIChmKWlsbC1hdmFpbGFibGUsIChmKWl0LWNvbnRlbnRcblx0XHRcdFx0XHRjYXNlIDEwMjpcblx0XHRcdFx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAvKC4rOikoLispLShbXl0rKS8sICckMScgKyBXRUJLSVQgKyAnJDItJDMnICsgJyQxJyArIE1PWiArIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDMpID09IDEwOCA/ICckMycgOiAnJDItJDMnKSkgKyB2YWx1ZVxuXHRcdFx0XHRcdC8vIChzKXRyZXRjaFxuXHRcdFx0XHRcdGNhc2UgMTE1OlxuXHRcdFx0XHRcdFx0cmV0dXJuIH5pbmRleG9mKHZhbHVlLCAnc3RyZXRjaCcpID8gcHJlZml4KHJlcGxhY2UodmFsdWUsICdzdHJldGNoJywgJ2ZpbGwtYXZhaWxhYmxlJyksIGxlbmd0aCwgY2hpbGRyZW4pICsgdmFsdWUgOiB2YWx1ZVxuXHRcdFx0XHR9XG5cdFx0XHRicmVha1xuXHRcdC8vIGdyaWQtKGNvbHVtbnxyb3cpXG5cdFx0Y2FzZSA1MTUyOiBjYXNlIDU5MjA6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyguKz8pOihcXGQrKShcXHMqXFwvXFxzKihzcGFuKT9cXHMqKFxcZCspKT8oLiopLywgZnVuY3Rpb24gKF8sIGEsIGIsIGMsIGQsIGUsIGYpIHsgcmV0dXJuIChNUyArIGEgKyAnOicgKyBiICsgZikgKyAoYyA/IChNUyArIGEgKyAnLXNwYW46JyArIChkID8gZSA6ICtlIC0gK2IpKSArIGYgOiAnJykgKyB2YWx1ZSB9KVxuXHRcdC8vIHBvc2l0aW9uOiBzdGlja3lcblx0XHRjYXNlIDQ5NDk6XG5cdFx0XHQvLyBzdGljayh5KT9cblx0XHRcdGlmIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDYpID09PSAxMjEpXG5cdFx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAnOicsICc6JyArIFdFQktJVCkgKyB2YWx1ZVxuXHRcdFx0YnJlYWtcblx0XHQvLyBkaXNwbGF5OiAoZmxleHxpbmxpbmUtZmxleHxncmlkfGlubGluZS1ncmlkKVxuXHRcdGNhc2UgNjQ0NDpcblx0XHRcdHN3aXRjaCAoY2hhcmF0KHZhbHVlLCBjaGFyYXQodmFsdWUsIDE0KSA9PT0gNDUgPyAxOCA6IDExKSkge1xuXHRcdFx0XHQvLyAoaW5saW5lLSk/ZmxlKHgpXG5cdFx0XHRcdGNhc2UgMTIwOlxuXHRcdFx0XHRcdHJldHVybiByZXBsYWNlKHZhbHVlLCAvKC4rOikoW147XFxzIV0rKSg7fChcXHMrKT8hLispPy8sICckMScgKyBXRUJLSVQgKyAoY2hhcmF0KHZhbHVlLCAxNCkgPT09IDQ1ID8gJ2lubGluZS0nIDogJycpICsgJ2JveCQzJyArICckMScgKyBXRUJLSVQgKyAnJDIkMycgKyAnJDEnICsgTVMgKyAnJDJib3gkMycpICsgdmFsdWVcblx0XHRcdFx0Ly8gKGlubGluZS0pP2dyaShkKVxuXHRcdFx0XHRjYXNlIDEwMDpcblx0XHRcdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgJzonLCAnOicgKyBNUykgKyB2YWx1ZVxuXHRcdFx0fVxuXHRcdFx0YnJlYWtcblx0XHQvLyBzY3JvbGwtbWFyZ2luLCBzY3JvbGwtbWFyZ2luLSh0b3B8cmlnaHR8Ym90dG9tfGxlZnQpXG5cdFx0Y2FzZSA1NzE5OiBjYXNlIDI2NDc6IGNhc2UgMjEzNTogY2FzZSAzOTI3OiBjYXNlIDIzOTE6XG5cdFx0XHRyZXR1cm4gcmVwbGFjZSh2YWx1ZSwgJ3Njcm9sbC0nLCAnc2Nyb2xsLXNuYXAtJykgKyB2YWx1ZVxuXHR9XG5cblx0cmV0dXJuIHZhbHVlXG59XG4iLCJpbXBvcnQge0lNUE9SVCwgTEFZRVIsIENPTU1FTlQsIFJVTEVTRVQsIERFQ0xBUkFUSU9OLCBLRVlGUkFNRVN9IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7c3RybGVufSBmcm9tICcuL1V0aWxpdHkuanMnXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemUgKGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHR2YXIgb3V0cHV0ID0gJydcblxuXHRmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKVxuXHRcdG91dHB1dCArPSBjYWxsYmFjayhjaGlsZHJlbltpXSwgaSwgY2hpbGRyZW4sIGNhbGxiYWNrKSB8fCAnJ1xuXG5cdHJldHVybiBvdXRwdXRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeSAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuXHRcdGNhc2UgTEFZRVI6IGlmIChlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkgYnJlYWtcblx0XHRjYXNlIElNUE9SVDogY2FzZSBERUNMQVJBVElPTjogcmV0dXJuIGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC5yZXR1cm4gfHwgZWxlbWVudC52YWx1ZVxuXHRcdGNhc2UgQ09NTUVOVDogcmV0dXJuICcnXG5cdFx0Y2FzZSBLRVlGUkFNRVM6IHJldHVybiBlbGVtZW50LnJldHVybiA9IGVsZW1lbnQudmFsdWUgKyAneycgKyBzZXJpYWxpemUoZWxlbWVudC5jaGlsZHJlbiwgY2FsbGJhY2spICsgJ30nXG5cdFx0Y2FzZSBSVUxFU0VUOiBpZiAoIXN0cmxlbihlbGVtZW50LnZhbHVlID0gZWxlbWVudC5wcm9wcy5qb2luKCcsJykpKSByZXR1cm4gJydcblx0fVxuXG5cdHJldHVybiBzdHJsZW4oY2hpbGRyZW4gPSBzZXJpYWxpemUoZWxlbWVudC5jaGlsZHJlbiwgY2FsbGJhY2spKSA/IGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC52YWx1ZSArICd7JyArIGNoaWxkcmVuICsgJ30nIDogJydcbn1cbiIsImltcG9ydCB7ZnJvbSwgdHJpbSwgY2hhcmF0LCBzdHJsZW4sIHN1YnN0ciwgYXBwZW5kLCBhc3NpZ259IGZyb20gJy4vVXRpbGl0eS5qcydcblxuZXhwb3J0IHZhciBsaW5lID0gMVxuZXhwb3J0IHZhciBjb2x1bW4gPSAxXG5leHBvcnQgdmFyIGxlbmd0aCA9IDBcbmV4cG9ydCB2YXIgcG9zaXRpb24gPSAwXG5leHBvcnQgdmFyIGNoYXJhY3RlciA9IDBcbmV4cG9ydCB2YXIgY2hhcmFjdGVycyA9ICcnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdCB8IG51bGx9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbH0gcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmdbXSB8IHN0cmluZ30gcHJvcHNcbiAqIEBwYXJhbSB7b2JqZWN0W10gfCBzdHJpbmd9IGNoaWxkcmVuXG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZSAodmFsdWUsIHJvb3QsIHBhcmVudCwgdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgsIHNpYmxpbmdzKSB7XG5cdHJldHVybiB7dmFsdWU6IHZhbHVlLCByb290OiByb290LCBwYXJlbnQ6IHBhcmVudCwgdHlwZTogdHlwZSwgcHJvcHM6IHByb3BzLCBjaGlsZHJlbjogY2hpbGRyZW4sIGxpbmU6IGxpbmUsIGNvbHVtbjogY29sdW1uLCBsZW5ndGg6IGxlbmd0aCwgcmV0dXJuOiAnJywgc2libGluZ3M6IHNpYmxpbmdzfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHkgKHJvb3QsIHByb3BzKSB7XG5cdHJldHVybiBhc3NpZ24obm9kZSgnJywgbnVsbCwgbnVsbCwgJycsIG51bGwsIG51bGwsIDAsIHJvb3Quc2libGluZ3MpLCByb290LCB7bGVuZ3RoOiAtcm9vdC5sZW5ndGh9LCBwcm9wcylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlmdCAocm9vdCkge1xuXHR3aGlsZSAocm9vdC5yb290KVxuXHRcdHJvb3QgPSBjb3B5KHJvb3Qucm9vdCwge2NoaWxkcmVuOiBbcm9vdF19KVxuXG5cdGFwcGVuZChyb290LCByb290LnNpYmxpbmdzKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYXIgKCkge1xuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJldiAoKSB7XG5cdGNoYXJhY3RlciA9IHBvc2l0aW9uID4gMCA/IGNoYXJhdChjaGFyYWN0ZXJzLCAtLXBvc2l0aW9uKSA6IDBcblxuXHRpZiAoY29sdW1uLS0sIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZS0tXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHQgKCkge1xuXHRjaGFyYWN0ZXIgPSBwb3NpdGlvbiA8IGxlbmd0aCA/IGNoYXJhdChjaGFyYWN0ZXJzLCBwb3NpdGlvbisrKSA6IDBcblxuXHRpZiAoY29sdW1uKyssIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZSsrXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlZWsgKCkge1xuXHRyZXR1cm4gY2hhcmF0KGNoYXJhY3RlcnMsIHBvc2l0aW9uKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhcmV0ICgpIHtcblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGJlZ2luXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbGljZSAoYmVnaW4sIGVuZCkge1xuXHRyZXR1cm4gc3Vic3RyKGNoYXJhY3RlcnMsIGJlZ2luLCBlbmQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuICh0eXBlKSB7XG5cdHN3aXRjaCAodHlwZSkge1xuXHRcdC8vIFxcMCBcXHQgXFxuIFxcciBcXHMgd2hpdGVzcGFjZSB0b2tlblxuXHRcdGNhc2UgMDogY2FzZSA5OiBjYXNlIDEwOiBjYXNlIDEzOiBjYXNlIDMyOlxuXHRcdFx0cmV0dXJuIDVcblx0XHQvLyAhICsgLCAvID4gQCB+IGlzb2xhdGUgdG9rZW5cblx0XHRjYXNlIDMzOiBjYXNlIDQzOiBjYXNlIDQ0OiBjYXNlIDQ3OiBjYXNlIDYyOiBjYXNlIDY0OiBjYXNlIDEyNjpcblx0XHQvLyA7IHsgfSBicmVha3BvaW50IHRva2VuXG5cdFx0Y2FzZSA1OTogY2FzZSAxMjM6IGNhc2UgMTI1OlxuXHRcdFx0cmV0dXJuIDRcblx0XHQvLyA6IGFjY29tcGFuaWVkIHRva2VuXG5cdFx0Y2FzZSA1ODpcblx0XHRcdHJldHVybiAzXG5cdFx0Ly8gXCIgJyAoIFsgb3BlbmluZyBkZWxpbWl0IHRva2VuXG5cdFx0Y2FzZSAzNDogY2FzZSAzOTogY2FzZSA0MDogY2FzZSA5MTpcblx0XHRcdHJldHVybiAyXG5cdFx0Ly8gKSBdIGNsb3NpbmcgZGVsaW1pdCB0b2tlblxuXHRcdGNhc2UgNDE6IGNhc2UgOTM6XG5cdFx0XHRyZXR1cm4gMVxuXHR9XG5cblx0cmV0dXJuIDBcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge2FueVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBsaW5lID0gY29sdW1uID0gMSwgbGVuZ3RoID0gc3RybGVuKGNoYXJhY3RlcnMgPSB2YWx1ZSksIHBvc2l0aW9uID0gMCwgW11cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEByZXR1cm4ge2FueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBjaGFyYWN0ZXJzID0gJycsIHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGltaXQgKHR5cGUpIHtcblx0cmV0dXJuIHRyaW0oc2xpY2UocG9zaXRpb24gLSAxLCBkZWxpbWl0ZXIodHlwZSA9PT0gOTEgPyB0eXBlICsgMiA6IHR5cGUgPT09IDQwID8gdHlwZSArIDEgOiB0eXBlKSkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuaXplICh2YWx1ZSkge1xuXHRyZXR1cm4gZGVhbGxvYyh0b2tlbml6ZXIoYWxsb2ModmFsdWUpKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2hpdGVzcGFjZSAodHlwZSkge1xuXHR3aGlsZSAoY2hhcmFjdGVyID0gcGVlaygpKVxuXHRcdGlmIChjaGFyYWN0ZXIgPCAzMylcblx0XHRcdG5leHQoKVxuXHRcdGVsc2Vcblx0XHRcdGJyZWFrXG5cblx0cmV0dXJuIHRva2VuKHR5cGUpID4gMiB8fCB0b2tlbihjaGFyYWN0ZXIpID4gMyA/ICcnIDogJyAnXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gY2hpbGRyZW5cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5pemVyIChjaGlsZHJlbikge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdHN3aXRjaCAodG9rZW4oY2hhcmFjdGVyKSkge1xuXHRcdFx0Y2FzZSAwOiBhcHBlbmQoaWRlbnRpZmllcihwb3NpdGlvbiAtIDEpLCBjaGlsZHJlbilcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgMjogYXBwZW5kKGRlbGltaXQoY2hhcmFjdGVyKSwgY2hpbGRyZW4pXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRkZWZhdWx0OiBhcHBlbmQoZnJvbShjaGFyYWN0ZXIpLCBjaGlsZHJlbilcblx0XHR9XG5cblx0cmV0dXJuIGNoaWxkcmVuXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gY291bnRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwaW5nIChpbmRleCwgY291bnQpIHtcblx0d2hpbGUgKC0tY291bnQgJiYgbmV4dCgpKVxuXHRcdC8vIG5vdCAwLTkgQS1GIGEtZlxuXHRcdGlmIChjaGFyYWN0ZXIgPCA0OCB8fCBjaGFyYWN0ZXIgPiAxMDIgfHwgKGNoYXJhY3RlciA+IDU3ICYmIGNoYXJhY3RlciA8IDY1KSB8fCAoY2hhcmFjdGVyID4gNzAgJiYgY2hhcmFjdGVyIDwgOTcpKVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gc2xpY2UoaW5kZXgsIGNhcmV0KCkgKyAoY291bnQgPCA2ICYmIHBlZWsoKSA9PSAzMiAmJiBuZXh0KCkgPT0gMzIpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxpbWl0ZXIgKHR5cGUpIHtcblx0d2hpbGUgKG5leHQoKSlcblx0XHRzd2l0Y2ggKGNoYXJhY3Rlcikge1xuXHRcdFx0Ly8gXSApIFwiICdcblx0XHRcdGNhc2UgdHlwZTpcblx0XHRcdFx0cmV0dXJuIHBvc2l0aW9uXG5cdFx0XHQvLyBcIiAnXG5cdFx0XHRjYXNlIDM0OiBjYXNlIDM5OlxuXHRcdFx0XHRpZiAodHlwZSAhPT0gMzQgJiYgdHlwZSAhPT0gMzkpXG5cdFx0XHRcdFx0ZGVsaW1pdGVyKGNoYXJhY3Rlcilcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIChcblx0XHRcdGNhc2UgNDA6XG5cdFx0XHRcdGlmICh0eXBlID09PSA0MSlcblx0XHRcdFx0XHRkZWxpbWl0ZXIodHlwZSlcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcXG5cdFx0XHRjYXNlIDkyOlxuXHRcdFx0XHRuZXh0KClcblx0XHRcdFx0YnJlYWtcblx0XHR9XG5cblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWVudGVyICh0eXBlLCBpbmRleCkge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdC8vIC8vXG5cdFx0aWYgKHR5cGUgKyBjaGFyYWN0ZXIgPT09IDQ3ICsgMTApXG5cdFx0XHRicmVha1xuXHRcdC8vIC8qXG5cdFx0ZWxzZSBpZiAodHlwZSArIGNoYXJhY3RlciA9PT0gNDIgKyA0MiAmJiBwZWVrKCkgPT09IDQ3KVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gJy8qJyArIHNsaWNlKGluZGV4LCBwb3NpdGlvbiAtIDEpICsgJyonICsgZnJvbSh0eXBlID09PSA0NyA/IHR5cGUgOiBuZXh0KCkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyIChpbmRleCkge1xuXHR3aGlsZSAoIXRva2VuKHBlZWsoKSkpXG5cdFx0bmV4dCgpXG5cblx0cmV0dXJuIHNsaWNlKGluZGV4LCBwb3NpdGlvbilcbn1cbiIsIi8qKlxuICogQHBhcmFtIHtudW1iZXJ9XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCB2YXIgYWJzID0gTWF0aC5hYnNcblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IHZhciBmcm9tID0gU3RyaW5nLmZyb21DaGFyQ29kZVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fVxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgdmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ25cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc2ggKHZhbHVlLCBsZW5ndGgpIHtcblx0cmV0dXJuIGNoYXJhdCh2YWx1ZSwgMCkgXiA0NSA/ICgoKCgoKChsZW5ndGggPDwgMikgXiBjaGFyYXQodmFsdWUsIDApKSA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMSkpIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAyKSkgPDwgMikgXiBjaGFyYXQodmFsdWUsIDMpIDogMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbSAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLnRyaW0oKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtSZWdFeHB9IHBhdHRlcm5cbiAqIEByZXR1cm4ge3N0cmluZz99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaCAodmFsdWUsIHBhdHRlcm4pIHtcblx0cmV0dXJuICh2YWx1ZSA9IHBhdHRlcm4uZXhlYyh2YWx1ZSkpID8gdmFsdWVbMF0gOiB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHsoc3RyaW5nfFJlZ0V4cCl9IHBhdHRlcm5cbiAqIEBwYXJhbSB7c3RyaW5nfSByZXBsYWNlbWVudFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZSAodmFsdWUsIHBhdHRlcm4sIHJlcGxhY2VtZW50KSB7XG5cdHJldHVybiB2YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50KVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhvZiAodmFsdWUsIHNlYXJjaCkge1xuXHRyZXR1cm4gdmFsdWUuaW5kZXhPZihzZWFyY2gpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYXJhdCAodmFsdWUsIGluZGV4KSB7XG5cdHJldHVybiB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSB8IDBcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBiZWdpblxuICogQHBhcmFtIHtudW1iZXJ9IGVuZFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RyICh2YWx1ZSwgYmVnaW4sIGVuZCkge1xuXHRyZXR1cm4gdmFsdWUuc2xpY2UoYmVnaW4sIGVuZClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmxlbiAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLmxlbmd0aFxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55W119IHZhbHVlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaXplb2YgKHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS5sZW5ndGhcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEBwYXJhbSB7YW55W119IGFycmF5XG4gKiBAcmV0dXJuIHthbnl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmQgKHZhbHVlLCBhcnJheSkge1xuXHRyZXR1cm4gYXJyYXkucHVzaCh2YWx1ZSksIHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gYXJyYXlcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lIChhcnJheSwgY2FsbGJhY2spIHtcblx0cmV0dXJuIGFycmF5Lm1hcChjYWxsYmFjaykuam9pbignJylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBhcnJheVxuICogQHBhcmFtIHtSZWdFeHB9IHBhdHRlcm5cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyIChhcnJheSwgcGF0dGVybikge1xuXHRyZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gIW1hdGNoKHZhbHVlLCBwYXR0ZXJuKSB9KVxufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXG5cblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1Jcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sICovXG5cbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xuICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xuICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xufVxuXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XG4gICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XG4gICAgICB9XG4gICAgICByZXR1cm4gdDtcbiAgfVxuICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgdFtwXSA9IHNbcF07XG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgfVxuICByZXR1cm4gdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcbiAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19lc0RlY29yYXRlKGN0b3IsIGRlc2NyaXB0b3JJbiwgZGVjb3JhdG9ycywgY29udGV4dEluLCBpbml0aWFsaXplcnMsIGV4dHJhSW5pdGlhbGl6ZXJzKSB7XG4gIGZ1bmN0aW9uIGFjY2VwdChmKSB7IGlmIChmICE9PSB2b2lkIDAgJiYgdHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZ1bmN0aW9uIGV4cGVjdGVkXCIpOyByZXR1cm4gZjsgfVxuICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xuICB2YXIgdGFyZ2V0ID0gIWRlc2NyaXB0b3JJbiAmJiBjdG9yID8gY29udGV4dEluW1wic3RhdGljXCJdID8gY3RvciA6IGN0b3IucHJvdG90eXBlIDogbnVsbDtcbiAgdmFyIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9ySW4gfHwgKHRhcmdldCA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSkgOiB7fSk7XG4gIHZhciBfLCBkb25lID0gZmFsc2U7XG4gIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgY29udGV4dCA9IHt9O1xuICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XG4gICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbi5hY2Nlc3MpIGNvbnRleHQuYWNjZXNzW3BdID0gY29udGV4dEluLmFjY2Vzc1twXTtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoZikgeyBpZiAoZG9uZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZFwiKTsgZXh0cmFJbml0aWFsaXplcnMucHVzaChhY2NlcHQoZiB8fCBudWxsKSk7IH07XG4gICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcbiAgICAgIGlmIChraW5kID09PSBcImFjY2Vzc29yXCIpIHtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSB2b2lkIDApIGNvbnRpbnVlO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuZ2V0KSkgZGVzY3JpcHRvci5nZXQgPSBfO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5zZXQpKSBkZXNjcmlwdG9yLnNldCA9IF87XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKF8gPSBhY2NlcHQocmVzdWx0KSkge1xuICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xuICAgICAgICAgIGVsc2UgZGVzY3JpcHRvcltrZXldID0gXztcbiAgICAgIH1cbiAgfVxuICBpZiAodGFyZ2V0KSBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSwgZGVzY3JpcHRvcik7XG4gIGRvbmUgPSB0cnVlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fcnVuSW5pdGlhbGl6ZXJzKHRoaXNBcmcsIGluaXRpYWxpemVycywgdmFsdWUpIHtcbiAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5pdGlhbGl6ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWx1ZSA9IHVzZVZhbHVlID8gaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZywgdmFsdWUpIDogaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZyk7XG4gIH1cbiAgcmV0dXJuIHVzZVZhbHVlID8gdmFsdWUgOiB2b2lkIDA7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19wcm9wS2V5KHgpIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSBcInN5bWJvbFwiID8geCA6IFwiXCIuY29uY2F0KHgpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fc2V0RnVuY3Rpb25OYW1lKGYsIG5hbWUsIHByZWZpeCkge1xuICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwgXCJuYW1lXCIsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogcHJlZml4ID8gXCJcIi5jb25jYXQocHJlZml4LCBcIiBcIiwgbmFtZSkgOiBuYW1lIH0pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcbiAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gIH1cbn1cblxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcbiAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcbiAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gIG9bazJdID0gbVtrXTtcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcbiAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xuICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xuICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghbSkgcmV0dXJuIG87XG4gIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICB0cnkge1xuICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gIH1cbiAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gIGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgIH1cbiAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICB9XG4gIHJldHVybiBhcjtcbn1cblxuLyoqIEBkZXByZWNhdGVkICovXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XG4gIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxuICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xuICByZXR1cm4gYXI7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xuICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcbiAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxuICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXG4gICAgICAgICAgcltrXSA9IGFbal07XG4gIHJldHVybiByO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSwgcGFjaykge1xuICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgICAgfVxuICB9XG4gIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XG4gIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcbiAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cbiAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxuICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cbiAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxuICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xuICB2YXIgaSwgcDtcbiAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcbiAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogZmFsc2UgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xuICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cbiAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcbiAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgcmV0dXJuIGNvb2tlZDtcbn07XG5cbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xufSkgOiBmdW5jdGlvbihvLCB2KSB7XG4gIG9bXCJkZWZhdWx0XCJdID0gdjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XG4gIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xuICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xuICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcbiAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO1xuICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcbiAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xuICBpZiAoa2luZCA9PT0gXCJtXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGVcIik7XG4gIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtcbiAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcbiAgcmV0dXJuIChraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlciwgdmFsdWUpIDogZiA/IGYudmFsdWUgPSB2YWx1ZSA6IHN0YXRlLnNldChyZWNlaXZlciwgdmFsdWUpKSwgdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4oc3RhdGUsIHJlY2VpdmVyKSB7XG4gIGlmIChyZWNlaXZlciA9PT0gbnVsbCB8fCAodHlwZW9mIHJlY2VpdmVyICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiByZWNlaXZlciAhPT0gXCJmdW5jdGlvblwiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0XCIpO1xuICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hZGREaXNwb3NhYmxlUmVzb3VyY2UoZW52LCB2YWx1ZSwgYXN5bmMpIHtcbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDApIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkLlwiKTtcbiAgICB2YXIgZGlzcG9zZTtcbiAgICBpZiAoYXN5bmMpIHtcbiAgICAgICAgaWYgKCFTeW1ib2wuYXN5bmNEaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jRGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XG4gICAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuYXN5bmNEaXNwb3NlXTtcbiAgICB9XG4gICAgaWYgKGRpc3Bvc2UgPT09IHZvaWQgMCkge1xuICAgICAgICBpZiAoIVN5bWJvbC5kaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmRpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmRpc3Bvc2VdO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRpc3Bvc2UgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBub3QgZGlzcG9zYWJsZS5cIik7XG4gICAgZW52LnN0YWNrLnB1c2goeyB2YWx1ZTogdmFsdWUsIGRpc3Bvc2U6IGRpc3Bvc2UsIGFzeW5jOiBhc3luYyB9KTtcbiAgfVxuICBlbHNlIGlmIChhc3luYykge1xuICAgIGVudi5zdGFjay5wdXNoKHsgYXN5bmM6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG52YXIgX1N1cHByZXNzZWRFcnJvciA9IHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xuICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2Rpc3Bvc2VSZXNvdXJjZXMoZW52KSB7XG4gIGZ1bmN0aW9uIGZhaWwoZSkge1xuICAgIGVudi5lcnJvciA9IGVudi5oYXNFcnJvciA/IG5ldyBfU3VwcHJlc3NlZEVycm9yKGUsIGVudi5lcnJvciwgXCJBbiBlcnJvciB3YXMgc3VwcHJlc3NlZCBkdXJpbmcgZGlzcG9zYWwuXCIpIDogZTtcbiAgICBlbnYuaGFzRXJyb3IgPSB0cnVlO1xuICB9XG4gIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgd2hpbGUgKGVudi5zdGFjay5sZW5ndGgpIHtcbiAgICAgIHZhciByZWMgPSBlbnYuc3RhY2sucG9wKCk7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjLmRpc3Bvc2UgJiYgcmVjLmRpc3Bvc2UuY2FsbChyZWMudmFsdWUpO1xuICAgICAgICBpZiAocmVjLmFzeW5jKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkudGhlbihuZXh0LCBmdW5jdGlvbihlKSB7IGZhaWwoZSk7IHJldHVybiBuZXh0KCk7IH0pO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICBmYWlsKGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW52Lmhhc0Vycm9yKSB0aHJvdyBlbnYuZXJyb3I7XG4gIH1cbiAgcmV0dXJuIG5leHQoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBfX2V4dGVuZHMsXG4gIF9fYXNzaWduLFxuICBfX3Jlc3QsXG4gIF9fZGVjb3JhdGUsXG4gIF9fcGFyYW0sXG4gIF9fbWV0YWRhdGEsXG4gIF9fYXdhaXRlcixcbiAgX19nZW5lcmF0b3IsXG4gIF9fY3JlYXRlQmluZGluZyxcbiAgX19leHBvcnRTdGFyLFxuICBfX3ZhbHVlcyxcbiAgX19yZWFkLFxuICBfX3NwcmVhZCxcbiAgX19zcHJlYWRBcnJheXMsXG4gIF9fc3ByZWFkQXJyYXksXG4gIF9fYXdhaXQsXG4gIF9fYXN5bmNHZW5lcmF0b3IsXG4gIF9fYXN5bmNEZWxlZ2F0b3IsXG4gIF9fYXN5bmNWYWx1ZXMsXG4gIF9fbWFrZVRlbXBsYXRlT2JqZWN0LFxuICBfX2ltcG9ydFN0YXIsXG4gIF9faW1wb3J0RGVmYXVsdCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZEdldCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZEluLFxuICBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZSxcbiAgX19kaXNwb3NlUmVzb3VyY2VzLFxufTtcbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdGxvYWRlZDogZmFsc2UsXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuXHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubm1kID0gKG1vZHVsZSkgPT4ge1xuXHRtb2R1bGUucGF0aHMgPSBbXTtcblx0aWYgKCFtb2R1bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xuXHRyZXR1cm4gbW9kdWxlO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm5jID0gdW5kZWZpbmVkOyIsIiIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIi4vc3JjL2luZGV4LnRzXCIpO1xuIiwiIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9